From 0e395bb18109e37c33a088dc6ee4b4f84dcb0771 Mon Sep 17 00:00:00 2001 From: Vaivaswatha Nagaraj Date: Tue, 6 Oct 2020 15:24:07 +0530 Subject: [PATCH 1/3] Support for initializing and finalizing gas. Test updates --- libjitd/JITD.cpp | 12 +- libsrtl/ScillaBuiltins.cpp | 5 +- libsrtl/ScillaBuiltins.h | 9 +- runners/expr-runner.cpp | 17 +- runners/scilla-runner.cpp | 17 +- testsuite/ContrTests.cpp | 6 +- testsuite/ExprExecTests.cpp | 8 + testsuite/Testsuite.cpp | 8 +- testsuite/Testsuite.h | 1 + testsuite/contr/accept.contrinfo.json | 2 +- testsuite/contr/accept.ll | 1 + testsuite/contr/accept.output_Accept1.json | 2 +- testsuite/contr/accept.output_Accept2.json | 2 +- .../contr/accept.output_Accept3_succ.json | 2 +- testsuite/contr/event.contrinfo.json | 2 +- testsuite/contr/event.ll | 1 + testsuite/contr/event.output.json | 2 +- testsuite/contr/helloWorld.contrinfo.json | 2 +- testsuite/contr/helloWorld.ll | 1 + .../contr/helloWorld.output_contrAddr.json | 2 +- .../contr/helloWorld.output_getHello.json | 2 +- .../contr/helloWorld.output_multipleMsgs.json | 2 +- .../helloWorld.output_printContrParams.json | 2 +- .../contr/helloWorld.output_setHello_1.json | 2 +- .../contr/helloWorld.output_setHello_2.json | 2 +- testsuite/contr/init_output.json | 2 +- .../contr/map_corners_test.contrinfo.json | 2 +- testsuite/contr/map_corners_test.ll | 1 + testsuite/contr/map_corners_test.output.json | 2 +- testsuite/contr/match_assign.contrinfo.json | 2 +- testsuite/contr/match_assign.ll | 1 + .../contr/match_assign.output_t1_false.json | 2 +- .../contr/match_assign.output_t1_true.json | 2 +- testsuite/contr/match_assign2.contrinfo.json | 2 +- testsuite/contr/match_assign2.ll | 1 + testsuite/contr/match_assign2.output_t1.json | 2 +- testsuite/contr/match_assign3.contrinfo.json | 2 +- testsuite/contr/match_assign3.ll | 1 + .../contr/match_assign3.output_t1_false.json | 2 +- .../contr/match_assign3.output_t1_true.json | 2 +- testsuite/contr/name_clash1.contrinfo.json | 2 +- testsuite/contr/name_clash1.ll | 1 + .../contr/name_clash1.output_t1_false.json | 2 +- .../contr/name_clash1.output_t1_true.json | 2 +- testsuite/contr/name_clash2.contrinfo.json | 2 +- testsuite/contr/name_clash2.ll | 1 + .../contr/name_clash2.output_t1_false.json | 2 +- .../contr/name_clash2.output_t1_true.json | 2 +- testsuite/contr/pm-empty.contrinfo.json | 2 +- testsuite/contr/pm-empty.ll | 1 + testsuite/contr/pm-empty.output_t1_false.json | 2 +- testsuite/contr/pm-empty.output_t1_true.json | 2 +- testsuite/contr/send.contrinfo.json | 2 +- testsuite/contr/send.ll | 1 + testsuite/contr/send.output_SendMsg.json | 2 +- testsuite/contr/send.output_SendMsg2.json | 2 +- testsuite/contr/simple-map.contrinfo.json | 2 +- testsuite/contr/simple-map.ll | 1 + testsuite/contr/simple-map.output.json | 2 +- testsuite/contr/throw.contrinfo.json | 2 +- testsuite/contr/throw.ll | 1 + testsuite/contr/ud-proxy.contrinfo.json | 2 +- testsuite/contr/ud-proxy.ll | 1 + testsuite/contr/ud-proxy.output_bestow.json | 2 +- testsuite/contr/ud-registry.contrinfo.json | 2 +- testsuite/contr/ud-registry.ll | 1 + .../contr/ud-registry.output_bestow.json | 2 +- .../contr/ud-registry.output_setAdmin.json | 2 +- .../ud-registry.output_setRegistrar.json | 2 +- testsuite/expr/ackermann.ll | 4893 ++++++++++++----- testsuite/expr/ackermann.ll.result | 1 + testsuite/expr/ackermann_3_7.ll | 2765 +++++++--- testsuite/expr/ackermann_3_7.ll.result | 1 + testsuite/expr/adt-fun.ll | 161 +- testsuite/expr/adt-fun.ll.result | 1 + testsuite/expr/builtin_add_int256.ll | 79 +- testsuite/expr/builtin_add_int256.ll.result | 1 + testsuite/expr/builtin_add_int32.ll | 69 +- testsuite/expr/builtin_add_int32.ll.result | 1 + testsuite/expr/builtin_add_uint256.ll | 79 +- testsuite/expr/builtin_add_uint256.ll.result | 1 + testsuite/expr/builtin_add_uint32.ll | 69 +- testsuite/expr/builtin_add_uint32.ll.result | 1 + testsuite/expr/builtin_concat.ll | 263 +- testsuite/expr/builtin_concat.ll.result | 1 + testsuite/expr/builtin_eq.ll | 1419 ++++- testsuite/expr/builtin_eq.ll.result | 1 + testsuite/expr/builtin_map.ll | 885 ++- testsuite/expr/builtin_map.ll.result | 1 + testsuite/expr/builtin_sha256hash.ll | 273 +- testsuite/expr/builtin_sha256hash.ll.result | 1 + testsuite/expr/builtin_to_nat.ll | 43 +- testsuite/expr/builtin_to_nat.ll.result | 1 + testsuite/expr/church_nat.ll | 1912 +++++-- testsuite/expr/church_nat.ll.result | 1 + testsuite/expr/church_nat_stlc.ll | 1658 ++++-- testsuite/expr/church_nat_stlc.ll.result | 1 + testsuite/expr/cn.ll | 506 +- testsuite/expr/cn.ll.result | 1 + testsuite/expr/fib.ll | 1196 ++-- testsuite/expr/fib.ll.result | 1 + testsuite/expr/fun-type-inst.ll | 2434 +++++--- testsuite/expr/fun-type-inst.ll.result | 1 + testsuite/expr/lit-bystr3.ll | 28 +- testsuite/expr/lit-bystr3.ll.result | 1 + testsuite/expr/lit-emp_i32_i32.ll | 32 +- testsuite/expr/lit-emp_i32_i32.ll.result | 1 + testsuite/expr/lit-emp_i32_list_string.ll | 32 +- .../expr/lit-emp_i32_list_string.ll.result | 1 + testsuite/expr/lit-i256-4.ll | 26 +- testsuite/expr/lit-i256-4.ll.result | 1 + testsuite/expr/lit-i256-max.ll | 26 +- testsuite/expr/lit-i256-max.ll.result | 1 + testsuite/expr/lit-i256-min.ll | 26 +- testsuite/expr/lit-i256-min.ll.result | 1 + testsuite/expr/lit-int32-1.ll | 28 +- testsuite/expr/lit-int32-1.ll.result | 1 + testsuite/expr/lit-int32.ll | 28 +- testsuite/expr/lit-int32.ll.result | 1 + testsuite/expr/lit-nat_two.ll | 148 +- testsuite/expr/lit-nat_two.ll.result | 1 + testsuite/expr/lit-nat_zero.ll | 38 +- testsuite/expr/lit-nat_zero.ll.result | 1 + testsuite/expr/lit-nil.ll | 38 +- testsuite/expr/lit-nil.ll.result | 1 + testsuite/expr/lit-pair-list-int.ll | 262 +- testsuite/expr/lit-pair-list-int.ll.result | 1 + testsuite/expr/lit-string.ll | 32 +- testsuite/expr/lit-string.ll.result | 1 + testsuite/expr/lit-ui256-4.ll | 26 +- testsuite/expr/lit-ui256-4.ll.result | 1 + testsuite/expr/lit-ui256-max.ll | 26 +- testsuite/expr/lit-ui256-max.ll.result | 1 + testsuite/expr/map1.ll | 65 +- testsuite/expr/map1.ll.result | 1 + testsuite/expr/match_assign.ll | 168 +- testsuite/expr/match_assign.ll.result | 1 + testsuite/expr/multi-type-inst.ll | 2344 +++++--- testsuite/expr/multi-type-inst.ll.result | 1 + testsuite/expr/name_clash.ll | 95 +- testsuite/expr/name_clash.ll.result | 1 + testsuite/expr/name_clash2.ll | 124 +- testsuite/expr/name_clash2.ll.result | 1 + testsuite/expr/nonprenex.ll | 2160 +++++--- testsuite/expr/nonprenex.ll.result | 1 + testsuite/expr/pm1.ll | 239 +- testsuite/expr/pm1.ll.result | 1 + testsuite/expr/pm2.ll | 350 +- testsuite/expr/pm2.ll.result | 1 + testsuite/expr/simple-fun.ll | 105 +- testsuite/expr/simple-fun.ll.result | 1 + testsuite/expr/simple_ho.ll | 222 +- testsuite/expr/simple_ho.ll.result | 1 + testsuite/expr/tname_clash.ll | 399 +- testsuite/expr/tname_clash.ll.result | 1 + testsuite/expr/typ-inst.ll | 174 +- testsuite/expr/typ-inst.ll.result | 1 + testsuite/expr/typ1-inst.ll | 266 +- testsuite/expr/typ1-inst.ll.result | 1 + testsuite/expr/typ2-inst.ll | 904 ++- testsuite/expr/typ2-inst.ll.result | 1 + testsuite/expr/typ3-inst.ll | 907 ++- testsuite/expr/typ3-inst.ll.result | 1 + 163 files changed, 20604 insertions(+), 7653 deletions(-) diff --git a/libjitd/JITD.cpp b/libjitd/JITD.cpp index ee269bb8..024fc635 100644 --- a/libjitd/JITD.cpp +++ b/libjitd/JITD.cpp @@ -351,8 +351,11 @@ void ScillaJIT::initContrParams(const Json::Value &CP) { } Json::Value ScillaJIT::initState(uint64_t GasLimit) { + // Set gas limit in the contract module. + auto GasRemPtr = reinterpret_cast(getAddressFor("_gasrem")); + *GasRemPtr = GasLimit; // Let's setup the TransitionState for this transition. - TS = std::make_unique("0", "0", GasLimit); + TS = std::make_unique("0", "0", GasRemPtr); auto fIS = reinterpret_cast(getAddressFor("_init_state")); fIS(); return TS->finalize(); @@ -402,8 +405,13 @@ Json::Value ScillaJIT::execMsg(const std::string &Balance, uint64_t GasLimit, !AmountJ.isString()) CREATE_ERROR("Invalid Message"); + // Set gas limit in the contract module. + auto GasRemPtr = reinterpret_cast(getAddressFor("_gasrem")); + *GasRemPtr = GasLimit; + // Let's setup the TransitionState for this transition. - TS = std::make_unique(Balance, AmountJ.asString(), GasLimit); + TS = + std::make_unique(Balance, AmountJ.asString(), GasRemPtr); // Amount and Sender need to be prepended to the parameter list. Json::Value AmountParam; diff --git a/libsrtl/ScillaBuiltins.cpp b/libsrtl/ScillaBuiltins.cpp index 7769c726..741261ba 100644 --- a/libsrtl/ScillaBuiltins.cpp +++ b/libsrtl/ScillaBuiltins.cpp @@ -32,6 +32,7 @@ std::vector getAllScillaBuiltins(void) { ScillaFunctionsMap m[] = { {"_print_scilla_val", (void *) _print_scilla_val}, {"_salloc", (void *) _salloc}, + {"_out_of_gas", (void *) _out_of_gas}, {"_add_Int32", (void *) _add_Int32}, {"_add_Int64", (void *) _add_Int64}, {"_add_Int128", (void *) _add_Int128}, @@ -124,7 +125,7 @@ Json::Value TransitionState::finalize(void) { Es = Json::arrayValue; // 3. Fill in other fields. - OutJ["gas_remaining"] = std::to_string(GasRemaining); + OutJ["gas_remaining"] = std::to_string(*GasRemPtr); OutJ["_accepted"] = Accepted ? "true" : "false"; OutJ["scilla_major_version"] = "0"; @@ -228,6 +229,8 @@ void _print_scilla_val(const ScillaTypes::Typ *T, void *V) { void *_salloc(ScillaJIT *SJ, size_t size) { return SJ->sAlloc(size); } +void _out_of_gas() { CREATE_ERROR("Ran out of gas"); } + ScillaTypes::Int32 _add_Int32(ScillaTypes::Int32 Lhs, ScillaTypes::Int32 Rhs) { return SafeInt32(&Lhs) + SafeInt32(&Rhs); } diff --git a/libsrtl/ScillaBuiltins.h b/libsrtl/ScillaBuiltins.h index 91e1a867..2e170ddd 100644 --- a/libsrtl/ScillaBuiltins.h +++ b/libsrtl/ScillaBuiltins.h @@ -38,7 +38,7 @@ std::vector getAllScillaBuiltins(void); class TransitionState { SafeUint128 Balance; SafeUint128 InAmount; - uint64_t GasRemaining; + uint64_t *GasRemPtr; bool Accepted; // Contains the output messages of executing a transition. Json::Value OutJ; @@ -47,8 +47,8 @@ class TransitionState { public: TransitionState(std::string Balance_P, std::string InAmount_P, - uint64_t GasLimit_P) - : Balance(Balance_P), InAmount(InAmount_P), GasRemaining(GasLimit_P), + uint64_t *GasRemPtr_P) + : Balance(Balance_P), InAmount(InAmount_P), GasRemPtr(GasRemPtr_P), Accepted(false), OutJ(Json::objectValue){}; void processSend(Json::Value &M); @@ -72,6 +72,9 @@ void _print_scilla_val(const ScillaVM::ScillaTypes::Typ *T, void *V); // Allocate memory for JIT code owned by @SJ void *_salloc(ScillaVM::ScillaJIT *SJ, size_t size); +// Handler for out-of-gas during execution +void _out_of_gas(); + // Fetch field @Name whose type is @T. For map accesses, FetchVal can be false, // to indicate that the return value is a Scilla `Bool`, indicating found or // not. diff --git a/runners/expr-runner.cpp b/runners/expr-runner.cpp index d4364fb6..54a3bdd1 100644 --- a/runners/expr-runner.cpp +++ b/runners/expr-runner.cpp @@ -32,12 +32,14 @@ namespace po = boost::program_options; void parseCLIArgs(int argc, char *argv[], po::variables_map &VM) { auto UsageString = "Usage: " + std::string(argv[0]) + - " [option...] input-file" + "\nSupported options"; + " -g gaslimit [option...] input-file" + + "\nSupported options"; po::options_description Desc(UsageString); // clang-format off Desc.add_options() ("output-file,o", po::value(), "Specify output filename") + ("gaslimit,g", po::value(), "Gas limit") ("help,h", "Print help message") ("debug", "Enable full logging (debug builds only)") ("debug-only", @@ -82,6 +84,12 @@ void parseCLIArgs(int argc, char *argv[], po::variables_map &VM) { std::cerr << "No input file provided\n" << Desc << "\n"; exit(EXIT_FAILURE); } + + // Ensure gas limit provided. + if (!VM.count("gaslimit")) { + std::cerr << "No gaslimit provided\n" << Desc << "\n"; + exit(EXIT_FAILURE); + } } } // end of anonymous namespace @@ -105,11 +113,18 @@ int main(int argc, char *argv[]) { ScillaStdout.clear(); try { auto InputFilename = VM["input-file"].as(); + auto GasLimit = VM["gaslimit"].as(); auto SJ = ScillaJIT::create(ScillaParams(), InputFilename, Json::arrayValue); auto ScillaMainAddr = SJ->getAddressFor("scilla_main"); auto ScillaMain = reinterpret_cast(ScillaMainAddr); + // Set the remaining gas inside the LLVM-IR for the expression. + auto GasRemPtr = reinterpret_cast(SJ->getAddressFor("_gasrem")); + *GasRemPtr = GasLimit; + // Execute ... ScillaMain(); + // Collect and print the remaining gas. + ScillaStdout += "Gas remaining: " + std::to_string(*GasRemPtr) + "\n"; } catch (const ScillaError &e) { std::cerr << e.toString() << "\n"; return EXIT_FAILURE; diff --git a/runners/scilla-runner.cpp b/runners/scilla-runner.cpp index c244dc89..a83a1cd1 100644 --- a/runners/scilla-runner.cpp +++ b/runners/scilla-runner.cpp @@ -32,10 +32,11 @@ namespace { namespace po = boost::program_options; void parseCLIArgs(int argc, char *argv[], po::variables_map &VM) { - auto UsageString = "Usage: " + std::string(argv[0]) + - " [option...] -i input_contract.ll -c contract_info.json " - "-n init.json [-m message.json] [-s state.json]" - "\nSupported options"; + auto UsageString = + "Usage: " + std::string(argv[0]) + + " [option...] -i input_contract.ll -c contract_info.json " + "-n init.json -g gaslimit [-m message.json] [-s state.json]" + "\nSupported options"; po::options_description Desc(UsageString); // clang-format off @@ -44,6 +45,7 @@ void parseCLIArgs(int argc, char *argv[], po::variables_map &VM) { ("init,n", po::value(), "Specify init JSON to initialize contract parameters") ("message,m", po::value(), "Specify the message JSON to be executed") ("state,s", po::value(), "Specify the JSON to use as initial state") + ("gaslimit,g", po::value(), "Gas limit") ("contract-info,c", po::value(), "Specify the contract info JSON from checker") ("output-file,o", po::value(), "Specify output filename") ("debug", "Enable full logging (debug builds only)") @@ -71,7 +73,7 @@ void parseCLIArgs(int argc, char *argv[], po::variables_map &VM) { // Ensure that an input file is provided. if (!VM.count("input-contract") || !VM.count("init") || - !VM.count("contract-info")) { + !VM.count("contract-info") || !VM.count("gaslimit")) { std::cerr << "Missing mandatory command line arguments\n" << Desc << "\n"; exit(EXIT_FAILURE); } @@ -117,6 +119,7 @@ int main(int argc, char *argv[]) { auto InputFilename = VM["input-contract"].as(); auto InitFilename = VM["init"].as(); auto ContrInfoFilename = VM["contract-info"].as(); + auto GasLimit = VM["gaslimit"].as(); auto IJ = parseJSONFile(InitFilename); auto CIJ = parseJSONFile(ContrInfoFilename); // Create JIT engine. @@ -132,11 +135,11 @@ int main(int argc, char *argv[]) { // Update our in-memory state table with the one from the JSONs. auto Balance = State.initFromJSON(SJ, CIJ); // Execute message - OutJ = JE->execMsg(Balance, 0, MJ); + OutJ = JE->execMsg(Balance, GasLimit, MJ); } else { // Deployment State.initFromJSON(Json::arrayValue, CIJ); - OutJ = JE->initState(0); + OutJ = JE->initState(GasLimit); } auto OSJ = State.dumpToJSON(); diff --git a/testsuite/ContrTests.cpp b/testsuite/ContrTests.cpp index 3a1af3b2..2213fdf7 100644 --- a/testsuite/ContrTests.cpp +++ b/testsuite/ContrTests.cpp @@ -89,9 +89,9 @@ void testMessage(const std::string &ContrFilename, { ScopeTimer ExecMsgTimer(ContrFilename + ": ScillaJIT::execMsg"); if (isStateInit) { - OJ = JE->initState(0); + OJ = JE->initState(Config::GasLimit); } else { - OJ = JE->execMsg(Balance, 0, MessageJSON); + OJ = JE->execMsg(Balance, Config::GasLimit, MessageJSON); } } @@ -187,7 +187,7 @@ void testMessageFail(const std::string &ContrFilename, bool CaughtException = false; try { ScopeTimer ExecMsgTimer(ContrFilename + ": ScillaJIT::execMsg"); - JE->execMsg(Balance, 0, MessageJSON); + JE->execMsg(Balance, Config::GasLimit, MessageJSON); } catch (const ScillaError &E) { output_test_stream Output(PathPrefix + ExpectedOutputFilename, !Config::UpdateResults); diff --git a/testsuite/ExprExecTests.cpp b/testsuite/ExprExecTests.cpp index fd59fb33..83048f53 100644 --- a/testsuite/ExprExecTests.cpp +++ b/testsuite/ExprExecTests.cpp @@ -44,7 +44,15 @@ void testExecExpr(const std::string &Testname) { BOOST_TEST_CHECKPOINT(Filename + ": JIT compilation succeeded"); auto ScillaMain = reinterpret_cast(ScillaMainAddr); ScillaStdout.clear(); + // Set the remaining gas inside the LLVM-IR for the expression. + auto GasRemPtr = reinterpret_cast(SJ->getAddressFor("_gasrem")); + *GasRemPtr = Config::GasLimit; + + // Execute expression. ScillaMain(); + + // Collect and print the remaining gas. + ScillaStdout += "Gas remaining: " + std::to_string(*GasRemPtr) + "\n"; } catch (const ScillaError &E) { BOOST_FAIL(E.toString()); } diff --git a/testsuite/Testsuite.cpp b/testsuite/Testsuite.cpp index 007e88d6..82a48d7d 100644 --- a/testsuite/Testsuite.cpp +++ b/testsuite/Testsuite.cpp @@ -28,9 +28,9 @@ namespace { namespace po = boost::program_options; void parseCLIArgs(int argc, char *argv[], po::variables_map &VM) { - auto UsageString = "Usage: [Boost.Test argument]... -- " + - std::string(argv[0]) + " [option...] testsuite_dir" + - "\nSupported options"; + auto UsageString = "Usage: " + std::string(argv[0]) + + " [Boost.Test argument]..." + " -- " + + " [option...] testsuite_dir" + "\nSupported options"; po::options_description Desc(UsageString); // clang-format off @@ -88,6 +88,8 @@ namespace Config { // Overwrites the expected result instead of comparing with it. bool UpdateResults = false; std::string TestsuiteSrc; +uint64_t GasLimit = 10000000; + } // namespace Config struct CommandLineInit { diff --git a/testsuite/Testsuite.h b/testsuite/Testsuite.h index 4c5e6c75..6084305c 100644 --- a/testsuite/Testsuite.h +++ b/testsuite/Testsuite.h @@ -8,6 +8,7 @@ namespace Config { // Overwrites the expected result instead of comparing with it. extern bool UpdateResults; extern std::string TestsuiteSrc; +extern uint64_t GasLimit; } // namespace Config // A class that calls BOOST_TEST_MESSAGE with the duration of its existance. diff --git a/testsuite/contr/accept.contrinfo.json b/testsuite/contr/accept.contrinfo.json index 69f4d509..09cf9bdf 100644 --- a/testsuite/contr/accept.contrinfo.json +++ b/testsuite/contr/accept.contrinfo.json @@ -52,6 +52,6 @@ ] }, "warnings": [], - "gas_remaining": "10000" + "gas_remaining": "9999" } diff --git a/testsuite/contr/accept.ll b/testsuite/contr/accept.ll index 5947c0df..e212203d 100644 --- a/testsuite/contr/accept.ll +++ b/testsuite/contr/accept.ll @@ -21,6 +21,7 @@ target triple = "x86_64-pc-linux-gnu" %String = type { i8*, i32 } @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_5" = global %"$TyDescrTy_PrimTyp_4" zeroinitializer @"$TyDescr_Int32_6" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_4"* @"$TyDescr_Int32_Prim_5" to i8*) } @"$TyDescr_Uint32_Prim_7" = global %"$TyDescrTy_PrimTyp_4" { i32 1, i32 0 } diff --git a/testsuite/contr/accept.output_Accept1.json b/testsuite/contr/accept.output_Accept1.json index 4db8f674..47afd7d6 100644 --- a/testsuite/contr/accept.output_Accept1.json +++ b/testsuite/contr/accept.output_Accept1.json @@ -1,7 +1,7 @@ { "_accepted" : "true", "events" : [], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/accept.output_Accept2.json b/testsuite/contr/accept.output_Accept2.json index 42d7b221..1a2a2532 100644 --- a/testsuite/contr/accept.output_Accept2.json +++ b/testsuite/contr/accept.output_Accept2.json @@ -1,7 +1,7 @@ { "_accepted" : "true", "events" : [], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [ { "_amount" : "100", diff --git a/testsuite/contr/accept.output_Accept3_succ.json b/testsuite/contr/accept.output_Accept3_succ.json index 42d7b221..1a2a2532 100644 --- a/testsuite/contr/accept.output_Accept3_succ.json +++ b/testsuite/contr/accept.output_Accept3_succ.json @@ -1,7 +1,7 @@ { "_accepted" : "true", "events" : [], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [ { "_amount" : "100", diff --git a/testsuite/contr/event.contrinfo.json b/testsuite/contr/event.contrinfo.json index 80d64a36..93ebbe8a 100644 --- a/testsuite/contr/event.contrinfo.json +++ b/testsuite/contr/event.contrinfo.json @@ -53,6 +53,6 @@ ] }, "warnings": [], - "gas_remaining": "10000" + "gas_remaining": "9999" } diff --git a/testsuite/contr/event.ll b/testsuite/contr/event.ll index 521bccbb..a4df1562 100644 --- a/testsuite/contr/event.ll +++ b/testsuite/contr/event.ll @@ -13,6 +13,7 @@ target triple = "x86_64-pc-linux-gnu" %String = type { i8*, i32 } @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_1" = global %"$TyDescrTy_PrimTyp_0" zeroinitializer @"$TyDescr_Int32_2" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_0"* @"$TyDescr_Int32_Prim_1" to i8*) } @"$TyDescr_Uint32_Prim_3" = global %"$TyDescrTy_PrimTyp_0" { i32 1, i32 0 } diff --git a/testsuite/contr/event.output.json b/testsuite/contr/event.output.json index 9dabcbd2..356dffe3 100644 --- a/testsuite/contr/event.output.json +++ b/testsuite/contr/event.output.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/helloWorld.contrinfo.json b/testsuite/contr/helloWorld.contrinfo.json index 33df8175..9ddf355a 100644 --- a/testsuite/contr/helloWorld.contrinfo.json +++ b/testsuite/contr/helloWorld.contrinfo.json @@ -93,6 +93,6 @@ ] }, "warnings": [], - "gas_remaining": "9350" + "gas_remaining": "9918" } diff --git a/testsuite/contr/helloWorld.ll b/testsuite/contr/helloWorld.ll index c4d38faf..78a6e509 100644 --- a/testsuite/contr/helloWorld.ll +++ b/testsuite/contr/helloWorld.ll @@ -33,6 +33,7 @@ target triple = "x86_64-pc-linux-gnu" %CName_False = type <{ i8 }> @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_6" = global %"$TyDescrTy_PrimTyp_5" zeroinitializer @"$TyDescr_Int32_7" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_5"* @"$TyDescr_Int32_Prim_6" to i8*) } @"$TyDescr_Uint32_Prim_8" = global %"$TyDescrTy_PrimTyp_5" { i32 1, i32 0 } diff --git a/testsuite/contr/helloWorld.output_contrAddr.json b/testsuite/contr/helloWorld.output_contrAddr.json index f945880d..809f5557 100644 --- a/testsuite/contr/helloWorld.output_contrAddr.json +++ b/testsuite/contr/helloWorld.output_contrAddr.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/helloWorld.output_getHello.json b/testsuite/contr/helloWorld.output_getHello.json index d715cd58..4783db85 100644 --- a/testsuite/contr/helloWorld.output_getHello.json +++ b/testsuite/contr/helloWorld.output_getHello.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/helloWorld.output_multipleMsgs.json b/testsuite/contr/helloWorld.output_multipleMsgs.json index e7640f02..3132024e 100644 --- a/testsuite/contr/helloWorld.output_multipleMsgs.json +++ b/testsuite/contr/helloWorld.output_multipleMsgs.json @@ -1,7 +1,7 @@ { "_accepted" : "false", "events" : [], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [ { "_amount" : "0", diff --git a/testsuite/contr/helloWorld.output_printContrParams.json b/testsuite/contr/helloWorld.output_printContrParams.json index 85b4ddbd..8b90b2c0 100644 --- a/testsuite/contr/helloWorld.output_printContrParams.json +++ b/testsuite/contr/helloWorld.output_printContrParams.json @@ -57,7 +57,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/helloWorld.output_setHello_1.json b/testsuite/contr/helloWorld.output_setHello_1.json index 12fcf044..5c43f691 100644 --- a/testsuite/contr/helloWorld.output_setHello_1.json +++ b/testsuite/contr/helloWorld.output_setHello_1.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/helloWorld.output_setHello_2.json b/testsuite/contr/helloWorld.output_setHello_2.json index ab007715..2049305c 100644 --- a/testsuite/contr/helloWorld.output_setHello_2.json +++ b/testsuite/contr/helloWorld.output_setHello_2.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/init_output.json b/testsuite/contr/init_output.json index d54abea3..07164781 100644 --- a/testsuite/contr/init_output.json +++ b/testsuite/contr/init_output.json @@ -1,7 +1,7 @@ { "_accepted" : "false", "events" : [], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/map_corners_test.contrinfo.json b/testsuite/contr/map_corners_test.contrinfo.json index cdbb7053..1bff0e65 100644 --- a/testsuite/contr/map_corners_test.contrinfo.json +++ b/testsuite/contr/map_corners_test.contrinfo.json @@ -285,6 +285,6 @@ "warning_id": 1 } ], - "gas_remaining": "10000" + "gas_remaining": "9999" } diff --git a/testsuite/contr/map_corners_test.ll b/testsuite/contr/map_corners_test.ll index 8ff2bd76..ec5fdbeb 100644 --- a/testsuite/contr/map_corners_test.ll +++ b/testsuite/contr/map_corners_test.ll @@ -35,6 +35,7 @@ target triple = "x86_64-pc-linux-gnu" %"CName_None_Map_(String)_(Map_(String)_(String))" = type <{ i8 }> @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_33" = global %"$TyDescrTy_PrimTyp_32" zeroinitializer @"$TyDescr_Int32_34" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_32"* @"$TyDescr_Int32_Prim_33" to i8*) } @"$TyDescr_Uint32_Prim_35" = global %"$TyDescrTy_PrimTyp_32" { i32 1, i32 0 } diff --git a/testsuite/contr/map_corners_test.output.json b/testsuite/contr/map_corners_test.output.json index d54abea3..07164781 100644 --- a/testsuite/contr/map_corners_test.output.json +++ b/testsuite/contr/map_corners_test.output.json @@ -1,7 +1,7 @@ { "_accepted" : "false", "events" : [], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/match_assign.contrinfo.json b/testsuite/contr/match_assign.contrinfo.json index 464a0c4a..3225f49c 100644 --- a/testsuite/contr/match_assign.contrinfo.json +++ b/testsuite/contr/match_assign.contrinfo.json @@ -85,6 +85,6 @@ "warning_id": 2 } ], - "gas_remaining": "10000" + "gas_remaining": "9999" } diff --git a/testsuite/contr/match_assign.ll b/testsuite/contr/match_assign.ll index e38ccf63..85131ef4 100644 --- a/testsuite/contr/match_assign.ll +++ b/testsuite/contr/match_assign.ll @@ -21,6 +21,7 @@ target triple = "x86_64-pc-linux-gnu" %CName_False = type <{ i8 }> @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_3" = global %"$TyDescrTy_PrimTyp_2" zeroinitializer @"$TyDescr_Int32_4" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_2"* @"$TyDescr_Int32_Prim_3" to i8*) } @"$TyDescr_Uint32_Prim_5" = global %"$TyDescrTy_PrimTyp_2" { i32 1, i32 0 } diff --git a/testsuite/contr/match_assign.output_t1_false.json b/testsuite/contr/match_assign.output_t1_false.json index e9880f9c..299b03fc 100644 --- a/testsuite/contr/match_assign.output_t1_false.json +++ b/testsuite/contr/match_assign.output_t1_false.json @@ -32,7 +32,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/match_assign.output_t1_true.json b/testsuite/contr/match_assign.output_t1_true.json index dad91bcc..498a809d 100644 --- a/testsuite/contr/match_assign.output_t1_true.json +++ b/testsuite/contr/match_assign.output_t1_true.json @@ -32,7 +32,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/match_assign2.contrinfo.json b/testsuite/contr/match_assign2.contrinfo.json index a7e96c11..d0be3451 100644 --- a/testsuite/contr/match_assign2.contrinfo.json +++ b/testsuite/contr/match_assign2.contrinfo.json @@ -63,6 +63,6 @@ ] }, "warnings": [], - "gas_remaining": "10000" + "gas_remaining": "9999" } diff --git a/testsuite/contr/match_assign2.ll b/testsuite/contr/match_assign2.ll index 4aed5a48..15b9f8b9 100644 --- a/testsuite/contr/match_assign2.ll +++ b/testsuite/contr/match_assign2.ll @@ -23,6 +23,7 @@ target triple = "x86_64-pc-linux-gnu" %CName_Nil_Int32 = 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 } diff --git a/testsuite/contr/match_assign2.output_t1.json b/testsuite/contr/match_assign2.output_t1.json index 6e94af97..5773c58f 100644 --- a/testsuite/contr/match_assign2.output_t1.json +++ b/testsuite/contr/match_assign2.output_t1.json @@ -22,7 +22,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/match_assign3.contrinfo.json b/testsuite/contr/match_assign3.contrinfo.json index 63e0972b..fc12d528 100644 --- a/testsuite/contr/match_assign3.contrinfo.json +++ b/testsuite/contr/match_assign3.contrinfo.json @@ -60,6 +60,6 @@ ] }, "warnings": [], - "gas_remaining": "10000" + "gas_remaining": "9999" } diff --git a/testsuite/contr/match_assign3.ll b/testsuite/contr/match_assign3.ll index cdac56df..b1c4c99d 100644 --- a/testsuite/contr/match_assign3.ll +++ b/testsuite/contr/match_assign3.ll @@ -21,6 +21,7 @@ target triple = "x86_64-pc-linux-gnu" %CName_False = type <{ i8 }> @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_1" = global %"$TyDescrTy_PrimTyp_0" zeroinitializer @"$TyDescr_Int32_2" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_0"* @"$TyDescr_Int32_Prim_1" to i8*) } @"$TyDescr_Uint32_Prim_3" = global %"$TyDescrTy_PrimTyp_0" { i32 1, i32 0 } diff --git a/testsuite/contr/match_assign3.output_t1_false.json b/testsuite/contr/match_assign3.output_t1_false.json index 3ed46b33..8ae99643 100644 --- a/testsuite/contr/match_assign3.output_t1_false.json +++ b/testsuite/contr/match_assign3.output_t1_false.json @@ -22,7 +22,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/match_assign3.output_t1_true.json b/testsuite/contr/match_assign3.output_t1_true.json index 102f882c..ca96b451 100644 --- a/testsuite/contr/match_assign3.output_t1_true.json +++ b/testsuite/contr/match_assign3.output_t1_true.json @@ -22,7 +22,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/name_clash1.contrinfo.json b/testsuite/contr/name_clash1.contrinfo.json index 85059029..ab030bd6 100644 --- a/testsuite/contr/name_clash1.contrinfo.json +++ b/testsuite/contr/name_clash1.contrinfo.json @@ -105,6 +105,6 @@ "warning_id": 2 } ], - "gas_remaining": "10000" + "gas_remaining": "9999" } diff --git a/testsuite/contr/name_clash1.ll b/testsuite/contr/name_clash1.ll index a01aed32..f6b04637 100644 --- a/testsuite/contr/name_clash1.ll +++ b/testsuite/contr/name_clash1.ll @@ -24,6 +24,7 @@ target triple = "x86_64-pc-linux-gnu" %CName_Nil_Int32 = type <{ i8 }> @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_7" = global %"$TyDescrTy_PrimTyp_6" zeroinitializer @"$TyDescr_Int32_8" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_6"* @"$TyDescr_Int32_Prim_7" to i8*) } @"$TyDescr_Uint32_Prim_9" = global %"$TyDescrTy_PrimTyp_6" { i32 1, i32 0 } diff --git a/testsuite/contr/name_clash1.output_t1_false.json b/testsuite/contr/name_clash1.output_t1_false.json index 3135f26c..e618fd53 100644 --- a/testsuite/contr/name_clash1.output_t1_false.json +++ b/testsuite/contr/name_clash1.output_t1_false.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/name_clash1.output_t1_true.json b/testsuite/contr/name_clash1.output_t1_true.json index 3135f26c..e618fd53 100644 --- a/testsuite/contr/name_clash1.output_t1_true.json +++ b/testsuite/contr/name_clash1.output_t1_true.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/name_clash2.contrinfo.json b/testsuite/contr/name_clash2.contrinfo.json index 0665297d..f0b364d7 100644 --- a/testsuite/contr/name_clash2.contrinfo.json +++ b/testsuite/contr/name_clash2.contrinfo.json @@ -83,6 +83,6 @@ "warning_id": 2 } ], - "gas_remaining": "10000" + "gas_remaining": "9999" } diff --git a/testsuite/contr/name_clash2.ll b/testsuite/contr/name_clash2.ll index 7f028547..4b462652 100644 --- a/testsuite/contr/name_clash2.ll +++ b/testsuite/contr/name_clash2.ll @@ -21,6 +21,7 @@ target triple = "x86_64-pc-linux-gnu" %CName_False = type <{ i8 }> @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_4" = global %"$TyDescrTy_PrimTyp_3" zeroinitializer @"$TyDescr_Int32_5" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_3"* @"$TyDescr_Int32_Prim_4" to i8*) } @"$TyDescr_Uint32_Prim_6" = global %"$TyDescrTy_PrimTyp_3" { i32 1, i32 0 } diff --git a/testsuite/contr/name_clash2.output_t1_false.json b/testsuite/contr/name_clash2.output_t1_false.json index 60962b21..35121a52 100644 --- a/testsuite/contr/name_clash2.output_t1_false.json +++ b/testsuite/contr/name_clash2.output_t1_false.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/name_clash2.output_t1_true.json b/testsuite/contr/name_clash2.output_t1_true.json index 60962b21..35121a52 100644 --- a/testsuite/contr/name_clash2.output_t1_true.json +++ b/testsuite/contr/name_clash2.output_t1_true.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/pm-empty.contrinfo.json b/testsuite/contr/pm-empty.contrinfo.json index f693e13e..c7eb9cd5 100644 --- a/testsuite/contr/pm-empty.contrinfo.json +++ b/testsuite/contr/pm-empty.contrinfo.json @@ -60,6 +60,6 @@ ] }, "warnings": [], - "gas_remaining": "10000" + "gas_remaining": "9999" } diff --git a/testsuite/contr/pm-empty.ll b/testsuite/contr/pm-empty.ll index 3c2a0c65..3cc83248 100644 --- a/testsuite/contr/pm-empty.ll +++ b/testsuite/contr/pm-empty.ll @@ -21,6 +21,7 @@ target triple = "x86_64-pc-linux-gnu" %CName_False = type <{ i8 }> @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_1" = global %"$TyDescrTy_PrimTyp_0" zeroinitializer @"$TyDescr_Int32_2" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_0"* @"$TyDescr_Int32_Prim_1" to i8*) } @"$TyDescr_Uint32_Prim_3" = global %"$TyDescrTy_PrimTyp_0" { i32 1, i32 0 } diff --git a/testsuite/contr/pm-empty.output_t1_false.json b/testsuite/contr/pm-empty.output_t1_false.json index e9fb61a0..aeaf7862 100644 --- a/testsuite/contr/pm-empty.output_t1_false.json +++ b/testsuite/contr/pm-empty.output_t1_false.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/pm-empty.output_t1_true.json b/testsuite/contr/pm-empty.output_t1_true.json index d54abea3..07164781 100644 --- a/testsuite/contr/pm-empty.output_t1_true.json +++ b/testsuite/contr/pm-empty.output_t1_true.json @@ -1,7 +1,7 @@ { "_accepted" : "false", "events" : [], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/send.contrinfo.json b/testsuite/contr/send.contrinfo.json index c6504efa..2132d2ce 100644 --- a/testsuite/contr/send.contrinfo.json +++ b/testsuite/contr/send.contrinfo.json @@ -51,6 +51,6 @@ ] }, "warnings": [], - "gas_remaining": "10000" + "gas_remaining": "9999" } diff --git a/testsuite/contr/send.ll b/testsuite/contr/send.ll index 0f97d6fd..7769a6b2 100644 --- a/testsuite/contr/send.ll +++ b/testsuite/contr/send.ll @@ -21,6 +21,7 @@ target triple = "x86_64-pc-linux-gnu" %String = type { i8*, i32 } @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_5" = global %"$TyDescrTy_PrimTyp_4" zeroinitializer @"$TyDescr_Int32_6" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_4"* @"$TyDescr_Int32_Prim_5" to i8*) } @"$TyDescr_Uint32_Prim_7" = global %"$TyDescrTy_PrimTyp_4" { i32 1, i32 0 } diff --git a/testsuite/contr/send.output_SendMsg.json b/testsuite/contr/send.output_SendMsg.json index e02b45e7..a06d5267 100644 --- a/testsuite/contr/send.output_SendMsg.json +++ b/testsuite/contr/send.output_SendMsg.json @@ -1,7 +1,7 @@ { "_accepted" : "false", "events" : [], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [ { "_amount" : "0", diff --git a/testsuite/contr/send.output_SendMsg2.json b/testsuite/contr/send.output_SendMsg2.json index 77de0a04..96355468 100644 --- a/testsuite/contr/send.output_SendMsg2.json +++ b/testsuite/contr/send.output_SendMsg2.json @@ -1,7 +1,7 @@ { "_accepted" : "false", "events" : [], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [ { "_amount" : "100", diff --git a/testsuite/contr/simple-map.contrinfo.json b/testsuite/contr/simple-map.contrinfo.json index 5c72fd7c..b80ac799 100644 --- a/testsuite/contr/simple-map.contrinfo.json +++ b/testsuite/contr/simple-map.contrinfo.json @@ -65,6 +65,6 @@ ] }, "warnings": [], - "gas_remaining": "10000" + "gas_remaining": "9999" } diff --git a/testsuite/contr/simple-map.ll b/testsuite/contr/simple-map.ll index 396cee16..8044c121 100644 --- a/testsuite/contr/simple-map.ll +++ b/testsuite/contr/simple-map.ll @@ -23,6 +23,7 @@ target triple = "x86_64-pc-linux-gnu" %CName_None_Int32 = type <{ i8 }> @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_5" = global %"$TyDescrTy_PrimTyp_4" zeroinitializer @"$TyDescr_Int32_6" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_4"* @"$TyDescr_Int32_Prim_5" to i8*) } @"$TyDescr_Uint32_Prim_7" = global %"$TyDescrTy_PrimTyp_4" { i32 1, i32 0 } diff --git a/testsuite/contr/simple-map.output.json b/testsuite/contr/simple-map.output.json index d54abea3..07164781 100644 --- a/testsuite/contr/simple-map.output.json +++ b/testsuite/contr/simple-map.output.json @@ -1,7 +1,7 @@ { "_accepted" : "false", "events" : [], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/throw.contrinfo.json b/testsuite/contr/throw.contrinfo.json index b2ae068e..ffa7966b 100644 --- a/testsuite/contr/throw.contrinfo.json +++ b/testsuite/contr/throw.contrinfo.json @@ -51,6 +51,6 @@ ] }, "warnings": [], - "gas_remaining": "10000" + "gas_remaining": "9999" } diff --git a/testsuite/contr/throw.ll b/testsuite/contr/throw.ll index 58ffa62f..db8ee768 100644 --- a/testsuite/contr/throw.ll +++ b/testsuite/contr/throw.ll @@ -13,6 +13,7 @@ target triple = "x86_64-pc-linux-gnu" %String = type { i8*, i32 } @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_1" = global %"$TyDescrTy_PrimTyp_0" zeroinitializer @"$TyDescr_Int32_2" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_0"* @"$TyDescr_Int32_Prim_1" to i8*) } @"$TyDescr_Uint32_Prim_3" = global %"$TyDescrTy_PrimTyp_0" { i32 1, i32 0 } diff --git a/testsuite/contr/ud-proxy.contrinfo.json b/testsuite/contr/ud-proxy.contrinfo.json index ea8bc105..24ccaaba 100644 --- a/testsuite/contr/ud-proxy.contrinfo.json +++ b/testsuite/contr/ud-proxy.contrinfo.json @@ -78,6 +78,6 @@ ] }, "warnings": [], - "gas_remaining": "9350" + "gas_remaining": "9918" } diff --git a/testsuite/contr/ud-proxy.ll b/testsuite/contr/ud-proxy.ll index 39829c6c..21de4369 100644 --- a/testsuite/contr/ud-proxy.ll +++ b/testsuite/contr/ud-proxy.ll @@ -31,6 +31,7 @@ target triple = "x86_64-pc-linux-gnu" %CName_None_Bool = type <{ i8 }> @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_11" = global %"$TyDescrTy_PrimTyp_10" zeroinitializer @"$TyDescr_Int32_12" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_10"* @"$TyDescr_Int32_Prim_11" to i8*) } @"$TyDescr_Uint32_Prim_13" = global %"$TyDescrTy_PrimTyp_10" { i32 1, i32 0 } diff --git a/testsuite/contr/ud-proxy.output_bestow.json b/testsuite/contr/ud-proxy.output_bestow.json index df2201b5..4d768158 100644 --- a/testsuite/contr/ud-proxy.output_bestow.json +++ b/testsuite/contr/ud-proxy.output_bestow.json @@ -1,7 +1,7 @@ { "_accepted" : "false", "events" : [], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [ { "_amount" : "0", diff --git a/testsuite/contr/ud-registry.contrinfo.json b/testsuite/contr/ud-registry.contrinfo.json index 3cfd5cca..c5d7a098 100644 --- a/testsuite/contr/ud-registry.contrinfo.json +++ b/testsuite/contr/ud-registry.contrinfo.json @@ -186,6 +186,6 @@ ] }, "warnings": [], - "gas_remaining": "9329" + "gas_remaining": "9916" } diff --git a/testsuite/contr/ud-registry.ll b/testsuite/contr/ud-registry.ll index 15bcc492..0b2e3abe 100644 --- a/testsuite/contr/ud-registry.ll +++ b/testsuite/contr/ud-registry.ll @@ -104,6 +104,7 @@ target triple = "x86_64-pc-linux-gnu" %Uint128 = type { i128 } @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_278" = global %"$TyDescrTy_PrimTyp_277" zeroinitializer @"$TyDescr_Int32_279" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_277"* @"$TyDescr_Int32_Prim_278" to i8*) } @"$TyDescr_Uint32_Prim_280" = global %"$TyDescrTy_PrimTyp_277" { i32 1, i32 0 } diff --git a/testsuite/contr/ud-registry.output_bestow.json b/testsuite/contr/ud-registry.output_bestow.json index 08273dda..62fd06bb 100644 --- a/testsuite/contr/ud-registry.output_bestow.json +++ b/testsuite/contr/ud-registry.output_bestow.json @@ -37,7 +37,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/ud-registry.output_setAdmin.json b/testsuite/contr/ud-registry.output_setAdmin.json index 303051c3..3147af1c 100644 --- a/testsuite/contr/ud-registry.output_setAdmin.json +++ b/testsuite/contr/ud-registry.output_setAdmin.json @@ -21,7 +21,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/ud-registry.output_setRegistrar.json b/testsuite/contr/ud-registry.output_setRegistrar.json index 3faa1d39..921ab285 100644 --- a/testsuite/contr/ud-registry.output_setRegistrar.json +++ b/testsuite/contr/ud-registry.output_setRegistrar.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "0", + "gas_remaining" : "10000000", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/expr/ackermann.ll b/testsuite/expr/ackermann.ll index cb420faf..8bd1a0ae 100644 --- a/testsuite/expr/ackermann.ll +++ b/testsuite/expr/ackermann.ll @@ -150,6 +150,7 @@ target triple = "x86_64-pc-linux-gnu" %"$$fundef_94_env_233" = type {} @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_158" = global %"$TyDescrTy_PrimTyp_157" zeroinitializer @"$TyDescr_Int32_159" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_157"* @"$TyDescr_Int32_Prim_158" to i8*) } @"$TyDescr_Uint32_Prim_160" = global %"$TyDescrTy_PrimTyp_157" { i32 1, i32 0 } @@ -196,996 +197,1691 @@ target triple = "x86_64-pc-linux-gnu" define internal { %TName_Nat* (i8*, %TName_Nat*)*, i8* } @"$fundef_155"(%"$$fundef_155_env_203"* %0, %TName_Nat* %1) { entry: - %"$$fundef_155_env_f_708" = getelementptr inbounds %"$$fundef_155_env_203", %"$$fundef_155_env_203"* %0, i32 0, i32 0 - %"$f_envload_709" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_155_env_f_708" + %"$$fundef_155_env_f_1018" = getelementptr inbounds %"$$fundef_155_env_203", %"$$fundef_155_env_203"* %0, i32 0, i32 0 + %"$f_envload_1019" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_155_env_f_1018" %f = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_709", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - %"$$fundef_155_env_iter_nat_nat_710" = getelementptr inbounds %"$$fundef_155_env_203", %"$$fundef_155_env_203"* %0, i32 0, i32 1 - %"$iter_nat_nat_envload_711" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$$fundef_155_env_iter_nat_nat_710" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_1019", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + %"$$fundef_155_env_iter_nat_nat_1020" = getelementptr inbounds %"$$fundef_155_env_203", %"$$fundef_155_env_203"* %0, i32 0, i32 1 + %"$iter_nat_nat_envload_1021" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$$fundef_155_env_iter_nat_nat_1020" %iter_nat_nat = alloca { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } - store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$iter_nat_nat_envload_711", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %iter_nat_nat - %"$$fundef_155_env_nat_succ_712" = getelementptr inbounds %"$$fundef_155_env_203", %"$$fundef_155_env_203"* %0, i32 0, i32 2 - %"$nat_succ_envload_713" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_155_env_nat_succ_712" + store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$iter_nat_nat_envload_1021", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %iter_nat_nat + %"$$fundef_155_env_nat_succ_1022" = getelementptr inbounds %"$$fundef_155_env_203", %"$$fundef_155_env_203"* %0, i32 0, i32 2 + %"$nat_succ_envload_1023" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_155_env_nat_succ_1022" %nat_succ = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$nat_succ_envload_713", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %nat_succ + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$nat_succ_envload_1023", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %nat_succ %"$retval_156" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } + %"$gasrem_1024" = load i64, i64* @_gasrem + %"$gascmp_1025" = icmp ugt i64 1, %"$gasrem_1024" + br i1 %"$gascmp_1025", label %"$out_of_gas_1026", label %"$have_gas_1027" + +"$out_of_gas_1026": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1027" + +"$have_gas_1027": ; preds = %"$out_of_gas_1026", %entry + %"$consume_1028" = sub i64 %"$gasrem_1024", 1 + store i64 %"$consume_1028", i64* @_gasrem %"$iter_nat_nat_33" = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$iter_nat_nat_714" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %iter_nat_nat - %"$iter_nat_nat_fptr_715" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$iter_nat_nat_714", 0 - %"$iter_nat_nat_envptr_716" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$iter_nat_nat_714", 1 - %"$f_717" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - %"$iter_nat_nat_call_718" = call { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$iter_nat_nat_fptr_715"(i8* %"$iter_nat_nat_envptr_716", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_717") - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$iter_nat_nat_call_718", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_nat_33" + %"$iter_nat_nat_1029" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %iter_nat_nat + %"$iter_nat_nat_fptr_1030" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$iter_nat_nat_1029", 0 + %"$iter_nat_nat_envptr_1031" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$iter_nat_nat_1029", 1 + %"$f_1032" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + %"$iter_nat_nat_call_1033" = call { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$iter_nat_nat_fptr_1030"(i8* %"$iter_nat_nat_envptr_1031", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_1032") + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$iter_nat_nat_call_1033", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_nat_33" %"$iter_nat_nat_34" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - %"$$iter_nat_nat_33_719" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_nat_33" - %"$$iter_nat_nat_33_fptr_720" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_33_719", 0 - %"$$iter_nat_nat_33_envptr_721" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_33_719", 1 - %"$$iter_nat_nat_33_call_722" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$iter_nat_nat_33_fptr_720"(i8* %"$$iter_nat_nat_33_envptr_721", %TName_Nat* %1) - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$iter_nat_nat_33_call_722", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$iter_nat_nat_34" + %"$$iter_nat_nat_33_1034" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_nat_33" + %"$$iter_nat_nat_33_fptr_1035" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_33_1034", 0 + %"$$iter_nat_nat_33_envptr_1036" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_33_1034", 1 + %"$$iter_nat_nat_33_call_1037" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$iter_nat_nat_33_fptr_1035"(i8* %"$$iter_nat_nat_33_envptr_1036", %TName_Nat* %1) + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$iter_nat_nat_33_call_1037", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$iter_nat_nat_34" %"$iter_nat_nat_35" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$$iter_nat_nat_34_723" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$iter_nat_nat_34" - %"$$iter_nat_nat_34_fptr_724" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$iter_nat_nat_34_723", 0 - %"$$iter_nat_nat_34_envptr_725" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$iter_nat_nat_34_723", 1 - %"$nat_succ_726" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %nat_succ - %"$$iter_nat_nat_34_call_727" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_34_fptr_724"(i8* %"$$iter_nat_nat_34_envptr_725", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$nat_succ_726") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_34_call_727", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_nat_35" - %"$$iter_nat_nat_35_728" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_nat_35" - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_35_728", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_156" - %"$$retval_156_729" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_156" - ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_156_729" + %"$$iter_nat_nat_34_1038" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$iter_nat_nat_34" + %"$$iter_nat_nat_34_fptr_1039" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$iter_nat_nat_34_1038", 0 + %"$$iter_nat_nat_34_envptr_1040" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$iter_nat_nat_34_1038", 1 + %"$nat_succ_1041" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %nat_succ + %"$$iter_nat_nat_34_call_1042" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_34_fptr_1039"(i8* %"$$iter_nat_nat_34_envptr_1040", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$nat_succ_1041") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_34_call_1042", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_nat_35" + %"$$iter_nat_nat_35_1043" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_nat_35" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_35_1043", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_156" + %"$$retval_156_1044" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_156" + ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_156_1044" } define internal %TName_Nat* @"$fundef_153"(%"$$fundef_153_env_204"* %0, %TName_Nat* %1) { entry: - %"$$fundef_153_env_ack_686" = getelementptr inbounds %"$$fundef_153_env_204", %"$$fundef_153_env_204"* %0, i32 0, i32 0 - %"$ack_envload_687" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_153_env_ack_686" + %"$$fundef_153_env_ack_991" = getelementptr inbounds %"$$fundef_153_env_204", %"$$fundef_153_env_204"* %0, i32 0, i32 0 + %"$ack_envload_992" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_153_env_ack_991" %ack = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ack_envload_687", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %ack - %"$$fundef_153_env_iter_nat_688" = getelementptr inbounds %"$$fundef_153_env_204", %"$$fundef_153_env_204"* %0, i32 0, i32 1 - %"$iter_nat_envload_689" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_153_env_iter_nat_688" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ack_envload_992", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %ack + %"$$fundef_153_env_iter_nat_993" = getelementptr inbounds %"$$fundef_153_env_204", %"$$fundef_153_env_204"* %0, i32 0, i32 1 + %"$iter_nat_envload_994" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_153_env_iter_nat_993" %iter_nat = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_envload_689", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat - %"$$fundef_153_env_x0_690" = getelementptr inbounds %"$$fundef_153_env_204", %"$$fundef_153_env_204"* %0, i32 0, i32 2 - %"$x0_envload_691" = load %TName_Nat*, %TName_Nat** %"$$fundef_153_env_x0_690" + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_envload_994", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat + %"$$fundef_153_env_x0_995" = getelementptr inbounds %"$$fundef_153_env_204", %"$$fundef_153_env_204"* %0, i32 0, i32 2 + %"$x0_envload_996" = load %TName_Nat*, %TName_Nat** %"$$fundef_153_env_x0_995" %x0 = alloca %TName_Nat* - store %TName_Nat* %"$x0_envload_691", %TName_Nat** %x0 + store %TName_Nat* %"$x0_envload_996", %TName_Nat** %x0 %"$retval_154" = alloca %TName_Nat* + %"$gasrem_997" = load i64, i64* @_gasrem + %"$gascmp_998" = icmp ugt i64 1, %"$gasrem_997" + br i1 %"$gascmp_998", label %"$out_of_gas_999", label %"$have_gas_1000" + +"$out_of_gas_999": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1000" + +"$have_gas_1000": ; preds = %"$out_of_gas_999", %entry + %"$consume_1001" = sub i64 %"$gasrem_997", 1 + store i64 %"$consume_1001", i64* @_gasrem %"$iter_nat_30" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$iter_nat_692" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat - %"$iter_nat_fptr_693" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_692", 0 - %"$iter_nat_envptr_694" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_692", 1 - %"$ack_695" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %ack - %"$iter_nat_call_696" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$iter_nat_fptr_693"(i8* %"$iter_nat_envptr_694", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ack_695") - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$iter_nat_call_696", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_30" + %"$iter_nat_1002" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat + %"$iter_nat_fptr_1003" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_1002", 0 + %"$iter_nat_envptr_1004" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_1002", 1 + %"$ack_1005" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %ack + %"$iter_nat_call_1006" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$iter_nat_fptr_1003"(i8* %"$iter_nat_envptr_1004", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ack_1005") + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$iter_nat_call_1006", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_30" %"$iter_nat_31" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$$iter_nat_30_697" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_30" - %"$$iter_nat_30_fptr_698" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_30_697", 0 - %"$$iter_nat_30_envptr_699" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_30_697", 1 - %"$$iter_nat_30_call_700" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_30_fptr_698"(i8* %"$$iter_nat_30_envptr_699", %TName_Nat* %1) - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_30_call_700", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_31" + %"$$iter_nat_30_1007" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_30" + %"$$iter_nat_30_fptr_1008" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_30_1007", 0 + %"$$iter_nat_30_envptr_1009" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_30_1007", 1 + %"$$iter_nat_30_call_1010" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_30_fptr_1008"(i8* %"$$iter_nat_30_envptr_1009", %TName_Nat* %1) + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_30_call_1010", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_31" %"$iter_nat_32" = alloca %TName_Nat* - %"$$iter_nat_31_701" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_31" - %"$$iter_nat_31_fptr_702" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_31_701", 0 - %"$$iter_nat_31_envptr_703" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_31_701", 1 - %"$x0_704" = load %TName_Nat*, %TName_Nat** %x0 - %"$$iter_nat_31_call_705" = call %TName_Nat* %"$$iter_nat_31_fptr_702"(i8* %"$$iter_nat_31_envptr_703", %TName_Nat* %"$x0_704") - store %TName_Nat* %"$$iter_nat_31_call_705", %TName_Nat** %"$iter_nat_32" - %"$$iter_nat_32_706" = load %TName_Nat*, %TName_Nat** %"$iter_nat_32" - store %TName_Nat* %"$$iter_nat_32_706", %TName_Nat** %"$retval_154" - %"$$retval_154_707" = load %TName_Nat*, %TName_Nat** %"$retval_154" - ret %TName_Nat* %"$$retval_154_707" + %"$$iter_nat_31_1011" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_31" + %"$$iter_nat_31_fptr_1012" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_31_1011", 0 + %"$$iter_nat_31_envptr_1013" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_31_1011", 1 + %"$x0_1014" = load %TName_Nat*, %TName_Nat** %x0 + %"$$iter_nat_31_call_1015" = call %TName_Nat* %"$$iter_nat_31_fptr_1012"(i8* %"$$iter_nat_31_envptr_1013", %TName_Nat* %"$x0_1014") + store %TName_Nat* %"$$iter_nat_31_call_1015", %TName_Nat** %"$iter_nat_32" + %"$$iter_nat_32_1016" = load %TName_Nat*, %TName_Nat** %"$iter_nat_32" + store %TName_Nat* %"$$iter_nat_32_1016", %TName_Nat** %"$retval_154" + %"$$retval_154_1017" = load %TName_Nat*, %TName_Nat** %"$retval_154" + ret %TName_Nat* %"$$retval_154_1017" } define internal { %TName_Nat* (i8*, %TName_Nat*)*, i8* } @"$fundef_151"(%"$$fundef_151_env_205"* %0, { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1) { entry: - %"$$fundef_151_env_iter_nat_667" = getelementptr inbounds %"$$fundef_151_env_205", %"$$fundef_151_env_205"* %0, i32 0, i32 0 - %"$iter_nat_envload_668" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_151_env_iter_nat_667" + %"$$fundef_151_env_iter_nat_957" = getelementptr inbounds %"$$fundef_151_env_205", %"$$fundef_151_env_205"* %0, i32 0, i32 0 + %"$iter_nat_envload_958" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_151_env_iter_nat_957" %iter_nat = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_envload_668", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat - %"$$fundef_151_env_one_669" = getelementptr inbounds %"$$fundef_151_env_205", %"$$fundef_151_env_205"* %0, i32 0, i32 1 - %"$one_envload_670" = load %TName_Nat*, %TName_Nat** %"$$fundef_151_env_one_669" + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_envload_958", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat + %"$$fundef_151_env_one_959" = getelementptr inbounds %"$$fundef_151_env_205", %"$$fundef_151_env_205"* %0, i32 0, i32 1 + %"$one_envload_960" = load %TName_Nat*, %TName_Nat** %"$$fundef_151_env_one_959" %one = alloca %TName_Nat* - store %TName_Nat* %"$one_envload_670", %TName_Nat** %one + store %TName_Nat* %"$one_envload_960", %TName_Nat** %one %"$retval_152" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } + %"$gasrem_961" = load i64, i64* @_gasrem + %"$gascmp_962" = icmp ugt i64 1, %"$gasrem_961" + br i1 %"$gascmp_962", label %"$out_of_gas_963", label %"$have_gas_964" + +"$out_of_gas_963": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_964" + +"$have_gas_964": ; preds = %"$out_of_gas_963", %entry + %"$consume_965" = sub i64 %"$gasrem_961", 1 + store i64 %"$consume_965", i64* @_gasrem %x0 = alloca %TName_Nat* + %"$gasrem_966" = load i64, i64* @_gasrem + %"$gascmp_967" = icmp ugt i64 1, %"$gasrem_966" + br i1 %"$gascmp_967", label %"$out_of_gas_968", label %"$have_gas_969" + +"$out_of_gas_968": ; preds = %"$have_gas_964" + call void @_out_of_gas() + br label %"$have_gas_969" + +"$have_gas_969": ; preds = %"$out_of_gas_968", %"$have_gas_964" + %"$consume_970" = sub i64 %"$gasrem_966", 1 + store i64 %"$consume_970", i64* @_gasrem %"$ack_29" = alloca %TName_Nat* - %"$ack_fptr_671" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, 0 - %"$ack_envptr_672" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, 1 - %"$one_673" = load %TName_Nat*, %TName_Nat** %one - %"$ack_call_674" = call %TName_Nat* %"$ack_fptr_671"(i8* %"$ack_envptr_672", %TName_Nat* %"$one_673") - store %TName_Nat* %"$ack_call_674", %TName_Nat** %"$ack_29" - %"$$ack_29_675" = load %TName_Nat*, %TName_Nat** %"$ack_29" - store %TName_Nat* %"$$ack_29_675", %TName_Nat** %x0 - %"$$fundef_153_envp_676_load" = load i8*, i8** @_execptr - %"$$fundef_153_envp_676_salloc" = call i8* @_salloc(i8* %"$$fundef_153_envp_676_load", i64 40) - %"$$fundef_153_envp_676" = bitcast i8* %"$$fundef_153_envp_676_salloc" to %"$$fundef_153_env_204"* - %"$$fundef_153_env_voidp_678" = bitcast %"$$fundef_153_env_204"* %"$$fundef_153_envp_676" to i8* - %"$$fundef_153_cloval_679" = insertvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } { %TName_Nat* (i8*, %TName_Nat*)* bitcast (%TName_Nat* (%"$$fundef_153_env_204"*, %TName_Nat*)* @"$fundef_153" to %TName_Nat* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_153_env_voidp_678", 1 - %"$$fundef_153_env_ack_680" = getelementptr inbounds %"$$fundef_153_env_204", %"$$fundef_153_env_204"* %"$$fundef_153_envp_676", i32 0, i32 0 - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_153_env_ack_680" - %"$$fundef_153_env_iter_nat_681" = getelementptr inbounds %"$$fundef_153_env_204", %"$$fundef_153_env_204"* %"$$fundef_153_envp_676", i32 0, i32 1 - %"$iter_nat_682" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_682", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_153_env_iter_nat_681" - %"$$fundef_153_env_x0_683" = getelementptr inbounds %"$$fundef_153_env_204", %"$$fundef_153_env_204"* %"$$fundef_153_envp_676", i32 0, i32 2 - %"$x0_684" = load %TName_Nat*, %TName_Nat** %x0 - store %TName_Nat* %"$x0_684", %TName_Nat** %"$$fundef_153_env_x0_683" - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fundef_153_cloval_679", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_152" - %"$$retval_152_685" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_152" - ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_152_685" + %"$ack_fptr_971" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, 0 + %"$ack_envptr_972" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, 1 + %"$one_973" = load %TName_Nat*, %TName_Nat** %one + %"$ack_call_974" = call %TName_Nat* %"$ack_fptr_971"(i8* %"$ack_envptr_972", %TName_Nat* %"$one_973") + store %TName_Nat* %"$ack_call_974", %TName_Nat** %"$ack_29" + %"$$ack_29_975" = load %TName_Nat*, %TName_Nat** %"$ack_29" + store %TName_Nat* %"$$ack_29_975", %TName_Nat** %x0 + %"$gasrem_976" = load i64, i64* @_gasrem + %"$gascmp_977" = icmp ugt i64 1, %"$gasrem_976" + br i1 %"$gascmp_977", label %"$out_of_gas_978", label %"$have_gas_979" + +"$out_of_gas_978": ; preds = %"$have_gas_969" + call void @_out_of_gas() + br label %"$have_gas_979" + +"$have_gas_979": ; preds = %"$out_of_gas_978", %"$have_gas_969" + %"$consume_980" = sub i64 %"$gasrem_976", 1 + store i64 %"$consume_980", i64* @_gasrem + %"$$fundef_153_envp_981_load" = load i8*, i8** @_execptr + %"$$fundef_153_envp_981_salloc" = call i8* @_salloc(i8* %"$$fundef_153_envp_981_load", i64 40) + %"$$fundef_153_envp_981" = bitcast i8* %"$$fundef_153_envp_981_salloc" to %"$$fundef_153_env_204"* + %"$$fundef_153_env_voidp_983" = bitcast %"$$fundef_153_env_204"* %"$$fundef_153_envp_981" to i8* + %"$$fundef_153_cloval_984" = insertvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } { %TName_Nat* (i8*, %TName_Nat*)* bitcast (%TName_Nat* (%"$$fundef_153_env_204"*, %TName_Nat*)* @"$fundef_153" to %TName_Nat* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_153_env_voidp_983", 1 + %"$$fundef_153_env_ack_985" = getelementptr inbounds %"$$fundef_153_env_204", %"$$fundef_153_env_204"* %"$$fundef_153_envp_981", i32 0, i32 0 + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_153_env_ack_985" + %"$$fundef_153_env_iter_nat_986" = getelementptr inbounds %"$$fundef_153_env_204", %"$$fundef_153_env_204"* %"$$fundef_153_envp_981", i32 0, i32 1 + %"$iter_nat_987" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_987", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_153_env_iter_nat_986" + %"$$fundef_153_env_x0_988" = getelementptr inbounds %"$$fundef_153_env_204", %"$$fundef_153_env_204"* %"$$fundef_153_envp_981", i32 0, i32 2 + %"$x0_989" = load %TName_Nat*, %TName_Nat** %x0 + store %TName_Nat* %"$x0_989", %TName_Nat** %"$$fundef_153_env_x0_988" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fundef_153_cloval_984", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_152" + %"$$retval_152_990" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_152" + ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_152_990" } define internal %TName_Nat* @"$fundef_149"(%"$$fundef_149_env_206"* %0, %TName_Nat* %1) { entry: - %"$$fundef_149_env_f_656" = getelementptr inbounds %"$$fundef_149_env_206", %"$$fundef_149_env_206"* %0, i32 0, i32 0 - %"$f_envload_657" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_149_env_f_656" + %"$$fundef_149_env_f_941" = getelementptr inbounds %"$$fundef_149_env_206", %"$$fundef_149_env_206"* %0, i32 0, i32 0 + %"$f_envload_942" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_149_env_f_941" %f = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_envload_657", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f - %"$$fundef_149_env_x_658" = getelementptr inbounds %"$$fundef_149_env_206", %"$$fundef_149_env_206"* %0, i32 0, i32 1 - %"$x_envload_659" = load %TName_Nat*, %TName_Nat** %"$$fundef_149_env_x_658" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_envload_942", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f + %"$$fundef_149_env_x_943" = getelementptr inbounds %"$$fundef_149_env_206", %"$$fundef_149_env_206"* %0, i32 0, i32 1 + %"$x_envload_944" = load %TName_Nat*, %TName_Nat** %"$$fundef_149_env_x_943" %x = alloca %TName_Nat* - store %TName_Nat* %"$x_envload_659", %TName_Nat** %x + store %TName_Nat* %"$x_envload_944", %TName_Nat** %x %"$retval_150" = alloca %TName_Nat* + %"$gasrem_945" = load i64, i64* @_gasrem + %"$gascmp_946" = icmp ugt i64 1, %"$gasrem_945" + br i1 %"$gascmp_946", label %"$out_of_gas_947", label %"$have_gas_948" + +"$out_of_gas_947": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_948" + +"$have_gas_948": ; preds = %"$out_of_gas_947", %entry + %"$consume_949" = sub i64 %"$gasrem_945", 1 + store i64 %"$consume_949", i64* @_gasrem %"$f_25" = alloca %TName_Nat* - %"$f_660" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f - %"$f_fptr_661" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_660", 0 - %"$f_envptr_662" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_660", 1 - %"$x_663" = load %TName_Nat*, %TName_Nat** %x - %"$f_call_664" = call %TName_Nat* %"$f_fptr_661"(i8* %"$f_envptr_662", %TName_Nat* %"$x_663") - store %TName_Nat* %"$f_call_664", %TName_Nat** %"$f_25" - %"$$f_25_665" = load %TName_Nat*, %TName_Nat** %"$f_25" - store %TName_Nat* %"$$f_25_665", %TName_Nat** %"$retval_150" - %"$$retval_150_666" = load %TName_Nat*, %TName_Nat** %"$retval_150" - ret %TName_Nat* %"$$retval_150_666" + %"$f_950" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f + %"$f_fptr_951" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_950", 0 + %"$f_envptr_952" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_950", 1 + %"$x_953" = load %TName_Nat*, %TName_Nat** %x + %"$f_call_954" = call %TName_Nat* %"$f_fptr_951"(i8* %"$f_envptr_952", %TName_Nat* %"$x_953") + store %TName_Nat* %"$f_call_954", %TName_Nat** %"$f_25" + %"$$f_25_955" = load %TName_Nat*, %TName_Nat** %"$f_25" + store %TName_Nat* %"$$f_25_955", %TName_Nat** %"$retval_150" + %"$$retval_150_956" = load %TName_Nat*, %TName_Nat** %"$retval_150" + ret %TName_Nat* %"$$retval_150_956" } define internal { %TName_Nat* (i8*, %TName_Nat*)*, i8* } @"$fundef_147"(%"$$fundef_147_env_207"* %0, %TName_Nat* %1) { entry: - %"$$fundef_147_env_f_646" = getelementptr inbounds %"$$fundef_147_env_207", %"$$fundef_147_env_207"* %0, i32 0, i32 0 - %"$f_envload_647" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_147_env_f_646" + %"$$fundef_147_env_f_926" = getelementptr inbounds %"$$fundef_147_env_207", %"$$fundef_147_env_207"* %0, i32 0, i32 0 + %"$f_envload_927" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_147_env_f_926" %f = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_envload_647", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_envload_927", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f %"$retval_148" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$$fundef_149_envp_648_load" = load i8*, i8** @_execptr - %"$$fundef_149_envp_648_salloc" = call i8* @_salloc(i8* %"$$fundef_149_envp_648_load", i64 24) - %"$$fundef_149_envp_648" = bitcast i8* %"$$fundef_149_envp_648_salloc" to %"$$fundef_149_env_206"* - %"$$fundef_149_env_voidp_650" = bitcast %"$$fundef_149_env_206"* %"$$fundef_149_envp_648" to i8* - %"$$fundef_149_cloval_651" = insertvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } { %TName_Nat* (i8*, %TName_Nat*)* bitcast (%TName_Nat* (%"$$fundef_149_env_206"*, %TName_Nat*)* @"$fundef_149" to %TName_Nat* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_149_env_voidp_650", 1 - %"$$fundef_149_env_f_652" = getelementptr inbounds %"$$fundef_149_env_206", %"$$fundef_149_env_206"* %"$$fundef_149_envp_648", i32 0, i32 0 - %"$f_653" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_653", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_149_env_f_652" - %"$$fundef_149_env_x_654" = getelementptr inbounds %"$$fundef_149_env_206", %"$$fundef_149_env_206"* %"$$fundef_149_envp_648", i32 0, i32 1 - store %TName_Nat* %1, %TName_Nat** %"$$fundef_149_env_x_654" - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fundef_149_cloval_651", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_148" - %"$$retval_148_655" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_148" - ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_148_655" + %"$gasrem_928" = load i64, i64* @_gasrem + %"$gascmp_929" = icmp ugt i64 1, %"$gasrem_928" + br i1 %"$gascmp_929", label %"$out_of_gas_930", label %"$have_gas_931" + +"$out_of_gas_930": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_931" + +"$have_gas_931": ; preds = %"$out_of_gas_930", %entry + %"$consume_932" = sub i64 %"$gasrem_928", 1 + store i64 %"$consume_932", i64* @_gasrem + %"$$fundef_149_envp_933_load" = load i8*, i8** @_execptr + %"$$fundef_149_envp_933_salloc" = call i8* @_salloc(i8* %"$$fundef_149_envp_933_load", i64 24) + %"$$fundef_149_envp_933" = bitcast i8* %"$$fundef_149_envp_933_salloc" to %"$$fundef_149_env_206"* + %"$$fundef_149_env_voidp_935" = bitcast %"$$fundef_149_env_206"* %"$$fundef_149_envp_933" to i8* + %"$$fundef_149_cloval_936" = insertvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } { %TName_Nat* (i8*, %TName_Nat*)* bitcast (%TName_Nat* (%"$$fundef_149_env_206"*, %TName_Nat*)* @"$fundef_149" to %TName_Nat* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_149_env_voidp_935", 1 + %"$$fundef_149_env_f_937" = getelementptr inbounds %"$$fundef_149_env_206", %"$$fundef_149_env_206"* %"$$fundef_149_envp_933", i32 0, i32 0 + %"$f_938" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_938", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_149_env_f_937" + %"$$fundef_149_env_x_939" = getelementptr inbounds %"$$fundef_149_env_206", %"$$fundef_149_env_206"* %"$$fundef_149_envp_933", i32 0, i32 1 + store %TName_Nat* %1, %TName_Nat** %"$$fundef_149_env_x_939" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fundef_149_cloval_936", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_148" + %"$$retval_148_940" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_148" + ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_148_940" } define internal %TName_Nat* @"$fundef_145"(%"$$fundef_145_env_208"* %0, %TName_Nat* %1) { entry: - %"$$fundef_145_env_f_611" = getelementptr inbounds %"$$fundef_145_env_208", %"$$fundef_145_env_208"* %0, i32 0, i32 0 - %"$f_envload_612" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_145_env_f_611" + %"$$fundef_145_env_f_866" = getelementptr inbounds %"$$fundef_145_env_208", %"$$fundef_145_env_208"* %0, i32 0, i32 0 + %"$f_envload_867" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_145_env_f_866" %f = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_envload_612", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f - %"$$fundef_145_env_n_613" = getelementptr inbounds %"$$fundef_145_env_208", %"$$fundef_145_env_208"* %0, i32 0, i32 1 - %"$n_envload_614" = load %TName_Nat*, %TName_Nat** %"$$fundef_145_env_n_613" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_envload_867", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f + %"$$fundef_145_env_n_868" = getelementptr inbounds %"$$fundef_145_env_208", %"$$fundef_145_env_208"* %0, i32 0, i32 1 + %"$n_envload_869" = load %TName_Nat*, %TName_Nat** %"$$fundef_145_env_n_868" %n = alloca %TName_Nat* - store %TName_Nat* %"$n_envload_614", %TName_Nat** %n - %"$$fundef_145_env_nat_fold_615" = getelementptr inbounds %"$$fundef_145_env_208", %"$$fundef_145_env_208"* %0, i32 0, i32 2 - %"$nat_fold_envload_616" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_145_env_nat_fold_615" + store %TName_Nat* %"$n_envload_869", %TName_Nat** %n + %"$$fundef_145_env_nat_fold_870" = getelementptr inbounds %"$$fundef_145_env_208", %"$$fundef_145_env_208"* %0, i32 0, i32 2 + %"$nat_fold_envload_871" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_145_env_nat_fold_870" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_616", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_871", { i8*, i8* }** %nat_fold %"$retval_146" = alloca %TName_Nat* + %"$gasrem_872" = load i64, i64* @_gasrem + %"$gascmp_873" = icmp ugt i64 1, %"$gasrem_872" + br i1 %"$gascmp_873", label %"$out_of_gas_874", label %"$have_gas_875" + +"$out_of_gas_874": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_875" + +"$have_gas_875": ; preds = %"$out_of_gas_874", %entry + %"$consume_876" = sub i64 %"$gasrem_872", 1 + store i64 %"$consume_876", i64* @_gasrem %folder = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } - %"$nat_fold_617" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - %"$nat_fold_618" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_fold_617", i32 2 - %"$nat_fold_619" = bitcast { i8*, i8* }* %"$nat_fold_618" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* - %"$nat_fold_620" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_fold_619" - %"$nat_fold_fptr_621" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_620", 0 - %"$nat_fold_envptr_622" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_620", 1 - %"$nat_fold_call_623" = call { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$nat_fold_fptr_621"(i8* %"$nat_fold_envptr_622") - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$nat_fold_call_623", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }* %folder + %"$gasrem_877" = load i64, i64* @_gasrem + %"$gascmp_878" = icmp ugt i64 1, %"$gasrem_877" + br i1 %"$gascmp_878", label %"$out_of_gas_879", label %"$have_gas_880" + +"$out_of_gas_879": ; preds = %"$have_gas_875" + call void @_out_of_gas() + br label %"$have_gas_880" + +"$have_gas_880": ; preds = %"$out_of_gas_879", %"$have_gas_875" + %"$consume_881" = sub i64 %"$gasrem_877", 1 + store i64 %"$consume_881", i64* @_gasrem + %"$nat_fold_882" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + %"$nat_fold_883" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_fold_882", i32 2 + %"$nat_fold_884" = bitcast { i8*, i8* }* %"$nat_fold_883" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* + %"$nat_fold_885" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_fold_884" + %"$nat_fold_fptr_886" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_885", 0 + %"$nat_fold_envptr_887" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_885", 1 + %"$nat_fold_call_888" = call { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$nat_fold_fptr_886"(i8* %"$nat_fold_envptr_887") + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$nat_fold_call_888", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }* %folder + %"$gasrem_889" = load i64, i64* @_gasrem + %"$gascmp_890" = icmp ugt i64 1, %"$gasrem_889" + br i1 %"$gascmp_890", label %"$out_of_gas_891", label %"$have_gas_892" + +"$out_of_gas_891": ; preds = %"$have_gas_880" + call void @_out_of_gas() + br label %"$have_gas_892" + +"$have_gas_892": ; preds = %"$out_of_gas_891", %"$have_gas_880" + %"$consume_893" = sub i64 %"$gasrem_889", 1 + store i64 %"$consume_893", i64* @_gasrem %step = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$$fundef_147_envp_624_load" = load i8*, i8** @_execptr - %"$$fundef_147_envp_624_salloc" = call i8* @_salloc(i8* %"$$fundef_147_envp_624_load", i64 16) - %"$$fundef_147_envp_624" = bitcast i8* %"$$fundef_147_envp_624_salloc" to %"$$fundef_147_env_207"* - %"$$fundef_147_env_voidp_626" = bitcast %"$$fundef_147_env_207"* %"$$fundef_147_envp_624" to i8* - %"$$fundef_147_cloval_627" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_147_env_207"*, %TName_Nat*)* @"$fundef_147" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_147_env_voidp_626", 1 - %"$$fundef_147_env_f_628" = getelementptr inbounds %"$$fundef_147_env_207", %"$$fundef_147_env_207"* %"$$fundef_147_envp_624", i32 0, i32 0 - %"$f_629" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_629", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_147_env_f_628" - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_147_cloval_627", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %step + %"$gasrem_894" = load i64, i64* @_gasrem + %"$gascmp_895" = icmp ugt i64 1, %"$gasrem_894" + br i1 %"$gascmp_895", label %"$out_of_gas_896", label %"$have_gas_897" + +"$out_of_gas_896": ; preds = %"$have_gas_892" + call void @_out_of_gas() + br label %"$have_gas_897" + +"$have_gas_897": ; preds = %"$out_of_gas_896", %"$have_gas_892" + %"$consume_898" = sub i64 %"$gasrem_894", 1 + store i64 %"$consume_898", i64* @_gasrem + %"$$fundef_147_envp_899_load" = load i8*, i8** @_execptr + %"$$fundef_147_envp_899_salloc" = call i8* @_salloc(i8* %"$$fundef_147_envp_899_load", i64 16) + %"$$fundef_147_envp_899" = bitcast i8* %"$$fundef_147_envp_899_salloc" to %"$$fundef_147_env_207"* + %"$$fundef_147_env_voidp_901" = bitcast %"$$fundef_147_env_207"* %"$$fundef_147_envp_899" to i8* + %"$$fundef_147_cloval_902" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_147_env_207"*, %TName_Nat*)* @"$fundef_147" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_147_env_voidp_901", 1 + %"$$fundef_147_env_f_903" = getelementptr inbounds %"$$fundef_147_env_207", %"$$fundef_147_env_207"* %"$$fundef_147_envp_899", i32 0, i32 0 + %"$f_904" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_904", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_147_env_f_903" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_147_cloval_902", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %step + %"$gasrem_905" = load i64, i64* @_gasrem + %"$gascmp_906" = icmp ugt i64 1, %"$gasrem_905" + br i1 %"$gascmp_906", label %"$out_of_gas_907", label %"$have_gas_908" + +"$out_of_gas_907": ; preds = %"$have_gas_897" + call void @_out_of_gas() + br label %"$have_gas_908" + +"$have_gas_908": ; preds = %"$out_of_gas_907", %"$have_gas_897" + %"$consume_909" = sub i64 %"$gasrem_905", 1 + store i64 %"$consume_909", i64* @_gasrem %"$folder_26" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$folder_630" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }* %folder - %"$folder_fptr_631" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$folder_630", 0 - %"$folder_envptr_632" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$folder_630", 1 - %"$step_633" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %step - %"$folder_call_634" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$folder_fptr_631"(i8* %"$folder_envptr_632", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$step_633") - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$folder_call_634", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$folder_26" + %"$folder_910" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }* %folder + %"$folder_fptr_911" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$folder_910", 0 + %"$folder_envptr_912" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$folder_910", 1 + %"$step_913" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %step + %"$folder_call_914" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$folder_fptr_911"(i8* %"$folder_envptr_912", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$step_913") + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$folder_call_914", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$folder_26" %"$folder_27" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$$folder_26_635" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$folder_26" - %"$$folder_26_fptr_636" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_26_635", 0 - %"$$folder_26_envptr_637" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_26_635", 1 - %"$$folder_26_call_638" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_26_fptr_636"(i8* %"$$folder_26_envptr_637", %TName_Nat* %1) - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_26_call_638", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$folder_27" + %"$$folder_26_915" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$folder_26" + %"$$folder_26_fptr_916" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_26_915", 0 + %"$$folder_26_envptr_917" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_26_915", 1 + %"$$folder_26_call_918" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_26_fptr_916"(i8* %"$$folder_26_envptr_917", %TName_Nat* %1) + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_26_call_918", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$folder_27" %"$folder_28" = alloca %TName_Nat* - %"$$folder_27_639" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$folder_27" - %"$$folder_27_fptr_640" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_27_639", 0 - %"$$folder_27_envptr_641" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_27_639", 1 - %"$n_642" = load %TName_Nat*, %TName_Nat** %n - %"$$folder_27_call_643" = call %TName_Nat* %"$$folder_27_fptr_640"(i8* %"$$folder_27_envptr_641", %TName_Nat* %"$n_642") - store %TName_Nat* %"$$folder_27_call_643", %TName_Nat** %"$folder_28" - %"$$folder_28_644" = load %TName_Nat*, %TName_Nat** %"$folder_28" - store %TName_Nat* %"$$folder_28_644", %TName_Nat** %"$retval_146" - %"$$retval_146_645" = load %TName_Nat*, %TName_Nat** %"$retval_146" - ret %TName_Nat* %"$$retval_146_645" + %"$$folder_27_919" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$folder_27" + %"$$folder_27_fptr_920" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_27_919", 0 + %"$$folder_27_envptr_921" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_27_919", 1 + %"$n_922" = load %TName_Nat*, %TName_Nat** %n + %"$$folder_27_call_923" = call %TName_Nat* %"$$folder_27_fptr_920"(i8* %"$$folder_27_envptr_921", %TName_Nat* %"$n_922") + store %TName_Nat* %"$$folder_27_call_923", %TName_Nat** %"$folder_28" + %"$$folder_28_924" = load %TName_Nat*, %TName_Nat** %"$folder_28" + store %TName_Nat* %"$$folder_28_924", %TName_Nat** %"$retval_146" + %"$$retval_146_925" = load %TName_Nat*, %TName_Nat** %"$retval_146" + ret %TName_Nat* %"$$retval_146_925" } define internal { %TName_Nat* (i8*, %TName_Nat*)*, i8* } @"$fundef_143"(%"$$fundef_143_env_209"* %0, %TName_Nat* %1) { entry: - %"$$fundef_143_env_f_597" = getelementptr inbounds %"$$fundef_143_env_209", %"$$fundef_143_env_209"* %0, i32 0, i32 0 - %"$f_envload_598" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_143_env_f_597" + %"$$fundef_143_env_f_847" = getelementptr inbounds %"$$fundef_143_env_209", %"$$fundef_143_env_209"* %0, i32 0, i32 0 + %"$f_envload_848" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_143_env_f_847" %f = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_envload_598", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f - %"$$fundef_143_env_nat_fold_599" = getelementptr inbounds %"$$fundef_143_env_209", %"$$fundef_143_env_209"* %0, i32 0, i32 1 - %"$nat_fold_envload_600" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_143_env_nat_fold_599" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_envload_848", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f + %"$$fundef_143_env_nat_fold_849" = getelementptr inbounds %"$$fundef_143_env_209", %"$$fundef_143_env_209"* %0, i32 0, i32 1 + %"$nat_fold_envload_850" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_143_env_nat_fold_849" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_600", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_850", { i8*, i8* }** %nat_fold %"$retval_144" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$$fundef_145_envp_601_load" = load i8*, i8** @_execptr - %"$$fundef_145_envp_601_salloc" = call i8* @_salloc(i8* %"$$fundef_145_envp_601_load", i64 32) - %"$$fundef_145_envp_601" = bitcast i8* %"$$fundef_145_envp_601_salloc" to %"$$fundef_145_env_208"* - %"$$fundef_145_env_voidp_603" = bitcast %"$$fundef_145_env_208"* %"$$fundef_145_envp_601" to i8* - %"$$fundef_145_cloval_604" = insertvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } { %TName_Nat* (i8*, %TName_Nat*)* bitcast (%TName_Nat* (%"$$fundef_145_env_208"*, %TName_Nat*)* @"$fundef_145" to %TName_Nat* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_145_env_voidp_603", 1 - %"$$fundef_145_env_f_605" = getelementptr inbounds %"$$fundef_145_env_208", %"$$fundef_145_env_208"* %"$$fundef_145_envp_601", i32 0, i32 0 - %"$f_606" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_606", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_145_env_f_605" - %"$$fundef_145_env_n_607" = getelementptr inbounds %"$$fundef_145_env_208", %"$$fundef_145_env_208"* %"$$fundef_145_envp_601", i32 0, i32 1 - store %TName_Nat* %1, %TName_Nat** %"$$fundef_145_env_n_607" - %"$$fundef_145_env_nat_fold_608" = getelementptr inbounds %"$$fundef_145_env_208", %"$$fundef_145_env_208"* %"$$fundef_145_envp_601", i32 0, i32 2 - %"$nat_fold_609" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - store { i8*, i8* }* %"$nat_fold_609", { i8*, i8* }** %"$$fundef_145_env_nat_fold_608" - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fundef_145_cloval_604", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_144" - %"$$retval_144_610" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_144" - ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_144_610" + %"$gasrem_851" = load i64, i64* @_gasrem + %"$gascmp_852" = icmp ugt i64 1, %"$gasrem_851" + br i1 %"$gascmp_852", label %"$out_of_gas_853", label %"$have_gas_854" + +"$out_of_gas_853": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_854" + +"$have_gas_854": ; preds = %"$out_of_gas_853", %entry + %"$consume_855" = sub i64 %"$gasrem_851", 1 + store i64 %"$consume_855", i64* @_gasrem + %"$$fundef_145_envp_856_load" = load i8*, i8** @_execptr + %"$$fundef_145_envp_856_salloc" = call i8* @_salloc(i8* %"$$fundef_145_envp_856_load", i64 32) + %"$$fundef_145_envp_856" = bitcast i8* %"$$fundef_145_envp_856_salloc" to %"$$fundef_145_env_208"* + %"$$fundef_145_env_voidp_858" = bitcast %"$$fundef_145_env_208"* %"$$fundef_145_envp_856" to i8* + %"$$fundef_145_cloval_859" = insertvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } { %TName_Nat* (i8*, %TName_Nat*)* bitcast (%TName_Nat* (%"$$fundef_145_env_208"*, %TName_Nat*)* @"$fundef_145" to %TName_Nat* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_145_env_voidp_858", 1 + %"$$fundef_145_env_f_860" = getelementptr inbounds %"$$fundef_145_env_208", %"$$fundef_145_env_208"* %"$$fundef_145_envp_856", i32 0, i32 0 + %"$f_861" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_861", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_145_env_f_860" + %"$$fundef_145_env_n_862" = getelementptr inbounds %"$$fundef_145_env_208", %"$$fundef_145_env_208"* %"$$fundef_145_envp_856", i32 0, i32 1 + store %TName_Nat* %1, %TName_Nat** %"$$fundef_145_env_n_862" + %"$$fundef_145_env_nat_fold_863" = getelementptr inbounds %"$$fundef_145_env_208", %"$$fundef_145_env_208"* %"$$fundef_145_envp_856", i32 0, i32 2 + %"$nat_fold_864" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_864", { i8*, i8* }** %"$$fundef_145_env_nat_fold_863" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fundef_145_cloval_859", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_144" + %"$$retval_144_865" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_144" + ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_144_865" } define internal { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } @"$fundef_141"(%"$$fundef_141_env_210"* %0, { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1) { entry: - %"$$fundef_141_env_nat_fold_587" = getelementptr inbounds %"$$fundef_141_env_210", %"$$fundef_141_env_210"* %0, i32 0, i32 0 - %"$nat_fold_envload_588" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_141_env_nat_fold_587" + %"$$fundef_141_env_nat_fold_832" = getelementptr inbounds %"$$fundef_141_env_210", %"$$fundef_141_env_210"* %0, i32 0, i32 0 + %"$nat_fold_envload_833" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_141_env_nat_fold_832" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_588", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_833", { i8*, i8* }** %nat_fold %"$retval_142" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$$fundef_143_envp_589_load" = load i8*, i8** @_execptr - %"$$fundef_143_envp_589_salloc" = call i8* @_salloc(i8* %"$$fundef_143_envp_589_load", i64 24) - %"$$fundef_143_envp_589" = bitcast i8* %"$$fundef_143_envp_589_salloc" to %"$$fundef_143_env_209"* - %"$$fundef_143_env_voidp_591" = bitcast %"$$fundef_143_env_209"* %"$$fundef_143_envp_589" to i8* - %"$$fundef_143_cloval_592" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_143_env_209"*, %TName_Nat*)* @"$fundef_143" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_143_env_voidp_591", 1 - %"$$fundef_143_env_f_593" = getelementptr inbounds %"$$fundef_143_env_209", %"$$fundef_143_env_209"* %"$$fundef_143_envp_589", i32 0, i32 0 - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_143_env_f_593" - %"$$fundef_143_env_nat_fold_594" = getelementptr inbounds %"$$fundef_143_env_209", %"$$fundef_143_env_209"* %"$$fundef_143_envp_589", i32 0, i32 1 - %"$nat_fold_595" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - store { i8*, i8* }* %"$nat_fold_595", { i8*, i8* }** %"$$fundef_143_env_nat_fold_594" - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_143_cloval_592", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_142" - %"$$retval_142_596" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_142" - ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_142_596" + %"$gasrem_834" = load i64, i64* @_gasrem + %"$gascmp_835" = icmp ugt i64 1, %"$gasrem_834" + br i1 %"$gascmp_835", label %"$out_of_gas_836", label %"$have_gas_837" + +"$out_of_gas_836": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_837" + +"$have_gas_837": ; preds = %"$out_of_gas_836", %entry + %"$consume_838" = sub i64 %"$gasrem_834", 1 + store i64 %"$consume_838", i64* @_gasrem + %"$$fundef_143_envp_839_load" = load i8*, i8** @_execptr + %"$$fundef_143_envp_839_salloc" = call i8* @_salloc(i8* %"$$fundef_143_envp_839_load", i64 24) + %"$$fundef_143_envp_839" = bitcast i8* %"$$fundef_143_envp_839_salloc" to %"$$fundef_143_env_209"* + %"$$fundef_143_env_voidp_841" = bitcast %"$$fundef_143_env_209"* %"$$fundef_143_envp_839" to i8* + %"$$fundef_143_cloval_842" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_143_env_209"*, %TName_Nat*)* @"$fundef_143" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_143_env_voidp_841", 1 + %"$$fundef_143_env_f_843" = getelementptr inbounds %"$$fundef_143_env_209", %"$$fundef_143_env_209"* %"$$fundef_143_envp_839", i32 0, i32 0 + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_143_env_f_843" + %"$$fundef_143_env_nat_fold_844" = getelementptr inbounds %"$$fundef_143_env_209", %"$$fundef_143_env_209"* %"$$fundef_143_envp_839", i32 0, i32 1 + %"$nat_fold_845" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_845", { i8*, i8* }** %"$$fundef_143_env_nat_fold_844" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_143_cloval_842", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_142" + %"$$retval_142_846" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_142" + ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_142_846" } define internal { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } @"$fundef_139"(%"$$fundef_139_env_211"* %0) { entry: - %"$$fundef_139_env_nat_fold_578" = getelementptr inbounds %"$$fundef_139_env_211", %"$$fundef_139_env_211"* %0, i32 0, i32 0 - %"$nat_fold_envload_579" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_139_env_nat_fold_578" + %"$$fundef_139_env_nat_fold_818" = getelementptr inbounds %"$$fundef_139_env_211", %"$$fundef_139_env_211"* %0, i32 0, i32 0 + %"$nat_fold_envload_819" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_139_env_nat_fold_818" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_579", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_819", { i8*, i8* }** %nat_fold %"$retval_140" = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - %"$$fundef_141_envp_580_load" = load i8*, i8** @_execptr - %"$$fundef_141_envp_580_salloc" = call i8* @_salloc(i8* %"$$fundef_141_envp_580_load", i64 8) - %"$$fundef_141_envp_580" = bitcast i8* %"$$fundef_141_envp_580_salloc" to %"$$fundef_141_env_210"* - %"$$fundef_141_env_voidp_582" = bitcast %"$$fundef_141_env_210"* %"$$fundef_141_envp_580" to i8* - %"$$fundef_141_cloval_583" = insertvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (%"$$fundef_141_env_210"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_141" to { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_141_env_voidp_582", 1 - %"$$fundef_141_env_nat_fold_584" = getelementptr inbounds %"$$fundef_141_env_210", %"$$fundef_141_env_210"* %"$$fundef_141_envp_580", i32 0, i32 0 - %"$nat_fold_585" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - store { i8*, i8* }* %"$nat_fold_585", { i8*, i8* }** %"$$fundef_141_env_nat_fold_584" - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_141_cloval_583", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_140" - %"$$retval_140_586" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_140" - ret { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$retval_140_586" + %"$gasrem_820" = load i64, i64* @_gasrem + %"$gascmp_821" = icmp ugt i64 1, %"$gasrem_820" + br i1 %"$gascmp_821", label %"$out_of_gas_822", label %"$have_gas_823" + +"$out_of_gas_822": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_823" + +"$have_gas_823": ; preds = %"$out_of_gas_822", %entry + %"$consume_824" = sub i64 %"$gasrem_820", 1 + store i64 %"$consume_824", i64* @_gasrem + %"$$fundef_141_envp_825_load" = load i8*, i8** @_execptr + %"$$fundef_141_envp_825_salloc" = call i8* @_salloc(i8* %"$$fundef_141_envp_825_load", i64 8) + %"$$fundef_141_envp_825" = bitcast i8* %"$$fundef_141_envp_825_salloc" to %"$$fundef_141_env_210"* + %"$$fundef_141_env_voidp_827" = bitcast %"$$fundef_141_env_210"* %"$$fundef_141_envp_825" to i8* + %"$$fundef_141_cloval_828" = insertvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (%"$$fundef_141_env_210"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_141" to { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_141_env_voidp_827", 1 + %"$$fundef_141_env_nat_fold_829" = getelementptr inbounds %"$$fundef_141_env_210", %"$$fundef_141_env_210"* %"$$fundef_141_envp_825", i32 0, i32 0 + %"$nat_fold_830" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_830", { i8*, i8* }** %"$$fundef_141_env_nat_fold_829" + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_141_cloval_828", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_140" + %"$$retval_140_831" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_140" + ret { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$retval_140_831" } define internal { %TName_Nat* (i8*, %TName_Nat*)*, i8* } @"$fundef_137"(%"$$fundef_137_env_212"* %0, %TName_Nat* %1) { entry: - %"$$fundef_137_env_f_567" = getelementptr inbounds %"$$fundef_137_env_212", %"$$fundef_137_env_212"* %0, i32 0, i32 0 - %"$f_envload_568" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_137_env_f_567" + %"$$fundef_137_env_f_802" = getelementptr inbounds %"$$fundef_137_env_212", %"$$fundef_137_env_212"* %0, i32 0, i32 0 + %"$f_envload_803" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_137_env_f_802" %f = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_568", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - %"$$fundef_137_env_x_569" = getelementptr inbounds %"$$fundef_137_env_212", %"$$fundef_137_env_212"* %0, i32 0, i32 1 - %"$x_envload_570" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_137_env_x_569" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_803", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + %"$$fundef_137_env_x_804" = getelementptr inbounds %"$$fundef_137_env_212", %"$$fundef_137_env_212"* %0, i32 0, i32 1 + %"$x_envload_805" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_137_env_x_804" %x = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$x_envload_570", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %x + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$x_envload_805", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %x %"$retval_138" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } + %"$gasrem_806" = load i64, i64* @_gasrem + %"$gascmp_807" = icmp ugt i64 1, %"$gasrem_806" + br i1 %"$gascmp_807", label %"$out_of_gas_808", label %"$have_gas_809" + +"$out_of_gas_808": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_809" + +"$have_gas_809": ; preds = %"$out_of_gas_808", %entry + %"$consume_810" = sub i64 %"$gasrem_806", 1 + store i64 %"$consume_810", i64* @_gasrem %"$f_25" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$f_571" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - %"$f_fptr_572" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_571", 0 - %"$f_envptr_573" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_571", 1 - %"$x_574" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %x - %"$f_call_575" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_fptr_572"(i8* %"$f_envptr_573", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$x_574") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_call_575", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$f_25" - %"$$f_25_576" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$f_25" - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$f_25_576", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_138" - %"$$retval_138_577" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_138" - ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_138_577" + %"$f_811" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + %"$f_fptr_812" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_811", 0 + %"$f_envptr_813" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_811", 1 + %"$x_814" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %x + %"$f_call_815" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_fptr_812"(i8* %"$f_envptr_813", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$x_814") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_call_815", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$f_25" + %"$$f_25_816" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$f_25" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$f_25_816", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_138" + %"$$retval_138_817" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_138" + ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_138_817" } define internal { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } @"$fundef_135"(%"$$fundef_135_env_213"* %0, { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1) { entry: - %"$$fundef_135_env_f_557" = getelementptr inbounds %"$$fundef_135_env_213", %"$$fundef_135_env_213"* %0, i32 0, i32 0 - %"$f_envload_558" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_135_env_f_557" + %"$$fundef_135_env_f_787" = getelementptr inbounds %"$$fundef_135_env_213", %"$$fundef_135_env_213"* %0, i32 0, i32 0 + %"$f_envload_788" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_135_env_f_787" %f = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_558", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_788", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f %"$retval_136" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$$fundef_137_envp_559_load" = load i8*, i8** @_execptr - %"$$fundef_137_envp_559_salloc" = call i8* @_salloc(i8* %"$$fundef_137_envp_559_load", i64 32) - %"$$fundef_137_envp_559" = bitcast i8* %"$$fundef_137_envp_559_salloc" to %"$$fundef_137_env_212"* - %"$$fundef_137_env_voidp_561" = bitcast %"$$fundef_137_env_212"* %"$$fundef_137_envp_559" to i8* - %"$$fundef_137_cloval_562" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_137_env_212"*, %TName_Nat*)* @"$fundef_137" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_137_env_voidp_561", 1 - %"$$fundef_137_env_f_563" = getelementptr inbounds %"$$fundef_137_env_212", %"$$fundef_137_env_212"* %"$$fundef_137_envp_559", i32 0, i32 0 - %"$f_564" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_564", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_137_env_f_563" - %"$$fundef_137_env_x_565" = getelementptr inbounds %"$$fundef_137_env_212", %"$$fundef_137_env_212"* %"$$fundef_137_envp_559", i32 0, i32 1 - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_137_env_x_565" - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_137_cloval_562", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_136" - %"$$retval_136_566" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_136" - ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_136_566" + %"$gasrem_789" = load i64, i64* @_gasrem + %"$gascmp_790" = icmp ugt i64 1, %"$gasrem_789" + br i1 %"$gascmp_790", label %"$out_of_gas_791", label %"$have_gas_792" + +"$out_of_gas_791": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_792" + +"$have_gas_792": ; preds = %"$out_of_gas_791", %entry + %"$consume_793" = sub i64 %"$gasrem_789", 1 + store i64 %"$consume_793", i64* @_gasrem + %"$$fundef_137_envp_794_load" = load i8*, i8** @_execptr + %"$$fundef_137_envp_794_salloc" = call i8* @_salloc(i8* %"$$fundef_137_envp_794_load", i64 32) + %"$$fundef_137_envp_794" = bitcast i8* %"$$fundef_137_envp_794_salloc" to %"$$fundef_137_env_212"* + %"$$fundef_137_env_voidp_796" = bitcast %"$$fundef_137_env_212"* %"$$fundef_137_envp_794" to i8* + %"$$fundef_137_cloval_797" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_137_env_212"*, %TName_Nat*)* @"$fundef_137" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_137_env_voidp_796", 1 + %"$$fundef_137_env_f_798" = getelementptr inbounds %"$$fundef_137_env_212", %"$$fundef_137_env_212"* %"$$fundef_137_envp_794", i32 0, i32 0 + %"$f_799" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_799", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_137_env_f_798" + %"$$fundef_137_env_x_800" = getelementptr inbounds %"$$fundef_137_env_212", %"$$fundef_137_env_212"* %"$$fundef_137_envp_794", i32 0, i32 1 + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_137_env_x_800" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_137_cloval_797", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_136" + %"$$retval_136_801" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_136" + ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_136_801" } define internal { %TName_Nat* (i8*, %TName_Nat*)*, i8* } @"$fundef_133"(%"$$fundef_133_env_214"* %0, { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1) { entry: - %"$$fundef_133_env_f_522" = getelementptr inbounds %"$$fundef_133_env_214", %"$$fundef_133_env_214"* %0, i32 0, i32 0 - %"$f_envload_523" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_133_env_f_522" + %"$$fundef_133_env_f_727" = getelementptr inbounds %"$$fundef_133_env_214", %"$$fundef_133_env_214"* %0, i32 0, i32 0 + %"$f_envload_728" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_133_env_f_727" %f = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_523", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - %"$$fundef_133_env_n_524" = getelementptr inbounds %"$$fundef_133_env_214", %"$$fundef_133_env_214"* %0, i32 0, i32 1 - %"$n_envload_525" = load %TName_Nat*, %TName_Nat** %"$$fundef_133_env_n_524" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_728", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + %"$$fundef_133_env_n_729" = getelementptr inbounds %"$$fundef_133_env_214", %"$$fundef_133_env_214"* %0, i32 0, i32 1 + %"$n_envload_730" = load %TName_Nat*, %TName_Nat** %"$$fundef_133_env_n_729" %n = alloca %TName_Nat* - store %TName_Nat* %"$n_envload_525", %TName_Nat** %n - %"$$fundef_133_env_nat_fold_526" = getelementptr inbounds %"$$fundef_133_env_214", %"$$fundef_133_env_214"* %0, i32 0, i32 2 - %"$nat_fold_envload_527" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_133_env_nat_fold_526" + store %TName_Nat* %"$n_envload_730", %TName_Nat** %n + %"$$fundef_133_env_nat_fold_731" = getelementptr inbounds %"$$fundef_133_env_214", %"$$fundef_133_env_214"* %0, i32 0, i32 2 + %"$nat_fold_envload_732" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_133_env_nat_fold_731" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_527", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_732", { i8*, i8* }** %nat_fold %"$retval_134" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } + %"$gasrem_733" = load i64, i64* @_gasrem + %"$gascmp_734" = icmp ugt i64 1, %"$gasrem_733" + br i1 %"$gascmp_734", label %"$out_of_gas_735", label %"$have_gas_736" + +"$out_of_gas_735": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_736" + +"$have_gas_736": ; preds = %"$out_of_gas_735", %entry + %"$consume_737" = sub i64 %"$gasrem_733", 1 + store i64 %"$consume_737", i64* @_gasrem %folder = alloca { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } - %"$nat_fold_528" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - %"$nat_fold_529" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_fold_528", i32 1 - %"$nat_fold_530" = bitcast { i8*, i8* }* %"$nat_fold_529" to { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* - %"$nat_fold_531" = load { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }, { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_fold_530" - %"$nat_fold_fptr_532" = extractvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_531", 0 - %"$nat_fold_envptr_533" = extractvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_531", 1 - %"$nat_fold_call_534" = call { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$nat_fold_fptr_532"(i8* %"$nat_fold_envptr_533") - store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$nat_fold_call_534", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %folder + %"$gasrem_738" = load i64, i64* @_gasrem + %"$gascmp_739" = icmp ugt i64 1, %"$gasrem_738" + br i1 %"$gascmp_739", label %"$out_of_gas_740", label %"$have_gas_741" + +"$out_of_gas_740": ; preds = %"$have_gas_736" + call void @_out_of_gas() + br label %"$have_gas_741" + +"$have_gas_741": ; preds = %"$out_of_gas_740", %"$have_gas_736" + %"$consume_742" = sub i64 %"$gasrem_738", 1 + store i64 %"$consume_742", i64* @_gasrem + %"$nat_fold_743" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + %"$nat_fold_744" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_fold_743", i32 1 + %"$nat_fold_745" = bitcast { i8*, i8* }* %"$nat_fold_744" to { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* + %"$nat_fold_746" = load { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }, { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_fold_745" + %"$nat_fold_fptr_747" = extractvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_746", 0 + %"$nat_fold_envptr_748" = extractvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_746", 1 + %"$nat_fold_call_749" = call { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$nat_fold_fptr_747"(i8* %"$nat_fold_envptr_748") + store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$nat_fold_call_749", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %folder + %"$gasrem_750" = load i64, i64* @_gasrem + %"$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_741" + call void @_out_of_gas() + br label %"$have_gas_753" + +"$have_gas_753": ; preds = %"$out_of_gas_752", %"$have_gas_741" + %"$consume_754" = sub i64 %"$gasrem_750", 1 + store i64 %"$consume_754", i64* @_gasrem %step = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - %"$$fundef_135_envp_535_load" = load i8*, i8** @_execptr - %"$$fundef_135_envp_535_salloc" = call i8* @_salloc(i8* %"$$fundef_135_envp_535_load", i64 16) - %"$$fundef_135_envp_535" = bitcast i8* %"$$fundef_135_envp_535_salloc" to %"$$fundef_135_env_213"* - %"$$fundef_135_env_voidp_537" = bitcast %"$$fundef_135_env_213"* %"$$fundef_135_envp_535" to i8* - %"$$fundef_135_cloval_538" = insertvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (%"$$fundef_135_env_213"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_135" to { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_135_env_voidp_537", 1 - %"$$fundef_135_env_f_539" = getelementptr inbounds %"$$fundef_135_env_213", %"$$fundef_135_env_213"* %"$$fundef_135_envp_535", i32 0, i32 0 - %"$f_540" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_540", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_135_env_f_539" - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_135_cloval_538", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %step + %"$gasrem_755" = load i64, i64* @_gasrem + %"$gascmp_756" = icmp ugt i64 1, %"$gasrem_755" + br i1 %"$gascmp_756", label %"$out_of_gas_757", label %"$have_gas_758" + +"$out_of_gas_757": ; preds = %"$have_gas_753" + call void @_out_of_gas() + br label %"$have_gas_758" + +"$have_gas_758": ; preds = %"$out_of_gas_757", %"$have_gas_753" + %"$consume_759" = sub i64 %"$gasrem_755", 1 + store i64 %"$consume_759", i64* @_gasrem + %"$$fundef_135_envp_760_load" = load i8*, i8** @_execptr + %"$$fundef_135_envp_760_salloc" = call i8* @_salloc(i8* %"$$fundef_135_envp_760_load", i64 16) + %"$$fundef_135_envp_760" = bitcast i8* %"$$fundef_135_envp_760_salloc" to %"$$fundef_135_env_213"* + %"$$fundef_135_env_voidp_762" = bitcast %"$$fundef_135_env_213"* %"$$fundef_135_envp_760" to i8* + %"$$fundef_135_cloval_763" = insertvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (%"$$fundef_135_env_213"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_135" to { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_135_env_voidp_762", 1 + %"$$fundef_135_env_f_764" = getelementptr inbounds %"$$fundef_135_env_213", %"$$fundef_135_env_213"* %"$$fundef_135_envp_760", i32 0, i32 0 + %"$f_765" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_765", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_135_env_f_764" + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_135_cloval_763", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %step + %"$gasrem_766" = load i64, i64* @_gasrem + %"$gascmp_767" = icmp ugt i64 1, %"$gasrem_766" + br i1 %"$gascmp_767", label %"$out_of_gas_768", label %"$have_gas_769" + +"$out_of_gas_768": ; preds = %"$have_gas_758" + call void @_out_of_gas() + br label %"$have_gas_769" + +"$have_gas_769": ; preds = %"$out_of_gas_768", %"$have_gas_758" + %"$consume_770" = sub i64 %"$gasrem_766", 1 + store i64 %"$consume_770", i64* @_gasrem %"$folder_26" = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - %"$folder_541" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %folder - %"$folder_fptr_542" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$folder_541", 0 - %"$folder_envptr_543" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$folder_541", 1 - %"$step_544" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %step - %"$folder_call_545" = call { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$folder_fptr_542"(i8* %"$folder_envptr_543", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$step_544") - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$folder_call_545", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$folder_26" + %"$folder_771" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %folder + %"$folder_fptr_772" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$folder_771", 0 + %"$folder_envptr_773" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$folder_771", 1 + %"$step_774" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %step + %"$folder_call_775" = call { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$folder_fptr_772"(i8* %"$folder_envptr_773", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$step_774") + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$folder_call_775", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$folder_26" %"$folder_27" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$$folder_26_546" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$folder_26" - %"$$folder_26_fptr_547" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$folder_26_546", 0 - %"$$folder_26_envptr_548" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$folder_26_546", 1 - %"$$folder_26_call_549" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_26_fptr_547"(i8* %"$$folder_26_envptr_548", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1) - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_26_call_549", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$folder_27" + %"$$folder_26_776" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$folder_26" + %"$$folder_26_fptr_777" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$folder_26_776", 0 + %"$$folder_26_envptr_778" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$folder_26_776", 1 + %"$$folder_26_call_779" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_26_fptr_777"(i8* %"$$folder_26_envptr_778", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1) + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_26_call_779", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$folder_27" %"$folder_28" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$$folder_27_550" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$folder_27" - %"$$folder_27_fptr_551" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_27_550", 0 - %"$$folder_27_envptr_552" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_27_550", 1 - %"$n_553" = load %TName_Nat*, %TName_Nat** %n - %"$$folder_27_call_554" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_27_fptr_551"(i8* %"$$folder_27_envptr_552", %TName_Nat* %"$n_553") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_27_call_554", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$folder_28" - %"$$folder_28_555" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$folder_28" - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_28_555", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_134" - %"$$retval_134_556" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_134" - ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_134_556" + %"$$folder_27_780" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$folder_27" + %"$$folder_27_fptr_781" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_27_780", 0 + %"$$folder_27_envptr_782" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_27_780", 1 + %"$n_783" = load %TName_Nat*, %TName_Nat** %n + %"$$folder_27_call_784" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_27_fptr_781"(i8* %"$$folder_27_envptr_782", %TName_Nat* %"$n_783") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_27_call_784", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$folder_28" + %"$$folder_28_785" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$folder_28" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_28_785", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_134" + %"$$retval_134_786" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_134" + ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_134_786" } define internal { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } @"$fundef_131"(%"$$fundef_131_env_215"* %0, %TName_Nat* %1) { entry: - %"$$fundef_131_env_f_508" = getelementptr inbounds %"$$fundef_131_env_215", %"$$fundef_131_env_215"* %0, i32 0, i32 0 - %"$f_envload_509" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_131_env_f_508" + %"$$fundef_131_env_f_708" = getelementptr inbounds %"$$fundef_131_env_215", %"$$fundef_131_env_215"* %0, i32 0, i32 0 + %"$f_envload_709" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_131_env_f_708" %f = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_509", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - %"$$fundef_131_env_nat_fold_510" = getelementptr inbounds %"$$fundef_131_env_215", %"$$fundef_131_env_215"* %0, i32 0, i32 1 - %"$nat_fold_envload_511" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_131_env_nat_fold_510" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_709", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + %"$$fundef_131_env_nat_fold_710" = getelementptr inbounds %"$$fundef_131_env_215", %"$$fundef_131_env_215"* %0, i32 0, i32 1 + %"$nat_fold_envload_711" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_131_env_nat_fold_710" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_511", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_711", { i8*, i8* }** %nat_fold %"$retval_132" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - %"$$fundef_133_envp_512_load" = load i8*, i8** @_execptr - %"$$fundef_133_envp_512_salloc" = call i8* @_salloc(i8* %"$$fundef_133_envp_512_load", i64 32) - %"$$fundef_133_envp_512" = bitcast i8* %"$$fundef_133_envp_512_salloc" to %"$$fundef_133_env_214"* - %"$$fundef_133_env_voidp_514" = bitcast %"$$fundef_133_env_214"* %"$$fundef_133_envp_512" to i8* - %"$$fundef_133_cloval_515" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_133_env_214"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_133" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_133_env_voidp_514", 1 - %"$$fundef_133_env_f_516" = getelementptr inbounds %"$$fundef_133_env_214", %"$$fundef_133_env_214"* %"$$fundef_133_envp_512", i32 0, i32 0 - %"$f_517" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_517", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_133_env_f_516" - %"$$fundef_133_env_n_518" = getelementptr inbounds %"$$fundef_133_env_214", %"$$fundef_133_env_214"* %"$$fundef_133_envp_512", i32 0, i32 1 - store %TName_Nat* %1, %TName_Nat** %"$$fundef_133_env_n_518" - %"$$fundef_133_env_nat_fold_519" = getelementptr inbounds %"$$fundef_133_env_214", %"$$fundef_133_env_214"* %"$$fundef_133_envp_512", i32 0, i32 2 - %"$nat_fold_520" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - store { i8*, i8* }* %"$nat_fold_520", { i8*, i8* }** %"$$fundef_133_env_nat_fold_519" - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_133_cloval_515", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_132" - %"$$retval_132_521" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_132" - ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$retval_132_521" + %"$gasrem_712" = load i64, i64* @_gasrem + %"$gascmp_713" = icmp ugt i64 1, %"$gasrem_712" + br i1 %"$gascmp_713", label %"$out_of_gas_714", label %"$have_gas_715" + +"$out_of_gas_714": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_715" + +"$have_gas_715": ; preds = %"$out_of_gas_714", %entry + %"$consume_716" = sub i64 %"$gasrem_712", 1 + store i64 %"$consume_716", i64* @_gasrem + %"$$fundef_133_envp_717_load" = load i8*, i8** @_execptr + %"$$fundef_133_envp_717_salloc" = call i8* @_salloc(i8* %"$$fundef_133_envp_717_load", i64 32) + %"$$fundef_133_envp_717" = bitcast i8* %"$$fundef_133_envp_717_salloc" to %"$$fundef_133_env_214"* + %"$$fundef_133_env_voidp_719" = bitcast %"$$fundef_133_env_214"* %"$$fundef_133_envp_717" to i8* + %"$$fundef_133_cloval_720" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_133_env_214"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_133" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_133_env_voidp_719", 1 + %"$$fundef_133_env_f_721" = getelementptr inbounds %"$$fundef_133_env_214", %"$$fundef_133_env_214"* %"$$fundef_133_envp_717", i32 0, i32 0 + %"$f_722" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_722", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_133_env_f_721" + %"$$fundef_133_env_n_723" = getelementptr inbounds %"$$fundef_133_env_214", %"$$fundef_133_env_214"* %"$$fundef_133_envp_717", i32 0, i32 1 + store %TName_Nat* %1, %TName_Nat** %"$$fundef_133_env_n_723" + %"$$fundef_133_env_nat_fold_724" = getelementptr inbounds %"$$fundef_133_env_214", %"$$fundef_133_env_214"* %"$$fundef_133_envp_717", i32 0, i32 2 + %"$nat_fold_725" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_725", { i8*, i8* }** %"$$fundef_133_env_nat_fold_724" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_133_cloval_720", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_132" + %"$$retval_132_726" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_132" + ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$retval_132_726" } define internal { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } @"$fundef_129"(%"$$fundef_129_env_216"* %0, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %1) { entry: - %"$$fundef_129_env_nat_fold_498" = getelementptr inbounds %"$$fundef_129_env_216", %"$$fundef_129_env_216"* %0, i32 0, i32 0 - %"$nat_fold_envload_499" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_129_env_nat_fold_498" + %"$$fundef_129_env_nat_fold_693" = getelementptr inbounds %"$$fundef_129_env_216", %"$$fundef_129_env_216"* %0, i32 0, i32 0 + %"$nat_fold_envload_694" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_129_env_nat_fold_693" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_499", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_694", { i8*, i8* }** %nat_fold %"$retval_130" = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$$fundef_131_envp_500_load" = load i8*, i8** @_execptr - %"$$fundef_131_envp_500_salloc" = call i8* @_salloc(i8* %"$$fundef_131_envp_500_load", i64 24) - %"$$fundef_131_envp_500" = bitcast i8* %"$$fundef_131_envp_500_salloc" to %"$$fundef_131_env_215"* - %"$$fundef_131_env_voidp_502" = bitcast %"$$fundef_131_env_215"* %"$$fundef_131_envp_500" to i8* - %"$$fundef_131_cloval_503" = insertvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)* bitcast ({ { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (%"$$fundef_131_env_215"*, %TName_Nat*)* @"$fundef_131" to { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_131_env_voidp_502", 1 - %"$$fundef_131_env_f_504" = getelementptr inbounds %"$$fundef_131_env_215", %"$$fundef_131_env_215"* %"$$fundef_131_envp_500", i32 0, i32 0 - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %1, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_131_env_f_504" - %"$$fundef_131_env_nat_fold_505" = getelementptr inbounds %"$$fundef_131_env_215", %"$$fundef_131_env_215"* %"$$fundef_131_envp_500", i32 0, i32 1 - %"$nat_fold_506" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - store { i8*, i8* }* %"$nat_fold_506", { i8*, i8* }** %"$$fundef_131_env_nat_fold_505" - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_131_cloval_503", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_130" - %"$$retval_130_507" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_130" - ret { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_130_507" + %"$gasrem_695" = load i64, i64* @_gasrem + %"$gascmp_696" = icmp ugt i64 1, %"$gasrem_695" + br i1 %"$gascmp_696", label %"$out_of_gas_697", label %"$have_gas_698" + +"$out_of_gas_697": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_698" + +"$have_gas_698": ; preds = %"$out_of_gas_697", %entry + %"$consume_699" = sub i64 %"$gasrem_695", 1 + store i64 %"$consume_699", i64* @_gasrem + %"$$fundef_131_envp_700_load" = load i8*, i8** @_execptr + %"$$fundef_131_envp_700_salloc" = call i8* @_salloc(i8* %"$$fundef_131_envp_700_load", i64 24) + %"$$fundef_131_envp_700" = bitcast i8* %"$$fundef_131_envp_700_salloc" to %"$$fundef_131_env_215"* + %"$$fundef_131_env_voidp_702" = bitcast %"$$fundef_131_env_215"* %"$$fundef_131_envp_700" to i8* + %"$$fundef_131_cloval_703" = insertvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)* bitcast ({ { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (%"$$fundef_131_env_215"*, %TName_Nat*)* @"$fundef_131" to { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_131_env_voidp_702", 1 + %"$$fundef_131_env_f_704" = getelementptr inbounds %"$$fundef_131_env_215", %"$$fundef_131_env_215"* %"$$fundef_131_envp_700", i32 0, i32 0 + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %1, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_131_env_f_704" + %"$$fundef_131_env_nat_fold_705" = getelementptr inbounds %"$$fundef_131_env_215", %"$$fundef_131_env_215"* %"$$fundef_131_envp_700", i32 0, i32 1 + %"$nat_fold_706" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_706", { i8*, i8* }** %"$$fundef_131_env_nat_fold_705" + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_131_cloval_703", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_130" + %"$$retval_130_707" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_130" + ret { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_130_707" } define internal { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } @"$fundef_127"(%"$$fundef_127_env_217"* %0) { entry: - %"$$fundef_127_env_nat_fold_489" = getelementptr inbounds %"$$fundef_127_env_217", %"$$fundef_127_env_217"* %0, i32 0, i32 0 - %"$nat_fold_envload_490" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_127_env_nat_fold_489" + %"$$fundef_127_env_nat_fold_679" = getelementptr inbounds %"$$fundef_127_env_217", %"$$fundef_127_env_217"* %0, i32 0, i32 0 + %"$nat_fold_envload_680" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_127_env_nat_fold_679" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_490", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_680", { i8*, i8* }** %nat_fold %"$retval_128" = alloca { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } - %"$$fundef_129_envp_491_load" = load i8*, i8** @_execptr - %"$$fundef_129_envp_491_salloc" = call i8* @_salloc(i8* %"$$fundef_129_envp_491_load", i64 8) - %"$$fundef_129_envp_491" = bitcast i8* %"$$fundef_129_envp_491_salloc" to %"$$fundef_129_env_216"* - %"$$fundef_129_env_voidp_493" = bitcast %"$$fundef_129_env_216"* %"$$fundef_129_envp_491" to i8* - %"$$fundef_129_cloval_494" = insertvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })* bitcast ({ { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (%"$$fundef_129_env_216"*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })* @"$fundef_129" to { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*), i8* undef }, i8* %"$$fundef_129_env_voidp_493", 1 - %"$$fundef_129_env_nat_fold_495" = getelementptr inbounds %"$$fundef_129_env_216", %"$$fundef_129_env_216"* %"$$fundef_129_envp_491", i32 0, i32 0 - %"$nat_fold_496" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - store { i8*, i8* }* %"$nat_fold_496", { i8*, i8* }** %"$$fundef_129_env_nat_fold_495" - store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$$fundef_129_cloval_494", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$retval_128" - %"$$retval_128_497" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$retval_128" - ret { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$$retval_128_497" + %"$gasrem_681" = load i64, i64* @_gasrem + %"$gascmp_682" = icmp ugt i64 1, %"$gasrem_681" + br i1 %"$gascmp_682", label %"$out_of_gas_683", label %"$have_gas_684" + +"$out_of_gas_683": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_684" + +"$have_gas_684": ; preds = %"$out_of_gas_683", %entry + %"$consume_685" = sub i64 %"$gasrem_681", 1 + store i64 %"$consume_685", i64* @_gasrem + %"$$fundef_129_envp_686_load" = load i8*, i8** @_execptr + %"$$fundef_129_envp_686_salloc" = call i8* @_salloc(i8* %"$$fundef_129_envp_686_load", i64 8) + %"$$fundef_129_envp_686" = bitcast i8* %"$$fundef_129_envp_686_salloc" to %"$$fundef_129_env_216"* + %"$$fundef_129_env_voidp_688" = bitcast %"$$fundef_129_env_216"* %"$$fundef_129_envp_686" to i8* + %"$$fundef_129_cloval_689" = insertvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })* bitcast ({ { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (%"$$fundef_129_env_216"*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })* @"$fundef_129" to { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*), i8* undef }, i8* %"$$fundef_129_env_voidp_688", 1 + %"$$fundef_129_env_nat_fold_690" = getelementptr inbounds %"$$fundef_129_env_216", %"$$fundef_129_env_216"* %"$$fundef_129_envp_686", i32 0, i32 0 + %"$nat_fold_691" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_691", { i8*, i8* }** %"$$fundef_129_env_nat_fold_690" + store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$$fundef_129_cloval_689", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$retval_128" + %"$$retval_128_692" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$retval_128" + ret { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$$retval_128_692" } define internal %TName_Nat* @"$fundef_125"(%"$$fundef_125_env_218"* %0, %TName_Nat* %1) { entry: %"$retval_126" = alloca %TName_Nat* - %"$adtval_484_load" = load i8*, i8** @_execptr - %"$adtval_484_salloc" = call i8* @_salloc(i8* %"$adtval_484_load", i64 9) - %"$adtval_484" = bitcast i8* %"$adtval_484_salloc" to %CName_Succ* - %"$adtgep_485" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_484", i32 0, i32 0 - store i8 1, i8* %"$adtgep_485" - %"$adtgep_486" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_484", i32 0, i32 1 - store %TName_Nat* %1, %TName_Nat** %"$adtgep_486" - %"$adtptr_487" = bitcast %CName_Succ* %"$adtval_484" to %TName_Nat* - store %TName_Nat* %"$adtptr_487", %TName_Nat** %"$retval_126" - %"$$retval_126_488" = load %TName_Nat*, %TName_Nat** %"$retval_126" - ret %TName_Nat* %"$$retval_126_488" + %"$gasrem_669" = load i64, i64* @_gasrem + %"$gascmp_670" = icmp ugt i64 1, %"$gasrem_669" + br i1 %"$gascmp_670", label %"$out_of_gas_671", label %"$have_gas_672" + +"$out_of_gas_671": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_672" + +"$have_gas_672": ; preds = %"$out_of_gas_671", %entry + %"$consume_673" = sub i64 %"$gasrem_669", 1 + store i64 %"$consume_673", i64* @_gasrem + %"$adtval_674_load" = load i8*, i8** @_execptr + %"$adtval_674_salloc" = call i8* @_salloc(i8* %"$adtval_674_load", i64 9) + %"$adtval_674" = bitcast i8* %"$adtval_674_salloc" to %CName_Succ* + %"$adtgep_675" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_674", i32 0, i32 0 + store i8 1, i8* %"$adtgep_675" + %"$adtgep_676" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_674", i32 0, i32 1 + store %TName_Nat* %1, %TName_Nat** %"$adtgep_676" + %"$adtptr_677" = bitcast %CName_Succ* %"$adtval_674" to %TName_Nat* + store %TName_Nat* %"$adtptr_677", %TName_Nat** %"$retval_126" + %"$$retval_126_678" = load %TName_Nat*, %TName_Nat** %"$retval_126" + ret %TName_Nat* %"$$retval_126_678" } define internal %Uint32 @"$fundef_122"(%"$$fundef_122_env_219"* %0, %TName_Nat* %1) { entry: - %"$$fundef_122_env_one_int_476" = getelementptr inbounds %"$$fundef_122_env_219", %"$$fundef_122_env_219"* %0, i32 0, i32 0 - %"$one_int_envload_477" = load %Uint32, %Uint32* %"$$fundef_122_env_one_int_476" + %"$$fundef_122_env_one_int_661" = getelementptr inbounds %"$$fundef_122_env_219", %"$$fundef_122_env_219"* %0, i32 0, i32 0 + %"$one_int_envload_662" = load %Uint32, %Uint32* %"$$fundef_122_env_one_int_661" %one_int = alloca %Uint32 - store %Uint32 %"$one_int_envload_477", %Uint32* %one_int - %"$$fundef_122_env_z_478" = getelementptr inbounds %"$$fundef_122_env_219", %"$$fundef_122_env_219"* %0, i32 0, i32 1 - %"$z_envload_479" = load %Uint32, %Uint32* %"$$fundef_122_env_z_478" + store %Uint32 %"$one_int_envload_662", %Uint32* %one_int + %"$$fundef_122_env_z_663" = getelementptr inbounds %"$$fundef_122_env_219", %"$$fundef_122_env_219"* %0, i32 0, i32 1 + %"$z_envload_664" = load %Uint32, %Uint32* %"$$fundef_122_env_z_663" %z = alloca %Uint32 - store %Uint32 %"$z_envload_479", %Uint32* %z + store %Uint32 %"$z_envload_664", %Uint32* %z %"$retval_123" = alloca %Uint32 - %"$z_480" = load %Uint32, %Uint32* %z - %"$one_int_481" = load %Uint32, %Uint32* %one_int - %"$add_call_482" = call %Uint32 @_add_Uint32(%Uint32 %"$z_480", %Uint32 %"$one_int_481") - store %Uint32 %"$add_call_482", %Uint32* %"$retval_123" - %"$$retval_123_483" = load %Uint32, %Uint32* %"$retval_123" - ret %Uint32 %"$$retval_123_483" + %"$z_665" = load %Uint32, %Uint32* %z + %"$one_int_666" = load %Uint32, %Uint32* %one_int + %"$add_call_667" = call %Uint32 @_add_Uint32(%Uint32 %"$z_665", %Uint32 %"$one_int_666") + store %Uint32 %"$add_call_667", %Uint32* %"$retval_123" + %"$$retval_123_668" = load %Uint32, %Uint32* %"$retval_123" + ret %Uint32 %"$$retval_123_668" } define internal { %Uint32 (i8*, %TName_Nat*)*, i8* } @"$fundef_120"(%"$$fundef_120_env_220"* %0, %Uint32 %1) { entry: - %"$$fundef_120_env_one_int_466" = getelementptr inbounds %"$$fundef_120_env_220", %"$$fundef_120_env_220"* %0, i32 0, i32 0 - %"$one_int_envload_467" = load %Uint32, %Uint32* %"$$fundef_120_env_one_int_466" + %"$$fundef_120_env_one_int_646" = getelementptr inbounds %"$$fundef_120_env_220", %"$$fundef_120_env_220"* %0, i32 0, i32 0 + %"$one_int_envload_647" = load %Uint32, %Uint32* %"$$fundef_120_env_one_int_646" %one_int = alloca %Uint32 - store %Uint32 %"$one_int_envload_467", %Uint32* %one_int + store %Uint32 %"$one_int_envload_647", %Uint32* %one_int %"$retval_121" = alloca { %Uint32 (i8*, %TName_Nat*)*, i8* } - %"$$fundef_122_envp_468_load" = load i8*, i8** @_execptr - %"$$fundef_122_envp_468_salloc" = call i8* @_salloc(i8* %"$$fundef_122_envp_468_load", i64 8) - %"$$fundef_122_envp_468" = bitcast i8* %"$$fundef_122_envp_468_salloc" to %"$$fundef_122_env_219"* - %"$$fundef_122_env_voidp_470" = bitcast %"$$fundef_122_env_219"* %"$$fundef_122_envp_468" to i8* - %"$$fundef_122_cloval_471" = insertvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } { %Uint32 (i8*, %TName_Nat*)* bitcast (%Uint32 (%"$$fundef_122_env_219"*, %TName_Nat*)* @"$fundef_122" to %Uint32 (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_122_env_voidp_470", 1 - %"$$fundef_122_env_one_int_472" = getelementptr inbounds %"$$fundef_122_env_219", %"$$fundef_122_env_219"* %"$$fundef_122_envp_468", i32 0, i32 0 - %"$one_int_473" = load %Uint32, %Uint32* %one_int - store %Uint32 %"$one_int_473", %Uint32* %"$$fundef_122_env_one_int_472" - %"$$fundef_122_env_z_474" = getelementptr inbounds %"$$fundef_122_env_219", %"$$fundef_122_env_219"* %"$$fundef_122_envp_468", i32 0, i32 1 - store %Uint32 %1, %Uint32* %"$$fundef_122_env_z_474" - store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fundef_122_cloval_471", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$retval_121" - %"$$retval_121_475" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$retval_121" - ret { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$retval_121_475" + %"$gasrem_648" = load i64, i64* @_gasrem + %"$gascmp_649" = icmp ugt i64 1, %"$gasrem_648" + br i1 %"$gascmp_649", label %"$out_of_gas_650", label %"$have_gas_651" + +"$out_of_gas_650": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_651" + +"$have_gas_651": ; preds = %"$out_of_gas_650", %entry + %"$consume_652" = sub i64 %"$gasrem_648", 1 + store i64 %"$consume_652", i64* @_gasrem + %"$$fundef_122_envp_653_load" = load i8*, i8** @_execptr + %"$$fundef_122_envp_653_salloc" = call i8* @_salloc(i8* %"$$fundef_122_envp_653_load", i64 8) + %"$$fundef_122_envp_653" = bitcast i8* %"$$fundef_122_envp_653_salloc" to %"$$fundef_122_env_219"* + %"$$fundef_122_env_voidp_655" = bitcast %"$$fundef_122_env_219"* %"$$fundef_122_envp_653" to i8* + %"$$fundef_122_cloval_656" = insertvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } { %Uint32 (i8*, %TName_Nat*)* bitcast (%Uint32 (%"$$fundef_122_env_219"*, %TName_Nat*)* @"$fundef_122" to %Uint32 (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_122_env_voidp_655", 1 + %"$$fundef_122_env_one_int_657" = getelementptr inbounds %"$$fundef_122_env_219", %"$$fundef_122_env_219"* %"$$fundef_122_envp_653", i32 0, i32 0 + %"$one_int_658" = load %Uint32, %Uint32* %one_int + store %Uint32 %"$one_int_658", %Uint32* %"$$fundef_122_env_one_int_657" + %"$$fundef_122_env_z_659" = getelementptr inbounds %"$$fundef_122_env_219", %"$$fundef_122_env_219"* %"$$fundef_122_envp_653", i32 0, i32 1 + store %Uint32 %1, %Uint32* %"$$fundef_122_env_z_659" + store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fundef_122_cloval_656", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$retval_121" + %"$$retval_121_660" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$retval_121" + ret { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$retval_121_660" } define internal %Uint32 @"$fundef_118"(%"$$fundef_118_env_221"* %0, %TName_Nat* %1) { entry: - %"$$fundef_118_env_nat_fold_435" = getelementptr inbounds %"$$fundef_118_env_221", %"$$fundef_118_env_221"* %0, i32 0, i32 0 - %"$nat_fold_envload_436" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_118_env_nat_fold_435" + %"$$fundef_118_env_nat_fold_570" = getelementptr inbounds %"$$fundef_118_env_221", %"$$fundef_118_env_221"* %0, i32 0, i32 0 + %"$nat_fold_envload_571" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_118_env_nat_fold_570" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_436", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_571", { i8*, i8* }** %nat_fold %"$retval_119" = alloca %Uint32 + %"$gasrem_572" = load i64, i64* @_gasrem + %"$gascmp_573" = icmp ugt i64 1, %"$gasrem_572" + br i1 %"$gascmp_573", label %"$out_of_gas_574", label %"$have_gas_575" + +"$out_of_gas_574": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_575" + +"$have_gas_575": ; preds = %"$out_of_gas_574", %entry + %"$consume_576" = sub i64 %"$gasrem_572", 1 + store i64 %"$consume_576", i64* @_gasrem %fold = alloca { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } - %"$nat_fold_437" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - %"$nat_fold_438" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_fold_437", i32 0 - %"$nat_fold_439" = bitcast { i8*, i8* }* %"$nat_fold_438" to { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - %"$nat_fold_440" = load { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_fold_439" - %"$nat_fold_fptr_441" = extractvalue { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_440", 0 - %"$nat_fold_envptr_442" = extractvalue { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_440", 1 - %"$nat_fold_call_443" = call { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$nat_fold_fptr_441"(i8* %"$nat_fold_envptr_442") - store { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$nat_fold_call_443", { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %fold + %"$gasrem_577" = load i64, i64* @_gasrem + %"$gascmp_578" = icmp ugt i64 1, %"$gasrem_577" + br i1 %"$gascmp_578", label %"$out_of_gas_579", label %"$have_gas_580" + +"$out_of_gas_579": ; preds = %"$have_gas_575" + call void @_out_of_gas() + br label %"$have_gas_580" + +"$have_gas_580": ; preds = %"$out_of_gas_579", %"$have_gas_575" + %"$consume_581" = sub i64 %"$gasrem_577", 1 + store i64 %"$consume_581", i64* @_gasrem + %"$nat_fold_582" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + %"$nat_fold_583" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_fold_582", i32 0 + %"$nat_fold_584" = bitcast { i8*, i8* }* %"$nat_fold_583" to { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + %"$nat_fold_585" = load { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_fold_584" + %"$nat_fold_fptr_586" = extractvalue { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_585", 0 + %"$nat_fold_envptr_587" = extractvalue { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_585", 1 + %"$nat_fold_call_588" = call { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$nat_fold_fptr_586"(i8* %"$nat_fold_envptr_587") + store { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$nat_fold_call_588", { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %fold + %"$gasrem_589" = load i64, i64* @_gasrem + %"$gascmp_590" = icmp ugt i64 1, %"$gasrem_589" + br i1 %"$gascmp_590", label %"$out_of_gas_591", label %"$have_gas_592" + +"$out_of_gas_591": ; preds = %"$have_gas_580" + call void @_out_of_gas() + br label %"$have_gas_592" + +"$have_gas_592": ; preds = %"$out_of_gas_591", %"$have_gas_580" + %"$consume_593" = sub i64 %"$gasrem_589", 1 + store i64 %"$consume_593", i64* @_gasrem %one_int = alloca %Uint32 + %"$gasrem_594" = load i64, i64* @_gasrem + %"$gascmp_595" = icmp ugt i64 1, %"$gasrem_594" + br i1 %"$gascmp_595", label %"$out_of_gas_596", label %"$have_gas_597" + +"$out_of_gas_596": ; preds = %"$have_gas_592" + call void @_out_of_gas() + br label %"$have_gas_597" + +"$have_gas_597": ; preds = %"$out_of_gas_596", %"$have_gas_592" + %"$consume_598" = sub i64 %"$gasrem_594", 1 + store i64 %"$consume_598", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %one_int + %"$gasrem_599" = load i64, i64* @_gasrem + %"$gascmp_600" = icmp ugt i64 1, %"$gasrem_599" + br i1 %"$gascmp_600", label %"$out_of_gas_601", label %"$have_gas_602" + +"$out_of_gas_601": ; preds = %"$have_gas_597" + call void @_out_of_gas() + br label %"$have_gas_602" + +"$have_gas_602": ; preds = %"$out_of_gas_601", %"$have_gas_597" + %"$consume_603" = sub i64 %"$gasrem_599", 1 + store i64 %"$consume_603", i64* @_gasrem %f = alloca { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } - %"$$fundef_120_envp_444_load" = load i8*, i8** @_execptr - %"$$fundef_120_envp_444_salloc" = call i8* @_salloc(i8* %"$$fundef_120_envp_444_load", i64 4) - %"$$fundef_120_envp_444" = bitcast i8* %"$$fundef_120_envp_444_salloc" to %"$$fundef_120_env_220"* - %"$$fundef_120_env_voidp_446" = bitcast %"$$fundef_120_env_220"* %"$$fundef_120_envp_444" to i8* - %"$$fundef_120_cloval_447" = insertvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_Nat*)*, i8* } (%"$$fundef_120_env_220"*, %Uint32)* @"$fundef_120" to { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_120_env_voidp_446", 1 - %"$$fundef_120_env_one_int_448" = getelementptr inbounds %"$$fundef_120_env_220", %"$$fundef_120_env_220"* %"$$fundef_120_envp_444", i32 0, i32 0 - %"$one_int_449" = load %Uint32, %Uint32* %one_int - store %Uint32 %"$one_int_449", %Uint32* %"$$fundef_120_env_one_int_448" - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_120_cloval_447", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$gasrem_604" = load i64, i64* @_gasrem + %"$gascmp_605" = icmp ugt i64 1, %"$gasrem_604" + br i1 %"$gascmp_605", label %"$out_of_gas_606", label %"$have_gas_607" + +"$out_of_gas_606": ; preds = %"$have_gas_602" + call void @_out_of_gas() + br label %"$have_gas_607" + +"$have_gas_607": ; preds = %"$out_of_gas_606", %"$have_gas_602" + %"$consume_608" = sub i64 %"$gasrem_604", 1 + store i64 %"$consume_608", i64* @_gasrem + %"$$fundef_120_envp_609_load" = load i8*, i8** @_execptr + %"$$fundef_120_envp_609_salloc" = call i8* @_salloc(i8* %"$$fundef_120_envp_609_load", i64 4) + %"$$fundef_120_envp_609" = bitcast i8* %"$$fundef_120_envp_609_salloc" to %"$$fundef_120_env_220"* + %"$$fundef_120_env_voidp_611" = bitcast %"$$fundef_120_env_220"* %"$$fundef_120_envp_609" to i8* + %"$$fundef_120_cloval_612" = insertvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_Nat*)*, i8* } (%"$$fundef_120_env_220"*, %Uint32)* @"$fundef_120" to { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_120_env_voidp_611", 1 + %"$$fundef_120_env_one_int_613" = getelementptr inbounds %"$$fundef_120_env_220", %"$$fundef_120_env_220"* %"$$fundef_120_envp_609", i32 0, i32 0 + %"$one_int_614" = load %Uint32, %Uint32* %one_int + store %Uint32 %"$one_int_614", %Uint32* %"$$fundef_120_env_one_int_613" + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_120_cloval_612", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$gasrem_615" = load i64, i64* @_gasrem + %"$gascmp_616" = icmp ugt i64 1, %"$gasrem_615" + br i1 %"$gascmp_616", label %"$out_of_gas_617", label %"$have_gas_618" + +"$out_of_gas_617": ; preds = %"$have_gas_607" + call void @_out_of_gas() + br label %"$have_gas_618" + +"$have_gas_618": ; preds = %"$out_of_gas_617", %"$have_gas_607" + %"$consume_619" = sub i64 %"$gasrem_615", 1 + store i64 %"$consume_619", i64* @_gasrem %zero_int = alloca %Uint32 + %"$gasrem_620" = load i64, i64* @_gasrem + %"$gascmp_621" = icmp ugt i64 1, %"$gasrem_620" + br i1 %"$gascmp_621", label %"$out_of_gas_622", label %"$have_gas_623" + +"$out_of_gas_622": ; preds = %"$have_gas_618" + call void @_out_of_gas() + br label %"$have_gas_623" + +"$have_gas_623": ; preds = %"$out_of_gas_622", %"$have_gas_618" + %"$consume_624" = sub i64 %"$gasrem_620", 1 + store i64 %"$consume_624", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %zero_int + %"$gasrem_625" = load i64, i64* @_gasrem + %"$gascmp_626" = icmp ugt i64 1, %"$gasrem_625" + br i1 %"$gascmp_626", label %"$out_of_gas_627", label %"$have_gas_628" + +"$out_of_gas_627": ; preds = %"$have_gas_623" + call void @_out_of_gas() + br label %"$have_gas_628" + +"$have_gas_628": ; preds = %"$out_of_gas_627", %"$have_gas_623" + %"$consume_629" = sub i64 %"$gasrem_625", 1 + store i64 %"$consume_629", i64* @_gasrem %"$fold_22" = alloca { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } - %"$fold_450" = load { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %fold - %"$fold_fptr_451" = extractvalue { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$fold_450", 0 - %"$fold_envptr_452" = extractvalue { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$fold_450", 1 - %"$f_453" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$fold_call_454" = call { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fold_fptr_451"(i8* %"$fold_envptr_452", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$f_453") - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fold_call_454", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$fold_22" + %"$fold_630" = load { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %fold + %"$fold_fptr_631" = extractvalue { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$fold_630", 0 + %"$fold_envptr_632" = extractvalue { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$fold_630", 1 + %"$f_633" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$fold_call_634" = call { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fold_fptr_631"(i8* %"$fold_envptr_632", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$f_633") + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fold_call_634", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$fold_22" %"$fold_23" = alloca { %Uint32 (i8*, %TName_Nat*)*, i8* } - %"$$fold_22_455" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$fold_22" - %"$$fold_22_fptr_456" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fold_22_455", 0 - %"$$fold_22_envptr_457" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fold_22_455", 1 - %"$zero_int_458" = load %Uint32, %Uint32* %zero_int - %"$$fold_22_call_459" = call { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fold_22_fptr_456"(i8* %"$$fold_22_envptr_457", %Uint32 %"$zero_int_458") - store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fold_22_call_459", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$fold_23" + %"$$fold_22_635" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$fold_22" + %"$$fold_22_fptr_636" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fold_22_635", 0 + %"$$fold_22_envptr_637" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fold_22_635", 1 + %"$zero_int_638" = load %Uint32, %Uint32* %zero_int + %"$$fold_22_call_639" = call { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fold_22_fptr_636"(i8* %"$$fold_22_envptr_637", %Uint32 %"$zero_int_638") + store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fold_22_call_639", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$fold_23" %"$fold_24" = alloca %Uint32 - %"$$fold_23_460" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$fold_23" - %"$$fold_23_fptr_461" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fold_23_460", 0 - %"$$fold_23_envptr_462" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fold_23_460", 1 - %"$$fold_23_call_463" = call %Uint32 %"$$fold_23_fptr_461"(i8* %"$$fold_23_envptr_462", %TName_Nat* %1) - store %Uint32 %"$$fold_23_call_463", %Uint32* %"$fold_24" - %"$$fold_24_464" = load %Uint32, %Uint32* %"$fold_24" - store %Uint32 %"$$fold_24_464", %Uint32* %"$retval_119" - %"$$retval_119_465" = load %Uint32, %Uint32* %"$retval_119" - ret %Uint32 %"$$retval_119_465" + %"$$fold_23_640" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$fold_23" + %"$$fold_23_fptr_641" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fold_23_640", 0 + %"$$fold_23_envptr_642" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fold_23_640", 1 + %"$$fold_23_call_643" = call %Uint32 %"$$fold_23_fptr_641"(i8* %"$$fold_23_envptr_642", %TName_Nat* %1) + store %Uint32 %"$$fold_23_call_643", %Uint32* %"$fold_24" + %"$$fold_24_644" = load %Uint32, %Uint32* %"$fold_24" + store %Uint32 %"$$fold_24_644", %Uint32* %"$retval_119" + %"$$retval_119_645" = load %Uint32, %Uint32* %"$retval_119" + ret %Uint32 %"$$retval_119_645" } define internal %TName_Nat* @"$fundef_116"(%"$$fundef_116_env_222"* %0, %TName_Nat* %1) { entry: - %"$$fundef_116_env_f0_395" = getelementptr inbounds %"$$fundef_116_env_222", %"$$fundef_116_env_222"* %0, i32 0, i32 0 - %"$f0_envload_396" = load %TName_Nat*, %TName_Nat** %"$$fundef_116_env_f0_395" + %"$$fundef_116_env_f0_505" = getelementptr inbounds %"$$fundef_116_env_222", %"$$fundef_116_env_222"* %0, i32 0, i32 0 + %"$f0_envload_506" = load %TName_Nat*, %TName_Nat** %"$$fundef_116_env_f0_505" %f0 = alloca %TName_Nat* - store %TName_Nat* %"$f0_envload_396", %TName_Nat** %f0 - %"$$fundef_116_env_fn_397" = getelementptr inbounds %"$$fundef_116_env_222", %"$$fundef_116_env_222"* %0, i32 0, i32 1 - %"$fn_envload_398" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_116_env_fn_397" + store %TName_Nat* %"$f0_envload_506", %TName_Nat** %f0 + %"$$fundef_116_env_fn_507" = getelementptr inbounds %"$$fundef_116_env_222", %"$$fundef_116_env_222"* %0, i32 0, i32 1 + %"$fn_envload_508" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_116_env_fn_507" %fn = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_envload_398", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %fn - %"$$fundef_116_env_g_399" = getelementptr inbounds %"$$fundef_116_env_222", %"$$fundef_116_env_222"* %0, i32 0, i32 2 - %"$g_envload_400" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_116_env_g_399" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_envload_508", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %fn + %"$$fundef_116_env_g_509" = getelementptr inbounds %"$$fundef_116_env_222", %"$$fundef_116_env_222"* %0, i32 0, i32 2 + %"$g_envload_510" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_116_env_g_509" %g = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_envload_400", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_envload_510", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g %"$retval_117" = alloca %TName_Nat* - %"$n_tag_402" = getelementptr inbounds %TName_Nat, %TName_Nat* %1, i32 0, i32 0 - %"$n_tag_403" = load i8, i8* %"$n_tag_402" - switch i8 %"$n_tag_403", label %"$empty_default_404" [ - i8 1, label %"$Succ_405" - i8 0, label %"$Zero_431" + %"$gasrem_511" = load i64, i64* @_gasrem + %"$gascmp_512" = icmp ugt i64 2, %"$gasrem_511" + br i1 %"$gascmp_512", label %"$out_of_gas_513", label %"$have_gas_514" + +"$out_of_gas_513": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_514" + +"$have_gas_514": ; preds = %"$out_of_gas_513", %entry + %"$consume_515" = sub i64 %"$gasrem_511", 2 + store i64 %"$consume_515", i64* @_gasrem + %"$n_tag_517" = getelementptr inbounds %TName_Nat, %TName_Nat* %1, i32 0, i32 0 + %"$n_tag_518" = load i8, i8* %"$n_tag_517" + switch i8 %"$n_tag_518", label %"$empty_default_519" [ + i8 1, label %"$Succ_520" + i8 0, label %"$Zero_561" ] -"$Succ_405": ; preds = %entry - %"$n_406" = bitcast %TName_Nat* %1 to %CName_Succ* - %"$n1_gep_407" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$n_406", i32 0, i32 1 - %"$n1_load_408" = load %TName_Nat*, %TName_Nat** %"$n1_gep_407" +"$Succ_520": ; preds = %"$have_gas_514" + %"$n_521" = bitcast %TName_Nat* %1 to %CName_Succ* + %"$n1_gep_522" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$n_521", i32 0, i32 1 + %"$n1_load_523" = load %TName_Nat*, %TName_Nat** %"$n1_gep_522" %n1 = alloca %TName_Nat* - store %TName_Nat* %"$n1_load_408", %TName_Nat** %n1 + store %TName_Nat* %"$n1_load_523", %TName_Nat** %n1 + %"$gasrem_524" = load i64, i64* @_gasrem + %"$gascmp_525" = icmp ugt i64 1, %"$gasrem_524" + br i1 %"$gascmp_525", label %"$out_of_gas_526", label %"$have_gas_527" + +"$out_of_gas_526": ; preds = %"$Succ_520" + call void @_out_of_gas() + br label %"$have_gas_527" + +"$have_gas_527": ; preds = %"$out_of_gas_526", %"$Succ_520" + %"$consume_528" = sub i64 %"$gasrem_524", 1 + store i64 %"$consume_528", i64* @_gasrem %res = alloca %TName_Nat* + %"$gasrem_529" = load i64, i64* @_gasrem + %"$gascmp_530" = icmp ugt i64 1, %"$gasrem_529" + br i1 %"$gascmp_530", label %"$out_of_gas_531", label %"$have_gas_532" + +"$out_of_gas_531": ; preds = %"$have_gas_527" + call void @_out_of_gas() + br label %"$have_gas_532" + +"$have_gas_532": ; preds = %"$out_of_gas_531", %"$have_gas_527" + %"$consume_533" = sub i64 %"$gasrem_529", 1 + store i64 %"$consume_533", i64* @_gasrem %"$fn_18" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$fn_409" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %fn - %"$fn_fptr_410" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_409", 0 - %"$fn_envptr_411" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_409", 1 - %"$f0_412" = load %TName_Nat*, %TName_Nat** %f0 - %"$fn_call_413" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$fn_fptr_410"(i8* %"$fn_envptr_411", %TName_Nat* %"$f0_412") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$fn_call_413", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$fn_18" + %"$fn_534" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %fn + %"$fn_fptr_535" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_534", 0 + %"$fn_envptr_536" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_534", 1 + %"$f0_537" = load %TName_Nat*, %TName_Nat** %f0 + %"$fn_call_538" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$fn_fptr_535"(i8* %"$fn_envptr_536", %TName_Nat* %"$f0_537") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$fn_call_538", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$fn_18" %"$fn_19" = alloca %TName_Nat* - %"$$fn_18_414" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$fn_18" - %"$$fn_18_fptr_415" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_18_414", 0 - %"$$fn_18_envptr_416" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_18_414", 1 - %"$n1_417" = load %TName_Nat*, %TName_Nat** %n1 - %"$$fn_18_call_418" = call %TName_Nat* %"$$fn_18_fptr_415"(i8* %"$$fn_18_envptr_416", %TName_Nat* %"$n1_417") - store %TName_Nat* %"$$fn_18_call_418", %TName_Nat** %"$fn_19" - %"$$fn_19_419" = load %TName_Nat*, %TName_Nat** %"$fn_19" - store %TName_Nat* %"$$fn_19_419", %TName_Nat** %res + %"$$fn_18_539" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$fn_18" + %"$$fn_18_fptr_540" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_18_539", 0 + %"$$fn_18_envptr_541" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_18_539", 1 + %"$n1_542" = load %TName_Nat*, %TName_Nat** %n1 + %"$$fn_18_call_543" = call %TName_Nat* %"$$fn_18_fptr_540"(i8* %"$$fn_18_envptr_541", %TName_Nat* %"$n1_542") + store %TName_Nat* %"$$fn_18_call_543", %TName_Nat** %"$fn_19" + %"$$fn_19_544" = load %TName_Nat*, %TName_Nat** %"$fn_19" + store %TName_Nat* %"$$fn_19_544", %TName_Nat** %res + %"$gasrem_545" = load i64, i64* @_gasrem + %"$gascmp_546" = icmp ugt i64 1, %"$gasrem_545" + br i1 %"$gascmp_546", label %"$out_of_gas_547", label %"$have_gas_548" + +"$out_of_gas_547": ; preds = %"$have_gas_532" + call void @_out_of_gas() + br label %"$have_gas_548" + +"$have_gas_548": ; preds = %"$out_of_gas_547", %"$have_gas_532" + %"$consume_549" = sub i64 %"$gasrem_545", 1 + store i64 %"$consume_549", i64* @_gasrem %"$g_20" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$g_420" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g - %"$g_fptr_421" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_420", 0 - %"$g_envptr_422" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_420", 1 - %"$res_423" = load %TName_Nat*, %TName_Nat** %res - %"$g_call_424" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$g_fptr_421"(i8* %"$g_envptr_422", %TName_Nat* %"$res_423") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$g_call_424", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$g_20" + %"$g_550" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g + %"$g_fptr_551" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_550", 0 + %"$g_envptr_552" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_550", 1 + %"$res_553" = load %TName_Nat*, %TName_Nat** %res + %"$g_call_554" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$g_fptr_551"(i8* %"$g_envptr_552", %TName_Nat* %"$res_553") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$g_call_554", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$g_20" %"$g_21" = alloca %TName_Nat* - %"$$g_20_425" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$g_20" - %"$$g_20_fptr_426" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_20_425", 0 - %"$$g_20_envptr_427" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_20_425", 1 - %"$n1_428" = load %TName_Nat*, %TName_Nat** %n1 - %"$$g_20_call_429" = call %TName_Nat* %"$$g_20_fptr_426"(i8* %"$$g_20_envptr_427", %TName_Nat* %"$n1_428") - store %TName_Nat* %"$$g_20_call_429", %TName_Nat** %"$g_21" - %"$$g_21_430" = load %TName_Nat*, %TName_Nat** %"$g_21" - store %TName_Nat* %"$$g_21_430", %TName_Nat** %"$retval_117" - br label %"$matchsucc_401" - -"$Zero_431": ; preds = %entry - %"$n_432" = bitcast %TName_Nat* %1 to %CName_Zero* - %"$f0_433" = load %TName_Nat*, %TName_Nat** %f0 - store %TName_Nat* %"$f0_433", %TName_Nat** %"$retval_117" - br label %"$matchsucc_401" - -"$empty_default_404": ; preds = %entry - br label %"$matchsucc_401" - -"$matchsucc_401": ; preds = %"$Zero_431", %"$Succ_405", %"$empty_default_404" - %"$$retval_117_434" = load %TName_Nat*, %TName_Nat** %"$retval_117" - ret %TName_Nat* %"$$retval_117_434" + %"$$g_20_555" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$g_20" + %"$$g_20_fptr_556" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_20_555", 0 + %"$$g_20_envptr_557" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_20_555", 1 + %"$n1_558" = load %TName_Nat*, %TName_Nat** %n1 + %"$$g_20_call_559" = call %TName_Nat* %"$$g_20_fptr_556"(i8* %"$$g_20_envptr_557", %TName_Nat* %"$n1_558") + store %TName_Nat* %"$$g_20_call_559", %TName_Nat** %"$g_21" + %"$$g_21_560" = load %TName_Nat*, %TName_Nat** %"$g_21" + store %TName_Nat* %"$$g_21_560", %TName_Nat** %"$retval_117" + br label %"$matchsucc_516" + +"$Zero_561": ; preds = %"$have_gas_514" + %"$n_562" = bitcast %TName_Nat* %1 to %CName_Zero* + %"$gasrem_563" = load i64, i64* @_gasrem + %"$gascmp_564" = icmp ugt i64 1, %"$gasrem_563" + br i1 %"$gascmp_564", label %"$out_of_gas_565", label %"$have_gas_566" + +"$out_of_gas_565": ; preds = %"$Zero_561" + call void @_out_of_gas() + br label %"$have_gas_566" + +"$have_gas_566": ; preds = %"$out_of_gas_565", %"$Zero_561" + %"$consume_567" = sub i64 %"$gasrem_563", 1 + store i64 %"$consume_567", i64* @_gasrem + %"$f0_568" = load %TName_Nat*, %TName_Nat** %f0 + store %TName_Nat* %"$f0_568", %TName_Nat** %"$retval_117" + br label %"$matchsucc_516" + +"$empty_default_519": ; preds = %"$have_gas_514" + br label %"$matchsucc_516" + +"$matchsucc_516": ; preds = %"$have_gas_566", %"$have_gas_548", %"$empty_default_519" + %"$$retval_117_569" = load %TName_Nat*, %TName_Nat** %"$retval_117" + ret %TName_Nat* %"$$retval_117_569" } define internal { %TName_Nat* (i8*, %TName_Nat*)*, i8* } @"$fundef_114"(%"$$fundef_114_env_223"* %0, %TName_Nat* %1) { entry: - %"$$fundef_114_env_fn_381" = getelementptr inbounds %"$$fundef_114_env_223", %"$$fundef_114_env_223"* %0, i32 0, i32 0 - %"$fn_envload_382" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_114_env_fn_381" + %"$$fundef_114_env_fn_486" = getelementptr inbounds %"$$fundef_114_env_223", %"$$fundef_114_env_223"* %0, i32 0, i32 0 + %"$fn_envload_487" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_114_env_fn_486" %fn = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_envload_382", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %fn - %"$$fundef_114_env_g_383" = getelementptr inbounds %"$$fundef_114_env_223", %"$$fundef_114_env_223"* %0, i32 0, i32 1 - %"$g_envload_384" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_114_env_g_383" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_envload_487", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %fn + %"$$fundef_114_env_g_488" = getelementptr inbounds %"$$fundef_114_env_223", %"$$fundef_114_env_223"* %0, i32 0, i32 1 + %"$g_envload_489" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_114_env_g_488" %g = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_envload_384", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_envload_489", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g %"$retval_115" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$$fundef_116_envp_385_load" = load i8*, i8** @_execptr - %"$$fundef_116_envp_385_salloc" = call i8* @_salloc(i8* %"$$fundef_116_envp_385_load", i64 40) - %"$$fundef_116_envp_385" = bitcast i8* %"$$fundef_116_envp_385_salloc" to %"$$fundef_116_env_222"* - %"$$fundef_116_env_voidp_387" = bitcast %"$$fundef_116_env_222"* %"$$fundef_116_envp_385" to i8* - %"$$fundef_116_cloval_388" = insertvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } { %TName_Nat* (i8*, %TName_Nat*)* bitcast (%TName_Nat* (%"$$fundef_116_env_222"*, %TName_Nat*)* @"$fundef_116" to %TName_Nat* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_116_env_voidp_387", 1 - %"$$fundef_116_env_f0_389" = getelementptr inbounds %"$$fundef_116_env_222", %"$$fundef_116_env_222"* %"$$fundef_116_envp_385", i32 0, i32 0 - store %TName_Nat* %1, %TName_Nat** %"$$fundef_116_env_f0_389" - %"$$fundef_116_env_fn_390" = getelementptr inbounds %"$$fundef_116_env_222", %"$$fundef_116_env_222"* %"$$fundef_116_envp_385", i32 0, i32 1 - %"$fn_391" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %fn - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_391", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_116_env_fn_390" - %"$$fundef_116_env_g_392" = getelementptr inbounds %"$$fundef_116_env_222", %"$$fundef_116_env_222"* %"$$fundef_116_envp_385", i32 0, i32 2 - %"$g_393" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_393", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_116_env_g_392" - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fundef_116_cloval_388", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_115" - %"$$retval_115_394" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_115" - ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_115_394" + %"$gasrem_490" = load i64, i64* @_gasrem + %"$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 = %entry + call void @_out_of_gas() + br label %"$have_gas_493" + +"$have_gas_493": ; preds = %"$out_of_gas_492", %entry + %"$consume_494" = sub i64 %"$gasrem_490", 1 + store i64 %"$consume_494", i64* @_gasrem + %"$$fundef_116_envp_495_load" = load i8*, i8** @_execptr + %"$$fundef_116_envp_495_salloc" = call i8* @_salloc(i8* %"$$fundef_116_envp_495_load", i64 40) + %"$$fundef_116_envp_495" = bitcast i8* %"$$fundef_116_envp_495_salloc" to %"$$fundef_116_env_222"* + %"$$fundef_116_env_voidp_497" = bitcast %"$$fundef_116_env_222"* %"$$fundef_116_envp_495" to i8* + %"$$fundef_116_cloval_498" = insertvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } { %TName_Nat* (i8*, %TName_Nat*)* bitcast (%TName_Nat* (%"$$fundef_116_env_222"*, %TName_Nat*)* @"$fundef_116" to %TName_Nat* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_116_env_voidp_497", 1 + %"$$fundef_116_env_f0_499" = getelementptr inbounds %"$$fundef_116_env_222", %"$$fundef_116_env_222"* %"$$fundef_116_envp_495", i32 0, i32 0 + store %TName_Nat* %1, %TName_Nat** %"$$fundef_116_env_f0_499" + %"$$fundef_116_env_fn_500" = getelementptr inbounds %"$$fundef_116_env_222", %"$$fundef_116_env_222"* %"$$fundef_116_envp_495", i32 0, i32 1 + %"$fn_501" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %fn + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_501", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_116_env_fn_500" + %"$$fundef_116_env_g_502" = getelementptr inbounds %"$$fundef_116_env_222", %"$$fundef_116_env_222"* %"$$fundef_116_envp_495", i32 0, i32 2 + %"$g_503" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_503", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_116_env_g_502" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fundef_116_cloval_498", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_115" + %"$$retval_115_504" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_115" + ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_115_504" } define internal { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } @"$fundef_112"(%"$$fundef_112_env_224"* %0, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %1) { entry: %"$retval_113" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$$fundef_114_envp_372_load" = load i8*, i8** @_execptr - %"$$fundef_114_envp_372_salloc" = call i8* @_salloc(i8* %"$$fundef_114_envp_372_load", i64 32) - %"$$fundef_114_envp_372" = bitcast i8* %"$$fundef_114_envp_372_salloc" to %"$$fundef_114_env_223"* - %"$$fundef_114_env_voidp_374" = bitcast %"$$fundef_114_env_223"* %"$$fundef_114_envp_372" to i8* - %"$$fundef_114_cloval_375" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_114_env_223"*, %TName_Nat*)* @"$fundef_114" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_114_env_voidp_374", 1 + %"$gasrem_467" = load i64, i64* @_gasrem + %"$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 = %entry + call void @_out_of_gas() + br label %"$have_gas_470" + +"$have_gas_470": ; preds = %"$out_of_gas_469", %entry + %"$consume_471" = sub i64 %"$gasrem_467", 1 + store i64 %"$consume_471", i64* @_gasrem + %"$gasrem_472" = load i64, i64* @_gasrem + %"$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 + %"$$fundef_114_envp_477_load" = load i8*, i8** @_execptr + %"$$fundef_114_envp_477_salloc" = call i8* @_salloc(i8* %"$$fundef_114_envp_477_load", i64 32) + %"$$fundef_114_envp_477" = bitcast i8* %"$$fundef_114_envp_477_salloc" to %"$$fundef_114_env_223"* + %"$$fundef_114_env_voidp_479" = bitcast %"$$fundef_114_env_223"* %"$$fundef_114_envp_477" to i8* + %"$$fundef_114_cloval_480" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_114_env_223"*, %TName_Nat*)* @"$fundef_114" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_114_env_voidp_479", 1 %g = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_114_cloval_375", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g - %"$$fundef_114_env_fn_376" = getelementptr inbounds %"$$fundef_114_env_223", %"$$fundef_114_env_223"* %"$$fundef_114_envp_372", i32 0, i32 0 - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %1, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_114_env_fn_376" - %"$$fundef_114_env_g_377" = getelementptr inbounds %"$$fundef_114_env_223", %"$$fundef_114_env_223"* %"$$fundef_114_envp_372", i32 0, i32 1 - %"$g_378" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_378", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_114_env_g_377" - %"$g_379" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_379", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_113" - %"$$retval_113_380" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_113" - ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_113_380" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_114_cloval_480", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g + %"$$fundef_114_env_fn_481" = getelementptr inbounds %"$$fundef_114_env_223", %"$$fundef_114_env_223"* %"$$fundef_114_envp_477", i32 0, i32 0 + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %1, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_114_env_fn_481" + %"$$fundef_114_env_g_482" = getelementptr inbounds %"$$fundef_114_env_223", %"$$fundef_114_env_223"* %"$$fundef_114_envp_477", i32 0, i32 1 + %"$g_483" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_483", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_114_env_g_482" + %"$g_484" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_484", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_113" + %"$$retval_113_485" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_113" + ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_113_485" } define internal { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } @"$fundef_110"(%"$$fundef_110_env_225"* %0) { entry: %"$retval_111" = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } + %"$gasrem_458" = load i64, i64* @_gasrem + %"$gascmp_459" = icmp ugt i64 1, %"$gasrem_458" + br i1 %"$gascmp_459", label %"$out_of_gas_460", label %"$have_gas_461" + +"$out_of_gas_460": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_461" + +"$have_gas_461": ; preds = %"$out_of_gas_460", %entry + %"$consume_462" = sub i64 %"$gasrem_458", 1 + store i64 %"$consume_462", i64* @_gasrem store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })* bitcast ({ { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (%"$$fundef_112_env_224"*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })* @"$fundef_112" to { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*), i8* null }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_111" - %"$$retval_111_371" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_111" - ret { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$retval_111_371" + %"$$retval_111_466" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_111" + ret { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$retval_111_466" } define internal { %TName_Nat* (i8*, %TName_Nat*)*, i8* } @"$fundef_108"(%"$$fundef_108_env_226"* %0, %TName_Nat* %1) { entry: - %"$$fundef_108_env_f0_328" = getelementptr inbounds %"$$fundef_108_env_226", %"$$fundef_108_env_226"* %0, i32 0, i32 0 - %"$f0_envload_329" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_108_env_f0_328" + %"$$fundef_108_env_f0_393" = getelementptr inbounds %"$$fundef_108_env_226", %"$$fundef_108_env_226"* %0, i32 0, i32 0 + %"$f0_envload_394" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_108_env_f0_393" %f0 = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f0_envload_329", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f0 - %"$$fundef_108_env_fn_330" = getelementptr inbounds %"$$fundef_108_env_226", %"$$fundef_108_env_226"* %0, i32 0, i32 1 - %"$fn_envload_331" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_108_env_fn_330" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f0_envload_394", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f0 + %"$$fundef_108_env_fn_395" = getelementptr inbounds %"$$fundef_108_env_226", %"$$fundef_108_env_226"* %0, i32 0, i32 1 + %"$fn_envload_396" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_108_env_fn_395" %fn = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_envload_331", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %fn - %"$$fundef_108_env_g_332" = getelementptr inbounds %"$$fundef_108_env_226", %"$$fundef_108_env_226"* %0, i32 0, i32 2 - %"$g_envload_333" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_108_env_g_332" + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_envload_396", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %fn + %"$$fundef_108_env_g_397" = getelementptr inbounds %"$$fundef_108_env_226", %"$$fundef_108_env_226"* %0, i32 0, i32 2 + %"$g_envload_398" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_108_env_g_397" %g = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_envload_333", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_envload_398", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g %"$retval_109" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$n_tag_335" = getelementptr inbounds %TName_Nat, %TName_Nat* %1, i32 0, i32 0 - %"$n_tag_336" = load i8, i8* %"$n_tag_335" - switch i8 %"$n_tag_336", label %"$empty_default_337" [ - i8 1, label %"$Succ_338" - i8 0, label %"$Zero_364" + %"$gasrem_399" = load i64, i64* @_gasrem + %"$gascmp_400" = icmp ugt i64 2, %"$gasrem_399" + br i1 %"$gascmp_400", label %"$out_of_gas_401", label %"$have_gas_402" + +"$out_of_gas_401": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_402" + +"$have_gas_402": ; preds = %"$out_of_gas_401", %entry + %"$consume_403" = sub i64 %"$gasrem_399", 2 + store i64 %"$consume_403", i64* @_gasrem + %"$n_tag_405" = getelementptr inbounds %TName_Nat, %TName_Nat* %1, i32 0, i32 0 + %"$n_tag_406" = load i8, i8* %"$n_tag_405" + switch i8 %"$n_tag_406", label %"$empty_default_407" [ + i8 1, label %"$Succ_408" + i8 0, label %"$Zero_449" ] -"$Succ_338": ; preds = %entry - %"$n_339" = bitcast %TName_Nat* %1 to %CName_Succ* - %"$n1_gep_340" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$n_339", i32 0, i32 1 - %"$n1_load_341" = load %TName_Nat*, %TName_Nat** %"$n1_gep_340" +"$Succ_408": ; preds = %"$have_gas_402" + %"$n_409" = bitcast %TName_Nat* %1 to %CName_Succ* + %"$n1_gep_410" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$n_409", i32 0, i32 1 + %"$n1_load_411" = load %TName_Nat*, %TName_Nat** %"$n1_gep_410" %n1 = alloca %TName_Nat* - store %TName_Nat* %"$n1_load_341", %TName_Nat** %n1 + store %TName_Nat* %"$n1_load_411", %TName_Nat** %n1 + %"$gasrem_412" = load i64, i64* @_gasrem + %"$gascmp_413" = icmp ugt i64 1, %"$gasrem_412" + br i1 %"$gascmp_413", label %"$out_of_gas_414", label %"$have_gas_415" + +"$out_of_gas_414": ; preds = %"$Succ_408" + call void @_out_of_gas() + br label %"$have_gas_415" + +"$have_gas_415": ; preds = %"$out_of_gas_414", %"$Succ_408" + %"$consume_416" = sub i64 %"$gasrem_412", 1 + store i64 %"$consume_416", i64* @_gasrem %res = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } + %"$gasrem_417" = load i64, i64* @_gasrem + %"$gascmp_418" = icmp ugt i64 1, %"$gasrem_417" + br i1 %"$gascmp_418", label %"$out_of_gas_419", label %"$have_gas_420" + +"$out_of_gas_419": ; preds = %"$have_gas_415" + call void @_out_of_gas() + br label %"$have_gas_420" + +"$have_gas_420": ; preds = %"$out_of_gas_419", %"$have_gas_415" + %"$consume_421" = sub i64 %"$gasrem_417", 1 + store i64 %"$consume_421", i64* @_gasrem %"$fn_18" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$fn_342" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %fn - %"$fn_fptr_343" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_342", 0 - %"$fn_envptr_344" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_342", 1 - %"$f0_345" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f0 - %"$fn_call_346" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_fptr_343"(i8* %"$fn_envptr_344", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f0_345") - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_call_346", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$fn_18" + %"$fn_422" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %fn + %"$fn_fptr_423" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_422", 0 + %"$fn_envptr_424" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_422", 1 + %"$f0_425" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f0 + %"$fn_call_426" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_fptr_423"(i8* %"$fn_envptr_424", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f0_425") + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_call_426", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$fn_18" %"$fn_19" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$$fn_18_347" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$fn_18" - %"$$fn_18_fptr_348" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fn_18_347", 0 - %"$$fn_18_envptr_349" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fn_18_347", 1 - %"$n1_350" = load %TName_Nat*, %TName_Nat** %n1 - %"$$fn_18_call_351" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_18_fptr_348"(i8* %"$$fn_18_envptr_349", %TName_Nat* %"$n1_350") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_18_call_351", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$fn_19" - %"$$fn_19_352" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$fn_19" - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_19_352", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %res + %"$$fn_18_427" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$fn_18" + %"$$fn_18_fptr_428" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fn_18_427", 0 + %"$$fn_18_envptr_429" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fn_18_427", 1 + %"$n1_430" = load %TName_Nat*, %TName_Nat** %n1 + %"$$fn_18_call_431" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_18_fptr_428"(i8* %"$$fn_18_envptr_429", %TName_Nat* %"$n1_430") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_18_call_431", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$fn_19" + %"$$fn_19_432" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$fn_19" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_19_432", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %res + %"$gasrem_433" = load i64, i64* @_gasrem + %"$gascmp_434" = icmp ugt i64 1, %"$gasrem_433" + br i1 %"$gascmp_434", label %"$out_of_gas_435", label %"$have_gas_436" + +"$out_of_gas_435": ; preds = %"$have_gas_420" + call void @_out_of_gas() + br label %"$have_gas_436" + +"$have_gas_436": ; preds = %"$out_of_gas_435", %"$have_gas_420" + %"$consume_437" = sub i64 %"$gasrem_433", 1 + store i64 %"$consume_437", i64* @_gasrem %"$g_20" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$g_353" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g - %"$g_fptr_354" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_353", 0 - %"$g_envptr_355" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_353", 1 - %"$res_356" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %res - %"$g_call_357" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_fptr_354"(i8* %"$g_envptr_355", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$res_356") - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_call_357", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$g_20" + %"$g_438" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g + %"$g_fptr_439" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_438", 0 + %"$g_envptr_440" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_438", 1 + %"$res_441" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %res + %"$g_call_442" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_fptr_439"(i8* %"$g_envptr_440", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$res_441") + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_call_442", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$g_20" %"$g_21" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$$g_20_358" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$g_20" - %"$$g_20_fptr_359" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$g_20_358", 0 - %"$$g_20_envptr_360" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$g_20_358", 1 - %"$n1_361" = load %TName_Nat*, %TName_Nat** %n1 - %"$$g_20_call_362" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_20_fptr_359"(i8* %"$$g_20_envptr_360", %TName_Nat* %"$n1_361") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_20_call_362", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$g_21" - %"$$g_21_363" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$g_21" - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_21_363", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_109" - br label %"$matchsucc_334" - -"$Zero_364": ; preds = %entry - %"$n_365" = bitcast %TName_Nat* %1 to %CName_Zero* - %"$f0_366" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f0 - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f0_366", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_109" - br label %"$matchsucc_334" - -"$empty_default_337": ; preds = %entry - br label %"$matchsucc_334" - -"$matchsucc_334": ; preds = %"$Zero_364", %"$Succ_338", %"$empty_default_337" - %"$$retval_109_367" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_109" - ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_109_367" + %"$$g_20_443" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$g_20" + %"$$g_20_fptr_444" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$g_20_443", 0 + %"$$g_20_envptr_445" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$g_20_443", 1 + %"$n1_446" = load %TName_Nat*, %TName_Nat** %n1 + %"$$g_20_call_447" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_20_fptr_444"(i8* %"$$g_20_envptr_445", %TName_Nat* %"$n1_446") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_20_call_447", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$g_21" + %"$$g_21_448" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$g_21" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_21_448", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_109" + br label %"$matchsucc_404" + +"$Zero_449": ; preds = %"$have_gas_402" + %"$n_450" = bitcast %TName_Nat* %1 to %CName_Zero* + %"$gasrem_451" = load i64, i64* @_gasrem + %"$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 = %"$Zero_449" + call void @_out_of_gas() + br label %"$have_gas_454" + +"$have_gas_454": ; preds = %"$out_of_gas_453", %"$Zero_449" + %"$consume_455" = sub i64 %"$gasrem_451", 1 + store i64 %"$consume_455", i64* @_gasrem + %"$f0_456" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f0 + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f0_456", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_109" + br label %"$matchsucc_404" + +"$empty_default_407": ; preds = %"$have_gas_402" + br label %"$matchsucc_404" + +"$matchsucc_404": ; preds = %"$have_gas_454", %"$have_gas_436", %"$empty_default_407" + %"$$retval_109_457" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_109" + ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_109_457" } define internal { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } @"$fundef_106"(%"$$fundef_106_env_227"* %0, { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1) { entry: - %"$$fundef_106_env_fn_314" = getelementptr inbounds %"$$fundef_106_env_227", %"$$fundef_106_env_227"* %0, i32 0, i32 0 - %"$fn_envload_315" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_106_env_fn_314" + %"$$fundef_106_env_fn_374" = getelementptr inbounds %"$$fundef_106_env_227", %"$$fundef_106_env_227"* %0, i32 0, i32 0 + %"$fn_envload_375" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_106_env_fn_374" %fn = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_envload_315", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %fn - %"$$fundef_106_env_g_316" = getelementptr inbounds %"$$fundef_106_env_227", %"$$fundef_106_env_227"* %0, i32 0, i32 1 - %"$g_envload_317" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_106_env_g_316" + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_envload_375", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %fn + %"$$fundef_106_env_g_376" = getelementptr inbounds %"$$fundef_106_env_227", %"$$fundef_106_env_227"* %0, i32 0, i32 1 + %"$g_envload_377" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_106_env_g_376" %g = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_envload_317", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_envload_377", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g %"$retval_107" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$$fundef_108_envp_318_load" = load i8*, i8** @_execptr - %"$$fundef_108_envp_318_salloc" = call i8* @_salloc(i8* %"$$fundef_108_envp_318_load", i64 48) - %"$$fundef_108_envp_318" = bitcast i8* %"$$fundef_108_envp_318_salloc" to %"$$fundef_108_env_226"* - %"$$fundef_108_env_voidp_320" = bitcast %"$$fundef_108_env_226"* %"$$fundef_108_envp_318" to i8* - %"$$fundef_108_cloval_321" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_108_env_226"*, %TName_Nat*)* @"$fundef_108" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_108_env_voidp_320", 1 - %"$$fundef_108_env_f0_322" = getelementptr inbounds %"$$fundef_108_env_226", %"$$fundef_108_env_226"* %"$$fundef_108_envp_318", i32 0, i32 0 - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_108_env_f0_322" - %"$$fundef_108_env_fn_323" = getelementptr inbounds %"$$fundef_108_env_226", %"$$fundef_108_env_226"* %"$$fundef_108_envp_318", i32 0, i32 1 - %"$fn_324" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %fn - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_324", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_108_env_fn_323" - %"$$fundef_108_env_g_325" = getelementptr inbounds %"$$fundef_108_env_226", %"$$fundef_108_env_226"* %"$$fundef_108_envp_318", i32 0, i32 2 - %"$g_326" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_326", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_108_env_g_325" - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_108_cloval_321", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_107" - %"$$retval_107_327" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_107" - ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_107_327" + %"$gasrem_378" = load i64, i64* @_gasrem + %"$gascmp_379" = icmp ugt i64 1, %"$gasrem_378" + br i1 %"$gascmp_379", label %"$out_of_gas_380", label %"$have_gas_381" + +"$out_of_gas_380": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_381" + +"$have_gas_381": ; preds = %"$out_of_gas_380", %entry + %"$consume_382" = sub i64 %"$gasrem_378", 1 + store i64 %"$consume_382", i64* @_gasrem + %"$$fundef_108_envp_383_load" = load i8*, i8** @_execptr + %"$$fundef_108_envp_383_salloc" = call i8* @_salloc(i8* %"$$fundef_108_envp_383_load", i64 48) + %"$$fundef_108_envp_383" = bitcast i8* %"$$fundef_108_envp_383_salloc" to %"$$fundef_108_env_226"* + %"$$fundef_108_env_voidp_385" = bitcast %"$$fundef_108_env_226"* %"$$fundef_108_envp_383" to i8* + %"$$fundef_108_cloval_386" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_108_env_226"*, %TName_Nat*)* @"$fundef_108" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_108_env_voidp_385", 1 + %"$$fundef_108_env_f0_387" = getelementptr inbounds %"$$fundef_108_env_226", %"$$fundef_108_env_226"* %"$$fundef_108_envp_383", i32 0, i32 0 + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_108_env_f0_387" + %"$$fundef_108_env_fn_388" = getelementptr inbounds %"$$fundef_108_env_226", %"$$fundef_108_env_226"* %"$$fundef_108_envp_383", i32 0, i32 1 + %"$fn_389" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %fn + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_389", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_108_env_fn_388" + %"$$fundef_108_env_g_390" = getelementptr inbounds %"$$fundef_108_env_226", %"$$fundef_108_env_226"* %"$$fundef_108_envp_383", i32 0, i32 2 + %"$g_391" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_391", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_108_env_g_390" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_108_cloval_386", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_107" + %"$$retval_107_392" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_107" + ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_107_392" } define internal { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } @"$fundef_104"(%"$$fundef_104_env_228"* %0, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %1) { entry: %"$retval_105" = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - %"$$fundef_106_envp_305_load" = load i8*, i8** @_execptr - %"$$fundef_106_envp_305_salloc" = call i8* @_salloc(i8* %"$$fundef_106_envp_305_load", i64 32) - %"$$fundef_106_envp_305" = bitcast i8* %"$$fundef_106_envp_305_salloc" to %"$$fundef_106_env_227"* - %"$$fundef_106_env_voidp_307" = bitcast %"$$fundef_106_env_227"* %"$$fundef_106_envp_305" to i8* - %"$$fundef_106_cloval_308" = insertvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (%"$$fundef_106_env_227"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_106" to { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_106_env_voidp_307", 1 + %"$gasrem_355" = load i64, i64* @_gasrem + %"$gascmp_356" = icmp ugt i64 1, %"$gasrem_355" + br i1 %"$gascmp_356", label %"$out_of_gas_357", label %"$have_gas_358" + +"$out_of_gas_357": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_358" + +"$have_gas_358": ; preds = %"$out_of_gas_357", %entry + %"$consume_359" = sub i64 %"$gasrem_355", 1 + store i64 %"$consume_359", i64* @_gasrem + %"$gasrem_360" = load i64, i64* @_gasrem + %"$gascmp_361" = icmp ugt i64 1, %"$gasrem_360" + br i1 %"$gascmp_361", label %"$out_of_gas_362", label %"$have_gas_363" + +"$out_of_gas_362": ; preds = %"$have_gas_358" + call void @_out_of_gas() + br label %"$have_gas_363" + +"$have_gas_363": ; preds = %"$out_of_gas_362", %"$have_gas_358" + %"$consume_364" = sub i64 %"$gasrem_360", 1 + store i64 %"$consume_364", i64* @_gasrem + %"$$fundef_106_envp_365_load" = load i8*, i8** @_execptr + %"$$fundef_106_envp_365_salloc" = call i8* @_salloc(i8* %"$$fundef_106_envp_365_load", i64 32) + %"$$fundef_106_envp_365" = bitcast i8* %"$$fundef_106_envp_365_salloc" to %"$$fundef_106_env_227"* + %"$$fundef_106_env_voidp_367" = bitcast %"$$fundef_106_env_227"* %"$$fundef_106_envp_365" to i8* + %"$$fundef_106_cloval_368" = insertvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (%"$$fundef_106_env_227"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_106" to { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_106_env_voidp_367", 1 %g = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_106_cloval_308", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g - %"$$fundef_106_env_fn_309" = getelementptr inbounds %"$$fundef_106_env_227", %"$$fundef_106_env_227"* %"$$fundef_106_envp_305", i32 0, i32 0 - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %1, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_106_env_fn_309" - %"$$fundef_106_env_g_310" = getelementptr inbounds %"$$fundef_106_env_227", %"$$fundef_106_env_227"* %"$$fundef_106_envp_305", i32 0, i32 1 - %"$g_311" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_311", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_106_env_g_310" - %"$g_312" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_312", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_105" - %"$$retval_105_313" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_105" - ret { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$retval_105_313" + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_106_cloval_368", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g + %"$$fundef_106_env_fn_369" = getelementptr inbounds %"$$fundef_106_env_227", %"$$fundef_106_env_227"* %"$$fundef_106_envp_365", i32 0, i32 0 + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %1, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_106_env_fn_369" + %"$$fundef_106_env_g_370" = getelementptr inbounds %"$$fundef_106_env_227", %"$$fundef_106_env_227"* %"$$fundef_106_envp_365", i32 0, i32 1 + %"$g_371" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_371", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_106_env_g_370" + %"$g_372" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_372", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_105" + %"$$retval_105_373" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_105" + ret { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$retval_105_373" } define internal { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } @"$fundef_102"(%"$$fundef_102_env_229"* %0) { entry: %"$retval_103" = alloca { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } + %"$gasrem_346" = load i64, i64* @_gasrem + %"$gascmp_347" = icmp ugt i64 1, %"$gasrem_346" + br i1 %"$gascmp_347", label %"$out_of_gas_348", label %"$have_gas_349" + +"$out_of_gas_348": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_349" + +"$have_gas_349": ; preds = %"$out_of_gas_348", %entry + %"$consume_350" = sub i64 %"$gasrem_346", 1 + store i64 %"$consume_350", i64* @_gasrem store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })* bitcast ({ { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (%"$$fundef_104_env_228"*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })* @"$fundef_104" to { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*), i8* null }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$retval_103" - %"$$retval_103_304" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$retval_103" - ret { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$$retval_103_304" + %"$$retval_103_354" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$retval_103" + ret { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$$retval_103_354" } define internal %Uint32 @"$fundef_100"(%"$$fundef_100_env_230"* %0, %TName_Nat* %1) { entry: - %"$$fundef_100_env_f0_261" = getelementptr inbounds %"$$fundef_100_env_230", %"$$fundef_100_env_230"* %0, i32 0, i32 0 - %"$f0_envload_262" = load %Uint32, %Uint32* %"$$fundef_100_env_f0_261" + %"$$fundef_100_env_f0_281" = getelementptr inbounds %"$$fundef_100_env_230", %"$$fundef_100_env_230"* %0, i32 0, i32 0 + %"$f0_envload_282" = load %Uint32, %Uint32* %"$$fundef_100_env_f0_281" %f0 = alloca %Uint32 - store %Uint32 %"$f0_envload_262", %Uint32* %f0 - %"$$fundef_100_env_fn_263" = getelementptr inbounds %"$$fundef_100_env_230", %"$$fundef_100_env_230"* %0, i32 0, i32 1 - %"$fn_envload_264" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_100_env_fn_263" + store %Uint32 %"$f0_envload_282", %Uint32* %f0 + %"$$fundef_100_env_fn_283" = getelementptr inbounds %"$$fundef_100_env_230", %"$$fundef_100_env_230"* %0, i32 0, i32 1 + %"$fn_envload_284" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_100_env_fn_283" %fn = alloca { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_envload_264", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %fn - %"$$fundef_100_env_g_265" = getelementptr inbounds %"$$fundef_100_env_230", %"$$fundef_100_env_230"* %0, i32 0, i32 2 - %"$g_envload_266" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_100_env_g_265" + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_envload_284", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %fn + %"$$fundef_100_env_g_285" = getelementptr inbounds %"$$fundef_100_env_230", %"$$fundef_100_env_230"* %0, i32 0, i32 2 + %"$g_envload_286" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_100_env_g_285" %g = alloca { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_266", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_286", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g %"$retval_101" = alloca %Uint32 - %"$n_tag_268" = getelementptr inbounds %TName_Nat, %TName_Nat* %1, i32 0, i32 0 - %"$n_tag_269" = load i8, i8* %"$n_tag_268" - switch i8 %"$n_tag_269", label %"$empty_default_270" [ - i8 1, label %"$Succ_271" - i8 0, label %"$Zero_297" + %"$gasrem_287" = load i64, i64* @_gasrem + %"$gascmp_288" = icmp ugt i64 2, %"$gasrem_287" + br i1 %"$gascmp_288", label %"$out_of_gas_289", label %"$have_gas_290" + +"$out_of_gas_289": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_290" + +"$have_gas_290": ; preds = %"$out_of_gas_289", %entry + %"$consume_291" = sub i64 %"$gasrem_287", 2 + store i64 %"$consume_291", i64* @_gasrem + %"$n_tag_293" = getelementptr inbounds %TName_Nat, %TName_Nat* %1, i32 0, i32 0 + %"$n_tag_294" = load i8, i8* %"$n_tag_293" + switch i8 %"$n_tag_294", label %"$empty_default_295" [ + i8 1, label %"$Succ_296" + i8 0, label %"$Zero_337" ] -"$Succ_271": ; preds = %entry - %"$n_272" = bitcast %TName_Nat* %1 to %CName_Succ* - %"$n1_gep_273" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$n_272", i32 0, i32 1 - %"$n1_load_274" = load %TName_Nat*, %TName_Nat** %"$n1_gep_273" +"$Succ_296": ; preds = %"$have_gas_290" + %"$n_297" = bitcast %TName_Nat* %1 to %CName_Succ* + %"$n1_gep_298" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$n_297", i32 0, i32 1 + %"$n1_load_299" = load %TName_Nat*, %TName_Nat** %"$n1_gep_298" %n1 = alloca %TName_Nat* - store %TName_Nat* %"$n1_load_274", %TName_Nat** %n1 + store %TName_Nat* %"$n1_load_299", %TName_Nat** %n1 + %"$gasrem_300" = load i64, i64* @_gasrem + %"$gascmp_301" = icmp ugt i64 1, %"$gasrem_300" + br i1 %"$gascmp_301", label %"$out_of_gas_302", label %"$have_gas_303" + +"$out_of_gas_302": ; preds = %"$Succ_296" + call void @_out_of_gas() + br label %"$have_gas_303" + +"$have_gas_303": ; preds = %"$out_of_gas_302", %"$Succ_296" + %"$consume_304" = sub i64 %"$gasrem_300", 1 + store i64 %"$consume_304", i64* @_gasrem %res = alloca %Uint32 + %"$gasrem_305" = load i64, i64* @_gasrem + %"$gascmp_306" = icmp ugt i64 1, %"$gasrem_305" + br i1 %"$gascmp_306", label %"$out_of_gas_307", label %"$have_gas_308" + +"$out_of_gas_307": ; preds = %"$have_gas_303" + call void @_out_of_gas() + br label %"$have_gas_308" + +"$have_gas_308": ; preds = %"$out_of_gas_307", %"$have_gas_303" + %"$consume_309" = sub i64 %"$gasrem_305", 1 + store i64 %"$consume_309", i64* @_gasrem %"$fn_18" = alloca { %Uint32 (i8*, %TName_Nat*)*, i8* } - %"$fn_275" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %fn - %"$fn_fptr_276" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_275", 0 - %"$fn_envptr_277" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_275", 1 - %"$f0_278" = load %Uint32, %Uint32* %f0 - %"$fn_call_279" = call { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$fn_fptr_276"(i8* %"$fn_envptr_277", %Uint32 %"$f0_278") - store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$fn_call_279", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$fn_18" + %"$fn_310" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %fn + %"$fn_fptr_311" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_310", 0 + %"$fn_envptr_312" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_310", 1 + %"$f0_313" = load %Uint32, %Uint32* %f0 + %"$fn_call_314" = call { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$fn_fptr_311"(i8* %"$fn_envptr_312", %Uint32 %"$f0_313") + store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$fn_call_314", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$fn_18" %"$fn_19" = alloca %Uint32 - %"$$fn_18_280" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$fn_18" - %"$$fn_18_fptr_281" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fn_18_280", 0 - %"$$fn_18_envptr_282" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fn_18_280", 1 - %"$n1_283" = load %TName_Nat*, %TName_Nat** %n1 - %"$$fn_18_call_284" = call %Uint32 %"$$fn_18_fptr_281"(i8* %"$$fn_18_envptr_282", %TName_Nat* %"$n1_283") - store %Uint32 %"$$fn_18_call_284", %Uint32* %"$fn_19" - %"$$fn_19_285" = load %Uint32, %Uint32* %"$fn_19" - store %Uint32 %"$$fn_19_285", %Uint32* %res + %"$$fn_18_315" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$fn_18" + %"$$fn_18_fptr_316" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fn_18_315", 0 + %"$$fn_18_envptr_317" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fn_18_315", 1 + %"$n1_318" = load %TName_Nat*, %TName_Nat** %n1 + %"$$fn_18_call_319" = call %Uint32 %"$$fn_18_fptr_316"(i8* %"$$fn_18_envptr_317", %TName_Nat* %"$n1_318") + store %Uint32 %"$$fn_18_call_319", %Uint32* %"$fn_19" + %"$$fn_19_320" = load %Uint32, %Uint32* %"$fn_19" + store %Uint32 %"$$fn_19_320", %Uint32* %res + %"$gasrem_321" = load i64, i64* @_gasrem + %"$gascmp_322" = icmp ugt i64 1, %"$gasrem_321" + br i1 %"$gascmp_322", label %"$out_of_gas_323", label %"$have_gas_324" + +"$out_of_gas_323": ; preds = %"$have_gas_308" + call void @_out_of_gas() + br label %"$have_gas_324" + +"$have_gas_324": ; preds = %"$out_of_gas_323", %"$have_gas_308" + %"$consume_325" = sub i64 %"$gasrem_321", 1 + store i64 %"$consume_325", i64* @_gasrem %"$g_20" = alloca { %Uint32 (i8*, %TName_Nat*)*, i8* } - %"$g_286" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$g_fptr_287" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_286", 0 - %"$g_envptr_288" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_286", 1 - %"$res_289" = load %Uint32, %Uint32* %res - %"$g_call_290" = call { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$g_fptr_287"(i8* %"$g_envptr_288", %Uint32 %"$res_289") - store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$g_call_290", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$g_20" + %"$g_326" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$g_fptr_327" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_326", 0 + %"$g_envptr_328" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_326", 1 + %"$res_329" = load %Uint32, %Uint32* %res + %"$g_call_330" = call { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$g_fptr_327"(i8* %"$g_envptr_328", %Uint32 %"$res_329") + store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$g_call_330", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$g_20" %"$g_21" = alloca %Uint32 - %"$$g_20_291" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$g_20" - %"$$g_20_fptr_292" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$g_20_291", 0 - %"$$g_20_envptr_293" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$g_20_291", 1 - %"$n1_294" = load %TName_Nat*, %TName_Nat** %n1 - %"$$g_20_call_295" = call %Uint32 %"$$g_20_fptr_292"(i8* %"$$g_20_envptr_293", %TName_Nat* %"$n1_294") - store %Uint32 %"$$g_20_call_295", %Uint32* %"$g_21" - %"$$g_21_296" = load %Uint32, %Uint32* %"$g_21" - store %Uint32 %"$$g_21_296", %Uint32* %"$retval_101" - br label %"$matchsucc_267" - -"$Zero_297": ; preds = %entry - %"$n_298" = bitcast %TName_Nat* %1 to %CName_Zero* - %"$f0_299" = load %Uint32, %Uint32* %f0 - store %Uint32 %"$f0_299", %Uint32* %"$retval_101" - br label %"$matchsucc_267" - -"$empty_default_270": ; preds = %entry - br label %"$matchsucc_267" - -"$matchsucc_267": ; preds = %"$Zero_297", %"$Succ_271", %"$empty_default_270" - %"$$retval_101_300" = load %Uint32, %Uint32* %"$retval_101" - ret %Uint32 %"$$retval_101_300" + %"$$g_20_331" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$g_20" + %"$$g_20_fptr_332" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$g_20_331", 0 + %"$$g_20_envptr_333" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$g_20_331", 1 + %"$n1_334" = load %TName_Nat*, %TName_Nat** %n1 + %"$$g_20_call_335" = call %Uint32 %"$$g_20_fptr_332"(i8* %"$$g_20_envptr_333", %TName_Nat* %"$n1_334") + store %Uint32 %"$$g_20_call_335", %Uint32* %"$g_21" + %"$$g_21_336" = load %Uint32, %Uint32* %"$g_21" + store %Uint32 %"$$g_21_336", %Uint32* %"$retval_101" + br label %"$matchsucc_292" + +"$Zero_337": ; preds = %"$have_gas_290" + %"$n_338" = bitcast %TName_Nat* %1 to %CName_Zero* + %"$gasrem_339" = load i64, i64* @_gasrem + %"$gascmp_340" = icmp ugt i64 1, %"$gasrem_339" + br i1 %"$gascmp_340", label %"$out_of_gas_341", label %"$have_gas_342" + +"$out_of_gas_341": ; preds = %"$Zero_337" + call void @_out_of_gas() + br label %"$have_gas_342" + +"$have_gas_342": ; preds = %"$out_of_gas_341", %"$Zero_337" + %"$consume_343" = sub i64 %"$gasrem_339", 1 + store i64 %"$consume_343", i64* @_gasrem + %"$f0_344" = load %Uint32, %Uint32* %f0 + store %Uint32 %"$f0_344", %Uint32* %"$retval_101" + br label %"$matchsucc_292" + +"$empty_default_295": ; preds = %"$have_gas_290" + br label %"$matchsucc_292" + +"$matchsucc_292": ; preds = %"$have_gas_342", %"$have_gas_324", %"$empty_default_295" + %"$$retval_101_345" = load %Uint32, %Uint32* %"$retval_101" + ret %Uint32 %"$$retval_101_345" } define internal { %Uint32 (i8*, %TName_Nat*)*, i8* } @"$fundef_98"(%"$$fundef_98_env_231"* %0, %Uint32 %1) { entry: - %"$$fundef_98_env_fn_247" = getelementptr inbounds %"$$fundef_98_env_231", %"$$fundef_98_env_231"* %0, i32 0, i32 0 - %"$fn_envload_248" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_98_env_fn_247" + %"$$fundef_98_env_fn_262" = getelementptr inbounds %"$$fundef_98_env_231", %"$$fundef_98_env_231"* %0, i32 0, i32 0 + %"$fn_envload_263" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_98_env_fn_262" %fn = alloca { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_envload_248", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %fn - %"$$fundef_98_env_g_249" = getelementptr inbounds %"$$fundef_98_env_231", %"$$fundef_98_env_231"* %0, i32 0, i32 1 - %"$g_envload_250" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_98_env_g_249" + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_envload_263", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %fn + %"$$fundef_98_env_g_264" = getelementptr inbounds %"$$fundef_98_env_231", %"$$fundef_98_env_231"* %0, i32 0, i32 1 + %"$g_envload_265" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_98_env_g_264" %g = alloca { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_250", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_265", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g %"$retval_99" = alloca { %Uint32 (i8*, %TName_Nat*)*, i8* } - %"$$fundef_100_envp_251_load" = load i8*, i8** @_execptr - %"$$fundef_100_envp_251_salloc" = call i8* @_salloc(i8* %"$$fundef_100_envp_251_load", i64 40) - %"$$fundef_100_envp_251" = bitcast i8* %"$$fundef_100_envp_251_salloc" to %"$$fundef_100_env_230"* - %"$$fundef_100_env_voidp_253" = bitcast %"$$fundef_100_env_230"* %"$$fundef_100_envp_251" to i8* - %"$$fundef_100_cloval_254" = insertvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } { %Uint32 (i8*, %TName_Nat*)* bitcast (%Uint32 (%"$$fundef_100_env_230"*, %TName_Nat*)* @"$fundef_100" to %Uint32 (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_100_env_voidp_253", 1 - %"$$fundef_100_env_f0_255" = getelementptr inbounds %"$$fundef_100_env_230", %"$$fundef_100_env_230"* %"$$fundef_100_envp_251", i32 0, i32 0 - store %Uint32 %1, %Uint32* %"$$fundef_100_env_f0_255" - %"$$fundef_100_env_fn_256" = getelementptr inbounds %"$$fundef_100_env_230", %"$$fundef_100_env_230"* %"$$fundef_100_envp_251", i32 0, i32 1 - %"$fn_257" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %fn - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_257", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_100_env_fn_256" - %"$$fundef_100_env_g_258" = getelementptr inbounds %"$$fundef_100_env_230", %"$$fundef_100_env_230"* %"$$fundef_100_envp_251", i32 0, i32 2 - %"$g_259" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_259", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_100_env_g_258" - store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fundef_100_cloval_254", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$retval_99" - %"$$retval_99_260" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$retval_99" - ret { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$retval_99_260" + %"$gasrem_266" = load i64, i64* @_gasrem + %"$gascmp_267" = icmp ugt i64 1, %"$gasrem_266" + br i1 %"$gascmp_267", label %"$out_of_gas_268", label %"$have_gas_269" + +"$out_of_gas_268": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_269" + +"$have_gas_269": ; preds = %"$out_of_gas_268", %entry + %"$consume_270" = sub i64 %"$gasrem_266", 1 + store i64 %"$consume_270", i64* @_gasrem + %"$$fundef_100_envp_271_load" = load i8*, i8** @_execptr + %"$$fundef_100_envp_271_salloc" = call i8* @_salloc(i8* %"$$fundef_100_envp_271_load", i64 40) + %"$$fundef_100_envp_271" = bitcast i8* %"$$fundef_100_envp_271_salloc" to %"$$fundef_100_env_230"* + %"$$fundef_100_env_voidp_273" = bitcast %"$$fundef_100_env_230"* %"$$fundef_100_envp_271" to i8* + %"$$fundef_100_cloval_274" = insertvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } { %Uint32 (i8*, %TName_Nat*)* bitcast (%Uint32 (%"$$fundef_100_env_230"*, %TName_Nat*)* @"$fundef_100" to %Uint32 (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_100_env_voidp_273", 1 + %"$$fundef_100_env_f0_275" = getelementptr inbounds %"$$fundef_100_env_230", %"$$fundef_100_env_230"* %"$$fundef_100_envp_271", i32 0, i32 0 + store %Uint32 %1, %Uint32* %"$$fundef_100_env_f0_275" + %"$$fundef_100_env_fn_276" = getelementptr inbounds %"$$fundef_100_env_230", %"$$fundef_100_env_230"* %"$$fundef_100_envp_271", i32 0, i32 1 + %"$fn_277" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %fn + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_277", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_100_env_fn_276" + %"$$fundef_100_env_g_278" = getelementptr inbounds %"$$fundef_100_env_230", %"$$fundef_100_env_230"* %"$$fundef_100_envp_271", i32 0, i32 2 + %"$g_279" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_279", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_100_env_g_278" + store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fundef_100_cloval_274", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$retval_99" + %"$$retval_99_280" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$retval_99" + ret { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$retval_99_280" } define internal { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } @"$fundef_96"(%"$$fundef_96_env_232"* %0, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %1) { entry: %"$retval_97" = alloca { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } - %"$$fundef_98_envp_238_load" = load i8*, i8** @_execptr - %"$$fundef_98_envp_238_salloc" = call i8* @_salloc(i8* %"$$fundef_98_envp_238_load", i64 32) - %"$$fundef_98_envp_238" = bitcast i8* %"$$fundef_98_envp_238_salloc" to %"$$fundef_98_env_231"* - %"$$fundef_98_env_voidp_240" = bitcast %"$$fundef_98_env_231"* %"$$fundef_98_envp_238" to i8* - %"$$fundef_98_cloval_241" = insertvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_Nat*)*, i8* } (%"$$fundef_98_env_231"*, %Uint32)* @"$fundef_98" to { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_98_env_voidp_240", 1 + %"$gasrem_243" = load i64, i64* @_gasrem + %"$gascmp_244" = icmp ugt i64 1, %"$gasrem_243" + br i1 %"$gascmp_244", label %"$out_of_gas_245", label %"$have_gas_246" + +"$out_of_gas_245": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_246" + +"$have_gas_246": ; preds = %"$out_of_gas_245", %entry + %"$consume_247" = sub i64 %"$gasrem_243", 1 + store i64 %"$consume_247", i64* @_gasrem + %"$gasrem_248" = load i64, i64* @_gasrem + %"$gascmp_249" = icmp ugt i64 1, %"$gasrem_248" + br i1 %"$gascmp_249", label %"$out_of_gas_250", label %"$have_gas_251" + +"$out_of_gas_250": ; preds = %"$have_gas_246" + call void @_out_of_gas() + br label %"$have_gas_251" + +"$have_gas_251": ; preds = %"$out_of_gas_250", %"$have_gas_246" + %"$consume_252" = sub i64 %"$gasrem_248", 1 + store i64 %"$consume_252", i64* @_gasrem + %"$$fundef_98_envp_253_load" = load i8*, i8** @_execptr + %"$$fundef_98_envp_253_salloc" = call i8* @_salloc(i8* %"$$fundef_98_envp_253_load", i64 32) + %"$$fundef_98_envp_253" = bitcast i8* %"$$fundef_98_envp_253_salloc" to %"$$fundef_98_env_231"* + %"$$fundef_98_env_voidp_255" = bitcast %"$$fundef_98_env_231"* %"$$fundef_98_envp_253" to i8* + %"$$fundef_98_cloval_256" = insertvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_Nat*)*, i8* } (%"$$fundef_98_env_231"*, %Uint32)* @"$fundef_98" to { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_98_env_voidp_255", 1 %g = alloca { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_98_cloval_241", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$$fundef_98_env_fn_242" = getelementptr inbounds %"$$fundef_98_env_231", %"$$fundef_98_env_231"* %"$$fundef_98_envp_238", i32 0, i32 0 - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %1, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_98_env_fn_242" - %"$$fundef_98_env_g_243" = getelementptr inbounds %"$$fundef_98_env_231", %"$$fundef_98_env_231"* %"$$fundef_98_envp_238", i32 0, i32 1 - %"$g_244" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_244", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_98_env_g_243" - %"$g_245" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_245", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_97" - %"$$retval_97_246" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_97" - ret { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_97_246" + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_98_cloval_256", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$$fundef_98_env_fn_257" = getelementptr inbounds %"$$fundef_98_env_231", %"$$fundef_98_env_231"* %"$$fundef_98_envp_253", i32 0, i32 0 + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %1, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_98_env_fn_257" + %"$$fundef_98_env_g_258" = getelementptr inbounds %"$$fundef_98_env_231", %"$$fundef_98_env_231"* %"$$fundef_98_envp_253", i32 0, i32 1 + %"$g_259" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_259", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_98_env_g_258" + %"$g_260" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_260", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_97" + %"$$retval_97_261" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_97" + ret { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_97_261" } define internal { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } @"$fundef_94"(%"$$fundef_94_env_233"* %0) { entry: %"$retval_95" = alloca { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_234" = load i64, i64* @_gasrem + %"$gascmp_235" = icmp ugt i64 1, %"$gasrem_234" + br i1 %"$gascmp_235", label %"$out_of_gas_236", label %"$have_gas_237" + +"$out_of_gas_236": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_237" + +"$have_gas_237": ; preds = %"$out_of_gas_236", %entry + %"$consume_238" = sub i64 %"$gasrem_234", 1 + store i64 %"$consume_238", i64* @_gasrem store { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })* bitcast ({ { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (%"$$fundef_96_env_232"*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })* @"$fundef_96" to { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*), i8* null }, { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_95" - %"$$retval_95_237" = load { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_95" - ret { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_95_237" + %"$$retval_95_242" = load { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_95" + ret { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_95_242" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) declare %Uint32 @_add_Uint32(%Uint32, %Uint32) @@ -1195,779 +1891,2242 @@ entry: ret void } -define internal %Uint32 @"$scilla_expr_730"(i8* %0) { +define internal %Uint32 @"$scilla_expr_1045"(i8* %0) { entry: - %"$dyndisp_table_740_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_740_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_740_salloc_load", i64 48) - %"$dyndisp_table_740_salloc" = bitcast i8* %"$dyndisp_table_740_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_740" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_740_salloc" to { i8*, i8* }* - %"$dyndisp_gep_741" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_740", i32 0 - %"$dyndisp_pcast_742" = bitcast { i8*, i8* }* %"$dyndisp_gep_741" to { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_94_env_233"*)* @"$fundef_94" to { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_742" - %"$dyndisp_gep_743" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_740", i32 1 - %"$dyndisp_pcast_744" = bitcast { i8*, i8* }* %"$dyndisp_gep_743" to { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)* bitcast ({ { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (%"$$fundef_102_env_229"*)* @"$fundef_102" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*), i8* null }, { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_744" - %"$dyndisp_gep_745" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_740", i32 2 - %"$dyndisp_pcast_746" = bitcast { i8*, i8* }* %"$dyndisp_gep_745" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (%"$$fundef_110_env_225"*)* @"$fundef_110" to { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_746" - store { i8*, i8* }* %"$dyndisp_table_740", { i8*, i8* }** @nat_fold - %"$$fundef_118_envp_747_load" = load i8*, i8** @_execptr - %"$$fundef_118_envp_747_salloc" = call i8* @_salloc(i8* %"$$fundef_118_envp_747_load", i64 8) - %"$$fundef_118_envp_747" = bitcast i8* %"$$fundef_118_envp_747_salloc" to %"$$fundef_118_env_221"* - %"$$fundef_118_env_voidp_749" = bitcast %"$$fundef_118_env_221"* %"$$fundef_118_envp_747" to i8* - %"$$fundef_118_cloval_750" = insertvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } { %Uint32 (i8*, %TName_Nat*)* bitcast (%Uint32 (%"$$fundef_118_env_221"*, %TName_Nat*)* @"$fundef_118" to %Uint32 (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_118_env_voidp_749", 1 - %"$$fundef_118_env_nat_fold_751" = getelementptr inbounds %"$$fundef_118_env_221", %"$$fundef_118_env_221"* %"$$fundef_118_envp_747", i32 0, i32 0 - %"$nat_fold_752" = load { i8*, i8* }*, { i8*, i8* }** @nat_fold - store { i8*, i8* }* %"$nat_fold_752", { i8*, i8* }** %"$$fundef_118_env_nat_fold_751" - store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fundef_118_cloval_750", { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$gasrem_1046" = load i64, i64* @_gasrem + %"$gascmp_1047" = icmp ugt i64 1, %"$gasrem_1046" + br i1 %"$gascmp_1047", label %"$out_of_gas_1048", label %"$have_gas_1049" + +"$out_of_gas_1048": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1049" + +"$have_gas_1049": ; preds = %"$out_of_gas_1048", %entry + %"$consume_1050" = sub i64 %"$gasrem_1046", 1 + store i64 %"$consume_1050", i64* @_gasrem + %"$dyndisp_table_1060_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_1060_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_1060_salloc_load", i64 48) + %"$dyndisp_table_1060_salloc" = bitcast i8* %"$dyndisp_table_1060_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_1060" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_1060_salloc" to { i8*, i8* }* + %"$dyndisp_gep_1061" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_1060", i32 0 + %"$dyndisp_pcast_1062" = bitcast { i8*, i8* }* %"$dyndisp_gep_1061" to { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_94_env_233"*)* @"$fundef_94" to { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_1062" + %"$dyndisp_gep_1063" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_1060", i32 1 + %"$dyndisp_pcast_1064" = bitcast { i8*, i8* }* %"$dyndisp_gep_1063" to { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)* bitcast ({ { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (%"$$fundef_102_env_229"*)* @"$fundef_102" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*), i8* null }, { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_1064" + %"$dyndisp_gep_1065" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_1060", i32 2 + %"$dyndisp_pcast_1066" = bitcast { i8*, i8* }* %"$dyndisp_gep_1065" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (%"$$fundef_110_env_225"*)* @"$fundef_110" to { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_1066" + store { i8*, i8* }* %"$dyndisp_table_1060", { i8*, i8* }** @nat_fold + %"$gasrem_1067" = load i64, i64* @_gasrem + %"$gascmp_1068" = icmp ugt i64 1, %"$gasrem_1067" + br i1 %"$gascmp_1068", label %"$out_of_gas_1069", label %"$have_gas_1070" + +"$out_of_gas_1069": ; preds = %"$have_gas_1049" + call void @_out_of_gas() + br label %"$have_gas_1070" + +"$have_gas_1070": ; preds = %"$out_of_gas_1069", %"$have_gas_1049" + %"$consume_1071" = sub i64 %"$gasrem_1067", 1 + store i64 %"$consume_1071", i64* @_gasrem + %"$$fundef_118_envp_1072_load" = load i8*, i8** @_execptr + %"$$fundef_118_envp_1072_salloc" = call i8* @_salloc(i8* %"$$fundef_118_envp_1072_load", i64 8) + %"$$fundef_118_envp_1072" = bitcast i8* %"$$fundef_118_envp_1072_salloc" to %"$$fundef_118_env_221"* + %"$$fundef_118_env_voidp_1074" = bitcast %"$$fundef_118_env_221"* %"$$fundef_118_envp_1072" to i8* + %"$$fundef_118_cloval_1075" = insertvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } { %Uint32 (i8*, %TName_Nat*)* bitcast (%Uint32 (%"$$fundef_118_env_221"*, %TName_Nat*)* @"$fundef_118" to %Uint32 (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_118_env_voidp_1074", 1 + %"$$fundef_118_env_nat_fold_1076" = getelementptr inbounds %"$$fundef_118_env_221", %"$$fundef_118_env_221"* %"$$fundef_118_envp_1072", i32 0, i32 0 + %"$nat_fold_1077" = load { i8*, i8* }*, { i8*, i8* }** @nat_fold + store { i8*, i8* }* %"$nat_fold_1077", { i8*, i8* }** %"$$fundef_118_env_nat_fold_1076" + store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fundef_118_cloval_1075", { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int %"$expr_124" = alloca %Uint32 + %"$gasrem_1078" = load i64, i64* @_gasrem + %"$gascmp_1079" = icmp ugt i64 1, %"$gasrem_1078" + br i1 %"$gascmp_1079", label %"$out_of_gas_1080", label %"$have_gas_1081" + +"$out_of_gas_1080": ; preds = %"$have_gas_1070" + call void @_out_of_gas() + br label %"$have_gas_1081" + +"$have_gas_1081": ; preds = %"$out_of_gas_1080", %"$have_gas_1070" + %"$consume_1082" = sub i64 %"$gasrem_1078", 1 + store i64 %"$consume_1082", i64* @_gasrem %nat_succ = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } + %"$gasrem_1083" = load i64, i64* @_gasrem + %"$gascmp_1084" = icmp ugt i64 1, %"$gasrem_1083" + br i1 %"$gascmp_1084", label %"$out_of_gas_1085", label %"$have_gas_1086" + +"$out_of_gas_1085": ; preds = %"$have_gas_1081" + call void @_out_of_gas() + br label %"$have_gas_1086" + +"$have_gas_1086": ; preds = %"$out_of_gas_1085", %"$have_gas_1081" + %"$consume_1087" = sub i64 %"$gasrem_1083", 1 + store i64 %"$consume_1087", i64* @_gasrem store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } { %TName_Nat* (i8*, %TName_Nat*)* bitcast (%TName_Nat* (%"$$fundef_125_env_218"*, %TName_Nat*)* @"$fundef_125" to %TName_Nat* (i8*, %TName_Nat*)*), i8* null }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %nat_succ + %"$gasrem_1091" = load i64, i64* @_gasrem + %"$gascmp_1092" = icmp ugt i64 1, %"$gasrem_1091" + br i1 %"$gascmp_1092", label %"$out_of_gas_1093", label %"$have_gas_1094" + +"$out_of_gas_1093": ; preds = %"$have_gas_1086" + call void @_out_of_gas() + br label %"$have_gas_1094" + +"$have_gas_1094": ; preds = %"$out_of_gas_1093", %"$have_gas_1086" + %"$consume_1095" = sub i64 %"$gasrem_1091", 1 + store i64 %"$consume_1095", i64* @_gasrem %nat_iter = alloca { i8*, i8* }* - %"$$fundef_127_envp_756_load" = load i8*, i8** @_execptr - %"$$fundef_127_envp_756_salloc" = call i8* @_salloc(i8* %"$$fundef_127_envp_756_load", i64 8) - %"$$fundef_127_envp_756" = bitcast i8* %"$$fundef_127_envp_756_salloc" to %"$$fundef_127_env_217"* - %"$$fundef_127_env_voidp_758" = bitcast %"$$fundef_127_env_217"* %"$$fundef_127_envp_756" to i8* - %"$$fundef_127_cloval_759" = insertvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)* bitcast ({ { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (%"$$fundef_127_env_217"*)* @"$fundef_127" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_127_env_voidp_758", 1 - %"$$fundef_127_env_nat_fold_760" = getelementptr inbounds %"$$fundef_127_env_217", %"$$fundef_127_env_217"* %"$$fundef_127_envp_756", i32 0, i32 0 - %"$nat_fold_761" = load { i8*, i8* }*, { i8*, i8* }** @nat_fold - store { i8*, i8* }* %"$nat_fold_761", { i8*, i8* }** %"$$fundef_127_env_nat_fold_760" - %"$$fundef_139_env_voidp_763" = bitcast %"$$fundef_127_env_217"* %"$$fundef_127_envp_756" to i8* - %"$$fundef_139_cloval_764" = insertvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (%"$$fundef_139_env_211"*)* @"$fundef_139" to { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_139_env_voidp_763", 1 - %"$dyndisp_table_765_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_765_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_765_salloc_load", i64 48) - %"$dyndisp_table_765_salloc" = bitcast i8* %"$dyndisp_table_765_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_765" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_765_salloc" to { i8*, i8* }* - %"$dyndisp_gep_766" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_765", i32 1 - %"$dyndisp_pcast_767" = bitcast { i8*, i8* }* %"$dyndisp_gep_766" to { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_127_cloval_759", { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_767" - %"$dyndisp_gep_768" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_765", i32 2 - %"$dyndisp_pcast_769" = bitcast { i8*, i8* }* %"$dyndisp_gep_768" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_139_cloval_764", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_769" - store { i8*, i8* }* %"$dyndisp_table_765", { i8*, i8* }** %nat_iter + %"$gasrem_1096" = load i64, i64* @_gasrem + %"$gascmp_1097" = icmp ugt i64 1, %"$gasrem_1096" + br i1 %"$gascmp_1097", label %"$out_of_gas_1098", label %"$have_gas_1099" + +"$out_of_gas_1098": ; preds = %"$have_gas_1094" + call void @_out_of_gas() + br label %"$have_gas_1099" + +"$have_gas_1099": ; preds = %"$out_of_gas_1098", %"$have_gas_1094" + %"$consume_1100" = sub i64 %"$gasrem_1096", 1 + store i64 %"$consume_1100", i64* @_gasrem + %"$$fundef_127_envp_1101_load" = load i8*, i8** @_execptr + %"$$fundef_127_envp_1101_salloc" = call i8* @_salloc(i8* %"$$fundef_127_envp_1101_load", i64 8) + %"$$fundef_127_envp_1101" = bitcast i8* %"$$fundef_127_envp_1101_salloc" to %"$$fundef_127_env_217"* + %"$$fundef_127_env_voidp_1103" = bitcast %"$$fundef_127_env_217"* %"$$fundef_127_envp_1101" to i8* + %"$$fundef_127_cloval_1104" = insertvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)* bitcast ({ { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (%"$$fundef_127_env_217"*)* @"$fundef_127" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_127_env_voidp_1103", 1 + %"$$fundef_127_env_nat_fold_1105" = getelementptr inbounds %"$$fundef_127_env_217", %"$$fundef_127_env_217"* %"$$fundef_127_envp_1101", i32 0, i32 0 + %"$nat_fold_1106" = load { i8*, i8* }*, { i8*, i8* }** @nat_fold + store { i8*, i8* }* %"$nat_fold_1106", { i8*, i8* }** %"$$fundef_127_env_nat_fold_1105" + %"$$fundef_139_env_voidp_1108" = bitcast %"$$fundef_127_env_217"* %"$$fundef_127_envp_1101" to i8* + %"$$fundef_139_cloval_1109" = insertvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (%"$$fundef_139_env_211"*)* @"$fundef_139" to { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_139_env_voidp_1108", 1 + %"$dyndisp_table_1110_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_1110_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_1110_salloc_load", i64 48) + %"$dyndisp_table_1110_salloc" = bitcast i8* %"$dyndisp_table_1110_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_1110" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_1110_salloc" to { i8*, i8* }* + %"$dyndisp_gep_1111" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_1110", i32 1 + %"$dyndisp_pcast_1112" = bitcast { i8*, i8* }* %"$dyndisp_gep_1111" to { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_127_cloval_1104", { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_1112" + %"$dyndisp_gep_1113" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_1110", i32 2 + %"$dyndisp_pcast_1114" = bitcast { i8*, i8* }* %"$dyndisp_gep_1113" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_139_cloval_1109", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_1114" + store { i8*, i8* }* %"$dyndisp_table_1110", { i8*, i8* }** %nat_iter + %"$gasrem_1115" = load i64, i64* @_gasrem + %"$gascmp_1116" = icmp ugt i64 1, %"$gasrem_1115" + br i1 %"$gascmp_1116", label %"$out_of_gas_1117", label %"$have_gas_1118" + +"$out_of_gas_1117": ; preds = %"$have_gas_1099" + call void @_out_of_gas() + br label %"$have_gas_1118" + +"$have_gas_1118": ; preds = %"$out_of_gas_1117", %"$have_gas_1099" + %"$consume_1119" = sub i64 %"$gasrem_1115", 1 + store i64 %"$consume_1119", i64* @_gasrem %ackermann = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } + %"$gasrem_1120" = load i64, i64* @_gasrem + %"$gascmp_1121" = icmp ugt i64 1, %"$gasrem_1120" + br i1 %"$gascmp_1121", label %"$out_of_gas_1122", label %"$have_gas_1123" + +"$out_of_gas_1122": ; preds = %"$have_gas_1118" + call void @_out_of_gas() + br label %"$have_gas_1123" + +"$have_gas_1123": ; preds = %"$out_of_gas_1122", %"$have_gas_1118" + %"$consume_1124" = sub i64 %"$gasrem_1120", 1 + store i64 %"$consume_1124", i64* @_gasrem %iter_nat = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - %"$nat_iter_770" = load { i8*, i8* }*, { i8*, i8* }** %nat_iter - %"$nat_iter_771" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_iter_770", i32 2 - %"$nat_iter_772" = bitcast { i8*, i8* }* %"$nat_iter_771" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* - %"$nat_iter_773" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_iter_772" - %"$nat_iter_fptr_774" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_iter_773", 0 - %"$nat_iter_envptr_775" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_iter_773", 1 - %"$nat_iter_call_776" = call { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$nat_iter_fptr_774"(i8* %"$nat_iter_envptr_775") - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$nat_iter_call_776", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat + %"$gasrem_1125" = load i64, i64* @_gasrem + %"$gascmp_1126" = icmp ugt i64 1, %"$gasrem_1125" + br i1 %"$gascmp_1126", label %"$out_of_gas_1127", label %"$have_gas_1128" + +"$out_of_gas_1127": ; preds = %"$have_gas_1123" + call void @_out_of_gas() + br label %"$have_gas_1128" + +"$have_gas_1128": ; preds = %"$out_of_gas_1127", %"$have_gas_1123" + %"$consume_1129" = sub i64 %"$gasrem_1125", 1 + store i64 %"$consume_1129", i64* @_gasrem + %"$nat_iter_1130" = load { i8*, i8* }*, { i8*, i8* }** %nat_iter + %"$nat_iter_1131" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_iter_1130", i32 2 + %"$nat_iter_1132" = bitcast { i8*, i8* }* %"$nat_iter_1131" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* + %"$nat_iter_1133" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_iter_1132" + %"$nat_iter_fptr_1134" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_iter_1133", 0 + %"$nat_iter_envptr_1135" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_iter_1133", 1 + %"$nat_iter_call_1136" = call { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$nat_iter_fptr_1134"(i8* %"$nat_iter_envptr_1135") + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$nat_iter_call_1136", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat + %"$gasrem_1137" = load i64, i64* @_gasrem + %"$gascmp_1138" = icmp ugt i64 1, %"$gasrem_1137" + br i1 %"$gascmp_1138", label %"$out_of_gas_1139", label %"$have_gas_1140" + +"$out_of_gas_1139": ; preds = %"$have_gas_1128" + call void @_out_of_gas() + br label %"$have_gas_1140" + +"$have_gas_1140": ; preds = %"$out_of_gas_1139", %"$have_gas_1128" + %"$consume_1141" = sub i64 %"$gasrem_1137", 1 + store i64 %"$consume_1141", i64* @_gasrem %iter_nat_nat = alloca { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } - %"$nat_iter_777" = load { i8*, i8* }*, { i8*, i8* }** %nat_iter - %"$nat_iter_778" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_iter_777", i32 1 - %"$nat_iter_779" = bitcast { i8*, i8* }* %"$nat_iter_778" to { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* - %"$nat_iter_780" = load { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }, { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_iter_779" - %"$nat_iter_fptr_781" = extractvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$nat_iter_780", 0 - %"$nat_iter_envptr_782" = extractvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$nat_iter_780", 1 - %"$nat_iter_call_783" = call { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$nat_iter_fptr_781"(i8* %"$nat_iter_envptr_782") - store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$nat_iter_call_783", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %iter_nat_nat + %"$gasrem_1142" = load i64, i64* @_gasrem + %"$gascmp_1143" = icmp ugt i64 1, %"$gasrem_1142" + br i1 %"$gascmp_1143", label %"$out_of_gas_1144", label %"$have_gas_1145" + +"$out_of_gas_1144": ; preds = %"$have_gas_1140" + call void @_out_of_gas() + br label %"$have_gas_1145" + +"$have_gas_1145": ; preds = %"$out_of_gas_1144", %"$have_gas_1140" + %"$consume_1146" = sub i64 %"$gasrem_1142", 1 + store i64 %"$consume_1146", i64* @_gasrem + %"$nat_iter_1147" = load { i8*, i8* }*, { i8*, i8* }** %nat_iter + %"$nat_iter_1148" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_iter_1147", i32 1 + %"$nat_iter_1149" = bitcast { i8*, i8* }* %"$nat_iter_1148" to { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* + %"$nat_iter_1150" = load { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }, { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_iter_1149" + %"$nat_iter_fptr_1151" = extractvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$nat_iter_1150", 0 + %"$nat_iter_envptr_1152" = extractvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$nat_iter_1150", 1 + %"$nat_iter_call_1153" = call { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$nat_iter_fptr_1151"(i8* %"$nat_iter_envptr_1152") + store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$nat_iter_call_1153", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %iter_nat_nat + %"$gasrem_1154" = load i64, i64* @_gasrem + %"$gascmp_1155" = icmp ugt i64 1, %"$gasrem_1154" + br i1 %"$gascmp_1155", label %"$out_of_gas_1156", label %"$have_gas_1157" + +"$out_of_gas_1156": ; preds = %"$have_gas_1145" + call void @_out_of_gas() + br label %"$have_gas_1157" + +"$have_gas_1157": ; preds = %"$out_of_gas_1156", %"$have_gas_1145" + %"$consume_1158" = sub i64 %"$gasrem_1154", 1 + store i64 %"$consume_1158", i64* @_gasrem %zero = alloca %TName_Nat* - %"$adtval_784_load" = load i8*, i8** @_execptr - %"$adtval_784_salloc" = call i8* @_salloc(i8* %"$adtval_784_load", i64 1) - %"$adtval_784" = bitcast i8* %"$adtval_784_salloc" to %CName_Zero* - %"$adtgep_785" = getelementptr inbounds %CName_Zero, %CName_Zero* %"$adtval_784", i32 0, i32 0 - store i8 0, i8* %"$adtgep_785" - %"$adtptr_786" = bitcast %CName_Zero* %"$adtval_784" to %TName_Nat* - store %TName_Nat* %"$adtptr_786", %TName_Nat** %zero + %"$gasrem_1159" = load i64, i64* @_gasrem + %"$gascmp_1160" = icmp ugt i64 1, %"$gasrem_1159" + br i1 %"$gascmp_1160", label %"$out_of_gas_1161", label %"$have_gas_1162" + +"$out_of_gas_1161": ; preds = %"$have_gas_1157" + call void @_out_of_gas() + br label %"$have_gas_1162" + +"$have_gas_1162": ; preds = %"$out_of_gas_1161", %"$have_gas_1157" + %"$consume_1163" = sub i64 %"$gasrem_1159", 1 + store i64 %"$consume_1163", i64* @_gasrem + %"$adtval_1164_load" = load i8*, i8** @_execptr + %"$adtval_1164_salloc" = call i8* @_salloc(i8* %"$adtval_1164_load", i64 1) + %"$adtval_1164" = bitcast i8* %"$adtval_1164_salloc" to %CName_Zero* + %"$adtgep_1165" = getelementptr inbounds %CName_Zero, %CName_Zero* %"$adtval_1164", i32 0, i32 0 + store i8 0, i8* %"$adtgep_1165" + %"$adtptr_1166" = bitcast %CName_Zero* %"$adtval_1164" to %TName_Nat* + store %TName_Nat* %"$adtptr_1166", %TName_Nat** %zero + %"$gasrem_1167" = load i64, i64* @_gasrem + %"$gascmp_1168" = icmp ugt i64 1, %"$gasrem_1167" + br i1 %"$gascmp_1168", label %"$out_of_gas_1169", label %"$have_gas_1170" + +"$out_of_gas_1169": ; preds = %"$have_gas_1162" + call void @_out_of_gas() + br label %"$have_gas_1170" + +"$have_gas_1170": ; preds = %"$out_of_gas_1169", %"$have_gas_1162" + %"$consume_1171" = sub i64 %"$gasrem_1167", 1 + store i64 %"$consume_1171", i64* @_gasrem %one = alloca %TName_Nat* - %"$zero_787" = load %TName_Nat*, %TName_Nat** %zero - %"$adtval_788_load" = load i8*, i8** @_execptr - %"$adtval_788_salloc" = call i8* @_salloc(i8* %"$adtval_788_load", i64 9) - %"$adtval_788" = bitcast i8* %"$adtval_788_salloc" to %CName_Succ* - %"$adtgep_789" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_788", i32 0, i32 0 - store i8 1, i8* %"$adtgep_789" - %"$adtgep_790" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_788", i32 0, i32 1 - store %TName_Nat* %"$zero_787", %TName_Nat** %"$adtgep_790" - %"$adtptr_791" = bitcast %CName_Succ* %"$adtval_788" to %TName_Nat* - store %TName_Nat* %"$adtptr_791", %TName_Nat** %one + %"$gasrem_1172" = load i64, i64* @_gasrem + %"$gascmp_1173" = icmp ugt i64 1, %"$gasrem_1172" + br i1 %"$gascmp_1173", label %"$out_of_gas_1174", label %"$have_gas_1175" + +"$out_of_gas_1174": ; preds = %"$have_gas_1170" + call void @_out_of_gas() + br label %"$have_gas_1175" + +"$have_gas_1175": ; preds = %"$out_of_gas_1174", %"$have_gas_1170" + %"$consume_1176" = sub i64 %"$gasrem_1172", 1 + store i64 %"$consume_1176", i64* @_gasrem + %"$zero_1177" = load %TName_Nat*, %TName_Nat** %zero + %"$adtval_1178_load" = load i8*, i8** @_execptr + %"$adtval_1178_salloc" = call i8* @_salloc(i8* %"$adtval_1178_load", i64 9) + %"$adtval_1178" = bitcast i8* %"$adtval_1178_salloc" to %CName_Succ* + %"$adtgep_1179" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_1178", i32 0, i32 0 + store i8 1, i8* %"$adtgep_1179" + %"$adtgep_1180" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_1178", i32 0, i32 1 + store %TName_Nat* %"$zero_1177", %TName_Nat** %"$adtgep_1180" + %"$adtptr_1181" = bitcast %CName_Succ* %"$adtval_1178" to %TName_Nat* + store %TName_Nat* %"$adtptr_1181", %TName_Nat** %one + %"$gasrem_1182" = load i64, i64* @_gasrem + %"$gascmp_1183" = icmp ugt i64 1, %"$gasrem_1182" + br i1 %"$gascmp_1183", label %"$out_of_gas_1184", label %"$have_gas_1185" + +"$out_of_gas_1184": ; preds = %"$have_gas_1175" + call void @_out_of_gas() + br label %"$have_gas_1185" + +"$have_gas_1185": ; preds = %"$out_of_gas_1184", %"$have_gas_1175" + %"$consume_1186" = sub i64 %"$gasrem_1182", 1 + store i64 %"$consume_1186", i64* @_gasrem %f = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - %"$$fundef_151_envp_792_load" = load i8*, i8** @_execptr - %"$$fundef_151_envp_792_salloc" = call i8* @_salloc(i8* %"$$fundef_151_envp_792_load", i64 24) - %"$$fundef_151_envp_792" = bitcast i8* %"$$fundef_151_envp_792_salloc" to %"$$fundef_151_env_205"* - %"$$fundef_151_env_voidp_794" = bitcast %"$$fundef_151_env_205"* %"$$fundef_151_envp_792" to i8* - %"$$fundef_151_cloval_795" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_151_env_205"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_151" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_151_env_voidp_794", 1 - %"$$fundef_151_env_iter_nat_796" = getelementptr inbounds %"$$fundef_151_env_205", %"$$fundef_151_env_205"* %"$$fundef_151_envp_792", i32 0, i32 0 - %"$iter_nat_797" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_797", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_151_env_iter_nat_796" - %"$$fundef_151_env_one_798" = getelementptr inbounds %"$$fundef_151_env_205", %"$$fundef_151_env_205"* %"$$fundef_151_envp_792", i32 0, i32 1 - %"$one_799" = load %TName_Nat*, %TName_Nat** %one - store %TName_Nat* %"$one_799", %TName_Nat** %"$$fundef_151_env_one_798" - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_151_cloval_795", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - %"$$fundef_155_envp_800_load" = load i8*, i8** @_execptr - %"$$fundef_155_envp_800_salloc" = call i8* @_salloc(i8* %"$$fundef_155_envp_800_load", i64 48) - %"$$fundef_155_envp_800" = bitcast i8* %"$$fundef_155_envp_800_salloc" to %"$$fundef_155_env_203"* - %"$$fundef_155_env_voidp_802" = bitcast %"$$fundef_155_env_203"* %"$$fundef_155_envp_800" to i8* - %"$$fundef_155_cloval_803" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_155_env_203"*, %TName_Nat*)* @"$fundef_155" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_155_env_voidp_802", 1 - %"$$fundef_155_env_f_804" = getelementptr inbounds %"$$fundef_155_env_203", %"$$fundef_155_env_203"* %"$$fundef_155_envp_800", i32 0, i32 0 - %"$f_805" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_805", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_155_env_f_804" - %"$$fundef_155_env_iter_nat_nat_806" = getelementptr inbounds %"$$fundef_155_env_203", %"$$fundef_155_env_203"* %"$$fundef_155_envp_800", i32 0, i32 1 - %"$iter_nat_nat_807" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %iter_nat_nat - store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$iter_nat_nat_807", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$$fundef_155_env_iter_nat_nat_806" - %"$$fundef_155_env_nat_succ_808" = getelementptr inbounds %"$$fundef_155_env_203", %"$$fundef_155_env_203"* %"$$fundef_155_envp_800", i32 0, i32 2 - %"$nat_succ_809" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %nat_succ - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$nat_succ_809", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_155_env_nat_succ_808" - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_155_cloval_803", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$gasrem_1187" = load i64, i64* @_gasrem + %"$gascmp_1188" = icmp ugt i64 1, %"$gasrem_1187" + br i1 %"$gascmp_1188", label %"$out_of_gas_1189", label %"$have_gas_1190" + +"$out_of_gas_1189": ; preds = %"$have_gas_1185" + call void @_out_of_gas() + br label %"$have_gas_1190" + +"$have_gas_1190": ; preds = %"$out_of_gas_1189", %"$have_gas_1185" + %"$consume_1191" = sub i64 %"$gasrem_1187", 1 + store i64 %"$consume_1191", i64* @_gasrem + %"$$fundef_151_envp_1192_load" = load i8*, i8** @_execptr + %"$$fundef_151_envp_1192_salloc" = call i8* @_salloc(i8* %"$$fundef_151_envp_1192_load", i64 24) + %"$$fundef_151_envp_1192" = bitcast i8* %"$$fundef_151_envp_1192_salloc" to %"$$fundef_151_env_205"* + %"$$fundef_151_env_voidp_1194" = bitcast %"$$fundef_151_env_205"* %"$$fundef_151_envp_1192" to i8* + %"$$fundef_151_cloval_1195" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_151_env_205"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_151" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_151_env_voidp_1194", 1 + %"$$fundef_151_env_iter_nat_1196" = getelementptr inbounds %"$$fundef_151_env_205", %"$$fundef_151_env_205"* %"$$fundef_151_envp_1192", i32 0, i32 0 + %"$iter_nat_1197" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_1197", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_151_env_iter_nat_1196" + %"$$fundef_151_env_one_1198" = getelementptr inbounds %"$$fundef_151_env_205", %"$$fundef_151_env_205"* %"$$fundef_151_envp_1192", i32 0, i32 1 + %"$one_1199" = load %TName_Nat*, %TName_Nat** %one + store %TName_Nat* %"$one_1199", %TName_Nat** %"$$fundef_151_env_one_1198" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_151_cloval_1195", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + %"$gasrem_1200" = load i64, i64* @_gasrem + %"$gascmp_1201" = icmp ugt i64 1, %"$gasrem_1200" + br i1 %"$gascmp_1201", label %"$out_of_gas_1202", label %"$have_gas_1203" + +"$out_of_gas_1202": ; preds = %"$have_gas_1190" + call void @_out_of_gas() + br label %"$have_gas_1203" + +"$have_gas_1203": ; preds = %"$out_of_gas_1202", %"$have_gas_1190" + %"$consume_1204" = sub i64 %"$gasrem_1200", 1 + store i64 %"$consume_1204", i64* @_gasrem + %"$$fundef_155_envp_1205_load" = load i8*, i8** @_execptr + %"$$fundef_155_envp_1205_salloc" = call i8* @_salloc(i8* %"$$fundef_155_envp_1205_load", i64 48) + %"$$fundef_155_envp_1205" = bitcast i8* %"$$fundef_155_envp_1205_salloc" to %"$$fundef_155_env_203"* + %"$$fundef_155_env_voidp_1207" = bitcast %"$$fundef_155_env_203"* %"$$fundef_155_envp_1205" to i8* + %"$$fundef_155_cloval_1208" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_155_env_203"*, %TName_Nat*)* @"$fundef_155" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_155_env_voidp_1207", 1 + %"$$fundef_155_env_f_1209" = getelementptr inbounds %"$$fundef_155_env_203", %"$$fundef_155_env_203"* %"$$fundef_155_envp_1205", i32 0, i32 0 + %"$f_1210" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_1210", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_155_env_f_1209" + %"$$fundef_155_env_iter_nat_nat_1211" = getelementptr inbounds %"$$fundef_155_env_203", %"$$fundef_155_env_203"* %"$$fundef_155_envp_1205", i32 0, i32 1 + %"$iter_nat_nat_1212" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %iter_nat_nat + store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$iter_nat_nat_1212", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$$fundef_155_env_iter_nat_nat_1211" + %"$$fundef_155_env_nat_succ_1213" = getelementptr inbounds %"$$fundef_155_env_203", %"$$fundef_155_env_203"* %"$$fundef_155_envp_1205", i32 0, i32 2 + %"$nat_succ_1214" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %nat_succ + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$nat_succ_1214", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_155_env_nat_succ_1213" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_155_cloval_1208", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$gasrem_1215" = load i64, i64* @_gasrem + %"$gascmp_1216" = icmp ugt i64 1, %"$gasrem_1215" + br i1 %"$gascmp_1216", label %"$out_of_gas_1217", label %"$have_gas_1218" + +"$out_of_gas_1217": ; preds = %"$have_gas_1203" + call void @_out_of_gas() + br label %"$have_gas_1218" + +"$have_gas_1218": ; preds = %"$out_of_gas_1217", %"$have_gas_1203" + %"$consume_1219" = sub i64 %"$gasrem_1215", 1 + store i64 %"$consume_1219", i64* @_gasrem %uint0 = alloca %Uint32 + %"$gasrem_1220" = load i64, i64* @_gasrem + %"$gascmp_1221" = icmp ugt i64 1, %"$gasrem_1220" + br i1 %"$gascmp_1221", label %"$out_of_gas_1222", label %"$have_gas_1223" + +"$out_of_gas_1222": ; preds = %"$have_gas_1218" + call void @_out_of_gas() + br label %"$have_gas_1223" + +"$have_gas_1223": ; preds = %"$out_of_gas_1222", %"$have_gas_1218" + %"$consume_1224" = sub i64 %"$gasrem_1220", 1 + store i64 %"$consume_1224", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %uint0 + %"$gasrem_1225" = load i64, i64* @_gasrem + %"$gascmp_1226" = icmp ugt i64 1, %"$gasrem_1225" + br i1 %"$gascmp_1226", label %"$out_of_gas_1227", label %"$have_gas_1228" + +"$out_of_gas_1227": ; preds = %"$have_gas_1223" + call void @_out_of_gas() + br label %"$have_gas_1228" + +"$have_gas_1228": ; preds = %"$out_of_gas_1227", %"$have_gas_1223" + %"$consume_1229" = sub i64 %"$gasrem_1225", 1 + store i64 %"$consume_1229", i64* @_gasrem %uint1 = alloca %Uint32 + %"$gasrem_1230" = load i64, i64* @_gasrem + %"$gascmp_1231" = icmp ugt i64 1, %"$gasrem_1230" + br i1 %"$gascmp_1231", label %"$out_of_gas_1232", label %"$have_gas_1233" + +"$out_of_gas_1232": ; preds = %"$have_gas_1228" + call void @_out_of_gas() + br label %"$have_gas_1233" + +"$have_gas_1233": ; preds = %"$out_of_gas_1232", %"$have_gas_1228" + %"$consume_1234" = sub i64 %"$gasrem_1230", 1 + store i64 %"$consume_1234", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %uint1 + %"$gasrem_1235" = load i64, i64* @_gasrem + %"$gascmp_1236" = icmp ugt i64 1, %"$gasrem_1235" + br i1 %"$gascmp_1236", label %"$out_of_gas_1237", label %"$have_gas_1238" + +"$out_of_gas_1237": ; preds = %"$have_gas_1233" + call void @_out_of_gas() + br label %"$have_gas_1238" + +"$have_gas_1238": ; preds = %"$out_of_gas_1237", %"$have_gas_1233" + %"$consume_1239" = sub i64 %"$gasrem_1235", 1 + store i64 %"$consume_1239", i64* @_gasrem %uint2 = alloca %Uint32 + %"$gasrem_1240" = load i64, i64* @_gasrem + %"$gascmp_1241" = icmp ugt i64 1, %"$gasrem_1240" + br i1 %"$gascmp_1241", label %"$out_of_gas_1242", label %"$have_gas_1243" + +"$out_of_gas_1242": ; preds = %"$have_gas_1238" + call void @_out_of_gas() + br label %"$have_gas_1243" + +"$have_gas_1243": ; preds = %"$out_of_gas_1242", %"$have_gas_1238" + %"$consume_1244" = sub i64 %"$gasrem_1240", 1 + store i64 %"$consume_1244", i64* @_gasrem store %Uint32 { i32 2 }, %Uint32* %uint2 + %"$gasrem_1245" = load i64, i64* @_gasrem + %"$gascmp_1246" = icmp ugt i64 1, %"$gasrem_1245" + br i1 %"$gascmp_1246", label %"$out_of_gas_1247", label %"$have_gas_1248" + +"$out_of_gas_1247": ; preds = %"$have_gas_1243" + call void @_out_of_gas() + br label %"$have_gas_1248" + +"$have_gas_1248": ; preds = %"$out_of_gas_1247", %"$have_gas_1243" + %"$consume_1249" = sub i64 %"$gasrem_1245", 1 + store i64 %"$consume_1249", i64* @_gasrem %uint3 = alloca %Uint32 + %"$gasrem_1250" = load i64, i64* @_gasrem + %"$gascmp_1251" = icmp ugt i64 1, %"$gasrem_1250" + br i1 %"$gascmp_1251", label %"$out_of_gas_1252", label %"$have_gas_1253" + +"$out_of_gas_1252": ; preds = %"$have_gas_1248" + call void @_out_of_gas() + br label %"$have_gas_1253" + +"$have_gas_1253": ; preds = %"$out_of_gas_1252", %"$have_gas_1248" + %"$consume_1254" = sub i64 %"$gasrem_1250", 1 + store i64 %"$consume_1254", i64* @_gasrem store %Uint32 { i32 3 }, %Uint32* %uint3 + %"$gasrem_1255" = load i64, i64* @_gasrem + %"$gascmp_1256" = icmp ugt i64 1, %"$gasrem_1255" + br i1 %"$gascmp_1256", label %"$out_of_gas_1257", label %"$have_gas_1258" + +"$out_of_gas_1257": ; preds = %"$have_gas_1253" + call void @_out_of_gas() + br label %"$have_gas_1258" + +"$have_gas_1258": ; preds = %"$out_of_gas_1257", %"$have_gas_1253" + %"$consume_1259" = sub i64 %"$gasrem_1255", 1 + store i64 %"$consume_1259", i64* @_gasrem %uint4 = alloca %Uint32 + %"$gasrem_1260" = load i64, i64* @_gasrem + %"$gascmp_1261" = icmp ugt i64 1, %"$gasrem_1260" + br i1 %"$gascmp_1261", label %"$out_of_gas_1262", label %"$have_gas_1263" + +"$out_of_gas_1262": ; preds = %"$have_gas_1258" + call void @_out_of_gas() + br label %"$have_gas_1263" + +"$have_gas_1263": ; preds = %"$out_of_gas_1262", %"$have_gas_1258" + %"$consume_1264" = sub i64 %"$gasrem_1260", 1 + store i64 %"$consume_1264", i64* @_gasrem store %Uint32 { i32 4 }, %Uint32* %uint4 + %"$gasrem_1265" = load i64, i64* @_gasrem + %"$gascmp_1266" = icmp ugt i64 1, %"$gasrem_1265" + br i1 %"$gascmp_1266", label %"$out_of_gas_1267", label %"$have_gas_1268" + +"$out_of_gas_1267": ; preds = %"$have_gas_1263" + call void @_out_of_gas() + br label %"$have_gas_1268" + +"$have_gas_1268": ; preds = %"$out_of_gas_1267", %"$have_gas_1263" + %"$consume_1269" = sub i64 %"$gasrem_1265", 1 + store i64 %"$consume_1269", i64* @_gasrem %n0 = alloca %TName_Nat* - %"$execptr_load_810" = load i8*, i8** @_execptr - %"$uint0_811" = load %Uint32, %Uint32* %uint0 - %"$to_nat_call_812" = call %TName_Nat* @_to_nat(i8* %"$execptr_load_810", %Uint32 %"$uint0_811") - store %TName_Nat* %"$to_nat_call_812", %TName_Nat** %n0 + %"$execptr_load_1270" = load i8*, i8** @_execptr + %"$uint0_1271" = load %Uint32, %Uint32* %uint0 + %"$to_nat_call_1272" = call %TName_Nat* @_to_nat(i8* %"$execptr_load_1270", %Uint32 %"$uint0_1271") + store %TName_Nat* %"$to_nat_call_1272", %TName_Nat** %n0 + %"$gasrem_1273" = load i64, i64* @_gasrem + %"$gascmp_1274" = icmp ugt i64 1, %"$gasrem_1273" + br i1 %"$gascmp_1274", label %"$out_of_gas_1275", label %"$have_gas_1276" + +"$out_of_gas_1275": ; preds = %"$have_gas_1268" + call void @_out_of_gas() + br label %"$have_gas_1276" + +"$have_gas_1276": ; preds = %"$out_of_gas_1275", %"$have_gas_1268" + %"$consume_1277" = sub i64 %"$gasrem_1273", 1 + store i64 %"$consume_1277", i64* @_gasrem %n1 = alloca %TName_Nat* - %"$execptr_load_813" = load i8*, i8** @_execptr - %"$uint1_814" = load %Uint32, %Uint32* %uint1 - %"$to_nat_call_815" = call %TName_Nat* @_to_nat(i8* %"$execptr_load_813", %Uint32 %"$uint1_814") - store %TName_Nat* %"$to_nat_call_815", %TName_Nat** %n1 + %"$execptr_load_1278" = load i8*, i8** @_execptr + %"$uint1_1279" = load %Uint32, %Uint32* %uint1 + %"$to_nat_call_1280" = call %TName_Nat* @_to_nat(i8* %"$execptr_load_1278", %Uint32 %"$uint1_1279") + store %TName_Nat* %"$to_nat_call_1280", %TName_Nat** %n1 + %"$gasrem_1281" = load i64, i64* @_gasrem + %"$gascmp_1282" = icmp ugt i64 1, %"$gasrem_1281" + br i1 %"$gascmp_1282", label %"$out_of_gas_1283", label %"$have_gas_1284" + +"$out_of_gas_1283": ; preds = %"$have_gas_1276" + call void @_out_of_gas() + br label %"$have_gas_1284" + +"$have_gas_1284": ; preds = %"$out_of_gas_1283", %"$have_gas_1276" + %"$consume_1285" = sub i64 %"$gasrem_1281", 1 + store i64 %"$consume_1285", i64* @_gasrem %n2 = alloca %TName_Nat* - %"$execptr_load_816" = load i8*, i8** @_execptr - %"$uint2_817" = load %Uint32, %Uint32* %uint2 - %"$to_nat_call_818" = call %TName_Nat* @_to_nat(i8* %"$execptr_load_816", %Uint32 %"$uint2_817") - store %TName_Nat* %"$to_nat_call_818", %TName_Nat** %n2 + %"$execptr_load_1286" = load i8*, i8** @_execptr + %"$uint2_1287" = load %Uint32, %Uint32* %uint2 + %"$to_nat_call_1288" = call %TName_Nat* @_to_nat(i8* %"$execptr_load_1286", %Uint32 %"$uint2_1287") + store %TName_Nat* %"$to_nat_call_1288", %TName_Nat** %n2 + %"$gasrem_1289" = load i64, i64* @_gasrem + %"$gascmp_1290" = icmp ugt i64 1, %"$gasrem_1289" + br i1 %"$gascmp_1290", label %"$out_of_gas_1291", label %"$have_gas_1292" + +"$out_of_gas_1291": ; preds = %"$have_gas_1284" + call void @_out_of_gas() + br label %"$have_gas_1292" + +"$have_gas_1292": ; preds = %"$out_of_gas_1291", %"$have_gas_1284" + %"$consume_1293" = sub i64 %"$gasrem_1289", 1 + store i64 %"$consume_1293", i64* @_gasrem %n3 = alloca %TName_Nat* - %"$execptr_load_819" = load i8*, i8** @_execptr - %"$uint3_820" = load %Uint32, %Uint32* %uint3 - %"$to_nat_call_821" = call %TName_Nat* @_to_nat(i8* %"$execptr_load_819", %Uint32 %"$uint3_820") - store %TName_Nat* %"$to_nat_call_821", %TName_Nat** %n3 + %"$execptr_load_1294" = load i8*, i8** @_execptr + %"$uint3_1295" = load %Uint32, %Uint32* %uint3 + %"$to_nat_call_1296" = call %TName_Nat* @_to_nat(i8* %"$execptr_load_1294", %Uint32 %"$uint3_1295") + store %TName_Nat* %"$to_nat_call_1296", %TName_Nat** %n3 + %"$gasrem_1297" = load i64, i64* @_gasrem + %"$gascmp_1298" = icmp ugt i64 1, %"$gasrem_1297" + br i1 %"$gascmp_1298", label %"$out_of_gas_1299", label %"$have_gas_1300" + +"$out_of_gas_1299": ; preds = %"$have_gas_1292" + call void @_out_of_gas() + br label %"$have_gas_1300" + +"$have_gas_1300": ; preds = %"$out_of_gas_1299", %"$have_gas_1292" + %"$consume_1301" = sub i64 %"$gasrem_1297", 1 + store i64 %"$consume_1301", i64* @_gasrem %n4 = alloca %TName_Nat* - %"$execptr_load_822" = load i8*, i8** @_execptr - %"$uint4_823" = load %Uint32, %Uint32* %uint4 - %"$to_nat_call_824" = call %TName_Nat* @_to_nat(i8* %"$execptr_load_822", %Uint32 %"$uint4_823") - store %TName_Nat* %"$to_nat_call_824", %TName_Nat** %n4 + %"$execptr_load_1302" = load i8*, i8** @_execptr + %"$uint4_1303" = load %Uint32, %Uint32* %uint4 + %"$to_nat_call_1304" = call %TName_Nat* @_to_nat(i8* %"$execptr_load_1302", %Uint32 %"$uint4_1303") + store %TName_Nat* %"$to_nat_call_1304", %TName_Nat** %n4 + %"$gasrem_1305" = load i64, i64* @_gasrem + %"$gascmp_1306" = icmp ugt i64 1, %"$gasrem_1305" + br i1 %"$gascmp_1306", label %"$out_of_gas_1307", label %"$have_gas_1308" + +"$out_of_gas_1307": ; preds = %"$have_gas_1300" + call void @_out_of_gas() + br label %"$have_gas_1308" + +"$have_gas_1308": ; preds = %"$out_of_gas_1307", %"$have_gas_1300" + %"$consume_1309" = sub i64 %"$gasrem_1305", 1 + store i64 %"$consume_1309", i64* @_gasrem %ack00 = alloca %TName_Nat* + %"$gasrem_1310" = load i64, i64* @_gasrem + %"$gascmp_1311" = icmp ugt i64 1, %"$gasrem_1310" + br i1 %"$gascmp_1311", label %"$out_of_gas_1312", label %"$have_gas_1313" + +"$out_of_gas_1312": ; preds = %"$have_gas_1308" + call void @_out_of_gas() + br label %"$have_gas_1313" + +"$have_gas_1313": ; preds = %"$out_of_gas_1312", %"$have_gas_1308" + %"$consume_1314" = sub i64 %"$gasrem_1310", 1 + store i64 %"$consume_1314", i64* @_gasrem %"$ackermann_36" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_825" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_826" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_825", 0 - %"$ackermann_envptr_827" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_825", 1 - %"$n0_828" = load %TName_Nat*, %TName_Nat** %n0 - %"$ackermann_call_829" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_826"(i8* %"$ackermann_envptr_827", %TName_Nat* %"$n0_828") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_829", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_36" + %"$ackermann_1315" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1316" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1315", 0 + %"$ackermann_envptr_1317" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1315", 1 + %"$n0_1318" = load %TName_Nat*, %TName_Nat** %n0 + %"$ackermann_call_1319" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1316"(i8* %"$ackermann_envptr_1317", %TName_Nat* %"$n0_1318") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1319", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_36" %"$ackermann_37" = alloca %TName_Nat* - %"$$ackermann_36_830" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_36" - %"$$ackermann_36_fptr_831" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_36_830", 0 - %"$$ackermann_36_envptr_832" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_36_830", 1 - %"$n0_833" = load %TName_Nat*, %TName_Nat** %n0 - %"$$ackermann_36_call_834" = call %TName_Nat* %"$$ackermann_36_fptr_831"(i8* %"$$ackermann_36_envptr_832", %TName_Nat* %"$n0_833") - store %TName_Nat* %"$$ackermann_36_call_834", %TName_Nat** %"$ackermann_37" - %"$$ackermann_37_835" = load %TName_Nat*, %TName_Nat** %"$ackermann_37" - store %TName_Nat* %"$$ackermann_37_835", %TName_Nat** %ack00 + %"$$ackermann_36_1320" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_36" + %"$$ackermann_36_fptr_1321" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_36_1320", 0 + %"$$ackermann_36_envptr_1322" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_36_1320", 1 + %"$n0_1323" = load %TName_Nat*, %TName_Nat** %n0 + %"$$ackermann_36_call_1324" = call %TName_Nat* %"$$ackermann_36_fptr_1321"(i8* %"$$ackermann_36_envptr_1322", %TName_Nat* %"$n0_1323") + store %TName_Nat* %"$$ackermann_36_call_1324", %TName_Nat** %"$ackermann_37" + %"$$ackermann_37_1325" = load %TName_Nat*, %TName_Nat** %"$ackermann_37" + store %TName_Nat* %"$$ackermann_37_1325", %TName_Nat** %ack00 + %"$gasrem_1326" = load i64, i64* @_gasrem + %"$gascmp_1327" = icmp ugt i64 1, %"$gasrem_1326" + br i1 %"$gascmp_1327", label %"$out_of_gas_1328", label %"$have_gas_1329" + +"$out_of_gas_1328": ; preds = %"$have_gas_1313" + call void @_out_of_gas() + br label %"$have_gas_1329" + +"$have_gas_1329": ; preds = %"$out_of_gas_1328", %"$have_gas_1313" + %"$consume_1330" = sub i64 %"$gasrem_1326", 1 + store i64 %"$consume_1330", i64* @_gasrem + %"$gasrem_1331" = load i64, i64* @_gasrem + %"$gascmp_1332" = icmp ugt i64 1, %"$gasrem_1331" + br i1 %"$gascmp_1332", label %"$out_of_gas_1333", label %"$have_gas_1334" + +"$out_of_gas_1333": ; preds = %"$have_gas_1329" + call void @_out_of_gas() + br label %"$have_gas_1334" + +"$have_gas_1334": ; preds = %"$out_of_gas_1333", %"$have_gas_1329" + %"$consume_1335" = sub i64 %"$gasrem_1331", 1 + store i64 %"$consume_1335", i64* @_gasrem %ack02 = alloca %TName_Nat* + %"$gasrem_1336" = load i64, i64* @_gasrem + %"$gascmp_1337" = icmp ugt i64 1, %"$gasrem_1336" + br i1 %"$gascmp_1337", label %"$out_of_gas_1338", label %"$have_gas_1339" + +"$out_of_gas_1338": ; preds = %"$have_gas_1334" + call void @_out_of_gas() + br label %"$have_gas_1339" + +"$have_gas_1339": ; preds = %"$out_of_gas_1338", %"$have_gas_1334" + %"$consume_1340" = sub i64 %"$gasrem_1336", 1 + store i64 %"$consume_1340", i64* @_gasrem %"$ackermann_38" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_836" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_837" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_836", 0 - %"$ackermann_envptr_838" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_836", 1 - %"$n0_839" = load %TName_Nat*, %TName_Nat** %n0 - %"$ackermann_call_840" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_837"(i8* %"$ackermann_envptr_838", %TName_Nat* %"$n0_839") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_840", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_38" + %"$ackermann_1341" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1342" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1341", 0 + %"$ackermann_envptr_1343" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1341", 1 + %"$n0_1344" = load %TName_Nat*, %TName_Nat** %n0 + %"$ackermann_call_1345" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1342"(i8* %"$ackermann_envptr_1343", %TName_Nat* %"$n0_1344") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1345", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_38" %"$ackermann_39" = alloca %TName_Nat* - %"$$ackermann_38_841" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_38" - %"$$ackermann_38_fptr_842" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_38_841", 0 - %"$$ackermann_38_envptr_843" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_38_841", 1 - %"$n2_844" = load %TName_Nat*, %TName_Nat** %n2 - %"$$ackermann_38_call_845" = call %TName_Nat* %"$$ackermann_38_fptr_842"(i8* %"$$ackermann_38_envptr_843", %TName_Nat* %"$n2_844") - store %TName_Nat* %"$$ackermann_38_call_845", %TName_Nat** %"$ackermann_39" - %"$$ackermann_39_846" = load %TName_Nat*, %TName_Nat** %"$ackermann_39" - store %TName_Nat* %"$$ackermann_39_846", %TName_Nat** %ack02 + %"$$ackermann_38_1346" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_38" + %"$$ackermann_38_fptr_1347" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_38_1346", 0 + %"$$ackermann_38_envptr_1348" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_38_1346", 1 + %"$n2_1349" = load %TName_Nat*, %TName_Nat** %n2 + %"$$ackermann_38_call_1350" = call %TName_Nat* %"$$ackermann_38_fptr_1347"(i8* %"$$ackermann_38_envptr_1348", %TName_Nat* %"$n2_1349") + store %TName_Nat* %"$$ackermann_38_call_1350", %TName_Nat** %"$ackermann_39" + %"$$ackermann_39_1351" = load %TName_Nat*, %TName_Nat** %"$ackermann_39" + store %TName_Nat* %"$$ackermann_39_1351", %TName_Nat** %ack02 + %"$gasrem_1352" = load i64, i64* @_gasrem + %"$gascmp_1353" = icmp ugt i64 1, %"$gasrem_1352" + br i1 %"$gascmp_1353", label %"$out_of_gas_1354", label %"$have_gas_1355" + +"$out_of_gas_1354": ; preds = %"$have_gas_1339" + call void @_out_of_gas() + br label %"$have_gas_1355" + +"$have_gas_1355": ; preds = %"$out_of_gas_1354", %"$have_gas_1339" + %"$consume_1356" = sub i64 %"$gasrem_1352", 1 + store i64 %"$consume_1356", i64* @_gasrem %ack03 = alloca %TName_Nat* + %"$gasrem_1357" = load i64, i64* @_gasrem + %"$gascmp_1358" = icmp ugt i64 1, %"$gasrem_1357" + br i1 %"$gascmp_1358", label %"$out_of_gas_1359", label %"$have_gas_1360" + +"$out_of_gas_1359": ; preds = %"$have_gas_1355" + call void @_out_of_gas() + br label %"$have_gas_1360" + +"$have_gas_1360": ; preds = %"$out_of_gas_1359", %"$have_gas_1355" + %"$consume_1361" = sub i64 %"$gasrem_1357", 1 + store i64 %"$consume_1361", i64* @_gasrem %"$ackermann_40" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_847" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_848" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_847", 0 - %"$ackermann_envptr_849" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_847", 1 - %"$n0_850" = load %TName_Nat*, %TName_Nat** %n0 - %"$ackermann_call_851" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_848"(i8* %"$ackermann_envptr_849", %TName_Nat* %"$n0_850") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_851", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_40" + %"$ackermann_1362" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1363" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1362", 0 + %"$ackermann_envptr_1364" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1362", 1 + %"$n0_1365" = load %TName_Nat*, %TName_Nat** %n0 + %"$ackermann_call_1366" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1363"(i8* %"$ackermann_envptr_1364", %TName_Nat* %"$n0_1365") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1366", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_40" %"$ackermann_41" = alloca %TName_Nat* - %"$$ackermann_40_852" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_40" - %"$$ackermann_40_fptr_853" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_40_852", 0 - %"$$ackermann_40_envptr_854" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_40_852", 1 - %"$n3_855" = load %TName_Nat*, %TName_Nat** %n3 - %"$$ackermann_40_call_856" = call %TName_Nat* %"$$ackermann_40_fptr_853"(i8* %"$$ackermann_40_envptr_854", %TName_Nat* %"$n3_855") - store %TName_Nat* %"$$ackermann_40_call_856", %TName_Nat** %"$ackermann_41" - %"$$ackermann_41_857" = load %TName_Nat*, %TName_Nat** %"$ackermann_41" - store %TName_Nat* %"$$ackermann_41_857", %TName_Nat** %ack03 + %"$$ackermann_40_1367" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_40" + %"$$ackermann_40_fptr_1368" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_40_1367", 0 + %"$$ackermann_40_envptr_1369" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_40_1367", 1 + %"$n3_1370" = load %TName_Nat*, %TName_Nat** %n3 + %"$$ackermann_40_call_1371" = call %TName_Nat* %"$$ackermann_40_fptr_1368"(i8* %"$$ackermann_40_envptr_1369", %TName_Nat* %"$n3_1370") + store %TName_Nat* %"$$ackermann_40_call_1371", %TName_Nat** %"$ackermann_41" + %"$$ackermann_41_1372" = load %TName_Nat*, %TName_Nat** %"$ackermann_41" + store %TName_Nat* %"$$ackermann_41_1372", %TName_Nat** %ack03 + %"$gasrem_1373" = load i64, i64* @_gasrem + %"$gascmp_1374" = icmp ugt i64 1, %"$gasrem_1373" + br i1 %"$gascmp_1374", label %"$out_of_gas_1375", label %"$have_gas_1376" + +"$out_of_gas_1375": ; preds = %"$have_gas_1360" + call void @_out_of_gas() + br label %"$have_gas_1376" + +"$have_gas_1376": ; preds = %"$out_of_gas_1375", %"$have_gas_1360" + %"$consume_1377" = sub i64 %"$gasrem_1373", 1 + store i64 %"$consume_1377", i64* @_gasrem %ack04 = alloca %TName_Nat* + %"$gasrem_1378" = load i64, i64* @_gasrem + %"$gascmp_1379" = icmp ugt i64 1, %"$gasrem_1378" + br i1 %"$gascmp_1379", label %"$out_of_gas_1380", label %"$have_gas_1381" + +"$out_of_gas_1380": ; preds = %"$have_gas_1376" + call void @_out_of_gas() + br label %"$have_gas_1381" + +"$have_gas_1381": ; preds = %"$out_of_gas_1380", %"$have_gas_1376" + %"$consume_1382" = sub i64 %"$gasrem_1378", 1 + store i64 %"$consume_1382", i64* @_gasrem %"$ackermann_42" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_858" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_859" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_858", 0 - %"$ackermann_envptr_860" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_858", 1 - %"$n0_861" = load %TName_Nat*, %TName_Nat** %n0 - %"$ackermann_call_862" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_859"(i8* %"$ackermann_envptr_860", %TName_Nat* %"$n0_861") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_862", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_42" + %"$ackermann_1383" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1384" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1383", 0 + %"$ackermann_envptr_1385" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1383", 1 + %"$n0_1386" = load %TName_Nat*, %TName_Nat** %n0 + %"$ackermann_call_1387" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1384"(i8* %"$ackermann_envptr_1385", %TName_Nat* %"$n0_1386") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1387", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_42" %"$ackermann_43" = alloca %TName_Nat* - %"$$ackermann_42_863" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_42" - %"$$ackermann_42_fptr_864" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_42_863", 0 - %"$$ackermann_42_envptr_865" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_42_863", 1 - %"$n4_866" = load %TName_Nat*, %TName_Nat** %n4 - %"$$ackermann_42_call_867" = call %TName_Nat* %"$$ackermann_42_fptr_864"(i8* %"$$ackermann_42_envptr_865", %TName_Nat* %"$n4_866") - store %TName_Nat* %"$$ackermann_42_call_867", %TName_Nat** %"$ackermann_43" - %"$$ackermann_43_868" = load %TName_Nat*, %TName_Nat** %"$ackermann_43" - store %TName_Nat* %"$$ackermann_43_868", %TName_Nat** %ack04 + %"$$ackermann_42_1388" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_42" + %"$$ackermann_42_fptr_1389" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_42_1388", 0 + %"$$ackermann_42_envptr_1390" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_42_1388", 1 + %"$n4_1391" = load %TName_Nat*, %TName_Nat** %n4 + %"$$ackermann_42_call_1392" = call %TName_Nat* %"$$ackermann_42_fptr_1389"(i8* %"$$ackermann_42_envptr_1390", %TName_Nat* %"$n4_1391") + store %TName_Nat* %"$$ackermann_42_call_1392", %TName_Nat** %"$ackermann_43" + %"$$ackermann_43_1393" = load %TName_Nat*, %TName_Nat** %"$ackermann_43" + store %TName_Nat* %"$$ackermann_43_1393", %TName_Nat** %ack04 + %"$gasrem_1394" = load i64, i64* @_gasrem + %"$gascmp_1395" = icmp ugt i64 1, %"$gasrem_1394" + br i1 %"$gascmp_1395", label %"$out_of_gas_1396", label %"$have_gas_1397" + +"$out_of_gas_1396": ; preds = %"$have_gas_1381" + call void @_out_of_gas() + br label %"$have_gas_1397" + +"$have_gas_1397": ; preds = %"$out_of_gas_1396", %"$have_gas_1381" + %"$consume_1398" = sub i64 %"$gasrem_1394", 1 + store i64 %"$consume_1398", i64* @_gasrem %ack10 = alloca %TName_Nat* + %"$gasrem_1399" = load i64, i64* @_gasrem + %"$gascmp_1400" = icmp ugt i64 1, %"$gasrem_1399" + br i1 %"$gascmp_1400", label %"$out_of_gas_1401", label %"$have_gas_1402" + +"$out_of_gas_1401": ; preds = %"$have_gas_1397" + call void @_out_of_gas() + br label %"$have_gas_1402" + +"$have_gas_1402": ; preds = %"$out_of_gas_1401", %"$have_gas_1397" + %"$consume_1403" = sub i64 %"$gasrem_1399", 1 + store i64 %"$consume_1403", i64* @_gasrem %"$ackermann_44" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_869" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_870" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_869", 0 - %"$ackermann_envptr_871" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_869", 1 - %"$n1_872" = load %TName_Nat*, %TName_Nat** %n1 - %"$ackermann_call_873" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_870"(i8* %"$ackermann_envptr_871", %TName_Nat* %"$n1_872") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_873", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_44" + %"$ackermann_1404" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1405" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1404", 0 + %"$ackermann_envptr_1406" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1404", 1 + %"$n1_1407" = load %TName_Nat*, %TName_Nat** %n1 + %"$ackermann_call_1408" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1405"(i8* %"$ackermann_envptr_1406", %TName_Nat* %"$n1_1407") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1408", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_44" %"$ackermann_45" = alloca %TName_Nat* - %"$$ackermann_44_874" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_44" - %"$$ackermann_44_fptr_875" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_44_874", 0 - %"$$ackermann_44_envptr_876" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_44_874", 1 - %"$n0_877" = load %TName_Nat*, %TName_Nat** %n0 - %"$$ackermann_44_call_878" = call %TName_Nat* %"$$ackermann_44_fptr_875"(i8* %"$$ackermann_44_envptr_876", %TName_Nat* %"$n0_877") - store %TName_Nat* %"$$ackermann_44_call_878", %TName_Nat** %"$ackermann_45" - %"$$ackermann_45_879" = load %TName_Nat*, %TName_Nat** %"$ackermann_45" - store %TName_Nat* %"$$ackermann_45_879", %TName_Nat** %ack10 + %"$$ackermann_44_1409" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_44" + %"$$ackermann_44_fptr_1410" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_44_1409", 0 + %"$$ackermann_44_envptr_1411" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_44_1409", 1 + %"$n0_1412" = load %TName_Nat*, %TName_Nat** %n0 + %"$$ackermann_44_call_1413" = call %TName_Nat* %"$$ackermann_44_fptr_1410"(i8* %"$$ackermann_44_envptr_1411", %TName_Nat* %"$n0_1412") + store %TName_Nat* %"$$ackermann_44_call_1413", %TName_Nat** %"$ackermann_45" + %"$$ackermann_45_1414" = load %TName_Nat*, %TName_Nat** %"$ackermann_45" + store %TName_Nat* %"$$ackermann_45_1414", %TName_Nat** %ack10 + %"$gasrem_1415" = load i64, i64* @_gasrem + %"$gascmp_1416" = icmp ugt i64 1, %"$gasrem_1415" + br i1 %"$gascmp_1416", label %"$out_of_gas_1417", label %"$have_gas_1418" + +"$out_of_gas_1417": ; preds = %"$have_gas_1402" + call void @_out_of_gas() + br label %"$have_gas_1418" + +"$have_gas_1418": ; preds = %"$out_of_gas_1417", %"$have_gas_1402" + %"$consume_1419" = sub i64 %"$gasrem_1415", 1 + store i64 %"$consume_1419", i64* @_gasrem %ack11 = alloca %TName_Nat* + %"$gasrem_1420" = load i64, i64* @_gasrem + %"$gascmp_1421" = icmp ugt i64 1, %"$gasrem_1420" + br i1 %"$gascmp_1421", label %"$out_of_gas_1422", label %"$have_gas_1423" + +"$out_of_gas_1422": ; preds = %"$have_gas_1418" + call void @_out_of_gas() + br label %"$have_gas_1423" + +"$have_gas_1423": ; preds = %"$out_of_gas_1422", %"$have_gas_1418" + %"$consume_1424" = sub i64 %"$gasrem_1420", 1 + store i64 %"$consume_1424", i64* @_gasrem %"$ackermann_46" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_880" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_881" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_880", 0 - %"$ackermann_envptr_882" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_880", 1 - %"$n1_883" = load %TName_Nat*, %TName_Nat** %n1 - %"$ackermann_call_884" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_881"(i8* %"$ackermann_envptr_882", %TName_Nat* %"$n1_883") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_884", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_46" + %"$ackermann_1425" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1426" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1425", 0 + %"$ackermann_envptr_1427" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1425", 1 + %"$n1_1428" = load %TName_Nat*, %TName_Nat** %n1 + %"$ackermann_call_1429" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1426"(i8* %"$ackermann_envptr_1427", %TName_Nat* %"$n1_1428") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1429", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_46" %"$ackermann_47" = alloca %TName_Nat* - %"$$ackermann_46_885" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_46" - %"$$ackermann_46_fptr_886" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_46_885", 0 - %"$$ackermann_46_envptr_887" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_46_885", 1 - %"$n1_888" = load %TName_Nat*, %TName_Nat** %n1 - %"$$ackermann_46_call_889" = call %TName_Nat* %"$$ackermann_46_fptr_886"(i8* %"$$ackermann_46_envptr_887", %TName_Nat* %"$n1_888") - store %TName_Nat* %"$$ackermann_46_call_889", %TName_Nat** %"$ackermann_47" - %"$$ackermann_47_890" = load %TName_Nat*, %TName_Nat** %"$ackermann_47" - store %TName_Nat* %"$$ackermann_47_890", %TName_Nat** %ack11 + %"$$ackermann_46_1430" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_46" + %"$$ackermann_46_fptr_1431" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_46_1430", 0 + %"$$ackermann_46_envptr_1432" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_46_1430", 1 + %"$n1_1433" = load %TName_Nat*, %TName_Nat** %n1 + %"$$ackermann_46_call_1434" = call %TName_Nat* %"$$ackermann_46_fptr_1431"(i8* %"$$ackermann_46_envptr_1432", %TName_Nat* %"$n1_1433") + store %TName_Nat* %"$$ackermann_46_call_1434", %TName_Nat** %"$ackermann_47" + %"$$ackermann_47_1435" = load %TName_Nat*, %TName_Nat** %"$ackermann_47" + store %TName_Nat* %"$$ackermann_47_1435", %TName_Nat** %ack11 + %"$gasrem_1436" = load i64, i64* @_gasrem + %"$gascmp_1437" = icmp ugt i64 1, %"$gasrem_1436" + br i1 %"$gascmp_1437", label %"$out_of_gas_1438", label %"$have_gas_1439" + +"$out_of_gas_1438": ; preds = %"$have_gas_1423" + call void @_out_of_gas() + br label %"$have_gas_1439" + +"$have_gas_1439": ; preds = %"$out_of_gas_1438", %"$have_gas_1423" + %"$consume_1440" = sub i64 %"$gasrem_1436", 1 + store i64 %"$consume_1440", i64* @_gasrem %ack12 = alloca %TName_Nat* + %"$gasrem_1441" = load i64, i64* @_gasrem + %"$gascmp_1442" = icmp ugt i64 1, %"$gasrem_1441" + br i1 %"$gascmp_1442", label %"$out_of_gas_1443", label %"$have_gas_1444" + +"$out_of_gas_1443": ; preds = %"$have_gas_1439" + call void @_out_of_gas() + br label %"$have_gas_1444" + +"$have_gas_1444": ; preds = %"$out_of_gas_1443", %"$have_gas_1439" + %"$consume_1445" = sub i64 %"$gasrem_1441", 1 + store i64 %"$consume_1445", i64* @_gasrem %"$ackermann_48" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_891" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_892" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_891", 0 - %"$ackermann_envptr_893" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_891", 1 - %"$n1_894" = load %TName_Nat*, %TName_Nat** %n1 - %"$ackermann_call_895" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_892"(i8* %"$ackermann_envptr_893", %TName_Nat* %"$n1_894") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_895", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_48" + %"$ackermann_1446" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1447" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1446", 0 + %"$ackermann_envptr_1448" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1446", 1 + %"$n1_1449" = load %TName_Nat*, %TName_Nat** %n1 + %"$ackermann_call_1450" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1447"(i8* %"$ackermann_envptr_1448", %TName_Nat* %"$n1_1449") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1450", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_48" %"$ackermann_49" = alloca %TName_Nat* - %"$$ackermann_48_896" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_48" - %"$$ackermann_48_fptr_897" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_48_896", 0 - %"$$ackermann_48_envptr_898" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_48_896", 1 - %"$n2_899" = load %TName_Nat*, %TName_Nat** %n2 - %"$$ackermann_48_call_900" = call %TName_Nat* %"$$ackermann_48_fptr_897"(i8* %"$$ackermann_48_envptr_898", %TName_Nat* %"$n2_899") - store %TName_Nat* %"$$ackermann_48_call_900", %TName_Nat** %"$ackermann_49" - %"$$ackermann_49_901" = load %TName_Nat*, %TName_Nat** %"$ackermann_49" - store %TName_Nat* %"$$ackermann_49_901", %TName_Nat** %ack12 + %"$$ackermann_48_1451" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_48" + %"$$ackermann_48_fptr_1452" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_48_1451", 0 + %"$$ackermann_48_envptr_1453" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_48_1451", 1 + %"$n2_1454" = load %TName_Nat*, %TName_Nat** %n2 + %"$$ackermann_48_call_1455" = call %TName_Nat* %"$$ackermann_48_fptr_1452"(i8* %"$$ackermann_48_envptr_1453", %TName_Nat* %"$n2_1454") + store %TName_Nat* %"$$ackermann_48_call_1455", %TName_Nat** %"$ackermann_49" + %"$$ackermann_49_1456" = load %TName_Nat*, %TName_Nat** %"$ackermann_49" + store %TName_Nat* %"$$ackermann_49_1456", %TName_Nat** %ack12 + %"$gasrem_1457" = load i64, i64* @_gasrem + %"$gascmp_1458" = icmp ugt i64 1, %"$gasrem_1457" + br i1 %"$gascmp_1458", label %"$out_of_gas_1459", label %"$have_gas_1460" + +"$out_of_gas_1459": ; preds = %"$have_gas_1444" + call void @_out_of_gas() + br label %"$have_gas_1460" + +"$have_gas_1460": ; preds = %"$out_of_gas_1459", %"$have_gas_1444" + %"$consume_1461" = sub i64 %"$gasrem_1457", 1 + store i64 %"$consume_1461", i64* @_gasrem %ack13 = alloca %TName_Nat* + %"$gasrem_1462" = load i64, i64* @_gasrem + %"$gascmp_1463" = icmp ugt i64 1, %"$gasrem_1462" + br i1 %"$gascmp_1463", label %"$out_of_gas_1464", label %"$have_gas_1465" + +"$out_of_gas_1464": ; preds = %"$have_gas_1460" + call void @_out_of_gas() + br label %"$have_gas_1465" + +"$have_gas_1465": ; preds = %"$out_of_gas_1464", %"$have_gas_1460" + %"$consume_1466" = sub i64 %"$gasrem_1462", 1 + store i64 %"$consume_1466", i64* @_gasrem %"$ackermann_50" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_902" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_903" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_902", 0 - %"$ackermann_envptr_904" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_902", 1 - %"$n1_905" = load %TName_Nat*, %TName_Nat** %n1 - %"$ackermann_call_906" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_903"(i8* %"$ackermann_envptr_904", %TName_Nat* %"$n1_905") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_906", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_50" + %"$ackermann_1467" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1468" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1467", 0 + %"$ackermann_envptr_1469" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1467", 1 + %"$n1_1470" = load %TName_Nat*, %TName_Nat** %n1 + %"$ackermann_call_1471" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1468"(i8* %"$ackermann_envptr_1469", %TName_Nat* %"$n1_1470") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1471", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_50" %"$ackermann_51" = alloca %TName_Nat* - %"$$ackermann_50_907" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_50" - %"$$ackermann_50_fptr_908" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_50_907", 0 - %"$$ackermann_50_envptr_909" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_50_907", 1 - %"$n3_910" = load %TName_Nat*, %TName_Nat** %n3 - %"$$ackermann_50_call_911" = call %TName_Nat* %"$$ackermann_50_fptr_908"(i8* %"$$ackermann_50_envptr_909", %TName_Nat* %"$n3_910") - store %TName_Nat* %"$$ackermann_50_call_911", %TName_Nat** %"$ackermann_51" - %"$$ackermann_51_912" = load %TName_Nat*, %TName_Nat** %"$ackermann_51" - store %TName_Nat* %"$$ackermann_51_912", %TName_Nat** %ack13 + %"$$ackermann_50_1472" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_50" + %"$$ackermann_50_fptr_1473" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_50_1472", 0 + %"$$ackermann_50_envptr_1474" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_50_1472", 1 + %"$n3_1475" = load %TName_Nat*, %TName_Nat** %n3 + %"$$ackermann_50_call_1476" = call %TName_Nat* %"$$ackermann_50_fptr_1473"(i8* %"$$ackermann_50_envptr_1474", %TName_Nat* %"$n3_1475") + store %TName_Nat* %"$$ackermann_50_call_1476", %TName_Nat** %"$ackermann_51" + %"$$ackermann_51_1477" = load %TName_Nat*, %TName_Nat** %"$ackermann_51" + store %TName_Nat* %"$$ackermann_51_1477", %TName_Nat** %ack13 + %"$gasrem_1478" = load i64, i64* @_gasrem + %"$gascmp_1479" = icmp ugt i64 1, %"$gasrem_1478" + br i1 %"$gascmp_1479", label %"$out_of_gas_1480", label %"$have_gas_1481" + +"$out_of_gas_1480": ; preds = %"$have_gas_1465" + call void @_out_of_gas() + br label %"$have_gas_1481" + +"$have_gas_1481": ; preds = %"$out_of_gas_1480", %"$have_gas_1465" + %"$consume_1482" = sub i64 %"$gasrem_1478", 1 + store i64 %"$consume_1482", i64* @_gasrem %ack14 = alloca %TName_Nat* + %"$gasrem_1483" = load i64, i64* @_gasrem + %"$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 %"$ackermann_52" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_913" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_914" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_913", 0 - %"$ackermann_envptr_915" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_913", 1 - %"$n1_916" = load %TName_Nat*, %TName_Nat** %n1 - %"$ackermann_call_917" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_914"(i8* %"$ackermann_envptr_915", %TName_Nat* %"$n1_916") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_917", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_52" + %"$ackermann_1488" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1489" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1488", 0 + %"$ackermann_envptr_1490" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1488", 1 + %"$n1_1491" = load %TName_Nat*, %TName_Nat** %n1 + %"$ackermann_call_1492" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1489"(i8* %"$ackermann_envptr_1490", %TName_Nat* %"$n1_1491") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1492", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_52" %"$ackermann_53" = alloca %TName_Nat* - %"$$ackermann_52_918" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_52" - %"$$ackermann_52_fptr_919" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_52_918", 0 - %"$$ackermann_52_envptr_920" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_52_918", 1 - %"$n4_921" = load %TName_Nat*, %TName_Nat** %n4 - %"$$ackermann_52_call_922" = call %TName_Nat* %"$$ackermann_52_fptr_919"(i8* %"$$ackermann_52_envptr_920", %TName_Nat* %"$n4_921") - store %TName_Nat* %"$$ackermann_52_call_922", %TName_Nat** %"$ackermann_53" - %"$$ackermann_53_923" = load %TName_Nat*, %TName_Nat** %"$ackermann_53" - store %TName_Nat* %"$$ackermann_53_923", %TName_Nat** %ack14 + %"$$ackermann_52_1493" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_52" + %"$$ackermann_52_fptr_1494" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_52_1493", 0 + %"$$ackermann_52_envptr_1495" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_52_1493", 1 + %"$n4_1496" = load %TName_Nat*, %TName_Nat** %n4 + %"$$ackermann_52_call_1497" = call %TName_Nat* %"$$ackermann_52_fptr_1494"(i8* %"$$ackermann_52_envptr_1495", %TName_Nat* %"$n4_1496") + store %TName_Nat* %"$$ackermann_52_call_1497", %TName_Nat** %"$ackermann_53" + %"$$ackermann_53_1498" = load %TName_Nat*, %TName_Nat** %"$ackermann_53" + store %TName_Nat* %"$$ackermann_53_1498", %TName_Nat** %ack14 + %"$gasrem_1499" = load i64, i64* @_gasrem + %"$gascmp_1500" = icmp ugt i64 1, %"$gasrem_1499" + br i1 %"$gascmp_1500", label %"$out_of_gas_1501", label %"$have_gas_1502" + +"$out_of_gas_1501": ; preds = %"$have_gas_1486" + call void @_out_of_gas() + br label %"$have_gas_1502" + +"$have_gas_1502": ; preds = %"$out_of_gas_1501", %"$have_gas_1486" + %"$consume_1503" = sub i64 %"$gasrem_1499", 1 + store i64 %"$consume_1503", i64* @_gasrem %ack20 = alloca %TName_Nat* + %"$gasrem_1504" = load i64, i64* @_gasrem + %"$gascmp_1505" = icmp ugt i64 1, %"$gasrem_1504" + br i1 %"$gascmp_1505", label %"$out_of_gas_1506", label %"$have_gas_1507" + +"$out_of_gas_1506": ; preds = %"$have_gas_1502" + call void @_out_of_gas() + br label %"$have_gas_1507" + +"$have_gas_1507": ; preds = %"$out_of_gas_1506", %"$have_gas_1502" + %"$consume_1508" = sub i64 %"$gasrem_1504", 1 + store i64 %"$consume_1508", i64* @_gasrem %"$ackermann_54" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_924" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_925" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_924", 0 - %"$ackermann_envptr_926" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_924", 1 - %"$n2_927" = load %TName_Nat*, %TName_Nat** %n2 - %"$ackermann_call_928" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_925"(i8* %"$ackermann_envptr_926", %TName_Nat* %"$n2_927") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_928", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_54" + %"$ackermann_1509" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1510" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1509", 0 + %"$ackermann_envptr_1511" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1509", 1 + %"$n2_1512" = load %TName_Nat*, %TName_Nat** %n2 + %"$ackermann_call_1513" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1510"(i8* %"$ackermann_envptr_1511", %TName_Nat* %"$n2_1512") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1513", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_54" %"$ackermann_55" = alloca %TName_Nat* - %"$$ackermann_54_929" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_54" - %"$$ackermann_54_fptr_930" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_54_929", 0 - %"$$ackermann_54_envptr_931" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_54_929", 1 - %"$n0_932" = load %TName_Nat*, %TName_Nat** %n0 - %"$$ackermann_54_call_933" = call %TName_Nat* %"$$ackermann_54_fptr_930"(i8* %"$$ackermann_54_envptr_931", %TName_Nat* %"$n0_932") - store %TName_Nat* %"$$ackermann_54_call_933", %TName_Nat** %"$ackermann_55" - %"$$ackermann_55_934" = load %TName_Nat*, %TName_Nat** %"$ackermann_55" - store %TName_Nat* %"$$ackermann_55_934", %TName_Nat** %ack20 + %"$$ackermann_54_1514" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_54" + %"$$ackermann_54_fptr_1515" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_54_1514", 0 + %"$$ackermann_54_envptr_1516" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_54_1514", 1 + %"$n0_1517" = load %TName_Nat*, %TName_Nat** %n0 + %"$$ackermann_54_call_1518" = call %TName_Nat* %"$$ackermann_54_fptr_1515"(i8* %"$$ackermann_54_envptr_1516", %TName_Nat* %"$n0_1517") + store %TName_Nat* %"$$ackermann_54_call_1518", %TName_Nat** %"$ackermann_55" + %"$$ackermann_55_1519" = load %TName_Nat*, %TName_Nat** %"$ackermann_55" + store %TName_Nat* %"$$ackermann_55_1519", %TName_Nat** %ack20 + %"$gasrem_1520" = load i64, i64* @_gasrem + %"$gascmp_1521" = icmp ugt i64 1, %"$gasrem_1520" + br i1 %"$gascmp_1521", label %"$out_of_gas_1522", label %"$have_gas_1523" + +"$out_of_gas_1522": ; preds = %"$have_gas_1507" + call void @_out_of_gas() + br label %"$have_gas_1523" + +"$have_gas_1523": ; preds = %"$out_of_gas_1522", %"$have_gas_1507" + %"$consume_1524" = sub i64 %"$gasrem_1520", 1 + store i64 %"$consume_1524", i64* @_gasrem %ack21 = alloca %TName_Nat* + %"$gasrem_1525" = load i64, i64* @_gasrem + %"$gascmp_1526" = icmp ugt i64 1, %"$gasrem_1525" + br i1 %"$gascmp_1526", label %"$out_of_gas_1527", label %"$have_gas_1528" + +"$out_of_gas_1527": ; preds = %"$have_gas_1523" + call void @_out_of_gas() + br label %"$have_gas_1528" + +"$have_gas_1528": ; preds = %"$out_of_gas_1527", %"$have_gas_1523" + %"$consume_1529" = sub i64 %"$gasrem_1525", 1 + store i64 %"$consume_1529", i64* @_gasrem %"$ackermann_56" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_935" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_936" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_935", 0 - %"$ackermann_envptr_937" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_935", 1 - %"$n2_938" = load %TName_Nat*, %TName_Nat** %n2 - %"$ackermann_call_939" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_936"(i8* %"$ackermann_envptr_937", %TName_Nat* %"$n2_938") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_939", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_56" + %"$ackermann_1530" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1531" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1530", 0 + %"$ackermann_envptr_1532" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1530", 1 + %"$n2_1533" = load %TName_Nat*, %TName_Nat** %n2 + %"$ackermann_call_1534" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1531"(i8* %"$ackermann_envptr_1532", %TName_Nat* %"$n2_1533") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1534", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_56" %"$ackermann_57" = alloca %TName_Nat* - %"$$ackermann_56_940" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_56" - %"$$ackermann_56_fptr_941" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_56_940", 0 - %"$$ackermann_56_envptr_942" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_56_940", 1 - %"$n1_943" = load %TName_Nat*, %TName_Nat** %n1 - %"$$ackermann_56_call_944" = call %TName_Nat* %"$$ackermann_56_fptr_941"(i8* %"$$ackermann_56_envptr_942", %TName_Nat* %"$n1_943") - store %TName_Nat* %"$$ackermann_56_call_944", %TName_Nat** %"$ackermann_57" - %"$$ackermann_57_945" = load %TName_Nat*, %TName_Nat** %"$ackermann_57" - store %TName_Nat* %"$$ackermann_57_945", %TName_Nat** %ack21 + %"$$ackermann_56_1535" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_56" + %"$$ackermann_56_fptr_1536" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_56_1535", 0 + %"$$ackermann_56_envptr_1537" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_56_1535", 1 + %"$n1_1538" = load %TName_Nat*, %TName_Nat** %n1 + %"$$ackermann_56_call_1539" = call %TName_Nat* %"$$ackermann_56_fptr_1536"(i8* %"$$ackermann_56_envptr_1537", %TName_Nat* %"$n1_1538") + store %TName_Nat* %"$$ackermann_56_call_1539", %TName_Nat** %"$ackermann_57" + %"$$ackermann_57_1540" = load %TName_Nat*, %TName_Nat** %"$ackermann_57" + store %TName_Nat* %"$$ackermann_57_1540", %TName_Nat** %ack21 + %"$gasrem_1541" = load i64, i64* @_gasrem + %"$gascmp_1542" = icmp ugt i64 1, %"$gasrem_1541" + br i1 %"$gascmp_1542", label %"$out_of_gas_1543", label %"$have_gas_1544" + +"$out_of_gas_1543": ; preds = %"$have_gas_1528" + call void @_out_of_gas() + br label %"$have_gas_1544" + +"$have_gas_1544": ; preds = %"$out_of_gas_1543", %"$have_gas_1528" + %"$consume_1545" = sub i64 %"$gasrem_1541", 1 + store i64 %"$consume_1545", i64* @_gasrem %ack22 = alloca %TName_Nat* + %"$gasrem_1546" = load i64, i64* @_gasrem + %"$gascmp_1547" = icmp ugt i64 1, %"$gasrem_1546" + br i1 %"$gascmp_1547", label %"$out_of_gas_1548", label %"$have_gas_1549" + +"$out_of_gas_1548": ; preds = %"$have_gas_1544" + call void @_out_of_gas() + br label %"$have_gas_1549" + +"$have_gas_1549": ; preds = %"$out_of_gas_1548", %"$have_gas_1544" + %"$consume_1550" = sub i64 %"$gasrem_1546", 1 + store i64 %"$consume_1550", i64* @_gasrem %"$ackermann_58" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_946" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_947" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_946", 0 - %"$ackermann_envptr_948" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_946", 1 - %"$n2_949" = load %TName_Nat*, %TName_Nat** %n2 - %"$ackermann_call_950" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_947"(i8* %"$ackermann_envptr_948", %TName_Nat* %"$n2_949") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_950", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_58" + %"$ackermann_1551" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1552" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1551", 0 + %"$ackermann_envptr_1553" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1551", 1 + %"$n2_1554" = load %TName_Nat*, %TName_Nat** %n2 + %"$ackermann_call_1555" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1552"(i8* %"$ackermann_envptr_1553", %TName_Nat* %"$n2_1554") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1555", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_58" %"$ackermann_59" = alloca %TName_Nat* - %"$$ackermann_58_951" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_58" - %"$$ackermann_58_fptr_952" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_58_951", 0 - %"$$ackermann_58_envptr_953" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_58_951", 1 - %"$n2_954" = load %TName_Nat*, %TName_Nat** %n2 - %"$$ackermann_58_call_955" = call %TName_Nat* %"$$ackermann_58_fptr_952"(i8* %"$$ackermann_58_envptr_953", %TName_Nat* %"$n2_954") - store %TName_Nat* %"$$ackermann_58_call_955", %TName_Nat** %"$ackermann_59" - %"$$ackermann_59_956" = load %TName_Nat*, %TName_Nat** %"$ackermann_59" - store %TName_Nat* %"$$ackermann_59_956", %TName_Nat** %ack22 + %"$$ackermann_58_1556" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_58" + %"$$ackermann_58_fptr_1557" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_58_1556", 0 + %"$$ackermann_58_envptr_1558" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_58_1556", 1 + %"$n2_1559" = load %TName_Nat*, %TName_Nat** %n2 + %"$$ackermann_58_call_1560" = call %TName_Nat* %"$$ackermann_58_fptr_1557"(i8* %"$$ackermann_58_envptr_1558", %TName_Nat* %"$n2_1559") + store %TName_Nat* %"$$ackermann_58_call_1560", %TName_Nat** %"$ackermann_59" + %"$$ackermann_59_1561" = load %TName_Nat*, %TName_Nat** %"$ackermann_59" + store %TName_Nat* %"$$ackermann_59_1561", %TName_Nat** %ack22 + %"$gasrem_1562" = load i64, i64* @_gasrem + %"$gascmp_1563" = icmp ugt i64 1, %"$gasrem_1562" + br i1 %"$gascmp_1563", label %"$out_of_gas_1564", label %"$have_gas_1565" + +"$out_of_gas_1564": ; preds = %"$have_gas_1549" + call void @_out_of_gas() + br label %"$have_gas_1565" + +"$have_gas_1565": ; preds = %"$out_of_gas_1564", %"$have_gas_1549" + %"$consume_1566" = sub i64 %"$gasrem_1562", 1 + store i64 %"$consume_1566", i64* @_gasrem %ack23 = alloca %TName_Nat* + %"$gasrem_1567" = load i64, i64* @_gasrem + %"$gascmp_1568" = icmp ugt i64 1, %"$gasrem_1567" + br i1 %"$gascmp_1568", label %"$out_of_gas_1569", label %"$have_gas_1570" + +"$out_of_gas_1569": ; preds = %"$have_gas_1565" + call void @_out_of_gas() + br label %"$have_gas_1570" + +"$have_gas_1570": ; preds = %"$out_of_gas_1569", %"$have_gas_1565" + %"$consume_1571" = sub i64 %"$gasrem_1567", 1 + store i64 %"$consume_1571", i64* @_gasrem %"$ackermann_60" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_957" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_958" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_957", 0 - %"$ackermann_envptr_959" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_957", 1 - %"$n2_960" = load %TName_Nat*, %TName_Nat** %n2 - %"$ackermann_call_961" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_958"(i8* %"$ackermann_envptr_959", %TName_Nat* %"$n2_960") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_961", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_60" + %"$ackermann_1572" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1573" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1572", 0 + %"$ackermann_envptr_1574" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1572", 1 + %"$n2_1575" = load %TName_Nat*, %TName_Nat** %n2 + %"$ackermann_call_1576" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1573"(i8* %"$ackermann_envptr_1574", %TName_Nat* %"$n2_1575") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1576", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_60" %"$ackermann_61" = alloca %TName_Nat* - %"$$ackermann_60_962" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_60" - %"$$ackermann_60_fptr_963" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_60_962", 0 - %"$$ackermann_60_envptr_964" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_60_962", 1 - %"$n3_965" = load %TName_Nat*, %TName_Nat** %n3 - %"$$ackermann_60_call_966" = call %TName_Nat* %"$$ackermann_60_fptr_963"(i8* %"$$ackermann_60_envptr_964", %TName_Nat* %"$n3_965") - store %TName_Nat* %"$$ackermann_60_call_966", %TName_Nat** %"$ackermann_61" - %"$$ackermann_61_967" = load %TName_Nat*, %TName_Nat** %"$ackermann_61" - store %TName_Nat* %"$$ackermann_61_967", %TName_Nat** %ack23 + %"$$ackermann_60_1577" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_60" + %"$$ackermann_60_fptr_1578" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_60_1577", 0 + %"$$ackermann_60_envptr_1579" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_60_1577", 1 + %"$n3_1580" = load %TName_Nat*, %TName_Nat** %n3 + %"$$ackermann_60_call_1581" = call %TName_Nat* %"$$ackermann_60_fptr_1578"(i8* %"$$ackermann_60_envptr_1579", %TName_Nat* %"$n3_1580") + store %TName_Nat* %"$$ackermann_60_call_1581", %TName_Nat** %"$ackermann_61" + %"$$ackermann_61_1582" = load %TName_Nat*, %TName_Nat** %"$ackermann_61" + store %TName_Nat* %"$$ackermann_61_1582", %TName_Nat** %ack23 + %"$gasrem_1583" = load i64, i64* @_gasrem + %"$gascmp_1584" = icmp ugt i64 1, %"$gasrem_1583" + br i1 %"$gascmp_1584", label %"$out_of_gas_1585", label %"$have_gas_1586" + +"$out_of_gas_1585": ; preds = %"$have_gas_1570" + call void @_out_of_gas() + br label %"$have_gas_1586" + +"$have_gas_1586": ; preds = %"$out_of_gas_1585", %"$have_gas_1570" + %"$consume_1587" = sub i64 %"$gasrem_1583", 1 + store i64 %"$consume_1587", i64* @_gasrem + %"$gasrem_1588" = load i64, i64* @_gasrem + %"$gascmp_1589" = icmp ugt i64 1, %"$gasrem_1588" + br i1 %"$gascmp_1589", label %"$out_of_gas_1590", label %"$have_gas_1591" + +"$out_of_gas_1590": ; preds = %"$have_gas_1586" + call void @_out_of_gas() + br label %"$have_gas_1591" + +"$have_gas_1591": ; preds = %"$out_of_gas_1590", %"$have_gas_1586" + %"$consume_1592" = sub i64 %"$gasrem_1588", 1 + store i64 %"$consume_1592", i64* @_gasrem %ack30 = alloca %TName_Nat* + %"$gasrem_1593" = load i64, i64* @_gasrem + %"$gascmp_1594" = icmp ugt i64 1, %"$gasrem_1593" + br i1 %"$gascmp_1594", label %"$out_of_gas_1595", label %"$have_gas_1596" + +"$out_of_gas_1595": ; preds = %"$have_gas_1591" + call void @_out_of_gas() + br label %"$have_gas_1596" + +"$have_gas_1596": ; preds = %"$out_of_gas_1595", %"$have_gas_1591" + %"$consume_1597" = sub i64 %"$gasrem_1593", 1 + store i64 %"$consume_1597", i64* @_gasrem %"$ackermann_62" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_968" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_969" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_968", 0 - %"$ackermann_envptr_970" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_968", 1 - %"$n3_971" = load %TName_Nat*, %TName_Nat** %n3 - %"$ackermann_call_972" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_969"(i8* %"$ackermann_envptr_970", %TName_Nat* %"$n3_971") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_972", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_62" + %"$ackermann_1598" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1599" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1598", 0 + %"$ackermann_envptr_1600" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1598", 1 + %"$n3_1601" = load %TName_Nat*, %TName_Nat** %n3 + %"$ackermann_call_1602" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1599"(i8* %"$ackermann_envptr_1600", %TName_Nat* %"$n3_1601") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1602", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_62" %"$ackermann_63" = alloca %TName_Nat* - %"$$ackermann_62_973" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_62" - %"$$ackermann_62_fptr_974" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_62_973", 0 - %"$$ackermann_62_envptr_975" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_62_973", 1 - %"$n0_976" = load %TName_Nat*, %TName_Nat** %n0 - %"$$ackermann_62_call_977" = call %TName_Nat* %"$$ackermann_62_fptr_974"(i8* %"$$ackermann_62_envptr_975", %TName_Nat* %"$n0_976") - store %TName_Nat* %"$$ackermann_62_call_977", %TName_Nat** %"$ackermann_63" - %"$$ackermann_63_978" = load %TName_Nat*, %TName_Nat** %"$ackermann_63" - store %TName_Nat* %"$$ackermann_63_978", %TName_Nat** %ack30 + %"$$ackermann_62_1603" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_62" + %"$$ackermann_62_fptr_1604" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_62_1603", 0 + %"$$ackermann_62_envptr_1605" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_62_1603", 1 + %"$n0_1606" = load %TName_Nat*, %TName_Nat** %n0 + %"$$ackermann_62_call_1607" = call %TName_Nat* %"$$ackermann_62_fptr_1604"(i8* %"$$ackermann_62_envptr_1605", %TName_Nat* %"$n0_1606") + store %TName_Nat* %"$$ackermann_62_call_1607", %TName_Nat** %"$ackermann_63" + %"$$ackermann_63_1608" = load %TName_Nat*, %TName_Nat** %"$ackermann_63" + store %TName_Nat* %"$$ackermann_63_1608", %TName_Nat** %ack30 + %"$gasrem_1609" = load i64, i64* @_gasrem + %"$gascmp_1610" = icmp ugt i64 1, %"$gasrem_1609" + br i1 %"$gascmp_1610", label %"$out_of_gas_1611", label %"$have_gas_1612" + +"$out_of_gas_1611": ; preds = %"$have_gas_1596" + call void @_out_of_gas() + br label %"$have_gas_1612" + +"$have_gas_1612": ; preds = %"$out_of_gas_1611", %"$have_gas_1596" + %"$consume_1613" = sub i64 %"$gasrem_1609", 1 + store i64 %"$consume_1613", i64* @_gasrem %ack31 = alloca %TName_Nat* + %"$gasrem_1614" = load i64, i64* @_gasrem + %"$gascmp_1615" = icmp ugt i64 1, %"$gasrem_1614" + br i1 %"$gascmp_1615", label %"$out_of_gas_1616", label %"$have_gas_1617" + +"$out_of_gas_1616": ; preds = %"$have_gas_1612" + call void @_out_of_gas() + br label %"$have_gas_1617" + +"$have_gas_1617": ; preds = %"$out_of_gas_1616", %"$have_gas_1612" + %"$consume_1618" = sub i64 %"$gasrem_1614", 1 + store i64 %"$consume_1618", i64* @_gasrem %"$ackermann_64" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_979" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_980" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_979", 0 - %"$ackermann_envptr_981" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_979", 1 - %"$n3_982" = load %TName_Nat*, %TName_Nat** %n3 - %"$ackermann_call_983" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_980"(i8* %"$ackermann_envptr_981", %TName_Nat* %"$n3_982") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_983", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_64" + %"$ackermann_1619" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1620" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1619", 0 + %"$ackermann_envptr_1621" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1619", 1 + %"$n3_1622" = load %TName_Nat*, %TName_Nat** %n3 + %"$ackermann_call_1623" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1620"(i8* %"$ackermann_envptr_1621", %TName_Nat* %"$n3_1622") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1623", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_64" %"$ackermann_65" = alloca %TName_Nat* - %"$$ackermann_64_984" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_64" - %"$$ackermann_64_fptr_985" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_64_984", 0 - %"$$ackermann_64_envptr_986" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_64_984", 1 - %"$n1_987" = load %TName_Nat*, %TName_Nat** %n1 - %"$$ackermann_64_call_988" = call %TName_Nat* %"$$ackermann_64_fptr_985"(i8* %"$$ackermann_64_envptr_986", %TName_Nat* %"$n1_987") - store %TName_Nat* %"$$ackermann_64_call_988", %TName_Nat** %"$ackermann_65" - %"$$ackermann_65_989" = load %TName_Nat*, %TName_Nat** %"$ackermann_65" - store %TName_Nat* %"$$ackermann_65_989", %TName_Nat** %ack31 + %"$$ackermann_64_1624" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_64" + %"$$ackermann_64_fptr_1625" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_64_1624", 0 + %"$$ackermann_64_envptr_1626" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_64_1624", 1 + %"$n1_1627" = load %TName_Nat*, %TName_Nat** %n1 + %"$$ackermann_64_call_1628" = call %TName_Nat* %"$$ackermann_64_fptr_1625"(i8* %"$$ackermann_64_envptr_1626", %TName_Nat* %"$n1_1627") + store %TName_Nat* %"$$ackermann_64_call_1628", %TName_Nat** %"$ackermann_65" + %"$$ackermann_65_1629" = load %TName_Nat*, %TName_Nat** %"$ackermann_65" + store %TName_Nat* %"$$ackermann_65_1629", %TName_Nat** %ack31 + %"$gasrem_1630" = load i64, i64* @_gasrem + %"$gascmp_1631" = icmp ugt i64 1, %"$gasrem_1630" + br i1 %"$gascmp_1631", label %"$out_of_gas_1632", label %"$have_gas_1633" + +"$out_of_gas_1632": ; preds = %"$have_gas_1617" + call void @_out_of_gas() + br label %"$have_gas_1633" + +"$have_gas_1633": ; preds = %"$out_of_gas_1632", %"$have_gas_1617" + %"$consume_1634" = sub i64 %"$gasrem_1630", 1 + store i64 %"$consume_1634", i64* @_gasrem %ack32 = alloca %TName_Nat* + %"$gasrem_1635" = load i64, i64* @_gasrem + %"$gascmp_1636" = icmp ugt i64 1, %"$gasrem_1635" + br i1 %"$gascmp_1636", label %"$out_of_gas_1637", label %"$have_gas_1638" + +"$out_of_gas_1637": ; preds = %"$have_gas_1633" + call void @_out_of_gas() + br label %"$have_gas_1638" + +"$have_gas_1638": ; preds = %"$out_of_gas_1637", %"$have_gas_1633" + %"$consume_1639" = sub i64 %"$gasrem_1635", 1 + store i64 %"$consume_1639", i64* @_gasrem %"$ackermann_66" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_990" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_991" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_990", 0 - %"$ackermann_envptr_992" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_990", 1 - %"$n3_993" = load %TName_Nat*, %TName_Nat** %n3 - %"$ackermann_call_994" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_991"(i8* %"$ackermann_envptr_992", %TName_Nat* %"$n3_993") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_994", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_66" + %"$ackermann_1640" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1641" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1640", 0 + %"$ackermann_envptr_1642" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1640", 1 + %"$n3_1643" = load %TName_Nat*, %TName_Nat** %n3 + %"$ackermann_call_1644" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1641"(i8* %"$ackermann_envptr_1642", %TName_Nat* %"$n3_1643") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1644", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_66" %"$ackermann_67" = alloca %TName_Nat* - %"$$ackermann_66_995" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_66" - %"$$ackermann_66_fptr_996" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_66_995", 0 - %"$$ackermann_66_envptr_997" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_66_995", 1 - %"$n2_998" = load %TName_Nat*, %TName_Nat** %n2 - %"$$ackermann_66_call_999" = call %TName_Nat* %"$$ackermann_66_fptr_996"(i8* %"$$ackermann_66_envptr_997", %TName_Nat* %"$n2_998") - store %TName_Nat* %"$$ackermann_66_call_999", %TName_Nat** %"$ackermann_67" - %"$$ackermann_67_1000" = load %TName_Nat*, %TName_Nat** %"$ackermann_67" - store %TName_Nat* %"$$ackermann_67_1000", %TName_Nat** %ack32 + %"$$ackermann_66_1645" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_66" + %"$$ackermann_66_fptr_1646" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_66_1645", 0 + %"$$ackermann_66_envptr_1647" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_66_1645", 1 + %"$n2_1648" = load %TName_Nat*, %TName_Nat** %n2 + %"$$ackermann_66_call_1649" = call %TName_Nat* %"$$ackermann_66_fptr_1646"(i8* %"$$ackermann_66_envptr_1647", %TName_Nat* %"$n2_1648") + store %TName_Nat* %"$$ackermann_66_call_1649", %TName_Nat** %"$ackermann_67" + %"$$ackermann_67_1650" = load %TName_Nat*, %TName_Nat** %"$ackermann_67" + store %TName_Nat* %"$$ackermann_67_1650", %TName_Nat** %ack32 + %"$gasrem_1651" = load i64, i64* @_gasrem + %"$gascmp_1652" = icmp ugt i64 1, %"$gasrem_1651" + br i1 %"$gascmp_1652", label %"$out_of_gas_1653", label %"$have_gas_1654" + +"$out_of_gas_1653": ; preds = %"$have_gas_1638" + call void @_out_of_gas() + br label %"$have_gas_1654" + +"$have_gas_1654": ; preds = %"$out_of_gas_1653", %"$have_gas_1638" + %"$consume_1655" = sub i64 %"$gasrem_1651", 1 + store i64 %"$consume_1655", i64* @_gasrem %ack33 = alloca %TName_Nat* + %"$gasrem_1656" = load i64, i64* @_gasrem + %"$gascmp_1657" = icmp ugt i64 1, %"$gasrem_1656" + br i1 %"$gascmp_1657", label %"$out_of_gas_1658", label %"$have_gas_1659" + +"$out_of_gas_1658": ; preds = %"$have_gas_1654" + call void @_out_of_gas() + br label %"$have_gas_1659" + +"$have_gas_1659": ; preds = %"$out_of_gas_1658", %"$have_gas_1654" + %"$consume_1660" = sub i64 %"$gasrem_1656", 1 + store i64 %"$consume_1660", i64* @_gasrem %"$ackermann_68" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_1001" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_1002" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1001", 0 - %"$ackermann_envptr_1003" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1001", 1 - %"$n3_1004" = load %TName_Nat*, %TName_Nat** %n3 - %"$ackermann_call_1005" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1002"(i8* %"$ackermann_envptr_1003", %TName_Nat* %"$n3_1004") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1005", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_68" + %"$ackermann_1661" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1662" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1661", 0 + %"$ackermann_envptr_1663" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1661", 1 + %"$n3_1664" = load %TName_Nat*, %TName_Nat** %n3 + %"$ackermann_call_1665" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1662"(i8* %"$ackermann_envptr_1663", %TName_Nat* %"$n3_1664") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1665", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_68" %"$ackermann_69" = alloca %TName_Nat* - %"$$ackermann_68_1006" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_68" - %"$$ackermann_68_fptr_1007" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_68_1006", 0 - %"$$ackermann_68_envptr_1008" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_68_1006", 1 - %"$n3_1009" = load %TName_Nat*, %TName_Nat** %n3 - %"$$ackermann_68_call_1010" = call %TName_Nat* %"$$ackermann_68_fptr_1007"(i8* %"$$ackermann_68_envptr_1008", %TName_Nat* %"$n3_1009") - store %TName_Nat* %"$$ackermann_68_call_1010", %TName_Nat** %"$ackermann_69" - %"$$ackermann_69_1011" = load %TName_Nat*, %TName_Nat** %"$ackermann_69" - store %TName_Nat* %"$$ackermann_69_1011", %TName_Nat** %ack33 + %"$$ackermann_68_1666" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_68" + %"$$ackermann_68_fptr_1667" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_68_1666", 0 + %"$$ackermann_68_envptr_1668" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_68_1666", 1 + %"$n3_1669" = load %TName_Nat*, %TName_Nat** %n3 + %"$$ackermann_68_call_1670" = call %TName_Nat* %"$$ackermann_68_fptr_1667"(i8* %"$$ackermann_68_envptr_1668", %TName_Nat* %"$n3_1669") + store %TName_Nat* %"$$ackermann_68_call_1670", %TName_Nat** %"$ackermann_69" + %"$$ackermann_69_1671" = load %TName_Nat*, %TName_Nat** %"$ackermann_69" + store %TName_Nat* %"$$ackermann_69_1671", %TName_Nat** %ack33 + %"$gasrem_1672" = load i64, i64* @_gasrem + %"$gascmp_1673" = icmp ugt i64 1, %"$gasrem_1672" + br i1 %"$gascmp_1673", label %"$out_of_gas_1674", label %"$have_gas_1675" + +"$out_of_gas_1674": ; preds = %"$have_gas_1659" + call void @_out_of_gas() + br label %"$have_gas_1675" + +"$have_gas_1675": ; preds = %"$out_of_gas_1674", %"$have_gas_1659" + %"$consume_1676" = sub i64 %"$gasrem_1672", 1 + store i64 %"$consume_1676", i64* @_gasrem %ack34 = alloca %TName_Nat* + %"$gasrem_1677" = load i64, i64* @_gasrem + %"$gascmp_1678" = icmp ugt i64 1, %"$gasrem_1677" + br i1 %"$gascmp_1678", label %"$out_of_gas_1679", label %"$have_gas_1680" + +"$out_of_gas_1679": ; preds = %"$have_gas_1675" + call void @_out_of_gas() + br label %"$have_gas_1680" + +"$have_gas_1680": ; preds = %"$out_of_gas_1679", %"$have_gas_1675" + %"$consume_1681" = sub i64 %"$gasrem_1677", 1 + store i64 %"$consume_1681", i64* @_gasrem %"$ackermann_70" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_1012" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_1013" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1012", 0 - %"$ackermann_envptr_1014" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1012", 1 - %"$n3_1015" = load %TName_Nat*, %TName_Nat** %n3 - %"$ackermann_call_1016" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1013"(i8* %"$ackermann_envptr_1014", %TName_Nat* %"$n3_1015") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1016", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_70" + %"$ackermann_1682" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1683" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1682", 0 + %"$ackermann_envptr_1684" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1682", 1 + %"$n3_1685" = load %TName_Nat*, %TName_Nat** %n3 + %"$ackermann_call_1686" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1683"(i8* %"$ackermann_envptr_1684", %TName_Nat* %"$n3_1685") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1686", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_70" %"$ackermann_71" = alloca %TName_Nat* - %"$$ackermann_70_1017" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_70" - %"$$ackermann_70_fptr_1018" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_70_1017", 0 - %"$$ackermann_70_envptr_1019" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_70_1017", 1 - %"$n4_1020" = load %TName_Nat*, %TName_Nat** %n4 - %"$$ackermann_70_call_1021" = call %TName_Nat* %"$$ackermann_70_fptr_1018"(i8* %"$$ackermann_70_envptr_1019", %TName_Nat* %"$n4_1020") - store %TName_Nat* %"$$ackermann_70_call_1021", %TName_Nat** %"$ackermann_71" - %"$$ackermann_71_1022" = load %TName_Nat*, %TName_Nat** %"$ackermann_71" - store %TName_Nat* %"$$ackermann_71_1022", %TName_Nat** %ack34 + %"$$ackermann_70_1687" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_70" + %"$$ackermann_70_fptr_1688" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_70_1687", 0 + %"$$ackermann_70_envptr_1689" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_70_1687", 1 + %"$n4_1690" = load %TName_Nat*, %TName_Nat** %n4 + %"$$ackermann_70_call_1691" = call %TName_Nat* %"$$ackermann_70_fptr_1688"(i8* %"$$ackermann_70_envptr_1689", %TName_Nat* %"$n4_1690") + store %TName_Nat* %"$$ackermann_70_call_1691", %TName_Nat** %"$ackermann_71" + %"$$ackermann_71_1692" = load %TName_Nat*, %TName_Nat** %"$ackermann_71" + store %TName_Nat* %"$$ackermann_71_1692", %TName_Nat** %ack34 + %"$gasrem_1693" = load i64, i64* @_gasrem + %"$gascmp_1694" = icmp ugt i64 1, %"$gasrem_1693" + br i1 %"$gascmp_1694", label %"$out_of_gas_1695", label %"$have_gas_1696" + +"$out_of_gas_1695": ; preds = %"$have_gas_1680" + call void @_out_of_gas() + br label %"$have_gas_1696" + +"$have_gas_1696": ; preds = %"$out_of_gas_1695", %"$have_gas_1680" + %"$consume_1697" = sub i64 %"$gasrem_1693", 1 + store i64 %"$consume_1697", i64* @_gasrem %ack40 = alloca %TName_Nat* + %"$gasrem_1698" = load i64, i64* @_gasrem + %"$gascmp_1699" = icmp ugt i64 1, %"$gasrem_1698" + br i1 %"$gascmp_1699", label %"$out_of_gas_1700", label %"$have_gas_1701" + +"$out_of_gas_1700": ; preds = %"$have_gas_1696" + call void @_out_of_gas() + br label %"$have_gas_1701" + +"$have_gas_1701": ; preds = %"$out_of_gas_1700", %"$have_gas_1696" + %"$consume_1702" = sub i64 %"$gasrem_1698", 1 + store i64 %"$consume_1702", i64* @_gasrem %"$ackermann_72" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_1023" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_1024" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1023", 0 - %"$ackermann_envptr_1025" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1023", 1 - %"$n4_1026" = load %TName_Nat*, %TName_Nat** %n4 - %"$ackermann_call_1027" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1024"(i8* %"$ackermann_envptr_1025", %TName_Nat* %"$n4_1026") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1027", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_72" + %"$ackermann_1703" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1704" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1703", 0 + %"$ackermann_envptr_1705" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1703", 1 + %"$n4_1706" = load %TName_Nat*, %TName_Nat** %n4 + %"$ackermann_call_1707" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1704"(i8* %"$ackermann_envptr_1705", %TName_Nat* %"$n4_1706") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1707", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_72" %"$ackermann_73" = alloca %TName_Nat* - %"$$ackermann_72_1028" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_72" - %"$$ackermann_72_fptr_1029" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_72_1028", 0 - %"$$ackermann_72_envptr_1030" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_72_1028", 1 - %"$n0_1031" = load %TName_Nat*, %TName_Nat** %n0 - %"$$ackermann_72_call_1032" = call %TName_Nat* %"$$ackermann_72_fptr_1029"(i8* %"$$ackermann_72_envptr_1030", %TName_Nat* %"$n0_1031") - store %TName_Nat* %"$$ackermann_72_call_1032", %TName_Nat** %"$ackermann_73" - %"$$ackermann_73_1033" = load %TName_Nat*, %TName_Nat** %"$ackermann_73" - store %TName_Nat* %"$$ackermann_73_1033", %TName_Nat** %ack40 + %"$$ackermann_72_1708" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_72" + %"$$ackermann_72_fptr_1709" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_72_1708", 0 + %"$$ackermann_72_envptr_1710" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_72_1708", 1 + %"$n0_1711" = load %TName_Nat*, %TName_Nat** %n0 + %"$$ackermann_72_call_1712" = call %TName_Nat* %"$$ackermann_72_fptr_1709"(i8* %"$$ackermann_72_envptr_1710", %TName_Nat* %"$n0_1711") + store %TName_Nat* %"$$ackermann_72_call_1712", %TName_Nat** %"$ackermann_73" + %"$$ackermann_73_1713" = load %TName_Nat*, %TName_Nat** %"$ackermann_73" + store %TName_Nat* %"$$ackermann_73_1713", %TName_Nat** %ack40 + %"$gasrem_1714" = load i64, i64* @_gasrem + %"$gascmp_1715" = icmp ugt i64 1, %"$gasrem_1714" + br i1 %"$gascmp_1715", label %"$out_of_gas_1716", label %"$have_gas_1717" + +"$out_of_gas_1716": ; preds = %"$have_gas_1701" + call void @_out_of_gas() + br label %"$have_gas_1717" + +"$have_gas_1717": ; preds = %"$out_of_gas_1716", %"$have_gas_1701" + %"$consume_1718" = sub i64 %"$gasrem_1714", 1 + store i64 %"$consume_1718", i64* @_gasrem %int01 = alloca %Uint32 + %"$gasrem_1719" = load i64, i64* @_gasrem + %"$gascmp_1720" = icmp ugt i64 1, %"$gasrem_1719" + br i1 %"$gascmp_1720", label %"$out_of_gas_1721", label %"$have_gas_1722" + +"$out_of_gas_1721": ; preds = %"$have_gas_1717" + call void @_out_of_gas() + br label %"$have_gas_1722" + +"$have_gas_1722": ; preds = %"$out_of_gas_1721", %"$have_gas_1717" + %"$consume_1723" = sub i64 %"$gasrem_1719", 1 + store i64 %"$consume_1723", i64* @_gasrem %"$nat_to_int_74" = alloca %Uint32 - %"$nat_to_int_1034" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1035" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1034", 0 - %"$nat_to_int_envptr_1036" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1034", 1 - %"$ack00_1037" = load %TName_Nat*, %TName_Nat** %ack00 - %"$nat_to_int_call_1038" = call %Uint32 %"$nat_to_int_fptr_1035"(i8* %"$nat_to_int_envptr_1036", %TName_Nat* %"$ack00_1037") - store %Uint32 %"$nat_to_int_call_1038", %Uint32* %"$nat_to_int_74" - %"$$nat_to_int_74_1039" = load %Uint32, %Uint32* %"$nat_to_int_74" - store %Uint32 %"$$nat_to_int_74_1039", %Uint32* %int01 + %"$nat_to_int_1724" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1725" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1724", 0 + %"$nat_to_int_envptr_1726" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1724", 1 + %"$ack00_1727" = load %TName_Nat*, %TName_Nat** %ack00 + %"$nat_to_int_call_1728" = call %Uint32 %"$nat_to_int_fptr_1725"(i8* %"$nat_to_int_envptr_1726", %TName_Nat* %"$ack00_1727") + store %Uint32 %"$nat_to_int_call_1728", %Uint32* %"$nat_to_int_74" + %"$$nat_to_int_74_1729" = load %Uint32, %Uint32* %"$nat_to_int_74" + store %Uint32 %"$$nat_to_int_74_1729", %Uint32* %int01 + %"$gasrem_1730" = load i64, i64* @_gasrem + %"$gascmp_1731" = icmp ugt i64 1, %"$gasrem_1730" + br i1 %"$gascmp_1731", label %"$out_of_gas_1732", label %"$have_gas_1733" + +"$out_of_gas_1732": ; preds = %"$have_gas_1722" + call void @_out_of_gas() + br label %"$have_gas_1733" + +"$have_gas_1733": ; preds = %"$out_of_gas_1732", %"$have_gas_1722" + %"$consume_1734" = sub i64 %"$gasrem_1730", 1 + store i64 %"$consume_1734", i64* @_gasrem %int02 = alloca %Uint32 + %"$gasrem_1735" = load i64, i64* @_gasrem + %"$gascmp_1736" = icmp ugt i64 1, %"$gasrem_1735" + br i1 %"$gascmp_1736", label %"$out_of_gas_1737", label %"$have_gas_1738" + +"$out_of_gas_1737": ; preds = %"$have_gas_1733" + call void @_out_of_gas() + br label %"$have_gas_1738" + +"$have_gas_1738": ; preds = %"$out_of_gas_1737", %"$have_gas_1733" + %"$consume_1739" = sub i64 %"$gasrem_1735", 1 + store i64 %"$consume_1739", i64* @_gasrem %"$nat_to_int_75" = alloca %Uint32 - %"$nat_to_int_1040" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1041" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1040", 0 - %"$nat_to_int_envptr_1042" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1040", 1 - %"$ack02_1043" = load %TName_Nat*, %TName_Nat** %ack02 - %"$nat_to_int_call_1044" = call %Uint32 %"$nat_to_int_fptr_1041"(i8* %"$nat_to_int_envptr_1042", %TName_Nat* %"$ack02_1043") - store %Uint32 %"$nat_to_int_call_1044", %Uint32* %"$nat_to_int_75" - %"$$nat_to_int_75_1045" = load %Uint32, %Uint32* %"$nat_to_int_75" - store %Uint32 %"$$nat_to_int_75_1045", %Uint32* %int02 + %"$nat_to_int_1740" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1741" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1740", 0 + %"$nat_to_int_envptr_1742" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1740", 1 + %"$ack02_1743" = load %TName_Nat*, %TName_Nat** %ack02 + %"$nat_to_int_call_1744" = call %Uint32 %"$nat_to_int_fptr_1741"(i8* %"$nat_to_int_envptr_1742", %TName_Nat* %"$ack02_1743") + store %Uint32 %"$nat_to_int_call_1744", %Uint32* %"$nat_to_int_75" + %"$$nat_to_int_75_1745" = load %Uint32, %Uint32* %"$nat_to_int_75" + store %Uint32 %"$$nat_to_int_75_1745", %Uint32* %int02 + %"$gasrem_1746" = load i64, i64* @_gasrem + %"$gascmp_1747" = icmp ugt i64 1, %"$gasrem_1746" + br i1 %"$gascmp_1747", label %"$out_of_gas_1748", label %"$have_gas_1749" + +"$out_of_gas_1748": ; preds = %"$have_gas_1738" + call void @_out_of_gas() + br label %"$have_gas_1749" + +"$have_gas_1749": ; preds = %"$out_of_gas_1748", %"$have_gas_1738" + %"$consume_1750" = sub i64 %"$gasrem_1746", 1 + store i64 %"$consume_1750", i64* @_gasrem %int03 = alloca %Uint32 + %"$gasrem_1751" = load i64, i64* @_gasrem + %"$gascmp_1752" = icmp ugt i64 1, %"$gasrem_1751" + br i1 %"$gascmp_1752", label %"$out_of_gas_1753", label %"$have_gas_1754" + +"$out_of_gas_1753": ; preds = %"$have_gas_1749" + call void @_out_of_gas() + br label %"$have_gas_1754" + +"$have_gas_1754": ; preds = %"$out_of_gas_1753", %"$have_gas_1749" + %"$consume_1755" = sub i64 %"$gasrem_1751", 1 + store i64 %"$consume_1755", i64* @_gasrem %"$nat_to_int_76" = alloca %Uint32 - %"$nat_to_int_1046" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1047" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1046", 0 - %"$nat_to_int_envptr_1048" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1046", 1 - %"$ack03_1049" = load %TName_Nat*, %TName_Nat** %ack03 - %"$nat_to_int_call_1050" = call %Uint32 %"$nat_to_int_fptr_1047"(i8* %"$nat_to_int_envptr_1048", %TName_Nat* %"$ack03_1049") - store %Uint32 %"$nat_to_int_call_1050", %Uint32* %"$nat_to_int_76" - %"$$nat_to_int_76_1051" = load %Uint32, %Uint32* %"$nat_to_int_76" - store %Uint32 %"$$nat_to_int_76_1051", %Uint32* %int03 + %"$nat_to_int_1756" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1757" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1756", 0 + %"$nat_to_int_envptr_1758" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1756", 1 + %"$ack03_1759" = load %TName_Nat*, %TName_Nat** %ack03 + %"$nat_to_int_call_1760" = call %Uint32 %"$nat_to_int_fptr_1757"(i8* %"$nat_to_int_envptr_1758", %TName_Nat* %"$ack03_1759") + store %Uint32 %"$nat_to_int_call_1760", %Uint32* %"$nat_to_int_76" + %"$$nat_to_int_76_1761" = load %Uint32, %Uint32* %"$nat_to_int_76" + store %Uint32 %"$$nat_to_int_76_1761", %Uint32* %int03 + %"$gasrem_1762" = load i64, i64* @_gasrem + %"$gascmp_1763" = icmp ugt i64 1, %"$gasrem_1762" + br i1 %"$gascmp_1763", label %"$out_of_gas_1764", label %"$have_gas_1765" + +"$out_of_gas_1764": ; preds = %"$have_gas_1754" + call void @_out_of_gas() + br label %"$have_gas_1765" + +"$have_gas_1765": ; preds = %"$out_of_gas_1764", %"$have_gas_1754" + %"$consume_1766" = sub i64 %"$gasrem_1762", 1 + store i64 %"$consume_1766", i64* @_gasrem %int04 = alloca %Uint32 + %"$gasrem_1767" = load i64, i64* @_gasrem + %"$gascmp_1768" = icmp ugt i64 1, %"$gasrem_1767" + br i1 %"$gascmp_1768", label %"$out_of_gas_1769", label %"$have_gas_1770" + +"$out_of_gas_1769": ; preds = %"$have_gas_1765" + call void @_out_of_gas() + br label %"$have_gas_1770" + +"$have_gas_1770": ; preds = %"$out_of_gas_1769", %"$have_gas_1765" + %"$consume_1771" = sub i64 %"$gasrem_1767", 1 + store i64 %"$consume_1771", i64* @_gasrem %"$nat_to_int_77" = alloca %Uint32 - %"$nat_to_int_1052" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1053" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1052", 0 - %"$nat_to_int_envptr_1054" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1052", 1 - %"$ack04_1055" = load %TName_Nat*, %TName_Nat** %ack04 - %"$nat_to_int_call_1056" = call %Uint32 %"$nat_to_int_fptr_1053"(i8* %"$nat_to_int_envptr_1054", %TName_Nat* %"$ack04_1055") - store %Uint32 %"$nat_to_int_call_1056", %Uint32* %"$nat_to_int_77" - %"$$nat_to_int_77_1057" = load %Uint32, %Uint32* %"$nat_to_int_77" - store %Uint32 %"$$nat_to_int_77_1057", %Uint32* %int04 + %"$nat_to_int_1772" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1773" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1772", 0 + %"$nat_to_int_envptr_1774" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1772", 1 + %"$ack04_1775" = load %TName_Nat*, %TName_Nat** %ack04 + %"$nat_to_int_call_1776" = call %Uint32 %"$nat_to_int_fptr_1773"(i8* %"$nat_to_int_envptr_1774", %TName_Nat* %"$ack04_1775") + store %Uint32 %"$nat_to_int_call_1776", %Uint32* %"$nat_to_int_77" + %"$$nat_to_int_77_1777" = load %Uint32, %Uint32* %"$nat_to_int_77" + store %Uint32 %"$$nat_to_int_77_1777", %Uint32* %int04 + %"$gasrem_1778" = load i64, i64* @_gasrem + %"$gascmp_1779" = icmp ugt i64 1, %"$gasrem_1778" + br i1 %"$gascmp_1779", label %"$out_of_gas_1780", label %"$have_gas_1781" + +"$out_of_gas_1780": ; preds = %"$have_gas_1770" + call void @_out_of_gas() + br label %"$have_gas_1781" + +"$have_gas_1781": ; preds = %"$out_of_gas_1780", %"$have_gas_1770" + %"$consume_1782" = sub i64 %"$gasrem_1778", 1 + store i64 %"$consume_1782", i64* @_gasrem %int10 = alloca %Uint32 + %"$gasrem_1783" = load i64, i64* @_gasrem + %"$gascmp_1784" = icmp ugt i64 1, %"$gasrem_1783" + br i1 %"$gascmp_1784", label %"$out_of_gas_1785", label %"$have_gas_1786" + +"$out_of_gas_1785": ; preds = %"$have_gas_1781" + call void @_out_of_gas() + br label %"$have_gas_1786" + +"$have_gas_1786": ; preds = %"$out_of_gas_1785", %"$have_gas_1781" + %"$consume_1787" = sub i64 %"$gasrem_1783", 1 + store i64 %"$consume_1787", i64* @_gasrem %"$nat_to_int_78" = alloca %Uint32 - %"$nat_to_int_1058" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1059" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1058", 0 - %"$nat_to_int_envptr_1060" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1058", 1 - %"$ack10_1061" = load %TName_Nat*, %TName_Nat** %ack10 - %"$nat_to_int_call_1062" = call %Uint32 %"$nat_to_int_fptr_1059"(i8* %"$nat_to_int_envptr_1060", %TName_Nat* %"$ack10_1061") - store %Uint32 %"$nat_to_int_call_1062", %Uint32* %"$nat_to_int_78" - %"$$nat_to_int_78_1063" = load %Uint32, %Uint32* %"$nat_to_int_78" - store %Uint32 %"$$nat_to_int_78_1063", %Uint32* %int10 + %"$nat_to_int_1788" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1789" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1788", 0 + %"$nat_to_int_envptr_1790" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1788", 1 + %"$ack10_1791" = load %TName_Nat*, %TName_Nat** %ack10 + %"$nat_to_int_call_1792" = call %Uint32 %"$nat_to_int_fptr_1789"(i8* %"$nat_to_int_envptr_1790", %TName_Nat* %"$ack10_1791") + store %Uint32 %"$nat_to_int_call_1792", %Uint32* %"$nat_to_int_78" + %"$$nat_to_int_78_1793" = load %Uint32, %Uint32* %"$nat_to_int_78" + store %Uint32 %"$$nat_to_int_78_1793", %Uint32* %int10 + %"$gasrem_1794" = load i64, i64* @_gasrem + %"$gascmp_1795" = icmp ugt i64 1, %"$gasrem_1794" + br i1 %"$gascmp_1795", label %"$out_of_gas_1796", label %"$have_gas_1797" + +"$out_of_gas_1796": ; preds = %"$have_gas_1786" + call void @_out_of_gas() + br label %"$have_gas_1797" + +"$have_gas_1797": ; preds = %"$out_of_gas_1796", %"$have_gas_1786" + %"$consume_1798" = sub i64 %"$gasrem_1794", 1 + store i64 %"$consume_1798", i64* @_gasrem %int11 = alloca %Uint32 + %"$gasrem_1799" = load i64, i64* @_gasrem + %"$gascmp_1800" = icmp ugt i64 1, %"$gasrem_1799" + br i1 %"$gascmp_1800", label %"$out_of_gas_1801", label %"$have_gas_1802" + +"$out_of_gas_1801": ; preds = %"$have_gas_1797" + call void @_out_of_gas() + br label %"$have_gas_1802" + +"$have_gas_1802": ; preds = %"$out_of_gas_1801", %"$have_gas_1797" + %"$consume_1803" = sub i64 %"$gasrem_1799", 1 + store i64 %"$consume_1803", i64* @_gasrem %"$nat_to_int_79" = alloca %Uint32 - %"$nat_to_int_1064" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1065" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1064", 0 - %"$nat_to_int_envptr_1066" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1064", 1 - %"$ack11_1067" = load %TName_Nat*, %TName_Nat** %ack11 - %"$nat_to_int_call_1068" = call %Uint32 %"$nat_to_int_fptr_1065"(i8* %"$nat_to_int_envptr_1066", %TName_Nat* %"$ack11_1067") - store %Uint32 %"$nat_to_int_call_1068", %Uint32* %"$nat_to_int_79" - %"$$nat_to_int_79_1069" = load %Uint32, %Uint32* %"$nat_to_int_79" - store %Uint32 %"$$nat_to_int_79_1069", %Uint32* %int11 + %"$nat_to_int_1804" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1805" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1804", 0 + %"$nat_to_int_envptr_1806" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1804", 1 + %"$ack11_1807" = load %TName_Nat*, %TName_Nat** %ack11 + %"$nat_to_int_call_1808" = call %Uint32 %"$nat_to_int_fptr_1805"(i8* %"$nat_to_int_envptr_1806", %TName_Nat* %"$ack11_1807") + store %Uint32 %"$nat_to_int_call_1808", %Uint32* %"$nat_to_int_79" + %"$$nat_to_int_79_1809" = load %Uint32, %Uint32* %"$nat_to_int_79" + store %Uint32 %"$$nat_to_int_79_1809", %Uint32* %int11 + %"$gasrem_1810" = load i64, i64* @_gasrem + %"$gascmp_1811" = icmp ugt i64 1, %"$gasrem_1810" + br i1 %"$gascmp_1811", label %"$out_of_gas_1812", label %"$have_gas_1813" + +"$out_of_gas_1812": ; preds = %"$have_gas_1802" + call void @_out_of_gas() + br label %"$have_gas_1813" + +"$have_gas_1813": ; preds = %"$out_of_gas_1812", %"$have_gas_1802" + %"$consume_1814" = sub i64 %"$gasrem_1810", 1 + store i64 %"$consume_1814", i64* @_gasrem %int12 = alloca %Uint32 + %"$gasrem_1815" = load i64, i64* @_gasrem + %"$gascmp_1816" = icmp ugt i64 1, %"$gasrem_1815" + br i1 %"$gascmp_1816", label %"$out_of_gas_1817", label %"$have_gas_1818" + +"$out_of_gas_1817": ; preds = %"$have_gas_1813" + call void @_out_of_gas() + br label %"$have_gas_1818" + +"$have_gas_1818": ; preds = %"$out_of_gas_1817", %"$have_gas_1813" + %"$consume_1819" = sub i64 %"$gasrem_1815", 1 + store i64 %"$consume_1819", i64* @_gasrem %"$nat_to_int_80" = alloca %Uint32 - %"$nat_to_int_1070" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1071" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1070", 0 - %"$nat_to_int_envptr_1072" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1070", 1 - %"$ack12_1073" = load %TName_Nat*, %TName_Nat** %ack12 - %"$nat_to_int_call_1074" = call %Uint32 %"$nat_to_int_fptr_1071"(i8* %"$nat_to_int_envptr_1072", %TName_Nat* %"$ack12_1073") - store %Uint32 %"$nat_to_int_call_1074", %Uint32* %"$nat_to_int_80" - %"$$nat_to_int_80_1075" = load %Uint32, %Uint32* %"$nat_to_int_80" - store %Uint32 %"$$nat_to_int_80_1075", %Uint32* %int12 + %"$nat_to_int_1820" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1821" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1820", 0 + %"$nat_to_int_envptr_1822" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1820", 1 + %"$ack12_1823" = load %TName_Nat*, %TName_Nat** %ack12 + %"$nat_to_int_call_1824" = call %Uint32 %"$nat_to_int_fptr_1821"(i8* %"$nat_to_int_envptr_1822", %TName_Nat* %"$ack12_1823") + store %Uint32 %"$nat_to_int_call_1824", %Uint32* %"$nat_to_int_80" + %"$$nat_to_int_80_1825" = load %Uint32, %Uint32* %"$nat_to_int_80" + store %Uint32 %"$$nat_to_int_80_1825", %Uint32* %int12 + %"$gasrem_1826" = load i64, i64* @_gasrem + %"$gascmp_1827" = icmp ugt i64 1, %"$gasrem_1826" + br i1 %"$gascmp_1827", label %"$out_of_gas_1828", label %"$have_gas_1829" + +"$out_of_gas_1828": ; preds = %"$have_gas_1818" + call void @_out_of_gas() + br label %"$have_gas_1829" + +"$have_gas_1829": ; preds = %"$out_of_gas_1828", %"$have_gas_1818" + %"$consume_1830" = sub i64 %"$gasrem_1826", 1 + store i64 %"$consume_1830", i64* @_gasrem %int13 = alloca %Uint32 + %"$gasrem_1831" = load i64, i64* @_gasrem + %"$gascmp_1832" = icmp ugt i64 1, %"$gasrem_1831" + br i1 %"$gascmp_1832", label %"$out_of_gas_1833", label %"$have_gas_1834" + +"$out_of_gas_1833": ; preds = %"$have_gas_1829" + call void @_out_of_gas() + br label %"$have_gas_1834" + +"$have_gas_1834": ; preds = %"$out_of_gas_1833", %"$have_gas_1829" + %"$consume_1835" = sub i64 %"$gasrem_1831", 1 + store i64 %"$consume_1835", i64* @_gasrem %"$nat_to_int_81" = alloca %Uint32 - %"$nat_to_int_1076" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1077" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1076", 0 - %"$nat_to_int_envptr_1078" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1076", 1 - %"$ack13_1079" = load %TName_Nat*, %TName_Nat** %ack13 - %"$nat_to_int_call_1080" = call %Uint32 %"$nat_to_int_fptr_1077"(i8* %"$nat_to_int_envptr_1078", %TName_Nat* %"$ack13_1079") - store %Uint32 %"$nat_to_int_call_1080", %Uint32* %"$nat_to_int_81" - %"$$nat_to_int_81_1081" = load %Uint32, %Uint32* %"$nat_to_int_81" - store %Uint32 %"$$nat_to_int_81_1081", %Uint32* %int13 + %"$nat_to_int_1836" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1837" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1836", 0 + %"$nat_to_int_envptr_1838" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1836", 1 + %"$ack13_1839" = load %TName_Nat*, %TName_Nat** %ack13 + %"$nat_to_int_call_1840" = call %Uint32 %"$nat_to_int_fptr_1837"(i8* %"$nat_to_int_envptr_1838", %TName_Nat* %"$ack13_1839") + store %Uint32 %"$nat_to_int_call_1840", %Uint32* %"$nat_to_int_81" + %"$$nat_to_int_81_1841" = load %Uint32, %Uint32* %"$nat_to_int_81" + store %Uint32 %"$$nat_to_int_81_1841", %Uint32* %int13 + %"$gasrem_1842" = load i64, i64* @_gasrem + %"$gascmp_1843" = icmp ugt i64 1, %"$gasrem_1842" + br i1 %"$gascmp_1843", label %"$out_of_gas_1844", label %"$have_gas_1845" + +"$out_of_gas_1844": ; preds = %"$have_gas_1834" + call void @_out_of_gas() + br label %"$have_gas_1845" + +"$have_gas_1845": ; preds = %"$out_of_gas_1844", %"$have_gas_1834" + %"$consume_1846" = sub i64 %"$gasrem_1842", 1 + store i64 %"$consume_1846", i64* @_gasrem %int14 = alloca %Uint32 + %"$gasrem_1847" = load i64, i64* @_gasrem + %"$gascmp_1848" = icmp ugt i64 1, %"$gasrem_1847" + br i1 %"$gascmp_1848", label %"$out_of_gas_1849", label %"$have_gas_1850" + +"$out_of_gas_1849": ; preds = %"$have_gas_1845" + call void @_out_of_gas() + br label %"$have_gas_1850" + +"$have_gas_1850": ; preds = %"$out_of_gas_1849", %"$have_gas_1845" + %"$consume_1851" = sub i64 %"$gasrem_1847", 1 + store i64 %"$consume_1851", i64* @_gasrem %"$nat_to_int_82" = alloca %Uint32 - %"$nat_to_int_1082" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1083" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1082", 0 - %"$nat_to_int_envptr_1084" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1082", 1 - %"$ack14_1085" = load %TName_Nat*, %TName_Nat** %ack14 - %"$nat_to_int_call_1086" = call %Uint32 %"$nat_to_int_fptr_1083"(i8* %"$nat_to_int_envptr_1084", %TName_Nat* %"$ack14_1085") - store %Uint32 %"$nat_to_int_call_1086", %Uint32* %"$nat_to_int_82" - %"$$nat_to_int_82_1087" = load %Uint32, %Uint32* %"$nat_to_int_82" - store %Uint32 %"$$nat_to_int_82_1087", %Uint32* %int14 + %"$nat_to_int_1852" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1853" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1852", 0 + %"$nat_to_int_envptr_1854" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1852", 1 + %"$ack14_1855" = load %TName_Nat*, %TName_Nat** %ack14 + %"$nat_to_int_call_1856" = call %Uint32 %"$nat_to_int_fptr_1853"(i8* %"$nat_to_int_envptr_1854", %TName_Nat* %"$ack14_1855") + store %Uint32 %"$nat_to_int_call_1856", %Uint32* %"$nat_to_int_82" + %"$$nat_to_int_82_1857" = load %Uint32, %Uint32* %"$nat_to_int_82" + store %Uint32 %"$$nat_to_int_82_1857", %Uint32* %int14 + %"$gasrem_1858" = load i64, i64* @_gasrem + %"$gascmp_1859" = icmp ugt i64 1, %"$gasrem_1858" + br i1 %"$gascmp_1859", label %"$out_of_gas_1860", label %"$have_gas_1861" + +"$out_of_gas_1860": ; preds = %"$have_gas_1850" + call void @_out_of_gas() + br label %"$have_gas_1861" + +"$have_gas_1861": ; preds = %"$out_of_gas_1860", %"$have_gas_1850" + %"$consume_1862" = sub i64 %"$gasrem_1858", 1 + store i64 %"$consume_1862", i64* @_gasrem %int20 = alloca %Uint32 + %"$gasrem_1863" = load i64, i64* @_gasrem + %"$gascmp_1864" = icmp ugt i64 1, %"$gasrem_1863" + br i1 %"$gascmp_1864", label %"$out_of_gas_1865", label %"$have_gas_1866" + +"$out_of_gas_1865": ; preds = %"$have_gas_1861" + call void @_out_of_gas() + br label %"$have_gas_1866" + +"$have_gas_1866": ; preds = %"$out_of_gas_1865", %"$have_gas_1861" + %"$consume_1867" = sub i64 %"$gasrem_1863", 1 + store i64 %"$consume_1867", i64* @_gasrem %"$nat_to_int_83" = alloca %Uint32 - %"$nat_to_int_1088" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1089" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1088", 0 - %"$nat_to_int_envptr_1090" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1088", 1 - %"$ack20_1091" = load %TName_Nat*, %TName_Nat** %ack20 - %"$nat_to_int_call_1092" = call %Uint32 %"$nat_to_int_fptr_1089"(i8* %"$nat_to_int_envptr_1090", %TName_Nat* %"$ack20_1091") - store %Uint32 %"$nat_to_int_call_1092", %Uint32* %"$nat_to_int_83" - %"$$nat_to_int_83_1093" = load %Uint32, %Uint32* %"$nat_to_int_83" - store %Uint32 %"$$nat_to_int_83_1093", %Uint32* %int20 + %"$nat_to_int_1868" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1869" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1868", 0 + %"$nat_to_int_envptr_1870" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1868", 1 + %"$ack20_1871" = load %TName_Nat*, %TName_Nat** %ack20 + %"$nat_to_int_call_1872" = call %Uint32 %"$nat_to_int_fptr_1869"(i8* %"$nat_to_int_envptr_1870", %TName_Nat* %"$ack20_1871") + store %Uint32 %"$nat_to_int_call_1872", %Uint32* %"$nat_to_int_83" + %"$$nat_to_int_83_1873" = load %Uint32, %Uint32* %"$nat_to_int_83" + store %Uint32 %"$$nat_to_int_83_1873", %Uint32* %int20 + %"$gasrem_1874" = load i64, i64* @_gasrem + %"$gascmp_1875" = icmp ugt i64 1, %"$gasrem_1874" + br i1 %"$gascmp_1875", label %"$out_of_gas_1876", label %"$have_gas_1877" + +"$out_of_gas_1876": ; preds = %"$have_gas_1866" + call void @_out_of_gas() + br label %"$have_gas_1877" + +"$have_gas_1877": ; preds = %"$out_of_gas_1876", %"$have_gas_1866" + %"$consume_1878" = sub i64 %"$gasrem_1874", 1 + store i64 %"$consume_1878", i64* @_gasrem %int21 = alloca %Uint32 + %"$gasrem_1879" = load i64, i64* @_gasrem + %"$gascmp_1880" = icmp ugt i64 1, %"$gasrem_1879" + br i1 %"$gascmp_1880", label %"$out_of_gas_1881", label %"$have_gas_1882" + +"$out_of_gas_1881": ; preds = %"$have_gas_1877" + call void @_out_of_gas() + br label %"$have_gas_1882" + +"$have_gas_1882": ; preds = %"$out_of_gas_1881", %"$have_gas_1877" + %"$consume_1883" = sub i64 %"$gasrem_1879", 1 + store i64 %"$consume_1883", i64* @_gasrem %"$nat_to_int_84" = alloca %Uint32 - %"$nat_to_int_1094" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1095" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1094", 0 - %"$nat_to_int_envptr_1096" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1094", 1 - %"$ack21_1097" = load %TName_Nat*, %TName_Nat** %ack21 - %"$nat_to_int_call_1098" = call %Uint32 %"$nat_to_int_fptr_1095"(i8* %"$nat_to_int_envptr_1096", %TName_Nat* %"$ack21_1097") - store %Uint32 %"$nat_to_int_call_1098", %Uint32* %"$nat_to_int_84" - %"$$nat_to_int_84_1099" = load %Uint32, %Uint32* %"$nat_to_int_84" - store %Uint32 %"$$nat_to_int_84_1099", %Uint32* %int21 + %"$nat_to_int_1884" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1885" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1884", 0 + %"$nat_to_int_envptr_1886" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1884", 1 + %"$ack21_1887" = load %TName_Nat*, %TName_Nat** %ack21 + %"$nat_to_int_call_1888" = call %Uint32 %"$nat_to_int_fptr_1885"(i8* %"$nat_to_int_envptr_1886", %TName_Nat* %"$ack21_1887") + store %Uint32 %"$nat_to_int_call_1888", %Uint32* %"$nat_to_int_84" + %"$$nat_to_int_84_1889" = load %Uint32, %Uint32* %"$nat_to_int_84" + store %Uint32 %"$$nat_to_int_84_1889", %Uint32* %int21 + %"$gasrem_1890" = load i64, i64* @_gasrem + %"$gascmp_1891" = icmp ugt i64 1, %"$gasrem_1890" + br i1 %"$gascmp_1891", label %"$out_of_gas_1892", label %"$have_gas_1893" + +"$out_of_gas_1892": ; preds = %"$have_gas_1882" + call void @_out_of_gas() + br label %"$have_gas_1893" + +"$have_gas_1893": ; preds = %"$out_of_gas_1892", %"$have_gas_1882" + %"$consume_1894" = sub i64 %"$gasrem_1890", 1 + store i64 %"$consume_1894", i64* @_gasrem %int22 = alloca %Uint32 + %"$gasrem_1895" = load i64, i64* @_gasrem + %"$gascmp_1896" = icmp ugt i64 1, %"$gasrem_1895" + br i1 %"$gascmp_1896", label %"$out_of_gas_1897", label %"$have_gas_1898" + +"$out_of_gas_1897": ; preds = %"$have_gas_1893" + call void @_out_of_gas() + br label %"$have_gas_1898" + +"$have_gas_1898": ; preds = %"$out_of_gas_1897", %"$have_gas_1893" + %"$consume_1899" = sub i64 %"$gasrem_1895", 1 + store i64 %"$consume_1899", i64* @_gasrem %"$nat_to_int_85" = alloca %Uint32 - %"$nat_to_int_1100" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1101" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1100", 0 - %"$nat_to_int_envptr_1102" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1100", 1 - %"$ack22_1103" = load %TName_Nat*, %TName_Nat** %ack22 - %"$nat_to_int_call_1104" = call %Uint32 %"$nat_to_int_fptr_1101"(i8* %"$nat_to_int_envptr_1102", %TName_Nat* %"$ack22_1103") - store %Uint32 %"$nat_to_int_call_1104", %Uint32* %"$nat_to_int_85" - %"$$nat_to_int_85_1105" = load %Uint32, %Uint32* %"$nat_to_int_85" - store %Uint32 %"$$nat_to_int_85_1105", %Uint32* %int22 + %"$nat_to_int_1900" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1901" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1900", 0 + %"$nat_to_int_envptr_1902" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1900", 1 + %"$ack22_1903" = load %TName_Nat*, %TName_Nat** %ack22 + %"$nat_to_int_call_1904" = call %Uint32 %"$nat_to_int_fptr_1901"(i8* %"$nat_to_int_envptr_1902", %TName_Nat* %"$ack22_1903") + store %Uint32 %"$nat_to_int_call_1904", %Uint32* %"$nat_to_int_85" + %"$$nat_to_int_85_1905" = load %Uint32, %Uint32* %"$nat_to_int_85" + store %Uint32 %"$$nat_to_int_85_1905", %Uint32* %int22 + %"$gasrem_1906" = load i64, i64* @_gasrem + %"$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_1898" + call void @_out_of_gas() + br label %"$have_gas_1909" + +"$have_gas_1909": ; preds = %"$out_of_gas_1908", %"$have_gas_1898" + %"$consume_1910" = sub i64 %"$gasrem_1906", 1 + store i64 %"$consume_1910", i64* @_gasrem %int23 = alloca %Uint32 + %"$gasrem_1911" = load i64, i64* @_gasrem + %"$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 %"$nat_to_int_86" = alloca %Uint32 - %"$nat_to_int_1106" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1107" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1106", 0 - %"$nat_to_int_envptr_1108" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1106", 1 - %"$ack23_1109" = load %TName_Nat*, %TName_Nat** %ack23 - %"$nat_to_int_call_1110" = call %Uint32 %"$nat_to_int_fptr_1107"(i8* %"$nat_to_int_envptr_1108", %TName_Nat* %"$ack23_1109") - store %Uint32 %"$nat_to_int_call_1110", %Uint32* %"$nat_to_int_86" - %"$$nat_to_int_86_1111" = load %Uint32, %Uint32* %"$nat_to_int_86" - store %Uint32 %"$$nat_to_int_86_1111", %Uint32* %int23 + %"$nat_to_int_1916" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1917" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1916", 0 + %"$nat_to_int_envptr_1918" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1916", 1 + %"$ack23_1919" = load %TName_Nat*, %TName_Nat** %ack23 + %"$nat_to_int_call_1920" = call %Uint32 %"$nat_to_int_fptr_1917"(i8* %"$nat_to_int_envptr_1918", %TName_Nat* %"$ack23_1919") + store %Uint32 %"$nat_to_int_call_1920", %Uint32* %"$nat_to_int_86" + %"$$nat_to_int_86_1921" = load %Uint32, %Uint32* %"$nat_to_int_86" + store %Uint32 %"$$nat_to_int_86_1921", %Uint32* %int23 + %"$gasrem_1922" = load i64, i64* @_gasrem + %"$gascmp_1923" = icmp ugt i64 1, %"$gasrem_1922" + br i1 %"$gascmp_1923", label %"$out_of_gas_1924", label %"$have_gas_1925" + +"$out_of_gas_1924": ; preds = %"$have_gas_1914" + call void @_out_of_gas() + br label %"$have_gas_1925" + +"$have_gas_1925": ; preds = %"$out_of_gas_1924", %"$have_gas_1914" + %"$consume_1926" = sub i64 %"$gasrem_1922", 1 + store i64 %"$consume_1926", i64* @_gasrem %int24 = alloca %Uint32 + %"$gasrem_1927" = load i64, i64* @_gasrem + %"$gascmp_1928" = icmp ugt i64 1, %"$gasrem_1927" + br i1 %"$gascmp_1928", label %"$out_of_gas_1929", label %"$have_gas_1930" + +"$out_of_gas_1929": ; preds = %"$have_gas_1925" + call void @_out_of_gas() + br label %"$have_gas_1930" + +"$have_gas_1930": ; preds = %"$out_of_gas_1929", %"$have_gas_1925" + %"$consume_1931" = sub i64 %"$gasrem_1927", 1 + store i64 %"$consume_1931", i64* @_gasrem %"$nat_to_int_87" = alloca %Uint32 - %"$nat_to_int_1112" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1113" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1112", 0 - %"$nat_to_int_envptr_1114" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1112", 1 - %"$ack23_1115" = load %TName_Nat*, %TName_Nat** %ack23 - %"$nat_to_int_call_1116" = call %Uint32 %"$nat_to_int_fptr_1113"(i8* %"$nat_to_int_envptr_1114", %TName_Nat* %"$ack23_1115") - store %Uint32 %"$nat_to_int_call_1116", %Uint32* %"$nat_to_int_87" - %"$$nat_to_int_87_1117" = load %Uint32, %Uint32* %"$nat_to_int_87" - store %Uint32 %"$$nat_to_int_87_1117", %Uint32* %int24 + %"$nat_to_int_1932" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1933" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1932", 0 + %"$nat_to_int_envptr_1934" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1932", 1 + %"$ack23_1935" = load %TName_Nat*, %TName_Nat** %ack23 + %"$nat_to_int_call_1936" = call %Uint32 %"$nat_to_int_fptr_1933"(i8* %"$nat_to_int_envptr_1934", %TName_Nat* %"$ack23_1935") + store %Uint32 %"$nat_to_int_call_1936", %Uint32* %"$nat_to_int_87" + %"$$nat_to_int_87_1937" = load %Uint32, %Uint32* %"$nat_to_int_87" + store %Uint32 %"$$nat_to_int_87_1937", %Uint32* %int24 + %"$gasrem_1938" = load i64, i64* @_gasrem + %"$gascmp_1939" = icmp ugt i64 1, %"$gasrem_1938" + br i1 %"$gascmp_1939", label %"$out_of_gas_1940", label %"$have_gas_1941" + +"$out_of_gas_1940": ; preds = %"$have_gas_1930" + call void @_out_of_gas() + br label %"$have_gas_1941" + +"$have_gas_1941": ; preds = %"$out_of_gas_1940", %"$have_gas_1930" + %"$consume_1942" = sub i64 %"$gasrem_1938", 1 + store i64 %"$consume_1942", i64* @_gasrem %int30 = alloca %Uint32 + %"$gasrem_1943" = load i64, i64* @_gasrem + %"$gascmp_1944" = icmp ugt i64 1, %"$gasrem_1943" + br i1 %"$gascmp_1944", label %"$out_of_gas_1945", label %"$have_gas_1946" + +"$out_of_gas_1945": ; preds = %"$have_gas_1941" + call void @_out_of_gas() + br label %"$have_gas_1946" + +"$have_gas_1946": ; preds = %"$out_of_gas_1945", %"$have_gas_1941" + %"$consume_1947" = sub i64 %"$gasrem_1943", 1 + store i64 %"$consume_1947", i64* @_gasrem %"$nat_to_int_88" = alloca %Uint32 - %"$nat_to_int_1118" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1119" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1118", 0 - %"$nat_to_int_envptr_1120" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1118", 1 - %"$ack30_1121" = load %TName_Nat*, %TName_Nat** %ack30 - %"$nat_to_int_call_1122" = call %Uint32 %"$nat_to_int_fptr_1119"(i8* %"$nat_to_int_envptr_1120", %TName_Nat* %"$ack30_1121") - store %Uint32 %"$nat_to_int_call_1122", %Uint32* %"$nat_to_int_88" - %"$$nat_to_int_88_1123" = load %Uint32, %Uint32* %"$nat_to_int_88" - store %Uint32 %"$$nat_to_int_88_1123", %Uint32* %int30 + %"$nat_to_int_1948" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1949" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1948", 0 + %"$nat_to_int_envptr_1950" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1948", 1 + %"$ack30_1951" = load %TName_Nat*, %TName_Nat** %ack30 + %"$nat_to_int_call_1952" = call %Uint32 %"$nat_to_int_fptr_1949"(i8* %"$nat_to_int_envptr_1950", %TName_Nat* %"$ack30_1951") + store %Uint32 %"$nat_to_int_call_1952", %Uint32* %"$nat_to_int_88" + %"$$nat_to_int_88_1953" = load %Uint32, %Uint32* %"$nat_to_int_88" + store %Uint32 %"$$nat_to_int_88_1953", %Uint32* %int30 + %"$gasrem_1954" = load i64, i64* @_gasrem + %"$gascmp_1955" = icmp ugt i64 1, %"$gasrem_1954" + br i1 %"$gascmp_1955", label %"$out_of_gas_1956", label %"$have_gas_1957" + +"$out_of_gas_1956": ; preds = %"$have_gas_1946" + call void @_out_of_gas() + br label %"$have_gas_1957" + +"$have_gas_1957": ; preds = %"$out_of_gas_1956", %"$have_gas_1946" + %"$consume_1958" = sub i64 %"$gasrem_1954", 1 + store i64 %"$consume_1958", i64* @_gasrem %int31 = alloca %Uint32 + %"$gasrem_1959" = load i64, i64* @_gasrem + %"$gascmp_1960" = icmp ugt i64 1, %"$gasrem_1959" + br i1 %"$gascmp_1960", label %"$out_of_gas_1961", label %"$have_gas_1962" + +"$out_of_gas_1961": ; preds = %"$have_gas_1957" + call void @_out_of_gas() + br label %"$have_gas_1962" + +"$have_gas_1962": ; preds = %"$out_of_gas_1961", %"$have_gas_1957" + %"$consume_1963" = sub i64 %"$gasrem_1959", 1 + store i64 %"$consume_1963", i64* @_gasrem %"$nat_to_int_89" = alloca %Uint32 - %"$nat_to_int_1124" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1125" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1124", 0 - %"$nat_to_int_envptr_1126" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1124", 1 - %"$ack31_1127" = load %TName_Nat*, %TName_Nat** %ack31 - %"$nat_to_int_call_1128" = call %Uint32 %"$nat_to_int_fptr_1125"(i8* %"$nat_to_int_envptr_1126", %TName_Nat* %"$ack31_1127") - store %Uint32 %"$nat_to_int_call_1128", %Uint32* %"$nat_to_int_89" - %"$$nat_to_int_89_1129" = load %Uint32, %Uint32* %"$nat_to_int_89" - store %Uint32 %"$$nat_to_int_89_1129", %Uint32* %int31 + %"$nat_to_int_1964" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1965" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1964", 0 + %"$nat_to_int_envptr_1966" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1964", 1 + %"$ack31_1967" = load %TName_Nat*, %TName_Nat** %ack31 + %"$nat_to_int_call_1968" = call %Uint32 %"$nat_to_int_fptr_1965"(i8* %"$nat_to_int_envptr_1966", %TName_Nat* %"$ack31_1967") + store %Uint32 %"$nat_to_int_call_1968", %Uint32* %"$nat_to_int_89" + %"$$nat_to_int_89_1969" = load %Uint32, %Uint32* %"$nat_to_int_89" + store %Uint32 %"$$nat_to_int_89_1969", %Uint32* %int31 + %"$gasrem_1970" = load i64, i64* @_gasrem + %"$gascmp_1971" = icmp ugt i64 1, %"$gasrem_1970" + br i1 %"$gascmp_1971", label %"$out_of_gas_1972", label %"$have_gas_1973" + +"$out_of_gas_1972": ; preds = %"$have_gas_1962" + call void @_out_of_gas() + br label %"$have_gas_1973" + +"$have_gas_1973": ; preds = %"$out_of_gas_1972", %"$have_gas_1962" + %"$consume_1974" = sub i64 %"$gasrem_1970", 1 + store i64 %"$consume_1974", i64* @_gasrem %int32 = alloca %Uint32 + %"$gasrem_1975" = load i64, i64* @_gasrem + %"$gascmp_1976" = icmp ugt i64 1, %"$gasrem_1975" + br i1 %"$gascmp_1976", label %"$out_of_gas_1977", label %"$have_gas_1978" + +"$out_of_gas_1977": ; preds = %"$have_gas_1973" + call void @_out_of_gas() + br label %"$have_gas_1978" + +"$have_gas_1978": ; preds = %"$out_of_gas_1977", %"$have_gas_1973" + %"$consume_1979" = sub i64 %"$gasrem_1975", 1 + store i64 %"$consume_1979", i64* @_gasrem %"$nat_to_int_90" = alloca %Uint32 - %"$nat_to_int_1130" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1131" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1130", 0 - %"$nat_to_int_envptr_1132" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1130", 1 - %"$ack32_1133" = load %TName_Nat*, %TName_Nat** %ack32 - %"$nat_to_int_call_1134" = call %Uint32 %"$nat_to_int_fptr_1131"(i8* %"$nat_to_int_envptr_1132", %TName_Nat* %"$ack32_1133") - store %Uint32 %"$nat_to_int_call_1134", %Uint32* %"$nat_to_int_90" - %"$$nat_to_int_90_1135" = load %Uint32, %Uint32* %"$nat_to_int_90" - store %Uint32 %"$$nat_to_int_90_1135", %Uint32* %int32 + %"$nat_to_int_1980" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1981" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1980", 0 + %"$nat_to_int_envptr_1982" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1980", 1 + %"$ack32_1983" = load %TName_Nat*, %TName_Nat** %ack32 + %"$nat_to_int_call_1984" = call %Uint32 %"$nat_to_int_fptr_1981"(i8* %"$nat_to_int_envptr_1982", %TName_Nat* %"$ack32_1983") + store %Uint32 %"$nat_to_int_call_1984", %Uint32* %"$nat_to_int_90" + %"$$nat_to_int_90_1985" = load %Uint32, %Uint32* %"$nat_to_int_90" + store %Uint32 %"$$nat_to_int_90_1985", %Uint32* %int32 + %"$gasrem_1986" = load i64, i64* @_gasrem + %"$gascmp_1987" = icmp ugt i64 1, %"$gasrem_1986" + br i1 %"$gascmp_1987", label %"$out_of_gas_1988", label %"$have_gas_1989" + +"$out_of_gas_1988": ; preds = %"$have_gas_1978" + call void @_out_of_gas() + br label %"$have_gas_1989" + +"$have_gas_1989": ; preds = %"$out_of_gas_1988", %"$have_gas_1978" + %"$consume_1990" = sub i64 %"$gasrem_1986", 1 + store i64 %"$consume_1990", i64* @_gasrem %int33 = alloca %Uint32 + %"$gasrem_1991" = load i64, i64* @_gasrem + %"$gascmp_1992" = icmp ugt i64 1, %"$gasrem_1991" + br i1 %"$gascmp_1992", label %"$out_of_gas_1993", label %"$have_gas_1994" + +"$out_of_gas_1993": ; preds = %"$have_gas_1989" + call void @_out_of_gas() + br label %"$have_gas_1994" + +"$have_gas_1994": ; preds = %"$out_of_gas_1993", %"$have_gas_1989" + %"$consume_1995" = sub i64 %"$gasrem_1991", 1 + store i64 %"$consume_1995", i64* @_gasrem %"$nat_to_int_91" = alloca %Uint32 - %"$nat_to_int_1136" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1137" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1136", 0 - %"$nat_to_int_envptr_1138" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1136", 1 - %"$ack33_1139" = load %TName_Nat*, %TName_Nat** %ack33 - %"$nat_to_int_call_1140" = call %Uint32 %"$nat_to_int_fptr_1137"(i8* %"$nat_to_int_envptr_1138", %TName_Nat* %"$ack33_1139") - store %Uint32 %"$nat_to_int_call_1140", %Uint32* %"$nat_to_int_91" - %"$$nat_to_int_91_1141" = load %Uint32, %Uint32* %"$nat_to_int_91" - store %Uint32 %"$$nat_to_int_91_1141", %Uint32* %int33 + %"$nat_to_int_1996" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1997" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1996", 0 + %"$nat_to_int_envptr_1998" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1996", 1 + %"$ack33_1999" = load %TName_Nat*, %TName_Nat** %ack33 + %"$nat_to_int_call_2000" = call %Uint32 %"$nat_to_int_fptr_1997"(i8* %"$nat_to_int_envptr_1998", %TName_Nat* %"$ack33_1999") + store %Uint32 %"$nat_to_int_call_2000", %Uint32* %"$nat_to_int_91" + %"$$nat_to_int_91_2001" = load %Uint32, %Uint32* %"$nat_to_int_91" + store %Uint32 %"$$nat_to_int_91_2001", %Uint32* %int33 + %"$gasrem_2002" = load i64, i64* @_gasrem + %"$gascmp_2003" = icmp ugt i64 1, %"$gasrem_2002" + br i1 %"$gascmp_2003", label %"$out_of_gas_2004", label %"$have_gas_2005" + +"$out_of_gas_2004": ; preds = %"$have_gas_1994" + call void @_out_of_gas() + br label %"$have_gas_2005" + +"$have_gas_2005": ; preds = %"$out_of_gas_2004", %"$have_gas_1994" + %"$consume_2006" = sub i64 %"$gasrem_2002", 1 + store i64 %"$consume_2006", i64* @_gasrem %int34 = alloca %Uint32 + %"$gasrem_2007" = load i64, i64* @_gasrem + %"$gascmp_2008" = icmp ugt i64 1, %"$gasrem_2007" + br i1 %"$gascmp_2008", label %"$out_of_gas_2009", label %"$have_gas_2010" + +"$out_of_gas_2009": ; preds = %"$have_gas_2005" + call void @_out_of_gas() + br label %"$have_gas_2010" + +"$have_gas_2010": ; preds = %"$out_of_gas_2009", %"$have_gas_2005" + %"$consume_2011" = sub i64 %"$gasrem_2007", 1 + store i64 %"$consume_2011", i64* @_gasrem %"$nat_to_int_92" = alloca %Uint32 - %"$nat_to_int_1142" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1143" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1142", 0 - %"$nat_to_int_envptr_1144" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1142", 1 - %"$ack34_1145" = load %TName_Nat*, %TName_Nat** %ack34 - %"$nat_to_int_call_1146" = call %Uint32 %"$nat_to_int_fptr_1143"(i8* %"$nat_to_int_envptr_1144", %TName_Nat* %"$ack34_1145") - store %Uint32 %"$nat_to_int_call_1146", %Uint32* %"$nat_to_int_92" - %"$$nat_to_int_92_1147" = load %Uint32, %Uint32* %"$nat_to_int_92" - store %Uint32 %"$$nat_to_int_92_1147", %Uint32* %int34 + %"$nat_to_int_2012" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_2013" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_2012", 0 + %"$nat_to_int_envptr_2014" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_2012", 1 + %"$ack34_2015" = load %TName_Nat*, %TName_Nat** %ack34 + %"$nat_to_int_call_2016" = call %Uint32 %"$nat_to_int_fptr_2013"(i8* %"$nat_to_int_envptr_2014", %TName_Nat* %"$ack34_2015") + store %Uint32 %"$nat_to_int_call_2016", %Uint32* %"$nat_to_int_92" + %"$$nat_to_int_92_2017" = load %Uint32, %Uint32* %"$nat_to_int_92" + store %Uint32 %"$$nat_to_int_92_2017", %Uint32* %int34 + %"$gasrem_2018" = load i64, i64* @_gasrem + %"$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_2010" + call void @_out_of_gas() + br label %"$have_gas_2021" + +"$have_gas_2021": ; preds = %"$out_of_gas_2020", %"$have_gas_2010" + %"$consume_2022" = sub i64 %"$gasrem_2018", 1 + store i64 %"$consume_2022", i64* @_gasrem %int40 = alloca %Uint32 + %"$gasrem_2023" = load i64, i64* @_gasrem + %"$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 %"$nat_to_int_93" = alloca %Uint32 - %"$nat_to_int_1148" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_1149" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1148", 0 - %"$nat_to_int_envptr_1150" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1148", 1 - %"$ack40_1151" = load %TName_Nat*, %TName_Nat** %ack40 - %"$nat_to_int_call_1152" = call %Uint32 %"$nat_to_int_fptr_1149"(i8* %"$nat_to_int_envptr_1150", %TName_Nat* %"$ack40_1151") - store %Uint32 %"$nat_to_int_call_1152", %Uint32* %"$nat_to_int_93" - %"$$nat_to_int_93_1153" = load %Uint32, %Uint32* %"$nat_to_int_93" - store %Uint32 %"$$nat_to_int_93_1153", %Uint32* %int40 + %"$nat_to_int_2028" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_2029" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_2028", 0 + %"$nat_to_int_envptr_2030" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_2028", 1 + %"$ack40_2031" = load %TName_Nat*, %TName_Nat** %ack40 + %"$nat_to_int_call_2032" = call %Uint32 %"$nat_to_int_fptr_2029"(i8* %"$nat_to_int_envptr_2030", %TName_Nat* %"$ack40_2031") + store %Uint32 %"$nat_to_int_call_2032", %Uint32* %"$nat_to_int_93" + %"$$nat_to_int_93_2033" = load %Uint32, %Uint32* %"$nat_to_int_93" + store %Uint32 %"$$nat_to_int_93_2033", %Uint32* %int40 + %"$gasrem_2034" = load i64, i64* @_gasrem + %"$gascmp_2035" = icmp ugt i64 1, %"$gasrem_2034" + br i1 %"$gascmp_2035", label %"$out_of_gas_2036", label %"$have_gas_2037" + +"$out_of_gas_2036": ; preds = %"$have_gas_2026" + call void @_out_of_gas() + br label %"$have_gas_2037" + +"$have_gas_2037": ; preds = %"$out_of_gas_2036", %"$have_gas_2026" + %"$consume_2038" = sub i64 %"$gasrem_2034", 1 + store i64 %"$consume_2038", i64* @_gasrem %sum = alloca %Uint32 - %"$int01_1154" = load %Uint32, %Uint32* %int01 - %"$int02_1155" = load %Uint32, %Uint32* %int02 - %"$add_call_1156" = call %Uint32 @_add_Uint32(%Uint32 %"$int01_1154", %Uint32 %"$int02_1155") - store %Uint32 %"$add_call_1156", %Uint32* %sum + %"$int01_2039" = load %Uint32, %Uint32* %int01 + %"$int02_2040" = load %Uint32, %Uint32* %int02 + %"$add_call_2041" = call %Uint32 @_add_Uint32(%Uint32 %"$int01_2039", %Uint32 %"$int02_2040") + store %Uint32 %"$add_call_2041", %Uint32* %sum + %"$gasrem_2042" = load i64, i64* @_gasrem + %"$gascmp_2043" = icmp ugt i64 1, %"$gasrem_2042" + br i1 %"$gascmp_2043", label %"$out_of_gas_2044", label %"$have_gas_2045" + +"$out_of_gas_2044": ; preds = %"$have_gas_2037" + call void @_out_of_gas() + br label %"$have_gas_2045" + +"$have_gas_2045": ; preds = %"$out_of_gas_2044", %"$have_gas_2037" + %"$consume_2046" = sub i64 %"$gasrem_2042", 1 + store i64 %"$consume_2046", i64* @_gasrem %"$sum_0" = alloca %Uint32 - %"$sum_1157" = load %Uint32, %Uint32* %sum - %"$int03_1158" = load %Uint32, %Uint32* %int03 - %"$add_call_1159" = call %Uint32 @_add_Uint32(%Uint32 %"$sum_1157", %Uint32 %"$int03_1158") - store %Uint32 %"$add_call_1159", %Uint32* %"$sum_0" + %"$sum_2047" = load %Uint32, %Uint32* %sum + %"$int03_2048" = load %Uint32, %Uint32* %int03 + %"$add_call_2049" = call %Uint32 @_add_Uint32(%Uint32 %"$sum_2047", %Uint32 %"$int03_2048") + store %Uint32 %"$add_call_2049", %Uint32* %"$sum_0" + %"$gasrem_2050" = load i64, i64* @_gasrem + %"$gascmp_2051" = icmp ugt i64 1, %"$gasrem_2050" + br i1 %"$gascmp_2051", label %"$out_of_gas_2052", label %"$have_gas_2053" + +"$out_of_gas_2052": ; preds = %"$have_gas_2045" + call void @_out_of_gas() + br label %"$have_gas_2053" + +"$have_gas_2053": ; preds = %"$out_of_gas_2052", %"$have_gas_2045" + %"$consume_2054" = sub i64 %"$gasrem_2050", 1 + store i64 %"$consume_2054", i64* @_gasrem %"$sum_1" = alloca %Uint32 - %"$$sum_0_1160" = load %Uint32, %Uint32* %"$sum_0" - %"$int04_1161" = load %Uint32, %Uint32* %int04 - %"$add_call_1162" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_0_1160", %Uint32 %"$int04_1161") - store %Uint32 %"$add_call_1162", %Uint32* %"$sum_1" + %"$$sum_0_2055" = load %Uint32, %Uint32* %"$sum_0" + %"$int04_2056" = load %Uint32, %Uint32* %int04 + %"$add_call_2057" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_0_2055", %Uint32 %"$int04_2056") + store %Uint32 %"$add_call_2057", %Uint32* %"$sum_1" + %"$gasrem_2058" = load i64, i64* @_gasrem + %"$gascmp_2059" = icmp ugt i64 1, %"$gasrem_2058" + br i1 %"$gascmp_2059", label %"$out_of_gas_2060", label %"$have_gas_2061" + +"$out_of_gas_2060": ; preds = %"$have_gas_2053" + call void @_out_of_gas() + br label %"$have_gas_2061" + +"$have_gas_2061": ; preds = %"$out_of_gas_2060", %"$have_gas_2053" + %"$consume_2062" = sub i64 %"$gasrem_2058", 1 + store i64 %"$consume_2062", i64* @_gasrem %"$sum_2" = alloca %Uint32 - %"$$sum_1_1163" = load %Uint32, %Uint32* %"$sum_1" - %"$int10_1164" = load %Uint32, %Uint32* %int10 - %"$add_call_1165" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_1_1163", %Uint32 %"$int10_1164") - store %Uint32 %"$add_call_1165", %Uint32* %"$sum_2" + %"$$sum_1_2063" = load %Uint32, %Uint32* %"$sum_1" + %"$int10_2064" = load %Uint32, %Uint32* %int10 + %"$add_call_2065" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_1_2063", %Uint32 %"$int10_2064") + store %Uint32 %"$add_call_2065", %Uint32* %"$sum_2" + %"$gasrem_2066" = load i64, i64* @_gasrem + %"$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_2061" + call void @_out_of_gas() + br label %"$have_gas_2069" + +"$have_gas_2069": ; preds = %"$out_of_gas_2068", %"$have_gas_2061" + %"$consume_2070" = sub i64 %"$gasrem_2066", 1 + store i64 %"$consume_2070", i64* @_gasrem %"$sum_3" = alloca %Uint32 - %"$$sum_2_1166" = load %Uint32, %Uint32* %"$sum_2" - %"$int11_1167" = load %Uint32, %Uint32* %int11 - %"$add_call_1168" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_2_1166", %Uint32 %"$int11_1167") - store %Uint32 %"$add_call_1168", %Uint32* %"$sum_3" + %"$$sum_2_2071" = load %Uint32, %Uint32* %"$sum_2" + %"$int11_2072" = load %Uint32, %Uint32* %int11 + %"$add_call_2073" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_2_2071", %Uint32 %"$int11_2072") + store %Uint32 %"$add_call_2073", %Uint32* %"$sum_3" + %"$gasrem_2074" = load i64, i64* @_gasrem + %"$gascmp_2075" = icmp ugt i64 1, %"$gasrem_2074" + br i1 %"$gascmp_2075", label %"$out_of_gas_2076", label %"$have_gas_2077" + +"$out_of_gas_2076": ; preds = %"$have_gas_2069" + call void @_out_of_gas() + br label %"$have_gas_2077" + +"$have_gas_2077": ; preds = %"$out_of_gas_2076", %"$have_gas_2069" + %"$consume_2078" = sub i64 %"$gasrem_2074", 1 + store i64 %"$consume_2078", i64* @_gasrem %"$sum_4" = alloca %Uint32 - %"$$sum_3_1169" = load %Uint32, %Uint32* %"$sum_3" - %"$int12_1170" = load %Uint32, %Uint32* %int12 - %"$add_call_1171" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_3_1169", %Uint32 %"$int12_1170") - store %Uint32 %"$add_call_1171", %Uint32* %"$sum_4" + %"$$sum_3_2079" = load %Uint32, %Uint32* %"$sum_3" + %"$int12_2080" = load %Uint32, %Uint32* %int12 + %"$add_call_2081" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_3_2079", %Uint32 %"$int12_2080") + store %Uint32 %"$add_call_2081", %Uint32* %"$sum_4" + %"$gasrem_2082" = load i64, i64* @_gasrem + %"$gascmp_2083" = icmp ugt i64 1, %"$gasrem_2082" + br i1 %"$gascmp_2083", label %"$out_of_gas_2084", label %"$have_gas_2085" + +"$out_of_gas_2084": ; preds = %"$have_gas_2077" + call void @_out_of_gas() + br label %"$have_gas_2085" + +"$have_gas_2085": ; preds = %"$out_of_gas_2084", %"$have_gas_2077" + %"$consume_2086" = sub i64 %"$gasrem_2082", 1 + store i64 %"$consume_2086", i64* @_gasrem %"$sum_5" = alloca %Uint32 - %"$$sum_4_1172" = load %Uint32, %Uint32* %"$sum_4" - %"$int13_1173" = load %Uint32, %Uint32* %int13 - %"$add_call_1174" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_4_1172", %Uint32 %"$int13_1173") - store %Uint32 %"$add_call_1174", %Uint32* %"$sum_5" + %"$$sum_4_2087" = load %Uint32, %Uint32* %"$sum_4" + %"$int13_2088" = load %Uint32, %Uint32* %int13 + %"$add_call_2089" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_4_2087", %Uint32 %"$int13_2088") + store %Uint32 %"$add_call_2089", %Uint32* %"$sum_5" + %"$gasrem_2090" = load i64, i64* @_gasrem + %"$gascmp_2091" = icmp ugt i64 1, %"$gasrem_2090" + br i1 %"$gascmp_2091", label %"$out_of_gas_2092", label %"$have_gas_2093" + +"$out_of_gas_2092": ; preds = %"$have_gas_2085" + call void @_out_of_gas() + br label %"$have_gas_2093" + +"$have_gas_2093": ; preds = %"$out_of_gas_2092", %"$have_gas_2085" + %"$consume_2094" = sub i64 %"$gasrem_2090", 1 + store i64 %"$consume_2094", i64* @_gasrem %"$sum_6" = alloca %Uint32 - %"$$sum_5_1175" = load %Uint32, %Uint32* %"$sum_5" - %"$int14_1176" = load %Uint32, %Uint32* %int14 - %"$add_call_1177" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_5_1175", %Uint32 %"$int14_1176") - store %Uint32 %"$add_call_1177", %Uint32* %"$sum_6" + %"$$sum_5_2095" = load %Uint32, %Uint32* %"$sum_5" + %"$int14_2096" = load %Uint32, %Uint32* %int14 + %"$add_call_2097" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_5_2095", %Uint32 %"$int14_2096") + store %Uint32 %"$add_call_2097", %Uint32* %"$sum_6" + %"$gasrem_2098" = load i64, i64* @_gasrem + %"$gascmp_2099" = icmp ugt i64 1, %"$gasrem_2098" + br i1 %"$gascmp_2099", label %"$out_of_gas_2100", label %"$have_gas_2101" + +"$out_of_gas_2100": ; preds = %"$have_gas_2093" + call void @_out_of_gas() + br label %"$have_gas_2101" + +"$have_gas_2101": ; preds = %"$out_of_gas_2100", %"$have_gas_2093" + %"$consume_2102" = sub i64 %"$gasrem_2098", 1 + store i64 %"$consume_2102", i64* @_gasrem %"$sum_7" = alloca %Uint32 - %"$$sum_6_1178" = load %Uint32, %Uint32* %"$sum_6" - %"$int20_1179" = load %Uint32, %Uint32* %int20 - %"$add_call_1180" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_6_1178", %Uint32 %"$int20_1179") - store %Uint32 %"$add_call_1180", %Uint32* %"$sum_7" + %"$$sum_6_2103" = load %Uint32, %Uint32* %"$sum_6" + %"$int20_2104" = load %Uint32, %Uint32* %int20 + %"$add_call_2105" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_6_2103", %Uint32 %"$int20_2104") + store %Uint32 %"$add_call_2105", %Uint32* %"$sum_7" + %"$gasrem_2106" = load i64, i64* @_gasrem + %"$gascmp_2107" = icmp ugt i64 1, %"$gasrem_2106" + br i1 %"$gascmp_2107", label %"$out_of_gas_2108", label %"$have_gas_2109" + +"$out_of_gas_2108": ; preds = %"$have_gas_2101" + call void @_out_of_gas() + br label %"$have_gas_2109" + +"$have_gas_2109": ; preds = %"$out_of_gas_2108", %"$have_gas_2101" + %"$consume_2110" = sub i64 %"$gasrem_2106", 1 + store i64 %"$consume_2110", i64* @_gasrem %"$sum_8" = alloca %Uint32 - %"$$sum_7_1181" = load %Uint32, %Uint32* %"$sum_7" - %"$int21_1182" = load %Uint32, %Uint32* %int21 - %"$add_call_1183" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_7_1181", %Uint32 %"$int21_1182") - store %Uint32 %"$add_call_1183", %Uint32* %"$sum_8" + %"$$sum_7_2111" = load %Uint32, %Uint32* %"$sum_7" + %"$int21_2112" = load %Uint32, %Uint32* %int21 + %"$add_call_2113" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_7_2111", %Uint32 %"$int21_2112") + store %Uint32 %"$add_call_2113", %Uint32* %"$sum_8" + %"$gasrem_2114" = load i64, i64* @_gasrem + %"$gascmp_2115" = icmp ugt i64 1, %"$gasrem_2114" + br i1 %"$gascmp_2115", label %"$out_of_gas_2116", label %"$have_gas_2117" + +"$out_of_gas_2116": ; preds = %"$have_gas_2109" + call void @_out_of_gas() + br label %"$have_gas_2117" + +"$have_gas_2117": ; preds = %"$out_of_gas_2116", %"$have_gas_2109" + %"$consume_2118" = sub i64 %"$gasrem_2114", 1 + store i64 %"$consume_2118", i64* @_gasrem %"$sum_9" = alloca %Uint32 - %"$$sum_8_1184" = load %Uint32, %Uint32* %"$sum_8" - %"$int22_1185" = load %Uint32, %Uint32* %int22 - %"$add_call_1186" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_8_1184", %Uint32 %"$int22_1185") - store %Uint32 %"$add_call_1186", %Uint32* %"$sum_9" + %"$$sum_8_2119" = load %Uint32, %Uint32* %"$sum_8" + %"$int22_2120" = load %Uint32, %Uint32* %int22 + %"$add_call_2121" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_8_2119", %Uint32 %"$int22_2120") + store %Uint32 %"$add_call_2121", %Uint32* %"$sum_9" + %"$gasrem_2122" = load i64, i64* @_gasrem + %"$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_2117" + call void @_out_of_gas() + br label %"$have_gas_2125" + +"$have_gas_2125": ; preds = %"$out_of_gas_2124", %"$have_gas_2117" + %"$consume_2126" = sub i64 %"$gasrem_2122", 1 + store i64 %"$consume_2126", i64* @_gasrem %"$sum_10" = alloca %Uint32 - %"$$sum_9_1187" = load %Uint32, %Uint32* %"$sum_9" - %"$int23_1188" = load %Uint32, %Uint32* %int23 - %"$add_call_1189" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_9_1187", %Uint32 %"$int23_1188") - store %Uint32 %"$add_call_1189", %Uint32* %"$sum_10" + %"$$sum_9_2127" = load %Uint32, %Uint32* %"$sum_9" + %"$int23_2128" = load %Uint32, %Uint32* %int23 + %"$add_call_2129" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_9_2127", %Uint32 %"$int23_2128") + store %Uint32 %"$add_call_2129", %Uint32* %"$sum_10" + %"$gasrem_2130" = load i64, i64* @_gasrem + %"$gascmp_2131" = icmp ugt i64 1, %"$gasrem_2130" + br i1 %"$gascmp_2131", label %"$out_of_gas_2132", label %"$have_gas_2133" + +"$out_of_gas_2132": ; preds = %"$have_gas_2125" + call void @_out_of_gas() + br label %"$have_gas_2133" + +"$have_gas_2133": ; preds = %"$out_of_gas_2132", %"$have_gas_2125" + %"$consume_2134" = sub i64 %"$gasrem_2130", 1 + store i64 %"$consume_2134", i64* @_gasrem %"$sum_11" = alloca %Uint32 - %"$$sum_10_1190" = load %Uint32, %Uint32* %"$sum_10" - %"$int24_1191" = load %Uint32, %Uint32* %int24 - %"$add_call_1192" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_10_1190", %Uint32 %"$int24_1191") - store %Uint32 %"$add_call_1192", %Uint32* %"$sum_11" + %"$$sum_10_2135" = load %Uint32, %Uint32* %"$sum_10" + %"$int24_2136" = load %Uint32, %Uint32* %int24 + %"$add_call_2137" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_10_2135", %Uint32 %"$int24_2136") + store %Uint32 %"$add_call_2137", %Uint32* %"$sum_11" + %"$gasrem_2138" = load i64, i64* @_gasrem + %"$gascmp_2139" = icmp ugt i64 1, %"$gasrem_2138" + br i1 %"$gascmp_2139", label %"$out_of_gas_2140", label %"$have_gas_2141" + +"$out_of_gas_2140": ; preds = %"$have_gas_2133" + call void @_out_of_gas() + br label %"$have_gas_2141" + +"$have_gas_2141": ; preds = %"$out_of_gas_2140", %"$have_gas_2133" + %"$consume_2142" = sub i64 %"$gasrem_2138", 1 + store i64 %"$consume_2142", i64* @_gasrem %"$sum_12" = alloca %Uint32 - %"$$sum_11_1193" = load %Uint32, %Uint32* %"$sum_11" - %"$int30_1194" = load %Uint32, %Uint32* %int30 - %"$add_call_1195" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_11_1193", %Uint32 %"$int30_1194") - store %Uint32 %"$add_call_1195", %Uint32* %"$sum_12" + %"$$sum_11_2143" = load %Uint32, %Uint32* %"$sum_11" + %"$int30_2144" = load %Uint32, %Uint32* %int30 + %"$add_call_2145" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_11_2143", %Uint32 %"$int30_2144") + store %Uint32 %"$add_call_2145", %Uint32* %"$sum_12" + %"$gasrem_2146" = load i64, i64* @_gasrem + %"$gascmp_2147" = icmp ugt i64 1, %"$gasrem_2146" + br i1 %"$gascmp_2147", label %"$out_of_gas_2148", label %"$have_gas_2149" + +"$out_of_gas_2148": ; preds = %"$have_gas_2141" + call void @_out_of_gas() + br label %"$have_gas_2149" + +"$have_gas_2149": ; preds = %"$out_of_gas_2148", %"$have_gas_2141" + %"$consume_2150" = sub i64 %"$gasrem_2146", 1 + store i64 %"$consume_2150", i64* @_gasrem %"$sum_13" = alloca %Uint32 - %"$$sum_12_1196" = load %Uint32, %Uint32* %"$sum_12" - %"$int31_1197" = load %Uint32, %Uint32* %int31 - %"$add_call_1198" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_12_1196", %Uint32 %"$int31_1197") - store %Uint32 %"$add_call_1198", %Uint32* %"$sum_13" + %"$$sum_12_2151" = load %Uint32, %Uint32* %"$sum_12" + %"$int31_2152" = load %Uint32, %Uint32* %int31 + %"$add_call_2153" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_12_2151", %Uint32 %"$int31_2152") + store %Uint32 %"$add_call_2153", %Uint32* %"$sum_13" + %"$gasrem_2154" = load i64, i64* @_gasrem + %"$gascmp_2155" = icmp ugt i64 1, %"$gasrem_2154" + br i1 %"$gascmp_2155", label %"$out_of_gas_2156", label %"$have_gas_2157" + +"$out_of_gas_2156": ; preds = %"$have_gas_2149" + call void @_out_of_gas() + br label %"$have_gas_2157" + +"$have_gas_2157": ; preds = %"$out_of_gas_2156", %"$have_gas_2149" + %"$consume_2158" = sub i64 %"$gasrem_2154", 1 + store i64 %"$consume_2158", i64* @_gasrem %"$sum_14" = alloca %Uint32 - %"$$sum_13_1199" = load %Uint32, %Uint32* %"$sum_13" - %"$int32_1200" = load %Uint32, %Uint32* %int32 - %"$add_call_1201" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_13_1199", %Uint32 %"$int32_1200") - store %Uint32 %"$add_call_1201", %Uint32* %"$sum_14" + %"$$sum_13_2159" = load %Uint32, %Uint32* %"$sum_13" + %"$int32_2160" = load %Uint32, %Uint32* %int32 + %"$add_call_2161" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_13_2159", %Uint32 %"$int32_2160") + store %Uint32 %"$add_call_2161", %Uint32* %"$sum_14" + %"$gasrem_2162" = load i64, i64* @_gasrem + %"$gascmp_2163" = icmp ugt i64 1, %"$gasrem_2162" + br i1 %"$gascmp_2163", label %"$out_of_gas_2164", label %"$have_gas_2165" + +"$out_of_gas_2164": ; preds = %"$have_gas_2157" + call void @_out_of_gas() + br label %"$have_gas_2165" + +"$have_gas_2165": ; preds = %"$out_of_gas_2164", %"$have_gas_2157" + %"$consume_2166" = sub i64 %"$gasrem_2162", 1 + store i64 %"$consume_2166", i64* @_gasrem %"$sum_15" = alloca %Uint32 - %"$$sum_14_1202" = load %Uint32, %Uint32* %"$sum_14" - %"$int33_1203" = load %Uint32, %Uint32* %int33 - %"$add_call_1204" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_14_1202", %Uint32 %"$int33_1203") - store %Uint32 %"$add_call_1204", %Uint32* %"$sum_15" + %"$$sum_14_2167" = load %Uint32, %Uint32* %"$sum_14" + %"$int33_2168" = load %Uint32, %Uint32* %int33 + %"$add_call_2169" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_14_2167", %Uint32 %"$int33_2168") + store %Uint32 %"$add_call_2169", %Uint32* %"$sum_15" + %"$gasrem_2170" = load i64, i64* @_gasrem + %"$gascmp_2171" = icmp ugt i64 1, %"$gasrem_2170" + br i1 %"$gascmp_2171", label %"$out_of_gas_2172", label %"$have_gas_2173" + +"$out_of_gas_2172": ; preds = %"$have_gas_2165" + call void @_out_of_gas() + br label %"$have_gas_2173" + +"$have_gas_2173": ; preds = %"$out_of_gas_2172", %"$have_gas_2165" + %"$consume_2174" = sub i64 %"$gasrem_2170", 1 + store i64 %"$consume_2174", i64* @_gasrem %"$sum_16" = alloca %Uint32 - %"$$sum_15_1205" = load %Uint32, %Uint32* %"$sum_15" - %"$int34_1206" = load %Uint32, %Uint32* %int34 - %"$add_call_1207" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_15_1205", %Uint32 %"$int34_1206") - store %Uint32 %"$add_call_1207", %Uint32* %"$sum_16" + %"$$sum_15_2175" = load %Uint32, %Uint32* %"$sum_15" + %"$int34_2176" = load %Uint32, %Uint32* %int34 + %"$add_call_2177" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_15_2175", %Uint32 %"$int34_2176") + store %Uint32 %"$add_call_2177", %Uint32* %"$sum_16" + %"$gasrem_2178" = load i64, i64* @_gasrem + %"$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_2173" + call void @_out_of_gas() + br label %"$have_gas_2181" + +"$have_gas_2181": ; preds = %"$out_of_gas_2180", %"$have_gas_2173" + %"$consume_2182" = sub i64 %"$gasrem_2178", 1 + store i64 %"$consume_2182", i64* @_gasrem %"$sum_17" = alloca %Uint32 - %"$$sum_16_1208" = load %Uint32, %Uint32* %"$sum_16" - %"$int40_1209" = load %Uint32, %Uint32* %int40 - %"$add_call_1210" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_16_1208", %Uint32 %"$int40_1209") - store %Uint32 %"$add_call_1210", %Uint32* %"$sum_17" - %"$$sum_17_1211" = load %Uint32, %Uint32* %"$sum_17" - store %Uint32 %"$$sum_17_1211", %Uint32* %"$expr_124" - %"$$expr_124_1212" = load %Uint32, %Uint32* %"$expr_124" - ret %Uint32 %"$$expr_124_1212" + %"$$sum_16_2183" = load %Uint32, %Uint32* %"$sum_16" + %"$int40_2184" = load %Uint32, %Uint32* %int40 + %"$add_call_2185" = call %Uint32 @_add_Uint32(%Uint32 %"$$sum_16_2183", %Uint32 %"$int40_2184") + store %Uint32 %"$add_call_2185", %Uint32* %"$sum_17" + %"$gasrem_2186" = load i64, i64* @_gasrem + %"$gascmp_2187" = icmp ugt i64 1, %"$gasrem_2186" + br i1 %"$gascmp_2187", label %"$out_of_gas_2188", label %"$have_gas_2189" + +"$out_of_gas_2188": ; preds = %"$have_gas_2181" + call void @_out_of_gas() + br label %"$have_gas_2189" + +"$have_gas_2189": ; preds = %"$out_of_gas_2188", %"$have_gas_2181" + %"$consume_2190" = sub i64 %"$gasrem_2186", 1 + store i64 %"$consume_2190", i64* @_gasrem + %"$$sum_17_2191" = load %Uint32, %Uint32* %"$sum_17" + store %Uint32 %"$$sum_17_2191", %Uint32* %"$expr_124" + %"$$expr_124_2192" = load %Uint32, %Uint32* %"$expr_124" + ret %Uint32 %"$$expr_124_2192" } declare %TName_Nat* @_to_nat(i8*, %Uint32) @@ -1976,10 +4135,10 @@ declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_1213" = call %Uint32 @"$scilla_expr_730"(i8* null) - %"$pval_1214" = alloca %Uint32 - %"$memvoidcast_1215" = bitcast %Uint32* %"$pval_1214" to i8* - store %Uint32 %"$exprval_1213", %Uint32* %"$pval_1214" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_161", i8* %"$memvoidcast_1215") + %"$exprval_2193" = call %Uint32 @"$scilla_expr_1045"(i8* null) + %"$pval_2194" = alloca %Uint32 + %"$memvoidcast_2195" = bitcast %Uint32* %"$pval_2194" to i8* + store %Uint32 %"$exprval_2193", %Uint32* %"$pval_2194" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_161", i8* %"$memvoidcast_2195") ret void } diff --git a/testsuite/expr/ackermann.ll.result b/testsuite/expr/ackermann.ll.result index b8cc77fa..db837a7a 100644 --- a/testsuite/expr/ackermann.ll.result +++ b/testsuite/expr/ackermann.ll.result @@ -1 +1,2 @@ 312 : Uint32 +Gas remaining: 9933302 diff --git a/testsuite/expr/ackermann_3_7.ll b/testsuite/expr/ackermann_3_7.ll index 0652108f..e15d42ca 100644 --- a/testsuite/expr/ackermann_3_7.ll +++ b/testsuite/expr/ackermann_3_7.ll @@ -83,6 +83,7 @@ target triple = "x86_64-pc-linux-gnu" %"$$fundef_21_env_160" = type {} @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_85" = global %"$TyDescrTy_PrimTyp_84" zeroinitializer @"$TyDescr_Int32_86" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_84"* @"$TyDescr_Int32_Prim_85" to i8*) } @"$TyDescr_Uint32_Prim_87" = global %"$TyDescrTy_PrimTyp_84" { i32 1, i32 0 } @@ -129,996 +130,1691 @@ target triple = "x86_64-pc-linux-gnu" define internal { %TName_Nat* (i8*, %TName_Nat*)*, i8* } @"$fundef_82"(%"$$fundef_82_env_130"* %0, %TName_Nat* %1) { entry: - %"$$fundef_82_env_f_635" = getelementptr inbounds %"$$fundef_82_env_130", %"$$fundef_82_env_130"* %0, i32 0, i32 0 - %"$f_envload_636" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_82_env_f_635" + %"$$fundef_82_env_f_945" = getelementptr inbounds %"$$fundef_82_env_130", %"$$fundef_82_env_130"* %0, i32 0, i32 0 + %"$f_envload_946" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_82_env_f_945" %f = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_636", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - %"$$fundef_82_env_iter_nat_nat_637" = getelementptr inbounds %"$$fundef_82_env_130", %"$$fundef_82_env_130"* %0, i32 0, i32 1 - %"$iter_nat_nat_envload_638" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$$fundef_82_env_iter_nat_nat_637" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_946", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + %"$$fundef_82_env_iter_nat_nat_947" = getelementptr inbounds %"$$fundef_82_env_130", %"$$fundef_82_env_130"* %0, i32 0, i32 1 + %"$iter_nat_nat_envload_948" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$$fundef_82_env_iter_nat_nat_947" %iter_nat_nat = alloca { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } - store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$iter_nat_nat_envload_638", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %iter_nat_nat - %"$$fundef_82_env_nat_succ_639" = getelementptr inbounds %"$$fundef_82_env_130", %"$$fundef_82_env_130"* %0, i32 0, i32 2 - %"$nat_succ_envload_640" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_82_env_nat_succ_639" + store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$iter_nat_nat_envload_948", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %iter_nat_nat + %"$$fundef_82_env_nat_succ_949" = getelementptr inbounds %"$$fundef_82_env_130", %"$$fundef_82_env_130"* %0, i32 0, i32 2 + %"$nat_succ_envload_950" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_82_env_nat_succ_949" %nat_succ = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$nat_succ_envload_640", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %nat_succ + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$nat_succ_envload_950", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %nat_succ %"$retval_83" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } + %"$gasrem_951" = load i64, i64* @_gasrem + %"$gascmp_952" = icmp ugt i64 1, %"$gasrem_951" + br i1 %"$gascmp_952", label %"$out_of_gas_953", label %"$have_gas_954" + +"$out_of_gas_953": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_954" + +"$have_gas_954": ; preds = %"$out_of_gas_953", %entry + %"$consume_955" = sub i64 %"$gasrem_951", 1 + store i64 %"$consume_955", i64* @_gasrem %"$iter_nat_nat_15" = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$iter_nat_nat_641" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %iter_nat_nat - %"$iter_nat_nat_fptr_642" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$iter_nat_nat_641", 0 - %"$iter_nat_nat_envptr_643" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$iter_nat_nat_641", 1 - %"$f_644" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - %"$iter_nat_nat_call_645" = call { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$iter_nat_nat_fptr_642"(i8* %"$iter_nat_nat_envptr_643", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_644") - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$iter_nat_nat_call_645", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_nat_15" + %"$iter_nat_nat_956" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %iter_nat_nat + %"$iter_nat_nat_fptr_957" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$iter_nat_nat_956", 0 + %"$iter_nat_nat_envptr_958" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$iter_nat_nat_956", 1 + %"$f_959" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + %"$iter_nat_nat_call_960" = call { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$iter_nat_nat_fptr_957"(i8* %"$iter_nat_nat_envptr_958", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_959") + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$iter_nat_nat_call_960", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_nat_15" %"$iter_nat_nat_16" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - %"$$iter_nat_nat_15_646" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_nat_15" - %"$$iter_nat_nat_15_fptr_647" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_15_646", 0 - %"$$iter_nat_nat_15_envptr_648" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_15_646", 1 - %"$$iter_nat_nat_15_call_649" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$iter_nat_nat_15_fptr_647"(i8* %"$$iter_nat_nat_15_envptr_648", %TName_Nat* %1) - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$iter_nat_nat_15_call_649", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$iter_nat_nat_16" + %"$$iter_nat_nat_15_961" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_nat_15" + %"$$iter_nat_nat_15_fptr_962" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_15_961", 0 + %"$$iter_nat_nat_15_envptr_963" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_15_961", 1 + %"$$iter_nat_nat_15_call_964" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$iter_nat_nat_15_fptr_962"(i8* %"$$iter_nat_nat_15_envptr_963", %TName_Nat* %1) + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$iter_nat_nat_15_call_964", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$iter_nat_nat_16" %"$iter_nat_nat_17" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$$iter_nat_nat_16_650" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$iter_nat_nat_16" - %"$$iter_nat_nat_16_fptr_651" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$iter_nat_nat_16_650", 0 - %"$$iter_nat_nat_16_envptr_652" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$iter_nat_nat_16_650", 1 - %"$nat_succ_653" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %nat_succ - %"$$iter_nat_nat_16_call_654" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_16_fptr_651"(i8* %"$$iter_nat_nat_16_envptr_652", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$nat_succ_653") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_16_call_654", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_nat_17" - %"$$iter_nat_nat_17_655" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_nat_17" - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_17_655", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_83" - %"$$retval_83_656" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_83" - ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_83_656" + %"$$iter_nat_nat_16_965" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$iter_nat_nat_16" + %"$$iter_nat_nat_16_fptr_966" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$iter_nat_nat_16_965", 0 + %"$$iter_nat_nat_16_envptr_967" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$iter_nat_nat_16_965", 1 + %"$nat_succ_968" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %nat_succ + %"$$iter_nat_nat_16_call_969" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_16_fptr_966"(i8* %"$$iter_nat_nat_16_envptr_967", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$nat_succ_968") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_16_call_969", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_nat_17" + %"$$iter_nat_nat_17_970" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_nat_17" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_nat_17_970", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_83" + %"$$retval_83_971" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_83" + ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_83_971" } define internal %TName_Nat* @"$fundef_80"(%"$$fundef_80_env_131"* %0, %TName_Nat* %1) { entry: - %"$$fundef_80_env_ack_613" = getelementptr inbounds %"$$fundef_80_env_131", %"$$fundef_80_env_131"* %0, i32 0, i32 0 - %"$ack_envload_614" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_80_env_ack_613" + %"$$fundef_80_env_ack_918" = getelementptr inbounds %"$$fundef_80_env_131", %"$$fundef_80_env_131"* %0, i32 0, i32 0 + %"$ack_envload_919" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_80_env_ack_918" %ack = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ack_envload_614", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %ack - %"$$fundef_80_env_iter_nat_615" = getelementptr inbounds %"$$fundef_80_env_131", %"$$fundef_80_env_131"* %0, i32 0, i32 1 - %"$iter_nat_envload_616" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_80_env_iter_nat_615" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ack_envload_919", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %ack + %"$$fundef_80_env_iter_nat_920" = getelementptr inbounds %"$$fundef_80_env_131", %"$$fundef_80_env_131"* %0, i32 0, i32 1 + %"$iter_nat_envload_921" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_80_env_iter_nat_920" %iter_nat = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_envload_616", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat - %"$$fundef_80_env_x0_617" = getelementptr inbounds %"$$fundef_80_env_131", %"$$fundef_80_env_131"* %0, i32 0, i32 2 - %"$x0_envload_618" = load %TName_Nat*, %TName_Nat** %"$$fundef_80_env_x0_617" + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_envload_921", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat + %"$$fundef_80_env_x0_922" = getelementptr inbounds %"$$fundef_80_env_131", %"$$fundef_80_env_131"* %0, i32 0, i32 2 + %"$x0_envload_923" = load %TName_Nat*, %TName_Nat** %"$$fundef_80_env_x0_922" %x0 = alloca %TName_Nat* - store %TName_Nat* %"$x0_envload_618", %TName_Nat** %x0 + store %TName_Nat* %"$x0_envload_923", %TName_Nat** %x0 %"$retval_81" = alloca %TName_Nat* + %"$gasrem_924" = load i64, i64* @_gasrem + %"$gascmp_925" = icmp ugt i64 1, %"$gasrem_924" + br i1 %"$gascmp_925", label %"$out_of_gas_926", label %"$have_gas_927" + +"$out_of_gas_926": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_927" + +"$have_gas_927": ; preds = %"$out_of_gas_926", %entry + %"$consume_928" = sub i64 %"$gasrem_924", 1 + store i64 %"$consume_928", i64* @_gasrem %"$iter_nat_12" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$iter_nat_619" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat - %"$iter_nat_fptr_620" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_619", 0 - %"$iter_nat_envptr_621" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_619", 1 - %"$ack_622" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %ack - %"$iter_nat_call_623" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$iter_nat_fptr_620"(i8* %"$iter_nat_envptr_621", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ack_622") - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$iter_nat_call_623", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_12" + %"$iter_nat_929" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat + %"$iter_nat_fptr_930" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_929", 0 + %"$iter_nat_envptr_931" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_929", 1 + %"$ack_932" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %ack + %"$iter_nat_call_933" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$iter_nat_fptr_930"(i8* %"$iter_nat_envptr_931", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ack_932") + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$iter_nat_call_933", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_12" %"$iter_nat_13" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$$iter_nat_12_624" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_12" - %"$$iter_nat_12_fptr_625" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_12_624", 0 - %"$$iter_nat_12_envptr_626" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_12_624", 1 - %"$$iter_nat_12_call_627" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_12_fptr_625"(i8* %"$$iter_nat_12_envptr_626", %TName_Nat* %1) - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_12_call_627", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_13" + %"$$iter_nat_12_934" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_12" + %"$$iter_nat_12_fptr_935" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_12_934", 0 + %"$$iter_nat_12_envptr_936" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_12_934", 1 + %"$$iter_nat_12_call_937" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_12_fptr_935"(i8* %"$$iter_nat_12_envptr_936", %TName_Nat* %1) + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_12_call_937", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_13" %"$iter_nat_14" = alloca %TName_Nat* - %"$$iter_nat_13_628" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_13" - %"$$iter_nat_13_fptr_629" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_13_628", 0 - %"$$iter_nat_13_envptr_630" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_13_628", 1 - %"$x0_631" = load %TName_Nat*, %TName_Nat** %x0 - %"$$iter_nat_13_call_632" = call %TName_Nat* %"$$iter_nat_13_fptr_629"(i8* %"$$iter_nat_13_envptr_630", %TName_Nat* %"$x0_631") - store %TName_Nat* %"$$iter_nat_13_call_632", %TName_Nat** %"$iter_nat_14" - %"$$iter_nat_14_633" = load %TName_Nat*, %TName_Nat** %"$iter_nat_14" - store %TName_Nat* %"$$iter_nat_14_633", %TName_Nat** %"$retval_81" - %"$$retval_81_634" = load %TName_Nat*, %TName_Nat** %"$retval_81" - ret %TName_Nat* %"$$retval_81_634" + %"$$iter_nat_13_938" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$iter_nat_13" + %"$$iter_nat_13_fptr_939" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_13_938", 0 + %"$$iter_nat_13_envptr_940" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$iter_nat_13_938", 1 + %"$x0_941" = load %TName_Nat*, %TName_Nat** %x0 + %"$$iter_nat_13_call_942" = call %TName_Nat* %"$$iter_nat_13_fptr_939"(i8* %"$$iter_nat_13_envptr_940", %TName_Nat* %"$x0_941") + store %TName_Nat* %"$$iter_nat_13_call_942", %TName_Nat** %"$iter_nat_14" + %"$$iter_nat_14_943" = load %TName_Nat*, %TName_Nat** %"$iter_nat_14" + store %TName_Nat* %"$$iter_nat_14_943", %TName_Nat** %"$retval_81" + %"$$retval_81_944" = load %TName_Nat*, %TName_Nat** %"$retval_81" + ret %TName_Nat* %"$$retval_81_944" } define internal { %TName_Nat* (i8*, %TName_Nat*)*, i8* } @"$fundef_78"(%"$$fundef_78_env_132"* %0, { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1) { entry: - %"$$fundef_78_env_iter_nat_594" = getelementptr inbounds %"$$fundef_78_env_132", %"$$fundef_78_env_132"* %0, i32 0, i32 0 - %"$iter_nat_envload_595" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_78_env_iter_nat_594" + %"$$fundef_78_env_iter_nat_884" = getelementptr inbounds %"$$fundef_78_env_132", %"$$fundef_78_env_132"* %0, i32 0, i32 0 + %"$iter_nat_envload_885" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_78_env_iter_nat_884" %iter_nat = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_envload_595", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat - %"$$fundef_78_env_one_596" = getelementptr inbounds %"$$fundef_78_env_132", %"$$fundef_78_env_132"* %0, i32 0, i32 1 - %"$one_envload_597" = load %TName_Nat*, %TName_Nat** %"$$fundef_78_env_one_596" + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_envload_885", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat + %"$$fundef_78_env_one_886" = getelementptr inbounds %"$$fundef_78_env_132", %"$$fundef_78_env_132"* %0, i32 0, i32 1 + %"$one_envload_887" = load %TName_Nat*, %TName_Nat** %"$$fundef_78_env_one_886" %one = alloca %TName_Nat* - store %TName_Nat* %"$one_envload_597", %TName_Nat** %one + store %TName_Nat* %"$one_envload_887", %TName_Nat** %one %"$retval_79" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } + %"$gasrem_888" = load i64, i64* @_gasrem + %"$gascmp_889" = icmp ugt i64 1, %"$gasrem_888" + br i1 %"$gascmp_889", label %"$out_of_gas_890", label %"$have_gas_891" + +"$out_of_gas_890": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_891" + +"$have_gas_891": ; preds = %"$out_of_gas_890", %entry + %"$consume_892" = sub i64 %"$gasrem_888", 1 + store i64 %"$consume_892", i64* @_gasrem %x0 = alloca %TName_Nat* + %"$gasrem_893" = load i64, i64* @_gasrem + %"$gascmp_894" = icmp ugt i64 1, %"$gasrem_893" + br i1 %"$gascmp_894", label %"$out_of_gas_895", label %"$have_gas_896" + +"$out_of_gas_895": ; preds = %"$have_gas_891" + call void @_out_of_gas() + br label %"$have_gas_896" + +"$have_gas_896": ; preds = %"$out_of_gas_895", %"$have_gas_891" + %"$consume_897" = sub i64 %"$gasrem_893", 1 + store i64 %"$consume_897", i64* @_gasrem %"$ack_11" = alloca %TName_Nat* - %"$ack_fptr_598" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, 0 - %"$ack_envptr_599" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, 1 - %"$one_600" = load %TName_Nat*, %TName_Nat** %one - %"$ack_call_601" = call %TName_Nat* %"$ack_fptr_598"(i8* %"$ack_envptr_599", %TName_Nat* %"$one_600") - store %TName_Nat* %"$ack_call_601", %TName_Nat** %"$ack_11" - %"$$ack_11_602" = load %TName_Nat*, %TName_Nat** %"$ack_11" - store %TName_Nat* %"$$ack_11_602", %TName_Nat** %x0 - %"$$fundef_80_envp_603_load" = load i8*, i8** @_execptr - %"$$fundef_80_envp_603_salloc" = call i8* @_salloc(i8* %"$$fundef_80_envp_603_load", i64 40) - %"$$fundef_80_envp_603" = bitcast i8* %"$$fundef_80_envp_603_salloc" to %"$$fundef_80_env_131"* - %"$$fundef_80_env_voidp_605" = bitcast %"$$fundef_80_env_131"* %"$$fundef_80_envp_603" to i8* - %"$$fundef_80_cloval_606" = insertvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } { %TName_Nat* (i8*, %TName_Nat*)* bitcast (%TName_Nat* (%"$$fundef_80_env_131"*, %TName_Nat*)* @"$fundef_80" to %TName_Nat* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_80_env_voidp_605", 1 - %"$$fundef_80_env_ack_607" = getelementptr inbounds %"$$fundef_80_env_131", %"$$fundef_80_env_131"* %"$$fundef_80_envp_603", i32 0, i32 0 - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_80_env_ack_607" - %"$$fundef_80_env_iter_nat_608" = getelementptr inbounds %"$$fundef_80_env_131", %"$$fundef_80_env_131"* %"$$fundef_80_envp_603", i32 0, i32 1 - %"$iter_nat_609" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_609", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_80_env_iter_nat_608" - %"$$fundef_80_env_x0_610" = getelementptr inbounds %"$$fundef_80_env_131", %"$$fundef_80_env_131"* %"$$fundef_80_envp_603", i32 0, i32 2 - %"$x0_611" = load %TName_Nat*, %TName_Nat** %x0 - store %TName_Nat* %"$x0_611", %TName_Nat** %"$$fundef_80_env_x0_610" - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fundef_80_cloval_606", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_79" - %"$$retval_79_612" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_79" - ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_79_612" + %"$ack_fptr_898" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, 0 + %"$ack_envptr_899" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, 1 + %"$one_900" = load %TName_Nat*, %TName_Nat** %one + %"$ack_call_901" = call %TName_Nat* %"$ack_fptr_898"(i8* %"$ack_envptr_899", %TName_Nat* %"$one_900") + store %TName_Nat* %"$ack_call_901", %TName_Nat** %"$ack_11" + %"$$ack_11_902" = load %TName_Nat*, %TName_Nat** %"$ack_11" + store %TName_Nat* %"$$ack_11_902", %TName_Nat** %x0 + %"$gasrem_903" = load i64, i64* @_gasrem + %"$gascmp_904" = icmp ugt i64 1, %"$gasrem_903" + br i1 %"$gascmp_904", label %"$out_of_gas_905", label %"$have_gas_906" + +"$out_of_gas_905": ; preds = %"$have_gas_896" + call void @_out_of_gas() + br label %"$have_gas_906" + +"$have_gas_906": ; preds = %"$out_of_gas_905", %"$have_gas_896" + %"$consume_907" = sub i64 %"$gasrem_903", 1 + store i64 %"$consume_907", i64* @_gasrem + %"$$fundef_80_envp_908_load" = load i8*, i8** @_execptr + %"$$fundef_80_envp_908_salloc" = call i8* @_salloc(i8* %"$$fundef_80_envp_908_load", i64 40) + %"$$fundef_80_envp_908" = bitcast i8* %"$$fundef_80_envp_908_salloc" to %"$$fundef_80_env_131"* + %"$$fundef_80_env_voidp_910" = bitcast %"$$fundef_80_env_131"* %"$$fundef_80_envp_908" to i8* + %"$$fundef_80_cloval_911" = insertvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } { %TName_Nat* (i8*, %TName_Nat*)* bitcast (%TName_Nat* (%"$$fundef_80_env_131"*, %TName_Nat*)* @"$fundef_80" to %TName_Nat* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_80_env_voidp_910", 1 + %"$$fundef_80_env_ack_912" = getelementptr inbounds %"$$fundef_80_env_131", %"$$fundef_80_env_131"* %"$$fundef_80_envp_908", i32 0, i32 0 + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_80_env_ack_912" + %"$$fundef_80_env_iter_nat_913" = getelementptr inbounds %"$$fundef_80_env_131", %"$$fundef_80_env_131"* %"$$fundef_80_envp_908", i32 0, i32 1 + %"$iter_nat_914" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_914", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_80_env_iter_nat_913" + %"$$fundef_80_env_x0_915" = getelementptr inbounds %"$$fundef_80_env_131", %"$$fundef_80_env_131"* %"$$fundef_80_envp_908", i32 0, i32 2 + %"$x0_916" = load %TName_Nat*, %TName_Nat** %x0 + store %TName_Nat* %"$x0_916", %TName_Nat** %"$$fundef_80_env_x0_915" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fundef_80_cloval_911", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_79" + %"$$retval_79_917" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_79" + ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_79_917" } define internal %TName_Nat* @"$fundef_76"(%"$$fundef_76_env_133"* %0, %TName_Nat* %1) { entry: - %"$$fundef_76_env_f_583" = getelementptr inbounds %"$$fundef_76_env_133", %"$$fundef_76_env_133"* %0, i32 0, i32 0 - %"$f_envload_584" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_76_env_f_583" + %"$$fundef_76_env_f_868" = getelementptr inbounds %"$$fundef_76_env_133", %"$$fundef_76_env_133"* %0, i32 0, i32 0 + %"$f_envload_869" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_76_env_f_868" %f = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_envload_584", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f - %"$$fundef_76_env_x_585" = getelementptr inbounds %"$$fundef_76_env_133", %"$$fundef_76_env_133"* %0, i32 0, i32 1 - %"$x_envload_586" = load %TName_Nat*, %TName_Nat** %"$$fundef_76_env_x_585" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_envload_869", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f + %"$$fundef_76_env_x_870" = getelementptr inbounds %"$$fundef_76_env_133", %"$$fundef_76_env_133"* %0, i32 0, i32 1 + %"$x_envload_871" = load %TName_Nat*, %TName_Nat** %"$$fundef_76_env_x_870" %x = alloca %TName_Nat* - store %TName_Nat* %"$x_envload_586", %TName_Nat** %x + store %TName_Nat* %"$x_envload_871", %TName_Nat** %x %"$retval_77" = alloca %TName_Nat* + %"$gasrem_872" = load i64, i64* @_gasrem + %"$gascmp_873" = icmp ugt i64 1, %"$gasrem_872" + br i1 %"$gascmp_873", label %"$out_of_gas_874", label %"$have_gas_875" + +"$out_of_gas_874": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_875" + +"$have_gas_875": ; preds = %"$out_of_gas_874", %entry + %"$consume_876" = sub i64 %"$gasrem_872", 1 + store i64 %"$consume_876", i64* @_gasrem %"$f_7" = alloca %TName_Nat* - %"$f_587" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f - %"$f_fptr_588" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_587", 0 - %"$f_envptr_589" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_587", 1 - %"$x_590" = load %TName_Nat*, %TName_Nat** %x - %"$f_call_591" = call %TName_Nat* %"$f_fptr_588"(i8* %"$f_envptr_589", %TName_Nat* %"$x_590") - store %TName_Nat* %"$f_call_591", %TName_Nat** %"$f_7" - %"$$f_7_592" = load %TName_Nat*, %TName_Nat** %"$f_7" - store %TName_Nat* %"$$f_7_592", %TName_Nat** %"$retval_77" - %"$$retval_77_593" = load %TName_Nat*, %TName_Nat** %"$retval_77" - ret %TName_Nat* %"$$retval_77_593" + %"$f_877" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f + %"$f_fptr_878" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_877", 0 + %"$f_envptr_879" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_877", 1 + %"$x_880" = load %TName_Nat*, %TName_Nat** %x + %"$f_call_881" = call %TName_Nat* %"$f_fptr_878"(i8* %"$f_envptr_879", %TName_Nat* %"$x_880") + store %TName_Nat* %"$f_call_881", %TName_Nat** %"$f_7" + %"$$f_7_882" = load %TName_Nat*, %TName_Nat** %"$f_7" + store %TName_Nat* %"$$f_7_882", %TName_Nat** %"$retval_77" + %"$$retval_77_883" = load %TName_Nat*, %TName_Nat** %"$retval_77" + ret %TName_Nat* %"$$retval_77_883" } define internal { %TName_Nat* (i8*, %TName_Nat*)*, i8* } @"$fundef_74"(%"$$fundef_74_env_134"* %0, %TName_Nat* %1) { entry: - %"$$fundef_74_env_f_573" = getelementptr inbounds %"$$fundef_74_env_134", %"$$fundef_74_env_134"* %0, i32 0, i32 0 - %"$f_envload_574" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_74_env_f_573" + %"$$fundef_74_env_f_853" = getelementptr inbounds %"$$fundef_74_env_134", %"$$fundef_74_env_134"* %0, i32 0, i32 0 + %"$f_envload_854" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_74_env_f_853" %f = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_envload_574", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_envload_854", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f %"$retval_75" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$$fundef_76_envp_575_load" = load i8*, i8** @_execptr - %"$$fundef_76_envp_575_salloc" = call i8* @_salloc(i8* %"$$fundef_76_envp_575_load", i64 24) - %"$$fundef_76_envp_575" = bitcast i8* %"$$fundef_76_envp_575_salloc" to %"$$fundef_76_env_133"* - %"$$fundef_76_env_voidp_577" = bitcast %"$$fundef_76_env_133"* %"$$fundef_76_envp_575" to i8* - %"$$fundef_76_cloval_578" = insertvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } { %TName_Nat* (i8*, %TName_Nat*)* bitcast (%TName_Nat* (%"$$fundef_76_env_133"*, %TName_Nat*)* @"$fundef_76" to %TName_Nat* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_76_env_voidp_577", 1 - %"$$fundef_76_env_f_579" = getelementptr inbounds %"$$fundef_76_env_133", %"$$fundef_76_env_133"* %"$$fundef_76_envp_575", i32 0, i32 0 - %"$f_580" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_580", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_76_env_f_579" - %"$$fundef_76_env_x_581" = getelementptr inbounds %"$$fundef_76_env_133", %"$$fundef_76_env_133"* %"$$fundef_76_envp_575", i32 0, i32 1 - store %TName_Nat* %1, %TName_Nat** %"$$fundef_76_env_x_581" - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fundef_76_cloval_578", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_75" - %"$$retval_75_582" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_75" - ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_75_582" + %"$gasrem_855" = load i64, i64* @_gasrem + %"$gascmp_856" = icmp ugt i64 1, %"$gasrem_855" + br i1 %"$gascmp_856", label %"$out_of_gas_857", label %"$have_gas_858" + +"$out_of_gas_857": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_858" + +"$have_gas_858": ; preds = %"$out_of_gas_857", %entry + %"$consume_859" = sub i64 %"$gasrem_855", 1 + store i64 %"$consume_859", i64* @_gasrem + %"$$fundef_76_envp_860_load" = load i8*, i8** @_execptr + %"$$fundef_76_envp_860_salloc" = call i8* @_salloc(i8* %"$$fundef_76_envp_860_load", i64 24) + %"$$fundef_76_envp_860" = bitcast i8* %"$$fundef_76_envp_860_salloc" to %"$$fundef_76_env_133"* + %"$$fundef_76_env_voidp_862" = bitcast %"$$fundef_76_env_133"* %"$$fundef_76_envp_860" to i8* + %"$$fundef_76_cloval_863" = insertvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } { %TName_Nat* (i8*, %TName_Nat*)* bitcast (%TName_Nat* (%"$$fundef_76_env_133"*, %TName_Nat*)* @"$fundef_76" to %TName_Nat* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_76_env_voidp_862", 1 + %"$$fundef_76_env_f_864" = getelementptr inbounds %"$$fundef_76_env_133", %"$$fundef_76_env_133"* %"$$fundef_76_envp_860", i32 0, i32 0 + %"$f_865" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_865", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_76_env_f_864" + %"$$fundef_76_env_x_866" = getelementptr inbounds %"$$fundef_76_env_133", %"$$fundef_76_env_133"* %"$$fundef_76_envp_860", i32 0, i32 1 + store %TName_Nat* %1, %TName_Nat** %"$$fundef_76_env_x_866" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fundef_76_cloval_863", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_75" + %"$$retval_75_867" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_75" + ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_75_867" } define internal %TName_Nat* @"$fundef_72"(%"$$fundef_72_env_135"* %0, %TName_Nat* %1) { entry: - %"$$fundef_72_env_f_538" = getelementptr inbounds %"$$fundef_72_env_135", %"$$fundef_72_env_135"* %0, i32 0, i32 0 - %"$f_envload_539" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_72_env_f_538" + %"$$fundef_72_env_f_793" = getelementptr inbounds %"$$fundef_72_env_135", %"$$fundef_72_env_135"* %0, i32 0, i32 0 + %"$f_envload_794" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_72_env_f_793" %f = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_envload_539", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f - %"$$fundef_72_env_n_540" = getelementptr inbounds %"$$fundef_72_env_135", %"$$fundef_72_env_135"* %0, i32 0, i32 1 - %"$n_envload_541" = load %TName_Nat*, %TName_Nat** %"$$fundef_72_env_n_540" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_envload_794", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f + %"$$fundef_72_env_n_795" = getelementptr inbounds %"$$fundef_72_env_135", %"$$fundef_72_env_135"* %0, i32 0, i32 1 + %"$n_envload_796" = load %TName_Nat*, %TName_Nat** %"$$fundef_72_env_n_795" %n = alloca %TName_Nat* - store %TName_Nat* %"$n_envload_541", %TName_Nat** %n - %"$$fundef_72_env_nat_fold_542" = getelementptr inbounds %"$$fundef_72_env_135", %"$$fundef_72_env_135"* %0, i32 0, i32 2 - %"$nat_fold_envload_543" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_72_env_nat_fold_542" + store %TName_Nat* %"$n_envload_796", %TName_Nat** %n + %"$$fundef_72_env_nat_fold_797" = getelementptr inbounds %"$$fundef_72_env_135", %"$$fundef_72_env_135"* %0, i32 0, i32 2 + %"$nat_fold_envload_798" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_72_env_nat_fold_797" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_543", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_798", { i8*, i8* }** %nat_fold %"$retval_73" = alloca %TName_Nat* + %"$gasrem_799" = load i64, i64* @_gasrem + %"$gascmp_800" = icmp ugt i64 1, %"$gasrem_799" + br i1 %"$gascmp_800", label %"$out_of_gas_801", label %"$have_gas_802" + +"$out_of_gas_801": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_802" + +"$have_gas_802": ; preds = %"$out_of_gas_801", %entry + %"$consume_803" = sub i64 %"$gasrem_799", 1 + store i64 %"$consume_803", i64* @_gasrem %folder = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } - %"$nat_fold_544" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - %"$nat_fold_545" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_fold_544", i32 2 - %"$nat_fold_546" = bitcast { i8*, i8* }* %"$nat_fold_545" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* - %"$nat_fold_547" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_fold_546" - %"$nat_fold_fptr_548" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_547", 0 - %"$nat_fold_envptr_549" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_547", 1 - %"$nat_fold_call_550" = call { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$nat_fold_fptr_548"(i8* %"$nat_fold_envptr_549") - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$nat_fold_call_550", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }* %folder + %"$gasrem_804" = load i64, i64* @_gasrem + %"$gascmp_805" = icmp ugt i64 1, %"$gasrem_804" + br i1 %"$gascmp_805", label %"$out_of_gas_806", label %"$have_gas_807" + +"$out_of_gas_806": ; preds = %"$have_gas_802" + call void @_out_of_gas() + br label %"$have_gas_807" + +"$have_gas_807": ; preds = %"$out_of_gas_806", %"$have_gas_802" + %"$consume_808" = sub i64 %"$gasrem_804", 1 + store i64 %"$consume_808", i64* @_gasrem + %"$nat_fold_809" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + %"$nat_fold_810" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_fold_809", i32 2 + %"$nat_fold_811" = bitcast { i8*, i8* }* %"$nat_fold_810" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* + %"$nat_fold_812" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_fold_811" + %"$nat_fold_fptr_813" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_812", 0 + %"$nat_fold_envptr_814" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_812", 1 + %"$nat_fold_call_815" = call { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$nat_fold_fptr_813"(i8* %"$nat_fold_envptr_814") + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$nat_fold_call_815", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }* %folder + %"$gasrem_816" = load i64, i64* @_gasrem + %"$gascmp_817" = icmp ugt i64 1, %"$gasrem_816" + br i1 %"$gascmp_817", label %"$out_of_gas_818", label %"$have_gas_819" + +"$out_of_gas_818": ; preds = %"$have_gas_807" + call void @_out_of_gas() + br label %"$have_gas_819" + +"$have_gas_819": ; preds = %"$out_of_gas_818", %"$have_gas_807" + %"$consume_820" = sub i64 %"$gasrem_816", 1 + store i64 %"$consume_820", i64* @_gasrem %step = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$$fundef_74_envp_551_load" = load i8*, i8** @_execptr - %"$$fundef_74_envp_551_salloc" = call i8* @_salloc(i8* %"$$fundef_74_envp_551_load", i64 16) - %"$$fundef_74_envp_551" = bitcast i8* %"$$fundef_74_envp_551_salloc" to %"$$fundef_74_env_134"* - %"$$fundef_74_env_voidp_553" = bitcast %"$$fundef_74_env_134"* %"$$fundef_74_envp_551" to i8* - %"$$fundef_74_cloval_554" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_74_env_134"*, %TName_Nat*)* @"$fundef_74" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_74_env_voidp_553", 1 - %"$$fundef_74_env_f_555" = getelementptr inbounds %"$$fundef_74_env_134", %"$$fundef_74_env_134"* %"$$fundef_74_envp_551", i32 0, i32 0 - %"$f_556" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_556", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_74_env_f_555" - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_74_cloval_554", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %step + %"$gasrem_821" = load i64, i64* @_gasrem + %"$gascmp_822" = icmp ugt i64 1, %"$gasrem_821" + br i1 %"$gascmp_822", label %"$out_of_gas_823", label %"$have_gas_824" + +"$out_of_gas_823": ; preds = %"$have_gas_819" + call void @_out_of_gas() + br label %"$have_gas_824" + +"$have_gas_824": ; preds = %"$out_of_gas_823", %"$have_gas_819" + %"$consume_825" = sub i64 %"$gasrem_821", 1 + store i64 %"$consume_825", i64* @_gasrem + %"$$fundef_74_envp_826_load" = load i8*, i8** @_execptr + %"$$fundef_74_envp_826_salloc" = call i8* @_salloc(i8* %"$$fundef_74_envp_826_load", i64 16) + %"$$fundef_74_envp_826" = bitcast i8* %"$$fundef_74_envp_826_salloc" to %"$$fundef_74_env_134"* + %"$$fundef_74_env_voidp_828" = bitcast %"$$fundef_74_env_134"* %"$$fundef_74_envp_826" to i8* + %"$$fundef_74_cloval_829" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_74_env_134"*, %TName_Nat*)* @"$fundef_74" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_74_env_voidp_828", 1 + %"$$fundef_74_env_f_830" = getelementptr inbounds %"$$fundef_74_env_134", %"$$fundef_74_env_134"* %"$$fundef_74_envp_826", i32 0, i32 0 + %"$f_831" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_831", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_74_env_f_830" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_74_cloval_829", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %step + %"$gasrem_832" = load i64, i64* @_gasrem + %"$gascmp_833" = icmp ugt i64 1, %"$gasrem_832" + br i1 %"$gascmp_833", label %"$out_of_gas_834", label %"$have_gas_835" + +"$out_of_gas_834": ; preds = %"$have_gas_824" + call void @_out_of_gas() + br label %"$have_gas_835" + +"$have_gas_835": ; preds = %"$out_of_gas_834", %"$have_gas_824" + %"$consume_836" = sub i64 %"$gasrem_832", 1 + store i64 %"$consume_836", i64* @_gasrem %"$folder_8" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$folder_557" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }* %folder - %"$folder_fptr_558" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$folder_557", 0 - %"$folder_envptr_559" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$folder_557", 1 - %"$step_560" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %step - %"$folder_call_561" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$folder_fptr_558"(i8* %"$folder_envptr_559", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$step_560") - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$folder_call_561", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$folder_8" + %"$folder_837" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }* %folder + %"$folder_fptr_838" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$folder_837", 0 + %"$folder_envptr_839" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$folder_837", 1 + %"$step_840" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %step + %"$folder_call_841" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$folder_fptr_838"(i8* %"$folder_envptr_839", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$step_840") + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$folder_call_841", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$folder_8" %"$folder_9" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$$folder_8_562" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$folder_8" - %"$$folder_8_fptr_563" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_8_562", 0 - %"$$folder_8_envptr_564" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_8_562", 1 - %"$$folder_8_call_565" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_8_fptr_563"(i8* %"$$folder_8_envptr_564", %TName_Nat* %1) - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_8_call_565", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$folder_9" + %"$$folder_8_842" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$folder_8" + %"$$folder_8_fptr_843" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_8_842", 0 + %"$$folder_8_envptr_844" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_8_842", 1 + %"$$folder_8_call_845" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_8_fptr_843"(i8* %"$$folder_8_envptr_844", %TName_Nat* %1) + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_8_call_845", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$folder_9" %"$folder_10" = alloca %TName_Nat* - %"$$folder_9_566" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$folder_9" - %"$$folder_9_fptr_567" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_9_566", 0 - %"$$folder_9_envptr_568" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_9_566", 1 - %"$n_569" = load %TName_Nat*, %TName_Nat** %n - %"$$folder_9_call_570" = call %TName_Nat* %"$$folder_9_fptr_567"(i8* %"$$folder_9_envptr_568", %TName_Nat* %"$n_569") - store %TName_Nat* %"$$folder_9_call_570", %TName_Nat** %"$folder_10" - %"$$folder_10_571" = load %TName_Nat*, %TName_Nat** %"$folder_10" - store %TName_Nat* %"$$folder_10_571", %TName_Nat** %"$retval_73" - %"$$retval_73_572" = load %TName_Nat*, %TName_Nat** %"$retval_73" - ret %TName_Nat* %"$$retval_73_572" + %"$$folder_9_846" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$folder_9" + %"$$folder_9_fptr_847" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_9_846", 0 + %"$$folder_9_envptr_848" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_9_846", 1 + %"$n_849" = load %TName_Nat*, %TName_Nat** %n + %"$$folder_9_call_850" = call %TName_Nat* %"$$folder_9_fptr_847"(i8* %"$$folder_9_envptr_848", %TName_Nat* %"$n_849") + store %TName_Nat* %"$$folder_9_call_850", %TName_Nat** %"$folder_10" + %"$$folder_10_851" = load %TName_Nat*, %TName_Nat** %"$folder_10" + store %TName_Nat* %"$$folder_10_851", %TName_Nat** %"$retval_73" + %"$$retval_73_852" = load %TName_Nat*, %TName_Nat** %"$retval_73" + ret %TName_Nat* %"$$retval_73_852" } define internal { %TName_Nat* (i8*, %TName_Nat*)*, i8* } @"$fundef_70"(%"$$fundef_70_env_136"* %0, %TName_Nat* %1) { entry: - %"$$fundef_70_env_f_524" = getelementptr inbounds %"$$fundef_70_env_136", %"$$fundef_70_env_136"* %0, i32 0, i32 0 - %"$f_envload_525" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_70_env_f_524" + %"$$fundef_70_env_f_774" = getelementptr inbounds %"$$fundef_70_env_136", %"$$fundef_70_env_136"* %0, i32 0, i32 0 + %"$f_envload_775" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_70_env_f_774" %f = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_envload_525", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f - %"$$fundef_70_env_nat_fold_526" = getelementptr inbounds %"$$fundef_70_env_136", %"$$fundef_70_env_136"* %0, i32 0, i32 1 - %"$nat_fold_envload_527" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_70_env_nat_fold_526" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_envload_775", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f + %"$$fundef_70_env_nat_fold_776" = getelementptr inbounds %"$$fundef_70_env_136", %"$$fundef_70_env_136"* %0, i32 0, i32 1 + %"$nat_fold_envload_777" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_70_env_nat_fold_776" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_527", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_777", { i8*, i8* }** %nat_fold %"$retval_71" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$$fundef_72_envp_528_load" = load i8*, i8** @_execptr - %"$$fundef_72_envp_528_salloc" = call i8* @_salloc(i8* %"$$fundef_72_envp_528_load", i64 32) - %"$$fundef_72_envp_528" = bitcast i8* %"$$fundef_72_envp_528_salloc" to %"$$fundef_72_env_135"* - %"$$fundef_72_env_voidp_530" = bitcast %"$$fundef_72_env_135"* %"$$fundef_72_envp_528" to i8* - %"$$fundef_72_cloval_531" = insertvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } { %TName_Nat* (i8*, %TName_Nat*)* bitcast (%TName_Nat* (%"$$fundef_72_env_135"*, %TName_Nat*)* @"$fundef_72" to %TName_Nat* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_72_env_voidp_530", 1 - %"$$fundef_72_env_f_532" = getelementptr inbounds %"$$fundef_72_env_135", %"$$fundef_72_env_135"* %"$$fundef_72_envp_528", i32 0, i32 0 - %"$f_533" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_533", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_72_env_f_532" - %"$$fundef_72_env_n_534" = getelementptr inbounds %"$$fundef_72_env_135", %"$$fundef_72_env_135"* %"$$fundef_72_envp_528", i32 0, i32 1 - store %TName_Nat* %1, %TName_Nat** %"$$fundef_72_env_n_534" - %"$$fundef_72_env_nat_fold_535" = getelementptr inbounds %"$$fundef_72_env_135", %"$$fundef_72_env_135"* %"$$fundef_72_envp_528", i32 0, i32 2 - %"$nat_fold_536" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - store { i8*, i8* }* %"$nat_fold_536", { i8*, i8* }** %"$$fundef_72_env_nat_fold_535" - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fundef_72_cloval_531", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_71" - %"$$retval_71_537" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_71" - ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_71_537" + %"$gasrem_778" = load i64, i64* @_gasrem + %"$gascmp_779" = icmp ugt i64 1, %"$gasrem_778" + br i1 %"$gascmp_779", label %"$out_of_gas_780", label %"$have_gas_781" + +"$out_of_gas_780": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_781" + +"$have_gas_781": ; preds = %"$out_of_gas_780", %entry + %"$consume_782" = sub i64 %"$gasrem_778", 1 + store i64 %"$consume_782", i64* @_gasrem + %"$$fundef_72_envp_783_load" = load i8*, i8** @_execptr + %"$$fundef_72_envp_783_salloc" = call i8* @_salloc(i8* %"$$fundef_72_envp_783_load", i64 32) + %"$$fundef_72_envp_783" = bitcast i8* %"$$fundef_72_envp_783_salloc" to %"$$fundef_72_env_135"* + %"$$fundef_72_env_voidp_785" = bitcast %"$$fundef_72_env_135"* %"$$fundef_72_envp_783" to i8* + %"$$fundef_72_cloval_786" = insertvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } { %TName_Nat* (i8*, %TName_Nat*)* bitcast (%TName_Nat* (%"$$fundef_72_env_135"*, %TName_Nat*)* @"$fundef_72" to %TName_Nat* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_72_env_voidp_785", 1 + %"$$fundef_72_env_f_787" = getelementptr inbounds %"$$fundef_72_env_135", %"$$fundef_72_env_135"* %"$$fundef_72_envp_783", i32 0, i32 0 + %"$f_788" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_788", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_72_env_f_787" + %"$$fundef_72_env_n_789" = getelementptr inbounds %"$$fundef_72_env_135", %"$$fundef_72_env_135"* %"$$fundef_72_envp_783", i32 0, i32 1 + store %TName_Nat* %1, %TName_Nat** %"$$fundef_72_env_n_789" + %"$$fundef_72_env_nat_fold_790" = getelementptr inbounds %"$$fundef_72_env_135", %"$$fundef_72_env_135"* %"$$fundef_72_envp_783", i32 0, i32 2 + %"$nat_fold_791" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_791", { i8*, i8* }** %"$$fundef_72_env_nat_fold_790" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fundef_72_cloval_786", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_71" + %"$$retval_71_792" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_71" + ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_71_792" } define internal { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } @"$fundef_68"(%"$$fundef_68_env_137"* %0, { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1) { entry: - %"$$fundef_68_env_nat_fold_514" = getelementptr inbounds %"$$fundef_68_env_137", %"$$fundef_68_env_137"* %0, i32 0, i32 0 - %"$nat_fold_envload_515" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_68_env_nat_fold_514" + %"$$fundef_68_env_nat_fold_759" = getelementptr inbounds %"$$fundef_68_env_137", %"$$fundef_68_env_137"* %0, i32 0, i32 0 + %"$nat_fold_envload_760" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_68_env_nat_fold_759" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_515", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_760", { i8*, i8* }** %nat_fold %"$retval_69" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$$fundef_70_envp_516_load" = load i8*, i8** @_execptr - %"$$fundef_70_envp_516_salloc" = call i8* @_salloc(i8* %"$$fundef_70_envp_516_load", i64 24) - %"$$fundef_70_envp_516" = bitcast i8* %"$$fundef_70_envp_516_salloc" to %"$$fundef_70_env_136"* - %"$$fundef_70_env_voidp_518" = bitcast %"$$fundef_70_env_136"* %"$$fundef_70_envp_516" to i8* - %"$$fundef_70_cloval_519" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_70_env_136"*, %TName_Nat*)* @"$fundef_70" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_70_env_voidp_518", 1 - %"$$fundef_70_env_f_520" = getelementptr inbounds %"$$fundef_70_env_136", %"$$fundef_70_env_136"* %"$$fundef_70_envp_516", i32 0, i32 0 - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_70_env_f_520" - %"$$fundef_70_env_nat_fold_521" = getelementptr inbounds %"$$fundef_70_env_136", %"$$fundef_70_env_136"* %"$$fundef_70_envp_516", i32 0, i32 1 - %"$nat_fold_522" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - store { i8*, i8* }* %"$nat_fold_522", { i8*, i8* }** %"$$fundef_70_env_nat_fold_521" - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_70_cloval_519", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_69" - %"$$retval_69_523" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_69" - ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_69_523" + %"$gasrem_761" = load i64, i64* @_gasrem + %"$gascmp_762" = icmp ugt i64 1, %"$gasrem_761" + br i1 %"$gascmp_762", label %"$out_of_gas_763", label %"$have_gas_764" + +"$out_of_gas_763": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_764" + +"$have_gas_764": ; preds = %"$out_of_gas_763", %entry + %"$consume_765" = sub i64 %"$gasrem_761", 1 + store i64 %"$consume_765", i64* @_gasrem + %"$$fundef_70_envp_766_load" = load i8*, i8** @_execptr + %"$$fundef_70_envp_766_salloc" = call i8* @_salloc(i8* %"$$fundef_70_envp_766_load", i64 24) + %"$$fundef_70_envp_766" = bitcast i8* %"$$fundef_70_envp_766_salloc" to %"$$fundef_70_env_136"* + %"$$fundef_70_env_voidp_768" = bitcast %"$$fundef_70_env_136"* %"$$fundef_70_envp_766" to i8* + %"$$fundef_70_cloval_769" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_70_env_136"*, %TName_Nat*)* @"$fundef_70" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_70_env_voidp_768", 1 + %"$$fundef_70_env_f_770" = getelementptr inbounds %"$$fundef_70_env_136", %"$$fundef_70_env_136"* %"$$fundef_70_envp_766", i32 0, i32 0 + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_70_env_f_770" + %"$$fundef_70_env_nat_fold_771" = getelementptr inbounds %"$$fundef_70_env_136", %"$$fundef_70_env_136"* %"$$fundef_70_envp_766", i32 0, i32 1 + %"$nat_fold_772" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_772", { i8*, i8* }** %"$$fundef_70_env_nat_fold_771" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_70_cloval_769", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_69" + %"$$retval_69_773" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_69" + ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_69_773" } define internal { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } @"$fundef_66"(%"$$fundef_66_env_138"* %0) { entry: - %"$$fundef_66_env_nat_fold_505" = getelementptr inbounds %"$$fundef_66_env_138", %"$$fundef_66_env_138"* %0, i32 0, i32 0 - %"$nat_fold_envload_506" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_66_env_nat_fold_505" + %"$$fundef_66_env_nat_fold_745" = getelementptr inbounds %"$$fundef_66_env_138", %"$$fundef_66_env_138"* %0, i32 0, i32 0 + %"$nat_fold_envload_746" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_66_env_nat_fold_745" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_506", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_746", { i8*, i8* }** %nat_fold %"$retval_67" = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - %"$$fundef_68_envp_507_load" = load i8*, i8** @_execptr - %"$$fundef_68_envp_507_salloc" = call i8* @_salloc(i8* %"$$fundef_68_envp_507_load", i64 8) - %"$$fundef_68_envp_507" = bitcast i8* %"$$fundef_68_envp_507_salloc" to %"$$fundef_68_env_137"* - %"$$fundef_68_env_voidp_509" = bitcast %"$$fundef_68_env_137"* %"$$fundef_68_envp_507" to i8* - %"$$fundef_68_cloval_510" = insertvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (%"$$fundef_68_env_137"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_68" to { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_68_env_voidp_509", 1 - %"$$fundef_68_env_nat_fold_511" = getelementptr inbounds %"$$fundef_68_env_137", %"$$fundef_68_env_137"* %"$$fundef_68_envp_507", i32 0, i32 0 - %"$nat_fold_512" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - store { i8*, i8* }* %"$nat_fold_512", { i8*, i8* }** %"$$fundef_68_env_nat_fold_511" - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_68_cloval_510", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_67" - %"$$retval_67_513" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_67" - ret { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$retval_67_513" + %"$gasrem_747" = load i64, i64* @_gasrem + %"$gascmp_748" = icmp ugt i64 1, %"$gasrem_747" + br i1 %"$gascmp_748", label %"$out_of_gas_749", label %"$have_gas_750" + +"$out_of_gas_749": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_750" + +"$have_gas_750": ; preds = %"$out_of_gas_749", %entry + %"$consume_751" = sub i64 %"$gasrem_747", 1 + store i64 %"$consume_751", i64* @_gasrem + %"$$fundef_68_envp_752_load" = load i8*, i8** @_execptr + %"$$fundef_68_envp_752_salloc" = call i8* @_salloc(i8* %"$$fundef_68_envp_752_load", i64 8) + %"$$fundef_68_envp_752" = bitcast i8* %"$$fundef_68_envp_752_salloc" to %"$$fundef_68_env_137"* + %"$$fundef_68_env_voidp_754" = bitcast %"$$fundef_68_env_137"* %"$$fundef_68_envp_752" to i8* + %"$$fundef_68_cloval_755" = insertvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (%"$$fundef_68_env_137"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_68" to { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_68_env_voidp_754", 1 + %"$$fundef_68_env_nat_fold_756" = getelementptr inbounds %"$$fundef_68_env_137", %"$$fundef_68_env_137"* %"$$fundef_68_envp_752", i32 0, i32 0 + %"$nat_fold_757" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_757", { i8*, i8* }** %"$$fundef_68_env_nat_fold_756" + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_68_cloval_755", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_67" + %"$$retval_67_758" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_67" + ret { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$retval_67_758" } define internal { %TName_Nat* (i8*, %TName_Nat*)*, i8* } @"$fundef_64"(%"$$fundef_64_env_139"* %0, %TName_Nat* %1) { entry: - %"$$fundef_64_env_f_494" = getelementptr inbounds %"$$fundef_64_env_139", %"$$fundef_64_env_139"* %0, i32 0, i32 0 - %"$f_envload_495" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_64_env_f_494" + %"$$fundef_64_env_f_729" = getelementptr inbounds %"$$fundef_64_env_139", %"$$fundef_64_env_139"* %0, i32 0, i32 0 + %"$f_envload_730" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_64_env_f_729" %f = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_495", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - %"$$fundef_64_env_x_496" = getelementptr inbounds %"$$fundef_64_env_139", %"$$fundef_64_env_139"* %0, i32 0, i32 1 - %"$x_envload_497" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_64_env_x_496" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_730", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + %"$$fundef_64_env_x_731" = getelementptr inbounds %"$$fundef_64_env_139", %"$$fundef_64_env_139"* %0, i32 0, i32 1 + %"$x_envload_732" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_64_env_x_731" %x = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$x_envload_497", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %x + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$x_envload_732", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %x %"$retval_65" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } + %"$gasrem_733" = load i64, i64* @_gasrem + %"$gascmp_734" = icmp ugt i64 1, %"$gasrem_733" + br i1 %"$gascmp_734", label %"$out_of_gas_735", label %"$have_gas_736" + +"$out_of_gas_735": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_736" + +"$have_gas_736": ; preds = %"$out_of_gas_735", %entry + %"$consume_737" = sub i64 %"$gasrem_733", 1 + store i64 %"$consume_737", i64* @_gasrem %"$f_7" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$f_498" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - %"$f_fptr_499" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_498", 0 - %"$f_envptr_500" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_498", 1 - %"$x_501" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %x - %"$f_call_502" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_fptr_499"(i8* %"$f_envptr_500", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$x_501") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_call_502", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$f_7" - %"$$f_7_503" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$f_7" - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$f_7_503", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_65" - %"$$retval_65_504" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_65" - ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_65_504" + %"$f_738" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + %"$f_fptr_739" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_738", 0 + %"$f_envptr_740" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_738", 1 + %"$x_741" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %x + %"$f_call_742" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_fptr_739"(i8* %"$f_envptr_740", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$x_741") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f_call_742", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$f_7" + %"$$f_7_743" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$f_7" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$f_7_743", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_65" + %"$$retval_65_744" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_65" + ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_65_744" } define internal { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } @"$fundef_62"(%"$$fundef_62_env_140"* %0, { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1) { entry: - %"$$fundef_62_env_f_484" = getelementptr inbounds %"$$fundef_62_env_140", %"$$fundef_62_env_140"* %0, i32 0, i32 0 - %"$f_envload_485" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_62_env_f_484" + %"$$fundef_62_env_f_714" = getelementptr inbounds %"$$fundef_62_env_140", %"$$fundef_62_env_140"* %0, i32 0, i32 0 + %"$f_envload_715" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_62_env_f_714" %f = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_485", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_715", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f %"$retval_63" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$$fundef_64_envp_486_load" = load i8*, i8** @_execptr - %"$$fundef_64_envp_486_salloc" = call i8* @_salloc(i8* %"$$fundef_64_envp_486_load", i64 32) - %"$$fundef_64_envp_486" = bitcast i8* %"$$fundef_64_envp_486_salloc" to %"$$fundef_64_env_139"* - %"$$fundef_64_env_voidp_488" = bitcast %"$$fundef_64_env_139"* %"$$fundef_64_envp_486" to i8* - %"$$fundef_64_cloval_489" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_64_env_139"*, %TName_Nat*)* @"$fundef_64" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_64_env_voidp_488", 1 - %"$$fundef_64_env_f_490" = getelementptr inbounds %"$$fundef_64_env_139", %"$$fundef_64_env_139"* %"$$fundef_64_envp_486", i32 0, i32 0 - %"$f_491" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_491", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_64_env_f_490" - %"$$fundef_64_env_x_492" = getelementptr inbounds %"$$fundef_64_env_139", %"$$fundef_64_env_139"* %"$$fundef_64_envp_486", i32 0, i32 1 - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_64_env_x_492" - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_64_cloval_489", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_63" - %"$$retval_63_493" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_63" - ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_63_493" + %"$gasrem_716" = load i64, i64* @_gasrem + %"$gascmp_717" = icmp ugt i64 1, %"$gasrem_716" + br i1 %"$gascmp_717", label %"$out_of_gas_718", label %"$have_gas_719" + +"$out_of_gas_718": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_719" + +"$have_gas_719": ; preds = %"$out_of_gas_718", %entry + %"$consume_720" = sub i64 %"$gasrem_716", 1 + store i64 %"$consume_720", i64* @_gasrem + %"$$fundef_64_envp_721_load" = load i8*, i8** @_execptr + %"$$fundef_64_envp_721_salloc" = call i8* @_salloc(i8* %"$$fundef_64_envp_721_load", i64 32) + %"$$fundef_64_envp_721" = bitcast i8* %"$$fundef_64_envp_721_salloc" to %"$$fundef_64_env_139"* + %"$$fundef_64_env_voidp_723" = bitcast %"$$fundef_64_env_139"* %"$$fundef_64_envp_721" to i8* + %"$$fundef_64_cloval_724" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_64_env_139"*, %TName_Nat*)* @"$fundef_64" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_64_env_voidp_723", 1 + %"$$fundef_64_env_f_725" = getelementptr inbounds %"$$fundef_64_env_139", %"$$fundef_64_env_139"* %"$$fundef_64_envp_721", i32 0, i32 0 + %"$f_726" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_726", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_64_env_f_725" + %"$$fundef_64_env_x_727" = getelementptr inbounds %"$$fundef_64_env_139", %"$$fundef_64_env_139"* %"$$fundef_64_envp_721", i32 0, i32 1 + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_64_env_x_727" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_64_cloval_724", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_63" + %"$$retval_63_728" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_63" + ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_63_728" } define internal { %TName_Nat* (i8*, %TName_Nat*)*, i8* } @"$fundef_60"(%"$$fundef_60_env_141"* %0, { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1) { entry: - %"$$fundef_60_env_f_449" = getelementptr inbounds %"$$fundef_60_env_141", %"$$fundef_60_env_141"* %0, i32 0, i32 0 - %"$f_envload_450" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_60_env_f_449" + %"$$fundef_60_env_f_654" = getelementptr inbounds %"$$fundef_60_env_141", %"$$fundef_60_env_141"* %0, i32 0, i32 0 + %"$f_envload_655" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_60_env_f_654" %f = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_450", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - %"$$fundef_60_env_n_451" = getelementptr inbounds %"$$fundef_60_env_141", %"$$fundef_60_env_141"* %0, i32 0, i32 1 - %"$n_envload_452" = load %TName_Nat*, %TName_Nat** %"$$fundef_60_env_n_451" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_655", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + %"$$fundef_60_env_n_656" = getelementptr inbounds %"$$fundef_60_env_141", %"$$fundef_60_env_141"* %0, i32 0, i32 1 + %"$n_envload_657" = load %TName_Nat*, %TName_Nat** %"$$fundef_60_env_n_656" %n = alloca %TName_Nat* - store %TName_Nat* %"$n_envload_452", %TName_Nat** %n - %"$$fundef_60_env_nat_fold_453" = getelementptr inbounds %"$$fundef_60_env_141", %"$$fundef_60_env_141"* %0, i32 0, i32 2 - %"$nat_fold_envload_454" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_60_env_nat_fold_453" + store %TName_Nat* %"$n_envload_657", %TName_Nat** %n + %"$$fundef_60_env_nat_fold_658" = getelementptr inbounds %"$$fundef_60_env_141", %"$$fundef_60_env_141"* %0, i32 0, i32 2 + %"$nat_fold_envload_659" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_60_env_nat_fold_658" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_454", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_659", { i8*, i8* }** %nat_fold %"$retval_61" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } + %"$gasrem_660" = load i64, i64* @_gasrem + %"$gascmp_661" = icmp ugt i64 1, %"$gasrem_660" + br i1 %"$gascmp_661", label %"$out_of_gas_662", label %"$have_gas_663" + +"$out_of_gas_662": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_663" + +"$have_gas_663": ; preds = %"$out_of_gas_662", %entry + %"$consume_664" = sub i64 %"$gasrem_660", 1 + store i64 %"$consume_664", i64* @_gasrem %folder = alloca { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } - %"$nat_fold_455" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - %"$nat_fold_456" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_fold_455", i32 1 - %"$nat_fold_457" = bitcast { i8*, i8* }* %"$nat_fold_456" to { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* - %"$nat_fold_458" = load { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }, { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_fold_457" - %"$nat_fold_fptr_459" = extractvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_458", 0 - %"$nat_fold_envptr_460" = extractvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_458", 1 - %"$nat_fold_call_461" = call { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$nat_fold_fptr_459"(i8* %"$nat_fold_envptr_460") - store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$nat_fold_call_461", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %folder + %"$gasrem_665" = load i64, i64* @_gasrem + %"$gascmp_666" = icmp ugt i64 1, %"$gasrem_665" + br i1 %"$gascmp_666", label %"$out_of_gas_667", label %"$have_gas_668" + +"$out_of_gas_667": ; preds = %"$have_gas_663" + call void @_out_of_gas() + br label %"$have_gas_668" + +"$have_gas_668": ; preds = %"$out_of_gas_667", %"$have_gas_663" + %"$consume_669" = sub i64 %"$gasrem_665", 1 + store i64 %"$consume_669", i64* @_gasrem + %"$nat_fold_670" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + %"$nat_fold_671" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_fold_670", i32 1 + %"$nat_fold_672" = bitcast { i8*, i8* }* %"$nat_fold_671" to { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* + %"$nat_fold_673" = load { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }, { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_fold_672" + %"$nat_fold_fptr_674" = extractvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_673", 0 + %"$nat_fold_envptr_675" = extractvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_673", 1 + %"$nat_fold_call_676" = call { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$nat_fold_fptr_674"(i8* %"$nat_fold_envptr_675") + store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$nat_fold_call_676", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %folder + %"$gasrem_677" = load i64, i64* @_gasrem + %"$gascmp_678" = icmp ugt i64 1, %"$gasrem_677" + br i1 %"$gascmp_678", label %"$out_of_gas_679", label %"$have_gas_680" + +"$out_of_gas_679": ; preds = %"$have_gas_668" + call void @_out_of_gas() + br label %"$have_gas_680" + +"$have_gas_680": ; preds = %"$out_of_gas_679", %"$have_gas_668" + %"$consume_681" = sub i64 %"$gasrem_677", 1 + store i64 %"$consume_681", i64* @_gasrem %step = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - %"$$fundef_62_envp_462_load" = load i8*, i8** @_execptr - %"$$fundef_62_envp_462_salloc" = call i8* @_salloc(i8* %"$$fundef_62_envp_462_load", i64 16) - %"$$fundef_62_envp_462" = bitcast i8* %"$$fundef_62_envp_462_salloc" to %"$$fundef_62_env_140"* - %"$$fundef_62_env_voidp_464" = bitcast %"$$fundef_62_env_140"* %"$$fundef_62_envp_462" to i8* - %"$$fundef_62_cloval_465" = insertvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (%"$$fundef_62_env_140"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_62" to { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_62_env_voidp_464", 1 - %"$$fundef_62_env_f_466" = getelementptr inbounds %"$$fundef_62_env_140", %"$$fundef_62_env_140"* %"$$fundef_62_envp_462", i32 0, i32 0 - %"$f_467" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_467", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_62_env_f_466" - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_62_cloval_465", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %step + %"$gasrem_682" = load i64, i64* @_gasrem + %"$gascmp_683" = icmp ugt i64 1, %"$gasrem_682" + br i1 %"$gascmp_683", label %"$out_of_gas_684", label %"$have_gas_685" + +"$out_of_gas_684": ; preds = %"$have_gas_680" + call void @_out_of_gas() + br label %"$have_gas_685" + +"$have_gas_685": ; preds = %"$out_of_gas_684", %"$have_gas_680" + %"$consume_686" = sub i64 %"$gasrem_682", 1 + store i64 %"$consume_686", i64* @_gasrem + %"$$fundef_62_envp_687_load" = load i8*, i8** @_execptr + %"$$fundef_62_envp_687_salloc" = call i8* @_salloc(i8* %"$$fundef_62_envp_687_load", i64 16) + %"$$fundef_62_envp_687" = bitcast i8* %"$$fundef_62_envp_687_salloc" to %"$$fundef_62_env_140"* + %"$$fundef_62_env_voidp_689" = bitcast %"$$fundef_62_env_140"* %"$$fundef_62_envp_687" to i8* + %"$$fundef_62_cloval_690" = insertvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (%"$$fundef_62_env_140"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_62" to { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_62_env_voidp_689", 1 + %"$$fundef_62_env_f_691" = getelementptr inbounds %"$$fundef_62_env_140", %"$$fundef_62_env_140"* %"$$fundef_62_envp_687", i32 0, i32 0 + %"$f_692" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_692", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_62_env_f_691" + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_62_cloval_690", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %step + %"$gasrem_693" = load i64, i64* @_gasrem + %"$gascmp_694" = icmp ugt i64 1, %"$gasrem_693" + br i1 %"$gascmp_694", label %"$out_of_gas_695", label %"$have_gas_696" + +"$out_of_gas_695": ; preds = %"$have_gas_685" + call void @_out_of_gas() + br label %"$have_gas_696" + +"$have_gas_696": ; preds = %"$out_of_gas_695", %"$have_gas_685" + %"$consume_697" = sub i64 %"$gasrem_693", 1 + store i64 %"$consume_697", i64* @_gasrem %"$folder_8" = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - %"$folder_468" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %folder - %"$folder_fptr_469" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$folder_468", 0 - %"$folder_envptr_470" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$folder_468", 1 - %"$step_471" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %step - %"$folder_call_472" = call { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$folder_fptr_469"(i8* %"$folder_envptr_470", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$step_471") - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$folder_call_472", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$folder_8" + %"$folder_698" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %folder + %"$folder_fptr_699" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$folder_698", 0 + %"$folder_envptr_700" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$folder_698", 1 + %"$step_701" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %step + %"$folder_call_702" = call { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$folder_fptr_699"(i8* %"$folder_envptr_700", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$step_701") + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$folder_call_702", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$folder_8" %"$folder_9" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$$folder_8_473" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$folder_8" - %"$$folder_8_fptr_474" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$folder_8_473", 0 - %"$$folder_8_envptr_475" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$folder_8_473", 1 - %"$$folder_8_call_476" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_8_fptr_474"(i8* %"$$folder_8_envptr_475", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1) - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_8_call_476", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$folder_9" + %"$$folder_8_703" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$folder_8" + %"$$folder_8_fptr_704" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$folder_8_703", 0 + %"$$folder_8_envptr_705" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$folder_8_703", 1 + %"$$folder_8_call_706" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_8_fptr_704"(i8* %"$$folder_8_envptr_705", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1) + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_8_call_706", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$folder_9" %"$folder_10" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$$folder_9_477" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$folder_9" - %"$$folder_9_fptr_478" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_9_477", 0 - %"$$folder_9_envptr_479" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_9_477", 1 - %"$n_480" = load %TName_Nat*, %TName_Nat** %n - %"$$folder_9_call_481" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_9_fptr_478"(i8* %"$$folder_9_envptr_479", %TName_Nat* %"$n_480") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_9_call_481", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$folder_10" - %"$$folder_10_482" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$folder_10" - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_10_482", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_61" - %"$$retval_61_483" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_61" - ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_61_483" + %"$$folder_9_707" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$folder_9" + %"$$folder_9_fptr_708" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_9_707", 0 + %"$$folder_9_envptr_709" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$folder_9_707", 1 + %"$n_710" = load %TName_Nat*, %TName_Nat** %n + %"$$folder_9_call_711" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_9_fptr_708"(i8* %"$$folder_9_envptr_709", %TName_Nat* %"$n_710") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_9_call_711", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$folder_10" + %"$$folder_10_712" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$folder_10" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$folder_10_712", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_61" + %"$$retval_61_713" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_61" + ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_61_713" } define internal { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } @"$fundef_58"(%"$$fundef_58_env_142"* %0, %TName_Nat* %1) { entry: - %"$$fundef_58_env_f_435" = getelementptr inbounds %"$$fundef_58_env_142", %"$$fundef_58_env_142"* %0, i32 0, i32 0 - %"$f_envload_436" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_58_env_f_435" + %"$$fundef_58_env_f_635" = getelementptr inbounds %"$$fundef_58_env_142", %"$$fundef_58_env_142"* %0, i32 0, i32 0 + %"$f_envload_636" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_58_env_f_635" %f = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_436", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - %"$$fundef_58_env_nat_fold_437" = getelementptr inbounds %"$$fundef_58_env_142", %"$$fundef_58_env_142"* %0, i32 0, i32 1 - %"$nat_fold_envload_438" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_58_env_nat_fold_437" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_envload_636", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + %"$$fundef_58_env_nat_fold_637" = getelementptr inbounds %"$$fundef_58_env_142", %"$$fundef_58_env_142"* %0, i32 0, i32 1 + %"$nat_fold_envload_638" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_58_env_nat_fold_637" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_438", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_638", { i8*, i8* }** %nat_fold %"$retval_59" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - %"$$fundef_60_envp_439_load" = load i8*, i8** @_execptr - %"$$fundef_60_envp_439_salloc" = call i8* @_salloc(i8* %"$$fundef_60_envp_439_load", i64 32) - %"$$fundef_60_envp_439" = bitcast i8* %"$$fundef_60_envp_439_salloc" to %"$$fundef_60_env_141"* - %"$$fundef_60_env_voidp_441" = bitcast %"$$fundef_60_env_141"* %"$$fundef_60_envp_439" to i8* - %"$$fundef_60_cloval_442" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_60_env_141"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_60" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_60_env_voidp_441", 1 - %"$$fundef_60_env_f_443" = getelementptr inbounds %"$$fundef_60_env_141", %"$$fundef_60_env_141"* %"$$fundef_60_envp_439", i32 0, i32 0 - %"$f_444" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_444", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_60_env_f_443" - %"$$fundef_60_env_n_445" = getelementptr inbounds %"$$fundef_60_env_141", %"$$fundef_60_env_141"* %"$$fundef_60_envp_439", i32 0, i32 1 - store %TName_Nat* %1, %TName_Nat** %"$$fundef_60_env_n_445" - %"$$fundef_60_env_nat_fold_446" = getelementptr inbounds %"$$fundef_60_env_141", %"$$fundef_60_env_141"* %"$$fundef_60_envp_439", i32 0, i32 2 - %"$nat_fold_447" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - store { i8*, i8* }* %"$nat_fold_447", { i8*, i8* }** %"$$fundef_60_env_nat_fold_446" - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_60_cloval_442", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_59" - %"$$retval_59_448" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_59" - ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$retval_59_448" + %"$gasrem_639" = load i64, i64* @_gasrem + %"$gascmp_640" = icmp ugt i64 1, %"$gasrem_639" + br i1 %"$gascmp_640", label %"$out_of_gas_641", label %"$have_gas_642" + +"$out_of_gas_641": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_642" + +"$have_gas_642": ; preds = %"$out_of_gas_641", %entry + %"$consume_643" = sub i64 %"$gasrem_639", 1 + store i64 %"$consume_643", i64* @_gasrem + %"$$fundef_60_envp_644_load" = load i8*, i8** @_execptr + %"$$fundef_60_envp_644_salloc" = call i8* @_salloc(i8* %"$$fundef_60_envp_644_load", i64 32) + %"$$fundef_60_envp_644" = bitcast i8* %"$$fundef_60_envp_644_salloc" to %"$$fundef_60_env_141"* + %"$$fundef_60_env_voidp_646" = bitcast %"$$fundef_60_env_141"* %"$$fundef_60_envp_644" to i8* + %"$$fundef_60_cloval_647" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_60_env_141"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_60" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_60_env_voidp_646", 1 + %"$$fundef_60_env_f_648" = getelementptr inbounds %"$$fundef_60_env_141", %"$$fundef_60_env_141"* %"$$fundef_60_envp_644", i32 0, i32 0 + %"$f_649" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_649", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_60_env_f_648" + %"$$fundef_60_env_n_650" = getelementptr inbounds %"$$fundef_60_env_141", %"$$fundef_60_env_141"* %"$$fundef_60_envp_644", i32 0, i32 1 + store %TName_Nat* %1, %TName_Nat** %"$$fundef_60_env_n_650" + %"$$fundef_60_env_nat_fold_651" = getelementptr inbounds %"$$fundef_60_env_141", %"$$fundef_60_env_141"* %"$$fundef_60_envp_644", i32 0, i32 2 + %"$nat_fold_652" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_652", { i8*, i8* }** %"$$fundef_60_env_nat_fold_651" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_60_cloval_647", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_59" + %"$$retval_59_653" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_59" + ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$retval_59_653" } define internal { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } @"$fundef_56"(%"$$fundef_56_env_143"* %0, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %1) { entry: - %"$$fundef_56_env_nat_fold_425" = getelementptr inbounds %"$$fundef_56_env_143", %"$$fundef_56_env_143"* %0, i32 0, i32 0 - %"$nat_fold_envload_426" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_56_env_nat_fold_425" + %"$$fundef_56_env_nat_fold_620" = getelementptr inbounds %"$$fundef_56_env_143", %"$$fundef_56_env_143"* %0, i32 0, i32 0 + %"$nat_fold_envload_621" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_56_env_nat_fold_620" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_426", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_621", { i8*, i8* }** %nat_fold %"$retval_57" = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$$fundef_58_envp_427_load" = load i8*, i8** @_execptr - %"$$fundef_58_envp_427_salloc" = call i8* @_salloc(i8* %"$$fundef_58_envp_427_load", i64 24) - %"$$fundef_58_envp_427" = bitcast i8* %"$$fundef_58_envp_427_salloc" to %"$$fundef_58_env_142"* - %"$$fundef_58_env_voidp_429" = bitcast %"$$fundef_58_env_142"* %"$$fundef_58_envp_427" to i8* - %"$$fundef_58_cloval_430" = insertvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)* bitcast ({ { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (%"$$fundef_58_env_142"*, %TName_Nat*)* @"$fundef_58" to { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_58_env_voidp_429", 1 - %"$$fundef_58_env_f_431" = getelementptr inbounds %"$$fundef_58_env_142", %"$$fundef_58_env_142"* %"$$fundef_58_envp_427", i32 0, i32 0 - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %1, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_58_env_f_431" - %"$$fundef_58_env_nat_fold_432" = getelementptr inbounds %"$$fundef_58_env_142", %"$$fundef_58_env_142"* %"$$fundef_58_envp_427", i32 0, i32 1 - %"$nat_fold_433" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - store { i8*, i8* }* %"$nat_fold_433", { i8*, i8* }** %"$$fundef_58_env_nat_fold_432" - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_58_cloval_430", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_57" - %"$$retval_57_434" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_57" - ret { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_57_434" + %"$gasrem_622" = load i64, i64* @_gasrem + %"$gascmp_623" = icmp ugt i64 1, %"$gasrem_622" + br i1 %"$gascmp_623", label %"$out_of_gas_624", label %"$have_gas_625" + +"$out_of_gas_624": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_625" + +"$have_gas_625": ; preds = %"$out_of_gas_624", %entry + %"$consume_626" = sub i64 %"$gasrem_622", 1 + store i64 %"$consume_626", i64* @_gasrem + %"$$fundef_58_envp_627_load" = load i8*, i8** @_execptr + %"$$fundef_58_envp_627_salloc" = call i8* @_salloc(i8* %"$$fundef_58_envp_627_load", i64 24) + %"$$fundef_58_envp_627" = bitcast i8* %"$$fundef_58_envp_627_salloc" to %"$$fundef_58_env_142"* + %"$$fundef_58_env_voidp_629" = bitcast %"$$fundef_58_env_142"* %"$$fundef_58_envp_627" to i8* + %"$$fundef_58_cloval_630" = insertvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)* bitcast ({ { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (%"$$fundef_58_env_142"*, %TName_Nat*)* @"$fundef_58" to { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_58_env_voidp_629", 1 + %"$$fundef_58_env_f_631" = getelementptr inbounds %"$$fundef_58_env_142", %"$$fundef_58_env_142"* %"$$fundef_58_envp_627", i32 0, i32 0 + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %1, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_58_env_f_631" + %"$$fundef_58_env_nat_fold_632" = getelementptr inbounds %"$$fundef_58_env_142", %"$$fundef_58_env_142"* %"$$fundef_58_envp_627", i32 0, i32 1 + %"$nat_fold_633" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_633", { i8*, i8* }** %"$$fundef_58_env_nat_fold_632" + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_58_cloval_630", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_57" + %"$$retval_57_634" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_57" + ret { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_57_634" } define internal { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } @"$fundef_54"(%"$$fundef_54_env_144"* %0) { entry: - %"$$fundef_54_env_nat_fold_416" = getelementptr inbounds %"$$fundef_54_env_144", %"$$fundef_54_env_144"* %0, i32 0, i32 0 - %"$nat_fold_envload_417" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_54_env_nat_fold_416" + %"$$fundef_54_env_nat_fold_606" = getelementptr inbounds %"$$fundef_54_env_144", %"$$fundef_54_env_144"* %0, i32 0, i32 0 + %"$nat_fold_envload_607" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_54_env_nat_fold_606" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_417", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_607", { i8*, i8* }** %nat_fold %"$retval_55" = alloca { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } - %"$$fundef_56_envp_418_load" = load i8*, i8** @_execptr - %"$$fundef_56_envp_418_salloc" = call i8* @_salloc(i8* %"$$fundef_56_envp_418_load", i64 8) - %"$$fundef_56_envp_418" = bitcast i8* %"$$fundef_56_envp_418_salloc" to %"$$fundef_56_env_143"* - %"$$fundef_56_env_voidp_420" = bitcast %"$$fundef_56_env_143"* %"$$fundef_56_envp_418" to i8* - %"$$fundef_56_cloval_421" = insertvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })* bitcast ({ { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (%"$$fundef_56_env_143"*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })* @"$fundef_56" to { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*), i8* undef }, i8* %"$$fundef_56_env_voidp_420", 1 - %"$$fundef_56_env_nat_fold_422" = getelementptr inbounds %"$$fundef_56_env_143", %"$$fundef_56_env_143"* %"$$fundef_56_envp_418", i32 0, i32 0 - %"$nat_fold_423" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - store { i8*, i8* }* %"$nat_fold_423", { i8*, i8* }** %"$$fundef_56_env_nat_fold_422" - store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$$fundef_56_cloval_421", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$retval_55" - %"$$retval_55_424" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$retval_55" - ret { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$$retval_55_424" + %"$gasrem_608" = load i64, i64* @_gasrem + %"$gascmp_609" = icmp ugt i64 1, %"$gasrem_608" + br i1 %"$gascmp_609", label %"$out_of_gas_610", label %"$have_gas_611" + +"$out_of_gas_610": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_611" + +"$have_gas_611": ; preds = %"$out_of_gas_610", %entry + %"$consume_612" = sub i64 %"$gasrem_608", 1 + store i64 %"$consume_612", i64* @_gasrem + %"$$fundef_56_envp_613_load" = load i8*, i8** @_execptr + %"$$fundef_56_envp_613_salloc" = call i8* @_salloc(i8* %"$$fundef_56_envp_613_load", i64 8) + %"$$fundef_56_envp_613" = bitcast i8* %"$$fundef_56_envp_613_salloc" to %"$$fundef_56_env_143"* + %"$$fundef_56_env_voidp_615" = bitcast %"$$fundef_56_env_143"* %"$$fundef_56_envp_613" to i8* + %"$$fundef_56_cloval_616" = insertvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })* bitcast ({ { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (%"$$fundef_56_env_143"*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })* @"$fundef_56" to { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*), i8* undef }, i8* %"$$fundef_56_env_voidp_615", 1 + %"$$fundef_56_env_nat_fold_617" = getelementptr inbounds %"$$fundef_56_env_143", %"$$fundef_56_env_143"* %"$$fundef_56_envp_613", i32 0, i32 0 + %"$nat_fold_618" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_618", { i8*, i8* }** %"$$fundef_56_env_nat_fold_617" + store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$$fundef_56_cloval_616", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$retval_55" + %"$$retval_55_619" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$retval_55" + ret { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$$retval_55_619" } define internal %TName_Nat* @"$fundef_52"(%"$$fundef_52_env_145"* %0, %TName_Nat* %1) { entry: %"$retval_53" = alloca %TName_Nat* - %"$adtval_411_load" = load i8*, i8** @_execptr - %"$adtval_411_salloc" = call i8* @_salloc(i8* %"$adtval_411_load", i64 9) - %"$adtval_411" = bitcast i8* %"$adtval_411_salloc" to %CName_Succ* - %"$adtgep_412" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_411", i32 0, i32 0 - store i8 1, i8* %"$adtgep_412" - %"$adtgep_413" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_411", i32 0, i32 1 - store %TName_Nat* %1, %TName_Nat** %"$adtgep_413" - %"$adtptr_414" = bitcast %CName_Succ* %"$adtval_411" to %TName_Nat* - store %TName_Nat* %"$adtptr_414", %TName_Nat** %"$retval_53" - %"$$retval_53_415" = load %TName_Nat*, %TName_Nat** %"$retval_53" - ret %TName_Nat* %"$$retval_53_415" + %"$gasrem_596" = load i64, i64* @_gasrem + %"$gascmp_597" = icmp ugt i64 1, %"$gasrem_596" + br i1 %"$gascmp_597", label %"$out_of_gas_598", label %"$have_gas_599" + +"$out_of_gas_598": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_599" + +"$have_gas_599": ; preds = %"$out_of_gas_598", %entry + %"$consume_600" = sub i64 %"$gasrem_596", 1 + store i64 %"$consume_600", i64* @_gasrem + %"$adtval_601_load" = load i8*, i8** @_execptr + %"$adtval_601_salloc" = call i8* @_salloc(i8* %"$adtval_601_load", i64 9) + %"$adtval_601" = bitcast i8* %"$adtval_601_salloc" to %CName_Succ* + %"$adtgep_602" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_601", i32 0, i32 0 + store i8 1, i8* %"$adtgep_602" + %"$adtgep_603" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_601", i32 0, i32 1 + store %TName_Nat* %1, %TName_Nat** %"$adtgep_603" + %"$adtptr_604" = bitcast %CName_Succ* %"$adtval_601" to %TName_Nat* + store %TName_Nat* %"$adtptr_604", %TName_Nat** %"$retval_53" + %"$$retval_53_605" = load %TName_Nat*, %TName_Nat** %"$retval_53" + ret %TName_Nat* %"$$retval_53_605" } define internal %Uint32 @"$fundef_49"(%"$$fundef_49_env_146"* %0, %TName_Nat* %1) { entry: - %"$$fundef_49_env_one_int_403" = getelementptr inbounds %"$$fundef_49_env_146", %"$$fundef_49_env_146"* %0, i32 0, i32 0 - %"$one_int_envload_404" = load %Uint32, %Uint32* %"$$fundef_49_env_one_int_403" + %"$$fundef_49_env_one_int_588" = getelementptr inbounds %"$$fundef_49_env_146", %"$$fundef_49_env_146"* %0, i32 0, i32 0 + %"$one_int_envload_589" = load %Uint32, %Uint32* %"$$fundef_49_env_one_int_588" %one_int = alloca %Uint32 - store %Uint32 %"$one_int_envload_404", %Uint32* %one_int - %"$$fundef_49_env_z_405" = getelementptr inbounds %"$$fundef_49_env_146", %"$$fundef_49_env_146"* %0, i32 0, i32 1 - %"$z_envload_406" = load %Uint32, %Uint32* %"$$fundef_49_env_z_405" + store %Uint32 %"$one_int_envload_589", %Uint32* %one_int + %"$$fundef_49_env_z_590" = getelementptr inbounds %"$$fundef_49_env_146", %"$$fundef_49_env_146"* %0, i32 0, i32 1 + %"$z_envload_591" = load %Uint32, %Uint32* %"$$fundef_49_env_z_590" %z = alloca %Uint32 - store %Uint32 %"$z_envload_406", %Uint32* %z + store %Uint32 %"$z_envload_591", %Uint32* %z %"$retval_50" = alloca %Uint32 - %"$z_407" = load %Uint32, %Uint32* %z - %"$one_int_408" = load %Uint32, %Uint32* %one_int - %"$add_call_409" = call %Uint32 @_add_Uint32(%Uint32 %"$z_407", %Uint32 %"$one_int_408") - store %Uint32 %"$add_call_409", %Uint32* %"$retval_50" - %"$$retval_50_410" = load %Uint32, %Uint32* %"$retval_50" - ret %Uint32 %"$$retval_50_410" + %"$z_592" = load %Uint32, %Uint32* %z + %"$one_int_593" = load %Uint32, %Uint32* %one_int + %"$add_call_594" = call %Uint32 @_add_Uint32(%Uint32 %"$z_592", %Uint32 %"$one_int_593") + store %Uint32 %"$add_call_594", %Uint32* %"$retval_50" + %"$$retval_50_595" = load %Uint32, %Uint32* %"$retval_50" + ret %Uint32 %"$$retval_50_595" } define internal { %Uint32 (i8*, %TName_Nat*)*, i8* } @"$fundef_47"(%"$$fundef_47_env_147"* %0, %Uint32 %1) { entry: - %"$$fundef_47_env_one_int_393" = getelementptr inbounds %"$$fundef_47_env_147", %"$$fundef_47_env_147"* %0, i32 0, i32 0 - %"$one_int_envload_394" = load %Uint32, %Uint32* %"$$fundef_47_env_one_int_393" + %"$$fundef_47_env_one_int_573" = getelementptr inbounds %"$$fundef_47_env_147", %"$$fundef_47_env_147"* %0, i32 0, i32 0 + %"$one_int_envload_574" = load %Uint32, %Uint32* %"$$fundef_47_env_one_int_573" %one_int = alloca %Uint32 - store %Uint32 %"$one_int_envload_394", %Uint32* %one_int + store %Uint32 %"$one_int_envload_574", %Uint32* %one_int %"$retval_48" = alloca { %Uint32 (i8*, %TName_Nat*)*, i8* } - %"$$fundef_49_envp_395_load" = load i8*, i8** @_execptr - %"$$fundef_49_envp_395_salloc" = call i8* @_salloc(i8* %"$$fundef_49_envp_395_load", i64 8) - %"$$fundef_49_envp_395" = bitcast i8* %"$$fundef_49_envp_395_salloc" to %"$$fundef_49_env_146"* - %"$$fundef_49_env_voidp_397" = bitcast %"$$fundef_49_env_146"* %"$$fundef_49_envp_395" to i8* - %"$$fundef_49_cloval_398" = insertvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } { %Uint32 (i8*, %TName_Nat*)* bitcast (%Uint32 (%"$$fundef_49_env_146"*, %TName_Nat*)* @"$fundef_49" to %Uint32 (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_49_env_voidp_397", 1 - %"$$fundef_49_env_one_int_399" = getelementptr inbounds %"$$fundef_49_env_146", %"$$fundef_49_env_146"* %"$$fundef_49_envp_395", i32 0, i32 0 - %"$one_int_400" = load %Uint32, %Uint32* %one_int - store %Uint32 %"$one_int_400", %Uint32* %"$$fundef_49_env_one_int_399" - %"$$fundef_49_env_z_401" = getelementptr inbounds %"$$fundef_49_env_146", %"$$fundef_49_env_146"* %"$$fundef_49_envp_395", i32 0, i32 1 - store %Uint32 %1, %Uint32* %"$$fundef_49_env_z_401" - store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fundef_49_cloval_398", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$retval_48" - %"$$retval_48_402" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$retval_48" - ret { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$retval_48_402" + %"$gasrem_575" = load i64, i64* @_gasrem + %"$gascmp_576" = icmp ugt i64 1, %"$gasrem_575" + br i1 %"$gascmp_576", label %"$out_of_gas_577", label %"$have_gas_578" + +"$out_of_gas_577": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_578" + +"$have_gas_578": ; preds = %"$out_of_gas_577", %entry + %"$consume_579" = sub i64 %"$gasrem_575", 1 + store i64 %"$consume_579", i64* @_gasrem + %"$$fundef_49_envp_580_load" = load i8*, i8** @_execptr + %"$$fundef_49_envp_580_salloc" = call i8* @_salloc(i8* %"$$fundef_49_envp_580_load", i64 8) + %"$$fundef_49_envp_580" = bitcast i8* %"$$fundef_49_envp_580_salloc" to %"$$fundef_49_env_146"* + %"$$fundef_49_env_voidp_582" = bitcast %"$$fundef_49_env_146"* %"$$fundef_49_envp_580" to i8* + %"$$fundef_49_cloval_583" = insertvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } { %Uint32 (i8*, %TName_Nat*)* bitcast (%Uint32 (%"$$fundef_49_env_146"*, %TName_Nat*)* @"$fundef_49" to %Uint32 (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_49_env_voidp_582", 1 + %"$$fundef_49_env_one_int_584" = getelementptr inbounds %"$$fundef_49_env_146", %"$$fundef_49_env_146"* %"$$fundef_49_envp_580", i32 0, i32 0 + %"$one_int_585" = load %Uint32, %Uint32* %one_int + store %Uint32 %"$one_int_585", %Uint32* %"$$fundef_49_env_one_int_584" + %"$$fundef_49_env_z_586" = getelementptr inbounds %"$$fundef_49_env_146", %"$$fundef_49_env_146"* %"$$fundef_49_envp_580", i32 0, i32 1 + store %Uint32 %1, %Uint32* %"$$fundef_49_env_z_586" + store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fundef_49_cloval_583", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$retval_48" + %"$$retval_48_587" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$retval_48" + ret { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$retval_48_587" } define internal %Uint32 @"$fundef_45"(%"$$fundef_45_env_148"* %0, %TName_Nat* %1) { entry: - %"$$fundef_45_env_nat_fold_362" = getelementptr inbounds %"$$fundef_45_env_148", %"$$fundef_45_env_148"* %0, i32 0, i32 0 - %"$nat_fold_envload_363" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_45_env_nat_fold_362" + %"$$fundef_45_env_nat_fold_497" = getelementptr inbounds %"$$fundef_45_env_148", %"$$fundef_45_env_148"* %0, i32 0, i32 0 + %"$nat_fold_envload_498" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_45_env_nat_fold_497" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_363", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_498", { i8*, i8* }** %nat_fold %"$retval_46" = alloca %Uint32 + %"$gasrem_499" = load i64, i64* @_gasrem + %"$gascmp_500" = icmp ugt i64 1, %"$gasrem_499" + br i1 %"$gascmp_500", label %"$out_of_gas_501", label %"$have_gas_502" + +"$out_of_gas_501": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_502" + +"$have_gas_502": ; preds = %"$out_of_gas_501", %entry + %"$consume_503" = sub i64 %"$gasrem_499", 1 + store i64 %"$consume_503", i64* @_gasrem %fold = alloca { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } - %"$nat_fold_364" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - %"$nat_fold_365" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_fold_364", i32 0 - %"$nat_fold_366" = bitcast { i8*, i8* }* %"$nat_fold_365" to { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - %"$nat_fold_367" = load { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_fold_366" - %"$nat_fold_fptr_368" = extractvalue { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_367", 0 - %"$nat_fold_envptr_369" = extractvalue { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_367", 1 - %"$nat_fold_call_370" = call { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$nat_fold_fptr_368"(i8* %"$nat_fold_envptr_369") - store { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$nat_fold_call_370", { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %fold + %"$gasrem_504" = load i64, i64* @_gasrem + %"$gascmp_505" = icmp ugt i64 1, %"$gasrem_504" + br i1 %"$gascmp_505", label %"$out_of_gas_506", label %"$have_gas_507" + +"$out_of_gas_506": ; preds = %"$have_gas_502" + call void @_out_of_gas() + br label %"$have_gas_507" + +"$have_gas_507": ; preds = %"$out_of_gas_506", %"$have_gas_502" + %"$consume_508" = sub i64 %"$gasrem_504", 1 + store i64 %"$consume_508", i64* @_gasrem + %"$nat_fold_509" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + %"$nat_fold_510" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_fold_509", i32 0 + %"$nat_fold_511" = bitcast { i8*, i8* }* %"$nat_fold_510" to { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + %"$nat_fold_512" = load { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_fold_511" + %"$nat_fold_fptr_513" = extractvalue { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_512", 0 + %"$nat_fold_envptr_514" = extractvalue { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_512", 1 + %"$nat_fold_call_515" = call { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$nat_fold_fptr_513"(i8* %"$nat_fold_envptr_514") + store { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$nat_fold_call_515", { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %fold + %"$gasrem_516" = load i64, i64* @_gasrem + %"$gascmp_517" = icmp ugt i64 1, %"$gasrem_516" + br i1 %"$gascmp_517", label %"$out_of_gas_518", label %"$have_gas_519" + +"$out_of_gas_518": ; preds = %"$have_gas_507" + call void @_out_of_gas() + br label %"$have_gas_519" + +"$have_gas_519": ; preds = %"$out_of_gas_518", %"$have_gas_507" + %"$consume_520" = sub i64 %"$gasrem_516", 1 + store i64 %"$consume_520", i64* @_gasrem %one_int = alloca %Uint32 + %"$gasrem_521" = load i64, i64* @_gasrem + %"$gascmp_522" = icmp ugt i64 1, %"$gasrem_521" + br i1 %"$gascmp_522", label %"$out_of_gas_523", label %"$have_gas_524" + +"$out_of_gas_523": ; preds = %"$have_gas_519" + call void @_out_of_gas() + br label %"$have_gas_524" + +"$have_gas_524": ; preds = %"$out_of_gas_523", %"$have_gas_519" + %"$consume_525" = sub i64 %"$gasrem_521", 1 + store i64 %"$consume_525", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %one_int + %"$gasrem_526" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_524" + call void @_out_of_gas() + br label %"$have_gas_529" + +"$have_gas_529": ; preds = %"$out_of_gas_528", %"$have_gas_524" + %"$consume_530" = sub i64 %"$gasrem_526", 1 + store i64 %"$consume_530", i64* @_gasrem %f = alloca { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } - %"$$fundef_47_envp_371_load" = load i8*, i8** @_execptr - %"$$fundef_47_envp_371_salloc" = call i8* @_salloc(i8* %"$$fundef_47_envp_371_load", i64 4) - %"$$fundef_47_envp_371" = bitcast i8* %"$$fundef_47_envp_371_salloc" to %"$$fundef_47_env_147"* - %"$$fundef_47_env_voidp_373" = bitcast %"$$fundef_47_env_147"* %"$$fundef_47_envp_371" to i8* - %"$$fundef_47_cloval_374" = insertvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_Nat*)*, i8* } (%"$$fundef_47_env_147"*, %Uint32)* @"$fundef_47" to { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_47_env_voidp_373", 1 - %"$$fundef_47_env_one_int_375" = getelementptr inbounds %"$$fundef_47_env_147", %"$$fundef_47_env_147"* %"$$fundef_47_envp_371", i32 0, i32 0 - %"$one_int_376" = load %Uint32, %Uint32* %one_int - store %Uint32 %"$one_int_376", %Uint32* %"$$fundef_47_env_one_int_375" - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_47_cloval_374", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$gasrem_531" = load i64, i64* @_gasrem + %"$gascmp_532" = icmp ugt i64 1, %"$gasrem_531" + br i1 %"$gascmp_532", label %"$out_of_gas_533", label %"$have_gas_534" + +"$out_of_gas_533": ; preds = %"$have_gas_529" + call void @_out_of_gas() + br label %"$have_gas_534" + +"$have_gas_534": ; preds = %"$out_of_gas_533", %"$have_gas_529" + %"$consume_535" = sub i64 %"$gasrem_531", 1 + store i64 %"$consume_535", i64* @_gasrem + %"$$fundef_47_envp_536_load" = load i8*, i8** @_execptr + %"$$fundef_47_envp_536_salloc" = call i8* @_salloc(i8* %"$$fundef_47_envp_536_load", i64 4) + %"$$fundef_47_envp_536" = bitcast i8* %"$$fundef_47_envp_536_salloc" to %"$$fundef_47_env_147"* + %"$$fundef_47_env_voidp_538" = bitcast %"$$fundef_47_env_147"* %"$$fundef_47_envp_536" to i8* + %"$$fundef_47_cloval_539" = insertvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_Nat*)*, i8* } (%"$$fundef_47_env_147"*, %Uint32)* @"$fundef_47" to { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_47_env_voidp_538", 1 + %"$$fundef_47_env_one_int_540" = getelementptr inbounds %"$$fundef_47_env_147", %"$$fundef_47_env_147"* %"$$fundef_47_envp_536", i32 0, i32 0 + %"$one_int_541" = load %Uint32, %Uint32* %one_int + store %Uint32 %"$one_int_541", %Uint32* %"$$fundef_47_env_one_int_540" + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_47_cloval_539", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$gasrem_542" = load i64, i64* @_gasrem + %"$gascmp_543" = icmp ugt i64 1, %"$gasrem_542" + br i1 %"$gascmp_543", label %"$out_of_gas_544", label %"$have_gas_545" + +"$out_of_gas_544": ; preds = %"$have_gas_534" + call void @_out_of_gas() + br label %"$have_gas_545" + +"$have_gas_545": ; preds = %"$out_of_gas_544", %"$have_gas_534" + %"$consume_546" = sub i64 %"$gasrem_542", 1 + store i64 %"$consume_546", i64* @_gasrem %zero_int = alloca %Uint32 + %"$gasrem_547" = load i64, i64* @_gasrem + %"$gascmp_548" = icmp ugt i64 1, %"$gasrem_547" + br i1 %"$gascmp_548", label %"$out_of_gas_549", label %"$have_gas_550" + +"$out_of_gas_549": ; preds = %"$have_gas_545" + call void @_out_of_gas() + br label %"$have_gas_550" + +"$have_gas_550": ; preds = %"$out_of_gas_549", %"$have_gas_545" + %"$consume_551" = sub i64 %"$gasrem_547", 1 + store i64 %"$consume_551", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %zero_int + %"$gasrem_552" = load i64, i64* @_gasrem + %"$gascmp_553" = icmp ugt i64 1, %"$gasrem_552" + br i1 %"$gascmp_553", label %"$out_of_gas_554", label %"$have_gas_555" + +"$out_of_gas_554": ; preds = %"$have_gas_550" + call void @_out_of_gas() + br label %"$have_gas_555" + +"$have_gas_555": ; preds = %"$out_of_gas_554", %"$have_gas_550" + %"$consume_556" = sub i64 %"$gasrem_552", 1 + store i64 %"$consume_556", i64* @_gasrem %"$fold_4" = alloca { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } - %"$fold_377" = load { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %fold - %"$fold_fptr_378" = extractvalue { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$fold_377", 0 - %"$fold_envptr_379" = extractvalue { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$fold_377", 1 - %"$f_380" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$fold_call_381" = call { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fold_fptr_378"(i8* %"$fold_envptr_379", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$f_380") - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fold_call_381", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$fold_4" + %"$fold_557" = load { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %fold + %"$fold_fptr_558" = extractvalue { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$fold_557", 0 + %"$fold_envptr_559" = extractvalue { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$fold_557", 1 + %"$f_560" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$fold_call_561" = call { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fold_fptr_558"(i8* %"$fold_envptr_559", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$f_560") + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fold_call_561", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$fold_4" %"$fold_5" = alloca { %Uint32 (i8*, %TName_Nat*)*, i8* } - %"$$fold_4_382" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$fold_4" - %"$$fold_4_fptr_383" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fold_4_382", 0 - %"$$fold_4_envptr_384" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fold_4_382", 1 - %"$zero_int_385" = load %Uint32, %Uint32* %zero_int - %"$$fold_4_call_386" = call { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fold_4_fptr_383"(i8* %"$$fold_4_envptr_384", %Uint32 %"$zero_int_385") - store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fold_4_call_386", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$fold_5" + %"$$fold_4_562" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$fold_4" + %"$$fold_4_fptr_563" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fold_4_562", 0 + %"$$fold_4_envptr_564" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fold_4_562", 1 + %"$zero_int_565" = load %Uint32, %Uint32* %zero_int + %"$$fold_4_call_566" = call { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fold_4_fptr_563"(i8* %"$$fold_4_envptr_564", %Uint32 %"$zero_int_565") + store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fold_4_call_566", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$fold_5" %"$fold_6" = alloca %Uint32 - %"$$fold_5_387" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$fold_5" - %"$$fold_5_fptr_388" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fold_5_387", 0 - %"$$fold_5_envptr_389" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fold_5_387", 1 - %"$$fold_5_call_390" = call %Uint32 %"$$fold_5_fptr_388"(i8* %"$$fold_5_envptr_389", %TName_Nat* %1) - store %Uint32 %"$$fold_5_call_390", %Uint32* %"$fold_6" - %"$$fold_6_391" = load %Uint32, %Uint32* %"$fold_6" - store %Uint32 %"$$fold_6_391", %Uint32* %"$retval_46" - %"$$retval_46_392" = load %Uint32, %Uint32* %"$retval_46" - ret %Uint32 %"$$retval_46_392" + %"$$fold_5_567" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$fold_5" + %"$$fold_5_fptr_568" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fold_5_567", 0 + %"$$fold_5_envptr_569" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fold_5_567", 1 + %"$$fold_5_call_570" = call %Uint32 %"$$fold_5_fptr_568"(i8* %"$$fold_5_envptr_569", %TName_Nat* %1) + store %Uint32 %"$$fold_5_call_570", %Uint32* %"$fold_6" + %"$$fold_6_571" = load %Uint32, %Uint32* %"$fold_6" + store %Uint32 %"$$fold_6_571", %Uint32* %"$retval_46" + %"$$retval_46_572" = load %Uint32, %Uint32* %"$retval_46" + ret %Uint32 %"$$retval_46_572" } define internal %TName_Nat* @"$fundef_43"(%"$$fundef_43_env_149"* %0, %TName_Nat* %1) { entry: - %"$$fundef_43_env_f0_322" = getelementptr inbounds %"$$fundef_43_env_149", %"$$fundef_43_env_149"* %0, i32 0, i32 0 - %"$f0_envload_323" = load %TName_Nat*, %TName_Nat** %"$$fundef_43_env_f0_322" + %"$$fundef_43_env_f0_432" = getelementptr inbounds %"$$fundef_43_env_149", %"$$fundef_43_env_149"* %0, i32 0, i32 0 + %"$f0_envload_433" = load %TName_Nat*, %TName_Nat** %"$$fundef_43_env_f0_432" %f0 = alloca %TName_Nat* - store %TName_Nat* %"$f0_envload_323", %TName_Nat** %f0 - %"$$fundef_43_env_fn_324" = getelementptr inbounds %"$$fundef_43_env_149", %"$$fundef_43_env_149"* %0, i32 0, i32 1 - %"$fn_envload_325" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_43_env_fn_324" + store %TName_Nat* %"$f0_envload_433", %TName_Nat** %f0 + %"$$fundef_43_env_fn_434" = getelementptr inbounds %"$$fundef_43_env_149", %"$$fundef_43_env_149"* %0, i32 0, i32 1 + %"$fn_envload_435" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_43_env_fn_434" %fn = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_envload_325", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %fn - %"$$fundef_43_env_g_326" = getelementptr inbounds %"$$fundef_43_env_149", %"$$fundef_43_env_149"* %0, i32 0, i32 2 - %"$g_envload_327" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_43_env_g_326" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_envload_435", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %fn + %"$$fundef_43_env_g_436" = getelementptr inbounds %"$$fundef_43_env_149", %"$$fundef_43_env_149"* %0, i32 0, i32 2 + %"$g_envload_437" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_43_env_g_436" %g = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_envload_327", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_envload_437", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g %"$retval_44" = alloca %TName_Nat* - %"$n_tag_329" = getelementptr inbounds %TName_Nat, %TName_Nat* %1, i32 0, i32 0 - %"$n_tag_330" = load i8, i8* %"$n_tag_329" - switch i8 %"$n_tag_330", label %"$empty_default_331" [ - i8 1, label %"$Succ_332" - i8 0, label %"$Zero_358" + %"$gasrem_438" = load i64, i64* @_gasrem + %"$gascmp_439" = icmp ugt i64 2, %"$gasrem_438" + br i1 %"$gascmp_439", label %"$out_of_gas_440", label %"$have_gas_441" + +"$out_of_gas_440": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_441" + +"$have_gas_441": ; preds = %"$out_of_gas_440", %entry + %"$consume_442" = sub i64 %"$gasrem_438", 2 + store i64 %"$consume_442", i64* @_gasrem + %"$n_tag_444" = getelementptr inbounds %TName_Nat, %TName_Nat* %1, i32 0, i32 0 + %"$n_tag_445" = load i8, i8* %"$n_tag_444" + switch i8 %"$n_tag_445", label %"$empty_default_446" [ + i8 1, label %"$Succ_447" + i8 0, label %"$Zero_488" ] -"$Succ_332": ; preds = %entry - %"$n_333" = bitcast %TName_Nat* %1 to %CName_Succ* - %"$n1_gep_334" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$n_333", i32 0, i32 1 - %"$n1_load_335" = load %TName_Nat*, %TName_Nat** %"$n1_gep_334" +"$Succ_447": ; preds = %"$have_gas_441" + %"$n_448" = bitcast %TName_Nat* %1 to %CName_Succ* + %"$n1_gep_449" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$n_448", i32 0, i32 1 + %"$n1_load_450" = load %TName_Nat*, %TName_Nat** %"$n1_gep_449" %n1 = alloca %TName_Nat* - store %TName_Nat* %"$n1_load_335", %TName_Nat** %n1 + store %TName_Nat* %"$n1_load_450", %TName_Nat** %n1 + %"$gasrem_451" = load i64, i64* @_gasrem + %"$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 = %"$Succ_447" + call void @_out_of_gas() + br label %"$have_gas_454" + +"$have_gas_454": ; preds = %"$out_of_gas_453", %"$Succ_447" + %"$consume_455" = sub i64 %"$gasrem_451", 1 + store i64 %"$consume_455", i64* @_gasrem %res = alloca %TName_Nat* + %"$gasrem_456" = load i64, i64* @_gasrem + %"$gascmp_457" = icmp ugt i64 1, %"$gasrem_456" + br i1 %"$gascmp_457", label %"$out_of_gas_458", label %"$have_gas_459" + +"$out_of_gas_458": ; preds = %"$have_gas_454" + call void @_out_of_gas() + br label %"$have_gas_459" + +"$have_gas_459": ; preds = %"$out_of_gas_458", %"$have_gas_454" + %"$consume_460" = sub i64 %"$gasrem_456", 1 + store i64 %"$consume_460", i64* @_gasrem %"$fn_0" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$fn_336" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %fn - %"$fn_fptr_337" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_336", 0 - %"$fn_envptr_338" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_336", 1 - %"$f0_339" = load %TName_Nat*, %TName_Nat** %f0 - %"$fn_call_340" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$fn_fptr_337"(i8* %"$fn_envptr_338", %TName_Nat* %"$f0_339") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$fn_call_340", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$fn_0" + %"$fn_461" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %fn + %"$fn_fptr_462" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_461", 0 + %"$fn_envptr_463" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_461", 1 + %"$f0_464" = load %TName_Nat*, %TName_Nat** %f0 + %"$fn_call_465" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$fn_fptr_462"(i8* %"$fn_envptr_463", %TName_Nat* %"$f0_464") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$fn_call_465", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$fn_0" %"$fn_1" = alloca %TName_Nat* - %"$$fn_0_341" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$fn_0" - %"$$fn_0_fptr_342" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_0_341", 0 - %"$$fn_0_envptr_343" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_0_341", 1 - %"$n1_344" = load %TName_Nat*, %TName_Nat** %n1 - %"$$fn_0_call_345" = call %TName_Nat* %"$$fn_0_fptr_342"(i8* %"$$fn_0_envptr_343", %TName_Nat* %"$n1_344") - store %TName_Nat* %"$$fn_0_call_345", %TName_Nat** %"$fn_1" - %"$$fn_1_346" = load %TName_Nat*, %TName_Nat** %"$fn_1" - store %TName_Nat* %"$$fn_1_346", %TName_Nat** %res + %"$$fn_0_466" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$fn_0" + %"$$fn_0_fptr_467" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_0_466", 0 + %"$$fn_0_envptr_468" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_0_466", 1 + %"$n1_469" = load %TName_Nat*, %TName_Nat** %n1 + %"$$fn_0_call_470" = call %TName_Nat* %"$$fn_0_fptr_467"(i8* %"$$fn_0_envptr_468", %TName_Nat* %"$n1_469") + store %TName_Nat* %"$$fn_0_call_470", %TName_Nat** %"$fn_1" + %"$$fn_1_471" = load %TName_Nat*, %TName_Nat** %"$fn_1" + store %TName_Nat* %"$$fn_1_471", %TName_Nat** %res + %"$gasrem_472" = load i64, i64* @_gasrem + %"$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_459" + call void @_out_of_gas() + br label %"$have_gas_475" + +"$have_gas_475": ; preds = %"$out_of_gas_474", %"$have_gas_459" + %"$consume_476" = sub i64 %"$gasrem_472", 1 + store i64 %"$consume_476", i64* @_gasrem %"$g_2" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$g_347" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g - %"$g_fptr_348" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_347", 0 - %"$g_envptr_349" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_347", 1 - %"$res_350" = load %TName_Nat*, %TName_Nat** %res - %"$g_call_351" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$g_fptr_348"(i8* %"$g_envptr_349", %TName_Nat* %"$res_350") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$g_call_351", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$g_2" + %"$g_477" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g + %"$g_fptr_478" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_477", 0 + %"$g_envptr_479" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_477", 1 + %"$res_480" = load %TName_Nat*, %TName_Nat** %res + %"$g_call_481" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$g_fptr_478"(i8* %"$g_envptr_479", %TName_Nat* %"$res_480") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$g_call_481", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$g_2" %"$g_3" = alloca %TName_Nat* - %"$$g_2_352" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$g_2" - %"$$g_2_fptr_353" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_2_352", 0 - %"$$g_2_envptr_354" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_2_352", 1 - %"$n1_355" = load %TName_Nat*, %TName_Nat** %n1 - %"$$g_2_call_356" = call %TName_Nat* %"$$g_2_fptr_353"(i8* %"$$g_2_envptr_354", %TName_Nat* %"$n1_355") - store %TName_Nat* %"$$g_2_call_356", %TName_Nat** %"$g_3" - %"$$g_3_357" = load %TName_Nat*, %TName_Nat** %"$g_3" - store %TName_Nat* %"$$g_3_357", %TName_Nat** %"$retval_44" - br label %"$matchsucc_328" - -"$Zero_358": ; preds = %entry - %"$n_359" = bitcast %TName_Nat* %1 to %CName_Zero* - %"$f0_360" = load %TName_Nat*, %TName_Nat** %f0 - store %TName_Nat* %"$f0_360", %TName_Nat** %"$retval_44" - br label %"$matchsucc_328" - -"$empty_default_331": ; preds = %entry - br label %"$matchsucc_328" - -"$matchsucc_328": ; preds = %"$Zero_358", %"$Succ_332", %"$empty_default_331" - %"$$retval_44_361" = load %TName_Nat*, %TName_Nat** %"$retval_44" - ret %TName_Nat* %"$$retval_44_361" + %"$$g_2_482" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$g_2" + %"$$g_2_fptr_483" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_2_482", 0 + %"$$g_2_envptr_484" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_2_482", 1 + %"$n1_485" = load %TName_Nat*, %TName_Nat** %n1 + %"$$g_2_call_486" = call %TName_Nat* %"$$g_2_fptr_483"(i8* %"$$g_2_envptr_484", %TName_Nat* %"$n1_485") + store %TName_Nat* %"$$g_2_call_486", %TName_Nat** %"$g_3" + %"$$g_3_487" = load %TName_Nat*, %TName_Nat** %"$g_3" + store %TName_Nat* %"$$g_3_487", %TName_Nat** %"$retval_44" + br label %"$matchsucc_443" + +"$Zero_488": ; preds = %"$have_gas_441" + %"$n_489" = bitcast %TName_Nat* %1 to %CName_Zero* + %"$gasrem_490" = load i64, i64* @_gasrem + %"$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 = %"$Zero_488" + call void @_out_of_gas() + br label %"$have_gas_493" + +"$have_gas_493": ; preds = %"$out_of_gas_492", %"$Zero_488" + %"$consume_494" = sub i64 %"$gasrem_490", 1 + store i64 %"$consume_494", i64* @_gasrem + %"$f0_495" = load %TName_Nat*, %TName_Nat** %f0 + store %TName_Nat* %"$f0_495", %TName_Nat** %"$retval_44" + br label %"$matchsucc_443" + +"$empty_default_446": ; preds = %"$have_gas_441" + br label %"$matchsucc_443" + +"$matchsucc_443": ; preds = %"$have_gas_493", %"$have_gas_475", %"$empty_default_446" + %"$$retval_44_496" = load %TName_Nat*, %TName_Nat** %"$retval_44" + ret %TName_Nat* %"$$retval_44_496" } define internal { %TName_Nat* (i8*, %TName_Nat*)*, i8* } @"$fundef_41"(%"$$fundef_41_env_150"* %0, %TName_Nat* %1) { entry: - %"$$fundef_41_env_fn_308" = getelementptr inbounds %"$$fundef_41_env_150", %"$$fundef_41_env_150"* %0, i32 0, i32 0 - %"$fn_envload_309" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_41_env_fn_308" + %"$$fundef_41_env_fn_413" = getelementptr inbounds %"$$fundef_41_env_150", %"$$fundef_41_env_150"* %0, i32 0, i32 0 + %"$fn_envload_414" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_41_env_fn_413" %fn = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_envload_309", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %fn - %"$$fundef_41_env_g_310" = getelementptr inbounds %"$$fundef_41_env_150", %"$$fundef_41_env_150"* %0, i32 0, i32 1 - %"$g_envload_311" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_41_env_g_310" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_envload_414", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %fn + %"$$fundef_41_env_g_415" = getelementptr inbounds %"$$fundef_41_env_150", %"$$fundef_41_env_150"* %0, i32 0, i32 1 + %"$g_envload_416" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_41_env_g_415" %g = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_envload_311", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_envload_416", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g %"$retval_42" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$$fundef_43_envp_312_load" = load i8*, i8** @_execptr - %"$$fundef_43_envp_312_salloc" = call i8* @_salloc(i8* %"$$fundef_43_envp_312_load", i64 40) - %"$$fundef_43_envp_312" = bitcast i8* %"$$fundef_43_envp_312_salloc" to %"$$fundef_43_env_149"* - %"$$fundef_43_env_voidp_314" = bitcast %"$$fundef_43_env_149"* %"$$fundef_43_envp_312" to i8* - %"$$fundef_43_cloval_315" = insertvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } { %TName_Nat* (i8*, %TName_Nat*)* bitcast (%TName_Nat* (%"$$fundef_43_env_149"*, %TName_Nat*)* @"$fundef_43" to %TName_Nat* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_43_env_voidp_314", 1 - %"$$fundef_43_env_f0_316" = getelementptr inbounds %"$$fundef_43_env_149", %"$$fundef_43_env_149"* %"$$fundef_43_envp_312", i32 0, i32 0 - store %TName_Nat* %1, %TName_Nat** %"$$fundef_43_env_f0_316" - %"$$fundef_43_env_fn_317" = getelementptr inbounds %"$$fundef_43_env_149", %"$$fundef_43_env_149"* %"$$fundef_43_envp_312", i32 0, i32 1 - %"$fn_318" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %fn - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_318", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_43_env_fn_317" - %"$$fundef_43_env_g_319" = getelementptr inbounds %"$$fundef_43_env_149", %"$$fundef_43_env_149"* %"$$fundef_43_envp_312", i32 0, i32 2 - %"$g_320" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_320", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_43_env_g_319" - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fundef_43_cloval_315", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_42" - %"$$retval_42_321" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_42" - ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_42_321" + %"$gasrem_417" = load i64, i64* @_gasrem + %"$gascmp_418" = icmp ugt i64 1, %"$gasrem_417" + br i1 %"$gascmp_418", label %"$out_of_gas_419", label %"$have_gas_420" + +"$out_of_gas_419": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_420" + +"$have_gas_420": ; preds = %"$out_of_gas_419", %entry + %"$consume_421" = sub i64 %"$gasrem_417", 1 + store i64 %"$consume_421", i64* @_gasrem + %"$$fundef_43_envp_422_load" = load i8*, i8** @_execptr + %"$$fundef_43_envp_422_salloc" = call i8* @_salloc(i8* %"$$fundef_43_envp_422_load", i64 40) + %"$$fundef_43_envp_422" = bitcast i8* %"$$fundef_43_envp_422_salloc" to %"$$fundef_43_env_149"* + %"$$fundef_43_env_voidp_424" = bitcast %"$$fundef_43_env_149"* %"$$fundef_43_envp_422" to i8* + %"$$fundef_43_cloval_425" = insertvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } { %TName_Nat* (i8*, %TName_Nat*)* bitcast (%TName_Nat* (%"$$fundef_43_env_149"*, %TName_Nat*)* @"$fundef_43" to %TName_Nat* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_43_env_voidp_424", 1 + %"$$fundef_43_env_f0_426" = getelementptr inbounds %"$$fundef_43_env_149", %"$$fundef_43_env_149"* %"$$fundef_43_envp_422", i32 0, i32 0 + store %TName_Nat* %1, %TName_Nat** %"$$fundef_43_env_f0_426" + %"$$fundef_43_env_fn_427" = getelementptr inbounds %"$$fundef_43_env_149", %"$$fundef_43_env_149"* %"$$fundef_43_envp_422", i32 0, i32 1 + %"$fn_428" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %fn + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_428", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_43_env_fn_427" + %"$$fundef_43_env_g_429" = getelementptr inbounds %"$$fundef_43_env_149", %"$$fundef_43_env_149"* %"$$fundef_43_envp_422", i32 0, i32 2 + %"$g_430" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_430", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_43_env_g_429" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fundef_43_cloval_425", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_42" + %"$$retval_42_431" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_42" + ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_42_431" } define internal { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } @"$fundef_39"(%"$$fundef_39_env_151"* %0, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %1) { entry: %"$retval_40" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$$fundef_41_envp_299_load" = load i8*, i8** @_execptr - %"$$fundef_41_envp_299_salloc" = call i8* @_salloc(i8* %"$$fundef_41_envp_299_load", i64 32) - %"$$fundef_41_envp_299" = bitcast i8* %"$$fundef_41_envp_299_salloc" to %"$$fundef_41_env_150"* - %"$$fundef_41_env_voidp_301" = bitcast %"$$fundef_41_env_150"* %"$$fundef_41_envp_299" to i8* - %"$$fundef_41_cloval_302" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_41_env_150"*, %TName_Nat*)* @"$fundef_41" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_41_env_voidp_301", 1 + %"$gasrem_394" = load i64, i64* @_gasrem + %"$gascmp_395" = icmp ugt i64 1, %"$gasrem_394" + br i1 %"$gascmp_395", label %"$out_of_gas_396", label %"$have_gas_397" + +"$out_of_gas_396": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_397" + +"$have_gas_397": ; preds = %"$out_of_gas_396", %entry + %"$consume_398" = sub i64 %"$gasrem_394", 1 + store i64 %"$consume_398", i64* @_gasrem + %"$gasrem_399" = load i64, i64* @_gasrem + %"$gascmp_400" = icmp ugt i64 1, %"$gasrem_399" + br i1 %"$gascmp_400", label %"$out_of_gas_401", label %"$have_gas_402" + +"$out_of_gas_401": ; preds = %"$have_gas_397" + call void @_out_of_gas() + br label %"$have_gas_402" + +"$have_gas_402": ; preds = %"$out_of_gas_401", %"$have_gas_397" + %"$consume_403" = sub i64 %"$gasrem_399", 1 + store i64 %"$consume_403", i64* @_gasrem + %"$$fundef_41_envp_404_load" = load i8*, i8** @_execptr + %"$$fundef_41_envp_404_salloc" = call i8* @_salloc(i8* %"$$fundef_41_envp_404_load", i64 32) + %"$$fundef_41_envp_404" = bitcast i8* %"$$fundef_41_envp_404_salloc" to %"$$fundef_41_env_150"* + %"$$fundef_41_env_voidp_406" = bitcast %"$$fundef_41_env_150"* %"$$fundef_41_envp_404" to i8* + %"$$fundef_41_cloval_407" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_41_env_150"*, %TName_Nat*)* @"$fundef_41" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_41_env_voidp_406", 1 %g = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_41_cloval_302", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g - %"$$fundef_41_env_fn_303" = getelementptr inbounds %"$$fundef_41_env_150", %"$$fundef_41_env_150"* %"$$fundef_41_envp_299", i32 0, i32 0 - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %1, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_41_env_fn_303" - %"$$fundef_41_env_g_304" = getelementptr inbounds %"$$fundef_41_env_150", %"$$fundef_41_env_150"* %"$$fundef_41_envp_299", i32 0, i32 1 - %"$g_305" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_305", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_41_env_g_304" - %"$g_306" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_306", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_40" - %"$$retval_40_307" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_40" - ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_40_307" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_41_cloval_407", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g + %"$$fundef_41_env_fn_408" = getelementptr inbounds %"$$fundef_41_env_150", %"$$fundef_41_env_150"* %"$$fundef_41_envp_404", i32 0, i32 0 + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %1, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_41_env_fn_408" + %"$$fundef_41_env_g_409" = getelementptr inbounds %"$$fundef_41_env_150", %"$$fundef_41_env_150"* %"$$fundef_41_envp_404", i32 0, i32 1 + %"$g_410" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_410", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$$fundef_41_env_g_409" + %"$g_411" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %g + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_411", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_40" + %"$$retval_40_412" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_40" + ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_40_412" } define internal { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } @"$fundef_37"(%"$$fundef_37_env_152"* %0) { entry: %"$retval_38" = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } + %"$gasrem_385" = load i64, i64* @_gasrem + %"$gascmp_386" = icmp ugt i64 1, %"$gasrem_385" + br i1 %"$gascmp_386", label %"$out_of_gas_387", label %"$have_gas_388" + +"$out_of_gas_387": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_388" + +"$have_gas_388": ; preds = %"$out_of_gas_387", %entry + %"$consume_389" = sub i64 %"$gasrem_385", 1 + store i64 %"$consume_389", i64* @_gasrem store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })* bitcast ({ { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (%"$$fundef_39_env_151"*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })* @"$fundef_39" to { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*), i8* null }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_38" - %"$$retval_38_298" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_38" - ret { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$retval_38_298" + %"$$retval_38_393" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_38" + ret { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$retval_38_393" } define internal { %TName_Nat* (i8*, %TName_Nat*)*, i8* } @"$fundef_35"(%"$$fundef_35_env_153"* %0, %TName_Nat* %1) { entry: - %"$$fundef_35_env_f0_255" = getelementptr inbounds %"$$fundef_35_env_153", %"$$fundef_35_env_153"* %0, i32 0, i32 0 - %"$f0_envload_256" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_35_env_f0_255" + %"$$fundef_35_env_f0_320" = getelementptr inbounds %"$$fundef_35_env_153", %"$$fundef_35_env_153"* %0, i32 0, i32 0 + %"$f0_envload_321" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_35_env_f0_320" %f0 = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f0_envload_256", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f0 - %"$$fundef_35_env_fn_257" = getelementptr inbounds %"$$fundef_35_env_153", %"$$fundef_35_env_153"* %0, i32 0, i32 1 - %"$fn_envload_258" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_35_env_fn_257" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f0_envload_321", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f0 + %"$$fundef_35_env_fn_322" = getelementptr inbounds %"$$fundef_35_env_153", %"$$fundef_35_env_153"* %0, i32 0, i32 1 + %"$fn_envload_323" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_35_env_fn_322" %fn = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_envload_258", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %fn - %"$$fundef_35_env_g_259" = getelementptr inbounds %"$$fundef_35_env_153", %"$$fundef_35_env_153"* %0, i32 0, i32 2 - %"$g_envload_260" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_35_env_g_259" + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_envload_323", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %fn + %"$$fundef_35_env_g_324" = getelementptr inbounds %"$$fundef_35_env_153", %"$$fundef_35_env_153"* %0, i32 0, i32 2 + %"$g_envload_325" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_35_env_g_324" %g = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_envload_260", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_envload_325", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g %"$retval_36" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$n_tag_262" = getelementptr inbounds %TName_Nat, %TName_Nat* %1, i32 0, i32 0 - %"$n_tag_263" = load i8, i8* %"$n_tag_262" - switch i8 %"$n_tag_263", label %"$empty_default_264" [ - i8 1, label %"$Succ_265" - i8 0, label %"$Zero_291" + %"$gasrem_326" = load i64, i64* @_gasrem + %"$gascmp_327" = icmp ugt i64 2, %"$gasrem_326" + br i1 %"$gascmp_327", label %"$out_of_gas_328", label %"$have_gas_329" + +"$out_of_gas_328": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_329" + +"$have_gas_329": ; preds = %"$out_of_gas_328", %entry + %"$consume_330" = sub i64 %"$gasrem_326", 2 + store i64 %"$consume_330", i64* @_gasrem + %"$n_tag_332" = getelementptr inbounds %TName_Nat, %TName_Nat* %1, i32 0, i32 0 + %"$n_tag_333" = load i8, i8* %"$n_tag_332" + switch i8 %"$n_tag_333", label %"$empty_default_334" [ + i8 1, label %"$Succ_335" + i8 0, label %"$Zero_376" ] -"$Succ_265": ; preds = %entry - %"$n_266" = bitcast %TName_Nat* %1 to %CName_Succ* - %"$n1_gep_267" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$n_266", i32 0, i32 1 - %"$n1_load_268" = load %TName_Nat*, %TName_Nat** %"$n1_gep_267" +"$Succ_335": ; preds = %"$have_gas_329" + %"$n_336" = bitcast %TName_Nat* %1 to %CName_Succ* + %"$n1_gep_337" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$n_336", i32 0, i32 1 + %"$n1_load_338" = load %TName_Nat*, %TName_Nat** %"$n1_gep_337" %n1 = alloca %TName_Nat* - store %TName_Nat* %"$n1_load_268", %TName_Nat** %n1 + store %TName_Nat* %"$n1_load_338", %TName_Nat** %n1 + %"$gasrem_339" = load i64, i64* @_gasrem + %"$gascmp_340" = icmp ugt i64 1, %"$gasrem_339" + br i1 %"$gascmp_340", label %"$out_of_gas_341", label %"$have_gas_342" + +"$out_of_gas_341": ; preds = %"$Succ_335" + call void @_out_of_gas() + br label %"$have_gas_342" + +"$have_gas_342": ; preds = %"$out_of_gas_341", %"$Succ_335" + %"$consume_343" = sub i64 %"$gasrem_339", 1 + store i64 %"$consume_343", i64* @_gasrem %res = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } + %"$gasrem_344" = load i64, i64* @_gasrem + %"$gascmp_345" = icmp ugt i64 1, %"$gasrem_344" + br i1 %"$gascmp_345", label %"$out_of_gas_346", label %"$have_gas_347" + +"$out_of_gas_346": ; preds = %"$have_gas_342" + call void @_out_of_gas() + br label %"$have_gas_347" + +"$have_gas_347": ; preds = %"$out_of_gas_346", %"$have_gas_342" + %"$consume_348" = sub i64 %"$gasrem_344", 1 + store i64 %"$consume_348", i64* @_gasrem %"$fn_0" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$fn_269" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %fn - %"$fn_fptr_270" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_269", 0 - %"$fn_envptr_271" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_269", 1 - %"$f0_272" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f0 - %"$fn_call_273" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_fptr_270"(i8* %"$fn_envptr_271", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f0_272") - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_call_273", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$fn_0" + %"$fn_349" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %fn + %"$fn_fptr_350" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_349", 0 + %"$fn_envptr_351" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_349", 1 + %"$f0_352" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f0 + %"$fn_call_353" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_fptr_350"(i8* %"$fn_envptr_351", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f0_352") + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$fn_call_353", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$fn_0" %"$fn_1" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$$fn_0_274" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$fn_0" - %"$$fn_0_fptr_275" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fn_0_274", 0 - %"$$fn_0_envptr_276" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fn_0_274", 1 - %"$n1_277" = load %TName_Nat*, %TName_Nat** %n1 - %"$$fn_0_call_278" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_0_fptr_275"(i8* %"$$fn_0_envptr_276", %TName_Nat* %"$n1_277") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_0_call_278", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$fn_1" - %"$$fn_1_279" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$fn_1" - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_1_279", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %res + %"$$fn_0_354" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$fn_0" + %"$$fn_0_fptr_355" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fn_0_354", 0 + %"$$fn_0_envptr_356" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fn_0_354", 1 + %"$n1_357" = load %TName_Nat*, %TName_Nat** %n1 + %"$$fn_0_call_358" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_0_fptr_355"(i8* %"$$fn_0_envptr_356", %TName_Nat* %"$n1_357") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_0_call_358", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$fn_1" + %"$$fn_1_359" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$fn_1" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$fn_1_359", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %res + %"$gasrem_360" = load i64, i64* @_gasrem + %"$gascmp_361" = icmp ugt i64 1, %"$gasrem_360" + br i1 %"$gascmp_361", label %"$out_of_gas_362", label %"$have_gas_363" + +"$out_of_gas_362": ; preds = %"$have_gas_347" + call void @_out_of_gas() + br label %"$have_gas_363" + +"$have_gas_363": ; preds = %"$out_of_gas_362", %"$have_gas_347" + %"$consume_364" = sub i64 %"$gasrem_360", 1 + store i64 %"$consume_364", i64* @_gasrem %"$g_2" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$g_280" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g - %"$g_fptr_281" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_280", 0 - %"$g_envptr_282" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_280", 1 - %"$res_283" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %res - %"$g_call_284" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_fptr_281"(i8* %"$g_envptr_282", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$res_283") - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_call_284", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$g_2" + %"$g_365" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g + %"$g_fptr_366" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_365", 0 + %"$g_envptr_367" = extractvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_365", 1 + %"$res_368" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %res + %"$g_call_369" = call { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_fptr_366"(i8* %"$g_envptr_367", { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$res_368") + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$g_call_369", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$g_2" %"$g_3" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$$g_2_285" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$g_2" - %"$$g_2_fptr_286" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$g_2_285", 0 - %"$$g_2_envptr_287" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$g_2_285", 1 - %"$n1_288" = load %TName_Nat*, %TName_Nat** %n1 - %"$$g_2_call_289" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_2_fptr_286"(i8* %"$$g_2_envptr_287", %TName_Nat* %"$n1_288") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_2_call_289", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$g_3" - %"$$g_3_290" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$g_3" - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_3_290", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_36" - br label %"$matchsucc_261" - -"$Zero_291": ; preds = %entry - %"$n_292" = bitcast %TName_Nat* %1 to %CName_Zero* - %"$f0_293" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f0 - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f0_293", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_36" - br label %"$matchsucc_261" - -"$empty_default_264": ; preds = %entry - br label %"$matchsucc_261" - -"$matchsucc_261": ; preds = %"$Zero_291", %"$Succ_265", %"$empty_default_264" - %"$$retval_36_294" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_36" - ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_36_294" + %"$$g_2_370" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$g_2" + %"$$g_2_fptr_371" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$g_2_370", 0 + %"$$g_2_envptr_372" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$g_2_370", 1 + %"$n1_373" = load %TName_Nat*, %TName_Nat** %n1 + %"$$g_2_call_374" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_2_fptr_371"(i8* %"$$g_2_envptr_372", %TName_Nat* %"$n1_373") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_2_call_374", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$g_3" + %"$$g_3_375" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$g_3" + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$g_3_375", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_36" + br label %"$matchsucc_331" + +"$Zero_376": ; preds = %"$have_gas_329" + %"$n_377" = bitcast %TName_Nat* %1 to %CName_Zero* + %"$gasrem_378" = load i64, i64* @_gasrem + %"$gascmp_379" = icmp ugt i64 1, %"$gasrem_378" + br i1 %"$gascmp_379", label %"$out_of_gas_380", label %"$have_gas_381" + +"$out_of_gas_380": ; preds = %"$Zero_376" + call void @_out_of_gas() + br label %"$have_gas_381" + +"$have_gas_381": ; preds = %"$out_of_gas_380", %"$Zero_376" + %"$consume_382" = sub i64 %"$gasrem_378", 1 + store i64 %"$consume_382", i64* @_gasrem + %"$f0_383" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %f0 + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$f0_383", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_36" + br label %"$matchsucc_331" + +"$empty_default_334": ; preds = %"$have_gas_329" + br label %"$matchsucc_331" + +"$matchsucc_331": ; preds = %"$have_gas_381", %"$have_gas_363", %"$empty_default_334" + %"$$retval_36_384" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$retval_36" + ret { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$retval_36_384" } define internal { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } @"$fundef_33"(%"$$fundef_33_env_154"* %0, { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1) { entry: - %"$$fundef_33_env_fn_241" = getelementptr inbounds %"$$fundef_33_env_154", %"$$fundef_33_env_154"* %0, i32 0, i32 0 - %"$fn_envload_242" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_33_env_fn_241" + %"$$fundef_33_env_fn_301" = getelementptr inbounds %"$$fundef_33_env_154", %"$$fundef_33_env_154"* %0, i32 0, i32 0 + %"$fn_envload_302" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_33_env_fn_301" %fn = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_envload_242", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %fn - %"$$fundef_33_env_g_243" = getelementptr inbounds %"$$fundef_33_env_154", %"$$fundef_33_env_154"* %0, i32 0, i32 1 - %"$g_envload_244" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_33_env_g_243" + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_envload_302", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %fn + %"$$fundef_33_env_g_303" = getelementptr inbounds %"$$fundef_33_env_154", %"$$fundef_33_env_154"* %0, i32 0, i32 1 + %"$g_envload_304" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_33_env_g_303" %g = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_envload_244", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_envload_304", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g %"$retval_34" = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } - %"$$fundef_35_envp_245_load" = load i8*, i8** @_execptr - %"$$fundef_35_envp_245_salloc" = call i8* @_salloc(i8* %"$$fundef_35_envp_245_load", i64 48) - %"$$fundef_35_envp_245" = bitcast i8* %"$$fundef_35_envp_245_salloc" to %"$$fundef_35_env_153"* - %"$$fundef_35_env_voidp_247" = bitcast %"$$fundef_35_env_153"* %"$$fundef_35_envp_245" to i8* - %"$$fundef_35_cloval_248" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_35_env_153"*, %TName_Nat*)* @"$fundef_35" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_35_env_voidp_247", 1 - %"$$fundef_35_env_f0_249" = getelementptr inbounds %"$$fundef_35_env_153", %"$$fundef_35_env_153"* %"$$fundef_35_envp_245", i32 0, i32 0 - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_35_env_f0_249" - %"$$fundef_35_env_fn_250" = getelementptr inbounds %"$$fundef_35_env_153", %"$$fundef_35_env_153"* %"$$fundef_35_envp_245", i32 0, i32 1 - %"$fn_251" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %fn - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_251", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_35_env_fn_250" - %"$$fundef_35_env_g_252" = getelementptr inbounds %"$$fundef_35_env_153", %"$$fundef_35_env_153"* %"$$fundef_35_envp_245", i32 0, i32 2 - %"$g_253" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_253", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_35_env_g_252" - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_35_cloval_248", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_34" - %"$$retval_34_254" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_34" - ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_34_254" + %"$gasrem_305" = load i64, i64* @_gasrem + %"$gascmp_306" = icmp ugt i64 1, %"$gasrem_305" + br i1 %"$gascmp_306", label %"$out_of_gas_307", label %"$have_gas_308" + +"$out_of_gas_307": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_308" + +"$have_gas_308": ; preds = %"$out_of_gas_307", %entry + %"$consume_309" = sub i64 %"$gasrem_305", 1 + store i64 %"$consume_309", i64* @_gasrem + %"$$fundef_35_envp_310_load" = load i8*, i8** @_execptr + %"$$fundef_35_envp_310_salloc" = call i8* @_salloc(i8* %"$$fundef_35_envp_310_load", i64 48) + %"$$fundef_35_envp_310" = bitcast i8* %"$$fundef_35_envp_310_salloc" to %"$$fundef_35_env_153"* + %"$$fundef_35_env_voidp_312" = bitcast %"$$fundef_35_env_153"* %"$$fundef_35_envp_310" to i8* + %"$$fundef_35_cloval_313" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_35_env_153"*, %TName_Nat*)* @"$fundef_35" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_35_env_voidp_312", 1 + %"$$fundef_35_env_f0_314" = getelementptr inbounds %"$$fundef_35_env_153", %"$$fundef_35_env_153"* %"$$fundef_35_envp_310", i32 0, i32 0 + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %1, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_35_env_f0_314" + %"$$fundef_35_env_fn_315" = getelementptr inbounds %"$$fundef_35_env_153", %"$$fundef_35_env_153"* %"$$fundef_35_envp_310", i32 0, i32 1 + %"$fn_316" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %fn + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$fn_316", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_35_env_fn_315" + %"$$fundef_35_env_g_317" = getelementptr inbounds %"$$fundef_35_env_153", %"$$fundef_35_env_153"* %"$$fundef_35_envp_310", i32 0, i32 2 + %"$g_318" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_318", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_35_env_g_317" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_35_cloval_313", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_34" + %"$$retval_34_319" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %"$retval_34" + ret { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$retval_34_319" } define internal { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } @"$fundef_31"(%"$$fundef_31_env_155"* %0, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %1) { entry: %"$retval_32" = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - %"$$fundef_33_envp_232_load" = load i8*, i8** @_execptr - %"$$fundef_33_envp_232_salloc" = call i8* @_salloc(i8* %"$$fundef_33_envp_232_load", i64 32) - %"$$fundef_33_envp_232" = bitcast i8* %"$$fundef_33_envp_232_salloc" to %"$$fundef_33_env_154"* - %"$$fundef_33_env_voidp_234" = bitcast %"$$fundef_33_env_154"* %"$$fundef_33_envp_232" to i8* - %"$$fundef_33_cloval_235" = insertvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (%"$$fundef_33_env_154"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_33" to { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_33_env_voidp_234", 1 + %"$gasrem_282" = load i64, i64* @_gasrem + %"$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 = %entry + call void @_out_of_gas() + br label %"$have_gas_285" + +"$have_gas_285": ; preds = %"$out_of_gas_284", %entry + %"$consume_286" = sub i64 %"$gasrem_282", 1 + store i64 %"$consume_286", i64* @_gasrem + %"$gasrem_287" = load i64, i64* @_gasrem + %"$gascmp_288" = icmp ugt i64 1, %"$gasrem_287" + br i1 %"$gascmp_288", label %"$out_of_gas_289", label %"$have_gas_290" + +"$out_of_gas_289": ; preds = %"$have_gas_285" + call void @_out_of_gas() + br label %"$have_gas_290" + +"$have_gas_290": ; preds = %"$out_of_gas_289", %"$have_gas_285" + %"$consume_291" = sub i64 %"$gasrem_287", 1 + store i64 %"$consume_291", i64* @_gasrem + %"$$fundef_33_envp_292_load" = load i8*, i8** @_execptr + %"$$fundef_33_envp_292_salloc" = call i8* @_salloc(i8* %"$$fundef_33_envp_292_load", i64 32) + %"$$fundef_33_envp_292" = bitcast i8* %"$$fundef_33_envp_292_salloc" to %"$$fundef_33_env_154"* + %"$$fundef_33_env_voidp_294" = bitcast %"$$fundef_33_env_154"* %"$$fundef_33_envp_292" to i8* + %"$$fundef_33_cloval_295" = insertvalue { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (%"$$fundef_33_env_154"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_33" to { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_33_env_voidp_294", 1 %g = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_33_cloval_235", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g - %"$$fundef_33_env_fn_236" = getelementptr inbounds %"$$fundef_33_env_154", %"$$fundef_33_env_154"* %"$$fundef_33_envp_232", i32 0, i32 0 - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %1, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_33_env_fn_236" - %"$$fundef_33_env_g_237" = getelementptr inbounds %"$$fundef_33_env_154", %"$$fundef_33_env_154"* %"$$fundef_33_envp_232", i32 0, i32 1 - %"$g_238" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_238", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_33_env_g_237" - %"$g_239" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_239", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_32" - %"$$retval_32_240" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_32" - ret { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$retval_32_240" + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_33_cloval_295", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g + %"$$fundef_33_env_fn_296" = getelementptr inbounds %"$$fundef_33_env_154", %"$$fundef_33_env_154"* %"$$fundef_33_envp_292", i32 0, i32 0 + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %1, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_33_env_fn_296" + %"$$fundef_33_env_g_297" = getelementptr inbounds %"$$fundef_33_env_154", %"$$fundef_33_env_154"* %"$$fundef_33_envp_292", i32 0, i32 1 + %"$g_298" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_298", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_33_env_g_297" + %"$g_299" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %g + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$g_299", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_32" + %"$$retval_32_300" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$retval_32" + ret { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$retval_32_300" } define internal { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } @"$fundef_29"(%"$$fundef_29_env_156"* %0) { entry: %"$retval_30" = alloca { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } + %"$gasrem_273" = load i64, i64* @_gasrem + %"$gascmp_274" = icmp ugt i64 1, %"$gasrem_273" + br i1 %"$gascmp_274", label %"$out_of_gas_275", label %"$have_gas_276" + +"$out_of_gas_275": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_276" + +"$have_gas_276": ; preds = %"$out_of_gas_275", %entry + %"$consume_277" = sub i64 %"$gasrem_273", 1 + store i64 %"$consume_277", i64* @_gasrem store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })* bitcast ({ { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (%"$$fundef_31_env_155"*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })* @"$fundef_31" to { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*), i8* null }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$retval_30" - %"$$retval_30_231" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$retval_30" - ret { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$$retval_30_231" + %"$$retval_30_281" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$retval_30" + ret { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$$retval_30_281" } define internal %Uint32 @"$fundef_27"(%"$$fundef_27_env_157"* %0, %TName_Nat* %1) { entry: - %"$$fundef_27_env_f0_188" = getelementptr inbounds %"$$fundef_27_env_157", %"$$fundef_27_env_157"* %0, i32 0, i32 0 - %"$f0_envload_189" = load %Uint32, %Uint32* %"$$fundef_27_env_f0_188" + %"$$fundef_27_env_f0_208" = getelementptr inbounds %"$$fundef_27_env_157", %"$$fundef_27_env_157"* %0, i32 0, i32 0 + %"$f0_envload_209" = load %Uint32, %Uint32* %"$$fundef_27_env_f0_208" %f0 = alloca %Uint32 - store %Uint32 %"$f0_envload_189", %Uint32* %f0 - %"$$fundef_27_env_fn_190" = getelementptr inbounds %"$$fundef_27_env_157", %"$$fundef_27_env_157"* %0, i32 0, i32 1 - %"$fn_envload_191" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_27_env_fn_190" + store %Uint32 %"$f0_envload_209", %Uint32* %f0 + %"$$fundef_27_env_fn_210" = getelementptr inbounds %"$$fundef_27_env_157", %"$$fundef_27_env_157"* %0, i32 0, i32 1 + %"$fn_envload_211" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_27_env_fn_210" %fn = alloca { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_envload_191", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %fn - %"$$fundef_27_env_g_192" = getelementptr inbounds %"$$fundef_27_env_157", %"$$fundef_27_env_157"* %0, i32 0, i32 2 - %"$g_envload_193" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_27_env_g_192" + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_envload_211", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %fn + %"$$fundef_27_env_g_212" = getelementptr inbounds %"$$fundef_27_env_157", %"$$fundef_27_env_157"* %0, i32 0, i32 2 + %"$g_envload_213" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_27_env_g_212" %g = alloca { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_193", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_213", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g %"$retval_28" = alloca %Uint32 - %"$n_tag_195" = getelementptr inbounds %TName_Nat, %TName_Nat* %1, i32 0, i32 0 - %"$n_tag_196" = load i8, i8* %"$n_tag_195" - switch i8 %"$n_tag_196", label %"$empty_default_197" [ - i8 1, label %"$Succ_198" - i8 0, label %"$Zero_224" + %"$gasrem_214" = load i64, i64* @_gasrem + %"$gascmp_215" = icmp ugt i64 2, %"$gasrem_214" + br i1 %"$gascmp_215", label %"$out_of_gas_216", label %"$have_gas_217" + +"$out_of_gas_216": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_217" + +"$have_gas_217": ; preds = %"$out_of_gas_216", %entry + %"$consume_218" = sub i64 %"$gasrem_214", 2 + store i64 %"$consume_218", i64* @_gasrem + %"$n_tag_220" = getelementptr inbounds %TName_Nat, %TName_Nat* %1, i32 0, i32 0 + %"$n_tag_221" = load i8, i8* %"$n_tag_220" + switch i8 %"$n_tag_221", label %"$empty_default_222" [ + i8 1, label %"$Succ_223" + i8 0, label %"$Zero_264" ] -"$Succ_198": ; preds = %entry - %"$n_199" = bitcast %TName_Nat* %1 to %CName_Succ* - %"$n1_gep_200" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$n_199", i32 0, i32 1 - %"$n1_load_201" = load %TName_Nat*, %TName_Nat** %"$n1_gep_200" +"$Succ_223": ; preds = %"$have_gas_217" + %"$n_224" = bitcast %TName_Nat* %1 to %CName_Succ* + %"$n1_gep_225" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$n_224", i32 0, i32 1 + %"$n1_load_226" = load %TName_Nat*, %TName_Nat** %"$n1_gep_225" %n1 = alloca %TName_Nat* - store %TName_Nat* %"$n1_load_201", %TName_Nat** %n1 + store %TName_Nat* %"$n1_load_226", %TName_Nat** %n1 + %"$gasrem_227" = load i64, i64* @_gasrem + %"$gascmp_228" = icmp ugt i64 1, %"$gasrem_227" + br i1 %"$gascmp_228", label %"$out_of_gas_229", label %"$have_gas_230" + +"$out_of_gas_229": ; preds = %"$Succ_223" + call void @_out_of_gas() + br label %"$have_gas_230" + +"$have_gas_230": ; preds = %"$out_of_gas_229", %"$Succ_223" + %"$consume_231" = sub i64 %"$gasrem_227", 1 + store i64 %"$consume_231", i64* @_gasrem %res = alloca %Uint32 + %"$gasrem_232" = load i64, i64* @_gasrem + %"$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 %"$fn_0" = alloca { %Uint32 (i8*, %TName_Nat*)*, i8* } - %"$fn_202" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %fn - %"$fn_fptr_203" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_202", 0 - %"$fn_envptr_204" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_202", 1 - %"$f0_205" = load %Uint32, %Uint32* %f0 - %"$fn_call_206" = call { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$fn_fptr_203"(i8* %"$fn_envptr_204", %Uint32 %"$f0_205") - store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$fn_call_206", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$fn_0" + %"$fn_237" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %fn + %"$fn_fptr_238" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_237", 0 + %"$fn_envptr_239" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_237", 1 + %"$f0_240" = load %Uint32, %Uint32* %f0 + %"$fn_call_241" = call { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$fn_fptr_238"(i8* %"$fn_envptr_239", %Uint32 %"$f0_240") + store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$fn_call_241", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$fn_0" %"$fn_1" = alloca %Uint32 - %"$$fn_0_207" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$fn_0" - %"$$fn_0_fptr_208" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fn_0_207", 0 - %"$$fn_0_envptr_209" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fn_0_207", 1 - %"$n1_210" = load %TName_Nat*, %TName_Nat** %n1 - %"$$fn_0_call_211" = call %Uint32 %"$$fn_0_fptr_208"(i8* %"$$fn_0_envptr_209", %TName_Nat* %"$n1_210") - store %Uint32 %"$$fn_0_call_211", %Uint32* %"$fn_1" - %"$$fn_1_212" = load %Uint32, %Uint32* %"$fn_1" - store %Uint32 %"$$fn_1_212", %Uint32* %res + %"$$fn_0_242" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$fn_0" + %"$$fn_0_fptr_243" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fn_0_242", 0 + %"$$fn_0_envptr_244" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fn_0_242", 1 + %"$n1_245" = load %TName_Nat*, %TName_Nat** %n1 + %"$$fn_0_call_246" = call %Uint32 %"$$fn_0_fptr_243"(i8* %"$$fn_0_envptr_244", %TName_Nat* %"$n1_245") + store %Uint32 %"$$fn_0_call_246", %Uint32* %"$fn_1" + %"$$fn_1_247" = load %Uint32, %Uint32* %"$fn_1" + store %Uint32 %"$$fn_1_247", %Uint32* %res + %"$gasrem_248" = load i64, i64* @_gasrem + %"$gascmp_249" = icmp ugt i64 1, %"$gasrem_248" + br i1 %"$gascmp_249", label %"$out_of_gas_250", label %"$have_gas_251" + +"$out_of_gas_250": ; preds = %"$have_gas_235" + call void @_out_of_gas() + br label %"$have_gas_251" + +"$have_gas_251": ; preds = %"$out_of_gas_250", %"$have_gas_235" + %"$consume_252" = sub i64 %"$gasrem_248", 1 + store i64 %"$consume_252", i64* @_gasrem %"$g_2" = alloca { %Uint32 (i8*, %TName_Nat*)*, i8* } - %"$g_213" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$g_fptr_214" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_213", 0 - %"$g_envptr_215" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_213", 1 - %"$res_216" = load %Uint32, %Uint32* %res - %"$g_call_217" = call { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$g_fptr_214"(i8* %"$g_envptr_215", %Uint32 %"$res_216") - store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$g_call_217", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$g_2" + %"$g_253" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$g_fptr_254" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_253", 0 + %"$g_envptr_255" = extractvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_253", 1 + %"$res_256" = load %Uint32, %Uint32* %res + %"$g_call_257" = call { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$g_fptr_254"(i8* %"$g_envptr_255", %Uint32 %"$res_256") + store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$g_call_257", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$g_2" %"$g_3" = alloca %Uint32 - %"$$g_2_218" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$g_2" - %"$$g_2_fptr_219" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$g_2_218", 0 - %"$$g_2_envptr_220" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$g_2_218", 1 - %"$n1_221" = load %TName_Nat*, %TName_Nat** %n1 - %"$$g_2_call_222" = call %Uint32 %"$$g_2_fptr_219"(i8* %"$$g_2_envptr_220", %TName_Nat* %"$n1_221") - store %Uint32 %"$$g_2_call_222", %Uint32* %"$g_3" - %"$$g_3_223" = load %Uint32, %Uint32* %"$g_3" - store %Uint32 %"$$g_3_223", %Uint32* %"$retval_28" - br label %"$matchsucc_194" - -"$Zero_224": ; preds = %entry - %"$n_225" = bitcast %TName_Nat* %1 to %CName_Zero* - %"$f0_226" = load %Uint32, %Uint32* %f0 - store %Uint32 %"$f0_226", %Uint32* %"$retval_28" - br label %"$matchsucc_194" - -"$empty_default_197": ; preds = %entry - br label %"$matchsucc_194" - -"$matchsucc_194": ; preds = %"$Zero_224", %"$Succ_198", %"$empty_default_197" - %"$$retval_28_227" = load %Uint32, %Uint32* %"$retval_28" - ret %Uint32 %"$$retval_28_227" + %"$$g_2_258" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$g_2" + %"$$g_2_fptr_259" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$g_2_258", 0 + %"$$g_2_envptr_260" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$g_2_258", 1 + %"$n1_261" = load %TName_Nat*, %TName_Nat** %n1 + %"$$g_2_call_262" = call %Uint32 %"$$g_2_fptr_259"(i8* %"$$g_2_envptr_260", %TName_Nat* %"$n1_261") + store %Uint32 %"$$g_2_call_262", %Uint32* %"$g_3" + %"$$g_3_263" = load %Uint32, %Uint32* %"$g_3" + store %Uint32 %"$$g_3_263", %Uint32* %"$retval_28" + br label %"$matchsucc_219" + +"$Zero_264": ; preds = %"$have_gas_217" + %"$n_265" = bitcast %TName_Nat* %1 to %CName_Zero* + %"$gasrem_266" = load i64, i64* @_gasrem + %"$gascmp_267" = icmp ugt i64 1, %"$gasrem_266" + br i1 %"$gascmp_267", label %"$out_of_gas_268", label %"$have_gas_269" + +"$out_of_gas_268": ; preds = %"$Zero_264" + call void @_out_of_gas() + br label %"$have_gas_269" + +"$have_gas_269": ; preds = %"$out_of_gas_268", %"$Zero_264" + %"$consume_270" = sub i64 %"$gasrem_266", 1 + store i64 %"$consume_270", i64* @_gasrem + %"$f0_271" = load %Uint32, %Uint32* %f0 + store %Uint32 %"$f0_271", %Uint32* %"$retval_28" + br label %"$matchsucc_219" + +"$empty_default_222": ; preds = %"$have_gas_217" + br label %"$matchsucc_219" + +"$matchsucc_219": ; preds = %"$have_gas_269", %"$have_gas_251", %"$empty_default_222" + %"$$retval_28_272" = load %Uint32, %Uint32* %"$retval_28" + ret %Uint32 %"$$retval_28_272" } define internal { %Uint32 (i8*, %TName_Nat*)*, i8* } @"$fundef_25"(%"$$fundef_25_env_158"* %0, %Uint32 %1) { entry: - %"$$fundef_25_env_fn_174" = getelementptr inbounds %"$$fundef_25_env_158", %"$$fundef_25_env_158"* %0, i32 0, i32 0 - %"$fn_envload_175" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_25_env_fn_174" + %"$$fundef_25_env_fn_189" = getelementptr inbounds %"$$fundef_25_env_158", %"$$fundef_25_env_158"* %0, i32 0, i32 0 + %"$fn_envload_190" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_25_env_fn_189" %fn = alloca { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_envload_175", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %fn - %"$$fundef_25_env_g_176" = getelementptr inbounds %"$$fundef_25_env_158", %"$$fundef_25_env_158"* %0, i32 0, i32 1 - %"$g_envload_177" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_25_env_g_176" + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_envload_190", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %fn + %"$$fundef_25_env_g_191" = getelementptr inbounds %"$$fundef_25_env_158", %"$$fundef_25_env_158"* %0, i32 0, i32 1 + %"$g_envload_192" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_25_env_g_191" %g = alloca { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_177", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_192", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g %"$retval_26" = alloca { %Uint32 (i8*, %TName_Nat*)*, i8* } - %"$$fundef_27_envp_178_load" = load i8*, i8** @_execptr - %"$$fundef_27_envp_178_salloc" = call i8* @_salloc(i8* %"$$fundef_27_envp_178_load", i64 40) - %"$$fundef_27_envp_178" = bitcast i8* %"$$fundef_27_envp_178_salloc" to %"$$fundef_27_env_157"* - %"$$fundef_27_env_voidp_180" = bitcast %"$$fundef_27_env_157"* %"$$fundef_27_envp_178" to i8* - %"$$fundef_27_cloval_181" = insertvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } { %Uint32 (i8*, %TName_Nat*)* bitcast (%Uint32 (%"$$fundef_27_env_157"*, %TName_Nat*)* @"$fundef_27" to %Uint32 (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_27_env_voidp_180", 1 - %"$$fundef_27_env_f0_182" = getelementptr inbounds %"$$fundef_27_env_157", %"$$fundef_27_env_157"* %"$$fundef_27_envp_178", i32 0, i32 0 - store %Uint32 %1, %Uint32* %"$$fundef_27_env_f0_182" - %"$$fundef_27_env_fn_183" = getelementptr inbounds %"$$fundef_27_env_157", %"$$fundef_27_env_157"* %"$$fundef_27_envp_178", i32 0, i32 1 - %"$fn_184" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %fn - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_184", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_27_env_fn_183" - %"$$fundef_27_env_g_185" = getelementptr inbounds %"$$fundef_27_env_157", %"$$fundef_27_env_157"* %"$$fundef_27_envp_178", i32 0, i32 2 - %"$g_186" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_186", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_27_env_g_185" - store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fundef_27_cloval_181", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$retval_26" - %"$$retval_26_187" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$retval_26" - ret { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$retval_26_187" + %"$gasrem_193" = load i64, i64* @_gasrem + %"$gascmp_194" = icmp ugt i64 1, %"$gasrem_193" + br i1 %"$gascmp_194", label %"$out_of_gas_195", label %"$have_gas_196" + +"$out_of_gas_195": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_196" + +"$have_gas_196": ; preds = %"$out_of_gas_195", %entry + %"$consume_197" = sub i64 %"$gasrem_193", 1 + store i64 %"$consume_197", i64* @_gasrem + %"$$fundef_27_envp_198_load" = load i8*, i8** @_execptr + %"$$fundef_27_envp_198_salloc" = call i8* @_salloc(i8* %"$$fundef_27_envp_198_load", i64 40) + %"$$fundef_27_envp_198" = bitcast i8* %"$$fundef_27_envp_198_salloc" to %"$$fundef_27_env_157"* + %"$$fundef_27_env_voidp_200" = bitcast %"$$fundef_27_env_157"* %"$$fundef_27_envp_198" to i8* + %"$$fundef_27_cloval_201" = insertvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } { %Uint32 (i8*, %TName_Nat*)* bitcast (%Uint32 (%"$$fundef_27_env_157"*, %TName_Nat*)* @"$fundef_27" to %Uint32 (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_27_env_voidp_200", 1 + %"$$fundef_27_env_f0_202" = getelementptr inbounds %"$$fundef_27_env_157", %"$$fundef_27_env_157"* %"$$fundef_27_envp_198", i32 0, i32 0 + store %Uint32 %1, %Uint32* %"$$fundef_27_env_f0_202" + %"$$fundef_27_env_fn_203" = getelementptr inbounds %"$$fundef_27_env_157", %"$$fundef_27_env_157"* %"$$fundef_27_envp_198", i32 0, i32 1 + %"$fn_204" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %fn + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$fn_204", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_27_env_fn_203" + %"$$fundef_27_env_g_205" = getelementptr inbounds %"$$fundef_27_env_157", %"$$fundef_27_env_157"* %"$$fundef_27_envp_198", i32 0, i32 2 + %"$g_206" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_206", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_27_env_g_205" + store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fundef_27_cloval_201", { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$retval_26" + %"$$retval_26_207" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* %"$retval_26" + ret { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$retval_26_207" } define internal { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } @"$fundef_23"(%"$$fundef_23_env_159"* %0, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %1) { entry: %"$retval_24" = alloca { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } - %"$$fundef_25_envp_165_load" = load i8*, i8** @_execptr - %"$$fundef_25_envp_165_salloc" = call i8* @_salloc(i8* %"$$fundef_25_envp_165_load", i64 32) - %"$$fundef_25_envp_165" = bitcast i8* %"$$fundef_25_envp_165_salloc" to %"$$fundef_25_env_158"* - %"$$fundef_25_env_voidp_167" = bitcast %"$$fundef_25_env_158"* %"$$fundef_25_envp_165" to i8* - %"$$fundef_25_cloval_168" = insertvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_Nat*)*, i8* } (%"$$fundef_25_env_158"*, %Uint32)* @"$fundef_25" to { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_25_env_voidp_167", 1 + %"$gasrem_170" = load i64, i64* @_gasrem + %"$gascmp_171" = icmp ugt i64 1, %"$gasrem_170" + br i1 %"$gascmp_171", label %"$out_of_gas_172", label %"$have_gas_173" + +"$out_of_gas_172": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_173" + +"$have_gas_173": ; preds = %"$out_of_gas_172", %entry + %"$consume_174" = sub i64 %"$gasrem_170", 1 + store i64 %"$consume_174", i64* @_gasrem + %"$gasrem_175" = load i64, i64* @_gasrem + %"$gascmp_176" = icmp ugt i64 1, %"$gasrem_175" + br i1 %"$gascmp_176", label %"$out_of_gas_177", label %"$have_gas_178" + +"$out_of_gas_177": ; preds = %"$have_gas_173" + call void @_out_of_gas() + br label %"$have_gas_178" + +"$have_gas_178": ; preds = %"$out_of_gas_177", %"$have_gas_173" + %"$consume_179" = sub i64 %"$gasrem_175", 1 + store i64 %"$consume_179", i64* @_gasrem + %"$$fundef_25_envp_180_load" = load i8*, i8** @_execptr + %"$$fundef_25_envp_180_salloc" = call i8* @_salloc(i8* %"$$fundef_25_envp_180_load", i64 32) + %"$$fundef_25_envp_180" = bitcast i8* %"$$fundef_25_envp_180_salloc" to %"$$fundef_25_env_158"* + %"$$fundef_25_env_voidp_182" = bitcast %"$$fundef_25_env_158"* %"$$fundef_25_envp_180" to i8* + %"$$fundef_25_cloval_183" = insertvalue { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_Nat*)*, i8* } (%"$$fundef_25_env_158"*, %Uint32)* @"$fundef_25" to { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_25_env_voidp_182", 1 %g = alloca { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_25_cloval_168", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$$fundef_25_env_fn_169" = getelementptr inbounds %"$$fundef_25_env_158", %"$$fundef_25_env_158"* %"$$fundef_25_envp_165", i32 0, i32 0 - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %1, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_25_env_fn_169" - %"$$fundef_25_env_g_170" = getelementptr inbounds %"$$fundef_25_env_158", %"$$fundef_25_env_158"* %"$$fundef_25_envp_165", i32 0, i32 1 - %"$g_171" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_171", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_25_env_g_170" - %"$g_172" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_172", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_24" - %"$$retval_24_173" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_24" - ret { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_24_173" + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_25_cloval_183", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$$fundef_25_env_fn_184" = getelementptr inbounds %"$$fundef_25_env_158", %"$$fundef_25_env_158"* %"$$fundef_25_envp_180", i32 0, i32 0 + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %1, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_25_env_fn_184" + %"$$fundef_25_env_g_185" = getelementptr inbounds %"$$fundef_25_env_158", %"$$fundef_25_env_158"* %"$$fundef_25_envp_180", i32 0, i32 1 + %"$g_186" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_186", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_25_env_g_185" + %"$g_187" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_187", { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_24" + %"$$retval_24_188" = load { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_24" + ret { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_24_188" } define internal { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } @"$fundef_21"(%"$$fundef_21_env_160"* %0) { entry: %"$retval_22" = alloca { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_161" = load i64, i64* @_gasrem + %"$gascmp_162" = icmp ugt i64 1, %"$gasrem_161" + br i1 %"$gascmp_162", label %"$out_of_gas_163", label %"$have_gas_164" + +"$out_of_gas_163": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_164" + +"$have_gas_164": ; preds = %"$out_of_gas_163", %entry + %"$consume_165" = sub i64 %"$gasrem_161", 1 + store i64 %"$consume_165", i64* @_gasrem store { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })* bitcast ({ { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (%"$$fundef_23_env_159"*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })* @"$fundef_23" to { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*), i8* null }, { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_22" - %"$$retval_22_164" = load { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_22" - ret { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_22_164" + %"$$retval_22_169" = load { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_22" + ret { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_22_169" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) declare %Uint32 @_add_Uint32(%Uint32, %Uint32) @@ -1128,167 +1824,486 @@ entry: ret void } -define internal %Uint32 @"$scilla_expr_657"(i8* %0) { +define internal %Uint32 @"$scilla_expr_972"(i8* %0) { entry: - %"$dyndisp_table_667_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_667_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_667_salloc_load", i64 48) - %"$dyndisp_table_667_salloc" = bitcast i8* %"$dyndisp_table_667_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_667" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_667_salloc" to { i8*, i8* }* - %"$dyndisp_gep_668" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_667", i32 0 - %"$dyndisp_pcast_669" = bitcast { i8*, i8* }* %"$dyndisp_gep_668" to { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_21_env_160"*)* @"$fundef_21" to { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_669" - %"$dyndisp_gep_670" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_667", i32 1 - %"$dyndisp_pcast_671" = bitcast { i8*, i8* }* %"$dyndisp_gep_670" to { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)* bitcast ({ { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (%"$$fundef_29_env_156"*)* @"$fundef_29" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*), i8* null }, { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_671" - %"$dyndisp_gep_672" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_667", i32 2 - %"$dyndisp_pcast_673" = bitcast { i8*, i8* }* %"$dyndisp_gep_672" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (%"$$fundef_37_env_152"*)* @"$fundef_37" to { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_673" - store { i8*, i8* }* %"$dyndisp_table_667", { i8*, i8* }** @nat_fold - %"$$fundef_45_envp_674_load" = load i8*, i8** @_execptr - %"$$fundef_45_envp_674_salloc" = call i8* @_salloc(i8* %"$$fundef_45_envp_674_load", i64 8) - %"$$fundef_45_envp_674" = bitcast i8* %"$$fundef_45_envp_674_salloc" to %"$$fundef_45_env_148"* - %"$$fundef_45_env_voidp_676" = bitcast %"$$fundef_45_env_148"* %"$$fundef_45_envp_674" to i8* - %"$$fundef_45_cloval_677" = insertvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } { %Uint32 (i8*, %TName_Nat*)* bitcast (%Uint32 (%"$$fundef_45_env_148"*, %TName_Nat*)* @"$fundef_45" to %Uint32 (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_45_env_voidp_676", 1 - %"$$fundef_45_env_nat_fold_678" = getelementptr inbounds %"$$fundef_45_env_148", %"$$fundef_45_env_148"* %"$$fundef_45_envp_674", i32 0, i32 0 - %"$nat_fold_679" = load { i8*, i8* }*, { i8*, i8* }** @nat_fold - store { i8*, i8* }* %"$nat_fold_679", { i8*, i8* }** %"$$fundef_45_env_nat_fold_678" - store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fundef_45_cloval_677", { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$gasrem_973" = load i64, i64* @_gasrem + %"$gascmp_974" = icmp ugt i64 1, %"$gasrem_973" + br i1 %"$gascmp_974", label %"$out_of_gas_975", label %"$have_gas_976" + +"$out_of_gas_975": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_976" + +"$have_gas_976": ; preds = %"$out_of_gas_975", %entry + %"$consume_977" = sub i64 %"$gasrem_973", 1 + store i64 %"$consume_977", i64* @_gasrem + %"$dyndisp_table_987_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_987_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_987_salloc_load", i64 48) + %"$dyndisp_table_987_salloc" = bitcast i8* %"$dyndisp_table_987_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_987" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_987_salloc" to { i8*, i8* }* + %"$dyndisp_gep_988" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_987", i32 0 + %"$dyndisp_pcast_989" = bitcast { i8*, i8* }* %"$dyndisp_gep_988" to { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_21_env_160"*)* @"$fundef_21" to { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %TName_Nat*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_989" + %"$dyndisp_gep_990" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_987", i32 1 + %"$dyndisp_pcast_991" = bitcast { i8*, i8* }* %"$dyndisp_gep_990" to { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)* bitcast ({ { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (%"$$fundef_29_env_156"*)* @"$fundef_29" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*), i8* null }, { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_991" + %"$dyndisp_gep_992" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_987", i32 2 + %"$dyndisp_pcast_993" = bitcast { i8*, i8* }* %"$dyndisp_gep_992" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (%"$$fundef_37_env_152"*)* @"$fundef_37" to { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_993" + store { i8*, i8* }* %"$dyndisp_table_987", { i8*, i8* }** @nat_fold + %"$gasrem_994" = load i64, i64* @_gasrem + %"$gascmp_995" = icmp ugt i64 1, %"$gasrem_994" + br i1 %"$gascmp_995", label %"$out_of_gas_996", label %"$have_gas_997" + +"$out_of_gas_996": ; preds = %"$have_gas_976" + call void @_out_of_gas() + br label %"$have_gas_997" + +"$have_gas_997": ; preds = %"$out_of_gas_996", %"$have_gas_976" + %"$consume_998" = sub i64 %"$gasrem_994", 1 + store i64 %"$consume_998", i64* @_gasrem + %"$$fundef_45_envp_999_load" = load i8*, i8** @_execptr + %"$$fundef_45_envp_999_salloc" = call i8* @_salloc(i8* %"$$fundef_45_envp_999_load", i64 8) + %"$$fundef_45_envp_999" = bitcast i8* %"$$fundef_45_envp_999_salloc" to %"$$fundef_45_env_148"* + %"$$fundef_45_env_voidp_1001" = bitcast %"$$fundef_45_env_148"* %"$$fundef_45_envp_999" to i8* + %"$$fundef_45_cloval_1002" = insertvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } { %Uint32 (i8*, %TName_Nat*)* bitcast (%Uint32 (%"$$fundef_45_env_148"*, %TName_Nat*)* @"$fundef_45" to %Uint32 (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_45_env_voidp_1001", 1 + %"$$fundef_45_env_nat_fold_1003" = getelementptr inbounds %"$$fundef_45_env_148", %"$$fundef_45_env_148"* %"$$fundef_45_envp_999", i32 0, i32 0 + %"$nat_fold_1004" = load { i8*, i8* }*, { i8*, i8* }** @nat_fold + store { i8*, i8* }* %"$nat_fold_1004", { i8*, i8* }** %"$$fundef_45_env_nat_fold_1003" + store { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$$fundef_45_cloval_1002", { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int %"$expr_51" = alloca %Uint32 + %"$gasrem_1005" = load i64, i64* @_gasrem + %"$gascmp_1006" = icmp ugt i64 1, %"$gasrem_1005" + br i1 %"$gascmp_1006", label %"$out_of_gas_1007", label %"$have_gas_1008" + +"$out_of_gas_1007": ; preds = %"$have_gas_997" + call void @_out_of_gas() + br label %"$have_gas_1008" + +"$have_gas_1008": ; preds = %"$out_of_gas_1007", %"$have_gas_997" + %"$consume_1009" = sub i64 %"$gasrem_1005", 1 + store i64 %"$consume_1009", i64* @_gasrem %nat_succ = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } + %"$gasrem_1010" = load i64, i64* @_gasrem + %"$gascmp_1011" = icmp ugt i64 1, %"$gasrem_1010" + br i1 %"$gascmp_1011", label %"$out_of_gas_1012", label %"$have_gas_1013" + +"$out_of_gas_1012": ; preds = %"$have_gas_1008" + call void @_out_of_gas() + br label %"$have_gas_1013" + +"$have_gas_1013": ; preds = %"$out_of_gas_1012", %"$have_gas_1008" + %"$consume_1014" = sub i64 %"$gasrem_1010", 1 + store i64 %"$consume_1014", i64* @_gasrem store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } { %TName_Nat* (i8*, %TName_Nat*)* bitcast (%TName_Nat* (%"$$fundef_52_env_145"*, %TName_Nat*)* @"$fundef_52" to %TName_Nat* (i8*, %TName_Nat*)*), i8* null }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %nat_succ + %"$gasrem_1018" = load i64, i64* @_gasrem + %"$gascmp_1019" = icmp ugt i64 1, %"$gasrem_1018" + br i1 %"$gascmp_1019", label %"$out_of_gas_1020", label %"$have_gas_1021" + +"$out_of_gas_1020": ; preds = %"$have_gas_1013" + call void @_out_of_gas() + br label %"$have_gas_1021" + +"$have_gas_1021": ; preds = %"$out_of_gas_1020", %"$have_gas_1013" + %"$consume_1022" = sub i64 %"$gasrem_1018", 1 + store i64 %"$consume_1022", i64* @_gasrem %nat_iter = alloca { i8*, i8* }* - %"$$fundef_54_envp_683_load" = load i8*, i8** @_execptr - %"$$fundef_54_envp_683_salloc" = call i8* @_salloc(i8* %"$$fundef_54_envp_683_load", i64 8) - %"$$fundef_54_envp_683" = bitcast i8* %"$$fundef_54_envp_683_salloc" to %"$$fundef_54_env_144"* - %"$$fundef_54_env_voidp_685" = bitcast %"$$fundef_54_env_144"* %"$$fundef_54_envp_683" to i8* - %"$$fundef_54_cloval_686" = insertvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)* bitcast ({ { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (%"$$fundef_54_env_144"*)* @"$fundef_54" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_54_env_voidp_685", 1 - %"$$fundef_54_env_nat_fold_687" = getelementptr inbounds %"$$fundef_54_env_144", %"$$fundef_54_env_144"* %"$$fundef_54_envp_683", i32 0, i32 0 - %"$nat_fold_688" = load { i8*, i8* }*, { i8*, i8* }** @nat_fold - store { i8*, i8* }* %"$nat_fold_688", { i8*, i8* }** %"$$fundef_54_env_nat_fold_687" - %"$$fundef_66_env_voidp_690" = bitcast %"$$fundef_54_env_144"* %"$$fundef_54_envp_683" to i8* - %"$$fundef_66_cloval_691" = insertvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (%"$$fundef_66_env_138"*)* @"$fundef_66" to { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_66_env_voidp_690", 1 - %"$dyndisp_table_692_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_692_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_692_salloc_load", i64 48) - %"$dyndisp_table_692_salloc" = bitcast i8* %"$dyndisp_table_692_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_692" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_692_salloc" to { i8*, i8* }* - %"$dyndisp_gep_693" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_692", i32 1 - %"$dyndisp_pcast_694" = bitcast { i8*, i8* }* %"$dyndisp_gep_693" to { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_54_cloval_686", { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_694" - %"$dyndisp_gep_695" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_692", i32 2 - %"$dyndisp_pcast_696" = bitcast { i8*, i8* }* %"$dyndisp_gep_695" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_66_cloval_691", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_696" - store { i8*, i8* }* %"$dyndisp_table_692", { i8*, i8* }** %nat_iter + %"$gasrem_1023" = load i64, i64* @_gasrem + %"$gascmp_1024" = icmp ugt i64 1, %"$gasrem_1023" + br i1 %"$gascmp_1024", label %"$out_of_gas_1025", label %"$have_gas_1026" + +"$out_of_gas_1025": ; preds = %"$have_gas_1021" + call void @_out_of_gas() + br label %"$have_gas_1026" + +"$have_gas_1026": ; preds = %"$out_of_gas_1025", %"$have_gas_1021" + %"$consume_1027" = sub i64 %"$gasrem_1023", 1 + store i64 %"$consume_1027", i64* @_gasrem + %"$$fundef_54_envp_1028_load" = load i8*, i8** @_execptr + %"$$fundef_54_envp_1028_salloc" = call i8* @_salloc(i8* %"$$fundef_54_envp_1028_load", i64 8) + %"$$fundef_54_envp_1028" = bitcast i8* %"$$fundef_54_envp_1028_salloc" to %"$$fundef_54_env_144"* + %"$$fundef_54_env_voidp_1030" = bitcast %"$$fundef_54_env_144"* %"$$fundef_54_envp_1028" to i8* + %"$$fundef_54_cloval_1031" = insertvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)* bitcast ({ { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (%"$$fundef_54_env_144"*)* @"$fundef_54" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_54_env_voidp_1030", 1 + %"$$fundef_54_env_nat_fold_1032" = getelementptr inbounds %"$$fundef_54_env_144", %"$$fundef_54_env_144"* %"$$fundef_54_envp_1028", i32 0, i32 0 + %"$nat_fold_1033" = load { i8*, i8* }*, { i8*, i8* }** @nat_fold + store { i8*, i8* }* %"$nat_fold_1033", { i8*, i8* }** %"$$fundef_54_env_nat_fold_1032" + %"$$fundef_66_env_voidp_1035" = bitcast %"$$fundef_54_env_144"* %"$$fundef_54_envp_1028" to i8* + %"$$fundef_66_cloval_1036" = insertvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (%"$$fundef_66_env_138"*)* @"$fundef_66" to { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_66_env_voidp_1035", 1 + %"$dyndisp_table_1037_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_1037_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_1037_salloc_load", i64 48) + %"$dyndisp_table_1037_salloc" = bitcast i8* %"$dyndisp_table_1037_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_1037" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_1037_salloc" to { i8*, i8* }* + %"$dyndisp_gep_1038" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_1037", i32 1 + %"$dyndisp_pcast_1039" = bitcast { i8*, i8* }* %"$dyndisp_gep_1038" to { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_54_cloval_1031", { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_1039" + %"$dyndisp_gep_1040" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_1037", i32 2 + %"$dyndisp_pcast_1041" = bitcast { i8*, i8* }* %"$dyndisp_gep_1040" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_66_cloval_1036", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_1041" + store { i8*, i8* }* %"$dyndisp_table_1037", { i8*, i8* }** %nat_iter + %"$gasrem_1042" = load i64, i64* @_gasrem + %"$gascmp_1043" = icmp ugt i64 1, %"$gasrem_1042" + br i1 %"$gascmp_1043", label %"$out_of_gas_1044", label %"$have_gas_1045" + +"$out_of_gas_1044": ; preds = %"$have_gas_1026" + call void @_out_of_gas() + br label %"$have_gas_1045" + +"$have_gas_1045": ; preds = %"$out_of_gas_1044", %"$have_gas_1026" + %"$consume_1046" = sub i64 %"$gasrem_1042", 1 + store i64 %"$consume_1046", i64* @_gasrem %ackermann = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } + %"$gasrem_1047" = load i64, i64* @_gasrem + %"$gascmp_1048" = icmp ugt i64 1, %"$gasrem_1047" + br i1 %"$gascmp_1048", label %"$out_of_gas_1049", label %"$have_gas_1050" + +"$out_of_gas_1049": ; preds = %"$have_gas_1045" + call void @_out_of_gas() + br label %"$have_gas_1050" + +"$have_gas_1050": ; preds = %"$out_of_gas_1049", %"$have_gas_1045" + %"$consume_1051" = sub i64 %"$gasrem_1047", 1 + store i64 %"$consume_1051", i64* @_gasrem %iter_nat = alloca { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - %"$nat_iter_697" = load { i8*, i8* }*, { i8*, i8* }** %nat_iter - %"$nat_iter_698" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_iter_697", i32 2 - %"$nat_iter_699" = bitcast { i8*, i8* }* %"$nat_iter_698" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* - %"$nat_iter_700" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_iter_699" - %"$nat_iter_fptr_701" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_iter_700", 0 - %"$nat_iter_envptr_702" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_iter_700", 1 - %"$nat_iter_call_703" = call { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$nat_iter_fptr_701"(i8* %"$nat_iter_envptr_702") - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$nat_iter_call_703", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat + %"$gasrem_1052" = load i64, i64* @_gasrem + %"$gascmp_1053" = icmp ugt i64 1, %"$gasrem_1052" + br i1 %"$gascmp_1053", label %"$out_of_gas_1054", label %"$have_gas_1055" + +"$out_of_gas_1054": ; preds = %"$have_gas_1050" + call void @_out_of_gas() + br label %"$have_gas_1055" + +"$have_gas_1055": ; preds = %"$out_of_gas_1054", %"$have_gas_1050" + %"$consume_1056" = sub i64 %"$gasrem_1052", 1 + store i64 %"$consume_1056", i64* @_gasrem + %"$nat_iter_1057" = load { i8*, i8* }*, { i8*, i8* }** %nat_iter + %"$nat_iter_1058" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_iter_1057", i32 2 + %"$nat_iter_1059" = bitcast { i8*, i8* }* %"$nat_iter_1058" to { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* + %"$nat_iter_1060" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_iter_1059" + %"$nat_iter_fptr_1061" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_iter_1060", 0 + %"$nat_iter_envptr_1062" = extractvalue { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_iter_1060", 1 + %"$nat_iter_call_1063" = call { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$nat_iter_fptr_1061"(i8* %"$nat_iter_envptr_1062") + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$nat_iter_call_1063", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat + %"$gasrem_1064" = load i64, i64* @_gasrem + %"$gascmp_1065" = icmp ugt i64 1, %"$gasrem_1064" + br i1 %"$gascmp_1065", label %"$out_of_gas_1066", label %"$have_gas_1067" + +"$out_of_gas_1066": ; preds = %"$have_gas_1055" + call void @_out_of_gas() + br label %"$have_gas_1067" + +"$have_gas_1067": ; preds = %"$out_of_gas_1066", %"$have_gas_1055" + %"$consume_1068" = sub i64 %"$gasrem_1064", 1 + store i64 %"$consume_1068", i64* @_gasrem %iter_nat_nat = alloca { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } - %"$nat_iter_704" = load { i8*, i8* }*, { i8*, i8* }** %nat_iter - %"$nat_iter_705" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_iter_704", i32 1 - %"$nat_iter_706" = bitcast { i8*, i8* }* %"$nat_iter_705" to { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* - %"$nat_iter_707" = load { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }, { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_iter_706" - %"$nat_iter_fptr_708" = extractvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$nat_iter_707", 0 - %"$nat_iter_envptr_709" = extractvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$nat_iter_707", 1 - %"$nat_iter_call_710" = call { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$nat_iter_fptr_708"(i8* %"$nat_iter_envptr_709") - store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$nat_iter_call_710", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %iter_nat_nat + %"$gasrem_1069" = load i64, i64* @_gasrem + %"$gascmp_1070" = icmp ugt i64 1, %"$gasrem_1069" + br i1 %"$gascmp_1070", label %"$out_of_gas_1071", label %"$have_gas_1072" + +"$out_of_gas_1071": ; preds = %"$have_gas_1067" + call void @_out_of_gas() + br label %"$have_gas_1072" + +"$have_gas_1072": ; preds = %"$out_of_gas_1071", %"$have_gas_1067" + %"$consume_1073" = sub i64 %"$gasrem_1069", 1 + store i64 %"$consume_1073", i64* @_gasrem + %"$nat_iter_1074" = load { i8*, i8* }*, { i8*, i8* }** %nat_iter + %"$nat_iter_1075" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_iter_1074", i32 1 + %"$nat_iter_1076" = bitcast { i8*, i8* }* %"$nat_iter_1075" to { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* + %"$nat_iter_1077" = load { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }, { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_iter_1076" + %"$nat_iter_fptr_1078" = extractvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$nat_iter_1077", 0 + %"$nat_iter_envptr_1079" = extractvalue { { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } (i8*)*, i8* } %"$nat_iter_1077", 1 + %"$nat_iter_call_1080" = call { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$nat_iter_fptr_1078"(i8* %"$nat_iter_envptr_1079") + store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$nat_iter_call_1080", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %iter_nat_nat + %"$gasrem_1081" = load i64, i64* @_gasrem + %"$gascmp_1082" = icmp ugt i64 1, %"$gasrem_1081" + br i1 %"$gascmp_1082", label %"$out_of_gas_1083", label %"$have_gas_1084" + +"$out_of_gas_1083": ; preds = %"$have_gas_1072" + call void @_out_of_gas() + br label %"$have_gas_1084" + +"$have_gas_1084": ; preds = %"$out_of_gas_1083", %"$have_gas_1072" + %"$consume_1085" = sub i64 %"$gasrem_1081", 1 + store i64 %"$consume_1085", i64* @_gasrem %zero = alloca %TName_Nat* - %"$adtval_711_load" = load i8*, i8** @_execptr - %"$adtval_711_salloc" = call i8* @_salloc(i8* %"$adtval_711_load", i64 1) - %"$adtval_711" = bitcast i8* %"$adtval_711_salloc" to %CName_Zero* - %"$adtgep_712" = getelementptr inbounds %CName_Zero, %CName_Zero* %"$adtval_711", i32 0, i32 0 - store i8 0, i8* %"$adtgep_712" - %"$adtptr_713" = bitcast %CName_Zero* %"$adtval_711" to %TName_Nat* - store %TName_Nat* %"$adtptr_713", %TName_Nat** %zero + %"$gasrem_1086" = load i64, i64* @_gasrem + %"$gascmp_1087" = icmp ugt i64 1, %"$gasrem_1086" + br i1 %"$gascmp_1087", label %"$out_of_gas_1088", label %"$have_gas_1089" + +"$out_of_gas_1088": ; preds = %"$have_gas_1084" + call void @_out_of_gas() + br label %"$have_gas_1089" + +"$have_gas_1089": ; preds = %"$out_of_gas_1088", %"$have_gas_1084" + %"$consume_1090" = sub i64 %"$gasrem_1086", 1 + store i64 %"$consume_1090", i64* @_gasrem + %"$adtval_1091_load" = load i8*, i8** @_execptr + %"$adtval_1091_salloc" = call i8* @_salloc(i8* %"$adtval_1091_load", i64 1) + %"$adtval_1091" = bitcast i8* %"$adtval_1091_salloc" to %CName_Zero* + %"$adtgep_1092" = getelementptr inbounds %CName_Zero, %CName_Zero* %"$adtval_1091", i32 0, i32 0 + store i8 0, i8* %"$adtgep_1092" + %"$adtptr_1093" = bitcast %CName_Zero* %"$adtval_1091" to %TName_Nat* + store %TName_Nat* %"$adtptr_1093", %TName_Nat** %zero + %"$gasrem_1094" = load i64, i64* @_gasrem + %"$gascmp_1095" = icmp ugt i64 1, %"$gasrem_1094" + br i1 %"$gascmp_1095", label %"$out_of_gas_1096", label %"$have_gas_1097" + +"$out_of_gas_1096": ; preds = %"$have_gas_1089" + call void @_out_of_gas() + br label %"$have_gas_1097" + +"$have_gas_1097": ; preds = %"$out_of_gas_1096", %"$have_gas_1089" + %"$consume_1098" = sub i64 %"$gasrem_1094", 1 + store i64 %"$consume_1098", i64* @_gasrem %one = alloca %TName_Nat* - %"$zero_714" = load %TName_Nat*, %TName_Nat** %zero - %"$adtval_715_load" = load i8*, i8** @_execptr - %"$adtval_715_salloc" = call i8* @_salloc(i8* %"$adtval_715_load", i64 9) - %"$adtval_715" = bitcast i8* %"$adtval_715_salloc" to %CName_Succ* - %"$adtgep_716" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_715", i32 0, i32 0 - store i8 1, i8* %"$adtgep_716" - %"$adtgep_717" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_715", i32 0, i32 1 - store %TName_Nat* %"$zero_714", %TName_Nat** %"$adtgep_717" - %"$adtptr_718" = bitcast %CName_Succ* %"$adtval_715" to %TName_Nat* - store %TName_Nat* %"$adtptr_718", %TName_Nat** %one + %"$gasrem_1099" = load i64, i64* @_gasrem + %"$gascmp_1100" = icmp ugt i64 1, %"$gasrem_1099" + br i1 %"$gascmp_1100", label %"$out_of_gas_1101", label %"$have_gas_1102" + +"$out_of_gas_1101": ; preds = %"$have_gas_1097" + call void @_out_of_gas() + br label %"$have_gas_1102" + +"$have_gas_1102": ; preds = %"$out_of_gas_1101", %"$have_gas_1097" + %"$consume_1103" = sub i64 %"$gasrem_1099", 1 + store i64 %"$consume_1103", i64* @_gasrem + %"$zero_1104" = load %TName_Nat*, %TName_Nat** %zero + %"$adtval_1105_load" = load i8*, i8** @_execptr + %"$adtval_1105_salloc" = call i8* @_salloc(i8* %"$adtval_1105_load", i64 9) + %"$adtval_1105" = bitcast i8* %"$adtval_1105_salloc" to %CName_Succ* + %"$adtgep_1106" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_1105", i32 0, i32 0 + store i8 1, i8* %"$adtgep_1106" + %"$adtgep_1107" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_1105", i32 0, i32 1 + store %TName_Nat* %"$zero_1104", %TName_Nat** %"$adtgep_1107" + %"$adtptr_1108" = bitcast %CName_Succ* %"$adtval_1105" to %TName_Nat* + store %TName_Nat* %"$adtptr_1108", %TName_Nat** %one + %"$gasrem_1109" = load i64, i64* @_gasrem + %"$gascmp_1110" = icmp ugt i64 1, %"$gasrem_1109" + br i1 %"$gascmp_1110", label %"$out_of_gas_1111", label %"$have_gas_1112" + +"$out_of_gas_1111": ; preds = %"$have_gas_1102" + call void @_out_of_gas() + br label %"$have_gas_1112" + +"$have_gas_1112": ; preds = %"$out_of_gas_1111", %"$have_gas_1102" + %"$consume_1113" = sub i64 %"$gasrem_1109", 1 + store i64 %"$consume_1113", i64* @_gasrem %f = alloca { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } - %"$$fundef_78_envp_719_load" = load i8*, i8** @_execptr - %"$$fundef_78_envp_719_salloc" = call i8* @_salloc(i8* %"$$fundef_78_envp_719_load", i64 24) - %"$$fundef_78_envp_719" = bitcast i8* %"$$fundef_78_envp_719_salloc" to %"$$fundef_78_env_132"* - %"$$fundef_78_env_voidp_721" = bitcast %"$$fundef_78_env_132"* %"$$fundef_78_envp_719" to i8* - %"$$fundef_78_cloval_722" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_78_env_132"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_78" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_78_env_voidp_721", 1 - %"$$fundef_78_env_iter_nat_723" = getelementptr inbounds %"$$fundef_78_env_132", %"$$fundef_78_env_132"* %"$$fundef_78_envp_719", i32 0, i32 0 - %"$iter_nat_724" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat - store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_724", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_78_env_iter_nat_723" - %"$$fundef_78_env_one_725" = getelementptr inbounds %"$$fundef_78_env_132", %"$$fundef_78_env_132"* %"$$fundef_78_envp_719", i32 0, i32 1 - %"$one_726" = load %TName_Nat*, %TName_Nat** %one - store %TName_Nat* %"$one_726", %TName_Nat** %"$$fundef_78_env_one_725" - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_78_cloval_722", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - %"$$fundef_82_envp_727_load" = load i8*, i8** @_execptr - %"$$fundef_82_envp_727_salloc" = call i8* @_salloc(i8* %"$$fundef_82_envp_727_load", i64 48) - %"$$fundef_82_envp_727" = bitcast i8* %"$$fundef_82_envp_727_salloc" to %"$$fundef_82_env_130"* - %"$$fundef_82_env_voidp_729" = bitcast %"$$fundef_82_env_130"* %"$$fundef_82_envp_727" to i8* - %"$$fundef_82_cloval_730" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_82_env_130"*, %TName_Nat*)* @"$fundef_82" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_82_env_voidp_729", 1 - %"$$fundef_82_env_f_731" = getelementptr inbounds %"$$fundef_82_env_130", %"$$fundef_82_env_130"* %"$$fundef_82_envp_727", i32 0, i32 0 - %"$f_732" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_732", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_82_env_f_731" - %"$$fundef_82_env_iter_nat_nat_733" = getelementptr inbounds %"$$fundef_82_env_130", %"$$fundef_82_env_130"* %"$$fundef_82_envp_727", i32 0, i32 1 - %"$iter_nat_nat_734" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %iter_nat_nat - store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$iter_nat_nat_734", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$$fundef_82_env_iter_nat_nat_733" - %"$$fundef_82_env_nat_succ_735" = getelementptr inbounds %"$$fundef_82_env_130", %"$$fundef_82_env_130"* %"$$fundef_82_envp_727", i32 0, i32 2 - %"$nat_succ_736" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %nat_succ - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$nat_succ_736", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_82_env_nat_succ_735" - store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_82_cloval_730", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$gasrem_1114" = load i64, i64* @_gasrem + %"$gascmp_1115" = icmp ugt i64 1, %"$gasrem_1114" + br i1 %"$gascmp_1115", label %"$out_of_gas_1116", label %"$have_gas_1117" + +"$out_of_gas_1116": ; preds = %"$have_gas_1112" + call void @_out_of_gas() + br label %"$have_gas_1117" + +"$have_gas_1117": ; preds = %"$out_of_gas_1116", %"$have_gas_1112" + %"$consume_1118" = sub i64 %"$gasrem_1114", 1 + store i64 %"$consume_1118", i64* @_gasrem + %"$$fundef_78_envp_1119_load" = load i8*, i8** @_execptr + %"$$fundef_78_envp_1119_salloc" = call i8* @_salloc(i8* %"$$fundef_78_envp_1119_load", i64 24) + %"$$fundef_78_envp_1119" = bitcast i8* %"$$fundef_78_envp_1119_salloc" to %"$$fundef_78_env_132"* + %"$$fundef_78_env_voidp_1121" = bitcast %"$$fundef_78_env_132"* %"$$fundef_78_envp_1119" to i8* + %"$$fundef_78_cloval_1122" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_78_env_132"*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })* @"$fundef_78" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*), i8* undef }, i8* %"$$fundef_78_env_voidp_1121", 1 + %"$$fundef_78_env_iter_nat_1123" = getelementptr inbounds %"$$fundef_78_env_132", %"$$fundef_78_env_132"* %"$$fundef_78_envp_1119", i32 0, i32 0 + %"$iter_nat_1124" = load { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %iter_nat + store { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$iter_nat_1124", { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_78_env_iter_nat_1123" + %"$$fundef_78_env_one_1125" = getelementptr inbounds %"$$fundef_78_env_132", %"$$fundef_78_env_132"* %"$$fundef_78_envp_1119", i32 0, i32 1 + %"$one_1126" = load %TName_Nat*, %TName_Nat** %one + store %TName_Nat* %"$one_1126", %TName_Nat** %"$$fundef_78_env_one_1125" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$$fundef_78_cloval_1122", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + %"$gasrem_1127" = load i64, i64* @_gasrem + %"$gascmp_1128" = icmp ugt i64 1, %"$gasrem_1127" + br i1 %"$gascmp_1128", label %"$out_of_gas_1129", label %"$have_gas_1130" + +"$out_of_gas_1129": ; preds = %"$have_gas_1117" + call void @_out_of_gas() + br label %"$have_gas_1130" + +"$have_gas_1130": ; preds = %"$out_of_gas_1129", %"$have_gas_1117" + %"$consume_1131" = sub i64 %"$gasrem_1127", 1 + store i64 %"$consume_1131", i64* @_gasrem + %"$$fundef_82_envp_1132_load" = load i8*, i8** @_execptr + %"$$fundef_82_envp_1132_salloc" = call i8* @_salloc(i8* %"$$fundef_82_envp_1132_load", i64 48) + %"$$fundef_82_envp_1132" = bitcast i8* %"$$fundef_82_envp_1132_salloc" to %"$$fundef_82_env_130"* + %"$$fundef_82_env_voidp_1134" = bitcast %"$$fundef_82_env_130"* %"$$fundef_82_envp_1132" to i8* + %"$$fundef_82_cloval_1135" = insertvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)* bitcast ({ %TName_Nat* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_82_env_130"*, %TName_Nat*)* @"$fundef_82" to { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_82_env_voidp_1134", 1 + %"$$fundef_82_env_f_1136" = getelementptr inbounds %"$$fundef_82_env_130", %"$$fundef_82_env_130"* %"$$fundef_82_envp_1132", i32 0, i32 0 + %"$f_1137" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %f + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } %"$f_1137", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* }* %"$$fundef_82_env_f_1136" + %"$$fundef_82_env_iter_nat_nat_1138" = getelementptr inbounds %"$$fundef_82_env_130", %"$$fundef_82_env_130"* %"$$fundef_82_envp_1132", i32 0, i32 1 + %"$iter_nat_nat_1139" = load { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }, { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %iter_nat_nat + store { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* } %"$iter_nat_nat_1139", { { { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* } (i8*, %TName_Nat*)*, i8* } (i8*, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, { %TName_Nat* (i8*, %TName_Nat*)*, i8* })*, i8* })*, i8* }* %"$$fundef_82_env_iter_nat_nat_1138" + %"$$fundef_82_env_nat_succ_1140" = getelementptr inbounds %"$$fundef_82_env_130", %"$$fundef_82_env_130"* %"$$fundef_82_envp_1132", i32 0, i32 2 + %"$nat_succ_1141" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %nat_succ + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$nat_succ_1141", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$$fundef_82_env_nat_succ_1140" + store { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$$fundef_82_cloval_1135", { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$gasrem_1142" = load i64, i64* @_gasrem + %"$gascmp_1143" = icmp ugt i64 1, %"$gasrem_1142" + br i1 %"$gascmp_1143", label %"$out_of_gas_1144", label %"$have_gas_1145" + +"$out_of_gas_1144": ; preds = %"$have_gas_1130" + call void @_out_of_gas() + br label %"$have_gas_1145" + +"$have_gas_1145": ; preds = %"$out_of_gas_1144", %"$have_gas_1130" + %"$consume_1146" = sub i64 %"$gasrem_1142", 1 + store i64 %"$consume_1146", i64* @_gasrem %uintM = alloca %Uint32 + %"$gasrem_1147" = load i64, i64* @_gasrem + %"$gascmp_1148" = icmp ugt i64 1, %"$gasrem_1147" + br i1 %"$gascmp_1148", label %"$out_of_gas_1149", label %"$have_gas_1150" + +"$out_of_gas_1149": ; preds = %"$have_gas_1145" + call void @_out_of_gas() + br label %"$have_gas_1150" + +"$have_gas_1150": ; preds = %"$out_of_gas_1149", %"$have_gas_1145" + %"$consume_1151" = sub i64 %"$gasrem_1147", 1 + store i64 %"$consume_1151", i64* @_gasrem store %Uint32 { i32 3 }, %Uint32* %uintM + %"$gasrem_1152" = load i64, i64* @_gasrem + %"$gascmp_1153" = icmp ugt i64 1, %"$gasrem_1152" + br i1 %"$gascmp_1153", label %"$out_of_gas_1154", label %"$have_gas_1155" + +"$out_of_gas_1154": ; preds = %"$have_gas_1150" + call void @_out_of_gas() + br label %"$have_gas_1155" + +"$have_gas_1155": ; preds = %"$out_of_gas_1154", %"$have_gas_1150" + %"$consume_1156" = sub i64 %"$gasrem_1152", 1 + store i64 %"$consume_1156", i64* @_gasrem %uintN = alloca %Uint32 + %"$gasrem_1157" = load i64, i64* @_gasrem + %"$gascmp_1158" = icmp ugt i64 1, %"$gasrem_1157" + br i1 %"$gascmp_1158", label %"$out_of_gas_1159", label %"$have_gas_1160" + +"$out_of_gas_1159": ; preds = %"$have_gas_1155" + call void @_out_of_gas() + br label %"$have_gas_1160" + +"$have_gas_1160": ; preds = %"$out_of_gas_1159", %"$have_gas_1155" + %"$consume_1161" = sub i64 %"$gasrem_1157", 1 + store i64 %"$consume_1161", i64* @_gasrem store %Uint32 { i32 7 }, %Uint32* %uintN + %"$gasrem_1162" = load i64, i64* @_gasrem + %"$gascmp_1163" = icmp ugt i64 1, %"$gasrem_1162" + br i1 %"$gascmp_1163", label %"$out_of_gas_1164", label %"$have_gas_1165" + +"$out_of_gas_1164": ; preds = %"$have_gas_1160" + call void @_out_of_gas() + br label %"$have_gas_1165" + +"$have_gas_1165": ; preds = %"$out_of_gas_1164", %"$have_gas_1160" + %"$consume_1166" = sub i64 %"$gasrem_1162", 1 + store i64 %"$consume_1166", i64* @_gasrem %m = alloca %TName_Nat* - %"$execptr_load_737" = load i8*, i8** @_execptr - %"$uintM_738" = load %Uint32, %Uint32* %uintM - %"$to_nat_call_739" = call %TName_Nat* @_to_nat(i8* %"$execptr_load_737", %Uint32 %"$uintM_738") - store %TName_Nat* %"$to_nat_call_739", %TName_Nat** %m + %"$execptr_load_1167" = load i8*, i8** @_execptr + %"$uintM_1168" = load %Uint32, %Uint32* %uintM + %"$to_nat_call_1169" = call %TName_Nat* @_to_nat(i8* %"$execptr_load_1167", %Uint32 %"$uintM_1168") + store %TName_Nat* %"$to_nat_call_1169", %TName_Nat** %m + %"$gasrem_1170" = load i64, i64* @_gasrem + %"$gascmp_1171" = icmp ugt i64 1, %"$gasrem_1170" + br i1 %"$gascmp_1171", label %"$out_of_gas_1172", label %"$have_gas_1173" + +"$out_of_gas_1172": ; preds = %"$have_gas_1165" + call void @_out_of_gas() + br label %"$have_gas_1173" + +"$have_gas_1173": ; preds = %"$out_of_gas_1172", %"$have_gas_1165" + %"$consume_1174" = sub i64 %"$gasrem_1170", 1 + store i64 %"$consume_1174", i64* @_gasrem %n = alloca %TName_Nat* - %"$execptr_load_740" = load i8*, i8** @_execptr - %"$uintN_741" = load %Uint32, %Uint32* %uintN - %"$to_nat_call_742" = call %TName_Nat* @_to_nat(i8* %"$execptr_load_740", %Uint32 %"$uintN_741") - store %TName_Nat* %"$to_nat_call_742", %TName_Nat** %n + %"$execptr_load_1175" = load i8*, i8** @_execptr + %"$uintN_1176" = load %Uint32, %Uint32* %uintN + %"$to_nat_call_1177" = call %TName_Nat* @_to_nat(i8* %"$execptr_load_1175", %Uint32 %"$uintN_1176") + store %TName_Nat* %"$to_nat_call_1177", %TName_Nat** %n + %"$gasrem_1178" = load i64, i64* @_gasrem + %"$gascmp_1179" = icmp ugt i64 1, %"$gasrem_1178" + br i1 %"$gascmp_1179", label %"$out_of_gas_1180", label %"$have_gas_1181" + +"$out_of_gas_1180": ; preds = %"$have_gas_1173" + call void @_out_of_gas() + br label %"$have_gas_1181" + +"$have_gas_1181": ; preds = %"$out_of_gas_1180", %"$have_gas_1173" + %"$consume_1182" = sub i64 %"$gasrem_1178", 1 + store i64 %"$consume_1182", i64* @_gasrem %ack00 = alloca %TName_Nat* + %"$gasrem_1183" = load i64, i64* @_gasrem + %"$gascmp_1184" = icmp ugt i64 1, %"$gasrem_1183" + br i1 %"$gascmp_1184", label %"$out_of_gas_1185", label %"$have_gas_1186" + +"$out_of_gas_1185": ; preds = %"$have_gas_1181" + call void @_out_of_gas() + br label %"$have_gas_1186" + +"$have_gas_1186": ; preds = %"$out_of_gas_1185", %"$have_gas_1181" + %"$consume_1187" = sub i64 %"$gasrem_1183", 1 + store i64 %"$consume_1187", i64* @_gasrem %"$ackermann_18" = alloca { %TName_Nat* (i8*, %TName_Nat*)*, i8* } - %"$ackermann_743" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann - %"$ackermann_fptr_744" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_743", 0 - %"$ackermann_envptr_745" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_743", 1 - %"$m_746" = load %TName_Nat*, %TName_Nat** %m - %"$ackermann_call_747" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_744"(i8* %"$ackermann_envptr_745", %TName_Nat* %"$m_746") - store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_747", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_18" + %"$ackermann_1188" = load { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }, { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* }* %ackermann + %"$ackermann_fptr_1189" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1188", 0 + %"$ackermann_envptr_1190" = extractvalue { { %TName_Nat* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Nat*)*, i8* } %"$ackermann_1188", 1 + %"$m_1191" = load %TName_Nat*, %TName_Nat** %m + %"$ackermann_call_1192" = call { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_fptr_1189"(i8* %"$ackermann_envptr_1190", %TName_Nat* %"$m_1191") + store { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$ackermann_call_1192", { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_18" %"$ackermann_19" = alloca %TName_Nat* - %"$$ackermann_18_748" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_18" - %"$$ackermann_18_fptr_749" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_18_748", 0 - %"$$ackermann_18_envptr_750" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_18_748", 1 - %"$n_751" = load %TName_Nat*, %TName_Nat** %n - %"$$ackermann_18_call_752" = call %TName_Nat* %"$$ackermann_18_fptr_749"(i8* %"$$ackermann_18_envptr_750", %TName_Nat* %"$n_751") - store %TName_Nat* %"$$ackermann_18_call_752", %TName_Nat** %"$ackermann_19" - %"$$ackermann_19_753" = load %TName_Nat*, %TName_Nat** %"$ackermann_19" - store %TName_Nat* %"$$ackermann_19_753", %TName_Nat** %ack00 + %"$$ackermann_18_1193" = load { %TName_Nat* (i8*, %TName_Nat*)*, i8* }, { %TName_Nat* (i8*, %TName_Nat*)*, i8* }* %"$ackermann_18" + %"$$ackermann_18_fptr_1194" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_18_1193", 0 + %"$$ackermann_18_envptr_1195" = extractvalue { %TName_Nat* (i8*, %TName_Nat*)*, i8* } %"$$ackermann_18_1193", 1 + %"$n_1196" = load %TName_Nat*, %TName_Nat** %n + %"$$ackermann_18_call_1197" = call %TName_Nat* %"$$ackermann_18_fptr_1194"(i8* %"$$ackermann_18_envptr_1195", %TName_Nat* %"$n_1196") + store %TName_Nat* %"$$ackermann_18_call_1197", %TName_Nat** %"$ackermann_19" + %"$$ackermann_19_1198" = load %TName_Nat*, %TName_Nat** %"$ackermann_19" + store %TName_Nat* %"$$ackermann_19_1198", %TName_Nat** %ack00 + %"$gasrem_1199" = load i64, i64* @_gasrem + %"$gascmp_1200" = icmp ugt i64 1, %"$gasrem_1199" + br i1 %"$gascmp_1200", label %"$out_of_gas_1201", label %"$have_gas_1202" + +"$out_of_gas_1201": ; preds = %"$have_gas_1186" + call void @_out_of_gas() + br label %"$have_gas_1202" + +"$have_gas_1202": ; preds = %"$out_of_gas_1201", %"$have_gas_1186" + %"$consume_1203" = sub i64 %"$gasrem_1199", 1 + store i64 %"$consume_1203", i64* @_gasrem %int01 = alloca %Uint32 + %"$gasrem_1204" = load i64, i64* @_gasrem + %"$gascmp_1205" = icmp ugt i64 1, %"$gasrem_1204" + br i1 %"$gascmp_1205", label %"$out_of_gas_1206", label %"$have_gas_1207" + +"$out_of_gas_1206": ; preds = %"$have_gas_1202" + call void @_out_of_gas() + br label %"$have_gas_1207" + +"$have_gas_1207": ; preds = %"$out_of_gas_1206", %"$have_gas_1202" + %"$consume_1208" = sub i64 %"$gasrem_1204", 1 + store i64 %"$consume_1208", i64* @_gasrem %"$nat_to_int_20" = alloca %Uint32 - %"$nat_to_int_754" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int - %"$nat_to_int_fptr_755" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_754", 0 - %"$nat_to_int_envptr_756" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_754", 1 - %"$ack00_757" = load %TName_Nat*, %TName_Nat** %ack00 - %"$nat_to_int_call_758" = call %Uint32 %"$nat_to_int_fptr_755"(i8* %"$nat_to_int_envptr_756", %TName_Nat* %"$ack00_757") - store %Uint32 %"$nat_to_int_call_758", %Uint32* %"$nat_to_int_20" - %"$$nat_to_int_20_759" = load %Uint32, %Uint32* %"$nat_to_int_20" - store %Uint32 %"$$nat_to_int_20_759", %Uint32* %int01 - %"$int01_760" = load %Uint32, %Uint32* %int01 - store %Uint32 %"$int01_760", %Uint32* %"$expr_51" - %"$$expr_51_761" = load %Uint32, %Uint32* %"$expr_51" - ret %Uint32 %"$$expr_51_761" + %"$nat_to_int_1209" = load { %Uint32 (i8*, %TName_Nat*)*, i8* }, { %Uint32 (i8*, %TName_Nat*)*, i8* }* @nat_to_int + %"$nat_to_int_fptr_1210" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1209", 0 + %"$nat_to_int_envptr_1211" = extractvalue { %Uint32 (i8*, %TName_Nat*)*, i8* } %"$nat_to_int_1209", 1 + %"$ack00_1212" = load %TName_Nat*, %TName_Nat** %ack00 + %"$nat_to_int_call_1213" = call %Uint32 %"$nat_to_int_fptr_1210"(i8* %"$nat_to_int_envptr_1211", %TName_Nat* %"$ack00_1212") + store %Uint32 %"$nat_to_int_call_1213", %Uint32* %"$nat_to_int_20" + %"$$nat_to_int_20_1214" = load %Uint32, %Uint32* %"$nat_to_int_20" + store %Uint32 %"$$nat_to_int_20_1214", %Uint32* %int01 + %"$gasrem_1215" = load i64, i64* @_gasrem + %"$gascmp_1216" = icmp ugt i64 1, %"$gasrem_1215" + br i1 %"$gascmp_1216", label %"$out_of_gas_1217", label %"$have_gas_1218" + +"$out_of_gas_1217": ; preds = %"$have_gas_1207" + call void @_out_of_gas() + br label %"$have_gas_1218" + +"$have_gas_1218": ; preds = %"$out_of_gas_1217", %"$have_gas_1207" + %"$consume_1219" = sub i64 %"$gasrem_1215", 1 + store i64 %"$consume_1219", i64* @_gasrem + %"$int01_1220" = load %Uint32, %Uint32* %int01 + store %Uint32 %"$int01_1220", %Uint32* %"$expr_51" + %"$$expr_51_1221" = load %Uint32, %Uint32* %"$expr_51" + ret %Uint32 %"$$expr_51_1221" } declare %TName_Nat* @_to_nat(i8*, %Uint32) @@ -1297,10 +2312,10 @@ declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_762" = call %Uint32 @"$scilla_expr_657"(i8* null) - %"$pval_763" = alloca %Uint32 - %"$memvoidcast_764" = bitcast %Uint32* %"$pval_763" to i8* - store %Uint32 %"$exprval_762", %Uint32* %"$pval_763" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_88", i8* %"$memvoidcast_764") + %"$exprval_1222" = call %Uint32 @"$scilla_expr_972"(i8* null) + %"$pval_1223" = alloca %Uint32 + %"$memvoidcast_1224" = bitcast %Uint32* %"$pval_1223" to i8* + store %Uint32 %"$exprval_1222", %Uint32* %"$pval_1223" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_88", i8* %"$memvoidcast_1224") ret void } diff --git a/testsuite/expr/ackermann_3_7.ll.result b/testsuite/expr/ackermann_3_7.ll.result index 6ffac882..ec12a248 100644 --- a/testsuite/expr/ackermann_3_7.ll.result +++ b/testsuite/expr/ackermann_3_7.ll.result @@ -1 +1,2 @@ 1021 : Uint32 +Gas remaining: 6860458 diff --git a/testsuite/expr/adt-fun.ll b/testsuite/expr/adt-fun.ll index c741ea7a..335547ba 100644 --- a/testsuite/expr/adt-fun.ll +++ b/testsuite/expr/adt-fun.ll @@ -23,6 +23,7 @@ target triple = "x86_64-pc-linux-gnu" %Int32 = type { i32 } @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_5" = global %"$TyDescrTy_PrimTyp_4" zeroinitializer @"$TyDescr_Int32_6" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_4"* @"$TyDescr_Int32_Prim_5" to i8*) } @"$TyDescr_Uint32_Prim_7" = global %"$TyDescrTy_PrimTyp_4" { i32 1, i32 0 } @@ -68,30 +69,65 @@ target triple = "x86_64-pc-linux-gnu" define internal %TName_List_Int32* @"$fundef_2"(%"$$fundef_2_env_50"* %0, %Int32 %1) { entry: %"$retval_3" = alloca %TName_List_Int32* + %"$gasrem_51" = load i64, i64* @_gasrem + %"$gascmp_52" = icmp ugt i64 1, %"$gasrem_51" + br i1 %"$gascmp_52", label %"$out_of_gas_53", label %"$have_gas_54" + +"$out_of_gas_53": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_54" + +"$have_gas_54": ; preds = %"$out_of_gas_53", %entry + %"$consume_55" = sub i64 %"$gasrem_51", 1 + store i64 %"$consume_55", i64* @_gasrem %n = alloca %TName_List_Int32* - %"$adtval_51_load" = load i8*, i8** @_execptr - %"$adtval_51_salloc" = call i8* @_salloc(i8* %"$adtval_51_load", i64 1) - %"$adtval_51" = bitcast i8* %"$adtval_51_salloc" to %CName_Nil_Int32* - %"$adtgep_52" = getelementptr inbounds %CName_Nil_Int32, %CName_Nil_Int32* %"$adtval_51", i32 0, i32 0 - store i8 1, i8* %"$adtgep_52" - %"$adtptr_53" = bitcast %CName_Nil_Int32* %"$adtval_51" to %TName_List_Int32* - store %TName_List_Int32* %"$adtptr_53", %TName_List_Int32** %n - %"$n_54" = load %TName_List_Int32*, %TName_List_Int32** %n - %"$adtval_55_load" = load i8*, i8** @_execptr - %"$adtval_55_salloc" = call i8* @_salloc(i8* %"$adtval_55_load", i64 13) - %"$adtval_55" = bitcast i8* %"$adtval_55_salloc" to %CName_Cons_Int32* - %"$adtgep_56" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_55", i32 0, i32 0 - store i8 0, i8* %"$adtgep_56" - %"$adtgep_57" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_55", i32 0, i32 1 - store %Int32 %1, %Int32* %"$adtgep_57" - %"$adtgep_58" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_55", i32 0, i32 2 - store %TName_List_Int32* %"$n_54", %TName_List_Int32** %"$adtgep_58" - %"$adtptr_59" = bitcast %CName_Cons_Int32* %"$adtval_55" to %TName_List_Int32* - store %TName_List_Int32* %"$adtptr_59", %TName_List_Int32** %"$retval_3" - %"$$retval_3_60" = load %TName_List_Int32*, %TName_List_Int32** %"$retval_3" - ret %TName_List_Int32* %"$$retval_3_60" + %"$gasrem_56" = load i64, i64* @_gasrem + %"$gascmp_57" = icmp ugt i64 1, %"$gasrem_56" + br i1 %"$gascmp_57", label %"$out_of_gas_58", label %"$have_gas_59" + +"$out_of_gas_58": ; preds = %"$have_gas_54" + call void @_out_of_gas() + br label %"$have_gas_59" + +"$have_gas_59": ; preds = %"$out_of_gas_58", %"$have_gas_54" + %"$consume_60" = sub i64 %"$gasrem_56", 1 + store i64 %"$consume_60", i64* @_gasrem + %"$adtval_61_load" = load i8*, i8** @_execptr + %"$adtval_61_salloc" = call i8* @_salloc(i8* %"$adtval_61_load", i64 1) + %"$adtval_61" = bitcast i8* %"$adtval_61_salloc" to %CName_Nil_Int32* + %"$adtgep_62" = getelementptr inbounds %CName_Nil_Int32, %CName_Nil_Int32* %"$adtval_61", i32 0, i32 0 + store i8 1, i8* %"$adtgep_62" + %"$adtptr_63" = bitcast %CName_Nil_Int32* %"$adtval_61" to %TName_List_Int32* + store %TName_List_Int32* %"$adtptr_63", %TName_List_Int32** %n + %"$gasrem_64" = load i64, i64* @_gasrem + %"$gascmp_65" = icmp ugt i64 1, %"$gasrem_64" + br i1 %"$gascmp_65", label %"$out_of_gas_66", label %"$have_gas_67" + +"$out_of_gas_66": ; preds = %"$have_gas_59" + call void @_out_of_gas() + br label %"$have_gas_67" + +"$have_gas_67": ; preds = %"$out_of_gas_66", %"$have_gas_59" + %"$consume_68" = sub i64 %"$gasrem_64", 1 + store i64 %"$consume_68", i64* @_gasrem + %"$n_69" = load %TName_List_Int32*, %TName_List_Int32** %n + %"$adtval_70_load" = load i8*, i8** @_execptr + %"$adtval_70_salloc" = call i8* @_salloc(i8* %"$adtval_70_load", i64 13) + %"$adtval_70" = bitcast i8* %"$adtval_70_salloc" to %CName_Cons_Int32* + %"$adtgep_71" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_70", i32 0, i32 0 + store i8 0, i8* %"$adtgep_71" + %"$adtgep_72" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_70", i32 0, i32 1 + store %Int32 %1, %Int32* %"$adtgep_72" + %"$adtgep_73" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_70", i32 0, i32 2 + store %TName_List_Int32* %"$n_69", %TName_List_Int32** %"$adtgep_73" + %"$adtptr_74" = bitcast %CName_Cons_Int32* %"$adtval_70" to %TName_List_Int32* + store %TName_List_Int32* %"$adtptr_74", %TName_List_Int32** %"$retval_3" + %"$$retval_3_75" = load %TName_List_Int32*, %TName_List_Int32** %"$retval_3" + ret %TName_List_Int32* %"$$retval_3_75" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) define void @_init_libs() { @@ -99,32 +135,87 @@ entry: ret void } -define internal %TName_List_Int32* @"$scilla_expr_61"(i8* %0) { +define internal %TName_List_Int32* @"$scilla_expr_76"(i8* %0) { entry: %"$expr_1" = alloca %TName_List_Int32* + %"$gasrem_77" = load i64, i64* @_gasrem + %"$gascmp_78" = icmp ugt i64 1, %"$gasrem_77" + br i1 %"$gascmp_78", label %"$out_of_gas_79", label %"$have_gas_80" + +"$out_of_gas_79": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_80" + +"$have_gas_80": ; preds = %"$out_of_gas_79", %entry + %"$consume_81" = sub i64 %"$gasrem_77", 1 + store i64 %"$consume_81", i64* @_gasrem %f = alloca { %TName_List_Int32* (i8*, %Int32)*, i8* } + %"$gasrem_82" = load i64, i64* @_gasrem + %"$gascmp_83" = icmp ugt i64 1, %"$gasrem_82" + br i1 %"$gascmp_83", label %"$out_of_gas_84", label %"$have_gas_85" + +"$out_of_gas_84": ; preds = %"$have_gas_80" + call void @_out_of_gas() + br label %"$have_gas_85" + +"$have_gas_85": ; preds = %"$out_of_gas_84", %"$have_gas_80" + %"$consume_86" = sub i64 %"$gasrem_82", 1 + store i64 %"$consume_86", i64* @_gasrem store { %TName_List_Int32* (i8*, %Int32)*, i8* } { %TName_List_Int32* (i8*, %Int32)* bitcast (%TName_List_Int32* (%"$$fundef_2_env_50"*, %Int32)* @"$fundef_2" to %TName_List_Int32* (i8*, %Int32)*), i8* null }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %f + %"$gasrem_90" = load i64, i64* @_gasrem + %"$gascmp_91" = icmp ugt i64 1, %"$gasrem_90" + br i1 %"$gascmp_91", label %"$out_of_gas_92", label %"$have_gas_93" + +"$out_of_gas_92": ; preds = %"$have_gas_85" + call void @_out_of_gas() + br label %"$have_gas_93" + +"$have_gas_93": ; preds = %"$out_of_gas_92", %"$have_gas_85" + %"$consume_94" = sub i64 %"$gasrem_90", 1 + store i64 %"$consume_94", i64* @_gasrem %i = alloca %Int32 + %"$gasrem_95" = load i64, i64* @_gasrem + %"$gascmp_96" = icmp ugt i64 1, %"$gasrem_95" + br i1 %"$gascmp_96", label %"$out_of_gas_97", label %"$have_gas_98" + +"$out_of_gas_97": ; preds = %"$have_gas_93" + call void @_out_of_gas() + br label %"$have_gas_98" + +"$have_gas_98": ; preds = %"$out_of_gas_97", %"$have_gas_93" + %"$consume_99" = sub i64 %"$gasrem_95", 1 + store i64 %"$consume_99", i64* @_gasrem store %Int32 zeroinitializer, %Int32* %i + %"$gasrem_100" = load i64, i64* @_gasrem + %"$gascmp_101" = icmp ugt i64 1, %"$gasrem_100" + br i1 %"$gascmp_101", label %"$out_of_gas_102", label %"$have_gas_103" + +"$out_of_gas_102": ; preds = %"$have_gas_98" + call void @_out_of_gas() + br label %"$have_gas_103" + +"$have_gas_103": ; preds = %"$out_of_gas_102", %"$have_gas_98" + %"$consume_104" = sub i64 %"$gasrem_100", 1 + store i64 %"$consume_104", i64* @_gasrem %"$f_0" = alloca %TName_List_Int32* - %"$f_65" = load { %TName_List_Int32* (i8*, %Int32)*, i8* }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %f - %"$f_fptr_66" = extractvalue { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f_65", 0 - %"$f_envptr_67" = extractvalue { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f_65", 1 - %"$i_68" = load %Int32, %Int32* %i - %"$f_call_69" = call %TName_List_Int32* %"$f_fptr_66"(i8* %"$f_envptr_67", %Int32 %"$i_68") - store %TName_List_Int32* %"$f_call_69", %TName_List_Int32** %"$f_0" - %"$$f_0_70" = load %TName_List_Int32*, %TName_List_Int32** %"$f_0" - store %TName_List_Int32* %"$$f_0_70", %TName_List_Int32** %"$expr_1" - %"$$expr_1_71" = load %TName_List_Int32*, %TName_List_Int32** %"$expr_1" - ret %TName_List_Int32* %"$$expr_1_71" + %"$f_105" = load { %TName_List_Int32* (i8*, %Int32)*, i8* }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %f + %"$f_fptr_106" = extractvalue { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f_105", 0 + %"$f_envptr_107" = extractvalue { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f_105", 1 + %"$i_108" = load %Int32, %Int32* %i + %"$f_call_109" = call %TName_List_Int32* %"$f_fptr_106"(i8* %"$f_envptr_107", %Int32 %"$i_108") + store %TName_List_Int32* %"$f_call_109", %TName_List_Int32** %"$f_0" + %"$$f_0_110" = load %TName_List_Int32*, %TName_List_Int32** %"$f_0" + store %TName_List_Int32* %"$$f_0_110", %TName_List_Int32** %"$expr_1" + %"$$expr_1_111" = load %TName_List_Int32*, %TName_List_Int32** %"$expr_1" + ret %TName_List_Int32* %"$$expr_1_111" } declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_72" = call %TName_List_Int32* @"$scilla_expr_61"(i8* null) - %"$memvoidcast_73" = bitcast %TName_List_Int32* %"$exprval_72" to i8* - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Int32_36", i8* %"$memvoidcast_73") + %"$exprval_112" = call %TName_List_Int32* @"$scilla_expr_76"(i8* null) + %"$memvoidcast_113" = bitcast %TName_List_Int32* %"$exprval_112" to i8* + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Int32_36", i8* %"$memvoidcast_113") ret void } diff --git a/testsuite/expr/adt-fun.ll.result b/testsuite/expr/adt-fun.ll.result index 26f1bbf4..18d34df5 100644 --- a/testsuite/expr/adt-fun.ll.result +++ b/testsuite/expr/adt-fun.ll.result @@ -1 +1,2 @@ Cons(0 : Int32)(Nil : List (Int32)) : List (Int32) +Gas remaining: 9999992 diff --git a/testsuite/expr/builtin_add_int256.ll b/testsuite/expr/builtin_add_int256.ll index 07f4b621..54b8c544 100644 --- a/testsuite/expr/builtin_add_int256.ll +++ b/testsuite/expr/builtin_add_int256.ll @@ -11,6 +11,7 @@ target triple = "x86_64-pc-linux-gnu" %Int256 = type { i256 } @_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 } @@ -48,34 +49,80 @@ entry: define internal void @"$scilla_expr_34"(i8* %0, %Int256* %1) { entry: %"$expr_0" = alloca %Int256 + %"$gasrem_35" = load i64, i64* @_gasrem + %"$gascmp_36" = icmp ugt i64 1, %"$gasrem_35" + br i1 %"$gascmp_36", label %"$out_of_gas_37", label %"$have_gas_38" + +"$out_of_gas_37": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_38" + +"$have_gas_38": ; preds = %"$out_of_gas_37", %entry + %"$consume_39" = sub i64 %"$gasrem_35", 1 + store i64 %"$consume_39", i64* @_gasrem %one = alloca %Int256 + %"$gasrem_40" = load i64, i64* @_gasrem + %"$gascmp_41" = icmp ugt i64 1, %"$gasrem_40" + br i1 %"$gascmp_41", label %"$out_of_gas_42", label %"$have_gas_43" + +"$out_of_gas_42": ; preds = %"$have_gas_38" + call void @_out_of_gas() + br label %"$have_gas_43" + +"$have_gas_43": ; preds = %"$out_of_gas_42", %"$have_gas_38" + %"$consume_44" = sub i64 %"$gasrem_40", 1 + store i64 %"$consume_44", i64* @_gasrem store %Int256 { i256 -1 }, %Int256* %one + %"$gasrem_45" = load i64, i64* @_gasrem + %"$gascmp_46" = icmp ugt i64 1, %"$gasrem_45" + br i1 %"$gascmp_46", label %"$out_of_gas_47", label %"$have_gas_48" + +"$out_of_gas_47": ; preds = %"$have_gas_43" + call void @_out_of_gas() + br label %"$have_gas_48" + +"$have_gas_48": ; preds = %"$out_of_gas_47", %"$have_gas_43" + %"$consume_49" = sub i64 %"$gasrem_45", 1 + store i64 %"$consume_49", i64* @_gasrem %two = alloca %Int256 + %"$gasrem_50" = load i64, i64* @_gasrem + %"$gascmp_51" = icmp ugt i64 1, %"$gasrem_50" + br i1 %"$gascmp_51", label %"$out_of_gas_52", label %"$have_gas_53" + +"$out_of_gas_52": ; preds = %"$have_gas_48" + call void @_out_of_gas() + br label %"$have_gas_53" + +"$have_gas_53": ; preds = %"$out_of_gas_52", %"$have_gas_48" + %"$consume_54" = sub i64 %"$gasrem_50", 1 + store i64 %"$consume_54", i64* @_gasrem store %Int256 { i256 2 }, %Int256* %two - %"$execptr_load_35" = load i8*, i8** @_execptr - %"$add_one_36" = alloca %Int256 - %"$one_37" = load %Int256, %Int256* %one - store %Int256 %"$one_37", %Int256* %"$add_one_36" - %"$add_two_38" = alloca %Int256 - %"$two_39" = load %Int256, %Int256* %two - store %Int256 %"$two_39", %Int256* %"$add_two_38" - %"$add_call_40" = call %Int256* @_add_Int256(i8* %"$execptr_load_35", %Int256* %"$add_one_36", %Int256* %"$add_two_38") - %"$add_41" = load %Int256, %Int256* %"$add_call_40" - store %Int256 %"$add_41", %Int256* %"$expr_0" - %"$$expr_0_42" = load %Int256, %Int256* %"$expr_0" - store %Int256 %"$$expr_0_42", %Int256* %1 + %"$execptr_load_55" = load i8*, i8** @_execptr + %"$add_one_56" = alloca %Int256 + %"$one_57" = load %Int256, %Int256* %one + store %Int256 %"$one_57", %Int256* %"$add_one_56" + %"$add_two_58" = alloca %Int256 + %"$two_59" = load %Int256, %Int256* %two + store %Int256 %"$two_59", %Int256* %"$add_two_58" + %"$add_call_60" = call %Int256* @_add_Int256(i8* %"$execptr_load_55", %Int256* %"$add_one_56", %Int256* %"$add_two_58") + %"$add_61" = load %Int256, %Int256* %"$add_call_60" + store %Int256 %"$add_61", %Int256* %"$expr_0" + %"$$expr_0_62" = load %Int256, %Int256* %"$expr_0" + store %Int256 %"$$expr_0_62", %Int256* %1 ret void } +declare void @_out_of_gas() + declare %Int256* @_add_Int256(i8*, %Int256*, %Int256*) declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$mainval_43" = alloca %Int256 - %"$memvoidcast_44" = bitcast %Int256* %"$mainval_43" to i8* - call void @"$scilla_expr_34"(i8* null, %Int256* %"$mainval_43") - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int256_15", i8* %"$memvoidcast_44") + %"$mainval_63" = alloca %Int256 + %"$memvoidcast_64" = bitcast %Int256* %"$mainval_63" to i8* + call void @"$scilla_expr_34"(i8* null, %Int256* %"$mainval_63") + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int256_15", i8* %"$memvoidcast_64") ret void } diff --git a/testsuite/expr/builtin_add_int256.ll.result b/testsuite/expr/builtin_add_int256.ll.result index 41094676..05933725 100644 --- a/testsuite/expr/builtin_add_int256.ll.result +++ b/testsuite/expr/builtin_add_int256.ll.result @@ -1 +1,2 @@ 1 : Int256 +Gas remaining: 9999996 diff --git a/testsuite/expr/builtin_add_int32.ll b/testsuite/expr/builtin_add_int32.ll index 52efa3d4..699ac92b 100644 --- a/testsuite/expr/builtin_add_int32.ll +++ b/testsuite/expr/builtin_add_int32.ll @@ -11,6 +11,7 @@ target triple = "x86_64-pc-linux-gnu" %Int32 = type { i32 } @_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 } @@ -48,28 +49,74 @@ entry: define internal %Int32 @"$scilla_expr_34"(i8* %0) { entry: %"$expr_0" = alloca %Int32 + %"$gasrem_35" = load i64, i64* @_gasrem + %"$gascmp_36" = icmp ugt i64 1, %"$gasrem_35" + br i1 %"$gascmp_36", label %"$out_of_gas_37", label %"$have_gas_38" + +"$out_of_gas_37": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_38" + +"$have_gas_38": ; preds = %"$out_of_gas_37", %entry + %"$consume_39" = sub i64 %"$gasrem_35", 1 + store i64 %"$consume_39", i64* @_gasrem %one = alloca %Int32 + %"$gasrem_40" = load i64, i64* @_gasrem + %"$gascmp_41" = icmp ugt i64 1, %"$gasrem_40" + br i1 %"$gascmp_41", label %"$out_of_gas_42", label %"$have_gas_43" + +"$out_of_gas_42": ; preds = %"$have_gas_38" + call void @_out_of_gas() + br label %"$have_gas_43" + +"$have_gas_43": ; preds = %"$out_of_gas_42", %"$have_gas_38" + %"$consume_44" = sub i64 %"$gasrem_40", 1 + store i64 %"$consume_44", i64* @_gasrem store %Int32 { i32 1 }, %Int32* %one + %"$gasrem_45" = load i64, i64* @_gasrem + %"$gascmp_46" = icmp ugt i64 1, %"$gasrem_45" + br i1 %"$gascmp_46", label %"$out_of_gas_47", label %"$have_gas_48" + +"$out_of_gas_47": ; preds = %"$have_gas_43" + call void @_out_of_gas() + br label %"$have_gas_48" + +"$have_gas_48": ; preds = %"$out_of_gas_47", %"$have_gas_43" + %"$consume_49" = sub i64 %"$gasrem_45", 1 + store i64 %"$consume_49", i64* @_gasrem %two = alloca %Int32 + %"$gasrem_50" = load i64, i64* @_gasrem + %"$gascmp_51" = icmp ugt i64 1, %"$gasrem_50" + br i1 %"$gascmp_51", label %"$out_of_gas_52", label %"$have_gas_53" + +"$out_of_gas_52": ; preds = %"$have_gas_48" + call void @_out_of_gas() + br label %"$have_gas_53" + +"$have_gas_53": ; preds = %"$out_of_gas_52", %"$have_gas_48" + %"$consume_54" = sub i64 %"$gasrem_50", 1 + store i64 %"$consume_54", i64* @_gasrem store %Int32 { i32 2 }, %Int32* %two - %"$one_35" = load %Int32, %Int32* %one - %"$two_36" = load %Int32, %Int32* %two - %"$add_call_37" = call %Int32 @_add_Int32(%Int32 %"$one_35", %Int32 %"$two_36") - store %Int32 %"$add_call_37", %Int32* %"$expr_0" - %"$$expr_0_38" = load %Int32, %Int32* %"$expr_0" - ret %Int32 %"$$expr_0_38" + %"$one_55" = load %Int32, %Int32* %one + %"$two_56" = load %Int32, %Int32* %two + %"$add_call_57" = call %Int32 @_add_Int32(%Int32 %"$one_55", %Int32 %"$two_56") + store %Int32 %"$add_call_57", %Int32* %"$expr_0" + %"$$expr_0_58" = load %Int32, %Int32* %"$expr_0" + ret %Int32 %"$$expr_0_58" } +declare void @_out_of_gas() + declare %Int32 @_add_Int32(%Int32, %Int32) declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_39" = call %Int32 @"$scilla_expr_34"(i8* null) - %"$pval_40" = alloca %Int32 - %"$memvoidcast_41" = bitcast %Int32* %"$pval_40" to i8* - store %Int32 %"$exprval_39", %Int32* %"$pval_40" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_3", i8* %"$memvoidcast_41") + %"$exprval_59" = call %Int32 @"$scilla_expr_34"(i8* null) + %"$pval_60" = alloca %Int32 + %"$memvoidcast_61" = bitcast %Int32* %"$pval_60" to i8* + store %Int32 %"$exprval_59", %Int32* %"$pval_60" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_3", i8* %"$memvoidcast_61") ret void } diff --git a/testsuite/expr/builtin_add_int32.ll.result b/testsuite/expr/builtin_add_int32.ll.result index 9e8ae208..1d678c98 100644 --- a/testsuite/expr/builtin_add_int32.ll.result +++ b/testsuite/expr/builtin_add_int32.ll.result @@ -1 +1,2 @@ 3 : Int32 +Gas remaining: 9999996 diff --git a/testsuite/expr/builtin_add_uint256.ll b/testsuite/expr/builtin_add_uint256.ll index f9cda98b..9d02923f 100644 --- a/testsuite/expr/builtin_add_uint256.ll +++ b/testsuite/expr/builtin_add_uint256.ll @@ -11,6 +11,7 @@ target triple = "x86_64-pc-linux-gnu" %Uint256 = type { i256 } @_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 } @@ -48,34 +49,80 @@ entry: define internal void @"$scilla_expr_34"(i8* %0, %Uint256* %1) { entry: %"$expr_0" = alloca %Uint256 + %"$gasrem_35" = load i64, i64* @_gasrem + %"$gascmp_36" = icmp ugt i64 1, %"$gasrem_35" + br i1 %"$gascmp_36", label %"$out_of_gas_37", label %"$have_gas_38" + +"$out_of_gas_37": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_38" + +"$have_gas_38": ; preds = %"$out_of_gas_37", %entry + %"$consume_39" = sub i64 %"$gasrem_35", 1 + store i64 %"$consume_39", i64* @_gasrem %one = alloca %Uint256 + %"$gasrem_40" = load i64, i64* @_gasrem + %"$gascmp_41" = icmp ugt i64 1, %"$gasrem_40" + br i1 %"$gascmp_41", label %"$out_of_gas_42", label %"$have_gas_43" + +"$out_of_gas_42": ; preds = %"$have_gas_38" + call void @_out_of_gas() + br label %"$have_gas_43" + +"$have_gas_43": ; preds = %"$out_of_gas_42", %"$have_gas_38" + %"$consume_44" = sub i64 %"$gasrem_40", 1 + store i64 %"$consume_44", i64* @_gasrem store %Uint256 { i256 10000000 }, %Uint256* %one + %"$gasrem_45" = load i64, i64* @_gasrem + %"$gascmp_46" = icmp ugt i64 1, %"$gasrem_45" + br i1 %"$gascmp_46", label %"$out_of_gas_47", label %"$have_gas_48" + +"$out_of_gas_47": ; preds = %"$have_gas_43" + call void @_out_of_gas() + br label %"$have_gas_48" + +"$have_gas_48": ; preds = %"$out_of_gas_47", %"$have_gas_43" + %"$consume_49" = sub i64 %"$gasrem_45", 1 + store i64 %"$consume_49", i64* @_gasrem %two = alloca %Uint256 + %"$gasrem_50" = load i64, i64* @_gasrem + %"$gascmp_51" = icmp ugt i64 1, %"$gasrem_50" + br i1 %"$gascmp_51", label %"$out_of_gas_52", label %"$have_gas_53" + +"$out_of_gas_52": ; preds = %"$have_gas_48" + call void @_out_of_gas() + br label %"$have_gas_53" + +"$have_gas_53": ; preds = %"$out_of_gas_52", %"$have_gas_48" + %"$consume_54" = sub i64 %"$gasrem_50", 1 + store i64 %"$consume_54", i64* @_gasrem store %Uint256 { i256 111 }, %Uint256* %two - %"$execptr_load_35" = load i8*, i8** @_execptr - %"$add_one_36" = alloca %Uint256 - %"$one_37" = load %Uint256, %Uint256* %one - store %Uint256 %"$one_37", %Uint256* %"$add_one_36" - %"$add_two_38" = alloca %Uint256 - %"$two_39" = load %Uint256, %Uint256* %two - store %Uint256 %"$two_39", %Uint256* %"$add_two_38" - %"$add_call_40" = call %Uint256* @_add_Uint256(i8* %"$execptr_load_35", %Uint256* %"$add_one_36", %Uint256* %"$add_two_38") - %"$add_41" = load %Uint256, %Uint256* %"$add_call_40" - store %Uint256 %"$add_41", %Uint256* %"$expr_0" - %"$$expr_0_42" = load %Uint256, %Uint256* %"$expr_0" - store %Uint256 %"$$expr_0_42", %Uint256* %1 + %"$execptr_load_55" = load i8*, i8** @_execptr + %"$add_one_56" = alloca %Uint256 + %"$one_57" = load %Uint256, %Uint256* %one + store %Uint256 %"$one_57", %Uint256* %"$add_one_56" + %"$add_two_58" = alloca %Uint256 + %"$two_59" = load %Uint256, %Uint256* %two + store %Uint256 %"$two_59", %Uint256* %"$add_two_58" + %"$add_call_60" = call %Uint256* @_add_Uint256(i8* %"$execptr_load_55", %Uint256* %"$add_one_56", %Uint256* %"$add_two_58") + %"$add_61" = load %Uint256, %Uint256* %"$add_call_60" + store %Uint256 %"$add_61", %Uint256* %"$expr_0" + %"$$expr_0_62" = load %Uint256, %Uint256* %"$expr_0" + store %Uint256 %"$$expr_0_62", %Uint256* %1 ret void } +declare void @_out_of_gas() + declare %Uint256* @_add_Uint256(i8*, %Uint256*, %Uint256*) declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$mainval_43" = alloca %Uint256 - %"$memvoidcast_44" = bitcast %Uint256* %"$mainval_43" to i8* - call void @"$scilla_expr_34"(i8* null, %Uint256* %"$mainval_43") - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint256_17", i8* %"$memvoidcast_44") + %"$mainval_63" = alloca %Uint256 + %"$memvoidcast_64" = bitcast %Uint256* %"$mainval_63" to i8* + call void @"$scilla_expr_34"(i8* null, %Uint256* %"$mainval_63") + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint256_17", i8* %"$memvoidcast_64") ret void } diff --git a/testsuite/expr/builtin_add_uint256.ll.result b/testsuite/expr/builtin_add_uint256.ll.result index e8630a15..b99ad56d 100644 --- a/testsuite/expr/builtin_add_uint256.ll.result +++ b/testsuite/expr/builtin_add_uint256.ll.result @@ -1 +1,2 @@ 10000111 : Uint256 +Gas remaining: 9999996 diff --git a/testsuite/expr/builtin_add_uint32.ll b/testsuite/expr/builtin_add_uint32.ll index 8091922d..3831cfc4 100644 --- a/testsuite/expr/builtin_add_uint32.ll +++ b/testsuite/expr/builtin_add_uint32.ll @@ -11,6 +11,7 @@ target triple = "x86_64-pc-linux-gnu" %Uint32 = type { i32 } @_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 } @@ -48,28 +49,74 @@ entry: define internal %Uint32 @"$scilla_expr_34"(i8* %0) { entry: %"$expr_0" = alloca %Uint32 + %"$gasrem_35" = load i64, i64* @_gasrem + %"$gascmp_36" = icmp ugt i64 1, %"$gasrem_35" + br i1 %"$gascmp_36", label %"$out_of_gas_37", label %"$have_gas_38" + +"$out_of_gas_37": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_38" + +"$have_gas_38": ; preds = %"$out_of_gas_37", %entry + %"$consume_39" = sub i64 %"$gasrem_35", 1 + store i64 %"$consume_39", i64* @_gasrem %one = alloca %Uint32 + %"$gasrem_40" = load i64, i64* @_gasrem + %"$gascmp_41" = icmp ugt i64 1, %"$gasrem_40" + br i1 %"$gascmp_41", label %"$out_of_gas_42", label %"$have_gas_43" + +"$out_of_gas_42": ; preds = %"$have_gas_38" + call void @_out_of_gas() + br label %"$have_gas_43" + +"$have_gas_43": ; preds = %"$out_of_gas_42", %"$have_gas_38" + %"$consume_44" = sub i64 %"$gasrem_40", 1 + store i64 %"$consume_44", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %one + %"$gasrem_45" = load i64, i64* @_gasrem + %"$gascmp_46" = icmp ugt i64 1, %"$gasrem_45" + br i1 %"$gascmp_46", label %"$out_of_gas_47", label %"$have_gas_48" + +"$out_of_gas_47": ; preds = %"$have_gas_43" + call void @_out_of_gas() + br label %"$have_gas_48" + +"$have_gas_48": ; preds = %"$out_of_gas_47", %"$have_gas_43" + %"$consume_49" = sub i64 %"$gasrem_45", 1 + store i64 %"$consume_49", i64* @_gasrem %two = alloca %Uint32 + %"$gasrem_50" = load i64, i64* @_gasrem + %"$gascmp_51" = icmp ugt i64 1, %"$gasrem_50" + br i1 %"$gascmp_51", label %"$out_of_gas_52", label %"$have_gas_53" + +"$out_of_gas_52": ; preds = %"$have_gas_48" + call void @_out_of_gas() + br label %"$have_gas_53" + +"$have_gas_53": ; preds = %"$out_of_gas_52", %"$have_gas_48" + %"$consume_54" = sub i64 %"$gasrem_50", 1 + store i64 %"$consume_54", i64* @_gasrem store %Uint32 { i32 2 }, %Uint32* %two - %"$one_35" = load %Uint32, %Uint32* %one - %"$two_36" = load %Uint32, %Uint32* %two - %"$add_call_37" = call %Uint32 @_add_Uint32(%Uint32 %"$one_35", %Uint32 %"$two_36") - store %Uint32 %"$add_call_37", %Uint32* %"$expr_0" - %"$$expr_0_38" = load %Uint32, %Uint32* %"$expr_0" - ret %Uint32 %"$$expr_0_38" + %"$one_55" = load %Uint32, %Uint32* %one + %"$two_56" = load %Uint32, %Uint32* %two + %"$add_call_57" = call %Uint32 @_add_Uint32(%Uint32 %"$one_55", %Uint32 %"$two_56") + store %Uint32 %"$add_call_57", %Uint32* %"$expr_0" + %"$$expr_0_58" = load %Uint32, %Uint32* %"$expr_0" + ret %Uint32 %"$$expr_0_58" } +declare void @_out_of_gas() + declare %Uint32 @_add_Uint32(%Uint32, %Uint32) declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_39" = call %Uint32 @"$scilla_expr_34"(i8* null) - %"$pval_40" = alloca %Uint32 - %"$memvoidcast_41" = bitcast %Uint32* %"$pval_40" to i8* - store %Uint32 %"$exprval_39", %Uint32* %"$pval_40" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_5", i8* %"$memvoidcast_41") + %"$exprval_59" = call %Uint32 @"$scilla_expr_34"(i8* null) + %"$pval_60" = alloca %Uint32 + %"$memvoidcast_61" = bitcast %Uint32* %"$pval_60" to i8* + store %Uint32 %"$exprval_59", %Uint32* %"$pval_60" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_5", i8* %"$memvoidcast_61") ret void } diff --git a/testsuite/expr/builtin_add_uint32.ll.result b/testsuite/expr/builtin_add_uint32.ll.result index 07dd9506..9763ac68 100644 --- a/testsuite/expr/builtin_add_uint32.ll.result +++ b/testsuite/expr/builtin_add_uint32.ll.result @@ -1 +1,2 @@ 3 : Uint32 +Gas remaining: 9999996 diff --git a/testsuite/expr/builtin_concat.ll b/testsuite/expr/builtin_concat.ll index 72daf8a7..9509d8a3 100644 --- a/testsuite/expr/builtin_concat.ll +++ b/testsuite/expr/builtin_concat.ll @@ -26,6 +26,7 @@ target triple = "x86_64-pc-linux-gnu" %String = type { i8*, i32 } @_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 } @@ -72,8 +73,8 @@ target triple = "x86_64-pc-linux-gnu" @"$TyDescr_Pair_String_ByStr22_ADTTyp_Specl_49" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_38" { %_TyDescrTy_Typ** getelementptr inbounds ([2 x %_TyDescrTy_Typ*], [2 x %_TyDescrTy_Typ*]* @"$TyDescr_Pair_String_ByStr22_ADTTyp_Specl_m_TArgs_48", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_40"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Constr_40"*], [1 x %"$TyDescrTy_ADTTyp_Constr_40"*]* @"$TyDescr_Pair_String_ByStr22_ADTTyp_Specl_m_constrs_47", i32 0, i32 0), %"$TyDescrTy_ADTTyp_39"* @"$TyDescr_Pair_ADTTyp_43" } @"$TyDescr_Pair_ADTTyp_m_specls_50" = unnamed_addr constant [1 x %"$TyDescrTy_ADTTyp_Specl_38"*] [%"$TyDescrTy_ADTTyp_Specl_38"* @"$TyDescr_Pair_String_ByStr22_ADTTyp_Specl_49"] @"$TyDescr_ADT_Pair_51" = unnamed_addr constant [4 x i8] c"Pair" -@"$stringlit_53" = unnamed_addr constant [5 x i8] c"hello" -@"$stringlit_54" = unnamed_addr constant [5 x i8] c"world" +@"$stringlit_63" = unnamed_addr constant [5 x i8] c"hello" +@"$stringlit_74" = unnamed_addr constant [5 x i8] c"world" define void @_init_libs() { entry: @@ -83,67 +84,223 @@ entry: define internal %TName_Pair_String_ByStr22* @"$scilla_expr_52"(i8* %0) { entry: %"$expr_0" = alloca %TName_Pair_String_ByStr22* + %"$gasrem_53" = load i64, i64* @_gasrem + %"$gascmp_54" = icmp ugt i64 1, %"$gasrem_53" + br i1 %"$gascmp_54", label %"$out_of_gas_55", label %"$have_gas_56" + +"$out_of_gas_55": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_56" + +"$have_gas_56": ; preds = %"$out_of_gas_55", %entry + %"$consume_57" = sub i64 %"$gasrem_53", 1 + store i64 %"$consume_57", i64* @_gasrem %a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_53", i32 0, i32 0), i32 5 }, %String* %a + %"$gasrem_58" = load i64, i64* @_gasrem + %"$gascmp_59" = icmp ugt i64 1, %"$gasrem_58" + br i1 %"$gascmp_59", label %"$out_of_gas_60", label %"$have_gas_61" + +"$out_of_gas_60": ; preds = %"$have_gas_56" + call void @_out_of_gas() + br label %"$have_gas_61" + +"$have_gas_61": ; preds = %"$out_of_gas_60", %"$have_gas_56" + %"$consume_62" = sub i64 %"$gasrem_58", 1 + store i64 %"$consume_62", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_63", i32 0, i32 0), i32 5 }, %String* %a + %"$gasrem_64" = load i64, i64* @_gasrem + %"$gascmp_65" = icmp ugt i64 1, %"$gasrem_64" + br i1 %"$gascmp_65", label %"$out_of_gas_66", label %"$have_gas_67" + +"$out_of_gas_66": ; preds = %"$have_gas_61" + call void @_out_of_gas() + br label %"$have_gas_67" + +"$have_gas_67": ; preds = %"$out_of_gas_66", %"$have_gas_61" + %"$consume_68" = sub i64 %"$gasrem_64", 1 + store i64 %"$consume_68", i64* @_gasrem %b = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_54", i32 0, i32 0), i32 5 }, %String* %b + %"$gasrem_69" = load i64, i64* @_gasrem + %"$gascmp_70" = icmp ugt i64 1, %"$gasrem_69" + br i1 %"$gascmp_70", label %"$out_of_gas_71", label %"$have_gas_72" + +"$out_of_gas_71": ; preds = %"$have_gas_67" + call void @_out_of_gas() + br label %"$have_gas_72" + +"$have_gas_72": ; preds = %"$out_of_gas_71", %"$have_gas_67" + %"$consume_73" = sub i64 %"$gasrem_69", 1 + store i64 %"$consume_73", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_74", i32 0, i32 0), i32 5 }, %String* %b + %"$gasrem_75" = load i64, i64* @_gasrem + %"$gascmp_76" = icmp ugt i64 1, %"$gasrem_75" + br i1 %"$gascmp_76", label %"$out_of_gas_77", label %"$have_gas_78" + +"$out_of_gas_77": ; preds = %"$have_gas_72" + call void @_out_of_gas() + br label %"$have_gas_78" + +"$have_gas_78": ; preds = %"$out_of_gas_77", %"$have_gas_72" + %"$consume_79" = sub i64 %"$gasrem_75", 1 + store i64 %"$consume_79", i64* @_gasrem %str = alloca %String - %"$execptr_load_55" = load i8*, i8** @_execptr - %"$a_56" = load %String, %String* %a - %"$b_57" = load %String, %String* %b - %"$concat_call_58" = call %String @_concat_String(i8* %"$execptr_load_55", %String %"$a_56", %String %"$b_57") - store %String %"$concat_call_58", %String* %str + %"$execptr_load_80" = load i8*, i8** @_execptr + %"$a_81" = load %String, %String* %a + %"$b_82" = load %String, %String* %b + %"$concat_call_83" = call %String @_concat_String(i8* %"$execptr_load_80", %String %"$a_81", %String %"$b_82") + store %String %"$concat_call_83", %String* %str + %"$gasrem_84" = load i64, i64* @_gasrem + %"$gascmp_85" = icmp ugt i64 1, %"$gasrem_84" + br i1 %"$gascmp_85", label %"$out_of_gas_86", label %"$have_gas_87" + +"$out_of_gas_86": ; preds = %"$have_gas_78" + call void @_out_of_gas() + br label %"$have_gas_87" + +"$have_gas_87": ; preds = %"$out_of_gas_86", %"$have_gas_78" + %"$consume_88" = sub i64 %"$gasrem_84", 1 + store i64 %"$consume_88", i64* @_gasrem %x = alloca [2 x i8] + %"$gasrem_89" = load i64, i64* @_gasrem + %"$gascmp_90" = icmp ugt i64 1, %"$gasrem_89" + br i1 %"$gascmp_90", label %"$out_of_gas_91", label %"$have_gas_92" + +"$out_of_gas_91": ; preds = %"$have_gas_87" + call void @_out_of_gas() + br label %"$have_gas_92" + +"$have_gas_92": ; preds = %"$out_of_gas_91", %"$have_gas_87" + %"$consume_93" = sub i64 %"$gasrem_89", 1 + store i64 %"$consume_93", i64* @_gasrem store [2 x i8] c"\11\FF", [2 x i8]* %x + %"$gasrem_94" = load i64, i64* @_gasrem + %"$gascmp_95" = icmp ugt i64 1, %"$gasrem_94" + br i1 %"$gascmp_95", label %"$out_of_gas_96", label %"$have_gas_97" + +"$out_of_gas_96": ; preds = %"$have_gas_92" + call void @_out_of_gas() + br label %"$have_gas_97" + +"$have_gas_97": ; preds = %"$out_of_gas_96", %"$have_gas_92" + %"$consume_98" = sub i64 %"$gasrem_94", 1 + store i64 %"$consume_98", i64* @_gasrem %y = alloca [2 x i8] + %"$gasrem_99" = load i64, i64* @_gasrem + %"$gascmp_100" = icmp ugt i64 1, %"$gasrem_99" + br i1 %"$gascmp_100", label %"$out_of_gas_101", label %"$have_gas_102" + +"$out_of_gas_101": ; preds = %"$have_gas_97" + call void @_out_of_gas() + br label %"$have_gas_102" + +"$have_gas_102": ; preds = %"$out_of_gas_101", %"$have_gas_97" + %"$consume_103" = sub i64 %"$gasrem_99", 1 + store i64 %"$consume_103", i64* @_gasrem store [2 x i8] c"\FF\11", [2 x i8]* %y + %"$gasrem_104" = load i64, i64* @_gasrem + %"$gascmp_105" = icmp ugt i64 1, %"$gasrem_104" + br i1 %"$gascmp_105", label %"$out_of_gas_106", label %"$have_gas_107" + +"$out_of_gas_106": ; preds = %"$have_gas_102" + call void @_out_of_gas() + br label %"$have_gas_107" + +"$have_gas_107": ; preds = %"$out_of_gas_106", %"$have_gas_102" + %"$consume_108" = sub i64 %"$gasrem_104", 1 + store i64 %"$consume_108", i64* @_gasrem %z = alloca [4 x i8] - %"$execptr_load_59" = load i8*, i8** @_execptr - %"$concat_x_60" = alloca [2 x i8] - %"$x_61" = load [2 x i8], [2 x i8]* %x - store [2 x i8] %"$x_61", [2 x i8]* %"$concat_x_60" - %"$$concat_x_60_62" = bitcast [2 x i8]* %"$concat_x_60" to i8* - %"$concat_y_63" = alloca [2 x i8] - %"$y_64" = load [2 x i8], [2 x i8]* %y - store [2 x i8] %"$y_64", [2 x i8]* %"$concat_y_63" - %"$$concat_y_63_65" = bitcast [2 x i8]* %"$concat_y_63" to i8* - %"$concat_call_66" = call i8* @_concat_ByStrX(i8* %"$execptr_load_59", i32 2, i8* %"$$concat_x_60_62", i32 2, i8* %"$$concat_y_63_65") - %"$concat_67" = bitcast i8* %"$concat_call_66" to [4 x i8]* - %"$concat_68" = load [4 x i8], [4 x i8]* %"$concat_67" - store [4 x i8] %"$concat_68", [4 x i8]* %z + %"$execptr_load_109" = load i8*, i8** @_execptr + %"$concat_x_110" = alloca [2 x i8] + %"$x_111" = load [2 x i8], [2 x i8]* %x + store [2 x i8] %"$x_111", [2 x i8]* %"$concat_x_110" + %"$$concat_x_110_112" = bitcast [2 x i8]* %"$concat_x_110" to i8* + %"$concat_y_113" = alloca [2 x i8] + %"$y_114" = load [2 x i8], [2 x i8]* %y + store [2 x i8] %"$y_114", [2 x i8]* %"$concat_y_113" + %"$$concat_y_113_115" = bitcast [2 x i8]* %"$concat_y_113" to i8* + %"$concat_call_116" = call i8* @_concat_ByStrX(i8* %"$execptr_load_109", i32 2, i8* %"$$concat_x_110_112", i32 2, i8* %"$$concat_y_113_115") + %"$concat_117" = bitcast i8* %"$concat_call_116" to [4 x i8]* + %"$concat_118" = load [4 x i8], [4 x i8]* %"$concat_117" + store [4 x i8] %"$concat_118", [4 x i8]* %z + %"$gasrem_119" = load i64, i64* @_gasrem + %"$gascmp_120" = icmp ugt i64 1, %"$gasrem_119" + br i1 %"$gascmp_120", label %"$out_of_gas_121", label %"$have_gas_122" + +"$out_of_gas_121": ; preds = %"$have_gas_107" + call void @_out_of_gas() + br label %"$have_gas_122" + +"$have_gas_122": ; preds = %"$out_of_gas_121", %"$have_gas_107" + %"$consume_123" = sub i64 %"$gasrem_119", 1 + store i64 %"$consume_123", i64* @_gasrem %w = alloca [18 x i8] + %"$gasrem_124" = load i64, i64* @_gasrem + %"$gascmp_125" = icmp ugt i64 1, %"$gasrem_124" + br i1 %"$gascmp_125", label %"$out_of_gas_126", label %"$have_gas_127" + +"$out_of_gas_126": ; preds = %"$have_gas_122" + call void @_out_of_gas() + br label %"$have_gas_127" + +"$have_gas_127": ; preds = %"$out_of_gas_126", %"$have_gas_122" + %"$consume_128" = sub i64 %"$gasrem_124", 1 + store i64 %"$consume_128", i64* @_gasrem store [18 x i8] c"\00\11\00\11\00\11\00\11\00\11\00\11\00\11\00\11\00\11", [18 x i8]* %w + %"$gasrem_129" = load i64, i64* @_gasrem + %"$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 %bystrx = alloca [22 x i8] - %"$execptr_load_69" = load i8*, i8** @_execptr - %"$concat_w_70" = alloca [18 x i8] - %"$w_71" = load [18 x i8], [18 x i8]* %w - store [18 x i8] %"$w_71", [18 x i8]* %"$concat_w_70" - %"$$concat_w_70_72" = bitcast [18 x i8]* %"$concat_w_70" to i8* - %"$concat_z_73" = alloca [4 x i8] - %"$z_74" = load [4 x i8], [4 x i8]* %z - store [4 x i8] %"$z_74", [4 x i8]* %"$concat_z_73" - %"$$concat_z_73_75" = bitcast [4 x i8]* %"$concat_z_73" to i8* - %"$concat_call_76" = call i8* @_concat_ByStrX(i8* %"$execptr_load_69", i32 18, i8* %"$$concat_w_70_72", i32 4, i8* %"$$concat_z_73_75") - %"$concat_77" = bitcast i8* %"$concat_call_76" to [22 x i8]* - %"$concat_78" = load [22 x i8], [22 x i8]* %"$concat_77" - store [22 x i8] %"$concat_78", [22 x i8]* %bystrx - %"$str_79" = load %String, %String* %str - %"$bystrx_80" = load [22 x i8], [22 x i8]* %bystrx - %"$adtval_81_load" = load i8*, i8** @_execptr - %"$adtval_81_salloc" = call i8* @_salloc(i8* %"$adtval_81_load", i64 39) - %"$adtval_81" = bitcast i8* %"$adtval_81_salloc" to %CName_Pair_String_ByStr22* - %"$adtgep_82" = getelementptr inbounds %CName_Pair_String_ByStr22, %CName_Pair_String_ByStr22* %"$adtval_81", i32 0, i32 0 - store i8 0, i8* %"$adtgep_82" - %"$adtgep_83" = getelementptr inbounds %CName_Pair_String_ByStr22, %CName_Pair_String_ByStr22* %"$adtval_81", i32 0, i32 1 - store %String %"$str_79", %String* %"$adtgep_83" - %"$adtgep_84" = getelementptr inbounds %CName_Pair_String_ByStr22, %CName_Pair_String_ByStr22* %"$adtval_81", i32 0, i32 2 - store [22 x i8] %"$bystrx_80", [22 x i8]* %"$adtgep_84" - %"$adtptr_85" = bitcast %CName_Pair_String_ByStr22* %"$adtval_81" to %TName_Pair_String_ByStr22* - store %TName_Pair_String_ByStr22* %"$adtptr_85", %TName_Pair_String_ByStr22** %"$expr_0" - %"$$expr_0_86" = load %TName_Pair_String_ByStr22*, %TName_Pair_String_ByStr22** %"$expr_0" - ret %TName_Pair_String_ByStr22* %"$$expr_0_86" + %"$execptr_load_134" = load i8*, i8** @_execptr + %"$concat_w_135" = alloca [18 x i8] + %"$w_136" = load [18 x i8], [18 x i8]* %w + store [18 x i8] %"$w_136", [18 x i8]* %"$concat_w_135" + %"$$concat_w_135_137" = bitcast [18 x i8]* %"$concat_w_135" to i8* + %"$concat_z_138" = alloca [4 x i8] + %"$z_139" = load [4 x i8], [4 x i8]* %z + store [4 x i8] %"$z_139", [4 x i8]* %"$concat_z_138" + %"$$concat_z_138_140" = bitcast [4 x i8]* %"$concat_z_138" to i8* + %"$concat_call_141" = call i8* @_concat_ByStrX(i8* %"$execptr_load_134", i32 18, i8* %"$$concat_w_135_137", i32 4, i8* %"$$concat_z_138_140") + %"$concat_142" = bitcast i8* %"$concat_call_141" to [22 x i8]* + %"$concat_143" = load [22 x i8], [22 x i8]* %"$concat_142" + store [22 x i8] %"$concat_143", [22 x i8]* %bystrx + %"$gasrem_144" = load i64, i64* @_gasrem + %"$gascmp_145" = icmp ugt i64 1, %"$gasrem_144" + br i1 %"$gascmp_145", label %"$out_of_gas_146", label %"$have_gas_147" + +"$out_of_gas_146": ; preds = %"$have_gas_132" + call void @_out_of_gas() + br label %"$have_gas_147" + +"$have_gas_147": ; preds = %"$out_of_gas_146", %"$have_gas_132" + %"$consume_148" = sub i64 %"$gasrem_144", 1 + store i64 %"$consume_148", i64* @_gasrem + %"$str_149" = load %String, %String* %str + %"$bystrx_150" = load [22 x i8], [22 x i8]* %bystrx + %"$adtval_151_load" = load i8*, i8** @_execptr + %"$adtval_151_salloc" = call i8* @_salloc(i8* %"$adtval_151_load", i64 39) + %"$adtval_151" = bitcast i8* %"$adtval_151_salloc" to %CName_Pair_String_ByStr22* + %"$adtgep_152" = getelementptr inbounds %CName_Pair_String_ByStr22, %CName_Pair_String_ByStr22* %"$adtval_151", i32 0, i32 0 + store i8 0, i8* %"$adtgep_152" + %"$adtgep_153" = getelementptr inbounds %CName_Pair_String_ByStr22, %CName_Pair_String_ByStr22* %"$adtval_151", i32 0, i32 1 + store %String %"$str_149", %String* %"$adtgep_153" + %"$adtgep_154" = getelementptr inbounds %CName_Pair_String_ByStr22, %CName_Pair_String_ByStr22* %"$adtval_151", i32 0, i32 2 + store [22 x i8] %"$bystrx_150", [22 x i8]* %"$adtgep_154" + %"$adtptr_155" = bitcast %CName_Pair_String_ByStr22* %"$adtval_151" to %TName_Pair_String_ByStr22* + store %TName_Pair_String_ByStr22* %"$adtptr_155", %TName_Pair_String_ByStr22** %"$expr_0" + %"$$expr_0_156" = load %TName_Pair_String_ByStr22*, %TName_Pair_String_ByStr22** %"$expr_0" + ret %TName_Pair_String_ByStr22* %"$$expr_0_156" } +declare void @_out_of_gas() + declare %String @_concat_String(i8*, %String, %String) declare i8* @_concat_ByStrX(i8*, i32, i8*, i32, i8*) @@ -154,8 +311,8 @@ declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_87" = call %TName_Pair_String_ByStr22* @"$scilla_expr_52"(i8* null) - %"$memvoidcast_88" = bitcast %TName_Pair_String_ByStr22* %"$exprval_87" to i8* - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_String_ByStr22_41", i8* %"$memvoidcast_88") + %"$exprval_157" = call %TName_Pair_String_ByStr22* @"$scilla_expr_52"(i8* null) + %"$memvoidcast_158" = bitcast %TName_Pair_String_ByStr22* %"$exprval_157" to i8* + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_String_ByStr22_41", i8* %"$memvoidcast_158") ret void } diff --git a/testsuite/expr/builtin_concat.ll.result b/testsuite/expr/builtin_concat.ll.result index 76557557..d4a8df30 100644 --- a/testsuite/expr/builtin_concat.ll.result +++ b/testsuite/expr/builtin_concat.ll.result @@ -1 +1,2 @@ Pair(helloworld : String)(0x00110011001100110011001100110011001111ffff11 : ByStr22) : Pair (String) (ByStr22) +Gas remaining: 9999986 diff --git a/testsuite/expr/builtin_eq.ll b/testsuite/expr/builtin_eq.ll index eddb3fd9..80d0e7d6 100644 --- a/testsuite/expr/builtin_eq.ll +++ b/testsuite/expr/builtin_eq.ll @@ -74,6 +74,7 @@ target triple = "x86_64-pc-linux-gnu" %Bystr = type { i8*, i32 } @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_27" = global %"$TyDescrTy_PrimTyp_26" zeroinitializer @"$TyDescr_Int32_28" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_26"* @"$TyDescr_Int32_Prim_27" to i8*) } @"$TyDescr_Uint32_Prim_29" = global %"$TyDescrTy_PrimTyp_26" { i32 1, i32 0 } @@ -122,158 +123,281 @@ target triple = "x86_64-pc-linux-gnu" @andb = global { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } zeroinitializer @orb = global { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } zeroinitializer @negb = global { %TName_Bool* (i8*, %TName_Bool*)*, i8* } zeroinitializer -@"$stringlit_152" = unnamed_addr constant [5 x i8] c"Hello" -@"$stringlit_153" = unnamed_addr constant [5 x i8] c"World" -@"$stringlit_154" = unnamed_addr constant [5 x i8] c"Hello" +@"$stringlit_337" = unnamed_addr constant [5 x i8] c"Hello" +@"$stringlit_348" = unnamed_addr constant [5 x i8] c"World" +@"$stringlit_359" = unnamed_addr constant [5 x i8] c"Hello" define internal %TName_Bool* @"$fundef_15"(%"$$fundef_15_env_76"* %0, %TName_Bool* %1) { entry: %"$retval_16" = alloca %TName_Bool* - %"$b_tag_124" = getelementptr inbounds %TName_Bool, %TName_Bool* %1, i32 0, i32 0 - %"$b_tag_125" = load i8, i8* %"$b_tag_124" - switch i8 %"$b_tag_125", label %"$empty_default_126" [ - i8 0, label %"$True_127" - i8 1, label %"$False_132" + %"$gasrem_163" = load i64, i64* @_gasrem + %"$gascmp_164" = icmp ugt i64 2, %"$gasrem_163" + br i1 %"$gascmp_164", label %"$out_of_gas_165", label %"$have_gas_166" + +"$out_of_gas_165": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_166" + +"$have_gas_166": ; preds = %"$out_of_gas_165", %entry + %"$consume_167" = sub i64 %"$gasrem_163", 2 + store i64 %"$consume_167", i64* @_gasrem + %"$b_tag_169" = getelementptr inbounds %TName_Bool, %TName_Bool* %1, i32 0, i32 0 + %"$b_tag_170" = load i8, i8* %"$b_tag_169" + switch i8 %"$b_tag_170", label %"$empty_default_171" [ + i8 0, label %"$True_172" + i8 1, label %"$False_182" ] -"$True_127": ; preds = %entry - %"$b_128" = bitcast %TName_Bool* %1 to %CName_True* - %"$adtval_129_load" = load i8*, i8** @_execptr - %"$adtval_129_salloc" = call i8* @_salloc(i8* %"$adtval_129_load", i64 1) - %"$adtval_129" = bitcast i8* %"$adtval_129_salloc" to %CName_False* - %"$adtgep_130" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_129", i32 0, i32 0 - store i8 1, i8* %"$adtgep_130" - %"$adtptr_131" = bitcast %CName_False* %"$adtval_129" to %TName_Bool* - store %TName_Bool* %"$adtptr_131", %TName_Bool** %"$retval_16" - br label %"$matchsucc_123" - -"$False_132": ; preds = %entry - %"$b_133" = bitcast %TName_Bool* %1 to %CName_False* - %"$adtval_134_load" = load i8*, i8** @_execptr - %"$adtval_134_salloc" = call i8* @_salloc(i8* %"$adtval_134_load", i64 1) - %"$adtval_134" = bitcast i8* %"$adtval_134_salloc" to %CName_True* - %"$adtgep_135" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_134", i32 0, i32 0 - store i8 0, i8* %"$adtgep_135" - %"$adtptr_136" = bitcast %CName_True* %"$adtval_134" to %TName_Bool* - store %TName_Bool* %"$adtptr_136", %TName_Bool** %"$retval_16" - br label %"$matchsucc_123" - -"$empty_default_126": ; preds = %entry - br label %"$matchsucc_123" - -"$matchsucc_123": ; preds = %"$False_132", %"$True_127", %"$empty_default_126" - %"$$retval_16_137" = load %TName_Bool*, %TName_Bool** %"$retval_16" - ret %TName_Bool* %"$$retval_16_137" +"$True_172": ; preds = %"$have_gas_166" + %"$b_173" = bitcast %TName_Bool* %1 to %CName_True* + %"$gasrem_174" = load i64, i64* @_gasrem + %"$gascmp_175" = icmp ugt i64 1, %"$gasrem_174" + br i1 %"$gascmp_175", label %"$out_of_gas_176", label %"$have_gas_177" + +"$out_of_gas_176": ; preds = %"$True_172" + call void @_out_of_gas() + br label %"$have_gas_177" + +"$have_gas_177": ; preds = %"$out_of_gas_176", %"$True_172" + %"$consume_178" = sub i64 %"$gasrem_174", 1 + store i64 %"$consume_178", i64* @_gasrem + %"$adtval_179_load" = load i8*, i8** @_execptr + %"$adtval_179_salloc" = call i8* @_salloc(i8* %"$adtval_179_load", i64 1) + %"$adtval_179" = bitcast i8* %"$adtval_179_salloc" to %CName_False* + %"$adtgep_180" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_179", i32 0, i32 0 + store i8 1, i8* %"$adtgep_180" + %"$adtptr_181" = bitcast %CName_False* %"$adtval_179" to %TName_Bool* + store %TName_Bool* %"$adtptr_181", %TName_Bool** %"$retval_16" + br label %"$matchsucc_168" + +"$False_182": ; preds = %"$have_gas_166" + %"$b_183" = bitcast %TName_Bool* %1 to %CName_False* + %"$gasrem_184" = load i64, i64* @_gasrem + %"$gascmp_185" = icmp ugt i64 1, %"$gasrem_184" + br i1 %"$gascmp_185", label %"$out_of_gas_186", label %"$have_gas_187" + +"$out_of_gas_186": ; preds = %"$False_182" + call void @_out_of_gas() + br label %"$have_gas_187" + +"$have_gas_187": ; preds = %"$out_of_gas_186", %"$False_182" + %"$consume_188" = sub i64 %"$gasrem_184", 1 + store i64 %"$consume_188", i64* @_gasrem + %"$adtval_189_load" = load i8*, i8** @_execptr + %"$adtval_189_salloc" = call i8* @_salloc(i8* %"$adtval_189_load", i64 1) + %"$adtval_189" = bitcast i8* %"$adtval_189_salloc" to %CName_True* + %"$adtgep_190" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_189", i32 0, i32 0 + store i8 0, i8* %"$adtgep_190" + %"$adtptr_191" = bitcast %CName_True* %"$adtval_189" to %TName_Bool* + store %TName_Bool* %"$adtptr_191", %TName_Bool** %"$retval_16" + br label %"$matchsucc_168" + +"$empty_default_171": ; preds = %"$have_gas_166" + br label %"$matchsucc_168" + +"$matchsucc_168": ; preds = %"$have_gas_187", %"$have_gas_177", %"$empty_default_171" + %"$$retval_16_192" = load %TName_Bool*, %TName_Bool** %"$retval_16" + ret %TName_Bool* %"$$retval_16_192" } define internal %TName_Bool* @"$fundef_19"(%"$$fundef_19_env_77"* %0, %TName_Bool* %1) { entry: - %"$$fundef_19_env_b_108" = getelementptr inbounds %"$$fundef_19_env_77", %"$$fundef_19_env_77"* %0, i32 0, i32 0 - %"$b_envload_109" = load %TName_Bool*, %TName_Bool** %"$$fundef_19_env_b_108" + %"$$fundef_19_env_b_133" = getelementptr inbounds %"$$fundef_19_env_77", %"$$fundef_19_env_77"* %0, i32 0, i32 0 + %"$b_envload_134" = load %TName_Bool*, %TName_Bool** %"$$fundef_19_env_b_133" %b = alloca %TName_Bool* - store %TName_Bool* %"$b_envload_109", %TName_Bool** %b + store %TName_Bool* %"$b_envload_134", %TName_Bool** %b %"$retval_20" = alloca %TName_Bool* - %"$b_111" = load %TName_Bool*, %TName_Bool** %b - %"$b_tag_112" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b_111", i32 0, i32 0 - %"$b_tag_113" = load i8, i8* %"$b_tag_112" - switch i8 %"$b_tag_113", label %"$empty_default_114" [ - i8 0, label %"$True_115" - i8 1, label %"$False_120" + %"$gasrem_135" = load i64, i64* @_gasrem + %"$gascmp_136" = icmp ugt i64 2, %"$gasrem_135" + br i1 %"$gascmp_136", label %"$out_of_gas_137", label %"$have_gas_138" + +"$out_of_gas_137": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_138" + +"$have_gas_138": ; preds = %"$out_of_gas_137", %entry + %"$consume_139" = sub i64 %"$gasrem_135", 2 + store i64 %"$consume_139", i64* @_gasrem + %"$b_141" = load %TName_Bool*, %TName_Bool** %b + %"$b_tag_142" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b_141", i32 0, i32 0 + %"$b_tag_143" = load i8, i8* %"$b_tag_142" + switch i8 %"$b_tag_143", label %"$empty_default_144" [ + i8 0, label %"$True_145" + i8 1, label %"$False_155" ] -"$True_115": ; preds = %entry - %"$b_116" = bitcast %TName_Bool* %"$b_111" to %CName_True* - %"$adtval_117_load" = load i8*, i8** @_execptr - %"$adtval_117_salloc" = call i8* @_salloc(i8* %"$adtval_117_load", i64 1) - %"$adtval_117" = bitcast i8* %"$adtval_117_salloc" to %CName_True* - %"$adtgep_118" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_117", i32 0, i32 0 - store i8 0, i8* %"$adtgep_118" - %"$adtptr_119" = bitcast %CName_True* %"$adtval_117" to %TName_Bool* - store %TName_Bool* %"$adtptr_119", %TName_Bool** %"$retval_20" - br label %"$matchsucc_110" - -"$False_120": ; preds = %entry - %"$b_121" = bitcast %TName_Bool* %"$b_111" to %CName_False* +"$True_145": ; preds = %"$have_gas_138" + %"$b_146" = bitcast %TName_Bool* %"$b_141" to %CName_True* + %"$gasrem_147" = load i64, i64* @_gasrem + %"$gascmp_148" = icmp ugt i64 1, %"$gasrem_147" + br i1 %"$gascmp_148", label %"$out_of_gas_149", label %"$have_gas_150" + +"$out_of_gas_149": ; preds = %"$True_145" + call void @_out_of_gas() + br label %"$have_gas_150" + +"$have_gas_150": ; preds = %"$out_of_gas_149", %"$True_145" + %"$consume_151" = sub i64 %"$gasrem_147", 1 + store i64 %"$consume_151", i64* @_gasrem + %"$adtval_152_load" = load i8*, i8** @_execptr + %"$adtval_152_salloc" = call i8* @_salloc(i8* %"$adtval_152_load", i64 1) + %"$adtval_152" = bitcast i8* %"$adtval_152_salloc" to %CName_True* + %"$adtgep_153" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_152", i32 0, i32 0 + store i8 0, i8* %"$adtgep_153" + %"$adtptr_154" = bitcast %CName_True* %"$adtval_152" to %TName_Bool* + store %TName_Bool* %"$adtptr_154", %TName_Bool** %"$retval_20" + br label %"$matchsucc_140" + +"$False_155": ; preds = %"$have_gas_138" + %"$b_156" = bitcast %TName_Bool* %"$b_141" to %CName_False* + %"$gasrem_157" = load i64, i64* @_gasrem + %"$gascmp_158" = icmp ugt i64 1, %"$gasrem_157" + br i1 %"$gascmp_158", label %"$out_of_gas_159", label %"$have_gas_160" + +"$out_of_gas_159": ; preds = %"$False_155" + call void @_out_of_gas() + br label %"$have_gas_160" + +"$have_gas_160": ; preds = %"$out_of_gas_159", %"$False_155" + %"$consume_161" = sub i64 %"$gasrem_157", 1 + store i64 %"$consume_161", i64* @_gasrem store %TName_Bool* %1, %TName_Bool** %"$retval_20" - br label %"$matchsucc_110" + br label %"$matchsucc_140" -"$empty_default_114": ; preds = %entry - br label %"$matchsucc_110" +"$empty_default_144": ; preds = %"$have_gas_138" + br label %"$matchsucc_140" -"$matchsucc_110": ; preds = %"$False_120", %"$True_115", %"$empty_default_114" - %"$$retval_20_122" = load %TName_Bool*, %TName_Bool** %"$retval_20" - ret %TName_Bool* %"$$retval_20_122" +"$matchsucc_140": ; preds = %"$have_gas_160", %"$have_gas_150", %"$empty_default_144" + %"$$retval_20_162" = load %TName_Bool*, %TName_Bool** %"$retval_20" + ret %TName_Bool* %"$$retval_20_162" } define internal { %TName_Bool* (i8*, %TName_Bool*)*, i8* } @"$fundef_17"(%"$$fundef_17_env_78"* %0, %TName_Bool* %1) { entry: %"$retval_18" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$$fundef_19_envp_102_load" = load i8*, i8** @_execptr - %"$$fundef_19_envp_102_salloc" = call i8* @_salloc(i8* %"$$fundef_19_envp_102_load", i64 8) - %"$$fundef_19_envp_102" = bitcast i8* %"$$fundef_19_envp_102_salloc" to %"$$fundef_19_env_77"* - %"$$fundef_19_env_voidp_104" = bitcast %"$$fundef_19_env_77"* %"$$fundef_19_envp_102" to i8* - %"$$fundef_19_cloval_105" = insertvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } { %TName_Bool* (i8*, %TName_Bool*)* bitcast (%TName_Bool* (%"$$fundef_19_env_77"*, %TName_Bool*)* @"$fundef_19" to %TName_Bool* (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_19_env_voidp_104", 1 - %"$$fundef_19_env_b_106" = getelementptr inbounds %"$$fundef_19_env_77", %"$$fundef_19_env_77"* %"$$fundef_19_envp_102", i32 0, i32 0 - store %TName_Bool* %1, %TName_Bool** %"$$fundef_19_env_b_106" - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$fundef_19_cloval_105", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_18" - %"$$retval_18_107" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_18" - ret { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$retval_18_107" + %"$gasrem_122" = load i64, i64* @_gasrem + %"$gascmp_123" = icmp ugt i64 1, %"$gasrem_122" + br i1 %"$gascmp_123", label %"$out_of_gas_124", label %"$have_gas_125" + +"$out_of_gas_124": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_125" + +"$have_gas_125": ; preds = %"$out_of_gas_124", %entry + %"$consume_126" = sub i64 %"$gasrem_122", 1 + store i64 %"$consume_126", i64* @_gasrem + %"$$fundef_19_envp_127_load" = load i8*, i8** @_execptr + %"$$fundef_19_envp_127_salloc" = call i8* @_salloc(i8* %"$$fundef_19_envp_127_load", i64 8) + %"$$fundef_19_envp_127" = bitcast i8* %"$$fundef_19_envp_127_salloc" to %"$$fundef_19_env_77"* + %"$$fundef_19_env_voidp_129" = bitcast %"$$fundef_19_env_77"* %"$$fundef_19_envp_127" to i8* + %"$$fundef_19_cloval_130" = insertvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } { %TName_Bool* (i8*, %TName_Bool*)* bitcast (%TName_Bool* (%"$$fundef_19_env_77"*, %TName_Bool*)* @"$fundef_19" to %TName_Bool* (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_19_env_voidp_129", 1 + %"$$fundef_19_env_b_131" = getelementptr inbounds %"$$fundef_19_env_77", %"$$fundef_19_env_77"* %"$$fundef_19_envp_127", i32 0, i32 0 + store %TName_Bool* %1, %TName_Bool** %"$$fundef_19_env_b_131" + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$fundef_19_cloval_130", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_18" + %"$$retval_18_132" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_18" + ret { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$retval_18_132" } define internal %TName_Bool* @"$fundef_23"(%"$$fundef_23_env_79"* %0, %TName_Bool* %1) { entry: - %"$$fundef_23_env_b_87" = getelementptr inbounds %"$$fundef_23_env_79", %"$$fundef_23_env_79"* %0, i32 0, i32 0 - %"$b_envload_88" = load %TName_Bool*, %TName_Bool** %"$$fundef_23_env_b_87" + %"$$fundef_23_env_b_92" = getelementptr inbounds %"$$fundef_23_env_79", %"$$fundef_23_env_79"* %0, i32 0, i32 0 + %"$b_envload_93" = load %TName_Bool*, %TName_Bool** %"$$fundef_23_env_b_92" %b = alloca %TName_Bool* - store %TName_Bool* %"$b_envload_88", %TName_Bool** %b + store %TName_Bool* %"$b_envload_93", %TName_Bool** %b %"$retval_24" = alloca %TName_Bool* - %"$b_90" = load %TName_Bool*, %TName_Bool** %b - %"$b_tag_91" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b_90", i32 0, i32 0 - %"$b_tag_92" = load i8, i8* %"$b_tag_91" - switch i8 %"$b_tag_92", label %"$empty_default_93" [ - i8 1, label %"$False_94" - i8 0, label %"$True_99" + %"$gasrem_94" = load i64, i64* @_gasrem + %"$gascmp_95" = icmp ugt i64 2, %"$gasrem_94" + br i1 %"$gascmp_95", label %"$out_of_gas_96", label %"$have_gas_97" + +"$out_of_gas_96": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_97" + +"$have_gas_97": ; preds = %"$out_of_gas_96", %entry + %"$consume_98" = sub i64 %"$gasrem_94", 2 + store i64 %"$consume_98", i64* @_gasrem + %"$b_100" = load %TName_Bool*, %TName_Bool** %b + %"$b_tag_101" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b_100", i32 0, i32 0 + %"$b_tag_102" = load i8, i8* %"$b_tag_101" + switch i8 %"$b_tag_102", label %"$empty_default_103" [ + i8 1, label %"$False_104" + i8 0, label %"$True_114" ] -"$False_94": ; preds = %entry - %"$b_95" = bitcast %TName_Bool* %"$b_90" to %CName_False* - %"$adtval_96_load" = load i8*, i8** @_execptr - %"$adtval_96_salloc" = call i8* @_salloc(i8* %"$adtval_96_load", i64 1) - %"$adtval_96" = bitcast i8* %"$adtval_96_salloc" to %CName_False* - %"$adtgep_97" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_96", i32 0, i32 0 - store i8 1, i8* %"$adtgep_97" - %"$adtptr_98" = bitcast %CName_False* %"$adtval_96" to %TName_Bool* - store %TName_Bool* %"$adtptr_98", %TName_Bool** %"$retval_24" - br label %"$matchsucc_89" - -"$True_99": ; preds = %entry - %"$b_100" = bitcast %TName_Bool* %"$b_90" to %CName_True* +"$False_104": ; preds = %"$have_gas_97" + %"$b_105" = bitcast %TName_Bool* %"$b_100" to %CName_False* + %"$gasrem_106" = load i64, i64* @_gasrem + %"$gascmp_107" = icmp ugt i64 1, %"$gasrem_106" + br i1 %"$gascmp_107", label %"$out_of_gas_108", label %"$have_gas_109" + +"$out_of_gas_108": ; preds = %"$False_104" + call void @_out_of_gas() + br label %"$have_gas_109" + +"$have_gas_109": ; preds = %"$out_of_gas_108", %"$False_104" + %"$consume_110" = sub i64 %"$gasrem_106", 1 + store i64 %"$consume_110", i64* @_gasrem + %"$adtval_111_load" = load i8*, i8** @_execptr + %"$adtval_111_salloc" = call i8* @_salloc(i8* %"$adtval_111_load", i64 1) + %"$adtval_111" = bitcast i8* %"$adtval_111_salloc" to %CName_False* + %"$adtgep_112" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_111", i32 0, i32 0 + store i8 1, i8* %"$adtgep_112" + %"$adtptr_113" = bitcast %CName_False* %"$adtval_111" to %TName_Bool* + store %TName_Bool* %"$adtptr_113", %TName_Bool** %"$retval_24" + br label %"$matchsucc_99" + +"$True_114": ; preds = %"$have_gas_97" + %"$b_115" = bitcast %TName_Bool* %"$b_100" to %CName_True* + %"$gasrem_116" = load i64, i64* @_gasrem + %"$gascmp_117" = icmp ugt i64 1, %"$gasrem_116" + br i1 %"$gascmp_117", label %"$out_of_gas_118", label %"$have_gas_119" + +"$out_of_gas_118": ; preds = %"$True_114" + call void @_out_of_gas() + br label %"$have_gas_119" + +"$have_gas_119": ; preds = %"$out_of_gas_118", %"$True_114" + %"$consume_120" = sub i64 %"$gasrem_116", 1 + store i64 %"$consume_120", i64* @_gasrem store %TName_Bool* %1, %TName_Bool** %"$retval_24" - br label %"$matchsucc_89" + br label %"$matchsucc_99" -"$empty_default_93": ; preds = %entry - br label %"$matchsucc_89" +"$empty_default_103": ; preds = %"$have_gas_97" + br label %"$matchsucc_99" -"$matchsucc_89": ; preds = %"$True_99", %"$False_94", %"$empty_default_93" - %"$$retval_24_101" = load %TName_Bool*, %TName_Bool** %"$retval_24" - ret %TName_Bool* %"$$retval_24_101" +"$matchsucc_99": ; preds = %"$have_gas_119", %"$have_gas_109", %"$empty_default_103" + %"$$retval_24_121" = load %TName_Bool*, %TName_Bool** %"$retval_24" + ret %TName_Bool* %"$$retval_24_121" } define internal { %TName_Bool* (i8*, %TName_Bool*)*, i8* } @"$fundef_21"(%"$$fundef_21_env_80"* %0, %TName_Bool* %1) { entry: %"$retval_22" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$$fundef_23_envp_81_load" = load i8*, i8** @_execptr - %"$$fundef_23_envp_81_salloc" = call i8* @_salloc(i8* %"$$fundef_23_envp_81_load", i64 8) - %"$$fundef_23_envp_81" = bitcast i8* %"$$fundef_23_envp_81_salloc" to %"$$fundef_23_env_79"* - %"$$fundef_23_env_voidp_83" = bitcast %"$$fundef_23_env_79"* %"$$fundef_23_envp_81" to i8* - %"$$fundef_23_cloval_84" = insertvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } { %TName_Bool* (i8*, %TName_Bool*)* bitcast (%TName_Bool* (%"$$fundef_23_env_79"*, %TName_Bool*)* @"$fundef_23" to %TName_Bool* (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_23_env_voidp_83", 1 - %"$$fundef_23_env_b_85" = getelementptr inbounds %"$$fundef_23_env_79", %"$$fundef_23_env_79"* %"$$fundef_23_envp_81", i32 0, i32 0 - store %TName_Bool* %1, %TName_Bool** %"$$fundef_23_env_b_85" - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$fundef_23_cloval_84", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_22" - %"$$retval_22_86" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_22" - ret { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$retval_22_86" + %"$gasrem_81" = load i64, i64* @_gasrem + %"$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 + %"$$fundef_23_envp_86_load" = load i8*, i8** @_execptr + %"$$fundef_23_envp_86_salloc" = call i8* @_salloc(i8* %"$$fundef_23_envp_86_load", i64 8) + %"$$fundef_23_envp_86" = bitcast i8* %"$$fundef_23_envp_86_salloc" to %"$$fundef_23_env_79"* + %"$$fundef_23_env_voidp_88" = bitcast %"$$fundef_23_env_79"* %"$$fundef_23_envp_86" to i8* + %"$$fundef_23_cloval_89" = insertvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } { %TName_Bool* (i8*, %TName_Bool*)* bitcast (%TName_Bool* (%"$$fundef_23_env_79"*, %TName_Bool*)* @"$fundef_23" to %TName_Bool* (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_23_env_voidp_88", 1 + %"$$fundef_23_env_b_90" = getelementptr inbounds %"$$fundef_23_env_79", %"$$fundef_23_env_79"* %"$$fundef_23_envp_86", i32 0, i32 0 + store %TName_Bool* %1, %TName_Bool** %"$$fundef_23_env_b_90" + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$fundef_23_cloval_89", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_22" + %"$$retval_22_91" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_22" + ret { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$retval_22_91" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) define void @_init_libs() { @@ -281,232 +405,947 @@ entry: ret void } -define internal %TName_Bool* @"$scilla_expr_138"(i8* %0) { +define internal %TName_Bool* @"$scilla_expr_193"(i8* %0) { entry: + %"$gasrem_194" = load i64, i64* @_gasrem + %"$gascmp_195" = icmp ugt i64 1, %"$gasrem_194" + br i1 %"$gascmp_195", label %"$out_of_gas_196", label %"$have_gas_197" + +"$out_of_gas_196": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_197" + +"$have_gas_197": ; preds = %"$out_of_gas_196", %entry + %"$consume_198" = sub i64 %"$gasrem_194", 1 + store i64 %"$consume_198", i64* @_gasrem store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)* bitcast ({ %TName_Bool* (i8*, %TName_Bool*)*, i8* } (%"$$fundef_21_env_80"*, %TName_Bool*)* @"$fundef_21" to { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*), i8* null }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb + %"$gasrem_202" = load i64, i64* @_gasrem + %"$gascmp_203" = icmp ugt i64 1, %"$gasrem_202" + br i1 %"$gascmp_203", label %"$out_of_gas_204", label %"$have_gas_205" + +"$out_of_gas_204": ; preds = %"$have_gas_197" + call void @_out_of_gas() + br label %"$have_gas_205" + +"$have_gas_205": ; preds = %"$out_of_gas_204", %"$have_gas_197" + %"$consume_206" = sub i64 %"$gasrem_202", 1 + store i64 %"$consume_206", i64* @_gasrem store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)* bitcast ({ %TName_Bool* (i8*, %TName_Bool*)*, i8* } (%"$$fundef_17_env_78"*, %TName_Bool*)* @"$fundef_17" to { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*), i8* null }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @orb + %"$gasrem_210" = load i64, i64* @_gasrem + %"$gascmp_211" = icmp ugt i64 1, %"$gasrem_210" + br i1 %"$gascmp_211", label %"$out_of_gas_212", label %"$have_gas_213" + +"$out_of_gas_212": ; preds = %"$have_gas_205" + call void @_out_of_gas() + br label %"$have_gas_213" + +"$have_gas_213": ; preds = %"$out_of_gas_212", %"$have_gas_205" + %"$consume_214" = sub i64 %"$gasrem_210", 1 + store i64 %"$consume_214", i64* @_gasrem store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } { %TName_Bool* (i8*, %TName_Bool*)* bitcast (%TName_Bool* (%"$$fundef_15_env_76"*, %TName_Bool*)* @"$fundef_15" to %TName_Bool* (i8*, %TName_Bool*)*), i8* null }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* @negb %"$expr_25" = alloca %TName_Bool* + %"$gasrem_218" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_213" + call void @_out_of_gas() + br label %"$have_gas_221" + +"$have_gas_221": ; preds = %"$out_of_gas_220", %"$have_gas_213" + %"$consume_222" = sub i64 %"$gasrem_218", 1 + store i64 %"$consume_222", i64* @_gasrem + %"$gasrem_223" = load i64, i64* @_gasrem + %"$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 + %"$gasrem_228" = load i64, i64* @_gasrem + %"$gascmp_229" = icmp ugt i64 1, %"$gasrem_228" + br i1 %"$gascmp_229", label %"$out_of_gas_230", label %"$have_gas_231" + +"$out_of_gas_230": ; preds = %"$have_gas_226" + call void @_out_of_gas() + br label %"$have_gas_231" + +"$have_gas_231": ; preds = %"$out_of_gas_230", %"$have_gas_226" + %"$consume_232" = sub i64 %"$gasrem_228", 1 + store i64 %"$consume_232", i64* @_gasrem + %"$gasrem_233" = load i64, i64* @_gasrem + %"$gascmp_234" = icmp ugt i64 1, %"$gasrem_233" + br i1 %"$gascmp_234", label %"$out_of_gas_235", label %"$have_gas_236" + +"$out_of_gas_235": ; preds = %"$have_gas_231" + call void @_out_of_gas() + br label %"$have_gas_236" + +"$have_gas_236": ; preds = %"$out_of_gas_235", %"$have_gas_231" + %"$consume_237" = sub i64 %"$gasrem_233", 1 + store i64 %"$consume_237", i64* @_gasrem + %"$gasrem_238" = load i64, i64* @_gasrem + %"$gascmp_239" = icmp ugt i64 1, %"$gasrem_238" + br i1 %"$gascmp_239", label %"$out_of_gas_240", label %"$have_gas_241" + +"$out_of_gas_240": ; preds = %"$have_gas_236" + call void @_out_of_gas() + br label %"$have_gas_241" + +"$have_gas_241": ; preds = %"$out_of_gas_240", %"$have_gas_236" + %"$consume_242" = sub i64 %"$gasrem_238", 1 + store i64 %"$consume_242", i64* @_gasrem + %"$gasrem_243" = load i64, i64* @_gasrem + %"$gascmp_244" = icmp ugt i64 1, %"$gasrem_243" + br i1 %"$gascmp_244", label %"$out_of_gas_245", label %"$have_gas_246" + +"$out_of_gas_245": ; preds = %"$have_gas_241" + call void @_out_of_gas() + br label %"$have_gas_246" + +"$have_gas_246": ; preds = %"$out_of_gas_245", %"$have_gas_241" + %"$consume_247" = sub i64 %"$gasrem_243", 1 + store i64 %"$consume_247", i64* @_gasrem + %"$gasrem_248" = load i64, i64* @_gasrem + %"$gascmp_249" = icmp ugt i64 1, %"$gasrem_248" + br i1 %"$gascmp_249", label %"$out_of_gas_250", label %"$have_gas_251" + +"$out_of_gas_250": ; preds = %"$have_gas_246" + call void @_out_of_gas() + br label %"$have_gas_251" + +"$have_gas_251": ; preds = %"$out_of_gas_250", %"$have_gas_246" + %"$consume_252" = sub i64 %"$gasrem_248", 1 + store i64 %"$consume_252", i64* @_gasrem + %"$gasrem_253" = load i64, i64* @_gasrem + %"$gascmp_254" = icmp ugt i64 1, %"$gasrem_253" + br i1 %"$gascmp_254", label %"$out_of_gas_255", label %"$have_gas_256" + +"$out_of_gas_255": ; preds = %"$have_gas_251" + call void @_out_of_gas() + br label %"$have_gas_256" + +"$have_gas_256": ; preds = %"$out_of_gas_255", %"$have_gas_251" + %"$consume_257" = sub i64 %"$gasrem_253", 1 + store i64 %"$consume_257", i64* @_gasrem + %"$gasrem_258" = load i64, i64* @_gasrem + %"$gascmp_259" = icmp ugt i64 1, %"$gasrem_258" + br i1 %"$gascmp_259", label %"$out_of_gas_260", label %"$have_gas_261" + +"$out_of_gas_260": ; preds = %"$have_gas_256" + call void @_out_of_gas() + br label %"$have_gas_261" + +"$have_gas_261": ; preds = %"$out_of_gas_260", %"$have_gas_256" + %"$consume_262" = sub i64 %"$gasrem_258", 1 + store i64 %"$consume_262", i64* @_gasrem + %"$gasrem_263" = load i64, i64* @_gasrem + %"$gascmp_264" = icmp ugt i64 1, %"$gasrem_263" + br i1 %"$gascmp_264", label %"$out_of_gas_265", label %"$have_gas_266" + +"$out_of_gas_265": ; preds = %"$have_gas_261" + call void @_out_of_gas() + br label %"$have_gas_266" + +"$have_gas_266": ; preds = %"$out_of_gas_265", %"$have_gas_261" + %"$consume_267" = sub i64 %"$gasrem_263", 1 + store i64 %"$consume_267", i64* @_gasrem + %"$gasrem_268" = load i64, i64* @_gasrem + %"$gascmp_269" = icmp ugt i64 1, %"$gasrem_268" + br i1 %"$gascmp_269", label %"$out_of_gas_270", label %"$have_gas_271" + +"$out_of_gas_270": ; preds = %"$have_gas_266" + call void @_out_of_gas() + br label %"$have_gas_271" + +"$have_gas_271": ; preds = %"$out_of_gas_270", %"$have_gas_266" + %"$consume_272" = sub i64 %"$gasrem_268", 1 + store i64 %"$consume_272", i64* @_gasrem + %"$gasrem_273" = load i64, i64* @_gasrem + %"$gascmp_274" = icmp ugt i64 1, %"$gasrem_273" + br i1 %"$gascmp_274", label %"$out_of_gas_275", label %"$have_gas_276" + +"$out_of_gas_275": ; preds = %"$have_gas_271" + call void @_out_of_gas() + br label %"$have_gas_276" + +"$have_gas_276": ; preds = %"$out_of_gas_275", %"$have_gas_271" + %"$consume_277" = sub i64 %"$gasrem_273", 1 + store i64 %"$consume_277", i64* @_gasrem + %"$gasrem_278" = load i64, i64* @_gasrem + %"$gascmp_279" = icmp ugt i64 1, %"$gasrem_278" + br i1 %"$gascmp_279", label %"$out_of_gas_280", label %"$have_gas_281" + +"$out_of_gas_280": ; preds = %"$have_gas_276" + call void @_out_of_gas() + br label %"$have_gas_281" + +"$have_gas_281": ; preds = %"$out_of_gas_280", %"$have_gas_276" + %"$consume_282" = sub i64 %"$gasrem_278", 1 + store i64 %"$consume_282", i64* @_gasrem + %"$gasrem_283" = load i64, i64* @_gasrem + %"$gascmp_284" = icmp ugt i64 1, %"$gasrem_283" + br i1 %"$gascmp_284", label %"$out_of_gas_285", label %"$have_gas_286" + +"$out_of_gas_285": ; preds = %"$have_gas_281" + call void @_out_of_gas() + br label %"$have_gas_286" + +"$have_gas_286": ; preds = %"$out_of_gas_285", %"$have_gas_281" + %"$consume_287" = sub i64 %"$gasrem_283", 1 + store i64 %"$consume_287", i64* @_gasrem %ui256a = alloca %Uint128 + %"$gasrem_288" = load i64, i64* @_gasrem + %"$gascmp_289" = icmp ugt i64 1, %"$gasrem_288" + br i1 %"$gascmp_289", label %"$out_of_gas_290", label %"$have_gas_291" + +"$out_of_gas_290": ; preds = %"$have_gas_286" + call void @_out_of_gas() + br label %"$have_gas_291" + +"$have_gas_291": ; preds = %"$out_of_gas_290", %"$have_gas_286" + %"$consume_292" = sub i64 %"$gasrem_288", 1 + store i64 %"$consume_292", i64* @_gasrem store %Uint128 { i128 11 }, %Uint128* %ui256a + %"$gasrem_293" = load i64, i64* @_gasrem + %"$gascmp_294" = icmp ugt i64 1, %"$gasrem_293" + br i1 %"$gascmp_294", label %"$out_of_gas_295", label %"$have_gas_296" + +"$out_of_gas_295": ; preds = %"$have_gas_291" + call void @_out_of_gas() + br label %"$have_gas_296" + +"$have_gas_296": ; preds = %"$out_of_gas_295", %"$have_gas_291" + %"$consume_297" = sub i64 %"$gasrem_293", 1 + store i64 %"$consume_297", i64* @_gasrem + %"$gasrem_298" = load i64, i64* @_gasrem + %"$gascmp_299" = icmp ugt i64 1, %"$gasrem_298" + br i1 %"$gascmp_299", label %"$out_of_gas_300", label %"$have_gas_301" + +"$out_of_gas_300": ; preds = %"$have_gas_296" + call void @_out_of_gas() + br label %"$have_gas_301" + +"$have_gas_301": ; preds = %"$out_of_gas_300", %"$have_gas_296" + %"$consume_302" = sub i64 %"$gasrem_298", 1 + store i64 %"$consume_302", i64* @_gasrem + %"$gasrem_303" = load i64, i64* @_gasrem + %"$gascmp_304" = icmp ugt i64 1, %"$gasrem_303" + br i1 %"$gascmp_304", label %"$out_of_gas_305", label %"$have_gas_306" + +"$out_of_gas_305": ; preds = %"$have_gas_301" + call void @_out_of_gas() + br label %"$have_gas_306" + +"$have_gas_306": ; preds = %"$out_of_gas_305", %"$have_gas_301" + %"$consume_307" = sub i64 %"$gasrem_303", 1 + store i64 %"$consume_307", i64* @_gasrem + %"$gasrem_308" = load i64, i64* @_gasrem + %"$gascmp_309" = icmp ugt i64 1, %"$gasrem_308" + br i1 %"$gascmp_309", label %"$out_of_gas_310", label %"$have_gas_311" + +"$out_of_gas_310": ; preds = %"$have_gas_306" + call void @_out_of_gas() + br label %"$have_gas_311" + +"$have_gas_311": ; preds = %"$out_of_gas_310", %"$have_gas_306" + %"$consume_312" = sub i64 %"$gasrem_308", 1 + store i64 %"$consume_312", i64* @_gasrem %b9 = alloca %TName_Bool* - %"$execptr_load_148" = load i8*, i8** @_execptr - %"$ui256a_149" = load %Uint128, %Uint128* %ui256a - %"$ui256a_150" = load %Uint128, %Uint128* %ui256a - %"$eq_call_151" = call %TName_Bool* @_eq_Uint128(i8* %"$execptr_load_148", %Uint128 %"$ui256a_149", %Uint128 %"$ui256a_150") - store %TName_Bool* %"$eq_call_151", %TName_Bool** %b9 + %"$execptr_load_313" = load i8*, i8** @_execptr + %"$ui256a_314" = load %Uint128, %Uint128* %ui256a + %"$ui256a_315" = load %Uint128, %Uint128* %ui256a + %"$eq_call_316" = call %TName_Bool* @_eq_Uint128(i8* %"$execptr_load_313", %Uint128 %"$ui256a_314", %Uint128 %"$ui256a_315") + store %TName_Bool* %"$eq_call_316", %TName_Bool** %b9 + %"$gasrem_317" = load i64, i64* @_gasrem + %"$gascmp_318" = icmp ugt i64 1, %"$gasrem_317" + br i1 %"$gascmp_318", label %"$out_of_gas_319", label %"$have_gas_320" + +"$out_of_gas_319": ; preds = %"$have_gas_311" + call void @_out_of_gas() + br label %"$have_gas_320" + +"$have_gas_320": ; preds = %"$out_of_gas_319", %"$have_gas_311" + %"$consume_321" = sub i64 %"$gasrem_317", 1 + store i64 %"$consume_321", i64* @_gasrem + %"$gasrem_322" = load i64, i64* @_gasrem + %"$gascmp_323" = icmp ugt i64 1, %"$gasrem_322" + br i1 %"$gascmp_323", label %"$out_of_gas_324", label %"$have_gas_325" + +"$out_of_gas_324": ; preds = %"$have_gas_320" + call void @_out_of_gas() + br label %"$have_gas_325" + +"$have_gas_325": ; preds = %"$out_of_gas_324", %"$have_gas_320" + %"$consume_326" = sub i64 %"$gasrem_322", 1 + store i64 %"$consume_326", i64* @_gasrem + %"$gasrem_327" = load i64, i64* @_gasrem + %"$gascmp_328" = icmp ugt i64 1, %"$gasrem_327" + br i1 %"$gascmp_328", label %"$out_of_gas_329", label %"$have_gas_330" + +"$out_of_gas_329": ; preds = %"$have_gas_325" + call void @_out_of_gas() + br label %"$have_gas_330" + +"$have_gas_330": ; preds = %"$out_of_gas_329", %"$have_gas_325" + %"$consume_331" = sub i64 %"$gasrem_327", 1 + store i64 %"$consume_331", i64* @_gasrem %s1 = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_152", i32 0, i32 0), i32 5 }, %String* %s1 + %"$gasrem_332" = load i64, i64* @_gasrem + %"$gascmp_333" = icmp ugt i64 1, %"$gasrem_332" + br i1 %"$gascmp_333", label %"$out_of_gas_334", label %"$have_gas_335" + +"$out_of_gas_334": ; preds = %"$have_gas_330" + call void @_out_of_gas() + br label %"$have_gas_335" + +"$have_gas_335": ; preds = %"$out_of_gas_334", %"$have_gas_330" + %"$consume_336" = sub i64 %"$gasrem_332", 1 + store i64 %"$consume_336", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_337", i32 0, i32 0), i32 5 }, %String* %s1 + %"$gasrem_338" = load i64, i64* @_gasrem + %"$gascmp_339" = icmp ugt i64 1, %"$gasrem_338" + br i1 %"$gascmp_339", label %"$out_of_gas_340", label %"$have_gas_341" + +"$out_of_gas_340": ; preds = %"$have_gas_335" + call void @_out_of_gas() + br label %"$have_gas_341" + +"$have_gas_341": ; preds = %"$out_of_gas_340", %"$have_gas_335" + %"$consume_342" = sub i64 %"$gasrem_338", 1 + store i64 %"$consume_342", i64* @_gasrem %s2 = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_153", i32 0, i32 0), i32 5 }, %String* %s2 + %"$gasrem_343" = load i64, i64* @_gasrem + %"$gascmp_344" = icmp ugt i64 1, %"$gasrem_343" + br i1 %"$gascmp_344", label %"$out_of_gas_345", label %"$have_gas_346" + +"$out_of_gas_345": ; preds = %"$have_gas_341" + call void @_out_of_gas() + br label %"$have_gas_346" + +"$have_gas_346": ; preds = %"$out_of_gas_345", %"$have_gas_341" + %"$consume_347" = sub i64 %"$gasrem_343", 1 + store i64 %"$consume_347", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_348", i32 0, i32 0), i32 5 }, %String* %s2 + %"$gasrem_349" = load i64, i64* @_gasrem + %"$gascmp_350" = icmp ugt i64 1, %"$gasrem_349" + br i1 %"$gascmp_350", label %"$out_of_gas_351", label %"$have_gas_352" + +"$out_of_gas_351": ; preds = %"$have_gas_346" + call void @_out_of_gas() + br label %"$have_gas_352" + +"$have_gas_352": ; preds = %"$out_of_gas_351", %"$have_gas_346" + %"$consume_353" = sub i64 %"$gasrem_349", 1 + store i64 %"$consume_353", i64* @_gasrem %s11 = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_154", i32 0, i32 0), i32 5 }, %String* %s11 + %"$gasrem_354" = load i64, i64* @_gasrem + %"$gascmp_355" = icmp ugt i64 1, %"$gasrem_354" + br i1 %"$gascmp_355", label %"$out_of_gas_356", label %"$have_gas_357" + +"$out_of_gas_356": ; preds = %"$have_gas_352" + call void @_out_of_gas() + br label %"$have_gas_357" + +"$have_gas_357": ; preds = %"$out_of_gas_356", %"$have_gas_352" + %"$consume_358" = sub i64 %"$gasrem_354", 1 + store i64 %"$consume_358", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_359", i32 0, i32 0), i32 5 }, %String* %s11 + %"$gasrem_360" = load i64, i64* @_gasrem + %"$gascmp_361" = icmp ugt i64 1, %"$gasrem_360" + br i1 %"$gascmp_361", label %"$out_of_gas_362", label %"$have_gas_363" + +"$out_of_gas_362": ; preds = %"$have_gas_357" + call void @_out_of_gas() + br label %"$have_gas_363" + +"$have_gas_363": ; preds = %"$out_of_gas_362", %"$have_gas_357" + %"$consume_364" = sub i64 %"$gasrem_360", 1 + store i64 %"$consume_364", i64* @_gasrem %b12 = alloca %TName_Bool* - %"$execptr_load_155" = load i8*, i8** @_execptr - %"$s1_156" = load %String, %String* %s1 - %"$s2_157" = load %String, %String* %s2 - %"$eq_call_158" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_155", %String %"$s1_156", %String %"$s2_157") - store %TName_Bool* %"$eq_call_158", %TName_Bool** %b12 + %"$execptr_load_365" = load i8*, i8** @_execptr + %"$s1_366" = load %String, %String* %s1 + %"$s2_367" = load %String, %String* %s2 + %"$eq_call_368" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_365", %String %"$s1_366", %String %"$s2_367") + store %TName_Bool* %"$eq_call_368", %TName_Bool** %b12 + %"$gasrem_369" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_363" + call void @_out_of_gas() + br label %"$have_gas_372" + +"$have_gas_372": ; preds = %"$out_of_gas_371", %"$have_gas_363" + %"$consume_373" = sub i64 %"$gasrem_369", 1 + store i64 %"$consume_373", i64* @_gasrem %b13 = alloca %TName_Bool* - %"$execptr_load_159" = load i8*, i8** @_execptr - %"$s1_160" = load %String, %String* %s1 - %"$s11_161" = load %String, %String* %s11 - %"$eq_call_162" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_159", %String %"$s1_160", %String %"$s11_161") - store %TName_Bool* %"$eq_call_162", %TName_Bool** %b13 + %"$execptr_load_374" = load i8*, i8** @_execptr + %"$s1_375" = load %String, %String* %s1 + %"$s11_376" = load %String, %String* %s11 + %"$eq_call_377" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_374", %String %"$s1_375", %String %"$s11_376") + store %TName_Bool* %"$eq_call_377", %TName_Bool** %b13 + %"$gasrem_378" = load i64, i64* @_gasrem + %"$gascmp_379" = icmp ugt i64 1, %"$gasrem_378" + br i1 %"$gascmp_379", label %"$out_of_gas_380", label %"$have_gas_381" + +"$out_of_gas_380": ; preds = %"$have_gas_372" + call void @_out_of_gas() + br label %"$have_gas_381" + +"$have_gas_381": ; preds = %"$out_of_gas_380", %"$have_gas_372" + %"$consume_382" = sub i64 %"$gasrem_378", 1 + store i64 %"$consume_382", i64* @_gasrem %b14 = alloca %TName_Bool* + %"$gasrem_383" = load i64, i64* @_gasrem + %"$gascmp_384" = icmp ugt i64 1, %"$gasrem_383" + br i1 %"$gascmp_384", label %"$out_of_gas_385", label %"$have_gas_386" + +"$out_of_gas_385": ; preds = %"$have_gas_381" + call void @_out_of_gas() + br label %"$have_gas_386" + +"$have_gas_386": ; preds = %"$out_of_gas_385", %"$have_gas_381" + %"$consume_387" = sub i64 %"$gasrem_383", 1 + store i64 %"$consume_387", i64* @_gasrem %"$andb_1" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$andb_163" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb - %"$andb_fptr_164" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_163", 0 - %"$andb_envptr_165" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_163", 1 - %"$b9_166" = load %TName_Bool*, %TName_Bool** %b9 - %"$andb_call_167" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_164"(i8* %"$andb_envptr_165", %TName_Bool* %"$b9_166") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_167", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_1" + %"$andb_388" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb + %"$andb_fptr_389" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_388", 0 + %"$andb_envptr_390" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_388", 1 + %"$b9_391" = load %TName_Bool*, %TName_Bool** %b9 + %"$andb_call_392" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_389"(i8* %"$andb_envptr_390", %TName_Bool* %"$b9_391") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_392", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_1" %"$andb_2" = alloca %TName_Bool* - %"$$andb_1_168" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_1" - %"$$andb_1_fptr_169" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_1_168", 0 - %"$$andb_1_envptr_170" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_1_168", 1 - %"$b12_171" = load %TName_Bool*, %TName_Bool** %b12 - %"$$andb_1_call_172" = call %TName_Bool* %"$$andb_1_fptr_169"(i8* %"$$andb_1_envptr_170", %TName_Bool* %"$b12_171") - store %TName_Bool* %"$$andb_1_call_172", %TName_Bool** %"$andb_2" - %"$$andb_2_173" = load %TName_Bool*, %TName_Bool** %"$andb_2" - store %TName_Bool* %"$$andb_2_173", %TName_Bool** %b14 + %"$$andb_1_393" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_1" + %"$$andb_1_fptr_394" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_1_393", 0 + %"$$andb_1_envptr_395" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_1_393", 1 + %"$b12_396" = load %TName_Bool*, %TName_Bool** %b12 + %"$$andb_1_call_397" = call %TName_Bool* %"$$andb_1_fptr_394"(i8* %"$$andb_1_envptr_395", %TName_Bool* %"$b12_396") + store %TName_Bool* %"$$andb_1_call_397", %TName_Bool** %"$andb_2" + %"$$andb_2_398" = load %TName_Bool*, %TName_Bool** %"$andb_2" + store %TName_Bool* %"$$andb_2_398", %TName_Bool** %b14 + %"$gasrem_399" = load i64, i64* @_gasrem + %"$gascmp_400" = icmp ugt i64 1, %"$gasrem_399" + br i1 %"$gascmp_400", label %"$out_of_gas_401", label %"$have_gas_402" + +"$out_of_gas_401": ; preds = %"$have_gas_386" + call void @_out_of_gas() + br label %"$have_gas_402" + +"$have_gas_402": ; preds = %"$out_of_gas_401", %"$have_gas_386" + %"$consume_403" = sub i64 %"$gasrem_399", 1 + store i64 %"$consume_403", i64* @_gasrem %b15 = alloca %TName_Bool* + %"$gasrem_404" = load i64, i64* @_gasrem + %"$gascmp_405" = icmp ugt i64 1, %"$gasrem_404" + br i1 %"$gascmp_405", label %"$out_of_gas_406", label %"$have_gas_407" + +"$out_of_gas_406": ; preds = %"$have_gas_402" + call void @_out_of_gas() + br label %"$have_gas_407" + +"$have_gas_407": ; preds = %"$out_of_gas_406", %"$have_gas_402" + %"$consume_408" = sub i64 %"$gasrem_404", 1 + store i64 %"$consume_408", i64* @_gasrem %"$orb_3" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$orb_174" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @orb - %"$orb_fptr_175" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_174", 0 - %"$orb_envptr_176" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_174", 1 - %"$b13_177" = load %TName_Bool*, %TName_Bool** %b13 - %"$orb_call_178" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_fptr_175"(i8* %"$orb_envptr_176", %TName_Bool* %"$b13_177") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_call_178", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_3" + %"$orb_409" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @orb + %"$orb_fptr_410" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_409", 0 + %"$orb_envptr_411" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_409", 1 + %"$b13_412" = load %TName_Bool*, %TName_Bool** %b13 + %"$orb_call_413" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_fptr_410"(i8* %"$orb_envptr_411", %TName_Bool* %"$b13_412") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_call_413", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_3" %"$orb_4" = alloca %TName_Bool* - %"$$orb_3_179" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_3" - %"$$orb_3_fptr_180" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_3_179", 0 - %"$$orb_3_envptr_181" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_3_179", 1 - %"$b14_182" = load %TName_Bool*, %TName_Bool** %b14 - %"$$orb_3_call_183" = call %TName_Bool* %"$$orb_3_fptr_180"(i8* %"$$orb_3_envptr_181", %TName_Bool* %"$b14_182") - store %TName_Bool* %"$$orb_3_call_183", %TName_Bool** %"$orb_4" - %"$$orb_4_184" = load %TName_Bool*, %TName_Bool** %"$orb_4" - store %TName_Bool* %"$$orb_4_184", %TName_Bool** %b15 + %"$$orb_3_414" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_3" + %"$$orb_3_fptr_415" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_3_414", 0 + %"$$orb_3_envptr_416" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_3_414", 1 + %"$b14_417" = load %TName_Bool*, %TName_Bool** %b14 + %"$$orb_3_call_418" = call %TName_Bool* %"$$orb_3_fptr_415"(i8* %"$$orb_3_envptr_416", %TName_Bool* %"$b14_417") + store %TName_Bool* %"$$orb_3_call_418", %TName_Bool** %"$orb_4" + %"$$orb_4_419" = load %TName_Bool*, %TName_Bool** %"$orb_4" + store %TName_Bool* %"$$orb_4_419", %TName_Bool** %b15 + %"$gasrem_420" = load i64, i64* @_gasrem + %"$gascmp_421" = icmp ugt i64 1, %"$gasrem_420" + br i1 %"$gascmp_421", label %"$out_of_gas_422", label %"$have_gas_423" + +"$out_of_gas_422": ; preds = %"$have_gas_407" + call void @_out_of_gas() + br label %"$have_gas_423" + +"$have_gas_423": ; preds = %"$out_of_gas_422", %"$have_gas_407" + %"$consume_424" = sub i64 %"$gasrem_420", 1 + store i64 %"$consume_424", i64* @_gasrem %bs1 = alloca [2 x i8] + %"$gasrem_425" = load i64, i64* @_gasrem + %"$gascmp_426" = icmp ugt i64 1, %"$gasrem_425" + br i1 %"$gascmp_426", label %"$out_of_gas_427", label %"$have_gas_428" + +"$out_of_gas_427": ; preds = %"$have_gas_423" + call void @_out_of_gas() + br label %"$have_gas_428" + +"$have_gas_428": ; preds = %"$out_of_gas_427", %"$have_gas_423" + %"$consume_429" = sub i64 %"$gasrem_425", 1 + store i64 %"$consume_429", i64* @_gasrem store [2 x i8] c"\00\FF", [2 x i8]* %bs1 + %"$gasrem_430" = load i64, i64* @_gasrem + %"$gascmp_431" = icmp ugt i64 1, %"$gasrem_430" + br i1 %"$gascmp_431", label %"$out_of_gas_432", label %"$have_gas_433" + +"$out_of_gas_432": ; preds = %"$have_gas_428" + call void @_out_of_gas() + br label %"$have_gas_433" + +"$have_gas_433": ; preds = %"$out_of_gas_432", %"$have_gas_428" + %"$consume_434" = sub i64 %"$gasrem_430", 1 + store i64 %"$consume_434", i64* @_gasrem %bs2 = alloca [2 x i8] + %"$gasrem_435" = load i64, i64* @_gasrem + %"$gascmp_436" = icmp ugt i64 1, %"$gasrem_435" + br i1 %"$gascmp_436", label %"$out_of_gas_437", label %"$have_gas_438" + +"$out_of_gas_437": ; preds = %"$have_gas_433" + call void @_out_of_gas() + br label %"$have_gas_438" + +"$have_gas_438": ; preds = %"$out_of_gas_437", %"$have_gas_433" + %"$consume_439" = sub i64 %"$gasrem_435", 1 + store i64 %"$consume_439", i64* @_gasrem store [2 x i8] c"\FF\00", [2 x i8]* %bs2 + %"$gasrem_440" = load i64, i64* @_gasrem + %"$gascmp_441" = icmp ugt i64 1, %"$gasrem_440" + br i1 %"$gascmp_441", label %"$out_of_gas_442", label %"$have_gas_443" + +"$out_of_gas_442": ; preds = %"$have_gas_438" + call void @_out_of_gas() + br label %"$have_gas_443" + +"$have_gas_443": ; preds = %"$out_of_gas_442", %"$have_gas_438" + %"$consume_444" = sub i64 %"$gasrem_440", 1 + store i64 %"$consume_444", i64* @_gasrem %bs11 = alloca [2 x i8] + %"$gasrem_445" = load i64, i64* @_gasrem + %"$gascmp_446" = icmp ugt i64 1, %"$gasrem_445" + br i1 %"$gascmp_446", label %"$out_of_gas_447", label %"$have_gas_448" + +"$out_of_gas_447": ; preds = %"$have_gas_443" + call void @_out_of_gas() + br label %"$have_gas_448" + +"$have_gas_448": ; preds = %"$out_of_gas_447", %"$have_gas_443" + %"$consume_449" = sub i64 %"$gasrem_445", 1 + store i64 %"$consume_449", i64* @_gasrem store [2 x i8] c"\00\FF", [2 x i8]* %bs11 + %"$gasrem_450" = load i64, i64* @_gasrem + %"$gascmp_451" = icmp ugt i64 1, %"$gasrem_450" + br i1 %"$gascmp_451", label %"$out_of_gas_452", label %"$have_gas_453" + +"$out_of_gas_452": ; preds = %"$have_gas_448" + call void @_out_of_gas() + br label %"$have_gas_453" + +"$have_gas_453": ; preds = %"$out_of_gas_452", %"$have_gas_448" + %"$consume_454" = sub i64 %"$gasrem_450", 1 + store i64 %"$consume_454", i64* @_gasrem %b16 = alloca %TName_Bool* - %"$execptr_load_185" = load i8*, i8** @_execptr - %"$eq_bs1_186" = alloca [2 x i8] - %"$bs1_187" = load [2 x i8], [2 x i8]* %bs1 - store [2 x i8] %"$bs1_187", [2 x i8]* %"$eq_bs1_186" - %"$$eq_bs1_186_188" = bitcast [2 x i8]* %"$eq_bs1_186" to i8* - %"$eq_bs2_189" = alloca [2 x i8] - %"$bs2_190" = load [2 x i8], [2 x i8]* %bs2 - store [2 x i8] %"$bs2_190", [2 x i8]* %"$eq_bs2_189" - %"$$eq_bs2_189_191" = bitcast [2 x i8]* %"$eq_bs2_189" to i8* - %"$eq_call_192" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_185", i32 2, i8* %"$$eq_bs1_186_188", i8* %"$$eq_bs2_189_191") - store %TName_Bool* %"$eq_call_192", %TName_Bool** %b16 + %"$execptr_load_455" = load i8*, i8** @_execptr + %"$eq_bs1_456" = alloca [2 x i8] + %"$bs1_457" = load [2 x i8], [2 x i8]* %bs1 + store [2 x i8] %"$bs1_457", [2 x i8]* %"$eq_bs1_456" + %"$$eq_bs1_456_458" = bitcast [2 x i8]* %"$eq_bs1_456" to i8* + %"$eq_bs2_459" = alloca [2 x i8] + %"$bs2_460" = load [2 x i8], [2 x i8]* %bs2 + store [2 x i8] %"$bs2_460", [2 x i8]* %"$eq_bs2_459" + %"$$eq_bs2_459_461" = bitcast [2 x i8]* %"$eq_bs2_459" to i8* + %"$eq_call_462" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_455", i32 2, i8* %"$$eq_bs1_456_458", i8* %"$$eq_bs2_459_461") + store %TName_Bool* %"$eq_call_462", %TName_Bool** %b16 + %"$gasrem_463" = load i64, i64* @_gasrem + %"$gascmp_464" = icmp ugt i64 1, %"$gasrem_463" + br i1 %"$gascmp_464", label %"$out_of_gas_465", label %"$have_gas_466" + +"$out_of_gas_465": ; preds = %"$have_gas_453" + call void @_out_of_gas() + br label %"$have_gas_466" + +"$have_gas_466": ; preds = %"$out_of_gas_465", %"$have_gas_453" + %"$consume_467" = sub i64 %"$gasrem_463", 1 + store i64 %"$consume_467", i64* @_gasrem %b17 = alloca %TName_Bool* - %"$execptr_load_193" = load i8*, i8** @_execptr - %"$eq_bs1_194" = alloca [2 x i8] - %"$bs1_195" = load [2 x i8], [2 x i8]* %bs1 - store [2 x i8] %"$bs1_195", [2 x i8]* %"$eq_bs1_194" - %"$$eq_bs1_194_196" = bitcast [2 x i8]* %"$eq_bs1_194" to i8* - %"$eq_bs11_197" = alloca [2 x i8] - %"$bs11_198" = load [2 x i8], [2 x i8]* %bs11 - store [2 x i8] %"$bs11_198", [2 x i8]* %"$eq_bs11_197" - %"$$eq_bs11_197_199" = bitcast [2 x i8]* %"$eq_bs11_197" to i8* - %"$eq_call_200" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_193", i32 2, i8* %"$$eq_bs1_194_196", i8* %"$$eq_bs11_197_199") - store %TName_Bool* %"$eq_call_200", %TName_Bool** %b17 + %"$execptr_load_468" = load i8*, i8** @_execptr + %"$eq_bs1_469" = alloca [2 x i8] + %"$bs1_470" = load [2 x i8], [2 x i8]* %bs1 + store [2 x i8] %"$bs1_470", [2 x i8]* %"$eq_bs1_469" + %"$$eq_bs1_469_471" = bitcast [2 x i8]* %"$eq_bs1_469" to i8* + %"$eq_bs11_472" = alloca [2 x i8] + %"$bs11_473" = load [2 x i8], [2 x i8]* %bs11 + store [2 x i8] %"$bs11_473", [2 x i8]* %"$eq_bs11_472" + %"$$eq_bs11_472_474" = bitcast [2 x i8]* %"$eq_bs11_472" to i8* + %"$eq_call_475" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_468", i32 2, i8* %"$$eq_bs1_469_471", i8* %"$$eq_bs11_472_474") + store %TName_Bool* %"$eq_call_475", %TName_Bool** %b17 + %"$gasrem_476" = load i64, i64* @_gasrem + %"$gascmp_477" = icmp ugt i64 1, %"$gasrem_476" + br i1 %"$gascmp_477", label %"$out_of_gas_478", label %"$have_gas_479" + +"$out_of_gas_478": ; preds = %"$have_gas_466" + call void @_out_of_gas() + br label %"$have_gas_479" + +"$have_gas_479": ; preds = %"$out_of_gas_478", %"$have_gas_466" + %"$consume_480" = sub i64 %"$gasrem_476", 1 + store i64 %"$consume_480", i64* @_gasrem %b18 = alloca %TName_Bool* + %"$gasrem_481" = load i64, i64* @_gasrem + %"$gascmp_482" = icmp ugt i64 1, %"$gasrem_481" + br i1 %"$gascmp_482", label %"$out_of_gas_483", label %"$have_gas_484" + +"$out_of_gas_483": ; preds = %"$have_gas_479" + call void @_out_of_gas() + br label %"$have_gas_484" + +"$have_gas_484": ; preds = %"$out_of_gas_483", %"$have_gas_479" + %"$consume_485" = sub i64 %"$gasrem_481", 1 + store i64 %"$consume_485", i64* @_gasrem %"$orb_5" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$orb_201" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @orb - %"$orb_fptr_202" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_201", 0 - %"$orb_envptr_203" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_201", 1 - %"$b16_204" = load %TName_Bool*, %TName_Bool** %b16 - %"$orb_call_205" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_fptr_202"(i8* %"$orb_envptr_203", %TName_Bool* %"$b16_204") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_call_205", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_5" + %"$orb_486" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @orb + %"$orb_fptr_487" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_486", 0 + %"$orb_envptr_488" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_486", 1 + %"$b16_489" = load %TName_Bool*, %TName_Bool** %b16 + %"$orb_call_490" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_fptr_487"(i8* %"$orb_envptr_488", %TName_Bool* %"$b16_489") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_call_490", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_5" %"$orb_6" = alloca %TName_Bool* - %"$$orb_5_206" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_5" - %"$$orb_5_fptr_207" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_5_206", 0 - %"$$orb_5_envptr_208" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_5_206", 1 - %"$b17_209" = load %TName_Bool*, %TName_Bool** %b17 - %"$$orb_5_call_210" = call %TName_Bool* %"$$orb_5_fptr_207"(i8* %"$$orb_5_envptr_208", %TName_Bool* %"$b17_209") - store %TName_Bool* %"$$orb_5_call_210", %TName_Bool** %"$orb_6" - %"$$orb_6_211" = load %TName_Bool*, %TName_Bool** %"$orb_6" - store %TName_Bool* %"$$orb_6_211", %TName_Bool** %b18 + %"$$orb_5_491" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_5" + %"$$orb_5_fptr_492" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_5_491", 0 + %"$$orb_5_envptr_493" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_5_491", 1 + %"$b17_494" = load %TName_Bool*, %TName_Bool** %b17 + %"$$orb_5_call_495" = call %TName_Bool* %"$$orb_5_fptr_492"(i8* %"$$orb_5_envptr_493", %TName_Bool* %"$b17_494") + store %TName_Bool* %"$$orb_5_call_495", %TName_Bool** %"$orb_6" + %"$$orb_6_496" = load %TName_Bool*, %TName_Bool** %"$orb_6" + store %TName_Bool* %"$$orb_6_496", %TName_Bool** %b18 + %"$gasrem_497" = load i64, i64* @_gasrem + %"$gascmp_498" = icmp ugt i64 1, %"$gasrem_497" + br i1 %"$gascmp_498", label %"$out_of_gas_499", label %"$have_gas_500" + +"$out_of_gas_499": ; preds = %"$have_gas_484" + call void @_out_of_gas() + br label %"$have_gas_500" + +"$have_gas_500": ; preds = %"$out_of_gas_499", %"$have_gas_484" + %"$consume_501" = sub i64 %"$gasrem_497", 1 + store i64 %"$consume_501", i64* @_gasrem %b19 = alloca %TName_Bool* + %"$gasrem_502" = load i64, i64* @_gasrem + %"$gascmp_503" = icmp ugt i64 1, %"$gasrem_502" + br i1 %"$gascmp_503", label %"$out_of_gas_504", label %"$have_gas_505" + +"$out_of_gas_504": ; preds = %"$have_gas_500" + call void @_out_of_gas() + br label %"$have_gas_505" + +"$have_gas_505": ; preds = %"$out_of_gas_504", %"$have_gas_500" + %"$consume_506" = sub i64 %"$gasrem_502", 1 + store i64 %"$consume_506", i64* @_gasrem %"$andb_7" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$andb_212" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb - %"$andb_fptr_213" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_212", 0 - %"$andb_envptr_214" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_212", 1 - %"$b18_215" = load %TName_Bool*, %TName_Bool** %b18 - %"$andb_call_216" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_213"(i8* %"$andb_envptr_214", %TName_Bool* %"$b18_215") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_216", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_7" + %"$andb_507" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb + %"$andb_fptr_508" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_507", 0 + %"$andb_envptr_509" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_507", 1 + %"$b18_510" = load %TName_Bool*, %TName_Bool** %b18 + %"$andb_call_511" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_508"(i8* %"$andb_envptr_509", %TName_Bool* %"$b18_510") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_511", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_7" %"$andb_8" = alloca %TName_Bool* - %"$$andb_7_217" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_7" - %"$$andb_7_fptr_218" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_7_217", 0 - %"$$andb_7_envptr_219" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_7_217", 1 - %"$b15_220" = load %TName_Bool*, %TName_Bool** %b15 - %"$$andb_7_call_221" = call %TName_Bool* %"$$andb_7_fptr_218"(i8* %"$$andb_7_envptr_219", %TName_Bool* %"$b15_220") - store %TName_Bool* %"$$andb_7_call_221", %TName_Bool** %"$andb_8" - %"$$andb_8_222" = load %TName_Bool*, %TName_Bool** %"$andb_8" - store %TName_Bool* %"$$andb_8_222", %TName_Bool** %b19 + %"$$andb_7_512" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_7" + %"$$andb_7_fptr_513" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_7_512", 0 + %"$$andb_7_envptr_514" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_7_512", 1 + %"$b15_515" = load %TName_Bool*, %TName_Bool** %b15 + %"$$andb_7_call_516" = call %TName_Bool* %"$$andb_7_fptr_513"(i8* %"$$andb_7_envptr_514", %TName_Bool* %"$b15_515") + store %TName_Bool* %"$$andb_7_call_516", %TName_Bool** %"$andb_8" + %"$$andb_8_517" = load %TName_Bool*, %TName_Bool** %"$andb_8" + store %TName_Bool* %"$$andb_8_517", %TName_Bool** %b19 + %"$gasrem_518" = load i64, i64* @_gasrem + %"$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_505" + call void @_out_of_gas() + br label %"$have_gas_521" + +"$have_gas_521": ; preds = %"$out_of_gas_520", %"$have_gas_505" + %"$consume_522" = sub i64 %"$gasrem_518", 1 + store i64 %"$consume_522", i64* @_gasrem %bs3 = alloca [3 x i8] + %"$gasrem_523" = load i64, i64* @_gasrem + %"$gascmp_524" = icmp ugt i64 1, %"$gasrem_523" + br i1 %"$gascmp_524", label %"$out_of_gas_525", label %"$have_gas_526" + +"$out_of_gas_525": ; preds = %"$have_gas_521" + call void @_out_of_gas() + br label %"$have_gas_526" + +"$have_gas_526": ; preds = %"$out_of_gas_525", %"$have_gas_521" + %"$consume_527" = sub i64 %"$gasrem_523", 1 + store i64 %"$consume_527", i64* @_gasrem store [3 x i8] c"\0F\0F\0F", [3 x i8]* %bs3 + %"$gasrem_528" = load i64, i64* @_gasrem + %"$gascmp_529" = icmp ugt i64 1, %"$gasrem_528" + br i1 %"$gascmp_529", label %"$out_of_gas_530", label %"$have_gas_531" + +"$out_of_gas_530": ; preds = %"$have_gas_526" + call void @_out_of_gas() + br label %"$have_gas_531" + +"$have_gas_531": ; preds = %"$out_of_gas_530", %"$have_gas_526" + %"$consume_532" = sub i64 %"$gasrem_528", 1 + store i64 %"$consume_532", i64* @_gasrem %bs4 = alloca [3 x i8] + %"$gasrem_533" = load i64, i64* @_gasrem + %"$gascmp_534" = icmp ugt i64 1, %"$gasrem_533" + br i1 %"$gascmp_534", label %"$out_of_gas_535", label %"$have_gas_536" + +"$out_of_gas_535": ; preds = %"$have_gas_531" + call void @_out_of_gas() + br label %"$have_gas_536" + +"$have_gas_536": ; preds = %"$out_of_gas_535", %"$have_gas_531" + %"$consume_537" = sub i64 %"$gasrem_533", 1 + store i64 %"$consume_537", i64* @_gasrem store [3 x i8] c"\0F\0F\0E", [3 x i8]* %bs4 + %"$gasrem_538" = load i64, i64* @_gasrem + %"$gascmp_539" = icmp ugt i64 1, %"$gasrem_538" + br i1 %"$gascmp_539", label %"$out_of_gas_540", label %"$have_gas_541" + +"$out_of_gas_540": ; preds = %"$have_gas_536" + call void @_out_of_gas() + br label %"$have_gas_541" + +"$have_gas_541": ; preds = %"$out_of_gas_540", %"$have_gas_536" + %"$consume_542" = sub i64 %"$gasrem_538", 1 + store i64 %"$consume_542", i64* @_gasrem %b20 = alloca %TName_Bool* - %"$execptr_load_223" = load i8*, i8** @_execptr - %"$eq_bs3_224" = alloca [3 x i8] - %"$bs3_225" = load [3 x i8], [3 x i8]* %bs3 - store [3 x i8] %"$bs3_225", [3 x i8]* %"$eq_bs3_224" - %"$$eq_bs3_224_226" = bitcast [3 x i8]* %"$eq_bs3_224" to i8* - %"$eq_bs4_227" = alloca [3 x i8] - %"$bs4_228" = load [3 x i8], [3 x i8]* %bs4 - store [3 x i8] %"$bs4_228", [3 x i8]* %"$eq_bs4_227" - %"$$eq_bs4_227_229" = bitcast [3 x i8]* %"$eq_bs4_227" to i8* - %"$eq_call_230" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_223", i32 3, i8* %"$$eq_bs3_224_226", i8* %"$$eq_bs4_227_229") - store %TName_Bool* %"$eq_call_230", %TName_Bool** %b20 + %"$execptr_load_543" = load i8*, i8** @_execptr + %"$eq_bs3_544" = alloca [3 x i8] + %"$bs3_545" = load [3 x i8], [3 x i8]* %bs3 + store [3 x i8] %"$bs3_545", [3 x i8]* %"$eq_bs3_544" + %"$$eq_bs3_544_546" = bitcast [3 x i8]* %"$eq_bs3_544" to i8* + %"$eq_bs4_547" = alloca [3 x i8] + %"$bs4_548" = load [3 x i8], [3 x i8]* %bs4 + store [3 x i8] %"$bs4_548", [3 x i8]* %"$eq_bs4_547" + %"$$eq_bs4_547_549" = bitcast [3 x i8]* %"$eq_bs4_547" to i8* + %"$eq_call_550" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_543", i32 3, i8* %"$$eq_bs3_544_546", i8* %"$$eq_bs4_547_549") + store %TName_Bool* %"$eq_call_550", %TName_Bool** %b20 + %"$gasrem_551" = load i64, i64* @_gasrem + %"$gascmp_552" = icmp ugt i64 1, %"$gasrem_551" + br i1 %"$gascmp_552", label %"$out_of_gas_553", label %"$have_gas_554" + +"$out_of_gas_553": ; preds = %"$have_gas_541" + call void @_out_of_gas() + br label %"$have_gas_554" + +"$have_gas_554": ; preds = %"$out_of_gas_553", %"$have_gas_541" + %"$consume_555" = sub i64 %"$gasrem_551", 1 + store i64 %"$consume_555", i64* @_gasrem %b21 = alloca %TName_Bool* + %"$gasrem_556" = load i64, i64* @_gasrem + %"$gascmp_557" = icmp ugt i64 1, %"$gasrem_556" + br i1 %"$gascmp_557", label %"$out_of_gas_558", label %"$have_gas_559" + +"$out_of_gas_558": ; preds = %"$have_gas_554" + call void @_out_of_gas() + br label %"$have_gas_559" + +"$have_gas_559": ; preds = %"$out_of_gas_558", %"$have_gas_554" + %"$consume_560" = sub i64 %"$gasrem_556", 1 + store i64 %"$consume_560", i64* @_gasrem %"$negb_9" = alloca %TName_Bool* - %"$negb_231" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* @negb - %"$negb_fptr_232" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_231", 0 - %"$negb_envptr_233" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_231", 1 - %"$b20_234" = load %TName_Bool*, %TName_Bool** %b20 - %"$negb_call_235" = call %TName_Bool* %"$negb_fptr_232"(i8* %"$negb_envptr_233", %TName_Bool* %"$b20_234") - store %TName_Bool* %"$negb_call_235", %TName_Bool** %"$negb_9" - %"$$negb_9_236" = load %TName_Bool*, %TName_Bool** %"$negb_9" - store %TName_Bool* %"$$negb_9_236", %TName_Bool** %b21 + %"$negb_561" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* @negb + %"$negb_fptr_562" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_561", 0 + %"$negb_envptr_563" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_561", 1 + %"$b20_564" = load %TName_Bool*, %TName_Bool** %b20 + %"$negb_call_565" = call %TName_Bool* %"$negb_fptr_562"(i8* %"$negb_envptr_563", %TName_Bool* %"$b20_564") + store %TName_Bool* %"$negb_call_565", %TName_Bool** %"$negb_9" + %"$$negb_9_566" = load %TName_Bool*, %TName_Bool** %"$negb_9" + store %TName_Bool* %"$$negb_9_566", %TName_Bool** %b21 + %"$gasrem_567" = load i64, i64* @_gasrem + %"$gascmp_568" = icmp ugt i64 1, %"$gasrem_567" + br i1 %"$gascmp_568", label %"$out_of_gas_569", label %"$have_gas_570" + +"$out_of_gas_569": ; preds = %"$have_gas_559" + call void @_out_of_gas() + br label %"$have_gas_570" + +"$have_gas_570": ; preds = %"$out_of_gas_569", %"$have_gas_559" + %"$consume_571" = sub i64 %"$gasrem_567", 1 + store i64 %"$consume_571", i64* @_gasrem %b22 = alloca %TName_Bool* + %"$gasrem_572" = load i64, i64* @_gasrem + %"$gascmp_573" = icmp ugt i64 1, %"$gasrem_572" + br i1 %"$gascmp_573", label %"$out_of_gas_574", label %"$have_gas_575" + +"$out_of_gas_574": ; preds = %"$have_gas_570" + call void @_out_of_gas() + br label %"$have_gas_575" + +"$have_gas_575": ; preds = %"$out_of_gas_574", %"$have_gas_570" + %"$consume_576" = sub i64 %"$gasrem_572", 1 + store i64 %"$consume_576", i64* @_gasrem %"$andb_10" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$andb_237" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb - %"$andb_fptr_238" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_237", 0 - %"$andb_envptr_239" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_237", 1 - %"$b19_240" = load %TName_Bool*, %TName_Bool** %b19 - %"$andb_call_241" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_238"(i8* %"$andb_envptr_239", %TName_Bool* %"$b19_240") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_241", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_10" + %"$andb_577" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb + %"$andb_fptr_578" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_577", 0 + %"$andb_envptr_579" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_577", 1 + %"$b19_580" = load %TName_Bool*, %TName_Bool** %b19 + %"$andb_call_581" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_578"(i8* %"$andb_envptr_579", %TName_Bool* %"$b19_580") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_581", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_10" %"$andb_11" = alloca %TName_Bool* - %"$$andb_10_242" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_10" - %"$$andb_10_fptr_243" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_10_242", 0 - %"$$andb_10_envptr_244" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_10_242", 1 - %"$b21_245" = load %TName_Bool*, %TName_Bool** %b21 - %"$$andb_10_call_246" = call %TName_Bool* %"$$andb_10_fptr_243"(i8* %"$$andb_10_envptr_244", %TName_Bool* %"$b21_245") - store %TName_Bool* %"$$andb_10_call_246", %TName_Bool** %"$andb_11" - %"$$andb_11_247" = load %TName_Bool*, %TName_Bool** %"$andb_11" - store %TName_Bool* %"$$andb_11_247", %TName_Bool** %b22 + %"$$andb_10_582" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_10" + %"$$andb_10_fptr_583" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_10_582", 0 + %"$$andb_10_envptr_584" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_10_582", 1 + %"$b21_585" = load %TName_Bool*, %TName_Bool** %b21 + %"$$andb_10_call_586" = call %TName_Bool* %"$$andb_10_fptr_583"(i8* %"$$andb_10_envptr_584", %TName_Bool* %"$b21_585") + store %TName_Bool* %"$$andb_10_call_586", %TName_Bool** %"$andb_11" + %"$$andb_11_587" = load %TName_Bool*, %TName_Bool** %"$andb_11" + store %TName_Bool* %"$$andb_11_587", %TName_Bool** %b22 + %"$gasrem_588" = load i64, i64* @_gasrem + %"$gascmp_589" = icmp ugt i64 1, %"$gasrem_588" + br i1 %"$gascmp_589", label %"$out_of_gas_590", label %"$have_gas_591" + +"$out_of_gas_590": ; preds = %"$have_gas_575" + call void @_out_of_gas() + br label %"$have_gas_591" + +"$have_gas_591": ; preds = %"$out_of_gas_590", %"$have_gas_575" + %"$consume_592" = sub i64 %"$gasrem_588", 1 + store i64 %"$consume_592", i64* @_gasrem %"$bs11_0" = alloca %Bystr - %"$execptr_load_248" = load i8*, i8** @_execptr - %"$to_bystr_bs1_249" = alloca [2 x i8] - %"$bs1_250" = load [2 x i8], [2 x i8]* %bs1 - store [2 x i8] %"$bs1_250", [2 x i8]* %"$to_bystr_bs1_249" - %"$$to_bystr_bs1_249_251" = bitcast [2 x i8]* %"$to_bystr_bs1_249" to i8* - %"$to_bystr_call_252" = call %Bystr @_to_bystr(i8* %"$execptr_load_248", i32 2, i8* %"$$to_bystr_bs1_249_251") - store %Bystr %"$to_bystr_call_252", %Bystr* %"$bs11_0" + %"$execptr_load_593" = load i8*, i8** @_execptr + %"$to_bystr_bs1_594" = alloca [2 x i8] + %"$bs1_595" = load [2 x i8], [2 x i8]* %bs1 + store [2 x i8] %"$bs1_595", [2 x i8]* %"$to_bystr_bs1_594" + %"$$to_bystr_bs1_594_596" = bitcast [2 x i8]* %"$to_bystr_bs1_594" to i8* + %"$to_bystr_call_597" = call %Bystr @_to_bystr(i8* %"$execptr_load_593", i32 2, i8* %"$$to_bystr_bs1_594_596") + store %Bystr %"$to_bystr_call_597", %Bystr* %"$bs11_0" + %"$gasrem_598" = load i64, i64* @_gasrem + %"$gascmp_599" = icmp ugt i64 1, %"$gasrem_598" + br i1 %"$gascmp_599", label %"$out_of_gas_600", label %"$have_gas_601" + +"$out_of_gas_600": ; preds = %"$have_gas_591" + call void @_out_of_gas() + br label %"$have_gas_601" + +"$have_gas_601": ; preds = %"$out_of_gas_600", %"$have_gas_591" + %"$consume_602" = sub i64 %"$gasrem_598", 1 + store i64 %"$consume_602", i64* @_gasrem %bs22 = alloca %Bystr - %"$execptr_load_253" = load i8*, i8** @_execptr - %"$to_bystr_bs2_254" = alloca [2 x i8] - %"$bs2_255" = load [2 x i8], [2 x i8]* %bs2 - store [2 x i8] %"$bs2_255", [2 x i8]* %"$to_bystr_bs2_254" - %"$$to_bystr_bs2_254_256" = bitcast [2 x i8]* %"$to_bystr_bs2_254" to i8* - %"$to_bystr_call_257" = call %Bystr @_to_bystr(i8* %"$execptr_load_253", i32 2, i8* %"$$to_bystr_bs2_254_256") - store %Bystr %"$to_bystr_call_257", %Bystr* %bs22 + %"$execptr_load_603" = load i8*, i8** @_execptr + %"$to_bystr_bs2_604" = alloca [2 x i8] + %"$bs2_605" = load [2 x i8], [2 x i8]* %bs2 + store [2 x i8] %"$bs2_605", [2 x i8]* %"$to_bystr_bs2_604" + %"$$to_bystr_bs2_604_606" = bitcast [2 x i8]* %"$to_bystr_bs2_604" to i8* + %"$to_bystr_call_607" = call %Bystr @_to_bystr(i8* %"$execptr_load_603", i32 2, i8* %"$$to_bystr_bs2_604_606") + store %Bystr %"$to_bystr_call_607", %Bystr* %bs22 + %"$gasrem_608" = load i64, i64* @_gasrem + %"$gascmp_609" = icmp ugt i64 1, %"$gasrem_608" + br i1 %"$gascmp_609", label %"$out_of_gas_610", label %"$have_gas_611" + +"$out_of_gas_610": ; preds = %"$have_gas_601" + call void @_out_of_gas() + br label %"$have_gas_611" + +"$have_gas_611": ; preds = %"$out_of_gas_610", %"$have_gas_601" + %"$consume_612" = sub i64 %"$gasrem_608", 1 + store i64 %"$consume_612", i64* @_gasrem %b23 = alloca %TName_Bool* - %"$execptr_load_258" = load i8*, i8** @_execptr - %"$$bs11_0_259" = load %Bystr, %Bystr* %"$bs11_0" - %"$bs22_260" = load %Bystr, %Bystr* %bs22 - %"$eq_call_261" = call %TName_Bool* @_eq_ByStr(i8* %"$execptr_load_258", %Bystr %"$$bs11_0_259", %Bystr %"$bs22_260") - store %TName_Bool* %"$eq_call_261", %TName_Bool** %b23 + %"$execptr_load_613" = load i8*, i8** @_execptr + %"$$bs11_0_614" = load %Bystr, %Bystr* %"$bs11_0" + %"$bs22_615" = load %Bystr, %Bystr* %bs22 + %"$eq_call_616" = call %TName_Bool* @_eq_ByStr(i8* %"$execptr_load_613", %Bystr %"$$bs11_0_614", %Bystr %"$bs22_615") + store %TName_Bool* %"$eq_call_616", %TName_Bool** %b23 + %"$gasrem_617" = load i64, i64* @_gasrem + %"$gascmp_618" = icmp ugt i64 1, %"$gasrem_617" + br i1 %"$gascmp_618", label %"$out_of_gas_619", label %"$have_gas_620" + +"$out_of_gas_619": ; preds = %"$have_gas_611" + call void @_out_of_gas() + br label %"$have_gas_620" + +"$have_gas_620": ; preds = %"$out_of_gas_619", %"$have_gas_611" + %"$consume_621" = sub i64 %"$gasrem_617", 1 + store i64 %"$consume_621", i64* @_gasrem %b24 = alloca %TName_Bool* + %"$gasrem_622" = load i64, i64* @_gasrem + %"$gascmp_623" = icmp ugt i64 1, %"$gasrem_622" + br i1 %"$gascmp_623", label %"$out_of_gas_624", label %"$have_gas_625" + +"$out_of_gas_624": ; preds = %"$have_gas_620" + call void @_out_of_gas() + br label %"$have_gas_625" + +"$have_gas_625": ; preds = %"$out_of_gas_624", %"$have_gas_620" + %"$consume_626" = sub i64 %"$gasrem_622", 1 + store i64 %"$consume_626", i64* @_gasrem %"$negb_12" = alloca %TName_Bool* - %"$negb_262" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* @negb - %"$negb_fptr_263" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_262", 0 - %"$negb_envptr_264" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_262", 1 - %"$b23_265" = load %TName_Bool*, %TName_Bool** %b23 - %"$negb_call_266" = call %TName_Bool* %"$negb_fptr_263"(i8* %"$negb_envptr_264", %TName_Bool* %"$b23_265") - store %TName_Bool* %"$negb_call_266", %TName_Bool** %"$negb_12" - %"$$negb_12_267" = load %TName_Bool*, %TName_Bool** %"$negb_12" - store %TName_Bool* %"$$negb_12_267", %TName_Bool** %b24 + %"$negb_627" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* @negb + %"$negb_fptr_628" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_627", 0 + %"$negb_envptr_629" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_627", 1 + %"$b23_630" = load %TName_Bool*, %TName_Bool** %b23 + %"$negb_call_631" = call %TName_Bool* %"$negb_fptr_628"(i8* %"$negb_envptr_629", %TName_Bool* %"$b23_630") + store %TName_Bool* %"$negb_call_631", %TName_Bool** %"$negb_12" + %"$$negb_12_632" = load %TName_Bool*, %TName_Bool** %"$negb_12" + store %TName_Bool* %"$$negb_12_632", %TName_Bool** %b24 + %"$gasrem_633" = load i64, i64* @_gasrem + %"$gascmp_634" = icmp ugt i64 1, %"$gasrem_633" + br i1 %"$gascmp_634", label %"$out_of_gas_635", label %"$have_gas_636" + +"$out_of_gas_635": ; preds = %"$have_gas_625" + call void @_out_of_gas() + br label %"$have_gas_636" + +"$have_gas_636": ; preds = %"$out_of_gas_635", %"$have_gas_625" + %"$consume_637" = sub i64 %"$gasrem_633", 1 + store i64 %"$consume_637", i64* @_gasrem %b25 = alloca %TName_Bool* + %"$gasrem_638" = load i64, i64* @_gasrem + %"$gascmp_639" = icmp ugt i64 1, %"$gasrem_638" + br i1 %"$gascmp_639", label %"$out_of_gas_640", label %"$have_gas_641" + +"$out_of_gas_640": ; preds = %"$have_gas_636" + call void @_out_of_gas() + br label %"$have_gas_641" + +"$have_gas_641": ; preds = %"$out_of_gas_640", %"$have_gas_636" + %"$consume_642" = sub i64 %"$gasrem_638", 1 + store i64 %"$consume_642", i64* @_gasrem %"$andb_13" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$andb_268" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb - %"$andb_fptr_269" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_268", 0 - %"$andb_envptr_270" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_268", 1 - %"$b22_271" = load %TName_Bool*, %TName_Bool** %b22 - %"$andb_call_272" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_269"(i8* %"$andb_envptr_270", %TName_Bool* %"$b22_271") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_272", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_13" + %"$andb_643" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb + %"$andb_fptr_644" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_643", 0 + %"$andb_envptr_645" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_643", 1 + %"$b22_646" = load %TName_Bool*, %TName_Bool** %b22 + %"$andb_call_647" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_644"(i8* %"$andb_envptr_645", %TName_Bool* %"$b22_646") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_647", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_13" %"$andb_14" = alloca %TName_Bool* - %"$$andb_13_273" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_13" - %"$$andb_13_fptr_274" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_13_273", 0 - %"$$andb_13_envptr_275" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_13_273", 1 - %"$b24_276" = load %TName_Bool*, %TName_Bool** %b24 - %"$$andb_13_call_277" = call %TName_Bool* %"$$andb_13_fptr_274"(i8* %"$$andb_13_envptr_275", %TName_Bool* %"$b24_276") - store %TName_Bool* %"$$andb_13_call_277", %TName_Bool** %"$andb_14" - %"$$andb_14_278" = load %TName_Bool*, %TName_Bool** %"$andb_14" - store %TName_Bool* %"$$andb_14_278", %TName_Bool** %b25 - %"$b25_279" = load %TName_Bool*, %TName_Bool** %b25 - store %TName_Bool* %"$b25_279", %TName_Bool** %"$expr_25" - %"$$expr_25_280" = load %TName_Bool*, %TName_Bool** %"$expr_25" - ret %TName_Bool* %"$$expr_25_280" + %"$$andb_13_648" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_13" + %"$$andb_13_fptr_649" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_13_648", 0 + %"$$andb_13_envptr_650" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_13_648", 1 + %"$b24_651" = load %TName_Bool*, %TName_Bool** %b24 + %"$$andb_13_call_652" = call %TName_Bool* %"$$andb_13_fptr_649"(i8* %"$$andb_13_envptr_650", %TName_Bool* %"$b24_651") + store %TName_Bool* %"$$andb_13_call_652", %TName_Bool** %"$andb_14" + %"$$andb_14_653" = load %TName_Bool*, %TName_Bool** %"$andb_14" + store %TName_Bool* %"$$andb_14_653", %TName_Bool** %b25 + %"$gasrem_654" = load i64, i64* @_gasrem + %"$gascmp_655" = icmp ugt i64 1, %"$gasrem_654" + br i1 %"$gascmp_655", label %"$out_of_gas_656", label %"$have_gas_657" + +"$out_of_gas_656": ; preds = %"$have_gas_641" + call void @_out_of_gas() + br label %"$have_gas_657" + +"$have_gas_657": ; preds = %"$out_of_gas_656", %"$have_gas_641" + %"$consume_658" = sub i64 %"$gasrem_654", 1 + store i64 %"$consume_658", i64* @_gasrem + %"$b25_659" = load %TName_Bool*, %TName_Bool** %b25 + store %TName_Bool* %"$b25_659", %TName_Bool** %"$expr_25" + %"$$expr_25_660" = load %TName_Bool*, %TName_Bool** %"$expr_25" + ret %TName_Bool* %"$$expr_25_660" } declare %TName_Bool* @_eq_Uint128(i8*, %Uint128, %Uint128) @@ -523,8 +1362,8 @@ declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_281" = call %TName_Bool* @"$scilla_expr_138"(i8* null) - %"$memvoidcast_282" = bitcast %TName_Bool* %"$exprval_281" to i8* - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_62", i8* %"$memvoidcast_282") + %"$exprval_661" = call %TName_Bool* @"$scilla_expr_193"(i8* null) + %"$memvoidcast_662" = bitcast %TName_Bool* %"$exprval_661" to i8* + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_62", i8* %"$memvoidcast_662") ret void } diff --git a/testsuite/expr/builtin_eq.ll.result b/testsuite/expr/builtin_eq.ll.result index 57f367a6..766faa8f 100644 --- a/testsuite/expr/builtin_eq.ll.result +++ b/testsuite/expr/builtin_eq.ll.result @@ -1 +1,2 @@ True : Bool +Gas remaining: 9999905 diff --git a/testsuite/expr/builtin_map.ll b/testsuite/expr/builtin_map.ll index 5d3e8fa0..e53b8052 100644 --- a/testsuite/expr/builtin_map.ll +++ b/testsuite/expr/builtin_map.ll @@ -60,6 +60,7 @@ target triple = "x86_64-pc-linux-gnu" %"CName_None_Option_(Map_(Uint32)_(Uint32))" = type <{ i8 }> @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_11" = global %"$TyDescrTy_PrimTyp_10" zeroinitializer @"$TyDescr_Int32_12" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_10"* @"$TyDescr_Int32_Prim_11" to i8*) } @"$TyDescr_Uint32_Prim_13" = global %"$TyDescrTy_PrimTyp_10" { i32 1, i32 0 } @@ -132,290 +133,710 @@ target triple = "x86_64-pc-linux-gnu" define internal %Uint32 @"$fundef_8"(%"$$fundef_8_env_83"* %0, %TName_Bool* %1) { entry: %"$retval_9" = alloca %Uint32 - %"$b_tag_85" = getelementptr inbounds %TName_Bool, %TName_Bool* %1, i32 0, i32 0 - %"$b_tag_86" = load i8, i8* %"$b_tag_85" - switch i8 %"$b_tag_86", label %"$empty_default_87" [ - i8 0, label %"$True_88" - i8 1, label %"$False_90" + %"$gasrem_84" = load i64, i64* @_gasrem + %"$gascmp_85" = icmp ugt i64 2, %"$gasrem_84" + br i1 %"$gascmp_85", label %"$out_of_gas_86", label %"$have_gas_87" + +"$out_of_gas_86": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_87" + +"$have_gas_87": ; preds = %"$out_of_gas_86", %entry + %"$consume_88" = sub i64 %"$gasrem_84", 2 + store i64 %"$consume_88", i64* @_gasrem + %"$b_tag_90" = getelementptr inbounds %TName_Bool, %TName_Bool* %1, i32 0, i32 0 + %"$b_tag_91" = load i8, i8* %"$b_tag_90" + switch i8 %"$b_tag_91", label %"$empty_default_92" [ + i8 0, label %"$True_93" + i8 1, label %"$False_100" ] -"$True_88": ; preds = %entry - %"$b_89" = bitcast %TName_Bool* %1 to %CName_True* +"$True_93": ; preds = %"$have_gas_87" + %"$b_94" = bitcast %TName_Bool* %1 to %CName_True* + %"$gasrem_95" = load i64, i64* @_gasrem + %"$gascmp_96" = icmp ugt i64 1, %"$gasrem_95" + br i1 %"$gascmp_96", label %"$out_of_gas_97", label %"$have_gas_98" + +"$out_of_gas_97": ; preds = %"$True_93" + call void @_out_of_gas() + br label %"$have_gas_98" + +"$have_gas_98": ; preds = %"$out_of_gas_97", %"$True_93" + %"$consume_99" = sub i64 %"$gasrem_95", 1 + store i64 %"$consume_99", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %"$retval_9" - br label %"$matchsucc_84" + br label %"$matchsucc_89" + +"$False_100": ; preds = %"$have_gas_87" + %"$b_101" = bitcast %TName_Bool* %1 to %CName_False* + %"$gasrem_102" = load i64, i64* @_gasrem + %"$gascmp_103" = icmp ugt i64 1, %"$gasrem_102" + br i1 %"$gascmp_103", label %"$out_of_gas_104", label %"$have_gas_105" -"$False_90": ; preds = %entry - %"$b_91" = bitcast %TName_Bool* %1 to %CName_False* +"$out_of_gas_104": ; preds = %"$False_100" + call void @_out_of_gas() + br label %"$have_gas_105" + +"$have_gas_105": ; preds = %"$out_of_gas_104", %"$False_100" + %"$consume_106" = sub i64 %"$gasrem_102", 1 + store i64 %"$consume_106", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %"$retval_9" - br label %"$matchsucc_84" + br label %"$matchsucc_89" -"$empty_default_87": ; preds = %entry - br label %"$matchsucc_84" +"$empty_default_92": ; preds = %"$have_gas_87" + br label %"$matchsucc_89" -"$matchsucc_84": ; preds = %"$False_90", %"$True_88", %"$empty_default_87" - %"$$retval_9_92" = load %Uint32, %Uint32* %"$retval_9" - ret %Uint32 %"$$retval_9_92" +"$matchsucc_89": ; preds = %"$have_gas_105", %"$have_gas_98", %"$empty_default_92" + %"$$retval_9_107" = load %Uint32, %Uint32* %"$retval_9" + ret %Uint32 %"$$retval_9_107" } +declare void @_out_of_gas() + define void @_init_libs() { entry: ret void } -define internal %Uint32 @"$scilla_expr_93"(i8* %0) { +define internal %Uint32 @"$scilla_expr_108"(i8* %0) { entry: %"$expr_7" = alloca %Uint32 + %"$gasrem_109" = load i64, i64* @_gasrem + %"$gascmp_110" = icmp ugt i64 1, %"$gasrem_109" + br i1 %"$gascmp_110", label %"$out_of_gas_111", label %"$have_gas_112" + +"$out_of_gas_111": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_112" + +"$have_gas_112": ; preds = %"$out_of_gas_111", %entry + %"$consume_113" = sub i64 %"$gasrem_109", 1 + store i64 %"$consume_113", i64* @_gasrem %bool_to_uint = alloca { %Uint32 (i8*, %TName_Bool*)*, i8* } + %"$gasrem_114" = load i64, i64* @_gasrem + %"$gascmp_115" = icmp ugt i64 1, %"$gasrem_114" + br i1 %"$gascmp_115", label %"$out_of_gas_116", label %"$have_gas_117" + +"$out_of_gas_116": ; preds = %"$have_gas_112" + call void @_out_of_gas() + br label %"$have_gas_117" + +"$have_gas_117": ; preds = %"$out_of_gas_116", %"$have_gas_112" + %"$consume_118" = sub i64 %"$gasrem_114", 1 + store i64 %"$consume_118", i64* @_gasrem store { %Uint32 (i8*, %TName_Bool*)*, i8* } { %Uint32 (i8*, %TName_Bool*)* bitcast (%Uint32 (%"$$fundef_8_env_83"*, %TName_Bool*)* @"$fundef_8" to %Uint32 (i8*, %TName_Bool*)*), i8* null }, { %Uint32 (i8*, %TName_Bool*)*, i8* }* %bool_to_uint + %"$gasrem_122" = load i64, i64* @_gasrem + %"$gascmp_123" = icmp ugt i64 1, %"$gasrem_122" + br i1 %"$gascmp_123", label %"$out_of_gas_124", label %"$have_gas_125" + +"$out_of_gas_124": ; preds = %"$have_gas_117" + call void @_out_of_gas() + br label %"$have_gas_125" + +"$have_gas_125": ; preds = %"$out_of_gas_124", %"$have_gas_117" + %"$consume_126" = sub i64 %"$gasrem_122", 1 + store i64 %"$consume_126", i64* @_gasrem %i0 = alloca %Uint32 + %"$gasrem_127" = load i64, i64* @_gasrem + %"$gascmp_128" = icmp ugt i64 1, %"$gasrem_127" + br i1 %"$gascmp_128", label %"$out_of_gas_129", label %"$have_gas_130" + +"$out_of_gas_129": ; preds = %"$have_gas_125" + call void @_out_of_gas() + br label %"$have_gas_130" + +"$have_gas_130": ; preds = %"$out_of_gas_129", %"$have_gas_125" + %"$consume_131" = sub i64 %"$gasrem_127", 1 + store i64 %"$consume_131", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %i0 + %"$gasrem_132" = load i64, i64* @_gasrem + %"$gascmp_133" = icmp ugt i64 1, %"$gasrem_132" + br i1 %"$gascmp_133", label %"$out_of_gas_134", label %"$have_gas_135" + +"$out_of_gas_134": ; preds = %"$have_gas_130" + call void @_out_of_gas() + br label %"$have_gas_135" + +"$have_gas_135": ; preds = %"$out_of_gas_134", %"$have_gas_130" + %"$consume_136" = sub i64 %"$gasrem_132", 1 + store i64 %"$consume_136", i64* @_gasrem %i1 = alloca %Uint32 + %"$gasrem_137" = load i64, i64* @_gasrem + %"$gascmp_138" = icmp ugt i64 1, %"$gasrem_137" + br i1 %"$gascmp_138", label %"$out_of_gas_139", label %"$have_gas_140" + +"$out_of_gas_139": ; preds = %"$have_gas_135" + call void @_out_of_gas() + br label %"$have_gas_140" + +"$have_gas_140": ; preds = %"$out_of_gas_139", %"$have_gas_135" + %"$consume_141" = sub i64 %"$gasrem_137", 1 + store i64 %"$consume_141", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %i1 + %"$gasrem_142" = load i64, i64* @_gasrem + %"$gascmp_143" = icmp ugt i64 1, %"$gasrem_142" + br i1 %"$gascmp_143", label %"$out_of_gas_144", label %"$have_gas_145" + +"$out_of_gas_144": ; preds = %"$have_gas_140" + call void @_out_of_gas() + br label %"$have_gas_145" + +"$have_gas_145": ; preds = %"$out_of_gas_144", %"$have_gas_140" + %"$consume_146" = sub i64 %"$gasrem_142", 1 + store i64 %"$consume_146", i64* @_gasrem %a = alloca %Map_Uint32_Uint32* - %"$execptr_load_97" = load i8*, i8** @_execptr - %"$_new_empty_map_call_98" = call i8* @_new_empty_map(i8* %"$execptr_load_97") - %"$Emp_99" = bitcast i8* %"$_new_empty_map_call_98" to %Map_Uint32_Uint32* - store %Map_Uint32_Uint32* %"$Emp_99", %Map_Uint32_Uint32** %a + %"$gasrem_147" = load i64, i64* @_gasrem + %"$gascmp_148" = icmp ugt i64 1, %"$gasrem_147" + br i1 %"$gascmp_148", label %"$out_of_gas_149", label %"$have_gas_150" + +"$out_of_gas_149": ; preds = %"$have_gas_145" + call void @_out_of_gas() + br label %"$have_gas_150" + +"$have_gas_150": ; preds = %"$out_of_gas_149", %"$have_gas_145" + %"$consume_151" = sub i64 %"$gasrem_147", 1 + store i64 %"$consume_151", i64* @_gasrem + %"$execptr_load_152" = load i8*, i8** @_execptr + %"$_new_empty_map_call_153" = call i8* @_new_empty_map(i8* %"$execptr_load_152") + %"$Emp_154" = bitcast i8* %"$_new_empty_map_call_153" to %Map_Uint32_Uint32* + store %Map_Uint32_Uint32* %"$Emp_154", %Map_Uint32_Uint32** %a + %"$gasrem_155" = load i64, i64* @_gasrem + %"$gascmp_156" = icmp ugt i64 1, %"$gasrem_155" + br i1 %"$gascmp_156", label %"$out_of_gas_157", label %"$have_gas_158" + +"$out_of_gas_157": ; preds = %"$have_gas_150" + call void @_out_of_gas() + br label %"$have_gas_158" + +"$have_gas_158": ; preds = %"$out_of_gas_157", %"$have_gas_150" + %"$consume_159" = sub i64 %"$gasrem_155", 1 + store i64 %"$consume_159", i64* @_gasrem %a1 = alloca %Map_Uint32_Uint32* - %"$execptr_load_100" = load i8*, i8** @_execptr - %"$a_101" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %a - %"$$a_101_102" = bitcast %Map_Uint32_Uint32* %"$a_101" to i8* - %"$put_i0_103" = alloca %Uint32 - %"$i0_104" = load %Uint32, %Uint32* %i0 - store %Uint32 %"$i0_104", %Uint32* %"$put_i0_103" - %"$$put_i0_103_105" = bitcast %Uint32* %"$put_i0_103" to i8* - %"$put_i1_106" = alloca %Uint32 - %"$i1_107" = load %Uint32, %Uint32* %i1 - store %Uint32 %"$i1_107", %Uint32* %"$put_i1_106" - %"$$put_i1_106_108" = bitcast %Uint32* %"$put_i1_106" to i8* - %"$put_call_109" = call i8* @_put(i8* %"$execptr_load_100", %_TyDescrTy_Typ* @"$TyDescr_Map_47", i8* %"$$a_101_102", i8* %"$$put_i0_103_105", i8* %"$$put_i1_106_108") - %"$_put_110" = bitcast i8* %"$put_call_109" to %Map_Uint32_Uint32* - store %Map_Uint32_Uint32* %"$_put_110", %Map_Uint32_Uint32** %a1 + %"$execptr_load_160" = load i8*, i8** @_execptr + %"$a_161" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %a + %"$$a_161_162" = bitcast %Map_Uint32_Uint32* %"$a_161" to i8* + %"$put_i0_163" = alloca %Uint32 + %"$i0_164" = load %Uint32, %Uint32* %i0 + store %Uint32 %"$i0_164", %Uint32* %"$put_i0_163" + %"$$put_i0_163_165" = bitcast %Uint32* %"$put_i0_163" to i8* + %"$put_i1_166" = alloca %Uint32 + %"$i1_167" = load %Uint32, %Uint32* %i1 + store %Uint32 %"$i1_167", %Uint32* %"$put_i1_166" + %"$$put_i1_166_168" = bitcast %Uint32* %"$put_i1_166" to i8* + %"$put_call_169" = call i8* @_put(i8* %"$execptr_load_160", %_TyDescrTy_Typ* @"$TyDescr_Map_47", i8* %"$$a_161_162", i8* %"$$put_i0_163_165", i8* %"$$put_i1_166_168") + %"$_put_170" = bitcast i8* %"$put_call_169" to %Map_Uint32_Uint32* + store %Map_Uint32_Uint32* %"$_put_170", %Map_Uint32_Uint32** %a1 + %"$gasrem_171" = load i64, i64* @_gasrem + %"$gascmp_172" = icmp ugt i64 1, %"$gasrem_171" + br i1 %"$gascmp_172", label %"$out_of_gas_173", label %"$have_gas_174" + +"$out_of_gas_173": ; preds = %"$have_gas_158" + call void @_out_of_gas() + br label %"$have_gas_174" + +"$have_gas_174": ; preds = %"$out_of_gas_173", %"$have_gas_158" + %"$consume_175" = sub i64 %"$gasrem_171", 1 + store i64 %"$consume_175", i64* @_gasrem %o = alloca %"TName_Option_Map_(Uint32)_(Uint32)"* - %"$a1_111" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %a1 - %"$adtval_112_load" = load i8*, i8** @_execptr - %"$adtval_112_salloc" = call i8* @_salloc(i8* %"$adtval_112_load", i64 9) - %"$adtval_112" = bitcast i8* %"$adtval_112_salloc" to %"CName_Some_Map_(Uint32)_(Uint32)"* - %"$adtgep_113" = getelementptr inbounds %"CName_Some_Map_(Uint32)_(Uint32)", %"CName_Some_Map_(Uint32)_(Uint32)"* %"$adtval_112", i32 0, i32 0 - store i8 0, i8* %"$adtgep_113" - %"$adtgep_114" = getelementptr inbounds %"CName_Some_Map_(Uint32)_(Uint32)", %"CName_Some_Map_(Uint32)_(Uint32)"* %"$adtval_112", i32 0, i32 1 - store %Map_Uint32_Uint32* %"$a1_111", %Map_Uint32_Uint32** %"$adtgep_114" - %"$adtptr_115" = bitcast %"CName_Some_Map_(Uint32)_(Uint32)"* %"$adtval_112" to %"TName_Option_Map_(Uint32)_(Uint32)"* - store %"TName_Option_Map_(Uint32)_(Uint32)"* %"$adtptr_115", %"TName_Option_Map_(Uint32)_(Uint32)"** %o + %"$gasrem_176" = load i64, i64* @_gasrem + %"$gascmp_177" = icmp ugt i64 1, %"$gasrem_176" + br i1 %"$gascmp_177", label %"$out_of_gas_178", label %"$have_gas_179" + +"$out_of_gas_178": ; preds = %"$have_gas_174" + call void @_out_of_gas() + br label %"$have_gas_179" + +"$have_gas_179": ; preds = %"$out_of_gas_178", %"$have_gas_174" + %"$consume_180" = sub i64 %"$gasrem_176", 1 + store i64 %"$consume_180", i64* @_gasrem + %"$a1_181" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %a1 + %"$adtval_182_load" = load i8*, i8** @_execptr + %"$adtval_182_salloc" = call i8* @_salloc(i8* %"$adtval_182_load", i64 9) + %"$adtval_182" = bitcast i8* %"$adtval_182_salloc" to %"CName_Some_Map_(Uint32)_(Uint32)"* + %"$adtgep_183" = getelementptr inbounds %"CName_Some_Map_(Uint32)_(Uint32)", %"CName_Some_Map_(Uint32)_(Uint32)"* %"$adtval_182", i32 0, i32 0 + store i8 0, i8* %"$adtgep_183" + %"$adtgep_184" = getelementptr inbounds %"CName_Some_Map_(Uint32)_(Uint32)", %"CName_Some_Map_(Uint32)_(Uint32)"* %"$adtval_182", i32 0, i32 1 + store %Map_Uint32_Uint32* %"$a1_181", %Map_Uint32_Uint32** %"$adtgep_184" + %"$adtptr_185" = bitcast %"CName_Some_Map_(Uint32)_(Uint32)"* %"$adtval_182" to %"TName_Option_Map_(Uint32)_(Uint32)"* + store %"TName_Option_Map_(Uint32)_(Uint32)"* %"$adtptr_185", %"TName_Option_Map_(Uint32)_(Uint32)"** %o + %"$gasrem_186" = load i64, i64* @_gasrem + %"$gascmp_187" = icmp ugt i64 1, %"$gasrem_186" + br i1 %"$gascmp_187", label %"$out_of_gas_188", label %"$have_gas_189" + +"$out_of_gas_188": ; preds = %"$have_gas_179" + call void @_out_of_gas() + br label %"$have_gas_189" + +"$have_gas_189": ; preds = %"$out_of_gas_188", %"$have_gas_179" + %"$consume_190" = sub i64 %"$gasrem_186", 1 + store i64 %"$consume_190", i64* @_gasrem %b = alloca %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"* - %"$execptr_load_116" = load i8*, i8** @_execptr - %"$_new_empty_map_call_117" = call i8* @_new_empty_map(i8* %"$execptr_load_116") - %"$Emp_118" = bitcast i8* %"$_new_empty_map_call_117" to %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"* - store %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"* %"$Emp_118", %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"** %b + %"$gasrem_191" = load i64, i64* @_gasrem + %"$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_189" + call void @_out_of_gas() + br label %"$have_gas_194" + +"$have_gas_194": ; preds = %"$out_of_gas_193", %"$have_gas_189" + %"$consume_195" = sub i64 %"$gasrem_191", 1 + store i64 %"$consume_195", i64* @_gasrem + %"$execptr_load_196" = load i8*, i8** @_execptr + %"$_new_empty_map_call_197" = call i8* @_new_empty_map(i8* %"$execptr_load_196") + %"$Emp_198" = bitcast i8* %"$_new_empty_map_call_197" to %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"* + store %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"* %"$Emp_198", %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"** %b + %"$gasrem_199" = load i64, i64* @_gasrem + %"$gascmp_200" = icmp ugt i64 1, %"$gasrem_199" + br i1 %"$gascmp_200", label %"$out_of_gas_201", label %"$have_gas_202" + +"$out_of_gas_201": ; preds = %"$have_gas_194" + call void @_out_of_gas() + br label %"$have_gas_202" + +"$have_gas_202": ; preds = %"$out_of_gas_201", %"$have_gas_194" + %"$consume_203" = sub i64 %"$gasrem_199", 1 + store i64 %"$consume_203", i64* @_gasrem %b1 = alloca %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"* - %"$execptr_load_119" = load i8*, i8** @_execptr - %"$b_120" = load %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"*, %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"** %b - %"$$b_120_121" = bitcast %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"* %"$b_120" to i8* - %"$put_i1_122" = alloca %Uint32 - %"$i1_123" = load %Uint32, %Uint32* %i1 - store %Uint32 %"$i1_123", %Uint32* %"$put_i1_122" - %"$$put_i1_122_124" = bitcast %Uint32* %"$put_i1_122" to i8* - %"$o_125" = load %"TName_Option_Map_(Uint32)_(Uint32)"*, %"TName_Option_Map_(Uint32)_(Uint32)"** %o - %"$$o_125_126" = bitcast %"TName_Option_Map_(Uint32)_(Uint32)"* %"$o_125" to i8* - %"$put_call_127" = call i8* @_put(i8* %"$execptr_load_119", %_TyDescrTy_Typ* @"$TyDescr_Map_46", i8* %"$$b_120_121", i8* %"$$put_i1_122_124", i8* %"$$o_125_126") - %"$_put_128" = bitcast i8* %"$put_call_127" to %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"* - store %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"* %"$_put_128", %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"** %b1 + %"$execptr_load_204" = load i8*, i8** @_execptr + %"$b_205" = load %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"*, %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"** %b + %"$$b_205_206" = bitcast %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"* %"$b_205" to i8* + %"$put_i1_207" = alloca %Uint32 + %"$i1_208" = load %Uint32, %Uint32* %i1 + store %Uint32 %"$i1_208", %Uint32* %"$put_i1_207" + %"$$put_i1_207_209" = bitcast %Uint32* %"$put_i1_207" to i8* + %"$o_210" = load %"TName_Option_Map_(Uint32)_(Uint32)"*, %"TName_Option_Map_(Uint32)_(Uint32)"** %o + %"$$o_210_211" = bitcast %"TName_Option_Map_(Uint32)_(Uint32)"* %"$o_210" to i8* + %"$put_call_212" = call i8* @_put(i8* %"$execptr_load_204", %_TyDescrTy_Typ* @"$TyDescr_Map_46", i8* %"$$b_205_206", i8* %"$$put_i1_207_209", i8* %"$$o_210_211") + %"$_put_213" = bitcast i8* %"$put_call_212" to %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"* + store %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"* %"$_put_213", %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"** %b1 + %"$gasrem_214" = load i64, i64* @_gasrem + %"$gascmp_215" = icmp ugt i64 1, %"$gasrem_214" + br i1 %"$gascmp_215", label %"$out_of_gas_216", label %"$have_gas_217" + +"$out_of_gas_216": ; preds = %"$have_gas_202" + call void @_out_of_gas() + br label %"$have_gas_217" + +"$have_gas_217": ; preds = %"$out_of_gas_216", %"$have_gas_202" + %"$consume_218" = sub i64 %"$gasrem_214", 1 + store i64 %"$consume_218", i64* @_gasrem %res1 = alloca %"TName_Option_Option_(Map_(Uint32)_(Uint32))"* - %"$execptr_load_129" = load i8*, i8** @_execptr - %"$b1_130" = load %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"*, %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"** %b1 - %"$$b1_130_131" = bitcast %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"* %"$b1_130" to i8* - %"$get_i1_132" = alloca %Uint32 - %"$i1_133" = load %Uint32, %Uint32* %i1 - store %Uint32 %"$i1_133", %Uint32* %"$get_i1_132" - %"$$get_i1_132_134" = bitcast %Uint32* %"$get_i1_132" to i8* - %"$get_call_135" = call i8* @_get(i8* %"$execptr_load_129", %_TyDescrTy_Typ* @"$TyDescr_Map_46", i8* %"$$b1_130_131", i8* %"$$get_i1_132_134") - %"$_get_136" = bitcast i8* %"$get_call_135" to %"TName_Option_Option_(Map_(Uint32)_(Uint32))"* - store %"TName_Option_Option_(Map_(Uint32)_(Uint32))"* %"$_get_136", %"TName_Option_Option_(Map_(Uint32)_(Uint32))"** %res1 - %"$res1_152" = load %"TName_Option_Option_(Map_(Uint32)_(Uint32))"*, %"TName_Option_Option_(Map_(Uint32)_(Uint32))"** %res1 - %"$res1_tag_153" = getelementptr inbounds %"TName_Option_Option_(Map_(Uint32)_(Uint32))", %"TName_Option_Option_(Map_(Uint32)_(Uint32))"* %"$res1_152", i32 0, i32 0 - %"$res1_tag_154" = load i8, i8* %"$res1_tag_153" - switch i8 %"$res1_tag_154", label %"$default_155" [ - i8 0, label %"$Some_156" + %"$execptr_load_219" = load i8*, i8** @_execptr + %"$b1_220" = load %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"*, %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"** %b1 + %"$$b1_220_221" = bitcast %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"* %"$b1_220" to i8* + %"$get_i1_222" = alloca %Uint32 + %"$i1_223" = load %Uint32, %Uint32* %i1 + store %Uint32 %"$i1_223", %Uint32* %"$get_i1_222" + %"$$get_i1_222_224" = bitcast %Uint32* %"$get_i1_222" to i8* + %"$get_call_225" = call i8* @_get(i8* %"$execptr_load_219", %_TyDescrTy_Typ* @"$TyDescr_Map_46", i8* %"$$b1_220_221", i8* %"$$get_i1_222_224") + %"$_get_226" = bitcast i8* %"$get_call_225" to %"TName_Option_Option_(Map_(Uint32)_(Uint32))"* + store %"TName_Option_Option_(Map_(Uint32)_(Uint32))"* %"$_get_226", %"TName_Option_Option_(Map_(Uint32)_(Uint32))"** %res1 + %"$gasrem_227" = load i64, i64* @_gasrem + %"$gascmp_228" = icmp ugt i64 2, %"$gasrem_227" + br i1 %"$gascmp_228", label %"$out_of_gas_229", label %"$have_gas_230" + +"$out_of_gas_229": ; preds = %"$have_gas_217" + call void @_out_of_gas() + br label %"$have_gas_230" + +"$have_gas_230": ; preds = %"$out_of_gas_229", %"$have_gas_217" + %"$consume_231" = sub i64 %"$gasrem_227", 2 + store i64 %"$consume_231", i64* @_gasrem + %"$res1_267" = load %"TName_Option_Option_(Map_(Uint32)_(Uint32))"*, %"TName_Option_Option_(Map_(Uint32)_(Uint32))"** %res1 + %"$res1_tag_268" = getelementptr inbounds %"TName_Option_Option_(Map_(Uint32)_(Uint32))", %"TName_Option_Option_(Map_(Uint32)_(Uint32))"* %"$res1_267", i32 0, i32 0 + %"$res1_tag_269" = load i8, i8* %"$res1_tag_268" + switch i8 %"$res1_tag_269", label %"$default_270" [ + i8 0, label %"$Some_271" ] -"$Some_156": ; preds = %entry - %"$res1_157" = bitcast %"TName_Option_Option_(Map_(Uint32)_(Uint32))"* %"$res1_152" to %"CName_Some_Option_(Map_(Uint32)_(Uint32))"* - %"$$res1_2_gep_158" = getelementptr inbounds %"CName_Some_Option_(Map_(Uint32)_(Uint32))", %"CName_Some_Option_(Map_(Uint32)_(Uint32))"* %"$res1_157", i32 0, i32 1 - %"$$res1_2_load_159" = load %"TName_Option_Map_(Uint32)_(Uint32)"*, %"TName_Option_Map_(Uint32)_(Uint32)"** %"$$res1_2_gep_158" +"$Some_271": ; preds = %"$have_gas_230" + %"$res1_272" = bitcast %"TName_Option_Option_(Map_(Uint32)_(Uint32))"* %"$res1_267" to %"CName_Some_Option_(Map_(Uint32)_(Uint32))"* + %"$$res1_2_gep_273" = getelementptr inbounds %"CName_Some_Option_(Map_(Uint32)_(Uint32))", %"CName_Some_Option_(Map_(Uint32)_(Uint32))"* %"$res1_272", i32 0, i32 1 + %"$$res1_2_load_274" = load %"TName_Option_Map_(Uint32)_(Uint32)"*, %"TName_Option_Map_(Uint32)_(Uint32)"** %"$$res1_2_gep_273" %"$res1_2" = alloca %"TName_Option_Map_(Uint32)_(Uint32)"* - store %"TName_Option_Map_(Uint32)_(Uint32)"* %"$$res1_2_load_159", %"TName_Option_Map_(Uint32)_(Uint32)"** %"$res1_2" - %"$$res1_2_161" = load %"TName_Option_Map_(Uint32)_(Uint32)"*, %"TName_Option_Map_(Uint32)_(Uint32)"** %"$res1_2" - %"$$res1_2_tag_162" = getelementptr inbounds %"TName_Option_Map_(Uint32)_(Uint32)", %"TName_Option_Map_(Uint32)_(Uint32)"* %"$$res1_2_161", i32 0, i32 0 - %"$$res1_2_tag_163" = load i8, i8* %"$$res1_2_tag_162" - switch i8 %"$$res1_2_tag_163", label %"$default_164" [ - i8 0, label %"$Some_165" + store %"TName_Option_Map_(Uint32)_(Uint32)"* %"$$res1_2_load_274", %"TName_Option_Map_(Uint32)_(Uint32)"** %"$res1_2" + %"$$res1_2_276" = load %"TName_Option_Map_(Uint32)_(Uint32)"*, %"TName_Option_Map_(Uint32)_(Uint32)"** %"$res1_2" + %"$$res1_2_tag_277" = getelementptr inbounds %"TName_Option_Map_(Uint32)_(Uint32)", %"TName_Option_Map_(Uint32)_(Uint32)"* %"$$res1_2_276", i32 0, i32 0 + %"$$res1_2_tag_278" = load i8, i8* %"$$res1_2_tag_277" + switch i8 %"$$res1_2_tag_278", label %"$default_279" [ + i8 0, label %"$Some_280" ] -"$Some_165": ; preds = %"$Some_156" - %"$$res1_2_166" = bitcast %"TName_Option_Map_(Uint32)_(Uint32)"* %"$$res1_2_161" to %"CName_Some_Map_(Uint32)_(Uint32)"* - %"$$a1_0_gep_167" = getelementptr inbounds %"CName_Some_Map_(Uint32)_(Uint32)", %"CName_Some_Map_(Uint32)_(Uint32)"* %"$$res1_2_166", i32 0, i32 1 - %"$$a1_0_load_168" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %"$$a1_0_gep_167" +"$Some_280": ; preds = %"$Some_271" + %"$$res1_2_281" = bitcast %"TName_Option_Map_(Uint32)_(Uint32)"* %"$$res1_2_276" to %"CName_Some_Map_(Uint32)_(Uint32)"* + %"$$a1_0_gep_282" = getelementptr inbounds %"CName_Some_Map_(Uint32)_(Uint32)", %"CName_Some_Map_(Uint32)_(Uint32)"* %"$$res1_2_281", i32 0, i32 1 + %"$$a1_0_load_283" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %"$$a1_0_gep_282" %"$a1_0" = alloca %Map_Uint32_Uint32* - store %Map_Uint32_Uint32* %"$$a1_0_load_168", %Map_Uint32_Uint32** %"$a1_0" + store %Map_Uint32_Uint32* %"$$a1_0_load_283", %Map_Uint32_Uint32** %"$a1_0" + %"$gasrem_284" = load i64, i64* @_gasrem + %"$gascmp_285" = icmp ugt i64 1, %"$gasrem_284" + br i1 %"$gascmp_285", label %"$out_of_gas_286", label %"$have_gas_287" + +"$out_of_gas_286": ; preds = %"$Some_280" + call void @_out_of_gas() + br label %"$have_gas_287" + +"$have_gas_287": ; preds = %"$out_of_gas_286", %"$Some_280" + %"$consume_288" = sub i64 %"$gasrem_284", 1 + store i64 %"$consume_288", i64* @_gasrem %p11 = alloca %TName_Bool* - %"$execptr_load_169" = load i8*, i8** @_execptr - %"$b1_170" = load %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"*, %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"** %b1 - %"$$b1_170_171" = bitcast %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"* %"$b1_170" to i8* - %"$contains_i1_172" = alloca %Uint32 - %"$i1_173" = load %Uint32, %Uint32* %i1 - store %Uint32 %"$i1_173", %Uint32* %"$contains_i1_172" - %"$$contains_i1_172_174" = bitcast %Uint32* %"$contains_i1_172" to i8* - %"$contains_call_175" = call %TName_Bool* @_contains(i8* %"$execptr_load_169", %_TyDescrTy_Typ* @"$TyDescr_Map_46", i8* %"$$b1_170_171", i8* %"$$contains_i1_172_174") - store %TName_Bool* %"$contains_call_175", %TName_Bool** %p11 + %"$execptr_load_289" = load i8*, i8** @_execptr + %"$b1_290" = load %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"*, %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"** %b1 + %"$$b1_290_291" = bitcast %"Map_Uint32_Option_(Map_(Uint32)_(Uint32))"* %"$b1_290" to i8* + %"$contains_i1_292" = alloca %Uint32 + %"$i1_293" = load %Uint32, %Uint32* %i1 + store %Uint32 %"$i1_293", %Uint32* %"$contains_i1_292" + %"$$contains_i1_292_294" = bitcast %Uint32* %"$contains_i1_292" to i8* + %"$contains_call_295" = call %TName_Bool* @_contains(i8* %"$execptr_load_289", %_TyDescrTy_Typ* @"$TyDescr_Map_46", i8* %"$$b1_290_291", i8* %"$$contains_i1_292_294") + store %TName_Bool* %"$contains_call_295", %TName_Bool** %p11 + %"$gasrem_296" = load i64, i64* @_gasrem + %"$gascmp_297" = icmp ugt i64 1, %"$gasrem_296" + br i1 %"$gascmp_297", label %"$out_of_gas_298", label %"$have_gas_299" + +"$out_of_gas_298": ; preds = %"$have_gas_287" + call void @_out_of_gas() + br label %"$have_gas_299" + +"$have_gas_299": ; preds = %"$out_of_gas_298", %"$have_gas_287" + %"$consume_300" = sub i64 %"$gasrem_296", 1 + store i64 %"$consume_300", i64* @_gasrem %p1_i = alloca %Uint32 + %"$gasrem_301" = load i64, i64* @_gasrem + %"$gascmp_302" = icmp ugt i64 1, %"$gasrem_301" + br i1 %"$gascmp_302", label %"$out_of_gas_303", label %"$have_gas_304" + +"$out_of_gas_303": ; preds = %"$have_gas_299" + call void @_out_of_gas() + br label %"$have_gas_304" + +"$have_gas_304": ; preds = %"$out_of_gas_303", %"$have_gas_299" + %"$consume_305" = sub i64 %"$gasrem_301", 1 + store i64 %"$consume_305", i64* @_gasrem %"$bool_to_uint_3" = alloca %Uint32 - %"$bool_to_uint_176" = load { %Uint32 (i8*, %TName_Bool*)*, i8* }, { %Uint32 (i8*, %TName_Bool*)*, i8* }* %bool_to_uint - %"$bool_to_uint_fptr_177" = extractvalue { %Uint32 (i8*, %TName_Bool*)*, i8* } %"$bool_to_uint_176", 0 - %"$bool_to_uint_envptr_178" = extractvalue { %Uint32 (i8*, %TName_Bool*)*, i8* } %"$bool_to_uint_176", 1 - %"$p1_179" = load %TName_Bool*, %TName_Bool** %p11 - %"$bool_to_uint_call_180" = call %Uint32 %"$bool_to_uint_fptr_177"(i8* %"$bool_to_uint_envptr_178", %TName_Bool* %"$p1_179") - store %Uint32 %"$bool_to_uint_call_180", %Uint32* %"$bool_to_uint_3" - %"$$bool_to_uint_3_181" = load %Uint32, %Uint32* %"$bool_to_uint_3" - store %Uint32 %"$$bool_to_uint_3_181", %Uint32* %p1_i + %"$bool_to_uint_306" = load { %Uint32 (i8*, %TName_Bool*)*, i8* }, { %Uint32 (i8*, %TName_Bool*)*, i8* }* %bool_to_uint + %"$bool_to_uint_fptr_307" = extractvalue { %Uint32 (i8*, %TName_Bool*)*, i8* } %"$bool_to_uint_306", 0 + %"$bool_to_uint_envptr_308" = extractvalue { %Uint32 (i8*, %TName_Bool*)*, i8* } %"$bool_to_uint_306", 1 + %"$p1_309" = load %TName_Bool*, %TName_Bool** %p11 + %"$bool_to_uint_call_310" = call %Uint32 %"$bool_to_uint_fptr_307"(i8* %"$bool_to_uint_envptr_308", %TName_Bool* %"$p1_309") + store %Uint32 %"$bool_to_uint_call_310", %Uint32* %"$bool_to_uint_3" + %"$$bool_to_uint_3_311" = load %Uint32, %Uint32* %"$bool_to_uint_3" + store %Uint32 %"$$bool_to_uint_3_311", %Uint32* %p1_i + %"$gasrem_312" = load i64, i64* @_gasrem + %"$gascmp_313" = icmp ugt i64 1, %"$gasrem_312" + br i1 %"$gascmp_313", label %"$out_of_gas_314", label %"$have_gas_315" + +"$out_of_gas_314": ; preds = %"$have_gas_304" + call void @_out_of_gas() + br label %"$have_gas_315" + +"$have_gas_315": ; preds = %"$out_of_gas_314", %"$have_gas_304" + %"$consume_316" = sub i64 %"$gasrem_312", 1 + store i64 %"$consume_316", i64* @_gasrem %p2 = alloca %TName_Bool* - %"$execptr_load_182" = load i8*, i8** @_execptr - %"$$a1_0_183" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %"$a1_0" - %"$$$a1_0_183_184" = bitcast %Map_Uint32_Uint32* %"$$a1_0_183" to i8* - %"$contains_i0_185" = alloca %Uint32 - %"$i0_186" = load %Uint32, %Uint32* %i0 - store %Uint32 %"$i0_186", %Uint32* %"$contains_i0_185" - %"$$contains_i0_185_187" = bitcast %Uint32* %"$contains_i0_185" to i8* - %"$contains_call_188" = call %TName_Bool* @_contains(i8* %"$execptr_load_182", %_TyDescrTy_Typ* @"$TyDescr_Map_47", i8* %"$$$a1_0_183_184", i8* %"$$contains_i0_185_187") - store %TName_Bool* %"$contains_call_188", %TName_Bool** %p2 + %"$execptr_load_317" = load i8*, i8** @_execptr + %"$$a1_0_318" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %"$a1_0" + %"$$$a1_0_318_319" = bitcast %Map_Uint32_Uint32* %"$$a1_0_318" to i8* + %"$contains_i0_320" = alloca %Uint32 + %"$i0_321" = load %Uint32, %Uint32* %i0 + store %Uint32 %"$i0_321", %Uint32* %"$contains_i0_320" + %"$$contains_i0_320_322" = bitcast %Uint32* %"$contains_i0_320" to i8* + %"$contains_call_323" = call %TName_Bool* @_contains(i8* %"$execptr_load_317", %_TyDescrTy_Typ* @"$TyDescr_Map_47", i8* %"$$$a1_0_318_319", i8* %"$$contains_i0_320_322") + store %TName_Bool* %"$contains_call_323", %TName_Bool** %p2 + %"$gasrem_324" = load i64, i64* @_gasrem + %"$gascmp_325" = icmp ugt i64 1, %"$gasrem_324" + br i1 %"$gascmp_325", label %"$out_of_gas_326", label %"$have_gas_327" + +"$out_of_gas_326": ; preds = %"$have_gas_315" + call void @_out_of_gas() + br label %"$have_gas_327" + +"$have_gas_327": ; preds = %"$out_of_gas_326", %"$have_gas_315" + %"$consume_328" = sub i64 %"$gasrem_324", 1 + store i64 %"$consume_328", i64* @_gasrem %p2_i = alloca %Uint32 + %"$gasrem_329" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_327" + call void @_out_of_gas() + br label %"$have_gas_332" + +"$have_gas_332": ; preds = %"$out_of_gas_331", %"$have_gas_327" + %"$consume_333" = sub i64 %"$gasrem_329", 1 + store i64 %"$consume_333", i64* @_gasrem %"$bool_to_uint_4" = alloca %Uint32 - %"$bool_to_uint_189" = load { %Uint32 (i8*, %TName_Bool*)*, i8* }, { %Uint32 (i8*, %TName_Bool*)*, i8* }* %bool_to_uint - %"$bool_to_uint_fptr_190" = extractvalue { %Uint32 (i8*, %TName_Bool*)*, i8* } %"$bool_to_uint_189", 0 - %"$bool_to_uint_envptr_191" = extractvalue { %Uint32 (i8*, %TName_Bool*)*, i8* } %"$bool_to_uint_189", 1 - %"$p2_192" = load %TName_Bool*, %TName_Bool** %p2 - %"$bool_to_uint_call_193" = call %Uint32 %"$bool_to_uint_fptr_190"(i8* %"$bool_to_uint_envptr_191", %TName_Bool* %"$p2_192") - store %Uint32 %"$bool_to_uint_call_193", %Uint32* %"$bool_to_uint_4" - %"$$bool_to_uint_4_194" = load %Uint32, %Uint32* %"$bool_to_uint_4" - store %Uint32 %"$$bool_to_uint_4_194", %Uint32* %p2_i + %"$bool_to_uint_334" = load { %Uint32 (i8*, %TName_Bool*)*, i8* }, { %Uint32 (i8*, %TName_Bool*)*, i8* }* %bool_to_uint + %"$bool_to_uint_fptr_335" = extractvalue { %Uint32 (i8*, %TName_Bool*)*, i8* } %"$bool_to_uint_334", 0 + %"$bool_to_uint_envptr_336" = extractvalue { %Uint32 (i8*, %TName_Bool*)*, i8* } %"$bool_to_uint_334", 1 + %"$p2_337" = load %TName_Bool*, %TName_Bool** %p2 + %"$bool_to_uint_call_338" = call %Uint32 %"$bool_to_uint_fptr_335"(i8* %"$bool_to_uint_envptr_336", %TName_Bool* %"$p2_337") + store %Uint32 %"$bool_to_uint_call_338", %Uint32* %"$bool_to_uint_4" + %"$$bool_to_uint_4_339" = load %Uint32, %Uint32* %"$bool_to_uint_4" + store %Uint32 %"$$bool_to_uint_4_339", %Uint32* %p2_i + %"$gasrem_340" = load i64, i64* @_gasrem + %"$gascmp_341" = icmp ugt i64 1, %"$gasrem_340" + br i1 %"$gascmp_341", label %"$out_of_gas_342", label %"$have_gas_343" + +"$out_of_gas_342": ; preds = %"$have_gas_332" + call void @_out_of_gas() + br label %"$have_gas_343" + +"$have_gas_343": ; preds = %"$out_of_gas_342", %"$have_gas_332" + %"$consume_344" = sub i64 %"$gasrem_340", 1 + store i64 %"$consume_344", i64* @_gasrem %p3 = alloca %Uint32 - %"$p1_i_195" = load %Uint32, %Uint32* %p1_i - %"$p2_i_196" = load %Uint32, %Uint32* %p2_i - %"$add_call_197" = call %Uint32 @_add_Uint32(%Uint32 %"$p1_i_195", %Uint32 %"$p2_i_196") - store %Uint32 %"$add_call_197", %Uint32* %p3 + %"$p1_i_345" = load %Uint32, %Uint32* %p1_i + %"$p2_i_346" = load %Uint32, %Uint32* %p2_i + %"$add_call_347" = call %Uint32 @_add_Uint32(%Uint32 %"$p1_i_345", %Uint32 %"$p2_i_346") + store %Uint32 %"$add_call_347", %Uint32* %p3 + %"$gasrem_348" = load i64, i64* @_gasrem + %"$gascmp_349" = icmp ugt i64 1, %"$gasrem_348" + br i1 %"$gascmp_349", label %"$out_of_gas_350", label %"$have_gas_351" + +"$out_of_gas_350": ; preds = %"$have_gas_343" + call void @_out_of_gas() + br label %"$have_gas_351" + +"$have_gas_351": ; preds = %"$out_of_gas_350", %"$have_gas_343" + %"$consume_352" = sub i64 %"$gasrem_348", 1 + store i64 %"$consume_352", i64* @_gasrem %a2 = alloca %Map_Uint32_Uint32* - %"$execptr_load_198" = load i8*, i8** @_execptr - %"$$a1_0_199" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %"$a1_0" - %"$$$a1_0_199_200" = bitcast %Map_Uint32_Uint32* %"$$a1_0_199" to i8* - %"$_i1_201" = alloca %Uint32 - %"$i1_202" = load %Uint32, %Uint32* %i1 - store %Uint32 %"$i1_202", %Uint32* %"$_i1_201" - %"$$_i1_201_203" = bitcast %Uint32* %"$_i1_201" to i8* - %"$_call_204" = call i8* @_remove(i8* %"$execptr_load_198", %_TyDescrTy_Typ* @"$TyDescr_Map_47", i8* %"$$$a1_0_199_200", i8* %"$$_i1_201_203") - %"$_remove_205" = bitcast i8* %"$_call_204" to %Map_Uint32_Uint32* - store %Map_Uint32_Uint32* %"$_remove_205", %Map_Uint32_Uint32** %a2 + %"$execptr_load_353" = load i8*, i8** @_execptr + %"$$a1_0_354" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %"$a1_0" + %"$$$a1_0_354_355" = bitcast %Map_Uint32_Uint32* %"$$a1_0_354" to i8* + %"$_i1_356" = alloca %Uint32 + %"$i1_357" = load %Uint32, %Uint32* %i1 + store %Uint32 %"$i1_357", %Uint32* %"$_i1_356" + %"$$_i1_356_358" = bitcast %Uint32* %"$_i1_356" to i8* + %"$_call_359" = call i8* @_remove(i8* %"$execptr_load_353", %_TyDescrTy_Typ* @"$TyDescr_Map_47", i8* %"$$$a1_0_354_355", i8* %"$$_i1_356_358") + %"$_remove_360" = bitcast i8* %"$_call_359" to %Map_Uint32_Uint32* + store %Map_Uint32_Uint32* %"$_remove_360", %Map_Uint32_Uint32** %a2 + %"$gasrem_361" = load i64, i64* @_gasrem + %"$gascmp_362" = icmp ugt i64 1, %"$gasrem_361" + br i1 %"$gascmp_362", label %"$out_of_gas_363", label %"$have_gas_364" + +"$out_of_gas_363": ; preds = %"$have_gas_351" + call void @_out_of_gas() + br label %"$have_gas_364" + +"$have_gas_364": ; preds = %"$out_of_gas_363", %"$have_gas_351" + %"$consume_365" = sub i64 %"$gasrem_361", 1 + store i64 %"$consume_365", i64* @_gasrem %p5 = alloca %TName_Bool* - %"$execptr_load_206" = load i8*, i8** @_execptr - %"$a2_207" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %a2 - %"$$a2_207_208" = bitcast %Map_Uint32_Uint32* %"$a2_207" to i8* - %"$contains_i0_209" = alloca %Uint32 - %"$i0_210" = load %Uint32, %Uint32* %i0 - store %Uint32 %"$i0_210", %Uint32* %"$contains_i0_209" - %"$$contains_i0_209_211" = bitcast %Uint32* %"$contains_i0_209" to i8* - %"$contains_call_212" = call %TName_Bool* @_contains(i8* %"$execptr_load_206", %_TyDescrTy_Typ* @"$TyDescr_Map_47", i8* %"$$a2_207_208", i8* %"$$contains_i0_209_211") - store %TName_Bool* %"$contains_call_212", %TName_Bool** %p5 + %"$execptr_load_366" = load i8*, i8** @_execptr + %"$a2_367" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %a2 + %"$$a2_367_368" = bitcast %Map_Uint32_Uint32* %"$a2_367" to i8* + %"$contains_i0_369" = alloca %Uint32 + %"$i0_370" = load %Uint32, %Uint32* %i0 + store %Uint32 %"$i0_370", %Uint32* %"$contains_i0_369" + %"$$contains_i0_369_371" = bitcast %Uint32* %"$contains_i0_369" to i8* + %"$contains_call_372" = call %TName_Bool* @_contains(i8* %"$execptr_load_366", %_TyDescrTy_Typ* @"$TyDescr_Map_47", i8* %"$$a2_367_368", i8* %"$$contains_i0_369_371") + store %TName_Bool* %"$contains_call_372", %TName_Bool** %p5 + %"$gasrem_373" = load i64, i64* @_gasrem + %"$gascmp_374" = icmp ugt i64 1, %"$gasrem_373" + br i1 %"$gascmp_374", label %"$out_of_gas_375", label %"$have_gas_376" + +"$out_of_gas_375": ; preds = %"$have_gas_364" + call void @_out_of_gas() + br label %"$have_gas_376" + +"$have_gas_376": ; preds = %"$out_of_gas_375", %"$have_gas_364" + %"$consume_377" = sub i64 %"$gasrem_373", 1 + store i64 %"$consume_377", i64* @_gasrem %p5_i = alloca %Uint32 + %"$gasrem_378" = load i64, i64* @_gasrem + %"$gascmp_379" = icmp ugt i64 1, %"$gasrem_378" + br i1 %"$gascmp_379", label %"$out_of_gas_380", label %"$have_gas_381" + +"$out_of_gas_380": ; preds = %"$have_gas_376" + call void @_out_of_gas() + br label %"$have_gas_381" + +"$have_gas_381": ; preds = %"$out_of_gas_380", %"$have_gas_376" + %"$consume_382" = sub i64 %"$gasrem_378", 1 + store i64 %"$consume_382", i64* @_gasrem %"$bool_to_uint_5" = alloca %Uint32 - %"$bool_to_uint_213" = load { %Uint32 (i8*, %TName_Bool*)*, i8* }, { %Uint32 (i8*, %TName_Bool*)*, i8* }* %bool_to_uint - %"$bool_to_uint_fptr_214" = extractvalue { %Uint32 (i8*, %TName_Bool*)*, i8* } %"$bool_to_uint_213", 0 - %"$bool_to_uint_envptr_215" = extractvalue { %Uint32 (i8*, %TName_Bool*)*, i8* } %"$bool_to_uint_213", 1 - %"$p5_216" = load %TName_Bool*, %TName_Bool** %p5 - %"$bool_to_uint_call_217" = call %Uint32 %"$bool_to_uint_fptr_214"(i8* %"$bool_to_uint_envptr_215", %TName_Bool* %"$p5_216") - store %Uint32 %"$bool_to_uint_call_217", %Uint32* %"$bool_to_uint_5" - %"$$bool_to_uint_5_218" = load %Uint32, %Uint32* %"$bool_to_uint_5" - store %Uint32 %"$$bool_to_uint_5_218", %Uint32* %p5_i + %"$bool_to_uint_383" = load { %Uint32 (i8*, %TName_Bool*)*, i8* }, { %Uint32 (i8*, %TName_Bool*)*, i8* }* %bool_to_uint + %"$bool_to_uint_fptr_384" = extractvalue { %Uint32 (i8*, %TName_Bool*)*, i8* } %"$bool_to_uint_383", 0 + %"$bool_to_uint_envptr_385" = extractvalue { %Uint32 (i8*, %TName_Bool*)*, i8* } %"$bool_to_uint_383", 1 + %"$p5_386" = load %TName_Bool*, %TName_Bool** %p5 + %"$bool_to_uint_call_387" = call %Uint32 %"$bool_to_uint_fptr_384"(i8* %"$bool_to_uint_envptr_385", %TName_Bool* %"$p5_386") + store %Uint32 %"$bool_to_uint_call_387", %Uint32* %"$bool_to_uint_5" + %"$$bool_to_uint_5_388" = load %Uint32, %Uint32* %"$bool_to_uint_5" + store %Uint32 %"$$bool_to_uint_5_388", %Uint32* %p5_i + %"$gasrem_389" = load i64, i64* @_gasrem + %"$gascmp_390" = icmp ugt i64 1, %"$gasrem_389" + br i1 %"$gascmp_390", label %"$out_of_gas_391", label %"$have_gas_392" + +"$out_of_gas_391": ; preds = %"$have_gas_381" + call void @_out_of_gas() + br label %"$have_gas_392" + +"$have_gas_392": ; preds = %"$out_of_gas_391", %"$have_gas_381" + %"$consume_393" = sub i64 %"$gasrem_389", 1 + store i64 %"$consume_393", i64* @_gasrem %p6 = alloca %Uint32 - %"$p3_219" = load %Uint32, %Uint32* %p3 - %"$p5_i_220" = load %Uint32, %Uint32* %p5_i - %"$add_call_221" = call %Uint32 @_add_Uint32(%Uint32 %"$p3_219", %Uint32 %"$p5_i_220") - store %Uint32 %"$add_call_221", %Uint32* %p6 + %"$p3_394" = load %Uint32, %Uint32* %p3 + %"$p5_i_395" = load %Uint32, %Uint32* %p5_i + %"$add_call_396" = call %Uint32 @_add_Uint32(%Uint32 %"$p3_394", %Uint32 %"$p5_i_395") + store %Uint32 %"$add_call_396", %Uint32* %p6 + %"$gasrem_397" = load i64, i64* @_gasrem + %"$gascmp_398" = icmp ugt i64 1, %"$gasrem_397" + br i1 %"$gascmp_398", label %"$out_of_gas_399", label %"$have_gas_400" + +"$out_of_gas_399": ; preds = %"$have_gas_392" + call void @_out_of_gas() + br label %"$have_gas_400" + +"$have_gas_400": ; preds = %"$out_of_gas_399", %"$have_gas_392" + %"$consume_401" = sub i64 %"$gasrem_397", 1 + store i64 %"$consume_401", i64* @_gasrem %a3 = alloca %Map_Uint32_Uint32* - %"$execptr_load_222" = load i8*, i8** @_execptr - %"$$a1_0_223" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %"$a1_0" - %"$$$a1_0_223_224" = bitcast %Map_Uint32_Uint32* %"$$a1_0_223" to i8* - %"$put_i1_225" = alloca %Uint32 - %"$i1_226" = load %Uint32, %Uint32* %i1 - store %Uint32 %"$i1_226", %Uint32* %"$put_i1_225" - %"$$put_i1_225_227" = bitcast %Uint32* %"$put_i1_225" to i8* - %"$put_i0_228" = alloca %Uint32 - %"$i0_229" = load %Uint32, %Uint32* %i0 - store %Uint32 %"$i0_229", %Uint32* %"$put_i0_228" - %"$$put_i0_228_230" = bitcast %Uint32* %"$put_i0_228" to i8* - %"$put_call_231" = call i8* @_put(i8* %"$execptr_load_222", %_TyDescrTy_Typ* @"$TyDescr_Map_47", i8* %"$$$a1_0_223_224", i8* %"$$put_i1_225_227", i8* %"$$put_i0_228_230") - %"$_put_232" = bitcast i8* %"$put_call_231" to %Map_Uint32_Uint32* - store %Map_Uint32_Uint32* %"$_put_232", %Map_Uint32_Uint32** %a3 + %"$execptr_load_402" = load i8*, i8** @_execptr + %"$$a1_0_403" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %"$a1_0" + %"$$$a1_0_403_404" = bitcast %Map_Uint32_Uint32* %"$$a1_0_403" to i8* + %"$put_i1_405" = alloca %Uint32 + %"$i1_406" = load %Uint32, %Uint32* %i1 + store %Uint32 %"$i1_406", %Uint32* %"$put_i1_405" + %"$$put_i1_405_407" = bitcast %Uint32* %"$put_i1_405" to i8* + %"$put_i0_408" = alloca %Uint32 + %"$i0_409" = load %Uint32, %Uint32* %i0 + store %Uint32 %"$i0_409", %Uint32* %"$put_i0_408" + %"$$put_i0_408_410" = bitcast %Uint32* %"$put_i0_408" to i8* + %"$put_call_411" = call i8* @_put(i8* %"$execptr_load_402", %_TyDescrTy_Typ* @"$TyDescr_Map_47", i8* %"$$$a1_0_403_404", i8* %"$$put_i1_405_407", i8* %"$$put_i0_408_410") + %"$_put_412" = bitcast i8* %"$put_call_411" to %Map_Uint32_Uint32* + store %Map_Uint32_Uint32* %"$_put_412", %Map_Uint32_Uint32** %a3 + %"$gasrem_413" = load i64, i64* @_gasrem + %"$gascmp_414" = icmp ugt i64 1, %"$gasrem_413" + br i1 %"$gascmp_414", label %"$out_of_gas_415", label %"$have_gas_416" + +"$out_of_gas_415": ; preds = %"$have_gas_400" + call void @_out_of_gas() + br label %"$have_gas_416" + +"$have_gas_416": ; preds = %"$out_of_gas_415", %"$have_gas_400" + %"$consume_417" = sub i64 %"$gasrem_413", 1 + store i64 %"$consume_417", i64* @_gasrem %a4 = alloca %Map_Uint32_Uint32* - %"$execptr_load_233" = load i8*, i8** @_execptr - %"$a3_234" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %a3 - %"$$a3_234_235" = bitcast %Map_Uint32_Uint32* %"$a3_234" to i8* - %"$put_p6_236" = alloca %Uint32 - %"$p6_237" = load %Uint32, %Uint32* %p6 - store %Uint32 %"$p6_237", %Uint32* %"$put_p6_236" - %"$$put_p6_236_238" = bitcast %Uint32* %"$put_p6_236" to i8* - %"$put_p3_239" = alloca %Uint32 - %"$p3_240" = load %Uint32, %Uint32* %p3 - store %Uint32 %"$p3_240", %Uint32* %"$put_p3_239" - %"$$put_p3_239_241" = bitcast %Uint32* %"$put_p3_239" to i8* - %"$put_call_242" = call i8* @_put(i8* %"$execptr_load_233", %_TyDescrTy_Typ* @"$TyDescr_Map_47", i8* %"$$a3_234_235", i8* %"$$put_p6_236_238", i8* %"$$put_p3_239_241") - %"$_put_243" = bitcast i8* %"$put_call_242" to %Map_Uint32_Uint32* - store %Map_Uint32_Uint32* %"$_put_243", %Map_Uint32_Uint32** %a4 + %"$execptr_load_418" = load i8*, i8** @_execptr + %"$a3_419" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %a3 + %"$$a3_419_420" = bitcast %Map_Uint32_Uint32* %"$a3_419" to i8* + %"$put_p6_421" = alloca %Uint32 + %"$p6_422" = load %Uint32, %Uint32* %p6 + store %Uint32 %"$p6_422", %Uint32* %"$put_p6_421" + %"$$put_p6_421_423" = bitcast %Uint32* %"$put_p6_421" to i8* + %"$put_p3_424" = alloca %Uint32 + %"$p3_425" = load %Uint32, %Uint32* %p3 + store %Uint32 %"$p3_425", %Uint32* %"$put_p3_424" + %"$$put_p3_424_426" = bitcast %Uint32* %"$put_p3_424" to i8* + %"$put_call_427" = call i8* @_put(i8* %"$execptr_load_418", %_TyDescrTy_Typ* @"$TyDescr_Map_47", i8* %"$$a3_419_420", i8* %"$$put_p6_421_423", i8* %"$$put_p3_424_426") + %"$_put_428" = bitcast i8* %"$put_call_427" to %Map_Uint32_Uint32* + store %Map_Uint32_Uint32* %"$_put_428", %Map_Uint32_Uint32** %a4 + %"$gasrem_429" = load i64, i64* @_gasrem + %"$gascmp_430" = icmp ugt i64 1, %"$gasrem_429" + br i1 %"$gascmp_430", label %"$out_of_gas_431", label %"$have_gas_432" + +"$out_of_gas_431": ; preds = %"$have_gas_416" + call void @_out_of_gas() + br label %"$have_gas_432" + +"$have_gas_432": ; preds = %"$out_of_gas_431", %"$have_gas_416" + %"$consume_433" = sub i64 %"$gasrem_429", 1 + store i64 %"$consume_433", i64* @_gasrem %p7_i = alloca %Uint32 - %"$a4_244" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %a4 - %"$$a4_244_245" = bitcast %Map_Uint32_Uint32* %"$a4_244" to i8* - %"$size_call_246" = call %Uint32 @_size(i8* %"$$a4_244_245") - store %Uint32 %"$size_call_246", %Uint32* %p7_i - %"$p6_247" = load %Uint32, %Uint32* %p6 - %"$p7_i_248" = load %Uint32, %Uint32* %p7_i - %"$add_call_249" = call %Uint32 @_add_Uint32(%Uint32 %"$p6_247", %Uint32 %"$p7_i_248") - store %Uint32 %"$add_call_249", %Uint32* %"$expr_7" - br label %"$matchsucc_160" - -"$default_164": ; preds = %"$Some_156" + %"$a4_434" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %a4 + %"$$a4_434_435" = bitcast %Map_Uint32_Uint32* %"$a4_434" to i8* + %"$size_call_436" = call %Uint32 @_size(i8* %"$$a4_434_435") + store %Uint32 %"$size_call_436", %Uint32* %p7_i + %"$p6_437" = load %Uint32, %Uint32* %p6 + %"$p7_i_438" = load %Uint32, %Uint32* %p7_i + %"$add_call_439" = call %Uint32 @_add_Uint32(%Uint32 %"$p6_437", %Uint32 %"$p7_i_438") + store %Uint32 %"$add_call_439", %Uint32* %"$expr_7" + br label %"$matchsucc_275" + +"$default_279": ; preds = %"$Some_271" br label %"$joinp_1" -"$matchsucc_160": ; preds = %"$Some_165" - br label %"$matchsucc_137" +"$matchsucc_275": ; preds = %"$have_gas_432" + br label %"$matchsucc_232" -"$default_155": ; preds = %entry +"$default_270": ; preds = %"$have_gas_230" br label %"$joinp_1" -"$joinp_1": ; preds = %"$default_164", %"$default_155" +"$joinp_1": ; preds = %"$default_279", %"$default_270" + %"$gasrem_233" = load i64, i64* @_gasrem + %"$gascmp_234" = icmp ugt i64 1, %"$gasrem_233" + br i1 %"$gascmp_234", label %"$out_of_gas_235", label %"$have_gas_236" + +"$out_of_gas_235": ; preds = %"$joinp_1" + call void @_out_of_gas() + br label %"$have_gas_236" + +"$have_gas_236": ; preds = %"$out_of_gas_235", %"$joinp_1" + %"$consume_237" = sub i64 %"$gasrem_233", 1 + store i64 %"$consume_237", i64* @_gasrem %p = alloca %TName_Bool* - %"$execptr_load_138" = load i8*, i8** @_execptr - %"$a1_139" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %a1 - %"$$a1_139_140" = bitcast %Map_Uint32_Uint32* %"$a1_139" to i8* - %"$contains_i0_141" = alloca %Uint32 - %"$i0_142" = load %Uint32, %Uint32* %i0 - store %Uint32 %"$i0_142", %Uint32* %"$contains_i0_141" - %"$$contains_i0_141_143" = bitcast %Uint32* %"$contains_i0_141" to i8* - %"$contains_call_144" = call %TName_Bool* @_contains(i8* %"$execptr_load_138", %_TyDescrTy_Typ* @"$TyDescr_Map_47", i8* %"$$a1_139_140", i8* %"$$contains_i0_141_143") - store %TName_Bool* %"$contains_call_144", %TName_Bool** %p + %"$execptr_load_238" = load i8*, i8** @_execptr + %"$a1_239" = load %Map_Uint32_Uint32*, %Map_Uint32_Uint32** %a1 + %"$$a1_239_240" = bitcast %Map_Uint32_Uint32* %"$a1_239" to i8* + %"$contains_i0_241" = alloca %Uint32 + %"$i0_242" = load %Uint32, %Uint32* %i0 + store %Uint32 %"$i0_242", %Uint32* %"$contains_i0_241" + %"$$contains_i0_241_243" = bitcast %Uint32* %"$contains_i0_241" to i8* + %"$contains_call_244" = call %TName_Bool* @_contains(i8* %"$execptr_load_238", %_TyDescrTy_Typ* @"$TyDescr_Map_47", i8* %"$$a1_239_240", i8* %"$$contains_i0_241_243") + store %TName_Bool* %"$contains_call_244", %TName_Bool** %p + %"$gasrem_245" = load i64, i64* @_gasrem + %"$gascmp_246" = icmp ugt i64 1, %"$gasrem_245" + br i1 %"$gascmp_246", label %"$out_of_gas_247", label %"$have_gas_248" + +"$out_of_gas_247": ; preds = %"$have_gas_236" + call void @_out_of_gas() + br label %"$have_gas_248" + +"$have_gas_248": ; preds = %"$out_of_gas_247", %"$have_gas_236" + %"$consume_249" = sub i64 %"$gasrem_245", 1 + store i64 %"$consume_249", i64* @_gasrem %p1 = alloca %Uint32 + %"$gasrem_250" = load i64, i64* @_gasrem + %"$gascmp_251" = icmp ugt i64 1, %"$gasrem_250" + br i1 %"$gascmp_251", label %"$out_of_gas_252", label %"$have_gas_253" + +"$out_of_gas_252": ; preds = %"$have_gas_248" + call void @_out_of_gas() + br label %"$have_gas_253" + +"$have_gas_253": ; preds = %"$out_of_gas_252", %"$have_gas_248" + %"$consume_254" = sub i64 %"$gasrem_250", 1 + store i64 %"$consume_254", i64* @_gasrem %"$bool_to_uint_6" = alloca %Uint32 - %"$bool_to_uint_145" = load { %Uint32 (i8*, %TName_Bool*)*, i8* }, { %Uint32 (i8*, %TName_Bool*)*, i8* }* %bool_to_uint - %"$bool_to_uint_fptr_146" = extractvalue { %Uint32 (i8*, %TName_Bool*)*, i8* } %"$bool_to_uint_145", 0 - %"$bool_to_uint_envptr_147" = extractvalue { %Uint32 (i8*, %TName_Bool*)*, i8* } %"$bool_to_uint_145", 1 - %"$p_148" = load %TName_Bool*, %TName_Bool** %p - %"$bool_to_uint_call_149" = call %Uint32 %"$bool_to_uint_fptr_146"(i8* %"$bool_to_uint_envptr_147", %TName_Bool* %"$p_148") - store %Uint32 %"$bool_to_uint_call_149", %Uint32* %"$bool_to_uint_6" - %"$$bool_to_uint_6_150" = load %Uint32, %Uint32* %"$bool_to_uint_6" - store %Uint32 %"$$bool_to_uint_6_150", %Uint32* %p1 - %"$p1_151" = load %Uint32, %Uint32* %p1 - store %Uint32 %"$p1_151", %Uint32* %"$expr_7" - br label %"$matchsucc_137" - -"$matchsucc_137": ; preds = %"$matchsucc_160", %"$joinp_1" - %"$$expr_7_250" = load %Uint32, %Uint32* %"$expr_7" - ret %Uint32 %"$$expr_7_250" + %"$bool_to_uint_255" = load { %Uint32 (i8*, %TName_Bool*)*, i8* }, { %Uint32 (i8*, %TName_Bool*)*, i8* }* %bool_to_uint + %"$bool_to_uint_fptr_256" = extractvalue { %Uint32 (i8*, %TName_Bool*)*, i8* } %"$bool_to_uint_255", 0 + %"$bool_to_uint_envptr_257" = extractvalue { %Uint32 (i8*, %TName_Bool*)*, i8* } %"$bool_to_uint_255", 1 + %"$p_258" = load %TName_Bool*, %TName_Bool** %p + %"$bool_to_uint_call_259" = call %Uint32 %"$bool_to_uint_fptr_256"(i8* %"$bool_to_uint_envptr_257", %TName_Bool* %"$p_258") + store %Uint32 %"$bool_to_uint_call_259", %Uint32* %"$bool_to_uint_6" + %"$$bool_to_uint_6_260" = load %Uint32, %Uint32* %"$bool_to_uint_6" + store %Uint32 %"$$bool_to_uint_6_260", %Uint32* %p1 + %"$gasrem_261" = load i64, i64* @_gasrem + %"$gascmp_262" = icmp ugt i64 1, %"$gasrem_261" + br i1 %"$gascmp_262", label %"$out_of_gas_263", label %"$have_gas_264" + +"$out_of_gas_263": ; preds = %"$have_gas_253" + call void @_out_of_gas() + br label %"$have_gas_264" + +"$have_gas_264": ; preds = %"$out_of_gas_263", %"$have_gas_253" + %"$consume_265" = sub i64 %"$gasrem_261", 1 + store i64 %"$consume_265", i64* @_gasrem + %"$p1_266" = load %Uint32, %Uint32* %p1 + store %Uint32 %"$p1_266", %Uint32* %"$expr_7" + br label %"$matchsucc_232" + +"$matchsucc_232": ; preds = %"$matchsucc_275", %"$have_gas_264" + %"$$expr_7_440" = load %Uint32, %Uint32* %"$expr_7" + ret %Uint32 %"$$expr_7_440" } declare i8* @_new_empty_map(i8*) @@ -438,10 +859,10 @@ declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_251" = call %Uint32 @"$scilla_expr_93"(i8* null) - %"$pval_252" = alloca %Uint32 - %"$memvoidcast_253" = bitcast %Uint32* %"$pval_252" to i8* - store %Uint32 %"$exprval_251", %Uint32* %"$pval_252" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_14", i8* %"$memvoidcast_253") + %"$exprval_441" = call %Uint32 @"$scilla_expr_108"(i8* null) + %"$pval_442" = alloca %Uint32 + %"$memvoidcast_443" = bitcast %Uint32* %"$pval_442" to i8* + store %Uint32 %"$exprval_441", %Uint32* %"$pval_442" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_14", i8* %"$memvoidcast_443") ret void } diff --git a/testsuite/expr/builtin_map.ll.result b/testsuite/expr/builtin_map.ll.result index 12ab1b5b..b7a0dd1b 100644 --- a/testsuite/expr/builtin_map.ll.result +++ b/testsuite/expr/builtin_map.ll.result @@ -1 +1,2 @@ 6 : Uint32 +Gas remaining: 9999959 diff --git a/testsuite/expr/builtin_sha256hash.ll b/testsuite/expr/builtin_sha256hash.ll index 294ab1ee..6e22e65f 100644 --- a/testsuite/expr/builtin_sha256hash.ll +++ b/testsuite/expr/builtin_sha256hash.ll @@ -27,6 +27,7 @@ target triple = "x86_64-pc-linux-gnu" %CName_Pair_ByStr_Int32 = type <{ i8, %Bystr, %Int32 }> @_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 } @@ -74,7 +75,7 @@ target triple = "x86_64-pc-linux-gnu" @"$TyDescr_Pair_String_ByStr32_ADTTyp_Specl_50" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_32" { %_TyDescrTy_Typ** getelementptr inbounds ([2 x %_TyDescrTy_Typ*], [2 x %_TyDescrTy_Typ*]* @"$TyDescr_Pair_String_ByStr32_ADTTyp_Specl_m_TArgs_49", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_34"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Constr_34"*], [1 x %"$TyDescrTy_ADTTyp_Constr_34"*]* @"$TyDescr_Pair_String_ByStr32_ADTTyp_Specl_m_constrs_48", i32 0, i32 0), %"$TyDescrTy_ADTTyp_33"* @"$TyDescr_Pair_ADTTyp_38" } @"$TyDescr_Pair_ADTTyp_m_specls_51" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Specl_32"*] [%"$TyDescrTy_ADTTyp_Specl_32"* @"$TyDescr_Pair_ByStr_Int32_ADTTyp_Specl_44", %"$TyDescrTy_ADTTyp_Specl_32"* @"$TyDescr_Pair_String_ByStr32_ADTTyp_Specl_50"] @"$TyDescr_ADT_Pair_52" = unnamed_addr constant [4 x i8] c"Pair" -@"$stringlit_54" = unnamed_addr constant [5 x i8] c"hello" +@"$stringlit_64" = unnamed_addr constant [5 x i8] c"hello" define void @_init_libs() { entry: @@ -84,82 +85,216 @@ entry: define internal void @"$scilla_expr_53"(i8* %0, [32 x i8]* %1) { entry: %"$expr_0" = alloca [32 x i8] + %"$gasrem_54" = load i64, i64* @_gasrem + %"$gascmp_55" = icmp ugt i64 1, %"$gasrem_54" + br i1 %"$gascmp_55", label %"$out_of_gas_56", label %"$have_gas_57" + +"$out_of_gas_56": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_57" + +"$have_gas_57": ; preds = %"$out_of_gas_56", %entry + %"$consume_58" = sub i64 %"$gasrem_54", 1 + store i64 %"$consume_58", i64* @_gasrem %s = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_54", i32 0, i32 0), i32 5 }, %String* %s + %"$gasrem_59" = load i64, i64* @_gasrem + %"$gascmp_60" = icmp ugt i64 1, %"$gasrem_59" + br i1 %"$gascmp_60", label %"$out_of_gas_61", label %"$have_gas_62" + +"$out_of_gas_61": ; preds = %"$have_gas_57" + call void @_out_of_gas() + br label %"$have_gas_62" + +"$have_gas_62": ; preds = %"$out_of_gas_61", %"$have_gas_57" + %"$consume_63" = sub i64 %"$gasrem_59", 1 + store i64 %"$consume_63", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_64", i32 0, i32 0), i32 5 }, %String* %s + %"$gasrem_65" = load i64, i64* @_gasrem + %"$gascmp_66" = icmp ugt i64 1, %"$gasrem_65" + br i1 %"$gascmp_66", label %"$out_of_gas_67", label %"$have_gas_68" + +"$out_of_gas_67": ; preds = %"$have_gas_62" + call void @_out_of_gas() + br label %"$have_gas_68" + +"$have_gas_68": ; preds = %"$out_of_gas_67", %"$have_gas_62" + %"$consume_69" = sub i64 %"$gasrem_65", 1 + store i64 %"$consume_69", i64* @_gasrem %h1 = alloca [32 x i8] - %"$execptr_load_55" = load i8*, i8** @_execptr - %"$sha256hash_s_56" = alloca %String - %"$s_57" = load %String, %String* %s - store %String %"$s_57", %String* %"$sha256hash_s_56" - %"$$sha256hash_s_56_58" = bitcast %String* %"$sha256hash_s_56" to i8* - %"$sha256hash_call_59" = call [32 x i8]* @_sha256hash(i8* %"$execptr_load_55", %_TyDescrTy_Typ* @"$TyDescr_String_19", i8* %"$$sha256hash_s_56_58") - %"$sha256hash_60" = load [32 x i8], [32 x i8]* %"$sha256hash_call_59" - store [32 x i8] %"$sha256hash_60", [32 x i8]* %h1 + %"$execptr_load_70" = load i8*, i8** @_execptr + %"$sha256hash_s_71" = alloca %String + %"$s_72" = load %String, %String* %s + store %String %"$s_72", %String* %"$sha256hash_s_71" + %"$$sha256hash_s_71_73" = bitcast %String* %"$sha256hash_s_71" to i8* + %"$sha256hash_call_74" = call [32 x i8]* @_sha256hash(i8* %"$execptr_load_70", %_TyDescrTy_Typ* @"$TyDescr_String_19", i8* %"$$sha256hash_s_71_73") + %"$sha256hash_75" = load [32 x i8], [32 x i8]* %"$sha256hash_call_74" + store [32 x i8] %"$sha256hash_75", [32 x i8]* %h1 + %"$gasrem_76" = load i64, i64* @_gasrem + %"$gascmp_77" = icmp ugt i64 1, %"$gasrem_76" + br i1 %"$gascmp_77", label %"$out_of_gas_78", label %"$have_gas_79" + +"$out_of_gas_78": ; preds = %"$have_gas_68" + call void @_out_of_gas() + br label %"$have_gas_79" + +"$have_gas_79": ; preds = %"$out_of_gas_78", %"$have_gas_68" + %"$consume_80" = sub i64 %"$gasrem_76", 1 + store i64 %"$consume_80", i64* @_gasrem %h2 = alloca [32 x i8] - %"$execptr_load_61" = load i8*, i8** @_execptr - %"$sha256hash_h1_62" = alloca [32 x i8] - %"$h1_63" = load [32 x i8], [32 x i8]* %h1 - store [32 x i8] %"$h1_63", [32 x i8]* %"$sha256hash_h1_62" - %"$$sha256hash_h1_62_64" = bitcast [32 x i8]* %"$sha256hash_h1_62" to i8* - %"$sha256hash_call_65" = call [32 x i8]* @_sha256hash(i8* %"$execptr_load_61", %_TyDescrTy_Typ* @"$TyDescr_Bystr32_31", i8* %"$$sha256hash_h1_62_64") - %"$sha256hash_66" = load [32 x i8], [32 x i8]* %"$sha256hash_call_65" - store [32 x i8] %"$sha256hash_66", [32 x i8]* %h2 + %"$execptr_load_81" = load i8*, i8** @_execptr + %"$sha256hash_h1_82" = alloca [32 x i8] + %"$h1_83" = load [32 x i8], [32 x i8]* %h1 + store [32 x i8] %"$h1_83", [32 x i8]* %"$sha256hash_h1_82" + %"$$sha256hash_h1_82_84" = bitcast [32 x i8]* %"$sha256hash_h1_82" to i8* + %"$sha256hash_call_85" = call [32 x i8]* @_sha256hash(i8* %"$execptr_load_81", %_TyDescrTy_Typ* @"$TyDescr_Bystr32_31", i8* %"$$sha256hash_h1_82_84") + %"$sha256hash_86" = load [32 x i8], [32 x i8]* %"$sha256hash_call_85" + store [32 x i8] %"$sha256hash_86", [32 x i8]* %h2 + %"$gasrem_87" = load i64, i64* @_gasrem + %"$gascmp_88" = icmp ugt i64 1, %"$gasrem_87" + br i1 %"$gascmp_88", label %"$out_of_gas_89", label %"$have_gas_90" + +"$out_of_gas_89": ; preds = %"$have_gas_79" + call void @_out_of_gas() + br label %"$have_gas_90" + +"$have_gas_90": ; preds = %"$out_of_gas_89", %"$have_gas_79" + %"$consume_91" = sub i64 %"$gasrem_87", 1 + store i64 %"$consume_91", i64* @_gasrem %sh = alloca %TName_Pair_String_ByStr32* - %"$s_67" = load %String, %String* %s - %"$h2_68" = load [32 x i8], [32 x i8]* %h2 - %"$adtval_69_load" = load i8*, i8** @_execptr - %"$adtval_69_salloc" = call i8* @_salloc(i8* %"$adtval_69_load", i64 49) - %"$adtval_69" = bitcast i8* %"$adtval_69_salloc" to %CName_Pair_String_ByStr32* - %"$adtgep_70" = getelementptr inbounds %CName_Pair_String_ByStr32, %CName_Pair_String_ByStr32* %"$adtval_69", i32 0, i32 0 - store i8 0, i8* %"$adtgep_70" - %"$adtgep_71" = getelementptr inbounds %CName_Pair_String_ByStr32, %CName_Pair_String_ByStr32* %"$adtval_69", i32 0, i32 1 - store %String %"$s_67", %String* %"$adtgep_71" - %"$adtgep_72" = getelementptr inbounds %CName_Pair_String_ByStr32, %CName_Pair_String_ByStr32* %"$adtval_69", i32 0, i32 2 - store [32 x i8] %"$h2_68", [32 x i8]* %"$adtgep_72" - %"$adtptr_73" = bitcast %CName_Pair_String_ByStr32* %"$adtval_69" to %TName_Pair_String_ByStr32* - store %TName_Pair_String_ByStr32* %"$adtptr_73", %TName_Pair_String_ByStr32** %sh + %"$gasrem_92" = load i64, i64* @_gasrem + %"$gascmp_93" = icmp ugt i64 1, %"$gasrem_92" + br i1 %"$gascmp_93", label %"$out_of_gas_94", label %"$have_gas_95" + +"$out_of_gas_94": ; preds = %"$have_gas_90" + call void @_out_of_gas() + br label %"$have_gas_95" + +"$have_gas_95": ; preds = %"$out_of_gas_94", %"$have_gas_90" + %"$consume_96" = sub i64 %"$gasrem_92", 1 + store i64 %"$consume_96", i64* @_gasrem + %"$s_97" = load %String, %String* %s + %"$h2_98" = load [32 x i8], [32 x i8]* %h2 + %"$adtval_99_load" = load i8*, i8** @_execptr + %"$adtval_99_salloc" = call i8* @_salloc(i8* %"$adtval_99_load", i64 49) + %"$adtval_99" = bitcast i8* %"$adtval_99_salloc" to %CName_Pair_String_ByStr32* + %"$adtgep_100" = getelementptr inbounds %CName_Pair_String_ByStr32, %CName_Pair_String_ByStr32* %"$adtval_99", i32 0, i32 0 + store i8 0, i8* %"$adtgep_100" + %"$adtgep_101" = getelementptr inbounds %CName_Pair_String_ByStr32, %CName_Pair_String_ByStr32* %"$adtval_99", i32 0, i32 1 + store %String %"$s_97", %String* %"$adtgep_101" + %"$adtgep_102" = getelementptr inbounds %CName_Pair_String_ByStr32, %CName_Pair_String_ByStr32* %"$adtval_99", i32 0, i32 2 + store [32 x i8] %"$h2_98", [32 x i8]* %"$adtgep_102" + %"$adtptr_103" = bitcast %CName_Pair_String_ByStr32* %"$adtval_99" to %TName_Pair_String_ByStr32* + store %TName_Pair_String_ByStr32* %"$adtptr_103", %TName_Pair_String_ByStr32** %sh + %"$gasrem_104" = load i64, i64* @_gasrem + %"$gascmp_105" = icmp ugt i64 1, %"$gasrem_104" + br i1 %"$gascmp_105", label %"$out_of_gas_106", label %"$have_gas_107" + +"$out_of_gas_106": ; preds = %"$have_gas_95" + call void @_out_of_gas() + br label %"$have_gas_107" + +"$have_gas_107": ; preds = %"$out_of_gas_106", %"$have_gas_95" + %"$consume_108" = sub i64 %"$gasrem_104", 1 + store i64 %"$consume_108", i64* @_gasrem %sh2 = alloca [32 x i8] - %"$execptr_load_74" = load i8*, i8** @_execptr - %"$sh_75" = load %TName_Pair_String_ByStr32*, %TName_Pair_String_ByStr32** %sh - %"$$sh_75_76" = bitcast %TName_Pair_String_ByStr32* %"$sh_75" to i8* - %"$sha256hash_call_77" = call [32 x i8]* @_sha256hash(i8* %"$execptr_load_74", %_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_String_ByStr32_36", i8* %"$$sh_75_76") - %"$sha256hash_78" = load [32 x i8], [32 x i8]* %"$sha256hash_call_77" - store [32 x i8] %"$sha256hash_78", [32 x i8]* %sh2 + %"$execptr_load_109" = load i8*, i8** @_execptr + %"$sh_110" = load %TName_Pair_String_ByStr32*, %TName_Pair_String_ByStr32** %sh + %"$$sh_110_111" = bitcast %TName_Pair_String_ByStr32* %"$sh_110" to i8* + %"$sha256hash_call_112" = call [32 x i8]* @_sha256hash(i8* %"$execptr_load_109", %_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_String_ByStr32_36", i8* %"$$sh_110_111") + %"$sha256hash_113" = load [32 x i8], [32 x i8]* %"$sha256hash_call_112" + store [32 x i8] %"$sha256hash_113", [32 x i8]* %sh2 + %"$gasrem_114" = load i64, i64* @_gasrem + %"$gascmp_115" = icmp ugt i64 1, %"$gasrem_114" + br i1 %"$gascmp_115", label %"$out_of_gas_116", label %"$have_gas_117" + +"$out_of_gas_116": ; preds = %"$have_gas_107" + call void @_out_of_gas() + br label %"$have_gas_117" + +"$have_gas_117": ; preds = %"$out_of_gas_116", %"$have_gas_107" + %"$consume_118" = sub i64 %"$gasrem_114", 1 + store i64 %"$consume_118", i64* @_gasrem %bystr1 = alloca %Bystr - %"$execptr_load_79" = load i8*, i8** @_execptr - %"$to_bystr_sh2_80" = alloca [32 x i8] - %"$sh2_81" = load [32 x i8], [32 x i8]* %sh2 - store [32 x i8] %"$sh2_81", [32 x i8]* %"$to_bystr_sh2_80" - %"$$to_bystr_sh2_80_82" = bitcast [32 x i8]* %"$to_bystr_sh2_80" to i8* - %"$to_bystr_call_83" = call %Bystr @_to_bystr(i8* %"$execptr_load_79", i32 32, i8* %"$$to_bystr_sh2_80_82") - store %Bystr %"$to_bystr_call_83", %Bystr* %bystr1 + %"$execptr_load_119" = load i8*, i8** @_execptr + %"$to_bystr_sh2_120" = alloca [32 x i8] + %"$sh2_121" = load [32 x i8], [32 x i8]* %sh2 + store [32 x i8] %"$sh2_121", [32 x i8]* %"$to_bystr_sh2_120" + %"$$to_bystr_sh2_120_122" = bitcast [32 x i8]* %"$to_bystr_sh2_120" to i8* + %"$to_bystr_call_123" = call %Bystr @_to_bystr(i8* %"$execptr_load_119", i32 32, i8* %"$$to_bystr_sh2_120_122") + store %Bystr %"$to_bystr_call_123", %Bystr* %bystr1 + %"$gasrem_124" = load i64, i64* @_gasrem + %"$gascmp_125" = icmp ugt i64 1, %"$gasrem_124" + br i1 %"$gascmp_125", label %"$out_of_gas_126", label %"$have_gas_127" + +"$out_of_gas_126": ; preds = %"$have_gas_117" + call void @_out_of_gas() + br label %"$have_gas_127" + +"$have_gas_127": ; preds = %"$out_of_gas_126", %"$have_gas_117" + %"$consume_128" = sub i64 %"$gasrem_124", 1 + store i64 %"$consume_128", i64* @_gasrem %i4 = alloca %Int32 + %"$gasrem_129" = load i64, i64* @_gasrem + %"$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 store %Int32 { i32 4 }, %Int32* %i4 + %"$gasrem_134" = load i64, i64* @_gasrem + %"$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 %p2 = alloca %TName_Pair_ByStr_Int32* - %"$bystr1_84" = load %Bystr, %Bystr* %bystr1 - %"$i4_85" = load %Int32, %Int32* %i4 - %"$adtval_86_load" = load i8*, i8** @_execptr - %"$adtval_86_salloc" = call i8* @_salloc(i8* %"$adtval_86_load", i64 21) - %"$adtval_86" = bitcast i8* %"$adtval_86_salloc" to %CName_Pair_ByStr_Int32* - %"$adtgep_87" = getelementptr inbounds %CName_Pair_ByStr_Int32, %CName_Pair_ByStr_Int32* %"$adtval_86", i32 0, i32 0 - store i8 0, i8* %"$adtgep_87" - %"$adtgep_88" = getelementptr inbounds %CName_Pair_ByStr_Int32, %CName_Pair_ByStr_Int32* %"$adtval_86", i32 0, i32 1 - store %Bystr %"$bystr1_84", %Bystr* %"$adtgep_88" - %"$adtgep_89" = getelementptr inbounds %CName_Pair_ByStr_Int32, %CName_Pair_ByStr_Int32* %"$adtval_86", i32 0, i32 2 - store %Int32 %"$i4_85", %Int32* %"$adtgep_89" - %"$adtptr_90" = bitcast %CName_Pair_ByStr_Int32* %"$adtval_86" to %TName_Pair_ByStr_Int32* - store %TName_Pair_ByStr_Int32* %"$adtptr_90", %TName_Pair_ByStr_Int32** %p2 - %"$execptr_load_91" = load i8*, i8** @_execptr - %"$p2_92" = load %TName_Pair_ByStr_Int32*, %TName_Pair_ByStr_Int32** %p2 - %"$$p2_92_93" = bitcast %TName_Pair_ByStr_Int32* %"$p2_92" to i8* - %"$sha256hash_call_94" = call [32 x i8]* @_sha256hash(i8* %"$execptr_load_91", %_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_ByStr_Int32_35", i8* %"$$p2_92_93") - %"$sha256hash_95" = load [32 x i8], [32 x i8]* %"$sha256hash_call_94" - store [32 x i8] %"$sha256hash_95", [32 x i8]* %"$expr_0" - %"$$expr_0_96" = load [32 x i8], [32 x i8]* %"$expr_0" - store [32 x i8] %"$$expr_0_96", [32 x i8]* %1 + %"$gasrem_139" = load i64, i64* @_gasrem + %"$gascmp_140" = icmp ugt i64 1, %"$gasrem_139" + br i1 %"$gascmp_140", label %"$out_of_gas_141", label %"$have_gas_142" + +"$out_of_gas_141": ; preds = %"$have_gas_137" + call void @_out_of_gas() + br label %"$have_gas_142" + +"$have_gas_142": ; preds = %"$out_of_gas_141", %"$have_gas_137" + %"$consume_143" = sub i64 %"$gasrem_139", 1 + store i64 %"$consume_143", i64* @_gasrem + %"$bystr1_144" = load %Bystr, %Bystr* %bystr1 + %"$i4_145" = load %Int32, %Int32* %i4 + %"$adtval_146_load" = load i8*, i8** @_execptr + %"$adtval_146_salloc" = call i8* @_salloc(i8* %"$adtval_146_load", i64 21) + %"$adtval_146" = bitcast i8* %"$adtval_146_salloc" to %CName_Pair_ByStr_Int32* + %"$adtgep_147" = getelementptr inbounds %CName_Pair_ByStr_Int32, %CName_Pair_ByStr_Int32* %"$adtval_146", i32 0, i32 0 + store i8 0, i8* %"$adtgep_147" + %"$adtgep_148" = getelementptr inbounds %CName_Pair_ByStr_Int32, %CName_Pair_ByStr_Int32* %"$adtval_146", i32 0, i32 1 + store %Bystr %"$bystr1_144", %Bystr* %"$adtgep_148" + %"$adtgep_149" = getelementptr inbounds %CName_Pair_ByStr_Int32, %CName_Pair_ByStr_Int32* %"$adtval_146", i32 0, i32 2 + store %Int32 %"$i4_145", %Int32* %"$adtgep_149" + %"$adtptr_150" = bitcast %CName_Pair_ByStr_Int32* %"$adtval_146" to %TName_Pair_ByStr_Int32* + store %TName_Pair_ByStr_Int32* %"$adtptr_150", %TName_Pair_ByStr_Int32** %p2 + %"$execptr_load_151" = load i8*, i8** @_execptr + %"$p2_152" = load %TName_Pair_ByStr_Int32*, %TName_Pair_ByStr_Int32** %p2 + %"$$p2_152_153" = bitcast %TName_Pair_ByStr_Int32* %"$p2_152" to i8* + %"$sha256hash_call_154" = call [32 x i8]* @_sha256hash(i8* %"$execptr_load_151", %_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_ByStr_Int32_35", i8* %"$$p2_152_153") + %"$sha256hash_155" = load [32 x i8], [32 x i8]* %"$sha256hash_call_154" + store [32 x i8] %"$sha256hash_155", [32 x i8]* %"$expr_0" + %"$$expr_0_156" = load [32 x i8], [32 x i8]* %"$expr_0" + store [32 x i8] %"$$expr_0_156", [32 x i8]* %1 ret void } +declare void @_out_of_gas() + declare [32 x i8]* @_sha256hash(i8*, %_TyDescrTy_Typ*, i8*) declare i8* @_salloc(i8*, i64) @@ -170,9 +305,9 @@ declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$mainval_97" = alloca [32 x i8] - %"$memvoidcast_98" = bitcast [32 x i8]* %"$mainval_97" to i8* - call void @"$scilla_expr_53"(i8* null, [32 x i8]* %"$mainval_97") - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Bystr32_31", i8* %"$memvoidcast_98") + %"$mainval_157" = alloca [32 x i8] + %"$memvoidcast_158" = bitcast [32 x i8]* %"$mainval_157" to i8* + call void @"$scilla_expr_53"(i8* null, [32 x i8]* %"$mainval_157") + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Bystr32_31", i8* %"$memvoidcast_158") ret void } diff --git a/testsuite/expr/builtin_sha256hash.ll.result b/testsuite/expr/builtin_sha256hash.ll.result index 9421f3b2..847a36a5 100644 --- a/testsuite/expr/builtin_sha256hash.ll.result +++ b/testsuite/expr/builtin_sha256hash.ll.result @@ -1 +1,2 @@ 0x339fc9c631a7c818bc4b2b471793dcc986c541239f6b55df348e94b8cab7775d : ByStr32 +Gas remaining: 9999988 diff --git a/testsuite/expr/builtin_to_nat.ll b/testsuite/expr/builtin_to_nat.ll index ce1cac14..d5a5340e 100644 --- a/testsuite/expr/builtin_to_nat.ll +++ b/testsuite/expr/builtin_to_nat.ll @@ -16,6 +16,7 @@ target triple = "x86_64-pc-linux-gnu" %Uint32 = type { i32 } @_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 } @@ -66,24 +67,48 @@ entry: define internal %TName_Nat* @"$scilla_expr_47"(i8* %0) { entry: %"$expr_0" = alloca %TName_Nat* + %"$gasrem_48" = load i64, i64* @_gasrem + %"$gascmp_49" = icmp ugt i64 1, %"$gasrem_48" + br i1 %"$gascmp_49", label %"$out_of_gas_50", label %"$have_gas_51" + +"$out_of_gas_50": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_51" + +"$have_gas_51": ; preds = %"$out_of_gas_50", %entry + %"$consume_52" = sub i64 %"$gasrem_48", 1 + store i64 %"$consume_52", i64* @_gasrem %two = alloca %Uint32 + %"$gasrem_53" = load i64, i64* @_gasrem + %"$gascmp_54" = icmp ugt i64 1, %"$gasrem_53" + br i1 %"$gascmp_54", label %"$out_of_gas_55", label %"$have_gas_56" + +"$out_of_gas_55": ; preds = %"$have_gas_51" + call void @_out_of_gas() + br label %"$have_gas_56" + +"$have_gas_56": ; preds = %"$out_of_gas_55", %"$have_gas_51" + %"$consume_57" = sub i64 %"$gasrem_53", 1 + store i64 %"$consume_57", i64* @_gasrem store %Uint32 { i32 2 }, %Uint32* %two - %"$execptr_load_48" = load i8*, i8** @_execptr - %"$two_49" = load %Uint32, %Uint32* %two - %"$to_nat_call_50" = call %TName_Nat* @_to_nat(i8* %"$execptr_load_48", %Uint32 %"$two_49") - store %TName_Nat* %"$to_nat_call_50", %TName_Nat** %"$expr_0" - %"$$expr_0_51" = load %TName_Nat*, %TName_Nat** %"$expr_0" - ret %TName_Nat* %"$$expr_0_51" + %"$execptr_load_58" = load i8*, i8** @_execptr + %"$two_59" = load %Uint32, %Uint32* %two + %"$to_nat_call_60" = call %TName_Nat* @_to_nat(i8* %"$execptr_load_58", %Uint32 %"$two_59") + store %TName_Nat* %"$to_nat_call_60", %TName_Nat** %"$expr_0" + %"$$expr_0_61" = load %TName_Nat*, %TName_Nat** %"$expr_0" + ret %TName_Nat* %"$$expr_0_61" } +declare void @_out_of_gas() + declare %TName_Nat* @_to_nat(i8*, %Uint32) declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_52" = call %TName_Nat* @"$scilla_expr_47"(i8* null) - %"$memvoidcast_53" = bitcast %TName_Nat* %"$exprval_52" to i8* - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_Nat_33", i8* %"$memvoidcast_53") + %"$exprval_62" = call %TName_Nat* @"$scilla_expr_47"(i8* null) + %"$memvoidcast_63" = bitcast %TName_Nat* %"$exprval_62" to i8* + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_Nat_33", i8* %"$memvoidcast_63") ret void } diff --git a/testsuite/expr/builtin_to_nat.ll.result b/testsuite/expr/builtin_to_nat.ll.result index b70f0fcc..5c827bad 100644 --- a/testsuite/expr/builtin_to_nat.ll.result +++ b/testsuite/expr/builtin_to_nat.ll.result @@ -1 +1,2 @@ Succ(Succ(Zero : Nat) : Nat) : Nat +Gas remaining: 9999998 diff --git a/testsuite/expr/church_nat.ll b/testsuite/expr/church_nat.ll index cefbde79..8651fe5d 100644 --- a/testsuite/expr/church_nat.ll +++ b/testsuite/expr/church_nat.ll @@ -79,6 +79,7 @@ target triple = "x86_64-pc-linux-gnu" %"$$fundef_25_env_129" = type {} @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_74" = global %"$TyDescrTy_PrimTyp_73" zeroinitializer @"$TyDescr_Int32_75" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_73"* @"$TyDescr_Int32_Prim_74" to i8*) } @"$TyDescr_Uint32_Prim_76" = global %"$TyDescrTy_PrimTyp_73" { i32 1, i32 0 } @@ -110,596 +111,1159 @@ target triple = "x86_64-pc-linux-gnu" define internal %Uint32 @"$fundef_71"(%"$$fundef_71_env_106"* %0, %Uint32 %1) { entry: - %"$$fundef_71_env_one_426" = getelementptr inbounds %"$$fundef_71_env_106", %"$$fundef_71_env_106"* %0, i32 0, i32 0 - %"$one_envload_427" = load %Uint32, %Uint32* %"$$fundef_71_env_one_426" + %"$$fundef_71_env_one_681" = getelementptr inbounds %"$$fundef_71_env_106", %"$$fundef_71_env_106"* %0, i32 0, i32 0 + %"$one_envload_682" = load %Uint32, %Uint32* %"$$fundef_71_env_one_681" %one = alloca %Uint32 - store %Uint32 %"$one_envload_427", %Uint32* %one + store %Uint32 %"$one_envload_682", %Uint32* %one %"$retval_72" = alloca %Uint32 - %"$one_428" = load %Uint32, %Uint32* %one - %"$add_call_429" = call %Uint32 @_add_Uint32(%Uint32 %"$one_428", %Uint32 %1) - store %Uint32 %"$add_call_429", %Uint32* %"$retval_72" - %"$$retval_72_430" = load %Uint32, %Uint32* %"$retval_72" - ret %Uint32 %"$$retval_72_430" + %"$one_683" = load %Uint32, %Uint32* %one + %"$add_call_684" = call %Uint32 @_add_Uint32(%Uint32 %"$one_683", %Uint32 %1) + store %Uint32 %"$add_call_684", %Uint32* %"$retval_72" + %"$$retval_72_685" = load %Uint32, %Uint32* %"$retval_72" + ret %Uint32 %"$$retval_72_685" } define internal %Uint32 @"$fundef_69"(%"$$fundef_69_env_107"* %0, { i8*, i8* }* %1) { entry: %"$retval_70" = alloca %Uint32 + %"$gasrem_612" = load i64, i64* @_gasrem + %"$gascmp_613" = icmp ugt i64 1, %"$gasrem_612" + br i1 %"$gascmp_613", label %"$out_of_gas_614", label %"$have_gas_615" + +"$out_of_gas_614": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_615" + +"$have_gas_615": ; preds = %"$out_of_gas_614", %entry + %"$consume_616" = sub i64 %"$gasrem_612", 1 + store i64 %"$consume_616", i64* @_gasrem %zero = alloca %Uint32 + %"$gasrem_617" = load i64, i64* @_gasrem + %"$gascmp_618" = icmp ugt i64 1, %"$gasrem_617" + br i1 %"$gascmp_618", label %"$out_of_gas_619", label %"$have_gas_620" + +"$out_of_gas_619": ; preds = %"$have_gas_615" + call void @_out_of_gas() + br label %"$have_gas_620" + +"$have_gas_620": ; preds = %"$out_of_gas_619", %"$have_gas_615" + %"$consume_621" = sub i64 %"$gasrem_617", 1 + store i64 %"$consume_621", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %zero + %"$gasrem_622" = load i64, i64* @_gasrem + %"$gascmp_623" = icmp ugt i64 1, %"$gasrem_622" + br i1 %"$gascmp_623", label %"$out_of_gas_624", label %"$have_gas_625" + +"$out_of_gas_624": ; preds = %"$have_gas_620" + call void @_out_of_gas() + br label %"$have_gas_625" + +"$have_gas_625": ; preds = %"$out_of_gas_624", %"$have_gas_620" + %"$consume_626" = sub i64 %"$gasrem_622", 1 + store i64 %"$consume_626", i64* @_gasrem %one = alloca %Uint32 + %"$gasrem_627" = load i64, i64* @_gasrem + %"$gascmp_628" = icmp ugt i64 1, %"$gasrem_627" + br i1 %"$gascmp_628", label %"$out_of_gas_629", label %"$have_gas_630" + +"$out_of_gas_629": ; preds = %"$have_gas_625" + call void @_out_of_gas() + br label %"$have_gas_630" + +"$have_gas_630": ; preds = %"$out_of_gas_629", %"$have_gas_625" + %"$consume_631" = sub i64 %"$gasrem_627", 1 + store i64 %"$consume_631", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %one + %"$gasrem_632" = load i64, i64* @_gasrem + %"$gascmp_633" = icmp ugt i64 1, %"$gasrem_632" + br i1 %"$gascmp_633", label %"$out_of_gas_634", label %"$have_gas_635" + +"$out_of_gas_634": ; preds = %"$have_gas_630" + call void @_out_of_gas() + br label %"$have_gas_635" + +"$have_gas_635": ; preds = %"$out_of_gas_634", %"$have_gas_630" + %"$consume_636" = sub i64 %"$gasrem_632", 1 + store i64 %"$consume_636", i64* @_gasrem %add1 = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$$fundef_71_envp_402_load" = load i8*, i8** @_execptr - %"$$fundef_71_envp_402_salloc" = call i8* @_salloc(i8* %"$$fundef_71_envp_402_load", i64 4) - %"$$fundef_71_envp_402" = bitcast i8* %"$$fundef_71_envp_402_salloc" to %"$$fundef_71_env_106"* - %"$$fundef_71_env_voidp_404" = bitcast %"$$fundef_71_env_106"* %"$$fundef_71_envp_402" to i8* - %"$$fundef_71_cloval_405" = insertvalue { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_71_env_106"*, %Uint32)* @"$fundef_71" to %Uint32 (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_71_env_voidp_404", 1 - %"$$fundef_71_env_one_406" = getelementptr inbounds %"$$fundef_71_env_106", %"$$fundef_71_env_106"* %"$$fundef_71_envp_402", i32 0, i32 0 - %"$one_407" = load %Uint32, %Uint32* %one - store %Uint32 %"$one_407", %Uint32* %"$$fundef_71_env_one_406" - store { %Uint32 (i8*, %Uint32)*, i8* } %"$$fundef_71_cloval_405", { %Uint32 (i8*, %Uint32)*, i8* }* %add1 + %"$gasrem_637" = load i64, i64* @_gasrem + %"$gascmp_638" = icmp ugt i64 1, %"$gasrem_637" + br i1 %"$gascmp_638", label %"$out_of_gas_639", label %"$have_gas_640" + +"$out_of_gas_639": ; preds = %"$have_gas_635" + call void @_out_of_gas() + br label %"$have_gas_640" + +"$have_gas_640": ; preds = %"$out_of_gas_639", %"$have_gas_635" + %"$consume_641" = sub i64 %"$gasrem_637", 1 + store i64 %"$consume_641", i64* @_gasrem + %"$$fundef_71_envp_642_load" = load i8*, i8** @_execptr + %"$$fundef_71_envp_642_salloc" = call i8* @_salloc(i8* %"$$fundef_71_envp_642_load", i64 4) + %"$$fundef_71_envp_642" = bitcast i8* %"$$fundef_71_envp_642_salloc" to %"$$fundef_71_env_106"* + %"$$fundef_71_env_voidp_644" = bitcast %"$$fundef_71_env_106"* %"$$fundef_71_envp_642" to i8* + %"$$fundef_71_cloval_645" = insertvalue { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_71_env_106"*, %Uint32)* @"$fundef_71" to %Uint32 (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_71_env_voidp_644", 1 + %"$$fundef_71_env_one_646" = getelementptr inbounds %"$$fundef_71_env_106", %"$$fundef_71_env_106"* %"$$fundef_71_envp_642", i32 0, i32 0 + %"$one_647" = load %Uint32, %Uint32* %one + store %Uint32 %"$one_647", %Uint32* %"$$fundef_71_env_one_646" + store { %Uint32 (i8*, %Uint32)*, i8* } %"$$fundef_71_cloval_645", { %Uint32 (i8*, %Uint32)*, i8* }* %add1 + %"$gasrem_648" = load i64, i64* @_gasrem + %"$gascmp_649" = icmp ugt i64 1, %"$gasrem_648" + br i1 %"$gascmp_649", label %"$out_of_gas_650", label %"$have_gas_651" + +"$out_of_gas_650": ; preds = %"$have_gas_640" + call void @_out_of_gas() + br label %"$have_gas_651" + +"$have_gas_651": ; preds = %"$out_of_gas_650", %"$have_gas_640" + %"$consume_652" = sub i64 %"$gasrem_648", 1 + store i64 %"$consume_652", i64* @_gasrem %c32 = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - %"$c_408" = getelementptr { i8*, i8* }, { i8*, i8* }* %1, i32 0 - %"$c_409" = bitcast { i8*, i8* }* %"$c_408" to { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - %"$c_410" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$c_409" - %"$c_fptr_411" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$c_410", 0 - %"$c_envptr_412" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$c_410", 1 - %"$c_call_413" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c_fptr_411"(i8* %"$c_envptr_412") - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c_call_413", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c32 + %"$gasrem_653" = load i64, i64* @_gasrem + %"$gascmp_654" = icmp ugt i64 1, %"$gasrem_653" + br i1 %"$gascmp_654", label %"$out_of_gas_655", label %"$have_gas_656" + +"$out_of_gas_655": ; preds = %"$have_gas_651" + call void @_out_of_gas() + br label %"$have_gas_656" + +"$have_gas_656": ; preds = %"$out_of_gas_655", %"$have_gas_651" + %"$consume_657" = sub i64 %"$gasrem_653", 1 + store i64 %"$consume_657", i64* @_gasrem + %"$c_658" = getelementptr { i8*, i8* }, { i8*, i8* }* %1, i32 0 + %"$c_659" = bitcast { i8*, i8* }* %"$c_658" to { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + %"$c_660" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$c_659" + %"$c_fptr_661" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$c_660", 0 + %"$c_envptr_662" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$c_660", 1 + %"$c_call_663" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c_fptr_661"(i8* %"$c_envptr_662") + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c_call_663", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c32 + %"$gasrem_664" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_656" + call void @_out_of_gas() + br label %"$have_gas_667" + +"$have_gas_667": ; preds = %"$out_of_gas_666", %"$have_gas_656" + %"$consume_668" = sub i64 %"$gasrem_664", 1 + store i64 %"$consume_668", i64* @_gasrem %"$c32_9" = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$c32_414" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c32 - %"$c32_fptr_415" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c32_414", 0 - %"$c32_envptr_416" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c32_414", 1 - %"$add1_417" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %add1 - %"$c32_call_418" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$c32_fptr_415"(i8* %"$c32_envptr_416", { %Uint32 (i8*, %Uint32)*, i8* } %"$add1_417") - store { %Uint32 (i8*, %Uint32)*, i8* } %"$c32_call_418", { %Uint32 (i8*, %Uint32)*, i8* }* %"$c32_9" + %"$c32_669" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c32 + %"$c32_fptr_670" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c32_669", 0 + %"$c32_envptr_671" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c32_669", 1 + %"$add1_672" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %add1 + %"$c32_call_673" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$c32_fptr_670"(i8* %"$c32_envptr_671", { %Uint32 (i8*, %Uint32)*, i8* } %"$add1_672") + store { %Uint32 (i8*, %Uint32)*, i8* } %"$c32_call_673", { %Uint32 (i8*, %Uint32)*, i8* }* %"$c32_9" %"$c32_10" = alloca %Uint32 - %"$$c32_9_419" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$c32_9" - %"$$c32_9_fptr_420" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$c32_9_419", 0 - %"$$c32_9_envptr_421" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$c32_9_419", 1 - %"$zero_422" = load %Uint32, %Uint32* %zero - %"$$c32_9_call_423" = call %Uint32 %"$$c32_9_fptr_420"(i8* %"$$c32_9_envptr_421", %Uint32 %"$zero_422") - store %Uint32 %"$$c32_9_call_423", %Uint32* %"$c32_10" - %"$$c32_10_424" = load %Uint32, %Uint32* %"$c32_10" - store %Uint32 %"$$c32_10_424", %Uint32* %"$retval_70" - %"$$retval_70_425" = load %Uint32, %Uint32* %"$retval_70" - ret %Uint32 %"$$retval_70_425" + %"$$c32_9_674" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$c32_9" + %"$$c32_9_fptr_675" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$c32_9_674", 0 + %"$$c32_9_envptr_676" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$c32_9_674", 1 + %"$zero_677" = load %Uint32, %Uint32* %zero + %"$$c32_9_call_678" = call %Uint32 %"$$c32_9_fptr_675"(i8* %"$$c32_9_envptr_676", %Uint32 %"$zero_677") + store %Uint32 %"$$c32_9_call_678", %Uint32* %"$c32_10" + %"$$c32_10_679" = load %Uint32, %Uint32* %"$c32_10" + store %Uint32 %"$$c32_10_679", %Uint32* %"$retval_70" + %"$$retval_70_680" = load %Uint32, %Uint32* %"$retval_70" + ret %Uint32 %"$$retval_70_680" } define internal { i8*, i8* }* @"$fundef_67"(%"$$fundef_67_env_108"* %0, { i8*, i8* }* %1) { entry: - %"$$fundef_67_env_c0_372" = getelementptr inbounds %"$$fundef_67_env_108", %"$$fundef_67_env_108"* %0, i32 0, i32 0 - %"$c0_envload_373" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_67_env_c0_372" + %"$$fundef_67_env_c0_557" = getelementptr inbounds %"$$fundef_67_env_108", %"$$fundef_67_env_108"* %0, i32 0, i32 0 + %"$c0_envload_558" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_67_env_c0_557" %c0 = alloca { i8*, i8* }* - store { i8*, i8* }* %"$c0_envload_373", { i8*, i8* }** %c0 - %"$$fundef_67_env_cadd_374" = getelementptr inbounds %"$$fundef_67_env_108", %"$$fundef_67_env_108"* %0, i32 0, i32 1 - %"$cadd_envload_375" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$$fundef_67_env_cadd_374" + store { i8*, i8* }* %"$c0_envload_558", { i8*, i8* }** %c0 + %"$$fundef_67_env_cadd_559" = getelementptr inbounds %"$$fundef_67_env_108", %"$$fundef_67_env_108"* %0, i32 0, i32 1 + %"$cadd_envload_560" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$$fundef_67_env_cadd_559" %cadd = alloca { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } - store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_envload_375", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cadd - %"$$fundef_67_env_m_376" = getelementptr inbounds %"$$fundef_67_env_108", %"$$fundef_67_env_108"* %0, i32 0, i32 2 - %"$m_envload_377" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_67_env_m_376" + store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_envload_560", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cadd + %"$$fundef_67_env_m_561" = getelementptr inbounds %"$$fundef_67_env_108", %"$$fundef_67_env_108"* %0, i32 0, i32 2 + %"$m_envload_562" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_67_env_m_561" %m = alloca { i8*, i8* }* - store { i8*, i8* }* %"$m_envload_377", { i8*, i8* }** %m + store { i8*, i8* }* %"$m_envload_562", { i8*, i8* }** %m %"$retval_68" = alloca { i8*, i8* }* + %"$gasrem_563" = load i64, i64* @_gasrem + %"$gascmp_564" = icmp ugt i64 1, %"$gasrem_563" + br i1 %"$gascmp_564", label %"$out_of_gas_565", label %"$have_gas_566" + +"$out_of_gas_565": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_566" + +"$have_gas_566": ; preds = %"$out_of_gas_565", %entry + %"$consume_567" = sub i64 %"$gasrem_563", 1 + store i64 %"$consume_567", i64* @_gasrem %cadd_m = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } + %"$gasrem_568" = load i64, i64* @_gasrem + %"$gascmp_569" = icmp ugt i64 1, %"$gasrem_568" + br i1 %"$gascmp_569", label %"$out_of_gas_570", label %"$have_gas_571" + +"$out_of_gas_570": ; preds = %"$have_gas_566" + call void @_out_of_gas() + br label %"$have_gas_571" + +"$have_gas_571": ; preds = %"$out_of_gas_570", %"$have_gas_566" + %"$consume_572" = sub i64 %"$gasrem_568", 1 + store i64 %"$consume_572", i64* @_gasrem %"$cadd_6" = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } - %"$cadd_378" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cadd - %"$cadd_fptr_379" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_378", 0 - %"$cadd_envptr_380" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_378", 1 - %"$m_381" = load { i8*, i8* }*, { i8*, i8* }** %m - %"$cadd_call_382" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cadd_fptr_379"(i8* %"$cadd_envptr_380", { i8*, i8* }* %"$m_381") - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cadd_call_382", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cadd_6" - %"$$cadd_6_383" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cadd_6" - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cadd_6_383", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %cadd_m + %"$cadd_573" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cadd + %"$cadd_fptr_574" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_573", 0 + %"$cadd_envptr_575" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_573", 1 + %"$m_576" = load { i8*, i8* }*, { i8*, i8* }** %m + %"$cadd_call_577" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cadd_fptr_574"(i8* %"$cadd_envptr_575", { i8*, i8* }* %"$m_576") + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cadd_call_577", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cadd_6" + %"$$cadd_6_578" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cadd_6" + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cadd_6_578", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %cadd_m + %"$gasrem_579" = load i64, i64* @_gasrem + %"$gascmp_580" = icmp ugt i64 1, %"$gasrem_579" + br i1 %"$gascmp_580", label %"$out_of_gas_581", label %"$have_gas_582" + +"$out_of_gas_581": ; preds = %"$have_gas_571" + call void @_out_of_gas() + br label %"$have_gas_582" + +"$have_gas_582": ; preds = %"$out_of_gas_581", %"$have_gas_571" + %"$consume_583" = sub i64 %"$gasrem_579", 1 + store i64 %"$consume_583", i64* @_gasrem %nI = alloca { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } - %"$n_384" = getelementptr { i8*, i8* }, { i8*, i8* }* %1, i32 1 - %"$n_385" = bitcast { i8*, i8* }* %"$n_384" to { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* - %"$n_386" = load { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* %"$n_385" - %"$n_fptr_387" = extractvalue { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } %"$n_386", 0 - %"$n_envptr_388" = extractvalue { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } %"$n_386", 1 - %"$n_call_389" = call { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$n_fptr_387"(i8* %"$n_envptr_388") - store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$n_call_389", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %nI + %"$gasrem_584" = load i64, i64* @_gasrem + %"$gascmp_585" = icmp ugt i64 1, %"$gasrem_584" + br i1 %"$gascmp_585", label %"$out_of_gas_586", label %"$have_gas_587" + +"$out_of_gas_586": ; preds = %"$have_gas_582" + call void @_out_of_gas() + br label %"$have_gas_587" + +"$have_gas_587": ; preds = %"$out_of_gas_586", %"$have_gas_582" + %"$consume_588" = sub i64 %"$gasrem_584", 1 + store i64 %"$consume_588", i64* @_gasrem + %"$n_589" = getelementptr { i8*, i8* }, { i8*, i8* }* %1, i32 1 + %"$n_590" = bitcast { i8*, i8* }* %"$n_589" to { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* + %"$n_591" = load { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* %"$n_590" + %"$n_fptr_592" = extractvalue { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } %"$n_591", 0 + %"$n_envptr_593" = extractvalue { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } %"$n_591", 1 + %"$n_call_594" = call { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$n_fptr_592"(i8* %"$n_envptr_593") + store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$n_call_594", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %nI + %"$gasrem_595" = load i64, i64* @_gasrem + %"$gascmp_596" = icmp ugt i64 1, %"$gasrem_595" + br i1 %"$gascmp_596", label %"$out_of_gas_597", label %"$have_gas_598" + +"$out_of_gas_597": ; preds = %"$have_gas_587" + call void @_out_of_gas() + br label %"$have_gas_598" + +"$have_gas_598": ; preds = %"$out_of_gas_597", %"$have_gas_587" + %"$consume_599" = sub i64 %"$gasrem_595", 1 + store i64 %"$consume_599", i64* @_gasrem %"$nI_7" = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } - %"$nI_390" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %nI - %"$nI_fptr_391" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$nI_390", 0 - %"$nI_envptr_392" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$nI_390", 1 - %"$cadd_m_393" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %cadd_m - %"$nI_call_394" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$nI_fptr_391"(i8* %"$nI_envptr_392", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cadd_m_393") - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$nI_call_394", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$nI_7" + %"$nI_600" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %nI + %"$nI_fptr_601" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$nI_600", 0 + %"$nI_envptr_602" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$nI_600", 1 + %"$cadd_m_603" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %cadd_m + %"$nI_call_604" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$nI_fptr_601"(i8* %"$nI_envptr_602", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cadd_m_603") + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$nI_call_604", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$nI_7" %"$nI_8" = alloca { i8*, i8* }* - %"$$nI_7_395" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$nI_7" - %"$$nI_7_fptr_396" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$nI_7_395", 0 - %"$$nI_7_envptr_397" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$nI_7_395", 1 - %"$c0_398" = load { i8*, i8* }*, { i8*, i8* }** %c0 - %"$$nI_7_call_399" = call { i8*, i8* }* %"$$nI_7_fptr_396"(i8* %"$$nI_7_envptr_397", { i8*, i8* }* %"$c0_398") - store { i8*, i8* }* %"$$nI_7_call_399", { i8*, i8* }** %"$nI_8" - %"$$nI_8_400" = load { i8*, i8* }*, { i8*, i8* }** %"$nI_8" - store { i8*, i8* }* %"$$nI_8_400", { i8*, i8* }** %"$retval_68" - %"$$retval_68_401" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_68" - ret { i8*, i8* }* %"$$retval_68_401" + %"$$nI_7_605" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$nI_7" + %"$$nI_7_fptr_606" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$nI_7_605", 0 + %"$$nI_7_envptr_607" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$nI_7_605", 1 + %"$c0_608" = load { i8*, i8* }*, { i8*, i8* }** %c0 + %"$$nI_7_call_609" = call { i8*, i8* }* %"$$nI_7_fptr_606"(i8* %"$$nI_7_envptr_607", { i8*, i8* }* %"$c0_608") + store { i8*, i8* }* %"$$nI_7_call_609", { i8*, i8* }** %"$nI_8" + %"$$nI_8_610" = load { i8*, i8* }*, { i8*, i8* }** %"$nI_8" + store { i8*, i8* }* %"$$nI_8_610", { i8*, i8* }** %"$retval_68" + %"$$retval_68_611" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_68" + ret { i8*, i8* }* %"$$retval_68_611" } define internal { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } @"$fundef_65"(%"$$fundef_65_env_109"* %0, { i8*, i8* }* %1) { entry: - %"$$fundef_65_env_c0_358" = getelementptr inbounds %"$$fundef_65_env_109", %"$$fundef_65_env_109"* %0, i32 0, i32 0 - %"$c0_envload_359" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_65_env_c0_358" + %"$$fundef_65_env_c0_538" = getelementptr inbounds %"$$fundef_65_env_109", %"$$fundef_65_env_109"* %0, i32 0, i32 0 + %"$c0_envload_539" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_65_env_c0_538" %c0 = alloca { i8*, i8* }* - store { i8*, i8* }* %"$c0_envload_359", { i8*, i8* }** %c0 - %"$$fundef_65_env_cadd_360" = getelementptr inbounds %"$$fundef_65_env_109", %"$$fundef_65_env_109"* %0, i32 0, i32 1 - %"$cadd_envload_361" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$$fundef_65_env_cadd_360" + store { i8*, i8* }* %"$c0_envload_539", { i8*, i8* }** %c0 + %"$$fundef_65_env_cadd_540" = getelementptr inbounds %"$$fundef_65_env_109", %"$$fundef_65_env_109"* %0, i32 0, i32 1 + %"$cadd_envload_541" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$$fundef_65_env_cadd_540" %cadd = alloca { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } - store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_envload_361", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cadd + store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_envload_541", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cadd %"$retval_66" = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } - %"$$fundef_67_envp_362_load" = load i8*, i8** @_execptr - %"$$fundef_67_envp_362_salloc" = call i8* @_salloc(i8* %"$$fundef_67_envp_362_load", i64 32) - %"$$fundef_67_envp_362" = bitcast i8* %"$$fundef_67_envp_362_salloc" to %"$$fundef_67_env_108"* - %"$$fundef_67_env_voidp_364" = bitcast %"$$fundef_67_env_108"* %"$$fundef_67_envp_362" to i8* - %"$$fundef_67_cloval_365" = insertvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } { { i8*, i8* }* (i8*, { i8*, i8* }*)* bitcast ({ i8*, i8* }* (%"$$fundef_67_env_108"*, { i8*, i8* }*)* @"$fundef_67" to { i8*, i8* }* (i8*, { i8*, i8* }*)*), i8* undef }, i8* %"$$fundef_67_env_voidp_364", 1 - %"$$fundef_67_env_c0_366" = getelementptr inbounds %"$$fundef_67_env_108", %"$$fundef_67_env_108"* %"$$fundef_67_envp_362", i32 0, i32 0 - %"$c0_367" = load { i8*, i8* }*, { i8*, i8* }** %c0 - store { i8*, i8* }* %"$c0_367", { i8*, i8* }** %"$$fundef_67_env_c0_366" - %"$$fundef_67_env_cadd_368" = getelementptr inbounds %"$$fundef_67_env_108", %"$$fundef_67_env_108"* %"$$fundef_67_envp_362", i32 0, i32 1 - %"$cadd_369" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cadd - store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_369", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$$fundef_67_env_cadd_368" - %"$$fundef_67_env_m_370" = getelementptr inbounds %"$$fundef_67_env_108", %"$$fundef_67_env_108"* %"$$fundef_67_envp_362", i32 0, i32 2 - store { i8*, i8* }* %1, { i8*, i8* }** %"$$fundef_67_env_m_370" - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$fundef_67_cloval_365", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_66" - %"$$retval_66_371" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_66" - ret { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$retval_66_371" + %"$gasrem_542" = load i64, i64* @_gasrem + %"$gascmp_543" = icmp ugt i64 1, %"$gasrem_542" + br i1 %"$gascmp_543", label %"$out_of_gas_544", label %"$have_gas_545" + +"$out_of_gas_544": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_545" + +"$have_gas_545": ; preds = %"$out_of_gas_544", %entry + %"$consume_546" = sub i64 %"$gasrem_542", 1 + store i64 %"$consume_546", i64* @_gasrem + %"$$fundef_67_envp_547_load" = load i8*, i8** @_execptr + %"$$fundef_67_envp_547_salloc" = call i8* @_salloc(i8* %"$$fundef_67_envp_547_load", i64 32) + %"$$fundef_67_envp_547" = bitcast i8* %"$$fundef_67_envp_547_salloc" to %"$$fundef_67_env_108"* + %"$$fundef_67_env_voidp_549" = bitcast %"$$fundef_67_env_108"* %"$$fundef_67_envp_547" to i8* + %"$$fundef_67_cloval_550" = insertvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } { { i8*, i8* }* (i8*, { i8*, i8* }*)* bitcast ({ i8*, i8* }* (%"$$fundef_67_env_108"*, { i8*, i8* }*)* @"$fundef_67" to { i8*, i8* }* (i8*, { i8*, i8* }*)*), i8* undef }, i8* %"$$fundef_67_env_voidp_549", 1 + %"$$fundef_67_env_c0_551" = getelementptr inbounds %"$$fundef_67_env_108", %"$$fundef_67_env_108"* %"$$fundef_67_envp_547", i32 0, i32 0 + %"$c0_552" = load { i8*, i8* }*, { i8*, i8* }** %c0 + store { i8*, i8* }* %"$c0_552", { i8*, i8* }** %"$$fundef_67_env_c0_551" + %"$$fundef_67_env_cadd_553" = getelementptr inbounds %"$$fundef_67_env_108", %"$$fundef_67_env_108"* %"$$fundef_67_envp_547", i32 0, i32 1 + %"$cadd_554" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cadd + store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_554", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$$fundef_67_env_cadd_553" + %"$$fundef_67_env_m_555" = getelementptr inbounds %"$$fundef_67_env_108", %"$$fundef_67_env_108"* %"$$fundef_67_envp_547", i32 0, i32 2 + store { i8*, i8* }* %1, { i8*, i8* }** %"$$fundef_67_env_m_555" + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$fundef_67_cloval_550", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_66" + %"$$retval_66_556" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_66" + ret { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$retval_66_556" } define internal { i8*, i8* }* @"$fundef_63"(%"$$fundef_63_env_110"* %0, { i8*, i8* }* %1) { entry: - %"$$fundef_63_env_m_316" = getelementptr inbounds %"$$fundef_63_env_110", %"$$fundef_63_env_110"* %0, i32 0, i32 0 - %"$m_envload_317" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_63_env_m_316" + %"$$fundef_63_env_m_461" = getelementptr inbounds %"$$fundef_63_env_110", %"$$fundef_63_env_110"* %0, i32 0, i32 0 + %"$m_envload_462" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_63_env_m_461" %m = alloca { i8*, i8* }* - store { i8*, i8* }* %"$m_envload_317", { i8*, i8* }** %m - %"$$fundef_63_env_n_318" = getelementptr inbounds %"$$fundef_63_env_110", %"$$fundef_63_env_110"* %0, i32 0, i32 1 - %"$n_envload_319" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_63_env_n_318" + store { i8*, i8* }* %"$m_envload_462", { i8*, i8* }** %m + %"$$fundef_63_env_n_463" = getelementptr inbounds %"$$fundef_63_env_110", %"$$fundef_63_env_110"* %0, i32 0, i32 1 + %"$n_envload_464" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_63_env_n_463" %n = alloca { i8*, i8* }* - store { i8*, i8* }* %"$n_envload_319", { i8*, i8* }** %n - %"$$fundef_63_env_s_320" = getelementptr inbounds %"$$fundef_63_env_110", %"$$fundef_63_env_110"* %0, i32 0, i32 2 - %"$s_envload_321" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$$fundef_63_env_s_320" + store { i8*, i8* }* %"$n_envload_464", { i8*, i8* }** %n + %"$$fundef_63_env_s_465" = getelementptr inbounds %"$$fundef_63_env_110", %"$$fundef_63_env_110"* %0, i32 0, i32 2 + %"$s_envload_466" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$$fundef_63_env_s_465" %s = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$s_envload_321", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %s + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$s_envload_466", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %s %"$retval_64" = alloca { i8*, i8* }* + %"$gasrem_467" = load i64, i64* @_gasrem + %"$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 = %entry + call void @_out_of_gas() + br label %"$have_gas_470" + +"$have_gas_470": ; preds = %"$out_of_gas_469", %entry + %"$consume_471" = sub i64 %"$gasrem_467", 1 + store i64 %"$consume_471", i64* @_gasrem %mX = alloca { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } - %"$m_322" = load { i8*, i8* }*, { i8*, i8* }** %m - %"$m_323" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$m_322", i32 1 - %"$m_324" = bitcast { i8*, i8* }* %"$m_323" to { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* - %"$m_325" = load { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* %"$m_324" - %"$m_fptr_326" = extractvalue { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } %"$m_325", 0 - %"$m_envptr_327" = extractvalue { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } %"$m_325", 1 - %"$m_call_328" = call { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$m_fptr_326"(i8* %"$m_envptr_327") - store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$m_call_328", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %mX + %"$gasrem_472" = load i64, i64* @_gasrem + %"$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 + %"$m_477" = load { i8*, i8* }*, { i8*, i8* }** %m + %"$m_478" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$m_477", i32 1 + %"$m_479" = bitcast { i8*, i8* }* %"$m_478" to { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* + %"$m_480" = load { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* %"$m_479" + %"$m_fptr_481" = extractvalue { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } %"$m_480", 0 + %"$m_envptr_482" = extractvalue { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } %"$m_480", 1 + %"$m_call_483" = call { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$m_fptr_481"(i8* %"$m_envptr_482") + store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$m_call_483", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %mX + %"$gasrem_484" = load i64, i64* @_gasrem + %"$gascmp_485" = icmp ugt i64 1, %"$gasrem_484" + br i1 %"$gascmp_485", label %"$out_of_gas_486", label %"$have_gas_487" + +"$out_of_gas_486": ; preds = %"$have_gas_475" + call void @_out_of_gas() + br label %"$have_gas_487" + +"$have_gas_487": ; preds = %"$out_of_gas_486", %"$have_gas_475" + %"$consume_488" = sub i64 %"$gasrem_484", 1 + store i64 %"$consume_488", i64* @_gasrem %nX = alloca { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } - %"$n_329" = load { i8*, i8* }*, { i8*, i8* }** %n - %"$n_330" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$n_329", i32 1 - %"$n_331" = bitcast { i8*, i8* }* %"$n_330" to { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* - %"$n_332" = load { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* %"$n_331" - %"$n_fptr_333" = extractvalue { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } %"$n_332", 0 - %"$n_envptr_334" = extractvalue { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } %"$n_332", 1 - %"$n_call_335" = call { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$n_fptr_333"(i8* %"$n_envptr_334") - store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$n_call_335", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %nX + %"$gasrem_489" = load i64, i64* @_gasrem + %"$gascmp_490" = icmp ugt i64 1, %"$gasrem_489" + br i1 %"$gascmp_490", label %"$out_of_gas_491", label %"$have_gas_492" + +"$out_of_gas_491": ; preds = %"$have_gas_487" + call void @_out_of_gas() + br label %"$have_gas_492" + +"$have_gas_492": ; preds = %"$out_of_gas_491", %"$have_gas_487" + %"$consume_493" = sub i64 %"$gasrem_489", 1 + store i64 %"$consume_493", i64* @_gasrem + %"$n_494" = load { i8*, i8* }*, { i8*, i8* }** %n + %"$n_495" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$n_494", i32 1 + %"$n_496" = bitcast { i8*, i8* }* %"$n_495" to { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* + %"$n_497" = load { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* %"$n_496" + %"$n_fptr_498" = extractvalue { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } %"$n_497", 0 + %"$n_envptr_499" = extractvalue { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } %"$n_497", 1 + %"$n_call_500" = call { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$n_fptr_498"(i8* %"$n_envptr_499") + store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$n_call_500", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %nX + %"$gasrem_501" = load i64, i64* @_gasrem + %"$gascmp_502" = icmp ugt i64 1, %"$gasrem_501" + br i1 %"$gascmp_502", label %"$out_of_gas_503", label %"$have_gas_504" + +"$out_of_gas_503": ; preds = %"$have_gas_492" + call void @_out_of_gas() + br label %"$have_gas_504" + +"$have_gas_504": ; preds = %"$out_of_gas_503", %"$have_gas_492" + %"$consume_505" = sub i64 %"$gasrem_501", 1 + store i64 %"$consume_505", i64* @_gasrem %nXsz = alloca { i8*, i8* }* + %"$gasrem_506" = load i64, i64* @_gasrem + %"$gascmp_507" = icmp ugt i64 1, %"$gasrem_506" + br i1 %"$gascmp_507", label %"$out_of_gas_508", label %"$have_gas_509" + +"$out_of_gas_508": ; preds = %"$have_gas_504" + call void @_out_of_gas() + br label %"$have_gas_509" + +"$have_gas_509": ; preds = %"$out_of_gas_508", %"$have_gas_504" + %"$consume_510" = sub i64 %"$gasrem_506", 1 + store i64 %"$consume_510", i64* @_gasrem %"$nX_2" = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } - %"$nX_336" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %nX - %"$nX_fptr_337" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$nX_336", 0 - %"$nX_envptr_338" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$nX_336", 1 - %"$s_339" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %s - %"$nX_call_340" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$nX_fptr_337"(i8* %"$nX_envptr_338", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$s_339") - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$nX_call_340", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$nX_2" + %"$nX_511" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %nX + %"$nX_fptr_512" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$nX_511", 0 + %"$nX_envptr_513" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$nX_511", 1 + %"$s_514" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %s + %"$nX_call_515" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$nX_fptr_512"(i8* %"$nX_envptr_513", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$s_514") + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$nX_call_515", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$nX_2" %"$nX_3" = alloca { i8*, i8* }* - %"$$nX_2_341" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$nX_2" - %"$$nX_2_fptr_342" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$nX_2_341", 0 - %"$$nX_2_envptr_343" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$nX_2_341", 1 - %"$$nX_2_call_344" = call { i8*, i8* }* %"$$nX_2_fptr_342"(i8* %"$$nX_2_envptr_343", { i8*, i8* }* %1) - store { i8*, i8* }* %"$$nX_2_call_344", { i8*, i8* }** %"$nX_3" - %"$$nX_3_345" = load { i8*, i8* }*, { i8*, i8* }** %"$nX_3" - store { i8*, i8* }* %"$$nX_3_345", { i8*, i8* }** %nXsz + %"$$nX_2_516" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$nX_2" + %"$$nX_2_fptr_517" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$nX_2_516", 0 + %"$$nX_2_envptr_518" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$nX_2_516", 1 + %"$$nX_2_call_519" = call { i8*, i8* }* %"$$nX_2_fptr_517"(i8* %"$$nX_2_envptr_518", { i8*, i8* }* %1) + store { i8*, i8* }* %"$$nX_2_call_519", { i8*, i8* }** %"$nX_3" + %"$$nX_3_520" = load { i8*, i8* }*, { i8*, i8* }** %"$nX_3" + store { i8*, i8* }* %"$$nX_3_520", { i8*, i8* }** %nXsz + %"$gasrem_521" = load i64, i64* @_gasrem + %"$gascmp_522" = icmp ugt i64 1, %"$gasrem_521" + br i1 %"$gascmp_522", label %"$out_of_gas_523", label %"$have_gas_524" + +"$out_of_gas_523": ; preds = %"$have_gas_509" + call void @_out_of_gas() + br label %"$have_gas_524" + +"$have_gas_524": ; preds = %"$out_of_gas_523", %"$have_gas_509" + %"$consume_525" = sub i64 %"$gasrem_521", 1 + store i64 %"$consume_525", i64* @_gasrem %"$mX_4" = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } - %"$mX_346" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %mX - %"$mX_fptr_347" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$mX_346", 0 - %"$mX_envptr_348" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$mX_346", 1 - %"$s_349" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %s - %"$mX_call_350" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$mX_fptr_347"(i8* %"$mX_envptr_348", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$s_349") - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$mX_call_350", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$mX_4" + %"$mX_526" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %mX + %"$mX_fptr_527" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$mX_526", 0 + %"$mX_envptr_528" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$mX_526", 1 + %"$s_529" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %s + %"$mX_call_530" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$mX_fptr_527"(i8* %"$mX_envptr_528", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$s_529") + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$mX_call_530", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$mX_4" %"$mX_5" = alloca { i8*, i8* }* - %"$$mX_4_351" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$mX_4" - %"$$mX_4_fptr_352" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$mX_4_351", 0 - %"$$mX_4_envptr_353" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$mX_4_351", 1 - %"$nXsz_354" = load { i8*, i8* }*, { i8*, i8* }** %nXsz - %"$$mX_4_call_355" = call { i8*, i8* }* %"$$mX_4_fptr_352"(i8* %"$$mX_4_envptr_353", { i8*, i8* }* %"$nXsz_354") - store { i8*, i8* }* %"$$mX_4_call_355", { i8*, i8* }** %"$mX_5" - %"$$mX_5_356" = load { i8*, i8* }*, { i8*, i8* }** %"$mX_5" - store { i8*, i8* }* %"$$mX_5_356", { i8*, i8* }** %"$retval_64" - %"$$retval_64_357" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_64" - ret { i8*, i8* }* %"$$retval_64_357" + %"$$mX_4_531" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$mX_4" + %"$$mX_4_fptr_532" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$mX_4_531", 0 + %"$$mX_4_envptr_533" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$mX_4_531", 1 + %"$nXsz_534" = load { i8*, i8* }*, { i8*, i8* }** %nXsz + %"$$mX_4_call_535" = call { i8*, i8* }* %"$$mX_4_fptr_532"(i8* %"$$mX_4_envptr_533", { i8*, i8* }* %"$nXsz_534") + store { i8*, i8* }* %"$$mX_4_call_535", { i8*, i8* }** %"$mX_5" + %"$$mX_5_536" = load { i8*, i8* }*, { i8*, i8* }** %"$mX_5" + store { i8*, i8* }* %"$$mX_5_536", { i8*, i8* }** %"$retval_64" + %"$$retval_64_537" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_64" + ret { i8*, i8* }* %"$$retval_64_537" } define internal { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } @"$fundef_61"(%"$$fundef_61_env_111"* %0, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %1) { entry: - %"$$fundef_61_env_m_302" = getelementptr inbounds %"$$fundef_61_env_111", %"$$fundef_61_env_111"* %0, i32 0, i32 0 - %"$m_envload_303" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_61_env_m_302" + %"$$fundef_61_env_m_442" = getelementptr inbounds %"$$fundef_61_env_111", %"$$fundef_61_env_111"* %0, i32 0, i32 0 + %"$m_envload_443" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_61_env_m_442" %m = alloca { i8*, i8* }* - store { i8*, i8* }* %"$m_envload_303", { i8*, i8* }** %m - %"$$fundef_61_env_n_304" = getelementptr inbounds %"$$fundef_61_env_111", %"$$fundef_61_env_111"* %0, i32 0, i32 1 - %"$n_envload_305" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_61_env_n_304" + store { i8*, i8* }* %"$m_envload_443", { i8*, i8* }** %m + %"$$fundef_61_env_n_444" = getelementptr inbounds %"$$fundef_61_env_111", %"$$fundef_61_env_111"* %0, i32 0, i32 1 + %"$n_envload_445" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_61_env_n_444" %n = alloca { i8*, i8* }* - store { i8*, i8* }* %"$n_envload_305", { i8*, i8* }** %n + store { i8*, i8* }* %"$n_envload_445", { i8*, i8* }** %n %"$retval_62" = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } - %"$$fundef_63_envp_306_load" = load i8*, i8** @_execptr - %"$$fundef_63_envp_306_salloc" = call i8* @_salloc(i8* %"$$fundef_63_envp_306_load", i64 32) - %"$$fundef_63_envp_306" = bitcast i8* %"$$fundef_63_envp_306_salloc" to %"$$fundef_63_env_110"* - %"$$fundef_63_env_voidp_308" = bitcast %"$$fundef_63_env_110"* %"$$fundef_63_envp_306" to i8* - %"$$fundef_63_cloval_309" = insertvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } { { i8*, i8* }* (i8*, { i8*, i8* }*)* bitcast ({ i8*, i8* }* (%"$$fundef_63_env_110"*, { i8*, i8* }*)* @"$fundef_63" to { i8*, i8* }* (i8*, { i8*, i8* }*)*), i8* undef }, i8* %"$$fundef_63_env_voidp_308", 1 - %"$$fundef_63_env_m_310" = getelementptr inbounds %"$$fundef_63_env_110", %"$$fundef_63_env_110"* %"$$fundef_63_envp_306", i32 0, i32 0 - %"$m_311" = load { i8*, i8* }*, { i8*, i8* }** %m - store { i8*, i8* }* %"$m_311", { i8*, i8* }** %"$$fundef_63_env_m_310" - %"$$fundef_63_env_n_312" = getelementptr inbounds %"$$fundef_63_env_110", %"$$fundef_63_env_110"* %"$$fundef_63_envp_306", i32 0, i32 1 - %"$n_313" = load { i8*, i8* }*, { i8*, i8* }** %n - store { i8*, i8* }* %"$n_313", { i8*, i8* }** %"$$fundef_63_env_n_312" - %"$$fundef_63_env_s_314" = getelementptr inbounds %"$$fundef_63_env_110", %"$$fundef_63_env_110"* %"$$fundef_63_envp_306", i32 0, i32 2 - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %1, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$$fundef_63_env_s_314" - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$fundef_63_cloval_309", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_62" - %"$$retval_62_315" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_62" - ret { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$retval_62_315" + %"$gasrem_446" = load i64, i64* @_gasrem + %"$gascmp_447" = icmp ugt i64 1, %"$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", 1 + store i64 %"$consume_450", i64* @_gasrem + %"$$fundef_63_envp_451_load" = load i8*, i8** @_execptr + %"$$fundef_63_envp_451_salloc" = call i8* @_salloc(i8* %"$$fundef_63_envp_451_load", i64 32) + %"$$fundef_63_envp_451" = bitcast i8* %"$$fundef_63_envp_451_salloc" to %"$$fundef_63_env_110"* + %"$$fundef_63_env_voidp_453" = bitcast %"$$fundef_63_env_110"* %"$$fundef_63_envp_451" to i8* + %"$$fundef_63_cloval_454" = insertvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } { { i8*, i8* }* (i8*, { i8*, i8* }*)* bitcast ({ i8*, i8* }* (%"$$fundef_63_env_110"*, { i8*, i8* }*)* @"$fundef_63" to { i8*, i8* }* (i8*, { i8*, i8* }*)*), i8* undef }, i8* %"$$fundef_63_env_voidp_453", 1 + %"$$fundef_63_env_m_455" = getelementptr inbounds %"$$fundef_63_env_110", %"$$fundef_63_env_110"* %"$$fundef_63_envp_451", i32 0, i32 0 + %"$m_456" = load { i8*, i8* }*, { i8*, i8* }** %m + store { i8*, i8* }* %"$m_456", { i8*, i8* }** %"$$fundef_63_env_m_455" + %"$$fundef_63_env_n_457" = getelementptr inbounds %"$$fundef_63_env_110", %"$$fundef_63_env_110"* %"$$fundef_63_envp_451", i32 0, i32 1 + %"$n_458" = load { i8*, i8* }*, { i8*, i8* }** %n + store { i8*, i8* }* %"$n_458", { i8*, i8* }** %"$$fundef_63_env_n_457" + %"$$fundef_63_env_s_459" = getelementptr inbounds %"$$fundef_63_env_110", %"$$fundef_63_env_110"* %"$$fundef_63_envp_451", i32 0, i32 2 + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %1, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$$fundef_63_env_s_459" + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$fundef_63_cloval_454", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_62" + %"$$retval_62_460" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_62" + ret { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$retval_62_460" } define internal { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } @"$fundef_59"(%"$$fundef_59_env_112"* %0) { entry: - %"$$fundef_59_env_m_289" = getelementptr inbounds %"$$fundef_59_env_112", %"$$fundef_59_env_112"* %0, i32 0, i32 0 - %"$m_envload_290" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_59_env_m_289" + %"$$fundef_59_env_m_424" = getelementptr inbounds %"$$fundef_59_env_112", %"$$fundef_59_env_112"* %0, i32 0, i32 0 + %"$m_envload_425" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_59_env_m_424" %m = alloca { i8*, i8* }* - store { i8*, i8* }* %"$m_envload_290", { i8*, i8* }** %m - %"$$fundef_59_env_n_291" = getelementptr inbounds %"$$fundef_59_env_112", %"$$fundef_59_env_112"* %0, i32 0, i32 1 - %"$n_envload_292" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_59_env_n_291" + store { i8*, i8* }* %"$m_envload_425", { i8*, i8* }** %m + %"$$fundef_59_env_n_426" = getelementptr inbounds %"$$fundef_59_env_112", %"$$fundef_59_env_112"* %0, i32 0, i32 1 + %"$n_envload_427" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_59_env_n_426" %n = alloca { i8*, i8* }* - store { i8*, i8* }* %"$n_envload_292", { i8*, i8* }** %n + store { i8*, i8* }* %"$n_envload_427", { i8*, i8* }** %n %"$retval_60" = alloca { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } - %"$$fundef_61_envp_293_load" = load i8*, i8** @_execptr - %"$$fundef_61_envp_293_salloc" = call i8* @_salloc(i8* %"$$fundef_61_envp_293_load", i64 16) - %"$$fundef_61_envp_293" = bitcast i8* %"$$fundef_61_envp_293_salloc" to %"$$fundef_61_env_111"* - %"$$fundef_61_env_voidp_295" = bitcast %"$$fundef_61_env_111"* %"$$fundef_61_envp_293" to i8* - %"$$fundef_61_cloval_296" = insertvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })* bitcast ({ { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (%"$$fundef_61_env_111"*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })* @"$fundef_61" to { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*), i8* undef }, i8* %"$$fundef_61_env_voidp_295", 1 - %"$$fundef_61_env_m_297" = getelementptr inbounds %"$$fundef_61_env_111", %"$$fundef_61_env_111"* %"$$fundef_61_envp_293", i32 0, i32 0 - %"$m_298" = load { i8*, i8* }*, { i8*, i8* }** %m - store { i8*, i8* }* %"$m_298", { i8*, i8* }** %"$$fundef_61_env_m_297" - %"$$fundef_61_env_n_299" = getelementptr inbounds %"$$fundef_61_env_111", %"$$fundef_61_env_111"* %"$$fundef_61_envp_293", i32 0, i32 1 - %"$n_300" = load { i8*, i8* }*, { i8*, i8* }** %n - store { i8*, i8* }* %"$n_300", { i8*, i8* }** %"$$fundef_61_env_n_299" - store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$$fundef_61_cloval_296", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %"$retval_60" - %"$$retval_60_301" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %"$retval_60" - ret { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$$retval_60_301" + %"$gasrem_428" = load i64, i64* @_gasrem + %"$gascmp_429" = icmp ugt i64 1, %"$gasrem_428" + br i1 %"$gascmp_429", label %"$out_of_gas_430", label %"$have_gas_431" + +"$out_of_gas_430": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_431" + +"$have_gas_431": ; preds = %"$out_of_gas_430", %entry + %"$consume_432" = sub i64 %"$gasrem_428", 1 + store i64 %"$consume_432", i64* @_gasrem + %"$$fundef_61_envp_433_load" = load i8*, i8** @_execptr + %"$$fundef_61_envp_433_salloc" = call i8* @_salloc(i8* %"$$fundef_61_envp_433_load", i64 16) + %"$$fundef_61_envp_433" = bitcast i8* %"$$fundef_61_envp_433_salloc" to %"$$fundef_61_env_111"* + %"$$fundef_61_env_voidp_435" = bitcast %"$$fundef_61_env_111"* %"$$fundef_61_envp_433" to i8* + %"$$fundef_61_cloval_436" = insertvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })* bitcast ({ { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (%"$$fundef_61_env_111"*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })* @"$fundef_61" to { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*), i8* undef }, i8* %"$$fundef_61_env_voidp_435", 1 + %"$$fundef_61_env_m_437" = getelementptr inbounds %"$$fundef_61_env_111", %"$$fundef_61_env_111"* %"$$fundef_61_envp_433", i32 0, i32 0 + %"$m_438" = load { i8*, i8* }*, { i8*, i8* }** %m + store { i8*, i8* }* %"$m_438", { i8*, i8* }** %"$$fundef_61_env_m_437" + %"$$fundef_61_env_n_439" = getelementptr inbounds %"$$fundef_61_env_111", %"$$fundef_61_env_111"* %"$$fundef_61_envp_433", i32 0, i32 1 + %"$n_440" = load { i8*, i8* }*, { i8*, i8* }** %n + store { i8*, i8* }* %"$n_440", { i8*, i8* }** %"$$fundef_61_env_n_439" + store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$$fundef_61_cloval_436", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %"$retval_60" + %"$$retval_60_441" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %"$retval_60" + ret { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$$retval_60_441" } define internal %Uint32 @"$fundef_57"(%"$$fundef_57_env_113"* %0, %Uint32 %1) { entry: - %"$$fundef_57_env_m_247" = getelementptr inbounds %"$$fundef_57_env_113", %"$$fundef_57_env_113"* %0, i32 0, i32 0 - %"$m_envload_248" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_57_env_m_247" + %"$$fundef_57_env_m_347" = getelementptr inbounds %"$$fundef_57_env_113", %"$$fundef_57_env_113"* %0, i32 0, i32 0 + %"$m_envload_348" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_57_env_m_347" %m = alloca { i8*, i8* }* - store { i8*, i8* }* %"$m_envload_248", { i8*, i8* }** %m - %"$$fundef_57_env_n_249" = getelementptr inbounds %"$$fundef_57_env_113", %"$$fundef_57_env_113"* %0, i32 0, i32 1 - %"$n_envload_250" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_57_env_n_249" + store { i8*, i8* }* %"$m_envload_348", { i8*, i8* }** %m + %"$$fundef_57_env_n_349" = getelementptr inbounds %"$$fundef_57_env_113", %"$$fundef_57_env_113"* %0, i32 0, i32 1 + %"$n_envload_350" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_57_env_n_349" %n = alloca { i8*, i8* }* - store { i8*, i8* }* %"$n_envload_250", { i8*, i8* }** %n - %"$$fundef_57_env_s_251" = getelementptr inbounds %"$$fundef_57_env_113", %"$$fundef_57_env_113"* %0, i32 0, i32 2 - %"$s_envload_252" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_57_env_s_251" + store { i8*, i8* }* %"$n_envload_350", { i8*, i8* }** %n + %"$$fundef_57_env_s_351" = getelementptr inbounds %"$$fundef_57_env_113", %"$$fundef_57_env_113"* %0, i32 0, i32 2 + %"$s_envload_352" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_57_env_s_351" %s = alloca { %Uint32 (i8*, %Uint32)*, i8* } - store { %Uint32 (i8*, %Uint32)*, i8* } %"$s_envload_252", { %Uint32 (i8*, %Uint32)*, i8* }* %s + store { %Uint32 (i8*, %Uint32)*, i8* } %"$s_envload_352", { %Uint32 (i8*, %Uint32)*, i8* }* %s %"$retval_58" = alloca %Uint32 + %"$gasrem_353" = load i64, i64* @_gasrem + %"$gascmp_354" = icmp ugt i64 1, %"$gasrem_353" + br i1 %"$gascmp_354", label %"$out_of_gas_355", label %"$have_gas_356" + +"$out_of_gas_355": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_356" + +"$have_gas_356": ; preds = %"$out_of_gas_355", %entry + %"$consume_357" = sub i64 %"$gasrem_353", 1 + store i64 %"$consume_357", i64* @_gasrem %mX = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - %"$m_253" = load { i8*, i8* }*, { i8*, i8* }** %m - %"$m_254" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$m_253", i32 0 - %"$m_255" = bitcast { i8*, i8* }* %"$m_254" to { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - %"$m_256" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$m_255" - %"$m_fptr_257" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$m_256", 0 - %"$m_envptr_258" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$m_256", 1 - %"$m_call_259" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_fptr_257"(i8* %"$m_envptr_258") - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_call_259", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %mX + %"$gasrem_358" = load i64, i64* @_gasrem + %"$gascmp_359" = icmp ugt i64 1, %"$gasrem_358" + br i1 %"$gascmp_359", label %"$out_of_gas_360", label %"$have_gas_361" + +"$out_of_gas_360": ; preds = %"$have_gas_356" + call void @_out_of_gas() + br label %"$have_gas_361" + +"$have_gas_361": ; preds = %"$out_of_gas_360", %"$have_gas_356" + %"$consume_362" = sub i64 %"$gasrem_358", 1 + store i64 %"$consume_362", i64* @_gasrem + %"$m_363" = load { i8*, i8* }*, { i8*, i8* }** %m + %"$m_364" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$m_363", i32 0 + %"$m_365" = bitcast { i8*, i8* }* %"$m_364" to { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + %"$m_366" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$m_365" + %"$m_fptr_367" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$m_366", 0 + %"$m_envptr_368" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$m_366", 1 + %"$m_call_369" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_fptr_367"(i8* %"$m_envptr_368") + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_call_369", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %mX + %"$gasrem_370" = load i64, i64* @_gasrem + %"$gascmp_371" = icmp ugt i64 1, %"$gasrem_370" + br i1 %"$gascmp_371", label %"$out_of_gas_372", label %"$have_gas_373" + +"$out_of_gas_372": ; preds = %"$have_gas_361" + call void @_out_of_gas() + br label %"$have_gas_373" + +"$have_gas_373": ; preds = %"$out_of_gas_372", %"$have_gas_361" + %"$consume_374" = sub i64 %"$gasrem_370", 1 + store i64 %"$consume_374", i64* @_gasrem %nX = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - %"$n_260" = load { i8*, i8* }*, { i8*, i8* }** %n - %"$n_261" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$n_260", i32 0 - %"$n_262" = bitcast { i8*, i8* }* %"$n_261" to { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - %"$n_263" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$n_262" - %"$n_fptr_264" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$n_263", 0 - %"$n_envptr_265" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$n_263", 1 - %"$n_call_266" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_fptr_264"(i8* %"$n_envptr_265") - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_call_266", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %nX + %"$gasrem_375" = load i64, i64* @_gasrem + %"$gascmp_376" = icmp ugt i64 1, %"$gasrem_375" + br i1 %"$gascmp_376", label %"$out_of_gas_377", label %"$have_gas_378" + +"$out_of_gas_377": ; preds = %"$have_gas_373" + call void @_out_of_gas() + br label %"$have_gas_378" + +"$have_gas_378": ; preds = %"$out_of_gas_377", %"$have_gas_373" + %"$consume_379" = sub i64 %"$gasrem_375", 1 + store i64 %"$consume_379", i64* @_gasrem + %"$n_380" = load { i8*, i8* }*, { i8*, i8* }** %n + %"$n_381" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$n_380", i32 0 + %"$n_382" = bitcast { i8*, i8* }* %"$n_381" to { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + %"$n_383" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$n_382" + %"$n_fptr_384" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$n_383", 0 + %"$n_envptr_385" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$n_383", 1 + %"$n_call_386" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_fptr_384"(i8* %"$n_envptr_385") + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_call_386", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %nX + %"$gasrem_387" = load i64, i64* @_gasrem + %"$gascmp_388" = icmp ugt i64 1, %"$gasrem_387" + br i1 %"$gascmp_388", label %"$out_of_gas_389", label %"$have_gas_390" + +"$out_of_gas_389": ; preds = %"$have_gas_378" + call void @_out_of_gas() + br label %"$have_gas_390" + +"$have_gas_390": ; preds = %"$out_of_gas_389", %"$have_gas_378" + %"$consume_391" = sub i64 %"$gasrem_387", 1 + store i64 %"$consume_391", i64* @_gasrem %nXsz = alloca %Uint32 + %"$gasrem_392" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_390" + call void @_out_of_gas() + br label %"$have_gas_395" + +"$have_gas_395": ; preds = %"$out_of_gas_394", %"$have_gas_390" + %"$consume_396" = sub i64 %"$gasrem_392", 1 + store i64 %"$consume_396", i64* @_gasrem %"$nX_2" = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$nX_267" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %nX - %"$nX_fptr_268" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$nX_267", 0 - %"$nX_envptr_269" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$nX_267", 1 - %"$s_270" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s - %"$nX_call_271" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$nX_fptr_268"(i8* %"$nX_envptr_269", { %Uint32 (i8*, %Uint32)*, i8* } %"$s_270") - store { %Uint32 (i8*, %Uint32)*, i8* } %"$nX_call_271", { %Uint32 (i8*, %Uint32)*, i8* }* %"$nX_2" + %"$nX_397" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %nX + %"$nX_fptr_398" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$nX_397", 0 + %"$nX_envptr_399" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$nX_397", 1 + %"$s_400" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s + %"$nX_call_401" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$nX_fptr_398"(i8* %"$nX_envptr_399", { %Uint32 (i8*, %Uint32)*, i8* } %"$s_400") + store { %Uint32 (i8*, %Uint32)*, i8* } %"$nX_call_401", { %Uint32 (i8*, %Uint32)*, i8* }* %"$nX_2" %"$nX_3" = alloca %Uint32 - %"$$nX_2_272" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$nX_2" - %"$$nX_2_fptr_273" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$nX_2_272", 0 - %"$$nX_2_envptr_274" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$nX_2_272", 1 - %"$$nX_2_call_275" = call %Uint32 %"$$nX_2_fptr_273"(i8* %"$$nX_2_envptr_274", %Uint32 %1) - store %Uint32 %"$$nX_2_call_275", %Uint32* %"$nX_3" - %"$$nX_3_276" = load %Uint32, %Uint32* %"$nX_3" - store %Uint32 %"$$nX_3_276", %Uint32* %nXsz + %"$$nX_2_402" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$nX_2" + %"$$nX_2_fptr_403" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$nX_2_402", 0 + %"$$nX_2_envptr_404" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$nX_2_402", 1 + %"$$nX_2_call_405" = call %Uint32 %"$$nX_2_fptr_403"(i8* %"$$nX_2_envptr_404", %Uint32 %1) + store %Uint32 %"$$nX_2_call_405", %Uint32* %"$nX_3" + %"$$nX_3_406" = load %Uint32, %Uint32* %"$nX_3" + store %Uint32 %"$$nX_3_406", %Uint32* %nXsz + %"$gasrem_407" = load i64, i64* @_gasrem + %"$gascmp_408" = icmp ugt i64 1, %"$gasrem_407" + br i1 %"$gascmp_408", label %"$out_of_gas_409", label %"$have_gas_410" + +"$out_of_gas_409": ; preds = %"$have_gas_395" + call void @_out_of_gas() + br label %"$have_gas_410" + +"$have_gas_410": ; preds = %"$out_of_gas_409", %"$have_gas_395" + %"$consume_411" = sub i64 %"$gasrem_407", 1 + store i64 %"$consume_411", i64* @_gasrem %"$mX_4" = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$mX_277" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %mX - %"$mX_fptr_278" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$mX_277", 0 - %"$mX_envptr_279" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$mX_277", 1 - %"$s_280" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s - %"$mX_call_281" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$mX_fptr_278"(i8* %"$mX_envptr_279", { %Uint32 (i8*, %Uint32)*, i8* } %"$s_280") - store { %Uint32 (i8*, %Uint32)*, i8* } %"$mX_call_281", { %Uint32 (i8*, %Uint32)*, i8* }* %"$mX_4" + %"$mX_412" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %mX + %"$mX_fptr_413" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$mX_412", 0 + %"$mX_envptr_414" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$mX_412", 1 + %"$s_415" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s + %"$mX_call_416" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$mX_fptr_413"(i8* %"$mX_envptr_414", { %Uint32 (i8*, %Uint32)*, i8* } %"$s_415") + store { %Uint32 (i8*, %Uint32)*, i8* } %"$mX_call_416", { %Uint32 (i8*, %Uint32)*, i8* }* %"$mX_4" %"$mX_5" = alloca %Uint32 - %"$$mX_4_282" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$mX_4" - %"$$mX_4_fptr_283" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$mX_4_282", 0 - %"$$mX_4_envptr_284" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$mX_4_282", 1 - %"$nXsz_285" = load %Uint32, %Uint32* %nXsz - %"$$mX_4_call_286" = call %Uint32 %"$$mX_4_fptr_283"(i8* %"$$mX_4_envptr_284", %Uint32 %"$nXsz_285") - store %Uint32 %"$$mX_4_call_286", %Uint32* %"$mX_5" - %"$$mX_5_287" = load %Uint32, %Uint32* %"$mX_5" - store %Uint32 %"$$mX_5_287", %Uint32* %"$retval_58" - %"$$retval_58_288" = load %Uint32, %Uint32* %"$retval_58" - ret %Uint32 %"$$retval_58_288" + %"$$mX_4_417" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$mX_4" + %"$$mX_4_fptr_418" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$mX_4_417", 0 + %"$$mX_4_envptr_419" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$mX_4_417", 1 + %"$nXsz_420" = load %Uint32, %Uint32* %nXsz + %"$$mX_4_call_421" = call %Uint32 %"$$mX_4_fptr_418"(i8* %"$$mX_4_envptr_419", %Uint32 %"$nXsz_420") + store %Uint32 %"$$mX_4_call_421", %Uint32* %"$mX_5" + %"$$mX_5_422" = load %Uint32, %Uint32* %"$mX_5" + store %Uint32 %"$$mX_5_422", %Uint32* %"$retval_58" + %"$$retval_58_423" = load %Uint32, %Uint32* %"$retval_58" + ret %Uint32 %"$$retval_58_423" } define internal { %Uint32 (i8*, %Uint32)*, i8* } @"$fundef_55"(%"$$fundef_55_env_114"* %0, { %Uint32 (i8*, %Uint32)*, i8* } %1) { entry: - %"$$fundef_55_env_m_233" = getelementptr inbounds %"$$fundef_55_env_114", %"$$fundef_55_env_114"* %0, i32 0, i32 0 - %"$m_envload_234" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_55_env_m_233" + %"$$fundef_55_env_m_328" = getelementptr inbounds %"$$fundef_55_env_114", %"$$fundef_55_env_114"* %0, i32 0, i32 0 + %"$m_envload_329" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_55_env_m_328" %m = alloca { i8*, i8* }* - store { i8*, i8* }* %"$m_envload_234", { i8*, i8* }** %m - %"$$fundef_55_env_n_235" = getelementptr inbounds %"$$fundef_55_env_114", %"$$fundef_55_env_114"* %0, i32 0, i32 1 - %"$n_envload_236" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_55_env_n_235" + store { i8*, i8* }* %"$m_envload_329", { i8*, i8* }** %m + %"$$fundef_55_env_n_330" = getelementptr inbounds %"$$fundef_55_env_114", %"$$fundef_55_env_114"* %0, i32 0, i32 1 + %"$n_envload_331" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_55_env_n_330" %n = alloca { i8*, i8* }* - store { i8*, i8* }* %"$n_envload_236", { i8*, i8* }** %n + store { i8*, i8* }* %"$n_envload_331", { i8*, i8* }** %n %"$retval_56" = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$$fundef_57_envp_237_load" = load i8*, i8** @_execptr - %"$$fundef_57_envp_237_salloc" = call i8* @_salloc(i8* %"$$fundef_57_envp_237_load", i64 32) - %"$$fundef_57_envp_237" = bitcast i8* %"$$fundef_57_envp_237_salloc" to %"$$fundef_57_env_113"* - %"$$fundef_57_env_voidp_239" = bitcast %"$$fundef_57_env_113"* %"$$fundef_57_envp_237" to i8* - %"$$fundef_57_cloval_240" = insertvalue { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_57_env_113"*, %Uint32)* @"$fundef_57" to %Uint32 (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_57_env_voidp_239", 1 - %"$$fundef_57_env_m_241" = getelementptr inbounds %"$$fundef_57_env_113", %"$$fundef_57_env_113"* %"$$fundef_57_envp_237", i32 0, i32 0 - %"$m_242" = load { i8*, i8* }*, { i8*, i8* }** %m - store { i8*, i8* }* %"$m_242", { i8*, i8* }** %"$$fundef_57_env_m_241" - %"$$fundef_57_env_n_243" = getelementptr inbounds %"$$fundef_57_env_113", %"$$fundef_57_env_113"* %"$$fundef_57_envp_237", i32 0, i32 1 - %"$n_244" = load { i8*, i8* }*, { i8*, i8* }** %n - store { i8*, i8* }* %"$n_244", { i8*, i8* }** %"$$fundef_57_env_n_243" - %"$$fundef_57_env_s_245" = getelementptr inbounds %"$$fundef_57_env_113", %"$$fundef_57_env_113"* %"$$fundef_57_envp_237", i32 0, i32 2 - store { %Uint32 (i8*, %Uint32)*, i8* } %1, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_57_env_s_245" - store { %Uint32 (i8*, %Uint32)*, i8* } %"$$fundef_57_cloval_240", { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_56" - %"$$retval_56_246" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_56" - ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_56_246" + %"$gasrem_332" = load i64, i64* @_gasrem + %"$gascmp_333" = icmp ugt i64 1, %"$gasrem_332" + br i1 %"$gascmp_333", label %"$out_of_gas_334", label %"$have_gas_335" + +"$out_of_gas_334": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_335" + +"$have_gas_335": ; preds = %"$out_of_gas_334", %entry + %"$consume_336" = sub i64 %"$gasrem_332", 1 + store i64 %"$consume_336", i64* @_gasrem + %"$$fundef_57_envp_337_load" = load i8*, i8** @_execptr + %"$$fundef_57_envp_337_salloc" = call i8* @_salloc(i8* %"$$fundef_57_envp_337_load", i64 32) + %"$$fundef_57_envp_337" = bitcast i8* %"$$fundef_57_envp_337_salloc" to %"$$fundef_57_env_113"* + %"$$fundef_57_env_voidp_339" = bitcast %"$$fundef_57_env_113"* %"$$fundef_57_envp_337" to i8* + %"$$fundef_57_cloval_340" = insertvalue { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_57_env_113"*, %Uint32)* @"$fundef_57" to %Uint32 (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_57_env_voidp_339", 1 + %"$$fundef_57_env_m_341" = getelementptr inbounds %"$$fundef_57_env_113", %"$$fundef_57_env_113"* %"$$fundef_57_envp_337", i32 0, i32 0 + %"$m_342" = load { i8*, i8* }*, { i8*, i8* }** %m + store { i8*, i8* }* %"$m_342", { i8*, i8* }** %"$$fundef_57_env_m_341" + %"$$fundef_57_env_n_343" = getelementptr inbounds %"$$fundef_57_env_113", %"$$fundef_57_env_113"* %"$$fundef_57_envp_337", i32 0, i32 1 + %"$n_344" = load { i8*, i8* }*, { i8*, i8* }** %n + store { i8*, i8* }* %"$n_344", { i8*, i8* }** %"$$fundef_57_env_n_343" + %"$$fundef_57_env_s_345" = getelementptr inbounds %"$$fundef_57_env_113", %"$$fundef_57_env_113"* %"$$fundef_57_envp_337", i32 0, i32 2 + store { %Uint32 (i8*, %Uint32)*, i8* } %1, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_57_env_s_345" + store { %Uint32 (i8*, %Uint32)*, i8* } %"$$fundef_57_cloval_340", { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_56" + %"$$retval_56_346" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_56" + ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_56_346" } define internal { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } @"$fundef_53"(%"$$fundef_53_env_115"* %0) { entry: - %"$$fundef_53_env_m_220" = getelementptr inbounds %"$$fundef_53_env_115", %"$$fundef_53_env_115"* %0, i32 0, i32 0 - %"$m_envload_221" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_53_env_m_220" + %"$$fundef_53_env_m_310" = getelementptr inbounds %"$$fundef_53_env_115", %"$$fundef_53_env_115"* %0, i32 0, i32 0 + %"$m_envload_311" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_53_env_m_310" %m = alloca { i8*, i8* }* - store { i8*, i8* }* %"$m_envload_221", { i8*, i8* }** %m - %"$$fundef_53_env_n_222" = getelementptr inbounds %"$$fundef_53_env_115", %"$$fundef_53_env_115"* %0, i32 0, i32 1 - %"$n_envload_223" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_53_env_n_222" + store { i8*, i8* }* %"$m_envload_311", { i8*, i8* }** %m + %"$$fundef_53_env_n_312" = getelementptr inbounds %"$$fundef_53_env_115", %"$$fundef_53_env_115"* %0, i32 0, i32 1 + %"$n_envload_313" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_53_env_n_312" %n = alloca { i8*, i8* }* - store { i8*, i8* }* %"$n_envload_223", { i8*, i8* }** %n + store { i8*, i8* }* %"$n_envload_313", { i8*, i8* }** %n %"$retval_54" = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - %"$$fundef_55_envp_224_load" = load i8*, i8** @_execptr - %"$$fundef_55_envp_224_salloc" = call i8* @_salloc(i8* %"$$fundef_55_envp_224_load", i64 16) - %"$$fundef_55_envp_224" = bitcast i8* %"$$fundef_55_envp_224_salloc" to %"$$fundef_55_env_114"* - %"$$fundef_55_env_voidp_226" = bitcast %"$$fundef_55_env_114"* %"$$fundef_55_envp_224" to i8* - %"$$fundef_55_cloval_227" = insertvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })* bitcast ({ %Uint32 (i8*, %Uint32)*, i8* } (%"$$fundef_55_env_114"*, { %Uint32 (i8*, %Uint32)*, i8* })* @"$fundef_55" to { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*), i8* undef }, i8* %"$$fundef_55_env_voidp_226", 1 - %"$$fundef_55_env_m_228" = getelementptr inbounds %"$$fundef_55_env_114", %"$$fundef_55_env_114"* %"$$fundef_55_envp_224", i32 0, i32 0 - %"$m_229" = load { i8*, i8* }*, { i8*, i8* }** %m - store { i8*, i8* }* %"$m_229", { i8*, i8* }** %"$$fundef_55_env_m_228" - %"$$fundef_55_env_n_230" = getelementptr inbounds %"$$fundef_55_env_114", %"$$fundef_55_env_114"* %"$$fundef_55_envp_224", i32 0, i32 1 - %"$n_231" = load { i8*, i8* }*, { i8*, i8* }** %n - store { i8*, i8* }* %"$n_231", { i8*, i8* }** %"$$fundef_55_env_n_230" - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$fundef_55_cloval_227", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_54" - %"$$retval_54_232" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_54" - ret { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_54_232" + %"$gasrem_314" = load i64, i64* @_gasrem + %"$gascmp_315" = icmp ugt i64 1, %"$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", 1 + store i64 %"$consume_318", i64* @_gasrem + %"$$fundef_55_envp_319_load" = load i8*, i8** @_execptr + %"$$fundef_55_envp_319_salloc" = call i8* @_salloc(i8* %"$$fundef_55_envp_319_load", i64 16) + %"$$fundef_55_envp_319" = bitcast i8* %"$$fundef_55_envp_319_salloc" to %"$$fundef_55_env_114"* + %"$$fundef_55_env_voidp_321" = bitcast %"$$fundef_55_env_114"* %"$$fundef_55_envp_319" to i8* + %"$$fundef_55_cloval_322" = insertvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })* bitcast ({ %Uint32 (i8*, %Uint32)*, i8* } (%"$$fundef_55_env_114"*, { %Uint32 (i8*, %Uint32)*, i8* })* @"$fundef_55" to { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*), i8* undef }, i8* %"$$fundef_55_env_voidp_321", 1 + %"$$fundef_55_env_m_323" = getelementptr inbounds %"$$fundef_55_env_114", %"$$fundef_55_env_114"* %"$$fundef_55_envp_319", i32 0, i32 0 + %"$m_324" = load { i8*, i8* }*, { i8*, i8* }** %m + store { i8*, i8* }* %"$m_324", { i8*, i8* }** %"$$fundef_55_env_m_323" + %"$$fundef_55_env_n_325" = getelementptr inbounds %"$$fundef_55_env_114", %"$$fundef_55_env_114"* %"$$fundef_55_envp_319", i32 0, i32 1 + %"$n_326" = load { i8*, i8* }*, { i8*, i8* }** %n + store { i8*, i8* }* %"$n_326", { i8*, i8* }** %"$$fundef_55_env_n_325" + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$fundef_55_cloval_322", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_54" + %"$$retval_54_327" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_54" + ret { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_54_327" } define internal { i8*, i8* }* @"$fundef_51"(%"$$fundef_51_env_116"* %0, { i8*, i8* }* %1) { entry: - %"$$fundef_51_env_m_202" = getelementptr inbounds %"$$fundef_51_env_116", %"$$fundef_51_env_116"* %0, i32 0, i32 0 - %"$m_envload_203" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_51_env_m_202" + %"$$fundef_51_env_m_287" = getelementptr inbounds %"$$fundef_51_env_116", %"$$fundef_51_env_116"* %0, i32 0, i32 0 + %"$m_envload_288" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_51_env_m_287" %m = alloca { i8*, i8* }* - store { i8*, i8* }* %"$m_envload_203", { i8*, i8* }** %m + store { i8*, i8* }* %"$m_envload_288", { i8*, i8* }** %m %"$retval_52" = alloca { i8*, i8* }* - %"$$fundef_53_envp_204_load" = load i8*, i8** @_execptr - %"$$fundef_53_envp_204_salloc" = call i8* @_salloc(i8* %"$$fundef_53_envp_204_load", i64 16) - %"$$fundef_53_envp_204" = bitcast i8* %"$$fundef_53_envp_204_salloc" to %"$$fundef_53_env_115"* - %"$$fundef_53_env_voidp_206" = bitcast %"$$fundef_53_env_115"* %"$$fundef_53_envp_204" to i8* - %"$$fundef_53_cloval_207" = insertvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_53_env_115"*)* @"$fundef_53" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_53_env_voidp_206", 1 - %"$$fundef_53_env_m_208" = getelementptr inbounds %"$$fundef_53_env_115", %"$$fundef_53_env_115"* %"$$fundef_53_envp_204", i32 0, i32 0 - %"$m_209" = load { i8*, i8* }*, { i8*, i8* }** %m - store { i8*, i8* }* %"$m_209", { i8*, i8* }** %"$$fundef_53_env_m_208" - %"$$fundef_53_env_n_210" = getelementptr inbounds %"$$fundef_53_env_115", %"$$fundef_53_env_115"* %"$$fundef_53_envp_204", i32 0, i32 1 - store { i8*, i8* }* %1, { i8*, i8* }** %"$$fundef_53_env_n_210" - %"$$fundef_59_env_voidp_212" = bitcast %"$$fundef_53_env_115"* %"$$fundef_53_envp_204" to i8* - %"$$fundef_59_cloval_213" = insertvalue { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)* bitcast ({ { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (%"$$fundef_59_env_112"*)* @"$fundef_59" to { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_59_env_voidp_212", 1 - %"$dyndisp_table_214_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_214_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_214_salloc_load", i64 32) - %"$dyndisp_table_214_salloc" = bitcast i8* %"$dyndisp_table_214_salloc_salloc" to [2 x { i8*, i8* }]* - %"$dyndisp_table_214" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_214_salloc" to { i8*, i8* }* - %"$dyndisp_gep_215" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_214", i32 0 - %"$dyndisp_pcast_216" = bitcast { i8*, i8* }* %"$dyndisp_gep_215" to { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_53_cloval_207", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_216" - %"$dyndisp_gep_217" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_214", i32 1 - %"$dyndisp_pcast_218" = bitcast { i8*, i8* }* %"$dyndisp_gep_217" to { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_59_cloval_213", { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_218" - store { i8*, i8* }* %"$dyndisp_table_214", { i8*, i8* }** %"$retval_52" - %"$$retval_52_219" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_52" - ret { i8*, i8* }* %"$$retval_52_219" + %"$gasrem_289" = load i64, i64* @_gasrem + %"$gascmp_290" = icmp ugt i64 1, %"$gasrem_289" + br i1 %"$gascmp_290", label %"$out_of_gas_291", label %"$have_gas_292" + +"$out_of_gas_291": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_292" + +"$have_gas_292": ; preds = %"$out_of_gas_291", %entry + %"$consume_293" = sub i64 %"$gasrem_289", 1 + store i64 %"$consume_293", i64* @_gasrem + %"$$fundef_53_envp_294_load" = load i8*, i8** @_execptr + %"$$fundef_53_envp_294_salloc" = call i8* @_salloc(i8* %"$$fundef_53_envp_294_load", i64 16) + %"$$fundef_53_envp_294" = bitcast i8* %"$$fundef_53_envp_294_salloc" to %"$$fundef_53_env_115"* + %"$$fundef_53_env_voidp_296" = bitcast %"$$fundef_53_env_115"* %"$$fundef_53_envp_294" to i8* + %"$$fundef_53_cloval_297" = insertvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_53_env_115"*)* @"$fundef_53" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_53_env_voidp_296", 1 + %"$$fundef_53_env_m_298" = getelementptr inbounds %"$$fundef_53_env_115", %"$$fundef_53_env_115"* %"$$fundef_53_envp_294", i32 0, i32 0 + %"$m_299" = load { i8*, i8* }*, { i8*, i8* }** %m + store { i8*, i8* }* %"$m_299", { i8*, i8* }** %"$$fundef_53_env_m_298" + %"$$fundef_53_env_n_300" = getelementptr inbounds %"$$fundef_53_env_115", %"$$fundef_53_env_115"* %"$$fundef_53_envp_294", i32 0, i32 1 + store { i8*, i8* }* %1, { i8*, i8* }** %"$$fundef_53_env_n_300" + %"$$fundef_59_env_voidp_302" = bitcast %"$$fundef_53_env_115"* %"$$fundef_53_envp_294" to i8* + %"$$fundef_59_cloval_303" = insertvalue { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)* bitcast ({ { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (%"$$fundef_59_env_112"*)* @"$fundef_59" to { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_59_env_voidp_302", 1 + %"$dyndisp_table_304_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_304_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_304_salloc_load", i64 32) + %"$dyndisp_table_304_salloc" = bitcast i8* %"$dyndisp_table_304_salloc_salloc" to [2 x { i8*, i8* }]* + %"$dyndisp_table_304" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_304_salloc" to { i8*, i8* }* + %"$dyndisp_gep_305" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_304", i32 0 + %"$dyndisp_pcast_306" = bitcast { i8*, i8* }* %"$dyndisp_gep_305" to { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_53_cloval_297", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_306" + %"$dyndisp_gep_307" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_304", i32 1 + %"$dyndisp_pcast_308" = bitcast { i8*, i8* }* %"$dyndisp_gep_307" to { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_59_cloval_303", { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_308" + store { i8*, i8* }* %"$dyndisp_table_304", { i8*, i8* }** %"$retval_52" + %"$$retval_52_309" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_52" + ret { i8*, i8* }* %"$$retval_52_309" } define internal { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } @"$fundef_49"(%"$$fundef_49_env_117"* %0, { i8*, i8* }* %1) { entry: %"$retval_50" = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } - %"$$fundef_51_envp_196_load" = load i8*, i8** @_execptr - %"$$fundef_51_envp_196_salloc" = call i8* @_salloc(i8* %"$$fundef_51_envp_196_load", i64 8) - %"$$fundef_51_envp_196" = bitcast i8* %"$$fundef_51_envp_196_salloc" to %"$$fundef_51_env_116"* - %"$$fundef_51_env_voidp_198" = bitcast %"$$fundef_51_env_116"* %"$$fundef_51_envp_196" to i8* - %"$$fundef_51_cloval_199" = insertvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } { { i8*, i8* }* (i8*, { i8*, i8* }*)* bitcast ({ i8*, i8* }* (%"$$fundef_51_env_116"*, { i8*, i8* }*)* @"$fundef_51" to { i8*, i8* }* (i8*, { i8*, i8* }*)*), i8* undef }, i8* %"$$fundef_51_env_voidp_198", 1 - %"$$fundef_51_env_m_200" = getelementptr inbounds %"$$fundef_51_env_116", %"$$fundef_51_env_116"* %"$$fundef_51_envp_196", i32 0, i32 0 - store { i8*, i8* }* %1, { i8*, i8* }** %"$$fundef_51_env_m_200" - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$fundef_51_cloval_199", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_50" - %"$$retval_50_201" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_50" - ret { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$retval_50_201" + %"$gasrem_276" = load i64, i64* @_gasrem + %"$gascmp_277" = icmp ugt i64 1, %"$gasrem_276" + br i1 %"$gascmp_277", label %"$out_of_gas_278", label %"$have_gas_279" + +"$out_of_gas_278": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_279" + +"$have_gas_279": ; preds = %"$out_of_gas_278", %entry + %"$consume_280" = sub i64 %"$gasrem_276", 1 + store i64 %"$consume_280", i64* @_gasrem + %"$$fundef_51_envp_281_load" = load i8*, i8** @_execptr + %"$$fundef_51_envp_281_salloc" = call i8* @_salloc(i8* %"$$fundef_51_envp_281_load", i64 8) + %"$$fundef_51_envp_281" = bitcast i8* %"$$fundef_51_envp_281_salloc" to %"$$fundef_51_env_116"* + %"$$fundef_51_env_voidp_283" = bitcast %"$$fundef_51_env_116"* %"$$fundef_51_envp_281" to i8* + %"$$fundef_51_cloval_284" = insertvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } { { i8*, i8* }* (i8*, { i8*, i8* }*)* bitcast ({ i8*, i8* }* (%"$$fundef_51_env_116"*, { i8*, i8* }*)* @"$fundef_51" to { i8*, i8* }* (i8*, { i8*, i8* }*)*), i8* undef }, i8* %"$$fundef_51_env_voidp_283", 1 + %"$$fundef_51_env_m_285" = getelementptr inbounds %"$$fundef_51_env_116", %"$$fundef_51_env_116"* %"$$fundef_51_envp_281", i32 0, i32 0 + store { i8*, i8* }* %1, { i8*, i8* }** %"$$fundef_51_env_m_285" + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$fundef_51_cloval_284", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_50" + %"$$retval_50_286" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_50" + ret { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$retval_50_286" } define internal { i8*, i8* }* @"$fundef_47"(%"$$fundef_47_env_118"* %0, { i8*, i8* }* %1) { entry: - %"$$fundef_47_env_s_182" = getelementptr inbounds %"$$fundef_47_env_118", %"$$fundef_47_env_118"* %0, i32 0, i32 0 - %"$s_envload_183" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$$fundef_47_env_s_182" + %"$$fundef_47_env_s_247" = getelementptr inbounds %"$$fundef_47_env_118", %"$$fundef_47_env_118"* %0, i32 0, i32 0 + %"$s_envload_248" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$$fundef_47_env_s_247" %s = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$s_envload_183", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %s + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$s_envload_248", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %s %"$retval_48" = alloca { i8*, i8* }* + %"$gasrem_249" = load i64, i64* @_gasrem + %"$gascmp_250" = icmp ugt i64 1, %"$gasrem_249" + br i1 %"$gascmp_250", label %"$out_of_gas_251", label %"$have_gas_252" + +"$out_of_gas_251": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_252" + +"$have_gas_252": ; preds = %"$out_of_gas_251", %entry + %"$consume_253" = sub i64 %"$gasrem_249", 1 + store i64 %"$consume_253", i64* @_gasrem %sz = alloca { i8*, i8* }* + %"$gasrem_254" = load i64, i64* @_gasrem + %"$gascmp_255" = icmp ugt i64 1, %"$gasrem_254" + br i1 %"$gascmp_255", label %"$out_of_gas_256", label %"$have_gas_257" + +"$out_of_gas_256": ; preds = %"$have_gas_252" + call void @_out_of_gas() + br label %"$have_gas_257" + +"$have_gas_257": ; preds = %"$out_of_gas_256", %"$have_gas_252" + %"$consume_258" = sub i64 %"$gasrem_254", 1 + store i64 %"$consume_258", i64* @_gasrem %"$s_0" = alloca { i8*, i8* }* - %"$s_184" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %s - %"$s_fptr_185" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$s_184", 0 - %"$s_envptr_186" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$s_184", 1 - %"$s_call_187" = call { i8*, i8* }* %"$s_fptr_185"(i8* %"$s_envptr_186", { i8*, i8* }* %1) - store { i8*, i8* }* %"$s_call_187", { i8*, i8* }** %"$s_0" - %"$$s_0_188" = load { i8*, i8* }*, { i8*, i8* }** %"$s_0" - store { i8*, i8* }* %"$$s_0_188", { i8*, i8* }** %sz + %"$s_259" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %s + %"$s_fptr_260" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$s_259", 0 + %"$s_envptr_261" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$s_259", 1 + %"$s_call_262" = call { i8*, i8* }* %"$s_fptr_260"(i8* %"$s_envptr_261", { i8*, i8* }* %1) + store { i8*, i8* }* %"$s_call_262", { i8*, i8* }** %"$s_0" + %"$$s_0_263" = load { i8*, i8* }*, { i8*, i8* }** %"$s_0" + store { i8*, i8* }* %"$$s_0_263", { i8*, i8* }** %sz + %"$gasrem_264" = load i64, i64* @_gasrem + %"$gascmp_265" = icmp ugt i64 1, %"$gasrem_264" + br i1 %"$gascmp_265", label %"$out_of_gas_266", label %"$have_gas_267" + +"$out_of_gas_266": ; preds = %"$have_gas_257" + call void @_out_of_gas() + br label %"$have_gas_267" + +"$have_gas_267": ; preds = %"$out_of_gas_266", %"$have_gas_257" + %"$consume_268" = sub i64 %"$gasrem_264", 1 + store i64 %"$consume_268", i64* @_gasrem %"$s_1" = alloca { i8*, i8* }* - %"$s_189" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %s - %"$s_fptr_190" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$s_189", 0 - %"$s_envptr_191" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$s_189", 1 - %"$sz_192" = load { i8*, i8* }*, { i8*, i8* }** %sz - %"$s_call_193" = call { i8*, i8* }* %"$s_fptr_190"(i8* %"$s_envptr_191", { i8*, i8* }* %"$sz_192") - store { i8*, i8* }* %"$s_call_193", { i8*, i8* }** %"$s_1" - %"$$s_1_194" = load { i8*, i8* }*, { i8*, i8* }** %"$s_1" - store { i8*, i8* }* %"$$s_1_194", { i8*, i8* }** %"$retval_48" - %"$$retval_48_195" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_48" - ret { i8*, i8* }* %"$$retval_48_195" + %"$s_269" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %s + %"$s_fptr_270" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$s_269", 0 + %"$s_envptr_271" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$s_269", 1 + %"$sz_272" = load { i8*, i8* }*, { i8*, i8* }** %sz + %"$s_call_273" = call { i8*, i8* }* %"$s_fptr_270"(i8* %"$s_envptr_271", { i8*, i8* }* %"$sz_272") + store { i8*, i8* }* %"$s_call_273", { i8*, i8* }** %"$s_1" + %"$$s_1_274" = load { i8*, i8* }*, { i8*, i8* }** %"$s_1" + store { i8*, i8* }* %"$$s_1_274", { i8*, i8* }** %"$retval_48" + %"$$retval_48_275" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_48" + ret { i8*, i8* }* %"$$retval_48_275" } define internal { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } @"$fundef_45"(%"$$fundef_45_env_119"* %0, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %1) { entry: %"$retval_46" = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } - %"$$fundef_47_envp_176_load" = load i8*, i8** @_execptr - %"$$fundef_47_envp_176_salloc" = call i8* @_salloc(i8* %"$$fundef_47_envp_176_load", i64 16) - %"$$fundef_47_envp_176" = bitcast i8* %"$$fundef_47_envp_176_salloc" to %"$$fundef_47_env_118"* - %"$$fundef_47_env_voidp_178" = bitcast %"$$fundef_47_env_118"* %"$$fundef_47_envp_176" to i8* - %"$$fundef_47_cloval_179" = insertvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } { { i8*, i8* }* (i8*, { i8*, i8* }*)* bitcast ({ i8*, i8* }* (%"$$fundef_47_env_118"*, { i8*, i8* }*)* @"$fundef_47" to { i8*, i8* }* (i8*, { i8*, i8* }*)*), i8* undef }, i8* %"$$fundef_47_env_voidp_178", 1 - %"$$fundef_47_env_s_180" = getelementptr inbounds %"$$fundef_47_env_118", %"$$fundef_47_env_118"* %"$$fundef_47_envp_176", i32 0, i32 0 - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %1, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$$fundef_47_env_s_180" - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$fundef_47_cloval_179", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_46" - %"$$retval_46_181" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_46" - ret { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$retval_46_181" + %"$gasrem_236" = load i64, i64* @_gasrem + %"$gascmp_237" = icmp ugt i64 1, %"$gasrem_236" + br i1 %"$gascmp_237", label %"$out_of_gas_238", label %"$have_gas_239" + +"$out_of_gas_238": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_239" + +"$have_gas_239": ; preds = %"$out_of_gas_238", %entry + %"$consume_240" = sub i64 %"$gasrem_236", 1 + store i64 %"$consume_240", i64* @_gasrem + %"$$fundef_47_envp_241_load" = load i8*, i8** @_execptr + %"$$fundef_47_envp_241_salloc" = call i8* @_salloc(i8* %"$$fundef_47_envp_241_load", i64 16) + %"$$fundef_47_envp_241" = bitcast i8* %"$$fundef_47_envp_241_salloc" to %"$$fundef_47_env_118"* + %"$$fundef_47_env_voidp_243" = bitcast %"$$fundef_47_env_118"* %"$$fundef_47_envp_241" to i8* + %"$$fundef_47_cloval_244" = insertvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } { { i8*, i8* }* (i8*, { i8*, i8* }*)* bitcast ({ i8*, i8* }* (%"$$fundef_47_env_118"*, { i8*, i8* }*)* @"$fundef_47" to { i8*, i8* }* (i8*, { i8*, i8* }*)*), i8* undef }, i8* %"$$fundef_47_env_voidp_243", 1 + %"$$fundef_47_env_s_245" = getelementptr inbounds %"$$fundef_47_env_118", %"$$fundef_47_env_118"* %"$$fundef_47_envp_241", i32 0, i32 0 + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %1, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$$fundef_47_env_s_245" + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$fundef_47_cloval_244", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_46" + %"$$retval_46_246" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_46" + ret { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$retval_46_246" } define internal { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } @"$fundef_43"(%"$$fundef_43_env_120"* %0) { entry: %"$retval_44" = alloca { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } + %"$gasrem_227" = load i64, i64* @_gasrem + %"$gascmp_228" = icmp ugt i64 1, %"$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", 1 + store i64 %"$consume_231", i64* @_gasrem store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })* bitcast ({ { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (%"$$fundef_45_env_119"*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })* @"$fundef_45" to { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*), i8* null }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %"$retval_44" - %"$$retval_44_175" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %"$retval_44" - ret { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$$retval_44_175" + %"$$retval_44_235" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %"$retval_44" + ret { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$$retval_44_235" } define internal %Uint32 @"$fundef_41"(%"$$fundef_41_env_121"* %0, %Uint32 %1) { entry: - %"$$fundef_41_env_s_158" = getelementptr inbounds %"$$fundef_41_env_121", %"$$fundef_41_env_121"* %0, i32 0, i32 0 - %"$s_envload_159" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_41_env_s_158" + %"$$fundef_41_env_s_198" = getelementptr inbounds %"$$fundef_41_env_121", %"$$fundef_41_env_121"* %0, i32 0, i32 0 + %"$s_envload_199" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_41_env_s_198" %s = alloca { %Uint32 (i8*, %Uint32)*, i8* } - store { %Uint32 (i8*, %Uint32)*, i8* } %"$s_envload_159", { %Uint32 (i8*, %Uint32)*, i8* }* %s + store { %Uint32 (i8*, %Uint32)*, i8* } %"$s_envload_199", { %Uint32 (i8*, %Uint32)*, i8* }* %s %"$retval_42" = alloca %Uint32 + %"$gasrem_200" = load i64, i64* @_gasrem + %"$gascmp_201" = icmp ugt i64 1, %"$gasrem_200" + br i1 %"$gascmp_201", label %"$out_of_gas_202", label %"$have_gas_203" + +"$out_of_gas_202": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_203" + +"$have_gas_203": ; preds = %"$out_of_gas_202", %entry + %"$consume_204" = sub i64 %"$gasrem_200", 1 + store i64 %"$consume_204", i64* @_gasrem %sz = alloca %Uint32 + %"$gasrem_205" = load i64, i64* @_gasrem + %"$gascmp_206" = icmp ugt i64 1, %"$gasrem_205" + br i1 %"$gascmp_206", label %"$out_of_gas_207", label %"$have_gas_208" + +"$out_of_gas_207": ; preds = %"$have_gas_203" + call void @_out_of_gas() + br label %"$have_gas_208" + +"$have_gas_208": ; preds = %"$out_of_gas_207", %"$have_gas_203" + %"$consume_209" = sub i64 %"$gasrem_205", 1 + store i64 %"$consume_209", i64* @_gasrem %"$s_0" = alloca %Uint32 - %"$s_160" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s - %"$s_fptr_161" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_160", 0 - %"$s_envptr_162" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_160", 1 - %"$s_call_163" = call %Uint32 %"$s_fptr_161"(i8* %"$s_envptr_162", %Uint32 %1) - store %Uint32 %"$s_call_163", %Uint32* %"$s_0" - %"$$s_0_164" = load %Uint32, %Uint32* %"$s_0" - store %Uint32 %"$$s_0_164", %Uint32* %sz + %"$s_210" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s + %"$s_fptr_211" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_210", 0 + %"$s_envptr_212" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_210", 1 + %"$s_call_213" = call %Uint32 %"$s_fptr_211"(i8* %"$s_envptr_212", %Uint32 %1) + store %Uint32 %"$s_call_213", %Uint32* %"$s_0" + %"$$s_0_214" = load %Uint32, %Uint32* %"$s_0" + store %Uint32 %"$$s_0_214", %Uint32* %sz + %"$gasrem_215" = load i64, i64* @_gasrem + %"$gascmp_216" = icmp ugt i64 1, %"$gasrem_215" + br i1 %"$gascmp_216", label %"$out_of_gas_217", label %"$have_gas_218" + +"$out_of_gas_217": ; preds = %"$have_gas_208" + call void @_out_of_gas() + br label %"$have_gas_218" + +"$have_gas_218": ; preds = %"$out_of_gas_217", %"$have_gas_208" + %"$consume_219" = sub i64 %"$gasrem_215", 1 + store i64 %"$consume_219", i64* @_gasrem %"$s_1" = alloca %Uint32 - %"$s_165" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s - %"$s_fptr_166" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_165", 0 - %"$s_envptr_167" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_165", 1 - %"$sz_168" = load %Uint32, %Uint32* %sz - %"$s_call_169" = call %Uint32 %"$s_fptr_166"(i8* %"$s_envptr_167", %Uint32 %"$sz_168") - store %Uint32 %"$s_call_169", %Uint32* %"$s_1" - %"$$s_1_170" = load %Uint32, %Uint32* %"$s_1" - store %Uint32 %"$$s_1_170", %Uint32* %"$retval_42" - %"$$retval_42_171" = load %Uint32, %Uint32* %"$retval_42" - ret %Uint32 %"$$retval_42_171" + %"$s_220" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s + %"$s_fptr_221" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_220", 0 + %"$s_envptr_222" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_220", 1 + %"$sz_223" = load %Uint32, %Uint32* %sz + %"$s_call_224" = call %Uint32 %"$s_fptr_221"(i8* %"$s_envptr_222", %Uint32 %"$sz_223") + store %Uint32 %"$s_call_224", %Uint32* %"$s_1" + %"$$s_1_225" = load %Uint32, %Uint32* %"$s_1" + store %Uint32 %"$$s_1_225", %Uint32* %"$retval_42" + %"$$retval_42_226" = load %Uint32, %Uint32* %"$retval_42" + ret %Uint32 %"$$retval_42_226" } define internal { %Uint32 (i8*, %Uint32)*, i8* } @"$fundef_39"(%"$$fundef_39_env_122"* %0, { %Uint32 (i8*, %Uint32)*, i8* } %1) { entry: %"$retval_40" = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$$fundef_41_envp_152_load" = load i8*, i8** @_execptr - %"$$fundef_41_envp_152_salloc" = call i8* @_salloc(i8* %"$$fundef_41_envp_152_load", i64 16) - %"$$fundef_41_envp_152" = bitcast i8* %"$$fundef_41_envp_152_salloc" to %"$$fundef_41_env_121"* - %"$$fundef_41_env_voidp_154" = bitcast %"$$fundef_41_env_121"* %"$$fundef_41_envp_152" to i8* - %"$$fundef_41_cloval_155" = insertvalue { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_41_env_121"*, %Uint32)* @"$fundef_41" to %Uint32 (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_41_env_voidp_154", 1 - %"$$fundef_41_env_s_156" = getelementptr inbounds %"$$fundef_41_env_121", %"$$fundef_41_env_121"* %"$$fundef_41_envp_152", i32 0, i32 0 - store { %Uint32 (i8*, %Uint32)*, i8* } %1, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_41_env_s_156" - store { %Uint32 (i8*, %Uint32)*, i8* } %"$$fundef_41_cloval_155", { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_40" - %"$$retval_40_157" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_40" - ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_40_157" + %"$gasrem_187" = load i64, i64* @_gasrem + %"$gascmp_188" = icmp ugt i64 1, %"$gasrem_187" + br i1 %"$gascmp_188", label %"$out_of_gas_189", label %"$have_gas_190" + +"$out_of_gas_189": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_190" + +"$have_gas_190": ; preds = %"$out_of_gas_189", %entry + %"$consume_191" = sub i64 %"$gasrem_187", 1 + store i64 %"$consume_191", i64* @_gasrem + %"$$fundef_41_envp_192_load" = load i8*, i8** @_execptr + %"$$fundef_41_envp_192_salloc" = call i8* @_salloc(i8* %"$$fundef_41_envp_192_load", i64 16) + %"$$fundef_41_envp_192" = bitcast i8* %"$$fundef_41_envp_192_salloc" to %"$$fundef_41_env_121"* + %"$$fundef_41_env_voidp_194" = bitcast %"$$fundef_41_env_121"* %"$$fundef_41_envp_192" to i8* + %"$$fundef_41_cloval_195" = insertvalue { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_41_env_121"*, %Uint32)* @"$fundef_41" to %Uint32 (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_41_env_voidp_194", 1 + %"$$fundef_41_env_s_196" = getelementptr inbounds %"$$fundef_41_env_121", %"$$fundef_41_env_121"* %"$$fundef_41_envp_192", i32 0, i32 0 + store { %Uint32 (i8*, %Uint32)*, i8* } %1, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_41_env_s_196" + store { %Uint32 (i8*, %Uint32)*, i8* } %"$$fundef_41_cloval_195", { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_40" + %"$$retval_40_197" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_40" + ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_40_197" } define internal { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } @"$fundef_37"(%"$$fundef_37_env_123"* %0) { entry: %"$retval_38" = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_178" = load i64, i64* @_gasrem + %"$gascmp_179" = icmp ugt i64 1, %"$gasrem_178" + br i1 %"$gascmp_179", label %"$out_of_gas_180", label %"$have_gas_181" + +"$out_of_gas_180": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_181" + +"$have_gas_181": ; preds = %"$out_of_gas_180", %entry + %"$consume_182" = sub i64 %"$gasrem_178", 1 + store i64 %"$consume_182", i64* @_gasrem store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })* bitcast ({ %Uint32 (i8*, %Uint32)*, i8* } (%"$$fundef_39_env_122"*, { %Uint32 (i8*, %Uint32)*, i8* })* @"$fundef_39" to { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*), i8* null }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_38" - %"$$retval_38_151" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_38" - ret { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_38_151" + %"$$retval_38_186" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_38" + ret { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_38_186" } define internal { i8*, i8* }* @"$fundef_35"(%"$$fundef_35_env_124"* %0, { i8*, i8* }* %1) { entry: %"$retval_36" = alloca { i8*, i8* }* + %"$gasrem_172" = load i64, i64* @_gasrem + %"$gascmp_173" = icmp ugt i64 1, %"$gasrem_172" + br i1 %"$gascmp_173", label %"$out_of_gas_174", label %"$have_gas_175" + +"$out_of_gas_174": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_175" + +"$have_gas_175": ; preds = %"$out_of_gas_174", %entry + %"$consume_176" = sub i64 %"$gasrem_172", 1 + store i64 %"$consume_176", i64* @_gasrem store { i8*, i8* }* %1, { i8*, i8* }** %"$retval_36" - %"$$retval_36_147" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_36" - ret { i8*, i8* }* %"$$retval_36_147" + %"$$retval_36_177" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_36" + ret { i8*, i8* }* %"$$retval_36_177" } define internal { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } @"$fundef_33"(%"$$fundef_33_env_125"* %0, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %1) { entry: %"$retval_34" = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } + %"$gasrem_163" = load i64, i64* @_gasrem + %"$gascmp_164" = icmp ugt i64 1, %"$gasrem_163" + br i1 %"$gascmp_164", label %"$out_of_gas_165", label %"$have_gas_166" + +"$out_of_gas_165": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_166" + +"$have_gas_166": ; preds = %"$out_of_gas_165", %entry + %"$consume_167" = sub i64 %"$gasrem_163", 1 + store i64 %"$consume_167", i64* @_gasrem store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } { { i8*, i8* }* (i8*, { i8*, i8* }*)* bitcast ({ i8*, i8* }* (%"$$fundef_35_env_124"*, { i8*, i8* }*)* @"$fundef_35" to { i8*, i8* }* (i8*, { i8*, i8* }*)*), i8* null }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_34" - %"$$retval_34_146" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_34" - ret { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$retval_34_146" + %"$$retval_34_171" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_34" + ret { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$retval_34_171" } define internal { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } @"$fundef_31"(%"$$fundef_31_env_126"* %0) { entry: %"$retval_32" = alloca { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } + %"$gasrem_154" = load i64, i64* @_gasrem + %"$gascmp_155" = icmp ugt i64 1, %"$gasrem_154" + br i1 %"$gascmp_155", label %"$out_of_gas_156", label %"$have_gas_157" + +"$out_of_gas_156": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_157" + +"$have_gas_157": ; preds = %"$out_of_gas_156", %entry + %"$consume_158" = sub i64 %"$gasrem_154", 1 + store i64 %"$consume_158", i64* @_gasrem store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })* bitcast ({ { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (%"$$fundef_33_env_125"*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })* @"$fundef_33" to { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*), i8* null }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %"$retval_32" - %"$$retval_32_142" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %"$retval_32" - ret { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$$retval_32_142" + %"$$retval_32_162" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* }* %"$retval_32" + ret { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } %"$$retval_32_162" } define internal %Uint32 @"$fundef_29"(%"$$fundef_29_env_127"* %0, %Uint32 %1) { entry: %"$retval_30" = alloca %Uint32 + %"$gasrem_148" = load i64, i64* @_gasrem + %"$gascmp_149" = icmp ugt i64 1, %"$gasrem_148" + br i1 %"$gascmp_149", label %"$out_of_gas_150", label %"$have_gas_151" + +"$out_of_gas_150": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_151" + +"$have_gas_151": ; preds = %"$out_of_gas_150", %entry + %"$consume_152" = sub i64 %"$gasrem_148", 1 + store i64 %"$consume_152", i64* @_gasrem store %Uint32 %1, %Uint32* %"$retval_30" - %"$$retval_30_138" = load %Uint32, %Uint32* %"$retval_30" - ret %Uint32 %"$$retval_30_138" + %"$$retval_30_153" = load %Uint32, %Uint32* %"$retval_30" + ret %Uint32 %"$$retval_30_153" } define internal { %Uint32 (i8*, %Uint32)*, i8* } @"$fundef_27"(%"$$fundef_27_env_128"* %0, { %Uint32 (i8*, %Uint32)*, i8* } %1) { entry: %"$retval_28" = alloca { %Uint32 (i8*, %Uint32)*, i8* } + %"$gasrem_139" = load i64, i64* @_gasrem + %"$gascmp_140" = icmp ugt i64 1, %"$gasrem_139" + br i1 %"$gascmp_140", label %"$out_of_gas_141", label %"$have_gas_142" + +"$out_of_gas_141": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_142" + +"$have_gas_142": ; preds = %"$out_of_gas_141", %entry + %"$consume_143" = sub i64 %"$gasrem_139", 1 + store i64 %"$consume_143", i64* @_gasrem store { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_29_env_127"*, %Uint32)* @"$fundef_29" to %Uint32 (i8*, %Uint32)*), i8* null }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_28" - %"$$retval_28_137" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_28" - ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_28_137" + %"$$retval_28_147" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_28" + ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_28_147" } define internal { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } @"$fundef_25"(%"$$fundef_25_env_129"* %0) { entry: %"$retval_26" = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_130" = load i64, i64* @_gasrem + %"$gascmp_131" = icmp ugt i64 1, %"$gasrem_130" + br i1 %"$gascmp_131", label %"$out_of_gas_132", label %"$have_gas_133" + +"$out_of_gas_132": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_133" + +"$have_gas_133": ; preds = %"$out_of_gas_132", %entry + %"$consume_134" = sub i64 %"$gasrem_130", 1 + store i64 %"$consume_134", i64* @_gasrem store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })* bitcast ({ %Uint32 (i8*, %Uint32)*, i8* } (%"$$fundef_27_env_128"*, { %Uint32 (i8*, %Uint32)*, i8* })* @"$fundef_27" to { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*), i8* null }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_26" - %"$$retval_26_133" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_26" - ret { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_26_133" + %"$$retval_26_138" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_26" + ret { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_26_138" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) declare %Uint32 @_add_Uint32(%Uint32, %Uint32) @@ -709,173 +1273,437 @@ entry: ret void } -define internal %Uint32 @"$scilla_expr_431"(i8* %0) { +define internal %Uint32 @"$scilla_expr_686"(i8* %0) { entry: %"$expr_24" = alloca %Uint32 + %"$gasrem_687" = load i64, i64* @_gasrem + %"$gascmp_688" = icmp ugt i64 1, %"$gasrem_687" + br i1 %"$gascmp_688", label %"$out_of_gas_689", label %"$have_gas_690" + +"$out_of_gas_689": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_690" + +"$have_gas_690": ; preds = %"$out_of_gas_689", %entry + %"$consume_691" = sub i64 %"$gasrem_687", 1 + store i64 %"$consume_691", i64* @_gasrem %c0 = alloca { i8*, i8* }* - %"$dyndisp_table_438_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_438_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_438_salloc_load", i64 32) - %"$dyndisp_table_438_salloc" = bitcast i8* %"$dyndisp_table_438_salloc_salloc" to [2 x { i8*, i8* }]* - %"$dyndisp_table_438" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_438_salloc" to { i8*, i8* }* - %"$dyndisp_gep_439" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_438", i32 0 - %"$dyndisp_pcast_440" = bitcast { i8*, i8* }* %"$dyndisp_gep_439" to { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_25_env_129"*)* @"$fundef_25" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_440" - %"$dyndisp_gep_441" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_438", i32 1 - %"$dyndisp_pcast_442" = bitcast { i8*, i8* }* %"$dyndisp_gep_441" to { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)* bitcast ({ { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (%"$$fundef_31_env_126"*)* @"$fundef_31" to { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_442" - store { i8*, i8* }* %"$dyndisp_table_438", { i8*, i8* }** %c0 + %"$gasrem_692" = load i64, i64* @_gasrem + %"$gascmp_693" = icmp ugt i64 1, %"$gasrem_692" + br i1 %"$gascmp_693", label %"$out_of_gas_694", label %"$have_gas_695" + +"$out_of_gas_694": ; preds = %"$have_gas_690" + call void @_out_of_gas() + br label %"$have_gas_695" + +"$have_gas_695": ; preds = %"$out_of_gas_694", %"$have_gas_690" + %"$consume_696" = sub i64 %"$gasrem_692", 1 + store i64 %"$consume_696", i64* @_gasrem + %"$dyndisp_table_703_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_703_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_703_salloc_load", i64 32) + %"$dyndisp_table_703_salloc" = bitcast i8* %"$dyndisp_table_703_salloc_salloc" to [2 x { i8*, i8* }]* + %"$dyndisp_table_703" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_703_salloc" to { i8*, i8* }* + %"$dyndisp_gep_704" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_703", i32 0 + %"$dyndisp_pcast_705" = bitcast { i8*, i8* }* %"$dyndisp_gep_704" to { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_25_env_129"*)* @"$fundef_25" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_705" + %"$dyndisp_gep_706" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_703", i32 1 + %"$dyndisp_pcast_707" = bitcast { i8*, i8* }* %"$dyndisp_gep_706" to { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)* bitcast ({ { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (%"$$fundef_31_env_126"*)* @"$fundef_31" to { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_707" + store { i8*, i8* }* %"$dyndisp_table_703", { i8*, i8* }** %c0 + %"$gasrem_708" = load i64, i64* @_gasrem + %"$gascmp_709" = icmp ugt i64 1, %"$gasrem_708" + br i1 %"$gascmp_709", label %"$out_of_gas_710", label %"$have_gas_711" + +"$out_of_gas_710": ; preds = %"$have_gas_695" + call void @_out_of_gas() + br label %"$have_gas_711" + +"$have_gas_711": ; preds = %"$out_of_gas_710", %"$have_gas_695" + %"$consume_712" = sub i64 %"$gasrem_708", 1 + store i64 %"$consume_712", i64* @_gasrem + %"$gasrem_713" = load i64, i64* @_gasrem + %"$gascmp_714" = icmp ugt i64 1, %"$gasrem_713" + br i1 %"$gascmp_714", label %"$out_of_gas_715", label %"$have_gas_716" + +"$out_of_gas_715": ; preds = %"$have_gas_711" + call void @_out_of_gas() + br label %"$have_gas_716" + +"$have_gas_716": ; preds = %"$out_of_gas_715", %"$have_gas_711" + %"$consume_717" = sub i64 %"$gasrem_713", 1 + store i64 %"$consume_717", i64* @_gasrem %c2 = alloca { i8*, i8* }* - %"$dyndisp_table_449_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_449_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_449_salloc_load", i64 32) - %"$dyndisp_table_449_salloc" = bitcast i8* %"$dyndisp_table_449_salloc_salloc" to [2 x { i8*, i8* }]* - %"$dyndisp_table_449" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_449_salloc" to { i8*, i8* }* - %"$dyndisp_gep_450" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_449", i32 0 - %"$dyndisp_pcast_451" = bitcast { i8*, i8* }* %"$dyndisp_gep_450" to { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_37_env_123"*)* @"$fundef_37" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_451" - %"$dyndisp_gep_452" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_449", i32 1 - %"$dyndisp_pcast_453" = bitcast { i8*, i8* }* %"$dyndisp_gep_452" to { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)* bitcast ({ { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (%"$$fundef_43_env_120"*)* @"$fundef_43" to { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_453" - store { i8*, i8* }* %"$dyndisp_table_449", { i8*, i8* }** %c2 + %"$gasrem_718" = load i64, i64* @_gasrem + %"$gascmp_719" = icmp ugt i64 1, %"$gasrem_718" + br i1 %"$gascmp_719", label %"$out_of_gas_720", label %"$have_gas_721" + +"$out_of_gas_720": ; preds = %"$have_gas_716" + call void @_out_of_gas() + br label %"$have_gas_721" + +"$have_gas_721": ; preds = %"$out_of_gas_720", %"$have_gas_716" + %"$consume_722" = sub i64 %"$gasrem_718", 1 + store i64 %"$consume_722", i64* @_gasrem + %"$dyndisp_table_729_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_729_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_729_salloc_load", i64 32) + %"$dyndisp_table_729_salloc" = bitcast i8* %"$dyndisp_table_729_salloc_salloc" to [2 x { i8*, i8* }]* + %"$dyndisp_table_729" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_729_salloc" to { i8*, i8* }* + %"$dyndisp_gep_730" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_729", i32 0 + %"$dyndisp_pcast_731" = bitcast { i8*, i8* }* %"$dyndisp_gep_730" to { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_37_env_123"*)* @"$fundef_37" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_731" + %"$dyndisp_gep_732" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_729", i32 1 + %"$dyndisp_pcast_733" = bitcast { i8*, i8* }* %"$dyndisp_gep_732" to { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* } { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)* bitcast ({ { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (%"$$fundef_43_env_120"*)* @"$fundef_43" to { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_733" + store { i8*, i8* }* %"$dyndisp_table_729", { i8*, i8* }** %c2 + %"$gasrem_734" = load i64, i64* @_gasrem + %"$gascmp_735" = icmp ugt i64 1, %"$gasrem_734" + br i1 %"$gascmp_735", label %"$out_of_gas_736", label %"$have_gas_737" + +"$out_of_gas_736": ; preds = %"$have_gas_721" + call void @_out_of_gas() + br label %"$have_gas_737" + +"$have_gas_737": ; preds = %"$out_of_gas_736", %"$have_gas_721" + %"$consume_738" = sub i64 %"$gasrem_734", 1 + store i64 %"$consume_738", i64* @_gasrem %cadd = alloca { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } + %"$gasrem_739" = load i64, i64* @_gasrem + %"$gascmp_740" = icmp ugt i64 1, %"$gasrem_739" + br i1 %"$gascmp_740", label %"$out_of_gas_741", label %"$have_gas_742" + +"$out_of_gas_741": ; preds = %"$have_gas_737" + call void @_out_of_gas() + br label %"$have_gas_742" + +"$have_gas_742": ; preds = %"$out_of_gas_741", %"$have_gas_737" + %"$consume_743" = sub i64 %"$gasrem_739", 1 + store i64 %"$consume_743", i64* @_gasrem store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)* bitcast ({ { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (%"$$fundef_49_env_117"*, { i8*, i8* }*)* @"$fundef_49" to { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*), i8* null }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cadd + %"$gasrem_747" = load i64, i64* @_gasrem + %"$gascmp_748" = icmp ugt i64 1, %"$gasrem_747" + br i1 %"$gascmp_748", label %"$out_of_gas_749", label %"$have_gas_750" + +"$out_of_gas_749": ; preds = %"$have_gas_742" + call void @_out_of_gas() + br label %"$have_gas_750" + +"$have_gas_750": ; preds = %"$out_of_gas_749", %"$have_gas_742" + %"$consume_751" = sub i64 %"$gasrem_747", 1 + store i64 %"$consume_751", i64* @_gasrem %cmul = alloca { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } - %"$$fundef_65_envp_457_load" = load i8*, i8** @_execptr - %"$$fundef_65_envp_457_salloc" = call i8* @_salloc(i8* %"$$fundef_65_envp_457_load", i64 24) - %"$$fundef_65_envp_457" = bitcast i8* %"$$fundef_65_envp_457_salloc" to %"$$fundef_65_env_109"* - %"$$fundef_65_env_voidp_459" = bitcast %"$$fundef_65_env_109"* %"$$fundef_65_envp_457" to i8* - %"$$fundef_65_cloval_460" = insertvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)* bitcast ({ { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (%"$$fundef_65_env_109"*, { i8*, i8* }*)* @"$fundef_65" to { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*), i8* undef }, i8* %"$$fundef_65_env_voidp_459", 1 - %"$$fundef_65_env_c0_461" = getelementptr inbounds %"$$fundef_65_env_109", %"$$fundef_65_env_109"* %"$$fundef_65_envp_457", i32 0, i32 0 - %"$c0_462" = load { i8*, i8* }*, { i8*, i8* }** %c0 - store { i8*, i8* }* %"$c0_462", { i8*, i8* }** %"$$fundef_65_env_c0_461" - %"$$fundef_65_env_cadd_463" = getelementptr inbounds %"$$fundef_65_env_109", %"$$fundef_65_env_109"* %"$$fundef_65_envp_457", i32 0, i32 1 - %"$cadd_464" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cadd - store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_464", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$$fundef_65_env_cadd_463" - store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$$fundef_65_cloval_460", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cmul + %"$gasrem_752" = load i64, i64* @_gasrem + %"$gascmp_753" = icmp ugt i64 1, %"$gasrem_752" + br i1 %"$gascmp_753", label %"$out_of_gas_754", label %"$have_gas_755" + +"$out_of_gas_754": ; preds = %"$have_gas_750" + call void @_out_of_gas() + br label %"$have_gas_755" + +"$have_gas_755": ; preds = %"$out_of_gas_754", %"$have_gas_750" + %"$consume_756" = sub i64 %"$gasrem_752", 1 + store i64 %"$consume_756", i64* @_gasrem + %"$$fundef_65_envp_757_load" = load i8*, i8** @_execptr + %"$$fundef_65_envp_757_salloc" = call i8* @_salloc(i8* %"$$fundef_65_envp_757_load", i64 24) + %"$$fundef_65_envp_757" = bitcast i8* %"$$fundef_65_envp_757_salloc" to %"$$fundef_65_env_109"* + %"$$fundef_65_env_voidp_759" = bitcast %"$$fundef_65_env_109"* %"$$fundef_65_envp_757" to i8* + %"$$fundef_65_cloval_760" = insertvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)* bitcast ({ { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (%"$$fundef_65_env_109"*, { i8*, i8* }*)* @"$fundef_65" to { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*), i8* undef }, i8* %"$$fundef_65_env_voidp_759", 1 + %"$$fundef_65_env_c0_761" = getelementptr inbounds %"$$fundef_65_env_109", %"$$fundef_65_env_109"* %"$$fundef_65_envp_757", i32 0, i32 0 + %"$c0_762" = load { i8*, i8* }*, { i8*, i8* }** %c0 + store { i8*, i8* }* %"$c0_762", { i8*, i8* }** %"$$fundef_65_env_c0_761" + %"$$fundef_65_env_cadd_763" = getelementptr inbounds %"$$fundef_65_env_109", %"$$fundef_65_env_109"* %"$$fundef_65_envp_757", i32 0, i32 1 + %"$cadd_764" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cadd + store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_764", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$$fundef_65_env_cadd_763" + store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$$fundef_65_cloval_760", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cmul + %"$gasrem_765" = load i64, i64* @_gasrem + %"$gascmp_766" = icmp ugt i64 1, %"$gasrem_765" + br i1 %"$gascmp_766", label %"$out_of_gas_767", label %"$have_gas_768" + +"$out_of_gas_767": ; preds = %"$have_gas_755" + call void @_out_of_gas() + br label %"$have_gas_768" + +"$have_gas_768": ; preds = %"$out_of_gas_767", %"$have_gas_755" + %"$consume_769" = sub i64 %"$gasrem_765", 1 + store i64 %"$consume_769", i64* @_gasrem %church_nat_to_uint32 = alloca { %Uint32 (i8*, { i8*, i8* }*)*, i8* } + %"$gasrem_770" = load i64, i64* @_gasrem + %"$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_768" + call void @_out_of_gas() + br label %"$have_gas_773" + +"$have_gas_773": ; preds = %"$out_of_gas_772", %"$have_gas_768" + %"$consume_774" = sub i64 %"$gasrem_770", 1 + store i64 %"$consume_774", i64* @_gasrem store { %Uint32 (i8*, { i8*, i8* }*)*, i8* } { %Uint32 (i8*, { i8*, i8* }*)* bitcast (%Uint32 (%"$$fundef_69_env_107"*, { i8*, i8* }*)* @"$fundef_69" to %Uint32 (i8*, { i8*, i8* }*)*), i8* null }, { %Uint32 (i8*, { i8*, i8* }*)*, i8* }* %church_nat_to_uint32 + %"$gasrem_778" = load i64, i64* @_gasrem + %"$gascmp_779" = icmp ugt i64 1, %"$gasrem_778" + br i1 %"$gascmp_779", label %"$out_of_gas_780", label %"$have_gas_781" + +"$out_of_gas_780": ; preds = %"$have_gas_773" + call void @_out_of_gas() + br label %"$have_gas_781" + +"$have_gas_781": ; preds = %"$out_of_gas_780", %"$have_gas_773" + %"$consume_782" = sub i64 %"$gasrem_778", 1 + store i64 %"$consume_782", i64* @_gasrem %c4 = alloca { i8*, i8* }* + %"$gasrem_783" = load i64, i64* @_gasrem + %"$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_781" + call void @_out_of_gas() + br label %"$have_gas_786" + +"$have_gas_786": ; preds = %"$out_of_gas_785", %"$have_gas_781" + %"$consume_787" = sub i64 %"$gasrem_783", 1 + store i64 %"$consume_787", i64* @_gasrem %"$cmul_11" = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } - %"$cmul_468" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cmul - %"$cmul_fptr_469" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cmul_468", 0 - %"$cmul_envptr_470" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cmul_468", 1 - %"$c2_471" = load { i8*, i8* }*, { i8*, i8* }** %c2 - %"$cmul_call_472" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cmul_fptr_469"(i8* %"$cmul_envptr_470", { i8*, i8* }* %"$c2_471") - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cmul_call_472", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cmul_11" + %"$cmul_788" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cmul + %"$cmul_fptr_789" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cmul_788", 0 + %"$cmul_envptr_790" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cmul_788", 1 + %"$c2_791" = load { i8*, i8* }*, { i8*, i8* }** %c2 + %"$cmul_call_792" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cmul_fptr_789"(i8* %"$cmul_envptr_790", { i8*, i8* }* %"$c2_791") + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cmul_call_792", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cmul_11" %"$cmul_12" = alloca { i8*, i8* }* - %"$$cmul_11_473" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cmul_11" - %"$$cmul_11_fptr_474" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cmul_11_473", 0 - %"$$cmul_11_envptr_475" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cmul_11_473", 1 - %"$c2_476" = load { i8*, i8* }*, { i8*, i8* }** %c2 - %"$$cmul_11_call_477" = call { i8*, i8* }* %"$$cmul_11_fptr_474"(i8* %"$$cmul_11_envptr_475", { i8*, i8* }* %"$c2_476") - store { i8*, i8* }* %"$$cmul_11_call_477", { i8*, i8* }** %"$cmul_12" - %"$$cmul_12_478" = load { i8*, i8* }*, { i8*, i8* }** %"$cmul_12" - store { i8*, i8* }* %"$$cmul_12_478", { i8*, i8* }** %c4 + %"$$cmul_11_793" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cmul_11" + %"$$cmul_11_fptr_794" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cmul_11_793", 0 + %"$$cmul_11_envptr_795" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cmul_11_793", 1 + %"$c2_796" = load { i8*, i8* }*, { i8*, i8* }** %c2 + %"$$cmul_11_call_797" = call { i8*, i8* }* %"$$cmul_11_fptr_794"(i8* %"$$cmul_11_envptr_795", { i8*, i8* }* %"$c2_796") + store { i8*, i8* }* %"$$cmul_11_call_797", { i8*, i8* }** %"$cmul_12" + %"$$cmul_12_798" = load { i8*, i8* }*, { i8*, i8* }** %"$cmul_12" + store { i8*, i8* }* %"$$cmul_12_798", { i8*, i8* }** %c4 + %"$gasrem_799" = load i64, i64* @_gasrem + %"$gascmp_800" = icmp ugt i64 1, %"$gasrem_799" + br i1 %"$gascmp_800", label %"$out_of_gas_801", label %"$have_gas_802" + +"$out_of_gas_801": ; preds = %"$have_gas_786" + call void @_out_of_gas() + br label %"$have_gas_802" + +"$have_gas_802": ; preds = %"$out_of_gas_801", %"$have_gas_786" + %"$consume_803" = sub i64 %"$gasrem_799", 1 + store i64 %"$consume_803", i64* @_gasrem %c16 = alloca { i8*, i8* }* + %"$gasrem_804" = load i64, i64* @_gasrem + %"$gascmp_805" = icmp ugt i64 1, %"$gasrem_804" + br i1 %"$gascmp_805", label %"$out_of_gas_806", label %"$have_gas_807" + +"$out_of_gas_806": ; preds = %"$have_gas_802" + call void @_out_of_gas() + br label %"$have_gas_807" + +"$have_gas_807": ; preds = %"$out_of_gas_806", %"$have_gas_802" + %"$consume_808" = sub i64 %"$gasrem_804", 1 + store i64 %"$consume_808", i64* @_gasrem %"$cmul_13" = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } - %"$cmul_479" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cmul - %"$cmul_fptr_480" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cmul_479", 0 - %"$cmul_envptr_481" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cmul_479", 1 - %"$c4_482" = load { i8*, i8* }*, { i8*, i8* }** %c4 - %"$cmul_call_483" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cmul_fptr_480"(i8* %"$cmul_envptr_481", { i8*, i8* }* %"$c4_482") - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cmul_call_483", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cmul_13" + %"$cmul_809" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cmul + %"$cmul_fptr_810" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cmul_809", 0 + %"$cmul_envptr_811" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cmul_809", 1 + %"$c4_812" = load { i8*, i8* }*, { i8*, i8* }** %c4 + %"$cmul_call_813" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cmul_fptr_810"(i8* %"$cmul_envptr_811", { i8*, i8* }* %"$c4_812") + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cmul_call_813", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cmul_13" %"$cmul_14" = alloca { i8*, i8* }* - %"$$cmul_13_484" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cmul_13" - %"$$cmul_13_fptr_485" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cmul_13_484", 0 - %"$$cmul_13_envptr_486" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cmul_13_484", 1 - %"$c4_487" = load { i8*, i8* }*, { i8*, i8* }** %c4 - %"$$cmul_13_call_488" = call { i8*, i8* }* %"$$cmul_13_fptr_485"(i8* %"$$cmul_13_envptr_486", { i8*, i8* }* %"$c4_487") - store { i8*, i8* }* %"$$cmul_13_call_488", { i8*, i8* }** %"$cmul_14" - %"$$cmul_14_489" = load { i8*, i8* }*, { i8*, i8* }** %"$cmul_14" - store { i8*, i8* }* %"$$cmul_14_489", { i8*, i8* }** %c16 + %"$$cmul_13_814" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cmul_13" + %"$$cmul_13_fptr_815" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cmul_13_814", 0 + %"$$cmul_13_envptr_816" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cmul_13_814", 1 + %"$c4_817" = load { i8*, i8* }*, { i8*, i8* }** %c4 + %"$$cmul_13_call_818" = call { i8*, i8* }* %"$$cmul_13_fptr_815"(i8* %"$$cmul_13_envptr_816", { i8*, i8* }* %"$c4_817") + store { i8*, i8* }* %"$$cmul_13_call_818", { i8*, i8* }** %"$cmul_14" + %"$$cmul_14_819" = load { i8*, i8* }*, { i8*, i8* }** %"$cmul_14" + store { i8*, i8* }* %"$$cmul_14_819", { i8*, i8* }** %c16 + %"$gasrem_820" = load i64, i64* @_gasrem + %"$gascmp_821" = icmp ugt i64 1, %"$gasrem_820" + br i1 %"$gascmp_821", label %"$out_of_gas_822", label %"$have_gas_823" + +"$out_of_gas_822": ; preds = %"$have_gas_807" + call void @_out_of_gas() + br label %"$have_gas_823" + +"$have_gas_823": ; preds = %"$out_of_gas_822", %"$have_gas_807" + %"$consume_824" = sub i64 %"$gasrem_820", 1 + store i64 %"$consume_824", i64* @_gasrem %c32 = alloca { i8*, i8* }* + %"$gasrem_825" = load i64, i64* @_gasrem + %"$gascmp_826" = icmp ugt i64 1, %"$gasrem_825" + br i1 %"$gascmp_826", label %"$out_of_gas_827", label %"$have_gas_828" + +"$out_of_gas_827": ; preds = %"$have_gas_823" + call void @_out_of_gas() + br label %"$have_gas_828" + +"$have_gas_828": ; preds = %"$out_of_gas_827", %"$have_gas_823" + %"$consume_829" = sub i64 %"$gasrem_825", 1 + store i64 %"$consume_829", i64* @_gasrem %"$cadd_15" = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } - %"$cadd_490" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cadd - %"$cadd_fptr_491" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_490", 0 - %"$cadd_envptr_492" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_490", 1 - %"$c16_493" = load { i8*, i8* }*, { i8*, i8* }** %c16 - %"$cadd_call_494" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cadd_fptr_491"(i8* %"$cadd_envptr_492", { i8*, i8* }* %"$c16_493") - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cadd_call_494", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cadd_15" + %"$cadd_830" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cadd + %"$cadd_fptr_831" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_830", 0 + %"$cadd_envptr_832" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_830", 1 + %"$c16_833" = load { i8*, i8* }*, { i8*, i8* }** %c16 + %"$cadd_call_834" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cadd_fptr_831"(i8* %"$cadd_envptr_832", { i8*, i8* }* %"$c16_833") + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cadd_call_834", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cadd_15" %"$cadd_16" = alloca { i8*, i8* }* - %"$$cadd_15_495" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cadd_15" - %"$$cadd_15_fptr_496" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cadd_15_495", 0 - %"$$cadd_15_envptr_497" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cadd_15_495", 1 - %"$c16_498" = load { i8*, i8* }*, { i8*, i8* }** %c16 - %"$$cadd_15_call_499" = call { i8*, i8* }* %"$$cadd_15_fptr_496"(i8* %"$$cadd_15_envptr_497", { i8*, i8* }* %"$c16_498") - store { i8*, i8* }* %"$$cadd_15_call_499", { i8*, i8* }** %"$cadd_16" - %"$$cadd_16_500" = load { i8*, i8* }*, { i8*, i8* }** %"$cadd_16" - store { i8*, i8* }* %"$$cadd_16_500", { i8*, i8* }** %c32 + %"$$cadd_15_835" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cadd_15" + %"$$cadd_15_fptr_836" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cadd_15_835", 0 + %"$$cadd_15_envptr_837" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cadd_15_835", 1 + %"$c16_838" = load { i8*, i8* }*, { i8*, i8* }** %c16 + %"$$cadd_15_call_839" = call { i8*, i8* }* %"$$cadd_15_fptr_836"(i8* %"$$cadd_15_envptr_837", { i8*, i8* }* %"$c16_838") + store { i8*, i8* }* %"$$cadd_15_call_839", { i8*, i8* }** %"$cadd_16" + %"$$cadd_16_840" = load { i8*, i8* }*, { i8*, i8* }** %"$cadd_16" + store { i8*, i8* }* %"$$cadd_16_840", { i8*, i8* }** %c32 + %"$gasrem_841" = load i64, i64* @_gasrem + %"$gascmp_842" = icmp ugt i64 1, %"$gasrem_841" + br i1 %"$gascmp_842", label %"$out_of_gas_843", label %"$have_gas_844" + +"$out_of_gas_843": ; preds = %"$have_gas_828" + call void @_out_of_gas() + br label %"$have_gas_844" + +"$have_gas_844": ; preds = %"$out_of_gas_843", %"$have_gas_828" + %"$consume_845" = sub i64 %"$gasrem_841", 1 + store i64 %"$consume_845", i64* @_gasrem %c128 = alloca { i8*, i8* }* + %"$gasrem_846" = load i64, i64* @_gasrem + %"$gascmp_847" = icmp ugt i64 1, %"$gasrem_846" + br i1 %"$gascmp_847", label %"$out_of_gas_848", label %"$have_gas_849" + +"$out_of_gas_848": ; preds = %"$have_gas_844" + call void @_out_of_gas() + br label %"$have_gas_849" + +"$have_gas_849": ; preds = %"$out_of_gas_848", %"$have_gas_844" + %"$consume_850" = sub i64 %"$gasrem_846", 1 + store i64 %"$consume_850", i64* @_gasrem %"$cmul_17" = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } - %"$cmul_501" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cmul - %"$cmul_fptr_502" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cmul_501", 0 - %"$cmul_envptr_503" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cmul_501", 1 - %"$c4_504" = load { i8*, i8* }*, { i8*, i8* }** %c4 - %"$cmul_call_505" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cmul_fptr_502"(i8* %"$cmul_envptr_503", { i8*, i8* }* %"$c4_504") - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cmul_call_505", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cmul_17" + %"$cmul_851" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cmul + %"$cmul_fptr_852" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cmul_851", 0 + %"$cmul_envptr_853" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cmul_851", 1 + %"$c4_854" = load { i8*, i8* }*, { i8*, i8* }** %c4 + %"$cmul_call_855" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cmul_fptr_852"(i8* %"$cmul_envptr_853", { i8*, i8* }* %"$c4_854") + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cmul_call_855", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cmul_17" %"$cmul_18" = alloca { i8*, i8* }* - %"$$cmul_17_506" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cmul_17" - %"$$cmul_17_fptr_507" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cmul_17_506", 0 - %"$$cmul_17_envptr_508" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cmul_17_506", 1 - %"$c32_509" = load { i8*, i8* }*, { i8*, i8* }** %c32 - %"$$cmul_17_call_510" = call { i8*, i8* }* %"$$cmul_17_fptr_507"(i8* %"$$cmul_17_envptr_508", { i8*, i8* }* %"$c32_509") - store { i8*, i8* }* %"$$cmul_17_call_510", { i8*, i8* }** %"$cmul_18" - %"$$cmul_18_511" = load { i8*, i8* }*, { i8*, i8* }** %"$cmul_18" - store { i8*, i8* }* %"$$cmul_18_511", { i8*, i8* }** %c128 + %"$$cmul_17_856" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cmul_17" + %"$$cmul_17_fptr_857" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cmul_17_856", 0 + %"$$cmul_17_envptr_858" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cmul_17_856", 1 + %"$c32_859" = load { i8*, i8* }*, { i8*, i8* }** %c32 + %"$$cmul_17_call_860" = call { i8*, i8* }* %"$$cmul_17_fptr_857"(i8* %"$$cmul_17_envptr_858", { i8*, i8* }* %"$c32_859") + store { i8*, i8* }* %"$$cmul_17_call_860", { i8*, i8* }** %"$cmul_18" + %"$$cmul_18_861" = load { i8*, i8* }*, { i8*, i8* }** %"$cmul_18" + store { i8*, i8* }* %"$$cmul_18_861", { i8*, i8* }** %c128 + %"$gasrem_862" = load i64, i64* @_gasrem + %"$gascmp_863" = icmp ugt i64 1, %"$gasrem_862" + br i1 %"$gascmp_863", label %"$out_of_gas_864", label %"$have_gas_865" + +"$out_of_gas_864": ; preds = %"$have_gas_849" + call void @_out_of_gas() + br label %"$have_gas_865" + +"$have_gas_865": ; preds = %"$out_of_gas_864", %"$have_gas_849" + %"$consume_866" = sub i64 %"$gasrem_862", 1 + store i64 %"$consume_866", i64* @_gasrem %c256 = alloca { i8*, i8* }* + %"$gasrem_867" = load i64, i64* @_gasrem + %"$gascmp_868" = icmp ugt i64 1, %"$gasrem_867" + br i1 %"$gascmp_868", label %"$out_of_gas_869", label %"$have_gas_870" + +"$out_of_gas_869": ; preds = %"$have_gas_865" + call void @_out_of_gas() + br label %"$have_gas_870" + +"$have_gas_870": ; preds = %"$out_of_gas_869", %"$have_gas_865" + %"$consume_871" = sub i64 %"$gasrem_867", 1 + store i64 %"$consume_871", i64* @_gasrem %"$cadd_19" = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } - %"$cadd_512" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cadd - %"$cadd_fptr_513" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_512", 0 - %"$cadd_envptr_514" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_512", 1 - %"$c128_515" = load { i8*, i8* }*, { i8*, i8* }** %c128 - %"$cadd_call_516" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cadd_fptr_513"(i8* %"$cadd_envptr_514", { i8*, i8* }* %"$c128_515") - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cadd_call_516", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cadd_19" + %"$cadd_872" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cadd + %"$cadd_fptr_873" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_872", 0 + %"$cadd_envptr_874" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cadd_872", 1 + %"$c128_875" = load { i8*, i8* }*, { i8*, i8* }** %c128 + %"$cadd_call_876" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cadd_fptr_873"(i8* %"$cadd_envptr_874", { i8*, i8* }* %"$c128_875") + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cadd_call_876", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cadd_19" %"$cadd_20" = alloca { i8*, i8* }* - %"$$cadd_19_517" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cadd_19" - %"$$cadd_19_fptr_518" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cadd_19_517", 0 - %"$$cadd_19_envptr_519" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cadd_19_517", 1 - %"$c128_520" = load { i8*, i8* }*, { i8*, i8* }** %c128 - %"$$cadd_19_call_521" = call { i8*, i8* }* %"$$cadd_19_fptr_518"(i8* %"$$cadd_19_envptr_519", { i8*, i8* }* %"$c128_520") - store { i8*, i8* }* %"$$cadd_19_call_521", { i8*, i8* }** %"$cadd_20" - %"$$cadd_20_522" = load { i8*, i8* }*, { i8*, i8* }** %"$cadd_20" - store { i8*, i8* }* %"$$cadd_20_522", { i8*, i8* }** %c256 + %"$$cadd_19_877" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cadd_19" + %"$$cadd_19_fptr_878" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cadd_19_877", 0 + %"$$cadd_19_envptr_879" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cadd_19_877", 1 + %"$c128_880" = load { i8*, i8* }*, { i8*, i8* }** %c128 + %"$$cadd_19_call_881" = call { i8*, i8* }* %"$$cadd_19_fptr_878"(i8* %"$$cadd_19_envptr_879", { i8*, i8* }* %"$c128_880") + store { i8*, i8* }* %"$$cadd_19_call_881", { i8*, i8* }** %"$cadd_20" + %"$$cadd_20_882" = load { i8*, i8* }*, { i8*, i8* }** %"$cadd_20" + store { i8*, i8* }* %"$$cadd_20_882", { i8*, i8* }** %c256 + %"$gasrem_883" = load i64, i64* @_gasrem + %"$gascmp_884" = icmp ugt i64 1, %"$gasrem_883" + br i1 %"$gascmp_884", label %"$out_of_gas_885", label %"$have_gas_886" + +"$out_of_gas_885": ; preds = %"$have_gas_870" + call void @_out_of_gas() + br label %"$have_gas_886" + +"$have_gas_886": ; preds = %"$out_of_gas_885", %"$have_gas_870" + %"$consume_887" = sub i64 %"$gasrem_883", 1 + store i64 %"$consume_887", i64* @_gasrem %c65536 = alloca { i8*, i8* }* + %"$gasrem_888" = load i64, i64* @_gasrem + %"$gascmp_889" = icmp ugt i64 1, %"$gasrem_888" + br i1 %"$gascmp_889", label %"$out_of_gas_890", label %"$have_gas_891" + +"$out_of_gas_890": ; preds = %"$have_gas_886" + call void @_out_of_gas() + br label %"$have_gas_891" + +"$have_gas_891": ; preds = %"$out_of_gas_890", %"$have_gas_886" + %"$consume_892" = sub i64 %"$gasrem_888", 1 + store i64 %"$consume_892", i64* @_gasrem %"$cmul_21" = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } - %"$cmul_523" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cmul - %"$cmul_fptr_524" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cmul_523", 0 - %"$cmul_envptr_525" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cmul_523", 1 - %"$c256_526" = load { i8*, i8* }*, { i8*, i8* }** %c256 - %"$cmul_call_527" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cmul_fptr_524"(i8* %"$cmul_envptr_525", { i8*, i8* }* %"$c256_526") - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cmul_call_527", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cmul_21" + %"$cmul_893" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %cmul + %"$cmul_fptr_894" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cmul_893", 0 + %"$cmul_envptr_895" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$cmul_893", 1 + %"$c256_896" = load { i8*, i8* }*, { i8*, i8* }** %c256 + %"$cmul_call_897" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cmul_fptr_894"(i8* %"$cmul_envptr_895", { i8*, i8* }* %"$c256_896") + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$cmul_call_897", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cmul_21" %"$cmul_22" = alloca { i8*, i8* }* - %"$$cmul_21_528" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cmul_21" - %"$$cmul_21_fptr_529" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cmul_21_528", 0 - %"$$cmul_21_envptr_530" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cmul_21_528", 1 - %"$c256_531" = load { i8*, i8* }*, { i8*, i8* }** %c256 - %"$$cmul_21_call_532" = call { i8*, i8* }* %"$$cmul_21_fptr_529"(i8* %"$$cmul_21_envptr_530", { i8*, i8* }* %"$c256_531") - store { i8*, i8* }* %"$$cmul_21_call_532", { i8*, i8* }** %"$cmul_22" - %"$$cmul_22_533" = load { i8*, i8* }*, { i8*, i8* }** %"$cmul_22" - store { i8*, i8* }* %"$$cmul_22_533", { i8*, i8* }** %c65536 + %"$$cmul_21_898" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$cmul_21" + %"$$cmul_21_fptr_899" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cmul_21_898", 0 + %"$$cmul_21_envptr_900" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$cmul_21_898", 1 + %"$c256_901" = load { i8*, i8* }*, { i8*, i8* }** %c256 + %"$$cmul_21_call_902" = call { i8*, i8* }* %"$$cmul_21_fptr_899"(i8* %"$$cmul_21_envptr_900", { i8*, i8* }* %"$c256_901") + store { i8*, i8* }* %"$$cmul_21_call_902", { i8*, i8* }** %"$cmul_22" + %"$$cmul_22_903" = load { i8*, i8* }*, { i8*, i8* }** %"$cmul_22" + store { i8*, i8* }* %"$$cmul_22_903", { i8*, i8* }** %c65536 + %"$gasrem_904" = load i64, i64* @_gasrem + %"$gascmp_905" = icmp ugt i64 1, %"$gasrem_904" + br i1 %"$gascmp_905", label %"$out_of_gas_906", label %"$have_gas_907" + +"$out_of_gas_906": ; preds = %"$have_gas_891" + call void @_out_of_gas() + br label %"$have_gas_907" + +"$have_gas_907": ; preds = %"$out_of_gas_906", %"$have_gas_891" + %"$consume_908" = sub i64 %"$gasrem_904", 1 + store i64 %"$consume_908", i64* @_gasrem %"$church_nat_to_uint32_23" = alloca %Uint32 - %"$church_nat_to_uint32_534" = load { %Uint32 (i8*, { i8*, i8* }*)*, i8* }, { %Uint32 (i8*, { i8*, i8* }*)*, i8* }* %church_nat_to_uint32 - %"$church_nat_to_uint32_fptr_535" = extractvalue { %Uint32 (i8*, { i8*, i8* }*)*, i8* } %"$church_nat_to_uint32_534", 0 - %"$church_nat_to_uint32_envptr_536" = extractvalue { %Uint32 (i8*, { i8*, i8* }*)*, i8* } %"$church_nat_to_uint32_534", 1 - %"$c65536_537" = load { i8*, i8* }*, { i8*, i8* }** %c65536 - %"$church_nat_to_uint32_call_538" = call %Uint32 %"$church_nat_to_uint32_fptr_535"(i8* %"$church_nat_to_uint32_envptr_536", { i8*, i8* }* %"$c65536_537") - store %Uint32 %"$church_nat_to_uint32_call_538", %Uint32* %"$church_nat_to_uint32_23" - %"$$church_nat_to_uint32_23_539" = load %Uint32, %Uint32* %"$church_nat_to_uint32_23" - store %Uint32 %"$$church_nat_to_uint32_23_539", %Uint32* %"$expr_24" - %"$$expr_24_540" = load %Uint32, %Uint32* %"$expr_24" - ret %Uint32 %"$$expr_24_540" + %"$church_nat_to_uint32_909" = load { %Uint32 (i8*, { i8*, i8* }*)*, i8* }, { %Uint32 (i8*, { i8*, i8* }*)*, i8* }* %church_nat_to_uint32 + %"$church_nat_to_uint32_fptr_910" = extractvalue { %Uint32 (i8*, { i8*, i8* }*)*, i8* } %"$church_nat_to_uint32_909", 0 + %"$church_nat_to_uint32_envptr_911" = extractvalue { %Uint32 (i8*, { i8*, i8* }*)*, i8* } %"$church_nat_to_uint32_909", 1 + %"$c65536_912" = load { i8*, i8* }*, { i8*, i8* }** %c65536 + %"$church_nat_to_uint32_call_913" = call %Uint32 %"$church_nat_to_uint32_fptr_910"(i8* %"$church_nat_to_uint32_envptr_911", { i8*, i8* }* %"$c65536_912") + store %Uint32 %"$church_nat_to_uint32_call_913", %Uint32* %"$church_nat_to_uint32_23" + %"$$church_nat_to_uint32_23_914" = load %Uint32, %Uint32* %"$church_nat_to_uint32_23" + store %Uint32 %"$$church_nat_to_uint32_23_914", %Uint32* %"$expr_24" + %"$$expr_24_915" = load %Uint32, %Uint32* %"$expr_24" + ret %Uint32 %"$$expr_24_915" } declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_541" = call %Uint32 @"$scilla_expr_431"(i8* null) - %"$pval_542" = alloca %Uint32 - %"$memvoidcast_543" = bitcast %Uint32* %"$pval_542" to i8* - store %Uint32 %"$exprval_541", %Uint32* %"$pval_542" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_77", i8* %"$memvoidcast_543") + %"$exprval_916" = call %Uint32 @"$scilla_expr_686"(i8* null) + %"$pval_917" = alloca %Uint32 + %"$memvoidcast_918" = bitcast %Uint32* %"$pval_917" to i8* + store %Uint32 %"$exprval_916", %Uint32* %"$pval_917" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_77", i8* %"$memvoidcast_918") ret void } diff --git a/testsuite/expr/church_nat.ll.result b/testsuite/expr/church_nat.ll.result index 004018fe..f6542f54 100644 --- a/testsuite/expr/church_nat.ll.result +++ b/testsuite/expr/church_nat.ll.result @@ -1 +1,2 @@ 65536 : Uint32 +Gas remaining: 9335188 diff --git a/testsuite/expr/church_nat_stlc.ll b/testsuite/expr/church_nat_stlc.ll index 5295779f..b3c8ad47 100644 --- a/testsuite/expr/church_nat_stlc.ll +++ b/testsuite/expr/church_nat_stlc.ll @@ -85,6 +85,7 @@ target triple = "x86_64-pc-linux-gnu" %"$$fundef_37_env_120" = type {} @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_72" = global %"$TyDescrTy_PrimTyp_71" zeroinitializer @"$TyDescr_Int32_73" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_71"* @"$TyDescr_Int32_Prim_72" to i8*) } @"$TyDescr_Uint32_Prim_74" = global %"$TyDescrTy_PrimTyp_71" { i32 1, i32 0 } @@ -116,427 +117,825 @@ target triple = "x86_64-pc-linux-gnu" define internal %Uint32 @"$fundef_69"(%"$$fundef_69_env_104"* %0, %Uint32 %1) { entry: - %"$$fundef_69_env_one_314" = getelementptr inbounds %"$$fundef_69_env_104", %"$$fundef_69_env_104"* %0, i32 0, i32 0 - %"$one_envload_315" = load %Uint32, %Uint32* %"$$fundef_69_env_one_314" + %"$$fundef_69_env_one_494" = getelementptr inbounds %"$$fundef_69_env_104", %"$$fundef_69_env_104"* %0, i32 0, i32 0 + %"$one_envload_495" = load %Uint32, %Uint32* %"$$fundef_69_env_one_494" %one = alloca %Uint32 - store %Uint32 %"$one_envload_315", %Uint32* %one + store %Uint32 %"$one_envload_495", %Uint32* %one %"$retval_70" = alloca %Uint32 - %"$one_316" = load %Uint32, %Uint32* %one - %"$add_call_317" = call %Uint32 @_add_Uint32(%Uint32 %"$one_316", %Uint32 %1) - store %Uint32 %"$add_call_317", %Uint32* %"$retval_70" - %"$$retval_70_318" = load %Uint32, %Uint32* %"$retval_70" - ret %Uint32 %"$$retval_70_318" + %"$one_496" = load %Uint32, %Uint32* %one + %"$add_call_497" = call %Uint32 @_add_Uint32(%Uint32 %"$one_496", %Uint32 %1) + store %Uint32 %"$add_call_497", %Uint32* %"$retval_70" + %"$$retval_70_498" = load %Uint32, %Uint32* %"$retval_70" + ret %Uint32 %"$$retval_70_498" } define internal %Uint32 @"$fundef_67"(%"$$fundef_67_env_105"* %0, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1) { entry: %"$retval_68" = alloca %Uint32 + %"$gasrem_442" = load i64, i64* @_gasrem + %"$gascmp_443" = icmp ugt i64 1, %"$gasrem_442" + br i1 %"$gascmp_443", label %"$out_of_gas_444", label %"$have_gas_445" + +"$out_of_gas_444": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_445" + +"$have_gas_445": ; preds = %"$out_of_gas_444", %entry + %"$consume_446" = sub i64 %"$gasrem_442", 1 + store i64 %"$consume_446", i64* @_gasrem %zero = alloca %Uint32 + %"$gasrem_447" = load i64, i64* @_gasrem + %"$gascmp_448" = icmp ugt i64 1, %"$gasrem_447" + br i1 %"$gascmp_448", label %"$out_of_gas_449", label %"$have_gas_450" + +"$out_of_gas_449": ; preds = %"$have_gas_445" + call void @_out_of_gas() + br label %"$have_gas_450" + +"$have_gas_450": ; preds = %"$out_of_gas_449", %"$have_gas_445" + %"$consume_451" = sub i64 %"$gasrem_447", 1 + store i64 %"$consume_451", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %zero + %"$gasrem_452" = load i64, i64* @_gasrem + %"$gascmp_453" = icmp ugt i64 1, %"$gasrem_452" + br i1 %"$gascmp_453", label %"$out_of_gas_454", label %"$have_gas_455" + +"$out_of_gas_454": ; preds = %"$have_gas_450" + call void @_out_of_gas() + br label %"$have_gas_455" + +"$have_gas_455": ; preds = %"$out_of_gas_454", %"$have_gas_450" + %"$consume_456" = sub i64 %"$gasrem_452", 1 + store i64 %"$consume_456", i64* @_gasrem %one = alloca %Uint32 + %"$gasrem_457" = load i64, i64* @_gasrem + %"$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_455" + call void @_out_of_gas() + br label %"$have_gas_460" + +"$have_gas_460": ; preds = %"$out_of_gas_459", %"$have_gas_455" + %"$consume_461" = sub i64 %"$gasrem_457", 1 + store i64 %"$consume_461", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %one + %"$gasrem_462" = load i64, i64* @_gasrem + %"$gascmp_463" = icmp ugt i64 1, %"$gasrem_462" + br i1 %"$gascmp_463", label %"$out_of_gas_464", label %"$have_gas_465" + +"$out_of_gas_464": ; preds = %"$have_gas_460" + call void @_out_of_gas() + br label %"$have_gas_465" + +"$have_gas_465": ; preds = %"$out_of_gas_464", %"$have_gas_460" + %"$consume_466" = sub i64 %"$gasrem_462", 1 + store i64 %"$consume_466", i64* @_gasrem %add1 = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$$fundef_69_envp_297_load" = load i8*, i8** @_execptr - %"$$fundef_69_envp_297_salloc" = call i8* @_salloc(i8* %"$$fundef_69_envp_297_load", i64 4) - %"$$fundef_69_envp_297" = bitcast i8* %"$$fundef_69_envp_297_salloc" to %"$$fundef_69_env_104"* - %"$$fundef_69_env_voidp_299" = bitcast %"$$fundef_69_env_104"* %"$$fundef_69_envp_297" to i8* - %"$$fundef_69_cloval_300" = insertvalue { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_69_env_104"*, %Uint32)* @"$fundef_69" to %Uint32 (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_69_env_voidp_299", 1 - %"$$fundef_69_env_one_301" = getelementptr inbounds %"$$fundef_69_env_104", %"$$fundef_69_env_104"* %"$$fundef_69_envp_297", i32 0, i32 0 - %"$one_302" = load %Uint32, %Uint32* %one - store %Uint32 %"$one_302", %Uint32* %"$$fundef_69_env_one_301" - store { %Uint32 (i8*, %Uint32)*, i8* } %"$$fundef_69_cloval_300", { %Uint32 (i8*, %Uint32)*, i8* }* %add1 + %"$gasrem_467" = load i64, i64* @_gasrem + %"$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_465" + call void @_out_of_gas() + br label %"$have_gas_470" + +"$have_gas_470": ; preds = %"$out_of_gas_469", %"$have_gas_465" + %"$consume_471" = sub i64 %"$gasrem_467", 1 + store i64 %"$consume_471", i64* @_gasrem + %"$$fundef_69_envp_472_load" = load i8*, i8** @_execptr + %"$$fundef_69_envp_472_salloc" = call i8* @_salloc(i8* %"$$fundef_69_envp_472_load", i64 4) + %"$$fundef_69_envp_472" = bitcast i8* %"$$fundef_69_envp_472_salloc" to %"$$fundef_69_env_104"* + %"$$fundef_69_env_voidp_474" = bitcast %"$$fundef_69_env_104"* %"$$fundef_69_envp_472" to i8* + %"$$fundef_69_cloval_475" = insertvalue { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_69_env_104"*, %Uint32)* @"$fundef_69" to %Uint32 (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_69_env_voidp_474", 1 + %"$$fundef_69_env_one_476" = getelementptr inbounds %"$$fundef_69_env_104", %"$$fundef_69_env_104"* %"$$fundef_69_envp_472", i32 0, i32 0 + %"$one_477" = load %Uint32, %Uint32* %one + store %Uint32 %"$one_477", %Uint32* %"$$fundef_69_env_one_476" + store { %Uint32 (i8*, %Uint32)*, i8* } %"$$fundef_69_cloval_475", { %Uint32 (i8*, %Uint32)*, i8* }* %add1 + %"$gasrem_478" = load i64, i64* @_gasrem + %"$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_470" + call void @_out_of_gas() + br label %"$have_gas_481" + +"$have_gas_481": ; preds = %"$out_of_gas_480", %"$have_gas_470" + %"$consume_482" = sub i64 %"$gasrem_478", 1 + store i64 %"$consume_482", i64* @_gasrem %"$c_15" = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$c_fptr_303" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1, 0 - %"$c_envptr_304" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1, 1 - %"$add1_305" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %add1 - %"$c_call_306" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$c_fptr_303"(i8* %"$c_envptr_304", { %Uint32 (i8*, %Uint32)*, i8* } %"$add1_305") - store { %Uint32 (i8*, %Uint32)*, i8* } %"$c_call_306", { %Uint32 (i8*, %Uint32)*, i8* }* %"$c_15" + %"$c_fptr_483" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1, 0 + %"$c_envptr_484" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1, 1 + %"$add1_485" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %add1 + %"$c_call_486" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$c_fptr_483"(i8* %"$c_envptr_484", { %Uint32 (i8*, %Uint32)*, i8* } %"$add1_485") + store { %Uint32 (i8*, %Uint32)*, i8* } %"$c_call_486", { %Uint32 (i8*, %Uint32)*, i8* }* %"$c_15" %"$c_16" = alloca %Uint32 - %"$$c_15_307" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$c_15" - %"$$c_15_fptr_308" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$c_15_307", 0 - %"$$c_15_envptr_309" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$c_15_307", 1 - %"$zero_310" = load %Uint32, %Uint32* %zero - %"$$c_15_call_311" = call %Uint32 %"$$c_15_fptr_308"(i8* %"$$c_15_envptr_309", %Uint32 %"$zero_310") - store %Uint32 %"$$c_15_call_311", %Uint32* %"$c_16" - %"$$c_16_312" = load %Uint32, %Uint32* %"$c_16" - store %Uint32 %"$$c_16_312", %Uint32* %"$retval_68" - %"$$retval_68_313" = load %Uint32, %Uint32* %"$retval_68" - ret %Uint32 %"$$retval_68_313" + %"$$c_15_487" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$c_15" + %"$$c_15_fptr_488" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$c_15_487", 0 + %"$$c_15_envptr_489" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$c_15_487", 1 + %"$zero_490" = load %Uint32, %Uint32* %zero + %"$$c_15_call_491" = call %Uint32 %"$$c_15_fptr_488"(i8* %"$$c_15_envptr_489", %Uint32 %"$zero_490") + store %Uint32 %"$$c_15_call_491", %Uint32* %"$c_16" + %"$$c_16_492" = load %Uint32, %Uint32* %"$c_16" + store %Uint32 %"$$c_16_492", %Uint32* %"$retval_68" + %"$$retval_68_493" = load %Uint32, %Uint32* %"$retval_68" + ret %Uint32 %"$$retval_68_493" } define internal { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } @"$fundef_65"(%"$$fundef_65_env_106"* %0, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %1) { entry: - %"$$fundef_65_env_m_289" = getelementptr inbounds %"$$fundef_65_env_106", %"$$fundef_65_env_106"* %0, i32 0, i32 0 - %"$m_envload_290" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_65_env_m_289" + %"$$fundef_65_env_m_429" = getelementptr inbounds %"$$fundef_65_env_106", %"$$fundef_65_env_106"* %0, i32 0, i32 0 + %"$m_envload_430" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_65_env_m_429" %m = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_envload_290", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_envload_430", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m %"$retval_66" = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_431" = load i64, i64* @_gasrem + %"$gascmp_432" = icmp ugt i64 1, %"$gasrem_431" + br i1 %"$gascmp_432", label %"$out_of_gas_433", label %"$have_gas_434" + +"$out_of_gas_433": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_434" + +"$have_gas_434": ; preds = %"$out_of_gas_433", %entry + %"$consume_435" = sub i64 %"$gasrem_431", 1 + store i64 %"$consume_435", i64* @_gasrem %"$n_14" = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - %"$n_fptr_291" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %1, 0 - %"$n_envptr_292" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %1, 1 - %"$m_293" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m - %"$n_call_294" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_fptr_291"(i8* %"$n_envptr_292", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_293") - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_call_294", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$n_14" - %"$$n_14_295" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$n_14" - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$n_14_295", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_66" - %"$$retval_66_296" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_66" - ret { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_66_296" + %"$n_fptr_436" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %1, 0 + %"$n_envptr_437" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %1, 1 + %"$m_438" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m + %"$n_call_439" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_fptr_436"(i8* %"$n_envptr_437", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_438") + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_call_439", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$n_14" + %"$$n_14_440" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$n_14" + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$n_14_440", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_66" + %"$$retval_66_441" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_66" + ret { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_66_441" } define internal { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } @"$fundef_63"(%"$$fundef_63_env_107"* %0, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1) { entry: %"$retval_64" = alloca { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } - %"$$fundef_65_envp_283_load" = load i8*, i8** @_execptr - %"$$fundef_65_envp_283_salloc" = call i8* @_salloc(i8* %"$$fundef_65_envp_283_load", i64 16) - %"$$fundef_65_envp_283" = bitcast i8* %"$$fundef_65_envp_283_salloc" to %"$$fundef_65_env_106"* - %"$$fundef_65_env_voidp_285" = bitcast %"$$fundef_65_env_106"* %"$$fundef_65_envp_283" to i8* - %"$$fundef_65_cloval_286" = insertvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })* bitcast ({ { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_65_env_106"*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })* @"$fundef_65" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*), i8* undef }, i8* %"$$fundef_65_env_voidp_285", 1 - %"$$fundef_65_env_m_287" = getelementptr inbounds %"$$fundef_65_env_106", %"$$fundef_65_env_106"* %"$$fundef_65_envp_283", i32 0, i32 0 - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_65_env_m_287" - store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } %"$$fundef_65_cloval_286", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* }* %"$retval_64" - %"$$retval_64_288" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* }* %"$retval_64" - ret { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } %"$$retval_64_288" + %"$gasrem_418" = load i64, i64* @_gasrem + %"$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 = %entry + call void @_out_of_gas() + br label %"$have_gas_421" + +"$have_gas_421": ; preds = %"$out_of_gas_420", %entry + %"$consume_422" = sub i64 %"$gasrem_418", 1 + store i64 %"$consume_422", i64* @_gasrem + %"$$fundef_65_envp_423_load" = load i8*, i8** @_execptr + %"$$fundef_65_envp_423_salloc" = call i8* @_salloc(i8* %"$$fundef_65_envp_423_load", i64 16) + %"$$fundef_65_envp_423" = bitcast i8* %"$$fundef_65_envp_423_salloc" to %"$$fundef_65_env_106"* + %"$$fundef_65_env_voidp_425" = bitcast %"$$fundef_65_env_106"* %"$$fundef_65_envp_423" to i8* + %"$$fundef_65_cloval_426" = insertvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })* bitcast ({ { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_65_env_106"*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })* @"$fundef_65" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*), i8* undef }, i8* %"$$fundef_65_env_voidp_425", 1 + %"$$fundef_65_env_m_427" = getelementptr inbounds %"$$fundef_65_env_106", %"$$fundef_65_env_106"* %"$$fundef_65_envp_423", i32 0, i32 0 + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_65_env_m_427" + store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } %"$$fundef_65_cloval_426", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* }* %"$retval_64" + %"$$retval_64_428" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* }* %"$retval_64" + ret { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } %"$$retval_64_428" } define internal { %Uint32 (i8*, %Uint32)*, i8* } @"$fundef_61"(%"$$fundef_61_env_108"* %0, { %Uint32 (i8*, %Uint32)*, i8* } %1) { entry: - %"$$fundef_61_env_m_267" = getelementptr inbounds %"$$fundef_61_env_108", %"$$fundef_61_env_108"* %0, i32 0, i32 0 - %"$m_envload_268" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_61_env_m_267" + %"$$fundef_61_env_m_387" = getelementptr inbounds %"$$fundef_61_env_108", %"$$fundef_61_env_108"* %0, i32 0, i32 0 + %"$m_envload_388" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_61_env_m_387" %m = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_envload_268", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m - %"$$fundef_61_env_n_269" = getelementptr inbounds %"$$fundef_61_env_108", %"$$fundef_61_env_108"* %0, i32 0, i32 1 - %"$n_envload_270" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_61_env_n_269" + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_envload_388", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m + %"$$fundef_61_env_n_389" = getelementptr inbounds %"$$fundef_61_env_108", %"$$fundef_61_env_108"* %0, i32 0, i32 1 + %"$n_envload_390" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_61_env_n_389" %n = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_envload_270", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %n + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_envload_390", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %n %"$retval_62" = alloca { %Uint32 (i8*, %Uint32)*, i8* } + %"$gasrem_391" = load i64, i64* @_gasrem + %"$gascmp_392" = icmp ugt i64 1, %"$gasrem_391" + br i1 %"$gascmp_392", label %"$out_of_gas_393", label %"$have_gas_394" + +"$out_of_gas_393": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_394" + +"$have_gas_394": ; preds = %"$out_of_gas_393", %entry + %"$consume_395" = sub i64 %"$gasrem_391", 1 + store i64 %"$consume_395", i64* @_gasrem %add_m = alloca { %Uint32 (i8*, %Uint32)*, i8* } + %"$gasrem_396" = load i64, i64* @_gasrem + %"$gascmp_397" = icmp ugt i64 1, %"$gasrem_396" + br i1 %"$gascmp_397", label %"$out_of_gas_398", label %"$have_gas_399" + +"$out_of_gas_398": ; preds = %"$have_gas_394" + call void @_out_of_gas() + br label %"$have_gas_399" + +"$have_gas_399": ; preds = %"$out_of_gas_398", %"$have_gas_394" + %"$consume_400" = sub i64 %"$gasrem_396", 1 + store i64 %"$consume_400", i64* @_gasrem %"$m_12" = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$m_271" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m - %"$m_fptr_272" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_271", 0 - %"$m_envptr_273" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_271", 1 - %"$m_call_274" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$m_fptr_272"(i8* %"$m_envptr_273", { %Uint32 (i8*, %Uint32)*, i8* } %1) - store { %Uint32 (i8*, %Uint32)*, i8* } %"$m_call_274", { %Uint32 (i8*, %Uint32)*, i8* }* %"$m_12" - %"$$m_12_275" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$m_12" - store { %Uint32 (i8*, %Uint32)*, i8* } %"$$m_12_275", { %Uint32 (i8*, %Uint32)*, i8* }* %add_m + %"$m_401" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m + %"$m_fptr_402" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_401", 0 + %"$m_envptr_403" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_401", 1 + %"$m_call_404" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$m_fptr_402"(i8* %"$m_envptr_403", { %Uint32 (i8*, %Uint32)*, i8* } %1) + store { %Uint32 (i8*, %Uint32)*, i8* } %"$m_call_404", { %Uint32 (i8*, %Uint32)*, i8* }* %"$m_12" + %"$$m_12_405" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$m_12" + store { %Uint32 (i8*, %Uint32)*, i8* } %"$$m_12_405", { %Uint32 (i8*, %Uint32)*, i8* }* %add_m + %"$gasrem_406" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_399" + call void @_out_of_gas() + br label %"$have_gas_409" + +"$have_gas_409": ; preds = %"$out_of_gas_408", %"$have_gas_399" + %"$consume_410" = sub i64 %"$gasrem_406", 1 + store i64 %"$consume_410", i64* @_gasrem %"$n_13" = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$n_276" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %n - %"$n_fptr_277" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_276", 0 - %"$n_envptr_278" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_276", 1 - %"$add_m_279" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %add_m - %"$n_call_280" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$n_fptr_277"(i8* %"$n_envptr_278", { %Uint32 (i8*, %Uint32)*, i8* } %"$add_m_279") - store { %Uint32 (i8*, %Uint32)*, i8* } %"$n_call_280", { %Uint32 (i8*, %Uint32)*, i8* }* %"$n_13" - %"$$n_13_281" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$n_13" - store { %Uint32 (i8*, %Uint32)*, i8* } %"$$n_13_281", { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_62" - %"$$retval_62_282" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_62" - ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_62_282" + %"$n_411" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %n + %"$n_fptr_412" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_411", 0 + %"$n_envptr_413" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_411", 1 + %"$add_m_414" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %add_m + %"$n_call_415" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$n_fptr_412"(i8* %"$n_envptr_413", { %Uint32 (i8*, %Uint32)*, i8* } %"$add_m_414") + store { %Uint32 (i8*, %Uint32)*, i8* } %"$n_call_415", { %Uint32 (i8*, %Uint32)*, i8* }* %"$n_13" + %"$$n_13_416" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$n_13" + store { %Uint32 (i8*, %Uint32)*, i8* } %"$$n_13_416", { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_62" + %"$$retval_62_417" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_62" + ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_62_417" } define internal { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } @"$fundef_59"(%"$$fundef_59_env_109"* %0, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1) { entry: - %"$$fundef_59_env_m_257" = getelementptr inbounds %"$$fundef_59_env_109", %"$$fundef_59_env_109"* %0, i32 0, i32 0 - %"$m_envload_258" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_59_env_m_257" + %"$$fundef_59_env_m_372" = getelementptr inbounds %"$$fundef_59_env_109", %"$$fundef_59_env_109"* %0, i32 0, i32 0 + %"$m_envload_373" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_59_env_m_372" %m = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_envload_258", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_envload_373", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m %"$retval_60" = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - %"$$fundef_61_envp_259_load" = load i8*, i8** @_execptr - %"$$fundef_61_envp_259_salloc" = call i8* @_salloc(i8* %"$$fundef_61_envp_259_load", i64 32) - %"$$fundef_61_envp_259" = bitcast i8* %"$$fundef_61_envp_259_salloc" to %"$$fundef_61_env_108"* - %"$$fundef_61_env_voidp_261" = bitcast %"$$fundef_61_env_108"* %"$$fundef_61_envp_259" to i8* - %"$$fundef_61_cloval_262" = insertvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })* bitcast ({ %Uint32 (i8*, %Uint32)*, i8* } (%"$$fundef_61_env_108"*, { %Uint32 (i8*, %Uint32)*, i8* })* @"$fundef_61" to { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*), i8* undef }, i8* %"$$fundef_61_env_voidp_261", 1 - %"$$fundef_61_env_m_263" = getelementptr inbounds %"$$fundef_61_env_108", %"$$fundef_61_env_108"* %"$$fundef_61_envp_259", i32 0, i32 0 - %"$m_264" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_264", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_61_env_m_263" - %"$$fundef_61_env_n_265" = getelementptr inbounds %"$$fundef_61_env_108", %"$$fundef_61_env_108"* %"$$fundef_61_envp_259", i32 0, i32 1 - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_61_env_n_265" - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$fundef_61_cloval_262", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_60" - %"$$retval_60_266" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_60" - ret { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_60_266" + %"$gasrem_374" = load i64, i64* @_gasrem + %"$gascmp_375" = icmp ugt i64 1, %"$gasrem_374" + br i1 %"$gascmp_375", label %"$out_of_gas_376", label %"$have_gas_377" + +"$out_of_gas_376": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_377" + +"$have_gas_377": ; preds = %"$out_of_gas_376", %entry + %"$consume_378" = sub i64 %"$gasrem_374", 1 + store i64 %"$consume_378", i64* @_gasrem + %"$$fundef_61_envp_379_load" = load i8*, i8** @_execptr + %"$$fundef_61_envp_379_salloc" = call i8* @_salloc(i8* %"$$fundef_61_envp_379_load", i64 32) + %"$$fundef_61_envp_379" = bitcast i8* %"$$fundef_61_envp_379_salloc" to %"$$fundef_61_env_108"* + %"$$fundef_61_env_voidp_381" = bitcast %"$$fundef_61_env_108"* %"$$fundef_61_envp_379" to i8* + %"$$fundef_61_cloval_382" = insertvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })* bitcast ({ %Uint32 (i8*, %Uint32)*, i8* } (%"$$fundef_61_env_108"*, { %Uint32 (i8*, %Uint32)*, i8* })* @"$fundef_61" to { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*), i8* undef }, i8* %"$$fundef_61_env_voidp_381", 1 + %"$$fundef_61_env_m_383" = getelementptr inbounds %"$$fundef_61_env_108", %"$$fundef_61_env_108"* %"$$fundef_61_envp_379", i32 0, i32 0 + %"$m_384" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_384", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_61_env_m_383" + %"$$fundef_61_env_n_385" = getelementptr inbounds %"$$fundef_61_env_108", %"$$fundef_61_env_108"* %"$$fundef_61_envp_379", i32 0, i32 1 + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_61_env_n_385" + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$fundef_61_cloval_382", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_60" + %"$$retval_60_386" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_60" + ret { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_60_386" } define internal { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } @"$fundef_57"(%"$$fundef_57_env_110"* %0, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1) { entry: %"$retval_58" = alloca { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } - %"$$fundef_59_envp_251_load" = load i8*, i8** @_execptr - %"$$fundef_59_envp_251_salloc" = call i8* @_salloc(i8* %"$$fundef_59_envp_251_load", i64 16) - %"$$fundef_59_envp_251" = bitcast i8* %"$$fundef_59_envp_251_salloc" to %"$$fundef_59_env_109"* - %"$$fundef_59_env_voidp_253" = bitcast %"$$fundef_59_env_109"* %"$$fundef_59_envp_251" to i8* - %"$$fundef_59_cloval_254" = insertvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })* bitcast ({ { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_59_env_109"*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })* @"$fundef_59" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*), i8* undef }, i8* %"$$fundef_59_env_voidp_253", 1 - %"$$fundef_59_env_m_255" = getelementptr inbounds %"$$fundef_59_env_109", %"$$fundef_59_env_109"* %"$$fundef_59_envp_251", i32 0, i32 0 - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_59_env_m_255" - store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$fundef_59_cloval_254", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$retval_58" - %"$$retval_58_256" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$retval_58" - ret { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$retval_58_256" + %"$gasrem_361" = load i64, i64* @_gasrem + %"$gascmp_362" = icmp ugt i64 1, %"$gasrem_361" + br i1 %"$gascmp_362", label %"$out_of_gas_363", label %"$have_gas_364" + +"$out_of_gas_363": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_364" + +"$have_gas_364": ; preds = %"$out_of_gas_363", %entry + %"$consume_365" = sub i64 %"$gasrem_361", 1 + store i64 %"$consume_365", i64* @_gasrem + %"$$fundef_59_envp_366_load" = load i8*, i8** @_execptr + %"$$fundef_59_envp_366_salloc" = call i8* @_salloc(i8* %"$$fundef_59_envp_366_load", i64 16) + %"$$fundef_59_envp_366" = bitcast i8* %"$$fundef_59_envp_366_salloc" to %"$$fundef_59_env_109"* + %"$$fundef_59_env_voidp_368" = bitcast %"$$fundef_59_env_109"* %"$$fundef_59_envp_366" to i8* + %"$$fundef_59_cloval_369" = insertvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })* bitcast ({ { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_59_env_109"*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })* @"$fundef_59" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*), i8* undef }, i8* %"$$fundef_59_env_voidp_368", 1 + %"$$fundef_59_env_m_370" = getelementptr inbounds %"$$fundef_59_env_109", %"$$fundef_59_env_109"* %"$$fundef_59_envp_366", i32 0, i32 0 + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_59_env_m_370" + store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$fundef_59_cloval_369", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$retval_58" + %"$$retval_58_371" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$retval_58" + ret { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$retval_58_371" } define internal %Uint32 @"$fundef_55"(%"$$fundef_55_env_111"* %0, %Uint32 %1) { entry: - %"$$fundef_55_env_m_223" = getelementptr inbounds %"$$fundef_55_env_111", %"$$fundef_55_env_111"* %0, i32 0, i32 0 - %"$m_envload_224" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_55_env_m_223" + %"$$fundef_55_env_m_318" = getelementptr inbounds %"$$fundef_55_env_111", %"$$fundef_55_env_111"* %0, i32 0, i32 0 + %"$m_envload_319" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_55_env_m_318" %m = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_envload_224", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m - %"$$fundef_55_env_n_225" = getelementptr inbounds %"$$fundef_55_env_111", %"$$fundef_55_env_111"* %0, i32 0, i32 1 - %"$n_envload_226" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_55_env_n_225" + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_envload_319", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m + %"$$fundef_55_env_n_320" = getelementptr inbounds %"$$fundef_55_env_111", %"$$fundef_55_env_111"* %0, i32 0, i32 1 + %"$n_envload_321" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_55_env_n_320" %n = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_envload_226", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %n - %"$$fundef_55_env_s_227" = getelementptr inbounds %"$$fundef_55_env_111", %"$$fundef_55_env_111"* %0, i32 0, i32 2 - %"$s_envload_228" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_55_env_s_227" + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_envload_321", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %n + %"$$fundef_55_env_s_322" = getelementptr inbounds %"$$fundef_55_env_111", %"$$fundef_55_env_111"* %0, i32 0, i32 2 + %"$s_envload_323" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_55_env_s_322" %s = alloca { %Uint32 (i8*, %Uint32)*, i8* } - store { %Uint32 (i8*, %Uint32)*, i8* } %"$s_envload_228", { %Uint32 (i8*, %Uint32)*, i8* }* %s + store { %Uint32 (i8*, %Uint32)*, i8* } %"$s_envload_323", { %Uint32 (i8*, %Uint32)*, i8* }* %s %"$retval_56" = alloca %Uint32 + %"$gasrem_324" = load i64, i64* @_gasrem + %"$gascmp_325" = icmp ugt i64 1, %"$gasrem_324" + br i1 %"$gascmp_325", label %"$out_of_gas_326", label %"$have_gas_327" + +"$out_of_gas_326": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_327" + +"$have_gas_327": ; preds = %"$out_of_gas_326", %entry + %"$consume_328" = sub i64 %"$gasrem_324", 1 + store i64 %"$consume_328", i64* @_gasrem %nsz = alloca %Uint32 + %"$gasrem_329" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_327" + call void @_out_of_gas() + br label %"$have_gas_332" + +"$have_gas_332": ; preds = %"$out_of_gas_331", %"$have_gas_327" + %"$consume_333" = sub i64 %"$gasrem_329", 1 + store i64 %"$consume_333", i64* @_gasrem %"$n_8" = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$n_229" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %n - %"$n_fptr_230" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_229", 0 - %"$n_envptr_231" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_229", 1 - %"$s_232" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s - %"$n_call_233" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$n_fptr_230"(i8* %"$n_envptr_231", { %Uint32 (i8*, %Uint32)*, i8* } %"$s_232") - store { %Uint32 (i8*, %Uint32)*, i8* } %"$n_call_233", { %Uint32 (i8*, %Uint32)*, i8* }* %"$n_8" + %"$n_334" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %n + %"$n_fptr_335" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_334", 0 + %"$n_envptr_336" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_334", 1 + %"$s_337" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s + %"$n_call_338" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$n_fptr_335"(i8* %"$n_envptr_336", { %Uint32 (i8*, %Uint32)*, i8* } %"$s_337") + store { %Uint32 (i8*, %Uint32)*, i8* } %"$n_call_338", { %Uint32 (i8*, %Uint32)*, i8* }* %"$n_8" %"$n_9" = alloca %Uint32 - %"$$n_8_234" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$n_8" - %"$$n_8_fptr_235" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$n_8_234", 0 - %"$$n_8_envptr_236" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$n_8_234", 1 - %"$$n_8_call_237" = call %Uint32 %"$$n_8_fptr_235"(i8* %"$$n_8_envptr_236", %Uint32 %1) - store %Uint32 %"$$n_8_call_237", %Uint32* %"$n_9" - %"$$n_9_238" = load %Uint32, %Uint32* %"$n_9" - store %Uint32 %"$$n_9_238", %Uint32* %nsz + %"$$n_8_339" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$n_8" + %"$$n_8_fptr_340" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$n_8_339", 0 + %"$$n_8_envptr_341" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$n_8_339", 1 + %"$$n_8_call_342" = call %Uint32 %"$$n_8_fptr_340"(i8* %"$$n_8_envptr_341", %Uint32 %1) + store %Uint32 %"$$n_8_call_342", %Uint32* %"$n_9" + %"$$n_9_343" = load %Uint32, %Uint32* %"$n_9" + store %Uint32 %"$$n_9_343", %Uint32* %nsz + %"$gasrem_344" = load i64, i64* @_gasrem + %"$gascmp_345" = icmp ugt i64 1, %"$gasrem_344" + br i1 %"$gascmp_345", label %"$out_of_gas_346", label %"$have_gas_347" + +"$out_of_gas_346": ; preds = %"$have_gas_332" + call void @_out_of_gas() + br label %"$have_gas_347" + +"$have_gas_347": ; preds = %"$out_of_gas_346", %"$have_gas_332" + %"$consume_348" = sub i64 %"$gasrem_344", 1 + store i64 %"$consume_348", i64* @_gasrem %"$m_10" = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$m_239" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m - %"$m_fptr_240" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_239", 0 - %"$m_envptr_241" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_239", 1 - %"$s_242" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s - %"$m_call_243" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$m_fptr_240"(i8* %"$m_envptr_241", { %Uint32 (i8*, %Uint32)*, i8* } %"$s_242") - store { %Uint32 (i8*, %Uint32)*, i8* } %"$m_call_243", { %Uint32 (i8*, %Uint32)*, i8* }* %"$m_10" + %"$m_349" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m + %"$m_fptr_350" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_349", 0 + %"$m_envptr_351" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_349", 1 + %"$s_352" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s + %"$m_call_353" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$m_fptr_350"(i8* %"$m_envptr_351", { %Uint32 (i8*, %Uint32)*, i8* } %"$s_352") + store { %Uint32 (i8*, %Uint32)*, i8* } %"$m_call_353", { %Uint32 (i8*, %Uint32)*, i8* }* %"$m_10" %"$m_11" = alloca %Uint32 - %"$$m_10_244" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$m_10" - %"$$m_10_fptr_245" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$m_10_244", 0 - %"$$m_10_envptr_246" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$m_10_244", 1 - %"$nsz_247" = load %Uint32, %Uint32* %nsz - %"$$m_10_call_248" = call %Uint32 %"$$m_10_fptr_245"(i8* %"$$m_10_envptr_246", %Uint32 %"$nsz_247") - store %Uint32 %"$$m_10_call_248", %Uint32* %"$m_11" - %"$$m_11_249" = load %Uint32, %Uint32* %"$m_11" - store %Uint32 %"$$m_11_249", %Uint32* %"$retval_56" - %"$$retval_56_250" = load %Uint32, %Uint32* %"$retval_56" - ret %Uint32 %"$$retval_56_250" + %"$$m_10_354" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$m_10" + %"$$m_10_fptr_355" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$m_10_354", 0 + %"$$m_10_envptr_356" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$$m_10_354", 1 + %"$nsz_357" = load %Uint32, %Uint32* %nsz + %"$$m_10_call_358" = call %Uint32 %"$$m_10_fptr_355"(i8* %"$$m_10_envptr_356", %Uint32 %"$nsz_357") + store %Uint32 %"$$m_10_call_358", %Uint32* %"$m_11" + %"$$m_11_359" = load %Uint32, %Uint32* %"$m_11" + store %Uint32 %"$$m_11_359", %Uint32* %"$retval_56" + %"$$retval_56_360" = load %Uint32, %Uint32* %"$retval_56" + ret %Uint32 %"$$retval_56_360" } define internal { %Uint32 (i8*, %Uint32)*, i8* } @"$fundef_53"(%"$$fundef_53_env_112"* %0, { %Uint32 (i8*, %Uint32)*, i8* } %1) { entry: - %"$$fundef_53_env_m_209" = getelementptr inbounds %"$$fundef_53_env_112", %"$$fundef_53_env_112"* %0, i32 0, i32 0 - %"$m_envload_210" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_53_env_m_209" + %"$$fundef_53_env_m_299" = getelementptr inbounds %"$$fundef_53_env_112", %"$$fundef_53_env_112"* %0, i32 0, i32 0 + %"$m_envload_300" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_53_env_m_299" %m = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_envload_210", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m - %"$$fundef_53_env_n_211" = getelementptr inbounds %"$$fundef_53_env_112", %"$$fundef_53_env_112"* %0, i32 0, i32 1 - %"$n_envload_212" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_53_env_n_211" + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_envload_300", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m + %"$$fundef_53_env_n_301" = getelementptr inbounds %"$$fundef_53_env_112", %"$$fundef_53_env_112"* %0, i32 0, i32 1 + %"$n_envload_302" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_53_env_n_301" %n = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_envload_212", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %n + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_envload_302", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %n %"$retval_54" = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$$fundef_55_envp_213_load" = load i8*, i8** @_execptr - %"$$fundef_55_envp_213_salloc" = call i8* @_salloc(i8* %"$$fundef_55_envp_213_load", i64 48) - %"$$fundef_55_envp_213" = bitcast i8* %"$$fundef_55_envp_213_salloc" to %"$$fundef_55_env_111"* - %"$$fundef_55_env_voidp_215" = bitcast %"$$fundef_55_env_111"* %"$$fundef_55_envp_213" to i8* - %"$$fundef_55_cloval_216" = insertvalue { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_55_env_111"*, %Uint32)* @"$fundef_55" to %Uint32 (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_55_env_voidp_215", 1 - %"$$fundef_55_env_m_217" = getelementptr inbounds %"$$fundef_55_env_111", %"$$fundef_55_env_111"* %"$$fundef_55_envp_213", i32 0, i32 0 - %"$m_218" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_218", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_55_env_m_217" - %"$$fundef_55_env_n_219" = getelementptr inbounds %"$$fundef_55_env_111", %"$$fundef_55_env_111"* %"$$fundef_55_envp_213", i32 0, i32 1 - %"$n_220" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %n - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_220", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_55_env_n_219" - %"$$fundef_55_env_s_221" = getelementptr inbounds %"$$fundef_55_env_111", %"$$fundef_55_env_111"* %"$$fundef_55_envp_213", i32 0, i32 2 - store { %Uint32 (i8*, %Uint32)*, i8* } %1, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_55_env_s_221" - store { %Uint32 (i8*, %Uint32)*, i8* } %"$$fundef_55_cloval_216", { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_54" - %"$$retval_54_222" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_54" - ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_54_222" + %"$gasrem_303" = load i64, i64* @_gasrem + %"$gascmp_304" = icmp ugt i64 1, %"$gasrem_303" + br i1 %"$gascmp_304", label %"$out_of_gas_305", label %"$have_gas_306" + +"$out_of_gas_305": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_306" + +"$have_gas_306": ; preds = %"$out_of_gas_305", %entry + %"$consume_307" = sub i64 %"$gasrem_303", 1 + store i64 %"$consume_307", i64* @_gasrem + %"$$fundef_55_envp_308_load" = load i8*, i8** @_execptr + %"$$fundef_55_envp_308_salloc" = call i8* @_salloc(i8* %"$$fundef_55_envp_308_load", i64 48) + %"$$fundef_55_envp_308" = bitcast i8* %"$$fundef_55_envp_308_salloc" to %"$$fundef_55_env_111"* + %"$$fundef_55_env_voidp_310" = bitcast %"$$fundef_55_env_111"* %"$$fundef_55_envp_308" to i8* + %"$$fundef_55_cloval_311" = insertvalue { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_55_env_111"*, %Uint32)* @"$fundef_55" to %Uint32 (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_55_env_voidp_310", 1 + %"$$fundef_55_env_m_312" = getelementptr inbounds %"$$fundef_55_env_111", %"$$fundef_55_env_111"* %"$$fundef_55_envp_308", i32 0, i32 0 + %"$m_313" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_313", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_55_env_m_312" + %"$$fundef_55_env_n_314" = getelementptr inbounds %"$$fundef_55_env_111", %"$$fundef_55_env_111"* %"$$fundef_55_envp_308", i32 0, i32 1 + %"$n_315" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %n + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$n_315", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_55_env_n_314" + %"$$fundef_55_env_s_316" = getelementptr inbounds %"$$fundef_55_env_111", %"$$fundef_55_env_111"* %"$$fundef_55_envp_308", i32 0, i32 2 + store { %Uint32 (i8*, %Uint32)*, i8* } %1, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_55_env_s_316" + store { %Uint32 (i8*, %Uint32)*, i8* } %"$$fundef_55_cloval_311", { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_54" + %"$$retval_54_317" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_54" + ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_54_317" } define internal { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } @"$fundef_51"(%"$$fundef_51_env_113"* %0, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1) { entry: - %"$$fundef_51_env_m_199" = getelementptr inbounds %"$$fundef_51_env_113", %"$$fundef_51_env_113"* %0, i32 0, i32 0 - %"$m_envload_200" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_51_env_m_199" + %"$$fundef_51_env_m_284" = getelementptr inbounds %"$$fundef_51_env_113", %"$$fundef_51_env_113"* %0, i32 0, i32 0 + %"$m_envload_285" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_51_env_m_284" %m = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_envload_200", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_envload_285", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m %"$retval_52" = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - %"$$fundef_53_envp_201_load" = load i8*, i8** @_execptr - %"$$fundef_53_envp_201_salloc" = call i8* @_salloc(i8* %"$$fundef_53_envp_201_load", i64 32) - %"$$fundef_53_envp_201" = bitcast i8* %"$$fundef_53_envp_201_salloc" to %"$$fundef_53_env_112"* - %"$$fundef_53_env_voidp_203" = bitcast %"$$fundef_53_env_112"* %"$$fundef_53_envp_201" to i8* - %"$$fundef_53_cloval_204" = insertvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })* bitcast ({ %Uint32 (i8*, %Uint32)*, i8* } (%"$$fundef_53_env_112"*, { %Uint32 (i8*, %Uint32)*, i8* })* @"$fundef_53" to { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*), i8* undef }, i8* %"$$fundef_53_env_voidp_203", 1 - %"$$fundef_53_env_m_205" = getelementptr inbounds %"$$fundef_53_env_112", %"$$fundef_53_env_112"* %"$$fundef_53_envp_201", i32 0, i32 0 - %"$m_206" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_206", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_53_env_m_205" - %"$$fundef_53_env_n_207" = getelementptr inbounds %"$$fundef_53_env_112", %"$$fundef_53_env_112"* %"$$fundef_53_envp_201", i32 0, i32 1 - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_53_env_n_207" - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$fundef_53_cloval_204", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_52" - %"$$retval_52_208" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_52" - ret { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_52_208" + %"$gasrem_286" = load i64, i64* @_gasrem + %"$gascmp_287" = icmp ugt i64 1, %"$gasrem_286" + br i1 %"$gascmp_287", label %"$out_of_gas_288", label %"$have_gas_289" + +"$out_of_gas_288": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_289" + +"$have_gas_289": ; preds = %"$out_of_gas_288", %entry + %"$consume_290" = sub i64 %"$gasrem_286", 1 + store i64 %"$consume_290", i64* @_gasrem + %"$$fundef_53_envp_291_load" = load i8*, i8** @_execptr + %"$$fundef_53_envp_291_salloc" = call i8* @_salloc(i8* %"$$fundef_53_envp_291_load", i64 32) + %"$$fundef_53_envp_291" = bitcast i8* %"$$fundef_53_envp_291_salloc" to %"$$fundef_53_env_112"* + %"$$fundef_53_env_voidp_293" = bitcast %"$$fundef_53_env_112"* %"$$fundef_53_envp_291" to i8* + %"$$fundef_53_cloval_294" = insertvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })* bitcast ({ %Uint32 (i8*, %Uint32)*, i8* } (%"$$fundef_53_env_112"*, { %Uint32 (i8*, %Uint32)*, i8* })* @"$fundef_53" to { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*), i8* undef }, i8* %"$$fundef_53_env_voidp_293", 1 + %"$$fundef_53_env_m_295" = getelementptr inbounds %"$$fundef_53_env_112", %"$$fundef_53_env_112"* %"$$fundef_53_envp_291", i32 0, i32 0 + %"$m_296" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %m + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$m_296", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_53_env_m_295" + %"$$fundef_53_env_n_297" = getelementptr inbounds %"$$fundef_53_env_112", %"$$fundef_53_env_112"* %"$$fundef_53_envp_291", i32 0, i32 1 + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_53_env_n_297" + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$fundef_53_cloval_294", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_52" + %"$$retval_52_298" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_52" + ret { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_52_298" } define internal { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } @"$fundef_49"(%"$$fundef_49_env_114"* %0, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1) { entry: %"$retval_50" = alloca { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } - %"$$fundef_51_envp_193_load" = load i8*, i8** @_execptr - %"$$fundef_51_envp_193_salloc" = call i8* @_salloc(i8* %"$$fundef_51_envp_193_load", i64 16) - %"$$fundef_51_envp_193" = bitcast i8* %"$$fundef_51_envp_193_salloc" to %"$$fundef_51_env_113"* - %"$$fundef_51_env_voidp_195" = bitcast %"$$fundef_51_env_113"* %"$$fundef_51_envp_193" to i8* - %"$$fundef_51_cloval_196" = insertvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })* bitcast ({ { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_51_env_113"*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })* @"$fundef_51" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*), i8* undef }, i8* %"$$fundef_51_env_voidp_195", 1 - %"$$fundef_51_env_m_197" = getelementptr inbounds %"$$fundef_51_env_113", %"$$fundef_51_env_113"* %"$$fundef_51_envp_193", i32 0, i32 0 - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_51_env_m_197" - store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$fundef_51_cloval_196", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$retval_50" - %"$$retval_50_198" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$retval_50" - ret { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$retval_50_198" + %"$gasrem_273" = load i64, i64* @_gasrem + %"$gascmp_274" = icmp ugt i64 1, %"$gasrem_273" + br i1 %"$gascmp_274", label %"$out_of_gas_275", label %"$have_gas_276" + +"$out_of_gas_275": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_276" + +"$have_gas_276": ; preds = %"$out_of_gas_275", %entry + %"$consume_277" = sub i64 %"$gasrem_273", 1 + store i64 %"$consume_277", i64* @_gasrem + %"$$fundef_51_envp_278_load" = load i8*, i8** @_execptr + %"$$fundef_51_envp_278_salloc" = call i8* @_salloc(i8* %"$$fundef_51_envp_278_load", i64 16) + %"$$fundef_51_envp_278" = bitcast i8* %"$$fundef_51_envp_278_salloc" to %"$$fundef_51_env_113"* + %"$$fundef_51_env_voidp_280" = bitcast %"$$fundef_51_env_113"* %"$$fundef_51_envp_278" to i8* + %"$$fundef_51_cloval_281" = insertvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })* bitcast ({ { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_51_env_113"*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })* @"$fundef_51" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*), i8* undef }, i8* %"$$fundef_51_env_voidp_280", 1 + %"$$fundef_51_env_m_282" = getelementptr inbounds %"$$fundef_51_env_113", %"$$fundef_51_env_113"* %"$$fundef_51_envp_278", i32 0, i32 0 + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_51_env_m_282" + store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$fundef_51_cloval_281", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$retval_50" + %"$$retval_50_283" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$retval_50" + ret { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$retval_50_283" } define internal { %Uint32 (i8*, %Uint32)*, i8* } @"$fundef_47"(%"$$fundef_47_env_115"* %0, { %Uint32 (i8*, %Uint32)*, i8* } %1) { entry: - %"$$fundef_47_env_s_173" = getelementptr inbounds %"$$fundef_47_env_115", %"$$fundef_47_env_115"* %0, i32 0, i32 0 - %"$s_envload_174" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_47_env_s_173" + %"$$fundef_47_env_s_228" = getelementptr inbounds %"$$fundef_47_env_115", %"$$fundef_47_env_115"* %0, i32 0, i32 0 + %"$s_envload_229" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_47_env_s_228" %s = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$s_envload_174", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %s + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$s_envload_229", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %s %"$retval_48" = alloca { %Uint32 (i8*, %Uint32)*, i8* } + %"$gasrem_230" = load i64, i64* @_gasrem + %"$gascmp_231" = icmp ugt i64 1, %"$gasrem_230" + br i1 %"$gascmp_231", label %"$out_of_gas_232", label %"$have_gas_233" + +"$out_of_gas_232": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_233" + +"$have_gas_233": ; preds = %"$out_of_gas_232", %entry + %"$consume_234" = sub i64 %"$gasrem_230", 1 + store i64 %"$consume_234", i64* @_gasrem %sz = alloca { %Uint32 (i8*, %Uint32)*, i8* } + %"$gasrem_235" = load i64, i64* @_gasrem + %"$gascmp_236" = icmp ugt i64 1, %"$gasrem_235" + br i1 %"$gascmp_236", label %"$out_of_gas_237", label %"$have_gas_238" + +"$out_of_gas_237": ; preds = %"$have_gas_233" + call void @_out_of_gas() + br label %"$have_gas_238" + +"$have_gas_238": ; preds = %"$out_of_gas_237", %"$have_gas_233" + %"$consume_239" = sub i64 %"$gasrem_235", 1 + store i64 %"$consume_239", i64* @_gasrem %"$s_5" = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$s_175" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %s - %"$s_fptr_176" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$s_175", 0 - %"$s_envptr_177" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$s_175", 1 - %"$s_call_178" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$s_fptr_176"(i8* %"$s_envptr_177", { %Uint32 (i8*, %Uint32)*, i8* } %1) - store { %Uint32 (i8*, %Uint32)*, i8* } %"$s_call_178", { %Uint32 (i8*, %Uint32)*, i8* }* %"$s_5" - %"$$s_5_179" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$s_5" - store { %Uint32 (i8*, %Uint32)*, i8* } %"$$s_5_179", { %Uint32 (i8*, %Uint32)*, i8* }* %sz + %"$s_240" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %s + %"$s_fptr_241" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$s_240", 0 + %"$s_envptr_242" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$s_240", 1 + %"$s_call_243" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$s_fptr_241"(i8* %"$s_envptr_242", { %Uint32 (i8*, %Uint32)*, i8* } %1) + store { %Uint32 (i8*, %Uint32)*, i8* } %"$s_call_243", { %Uint32 (i8*, %Uint32)*, i8* }* %"$s_5" + %"$$s_5_244" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$s_5" + store { %Uint32 (i8*, %Uint32)*, i8* } %"$$s_5_244", { %Uint32 (i8*, %Uint32)*, i8* }* %sz + %"$gasrem_245" = load i64, i64* @_gasrem + %"$gascmp_246" = icmp ugt i64 1, %"$gasrem_245" + br i1 %"$gascmp_246", label %"$out_of_gas_247", label %"$have_gas_248" + +"$out_of_gas_247": ; preds = %"$have_gas_238" + call void @_out_of_gas() + br label %"$have_gas_248" + +"$have_gas_248": ; preds = %"$out_of_gas_247", %"$have_gas_238" + %"$consume_249" = sub i64 %"$gasrem_245", 1 + store i64 %"$consume_249", i64* @_gasrem %ssz = alloca { %Uint32 (i8*, %Uint32)*, i8* } + %"$gasrem_250" = load i64, i64* @_gasrem + %"$gascmp_251" = icmp ugt i64 1, %"$gasrem_250" + br i1 %"$gascmp_251", label %"$out_of_gas_252", label %"$have_gas_253" + +"$out_of_gas_252": ; preds = %"$have_gas_248" + call void @_out_of_gas() + br label %"$have_gas_253" + +"$have_gas_253": ; preds = %"$out_of_gas_252", %"$have_gas_248" + %"$consume_254" = sub i64 %"$gasrem_250", 1 + store i64 %"$consume_254", i64* @_gasrem %"$s_6" = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$s_180" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %s - %"$s_fptr_181" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$s_180", 0 - %"$s_envptr_182" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$s_180", 1 - %"$sz_183" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %sz - %"$s_call_184" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$s_fptr_181"(i8* %"$s_envptr_182", { %Uint32 (i8*, %Uint32)*, i8* } %"$sz_183") - store { %Uint32 (i8*, %Uint32)*, i8* } %"$s_call_184", { %Uint32 (i8*, %Uint32)*, i8* }* %"$s_6" - %"$$s_6_185" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$s_6" - store { %Uint32 (i8*, %Uint32)*, i8* } %"$$s_6_185", { %Uint32 (i8*, %Uint32)*, i8* }* %ssz + %"$s_255" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %s + %"$s_fptr_256" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$s_255", 0 + %"$s_envptr_257" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$s_255", 1 + %"$sz_258" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %sz + %"$s_call_259" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$s_fptr_256"(i8* %"$s_envptr_257", { %Uint32 (i8*, %Uint32)*, i8* } %"$sz_258") + store { %Uint32 (i8*, %Uint32)*, i8* } %"$s_call_259", { %Uint32 (i8*, %Uint32)*, i8* }* %"$s_6" + %"$$s_6_260" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$s_6" + store { %Uint32 (i8*, %Uint32)*, i8* } %"$$s_6_260", { %Uint32 (i8*, %Uint32)*, i8* }* %ssz + %"$gasrem_261" = load i64, i64* @_gasrem + %"$gascmp_262" = icmp ugt i64 1, %"$gasrem_261" + br i1 %"$gascmp_262", label %"$out_of_gas_263", label %"$have_gas_264" + +"$out_of_gas_263": ; preds = %"$have_gas_253" + call void @_out_of_gas() + br label %"$have_gas_264" + +"$have_gas_264": ; preds = %"$out_of_gas_263", %"$have_gas_253" + %"$consume_265" = sub i64 %"$gasrem_261", 1 + store i64 %"$consume_265", i64* @_gasrem %"$s_7" = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$s_186" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %s - %"$s_fptr_187" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$s_186", 0 - %"$s_envptr_188" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$s_186", 1 - %"$ssz_189" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %ssz - %"$s_call_190" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$s_fptr_187"(i8* %"$s_envptr_188", { %Uint32 (i8*, %Uint32)*, i8* } %"$ssz_189") - store { %Uint32 (i8*, %Uint32)*, i8* } %"$s_call_190", { %Uint32 (i8*, %Uint32)*, i8* }* %"$s_7" - %"$$s_7_191" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$s_7" - store { %Uint32 (i8*, %Uint32)*, i8* } %"$$s_7_191", { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_48" - %"$$retval_48_192" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_48" - ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_48_192" + %"$s_266" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %s + %"$s_fptr_267" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$s_266", 0 + %"$s_envptr_268" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$s_266", 1 + %"$ssz_269" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %ssz + %"$s_call_270" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$s_fptr_267"(i8* %"$s_envptr_268", { %Uint32 (i8*, %Uint32)*, i8* } %"$ssz_269") + store { %Uint32 (i8*, %Uint32)*, i8* } %"$s_call_270", { %Uint32 (i8*, %Uint32)*, i8* }* %"$s_7" + %"$$s_7_271" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$s_7" + store { %Uint32 (i8*, %Uint32)*, i8* } %"$$s_7_271", { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_48" + %"$$retval_48_272" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_48" + ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_48_272" } define internal { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } @"$fundef_45"(%"$$fundef_45_env_116"* %0, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1) { entry: %"$retval_46" = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - %"$$fundef_47_envp_167_load" = load i8*, i8** @_execptr - %"$$fundef_47_envp_167_salloc" = call i8* @_salloc(i8* %"$$fundef_47_envp_167_load", i64 16) - %"$$fundef_47_envp_167" = bitcast i8* %"$$fundef_47_envp_167_salloc" to %"$$fundef_47_env_115"* - %"$$fundef_47_env_voidp_169" = bitcast %"$$fundef_47_env_115"* %"$$fundef_47_envp_167" to i8* - %"$$fundef_47_cloval_170" = insertvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })* bitcast ({ %Uint32 (i8*, %Uint32)*, i8* } (%"$$fundef_47_env_115"*, { %Uint32 (i8*, %Uint32)*, i8* })* @"$fundef_47" to { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*), i8* undef }, i8* %"$$fundef_47_env_voidp_169", 1 - %"$$fundef_47_env_s_171" = getelementptr inbounds %"$$fundef_47_env_115", %"$$fundef_47_env_115"* %"$$fundef_47_envp_167", i32 0, i32 0 - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_47_env_s_171" - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$fundef_47_cloval_170", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_46" - %"$$retval_46_172" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_46" - ret { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_46_172" + %"$gasrem_217" = load i64, i64* @_gasrem + %"$gascmp_218" = icmp ugt i64 1, %"$gasrem_217" + br i1 %"$gascmp_218", label %"$out_of_gas_219", label %"$have_gas_220" + +"$out_of_gas_219": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_220" + +"$have_gas_220": ; preds = %"$out_of_gas_219", %entry + %"$consume_221" = sub i64 %"$gasrem_217", 1 + store i64 %"$consume_221", i64* @_gasrem + %"$$fundef_47_envp_222_load" = load i8*, i8** @_execptr + %"$$fundef_47_envp_222_salloc" = call i8* @_salloc(i8* %"$$fundef_47_envp_222_load", i64 16) + %"$$fundef_47_envp_222" = bitcast i8* %"$$fundef_47_envp_222_salloc" to %"$$fundef_47_env_115"* + %"$$fundef_47_env_voidp_224" = bitcast %"$$fundef_47_env_115"* %"$$fundef_47_envp_222" to i8* + %"$$fundef_47_cloval_225" = insertvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })* bitcast ({ %Uint32 (i8*, %Uint32)*, i8* } (%"$$fundef_47_env_115"*, { %Uint32 (i8*, %Uint32)*, i8* })* @"$fundef_47" to { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*), i8* undef }, i8* %"$$fundef_47_env_voidp_224", 1 + %"$$fundef_47_env_s_226" = getelementptr inbounds %"$$fundef_47_env_115", %"$$fundef_47_env_115"* %"$$fundef_47_envp_222", i32 0, i32 0 + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %1, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$$fundef_47_env_s_226" + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$fundef_47_cloval_225", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_46" + %"$$retval_46_227" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_46" + ret { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_46_227" } define internal %Uint32 @"$fundef_43"(%"$$fundef_43_env_117"* %0, %Uint32 %1) { entry: - %"$$fundef_43_env_s_147" = getelementptr inbounds %"$$fundef_43_env_117", %"$$fundef_43_env_117"* %0, i32 0, i32 0 - %"$s_envload_148" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_43_env_s_147" + %"$$fundef_43_env_s_172" = getelementptr inbounds %"$$fundef_43_env_117", %"$$fundef_43_env_117"* %0, i32 0, i32 0 + %"$s_envload_173" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_43_env_s_172" %s = alloca { %Uint32 (i8*, %Uint32)*, i8* } - store { %Uint32 (i8*, %Uint32)*, i8* } %"$s_envload_148", { %Uint32 (i8*, %Uint32)*, i8* }* %s + store { %Uint32 (i8*, %Uint32)*, i8* } %"$s_envload_173", { %Uint32 (i8*, %Uint32)*, i8* }* %s %"$retval_44" = alloca %Uint32 + %"$gasrem_174" = load i64, i64* @_gasrem + %"$gascmp_175" = icmp ugt i64 1, %"$gasrem_174" + br i1 %"$gascmp_175", label %"$out_of_gas_176", label %"$have_gas_177" + +"$out_of_gas_176": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_177" + +"$have_gas_177": ; preds = %"$out_of_gas_176", %entry + %"$consume_178" = sub i64 %"$gasrem_174", 1 + store i64 %"$consume_178", i64* @_gasrem %sz = alloca %Uint32 + %"$gasrem_179" = load i64, i64* @_gasrem + %"$gascmp_180" = icmp ugt i64 1, %"$gasrem_179" + br i1 %"$gascmp_180", label %"$out_of_gas_181", label %"$have_gas_182" + +"$out_of_gas_181": ; preds = %"$have_gas_177" + call void @_out_of_gas() + br label %"$have_gas_182" + +"$have_gas_182": ; preds = %"$out_of_gas_181", %"$have_gas_177" + %"$consume_183" = sub i64 %"$gasrem_179", 1 + store i64 %"$consume_183", i64* @_gasrem %"$s_2" = alloca %Uint32 - %"$s_149" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s - %"$s_fptr_150" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_149", 0 - %"$s_envptr_151" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_149", 1 - %"$s_call_152" = call %Uint32 %"$s_fptr_150"(i8* %"$s_envptr_151", %Uint32 %1) - store %Uint32 %"$s_call_152", %Uint32* %"$s_2" - %"$$s_2_153" = load %Uint32, %Uint32* %"$s_2" - store %Uint32 %"$$s_2_153", %Uint32* %sz + %"$s_184" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s + %"$s_fptr_185" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_184", 0 + %"$s_envptr_186" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_184", 1 + %"$s_call_187" = call %Uint32 %"$s_fptr_185"(i8* %"$s_envptr_186", %Uint32 %1) + store %Uint32 %"$s_call_187", %Uint32* %"$s_2" + %"$$s_2_188" = load %Uint32, %Uint32* %"$s_2" + store %Uint32 %"$$s_2_188", %Uint32* %sz + %"$gasrem_189" = load i64, i64* @_gasrem + %"$gascmp_190" = icmp ugt i64 1, %"$gasrem_189" + br i1 %"$gascmp_190", label %"$out_of_gas_191", label %"$have_gas_192" + +"$out_of_gas_191": ; preds = %"$have_gas_182" + call void @_out_of_gas() + br label %"$have_gas_192" + +"$have_gas_192": ; preds = %"$out_of_gas_191", %"$have_gas_182" + %"$consume_193" = sub i64 %"$gasrem_189", 1 + store i64 %"$consume_193", i64* @_gasrem %ssz = alloca %Uint32 + %"$gasrem_194" = load i64, i64* @_gasrem + %"$gascmp_195" = icmp ugt i64 1, %"$gasrem_194" + br i1 %"$gascmp_195", label %"$out_of_gas_196", label %"$have_gas_197" + +"$out_of_gas_196": ; preds = %"$have_gas_192" + call void @_out_of_gas() + br label %"$have_gas_197" + +"$have_gas_197": ; preds = %"$out_of_gas_196", %"$have_gas_192" + %"$consume_198" = sub i64 %"$gasrem_194", 1 + store i64 %"$consume_198", i64* @_gasrem %"$s_3" = alloca %Uint32 - %"$s_154" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s - %"$s_fptr_155" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_154", 0 - %"$s_envptr_156" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_154", 1 - %"$sz_157" = load %Uint32, %Uint32* %sz - %"$s_call_158" = call %Uint32 %"$s_fptr_155"(i8* %"$s_envptr_156", %Uint32 %"$sz_157") - store %Uint32 %"$s_call_158", %Uint32* %"$s_3" - %"$$s_3_159" = load %Uint32, %Uint32* %"$s_3" - store %Uint32 %"$$s_3_159", %Uint32* %ssz + %"$s_199" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s + %"$s_fptr_200" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_199", 0 + %"$s_envptr_201" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_199", 1 + %"$sz_202" = load %Uint32, %Uint32* %sz + %"$s_call_203" = call %Uint32 %"$s_fptr_200"(i8* %"$s_envptr_201", %Uint32 %"$sz_202") + store %Uint32 %"$s_call_203", %Uint32* %"$s_3" + %"$$s_3_204" = load %Uint32, %Uint32* %"$s_3" + store %Uint32 %"$$s_3_204", %Uint32* %ssz + %"$gasrem_205" = load i64, i64* @_gasrem + %"$gascmp_206" = icmp ugt i64 1, %"$gasrem_205" + br i1 %"$gascmp_206", label %"$out_of_gas_207", label %"$have_gas_208" + +"$out_of_gas_207": ; preds = %"$have_gas_197" + call void @_out_of_gas() + br label %"$have_gas_208" + +"$have_gas_208": ; preds = %"$out_of_gas_207", %"$have_gas_197" + %"$consume_209" = sub i64 %"$gasrem_205", 1 + store i64 %"$consume_209", i64* @_gasrem %"$s_4" = alloca %Uint32 - %"$s_160" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s - %"$s_fptr_161" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_160", 0 - %"$s_envptr_162" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_160", 1 - %"$ssz_163" = load %Uint32, %Uint32* %ssz - %"$s_call_164" = call %Uint32 %"$s_fptr_161"(i8* %"$s_envptr_162", %Uint32 %"$ssz_163") - store %Uint32 %"$s_call_164", %Uint32* %"$s_4" - %"$$s_4_165" = load %Uint32, %Uint32* %"$s_4" - store %Uint32 %"$$s_4_165", %Uint32* %"$retval_44" - %"$$retval_44_166" = load %Uint32, %Uint32* %"$retval_44" - ret %Uint32 %"$$retval_44_166" + %"$s_210" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s + %"$s_fptr_211" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_210", 0 + %"$s_envptr_212" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_210", 1 + %"$ssz_213" = load %Uint32, %Uint32* %ssz + %"$s_call_214" = call %Uint32 %"$s_fptr_211"(i8* %"$s_envptr_212", %Uint32 %"$ssz_213") + store %Uint32 %"$s_call_214", %Uint32* %"$s_4" + %"$$s_4_215" = load %Uint32, %Uint32* %"$s_4" + store %Uint32 %"$$s_4_215", %Uint32* %"$retval_44" + %"$$retval_44_216" = load %Uint32, %Uint32* %"$retval_44" + ret %Uint32 %"$$retval_44_216" } define internal { %Uint32 (i8*, %Uint32)*, i8* } @"$fundef_41"(%"$$fundef_41_env_118"* %0, { %Uint32 (i8*, %Uint32)*, i8* } %1) { entry: %"$retval_42" = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$$fundef_43_envp_141_load" = load i8*, i8** @_execptr - %"$$fundef_43_envp_141_salloc" = call i8* @_salloc(i8* %"$$fundef_43_envp_141_load", i64 16) - %"$$fundef_43_envp_141" = bitcast i8* %"$$fundef_43_envp_141_salloc" to %"$$fundef_43_env_117"* - %"$$fundef_43_env_voidp_143" = bitcast %"$$fundef_43_env_117"* %"$$fundef_43_envp_141" to i8* - %"$$fundef_43_cloval_144" = insertvalue { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_43_env_117"*, %Uint32)* @"$fundef_43" to %Uint32 (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_43_env_voidp_143", 1 - %"$$fundef_43_env_s_145" = getelementptr inbounds %"$$fundef_43_env_117", %"$$fundef_43_env_117"* %"$$fundef_43_envp_141", i32 0, i32 0 - store { %Uint32 (i8*, %Uint32)*, i8* } %1, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_43_env_s_145" - store { %Uint32 (i8*, %Uint32)*, i8* } %"$$fundef_43_cloval_144", { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_42" - %"$$retval_42_146" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_42" - ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_42_146" + %"$gasrem_161" = load i64, i64* @_gasrem + %"$gascmp_162" = icmp ugt i64 1, %"$gasrem_161" + br i1 %"$gascmp_162", label %"$out_of_gas_163", label %"$have_gas_164" + +"$out_of_gas_163": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_164" + +"$have_gas_164": ; preds = %"$out_of_gas_163", %entry + %"$consume_165" = sub i64 %"$gasrem_161", 1 + store i64 %"$consume_165", i64* @_gasrem + %"$$fundef_43_envp_166_load" = load i8*, i8** @_execptr + %"$$fundef_43_envp_166_salloc" = call i8* @_salloc(i8* %"$$fundef_43_envp_166_load", i64 16) + %"$$fundef_43_envp_166" = bitcast i8* %"$$fundef_43_envp_166_salloc" to %"$$fundef_43_env_117"* + %"$$fundef_43_env_voidp_168" = bitcast %"$$fundef_43_env_117"* %"$$fundef_43_envp_166" to i8* + %"$$fundef_43_cloval_169" = insertvalue { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_43_env_117"*, %Uint32)* @"$fundef_43" to %Uint32 (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_43_env_voidp_168", 1 + %"$$fundef_43_env_s_170" = getelementptr inbounds %"$$fundef_43_env_117", %"$$fundef_43_env_117"* %"$$fundef_43_envp_166", i32 0, i32 0 + store { %Uint32 (i8*, %Uint32)*, i8* } %1, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_43_env_s_170" + store { %Uint32 (i8*, %Uint32)*, i8* } %"$$fundef_43_cloval_169", { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_42" + %"$$retval_42_171" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_42" + ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_42_171" } define internal %Uint32 @"$fundef_39"(%"$$fundef_39_env_119"* %0, %Uint32 %1) { entry: - %"$$fundef_39_env_s_127" = getelementptr inbounds %"$$fundef_39_env_119", %"$$fundef_39_env_119"* %0, i32 0, i32 0 - %"$s_envload_128" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_39_env_s_127" + %"$$fundef_39_env_s_132" = getelementptr inbounds %"$$fundef_39_env_119", %"$$fundef_39_env_119"* %0, i32 0, i32 0 + %"$s_envload_133" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_39_env_s_132" %s = alloca { %Uint32 (i8*, %Uint32)*, i8* } - store { %Uint32 (i8*, %Uint32)*, i8* } %"$s_envload_128", { %Uint32 (i8*, %Uint32)*, i8* }* %s + store { %Uint32 (i8*, %Uint32)*, i8* } %"$s_envload_133", { %Uint32 (i8*, %Uint32)*, i8* }* %s %"$retval_40" = alloca %Uint32 + %"$gasrem_134" = load i64, i64* @_gasrem + %"$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 = %entry + call void @_out_of_gas() + br label %"$have_gas_137" + +"$have_gas_137": ; preds = %"$out_of_gas_136", %entry + %"$consume_138" = sub i64 %"$gasrem_134", 1 + store i64 %"$consume_138", i64* @_gasrem %sz = alloca %Uint32 + %"$gasrem_139" = load i64, i64* @_gasrem + %"$gascmp_140" = icmp ugt i64 1, %"$gasrem_139" + br i1 %"$gascmp_140", label %"$out_of_gas_141", label %"$have_gas_142" + +"$out_of_gas_141": ; preds = %"$have_gas_137" + call void @_out_of_gas() + br label %"$have_gas_142" + +"$have_gas_142": ; preds = %"$out_of_gas_141", %"$have_gas_137" + %"$consume_143" = sub i64 %"$gasrem_139", 1 + store i64 %"$consume_143", i64* @_gasrem %"$s_0" = alloca %Uint32 - %"$s_129" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s - %"$s_fptr_130" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_129", 0 - %"$s_envptr_131" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_129", 1 - %"$s_call_132" = call %Uint32 %"$s_fptr_130"(i8* %"$s_envptr_131", %Uint32 %1) - store %Uint32 %"$s_call_132", %Uint32* %"$s_0" - %"$$s_0_133" = load %Uint32, %Uint32* %"$s_0" - store %Uint32 %"$$s_0_133", %Uint32* %sz + %"$s_144" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s + %"$s_fptr_145" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_144", 0 + %"$s_envptr_146" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_144", 1 + %"$s_call_147" = call %Uint32 %"$s_fptr_145"(i8* %"$s_envptr_146", %Uint32 %1) + store %Uint32 %"$s_call_147", %Uint32* %"$s_0" + %"$$s_0_148" = load %Uint32, %Uint32* %"$s_0" + store %Uint32 %"$$s_0_148", %Uint32* %sz + %"$gasrem_149" = load i64, i64* @_gasrem + %"$gascmp_150" = icmp ugt i64 1, %"$gasrem_149" + br i1 %"$gascmp_150", label %"$out_of_gas_151", label %"$have_gas_152" + +"$out_of_gas_151": ; preds = %"$have_gas_142" + call void @_out_of_gas() + br label %"$have_gas_152" + +"$have_gas_152": ; preds = %"$out_of_gas_151", %"$have_gas_142" + %"$consume_153" = sub i64 %"$gasrem_149", 1 + store i64 %"$consume_153", i64* @_gasrem %"$s_1" = alloca %Uint32 - %"$s_134" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s - %"$s_fptr_135" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_134", 0 - %"$s_envptr_136" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_134", 1 - %"$sz_137" = load %Uint32, %Uint32* %sz - %"$s_call_138" = call %Uint32 %"$s_fptr_135"(i8* %"$s_envptr_136", %Uint32 %"$sz_137") - store %Uint32 %"$s_call_138", %Uint32* %"$s_1" - %"$$s_1_139" = load %Uint32, %Uint32* %"$s_1" - store %Uint32 %"$$s_1_139", %Uint32* %"$retval_40" - %"$$retval_40_140" = load %Uint32, %Uint32* %"$retval_40" - ret %Uint32 %"$$retval_40_140" + %"$s_154" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %s + %"$s_fptr_155" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_154", 0 + %"$s_envptr_156" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$s_154", 1 + %"$sz_157" = load %Uint32, %Uint32* %sz + %"$s_call_158" = call %Uint32 %"$s_fptr_155"(i8* %"$s_envptr_156", %Uint32 %"$sz_157") + store %Uint32 %"$s_call_158", %Uint32* %"$s_1" + %"$$s_1_159" = load %Uint32, %Uint32* %"$s_1" + store %Uint32 %"$$s_1_159", %Uint32* %"$retval_40" + %"$$retval_40_160" = load %Uint32, %Uint32* %"$retval_40" + ret %Uint32 %"$$retval_40_160" } define internal { %Uint32 (i8*, %Uint32)*, i8* } @"$fundef_37"(%"$$fundef_37_env_120"* %0, { %Uint32 (i8*, %Uint32)*, i8* } %1) { entry: %"$retval_38" = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$$fundef_39_envp_121_load" = load i8*, i8** @_execptr - %"$$fundef_39_envp_121_salloc" = call i8* @_salloc(i8* %"$$fundef_39_envp_121_load", i64 16) - %"$$fundef_39_envp_121" = bitcast i8* %"$$fundef_39_envp_121_salloc" to %"$$fundef_39_env_119"* - %"$$fundef_39_env_voidp_123" = bitcast %"$$fundef_39_env_119"* %"$$fundef_39_envp_121" to i8* - %"$$fundef_39_cloval_124" = insertvalue { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_39_env_119"*, %Uint32)* @"$fundef_39" to %Uint32 (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_39_env_voidp_123", 1 - %"$$fundef_39_env_s_125" = getelementptr inbounds %"$$fundef_39_env_119", %"$$fundef_39_env_119"* %"$$fundef_39_envp_121", i32 0, i32 0 - store { %Uint32 (i8*, %Uint32)*, i8* } %1, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_39_env_s_125" - store { %Uint32 (i8*, %Uint32)*, i8* } %"$$fundef_39_cloval_124", { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_38" - %"$$retval_38_126" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_38" - ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_38_126" + %"$gasrem_121" = load i64, i64* @_gasrem + %"$gascmp_122" = icmp ugt i64 1, %"$gasrem_121" + br i1 %"$gascmp_122", label %"$out_of_gas_123", label %"$have_gas_124" + +"$out_of_gas_123": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_124" + +"$have_gas_124": ; preds = %"$out_of_gas_123", %entry + %"$consume_125" = sub i64 %"$gasrem_121", 1 + store i64 %"$consume_125", i64* @_gasrem + %"$$fundef_39_envp_126_load" = load i8*, i8** @_execptr + %"$$fundef_39_envp_126_salloc" = call i8* @_salloc(i8* %"$$fundef_39_envp_126_load", i64 16) + %"$$fundef_39_envp_126" = bitcast i8* %"$$fundef_39_envp_126_salloc" to %"$$fundef_39_env_119"* + %"$$fundef_39_env_voidp_128" = bitcast %"$$fundef_39_env_119"* %"$$fundef_39_envp_126" to i8* + %"$$fundef_39_cloval_129" = insertvalue { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_39_env_119"*, %Uint32)* @"$fundef_39" to %Uint32 (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_39_env_voidp_128", 1 + %"$$fundef_39_env_s_130" = getelementptr inbounds %"$$fundef_39_env_119", %"$$fundef_39_env_119"* %"$$fundef_39_envp_126", i32 0, i32 0 + store { %Uint32 (i8*, %Uint32)*, i8* } %1, { %Uint32 (i8*, %Uint32)*, i8* }* %"$$fundef_39_env_s_130" + store { %Uint32 (i8*, %Uint32)*, i8* } %"$$fundef_39_cloval_129", { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_38" + %"$$retval_38_131" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_38" + ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_38_131" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) declare %Uint32 @_add_Uint32(%Uint32, %Uint32) @@ -546,197 +945,582 @@ entry: ret void } -define internal %Uint32 @"$scilla_expr_319"(i8* %0) { +define internal %Uint32 @"$scilla_expr_499"(i8* %0) { entry: %"$expr_36" = alloca %Uint32 + %"$gasrem_500" = load i64, i64* @_gasrem + %"$gascmp_501" = icmp ugt i64 1, %"$gasrem_500" + br i1 %"$gascmp_501", label %"$out_of_gas_502", label %"$have_gas_503" + +"$out_of_gas_502": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_503" + +"$have_gas_503": ; preds = %"$out_of_gas_502", %entry + %"$consume_504" = sub i64 %"$gasrem_500", 1 + store i64 %"$consume_504", i64* @_gasrem + %"$gasrem_505" = load i64, i64* @_gasrem + %"$gascmp_506" = icmp ugt i64 1, %"$gasrem_505" + br i1 %"$gascmp_506", label %"$out_of_gas_507", label %"$have_gas_508" + +"$out_of_gas_507": ; preds = %"$have_gas_503" + call void @_out_of_gas() + br label %"$have_gas_508" + +"$have_gas_508": ; preds = %"$out_of_gas_507", %"$have_gas_503" + %"$consume_509" = sub i64 %"$gasrem_505", 1 + store i64 %"$consume_509", i64* @_gasrem + %"$gasrem_510" = load i64, i64* @_gasrem + %"$gascmp_511" = icmp ugt i64 1, %"$gasrem_510" + br i1 %"$gascmp_511", label %"$out_of_gas_512", label %"$have_gas_513" + +"$out_of_gas_512": ; preds = %"$have_gas_508" + call void @_out_of_gas() + br label %"$have_gas_513" + +"$have_gas_513": ; preds = %"$out_of_gas_512", %"$have_gas_508" + %"$consume_514" = sub i64 %"$gasrem_510", 1 + store i64 %"$consume_514", i64* @_gasrem %c2 = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_515" = load i64, i64* @_gasrem + %"$gascmp_516" = icmp ugt i64 1, %"$gasrem_515" + br i1 %"$gascmp_516", label %"$out_of_gas_517", label %"$have_gas_518" + +"$out_of_gas_517": ; preds = %"$have_gas_513" + call void @_out_of_gas() + br label %"$have_gas_518" + +"$have_gas_518": ; preds = %"$out_of_gas_517", %"$have_gas_513" + %"$consume_519" = sub i64 %"$gasrem_515", 1 + store i64 %"$consume_519", i64* @_gasrem store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })* bitcast ({ %Uint32 (i8*, %Uint32)*, i8* } (%"$$fundef_37_env_120"*, { %Uint32 (i8*, %Uint32)*, i8* })* @"$fundef_37" to { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*), i8* null }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c2 + %"$gasrem_523" = load i64, i64* @_gasrem + %"$gascmp_524" = icmp ugt i64 1, %"$gasrem_523" + br i1 %"$gascmp_524", label %"$out_of_gas_525", label %"$have_gas_526" + +"$out_of_gas_525": ; preds = %"$have_gas_518" + call void @_out_of_gas() + br label %"$have_gas_526" + +"$have_gas_526": ; preds = %"$out_of_gas_525", %"$have_gas_518" + %"$consume_527" = sub i64 %"$gasrem_523", 1 + store i64 %"$consume_527", i64* @_gasrem %c3 = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_528" = load i64, i64* @_gasrem + %"$gascmp_529" = icmp ugt i64 1, %"$gasrem_528" + br i1 %"$gascmp_529", label %"$out_of_gas_530", label %"$have_gas_531" + +"$out_of_gas_530": ; preds = %"$have_gas_526" + call void @_out_of_gas() + br label %"$have_gas_531" + +"$have_gas_531": ; preds = %"$out_of_gas_530", %"$have_gas_526" + %"$consume_532" = sub i64 %"$gasrem_528", 1 + store i64 %"$consume_532", i64* @_gasrem store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })* bitcast ({ %Uint32 (i8*, %Uint32)*, i8* } (%"$$fundef_41_env_118"*, { %Uint32 (i8*, %Uint32)*, i8* })* @"$fundef_41" to { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*), i8* null }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c3 + %"$gasrem_536" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_531" + call void @_out_of_gas() + br label %"$have_gas_539" + +"$have_gas_539": ; preds = %"$out_of_gas_538", %"$have_gas_531" + %"$consume_540" = sub i64 %"$gasrem_536", 1 + store i64 %"$consume_540", i64* @_gasrem %c3_ = alloca { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } + %"$gasrem_541" = load i64, i64* @_gasrem + %"$gascmp_542" = icmp ugt i64 1, %"$gasrem_541" + br i1 %"$gascmp_542", label %"$out_of_gas_543", label %"$have_gas_544" + +"$out_of_gas_543": ; preds = %"$have_gas_539" + call void @_out_of_gas() + br label %"$have_gas_544" + +"$have_gas_544": ; preds = %"$out_of_gas_543", %"$have_gas_539" + %"$consume_545" = sub i64 %"$gasrem_541", 1 + store i64 %"$consume_545", i64* @_gasrem store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })* bitcast ({ { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_45_env_116"*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })* @"$fundef_45" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*), i8* null }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %c3_ + %"$gasrem_549" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_544" + call void @_out_of_gas() + br label %"$have_gas_552" + +"$have_gas_552": ; preds = %"$out_of_gas_551", %"$have_gas_544" + %"$consume_553" = sub i64 %"$gasrem_549", 1 + store i64 %"$consume_553", i64* @_gasrem %cadd = alloca { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } + %"$gasrem_554" = load i64, i64* @_gasrem + %"$gascmp_555" = icmp ugt i64 1, %"$gasrem_554" + br i1 %"$gascmp_555", label %"$out_of_gas_556", label %"$have_gas_557" + +"$out_of_gas_556": ; preds = %"$have_gas_552" + call void @_out_of_gas() + br label %"$have_gas_557" + +"$have_gas_557": ; preds = %"$out_of_gas_556", %"$have_gas_552" + %"$consume_558" = sub i64 %"$gasrem_554", 1 + store i64 %"$consume_558", i64* @_gasrem store { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })* bitcast ({ { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (%"$$fundef_49_env_114"*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })* @"$fundef_49" to { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*), i8* null }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cadd + %"$gasrem_562" = load i64, i64* @_gasrem + %"$gascmp_563" = icmp ugt i64 1, %"$gasrem_562" + br i1 %"$gascmp_563", label %"$out_of_gas_564", label %"$have_gas_565" + +"$out_of_gas_564": ; preds = %"$have_gas_557" + call void @_out_of_gas() + br label %"$have_gas_565" + +"$have_gas_565": ; preds = %"$out_of_gas_564", %"$have_gas_557" + %"$consume_566" = sub i64 %"$gasrem_562", 1 + store i64 %"$consume_566", i64* @_gasrem %cmul = alloca { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } + %"$gasrem_567" = load i64, i64* @_gasrem + %"$gascmp_568" = icmp ugt i64 1, %"$gasrem_567" + br i1 %"$gascmp_568", label %"$out_of_gas_569", label %"$have_gas_570" + +"$out_of_gas_569": ; preds = %"$have_gas_565" + call void @_out_of_gas() + br label %"$have_gas_570" + +"$have_gas_570": ; preds = %"$out_of_gas_569", %"$have_gas_565" + %"$consume_571" = sub i64 %"$gasrem_567", 1 + store i64 %"$consume_571", i64* @_gasrem store { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })* bitcast ({ { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (%"$$fundef_57_env_110"*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })* @"$fundef_57" to { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*), i8* null }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cmul + %"$gasrem_575" = load i64, i64* @_gasrem + %"$gascmp_576" = icmp ugt i64 1, %"$gasrem_575" + br i1 %"$gascmp_576", label %"$out_of_gas_577", label %"$have_gas_578" + +"$out_of_gas_577": ; preds = %"$have_gas_570" + call void @_out_of_gas() + br label %"$have_gas_578" + +"$have_gas_578": ; preds = %"$out_of_gas_577", %"$have_gas_570" + %"$consume_579" = sub i64 %"$gasrem_575", 1 + store i64 %"$consume_579", i64* @_gasrem %cexp = alloca { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } + %"$gasrem_580" = load i64, i64* @_gasrem + %"$gascmp_581" = icmp ugt i64 1, %"$gasrem_580" + br i1 %"$gascmp_581", label %"$out_of_gas_582", label %"$have_gas_583" + +"$out_of_gas_582": ; preds = %"$have_gas_578" + call void @_out_of_gas() + br label %"$have_gas_583" + +"$have_gas_583": ; preds = %"$out_of_gas_582", %"$have_gas_578" + %"$consume_584" = sub i64 %"$gasrem_580", 1 + store i64 %"$consume_584", i64* @_gasrem store { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })* bitcast ({ { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } (%"$$fundef_63_env_107"*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })* @"$fundef_63" to { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*), i8* null }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cexp + %"$gasrem_588" = load i64, i64* @_gasrem + %"$gascmp_589" = icmp ugt i64 1, %"$gasrem_588" + br i1 %"$gascmp_589", label %"$out_of_gas_590", label %"$have_gas_591" + +"$out_of_gas_590": ; preds = %"$have_gas_583" + call void @_out_of_gas() + br label %"$have_gas_591" + +"$have_gas_591": ; preds = %"$out_of_gas_590", %"$have_gas_583" + %"$consume_592" = sub i64 %"$gasrem_588", 1 + store i64 %"$consume_592", i64* @_gasrem %church_nat_to_uint32 = alloca { %Uint32 (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } + %"$gasrem_593" = load i64, i64* @_gasrem + %"$gascmp_594" = icmp ugt i64 1, %"$gasrem_593" + br i1 %"$gascmp_594", label %"$out_of_gas_595", label %"$have_gas_596" + +"$out_of_gas_595": ; preds = %"$have_gas_591" + call void @_out_of_gas() + br label %"$have_gas_596" + +"$have_gas_596": ; preds = %"$out_of_gas_595", %"$have_gas_591" + %"$consume_597" = sub i64 %"$gasrem_593", 1 + store i64 %"$consume_597", i64* @_gasrem store { %Uint32 (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } { %Uint32 (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })* bitcast (%Uint32 (%"$$fundef_67_env_105"*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })* @"$fundef_67" to %Uint32 (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*), i8* null }, { %Uint32 (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %church_nat_to_uint32 + %"$gasrem_601" = load i64, i64* @_gasrem + %"$gascmp_602" = icmp ugt i64 1, %"$gasrem_601" + br i1 %"$gascmp_602", label %"$out_of_gas_603", label %"$have_gas_604" + +"$out_of_gas_603": ; preds = %"$have_gas_596" + call void @_out_of_gas() + br label %"$have_gas_604" + +"$have_gas_604": ; preds = %"$out_of_gas_603", %"$have_gas_596" + %"$consume_605" = sub i64 %"$gasrem_601", 1 + store i64 %"$consume_605", i64* @_gasrem %c4 = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_606" = load i64, i64* @_gasrem + %"$gascmp_607" = icmp ugt i64 1, %"$gasrem_606" + br i1 %"$gascmp_607", label %"$out_of_gas_608", label %"$have_gas_609" + +"$out_of_gas_608": ; preds = %"$have_gas_604" + call void @_out_of_gas() + br label %"$have_gas_609" + +"$have_gas_609": ; preds = %"$out_of_gas_608", %"$have_gas_604" + %"$consume_610" = sub i64 %"$gasrem_606", 1 + store i64 %"$consume_610", i64* @_gasrem %"$cmul_17" = alloca { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } - %"$cmul_341" = load { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cmul - %"$cmul_fptr_342" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_341", 0 - %"$cmul_envptr_343" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_341", 1 - %"$c2_344" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c2 - %"$cmul_call_345" = call { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_fptr_342"(i8* %"$cmul_envptr_343", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c2_344") - store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_call_345", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cmul_17" + %"$cmul_611" = load { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cmul + %"$cmul_fptr_612" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_611", 0 + %"$cmul_envptr_613" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_611", 1 + %"$c2_614" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c2 + %"$cmul_call_615" = call { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_fptr_612"(i8* %"$cmul_envptr_613", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c2_614") + store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_call_615", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cmul_17" %"$cmul_18" = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - %"$$cmul_17_346" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cmul_17" - %"$$cmul_17_fptr_347" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cmul_17_346", 0 - %"$$cmul_17_envptr_348" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cmul_17_346", 1 - %"$c2_349" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c2 - %"$$cmul_17_call_350" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_17_fptr_347"(i8* %"$$cmul_17_envptr_348", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c2_349") - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_17_call_350", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cmul_18" - %"$$cmul_18_351" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cmul_18" - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_18_351", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c4 + %"$$cmul_17_616" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cmul_17" + %"$$cmul_17_fptr_617" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cmul_17_616", 0 + %"$$cmul_17_envptr_618" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cmul_17_616", 1 + %"$c2_619" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c2 + %"$$cmul_17_call_620" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_17_fptr_617"(i8* %"$$cmul_17_envptr_618", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c2_619") + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_17_call_620", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cmul_18" + %"$$cmul_18_621" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cmul_18" + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_18_621", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c4 + %"$gasrem_622" = load i64, i64* @_gasrem + %"$gascmp_623" = icmp ugt i64 1, %"$gasrem_622" + br i1 %"$gascmp_623", label %"$out_of_gas_624", label %"$have_gas_625" + +"$out_of_gas_624": ; preds = %"$have_gas_609" + call void @_out_of_gas() + br label %"$have_gas_625" + +"$have_gas_625": ; preds = %"$out_of_gas_624", %"$have_gas_609" + %"$consume_626" = sub i64 %"$gasrem_622", 1 + store i64 %"$consume_626", i64* @_gasrem %c16 = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_627" = load i64, i64* @_gasrem + %"$gascmp_628" = icmp ugt i64 1, %"$gasrem_627" + br i1 %"$gascmp_628", label %"$out_of_gas_629", label %"$have_gas_630" + +"$out_of_gas_629": ; preds = %"$have_gas_625" + call void @_out_of_gas() + br label %"$have_gas_630" + +"$have_gas_630": ; preds = %"$out_of_gas_629", %"$have_gas_625" + %"$consume_631" = sub i64 %"$gasrem_627", 1 + store i64 %"$consume_631", i64* @_gasrem %"$cmul_19" = alloca { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } - %"$cmul_352" = load { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cmul - %"$cmul_fptr_353" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_352", 0 - %"$cmul_envptr_354" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_352", 1 - %"$c4_355" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c4 - %"$cmul_call_356" = call { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_fptr_353"(i8* %"$cmul_envptr_354", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c4_355") - store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_call_356", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cmul_19" + %"$cmul_632" = load { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cmul + %"$cmul_fptr_633" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_632", 0 + %"$cmul_envptr_634" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_632", 1 + %"$c4_635" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c4 + %"$cmul_call_636" = call { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_fptr_633"(i8* %"$cmul_envptr_634", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c4_635") + store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_call_636", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cmul_19" %"$cmul_20" = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - %"$$cmul_19_357" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cmul_19" - %"$$cmul_19_fptr_358" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cmul_19_357", 0 - %"$$cmul_19_envptr_359" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cmul_19_357", 1 - %"$c4_360" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c4 - %"$$cmul_19_call_361" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_19_fptr_358"(i8* %"$$cmul_19_envptr_359", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c4_360") - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_19_call_361", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cmul_20" - %"$$cmul_20_362" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cmul_20" - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_20_362", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c16 + %"$$cmul_19_637" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cmul_19" + %"$$cmul_19_fptr_638" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cmul_19_637", 0 + %"$$cmul_19_envptr_639" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cmul_19_637", 1 + %"$c4_640" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c4 + %"$$cmul_19_call_641" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_19_fptr_638"(i8* %"$$cmul_19_envptr_639", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c4_640") + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_19_call_641", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cmul_20" + %"$$cmul_20_642" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cmul_20" + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_20_642", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c16 + %"$gasrem_643" = load i64, i64* @_gasrem + %"$gascmp_644" = icmp ugt i64 1, %"$gasrem_643" + br i1 %"$gascmp_644", label %"$out_of_gas_645", label %"$have_gas_646" + +"$out_of_gas_645": ; preds = %"$have_gas_630" + call void @_out_of_gas() + br label %"$have_gas_646" + +"$have_gas_646": ; preds = %"$out_of_gas_645", %"$have_gas_630" + %"$consume_647" = sub i64 %"$gasrem_643", 1 + store i64 %"$consume_647", i64* @_gasrem %c32 = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_648" = load i64, i64* @_gasrem + %"$gascmp_649" = icmp ugt i64 1, %"$gasrem_648" + br i1 %"$gascmp_649", label %"$out_of_gas_650", label %"$have_gas_651" + +"$out_of_gas_650": ; preds = %"$have_gas_646" + call void @_out_of_gas() + br label %"$have_gas_651" + +"$have_gas_651": ; preds = %"$out_of_gas_650", %"$have_gas_646" + %"$consume_652" = sub i64 %"$gasrem_648", 1 + store i64 %"$consume_652", i64* @_gasrem %"$cadd_21" = alloca { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } - %"$cadd_363" = load { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cadd - %"$cadd_fptr_364" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_363", 0 - %"$cadd_envptr_365" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_363", 1 - %"$c16_366" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c16 - %"$cadd_call_367" = call { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_fptr_364"(i8* %"$cadd_envptr_365", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c16_366") - store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_call_367", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cadd_21" + %"$cadd_653" = load { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cadd + %"$cadd_fptr_654" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_653", 0 + %"$cadd_envptr_655" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_653", 1 + %"$c16_656" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c16 + %"$cadd_call_657" = call { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_fptr_654"(i8* %"$cadd_envptr_655", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c16_656") + store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_call_657", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cadd_21" %"$cadd_22" = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - %"$$cadd_21_368" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cadd_21" - %"$$cadd_21_fptr_369" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cadd_21_368", 0 - %"$$cadd_21_envptr_370" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cadd_21_368", 1 - %"$c16_371" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c16 - %"$$cadd_21_call_372" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_21_fptr_369"(i8* %"$$cadd_21_envptr_370", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c16_371") - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_21_call_372", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cadd_22" - %"$$cadd_22_373" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cadd_22" - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_22_373", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c32 + %"$$cadd_21_658" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cadd_21" + %"$$cadd_21_fptr_659" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cadd_21_658", 0 + %"$$cadd_21_envptr_660" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cadd_21_658", 1 + %"$c16_661" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c16 + %"$$cadd_21_call_662" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_21_fptr_659"(i8* %"$$cadd_21_envptr_660", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c16_661") + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_21_call_662", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cadd_22" + %"$$cadd_22_663" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cadd_22" + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_22_663", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c32 + %"$gasrem_664" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_651" + call void @_out_of_gas() + br label %"$have_gas_667" + +"$have_gas_667": ; preds = %"$out_of_gas_666", %"$have_gas_651" + %"$consume_668" = sub i64 %"$gasrem_664", 1 + store i64 %"$consume_668", i64* @_gasrem %c128 = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_669" = load i64, i64* @_gasrem + %"$gascmp_670" = icmp ugt i64 1, %"$gasrem_669" + br i1 %"$gascmp_670", label %"$out_of_gas_671", label %"$have_gas_672" + +"$out_of_gas_671": ; preds = %"$have_gas_667" + call void @_out_of_gas() + br label %"$have_gas_672" + +"$have_gas_672": ; preds = %"$out_of_gas_671", %"$have_gas_667" + %"$consume_673" = sub i64 %"$gasrem_669", 1 + store i64 %"$consume_673", i64* @_gasrem %"$cmul_23" = alloca { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } - %"$cmul_374" = load { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cmul - %"$cmul_fptr_375" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_374", 0 - %"$cmul_envptr_376" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_374", 1 - %"$c4_377" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c4 - %"$cmul_call_378" = call { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_fptr_375"(i8* %"$cmul_envptr_376", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c4_377") - store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_call_378", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cmul_23" + %"$cmul_674" = load { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cmul + %"$cmul_fptr_675" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_674", 0 + %"$cmul_envptr_676" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_674", 1 + %"$c4_677" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c4 + %"$cmul_call_678" = call { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_fptr_675"(i8* %"$cmul_envptr_676", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c4_677") + store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_call_678", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cmul_23" %"$cmul_24" = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - %"$$cmul_23_379" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cmul_23" - %"$$cmul_23_fptr_380" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cmul_23_379", 0 - %"$$cmul_23_envptr_381" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cmul_23_379", 1 - %"$c32_382" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c32 - %"$$cmul_23_call_383" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_23_fptr_380"(i8* %"$$cmul_23_envptr_381", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c32_382") - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_23_call_383", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cmul_24" - %"$$cmul_24_384" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cmul_24" - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_24_384", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c128 + %"$$cmul_23_679" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cmul_23" + %"$$cmul_23_fptr_680" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cmul_23_679", 0 + %"$$cmul_23_envptr_681" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cmul_23_679", 1 + %"$c32_682" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c32 + %"$$cmul_23_call_683" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_23_fptr_680"(i8* %"$$cmul_23_envptr_681", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c32_682") + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_23_call_683", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cmul_24" + %"$$cmul_24_684" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cmul_24" + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_24_684", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c128 + %"$gasrem_685" = load i64, i64* @_gasrem + %"$gascmp_686" = icmp ugt i64 1, %"$gasrem_685" + br i1 %"$gascmp_686", label %"$out_of_gas_687", label %"$have_gas_688" + +"$out_of_gas_687": ; preds = %"$have_gas_672" + call void @_out_of_gas() + br label %"$have_gas_688" + +"$have_gas_688": ; preds = %"$out_of_gas_687", %"$have_gas_672" + %"$consume_689" = sub i64 %"$gasrem_685", 1 + store i64 %"$consume_689", i64* @_gasrem %c256 = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_690" = load i64, i64* @_gasrem + %"$gascmp_691" = icmp ugt i64 1, %"$gasrem_690" + br i1 %"$gascmp_691", label %"$out_of_gas_692", label %"$have_gas_693" + +"$out_of_gas_692": ; preds = %"$have_gas_688" + call void @_out_of_gas() + br label %"$have_gas_693" + +"$have_gas_693": ; preds = %"$out_of_gas_692", %"$have_gas_688" + %"$consume_694" = sub i64 %"$gasrem_690", 1 + store i64 %"$consume_694", i64* @_gasrem %"$cadd_25" = alloca { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } - %"$cadd_385" = load { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cadd - %"$cadd_fptr_386" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_385", 0 - %"$cadd_envptr_387" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_385", 1 - %"$c128_388" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c128 - %"$cadd_call_389" = call { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_fptr_386"(i8* %"$cadd_envptr_387", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c128_388") - store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_call_389", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cadd_25" + %"$cadd_695" = load { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cadd + %"$cadd_fptr_696" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_695", 0 + %"$cadd_envptr_697" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_695", 1 + %"$c128_698" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c128 + %"$cadd_call_699" = call { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_fptr_696"(i8* %"$cadd_envptr_697", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c128_698") + store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_call_699", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cadd_25" %"$cadd_26" = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - %"$$cadd_25_390" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cadd_25" - %"$$cadd_25_fptr_391" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cadd_25_390", 0 - %"$$cadd_25_envptr_392" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cadd_25_390", 1 - %"$c128_393" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c128 - %"$$cadd_25_call_394" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_25_fptr_391"(i8* %"$$cadd_25_envptr_392", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c128_393") - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_25_call_394", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cadd_26" - %"$$cadd_26_395" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cadd_26" - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_26_395", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c256 + %"$$cadd_25_700" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cadd_25" + %"$$cadd_25_fptr_701" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cadd_25_700", 0 + %"$$cadd_25_envptr_702" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cadd_25_700", 1 + %"$c128_703" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c128 + %"$$cadd_25_call_704" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_25_fptr_701"(i8* %"$$cadd_25_envptr_702", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c128_703") + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_25_call_704", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cadd_26" + %"$$cadd_26_705" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cadd_26" + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_26_705", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c256 + %"$gasrem_706" = load i64, i64* @_gasrem + %"$gascmp_707" = icmp ugt i64 1, %"$gasrem_706" + br i1 %"$gascmp_707", label %"$out_of_gas_708", label %"$have_gas_709" + +"$out_of_gas_708": ; preds = %"$have_gas_693" + call void @_out_of_gas() + br label %"$have_gas_709" + +"$have_gas_709": ; preds = %"$out_of_gas_708", %"$have_gas_693" + %"$consume_710" = sub i64 %"$gasrem_706", 1 + store i64 %"$consume_710", i64* @_gasrem %c65536 = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_711" = load i64, i64* @_gasrem + %"$gascmp_712" = icmp ugt i64 1, %"$gasrem_711" + br i1 %"$gascmp_712", label %"$out_of_gas_713", label %"$have_gas_714" + +"$out_of_gas_713": ; preds = %"$have_gas_709" + call void @_out_of_gas() + br label %"$have_gas_714" + +"$have_gas_714": ; preds = %"$out_of_gas_713", %"$have_gas_709" + %"$consume_715" = sub i64 %"$gasrem_711", 1 + store i64 %"$consume_715", i64* @_gasrem %"$cmul_27" = alloca { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } - %"$cmul_396" = load { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cmul - %"$cmul_fptr_397" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_396", 0 - %"$cmul_envptr_398" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_396", 1 - %"$c256_399" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c256 - %"$cmul_call_400" = call { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_fptr_397"(i8* %"$cmul_envptr_398", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c256_399") - store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_call_400", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cmul_27" + %"$cmul_716" = load { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cmul + %"$cmul_fptr_717" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_716", 0 + %"$cmul_envptr_718" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_716", 1 + %"$c256_719" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c256 + %"$cmul_call_720" = call { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_fptr_717"(i8* %"$cmul_envptr_718", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c256_719") + store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cmul_call_720", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cmul_27" %"$cmul_28" = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - %"$$cmul_27_401" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cmul_27" - %"$$cmul_27_fptr_402" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cmul_27_401", 0 - %"$$cmul_27_envptr_403" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cmul_27_401", 1 - %"$c256_404" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c256 - %"$$cmul_27_call_405" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_27_fptr_402"(i8* %"$$cmul_27_envptr_403", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c256_404") - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_27_call_405", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cmul_28" - %"$$cmul_28_406" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cmul_28" - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_28_406", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c65536 + %"$$cmul_27_721" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cmul_27" + %"$$cmul_27_fptr_722" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cmul_27_721", 0 + %"$$cmul_27_envptr_723" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cmul_27_721", 1 + %"$c256_724" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c256 + %"$$cmul_27_call_725" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_27_fptr_722"(i8* %"$$cmul_27_envptr_723", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c256_724") + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_27_call_725", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cmul_28" + %"$$cmul_28_726" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cmul_28" + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cmul_28_726", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c65536 + %"$gasrem_727" = load i64, i64* @_gasrem + %"$gascmp_728" = icmp ugt i64 1, %"$gasrem_727" + br i1 %"$gascmp_728", label %"$out_of_gas_729", label %"$have_gas_730" + +"$out_of_gas_729": ; preds = %"$have_gas_714" + call void @_out_of_gas() + br label %"$have_gas_730" + +"$have_gas_730": ; preds = %"$out_of_gas_729", %"$have_gas_714" + %"$consume_731" = sub i64 %"$gasrem_727", 1 + store i64 %"$consume_731", i64* @_gasrem %c131072 = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_732" = load i64, i64* @_gasrem + %"$gascmp_733" = icmp ugt i64 1, %"$gasrem_732" + br i1 %"$gascmp_733", label %"$out_of_gas_734", label %"$have_gas_735" + +"$out_of_gas_734": ; preds = %"$have_gas_730" + call void @_out_of_gas() + br label %"$have_gas_735" + +"$have_gas_735": ; preds = %"$out_of_gas_734", %"$have_gas_730" + %"$consume_736" = sub i64 %"$gasrem_732", 1 + store i64 %"$consume_736", i64* @_gasrem %"$cadd_29" = alloca { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } - %"$cadd_407" = load { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cadd - %"$cadd_fptr_408" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_407", 0 - %"$cadd_envptr_409" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_407", 1 - %"$c65536_410" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c65536 - %"$cadd_call_411" = call { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_fptr_408"(i8* %"$cadd_envptr_409", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c65536_410") - store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_call_411", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cadd_29" + %"$cadd_737" = load { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cadd + %"$cadd_fptr_738" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_737", 0 + %"$cadd_envptr_739" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_737", 1 + %"$c65536_740" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c65536 + %"$cadd_call_741" = call { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_fptr_738"(i8* %"$cadd_envptr_739", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c65536_740") + store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_call_741", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cadd_29" %"$cadd_30" = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - %"$$cadd_29_412" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cadd_29" - %"$$cadd_29_fptr_413" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cadd_29_412", 0 - %"$$cadd_29_envptr_414" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cadd_29_412", 1 - %"$c65536_415" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c65536 - %"$$cadd_29_call_416" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_29_fptr_413"(i8* %"$$cadd_29_envptr_414", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c65536_415") - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_29_call_416", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cadd_30" - %"$$cadd_30_417" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cadd_30" - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_30_417", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c131072 + %"$$cadd_29_742" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cadd_29" + %"$$cadd_29_fptr_743" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cadd_29_742", 0 + %"$$cadd_29_envptr_744" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cadd_29_742", 1 + %"$c65536_745" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c65536 + %"$$cadd_29_call_746" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_29_fptr_743"(i8* %"$$cadd_29_envptr_744", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c65536_745") + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_29_call_746", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cadd_30" + %"$$cadd_30_747" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cadd_30" + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_30_747", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c131072 + %"$gasrem_748" = load i64, i64* @_gasrem + %"$gascmp_749" = icmp ugt i64 1, %"$gasrem_748" + br i1 %"$gascmp_749", label %"$out_of_gas_750", label %"$have_gas_751" + +"$out_of_gas_750": ; preds = %"$have_gas_735" + call void @_out_of_gas() + br label %"$have_gas_751" + +"$have_gas_751": ; preds = %"$out_of_gas_750", %"$have_gas_735" + %"$consume_752" = sub i64 %"$gasrem_748", 1 + store i64 %"$consume_752", i64* @_gasrem %c27 = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_753" = load i64, i64* @_gasrem + %"$gascmp_754" = icmp ugt i64 1, %"$gasrem_753" + br i1 %"$gascmp_754", label %"$out_of_gas_755", label %"$have_gas_756" + +"$out_of_gas_755": ; preds = %"$have_gas_751" + call void @_out_of_gas() + br label %"$have_gas_756" + +"$have_gas_756": ; preds = %"$out_of_gas_755", %"$have_gas_751" + %"$consume_757" = sub i64 %"$gasrem_753", 1 + store i64 %"$consume_757", i64* @_gasrem %"$cexp_31" = alloca { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } - %"$cexp_418" = load { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cexp - %"$cexp_fptr_419" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cexp_418", 0 - %"$cexp_envptr_420" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cexp_418", 1 - %"$c3_421" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c3 - %"$cexp_call_422" = call { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } %"$cexp_fptr_419"(i8* %"$cexp_envptr_420", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c3_421") - store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } %"$cexp_call_422", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* }* %"$cexp_31" + %"$cexp_758" = load { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cexp + %"$cexp_fptr_759" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cexp_758", 0 + %"$cexp_envptr_760" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cexp_758", 1 + %"$c3_761" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c3 + %"$cexp_call_762" = call { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } %"$cexp_fptr_759"(i8* %"$cexp_envptr_760", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c3_761") + store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } %"$cexp_call_762", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* }* %"$cexp_31" %"$cexp_32" = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - %"$$cexp_31_423" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* }* %"$cexp_31" - %"$$cexp_31_fptr_424" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } %"$$cexp_31_423", 0 - %"$$cexp_31_envptr_425" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } %"$$cexp_31_423", 1 - %"$c3__426" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %c3_ - %"$$cexp_31_call_427" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cexp_31_fptr_424"(i8* %"$$cexp_31_envptr_425", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$c3__426") - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cexp_31_call_427", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cexp_32" - %"$$cexp_32_428" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cexp_32" - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cexp_32_428", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c27 + %"$$cexp_31_763" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* }* %"$cexp_31" + %"$$cexp_31_fptr_764" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } %"$$cexp_31_763", 0 + %"$$cexp_31_envptr_765" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* })*, i8* } %"$$cexp_31_763", 1 + %"$c3__766" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %c3_ + %"$$cexp_31_call_767" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cexp_31_fptr_764"(i8* %"$$cexp_31_envptr_765", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$c3__766") + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cexp_31_call_767", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cexp_32" + %"$$cexp_32_768" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cexp_32" + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cexp_32_768", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c27 + %"$gasrem_769" = load i64, i64* @_gasrem + %"$gascmp_770" = icmp ugt i64 1, %"$gasrem_769" + br i1 %"$gascmp_770", label %"$out_of_gas_771", label %"$have_gas_772" + +"$out_of_gas_771": ; preds = %"$have_gas_756" + call void @_out_of_gas() + br label %"$have_gas_772" + +"$have_gas_772": ; preds = %"$out_of_gas_771", %"$have_gas_756" + %"$consume_773" = sub i64 %"$gasrem_769", 1 + store i64 %"$consume_773", i64* @_gasrem %c131099 = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_774" = load i64, i64* @_gasrem + %"$gascmp_775" = icmp ugt i64 1, %"$gasrem_774" + br i1 %"$gascmp_775", label %"$out_of_gas_776", label %"$have_gas_777" + +"$out_of_gas_776": ; preds = %"$have_gas_772" + call void @_out_of_gas() + br label %"$have_gas_777" + +"$have_gas_777": ; preds = %"$out_of_gas_776", %"$have_gas_772" + %"$consume_778" = sub i64 %"$gasrem_774", 1 + store i64 %"$consume_778", i64* @_gasrem %"$cadd_33" = alloca { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } - %"$cadd_429" = load { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cadd - %"$cadd_fptr_430" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_429", 0 - %"$cadd_envptr_431" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_429", 1 - %"$c131072_432" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c131072 - %"$cadd_call_433" = call { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_fptr_430"(i8* %"$cadd_envptr_431", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c131072_432") - store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_call_433", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cadd_33" + %"$cadd_779" = load { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %cadd + %"$cadd_fptr_780" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_779", 0 + %"$cadd_envptr_781" = extractvalue { { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_779", 1 + %"$c131072_782" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c131072 + %"$cadd_call_783" = call { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_fptr_780"(i8* %"$cadd_envptr_781", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c131072_782") + store { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$cadd_call_783", { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cadd_33" %"$cadd_34" = alloca { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } - %"$$cadd_33_434" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cadd_33" - %"$$cadd_33_fptr_435" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cadd_33_434", 0 - %"$$cadd_33_envptr_436" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cadd_33_434", 1 - %"$c27_437" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c27 - %"$$cadd_33_call_438" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_33_fptr_435"(i8* %"$$cadd_33_envptr_436", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c27_437") - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_33_call_438", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cadd_34" - %"$$cadd_34_439" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cadd_34" - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_34_439", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c131099 + %"$$cadd_33_784" = load { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %"$cadd_33" + %"$$cadd_33_fptr_785" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cadd_33_784", 0 + %"$$cadd_33_envptr_786" = extractvalue { { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$$cadd_33_784", 1 + %"$c27_787" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c27 + %"$$cadd_33_call_788" = call { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_33_fptr_785"(i8* %"$$cadd_33_envptr_786", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c27_787") + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_33_call_788", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cadd_34" + %"$$cadd_34_789" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %"$cadd_34" + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$$cadd_34_789", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c131099 + %"$gasrem_790" = load i64, i64* @_gasrem + %"$gascmp_791" = icmp ugt i64 1, %"$gasrem_790" + br i1 %"$gascmp_791", label %"$out_of_gas_792", label %"$have_gas_793" + +"$out_of_gas_792": ; preds = %"$have_gas_777" + call void @_out_of_gas() + br label %"$have_gas_793" + +"$have_gas_793": ; preds = %"$out_of_gas_792", %"$have_gas_777" + %"$consume_794" = sub i64 %"$gasrem_790", 1 + store i64 %"$consume_794", i64* @_gasrem %"$church_nat_to_uint32_35" = alloca %Uint32 - %"$church_nat_to_uint32_440" = load { %Uint32 (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { %Uint32 (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %church_nat_to_uint32 - %"$church_nat_to_uint32_fptr_441" = extractvalue { %Uint32 (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$church_nat_to_uint32_440", 0 - %"$church_nat_to_uint32_envptr_442" = extractvalue { %Uint32 (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$church_nat_to_uint32_440", 1 - %"$c131099_443" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c131099 - %"$church_nat_to_uint32_call_444" = call %Uint32 %"$church_nat_to_uint32_fptr_441"(i8* %"$church_nat_to_uint32_envptr_442", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c131099_443") - store %Uint32 %"$church_nat_to_uint32_call_444", %Uint32* %"$church_nat_to_uint32_35" - %"$$church_nat_to_uint32_35_445" = load %Uint32, %Uint32* %"$church_nat_to_uint32_35" - store %Uint32 %"$$church_nat_to_uint32_35_445", %Uint32* %"$expr_36" - %"$$expr_36_446" = load %Uint32, %Uint32* %"$expr_36" - ret %Uint32 %"$$expr_36_446" + %"$church_nat_to_uint32_795" = load { %Uint32 (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }, { %Uint32 (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* }* %church_nat_to_uint32 + %"$church_nat_to_uint32_fptr_796" = extractvalue { %Uint32 (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$church_nat_to_uint32_795", 0 + %"$church_nat_to_uint32_envptr_797" = extractvalue { %Uint32 (i8*, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* })*, i8* } %"$church_nat_to_uint32_795", 1 + %"$c131099_798" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* }* %c131099 + %"$church_nat_to_uint32_call_799" = call %Uint32 %"$church_nat_to_uint32_fptr_796"(i8* %"$church_nat_to_uint32_envptr_797", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*, { %Uint32 (i8*, %Uint32)*, i8* })*, i8* } %"$c131099_798") + store %Uint32 %"$church_nat_to_uint32_call_799", %Uint32* %"$church_nat_to_uint32_35" + %"$$church_nat_to_uint32_35_800" = load %Uint32, %Uint32* %"$church_nat_to_uint32_35" + store %Uint32 %"$$church_nat_to_uint32_35_800", %Uint32* %"$expr_36" + %"$$expr_36_801" = load %Uint32, %Uint32* %"$expr_36" + ret %Uint32 %"$$expr_36_801" } declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_447" = call %Uint32 @"$scilla_expr_319"(i8* null) - %"$pval_448" = alloca %Uint32 - %"$memvoidcast_449" = bitcast %Uint32* %"$pval_448" to i8* - store %Uint32 %"$exprval_447", %Uint32* %"$pval_448" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_75", i8* %"$memvoidcast_449") + %"$exprval_802" = call %Uint32 @"$scilla_expr_499"(i8* null) + %"$pval_803" = alloca %Uint32 + %"$memvoidcast_804" = bitcast %Uint32* %"$pval_803" to i8* + store %Uint32 %"$exprval_802", %Uint32* %"$pval_803" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_75", i8* %"$memvoidcast_804") ret void } diff --git a/testsuite/expr/church_nat_stlc.ll.result b/testsuite/expr/church_nat_stlc.ll.result index 05030ec2..a82c7792 100644 --- a/testsuite/expr/church_nat_stlc.ll.result +++ b/testsuite/expr/church_nat_stlc.ll.result @@ -1 +1,2 @@ 131099 : Uint32 +Gas remaining: 9570658 diff --git a/testsuite/expr/cn.ll b/testsuite/expr/cn.ll index 9677489f..c5f0bc96 100644 --- a/testsuite/expr/cn.ll +++ b/testsuite/expr/cn.ll @@ -36,6 +36,7 @@ target triple = "x86_64-pc-linux-gnu" %"$$fundef_6_env_56" = type {} @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_19" = global %"$TyDescrTy_PrimTyp_18" zeroinitializer @"$TyDescr_Int32_20" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_18"* @"$TyDescr_Int32_Prim_19" to i8*) } @"$TyDescr_Uint32_Prim_21" = global %"$TyDescrTy_PrimTyp_18" { i32 1, i32 0 } @@ -68,118 +69,274 @@ target triple = "x86_64-pc-linux-gnu" define internal %Uint32 @"$fundef_16"(%"$$fundef_16_env_51"* %0, { i8*, i8* }* %1) { entry: %"$retval_17" = alloca %Uint32 + %"$gasrem_141" = load i64, i64* @_gasrem + %"$gascmp_142" = icmp ugt i64 1, %"$gasrem_141" + br i1 %"$gascmp_142", label %"$out_of_gas_143", label %"$have_gas_144" + +"$out_of_gas_143": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_144" + +"$have_gas_144": ; preds = %"$out_of_gas_143", %entry + %"$consume_145" = sub i64 %"$gasrem_141", 1 + store i64 %"$consume_145", i64* @_gasrem %zero = alloca %Uint32 + %"$gasrem_146" = load i64, i64* @_gasrem + %"$gascmp_147" = icmp ugt i64 1, %"$gasrem_146" + br i1 %"$gascmp_147", label %"$out_of_gas_148", label %"$have_gas_149" + +"$out_of_gas_148": ; preds = %"$have_gas_144" + call void @_out_of_gas() + br label %"$have_gas_149" + +"$have_gas_149": ; preds = %"$out_of_gas_148", %"$have_gas_144" + %"$consume_150" = sub i64 %"$gasrem_146", 1 + store i64 %"$consume_150", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %zero + %"$gasrem_151" = load i64, i64* @_gasrem + %"$gascmp_152" = icmp ugt i64 1, %"$gasrem_151" + br i1 %"$gascmp_152", label %"$out_of_gas_153", label %"$have_gas_154" + +"$out_of_gas_153": ; preds = %"$have_gas_149" + call void @_out_of_gas() + br label %"$have_gas_154" + +"$have_gas_154": ; preds = %"$out_of_gas_153", %"$have_gas_149" + %"$consume_155" = sub i64 %"$gasrem_151", 1 + store i64 %"$consume_155", i64* @_gasrem %c32 = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$c_96" = getelementptr { i8*, i8* }, { i8*, i8* }* %1, i32 0 - %"$c_97" = bitcast { i8*, i8* }* %"$c_96" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* - %"$c_98" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$c_97" - %"$c_fptr_99" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$c_98", 0 - %"$c_envptr_100" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$c_98", 1 - %"$c_call_101" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$c_fptr_99"(i8* %"$c_envptr_100") - store { %Uint32 (i8*, %Uint32)*, i8* } %"$c_call_101", { %Uint32 (i8*, %Uint32)*, i8* }* %c32 + %"$gasrem_156" = load i64, i64* @_gasrem + %"$gascmp_157" = icmp ugt i64 1, %"$gasrem_156" + br i1 %"$gascmp_157", label %"$out_of_gas_158", label %"$have_gas_159" + +"$out_of_gas_158": ; preds = %"$have_gas_154" + call void @_out_of_gas() + br label %"$have_gas_159" + +"$have_gas_159": ; preds = %"$out_of_gas_158", %"$have_gas_154" + %"$consume_160" = sub i64 %"$gasrem_156", 1 + store i64 %"$consume_160", i64* @_gasrem + %"$c_161" = getelementptr { i8*, i8* }, { i8*, i8* }* %1, i32 0 + %"$c_162" = bitcast { i8*, i8* }* %"$c_161" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* + %"$c_163" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$c_162" + %"$c_fptr_164" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$c_163", 0 + %"$c_envptr_165" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$c_163", 1 + %"$c_call_166" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$c_fptr_164"(i8* %"$c_envptr_165") + store { %Uint32 (i8*, %Uint32)*, i8* } %"$c_call_166", { %Uint32 (i8*, %Uint32)*, i8* }* %c32 + %"$gasrem_167" = load i64, i64* @_gasrem + %"$gascmp_168" = icmp ugt i64 1, %"$gasrem_167" + br i1 %"$gascmp_168", label %"$out_of_gas_169", label %"$have_gas_170" + +"$out_of_gas_169": ; preds = %"$have_gas_159" + call void @_out_of_gas() + br label %"$have_gas_170" + +"$have_gas_170": ; preds = %"$out_of_gas_169", %"$have_gas_159" + %"$consume_171" = sub i64 %"$gasrem_167", 1 + store i64 %"$consume_171", i64* @_gasrem %"$c32_1" = alloca %Uint32 - %"$c32_102" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %c32 - %"$c32_fptr_103" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$c32_102", 0 - %"$c32_envptr_104" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$c32_102", 1 - %"$zero_105" = load %Uint32, %Uint32* %zero - %"$c32_call_106" = call %Uint32 %"$c32_fptr_103"(i8* %"$c32_envptr_104", %Uint32 %"$zero_105") - store %Uint32 %"$c32_call_106", %Uint32* %"$c32_1" - %"$$c32_1_107" = load %Uint32, %Uint32* %"$c32_1" - store %Uint32 %"$$c32_1_107", %Uint32* %"$retval_17" - %"$$retval_17_108" = load %Uint32, %Uint32* %"$retval_17" - ret %Uint32 %"$$retval_17_108" + %"$c32_172" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %c32 + %"$c32_fptr_173" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$c32_172", 0 + %"$c32_envptr_174" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$c32_172", 1 + %"$zero_175" = load %Uint32, %Uint32* %zero + %"$c32_call_176" = call %Uint32 %"$c32_fptr_173"(i8* %"$c32_envptr_174", %Uint32 %"$zero_175") + store %Uint32 %"$c32_call_176", %Uint32* %"$c32_1" + %"$$c32_1_177" = load %Uint32, %Uint32* %"$c32_1" + store %Uint32 %"$$c32_1_177", %Uint32* %"$retval_17" + %"$$retval_17_178" = load %Uint32, %Uint32* %"$retval_17" + ret %Uint32 %"$$retval_17_178" } define internal %Uint32 @"$fundef_14"(%"$$fundef_14_env_52"* %0, %Uint32 %1) { entry: - %"$$fundef_14_env_n_80" = getelementptr inbounds %"$$fundef_14_env_52", %"$$fundef_14_env_52"* %0, i32 0, i32 0 - %"$n_envload_81" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_14_env_n_80" + %"$$fundef_14_env_n_100" = getelementptr inbounds %"$$fundef_14_env_52", %"$$fundef_14_env_52"* %0, i32 0, i32 0 + %"$n_envload_101" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_14_env_n_100" %n = alloca { i8*, i8* }* - store { i8*, i8* }* %"$n_envload_81", { i8*, i8* }** %n + store { i8*, i8* }* %"$n_envload_101", { i8*, i8* }** %n %"$retval_15" = alloca %Uint32 + %"$gasrem_102" = load i64, i64* @_gasrem + %"$gascmp_103" = icmp ugt i64 1, %"$gasrem_102" + br i1 %"$gascmp_103", label %"$out_of_gas_104", label %"$have_gas_105" + +"$out_of_gas_104": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_105" + +"$have_gas_105": ; preds = %"$out_of_gas_104", %entry + %"$consume_106" = sub i64 %"$gasrem_102", 1 + store i64 %"$consume_106", i64* @_gasrem %nX = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$n_82" = load { i8*, i8* }*, { i8*, i8* }** %n - %"$n_83" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$n_82", i32 0 - %"$n_84" = bitcast { i8*, i8* }* %"$n_83" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* - %"$n_85" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$n_84" - %"$n_fptr_86" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$n_85", 0 - %"$n_envptr_87" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$n_85", 1 - %"$n_call_88" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$n_fptr_86"(i8* %"$n_envptr_87") - store { %Uint32 (i8*, %Uint32)*, i8* } %"$n_call_88", { %Uint32 (i8*, %Uint32)*, i8* }* %nX + %"$gasrem_107" = load i64, i64* @_gasrem + %"$gascmp_108" = icmp ugt i64 1, %"$gasrem_107" + br i1 %"$gascmp_108", label %"$out_of_gas_109", label %"$have_gas_110" + +"$out_of_gas_109": ; preds = %"$have_gas_105" + call void @_out_of_gas() + br label %"$have_gas_110" + +"$have_gas_110": ; preds = %"$out_of_gas_109", %"$have_gas_105" + %"$consume_111" = sub i64 %"$gasrem_107", 1 + store i64 %"$consume_111", i64* @_gasrem + %"$n_112" = load { i8*, i8* }*, { i8*, i8* }** %n + %"$n_113" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$n_112", i32 0 + %"$n_114" = bitcast { i8*, i8* }* %"$n_113" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* + %"$n_115" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$n_114" + %"$n_fptr_116" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$n_115", 0 + %"$n_envptr_117" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$n_115", 1 + %"$n_call_118" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$n_fptr_116"(i8* %"$n_envptr_117") + store { %Uint32 (i8*, %Uint32)*, i8* } %"$n_call_118", { %Uint32 (i8*, %Uint32)*, i8* }* %nX + %"$gasrem_119" = load i64, i64* @_gasrem + %"$gascmp_120" = icmp ugt i64 1, %"$gasrem_119" + br i1 %"$gascmp_120", label %"$out_of_gas_121", label %"$have_gas_122" + +"$out_of_gas_121": ; preds = %"$have_gas_110" + call void @_out_of_gas() + br label %"$have_gas_122" + +"$have_gas_122": ; preds = %"$out_of_gas_121", %"$have_gas_110" + %"$consume_123" = sub i64 %"$gasrem_119", 1 + store i64 %"$consume_123", i64* @_gasrem %nXz = alloca %Uint32 + %"$gasrem_124" = load i64, i64* @_gasrem + %"$gascmp_125" = icmp ugt i64 1, %"$gasrem_124" + br i1 %"$gascmp_125", label %"$out_of_gas_126", label %"$have_gas_127" + +"$out_of_gas_126": ; preds = %"$have_gas_122" + call void @_out_of_gas() + br label %"$have_gas_127" + +"$have_gas_127": ; preds = %"$out_of_gas_126", %"$have_gas_122" + %"$consume_128" = sub i64 %"$gasrem_124", 1 + store i64 %"$consume_128", i64* @_gasrem %"$nX_0" = alloca %Uint32 - %"$nX_89" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %nX - %"$nX_fptr_90" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$nX_89", 0 - %"$nX_envptr_91" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$nX_89", 1 - %"$nX_call_92" = call %Uint32 %"$nX_fptr_90"(i8* %"$nX_envptr_91", %Uint32 %1) - store %Uint32 %"$nX_call_92", %Uint32* %"$nX_0" - %"$$nX_0_93" = load %Uint32, %Uint32* %"$nX_0" - store %Uint32 %"$$nX_0_93", %Uint32* %nXz - %"$nXz_94" = load %Uint32, %Uint32* %nXz - store %Uint32 %"$nXz_94", %Uint32* %"$retval_15" - %"$$retval_15_95" = load %Uint32, %Uint32* %"$retval_15" - ret %Uint32 %"$$retval_15_95" + %"$nX_129" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %nX + %"$nX_fptr_130" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$nX_129", 0 + %"$nX_envptr_131" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$nX_129", 1 + %"$nX_call_132" = call %Uint32 %"$nX_fptr_130"(i8* %"$nX_envptr_131", %Uint32 %1) + store %Uint32 %"$nX_call_132", %Uint32* %"$nX_0" + %"$$nX_0_133" = load %Uint32, %Uint32* %"$nX_0" + store %Uint32 %"$$nX_0_133", %Uint32* %nXz + %"$gasrem_134" = load i64, i64* @_gasrem + %"$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_127" + call void @_out_of_gas() + br label %"$have_gas_137" + +"$have_gas_137": ; preds = %"$out_of_gas_136", %"$have_gas_127" + %"$consume_138" = sub i64 %"$gasrem_134", 1 + store i64 %"$consume_138", i64* @_gasrem + %"$nXz_139" = load %Uint32, %Uint32* %nXz + store %Uint32 %"$nXz_139", %Uint32* %"$retval_15" + %"$$retval_15_140" = load %Uint32, %Uint32* %"$retval_15" + ret %Uint32 %"$$retval_15_140" } define internal { %Uint32 (i8*, %Uint32)*, i8* } @"$fundef_12"(%"$$fundef_12_env_53"* %0) { entry: - %"$$fundef_12_env_n_71" = getelementptr inbounds %"$$fundef_12_env_53", %"$$fundef_12_env_53"* %0, i32 0, i32 0 - %"$n_envload_72" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_12_env_n_71" + %"$$fundef_12_env_n_86" = getelementptr inbounds %"$$fundef_12_env_53", %"$$fundef_12_env_53"* %0, i32 0, i32 0 + %"$n_envload_87" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_12_env_n_86" %n = alloca { i8*, i8* }* - store { i8*, i8* }* %"$n_envload_72", { i8*, i8* }** %n + store { i8*, i8* }* %"$n_envload_87", { i8*, i8* }** %n %"$retval_13" = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$$fundef_14_envp_73_load" = load i8*, i8** @_execptr - %"$$fundef_14_envp_73_salloc" = call i8* @_salloc(i8* %"$$fundef_14_envp_73_load", i64 8) - %"$$fundef_14_envp_73" = bitcast i8* %"$$fundef_14_envp_73_salloc" to %"$$fundef_14_env_52"* - %"$$fundef_14_env_voidp_75" = bitcast %"$$fundef_14_env_52"* %"$$fundef_14_envp_73" to i8* - %"$$fundef_14_cloval_76" = insertvalue { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_14_env_52"*, %Uint32)* @"$fundef_14" to %Uint32 (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_14_env_voidp_75", 1 - %"$$fundef_14_env_n_77" = getelementptr inbounds %"$$fundef_14_env_52", %"$$fundef_14_env_52"* %"$$fundef_14_envp_73", i32 0, i32 0 - %"$n_78" = load { i8*, i8* }*, { i8*, i8* }** %n - store { i8*, i8* }* %"$n_78", { i8*, i8* }** %"$$fundef_14_env_n_77" - store { %Uint32 (i8*, %Uint32)*, i8* } %"$$fundef_14_cloval_76", { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_13" - %"$$retval_13_79" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_13" - ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_13_79" + %"$gasrem_88" = load i64, i64* @_gasrem + %"$gascmp_89" = icmp ugt i64 1, %"$gasrem_88" + br i1 %"$gascmp_89", label %"$out_of_gas_90", label %"$have_gas_91" + +"$out_of_gas_90": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_91" + +"$have_gas_91": ; preds = %"$out_of_gas_90", %entry + %"$consume_92" = sub i64 %"$gasrem_88", 1 + store i64 %"$consume_92", i64* @_gasrem + %"$$fundef_14_envp_93_load" = load i8*, i8** @_execptr + %"$$fundef_14_envp_93_salloc" = call i8* @_salloc(i8* %"$$fundef_14_envp_93_load", i64 8) + %"$$fundef_14_envp_93" = bitcast i8* %"$$fundef_14_envp_93_salloc" to %"$$fundef_14_env_52"* + %"$$fundef_14_env_voidp_95" = bitcast %"$$fundef_14_env_52"* %"$$fundef_14_envp_93" to i8* + %"$$fundef_14_cloval_96" = insertvalue { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_14_env_52"*, %Uint32)* @"$fundef_14" to %Uint32 (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_14_env_voidp_95", 1 + %"$$fundef_14_env_n_97" = getelementptr inbounds %"$$fundef_14_env_52", %"$$fundef_14_env_52"* %"$$fundef_14_envp_93", i32 0, i32 0 + %"$n_98" = load { i8*, i8* }*, { i8*, i8* }** %n + store { i8*, i8* }* %"$n_98", { i8*, i8* }** %"$$fundef_14_env_n_97" + store { %Uint32 (i8*, %Uint32)*, i8* } %"$$fundef_14_cloval_96", { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_13" + %"$$retval_13_99" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_13" + ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_13_99" } define internal { i8*, i8* }* @"$fundef_10"(%"$$fundef_10_env_54"* %0, { i8*, i8* }* %1) { entry: %"$retval_11" = alloca { i8*, i8* }* - %"$$fundef_12_envp_62_load" = load i8*, i8** @_execptr - %"$$fundef_12_envp_62_salloc" = call i8* @_salloc(i8* %"$$fundef_12_envp_62_load", i64 8) - %"$$fundef_12_envp_62" = bitcast i8* %"$$fundef_12_envp_62_salloc" to %"$$fundef_12_env_53"* - %"$$fundef_12_env_voidp_64" = bitcast %"$$fundef_12_env_53"* %"$$fundef_12_envp_62" to i8* - %"$$fundef_12_cloval_65" = insertvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %Uint32)*, i8* } (%"$$fundef_12_env_53"*)* @"$fundef_12" to { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_12_env_voidp_64", 1 - %"$$fundef_12_env_n_66" = getelementptr inbounds %"$$fundef_12_env_53", %"$$fundef_12_env_53"* %"$$fundef_12_envp_62", i32 0, i32 0 - store { i8*, i8* }* %1, { i8*, i8* }** %"$$fundef_12_env_n_66" - %"$dyndisp_table_67_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_67_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_67_salloc_load", i64 16) - %"$dyndisp_table_67_salloc" = bitcast i8* %"$dyndisp_table_67_salloc_salloc" to [1 x { i8*, i8* }]* - %"$dyndisp_table_67" = bitcast [1 x { i8*, i8* }]* %"$dyndisp_table_67_salloc" to { i8*, i8* }* - %"$dyndisp_gep_68" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_67", i32 0 - %"$dyndisp_pcast_69" = bitcast { i8*, i8* }* %"$dyndisp_gep_68" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$$fundef_12_cloval_65", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_69" - store { i8*, i8* }* %"$dyndisp_table_67", { i8*, i8* }** %"$retval_11" - %"$$retval_11_70" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_11" - ret { i8*, i8* }* %"$$retval_11_70" + %"$gasrem_72" = load i64, i64* @_gasrem + %"$gascmp_73" = icmp ugt i64 1, %"$gasrem_72" + br i1 %"$gascmp_73", label %"$out_of_gas_74", label %"$have_gas_75" + +"$out_of_gas_74": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_75" + +"$have_gas_75": ; preds = %"$out_of_gas_74", %entry + %"$consume_76" = sub i64 %"$gasrem_72", 1 + store i64 %"$consume_76", i64* @_gasrem + %"$$fundef_12_envp_77_load" = load i8*, i8** @_execptr + %"$$fundef_12_envp_77_salloc" = call i8* @_salloc(i8* %"$$fundef_12_envp_77_load", i64 8) + %"$$fundef_12_envp_77" = bitcast i8* %"$$fundef_12_envp_77_salloc" to %"$$fundef_12_env_53"* + %"$$fundef_12_env_voidp_79" = bitcast %"$$fundef_12_env_53"* %"$$fundef_12_envp_77" to i8* + %"$$fundef_12_cloval_80" = insertvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %Uint32)*, i8* } (%"$$fundef_12_env_53"*)* @"$fundef_12" to { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_12_env_voidp_79", 1 + %"$$fundef_12_env_n_81" = getelementptr inbounds %"$$fundef_12_env_53", %"$$fundef_12_env_53"* %"$$fundef_12_envp_77", i32 0, i32 0 + store { i8*, i8* }* %1, { i8*, i8* }** %"$$fundef_12_env_n_81" + %"$dyndisp_table_82_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_82_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_82_salloc_load", i64 16) + %"$dyndisp_table_82_salloc" = bitcast i8* %"$dyndisp_table_82_salloc_salloc" to [1 x { i8*, i8* }]* + %"$dyndisp_table_82" = bitcast [1 x { i8*, i8* }]* %"$dyndisp_table_82_salloc" to { i8*, i8* }* + %"$dyndisp_gep_83" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_82", i32 0 + %"$dyndisp_pcast_84" = bitcast { i8*, i8* }* %"$dyndisp_gep_83" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$$fundef_12_cloval_80", { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_84" + store { i8*, i8* }* %"$dyndisp_table_82", { i8*, i8* }** %"$retval_11" + %"$$retval_11_85" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_11" + ret { i8*, i8* }* %"$$retval_11_85" } define internal %Uint32 @"$fundef_8"(%"$$fundef_8_env_55"* %0, %Uint32 %1) { entry: %"$retval_9" = alloca %Uint32 + %"$gasrem_66" = load i64, i64* @_gasrem + %"$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 store %Uint32 %1, %Uint32* %"$retval_9" - %"$$retval_9_61" = load %Uint32, %Uint32* %"$retval_9" - ret %Uint32 %"$$retval_9_61" + %"$$retval_9_71" = load %Uint32, %Uint32* %"$retval_9" + ret %Uint32 %"$$retval_9_71" } define internal { %Uint32 (i8*, %Uint32)*, i8* } @"$fundef_6"(%"$$fundef_6_env_56"* %0) { entry: %"$retval_7" = alloca { %Uint32 (i8*, %Uint32)*, i8* } + %"$gasrem_57" = load i64, i64* @_gasrem + %"$gascmp_58" = icmp ugt i64 1, %"$gasrem_57" + br i1 %"$gascmp_58", label %"$out_of_gas_59", label %"$have_gas_60" + +"$out_of_gas_59": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_60" + +"$have_gas_60": ; preds = %"$out_of_gas_59", %entry + %"$consume_61" = sub i64 %"$gasrem_57", 1 + store i64 %"$consume_61", i64* @_gasrem store { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_8_env_55"*, %Uint32)* @"$fundef_8" to %Uint32 (i8*, %Uint32)*), i8* null }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_7" - %"$$retval_7_60" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_7" - ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_7_60" + %"$$retval_7_65" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_7" + ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_7_65" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) define void @_init_libs() { @@ -187,63 +344,184 @@ entry: ret void } -define internal %Uint32 @"$scilla_expr_109"(i8* %0) { +define internal %Uint32 @"$scilla_expr_179"(i8* %0) { entry: %"$expr_5" = alloca %Uint32 + %"$gasrem_180" = load i64, i64* @_gasrem + %"$gascmp_181" = icmp ugt i64 1, %"$gasrem_180" + br i1 %"$gascmp_181", label %"$out_of_gas_182", label %"$have_gas_183" + +"$out_of_gas_182": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_183" + +"$have_gas_183": ; preds = %"$out_of_gas_182", %entry + %"$consume_184" = sub i64 %"$gasrem_180", 1 + store i64 %"$consume_184", i64* @_gasrem %c1 = alloca { i8*, i8* }* - %"$dyndisp_table_113_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_113_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_113_salloc_load", i64 16) - %"$dyndisp_table_113_salloc" = bitcast i8* %"$dyndisp_table_113_salloc_salloc" to [1 x { i8*, i8* }]* - %"$dyndisp_table_113" = bitcast [1 x { i8*, i8* }]* %"$dyndisp_table_113_salloc" to { i8*, i8* }* - %"$dyndisp_gep_114" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_113", i32 0 - %"$dyndisp_pcast_115" = bitcast { i8*, i8* }* %"$dyndisp_gep_114" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %Uint32)*, i8* } (%"$$fundef_6_env_56"*)* @"$fundef_6" to { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*), i8* null }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_115" - store { i8*, i8* }* %"$dyndisp_table_113", { i8*, i8* }** %c1 + %"$gasrem_185" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_183" + call void @_out_of_gas() + br label %"$have_gas_188" + +"$have_gas_188": ; preds = %"$out_of_gas_187", %"$have_gas_183" + %"$consume_189" = sub i64 %"$gasrem_185", 1 + store i64 %"$consume_189", i64* @_gasrem + %"$dyndisp_table_193_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_193_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_193_salloc_load", i64 16) + %"$dyndisp_table_193_salloc" = bitcast i8* %"$dyndisp_table_193_salloc_salloc" to [1 x { i8*, i8* }]* + %"$dyndisp_table_193" = bitcast [1 x { i8*, i8* }]* %"$dyndisp_table_193_salloc" to { i8*, i8* }* + %"$dyndisp_gep_194" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_193", i32 0 + %"$dyndisp_pcast_195" = bitcast { i8*, i8* }* %"$dyndisp_gep_194" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %Uint32)*, i8* } (%"$$fundef_6_env_56"*)* @"$fundef_6" to { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*), i8* null }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_195" + store { i8*, i8* }* %"$dyndisp_table_193", { i8*, i8* }** %c1 + %"$gasrem_196" = load i64, i64* @_gasrem + %"$gascmp_197" = icmp ugt i64 1, %"$gasrem_196" + br i1 %"$gascmp_197", label %"$out_of_gas_198", label %"$have_gas_199" + +"$out_of_gas_198": ; preds = %"$have_gas_188" + call void @_out_of_gas() + br label %"$have_gas_199" + +"$have_gas_199": ; preds = %"$out_of_gas_198", %"$have_gas_188" + %"$consume_200" = sub i64 %"$gasrem_196", 1 + store i64 %"$consume_200", i64* @_gasrem %app_arg = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } + %"$gasrem_201" = load i64, i64* @_gasrem + %"$gascmp_202" = icmp ugt i64 1, %"$gasrem_201" + br i1 %"$gascmp_202", label %"$out_of_gas_203", label %"$have_gas_204" + +"$out_of_gas_203": ; preds = %"$have_gas_199" + call void @_out_of_gas() + br label %"$have_gas_204" + +"$have_gas_204": ; preds = %"$out_of_gas_203", %"$have_gas_199" + %"$consume_205" = sub i64 %"$gasrem_201", 1 + store i64 %"$consume_205", i64* @_gasrem store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } { { i8*, i8* }* (i8*, { i8*, i8* }*)* bitcast ({ i8*, i8* }* (%"$$fundef_10_env_54"*, { i8*, i8* }*)* @"$fundef_10" to { i8*, i8* }* (i8*, { i8*, i8* }*)*), i8* null }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %app_arg + %"$gasrem_209" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_204" + call void @_out_of_gas() + br label %"$have_gas_212" + +"$have_gas_212": ; preds = %"$out_of_gas_211", %"$have_gas_204" + %"$consume_213" = sub i64 %"$gasrem_209", 1 + store i64 %"$consume_213", i64* @_gasrem %start = alloca { %Uint32 (i8*, { i8*, i8* }*)*, i8* } + %"$gasrem_214" = load i64, i64* @_gasrem + %"$gascmp_215" = icmp ugt i64 1, %"$gasrem_214" + br i1 %"$gascmp_215", label %"$out_of_gas_216", label %"$have_gas_217" + +"$out_of_gas_216": ; preds = %"$have_gas_212" + call void @_out_of_gas() + br label %"$have_gas_217" + +"$have_gas_217": ; preds = %"$out_of_gas_216", %"$have_gas_212" + %"$consume_218" = sub i64 %"$gasrem_214", 1 + store i64 %"$consume_218", i64* @_gasrem store { %Uint32 (i8*, { i8*, i8* }*)*, i8* } { %Uint32 (i8*, { i8*, i8* }*)* bitcast (%Uint32 (%"$$fundef_16_env_51"*, { i8*, i8* }*)* @"$fundef_16" to %Uint32 (i8*, { i8*, i8* }*)*), i8* null }, { %Uint32 (i8*, { i8*, i8* }*)*, i8* }* %start + %"$gasrem_222" = load i64, i64* @_gasrem + %"$gascmp_223" = icmp ugt i64 1, %"$gasrem_222" + br i1 %"$gascmp_223", label %"$out_of_gas_224", label %"$have_gas_225" + +"$out_of_gas_224": ; preds = %"$have_gas_217" + call void @_out_of_gas() + br label %"$have_gas_225" + +"$have_gas_225": ; preds = %"$out_of_gas_224", %"$have_gas_217" + %"$consume_226" = sub i64 %"$gasrem_222", 1 + store i64 %"$consume_226", i64* @_gasrem %c2 = alloca { i8*, i8* }* + %"$gasrem_227" = load i64, i64* @_gasrem + %"$gascmp_228" = icmp ugt i64 1, %"$gasrem_227" + br i1 %"$gascmp_228", label %"$out_of_gas_229", label %"$have_gas_230" + +"$out_of_gas_229": ; preds = %"$have_gas_225" + call void @_out_of_gas() + br label %"$have_gas_230" + +"$have_gas_230": ; preds = %"$out_of_gas_229", %"$have_gas_225" + %"$consume_231" = sub i64 %"$gasrem_227", 1 + store i64 %"$consume_231", i64* @_gasrem %"$app_arg_2" = alloca { i8*, i8* }* - %"$app_arg_122" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %app_arg - %"$app_arg_fptr_123" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$app_arg_122", 0 - %"$app_arg_envptr_124" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$app_arg_122", 1 - %"$c1_125" = load { i8*, i8* }*, { i8*, i8* }** %c1 - %"$app_arg_call_126" = call { i8*, i8* }* %"$app_arg_fptr_123"(i8* %"$app_arg_envptr_124", { i8*, i8* }* %"$c1_125") - store { i8*, i8* }* %"$app_arg_call_126", { i8*, i8* }** %"$app_arg_2" - %"$$app_arg_2_127" = load { i8*, i8* }*, { i8*, i8* }** %"$app_arg_2" - store { i8*, i8* }* %"$$app_arg_2_127", { i8*, i8* }** %c2 + %"$app_arg_232" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %app_arg + %"$app_arg_fptr_233" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$app_arg_232", 0 + %"$app_arg_envptr_234" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$app_arg_232", 1 + %"$c1_235" = load { i8*, i8* }*, { i8*, i8* }** %c1 + %"$app_arg_call_236" = call { i8*, i8* }* %"$app_arg_fptr_233"(i8* %"$app_arg_envptr_234", { i8*, i8* }* %"$c1_235") + store { i8*, i8* }* %"$app_arg_call_236", { i8*, i8* }** %"$app_arg_2" + %"$$app_arg_2_237" = load { i8*, i8* }*, { i8*, i8* }** %"$app_arg_2" + store { i8*, i8* }* %"$$app_arg_2_237", { i8*, i8* }** %c2 + %"$gasrem_238" = load i64, i64* @_gasrem + %"$gascmp_239" = icmp ugt i64 1, %"$gasrem_238" + br i1 %"$gascmp_239", label %"$out_of_gas_240", label %"$have_gas_241" + +"$out_of_gas_240": ; preds = %"$have_gas_230" + call void @_out_of_gas() + br label %"$have_gas_241" + +"$have_gas_241": ; preds = %"$out_of_gas_240", %"$have_gas_230" + %"$consume_242" = sub i64 %"$gasrem_238", 1 + store i64 %"$consume_242", i64* @_gasrem %c3 = alloca { i8*, i8* }* + %"$gasrem_243" = load i64, i64* @_gasrem + %"$gascmp_244" = icmp ugt i64 1, %"$gasrem_243" + br i1 %"$gascmp_244", label %"$out_of_gas_245", label %"$have_gas_246" + +"$out_of_gas_245": ; preds = %"$have_gas_241" + call void @_out_of_gas() + br label %"$have_gas_246" + +"$have_gas_246": ; preds = %"$out_of_gas_245", %"$have_gas_241" + %"$consume_247" = sub i64 %"$gasrem_243", 1 + store i64 %"$consume_247", i64* @_gasrem %"$app_arg_3" = alloca { i8*, i8* }* - %"$app_arg_128" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %app_arg - %"$app_arg_fptr_129" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$app_arg_128", 0 - %"$app_arg_envptr_130" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$app_arg_128", 1 - %"$c2_131" = load { i8*, i8* }*, { i8*, i8* }** %c2 - %"$app_arg_call_132" = call { i8*, i8* }* %"$app_arg_fptr_129"(i8* %"$app_arg_envptr_130", { i8*, i8* }* %"$c2_131") - store { i8*, i8* }* %"$app_arg_call_132", { i8*, i8* }** %"$app_arg_3" - %"$$app_arg_3_133" = load { i8*, i8* }*, { i8*, i8* }** %"$app_arg_3" - store { i8*, i8* }* %"$$app_arg_3_133", { i8*, i8* }** %c3 + %"$app_arg_248" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %app_arg + %"$app_arg_fptr_249" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$app_arg_248", 0 + %"$app_arg_envptr_250" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$app_arg_248", 1 + %"$c2_251" = load { i8*, i8* }*, { i8*, i8* }** %c2 + %"$app_arg_call_252" = call { i8*, i8* }* %"$app_arg_fptr_249"(i8* %"$app_arg_envptr_250", { i8*, i8* }* %"$c2_251") + store { i8*, i8* }* %"$app_arg_call_252", { i8*, i8* }** %"$app_arg_3" + %"$$app_arg_3_253" = load { i8*, i8* }*, { i8*, i8* }** %"$app_arg_3" + store { i8*, i8* }* %"$$app_arg_3_253", { i8*, i8* }** %c3 + %"$gasrem_254" = load i64, i64* @_gasrem + %"$gascmp_255" = icmp ugt i64 1, %"$gasrem_254" + br i1 %"$gascmp_255", label %"$out_of_gas_256", label %"$have_gas_257" + +"$out_of_gas_256": ; preds = %"$have_gas_246" + call void @_out_of_gas() + br label %"$have_gas_257" + +"$have_gas_257": ; preds = %"$out_of_gas_256", %"$have_gas_246" + %"$consume_258" = sub i64 %"$gasrem_254", 1 + store i64 %"$consume_258", i64* @_gasrem %"$start_4" = alloca %Uint32 - %"$start_134" = load { %Uint32 (i8*, { i8*, i8* }*)*, i8* }, { %Uint32 (i8*, { i8*, i8* }*)*, i8* }* %start - %"$start_fptr_135" = extractvalue { %Uint32 (i8*, { i8*, i8* }*)*, i8* } %"$start_134", 0 - %"$start_envptr_136" = extractvalue { %Uint32 (i8*, { i8*, i8* }*)*, i8* } %"$start_134", 1 - %"$c3_137" = load { i8*, i8* }*, { i8*, i8* }** %c3 - %"$start_call_138" = call %Uint32 %"$start_fptr_135"(i8* %"$start_envptr_136", { i8*, i8* }* %"$c3_137") - store %Uint32 %"$start_call_138", %Uint32* %"$start_4" - %"$$start_4_139" = load %Uint32, %Uint32* %"$start_4" - store %Uint32 %"$$start_4_139", %Uint32* %"$expr_5" - %"$$expr_5_140" = load %Uint32, %Uint32* %"$expr_5" - ret %Uint32 %"$$expr_5_140" + %"$start_259" = load { %Uint32 (i8*, { i8*, i8* }*)*, i8* }, { %Uint32 (i8*, { i8*, i8* }*)*, i8* }* %start + %"$start_fptr_260" = extractvalue { %Uint32 (i8*, { i8*, i8* }*)*, i8* } %"$start_259", 0 + %"$start_envptr_261" = extractvalue { %Uint32 (i8*, { i8*, i8* }*)*, i8* } %"$start_259", 1 + %"$c3_262" = load { i8*, i8* }*, { i8*, i8* }** %c3 + %"$start_call_263" = call %Uint32 %"$start_fptr_260"(i8* %"$start_envptr_261", { i8*, i8* }* %"$c3_262") + store %Uint32 %"$start_call_263", %Uint32* %"$start_4" + %"$$start_4_264" = load %Uint32, %Uint32* %"$start_4" + store %Uint32 %"$$start_4_264", %Uint32* %"$expr_5" + %"$$expr_5_265" = load %Uint32, %Uint32* %"$expr_5" + ret %Uint32 %"$$expr_5_265" } declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_141" = call %Uint32 @"$scilla_expr_109"(i8* null) - %"$pval_142" = alloca %Uint32 - %"$memvoidcast_143" = bitcast %Uint32* %"$pval_142" to i8* - store %Uint32 %"$exprval_141", %Uint32* %"$pval_142" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_22", i8* %"$memvoidcast_143") + %"$exprval_266" = call %Uint32 @"$scilla_expr_179"(i8* null) + %"$pval_267" = alloca %Uint32 + %"$memvoidcast_268" = bitcast %Uint32* %"$pval_267" to i8* + store %Uint32 %"$exprval_266", %Uint32* %"$pval_267" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_22", i8* %"$memvoidcast_268") ret void } diff --git a/testsuite/expr/cn.ll.result b/testsuite/expr/cn.ll.result index b6b00342..a6e3cf61 100644 --- a/testsuite/expr/cn.ll.result +++ b/testsuite/expr/cn.ll.result @@ -1 +1,2 @@ 0 : Uint32 +Gas remaining: 9999968 diff --git a/testsuite/expr/fib.ll b/testsuite/expr/fib.ll index d244ec16..c67966aa 100644 --- a/testsuite/expr/fib.ll +++ b/testsuite/expr/fib.ll @@ -56,6 +56,7 @@ target triple = "x86_64-pc-linux-gnu" %"$$fundef_11_env_88" = type {} @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_27" = global %"$TyDescrTy_PrimTyp_26" zeroinitializer @"$TyDescr_Int32_28" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_26"* @"$TyDescr_Int32_Prim_27" to i8*) } @"$TyDescr_Uint32_Prim_29" = global %"$TyDescrTy_PrimTyp_26" { i32 1, i32 0 } @@ -111,297 +112,618 @@ target triple = "x86_64-pc-linux-gnu" define internal %TName_Pair_Int32_Int32* @"$fundef_24"(%"$$fundef_24_env_82"* %0, %TName_Nat* %1) { entry: - %"$$fundef_24_env_res_210" = getelementptr inbounds %"$$fundef_24_env_82", %"$$fundef_24_env_82"* %0, i32 0, i32 0 - %"$res_envload_211" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %"$$fundef_24_env_res_210" + %"$$fundef_24_env_res_340" = getelementptr inbounds %"$$fundef_24_env_82", %"$$fundef_24_env_82"* %0, i32 0, i32 0 + %"$res_envload_341" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %"$$fundef_24_env_res_340" %res = alloca %TName_Pair_Int32_Int32* - store %TName_Pair_Int32_Int32* %"$res_envload_211", %TName_Pair_Int32_Int32** %res + store %TName_Pair_Int32_Int32* %"$res_envload_341", %TName_Pair_Int32_Int32** %res %"$retval_25" = alloca %TName_Pair_Int32_Int32* - %"$res_213" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %res - %"$res_tag_214" = getelementptr inbounds %TName_Pair_Int32_Int32, %TName_Pair_Int32_Int32* %"$res_213", i32 0, i32 0 - %"$res_tag_215" = load i8, i8* %"$res_tag_214" - switch i8 %"$res_tag_215", label %"$empty_default_216" [ - i8 0, label %"$Pair_217" + %"$gasrem_342" = load i64, i64* @_gasrem + %"$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 = %entry + call void @_out_of_gas() + br label %"$have_gas_345" + +"$have_gas_345": ; preds = %"$out_of_gas_344", %entry + %"$consume_346" = sub i64 %"$gasrem_342", 1 + store i64 %"$consume_346", i64* @_gasrem + %"$res_348" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %res + %"$res_tag_349" = getelementptr inbounds %TName_Pair_Int32_Int32, %TName_Pair_Int32_Int32* %"$res_348", i32 0, i32 0 + %"$res_tag_350" = load i8, i8* %"$res_tag_349" + switch i8 %"$res_tag_350", label %"$empty_default_351" [ + i8 0, label %"$Pair_352" ] -"$Pair_217": ; preds = %entry - %"$res_218" = bitcast %TName_Pair_Int32_Int32* %"$res_213" to %CName_Pair_Int32_Int32* - %"$x_gep_219" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$res_218", i32 0, i32 1 - %"$x_load_220" = load %Int32, %Int32* %"$x_gep_219" +"$Pair_352": ; preds = %"$have_gas_345" + %"$res_353" = bitcast %TName_Pair_Int32_Int32* %"$res_348" to %CName_Pair_Int32_Int32* + %"$x_gep_354" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$res_353", i32 0, i32 1 + %"$x_load_355" = load %Int32, %Int32* %"$x_gep_354" %x = alloca %Int32 - store %Int32 %"$x_load_220", %Int32* %x - %"$y_gep_221" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$res_218", i32 0, i32 2 - %"$y_load_222" = load %Int32, %Int32* %"$y_gep_221" + store %Int32 %"$x_load_355", %Int32* %x + %"$y_gep_356" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$res_353", i32 0, i32 2 + %"$y_load_357" = load %Int32, %Int32* %"$y_gep_356" %y = alloca %Int32 - store %Int32 %"$y_load_222", %Int32* %y + store %Int32 %"$y_load_357", %Int32* %y + %"$gasrem_358" = load i64, i64* @_gasrem + %"$gascmp_359" = icmp ugt i64 1, %"$gasrem_358" + br i1 %"$gascmp_359", label %"$out_of_gas_360", label %"$have_gas_361" + +"$out_of_gas_360": ; preds = %"$Pair_352" + call void @_out_of_gas() + br label %"$have_gas_361" + +"$have_gas_361": ; preds = %"$out_of_gas_360", %"$Pair_352" + %"$consume_362" = sub i64 %"$gasrem_358", 1 + store i64 %"$consume_362", i64* @_gasrem %z = alloca %Int32 - %"$x_223" = load %Int32, %Int32* %x - %"$y_224" = load %Int32, %Int32* %y - %"$add_call_225" = call %Int32 @_add_Int32(%Int32 %"$x_223", %Int32 %"$y_224") - store %Int32 %"$add_call_225", %Int32* %z - %"$z_226" = load %Int32, %Int32* %z - %"$x_227" = load %Int32, %Int32* %x - %"$adtval_228_load" = load i8*, i8** @_execptr - %"$adtval_228_salloc" = call i8* @_salloc(i8* %"$adtval_228_load", i64 9) - %"$adtval_228" = bitcast i8* %"$adtval_228_salloc" to %CName_Pair_Int32_Int32* - %"$adtgep_229" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$adtval_228", i32 0, i32 0 - store i8 0, i8* %"$adtgep_229" - %"$adtgep_230" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$adtval_228", i32 0, i32 1 - store %Int32 %"$z_226", %Int32* %"$adtgep_230" - %"$adtgep_231" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$adtval_228", i32 0, i32 2 - store %Int32 %"$x_227", %Int32* %"$adtgep_231" - %"$adtptr_232" = bitcast %CName_Pair_Int32_Int32* %"$adtval_228" to %TName_Pair_Int32_Int32* - store %TName_Pair_Int32_Int32* %"$adtptr_232", %TName_Pair_Int32_Int32** %"$retval_25" - br label %"$matchsucc_212" - -"$empty_default_216": ; preds = %entry - br label %"$matchsucc_212" - -"$matchsucc_212": ; preds = %"$Pair_217", %"$empty_default_216" - %"$$retval_25_233" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %"$retval_25" - ret %TName_Pair_Int32_Int32* %"$$retval_25_233" + %"$x_363" = load %Int32, %Int32* %x + %"$y_364" = load %Int32, %Int32* %y + %"$add_call_365" = call %Int32 @_add_Int32(%Int32 %"$x_363", %Int32 %"$y_364") + store %Int32 %"$add_call_365", %Int32* %z + %"$gasrem_366" = load i64, i64* @_gasrem + %"$gascmp_367" = icmp ugt i64 1, %"$gasrem_366" + br i1 %"$gascmp_367", label %"$out_of_gas_368", label %"$have_gas_369" + +"$out_of_gas_368": ; preds = %"$have_gas_361" + call void @_out_of_gas() + br label %"$have_gas_369" + +"$have_gas_369": ; preds = %"$out_of_gas_368", %"$have_gas_361" + %"$consume_370" = sub i64 %"$gasrem_366", 1 + store i64 %"$consume_370", i64* @_gasrem + %"$z_371" = load %Int32, %Int32* %z + %"$x_372" = load %Int32, %Int32* %x + %"$adtval_373_load" = load i8*, i8** @_execptr + %"$adtval_373_salloc" = call i8* @_salloc(i8* %"$adtval_373_load", i64 9) + %"$adtval_373" = bitcast i8* %"$adtval_373_salloc" to %CName_Pair_Int32_Int32* + %"$adtgep_374" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$adtval_373", i32 0, i32 0 + store i8 0, i8* %"$adtgep_374" + %"$adtgep_375" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$adtval_373", i32 0, i32 1 + store %Int32 %"$z_371", %Int32* %"$adtgep_375" + %"$adtgep_376" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$adtval_373", i32 0, i32 2 + store %Int32 %"$x_372", %Int32* %"$adtgep_376" + %"$adtptr_377" = bitcast %CName_Pair_Int32_Int32* %"$adtval_373" to %TName_Pair_Int32_Int32* + store %TName_Pair_Int32_Int32* %"$adtptr_377", %TName_Pair_Int32_Int32** %"$retval_25" + br label %"$matchsucc_347" + +"$empty_default_351": ; preds = %"$have_gas_345" + br label %"$matchsucc_347" + +"$matchsucc_347": ; preds = %"$have_gas_369", %"$empty_default_351" + %"$$retval_25_378" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %"$retval_25" + ret %TName_Pair_Int32_Int32* %"$$retval_25_378" } define internal { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } @"$fundef_22"(%"$$fundef_22_env_83"* %0, %TName_Pair_Int32_Int32* %1) { entry: %"$retval_23" = alloca { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } - %"$$fundef_24_envp_204_load" = load i8*, i8** @_execptr - %"$$fundef_24_envp_204_salloc" = call i8* @_salloc(i8* %"$$fundef_24_envp_204_load", i64 8) - %"$$fundef_24_envp_204" = bitcast i8* %"$$fundef_24_envp_204_salloc" to %"$$fundef_24_env_82"* - %"$$fundef_24_env_voidp_206" = bitcast %"$$fundef_24_env_82"* %"$$fundef_24_envp_204" to i8* - %"$$fundef_24_cloval_207" = insertvalue { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)* bitcast (%TName_Pair_Int32_Int32* (%"$$fundef_24_env_82"*, %TName_Nat*)* @"$fundef_24" to %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_24_env_voidp_206", 1 - %"$$fundef_24_env_res_208" = getelementptr inbounds %"$$fundef_24_env_82", %"$$fundef_24_env_82"* %"$$fundef_24_envp_204", i32 0, i32 0 - store %TName_Pair_Int32_Int32* %1, %TName_Pair_Int32_Int32** %"$$fundef_24_env_res_208" - store { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$fundef_24_cloval_207", { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$retval_23" - %"$$retval_23_209" = load { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }, { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$retval_23" - ret { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$retval_23_209" + %"$gasrem_329" = load i64, i64* @_gasrem + %"$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 + %"$$fundef_24_envp_334_load" = load i8*, i8** @_execptr + %"$$fundef_24_envp_334_salloc" = call i8* @_salloc(i8* %"$$fundef_24_envp_334_load", i64 8) + %"$$fundef_24_envp_334" = bitcast i8* %"$$fundef_24_envp_334_salloc" to %"$$fundef_24_env_82"* + %"$$fundef_24_env_voidp_336" = bitcast %"$$fundef_24_env_82"* %"$$fundef_24_envp_334" to i8* + %"$$fundef_24_cloval_337" = insertvalue { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)* bitcast (%TName_Pair_Int32_Int32* (%"$$fundef_24_env_82"*, %TName_Nat*)* @"$fundef_24" to %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_24_env_voidp_336", 1 + %"$$fundef_24_env_res_338" = getelementptr inbounds %"$$fundef_24_env_82", %"$$fundef_24_env_82"* %"$$fundef_24_envp_334", i32 0, i32 0 + store %TName_Pair_Int32_Int32* %1, %TName_Pair_Int32_Int32** %"$$fundef_24_env_res_338" + store { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$fundef_24_cloval_337", { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$retval_23" + %"$$retval_23_339" = load { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }, { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$retval_23" + ret { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$retval_23_339" } define internal %Int32 @"$fundef_20"(%"$$fundef_20_env_84"* %0, %TName_Nat* %1) { entry: - %"$$fundef_20_env_nat_fold_156" = getelementptr inbounds %"$$fundef_20_env_84", %"$$fundef_20_env_84"* %0, i32 0, i32 0 - %"$nat_fold_envload_157" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_20_env_nat_fold_156" + %"$$fundef_20_env_nat_fold_201" = getelementptr inbounds %"$$fundef_20_env_84", %"$$fundef_20_env_84"* %0, i32 0, i32 0 + %"$nat_fold_envload_202" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_20_env_nat_fold_201" %nat_fold = alloca { i8*, i8* }* - store { i8*, i8* }* %"$nat_fold_envload_157", { i8*, i8* }** %nat_fold + store { i8*, i8* }* %"$nat_fold_envload_202", { i8*, i8* }** %nat_fold %"$retval_21" = alloca %Int32 + %"$gasrem_203" = load i64, i64* @_gasrem + %"$gascmp_204" = icmp ugt i64 1, %"$gasrem_203" + br i1 %"$gascmp_204", label %"$out_of_gas_205", label %"$have_gas_206" + +"$out_of_gas_205": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_206" + +"$have_gas_206": ; preds = %"$out_of_gas_205", %entry + %"$consume_207" = sub i64 %"$gasrem_203", 1 + store i64 %"$consume_207", i64* @_gasrem %iter_fun = alloca { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } + %"$gasrem_208" = load i64, i64* @_gasrem + %"$gascmp_209" = icmp ugt i64 1, %"$gasrem_208" + br i1 %"$gascmp_209", label %"$out_of_gas_210", label %"$have_gas_211" + +"$out_of_gas_210": ; preds = %"$have_gas_206" + call void @_out_of_gas() + br label %"$have_gas_211" + +"$have_gas_211": ; preds = %"$out_of_gas_210", %"$have_gas_206" + %"$consume_212" = sub i64 %"$gasrem_208", 1 + store i64 %"$consume_212", i64* @_gasrem store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)* bitcast ({ %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_22_env_83"*, %TName_Pair_Int32_Int32*)* @"$fundef_22" to { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*), i8* null }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %iter_fun + %"$gasrem_216" = load i64, i64* @_gasrem + %"$gascmp_217" = icmp ugt i64 1, %"$gasrem_216" + br i1 %"$gascmp_217", label %"$out_of_gas_218", label %"$have_gas_219" + +"$out_of_gas_218": ; preds = %"$have_gas_211" + call void @_out_of_gas() + br label %"$have_gas_219" + +"$have_gas_219": ; preds = %"$out_of_gas_218", %"$have_gas_211" + %"$consume_220" = sub i64 %"$gasrem_216", 1 + store i64 %"$consume_220", i64* @_gasrem %"$zero_1" = alloca %Int32 + %"$gasrem_221" = load i64, i64* @_gasrem + %"$gascmp_222" = icmp ugt i64 1, %"$gasrem_221" + br i1 %"$gascmp_222", label %"$out_of_gas_223", label %"$have_gas_224" + +"$out_of_gas_223": ; preds = %"$have_gas_219" + call void @_out_of_gas() + br label %"$have_gas_224" + +"$have_gas_224": ; preds = %"$out_of_gas_223", %"$have_gas_219" + %"$consume_225" = sub i64 %"$gasrem_221", 1 + store i64 %"$consume_225", i64* @_gasrem store %Int32 zeroinitializer, %Int32* %"$zero_1" + %"$gasrem_226" = load i64, i64* @_gasrem + %"$gascmp_227" = icmp ugt i64 1, %"$gasrem_226" + br i1 %"$gascmp_227", label %"$out_of_gas_228", label %"$have_gas_229" + +"$out_of_gas_228": ; preds = %"$have_gas_224" + call void @_out_of_gas() + br label %"$have_gas_229" + +"$have_gas_229": ; preds = %"$out_of_gas_228", %"$have_gas_224" + %"$consume_230" = sub i64 %"$gasrem_226", 1 + store i64 %"$consume_230", i64* @_gasrem %"$one_2" = alloca %Int32 + %"$gasrem_231" = load i64, i64* @_gasrem + %"$gascmp_232" = icmp ugt i64 1, %"$gasrem_231" + br i1 %"$gascmp_232", label %"$out_of_gas_233", label %"$have_gas_234" + +"$out_of_gas_233": ; preds = %"$have_gas_229" + call void @_out_of_gas() + br label %"$have_gas_234" + +"$have_gas_234": ; preds = %"$out_of_gas_233", %"$have_gas_229" + %"$consume_235" = sub i64 %"$gasrem_231", 1 + store i64 %"$consume_235", i64* @_gasrem store %Int32 { i32 1 }, %Int32* %"$one_2" + %"$gasrem_236" = load i64, i64* @_gasrem + %"$gascmp_237" = icmp ugt i64 1, %"$gasrem_236" + br i1 %"$gascmp_237", label %"$out_of_gas_238", label %"$have_gas_239" + +"$out_of_gas_238": ; preds = %"$have_gas_234" + call void @_out_of_gas() + br label %"$have_gas_239" + +"$have_gas_239": ; preds = %"$out_of_gas_238", %"$have_gas_234" + %"$consume_240" = sub i64 %"$gasrem_236", 1 + store i64 %"$consume_240", i64* @_gasrem %init_val = alloca %TName_Pair_Int32_Int32* - %"$$one_2_161" = load %Int32, %Int32* %"$one_2" - %"$$zero_1_162" = load %Int32, %Int32* %"$zero_1" - %"$adtval_163_load" = load i8*, i8** @_execptr - %"$adtval_163_salloc" = call i8* @_salloc(i8* %"$adtval_163_load", i64 9) - %"$adtval_163" = bitcast i8* %"$adtval_163_salloc" to %CName_Pair_Int32_Int32* - %"$adtgep_164" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$adtval_163", i32 0, i32 0 - store i8 0, i8* %"$adtgep_164" - %"$adtgep_165" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$adtval_163", i32 0, i32 1 - store %Int32 %"$$one_2_161", %Int32* %"$adtgep_165" - %"$adtgep_166" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$adtval_163", i32 0, i32 2 - store %Int32 %"$$zero_1_162", %Int32* %"$adtgep_166" - %"$adtptr_167" = bitcast %CName_Pair_Int32_Int32* %"$adtval_163" to %TName_Pair_Int32_Int32* - store %TName_Pair_Int32_Int32* %"$adtptr_167", %TName_Pair_Int32_Int32** %init_val + %"$gasrem_241" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_239" + call void @_out_of_gas() + br label %"$have_gas_244" + +"$have_gas_244": ; preds = %"$out_of_gas_243", %"$have_gas_239" + %"$consume_245" = sub i64 %"$gasrem_241", 1 + store i64 %"$consume_245", i64* @_gasrem + %"$$one_2_246" = load %Int32, %Int32* %"$one_2" + %"$$zero_1_247" = load %Int32, %Int32* %"$zero_1" + %"$adtval_248_load" = load i8*, i8** @_execptr + %"$adtval_248_salloc" = call i8* @_salloc(i8* %"$adtval_248_load", i64 9) + %"$adtval_248" = bitcast i8* %"$adtval_248_salloc" to %CName_Pair_Int32_Int32* + %"$adtgep_249" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$adtval_248", i32 0, i32 0 + store i8 0, i8* %"$adtgep_249" + %"$adtgep_250" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$adtval_248", i32 0, i32 1 + store %Int32 %"$$one_2_246", %Int32* %"$adtgep_250" + %"$adtgep_251" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$adtval_248", i32 0, i32 2 + store %Int32 %"$$zero_1_247", %Int32* %"$adtgep_251" + %"$adtptr_252" = bitcast %CName_Pair_Int32_Int32* %"$adtval_248" to %TName_Pair_Int32_Int32* + store %TName_Pair_Int32_Int32* %"$adtptr_252", %TName_Pair_Int32_Int32** %init_val + %"$gasrem_253" = load i64, i64* @_gasrem + %"$gascmp_254" = icmp ugt i64 1, %"$gasrem_253" + br i1 %"$gascmp_254", label %"$out_of_gas_255", label %"$have_gas_256" + +"$out_of_gas_255": ; preds = %"$have_gas_244" + call void @_out_of_gas() + br label %"$have_gas_256" + +"$have_gas_256": ; preds = %"$out_of_gas_255", %"$have_gas_244" + %"$consume_257" = sub i64 %"$gasrem_253", 1 + store i64 %"$consume_257", i64* @_gasrem %typed_folder = alloca { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } - %"$nat_fold_168" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold - %"$nat_fold_169" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_fold_168", i32 0 - %"$nat_fold_170" = bitcast { i8*, i8* }* %"$nat_fold_169" to { { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)*, i8* }* - %"$nat_fold_171" = load { { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_fold_170" - %"$nat_fold_fptr_172" = extractvalue { { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_171", 0 - %"$nat_fold_envptr_173" = extractvalue { { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_171", 1 - %"$nat_fold_call_174" = call { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } %"$nat_fold_fptr_172"(i8* %"$nat_fold_envptr_173") - store { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } %"$nat_fold_call_174", { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* }* %typed_folder + %"$gasrem_258" = load i64, i64* @_gasrem + %"$gascmp_259" = icmp ugt i64 1, %"$gasrem_258" + br i1 %"$gascmp_259", label %"$out_of_gas_260", label %"$have_gas_261" + +"$out_of_gas_260": ; preds = %"$have_gas_256" + call void @_out_of_gas() + br label %"$have_gas_261" + +"$have_gas_261": ; preds = %"$out_of_gas_260", %"$have_gas_256" + %"$consume_262" = sub i64 %"$gasrem_258", 1 + store i64 %"$consume_262", i64* @_gasrem + %"$nat_fold_263" = load { i8*, i8* }*, { i8*, i8* }** %nat_fold + %"$nat_fold_264" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$nat_fold_263", i32 0 + %"$nat_fold_265" = bitcast { i8*, i8* }* %"$nat_fold_264" to { { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)*, i8* }* + %"$nat_fold_266" = load { { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)*, i8* }* %"$nat_fold_265" + %"$nat_fold_fptr_267" = extractvalue { { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_266", 0 + %"$nat_fold_envptr_268" = extractvalue { { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)*, i8* } %"$nat_fold_266", 1 + %"$nat_fold_call_269" = call { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } %"$nat_fold_fptr_267"(i8* %"$nat_fold_envptr_268") + store { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } %"$nat_fold_call_269", { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* }* %typed_folder + %"$gasrem_270" = load i64, i64* @_gasrem + %"$gascmp_271" = icmp ugt i64 1, %"$gasrem_270" + br i1 %"$gascmp_271", label %"$out_of_gas_272", label %"$have_gas_273" + +"$out_of_gas_272": ; preds = %"$have_gas_261" + call void @_out_of_gas() + br label %"$have_gas_273" + +"$have_gas_273": ; preds = %"$out_of_gas_272", %"$have_gas_261" + %"$consume_274" = sub i64 %"$gasrem_270", 1 + store i64 %"$consume_274", i64* @_gasrem %folder = alloca { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } + %"$gasrem_275" = load i64, i64* @_gasrem + %"$gascmp_276" = icmp ugt i64 1, %"$gasrem_275" + br i1 %"$gascmp_276", label %"$out_of_gas_277", label %"$have_gas_278" + +"$out_of_gas_277": ; preds = %"$have_gas_273" + call void @_out_of_gas() + br label %"$have_gas_278" + +"$have_gas_278": ; preds = %"$out_of_gas_277", %"$have_gas_273" + %"$consume_279" = sub i64 %"$gasrem_275", 1 + store i64 %"$consume_279", i64* @_gasrem %"$typed_folder_7" = alloca { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } - %"$typed_folder_175" = load { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* }, { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* }* %typed_folder - %"$typed_folder_fptr_176" = extractvalue { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } %"$typed_folder_175", 0 - %"$typed_folder_envptr_177" = extractvalue { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } %"$typed_folder_175", 1 - %"$iter_fun_178" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %iter_fun - %"$typed_folder_call_179" = call { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$typed_folder_fptr_176"(i8* %"$typed_folder_envptr_177", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$iter_fun_178") - store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$typed_folder_call_179", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$typed_folder_7" + %"$typed_folder_280" = load { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* }, { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* }* %typed_folder + %"$typed_folder_fptr_281" = extractvalue { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } %"$typed_folder_280", 0 + %"$typed_folder_envptr_282" = extractvalue { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } %"$typed_folder_280", 1 + %"$iter_fun_283" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %iter_fun + %"$typed_folder_call_284" = call { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$typed_folder_fptr_281"(i8* %"$typed_folder_envptr_282", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$iter_fun_283") + store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$typed_folder_call_284", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$typed_folder_7" %"$typed_folder_8" = alloca { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } - %"$$typed_folder_7_180" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$typed_folder_7" - %"$$typed_folder_7_fptr_181" = extractvalue { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$$typed_folder_7_180", 0 - %"$$typed_folder_7_envptr_182" = extractvalue { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$$typed_folder_7_180", 1 - %"$init_val_183" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %init_val - %"$$typed_folder_7_call_184" = call { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$typed_folder_7_fptr_181"(i8* %"$$typed_folder_7_envptr_182", %TName_Pair_Int32_Int32* %"$init_val_183") - store { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$typed_folder_7_call_184", { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$typed_folder_8" - %"$$typed_folder_8_185" = load { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }, { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$typed_folder_8" - store { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$typed_folder_8_185", { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %folder + %"$$typed_folder_7_285" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$typed_folder_7" + %"$$typed_folder_7_fptr_286" = extractvalue { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$$typed_folder_7_285", 0 + %"$$typed_folder_7_envptr_287" = extractvalue { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$$typed_folder_7_285", 1 + %"$init_val_288" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %init_val + %"$$typed_folder_7_call_289" = call { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$typed_folder_7_fptr_286"(i8* %"$$typed_folder_7_envptr_287", %TName_Pair_Int32_Int32* %"$init_val_288") + store { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$typed_folder_7_call_289", { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$typed_folder_8" + %"$$typed_folder_8_290" = load { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }, { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$typed_folder_8" + store { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$typed_folder_8_290", { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %folder + %"$gasrem_291" = load i64, i64* @_gasrem + %"$gascmp_292" = icmp ugt i64 1, %"$gasrem_291" + br i1 %"$gascmp_292", label %"$out_of_gas_293", label %"$have_gas_294" + +"$out_of_gas_293": ; preds = %"$have_gas_278" + call void @_out_of_gas() + br label %"$have_gas_294" + +"$have_gas_294": ; preds = %"$out_of_gas_293", %"$have_gas_278" + %"$consume_295" = sub i64 %"$gasrem_291", 1 + store i64 %"$consume_295", i64* @_gasrem %res = alloca %TName_Pair_Int32_Int32* + %"$gasrem_296" = load i64, i64* @_gasrem + %"$gascmp_297" = icmp ugt i64 1, %"$gasrem_296" + br i1 %"$gascmp_297", label %"$out_of_gas_298", label %"$have_gas_299" + +"$out_of_gas_298": ; preds = %"$have_gas_294" + call void @_out_of_gas() + br label %"$have_gas_299" + +"$have_gas_299": ; preds = %"$out_of_gas_298", %"$have_gas_294" + %"$consume_300" = sub i64 %"$gasrem_296", 1 + store i64 %"$consume_300", i64* @_gasrem %"$folder_9" = alloca %TName_Pair_Int32_Int32* - %"$folder_186" = load { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }, { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %folder - %"$folder_fptr_187" = extractvalue { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$folder_186", 0 - %"$folder_envptr_188" = extractvalue { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$folder_186", 1 - %"$folder_call_189" = call %TName_Pair_Int32_Int32* %"$folder_fptr_187"(i8* %"$folder_envptr_188", %TName_Nat* %1) - store %TName_Pair_Int32_Int32* %"$folder_call_189", %TName_Pair_Int32_Int32** %"$folder_9" - %"$$folder_9_190" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %"$folder_9" - store %TName_Pair_Int32_Int32* %"$$folder_9_190", %TName_Pair_Int32_Int32** %res - %"$res_192" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %res - %"$res_tag_193" = getelementptr inbounds %TName_Pair_Int32_Int32, %TName_Pair_Int32_Int32* %"$res_192", i32 0, i32 0 - %"$res_tag_194" = load i8, i8* %"$res_tag_193" - switch i8 %"$res_tag_194", label %"$empty_default_195" [ - i8 0, label %"$Pair_196" + %"$folder_301" = load { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }, { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %folder + %"$folder_fptr_302" = extractvalue { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$folder_301", 0 + %"$folder_envptr_303" = extractvalue { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$folder_301", 1 + %"$folder_call_304" = call %TName_Pair_Int32_Int32* %"$folder_fptr_302"(i8* %"$folder_envptr_303", %TName_Nat* %1) + store %TName_Pair_Int32_Int32* %"$folder_call_304", %TName_Pair_Int32_Int32** %"$folder_9" + %"$$folder_9_305" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %"$folder_9" + store %TName_Pair_Int32_Int32* %"$$folder_9_305", %TName_Pair_Int32_Int32** %res + %"$gasrem_306" = load i64, i64* @_gasrem + %"$gascmp_307" = icmp ugt i64 1, %"$gasrem_306" + br i1 %"$gascmp_307", label %"$out_of_gas_308", label %"$have_gas_309" + +"$out_of_gas_308": ; preds = %"$have_gas_299" + call void @_out_of_gas() + br label %"$have_gas_309" + +"$have_gas_309": ; preds = %"$out_of_gas_308", %"$have_gas_299" + %"$consume_310" = sub i64 %"$gasrem_306", 1 + store i64 %"$consume_310", i64* @_gasrem + %"$res_312" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %res + %"$res_tag_313" = getelementptr inbounds %TName_Pair_Int32_Int32, %TName_Pair_Int32_Int32* %"$res_312", i32 0, i32 0 + %"$res_tag_314" = load i8, i8* %"$res_tag_313" + switch i8 %"$res_tag_314", label %"$empty_default_315" [ + i8 0, label %"$Pair_316" ] -"$Pair_196": ; preds = %entry - %"$res_197" = bitcast %TName_Pair_Int32_Int32* %"$res_192" to %CName_Pair_Int32_Int32* - %"$x_gep_198" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$res_197", i32 0, i32 1 - %"$x_load_199" = load %Int32, %Int32* %"$x_gep_198" +"$Pair_316": ; preds = %"$have_gas_309" + %"$res_317" = bitcast %TName_Pair_Int32_Int32* %"$res_312" to %CName_Pair_Int32_Int32* + %"$x_gep_318" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$res_317", i32 0, i32 1 + %"$x_load_319" = load %Int32, %Int32* %"$x_gep_318" %x = alloca %Int32 - store %Int32 %"$x_load_199", %Int32* %x - %"$y_gep_200" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$res_197", i32 0, i32 2 - %"$y_load_201" = load %Int32, %Int32* %"$y_gep_200" + store %Int32 %"$x_load_319", %Int32* %x + %"$y_gep_320" = getelementptr inbounds %CName_Pair_Int32_Int32, %CName_Pair_Int32_Int32* %"$res_317", i32 0, i32 2 + %"$y_load_321" = load %Int32, %Int32* %"$y_gep_320" %y = alloca %Int32 - store %Int32 %"$y_load_201", %Int32* %y - %"$x_202" = load %Int32, %Int32* %x - store %Int32 %"$x_202", %Int32* %"$retval_21" - br label %"$matchsucc_191" + store %Int32 %"$y_load_321", %Int32* %y + %"$gasrem_322" = load i64, i64* @_gasrem + %"$gascmp_323" = icmp ugt i64 1, %"$gasrem_322" + br i1 %"$gascmp_323", label %"$out_of_gas_324", label %"$have_gas_325" -"$empty_default_195": ; preds = %entry - br label %"$matchsucc_191" +"$out_of_gas_324": ; preds = %"$Pair_316" + call void @_out_of_gas() + br label %"$have_gas_325" -"$matchsucc_191": ; preds = %"$Pair_196", %"$empty_default_195" - %"$$retval_21_203" = load %Int32, %Int32* %"$retval_21" - ret %Int32 %"$$retval_21_203" +"$have_gas_325": ; preds = %"$out_of_gas_324", %"$Pair_316" + %"$consume_326" = sub i64 %"$gasrem_322", 1 + store i64 %"$consume_326", i64* @_gasrem + %"$x_327" = load %Int32, %Int32* %x + store %Int32 %"$x_327", %Int32* %"$retval_21" + br label %"$matchsucc_311" + +"$empty_default_315": ; preds = %"$have_gas_309" + br label %"$matchsucc_311" + +"$matchsucc_311": ; preds = %"$have_gas_325", %"$empty_default_315" + %"$$retval_21_328" = load %Int32, %Int32* %"$retval_21" + ret %Int32 %"$$retval_21_328" } define internal %TName_Pair_Int32_Int32* @"$fundef_17"(%"$$fundef_17_env_85"* %0, %TName_Nat* %1) { entry: - %"$$fundef_17_env_f0_116" = getelementptr inbounds %"$$fundef_17_env_85", %"$$fundef_17_env_85"* %0, i32 0, i32 0 - %"$f0_envload_117" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %"$$fundef_17_env_f0_116" + %"$$fundef_17_env_f0_136" = getelementptr inbounds %"$$fundef_17_env_85", %"$$fundef_17_env_85"* %0, i32 0, i32 0 + %"$f0_envload_137" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %"$$fundef_17_env_f0_136" %f0 = alloca %TName_Pair_Int32_Int32* - store %TName_Pair_Int32_Int32* %"$f0_envload_117", %TName_Pair_Int32_Int32** %f0 - %"$$fundef_17_env_fn_118" = getelementptr inbounds %"$$fundef_17_env_85", %"$$fundef_17_env_85"* %0, i32 0, i32 1 - %"$fn_envload_119" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$$fundef_17_env_fn_118" + store %TName_Pair_Int32_Int32* %"$f0_envload_137", %TName_Pair_Int32_Int32** %f0 + %"$$fundef_17_env_fn_138" = getelementptr inbounds %"$$fundef_17_env_85", %"$$fundef_17_env_85"* %0, i32 0, i32 1 + %"$fn_envload_139" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$$fundef_17_env_fn_138" %fn = alloca { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } - store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$fn_envload_119", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %fn - %"$$fundef_17_env_g_120" = getelementptr inbounds %"$$fundef_17_env_85", %"$$fundef_17_env_85"* %0, i32 0, i32 2 - %"$g_envload_121" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$$fundef_17_env_g_120" + store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$fn_envload_139", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %fn + %"$$fundef_17_env_g_140" = getelementptr inbounds %"$$fundef_17_env_85", %"$$fundef_17_env_85"* %0, i32 0, i32 2 + %"$g_envload_141" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$$fundef_17_env_g_140" %g = alloca { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } - store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$g_envload_121", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %g + store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$g_envload_141", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %g %"$retval_18" = alloca %TName_Pair_Int32_Int32* - %"$n_tag_123" = getelementptr inbounds %TName_Nat, %TName_Nat* %1, i32 0, i32 0 - %"$n_tag_124" = load i8, i8* %"$n_tag_123" - switch i8 %"$n_tag_124", label %"$empty_default_125" [ - i8 1, label %"$Succ_126" - i8 0, label %"$Zero_152" + %"$gasrem_142" = load i64, i64* @_gasrem + %"$gascmp_143" = icmp ugt i64 2, %"$gasrem_142" + br i1 %"$gascmp_143", label %"$out_of_gas_144", label %"$have_gas_145" + +"$out_of_gas_144": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_145" + +"$have_gas_145": ; preds = %"$out_of_gas_144", %entry + %"$consume_146" = sub i64 %"$gasrem_142", 2 + store i64 %"$consume_146", i64* @_gasrem + %"$n_tag_148" = getelementptr inbounds %TName_Nat, %TName_Nat* %1, i32 0, i32 0 + %"$n_tag_149" = load i8, i8* %"$n_tag_148" + switch i8 %"$n_tag_149", label %"$empty_default_150" [ + i8 1, label %"$Succ_151" + i8 0, label %"$Zero_192" ] -"$Succ_126": ; preds = %entry - %"$n_127" = bitcast %TName_Nat* %1 to %CName_Succ* - %"$n1_gep_128" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$n_127", i32 0, i32 1 - %"$n1_load_129" = load %TName_Nat*, %TName_Nat** %"$n1_gep_128" +"$Succ_151": ; preds = %"$have_gas_145" + %"$n_152" = bitcast %TName_Nat* %1 to %CName_Succ* + %"$n1_gep_153" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$n_152", i32 0, i32 1 + %"$n1_load_154" = load %TName_Nat*, %TName_Nat** %"$n1_gep_153" %n1 = alloca %TName_Nat* - store %TName_Nat* %"$n1_load_129", %TName_Nat** %n1 + store %TName_Nat* %"$n1_load_154", %TName_Nat** %n1 + %"$gasrem_155" = load i64, i64* @_gasrem + %"$gascmp_156" = icmp ugt i64 1, %"$gasrem_155" + br i1 %"$gascmp_156", label %"$out_of_gas_157", label %"$have_gas_158" + +"$out_of_gas_157": ; preds = %"$Succ_151" + call void @_out_of_gas() + br label %"$have_gas_158" + +"$have_gas_158": ; preds = %"$out_of_gas_157", %"$Succ_151" + %"$consume_159" = sub i64 %"$gasrem_155", 1 + store i64 %"$consume_159", i64* @_gasrem %res = alloca %TName_Pair_Int32_Int32* + %"$gasrem_160" = load i64, i64* @_gasrem + %"$gascmp_161" = icmp ugt i64 1, %"$gasrem_160" + br i1 %"$gascmp_161", label %"$out_of_gas_162", label %"$have_gas_163" + +"$out_of_gas_162": ; preds = %"$have_gas_158" + call void @_out_of_gas() + br label %"$have_gas_163" + +"$have_gas_163": ; preds = %"$out_of_gas_162", %"$have_gas_158" + %"$consume_164" = sub i64 %"$gasrem_160", 1 + store i64 %"$consume_164", i64* @_gasrem %"$fn_3" = alloca { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } - %"$fn_130" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %fn - %"$fn_fptr_131" = extractvalue { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$fn_130", 0 - %"$fn_envptr_132" = extractvalue { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$fn_130", 1 - %"$f0_133" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %f0 - %"$fn_call_134" = call { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$fn_fptr_131"(i8* %"$fn_envptr_132", %TName_Pair_Int32_Int32* %"$f0_133") - store { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$fn_call_134", { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$fn_3" + %"$fn_165" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %fn + %"$fn_fptr_166" = extractvalue { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$fn_165", 0 + %"$fn_envptr_167" = extractvalue { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$fn_165", 1 + %"$f0_168" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %f0 + %"$fn_call_169" = call { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$fn_fptr_166"(i8* %"$fn_envptr_167", %TName_Pair_Int32_Int32* %"$f0_168") + store { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$fn_call_169", { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$fn_3" %"$fn_4" = alloca %TName_Pair_Int32_Int32* - %"$$fn_3_135" = load { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }, { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$fn_3" - %"$$fn_3_fptr_136" = extractvalue { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$fn_3_135", 0 - %"$$fn_3_envptr_137" = extractvalue { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$fn_3_135", 1 - %"$n1_138" = load %TName_Nat*, %TName_Nat** %n1 - %"$$fn_3_call_139" = call %TName_Pair_Int32_Int32* %"$$fn_3_fptr_136"(i8* %"$$fn_3_envptr_137", %TName_Nat* %"$n1_138") - store %TName_Pair_Int32_Int32* %"$$fn_3_call_139", %TName_Pair_Int32_Int32** %"$fn_4" - %"$$fn_4_140" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %"$fn_4" - store %TName_Pair_Int32_Int32* %"$$fn_4_140", %TName_Pair_Int32_Int32** %res + %"$$fn_3_170" = load { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }, { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$fn_3" + %"$$fn_3_fptr_171" = extractvalue { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$fn_3_170", 0 + %"$$fn_3_envptr_172" = extractvalue { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$fn_3_170", 1 + %"$n1_173" = load %TName_Nat*, %TName_Nat** %n1 + %"$$fn_3_call_174" = call %TName_Pair_Int32_Int32* %"$$fn_3_fptr_171"(i8* %"$$fn_3_envptr_172", %TName_Nat* %"$n1_173") + store %TName_Pair_Int32_Int32* %"$$fn_3_call_174", %TName_Pair_Int32_Int32** %"$fn_4" + %"$$fn_4_175" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %"$fn_4" + store %TName_Pair_Int32_Int32* %"$$fn_4_175", %TName_Pair_Int32_Int32** %res + %"$gasrem_176" = load i64, i64* @_gasrem + %"$gascmp_177" = icmp ugt i64 1, %"$gasrem_176" + br i1 %"$gascmp_177", label %"$out_of_gas_178", label %"$have_gas_179" + +"$out_of_gas_178": ; preds = %"$have_gas_163" + call void @_out_of_gas() + br label %"$have_gas_179" + +"$have_gas_179": ; preds = %"$out_of_gas_178", %"$have_gas_163" + %"$consume_180" = sub i64 %"$gasrem_176", 1 + store i64 %"$consume_180", i64* @_gasrem %"$g_5" = alloca { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } - %"$g_141" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %g - %"$g_fptr_142" = extractvalue { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$g_141", 0 - %"$g_envptr_143" = extractvalue { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$g_141", 1 - %"$res_144" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %res - %"$g_call_145" = call { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$g_fptr_142"(i8* %"$g_envptr_143", %TName_Pair_Int32_Int32* %"$res_144") - store { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$g_call_145", { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$g_5" + %"$g_181" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %g + %"$g_fptr_182" = extractvalue { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$g_181", 0 + %"$g_envptr_183" = extractvalue { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$g_181", 1 + %"$res_184" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %res + %"$g_call_185" = call { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$g_fptr_182"(i8* %"$g_envptr_183", %TName_Pair_Int32_Int32* %"$res_184") + store { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$g_call_185", { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$g_5" %"$g_6" = alloca %TName_Pair_Int32_Int32* - %"$$g_5_146" = load { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }, { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$g_5" - %"$$g_5_fptr_147" = extractvalue { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$g_5_146", 0 - %"$$g_5_envptr_148" = extractvalue { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$g_5_146", 1 - %"$n1_149" = load %TName_Nat*, %TName_Nat** %n1 - %"$$g_5_call_150" = call %TName_Pair_Int32_Int32* %"$$g_5_fptr_147"(i8* %"$$g_5_envptr_148", %TName_Nat* %"$n1_149") - store %TName_Pair_Int32_Int32* %"$$g_5_call_150", %TName_Pair_Int32_Int32** %"$g_6" - %"$$g_6_151" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %"$g_6" - store %TName_Pair_Int32_Int32* %"$$g_6_151", %TName_Pair_Int32_Int32** %"$retval_18" - br label %"$matchsucc_122" - -"$Zero_152": ; preds = %entry - %"$n_153" = bitcast %TName_Nat* %1 to %CName_Zero* - %"$f0_154" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %f0 - store %TName_Pair_Int32_Int32* %"$f0_154", %TName_Pair_Int32_Int32** %"$retval_18" - br label %"$matchsucc_122" - -"$empty_default_125": ; preds = %entry - br label %"$matchsucc_122" - -"$matchsucc_122": ; preds = %"$Zero_152", %"$Succ_126", %"$empty_default_125" - %"$$retval_18_155" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %"$retval_18" - ret %TName_Pair_Int32_Int32* %"$$retval_18_155" + %"$$g_5_186" = load { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }, { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$g_5" + %"$$g_5_fptr_187" = extractvalue { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$g_5_186", 0 + %"$$g_5_envptr_188" = extractvalue { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$g_5_186", 1 + %"$n1_189" = load %TName_Nat*, %TName_Nat** %n1 + %"$$g_5_call_190" = call %TName_Pair_Int32_Int32* %"$$g_5_fptr_187"(i8* %"$$g_5_envptr_188", %TName_Nat* %"$n1_189") + store %TName_Pair_Int32_Int32* %"$$g_5_call_190", %TName_Pair_Int32_Int32** %"$g_6" + %"$$g_6_191" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %"$g_6" + store %TName_Pair_Int32_Int32* %"$$g_6_191", %TName_Pair_Int32_Int32** %"$retval_18" + br label %"$matchsucc_147" + +"$Zero_192": ; preds = %"$have_gas_145" + %"$n_193" = bitcast %TName_Nat* %1 to %CName_Zero* + %"$gasrem_194" = load i64, i64* @_gasrem + %"$gascmp_195" = icmp ugt i64 1, %"$gasrem_194" + br i1 %"$gascmp_195", label %"$out_of_gas_196", label %"$have_gas_197" + +"$out_of_gas_196": ; preds = %"$Zero_192" + call void @_out_of_gas() + br label %"$have_gas_197" + +"$have_gas_197": ; preds = %"$out_of_gas_196", %"$Zero_192" + %"$consume_198" = sub i64 %"$gasrem_194", 1 + store i64 %"$consume_198", i64* @_gasrem + %"$f0_199" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %f0 + store %TName_Pair_Int32_Int32* %"$f0_199", %TName_Pair_Int32_Int32** %"$retval_18" + br label %"$matchsucc_147" + +"$empty_default_150": ; preds = %"$have_gas_145" + br label %"$matchsucc_147" + +"$matchsucc_147": ; preds = %"$have_gas_197", %"$have_gas_179", %"$empty_default_150" + %"$$retval_18_200" = load %TName_Pair_Int32_Int32*, %TName_Pair_Int32_Int32** %"$retval_18" + ret %TName_Pair_Int32_Int32* %"$$retval_18_200" } define internal { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } @"$fundef_15"(%"$$fundef_15_env_86"* %0, %TName_Pair_Int32_Int32* %1) { entry: - %"$$fundef_15_env_fn_102" = getelementptr inbounds %"$$fundef_15_env_86", %"$$fundef_15_env_86"* %0, i32 0, i32 0 - %"$fn_envload_103" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$$fundef_15_env_fn_102" + %"$$fundef_15_env_fn_117" = getelementptr inbounds %"$$fundef_15_env_86", %"$$fundef_15_env_86"* %0, i32 0, i32 0 + %"$fn_envload_118" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$$fundef_15_env_fn_117" %fn = alloca { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } - store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$fn_envload_103", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %fn - %"$$fundef_15_env_g_104" = getelementptr inbounds %"$$fundef_15_env_86", %"$$fundef_15_env_86"* %0, i32 0, i32 1 - %"$g_envload_105" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$$fundef_15_env_g_104" + store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$fn_envload_118", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %fn + %"$$fundef_15_env_g_119" = getelementptr inbounds %"$$fundef_15_env_86", %"$$fundef_15_env_86"* %0, i32 0, i32 1 + %"$g_envload_120" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$$fundef_15_env_g_119" %g = alloca { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } - store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$g_envload_105", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %g + store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$g_envload_120", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %g %"$retval_16" = alloca { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } - %"$$fundef_17_envp_106_load" = load i8*, i8** @_execptr - %"$$fundef_17_envp_106_salloc" = call i8* @_salloc(i8* %"$$fundef_17_envp_106_load", i64 40) - %"$$fundef_17_envp_106" = bitcast i8* %"$$fundef_17_envp_106_salloc" to %"$$fundef_17_env_85"* - %"$$fundef_17_env_voidp_108" = bitcast %"$$fundef_17_env_85"* %"$$fundef_17_envp_106" to i8* - %"$$fundef_17_cloval_109" = insertvalue { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)* bitcast (%TName_Pair_Int32_Int32* (%"$$fundef_17_env_85"*, %TName_Nat*)* @"$fundef_17" to %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_17_env_voidp_108", 1 - %"$$fundef_17_env_f0_110" = getelementptr inbounds %"$$fundef_17_env_85", %"$$fundef_17_env_85"* %"$$fundef_17_envp_106", i32 0, i32 0 - store %TName_Pair_Int32_Int32* %1, %TName_Pair_Int32_Int32** %"$$fundef_17_env_f0_110" - %"$$fundef_17_env_fn_111" = getelementptr inbounds %"$$fundef_17_env_85", %"$$fundef_17_env_85"* %"$$fundef_17_envp_106", i32 0, i32 1 - %"$fn_112" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %fn - store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$fn_112", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$$fundef_17_env_fn_111" - %"$$fundef_17_env_g_113" = getelementptr inbounds %"$$fundef_17_env_85", %"$$fundef_17_env_85"* %"$$fundef_17_envp_106", i32 0, i32 2 - %"$g_114" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %g - store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$g_114", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$$fundef_17_env_g_113" - store { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$fundef_17_cloval_109", { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$retval_16" - %"$$retval_16_115" = load { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }, { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$retval_16" - ret { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$retval_16_115" + %"$gasrem_121" = load i64, i64* @_gasrem + %"$gascmp_122" = icmp ugt i64 1, %"$gasrem_121" + br i1 %"$gascmp_122", label %"$out_of_gas_123", label %"$have_gas_124" + +"$out_of_gas_123": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_124" + +"$have_gas_124": ; preds = %"$out_of_gas_123", %entry + %"$consume_125" = sub i64 %"$gasrem_121", 1 + store i64 %"$consume_125", i64* @_gasrem + %"$$fundef_17_envp_126_load" = load i8*, i8** @_execptr + %"$$fundef_17_envp_126_salloc" = call i8* @_salloc(i8* %"$$fundef_17_envp_126_load", i64 40) + %"$$fundef_17_envp_126" = bitcast i8* %"$$fundef_17_envp_126_salloc" to %"$$fundef_17_env_85"* + %"$$fundef_17_env_voidp_128" = bitcast %"$$fundef_17_env_85"* %"$$fundef_17_envp_126" to i8* + %"$$fundef_17_cloval_129" = insertvalue { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)* bitcast (%TName_Pair_Int32_Int32* (%"$$fundef_17_env_85"*, %TName_Nat*)* @"$fundef_17" to %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_17_env_voidp_128", 1 + %"$$fundef_17_env_f0_130" = getelementptr inbounds %"$$fundef_17_env_85", %"$$fundef_17_env_85"* %"$$fundef_17_envp_126", i32 0, i32 0 + store %TName_Pair_Int32_Int32* %1, %TName_Pair_Int32_Int32** %"$$fundef_17_env_f0_130" + %"$$fundef_17_env_fn_131" = getelementptr inbounds %"$$fundef_17_env_85", %"$$fundef_17_env_85"* %"$$fundef_17_envp_126", i32 0, i32 1 + %"$fn_132" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %fn + store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$fn_132", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$$fundef_17_env_fn_131" + %"$$fundef_17_env_g_133" = getelementptr inbounds %"$$fundef_17_env_85", %"$$fundef_17_env_85"* %"$$fundef_17_envp_126", i32 0, i32 2 + %"$g_134" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %g + store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$g_134", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$$fundef_17_env_g_133" + store { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$fundef_17_cloval_129", { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$retval_16" + %"$$retval_16_135" = load { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }, { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* }* %"$retval_16" + ret { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } %"$$retval_16_135" } define internal { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } @"$fundef_13"(%"$$fundef_13_env_87"* %0, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %1) { entry: %"$retval_14" = alloca { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } - %"$$fundef_15_envp_93_load" = load i8*, i8** @_execptr - %"$$fundef_15_envp_93_salloc" = call i8* @_salloc(i8* %"$$fundef_15_envp_93_load", i64 32) - %"$$fundef_15_envp_93" = bitcast i8* %"$$fundef_15_envp_93_salloc" to %"$$fundef_15_env_86"* - %"$$fundef_15_env_voidp_95" = bitcast %"$$fundef_15_env_86"* %"$$fundef_15_envp_93" to i8* - %"$$fundef_15_cloval_96" = insertvalue { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)* bitcast ({ %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_15_env_86"*, %TName_Pair_Int32_Int32*)* @"$fundef_15" to { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*), i8* undef }, i8* %"$$fundef_15_env_voidp_95", 1 + %"$gasrem_98" = load i64, i64* @_gasrem + %"$gascmp_99" = icmp ugt i64 1, %"$gasrem_98" + br i1 %"$gascmp_99", label %"$out_of_gas_100", label %"$have_gas_101" + +"$out_of_gas_100": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_101" + +"$have_gas_101": ; preds = %"$out_of_gas_100", %entry + %"$consume_102" = sub i64 %"$gasrem_98", 1 + store i64 %"$consume_102", i64* @_gasrem + %"$gasrem_103" = load i64, i64* @_gasrem + %"$gascmp_104" = icmp ugt i64 1, %"$gasrem_103" + br i1 %"$gascmp_104", label %"$out_of_gas_105", label %"$have_gas_106" + +"$out_of_gas_105": ; preds = %"$have_gas_101" + call void @_out_of_gas() + br label %"$have_gas_106" + +"$have_gas_106": ; preds = %"$out_of_gas_105", %"$have_gas_101" + %"$consume_107" = sub i64 %"$gasrem_103", 1 + store i64 %"$consume_107", i64* @_gasrem + %"$$fundef_15_envp_108_load" = load i8*, i8** @_execptr + %"$$fundef_15_envp_108_salloc" = call i8* @_salloc(i8* %"$$fundef_15_envp_108_load", i64 32) + %"$$fundef_15_envp_108" = bitcast i8* %"$$fundef_15_envp_108_salloc" to %"$$fundef_15_env_86"* + %"$$fundef_15_env_voidp_110" = bitcast %"$$fundef_15_env_86"* %"$$fundef_15_envp_108" to i8* + %"$$fundef_15_cloval_111" = insertvalue { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)* bitcast ({ %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (%"$$fundef_15_env_86"*, %TName_Pair_Int32_Int32*)* @"$fundef_15" to { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*), i8* undef }, i8* %"$$fundef_15_env_voidp_110", 1 %g = alloca { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } - store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$$fundef_15_cloval_96", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %g - %"$$fundef_15_env_fn_97" = getelementptr inbounds %"$$fundef_15_env_86", %"$$fundef_15_env_86"* %"$$fundef_15_envp_93", i32 0, i32 0 - store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %1, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$$fundef_15_env_fn_97" - %"$$fundef_15_env_g_98" = getelementptr inbounds %"$$fundef_15_env_86", %"$$fundef_15_env_86"* %"$$fundef_15_envp_93", i32 0, i32 1 - %"$g_99" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %g - store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$g_99", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$$fundef_15_env_g_98" - %"$g_100" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %g - store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$g_100", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$retval_14" - %"$$retval_14_101" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$retval_14" - ret { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$$retval_14_101" + store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$$fundef_15_cloval_111", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %g + %"$$fundef_15_env_fn_112" = getelementptr inbounds %"$$fundef_15_env_86", %"$$fundef_15_env_86"* %"$$fundef_15_envp_108", i32 0, i32 0 + store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %1, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$$fundef_15_env_fn_112" + %"$$fundef_15_env_g_113" = getelementptr inbounds %"$$fundef_15_env_86", %"$$fundef_15_env_86"* %"$$fundef_15_envp_108", i32 0, i32 1 + %"$g_114" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %g + store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$g_114", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$$fundef_15_env_g_113" + %"$g_115" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %g + store { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$g_115", { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$retval_14" + %"$$retval_14_116" = load { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* }* %"$retval_14" + ret { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } %"$$retval_14_116" } define internal { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } @"$fundef_11"(%"$$fundef_11_env_88"* %0) { entry: %"$retval_12" = alloca { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } + %"$gasrem_89" = load i64, i64* @_gasrem + %"$gascmp_90" = icmp ugt i64 1, %"$gasrem_89" + br i1 %"$gascmp_90", label %"$out_of_gas_91", label %"$have_gas_92" + +"$out_of_gas_91": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_92" + +"$have_gas_92": ; preds = %"$out_of_gas_91", %entry + %"$consume_93" = sub i64 %"$gasrem_89", 1 + store i64 %"$consume_93", i64* @_gasrem store { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })* bitcast ({ { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (%"$$fundef_13_env_87"*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })* @"$fundef_13" to { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*), i8* null }, { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* }* %"$retval_12" - %"$$retval_12_92" = load { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* }, { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* }* %"$retval_12" - ret { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } %"$$retval_12_92" + %"$$retval_12_97" = load { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* }, { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* }* %"$retval_12" + ret { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } %"$$retval_12_97" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) declare %Int32 @_add_Int32(%Int32, %Int32) @@ -411,133 +733,353 @@ entry: ret void } -define internal %Int32 @"$scilla_expr_234"(i8* %0) { +define internal %Int32 @"$scilla_expr_379"(i8* %0) { entry: - %"$dyndisp_table_238_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_238_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_238_salloc_load", i64 16) - %"$dyndisp_table_238_salloc" = bitcast i8* %"$dyndisp_table_238_salloc_salloc" to [1 x { i8*, i8* }]* - %"$dyndisp_table_238" = bitcast [1 x { i8*, i8* }]* %"$dyndisp_table_238_salloc" to { i8*, i8* }* - %"$dyndisp_gep_239" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_238", i32 0 - %"$dyndisp_pcast_240" = bitcast { i8*, i8* }* %"$dyndisp_gep_239" to { { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (%"$$fundef_11_env_88"*)* @"$fundef_11" to { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_240" - store { i8*, i8* }* %"$dyndisp_table_238", { i8*, i8* }** @nat_fold + %"$gasrem_380" = load i64, i64* @_gasrem + %"$gascmp_381" = icmp ugt i64 1, %"$gasrem_380" + br i1 %"$gascmp_381", label %"$out_of_gas_382", label %"$have_gas_383" + +"$out_of_gas_382": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_383" + +"$have_gas_383": ; preds = %"$out_of_gas_382", %entry + %"$consume_384" = sub i64 %"$gasrem_380", 1 + store i64 %"$consume_384", i64* @_gasrem + %"$dyndisp_table_388_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_388_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_388_salloc_load", i64 16) + %"$dyndisp_table_388_salloc" = bitcast i8* %"$dyndisp_table_388_salloc_salloc" to [1 x { i8*, i8* }]* + %"$dyndisp_table_388" = bitcast [1 x { i8*, i8* }]* %"$dyndisp_table_388_salloc" to { i8*, i8* }* + %"$dyndisp_gep_389" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_388", i32 0 + %"$dyndisp_pcast_390" = bitcast { i8*, i8* }* %"$dyndisp_gep_389" to { { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (%"$$fundef_11_env_88"*)* @"$fundef_11" to { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* } (i8*, { { %TName_Pair_Int32_Int32* (i8*, %TName_Nat*)*, i8* } (i8*, %TName_Pair_Int32_Int32*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_390" + store { i8*, i8* }* %"$dyndisp_table_388", { i8*, i8* }** @nat_fold %"$expr_19" = alloca %Int32 + %"$gasrem_391" = load i64, i64* @_gasrem + %"$gascmp_392" = icmp ugt i64 1, %"$gasrem_391" + br i1 %"$gascmp_392", label %"$out_of_gas_393", label %"$have_gas_394" + +"$out_of_gas_393": ; preds = %"$have_gas_383" + call void @_out_of_gas() + br label %"$have_gas_394" + +"$have_gas_394": ; preds = %"$out_of_gas_393", %"$have_gas_383" + %"$consume_395" = sub i64 %"$gasrem_391", 1 + store i64 %"$consume_395", i64* @_gasrem %zero = alloca %TName_Nat* - %"$adtval_241_load" = load i8*, i8** @_execptr - %"$adtval_241_salloc" = call i8* @_salloc(i8* %"$adtval_241_load", i64 1) - %"$adtval_241" = bitcast i8* %"$adtval_241_salloc" to %CName_Zero* - %"$adtgep_242" = getelementptr inbounds %CName_Zero, %CName_Zero* %"$adtval_241", i32 0, i32 0 - store i8 0, i8* %"$adtgep_242" - %"$adtptr_243" = bitcast %CName_Zero* %"$adtval_241" to %TName_Nat* - store %TName_Nat* %"$adtptr_243", %TName_Nat** %zero + %"$gasrem_396" = load i64, i64* @_gasrem + %"$gascmp_397" = icmp ugt i64 1, %"$gasrem_396" + br i1 %"$gascmp_397", label %"$out_of_gas_398", label %"$have_gas_399" + +"$out_of_gas_398": ; preds = %"$have_gas_394" + call void @_out_of_gas() + br label %"$have_gas_399" + +"$have_gas_399": ; preds = %"$out_of_gas_398", %"$have_gas_394" + %"$consume_400" = sub i64 %"$gasrem_396", 1 + store i64 %"$consume_400", i64* @_gasrem + %"$adtval_401_load" = load i8*, i8** @_execptr + %"$adtval_401_salloc" = call i8* @_salloc(i8* %"$adtval_401_load", i64 1) + %"$adtval_401" = bitcast i8* %"$adtval_401_salloc" to %CName_Zero* + %"$adtgep_402" = getelementptr inbounds %CName_Zero, %CName_Zero* %"$adtval_401", i32 0, i32 0 + store i8 0, i8* %"$adtgep_402" + %"$adtptr_403" = bitcast %CName_Zero* %"$adtval_401" to %TName_Nat* + store %TName_Nat* %"$adtptr_403", %TName_Nat** %zero + %"$gasrem_404" = load i64, i64* @_gasrem + %"$gascmp_405" = icmp ugt i64 1, %"$gasrem_404" + br i1 %"$gascmp_405", label %"$out_of_gas_406", label %"$have_gas_407" + +"$out_of_gas_406": ; preds = %"$have_gas_399" + call void @_out_of_gas() + br label %"$have_gas_407" + +"$have_gas_407": ; preds = %"$out_of_gas_406", %"$have_gas_399" + %"$consume_408" = sub i64 %"$gasrem_404", 1 + store i64 %"$consume_408", i64* @_gasrem %one = alloca %TName_Nat* - %"$zero_244" = load %TName_Nat*, %TName_Nat** %zero - %"$adtval_245_load" = load i8*, i8** @_execptr - %"$adtval_245_salloc" = call i8* @_salloc(i8* %"$adtval_245_load", i64 9) - %"$adtval_245" = bitcast i8* %"$adtval_245_salloc" to %CName_Succ* - %"$adtgep_246" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_245", i32 0, i32 0 - store i8 1, i8* %"$adtgep_246" - %"$adtgep_247" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_245", i32 0, i32 1 - store %TName_Nat* %"$zero_244", %TName_Nat** %"$adtgep_247" - %"$adtptr_248" = bitcast %CName_Succ* %"$adtval_245" to %TName_Nat* - store %TName_Nat* %"$adtptr_248", %TName_Nat** %one + %"$gasrem_409" = load i64, i64* @_gasrem + %"$gascmp_410" = icmp ugt i64 1, %"$gasrem_409" + br i1 %"$gascmp_410", label %"$out_of_gas_411", label %"$have_gas_412" + +"$out_of_gas_411": ; preds = %"$have_gas_407" + call void @_out_of_gas() + br label %"$have_gas_412" + +"$have_gas_412": ; preds = %"$out_of_gas_411", %"$have_gas_407" + %"$consume_413" = sub i64 %"$gasrem_409", 1 + store i64 %"$consume_413", i64* @_gasrem + %"$zero_414" = load %TName_Nat*, %TName_Nat** %zero + %"$adtval_415_load" = load i8*, i8** @_execptr + %"$adtval_415_salloc" = call i8* @_salloc(i8* %"$adtval_415_load", i64 9) + %"$adtval_415" = bitcast i8* %"$adtval_415_salloc" to %CName_Succ* + %"$adtgep_416" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_415", i32 0, i32 0 + store i8 1, i8* %"$adtgep_416" + %"$adtgep_417" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_415", i32 0, i32 1 + store %TName_Nat* %"$zero_414", %TName_Nat** %"$adtgep_417" + %"$adtptr_418" = bitcast %CName_Succ* %"$adtval_415" to %TName_Nat* + store %TName_Nat* %"$adtptr_418", %TName_Nat** %one + %"$gasrem_419" = load i64, i64* @_gasrem + %"$gascmp_420" = icmp ugt i64 1, %"$gasrem_419" + br i1 %"$gascmp_420", label %"$out_of_gas_421", label %"$have_gas_422" + +"$out_of_gas_421": ; preds = %"$have_gas_412" + call void @_out_of_gas() + br label %"$have_gas_422" + +"$have_gas_422": ; preds = %"$out_of_gas_421", %"$have_gas_412" + %"$consume_423" = sub i64 %"$gasrem_419", 1 + store i64 %"$consume_423", i64* @_gasrem %two = alloca %TName_Nat* - %"$one_249" = load %TName_Nat*, %TName_Nat** %one - %"$adtval_250_load" = load i8*, i8** @_execptr - %"$adtval_250_salloc" = call i8* @_salloc(i8* %"$adtval_250_load", i64 9) - %"$adtval_250" = bitcast i8* %"$adtval_250_salloc" to %CName_Succ* - %"$adtgep_251" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_250", i32 0, i32 0 - store i8 1, i8* %"$adtgep_251" - %"$adtgep_252" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_250", i32 0, i32 1 - store %TName_Nat* %"$one_249", %TName_Nat** %"$adtgep_252" - %"$adtptr_253" = bitcast %CName_Succ* %"$adtval_250" to %TName_Nat* - store %TName_Nat* %"$adtptr_253", %TName_Nat** %two + %"$gasrem_424" = load i64, i64* @_gasrem + %"$gascmp_425" = icmp ugt i64 1, %"$gasrem_424" + br i1 %"$gascmp_425", label %"$out_of_gas_426", label %"$have_gas_427" + +"$out_of_gas_426": ; preds = %"$have_gas_422" + call void @_out_of_gas() + br label %"$have_gas_427" + +"$have_gas_427": ; preds = %"$out_of_gas_426", %"$have_gas_422" + %"$consume_428" = sub i64 %"$gasrem_424", 1 + store i64 %"$consume_428", i64* @_gasrem + %"$one_429" = load %TName_Nat*, %TName_Nat** %one + %"$adtval_430_load" = load i8*, i8** @_execptr + %"$adtval_430_salloc" = call i8* @_salloc(i8* %"$adtval_430_load", i64 9) + %"$adtval_430" = bitcast i8* %"$adtval_430_salloc" to %CName_Succ* + %"$adtgep_431" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_430", i32 0, i32 0 + store i8 1, i8* %"$adtgep_431" + %"$adtgep_432" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_430", i32 0, i32 1 + store %TName_Nat* %"$one_429", %TName_Nat** %"$adtgep_432" + %"$adtptr_433" = bitcast %CName_Succ* %"$adtval_430" to %TName_Nat* + store %TName_Nat* %"$adtptr_433", %TName_Nat** %two + %"$gasrem_434" = load i64, i64* @_gasrem + %"$gascmp_435" = icmp ugt i64 1, %"$gasrem_434" + br i1 %"$gascmp_435", label %"$out_of_gas_436", label %"$have_gas_437" + +"$out_of_gas_436": ; preds = %"$have_gas_427" + call void @_out_of_gas() + br label %"$have_gas_437" + +"$have_gas_437": ; preds = %"$out_of_gas_436", %"$have_gas_427" + %"$consume_438" = sub i64 %"$gasrem_434", 1 + store i64 %"$consume_438", i64* @_gasrem %three = alloca %TName_Nat* - %"$two_254" = load %TName_Nat*, %TName_Nat** %two - %"$adtval_255_load" = load i8*, i8** @_execptr - %"$adtval_255_salloc" = call i8* @_salloc(i8* %"$adtval_255_load", i64 9) - %"$adtval_255" = bitcast i8* %"$adtval_255_salloc" to %CName_Succ* - %"$adtgep_256" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_255", i32 0, i32 0 - store i8 1, i8* %"$adtgep_256" - %"$adtgep_257" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_255", i32 0, i32 1 - store %TName_Nat* %"$two_254", %TName_Nat** %"$adtgep_257" - %"$adtptr_258" = bitcast %CName_Succ* %"$adtval_255" to %TName_Nat* - store %TName_Nat* %"$adtptr_258", %TName_Nat** %three + %"$gasrem_439" = load i64, i64* @_gasrem + %"$gascmp_440" = icmp ugt i64 1, %"$gasrem_439" + br i1 %"$gascmp_440", label %"$out_of_gas_441", label %"$have_gas_442" + +"$out_of_gas_441": ; preds = %"$have_gas_437" + call void @_out_of_gas() + br label %"$have_gas_442" + +"$have_gas_442": ; preds = %"$out_of_gas_441", %"$have_gas_437" + %"$consume_443" = sub i64 %"$gasrem_439", 1 + store i64 %"$consume_443", i64* @_gasrem + %"$two_444" = load %TName_Nat*, %TName_Nat** %two + %"$adtval_445_load" = load i8*, i8** @_execptr + %"$adtval_445_salloc" = call i8* @_salloc(i8* %"$adtval_445_load", i64 9) + %"$adtval_445" = bitcast i8* %"$adtval_445_salloc" to %CName_Succ* + %"$adtgep_446" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_445", i32 0, i32 0 + store i8 1, i8* %"$adtgep_446" + %"$adtgep_447" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_445", i32 0, i32 1 + store %TName_Nat* %"$two_444", %TName_Nat** %"$adtgep_447" + %"$adtptr_448" = bitcast %CName_Succ* %"$adtval_445" to %TName_Nat* + store %TName_Nat* %"$adtptr_448", %TName_Nat** %three + %"$gasrem_449" = load i64, i64* @_gasrem + %"$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_442" + call void @_out_of_gas() + br label %"$have_gas_452" + +"$have_gas_452": ; preds = %"$out_of_gas_451", %"$have_gas_442" + %"$consume_453" = sub i64 %"$gasrem_449", 1 + store i64 %"$consume_453", i64* @_gasrem %four = alloca %TName_Nat* - %"$three_259" = load %TName_Nat*, %TName_Nat** %three - %"$adtval_260_load" = load i8*, i8** @_execptr - %"$adtval_260_salloc" = call i8* @_salloc(i8* %"$adtval_260_load", i64 9) - %"$adtval_260" = bitcast i8* %"$adtval_260_salloc" to %CName_Succ* - %"$adtgep_261" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_260", i32 0, i32 0 - store i8 1, i8* %"$adtgep_261" - %"$adtgep_262" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_260", i32 0, i32 1 - store %TName_Nat* %"$three_259", %TName_Nat** %"$adtgep_262" - %"$adtptr_263" = bitcast %CName_Succ* %"$adtval_260" to %TName_Nat* - store %TName_Nat* %"$adtptr_263", %TName_Nat** %four + %"$gasrem_454" = load i64, i64* @_gasrem + %"$gascmp_455" = icmp ugt i64 1, %"$gasrem_454" + br i1 %"$gascmp_455", label %"$out_of_gas_456", label %"$have_gas_457" + +"$out_of_gas_456": ; preds = %"$have_gas_452" + call void @_out_of_gas() + br label %"$have_gas_457" + +"$have_gas_457": ; preds = %"$out_of_gas_456", %"$have_gas_452" + %"$consume_458" = sub i64 %"$gasrem_454", 1 + store i64 %"$consume_458", i64* @_gasrem + %"$three_459" = load %TName_Nat*, %TName_Nat** %three + %"$adtval_460_load" = load i8*, i8** @_execptr + %"$adtval_460_salloc" = call i8* @_salloc(i8* %"$adtval_460_load", i64 9) + %"$adtval_460" = bitcast i8* %"$adtval_460_salloc" to %CName_Succ* + %"$adtgep_461" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_460", i32 0, i32 0 + store i8 1, i8* %"$adtgep_461" + %"$adtgep_462" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_460", i32 0, i32 1 + store %TName_Nat* %"$three_459", %TName_Nat** %"$adtgep_462" + %"$adtptr_463" = bitcast %CName_Succ* %"$adtval_460" to %TName_Nat* + store %TName_Nat* %"$adtptr_463", %TName_Nat** %four + %"$gasrem_464" = load i64, i64* @_gasrem + %"$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_457" + call void @_out_of_gas() + br label %"$have_gas_467" + +"$have_gas_467": ; preds = %"$out_of_gas_466", %"$have_gas_457" + %"$consume_468" = sub i64 %"$gasrem_464", 1 + store i64 %"$consume_468", i64* @_gasrem %five = alloca %TName_Nat* - %"$four_264" = load %TName_Nat*, %TName_Nat** %four - %"$adtval_265_load" = load i8*, i8** @_execptr - %"$adtval_265_salloc" = call i8* @_salloc(i8* %"$adtval_265_load", i64 9) - %"$adtval_265" = bitcast i8* %"$adtval_265_salloc" to %CName_Succ* - %"$adtgep_266" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_265", i32 0, i32 0 - store i8 1, i8* %"$adtgep_266" - %"$adtgep_267" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_265", i32 0, i32 1 - store %TName_Nat* %"$four_264", %TName_Nat** %"$adtgep_267" - %"$adtptr_268" = bitcast %CName_Succ* %"$adtval_265" to %TName_Nat* - store %TName_Nat* %"$adtptr_268", %TName_Nat** %five + %"$gasrem_469" = load i64, i64* @_gasrem + %"$gascmp_470" = icmp ugt i64 1, %"$gasrem_469" + br i1 %"$gascmp_470", label %"$out_of_gas_471", label %"$have_gas_472" + +"$out_of_gas_471": ; preds = %"$have_gas_467" + call void @_out_of_gas() + br label %"$have_gas_472" + +"$have_gas_472": ; preds = %"$out_of_gas_471", %"$have_gas_467" + %"$consume_473" = sub i64 %"$gasrem_469", 1 + store i64 %"$consume_473", i64* @_gasrem + %"$four_474" = load %TName_Nat*, %TName_Nat** %four + %"$adtval_475_load" = load i8*, i8** @_execptr + %"$adtval_475_salloc" = call i8* @_salloc(i8* %"$adtval_475_load", i64 9) + %"$adtval_475" = bitcast i8* %"$adtval_475_salloc" to %CName_Succ* + %"$adtgep_476" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_475", i32 0, i32 0 + store i8 1, i8* %"$adtgep_476" + %"$adtgep_477" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_475", i32 0, i32 1 + store %TName_Nat* %"$four_474", %TName_Nat** %"$adtgep_477" + %"$adtptr_478" = bitcast %CName_Succ* %"$adtval_475" to %TName_Nat* + store %TName_Nat* %"$adtptr_478", %TName_Nat** %five + %"$gasrem_479" = load i64, i64* @_gasrem + %"$gascmp_480" = icmp ugt i64 1, %"$gasrem_479" + br i1 %"$gascmp_480", label %"$out_of_gas_481", label %"$have_gas_482" + +"$out_of_gas_481": ; preds = %"$have_gas_472" + call void @_out_of_gas() + br label %"$have_gas_482" + +"$have_gas_482": ; preds = %"$out_of_gas_481", %"$have_gas_472" + %"$consume_483" = sub i64 %"$gasrem_479", 1 + store i64 %"$consume_483", i64* @_gasrem %six = alloca %TName_Nat* - %"$five_269" = load %TName_Nat*, %TName_Nat** %five - %"$adtval_270_load" = load i8*, i8** @_execptr - %"$adtval_270_salloc" = call i8* @_salloc(i8* %"$adtval_270_load", i64 9) - %"$adtval_270" = bitcast i8* %"$adtval_270_salloc" to %CName_Succ* - %"$adtgep_271" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_270", i32 0, i32 0 - store i8 1, i8* %"$adtgep_271" - %"$adtgep_272" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_270", i32 0, i32 1 - store %TName_Nat* %"$five_269", %TName_Nat** %"$adtgep_272" - %"$adtptr_273" = bitcast %CName_Succ* %"$adtval_270" to %TName_Nat* - store %TName_Nat* %"$adtptr_273", %TName_Nat** %six + %"$gasrem_484" = load i64, i64* @_gasrem + %"$gascmp_485" = icmp ugt i64 1, %"$gasrem_484" + br i1 %"$gascmp_485", label %"$out_of_gas_486", label %"$have_gas_487" + +"$out_of_gas_486": ; preds = %"$have_gas_482" + call void @_out_of_gas() + br label %"$have_gas_487" + +"$have_gas_487": ; preds = %"$out_of_gas_486", %"$have_gas_482" + %"$consume_488" = sub i64 %"$gasrem_484", 1 + store i64 %"$consume_488", i64* @_gasrem + %"$five_489" = load %TName_Nat*, %TName_Nat** %five + %"$adtval_490_load" = load i8*, i8** @_execptr + %"$adtval_490_salloc" = call i8* @_salloc(i8* %"$adtval_490_load", i64 9) + %"$adtval_490" = bitcast i8* %"$adtval_490_salloc" to %CName_Succ* + %"$adtgep_491" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_490", i32 0, i32 0 + store i8 1, i8* %"$adtgep_491" + %"$adtgep_492" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_490", i32 0, i32 1 + store %TName_Nat* %"$five_489", %TName_Nat** %"$adtgep_492" + %"$adtptr_493" = bitcast %CName_Succ* %"$adtval_490" to %TName_Nat* + store %TName_Nat* %"$adtptr_493", %TName_Nat** %six + %"$gasrem_494" = load i64, i64* @_gasrem + %"$gascmp_495" = icmp ugt i64 1, %"$gasrem_494" + br i1 %"$gascmp_495", label %"$out_of_gas_496", label %"$have_gas_497" + +"$out_of_gas_496": ; preds = %"$have_gas_487" + call void @_out_of_gas() + br label %"$have_gas_497" + +"$have_gas_497": ; preds = %"$out_of_gas_496", %"$have_gas_487" + %"$consume_498" = sub i64 %"$gasrem_494", 1 + store i64 %"$consume_498", i64* @_gasrem %seven = alloca %TName_Nat* - %"$six_274" = load %TName_Nat*, %TName_Nat** %six - %"$adtval_275_load" = load i8*, i8** @_execptr - %"$adtval_275_salloc" = call i8* @_salloc(i8* %"$adtval_275_load", i64 9) - %"$adtval_275" = bitcast i8* %"$adtval_275_salloc" to %CName_Succ* - %"$adtgep_276" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_275", i32 0, i32 0 - store i8 1, i8* %"$adtgep_276" - %"$adtgep_277" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_275", i32 0, i32 1 - store %TName_Nat* %"$six_274", %TName_Nat** %"$adtgep_277" - %"$adtptr_278" = bitcast %CName_Succ* %"$adtval_275" to %TName_Nat* - store %TName_Nat* %"$adtptr_278", %TName_Nat** %seven + %"$gasrem_499" = load i64, i64* @_gasrem + %"$gascmp_500" = icmp ugt i64 1, %"$gasrem_499" + br i1 %"$gascmp_500", label %"$out_of_gas_501", label %"$have_gas_502" + +"$out_of_gas_501": ; preds = %"$have_gas_497" + call void @_out_of_gas() + br label %"$have_gas_502" + +"$have_gas_502": ; preds = %"$out_of_gas_501", %"$have_gas_497" + %"$consume_503" = sub i64 %"$gasrem_499", 1 + store i64 %"$consume_503", i64* @_gasrem + %"$six_504" = load %TName_Nat*, %TName_Nat** %six + %"$adtval_505_load" = load i8*, i8** @_execptr + %"$adtval_505_salloc" = call i8* @_salloc(i8* %"$adtval_505_load", i64 9) + %"$adtval_505" = bitcast i8* %"$adtval_505_salloc" to %CName_Succ* + %"$adtgep_506" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_505", i32 0, i32 0 + store i8 1, i8* %"$adtgep_506" + %"$adtgep_507" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_505", i32 0, i32 1 + store %TName_Nat* %"$six_504", %TName_Nat** %"$adtgep_507" + %"$adtptr_508" = bitcast %CName_Succ* %"$adtval_505" to %TName_Nat* + store %TName_Nat* %"$adtptr_508", %TName_Nat** %seven + %"$gasrem_509" = load i64, i64* @_gasrem + %"$gascmp_510" = icmp ugt i64 1, %"$gasrem_509" + br i1 %"$gascmp_510", label %"$out_of_gas_511", label %"$have_gas_512" + +"$out_of_gas_511": ; preds = %"$have_gas_502" + call void @_out_of_gas() + br label %"$have_gas_512" + +"$have_gas_512": ; preds = %"$out_of_gas_511", %"$have_gas_502" + %"$consume_513" = sub i64 %"$gasrem_509", 1 + store i64 %"$consume_513", i64* @_gasrem %fib = alloca { %Int32 (i8*, %TName_Nat*)*, i8* } - %"$$fundef_20_envp_279_load" = load i8*, i8** @_execptr - %"$$fundef_20_envp_279_salloc" = call i8* @_salloc(i8* %"$$fundef_20_envp_279_load", i64 8) - %"$$fundef_20_envp_279" = bitcast i8* %"$$fundef_20_envp_279_salloc" to %"$$fundef_20_env_84"* - %"$$fundef_20_env_voidp_281" = bitcast %"$$fundef_20_env_84"* %"$$fundef_20_envp_279" to i8* - %"$$fundef_20_cloval_282" = insertvalue { %Int32 (i8*, %TName_Nat*)*, i8* } { %Int32 (i8*, %TName_Nat*)* bitcast (%Int32 (%"$$fundef_20_env_84"*, %TName_Nat*)* @"$fundef_20" to %Int32 (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_20_env_voidp_281", 1 - %"$$fundef_20_env_nat_fold_283" = getelementptr inbounds %"$$fundef_20_env_84", %"$$fundef_20_env_84"* %"$$fundef_20_envp_279", i32 0, i32 0 - %"$nat_fold_284" = load { i8*, i8* }*, { i8*, i8* }** @nat_fold - store { i8*, i8* }* %"$nat_fold_284", { i8*, i8* }** %"$$fundef_20_env_nat_fold_283" - store { %Int32 (i8*, %TName_Nat*)*, i8* } %"$$fundef_20_cloval_282", { %Int32 (i8*, %TName_Nat*)*, i8* }* %fib + %"$gasrem_514" = load i64, i64* @_gasrem + %"$gascmp_515" = icmp ugt i64 1, %"$gasrem_514" + br i1 %"$gascmp_515", label %"$out_of_gas_516", label %"$have_gas_517" + +"$out_of_gas_516": ; preds = %"$have_gas_512" + call void @_out_of_gas() + br label %"$have_gas_517" + +"$have_gas_517": ; preds = %"$out_of_gas_516", %"$have_gas_512" + %"$consume_518" = sub i64 %"$gasrem_514", 1 + store i64 %"$consume_518", i64* @_gasrem + %"$$fundef_20_envp_519_load" = load i8*, i8** @_execptr + %"$$fundef_20_envp_519_salloc" = call i8* @_salloc(i8* %"$$fundef_20_envp_519_load", i64 8) + %"$$fundef_20_envp_519" = bitcast i8* %"$$fundef_20_envp_519_salloc" to %"$$fundef_20_env_84"* + %"$$fundef_20_env_voidp_521" = bitcast %"$$fundef_20_env_84"* %"$$fundef_20_envp_519" to i8* + %"$$fundef_20_cloval_522" = insertvalue { %Int32 (i8*, %TName_Nat*)*, i8* } { %Int32 (i8*, %TName_Nat*)* bitcast (%Int32 (%"$$fundef_20_env_84"*, %TName_Nat*)* @"$fundef_20" to %Int32 (i8*, %TName_Nat*)*), i8* undef }, i8* %"$$fundef_20_env_voidp_521", 1 + %"$$fundef_20_env_nat_fold_523" = getelementptr inbounds %"$$fundef_20_env_84", %"$$fundef_20_env_84"* %"$$fundef_20_envp_519", i32 0, i32 0 + %"$nat_fold_524" = load { i8*, i8* }*, { i8*, i8* }** @nat_fold + store { i8*, i8* }* %"$nat_fold_524", { i8*, i8* }** %"$$fundef_20_env_nat_fold_523" + store { %Int32 (i8*, %TName_Nat*)*, i8* } %"$$fundef_20_cloval_522", { %Int32 (i8*, %TName_Nat*)*, i8* }* %fib + %"$gasrem_525" = load i64, i64* @_gasrem + %"$gascmp_526" = icmp ugt i64 1, %"$gasrem_525" + br i1 %"$gascmp_526", label %"$out_of_gas_527", label %"$have_gas_528" + +"$out_of_gas_527": ; preds = %"$have_gas_517" + call void @_out_of_gas() + br label %"$have_gas_528" + +"$have_gas_528": ; preds = %"$out_of_gas_527", %"$have_gas_517" + %"$consume_529" = sub i64 %"$gasrem_525", 1 + store i64 %"$consume_529", i64* @_gasrem %"$fib_10" = alloca %Int32 - %"$fib_285" = load { %Int32 (i8*, %TName_Nat*)*, i8* }, { %Int32 (i8*, %TName_Nat*)*, i8* }* %fib - %"$fib_fptr_286" = extractvalue { %Int32 (i8*, %TName_Nat*)*, i8* } %"$fib_285", 0 - %"$fib_envptr_287" = extractvalue { %Int32 (i8*, %TName_Nat*)*, i8* } %"$fib_285", 1 - %"$seven_288" = load %TName_Nat*, %TName_Nat** %seven - %"$fib_call_289" = call %Int32 %"$fib_fptr_286"(i8* %"$fib_envptr_287", %TName_Nat* %"$seven_288") - store %Int32 %"$fib_call_289", %Int32* %"$fib_10" - %"$$fib_10_290" = load %Int32, %Int32* %"$fib_10" - store %Int32 %"$$fib_10_290", %Int32* %"$expr_19" - %"$$expr_19_291" = load %Int32, %Int32* %"$expr_19" - ret %Int32 %"$$expr_19_291" + %"$fib_530" = load { %Int32 (i8*, %TName_Nat*)*, i8* }, { %Int32 (i8*, %TName_Nat*)*, i8* }* %fib + %"$fib_fptr_531" = extractvalue { %Int32 (i8*, %TName_Nat*)*, i8* } %"$fib_530", 0 + %"$fib_envptr_532" = extractvalue { %Int32 (i8*, %TName_Nat*)*, i8* } %"$fib_530", 1 + %"$seven_533" = load %TName_Nat*, %TName_Nat** %seven + %"$fib_call_534" = call %Int32 %"$fib_fptr_531"(i8* %"$fib_envptr_532", %TName_Nat* %"$seven_533") + store %Int32 %"$fib_call_534", %Int32* %"$fib_10" + %"$$fib_10_535" = load %Int32, %Int32* %"$fib_10" + store %Int32 %"$$fib_10_535", %Int32* %"$expr_19" + %"$$expr_19_536" = load %Int32, %Int32* %"$expr_19" + ret %Int32 %"$$expr_19_536" } declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_292" = call %Int32 @"$scilla_expr_234"(i8* null) - %"$pval_293" = alloca %Int32 - %"$memvoidcast_294" = bitcast %Int32* %"$pval_293" to i8* - store %Int32 %"$exprval_292", %Int32* %"$pval_293" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_28", i8* %"$memvoidcast_294") + %"$exprval_537" = call %Int32 @"$scilla_expr_379"(i8* null) + %"$pval_538" = alloca %Int32 + %"$memvoidcast_539" = bitcast %Int32* %"$pval_538" to i8* + store %Int32 %"$exprval_537", %Int32* %"$pval_538" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_28", i8* %"$memvoidcast_539") ret void } diff --git a/testsuite/expr/fib.ll.result b/testsuite/expr/fib.ll.result index 9f8b833e..e6ec8688 100644 --- a/testsuite/expr/fib.ll.result +++ b/testsuite/expr/fib.ll.result @@ -1 +1,2 @@ 21 : Int32 +Gas remaining: 9999887 diff --git a/testsuite/expr/fun-type-inst.ll b/testsuite/expr/fun-type-inst.ll index 0e365e84..125e3cab 100644 --- a/testsuite/expr/fun-type-inst.ll +++ b/testsuite/expr/fun-type-inst.ll @@ -89,6 +89,7 @@ target triple = "x86_64-pc-linux-gnu" %CName_False = type <{ i8 }> @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_70" = global %"$TyDescrTy_PrimTyp_69" zeroinitializer @"$TyDescr_Int32_71" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_69"* @"$TyDescr_Int32_Prim_70" to i8*) } @"$TyDescr_Uint32_Prim_72" = global %"$TyDescrTy_PrimTyp_69" { i32 1, i32 0 } @@ -159,715 +160,1421 @@ target triple = "x86_64-pc-linux-gnu" define internal { %TName_List_Int64* (i8*, %Int64)*, i8* } @"$fundef_67"(%"$$fundef_67_env_138"* %0, { i8*, i8* }* %1) { entry: %"$retval_68" = alloca { %TName_List_Int64* (i8*, %Int64)*, i8* } - %"$f_503" = getelementptr { i8*, i8* }, { i8*, i8* }* %1, i32 2 - %"$f_504" = bitcast { i8*, i8* }* %"$f_503" to { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* - %"$f_505" = load { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }, { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* %"$f_504" - %"$f_fptr_506" = extractvalue { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* } %"$f_505", 0 - %"$f_envptr_507" = extractvalue { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* } %"$f_505", 1 - %"$f_call_508" = call { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f_fptr_506"(i8* %"$f_envptr_507") - store { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f_call_508", { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$retval_68" - %"$$retval_68_509" = load { %TName_List_Int64* (i8*, %Int64)*, i8* }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$retval_68" - ret { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$$retval_68_509" + %"$gasrem_818" = load i64, i64* @_gasrem + %"$gascmp_819" = icmp ugt i64 1, %"$gasrem_818" + br i1 %"$gascmp_819", label %"$out_of_gas_820", label %"$have_gas_821" + +"$out_of_gas_820": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_821" + +"$have_gas_821": ; preds = %"$out_of_gas_820", %entry + %"$consume_822" = sub i64 %"$gasrem_818", 1 + store i64 %"$consume_822", i64* @_gasrem + %"$f_823" = getelementptr { i8*, i8* }, { i8*, i8* }* %1, i32 2 + %"$f_824" = bitcast { i8*, i8* }* %"$f_823" to { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* + %"$f_825" = load { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }, { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* %"$f_824" + %"$f_fptr_826" = extractvalue { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* } %"$f_825", 0 + %"$f_envptr_827" = extractvalue { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* } %"$f_825", 1 + %"$f_call_828" = call { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f_fptr_826"(i8* %"$f_envptr_827") + store { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f_call_828", { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$retval_68" + %"$$retval_68_829" = load { %TName_List_Int64* (i8*, %Int64)*, i8* }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$retval_68" + ret { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$$retval_68_829" } define internal { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } @"$fundef_65"(%"$$fundef_65_env_139"* %0) { entry: %"$retval_66" = alloca { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } + %"$gasrem_809" = load i64, i64* @_gasrem + %"$gascmp_810" = icmp ugt i64 1, %"$gasrem_809" + br i1 %"$gascmp_810", label %"$out_of_gas_811", label %"$have_gas_812" + +"$out_of_gas_811": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_812" + +"$have_gas_812": ; preds = %"$out_of_gas_811", %entry + %"$consume_813" = sub i64 %"$gasrem_809", 1 + store i64 %"$consume_813", i64* @_gasrem store { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)* bitcast ({ %TName_List_Int64* (i8*, %Int64)*, i8* } (%"$$fundef_67_env_138"*, { i8*, i8* }*)* @"$fundef_67" to { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*), i8* null }, { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$retval_66" - %"$$retval_66_502" = load { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$retval_66" - ret { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$$retval_66_502" + %"$$retval_66_817" = load { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$retval_66" + ret { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$$retval_66_817" } define internal { %TName_List_Int32* (i8*, %Int32)*, i8* } @"$fundef_63"(%"$$fundef_63_env_140"* %0, { i8*, i8* }* %1) { entry: %"$retval_64" = alloca { %TName_List_Int32* (i8*, %Int32)*, i8* } - %"$f_492" = getelementptr { i8*, i8* }, { i8*, i8* }* %1, i32 0 - %"$f_493" = bitcast { i8*, i8* }* %"$f_492" to { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* - %"$f_494" = load { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }, { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* %"$f_493" - %"$f_fptr_495" = extractvalue { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* } %"$f_494", 0 - %"$f_envptr_496" = extractvalue { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* } %"$f_494", 1 - %"$f_call_497" = call { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f_fptr_495"(i8* %"$f_envptr_496") - store { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f_call_497", { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$retval_64" - %"$$retval_64_498" = load { %TName_List_Int32* (i8*, %Int32)*, i8* }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$retval_64" - ret { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$$retval_64_498" + %"$gasrem_797" = load i64, i64* @_gasrem + %"$gascmp_798" = icmp ugt i64 1, %"$gasrem_797" + br i1 %"$gascmp_798", label %"$out_of_gas_799", label %"$have_gas_800" + +"$out_of_gas_799": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_800" + +"$have_gas_800": ; preds = %"$out_of_gas_799", %entry + %"$consume_801" = sub i64 %"$gasrem_797", 1 + store i64 %"$consume_801", i64* @_gasrem + %"$f_802" = getelementptr { i8*, i8* }, { i8*, i8* }* %1, i32 0 + %"$f_803" = bitcast { i8*, i8* }* %"$f_802" to { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* + %"$f_804" = load { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }, { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* %"$f_803" + %"$f_fptr_805" = extractvalue { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* } %"$f_804", 0 + %"$f_envptr_806" = extractvalue { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* } %"$f_804", 1 + %"$f_call_807" = call { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f_fptr_805"(i8* %"$f_envptr_806") + store { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f_call_807", { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$retval_64" + %"$$retval_64_808" = load { %TName_List_Int32* (i8*, %Int32)*, i8* }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$retval_64" + ret { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$$retval_64_808" } define internal { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } @"$fundef_61"(%"$$fundef_61_env_141"* %0) { entry: %"$retval_62" = alloca { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } + %"$gasrem_788" = load i64, i64* @_gasrem + %"$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 = %entry + call void @_out_of_gas() + br label %"$have_gas_791" + +"$have_gas_791": ; preds = %"$out_of_gas_790", %entry + %"$consume_792" = sub i64 %"$gasrem_788", 1 + store i64 %"$consume_792", i64* @_gasrem store { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)* bitcast ({ %TName_List_Int32* (i8*, %Int32)*, i8* } (%"$$fundef_63_env_140"*, { i8*, i8* }*)* @"$fundef_63" to { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*), i8* null }, { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$retval_62" - %"$$retval_62_491" = load { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$retval_62" - ret { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$$retval_62_491" + %"$$retval_62_796" = load { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$retval_62" + ret { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$$retval_62_796" } define internal %TName_List_Int64* @"$fundef_59"(%"$$fundef_59_env_142"* %0, %Int64 %1) { entry: %"$retval_60" = alloca %TName_List_Int64* + %"$gasrem_747" = load i64, i64* @_gasrem + %"$gascmp_748" = icmp ugt i64 1, %"$gasrem_747" + br i1 %"$gascmp_748", label %"$out_of_gas_749", label %"$have_gas_750" + +"$out_of_gas_749": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_750" + +"$have_gas_750": ; preds = %"$out_of_gas_749", %entry + %"$consume_751" = sub i64 %"$gasrem_747", 1 + store i64 %"$consume_751", i64* @_gasrem %an = alloca %TName_List_Int64* - %"$adtval_472_load" = load i8*, i8** @_execptr - %"$adtval_472_salloc" = call i8* @_salloc(i8* %"$adtval_472_load", i64 1) - %"$adtval_472" = bitcast i8* %"$adtval_472_salloc" to %CName_Nil_Int64* - %"$adtgep_473" = getelementptr inbounds %CName_Nil_Int64, %CName_Nil_Int64* %"$adtval_472", i32 0, i32 0 - store i8 1, i8* %"$adtgep_473" - %"$adtptr_474" = bitcast %CName_Nil_Int64* %"$adtval_472" to %TName_List_Int64* - store %TName_List_Int64* %"$adtptr_474", %TName_List_Int64** %an + %"$gasrem_752" = load i64, i64* @_gasrem + %"$gascmp_753" = icmp ugt i64 1, %"$gasrem_752" + br i1 %"$gascmp_753", label %"$out_of_gas_754", label %"$have_gas_755" + +"$out_of_gas_754": ; preds = %"$have_gas_750" + call void @_out_of_gas() + br label %"$have_gas_755" + +"$have_gas_755": ; preds = %"$out_of_gas_754", %"$have_gas_750" + %"$consume_756" = sub i64 %"$gasrem_752", 1 + store i64 %"$consume_756", i64* @_gasrem + %"$adtval_757_load" = load i8*, i8** @_execptr + %"$adtval_757_salloc" = call i8* @_salloc(i8* %"$adtval_757_load", i64 1) + %"$adtval_757" = bitcast i8* %"$adtval_757_salloc" to %CName_Nil_Int64* + %"$adtgep_758" = getelementptr inbounds %CName_Nil_Int64, %CName_Nil_Int64* %"$adtval_757", i32 0, i32 0 + store i8 1, i8* %"$adtgep_758" + %"$adtptr_759" = bitcast %CName_Nil_Int64* %"$adtval_757" to %TName_List_Int64* + store %TName_List_Int64* %"$adtptr_759", %TName_List_Int64** %an + %"$gasrem_760" = load i64, i64* @_gasrem + %"$gascmp_761" = icmp ugt i64 1, %"$gasrem_760" + br i1 %"$gascmp_761", label %"$out_of_gas_762", label %"$have_gas_763" + +"$out_of_gas_762": ; preds = %"$have_gas_755" + call void @_out_of_gas() + br label %"$have_gas_763" + +"$have_gas_763": ; preds = %"$out_of_gas_762", %"$have_gas_755" + %"$consume_764" = sub i64 %"$gasrem_760", 1 + store i64 %"$consume_764", i64* @_gasrem %a1 = alloca %TName_List_Int64* - %"$an_475" = load %TName_List_Int64*, %TName_List_Int64** %an - %"$adtval_476_load" = load i8*, i8** @_execptr - %"$adtval_476_salloc" = call i8* @_salloc(i8* %"$adtval_476_load", i64 17) - %"$adtval_476" = bitcast i8* %"$adtval_476_salloc" to %CName_Cons_Int64* - %"$adtgep_477" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_476", i32 0, i32 0 - store i8 0, i8* %"$adtgep_477" - %"$adtgep_478" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_476", i32 0, i32 1 - store %Int64 %1, %Int64* %"$adtgep_478" - %"$adtgep_479" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_476", i32 0, i32 2 - store %TName_List_Int64* %"$an_475", %TName_List_Int64** %"$adtgep_479" - %"$adtptr_480" = bitcast %CName_Cons_Int64* %"$adtval_476" to %TName_List_Int64* - store %TName_List_Int64* %"$adtptr_480", %TName_List_Int64** %a1 - %"$a1_481" = load %TName_List_Int64*, %TName_List_Int64** %a1 - %"$adtval_482_load" = load i8*, i8** @_execptr - %"$adtval_482_salloc" = call i8* @_salloc(i8* %"$adtval_482_load", i64 17) - %"$adtval_482" = bitcast i8* %"$adtval_482_salloc" to %CName_Cons_Int64* - %"$adtgep_483" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_482", i32 0, i32 0 - store i8 0, i8* %"$adtgep_483" - %"$adtgep_484" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_482", i32 0, i32 1 - store %Int64 %1, %Int64* %"$adtgep_484" - %"$adtgep_485" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_482", i32 0, i32 2 - store %TName_List_Int64* %"$a1_481", %TName_List_Int64** %"$adtgep_485" - %"$adtptr_486" = bitcast %CName_Cons_Int64* %"$adtval_482" to %TName_List_Int64* - store %TName_List_Int64* %"$adtptr_486", %TName_List_Int64** %"$retval_60" - %"$$retval_60_487" = load %TName_List_Int64*, %TName_List_Int64** %"$retval_60" - ret %TName_List_Int64* %"$$retval_60_487" + %"$gasrem_765" = load i64, i64* @_gasrem + %"$gascmp_766" = icmp ugt i64 1, %"$gasrem_765" + br i1 %"$gascmp_766", label %"$out_of_gas_767", label %"$have_gas_768" + +"$out_of_gas_767": ; preds = %"$have_gas_763" + call void @_out_of_gas() + br label %"$have_gas_768" + +"$have_gas_768": ; preds = %"$out_of_gas_767", %"$have_gas_763" + %"$consume_769" = sub i64 %"$gasrem_765", 1 + store i64 %"$consume_769", i64* @_gasrem + %"$an_770" = load %TName_List_Int64*, %TName_List_Int64** %an + %"$adtval_771_load" = load i8*, i8** @_execptr + %"$adtval_771_salloc" = call i8* @_salloc(i8* %"$adtval_771_load", i64 17) + %"$adtval_771" = bitcast i8* %"$adtval_771_salloc" to %CName_Cons_Int64* + %"$adtgep_772" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_771", i32 0, i32 0 + store i8 0, i8* %"$adtgep_772" + %"$adtgep_773" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_771", i32 0, i32 1 + store %Int64 %1, %Int64* %"$adtgep_773" + %"$adtgep_774" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_771", i32 0, i32 2 + store %TName_List_Int64* %"$an_770", %TName_List_Int64** %"$adtgep_774" + %"$adtptr_775" = bitcast %CName_Cons_Int64* %"$adtval_771" to %TName_List_Int64* + store %TName_List_Int64* %"$adtptr_775", %TName_List_Int64** %a1 + %"$gasrem_776" = load i64, i64* @_gasrem + %"$gascmp_777" = icmp ugt i64 1, %"$gasrem_776" + br i1 %"$gascmp_777", label %"$out_of_gas_778", label %"$have_gas_779" + +"$out_of_gas_778": ; preds = %"$have_gas_768" + call void @_out_of_gas() + br label %"$have_gas_779" + +"$have_gas_779": ; preds = %"$out_of_gas_778", %"$have_gas_768" + %"$consume_780" = sub i64 %"$gasrem_776", 1 + store i64 %"$consume_780", i64* @_gasrem + %"$a1_781" = load %TName_List_Int64*, %TName_List_Int64** %a1 + %"$adtval_782_load" = load i8*, i8** @_execptr + %"$adtval_782_salloc" = call i8* @_salloc(i8* %"$adtval_782_load", i64 17) + %"$adtval_782" = bitcast i8* %"$adtval_782_salloc" to %CName_Cons_Int64* + %"$adtgep_783" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_782", i32 0, i32 0 + store i8 0, i8* %"$adtgep_783" + %"$adtgep_784" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_782", i32 0, i32 1 + store %Int64 %1, %Int64* %"$adtgep_784" + %"$adtgep_785" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_782", i32 0, i32 2 + store %TName_List_Int64* %"$a1_781", %TName_List_Int64** %"$adtgep_785" + %"$adtptr_786" = bitcast %CName_Cons_Int64* %"$adtval_782" to %TName_List_Int64* + store %TName_List_Int64* %"$adtptr_786", %TName_List_Int64** %"$retval_60" + %"$$retval_60_787" = load %TName_List_Int64*, %TName_List_Int64** %"$retval_60" + ret %TName_List_Int64* %"$$retval_60_787" } define internal { %TName_List_Int64* (i8*, %Int64)*, i8* } @"$fundef_57"(%"$$fundef_57_env_143"* %0) { entry: %"$retval_58" = alloca { %TName_List_Int64* (i8*, %Int64)*, i8* } + %"$gasrem_738" = load i64, i64* @_gasrem + %"$gascmp_739" = icmp ugt i64 1, %"$gasrem_738" + br i1 %"$gascmp_739", label %"$out_of_gas_740", label %"$have_gas_741" + +"$out_of_gas_740": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_741" + +"$have_gas_741": ; preds = %"$out_of_gas_740", %entry + %"$consume_742" = sub i64 %"$gasrem_738", 1 + store i64 %"$consume_742", i64* @_gasrem store { %TName_List_Int64* (i8*, %Int64)*, i8* } { %TName_List_Int64* (i8*, %Int64)* bitcast (%TName_List_Int64* (%"$$fundef_59_env_142"*, %Int64)* @"$fundef_59" to %TName_List_Int64* (i8*, %Int64)*), i8* null }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$retval_58" - %"$$retval_58_471" = load { %TName_List_Int64* (i8*, %Int64)*, i8* }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$retval_58" - ret { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$$retval_58_471" + %"$$retval_58_746" = load { %TName_List_Int64* (i8*, %Int64)*, i8* }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$retval_58" + ret { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$$retval_58_746" } define internal %TName_List_Int32* @"$fundef_55"(%"$$fundef_55_env_144"* %0, %Int32 %1) { entry: %"$retval_56" = alloca %TName_List_Int32* + %"$gasrem_697" = load i64, i64* @_gasrem + %"$gascmp_698" = icmp ugt i64 1, %"$gasrem_697" + br i1 %"$gascmp_698", label %"$out_of_gas_699", label %"$have_gas_700" + +"$out_of_gas_699": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_700" + +"$have_gas_700": ; preds = %"$out_of_gas_699", %entry + %"$consume_701" = sub i64 %"$gasrem_697", 1 + store i64 %"$consume_701", i64* @_gasrem %an = alloca %TName_List_Int32* - %"$adtval_452_load" = load i8*, i8** @_execptr - %"$adtval_452_salloc" = call i8* @_salloc(i8* %"$adtval_452_load", i64 1) - %"$adtval_452" = bitcast i8* %"$adtval_452_salloc" to %CName_Nil_Int32* - %"$adtgep_453" = getelementptr inbounds %CName_Nil_Int32, %CName_Nil_Int32* %"$adtval_452", i32 0, i32 0 - store i8 1, i8* %"$adtgep_453" - %"$adtptr_454" = bitcast %CName_Nil_Int32* %"$adtval_452" to %TName_List_Int32* - store %TName_List_Int32* %"$adtptr_454", %TName_List_Int32** %an + %"$gasrem_702" = load i64, i64* @_gasrem + %"$gascmp_703" = icmp ugt i64 1, %"$gasrem_702" + br i1 %"$gascmp_703", label %"$out_of_gas_704", label %"$have_gas_705" + +"$out_of_gas_704": ; preds = %"$have_gas_700" + call void @_out_of_gas() + br label %"$have_gas_705" + +"$have_gas_705": ; preds = %"$out_of_gas_704", %"$have_gas_700" + %"$consume_706" = sub i64 %"$gasrem_702", 1 + store i64 %"$consume_706", i64* @_gasrem + %"$adtval_707_load" = load i8*, i8** @_execptr + %"$adtval_707_salloc" = call i8* @_salloc(i8* %"$adtval_707_load", i64 1) + %"$adtval_707" = bitcast i8* %"$adtval_707_salloc" to %CName_Nil_Int32* + %"$adtgep_708" = getelementptr inbounds %CName_Nil_Int32, %CName_Nil_Int32* %"$adtval_707", i32 0, i32 0 + store i8 1, i8* %"$adtgep_708" + %"$adtptr_709" = bitcast %CName_Nil_Int32* %"$adtval_707" to %TName_List_Int32* + store %TName_List_Int32* %"$adtptr_709", %TName_List_Int32** %an + %"$gasrem_710" = load i64, i64* @_gasrem + %"$gascmp_711" = icmp ugt i64 1, %"$gasrem_710" + br i1 %"$gascmp_711", label %"$out_of_gas_712", label %"$have_gas_713" + +"$out_of_gas_712": ; preds = %"$have_gas_705" + call void @_out_of_gas() + br label %"$have_gas_713" + +"$have_gas_713": ; preds = %"$out_of_gas_712", %"$have_gas_705" + %"$consume_714" = sub i64 %"$gasrem_710", 1 + store i64 %"$consume_714", i64* @_gasrem %a1 = alloca %TName_List_Int32* - %"$an_455" = load %TName_List_Int32*, %TName_List_Int32** %an - %"$adtval_456_load" = load i8*, i8** @_execptr - %"$adtval_456_salloc" = call i8* @_salloc(i8* %"$adtval_456_load", i64 13) - %"$adtval_456" = bitcast i8* %"$adtval_456_salloc" to %CName_Cons_Int32* - %"$adtgep_457" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_456", i32 0, i32 0 - store i8 0, i8* %"$adtgep_457" - %"$adtgep_458" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_456", i32 0, i32 1 - store %Int32 %1, %Int32* %"$adtgep_458" - %"$adtgep_459" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_456", i32 0, i32 2 - store %TName_List_Int32* %"$an_455", %TName_List_Int32** %"$adtgep_459" - %"$adtptr_460" = bitcast %CName_Cons_Int32* %"$adtval_456" to %TName_List_Int32* - store %TName_List_Int32* %"$adtptr_460", %TName_List_Int32** %a1 - %"$a1_461" = load %TName_List_Int32*, %TName_List_Int32** %a1 - %"$adtval_462_load" = load i8*, i8** @_execptr - %"$adtval_462_salloc" = call i8* @_salloc(i8* %"$adtval_462_load", i64 13) - %"$adtval_462" = bitcast i8* %"$adtval_462_salloc" to %CName_Cons_Int32* - %"$adtgep_463" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_462", i32 0, i32 0 - store i8 0, i8* %"$adtgep_463" - %"$adtgep_464" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_462", i32 0, i32 1 - store %Int32 %1, %Int32* %"$adtgep_464" - %"$adtgep_465" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_462", i32 0, i32 2 - store %TName_List_Int32* %"$a1_461", %TName_List_Int32** %"$adtgep_465" - %"$adtptr_466" = bitcast %CName_Cons_Int32* %"$adtval_462" to %TName_List_Int32* - store %TName_List_Int32* %"$adtptr_466", %TName_List_Int32** %"$retval_56" - %"$$retval_56_467" = load %TName_List_Int32*, %TName_List_Int32** %"$retval_56" - ret %TName_List_Int32* %"$$retval_56_467" + %"$gasrem_715" = load i64, i64* @_gasrem + %"$gascmp_716" = icmp ugt i64 1, %"$gasrem_715" + br i1 %"$gascmp_716", label %"$out_of_gas_717", label %"$have_gas_718" + +"$out_of_gas_717": ; preds = %"$have_gas_713" + call void @_out_of_gas() + br label %"$have_gas_718" + +"$have_gas_718": ; preds = %"$out_of_gas_717", %"$have_gas_713" + %"$consume_719" = sub i64 %"$gasrem_715", 1 + store i64 %"$consume_719", i64* @_gasrem + %"$an_720" = load %TName_List_Int32*, %TName_List_Int32** %an + %"$adtval_721_load" = load i8*, i8** @_execptr + %"$adtval_721_salloc" = call i8* @_salloc(i8* %"$adtval_721_load", i64 13) + %"$adtval_721" = bitcast i8* %"$adtval_721_salloc" to %CName_Cons_Int32* + %"$adtgep_722" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_721", i32 0, i32 0 + store i8 0, i8* %"$adtgep_722" + %"$adtgep_723" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_721", i32 0, i32 1 + store %Int32 %1, %Int32* %"$adtgep_723" + %"$adtgep_724" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_721", i32 0, i32 2 + store %TName_List_Int32* %"$an_720", %TName_List_Int32** %"$adtgep_724" + %"$adtptr_725" = bitcast %CName_Cons_Int32* %"$adtval_721" to %TName_List_Int32* + store %TName_List_Int32* %"$adtptr_725", %TName_List_Int32** %a1 + %"$gasrem_726" = load i64, i64* @_gasrem + %"$gascmp_727" = icmp ugt i64 1, %"$gasrem_726" + br i1 %"$gascmp_727", label %"$out_of_gas_728", label %"$have_gas_729" + +"$out_of_gas_728": ; preds = %"$have_gas_718" + call void @_out_of_gas() + br label %"$have_gas_729" + +"$have_gas_729": ; preds = %"$out_of_gas_728", %"$have_gas_718" + %"$consume_730" = sub i64 %"$gasrem_726", 1 + store i64 %"$consume_730", i64* @_gasrem + %"$a1_731" = load %TName_List_Int32*, %TName_List_Int32** %a1 + %"$adtval_732_load" = load i8*, i8** @_execptr + %"$adtval_732_salloc" = call i8* @_salloc(i8* %"$adtval_732_load", i64 13) + %"$adtval_732" = bitcast i8* %"$adtval_732_salloc" to %CName_Cons_Int32* + %"$adtgep_733" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_732", i32 0, i32 0 + store i8 0, i8* %"$adtgep_733" + %"$adtgep_734" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_732", i32 0, i32 1 + store %Int32 %1, %Int32* %"$adtgep_734" + %"$adtgep_735" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_732", i32 0, i32 2 + store %TName_List_Int32* %"$a1_731", %TName_List_Int32** %"$adtgep_735" + %"$adtptr_736" = bitcast %CName_Cons_Int32* %"$adtval_732" to %TName_List_Int32* + store %TName_List_Int32* %"$adtptr_736", %TName_List_Int32** %"$retval_56" + %"$$retval_56_737" = load %TName_List_Int32*, %TName_List_Int32** %"$retval_56" + ret %TName_List_Int32* %"$$retval_56_737" } define internal { %TName_List_Int32* (i8*, %Int32)*, i8* } @"$fundef_53"(%"$$fundef_53_env_145"* %0) { entry: %"$retval_54" = alloca { %TName_List_Int32* (i8*, %Int32)*, i8* } + %"$gasrem_688" = load i64, i64* @_gasrem + %"$gascmp_689" = icmp ugt i64 1, %"$gasrem_688" + br i1 %"$gascmp_689", label %"$out_of_gas_690", label %"$have_gas_691" + +"$out_of_gas_690": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_691" + +"$have_gas_691": ; preds = %"$out_of_gas_690", %entry + %"$consume_692" = sub i64 %"$gasrem_688", 1 + store i64 %"$consume_692", i64* @_gasrem store { %TName_List_Int32* (i8*, %Int32)*, i8* } { %TName_List_Int32* (i8*, %Int32)* bitcast (%TName_List_Int32* (%"$$fundef_55_env_144"*, %Int32)* @"$fundef_55" to %TName_List_Int32* (i8*, %Int32)*), i8* null }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$retval_54" - %"$$retval_54_451" = load { %TName_List_Int32* (i8*, %Int32)*, i8* }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$retval_54" - ret { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$$retval_54_451" + %"$$retval_54_696" = load { %TName_List_Int32* (i8*, %Int32)*, i8* }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$retval_54" + ret { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$$retval_54_696" } define internal %TName_List_Int64* @"$fundef_51"(%"$$fundef_51_env_146"* %0, %Int64 %1) { entry: %"$retval_52" = alloca %TName_List_Int64* + %"$gasrem_663" = load i64, i64* @_gasrem + %"$gascmp_664" = icmp ugt i64 1, %"$gasrem_663" + br i1 %"$gascmp_664", label %"$out_of_gas_665", label %"$have_gas_666" + +"$out_of_gas_665": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_666" + +"$have_gas_666": ; preds = %"$out_of_gas_665", %entry + %"$consume_667" = sub i64 %"$gasrem_663", 1 + store i64 %"$consume_667", i64* @_gasrem %an = alloca %TName_List_Int64* - %"$adtval_438_load" = load i8*, i8** @_execptr - %"$adtval_438_salloc" = call i8* @_salloc(i8* %"$adtval_438_load", i64 1) - %"$adtval_438" = bitcast i8* %"$adtval_438_salloc" to %CName_Nil_Int64* - %"$adtgep_439" = getelementptr inbounds %CName_Nil_Int64, %CName_Nil_Int64* %"$adtval_438", i32 0, i32 0 - store i8 1, i8* %"$adtgep_439" - %"$adtptr_440" = bitcast %CName_Nil_Int64* %"$adtval_438" to %TName_List_Int64* - store %TName_List_Int64* %"$adtptr_440", %TName_List_Int64** %an - %"$an_441" = load %TName_List_Int64*, %TName_List_Int64** %an - %"$adtval_442_load" = load i8*, i8** @_execptr - %"$adtval_442_salloc" = call i8* @_salloc(i8* %"$adtval_442_load", i64 17) - %"$adtval_442" = bitcast i8* %"$adtval_442_salloc" to %CName_Cons_Int64* - %"$adtgep_443" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_442", i32 0, i32 0 - store i8 0, i8* %"$adtgep_443" - %"$adtgep_444" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_442", i32 0, i32 1 - store %Int64 %1, %Int64* %"$adtgep_444" - %"$adtgep_445" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_442", i32 0, i32 2 - store %TName_List_Int64* %"$an_441", %TName_List_Int64** %"$adtgep_445" - %"$adtptr_446" = bitcast %CName_Cons_Int64* %"$adtval_442" to %TName_List_Int64* - store %TName_List_Int64* %"$adtptr_446", %TName_List_Int64** %"$retval_52" - %"$$retval_52_447" = load %TName_List_Int64*, %TName_List_Int64** %"$retval_52" - ret %TName_List_Int64* %"$$retval_52_447" + %"$gasrem_668" = load i64, i64* @_gasrem + %"$gascmp_669" = icmp ugt i64 1, %"$gasrem_668" + br i1 %"$gascmp_669", label %"$out_of_gas_670", label %"$have_gas_671" + +"$out_of_gas_670": ; preds = %"$have_gas_666" + call void @_out_of_gas() + br label %"$have_gas_671" + +"$have_gas_671": ; preds = %"$out_of_gas_670", %"$have_gas_666" + %"$consume_672" = sub i64 %"$gasrem_668", 1 + store i64 %"$consume_672", i64* @_gasrem + %"$adtval_673_load" = load i8*, i8** @_execptr + %"$adtval_673_salloc" = call i8* @_salloc(i8* %"$adtval_673_load", i64 1) + %"$adtval_673" = bitcast i8* %"$adtval_673_salloc" to %CName_Nil_Int64* + %"$adtgep_674" = getelementptr inbounds %CName_Nil_Int64, %CName_Nil_Int64* %"$adtval_673", i32 0, i32 0 + store i8 1, i8* %"$adtgep_674" + %"$adtptr_675" = bitcast %CName_Nil_Int64* %"$adtval_673" to %TName_List_Int64* + store %TName_List_Int64* %"$adtptr_675", %TName_List_Int64** %an + %"$gasrem_676" = load i64, i64* @_gasrem + %"$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_671" + call void @_out_of_gas() + br label %"$have_gas_679" + +"$have_gas_679": ; preds = %"$out_of_gas_678", %"$have_gas_671" + %"$consume_680" = sub i64 %"$gasrem_676", 1 + store i64 %"$consume_680", i64* @_gasrem + %"$an_681" = load %TName_List_Int64*, %TName_List_Int64** %an + %"$adtval_682_load" = load i8*, i8** @_execptr + %"$adtval_682_salloc" = call i8* @_salloc(i8* %"$adtval_682_load", i64 17) + %"$adtval_682" = bitcast i8* %"$adtval_682_salloc" to %CName_Cons_Int64* + %"$adtgep_683" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_682", i32 0, i32 0 + store i8 0, i8* %"$adtgep_683" + %"$adtgep_684" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_682", i32 0, i32 1 + store %Int64 %1, %Int64* %"$adtgep_684" + %"$adtgep_685" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_682", i32 0, i32 2 + store %TName_List_Int64* %"$an_681", %TName_List_Int64** %"$adtgep_685" + %"$adtptr_686" = bitcast %CName_Cons_Int64* %"$adtval_682" to %TName_List_Int64* + store %TName_List_Int64* %"$adtptr_686", %TName_List_Int64** %"$retval_52" + %"$$retval_52_687" = load %TName_List_Int64*, %TName_List_Int64** %"$retval_52" + ret %TName_List_Int64* %"$$retval_52_687" } define internal { %TName_List_Int64* (i8*, %Int64)*, i8* } @"$fundef_49"(%"$$fundef_49_env_147"* %0) { entry: %"$retval_50" = alloca { %TName_List_Int64* (i8*, %Int64)*, i8* } + %"$gasrem_654" = load i64, i64* @_gasrem + %"$gascmp_655" = icmp ugt i64 1, %"$gasrem_654" + br i1 %"$gascmp_655", label %"$out_of_gas_656", label %"$have_gas_657" + +"$out_of_gas_656": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_657" + +"$have_gas_657": ; preds = %"$out_of_gas_656", %entry + %"$consume_658" = sub i64 %"$gasrem_654", 1 + store i64 %"$consume_658", i64* @_gasrem store { %TName_List_Int64* (i8*, %Int64)*, i8* } { %TName_List_Int64* (i8*, %Int64)* bitcast (%TName_List_Int64* (%"$$fundef_51_env_146"*, %Int64)* @"$fundef_51" to %TName_List_Int64* (i8*, %Int64)*), i8* null }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$retval_50" - %"$$retval_50_437" = load { %TName_List_Int64* (i8*, %Int64)*, i8* }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$retval_50" - ret { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$$retval_50_437" + %"$$retval_50_662" = load { %TName_List_Int64* (i8*, %Int64)*, i8* }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$retval_50" + ret { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$$retval_50_662" } define internal %TName_List_Int32* @"$fundef_47"(%"$$fundef_47_env_148"* %0, %Int32 %1) { entry: %"$retval_48" = alloca %TName_List_Int32* + %"$gasrem_629" = load i64, i64* @_gasrem + %"$gascmp_630" = icmp ugt i64 1, %"$gasrem_629" + br i1 %"$gascmp_630", label %"$out_of_gas_631", label %"$have_gas_632" + +"$out_of_gas_631": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_632" + +"$have_gas_632": ; preds = %"$out_of_gas_631", %entry + %"$consume_633" = sub i64 %"$gasrem_629", 1 + store i64 %"$consume_633", i64* @_gasrem %an = alloca %TName_List_Int32* - %"$adtval_424_load" = load i8*, i8** @_execptr - %"$adtval_424_salloc" = call i8* @_salloc(i8* %"$adtval_424_load", i64 1) - %"$adtval_424" = bitcast i8* %"$adtval_424_salloc" to %CName_Nil_Int32* - %"$adtgep_425" = getelementptr inbounds %CName_Nil_Int32, %CName_Nil_Int32* %"$adtval_424", i32 0, i32 0 - store i8 1, i8* %"$adtgep_425" - %"$adtptr_426" = bitcast %CName_Nil_Int32* %"$adtval_424" to %TName_List_Int32* - store %TName_List_Int32* %"$adtptr_426", %TName_List_Int32** %an - %"$an_427" = load %TName_List_Int32*, %TName_List_Int32** %an - %"$adtval_428_load" = load i8*, i8** @_execptr - %"$adtval_428_salloc" = call i8* @_salloc(i8* %"$adtval_428_load", i64 13) - %"$adtval_428" = bitcast i8* %"$adtval_428_salloc" to %CName_Cons_Int32* - %"$adtgep_429" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_428", i32 0, i32 0 - store i8 0, i8* %"$adtgep_429" - %"$adtgep_430" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_428", i32 0, i32 1 - store %Int32 %1, %Int32* %"$adtgep_430" - %"$adtgep_431" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_428", i32 0, i32 2 - store %TName_List_Int32* %"$an_427", %TName_List_Int32** %"$adtgep_431" - %"$adtptr_432" = bitcast %CName_Cons_Int32* %"$adtval_428" to %TName_List_Int32* - store %TName_List_Int32* %"$adtptr_432", %TName_List_Int32** %"$retval_48" - %"$$retval_48_433" = load %TName_List_Int32*, %TName_List_Int32** %"$retval_48" - ret %TName_List_Int32* %"$$retval_48_433" + %"$gasrem_634" = load i64, i64* @_gasrem + %"$gascmp_635" = icmp ugt i64 1, %"$gasrem_634" + br i1 %"$gascmp_635", label %"$out_of_gas_636", label %"$have_gas_637" + +"$out_of_gas_636": ; preds = %"$have_gas_632" + call void @_out_of_gas() + br label %"$have_gas_637" + +"$have_gas_637": ; preds = %"$out_of_gas_636", %"$have_gas_632" + %"$consume_638" = sub i64 %"$gasrem_634", 1 + store i64 %"$consume_638", i64* @_gasrem + %"$adtval_639_load" = load i8*, i8** @_execptr + %"$adtval_639_salloc" = call i8* @_salloc(i8* %"$adtval_639_load", i64 1) + %"$adtval_639" = bitcast i8* %"$adtval_639_salloc" to %CName_Nil_Int32* + %"$adtgep_640" = getelementptr inbounds %CName_Nil_Int32, %CName_Nil_Int32* %"$adtval_639", i32 0, i32 0 + store i8 1, i8* %"$adtgep_640" + %"$adtptr_641" = bitcast %CName_Nil_Int32* %"$adtval_639" to %TName_List_Int32* + store %TName_List_Int32* %"$adtptr_641", %TName_List_Int32** %an + %"$gasrem_642" = load i64, i64* @_gasrem + %"$gascmp_643" = icmp ugt i64 1, %"$gasrem_642" + br i1 %"$gascmp_643", label %"$out_of_gas_644", label %"$have_gas_645" + +"$out_of_gas_644": ; preds = %"$have_gas_637" + call void @_out_of_gas() + br label %"$have_gas_645" + +"$have_gas_645": ; preds = %"$out_of_gas_644", %"$have_gas_637" + %"$consume_646" = sub i64 %"$gasrem_642", 1 + store i64 %"$consume_646", i64* @_gasrem + %"$an_647" = load %TName_List_Int32*, %TName_List_Int32** %an + %"$adtval_648_load" = load i8*, i8** @_execptr + %"$adtval_648_salloc" = call i8* @_salloc(i8* %"$adtval_648_load", i64 13) + %"$adtval_648" = bitcast i8* %"$adtval_648_salloc" to %CName_Cons_Int32* + %"$adtgep_649" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_648", i32 0, i32 0 + store i8 0, i8* %"$adtgep_649" + %"$adtgep_650" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_648", i32 0, i32 1 + store %Int32 %1, %Int32* %"$adtgep_650" + %"$adtgep_651" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_648", i32 0, i32 2 + store %TName_List_Int32* %"$an_647", %TName_List_Int32** %"$adtgep_651" + %"$adtptr_652" = bitcast %CName_Cons_Int32* %"$adtval_648" to %TName_List_Int32* + store %TName_List_Int32* %"$adtptr_652", %TName_List_Int32** %"$retval_48" + %"$$retval_48_653" = load %TName_List_Int32*, %TName_List_Int32** %"$retval_48" + ret %TName_List_Int32* %"$$retval_48_653" } define internal { %TName_List_Int32* (i8*, %Int32)*, i8* } @"$fundef_45"(%"$$fundef_45_env_149"* %0) { entry: %"$retval_46" = alloca { %TName_List_Int32* (i8*, %Int32)*, i8* } + %"$gasrem_620" = load i64, i64* @_gasrem + %"$gascmp_621" = icmp ugt i64 1, %"$gasrem_620" + br i1 %"$gascmp_621", label %"$out_of_gas_622", label %"$have_gas_623" + +"$out_of_gas_622": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_623" + +"$have_gas_623": ; preds = %"$out_of_gas_622", %entry + %"$consume_624" = sub i64 %"$gasrem_620", 1 + store i64 %"$consume_624", i64* @_gasrem store { %TName_List_Int32* (i8*, %Int32)*, i8* } { %TName_List_Int32* (i8*, %Int32)* bitcast (%TName_List_Int32* (%"$$fundef_47_env_148"*, %Int32)* @"$fundef_47" to %TName_List_Int32* (i8*, %Int32)*), i8* null }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$retval_46" - %"$$retval_46_423" = load { %TName_List_Int32* (i8*, %Int32)*, i8* }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$retval_46" - ret { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$$retval_46_423" + %"$$retval_46_628" = load { %TName_List_Int32* (i8*, %Int32)*, i8* }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$retval_46" + ret { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$$retval_46_628" } define internal %Uint32 @"$fundef_42"(%"$$fundef_42_env_150"* %0, %Int64 %1) { entry: - %"$$fundef_42_env_one_412" = getelementptr inbounds %"$$fundef_42_env_150", %"$$fundef_42_env_150"* %0, i32 0, i32 0 - %"$one_envload_413" = load %Uint32, %Uint32* %"$$fundef_42_env_one_412" + %"$$fundef_42_env_one_612" = getelementptr inbounds %"$$fundef_42_env_150", %"$$fundef_42_env_150"* %0, i32 0, i32 0 + %"$one_envload_613" = load %Uint32, %Uint32* %"$$fundef_42_env_one_612" %one = alloca %Uint32 - store %Uint32 %"$one_envload_413", %Uint32* %one - %"$$fundef_42_env_z_414" = getelementptr inbounds %"$$fundef_42_env_150", %"$$fundef_42_env_150"* %0, i32 0, i32 1 - %"$z_envload_415" = load %Uint32, %Uint32* %"$$fundef_42_env_z_414" + store %Uint32 %"$one_envload_613", %Uint32* %one + %"$$fundef_42_env_z_614" = getelementptr inbounds %"$$fundef_42_env_150", %"$$fundef_42_env_150"* %0, i32 0, i32 1 + %"$z_envload_615" = load %Uint32, %Uint32* %"$$fundef_42_env_z_614" %z = alloca %Uint32 - store %Uint32 %"$z_envload_415", %Uint32* %z + store %Uint32 %"$z_envload_615", %Uint32* %z %"$retval_43" = alloca %Uint32 - %"$one_416" = load %Uint32, %Uint32* %one - %"$z_417" = load %Uint32, %Uint32* %z - %"$add_call_418" = call %Uint32 @_add_Uint32(%Uint32 %"$one_416", %Uint32 %"$z_417") - store %Uint32 %"$add_call_418", %Uint32* %"$retval_43" - %"$$retval_43_419" = load %Uint32, %Uint32* %"$retval_43" - ret %Uint32 %"$$retval_43_419" + %"$one_616" = load %Uint32, %Uint32* %one + %"$z_617" = load %Uint32, %Uint32* %z + %"$add_call_618" = call %Uint32 @_add_Uint32(%Uint32 %"$one_616", %Uint32 %"$z_617") + store %Uint32 %"$add_call_618", %Uint32* %"$retval_43" + %"$$retval_43_619" = load %Uint32, %Uint32* %"$retval_43" + ret %Uint32 %"$$retval_43_619" } define internal { %Uint32 (i8*, %Int64)*, i8* } @"$fundef_40"(%"$$fundef_40_env_151"* %0, %Uint32 %1) { entry: - %"$$fundef_40_env_one_402" = getelementptr inbounds %"$$fundef_40_env_151", %"$$fundef_40_env_151"* %0, i32 0, i32 0 - %"$one_envload_403" = load %Uint32, %Uint32* %"$$fundef_40_env_one_402" + %"$$fundef_40_env_one_597" = getelementptr inbounds %"$$fundef_40_env_151", %"$$fundef_40_env_151"* %0, i32 0, i32 0 + %"$one_envload_598" = load %Uint32, %Uint32* %"$$fundef_40_env_one_597" %one = alloca %Uint32 - store %Uint32 %"$one_envload_403", %Uint32* %one + store %Uint32 %"$one_envload_598", %Uint32* %one %"$retval_41" = alloca { %Uint32 (i8*, %Int64)*, i8* } - %"$$fundef_42_envp_404_load" = load i8*, i8** @_execptr - %"$$fundef_42_envp_404_salloc" = call i8* @_salloc(i8* %"$$fundef_42_envp_404_load", i64 8) - %"$$fundef_42_envp_404" = bitcast i8* %"$$fundef_42_envp_404_salloc" to %"$$fundef_42_env_150"* - %"$$fundef_42_env_voidp_406" = bitcast %"$$fundef_42_env_150"* %"$$fundef_42_envp_404" to i8* - %"$$fundef_42_cloval_407" = insertvalue { %Uint32 (i8*, %Int64)*, i8* } { %Uint32 (i8*, %Int64)* bitcast (%Uint32 (%"$$fundef_42_env_150"*, %Int64)* @"$fundef_42" to %Uint32 (i8*, %Int64)*), i8* undef }, i8* %"$$fundef_42_env_voidp_406", 1 - %"$$fundef_42_env_one_408" = getelementptr inbounds %"$$fundef_42_env_150", %"$$fundef_42_env_150"* %"$$fundef_42_envp_404", i32 0, i32 0 - %"$one_409" = load %Uint32, %Uint32* %one - store %Uint32 %"$one_409", %Uint32* %"$$fundef_42_env_one_408" - %"$$fundef_42_env_z_410" = getelementptr inbounds %"$$fundef_42_env_150", %"$$fundef_42_env_150"* %"$$fundef_42_envp_404", i32 0, i32 1 - store %Uint32 %1, %Uint32* %"$$fundef_42_env_z_410" - store { %Uint32 (i8*, %Int64)*, i8* } %"$$fundef_42_cloval_407", { %Uint32 (i8*, %Int64)*, i8* }* %"$retval_41" - %"$$retval_41_411" = load { %Uint32 (i8*, %Int64)*, i8* }, { %Uint32 (i8*, %Int64)*, i8* }* %"$retval_41" - ret { %Uint32 (i8*, %Int64)*, i8* } %"$$retval_41_411" + %"$gasrem_599" = load i64, i64* @_gasrem + %"$gascmp_600" = icmp ugt i64 1, %"$gasrem_599" + br i1 %"$gascmp_600", label %"$out_of_gas_601", label %"$have_gas_602" + +"$out_of_gas_601": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_602" + +"$have_gas_602": ; preds = %"$out_of_gas_601", %entry + %"$consume_603" = sub i64 %"$gasrem_599", 1 + store i64 %"$consume_603", i64* @_gasrem + %"$$fundef_42_envp_604_load" = load i8*, i8** @_execptr + %"$$fundef_42_envp_604_salloc" = call i8* @_salloc(i8* %"$$fundef_42_envp_604_load", i64 8) + %"$$fundef_42_envp_604" = bitcast i8* %"$$fundef_42_envp_604_salloc" to %"$$fundef_42_env_150"* + %"$$fundef_42_env_voidp_606" = bitcast %"$$fundef_42_env_150"* %"$$fundef_42_envp_604" to i8* + %"$$fundef_42_cloval_607" = insertvalue { %Uint32 (i8*, %Int64)*, i8* } { %Uint32 (i8*, %Int64)* bitcast (%Uint32 (%"$$fundef_42_env_150"*, %Int64)* @"$fundef_42" to %Uint32 (i8*, %Int64)*), i8* undef }, i8* %"$$fundef_42_env_voidp_606", 1 + %"$$fundef_42_env_one_608" = getelementptr inbounds %"$$fundef_42_env_150", %"$$fundef_42_env_150"* %"$$fundef_42_envp_604", i32 0, i32 0 + %"$one_609" = load %Uint32, %Uint32* %one + store %Uint32 %"$one_609", %Uint32* %"$$fundef_42_env_one_608" + %"$$fundef_42_env_z_610" = getelementptr inbounds %"$$fundef_42_env_150", %"$$fundef_42_env_150"* %"$$fundef_42_envp_604", i32 0, i32 1 + store %Uint32 %1, %Uint32* %"$$fundef_42_env_z_610" + store { %Uint32 (i8*, %Int64)*, i8* } %"$$fundef_42_cloval_607", { %Uint32 (i8*, %Int64)*, i8* }* %"$retval_41" + %"$$retval_41_611" = load { %Uint32 (i8*, %Int64)*, i8* }, { %Uint32 (i8*, %Int64)*, i8* }* %"$retval_41" + ret { %Uint32 (i8*, %Int64)*, i8* } %"$$retval_41_611" } define internal { %Uint32 (i8*, %TName_List_Int64*)*, i8* } @"$fundef_38"(%"$$fundef_38_env_152"* %0) { entry: - %"$$fundef_38_env_list_foldl_369" = getelementptr inbounds %"$$fundef_38_env_152", %"$$fundef_38_env_152"* %0, i32 0, i32 0 - %"$list_foldl_envload_370" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_38_env_list_foldl_369" + %"$$fundef_38_env_list_foldl_519" = getelementptr inbounds %"$$fundef_38_env_152", %"$$fundef_38_env_152"* %0, i32 0, i32 0 + %"$list_foldl_envload_520" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_38_env_list_foldl_519" %list_foldl = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_foldl_envload_370", { i8*, i8* }** %list_foldl + store { i8*, i8* }* %"$list_foldl_envload_520", { i8*, i8* }** %list_foldl %"$retval_39" = alloca { %Uint32 (i8*, %TName_List_Int64*)*, i8* } + %"$gasrem_521" = load i64, i64* @_gasrem + %"$gascmp_522" = icmp ugt i64 1, %"$gasrem_521" + br i1 %"$gascmp_522", label %"$out_of_gas_523", label %"$have_gas_524" + +"$out_of_gas_523": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_524" + +"$have_gas_524": ; preds = %"$out_of_gas_523", %entry + %"$consume_525" = sub i64 %"$gasrem_521", 1 + store i64 %"$consume_525", i64* @_gasrem %foldl = alloca { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } - %"$list_foldl_371" = load { i8*, i8* }*, { i8*, i8* }** %list_foldl - %"$list_foldl_372" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_371", i32 2 - %"$list_foldl_373" = bitcast { i8*, i8* }* %"$list_foldl_372" to { { i8*, i8* }* (i8*)*, i8* }* - %"$list_foldl_374" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$list_foldl_373" - %"$list_foldl_fptr_375" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_374", 0 - %"$list_foldl_envptr_376" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_374", 1 - %"$list_foldl_call_377" = call { i8*, i8* }* %"$list_foldl_fptr_375"(i8* %"$list_foldl_envptr_376") - %"$list_foldl_378" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_call_377", i32 1 - %"$list_foldl_379" = bitcast { i8*, i8* }* %"$list_foldl_378" to { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - %"$list_foldl_380" = load { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_foldl_379" - %"$list_foldl_fptr_381" = extractvalue { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_380", 0 - %"$list_foldl_envptr_382" = extractvalue { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_380", 1 - %"$list_foldl_call_383" = call { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_fptr_381"(i8* %"$list_foldl_envptr_382") - store { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_call_383", { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl + %"$gasrem_526" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_524" + call void @_out_of_gas() + br label %"$have_gas_529" + +"$have_gas_529": ; preds = %"$out_of_gas_528", %"$have_gas_524" + %"$consume_530" = sub i64 %"$gasrem_526", 1 + store i64 %"$consume_530", i64* @_gasrem + %"$list_foldl_531" = load { i8*, i8* }*, { i8*, i8* }** %list_foldl + %"$list_foldl_532" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_531", i32 2 + %"$list_foldl_533" = bitcast { i8*, i8* }* %"$list_foldl_532" to { { i8*, i8* }* (i8*)*, i8* }* + %"$list_foldl_534" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$list_foldl_533" + %"$list_foldl_fptr_535" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_534", 0 + %"$list_foldl_envptr_536" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_534", 1 + %"$list_foldl_call_537" = call { i8*, i8* }* %"$list_foldl_fptr_535"(i8* %"$list_foldl_envptr_536") + %"$list_foldl_538" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_call_537", i32 1 + %"$list_foldl_539" = bitcast { i8*, i8* }* %"$list_foldl_538" to { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + %"$list_foldl_540" = load { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_foldl_539" + %"$list_foldl_fptr_541" = extractvalue { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_540", 0 + %"$list_foldl_envptr_542" = extractvalue { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_540", 1 + %"$list_foldl_call_543" = call { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_fptr_541"(i8* %"$list_foldl_envptr_542") + store { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_call_543", { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl + %"$gasrem_544" = load i64, i64* @_gasrem + %"$gascmp_545" = icmp ugt i64 1, %"$gasrem_544" + br i1 %"$gascmp_545", label %"$out_of_gas_546", label %"$have_gas_547" + +"$out_of_gas_546": ; preds = %"$have_gas_529" + call void @_out_of_gas() + br label %"$have_gas_547" + +"$have_gas_547": ; preds = %"$out_of_gas_546", %"$have_gas_529" + %"$consume_548" = sub i64 %"$gasrem_544", 1 + store i64 %"$consume_548", i64* @_gasrem %one = alloca %Uint32 + %"$gasrem_549" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_547" + call void @_out_of_gas() + br label %"$have_gas_552" + +"$have_gas_552": ; preds = %"$out_of_gas_551", %"$have_gas_547" + %"$consume_553" = sub i64 %"$gasrem_549", 1 + store i64 %"$consume_553", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %one + %"$gasrem_554" = load i64, i64* @_gasrem + %"$gascmp_555" = icmp ugt i64 1, %"$gasrem_554" + br i1 %"$gascmp_555", label %"$out_of_gas_556", label %"$have_gas_557" + +"$out_of_gas_556": ; preds = %"$have_gas_552" + call void @_out_of_gas() + br label %"$have_gas_557" + +"$have_gas_557": ; preds = %"$out_of_gas_556", %"$have_gas_552" + %"$consume_558" = sub i64 %"$gasrem_554", 1 + store i64 %"$consume_558", i64* @_gasrem %iter = alloca { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } - %"$$fundef_40_envp_384_load" = load i8*, i8** @_execptr - %"$$fundef_40_envp_384_salloc" = call i8* @_salloc(i8* %"$$fundef_40_envp_384_load", i64 4) - %"$$fundef_40_envp_384" = bitcast i8* %"$$fundef_40_envp_384_salloc" to %"$$fundef_40_env_151"* - %"$$fundef_40_env_voidp_386" = bitcast %"$$fundef_40_env_151"* %"$$fundef_40_envp_384" to i8* - %"$$fundef_40_cloval_387" = insertvalue { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %Int64)*, i8* } (%"$$fundef_40_env_151"*, %Uint32)* @"$fundef_40" to { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_40_env_voidp_386", 1 - %"$$fundef_40_env_one_388" = getelementptr inbounds %"$$fundef_40_env_151", %"$$fundef_40_env_151"* %"$$fundef_40_envp_384", i32 0, i32 0 - %"$one_389" = load %Uint32, %Uint32* %one - store %Uint32 %"$one_389", %Uint32* %"$$fundef_40_env_one_388" - store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_40_cloval_387", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %iter + %"$gasrem_559" = load i64, i64* @_gasrem + %"$gascmp_560" = icmp ugt i64 1, %"$gasrem_559" + br i1 %"$gascmp_560", label %"$out_of_gas_561", label %"$have_gas_562" + +"$out_of_gas_561": ; preds = %"$have_gas_557" + call void @_out_of_gas() + br label %"$have_gas_562" + +"$have_gas_562": ; preds = %"$out_of_gas_561", %"$have_gas_557" + %"$consume_563" = sub i64 %"$gasrem_559", 1 + store i64 %"$consume_563", i64* @_gasrem + %"$$fundef_40_envp_564_load" = load i8*, i8** @_execptr + %"$$fundef_40_envp_564_salloc" = call i8* @_salloc(i8* %"$$fundef_40_envp_564_load", i64 4) + %"$$fundef_40_envp_564" = bitcast i8* %"$$fundef_40_envp_564_salloc" to %"$$fundef_40_env_151"* + %"$$fundef_40_env_voidp_566" = bitcast %"$$fundef_40_env_151"* %"$$fundef_40_envp_564" to i8* + %"$$fundef_40_cloval_567" = insertvalue { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %Int64)*, i8* } (%"$$fundef_40_env_151"*, %Uint32)* @"$fundef_40" to { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_40_env_voidp_566", 1 + %"$$fundef_40_env_one_568" = getelementptr inbounds %"$$fundef_40_env_151", %"$$fundef_40_env_151"* %"$$fundef_40_envp_564", i32 0, i32 0 + %"$one_569" = load %Uint32, %Uint32* %one + store %Uint32 %"$one_569", %Uint32* %"$$fundef_40_env_one_568" + store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_40_cloval_567", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %iter + %"$gasrem_570" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_562" + call void @_out_of_gas() + br label %"$have_gas_573" + +"$have_gas_573": ; preds = %"$out_of_gas_572", %"$have_gas_562" + %"$consume_574" = sub i64 %"$gasrem_570", 1 + store i64 %"$consume_574", i64* @_gasrem %init = alloca %Uint32 + %"$gasrem_575" = load i64, i64* @_gasrem + %"$gascmp_576" = icmp ugt i64 1, %"$gasrem_575" + br i1 %"$gascmp_576", label %"$out_of_gas_577", label %"$have_gas_578" + +"$out_of_gas_577": ; preds = %"$have_gas_573" + call void @_out_of_gas() + br label %"$have_gas_578" + +"$have_gas_578": ; preds = %"$out_of_gas_577", %"$have_gas_573" + %"$consume_579" = sub i64 %"$gasrem_575", 1 + store i64 %"$consume_579", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %init + %"$gasrem_580" = load i64, i64* @_gasrem + %"$gascmp_581" = icmp ugt i64 1, %"$gasrem_580" + br i1 %"$gascmp_581", label %"$out_of_gas_582", label %"$have_gas_583" + +"$out_of_gas_582": ; preds = %"$have_gas_578" + call void @_out_of_gas() + br label %"$have_gas_583" + +"$have_gas_583": ; preds = %"$out_of_gas_582", %"$have_gas_578" + %"$consume_584" = sub i64 %"$gasrem_580", 1 + store i64 %"$consume_584", i64* @_gasrem %"$foldl_4" = alloca { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } - %"$foldl_390" = load { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl - %"$foldl_fptr_391" = extractvalue { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_390", 0 - %"$foldl_envptr_392" = extractvalue { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_390", 1 - %"$iter_393" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %iter - %"$foldl_call_394" = call { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_fptr_391"(i8* %"$foldl_envptr_392", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$iter_393") - store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_call_394", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" + %"$foldl_585" = load { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl + %"$foldl_fptr_586" = extractvalue { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_585", 0 + %"$foldl_envptr_587" = extractvalue { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_585", 1 + %"$iter_588" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %iter + %"$foldl_call_589" = call { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_fptr_586"(i8* %"$foldl_envptr_587", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$iter_588") + store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_call_589", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" %"$foldl_5" = alloca { %Uint32 (i8*, %TName_List_Int64*)*, i8* } - %"$$foldl_4_395" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" - %"$$foldl_4_fptr_396" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_395", 0 - %"$$foldl_4_envptr_397" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_395", 1 - %"$init_398" = load %Uint32, %Uint32* %init - %"$$foldl_4_call_399" = call { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$foldl_4_fptr_396"(i8* %"$$foldl_4_envptr_397", %Uint32 %"$init_398") - store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$foldl_4_call_399", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$foldl_5" - %"$$foldl_5_400" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$foldl_5" - store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$foldl_5_400", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$retval_39" - %"$$retval_39_401" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$retval_39" - ret { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$retval_39_401" + %"$$foldl_4_590" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" + %"$$foldl_4_fptr_591" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_590", 0 + %"$$foldl_4_envptr_592" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_590", 1 + %"$init_593" = load %Uint32, %Uint32* %init + %"$$foldl_4_call_594" = call { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$foldl_4_fptr_591"(i8* %"$$foldl_4_envptr_592", %Uint32 %"$init_593") + store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$foldl_4_call_594", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$foldl_5" + %"$$foldl_5_595" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$foldl_5" + store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$foldl_5_595", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$retval_39" + %"$$retval_39_596" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$retval_39" + ret { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$retval_39_596" } define internal %Uint32 @"$fundef_36"(%"$$fundef_36_env_153"* %0, %Int32 %1) { entry: - %"$$fundef_36_env_one_361" = getelementptr inbounds %"$$fundef_36_env_153", %"$$fundef_36_env_153"* %0, i32 0, i32 0 - %"$one_envload_362" = load %Uint32, %Uint32* %"$$fundef_36_env_one_361" + %"$$fundef_36_env_one_511" = getelementptr inbounds %"$$fundef_36_env_153", %"$$fundef_36_env_153"* %0, i32 0, i32 0 + %"$one_envload_512" = load %Uint32, %Uint32* %"$$fundef_36_env_one_511" %one = alloca %Uint32 - store %Uint32 %"$one_envload_362", %Uint32* %one - %"$$fundef_36_env_z_363" = getelementptr inbounds %"$$fundef_36_env_153", %"$$fundef_36_env_153"* %0, i32 0, i32 1 - %"$z_envload_364" = load %Uint32, %Uint32* %"$$fundef_36_env_z_363" + store %Uint32 %"$one_envload_512", %Uint32* %one + %"$$fundef_36_env_z_513" = getelementptr inbounds %"$$fundef_36_env_153", %"$$fundef_36_env_153"* %0, i32 0, i32 1 + %"$z_envload_514" = load %Uint32, %Uint32* %"$$fundef_36_env_z_513" %z = alloca %Uint32 - store %Uint32 %"$z_envload_364", %Uint32* %z + store %Uint32 %"$z_envload_514", %Uint32* %z %"$retval_37" = alloca %Uint32 - %"$one_365" = load %Uint32, %Uint32* %one - %"$z_366" = load %Uint32, %Uint32* %z - %"$add_call_367" = call %Uint32 @_add_Uint32(%Uint32 %"$one_365", %Uint32 %"$z_366") - store %Uint32 %"$add_call_367", %Uint32* %"$retval_37" - %"$$retval_37_368" = load %Uint32, %Uint32* %"$retval_37" - ret %Uint32 %"$$retval_37_368" + %"$one_515" = load %Uint32, %Uint32* %one + %"$z_516" = load %Uint32, %Uint32* %z + %"$add_call_517" = call %Uint32 @_add_Uint32(%Uint32 %"$one_515", %Uint32 %"$z_516") + store %Uint32 %"$add_call_517", %Uint32* %"$retval_37" + %"$$retval_37_518" = load %Uint32, %Uint32* %"$retval_37" + ret %Uint32 %"$$retval_37_518" } define internal { %Uint32 (i8*, %Int32)*, i8* } @"$fundef_34"(%"$$fundef_34_env_154"* %0, %Uint32 %1) { entry: - %"$$fundef_34_env_one_351" = getelementptr inbounds %"$$fundef_34_env_154", %"$$fundef_34_env_154"* %0, i32 0, i32 0 - %"$one_envload_352" = load %Uint32, %Uint32* %"$$fundef_34_env_one_351" + %"$$fundef_34_env_one_496" = getelementptr inbounds %"$$fundef_34_env_154", %"$$fundef_34_env_154"* %0, i32 0, i32 0 + %"$one_envload_497" = load %Uint32, %Uint32* %"$$fundef_34_env_one_496" %one = alloca %Uint32 - store %Uint32 %"$one_envload_352", %Uint32* %one + store %Uint32 %"$one_envload_497", %Uint32* %one %"$retval_35" = alloca { %Uint32 (i8*, %Int32)*, i8* } - %"$$fundef_36_envp_353_load" = load i8*, i8** @_execptr - %"$$fundef_36_envp_353_salloc" = call i8* @_salloc(i8* %"$$fundef_36_envp_353_load", i64 8) - %"$$fundef_36_envp_353" = bitcast i8* %"$$fundef_36_envp_353_salloc" to %"$$fundef_36_env_153"* - %"$$fundef_36_env_voidp_355" = bitcast %"$$fundef_36_env_153"* %"$$fundef_36_envp_353" to i8* - %"$$fundef_36_cloval_356" = insertvalue { %Uint32 (i8*, %Int32)*, i8* } { %Uint32 (i8*, %Int32)* bitcast (%Uint32 (%"$$fundef_36_env_153"*, %Int32)* @"$fundef_36" to %Uint32 (i8*, %Int32)*), i8* undef }, i8* %"$$fundef_36_env_voidp_355", 1 - %"$$fundef_36_env_one_357" = getelementptr inbounds %"$$fundef_36_env_153", %"$$fundef_36_env_153"* %"$$fundef_36_envp_353", i32 0, i32 0 - %"$one_358" = load %Uint32, %Uint32* %one - store %Uint32 %"$one_358", %Uint32* %"$$fundef_36_env_one_357" - %"$$fundef_36_env_z_359" = getelementptr inbounds %"$$fundef_36_env_153", %"$$fundef_36_env_153"* %"$$fundef_36_envp_353", i32 0, i32 1 - store %Uint32 %1, %Uint32* %"$$fundef_36_env_z_359" - store { %Uint32 (i8*, %Int32)*, i8* } %"$$fundef_36_cloval_356", { %Uint32 (i8*, %Int32)*, i8* }* %"$retval_35" - %"$$retval_35_360" = load { %Uint32 (i8*, %Int32)*, i8* }, { %Uint32 (i8*, %Int32)*, i8* }* %"$retval_35" - ret { %Uint32 (i8*, %Int32)*, i8* } %"$$retval_35_360" + %"$gasrem_498" = load i64, i64* @_gasrem + %"$gascmp_499" = icmp ugt i64 1, %"$gasrem_498" + br i1 %"$gascmp_499", label %"$out_of_gas_500", label %"$have_gas_501" + +"$out_of_gas_500": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_501" + +"$have_gas_501": ; preds = %"$out_of_gas_500", %entry + %"$consume_502" = sub i64 %"$gasrem_498", 1 + store i64 %"$consume_502", i64* @_gasrem + %"$$fundef_36_envp_503_load" = load i8*, i8** @_execptr + %"$$fundef_36_envp_503_salloc" = call i8* @_salloc(i8* %"$$fundef_36_envp_503_load", i64 8) + %"$$fundef_36_envp_503" = bitcast i8* %"$$fundef_36_envp_503_salloc" to %"$$fundef_36_env_153"* + %"$$fundef_36_env_voidp_505" = bitcast %"$$fundef_36_env_153"* %"$$fundef_36_envp_503" to i8* + %"$$fundef_36_cloval_506" = insertvalue { %Uint32 (i8*, %Int32)*, i8* } { %Uint32 (i8*, %Int32)* bitcast (%Uint32 (%"$$fundef_36_env_153"*, %Int32)* @"$fundef_36" to %Uint32 (i8*, %Int32)*), i8* undef }, i8* %"$$fundef_36_env_voidp_505", 1 + %"$$fundef_36_env_one_507" = getelementptr inbounds %"$$fundef_36_env_153", %"$$fundef_36_env_153"* %"$$fundef_36_envp_503", i32 0, i32 0 + %"$one_508" = load %Uint32, %Uint32* %one + store %Uint32 %"$one_508", %Uint32* %"$$fundef_36_env_one_507" + %"$$fundef_36_env_z_509" = getelementptr inbounds %"$$fundef_36_env_153", %"$$fundef_36_env_153"* %"$$fundef_36_envp_503", i32 0, i32 1 + store %Uint32 %1, %Uint32* %"$$fundef_36_env_z_509" + store { %Uint32 (i8*, %Int32)*, i8* } %"$$fundef_36_cloval_506", { %Uint32 (i8*, %Int32)*, i8* }* %"$retval_35" + %"$$retval_35_510" = load { %Uint32 (i8*, %Int32)*, i8* }, { %Uint32 (i8*, %Int32)*, i8* }* %"$retval_35" + ret { %Uint32 (i8*, %Int32)*, i8* } %"$$retval_35_510" } define internal { %Uint32 (i8*, %TName_List_Int32*)*, i8* } @"$fundef_32"(%"$$fundef_32_env_155"* %0) { entry: - %"$$fundef_32_env_list_foldl_318" = getelementptr inbounds %"$$fundef_32_env_155", %"$$fundef_32_env_155"* %0, i32 0, i32 0 - %"$list_foldl_envload_319" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_32_env_list_foldl_318" + %"$$fundef_32_env_list_foldl_418" = getelementptr inbounds %"$$fundef_32_env_155", %"$$fundef_32_env_155"* %0, i32 0, i32 0 + %"$list_foldl_envload_419" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_32_env_list_foldl_418" %list_foldl = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_foldl_envload_319", { i8*, i8* }** %list_foldl + store { i8*, i8* }* %"$list_foldl_envload_419", { i8*, i8* }** %list_foldl %"$retval_33" = alloca { %Uint32 (i8*, %TName_List_Int32*)*, i8* } + %"$gasrem_420" = load i64, i64* @_gasrem + %"$gascmp_421" = icmp ugt i64 1, %"$gasrem_420" + br i1 %"$gascmp_421", label %"$out_of_gas_422", label %"$have_gas_423" + +"$out_of_gas_422": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_423" + +"$have_gas_423": ; preds = %"$out_of_gas_422", %entry + %"$consume_424" = sub i64 %"$gasrem_420", 1 + store i64 %"$consume_424", i64* @_gasrem %foldl = alloca { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } - %"$list_foldl_320" = load { i8*, i8* }*, { i8*, i8* }** %list_foldl - %"$list_foldl_321" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_320", i32 0 - %"$list_foldl_322" = bitcast { i8*, i8* }* %"$list_foldl_321" to { { i8*, i8* }* (i8*)*, i8* }* - %"$list_foldl_323" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$list_foldl_322" - %"$list_foldl_fptr_324" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_323", 0 - %"$list_foldl_envptr_325" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_323", 1 - %"$list_foldl_call_326" = call { i8*, i8* }* %"$list_foldl_fptr_324"(i8* %"$list_foldl_envptr_325") - %"$list_foldl_327" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_call_326", i32 1 - %"$list_foldl_328" = bitcast { i8*, i8* }* %"$list_foldl_327" to { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - %"$list_foldl_329" = load { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_foldl_328" - %"$list_foldl_fptr_330" = extractvalue { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_329", 0 - %"$list_foldl_envptr_331" = extractvalue { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_329", 1 - %"$list_foldl_call_332" = call { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_fptr_330"(i8* %"$list_foldl_envptr_331") - store { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_call_332", { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl + %"$gasrem_425" = load i64, i64* @_gasrem + %"$gascmp_426" = icmp ugt i64 1, %"$gasrem_425" + br i1 %"$gascmp_426", label %"$out_of_gas_427", label %"$have_gas_428" + +"$out_of_gas_427": ; preds = %"$have_gas_423" + call void @_out_of_gas() + br label %"$have_gas_428" + +"$have_gas_428": ; preds = %"$out_of_gas_427", %"$have_gas_423" + %"$consume_429" = sub i64 %"$gasrem_425", 1 + store i64 %"$consume_429", i64* @_gasrem + %"$list_foldl_430" = load { i8*, i8* }*, { i8*, i8* }** %list_foldl + %"$list_foldl_431" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_430", i32 0 + %"$list_foldl_432" = bitcast { i8*, i8* }* %"$list_foldl_431" to { { i8*, i8* }* (i8*)*, i8* }* + %"$list_foldl_433" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$list_foldl_432" + %"$list_foldl_fptr_434" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_433", 0 + %"$list_foldl_envptr_435" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_433", 1 + %"$list_foldl_call_436" = call { i8*, i8* }* %"$list_foldl_fptr_434"(i8* %"$list_foldl_envptr_435") + %"$list_foldl_437" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_call_436", i32 1 + %"$list_foldl_438" = bitcast { i8*, i8* }* %"$list_foldl_437" to { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + %"$list_foldl_439" = load { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_foldl_438" + %"$list_foldl_fptr_440" = extractvalue { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_439", 0 + %"$list_foldl_envptr_441" = extractvalue { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_439", 1 + %"$list_foldl_call_442" = call { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_fptr_440"(i8* %"$list_foldl_envptr_441") + store { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_call_442", { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl + %"$gasrem_443" = load i64, i64* @_gasrem + %"$gascmp_444" = icmp ugt i64 1, %"$gasrem_443" + br i1 %"$gascmp_444", label %"$out_of_gas_445", label %"$have_gas_446" + +"$out_of_gas_445": ; preds = %"$have_gas_428" + call void @_out_of_gas() + br label %"$have_gas_446" + +"$have_gas_446": ; preds = %"$out_of_gas_445", %"$have_gas_428" + %"$consume_447" = sub i64 %"$gasrem_443", 1 + store i64 %"$consume_447", i64* @_gasrem %one = alloca %Uint32 + %"$gasrem_448" = load i64, i64* @_gasrem + %"$gascmp_449" = icmp ugt i64 1, %"$gasrem_448" + br i1 %"$gascmp_449", label %"$out_of_gas_450", label %"$have_gas_451" + +"$out_of_gas_450": ; preds = %"$have_gas_446" + call void @_out_of_gas() + br label %"$have_gas_451" + +"$have_gas_451": ; preds = %"$out_of_gas_450", %"$have_gas_446" + %"$consume_452" = sub i64 %"$gasrem_448", 1 + store i64 %"$consume_452", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %one + %"$gasrem_453" = load i64, i64* @_gasrem + %"$gascmp_454" = icmp ugt i64 1, %"$gasrem_453" + br i1 %"$gascmp_454", label %"$out_of_gas_455", label %"$have_gas_456" + +"$out_of_gas_455": ; preds = %"$have_gas_451" + call void @_out_of_gas() + br label %"$have_gas_456" + +"$have_gas_456": ; preds = %"$out_of_gas_455", %"$have_gas_451" + %"$consume_457" = sub i64 %"$gasrem_453", 1 + store i64 %"$consume_457", i64* @_gasrem %iter = alloca { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } - %"$$fundef_34_envp_333_load" = load i8*, i8** @_execptr - %"$$fundef_34_envp_333_salloc" = call i8* @_salloc(i8* %"$$fundef_34_envp_333_load", i64 4) - %"$$fundef_34_envp_333" = bitcast i8* %"$$fundef_34_envp_333_salloc" to %"$$fundef_34_env_154"* - %"$$fundef_34_env_voidp_335" = bitcast %"$$fundef_34_env_154"* %"$$fundef_34_envp_333" to i8* - %"$$fundef_34_cloval_336" = insertvalue { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %Int32)*, i8* } (%"$$fundef_34_env_154"*, %Uint32)* @"$fundef_34" to { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_34_env_voidp_335", 1 - %"$$fundef_34_env_one_337" = getelementptr inbounds %"$$fundef_34_env_154", %"$$fundef_34_env_154"* %"$$fundef_34_envp_333", i32 0, i32 0 - %"$one_338" = load %Uint32, %Uint32* %one - store %Uint32 %"$one_338", %Uint32* %"$$fundef_34_env_one_337" - store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_34_cloval_336", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %iter + %"$gasrem_458" = load i64, i64* @_gasrem + %"$gascmp_459" = icmp ugt i64 1, %"$gasrem_458" + br i1 %"$gascmp_459", label %"$out_of_gas_460", label %"$have_gas_461" + +"$out_of_gas_460": ; preds = %"$have_gas_456" + call void @_out_of_gas() + br label %"$have_gas_461" + +"$have_gas_461": ; preds = %"$out_of_gas_460", %"$have_gas_456" + %"$consume_462" = sub i64 %"$gasrem_458", 1 + store i64 %"$consume_462", i64* @_gasrem + %"$$fundef_34_envp_463_load" = load i8*, i8** @_execptr + %"$$fundef_34_envp_463_salloc" = call i8* @_salloc(i8* %"$$fundef_34_envp_463_load", i64 4) + %"$$fundef_34_envp_463" = bitcast i8* %"$$fundef_34_envp_463_salloc" to %"$$fundef_34_env_154"* + %"$$fundef_34_env_voidp_465" = bitcast %"$$fundef_34_env_154"* %"$$fundef_34_envp_463" to i8* + %"$$fundef_34_cloval_466" = insertvalue { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %Int32)*, i8* } (%"$$fundef_34_env_154"*, %Uint32)* @"$fundef_34" to { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_34_env_voidp_465", 1 + %"$$fundef_34_env_one_467" = getelementptr inbounds %"$$fundef_34_env_154", %"$$fundef_34_env_154"* %"$$fundef_34_envp_463", i32 0, i32 0 + %"$one_468" = load %Uint32, %Uint32* %one + store %Uint32 %"$one_468", %Uint32* %"$$fundef_34_env_one_467" + store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_34_cloval_466", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %iter + %"$gasrem_469" = load i64, i64* @_gasrem + %"$gascmp_470" = icmp ugt i64 1, %"$gasrem_469" + br i1 %"$gascmp_470", label %"$out_of_gas_471", label %"$have_gas_472" + +"$out_of_gas_471": ; preds = %"$have_gas_461" + call void @_out_of_gas() + br label %"$have_gas_472" + +"$have_gas_472": ; preds = %"$out_of_gas_471", %"$have_gas_461" + %"$consume_473" = sub i64 %"$gasrem_469", 1 + store i64 %"$consume_473", i64* @_gasrem %init = alloca %Uint32 + %"$gasrem_474" = load i64, i64* @_gasrem + %"$gascmp_475" = icmp ugt i64 1, %"$gasrem_474" + br i1 %"$gascmp_475", label %"$out_of_gas_476", label %"$have_gas_477" + +"$out_of_gas_476": ; preds = %"$have_gas_472" + call void @_out_of_gas() + br label %"$have_gas_477" + +"$have_gas_477": ; preds = %"$out_of_gas_476", %"$have_gas_472" + %"$consume_478" = sub i64 %"$gasrem_474", 1 + store i64 %"$consume_478", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %init + %"$gasrem_479" = load i64, i64* @_gasrem + %"$gascmp_480" = icmp ugt i64 1, %"$gasrem_479" + br i1 %"$gascmp_480", label %"$out_of_gas_481", label %"$have_gas_482" + +"$out_of_gas_481": ; preds = %"$have_gas_477" + call void @_out_of_gas() + br label %"$have_gas_482" + +"$have_gas_482": ; preds = %"$out_of_gas_481", %"$have_gas_477" + %"$consume_483" = sub i64 %"$gasrem_479", 1 + store i64 %"$consume_483", i64* @_gasrem %"$foldl_4" = alloca { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } - %"$foldl_339" = load { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl - %"$foldl_fptr_340" = extractvalue { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_339", 0 - %"$foldl_envptr_341" = extractvalue { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_339", 1 - %"$iter_342" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %iter - %"$foldl_call_343" = call { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_fptr_340"(i8* %"$foldl_envptr_341", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$iter_342") - store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_call_343", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" + %"$foldl_484" = load { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl + %"$foldl_fptr_485" = extractvalue { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_484", 0 + %"$foldl_envptr_486" = extractvalue { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_484", 1 + %"$iter_487" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %iter + %"$foldl_call_488" = call { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_fptr_485"(i8* %"$foldl_envptr_486", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$iter_487") + store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_call_488", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" %"$foldl_5" = alloca { %Uint32 (i8*, %TName_List_Int32*)*, i8* } - %"$$foldl_4_344" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" - %"$$foldl_4_fptr_345" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_344", 0 - %"$$foldl_4_envptr_346" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_344", 1 - %"$init_347" = load %Uint32, %Uint32* %init - %"$$foldl_4_call_348" = call { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$foldl_4_fptr_345"(i8* %"$$foldl_4_envptr_346", %Uint32 %"$init_347") - store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$foldl_4_call_348", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$foldl_5" - %"$$foldl_5_349" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$foldl_5" - store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$foldl_5_349", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$retval_33" - %"$$retval_33_350" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$retval_33" - ret { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$retval_33_350" + %"$$foldl_4_489" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" + %"$$foldl_4_fptr_490" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_489", 0 + %"$$foldl_4_envptr_491" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_489", 1 + %"$init_492" = load %Uint32, %Uint32* %init + %"$$foldl_4_call_493" = call { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$foldl_4_fptr_490"(i8* %"$$foldl_4_envptr_491", %Uint32 %"$init_492") + store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$foldl_4_call_493", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$foldl_5" + %"$$foldl_5_494" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$foldl_5" + store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$foldl_5_494", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$retval_33" + %"$$retval_33_495" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$retval_33" + ret { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$retval_33_495" } define internal %Uint32 @"$fundef_30"(%"$$fundef_30_env_156"* %0, %TName_List_Int64* %1) { entry: - %"$$fundef_30_env_f_276" = getelementptr inbounds %"$$fundef_30_env_156", %"$$fundef_30_env_156"* %0, i32 0, i32 0 - %"$f_envload_277" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_30_env_f_276" + %"$$fundef_30_env_f_351" = getelementptr inbounds %"$$fundef_30_env_156", %"$$fundef_30_env_156"* %0, i32 0, i32 0 + %"$f_envload_352" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_30_env_f_351" %f = alloca { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_277", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$$fundef_30_env_g_278" = getelementptr inbounds %"$$fundef_30_env_156", %"$$fundef_30_env_156"* %0, i32 0, i32 1 - %"$g_envload_279" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_30_env_g_278" + store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_352", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$$fundef_30_env_g_353" = getelementptr inbounds %"$$fundef_30_env_156", %"$$fundef_30_env_156"* %0, i32 0, i32 1 + %"$g_envload_354" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_30_env_g_353" %g = alloca { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_279", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$$fundef_30_env_z_280" = getelementptr inbounds %"$$fundef_30_env_156", %"$$fundef_30_env_156"* %0, i32 0, i32 2 - %"$z_envload_281" = load %Uint32, %Uint32* %"$$fundef_30_env_z_280" + store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_354", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$$fundef_30_env_z_355" = getelementptr inbounds %"$$fundef_30_env_156", %"$$fundef_30_env_156"* %0, i32 0, i32 2 + %"$z_envload_356" = load %Uint32, %Uint32* %"$$fundef_30_env_z_355" %z = alloca %Uint32 - store %Uint32 %"$z_envload_281", %Uint32* %z + store %Uint32 %"$z_envload_356", %Uint32* %z %"$retval_31" = alloca %Uint32 - %"$l_tag_283" = getelementptr inbounds %TName_List_Int64, %TName_List_Int64* %1, i32 0, i32 0 - %"$l_tag_284" = load i8, i8* %"$l_tag_283" - switch i8 %"$l_tag_284", label %"$empty_default_285" [ - i8 0, label %"$Cons_286" - i8 1, label %"$Nil_314" + %"$gasrem_357" = load i64, i64* @_gasrem + %"$gascmp_358" = icmp ugt i64 2, %"$gasrem_357" + br i1 %"$gascmp_358", label %"$out_of_gas_359", label %"$have_gas_360" + +"$out_of_gas_359": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_360" + +"$have_gas_360": ; preds = %"$out_of_gas_359", %entry + %"$consume_361" = sub i64 %"$gasrem_357", 2 + store i64 %"$consume_361", i64* @_gasrem + %"$l_tag_363" = getelementptr inbounds %TName_List_Int64, %TName_List_Int64* %1, i32 0, i32 0 + %"$l_tag_364" = load i8, i8* %"$l_tag_363" + switch i8 %"$l_tag_364", label %"$empty_default_365" [ + i8 0, label %"$Cons_366" + i8 1, label %"$Nil_409" ] -"$Cons_286": ; preds = %entry - %"$l_287" = bitcast %TName_List_Int64* %1 to %CName_Cons_Int64* - %"$h_gep_288" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$l_287", i32 0, i32 1 - %"$h_load_289" = load %Int64, %Int64* %"$h_gep_288" +"$Cons_366": ; preds = %"$have_gas_360" + %"$l_367" = bitcast %TName_List_Int64* %1 to %CName_Cons_Int64* + %"$h_gep_368" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$l_367", i32 0, i32 1 + %"$h_load_369" = load %Int64, %Int64* %"$h_gep_368" %h = alloca %Int64 - store %Int64 %"$h_load_289", %Int64* %h - %"$t_gep_290" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$l_287", i32 0, i32 2 - %"$t_load_291" = load %TName_List_Int64*, %TName_List_Int64** %"$t_gep_290" + store %Int64 %"$h_load_369", %Int64* %h + %"$t_gep_370" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$l_367", i32 0, i32 2 + %"$t_load_371" = load %TName_List_Int64*, %TName_List_Int64** %"$t_gep_370" %t = alloca %TName_List_Int64* - store %TName_List_Int64* %"$t_load_291", %TName_List_Int64** %t + store %TName_List_Int64* %"$t_load_371", %TName_List_Int64** %t + %"$gasrem_372" = load i64, i64* @_gasrem + %"$gascmp_373" = icmp ugt i64 1, %"$gasrem_372" + br i1 %"$gascmp_373", label %"$out_of_gas_374", label %"$have_gas_375" + +"$out_of_gas_374": ; preds = %"$Cons_366" + call void @_out_of_gas() + br label %"$have_gas_375" + +"$have_gas_375": ; preds = %"$out_of_gas_374", %"$Cons_366" + %"$consume_376" = sub i64 %"$gasrem_372", 1 + store i64 %"$consume_376", i64* @_gasrem %res = alloca %Uint32 + %"$gasrem_377" = load i64, i64* @_gasrem + %"$gascmp_378" = icmp ugt i64 1, %"$gasrem_377" + br i1 %"$gascmp_378", label %"$out_of_gas_379", label %"$have_gas_380" + +"$out_of_gas_379": ; preds = %"$have_gas_375" + call void @_out_of_gas() + br label %"$have_gas_380" + +"$have_gas_380": ; preds = %"$out_of_gas_379", %"$have_gas_375" + %"$consume_381" = sub i64 %"$gasrem_377", 1 + store i64 %"$consume_381", i64* @_gasrem %"$f_0" = alloca { %Uint32 (i8*, %Int64)*, i8* } - %"$f_292" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$f_fptr_293" = extractvalue { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_292", 0 - %"$f_envptr_294" = extractvalue { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_292", 1 - %"$z_295" = load %Uint32, %Uint32* %z - %"$f_call_296" = call { %Uint32 (i8*, %Int64)*, i8* } %"$f_fptr_293"(i8* %"$f_envptr_294", %Uint32 %"$z_295") - store { %Uint32 (i8*, %Int64)*, i8* } %"$f_call_296", { %Uint32 (i8*, %Int64)*, i8* }* %"$f_0" + %"$f_382" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$f_fptr_383" = extractvalue { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_382", 0 + %"$f_envptr_384" = extractvalue { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_382", 1 + %"$z_385" = load %Uint32, %Uint32* %z + %"$f_call_386" = call { %Uint32 (i8*, %Int64)*, i8* } %"$f_fptr_383"(i8* %"$f_envptr_384", %Uint32 %"$z_385") + store { %Uint32 (i8*, %Int64)*, i8* } %"$f_call_386", { %Uint32 (i8*, %Int64)*, i8* }* %"$f_0" %"$f_1" = alloca %Uint32 - %"$$f_0_297" = load { %Uint32 (i8*, %Int64)*, i8* }, { %Uint32 (i8*, %Int64)*, i8* }* %"$f_0" - %"$$f_0_fptr_298" = extractvalue { %Uint32 (i8*, %Int64)*, i8* } %"$$f_0_297", 0 - %"$$f_0_envptr_299" = extractvalue { %Uint32 (i8*, %Int64)*, i8* } %"$$f_0_297", 1 - %"$h_300" = load %Int64, %Int64* %h - %"$$f_0_call_301" = call %Uint32 %"$$f_0_fptr_298"(i8* %"$$f_0_envptr_299", %Int64 %"$h_300") - store %Uint32 %"$$f_0_call_301", %Uint32* %"$f_1" - %"$$f_1_302" = load %Uint32, %Uint32* %"$f_1" - store %Uint32 %"$$f_1_302", %Uint32* %res + %"$$f_0_387" = load { %Uint32 (i8*, %Int64)*, i8* }, { %Uint32 (i8*, %Int64)*, i8* }* %"$f_0" + %"$$f_0_fptr_388" = extractvalue { %Uint32 (i8*, %Int64)*, i8* } %"$$f_0_387", 0 + %"$$f_0_envptr_389" = extractvalue { %Uint32 (i8*, %Int64)*, i8* } %"$$f_0_387", 1 + %"$h_390" = load %Int64, %Int64* %h + %"$$f_0_call_391" = call %Uint32 %"$$f_0_fptr_388"(i8* %"$$f_0_envptr_389", %Int64 %"$h_390") + store %Uint32 %"$$f_0_call_391", %Uint32* %"$f_1" + %"$$f_1_392" = load %Uint32, %Uint32* %"$f_1" + store %Uint32 %"$$f_1_392", %Uint32* %res + %"$gasrem_393" = load i64, i64* @_gasrem + %"$gascmp_394" = icmp ugt i64 1, %"$gasrem_393" + br i1 %"$gascmp_394", label %"$out_of_gas_395", label %"$have_gas_396" + +"$out_of_gas_395": ; preds = %"$have_gas_380" + call void @_out_of_gas() + br label %"$have_gas_396" + +"$have_gas_396": ; preds = %"$out_of_gas_395", %"$have_gas_380" + %"$consume_397" = sub i64 %"$gasrem_393", 1 + store i64 %"$consume_397", i64* @_gasrem %"$g_2" = alloca { %Uint32 (i8*, %TName_List_Int64*)*, i8* } - %"$g_303" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$g_fptr_304" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_303", 0 - %"$g_envptr_305" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_303", 1 - %"$res_306" = load %Uint32, %Uint32* %res - %"$g_call_307" = call { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$g_fptr_304"(i8* %"$g_envptr_305", %Uint32 %"$res_306") - store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$g_call_307", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$g_2" + %"$g_398" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$g_fptr_399" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_398", 0 + %"$g_envptr_400" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_398", 1 + %"$res_401" = load %Uint32, %Uint32* %res + %"$g_call_402" = call { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$g_fptr_399"(i8* %"$g_envptr_400", %Uint32 %"$res_401") + store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$g_call_402", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$g_2" %"$g_3" = alloca %Uint32 - %"$$g_2_308" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$g_2" - %"$$g_2_fptr_309" = extractvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$g_2_308", 0 - %"$$g_2_envptr_310" = extractvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$g_2_308", 1 - %"$t_311" = load %TName_List_Int64*, %TName_List_Int64** %t - %"$$g_2_call_312" = call %Uint32 %"$$g_2_fptr_309"(i8* %"$$g_2_envptr_310", %TName_List_Int64* %"$t_311") - store %Uint32 %"$$g_2_call_312", %Uint32* %"$g_3" - %"$$g_3_313" = load %Uint32, %Uint32* %"$g_3" - store %Uint32 %"$$g_3_313", %Uint32* %"$retval_31" - br label %"$matchsucc_282" - -"$Nil_314": ; preds = %entry - %"$l_315" = bitcast %TName_List_Int64* %1 to %CName_Nil_Int64* - %"$z_316" = load %Uint32, %Uint32* %z - store %Uint32 %"$z_316", %Uint32* %"$retval_31" - br label %"$matchsucc_282" - -"$empty_default_285": ; preds = %entry - br label %"$matchsucc_282" - -"$matchsucc_282": ; preds = %"$Nil_314", %"$Cons_286", %"$empty_default_285" - %"$$retval_31_317" = load %Uint32, %Uint32* %"$retval_31" - ret %Uint32 %"$$retval_31_317" + %"$$g_2_403" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$g_2" + %"$$g_2_fptr_404" = extractvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$g_2_403", 0 + %"$$g_2_envptr_405" = extractvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$g_2_403", 1 + %"$t_406" = load %TName_List_Int64*, %TName_List_Int64** %t + %"$$g_2_call_407" = call %Uint32 %"$$g_2_fptr_404"(i8* %"$$g_2_envptr_405", %TName_List_Int64* %"$t_406") + store %Uint32 %"$$g_2_call_407", %Uint32* %"$g_3" + %"$$g_3_408" = load %Uint32, %Uint32* %"$g_3" + store %Uint32 %"$$g_3_408", %Uint32* %"$retval_31" + br label %"$matchsucc_362" + +"$Nil_409": ; preds = %"$have_gas_360" + %"$l_410" = bitcast %TName_List_Int64* %1 to %CName_Nil_Int64* + %"$gasrem_411" = load i64, i64* @_gasrem + %"$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 = %"$Nil_409" + call void @_out_of_gas() + br label %"$have_gas_414" + +"$have_gas_414": ; preds = %"$out_of_gas_413", %"$Nil_409" + %"$consume_415" = sub i64 %"$gasrem_411", 1 + store i64 %"$consume_415", i64* @_gasrem + %"$z_416" = load %Uint32, %Uint32* %z + store %Uint32 %"$z_416", %Uint32* %"$retval_31" + br label %"$matchsucc_362" + +"$empty_default_365": ; preds = %"$have_gas_360" + br label %"$matchsucc_362" + +"$matchsucc_362": ; preds = %"$have_gas_414", %"$have_gas_396", %"$empty_default_365" + %"$$retval_31_417" = load %Uint32, %Uint32* %"$retval_31" + ret %Uint32 %"$$retval_31_417" } define internal { %Uint32 (i8*, %TName_List_Int64*)*, i8* } @"$fundef_28"(%"$$fundef_28_env_157"* %0, %Uint32 %1) { entry: - %"$$fundef_28_env_f_262" = getelementptr inbounds %"$$fundef_28_env_157", %"$$fundef_28_env_157"* %0, i32 0, i32 0 - %"$f_envload_263" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_f_262" + %"$$fundef_28_env_f_332" = getelementptr inbounds %"$$fundef_28_env_157", %"$$fundef_28_env_157"* %0, i32 0, i32 0 + %"$f_envload_333" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_f_332" %f = alloca { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_263", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$$fundef_28_env_g_264" = getelementptr inbounds %"$$fundef_28_env_157", %"$$fundef_28_env_157"* %0, i32 0, i32 1 - %"$g_envload_265" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_g_264" + store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_333", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$$fundef_28_env_g_334" = getelementptr inbounds %"$$fundef_28_env_157", %"$$fundef_28_env_157"* %0, i32 0, i32 1 + %"$g_envload_335" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_g_334" %g = alloca { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_265", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_335", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g %"$retval_29" = alloca { %Uint32 (i8*, %TName_List_Int64*)*, i8* } - %"$$fundef_30_envp_266_load" = load i8*, i8** @_execptr - %"$$fundef_30_envp_266_salloc" = call i8* @_salloc(i8* %"$$fundef_30_envp_266_load", i64 40) - %"$$fundef_30_envp_266" = bitcast i8* %"$$fundef_30_envp_266_salloc" to %"$$fundef_30_env_156"* - %"$$fundef_30_env_voidp_268" = bitcast %"$$fundef_30_env_156"* %"$$fundef_30_envp_266" to i8* - %"$$fundef_30_cloval_269" = insertvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } { %Uint32 (i8*, %TName_List_Int64*)* bitcast (%Uint32 (%"$$fundef_30_env_156"*, %TName_List_Int64*)* @"$fundef_30" to %Uint32 (i8*, %TName_List_Int64*)*), i8* undef }, i8* %"$$fundef_30_env_voidp_268", 1 - %"$$fundef_30_env_f_270" = getelementptr inbounds %"$$fundef_30_env_156", %"$$fundef_30_env_156"* %"$$fundef_30_envp_266", i32 0, i32 0 - %"$f_271" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %f - store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_271", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_30_env_f_270" - %"$$fundef_30_env_g_272" = getelementptr inbounds %"$$fundef_30_env_156", %"$$fundef_30_env_156"* %"$$fundef_30_envp_266", i32 0, i32 1 - %"$g_273" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_273", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_30_env_g_272" - %"$$fundef_30_env_z_274" = getelementptr inbounds %"$$fundef_30_env_156", %"$$fundef_30_env_156"* %"$$fundef_30_envp_266", i32 0, i32 2 - store %Uint32 %1, %Uint32* %"$$fundef_30_env_z_274" - store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$fundef_30_cloval_269", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$retval_29" - %"$$retval_29_275" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$retval_29" - ret { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$retval_29_275" + %"$gasrem_336" = load i64, i64* @_gasrem + %"$gascmp_337" = icmp ugt i64 1, %"$gasrem_336" + br i1 %"$gascmp_337", label %"$out_of_gas_338", label %"$have_gas_339" + +"$out_of_gas_338": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_339" + +"$have_gas_339": ; preds = %"$out_of_gas_338", %entry + %"$consume_340" = sub i64 %"$gasrem_336", 1 + store i64 %"$consume_340", i64* @_gasrem + %"$$fundef_30_envp_341_load" = load i8*, i8** @_execptr + %"$$fundef_30_envp_341_salloc" = call i8* @_salloc(i8* %"$$fundef_30_envp_341_load", i64 40) + %"$$fundef_30_envp_341" = bitcast i8* %"$$fundef_30_envp_341_salloc" to %"$$fundef_30_env_156"* + %"$$fundef_30_env_voidp_343" = bitcast %"$$fundef_30_env_156"* %"$$fundef_30_envp_341" to i8* + %"$$fundef_30_cloval_344" = insertvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } { %Uint32 (i8*, %TName_List_Int64*)* bitcast (%Uint32 (%"$$fundef_30_env_156"*, %TName_List_Int64*)* @"$fundef_30" to %Uint32 (i8*, %TName_List_Int64*)*), i8* undef }, i8* %"$$fundef_30_env_voidp_343", 1 + %"$$fundef_30_env_f_345" = getelementptr inbounds %"$$fundef_30_env_156", %"$$fundef_30_env_156"* %"$$fundef_30_envp_341", i32 0, i32 0 + %"$f_346" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %f + store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_346", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_30_env_f_345" + %"$$fundef_30_env_g_347" = getelementptr inbounds %"$$fundef_30_env_156", %"$$fundef_30_env_156"* %"$$fundef_30_envp_341", i32 0, i32 1 + %"$g_348" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_348", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_30_env_g_347" + %"$$fundef_30_env_z_349" = getelementptr inbounds %"$$fundef_30_env_156", %"$$fundef_30_env_156"* %"$$fundef_30_envp_341", i32 0, i32 2 + store %Uint32 %1, %Uint32* %"$$fundef_30_env_z_349" + store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$fundef_30_cloval_344", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$retval_29" + %"$$retval_29_350" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$retval_29" + ret { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$retval_29_350" } define internal { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } @"$fundef_26"(%"$$fundef_26_env_158"* %0, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %1) { entry: %"$retval_27" = alloca { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } - %"$$fundef_28_envp_253_load" = load i8*, i8** @_execptr - %"$$fundef_28_envp_253_salloc" = call i8* @_salloc(i8* %"$$fundef_28_envp_253_load", i64 32) - %"$$fundef_28_envp_253" = bitcast i8* %"$$fundef_28_envp_253_salloc" to %"$$fundef_28_env_157"* - %"$$fundef_28_env_voidp_255" = bitcast %"$$fundef_28_env_157"* %"$$fundef_28_envp_253" to i8* - %"$$fundef_28_cloval_256" = insertvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_List_Int64*)*, i8* } (%"$$fundef_28_env_157"*, %Uint32)* @"$fundef_28" to { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_28_env_voidp_255", 1 + %"$gasrem_313" = load i64, i64* @_gasrem + %"$gascmp_314" = icmp ugt i64 1, %"$gasrem_313" + br i1 %"$gascmp_314", label %"$out_of_gas_315", label %"$have_gas_316" + +"$out_of_gas_315": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_316" + +"$have_gas_316": ; preds = %"$out_of_gas_315", %entry + %"$consume_317" = sub i64 %"$gasrem_313", 1 + store i64 %"$consume_317", i64* @_gasrem + %"$gasrem_318" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_316" + call void @_out_of_gas() + br label %"$have_gas_321" + +"$have_gas_321": ; preds = %"$out_of_gas_320", %"$have_gas_316" + %"$consume_322" = sub i64 %"$gasrem_318", 1 + store i64 %"$consume_322", i64* @_gasrem + %"$$fundef_28_envp_323_load" = load i8*, i8** @_execptr + %"$$fundef_28_envp_323_salloc" = call i8* @_salloc(i8* %"$$fundef_28_envp_323_load", i64 32) + %"$$fundef_28_envp_323" = bitcast i8* %"$$fundef_28_envp_323_salloc" to %"$$fundef_28_env_157"* + %"$$fundef_28_env_voidp_325" = bitcast %"$$fundef_28_env_157"* %"$$fundef_28_envp_323" to i8* + %"$$fundef_28_cloval_326" = insertvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_List_Int64*)*, i8* } (%"$$fundef_28_env_157"*, %Uint32)* @"$fundef_28" to { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_28_env_voidp_325", 1 %g = alloca { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_28_cloval_256", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$$fundef_28_env_f_257" = getelementptr inbounds %"$$fundef_28_env_157", %"$$fundef_28_env_157"* %"$$fundef_28_envp_253", i32 0, i32 0 - store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %1, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_f_257" - %"$$fundef_28_env_g_258" = getelementptr inbounds %"$$fundef_28_env_157", %"$$fundef_28_env_157"* %"$$fundef_28_envp_253", i32 0, i32 1 - %"$g_259" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_259", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_g_258" - %"$g_260" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_260", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_27" - %"$$retval_27_261" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_27" - ret { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_27_261" + store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_28_cloval_326", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$$fundef_28_env_f_327" = getelementptr inbounds %"$$fundef_28_env_157", %"$$fundef_28_env_157"* %"$$fundef_28_envp_323", i32 0, i32 0 + store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %1, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_f_327" + %"$$fundef_28_env_g_328" = getelementptr inbounds %"$$fundef_28_env_157", %"$$fundef_28_env_157"* %"$$fundef_28_envp_323", i32 0, i32 1 + %"$g_329" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_329", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_g_328" + %"$g_330" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_330", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_27" + %"$$retval_27_331" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_27" + ret { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_27_331" } define internal { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } @"$fundef_24"(%"$$fundef_24_env_159"* %0) { entry: %"$retval_25" = alloca { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_304" = load i64, i64* @_gasrem + %"$gascmp_305" = icmp ugt i64 1, %"$gasrem_304" + br i1 %"$gascmp_305", label %"$out_of_gas_306", label %"$have_gas_307" + +"$out_of_gas_306": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_307" + +"$have_gas_307": ; preds = %"$out_of_gas_306", %entry + %"$consume_308" = sub i64 %"$gasrem_304", 1 + store i64 %"$consume_308", i64* @_gasrem store { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })* bitcast ({ { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (%"$$fundef_26_env_158"*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })* @"$fundef_26" to { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*), i8* null }, { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_25" - %"$$retval_25_252" = load { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_25" - ret { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_25_252" + %"$$retval_25_312" = load { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_25" + ret { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_25_312" } define internal { i8*, i8* }* @"$fundef_22"(%"$$fundef_22_env_160"* %0) { entry: %"$retval_23" = alloca { i8*, i8* }* - %"$dyndisp_table_245_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_245_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_245_salloc_load", i64 48) - %"$dyndisp_table_245_salloc" = bitcast i8* %"$dyndisp_table_245_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_245" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_245_salloc" to { i8*, i8* }* - %"$dyndisp_gep_246" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_245", i32 1 - %"$dyndisp_pcast_247" = bitcast { i8*, i8* }* %"$dyndisp_gep_246" to { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_24_env_159"*)* @"$fundef_24" to { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_247" - store { i8*, i8* }* %"$dyndisp_table_245", { i8*, i8* }** %"$retval_23" - %"$$retval_23_248" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_23" - ret { i8*, i8* }* %"$$retval_23_248" + %"$gasrem_292" = load i64, i64* @_gasrem + %"$gascmp_293" = icmp ugt i64 1, %"$gasrem_292" + br i1 %"$gascmp_293", label %"$out_of_gas_294", label %"$have_gas_295" + +"$out_of_gas_294": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_295" + +"$have_gas_295": ; preds = %"$out_of_gas_294", %entry + %"$consume_296" = sub i64 %"$gasrem_292", 1 + store i64 %"$consume_296", i64* @_gasrem + %"$dyndisp_table_300_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_300_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_300_salloc_load", i64 48) + %"$dyndisp_table_300_salloc" = bitcast i8* %"$dyndisp_table_300_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_300" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_300_salloc" to { i8*, i8* }* + %"$dyndisp_gep_301" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_300", i32 1 + %"$dyndisp_pcast_302" = bitcast { i8*, i8* }* %"$dyndisp_gep_301" to { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_24_env_159"*)* @"$fundef_24" to { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_302" + store { i8*, i8* }* %"$dyndisp_table_300", { i8*, i8* }** %"$retval_23" + %"$$retval_23_303" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_23" + ret { i8*, i8* }* %"$$retval_23_303" } define internal %Uint32 @"$fundef_20"(%"$$fundef_20_env_161"* %0, %TName_List_Int32* %1) { entry: - %"$$fundef_20_env_f_200" = getelementptr inbounds %"$$fundef_20_env_161", %"$$fundef_20_env_161"* %0, i32 0, i32 0 - %"$f_envload_201" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_20_env_f_200" + %"$$fundef_20_env_f_225" = getelementptr inbounds %"$$fundef_20_env_161", %"$$fundef_20_env_161"* %0, i32 0, i32 0 + %"$f_envload_226" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_20_env_f_225" %f = alloca { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_201", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$$fundef_20_env_g_202" = getelementptr inbounds %"$$fundef_20_env_161", %"$$fundef_20_env_161"* %0, i32 0, i32 1 - %"$g_envload_203" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_20_env_g_202" + store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_226", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$$fundef_20_env_g_227" = getelementptr inbounds %"$$fundef_20_env_161", %"$$fundef_20_env_161"* %0, i32 0, i32 1 + %"$g_envload_228" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_20_env_g_227" %g = alloca { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_203", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$$fundef_20_env_z_204" = getelementptr inbounds %"$$fundef_20_env_161", %"$$fundef_20_env_161"* %0, i32 0, i32 2 - %"$z_envload_205" = load %Uint32, %Uint32* %"$$fundef_20_env_z_204" + store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_228", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$$fundef_20_env_z_229" = getelementptr inbounds %"$$fundef_20_env_161", %"$$fundef_20_env_161"* %0, i32 0, i32 2 + %"$z_envload_230" = load %Uint32, %Uint32* %"$$fundef_20_env_z_229" %z = alloca %Uint32 - store %Uint32 %"$z_envload_205", %Uint32* %z + store %Uint32 %"$z_envload_230", %Uint32* %z %"$retval_21" = alloca %Uint32 - %"$l_tag_207" = getelementptr inbounds %TName_List_Int32, %TName_List_Int32* %1, i32 0, i32 0 - %"$l_tag_208" = load i8, i8* %"$l_tag_207" - switch i8 %"$l_tag_208", label %"$empty_default_209" [ - i8 0, label %"$Cons_210" - i8 1, label %"$Nil_238" + %"$gasrem_231" = load i64, i64* @_gasrem + %"$gascmp_232" = icmp ugt i64 2, %"$gasrem_231" + br i1 %"$gascmp_232", label %"$out_of_gas_233", label %"$have_gas_234" + +"$out_of_gas_233": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_234" + +"$have_gas_234": ; preds = %"$out_of_gas_233", %entry + %"$consume_235" = sub i64 %"$gasrem_231", 2 + store i64 %"$consume_235", i64* @_gasrem + %"$l_tag_237" = getelementptr inbounds %TName_List_Int32, %TName_List_Int32* %1, i32 0, i32 0 + %"$l_tag_238" = load i8, i8* %"$l_tag_237" + switch i8 %"$l_tag_238", label %"$empty_default_239" [ + i8 0, label %"$Cons_240" + i8 1, label %"$Nil_283" ] -"$Cons_210": ; preds = %entry - %"$l_211" = bitcast %TName_List_Int32* %1 to %CName_Cons_Int32* - %"$h_gep_212" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$l_211", i32 0, i32 1 - %"$h_load_213" = load %Int32, %Int32* %"$h_gep_212" +"$Cons_240": ; preds = %"$have_gas_234" + %"$l_241" = bitcast %TName_List_Int32* %1 to %CName_Cons_Int32* + %"$h_gep_242" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$l_241", i32 0, i32 1 + %"$h_load_243" = load %Int32, %Int32* %"$h_gep_242" %h = alloca %Int32 - store %Int32 %"$h_load_213", %Int32* %h - %"$t_gep_214" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$l_211", i32 0, i32 2 - %"$t_load_215" = load %TName_List_Int32*, %TName_List_Int32** %"$t_gep_214" + store %Int32 %"$h_load_243", %Int32* %h + %"$t_gep_244" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$l_241", i32 0, i32 2 + %"$t_load_245" = load %TName_List_Int32*, %TName_List_Int32** %"$t_gep_244" %t = alloca %TName_List_Int32* - store %TName_List_Int32* %"$t_load_215", %TName_List_Int32** %t + store %TName_List_Int32* %"$t_load_245", %TName_List_Int32** %t + %"$gasrem_246" = load i64, i64* @_gasrem + %"$gascmp_247" = icmp ugt i64 1, %"$gasrem_246" + br i1 %"$gascmp_247", label %"$out_of_gas_248", label %"$have_gas_249" + +"$out_of_gas_248": ; preds = %"$Cons_240" + call void @_out_of_gas() + br label %"$have_gas_249" + +"$have_gas_249": ; preds = %"$out_of_gas_248", %"$Cons_240" + %"$consume_250" = sub i64 %"$gasrem_246", 1 + store i64 %"$consume_250", i64* @_gasrem %res = alloca %Uint32 + %"$gasrem_251" = load i64, i64* @_gasrem + %"$gascmp_252" = icmp ugt i64 1, %"$gasrem_251" + br i1 %"$gascmp_252", label %"$out_of_gas_253", label %"$have_gas_254" + +"$out_of_gas_253": ; preds = %"$have_gas_249" + call void @_out_of_gas() + br label %"$have_gas_254" + +"$have_gas_254": ; preds = %"$out_of_gas_253", %"$have_gas_249" + %"$consume_255" = sub i64 %"$gasrem_251", 1 + store i64 %"$consume_255", i64* @_gasrem %"$f_0" = alloca { %Uint32 (i8*, %Int32)*, i8* } - %"$f_216" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$f_fptr_217" = extractvalue { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_216", 0 - %"$f_envptr_218" = extractvalue { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_216", 1 - %"$z_219" = load %Uint32, %Uint32* %z - %"$f_call_220" = call { %Uint32 (i8*, %Int32)*, i8* } %"$f_fptr_217"(i8* %"$f_envptr_218", %Uint32 %"$z_219") - store { %Uint32 (i8*, %Int32)*, i8* } %"$f_call_220", { %Uint32 (i8*, %Int32)*, i8* }* %"$f_0" + %"$f_256" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$f_fptr_257" = extractvalue { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_256", 0 + %"$f_envptr_258" = extractvalue { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_256", 1 + %"$z_259" = load %Uint32, %Uint32* %z + %"$f_call_260" = call { %Uint32 (i8*, %Int32)*, i8* } %"$f_fptr_257"(i8* %"$f_envptr_258", %Uint32 %"$z_259") + store { %Uint32 (i8*, %Int32)*, i8* } %"$f_call_260", { %Uint32 (i8*, %Int32)*, i8* }* %"$f_0" %"$f_1" = alloca %Uint32 - %"$$f_0_221" = load { %Uint32 (i8*, %Int32)*, i8* }, { %Uint32 (i8*, %Int32)*, i8* }* %"$f_0" - %"$$f_0_fptr_222" = extractvalue { %Uint32 (i8*, %Int32)*, i8* } %"$$f_0_221", 0 - %"$$f_0_envptr_223" = extractvalue { %Uint32 (i8*, %Int32)*, i8* } %"$$f_0_221", 1 - %"$h_224" = load %Int32, %Int32* %h - %"$$f_0_call_225" = call %Uint32 %"$$f_0_fptr_222"(i8* %"$$f_0_envptr_223", %Int32 %"$h_224") - store %Uint32 %"$$f_0_call_225", %Uint32* %"$f_1" - %"$$f_1_226" = load %Uint32, %Uint32* %"$f_1" - store %Uint32 %"$$f_1_226", %Uint32* %res + %"$$f_0_261" = load { %Uint32 (i8*, %Int32)*, i8* }, { %Uint32 (i8*, %Int32)*, i8* }* %"$f_0" + %"$$f_0_fptr_262" = extractvalue { %Uint32 (i8*, %Int32)*, i8* } %"$$f_0_261", 0 + %"$$f_0_envptr_263" = extractvalue { %Uint32 (i8*, %Int32)*, i8* } %"$$f_0_261", 1 + %"$h_264" = load %Int32, %Int32* %h + %"$$f_0_call_265" = call %Uint32 %"$$f_0_fptr_262"(i8* %"$$f_0_envptr_263", %Int32 %"$h_264") + store %Uint32 %"$$f_0_call_265", %Uint32* %"$f_1" + %"$$f_1_266" = load %Uint32, %Uint32* %"$f_1" + store %Uint32 %"$$f_1_266", %Uint32* %res + %"$gasrem_267" = load i64, i64* @_gasrem + %"$gascmp_268" = icmp ugt i64 1, %"$gasrem_267" + br i1 %"$gascmp_268", label %"$out_of_gas_269", label %"$have_gas_270" + +"$out_of_gas_269": ; preds = %"$have_gas_254" + call void @_out_of_gas() + br label %"$have_gas_270" + +"$have_gas_270": ; preds = %"$out_of_gas_269", %"$have_gas_254" + %"$consume_271" = sub i64 %"$gasrem_267", 1 + store i64 %"$consume_271", i64* @_gasrem %"$g_2" = alloca { %Uint32 (i8*, %TName_List_Int32*)*, i8* } - %"$g_227" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$g_fptr_228" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_227", 0 - %"$g_envptr_229" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_227", 1 - %"$res_230" = load %Uint32, %Uint32* %res - %"$g_call_231" = call { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$g_fptr_228"(i8* %"$g_envptr_229", %Uint32 %"$res_230") - store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$g_call_231", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$g_2" + %"$g_272" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$g_fptr_273" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_272", 0 + %"$g_envptr_274" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_272", 1 + %"$res_275" = load %Uint32, %Uint32* %res + %"$g_call_276" = call { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$g_fptr_273"(i8* %"$g_envptr_274", %Uint32 %"$res_275") + store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$g_call_276", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$g_2" %"$g_3" = alloca %Uint32 - %"$$g_2_232" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$g_2" - %"$$g_2_fptr_233" = extractvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$g_2_232", 0 - %"$$g_2_envptr_234" = extractvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$g_2_232", 1 - %"$t_235" = load %TName_List_Int32*, %TName_List_Int32** %t - %"$$g_2_call_236" = call %Uint32 %"$$g_2_fptr_233"(i8* %"$$g_2_envptr_234", %TName_List_Int32* %"$t_235") - store %Uint32 %"$$g_2_call_236", %Uint32* %"$g_3" - %"$$g_3_237" = load %Uint32, %Uint32* %"$g_3" - store %Uint32 %"$$g_3_237", %Uint32* %"$retval_21" - br label %"$matchsucc_206" - -"$Nil_238": ; preds = %entry - %"$l_239" = bitcast %TName_List_Int32* %1 to %CName_Nil_Int32* - %"$z_240" = load %Uint32, %Uint32* %z - store %Uint32 %"$z_240", %Uint32* %"$retval_21" - br label %"$matchsucc_206" - -"$empty_default_209": ; preds = %entry - br label %"$matchsucc_206" - -"$matchsucc_206": ; preds = %"$Nil_238", %"$Cons_210", %"$empty_default_209" - %"$$retval_21_241" = load %Uint32, %Uint32* %"$retval_21" - ret %Uint32 %"$$retval_21_241" + %"$$g_2_277" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$g_2" + %"$$g_2_fptr_278" = extractvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$g_2_277", 0 + %"$$g_2_envptr_279" = extractvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$g_2_277", 1 + %"$t_280" = load %TName_List_Int32*, %TName_List_Int32** %t + %"$$g_2_call_281" = call %Uint32 %"$$g_2_fptr_278"(i8* %"$$g_2_envptr_279", %TName_List_Int32* %"$t_280") + store %Uint32 %"$$g_2_call_281", %Uint32* %"$g_3" + %"$$g_3_282" = load %Uint32, %Uint32* %"$g_3" + store %Uint32 %"$$g_3_282", %Uint32* %"$retval_21" + br label %"$matchsucc_236" + +"$Nil_283": ; preds = %"$have_gas_234" + %"$l_284" = bitcast %TName_List_Int32* %1 to %CName_Nil_Int32* + %"$gasrem_285" = load i64, i64* @_gasrem + %"$gascmp_286" = icmp ugt i64 1, %"$gasrem_285" + br i1 %"$gascmp_286", label %"$out_of_gas_287", label %"$have_gas_288" + +"$out_of_gas_287": ; preds = %"$Nil_283" + call void @_out_of_gas() + br label %"$have_gas_288" + +"$have_gas_288": ; preds = %"$out_of_gas_287", %"$Nil_283" + %"$consume_289" = sub i64 %"$gasrem_285", 1 + store i64 %"$consume_289", i64* @_gasrem + %"$z_290" = load %Uint32, %Uint32* %z + store %Uint32 %"$z_290", %Uint32* %"$retval_21" + br label %"$matchsucc_236" + +"$empty_default_239": ; preds = %"$have_gas_234" + br label %"$matchsucc_236" + +"$matchsucc_236": ; preds = %"$have_gas_288", %"$have_gas_270", %"$empty_default_239" + %"$$retval_21_291" = load %Uint32, %Uint32* %"$retval_21" + ret %Uint32 %"$$retval_21_291" } define internal { %Uint32 (i8*, %TName_List_Int32*)*, i8* } @"$fundef_18"(%"$$fundef_18_env_162"* %0, %Uint32 %1) { entry: - %"$$fundef_18_env_f_186" = getelementptr inbounds %"$$fundef_18_env_162", %"$$fundef_18_env_162"* %0, i32 0, i32 0 - %"$f_envload_187" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_f_186" + %"$$fundef_18_env_f_206" = getelementptr inbounds %"$$fundef_18_env_162", %"$$fundef_18_env_162"* %0, i32 0, i32 0 + %"$f_envload_207" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_f_206" %f = alloca { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_187", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$$fundef_18_env_g_188" = getelementptr inbounds %"$$fundef_18_env_162", %"$$fundef_18_env_162"* %0, i32 0, i32 1 - %"$g_envload_189" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_g_188" + store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_207", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$$fundef_18_env_g_208" = getelementptr inbounds %"$$fundef_18_env_162", %"$$fundef_18_env_162"* %0, i32 0, i32 1 + %"$g_envload_209" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_g_208" %g = alloca { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_189", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_209", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g %"$retval_19" = alloca { %Uint32 (i8*, %TName_List_Int32*)*, i8* } - %"$$fundef_20_envp_190_load" = load i8*, i8** @_execptr - %"$$fundef_20_envp_190_salloc" = call i8* @_salloc(i8* %"$$fundef_20_envp_190_load", i64 40) - %"$$fundef_20_envp_190" = bitcast i8* %"$$fundef_20_envp_190_salloc" to %"$$fundef_20_env_161"* - %"$$fundef_20_env_voidp_192" = bitcast %"$$fundef_20_env_161"* %"$$fundef_20_envp_190" to i8* - %"$$fundef_20_cloval_193" = insertvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } { %Uint32 (i8*, %TName_List_Int32*)* bitcast (%Uint32 (%"$$fundef_20_env_161"*, %TName_List_Int32*)* @"$fundef_20" to %Uint32 (i8*, %TName_List_Int32*)*), i8* undef }, i8* %"$$fundef_20_env_voidp_192", 1 - %"$$fundef_20_env_f_194" = getelementptr inbounds %"$$fundef_20_env_161", %"$$fundef_20_env_161"* %"$$fundef_20_envp_190", i32 0, i32 0 - %"$f_195" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %f - store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_195", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_20_env_f_194" - %"$$fundef_20_env_g_196" = getelementptr inbounds %"$$fundef_20_env_161", %"$$fundef_20_env_161"* %"$$fundef_20_envp_190", i32 0, i32 1 - %"$g_197" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_197", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_20_env_g_196" - %"$$fundef_20_env_z_198" = getelementptr inbounds %"$$fundef_20_env_161", %"$$fundef_20_env_161"* %"$$fundef_20_envp_190", i32 0, i32 2 - store %Uint32 %1, %Uint32* %"$$fundef_20_env_z_198" - store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$fundef_20_cloval_193", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$retval_19" - %"$$retval_19_199" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$retval_19" - ret { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$retval_19_199" + %"$gasrem_210" = load i64, i64* @_gasrem + %"$gascmp_211" = icmp ugt i64 1, %"$gasrem_210" + br i1 %"$gascmp_211", label %"$out_of_gas_212", label %"$have_gas_213" + +"$out_of_gas_212": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_213" + +"$have_gas_213": ; preds = %"$out_of_gas_212", %entry + %"$consume_214" = sub i64 %"$gasrem_210", 1 + store i64 %"$consume_214", i64* @_gasrem + %"$$fundef_20_envp_215_load" = load i8*, i8** @_execptr + %"$$fundef_20_envp_215_salloc" = call i8* @_salloc(i8* %"$$fundef_20_envp_215_load", i64 40) + %"$$fundef_20_envp_215" = bitcast i8* %"$$fundef_20_envp_215_salloc" to %"$$fundef_20_env_161"* + %"$$fundef_20_env_voidp_217" = bitcast %"$$fundef_20_env_161"* %"$$fundef_20_envp_215" to i8* + %"$$fundef_20_cloval_218" = insertvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } { %Uint32 (i8*, %TName_List_Int32*)* bitcast (%Uint32 (%"$$fundef_20_env_161"*, %TName_List_Int32*)* @"$fundef_20" to %Uint32 (i8*, %TName_List_Int32*)*), i8* undef }, i8* %"$$fundef_20_env_voidp_217", 1 + %"$$fundef_20_env_f_219" = getelementptr inbounds %"$$fundef_20_env_161", %"$$fundef_20_env_161"* %"$$fundef_20_envp_215", i32 0, i32 0 + %"$f_220" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %f + store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_220", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_20_env_f_219" + %"$$fundef_20_env_g_221" = getelementptr inbounds %"$$fundef_20_env_161", %"$$fundef_20_env_161"* %"$$fundef_20_envp_215", i32 0, i32 1 + %"$g_222" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_222", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_20_env_g_221" + %"$$fundef_20_env_z_223" = getelementptr inbounds %"$$fundef_20_env_161", %"$$fundef_20_env_161"* %"$$fundef_20_envp_215", i32 0, i32 2 + store %Uint32 %1, %Uint32* %"$$fundef_20_env_z_223" + store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$fundef_20_cloval_218", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$retval_19" + %"$$retval_19_224" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$retval_19" + ret { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$retval_19_224" } define internal { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } @"$fundef_16"(%"$$fundef_16_env_163"* %0, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %1) { entry: %"$retval_17" = alloca { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } - %"$$fundef_18_envp_177_load" = load i8*, i8** @_execptr - %"$$fundef_18_envp_177_salloc" = call i8* @_salloc(i8* %"$$fundef_18_envp_177_load", i64 32) - %"$$fundef_18_envp_177" = bitcast i8* %"$$fundef_18_envp_177_salloc" to %"$$fundef_18_env_162"* - %"$$fundef_18_env_voidp_179" = bitcast %"$$fundef_18_env_162"* %"$$fundef_18_envp_177" to i8* - %"$$fundef_18_cloval_180" = insertvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_List_Int32*)*, i8* } (%"$$fundef_18_env_162"*, %Uint32)* @"$fundef_18" to { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_18_env_voidp_179", 1 + %"$gasrem_187" = load i64, i64* @_gasrem + %"$gascmp_188" = icmp ugt i64 1, %"$gasrem_187" + br i1 %"$gascmp_188", label %"$out_of_gas_189", label %"$have_gas_190" + +"$out_of_gas_189": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_190" + +"$have_gas_190": ; preds = %"$out_of_gas_189", %entry + %"$consume_191" = sub i64 %"$gasrem_187", 1 + store i64 %"$consume_191", i64* @_gasrem + %"$gasrem_192" = load i64, i64* @_gasrem + %"$gascmp_193" = icmp ugt i64 1, %"$gasrem_192" + br i1 %"$gascmp_193", label %"$out_of_gas_194", label %"$have_gas_195" + +"$out_of_gas_194": ; preds = %"$have_gas_190" + call void @_out_of_gas() + br label %"$have_gas_195" + +"$have_gas_195": ; preds = %"$out_of_gas_194", %"$have_gas_190" + %"$consume_196" = sub i64 %"$gasrem_192", 1 + store i64 %"$consume_196", i64* @_gasrem + %"$$fundef_18_envp_197_load" = load i8*, i8** @_execptr + %"$$fundef_18_envp_197_salloc" = call i8* @_salloc(i8* %"$$fundef_18_envp_197_load", i64 32) + %"$$fundef_18_envp_197" = bitcast i8* %"$$fundef_18_envp_197_salloc" to %"$$fundef_18_env_162"* + %"$$fundef_18_env_voidp_199" = bitcast %"$$fundef_18_env_162"* %"$$fundef_18_envp_197" to i8* + %"$$fundef_18_cloval_200" = insertvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_List_Int32*)*, i8* } (%"$$fundef_18_env_162"*, %Uint32)* @"$fundef_18" to { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_18_env_voidp_199", 1 %g = alloca { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_18_cloval_180", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$$fundef_18_env_f_181" = getelementptr inbounds %"$$fundef_18_env_162", %"$$fundef_18_env_162"* %"$$fundef_18_envp_177", i32 0, i32 0 - store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %1, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_f_181" - %"$$fundef_18_env_g_182" = getelementptr inbounds %"$$fundef_18_env_162", %"$$fundef_18_env_162"* %"$$fundef_18_envp_177", i32 0, i32 1 - %"$g_183" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_183", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_g_182" - %"$g_184" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_184", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_17" - %"$$retval_17_185" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_17" - ret { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_17_185" + store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_18_cloval_200", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$$fundef_18_env_f_201" = getelementptr inbounds %"$$fundef_18_env_162", %"$$fundef_18_env_162"* %"$$fundef_18_envp_197", i32 0, i32 0 + store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %1, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_f_201" + %"$$fundef_18_env_g_202" = getelementptr inbounds %"$$fundef_18_env_162", %"$$fundef_18_env_162"* %"$$fundef_18_envp_197", i32 0, i32 1 + %"$g_203" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_203", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_g_202" + %"$g_204" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_204", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_17" + %"$$retval_17_205" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_17" + ret { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_17_205" } define internal { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } @"$fundef_14"(%"$$fundef_14_env_164"* %0) { entry: %"$retval_15" = alloca { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_178" = load i64, i64* @_gasrem + %"$gascmp_179" = icmp ugt i64 1, %"$gasrem_178" + br i1 %"$gascmp_179", label %"$out_of_gas_180", label %"$have_gas_181" + +"$out_of_gas_180": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_181" + +"$have_gas_181": ; preds = %"$out_of_gas_180", %entry + %"$consume_182" = sub i64 %"$gasrem_178", 1 + store i64 %"$consume_182", i64* @_gasrem store { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })* bitcast ({ { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (%"$$fundef_16_env_163"*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })* @"$fundef_16" to { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*), i8* null }, { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_15" - %"$$retval_15_176" = load { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_15" - ret { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_15_176" + %"$$retval_15_186" = load { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_15" + ret { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_15_186" } define internal { i8*, i8* }* @"$fundef_12"(%"$$fundef_12_env_165"* %0) { entry: %"$retval_13" = alloca { i8*, i8* }* - %"$dyndisp_table_169_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_169_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_169_salloc_load", i64 48) - %"$dyndisp_table_169_salloc" = bitcast i8* %"$dyndisp_table_169_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_169" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_169_salloc" to { i8*, i8* }* - %"$dyndisp_gep_170" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_169", i32 1 - %"$dyndisp_pcast_171" = bitcast { i8*, i8* }* %"$dyndisp_gep_170" to { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_14_env_164"*)* @"$fundef_14" to { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_171" - store { i8*, i8* }* %"$dyndisp_table_169", { i8*, i8* }** %"$retval_13" - %"$$retval_13_172" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_13" - ret { i8*, i8* }* %"$$retval_13_172" + %"$gasrem_166" = load i64, i64* @_gasrem + %"$gascmp_167" = icmp ugt i64 1, %"$gasrem_166" + br i1 %"$gascmp_167", label %"$out_of_gas_168", label %"$have_gas_169" + +"$out_of_gas_168": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_169" + +"$have_gas_169": ; preds = %"$out_of_gas_168", %entry + %"$consume_170" = sub i64 %"$gasrem_166", 1 + store i64 %"$consume_170", i64* @_gasrem + %"$dyndisp_table_174_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_174_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_174_salloc_load", i64 48) + %"$dyndisp_table_174_salloc" = bitcast i8* %"$dyndisp_table_174_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_174" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_174_salloc" to { i8*, i8* }* + %"$dyndisp_gep_175" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_174", i32 1 + %"$dyndisp_pcast_176" = bitcast { i8*, i8* }* %"$dyndisp_gep_175" to { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_14_env_164"*)* @"$fundef_14" to { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_176" + store { i8*, i8* }* %"$dyndisp_table_174", { i8*, i8* }** %"$retval_13" + %"$$retval_13_177" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_13" + ret { i8*, i8* }* %"$$retval_13_177" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) declare %Uint32 @_add_Uint32(%Uint32, %Uint32) @@ -877,215 +1584,578 @@ entry: ret void } -define internal %Uint32 @"$scilla_expr_510"(i8* %0) { +define internal %Uint32 @"$scilla_expr_830"(i8* %0) { entry: - %"$dyndisp_table_517_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_517_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_517_salloc_load", i64 48) - %"$dyndisp_table_517_salloc" = bitcast i8* %"$dyndisp_table_517_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_517" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_517_salloc" to { i8*, i8* }* - %"$dyndisp_gep_518" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_517", i32 0 - %"$dyndisp_pcast_519" = bitcast { i8*, i8* }* %"$dyndisp_gep_518" to { { i8*, i8* }* (i8*)*, i8* }* - store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_12_env_165"*)* @"$fundef_12" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_519" - %"$dyndisp_gep_520" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_517", i32 2 - %"$dyndisp_pcast_521" = bitcast { i8*, i8* }* %"$dyndisp_gep_520" to { { i8*, i8* }* (i8*)*, i8* }* - store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_22_env_160"*)* @"$fundef_22" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_521" - store { i8*, i8* }* %"$dyndisp_table_517", { i8*, i8* }** @list_foldl - %"$$fundef_32_envp_522_load" = load i8*, i8** @_execptr - %"$$fundef_32_envp_522_salloc" = call i8* @_salloc(i8* %"$$fundef_32_envp_522_load", i64 8) - %"$$fundef_32_envp_522" = bitcast i8* %"$$fundef_32_envp_522_salloc" to %"$$fundef_32_env_155"* - %"$$fundef_32_env_voidp_524" = bitcast %"$$fundef_32_env_155"* %"$$fundef_32_envp_522" to i8* - %"$$fundef_32_cloval_525" = insertvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %TName_List_Int32*)*, i8* } (%"$$fundef_32_env_155"*)* @"$fundef_32" to { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_32_env_voidp_524", 1 - %"$$fundef_32_env_list_foldl_526" = getelementptr inbounds %"$$fundef_32_env_155", %"$$fundef_32_env_155"* %"$$fundef_32_envp_522", i32 0, i32 0 - %"$list_foldl_527" = load { i8*, i8* }*, { i8*, i8* }** @list_foldl - store { i8*, i8* }* %"$list_foldl_527", { i8*, i8* }** %"$$fundef_32_env_list_foldl_526" - %"$$fundef_38_env_voidp_529" = bitcast %"$$fundef_32_env_155"* %"$$fundef_32_envp_522" to i8* - %"$$fundef_38_cloval_530" = insertvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %TName_List_Int64*)*, i8* } (%"$$fundef_38_env_152"*)* @"$fundef_38" to { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_38_env_voidp_529", 1 - %"$dyndisp_table_531_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_531_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_531_salloc_load", i64 48) - %"$dyndisp_table_531_salloc" = bitcast i8* %"$dyndisp_table_531_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_531" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_531_salloc" to { i8*, i8* }* - %"$dyndisp_gep_532" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_531", i32 0 - %"$dyndisp_pcast_533" = bitcast { i8*, i8* }* %"$dyndisp_gep_532" to { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }* - store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* } %"$$fundef_32_cloval_525", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_533" - %"$dyndisp_gep_534" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_531", i32 2 - %"$dyndisp_pcast_535" = bitcast { i8*, i8* }* %"$dyndisp_gep_534" to { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }* - store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* } %"$$fundef_38_cloval_530", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_535" - store { i8*, i8* }* %"$dyndisp_table_531", { i8*, i8* }** @list_length + %"$gasrem_831" = load i64, i64* @_gasrem + %"$gascmp_832" = icmp ugt i64 1, %"$gasrem_831" + br i1 %"$gascmp_832", label %"$out_of_gas_833", label %"$have_gas_834" + +"$out_of_gas_833": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_834" + +"$have_gas_834": ; preds = %"$out_of_gas_833", %entry + %"$consume_835" = sub i64 %"$gasrem_831", 1 + store i64 %"$consume_835", i64* @_gasrem + %"$dyndisp_table_842_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_842_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_842_salloc_load", i64 48) + %"$dyndisp_table_842_salloc" = bitcast i8* %"$dyndisp_table_842_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_842" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_842_salloc" to { i8*, i8* }* + %"$dyndisp_gep_843" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_842", i32 0 + %"$dyndisp_pcast_844" = bitcast { i8*, i8* }* %"$dyndisp_gep_843" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_12_env_165"*)* @"$fundef_12" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_844" + %"$dyndisp_gep_845" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_842", i32 2 + %"$dyndisp_pcast_846" = bitcast { i8*, i8* }* %"$dyndisp_gep_845" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_22_env_160"*)* @"$fundef_22" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_846" + store { i8*, i8* }* %"$dyndisp_table_842", { i8*, i8* }** @list_foldl + %"$gasrem_847" = load i64, i64* @_gasrem + %"$gascmp_848" = icmp ugt i64 1, %"$gasrem_847" + br i1 %"$gascmp_848", label %"$out_of_gas_849", label %"$have_gas_850" + +"$out_of_gas_849": ; preds = %"$have_gas_834" + call void @_out_of_gas() + br label %"$have_gas_850" + +"$have_gas_850": ; preds = %"$out_of_gas_849", %"$have_gas_834" + %"$consume_851" = sub i64 %"$gasrem_847", 1 + store i64 %"$consume_851", i64* @_gasrem + %"$$fundef_32_envp_852_load" = load i8*, i8** @_execptr + %"$$fundef_32_envp_852_salloc" = call i8* @_salloc(i8* %"$$fundef_32_envp_852_load", i64 8) + %"$$fundef_32_envp_852" = bitcast i8* %"$$fundef_32_envp_852_salloc" to %"$$fundef_32_env_155"* + %"$$fundef_32_env_voidp_854" = bitcast %"$$fundef_32_env_155"* %"$$fundef_32_envp_852" to i8* + %"$$fundef_32_cloval_855" = insertvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %TName_List_Int32*)*, i8* } (%"$$fundef_32_env_155"*)* @"$fundef_32" to { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_32_env_voidp_854", 1 + %"$$fundef_32_env_list_foldl_856" = getelementptr inbounds %"$$fundef_32_env_155", %"$$fundef_32_env_155"* %"$$fundef_32_envp_852", i32 0, i32 0 + %"$list_foldl_857" = load { i8*, i8* }*, { i8*, i8* }** @list_foldl + store { i8*, i8* }* %"$list_foldl_857", { i8*, i8* }** %"$$fundef_32_env_list_foldl_856" + %"$$fundef_38_env_voidp_859" = bitcast %"$$fundef_32_env_155"* %"$$fundef_32_envp_852" to i8* + %"$$fundef_38_cloval_860" = insertvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %TName_List_Int64*)*, i8* } (%"$$fundef_38_env_152"*)* @"$fundef_38" to { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_38_env_voidp_859", 1 + %"$dyndisp_table_861_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_861_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_861_salloc_load", i64 48) + %"$dyndisp_table_861_salloc" = bitcast i8* %"$dyndisp_table_861_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_861" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_861_salloc" to { i8*, i8* }* + %"$dyndisp_gep_862" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_861", i32 0 + %"$dyndisp_pcast_863" = bitcast { i8*, i8* }* %"$dyndisp_gep_862" to { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }* + store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* } %"$$fundef_32_cloval_855", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_863" + %"$dyndisp_gep_864" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_861", i32 2 + %"$dyndisp_pcast_865" = bitcast { i8*, i8* }* %"$dyndisp_gep_864" to { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }* + store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* } %"$$fundef_38_cloval_860", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_865" + store { i8*, i8* }* %"$dyndisp_table_861", { i8*, i8* }** @list_length %"$expr_44" = alloca %Uint32 + %"$gasrem_866" = load i64, i64* @_gasrem + %"$gascmp_867" = icmp ugt i64 1, %"$gasrem_866" + br i1 %"$gascmp_867", label %"$out_of_gas_868", label %"$have_gas_869" + +"$out_of_gas_868": ; preds = %"$have_gas_850" + call void @_out_of_gas() + br label %"$have_gas_869" + +"$have_gas_869": ; preds = %"$out_of_gas_868", %"$have_gas_850" + %"$consume_870" = sub i64 %"$gasrem_866", 1 + store i64 %"$consume_870", i64* @_gasrem %t1 = alloca { i8*, i8* }* - %"$dyndisp_table_542_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_542_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_542_salloc_load", i64 48) - %"$dyndisp_table_542_salloc" = bitcast i8* %"$dyndisp_table_542_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_542" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_542_salloc" to { i8*, i8* }* - %"$dyndisp_gep_543" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_542", i32 0 - %"$dyndisp_pcast_544" = bitcast { i8*, i8* }* %"$dyndisp_gep_543" to { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* - store { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* } { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)* bitcast ({ %TName_List_Int32* (i8*, %Int32)*, i8* } (%"$$fundef_45_env_149"*)* @"$fundef_45" to { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*), i8* null }, { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_544" - %"$dyndisp_gep_545" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_542", i32 2 - %"$dyndisp_pcast_546" = bitcast { i8*, i8* }* %"$dyndisp_gep_545" to { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* - store { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* } { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)* bitcast ({ %TName_List_Int64* (i8*, %Int64)*, i8* } (%"$$fundef_49_env_147"*)* @"$fundef_49" to { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*), i8* null }, { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_546" - store { i8*, i8* }* %"$dyndisp_table_542", { i8*, i8* }** %t1 + %"$gasrem_871" = load i64, i64* @_gasrem + %"$gascmp_872" = icmp ugt i64 1, %"$gasrem_871" + br i1 %"$gascmp_872", label %"$out_of_gas_873", label %"$have_gas_874" + +"$out_of_gas_873": ; preds = %"$have_gas_869" + call void @_out_of_gas() + br label %"$have_gas_874" + +"$have_gas_874": ; preds = %"$out_of_gas_873", %"$have_gas_869" + %"$consume_875" = sub i64 %"$gasrem_871", 1 + store i64 %"$consume_875", i64* @_gasrem + %"$dyndisp_table_882_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_882_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_882_salloc_load", i64 48) + %"$dyndisp_table_882_salloc" = bitcast i8* %"$dyndisp_table_882_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_882" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_882_salloc" to { i8*, i8* }* + %"$dyndisp_gep_883" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_882", i32 0 + %"$dyndisp_pcast_884" = bitcast { i8*, i8* }* %"$dyndisp_gep_883" to { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* + store { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* } { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)* bitcast ({ %TName_List_Int32* (i8*, %Int32)*, i8* } (%"$$fundef_45_env_149"*)* @"$fundef_45" to { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*), i8* null }, { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_884" + %"$dyndisp_gep_885" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_882", i32 2 + %"$dyndisp_pcast_886" = bitcast { i8*, i8* }* %"$dyndisp_gep_885" to { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* + store { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* } { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)* bitcast ({ %TName_List_Int64* (i8*, %Int64)*, i8* } (%"$$fundef_49_env_147"*)* @"$fundef_49" to { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*), i8* null }, { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_886" + store { i8*, i8* }* %"$dyndisp_table_882", { i8*, i8* }** %t1 + %"$gasrem_887" = load i64, i64* @_gasrem + %"$gascmp_888" = icmp ugt i64 1, %"$gasrem_887" + br i1 %"$gascmp_888", label %"$out_of_gas_889", label %"$have_gas_890" + +"$out_of_gas_889": ; preds = %"$have_gas_874" + call void @_out_of_gas() + br label %"$have_gas_890" + +"$have_gas_890": ; preds = %"$out_of_gas_889", %"$have_gas_874" + %"$consume_891" = sub i64 %"$gasrem_887", 1 + store i64 %"$consume_891", i64* @_gasrem %t2 = alloca { i8*, i8* }* - %"$dyndisp_table_553_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_553_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_553_salloc_load", i64 48) - %"$dyndisp_table_553_salloc" = bitcast i8* %"$dyndisp_table_553_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_553" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_553_salloc" to { i8*, i8* }* - %"$dyndisp_gep_554" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_553", i32 0 - %"$dyndisp_pcast_555" = bitcast { i8*, i8* }* %"$dyndisp_gep_554" to { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* - store { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* } { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)* bitcast ({ %TName_List_Int32* (i8*, %Int32)*, i8* } (%"$$fundef_53_env_145"*)* @"$fundef_53" to { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*), i8* null }, { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_555" - %"$dyndisp_gep_556" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_553", i32 2 - %"$dyndisp_pcast_557" = bitcast { i8*, i8* }* %"$dyndisp_gep_556" to { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* - store { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* } { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)* bitcast ({ %TName_List_Int64* (i8*, %Int64)*, i8* } (%"$$fundef_57_env_143"*)* @"$fundef_57" to { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*), i8* null }, { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_557" - store { i8*, i8* }* %"$dyndisp_table_553", { i8*, i8* }** %t2 + %"$gasrem_892" = load i64, i64* @_gasrem + %"$gascmp_893" = icmp ugt i64 1, %"$gasrem_892" + br i1 %"$gascmp_893", label %"$out_of_gas_894", label %"$have_gas_895" + +"$out_of_gas_894": ; preds = %"$have_gas_890" + call void @_out_of_gas() + br label %"$have_gas_895" + +"$have_gas_895": ; preds = %"$out_of_gas_894", %"$have_gas_890" + %"$consume_896" = sub i64 %"$gasrem_892", 1 + store i64 %"$consume_896", i64* @_gasrem + %"$dyndisp_table_903_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_903_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_903_salloc_load", i64 48) + %"$dyndisp_table_903_salloc" = bitcast i8* %"$dyndisp_table_903_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_903" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_903_salloc" to { i8*, i8* }* + %"$dyndisp_gep_904" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_903", i32 0 + %"$dyndisp_pcast_905" = bitcast { i8*, i8* }* %"$dyndisp_gep_904" to { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* + store { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* } { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)* bitcast ({ %TName_List_Int32* (i8*, %Int32)*, i8* } (%"$$fundef_53_env_145"*)* @"$fundef_53" to { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*), i8* null }, { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_905" + %"$dyndisp_gep_906" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_903", i32 2 + %"$dyndisp_pcast_907" = bitcast { i8*, i8* }* %"$dyndisp_gep_906" to { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* + store { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* } { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)* bitcast ({ %TName_List_Int64* (i8*, %Int64)*, i8* } (%"$$fundef_57_env_143"*)* @"$fundef_57" to { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*), i8* null }, { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_907" + store { i8*, i8* }* %"$dyndisp_table_903", { i8*, i8* }** %t2 + %"$gasrem_908" = load i64, i64* @_gasrem + %"$gascmp_909" = icmp ugt i64 1, %"$gasrem_908" + br i1 %"$gascmp_909", label %"$out_of_gas_910", label %"$have_gas_911" + +"$out_of_gas_910": ; preds = %"$have_gas_895" + call void @_out_of_gas() + br label %"$have_gas_911" + +"$have_gas_911": ; preds = %"$out_of_gas_910", %"$have_gas_895" + %"$consume_912" = sub i64 %"$gasrem_908", 1 + store i64 %"$consume_912", i64* @_gasrem %t = alloca { i8*, i8* }* - %"$dyndisp_table_564_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_564_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_564_salloc_load", i64 48) - %"$dyndisp_table_564_salloc" = bitcast i8* %"$dyndisp_table_564_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_564" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_564_salloc" to { i8*, i8* }* - %"$dyndisp_gep_565" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_564", i32 0 - %"$dyndisp_pcast_566" = bitcast { i8*, i8* }* %"$dyndisp_gep_565" to { { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }* - store { { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* } { { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)* bitcast ({ { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (%"$$fundef_61_env_141"*)* @"$fundef_61" to { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*), i8* null }, { { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_566" - %"$dyndisp_gep_567" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_564", i32 2 - %"$dyndisp_pcast_568" = bitcast { i8*, i8* }* %"$dyndisp_gep_567" to { { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }* - store { { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* } { { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)* bitcast ({ { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (%"$$fundef_65_env_139"*)* @"$fundef_65" to { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*), i8* null }, { { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_568" - store { i8*, i8* }* %"$dyndisp_table_564", { i8*, i8* }** %t + %"$gasrem_913" = load i64, i64* @_gasrem + %"$gascmp_914" = icmp ugt i64 1, %"$gasrem_913" + br i1 %"$gascmp_914", label %"$out_of_gas_915", label %"$have_gas_916" + +"$out_of_gas_915": ; preds = %"$have_gas_911" + call void @_out_of_gas() + br label %"$have_gas_916" + +"$have_gas_916": ; preds = %"$out_of_gas_915", %"$have_gas_911" + %"$consume_917" = sub i64 %"$gasrem_913", 1 + store i64 %"$consume_917", i64* @_gasrem + %"$dyndisp_table_924_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_924_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_924_salloc_load", i64 48) + %"$dyndisp_table_924_salloc" = bitcast i8* %"$dyndisp_table_924_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_924" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_924_salloc" to { i8*, i8* }* + %"$dyndisp_gep_925" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_924", i32 0 + %"$dyndisp_pcast_926" = bitcast { i8*, i8* }* %"$dyndisp_gep_925" to { { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }* + store { { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* } { { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)* bitcast ({ { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (%"$$fundef_61_env_141"*)* @"$fundef_61" to { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*), i8* null }, { { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_926" + %"$dyndisp_gep_927" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_924", i32 2 + %"$dyndisp_pcast_928" = bitcast { i8*, i8* }* %"$dyndisp_gep_927" to { { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }* + store { { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* } { { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)* bitcast ({ { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (%"$$fundef_65_env_139"*)* @"$fundef_65" to { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*), i8* null }, { { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_928" + store { i8*, i8* }* %"$dyndisp_table_924", { i8*, i8* }** %t + %"$gasrem_929" = load i64, i64* @_gasrem + %"$gascmp_930" = icmp ugt i64 1, %"$gasrem_929" + br i1 %"$gascmp_930", label %"$out_of_gas_931", label %"$have_gas_932" + +"$out_of_gas_931": ; preds = %"$have_gas_916" + call void @_out_of_gas() + br label %"$have_gas_932" + +"$have_gas_932": ; preds = %"$out_of_gas_931", %"$have_gas_916" + %"$consume_933" = sub i64 %"$gasrem_929", 1 + store i64 %"$consume_933", i64* @_gasrem %some_bool = alloca %TName_Bool* - %"$adtval_569_load" = load i8*, i8** @_execptr - %"$adtval_569_salloc" = call i8* @_salloc(i8* %"$adtval_569_load", i64 1) - %"$adtval_569" = bitcast i8* %"$adtval_569_salloc" to %CName_False* - %"$adtgep_570" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_569", i32 0, i32 0 - store i8 1, i8* %"$adtgep_570" - %"$adtptr_571" = bitcast %CName_False* %"$adtval_569" to %TName_Bool* - store %TName_Bool* %"$adtptr_571", %TName_Bool** %some_bool - %"$some_bool_573" = load %TName_Bool*, %TName_Bool** %some_bool - %"$some_bool_tag_574" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$some_bool_573", i32 0, i32 0 - %"$some_bool_tag_575" = load i8, i8* %"$some_bool_tag_574" - switch i8 %"$some_bool_tag_575", label %"$empty_default_576" [ - i8 0, label %"$True_577" - i8 1, label %"$False_611" + %"$gasrem_934" = load i64, i64* @_gasrem + %"$gascmp_935" = icmp ugt i64 1, %"$gasrem_934" + br i1 %"$gascmp_935", label %"$out_of_gas_936", label %"$have_gas_937" + +"$out_of_gas_936": ; preds = %"$have_gas_932" + call void @_out_of_gas() + br label %"$have_gas_937" + +"$have_gas_937": ; preds = %"$out_of_gas_936", %"$have_gas_932" + %"$consume_938" = sub i64 %"$gasrem_934", 1 + store i64 %"$consume_938", i64* @_gasrem + %"$adtval_939_load" = load i8*, i8** @_execptr + %"$adtval_939_salloc" = call i8* @_salloc(i8* %"$adtval_939_load", i64 1) + %"$adtval_939" = bitcast i8* %"$adtval_939_salloc" to %CName_False* + %"$adtgep_940" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_939", i32 0, i32 0 + store i8 1, i8* %"$adtgep_940" + %"$adtptr_941" = bitcast %CName_False* %"$adtval_939" to %TName_Bool* + store %TName_Bool* %"$adtptr_941", %TName_Bool** %some_bool + %"$gasrem_942" = load i64, i64* @_gasrem + %"$gascmp_943" = icmp ugt i64 2, %"$gasrem_942" + br i1 %"$gascmp_943", label %"$out_of_gas_944", label %"$have_gas_945" + +"$out_of_gas_944": ; preds = %"$have_gas_937" + call void @_out_of_gas() + br label %"$have_gas_945" + +"$have_gas_945": ; preds = %"$out_of_gas_944", %"$have_gas_937" + %"$consume_946" = sub i64 %"$gasrem_942", 2 + store i64 %"$consume_946", i64* @_gasrem + %"$some_bool_948" = load %TName_Bool*, %TName_Bool** %some_bool + %"$some_bool_tag_949" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$some_bool_948", i32 0, i32 0 + %"$some_bool_tag_950" = load i8, i8* %"$some_bool_tag_949" + switch i8 %"$some_bool_tag_950", label %"$empty_default_951" [ + i8 0, label %"$True_952" + i8 1, label %"$False_1041" ] -"$True_577": ; preds = %entry - %"$some_bool_578" = bitcast %TName_Bool* %"$some_bool_573" to %CName_True* +"$True_952": ; preds = %"$have_gas_945" + %"$some_bool_953" = bitcast %TName_Bool* %"$some_bool_948" to %CName_True* + %"$gasrem_954" = load i64, i64* @_gasrem + %"$gascmp_955" = icmp ugt i64 1, %"$gasrem_954" + br i1 %"$gascmp_955", label %"$out_of_gas_956", label %"$have_gas_957" + +"$out_of_gas_956": ; preds = %"$True_952" + call void @_out_of_gas() + br label %"$have_gas_957" + +"$have_gas_957": ; preds = %"$out_of_gas_956", %"$True_952" + %"$consume_958" = sub i64 %"$gasrem_954", 1 + store i64 %"$consume_958", i64* @_gasrem %f11 = alloca { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } - %"$t_579" = load { i8*, i8* }*, { i8*, i8* }** %t - %"$t_580" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$t_579", i32 0 - %"$t_581" = bitcast { i8*, i8* }* %"$t_580" to { { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }* - %"$t_582" = load { { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }, { { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }* %"$t_581" - %"$t_fptr_583" = extractvalue { { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* } %"$t_582", 0 - %"$t_envptr_584" = extractvalue { { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* } %"$t_582", 1 - %"$t_call_585" = call { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$t_fptr_583"(i8* %"$t_envptr_584") - store { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$t_call_585", { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %f11 + %"$gasrem_959" = load i64, i64* @_gasrem + %"$gascmp_960" = icmp ugt i64 1, %"$gasrem_959" + br i1 %"$gascmp_960", label %"$out_of_gas_961", label %"$have_gas_962" + +"$out_of_gas_961": ; preds = %"$have_gas_957" + call void @_out_of_gas() + br label %"$have_gas_962" + +"$have_gas_962": ; preds = %"$out_of_gas_961", %"$have_gas_957" + %"$consume_963" = sub i64 %"$gasrem_959", 1 + store i64 %"$consume_963", i64* @_gasrem + %"$t_964" = load { i8*, i8* }*, { i8*, i8* }** %t + %"$t_965" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$t_964", i32 0 + %"$t_966" = bitcast { i8*, i8* }* %"$t_965" to { { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }* + %"$t_967" = load { { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }, { { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }* %"$t_966" + %"$t_fptr_968" = extractvalue { { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* } %"$t_967", 0 + %"$t_envptr_969" = extractvalue { { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* } %"$t_967", 1 + %"$t_call_970" = call { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$t_fptr_968"(i8* %"$t_envptr_969") + store { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$t_call_970", { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %f11 + %"$gasrem_971" = load i64, i64* @_gasrem + %"$gascmp_972" = icmp ugt i64 1, %"$gasrem_971" + br i1 %"$gascmp_972", label %"$out_of_gas_973", label %"$have_gas_974" + +"$out_of_gas_973": ; preds = %"$have_gas_962" + call void @_out_of_gas() + br label %"$have_gas_974" + +"$have_gas_974": ; preds = %"$out_of_gas_973", %"$have_gas_962" + %"$consume_975" = sub i64 %"$gasrem_971", 1 + store i64 %"$consume_975", i64* @_gasrem %f1 = alloca { %TName_List_Int32* (i8*, %Int32)*, i8* } + %"$gasrem_976" = load i64, i64* @_gasrem + %"$gascmp_977" = icmp ugt i64 1, %"$gasrem_976" + br i1 %"$gascmp_977", label %"$out_of_gas_978", label %"$have_gas_979" + +"$out_of_gas_978": ; preds = %"$have_gas_974" + call void @_out_of_gas() + br label %"$have_gas_979" + +"$have_gas_979": ; preds = %"$out_of_gas_978", %"$have_gas_974" + %"$consume_980" = sub i64 %"$gasrem_976", 1 + store i64 %"$consume_980", i64* @_gasrem %"$f11_6" = alloca { %TName_List_Int32* (i8*, %Int32)*, i8* } - %"$f11_586" = load { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %f11 - %"$f11_fptr_587" = extractvalue { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$f11_586", 0 - %"$f11_envptr_588" = extractvalue { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$f11_586", 1 - %"$t1_589" = load { i8*, i8* }*, { i8*, i8* }** %t1 - %"$f11_call_590" = call { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f11_fptr_587"(i8* %"$f11_envptr_588", { i8*, i8* }* %"$t1_589") - store { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f11_call_590", { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$f11_6" - %"$$f11_6_591" = load { %TName_List_Int32* (i8*, %Int32)*, i8* }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$f11_6" - store { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$$f11_6_591", { %TName_List_Int32* (i8*, %Int32)*, i8* }* %f1 + %"$f11_981" = load { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %f11 + %"$f11_fptr_982" = extractvalue { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$f11_981", 0 + %"$f11_envptr_983" = extractvalue { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$f11_981", 1 + %"$t1_984" = load { i8*, i8* }*, { i8*, i8* }** %t1 + %"$f11_call_985" = call { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f11_fptr_982"(i8* %"$f11_envptr_983", { i8*, i8* }* %"$t1_984") + store { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f11_call_985", { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$f11_6" + %"$$f11_6_986" = load { %TName_List_Int32* (i8*, %Int32)*, i8* }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$f11_6" + store { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$$f11_6_986", { %TName_List_Int32* (i8*, %Int32)*, i8* }* %f1 + %"$gasrem_987" = load i64, i64* @_gasrem + %"$gascmp_988" = icmp ugt i64 1, %"$gasrem_987" + br i1 %"$gascmp_988", label %"$out_of_gas_989", label %"$have_gas_990" + +"$out_of_gas_989": ; preds = %"$have_gas_979" + call void @_out_of_gas() + br label %"$have_gas_990" + +"$have_gas_990": ; preds = %"$out_of_gas_989", %"$have_gas_979" + %"$consume_991" = sub i64 %"$gasrem_987", 1 + store i64 %"$consume_991", i64* @_gasrem %len = alloca { %Uint32 (i8*, %TName_List_Int32*)*, i8* } - %"$list_length_592" = load { i8*, i8* }*, { i8*, i8* }** @list_length - %"$list_length_593" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_length_592", i32 0 - %"$list_length_594" = bitcast { i8*, i8* }* %"$list_length_593" to { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }* - %"$list_length_595" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }* %"$list_length_594" - %"$list_length_fptr_596" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* } %"$list_length_595", 0 - %"$list_length_envptr_597" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* } %"$list_length_595", 1 - %"$list_length_call_598" = call { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$list_length_fptr_596"(i8* %"$list_length_envptr_597") - store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$list_length_call_598", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %len + %"$gasrem_992" = load i64, i64* @_gasrem + %"$gascmp_993" = icmp ugt i64 1, %"$gasrem_992" + br i1 %"$gascmp_993", label %"$out_of_gas_994", label %"$have_gas_995" + +"$out_of_gas_994": ; preds = %"$have_gas_990" + call void @_out_of_gas() + br label %"$have_gas_995" + +"$have_gas_995": ; preds = %"$out_of_gas_994", %"$have_gas_990" + %"$consume_996" = sub i64 %"$gasrem_992", 1 + store i64 %"$consume_996", i64* @_gasrem + %"$list_length_997" = load { i8*, i8* }*, { i8*, i8* }** @list_length + %"$list_length_998" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_length_997", i32 0 + %"$list_length_999" = bitcast { i8*, i8* }* %"$list_length_998" to { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }* + %"$list_length_1000" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }* %"$list_length_999" + %"$list_length_fptr_1001" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* } %"$list_length_1000", 0 + %"$list_length_envptr_1002" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* } %"$list_length_1000", 1 + %"$list_length_call_1003" = call { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$list_length_fptr_1001"(i8* %"$list_length_envptr_1002") + store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$list_length_call_1003", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %len + %"$gasrem_1004" = load i64, i64* @_gasrem + %"$gascmp_1005" = icmp ugt i64 1, %"$gasrem_1004" + br i1 %"$gascmp_1005", label %"$out_of_gas_1006", label %"$have_gas_1007" + +"$out_of_gas_1006": ; preds = %"$have_gas_995" + call void @_out_of_gas() + br label %"$have_gas_1007" + +"$have_gas_1007": ; preds = %"$out_of_gas_1006", %"$have_gas_995" + %"$consume_1008" = sub i64 %"$gasrem_1004", 1 + store i64 %"$consume_1008", i64* @_gasrem %one = alloca %Int32 + %"$gasrem_1009" = load i64, i64* @_gasrem + %"$gascmp_1010" = icmp ugt i64 1, %"$gasrem_1009" + br i1 %"$gascmp_1010", label %"$out_of_gas_1011", label %"$have_gas_1012" + +"$out_of_gas_1011": ; preds = %"$have_gas_1007" + call void @_out_of_gas() + br label %"$have_gas_1012" + +"$have_gas_1012": ; preds = %"$out_of_gas_1011", %"$have_gas_1007" + %"$consume_1013" = sub i64 %"$gasrem_1009", 1 + store i64 %"$consume_1013", i64* @_gasrem store %Int32 { i32 1 }, %Int32* %one + %"$gasrem_1014" = load i64, i64* @_gasrem + %"$gascmp_1015" = icmp ugt i64 1, %"$gasrem_1014" + br i1 %"$gascmp_1015", label %"$out_of_gas_1016", label %"$have_gas_1017" + +"$out_of_gas_1016": ; preds = %"$have_gas_1012" + call void @_out_of_gas() + br label %"$have_gas_1017" + +"$have_gas_1017": ; preds = %"$out_of_gas_1016", %"$have_gas_1012" + %"$consume_1018" = sub i64 %"$gasrem_1014", 1 + store i64 %"$consume_1018", i64* @_gasrem %f1l = alloca %TName_List_Int32* + %"$gasrem_1019" = load i64, i64* @_gasrem + %"$gascmp_1020" = icmp ugt i64 1, %"$gasrem_1019" + br i1 %"$gascmp_1020", label %"$out_of_gas_1021", label %"$have_gas_1022" + +"$out_of_gas_1021": ; preds = %"$have_gas_1017" + call void @_out_of_gas() + br label %"$have_gas_1022" + +"$have_gas_1022": ; preds = %"$out_of_gas_1021", %"$have_gas_1017" + %"$consume_1023" = sub i64 %"$gasrem_1019", 1 + store i64 %"$consume_1023", i64* @_gasrem %"$f1_7" = alloca %TName_List_Int32* - %"$f1_599" = load { %TName_List_Int32* (i8*, %Int32)*, i8* }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %f1 - %"$f1_fptr_600" = extractvalue { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f1_599", 0 - %"$f1_envptr_601" = extractvalue { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f1_599", 1 - %"$one_602" = load %Int32, %Int32* %one - %"$f1_call_603" = call %TName_List_Int32* %"$f1_fptr_600"(i8* %"$f1_envptr_601", %Int32 %"$one_602") - store %TName_List_Int32* %"$f1_call_603", %TName_List_Int32** %"$f1_7" - %"$$f1_7_604" = load %TName_List_Int32*, %TName_List_Int32** %"$f1_7" - store %TName_List_Int32* %"$$f1_7_604", %TName_List_Int32** %f1l + %"$f1_1024" = load { %TName_List_Int32* (i8*, %Int32)*, i8* }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %f1 + %"$f1_fptr_1025" = extractvalue { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f1_1024", 0 + %"$f1_envptr_1026" = extractvalue { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f1_1024", 1 + %"$one_1027" = load %Int32, %Int32* %one + %"$f1_call_1028" = call %TName_List_Int32* %"$f1_fptr_1025"(i8* %"$f1_envptr_1026", %Int32 %"$one_1027") + store %TName_List_Int32* %"$f1_call_1028", %TName_List_Int32** %"$f1_7" + %"$$f1_7_1029" = load %TName_List_Int32*, %TName_List_Int32** %"$f1_7" + store %TName_List_Int32* %"$$f1_7_1029", %TName_List_Int32** %f1l + %"$gasrem_1030" = load i64, i64* @_gasrem + %"$gascmp_1031" = icmp ugt i64 1, %"$gasrem_1030" + br i1 %"$gascmp_1031", label %"$out_of_gas_1032", label %"$have_gas_1033" + +"$out_of_gas_1032": ; preds = %"$have_gas_1022" + call void @_out_of_gas() + br label %"$have_gas_1033" + +"$have_gas_1033": ; preds = %"$out_of_gas_1032", %"$have_gas_1022" + %"$consume_1034" = sub i64 %"$gasrem_1030", 1 + store i64 %"$consume_1034", i64* @_gasrem %"$len_8" = alloca %Uint32 - %"$len_605" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %len - %"$len_fptr_606" = extractvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$len_605", 0 - %"$len_envptr_607" = extractvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$len_605", 1 - %"$f1l_608" = load %TName_List_Int32*, %TName_List_Int32** %f1l - %"$len_call_609" = call %Uint32 %"$len_fptr_606"(i8* %"$len_envptr_607", %TName_List_Int32* %"$f1l_608") - store %Uint32 %"$len_call_609", %Uint32* %"$len_8" - %"$$len_8_610" = load %Uint32, %Uint32* %"$len_8" - store %Uint32 %"$$len_8_610", %Uint32* %"$expr_44" - br label %"$matchsucc_572" - -"$False_611": ; preds = %entry - %"$some_bool_612" = bitcast %TName_Bool* %"$some_bool_573" to %CName_False* + %"$len_1035" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %len + %"$len_fptr_1036" = extractvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$len_1035", 0 + %"$len_envptr_1037" = extractvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$len_1035", 1 + %"$f1l_1038" = load %TName_List_Int32*, %TName_List_Int32** %f1l + %"$len_call_1039" = call %Uint32 %"$len_fptr_1036"(i8* %"$len_envptr_1037", %TName_List_Int32* %"$f1l_1038") + store %Uint32 %"$len_call_1039", %Uint32* %"$len_8" + %"$$len_8_1040" = load %Uint32, %Uint32* %"$len_8" + store %Uint32 %"$$len_8_1040", %Uint32* %"$expr_44" + br label %"$matchsucc_947" + +"$False_1041": ; preds = %"$have_gas_945" + %"$some_bool_1042" = bitcast %TName_Bool* %"$some_bool_948" to %CName_False* + %"$gasrem_1043" = load i64, i64* @_gasrem + %"$gascmp_1044" = icmp ugt i64 1, %"$gasrem_1043" + br i1 %"$gascmp_1044", label %"$out_of_gas_1045", label %"$have_gas_1046" + +"$out_of_gas_1045": ; preds = %"$False_1041" + call void @_out_of_gas() + br label %"$have_gas_1046" + +"$have_gas_1046": ; preds = %"$out_of_gas_1045", %"$False_1041" + %"$consume_1047" = sub i64 %"$gasrem_1043", 1 + store i64 %"$consume_1047", i64* @_gasrem %f22 = alloca { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } - %"$t_613" = load { i8*, i8* }*, { i8*, i8* }** %t - %"$t_614" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$t_613", i32 2 - %"$t_615" = bitcast { i8*, i8* }* %"$t_614" to { { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }* - %"$t_616" = load { { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }, { { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }* %"$t_615" - %"$t_fptr_617" = extractvalue { { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* } %"$t_616", 0 - %"$t_envptr_618" = extractvalue { { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* } %"$t_616", 1 - %"$t_call_619" = call { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$t_fptr_617"(i8* %"$t_envptr_618") - store { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$t_call_619", { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %f22 + %"$gasrem_1048" = load i64, i64* @_gasrem + %"$gascmp_1049" = icmp ugt i64 1, %"$gasrem_1048" + br i1 %"$gascmp_1049", label %"$out_of_gas_1050", label %"$have_gas_1051" + +"$out_of_gas_1050": ; preds = %"$have_gas_1046" + call void @_out_of_gas() + br label %"$have_gas_1051" + +"$have_gas_1051": ; preds = %"$out_of_gas_1050", %"$have_gas_1046" + %"$consume_1052" = sub i64 %"$gasrem_1048", 1 + store i64 %"$consume_1052", i64* @_gasrem + %"$t_1053" = load { i8*, i8* }*, { i8*, i8* }** %t + %"$t_1054" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$t_1053", i32 2 + %"$t_1055" = bitcast { i8*, i8* }* %"$t_1054" to { { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }* + %"$t_1056" = load { { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }, { { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* }* %"$t_1055" + %"$t_fptr_1057" = extractvalue { { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* } %"$t_1056", 0 + %"$t_envptr_1058" = extractvalue { { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*)*, i8* } %"$t_1056", 1 + %"$t_call_1059" = call { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$t_fptr_1057"(i8* %"$t_envptr_1058") + store { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$t_call_1059", { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %f22 + %"$gasrem_1060" = load i64, i64* @_gasrem + %"$gascmp_1061" = icmp ugt i64 1, %"$gasrem_1060" + br i1 %"$gascmp_1061", label %"$out_of_gas_1062", label %"$have_gas_1063" + +"$out_of_gas_1062": ; preds = %"$have_gas_1051" + call void @_out_of_gas() + br label %"$have_gas_1063" + +"$have_gas_1063": ; preds = %"$out_of_gas_1062", %"$have_gas_1051" + %"$consume_1064" = sub i64 %"$gasrem_1060", 1 + store i64 %"$consume_1064", i64* @_gasrem %f2 = alloca { %TName_List_Int64* (i8*, %Int64)*, i8* } + %"$gasrem_1065" = load i64, i64* @_gasrem + %"$gascmp_1066" = icmp ugt i64 1, %"$gasrem_1065" + br i1 %"$gascmp_1066", label %"$out_of_gas_1067", label %"$have_gas_1068" + +"$out_of_gas_1067": ; preds = %"$have_gas_1063" + call void @_out_of_gas() + br label %"$have_gas_1068" + +"$have_gas_1068": ; preds = %"$out_of_gas_1067", %"$have_gas_1063" + %"$consume_1069" = sub i64 %"$gasrem_1065", 1 + store i64 %"$consume_1069", i64* @_gasrem %"$f22_9" = alloca { %TName_List_Int64* (i8*, %Int64)*, i8* } - %"$f22_620" = load { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %f22 - %"$f22_fptr_621" = extractvalue { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$f22_620", 0 - %"$f22_envptr_622" = extractvalue { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$f22_620", 1 - %"$t2_623" = load { i8*, i8* }*, { i8*, i8* }** %t2 - %"$f22_call_624" = call { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f22_fptr_621"(i8* %"$f22_envptr_622", { i8*, i8* }* %"$t2_623") - store { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f22_call_624", { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$f22_9" - %"$$f22_9_625" = load { %TName_List_Int64* (i8*, %Int64)*, i8* }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$f22_9" - store { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$$f22_9_625", { %TName_List_Int64* (i8*, %Int64)*, i8* }* %f2 + %"$f22_1070" = load { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %f22 + %"$f22_fptr_1071" = extractvalue { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$f22_1070", 0 + %"$f22_envptr_1072" = extractvalue { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$f22_1070", 1 + %"$t2_1073" = load { i8*, i8* }*, { i8*, i8* }** %t2 + %"$f22_call_1074" = call { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f22_fptr_1071"(i8* %"$f22_envptr_1072", { i8*, i8* }* %"$t2_1073") + store { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f22_call_1074", { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$f22_9" + %"$$f22_9_1075" = load { %TName_List_Int64* (i8*, %Int64)*, i8* }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$f22_9" + store { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$$f22_9_1075", { %TName_List_Int64* (i8*, %Int64)*, i8* }* %f2 + %"$gasrem_1076" = load i64, i64* @_gasrem + %"$gascmp_1077" = icmp ugt i64 1, %"$gasrem_1076" + br i1 %"$gascmp_1077", label %"$out_of_gas_1078", label %"$have_gas_1079" + +"$out_of_gas_1078": ; preds = %"$have_gas_1068" + call void @_out_of_gas() + br label %"$have_gas_1079" + +"$have_gas_1079": ; preds = %"$out_of_gas_1078", %"$have_gas_1068" + %"$consume_1080" = sub i64 %"$gasrem_1076", 1 + store i64 %"$consume_1080", i64* @_gasrem %len1 = alloca { %Uint32 (i8*, %TName_List_Int64*)*, i8* } - %"$list_length_626" = load { i8*, i8* }*, { i8*, i8* }** @list_length - %"$list_length_627" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_length_626", i32 2 - %"$list_length_628" = bitcast { i8*, i8* }* %"$list_length_627" to { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }* - %"$list_length_629" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }* %"$list_length_628" - %"$list_length_fptr_630" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* } %"$list_length_629", 0 - %"$list_length_envptr_631" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* } %"$list_length_629", 1 - %"$list_length_call_632" = call { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$list_length_fptr_630"(i8* %"$list_length_envptr_631") - store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$list_length_call_632", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %len1 + %"$gasrem_1081" = load i64, i64* @_gasrem + %"$gascmp_1082" = icmp ugt i64 1, %"$gasrem_1081" + br i1 %"$gascmp_1082", label %"$out_of_gas_1083", label %"$have_gas_1084" + +"$out_of_gas_1083": ; preds = %"$have_gas_1079" + call void @_out_of_gas() + br label %"$have_gas_1084" + +"$have_gas_1084": ; preds = %"$out_of_gas_1083", %"$have_gas_1079" + %"$consume_1085" = sub i64 %"$gasrem_1081", 1 + store i64 %"$consume_1085", i64* @_gasrem + %"$list_length_1086" = load { i8*, i8* }*, { i8*, i8* }** @list_length + %"$list_length_1087" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_length_1086", i32 2 + %"$list_length_1088" = bitcast { i8*, i8* }* %"$list_length_1087" to { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }* + %"$list_length_1089" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }* %"$list_length_1088" + %"$list_length_fptr_1090" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* } %"$list_length_1089", 0 + %"$list_length_envptr_1091" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* } %"$list_length_1089", 1 + %"$list_length_call_1092" = call { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$list_length_fptr_1090"(i8* %"$list_length_envptr_1091") + store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$list_length_call_1092", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %len1 + %"$gasrem_1093" = load i64, i64* @_gasrem + %"$gascmp_1094" = icmp ugt i64 1, %"$gasrem_1093" + br i1 %"$gascmp_1094", label %"$out_of_gas_1095", label %"$have_gas_1096" + +"$out_of_gas_1095": ; preds = %"$have_gas_1084" + call void @_out_of_gas() + br label %"$have_gas_1096" + +"$have_gas_1096": ; preds = %"$out_of_gas_1095", %"$have_gas_1084" + %"$consume_1097" = sub i64 %"$gasrem_1093", 1 + store i64 %"$consume_1097", i64* @_gasrem %one2 = alloca %Int64 + %"$gasrem_1098" = load i64, i64* @_gasrem + %"$gascmp_1099" = icmp ugt i64 1, %"$gasrem_1098" + br i1 %"$gascmp_1099", label %"$out_of_gas_1100", label %"$have_gas_1101" + +"$out_of_gas_1100": ; preds = %"$have_gas_1096" + call void @_out_of_gas() + br label %"$have_gas_1101" + +"$have_gas_1101": ; preds = %"$out_of_gas_1100", %"$have_gas_1096" + %"$consume_1102" = sub i64 %"$gasrem_1098", 1 + store i64 %"$consume_1102", i64* @_gasrem store %Int64 { i64 1 }, %Int64* %one2 + %"$gasrem_1103" = load i64, i64* @_gasrem + %"$gascmp_1104" = icmp ugt i64 1, %"$gasrem_1103" + br i1 %"$gascmp_1104", label %"$out_of_gas_1105", label %"$have_gas_1106" + +"$out_of_gas_1105": ; preds = %"$have_gas_1101" + call void @_out_of_gas() + br label %"$have_gas_1106" + +"$have_gas_1106": ; preds = %"$out_of_gas_1105", %"$have_gas_1101" + %"$consume_1107" = sub i64 %"$gasrem_1103", 1 + store i64 %"$consume_1107", i64* @_gasrem %f2l = alloca %TName_List_Int64* + %"$gasrem_1108" = load i64, i64* @_gasrem + %"$gascmp_1109" = icmp ugt i64 1, %"$gasrem_1108" + br i1 %"$gascmp_1109", label %"$out_of_gas_1110", label %"$have_gas_1111" + +"$out_of_gas_1110": ; preds = %"$have_gas_1106" + call void @_out_of_gas() + br label %"$have_gas_1111" + +"$have_gas_1111": ; preds = %"$out_of_gas_1110", %"$have_gas_1106" + %"$consume_1112" = sub i64 %"$gasrem_1108", 1 + store i64 %"$consume_1112", i64* @_gasrem %"$f2_10" = alloca %TName_List_Int64* - %"$f2_633" = load { %TName_List_Int64* (i8*, %Int64)*, i8* }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %f2 - %"$f2_fptr_634" = extractvalue { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f2_633", 0 - %"$f2_envptr_635" = extractvalue { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f2_633", 1 - %"$one_636" = load %Int64, %Int64* %one2 - %"$f2_call_637" = call %TName_List_Int64* %"$f2_fptr_634"(i8* %"$f2_envptr_635", %Int64 %"$one_636") - store %TName_List_Int64* %"$f2_call_637", %TName_List_Int64** %"$f2_10" - %"$$f2_10_638" = load %TName_List_Int64*, %TName_List_Int64** %"$f2_10" - store %TName_List_Int64* %"$$f2_10_638", %TName_List_Int64** %f2l + %"$f2_1113" = load { %TName_List_Int64* (i8*, %Int64)*, i8* }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %f2 + %"$f2_fptr_1114" = extractvalue { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f2_1113", 0 + %"$f2_envptr_1115" = extractvalue { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f2_1113", 1 + %"$one_1116" = load %Int64, %Int64* %one2 + %"$f2_call_1117" = call %TName_List_Int64* %"$f2_fptr_1114"(i8* %"$f2_envptr_1115", %Int64 %"$one_1116") + store %TName_List_Int64* %"$f2_call_1117", %TName_List_Int64** %"$f2_10" + %"$$f2_10_1118" = load %TName_List_Int64*, %TName_List_Int64** %"$f2_10" + store %TName_List_Int64* %"$$f2_10_1118", %TName_List_Int64** %f2l + %"$gasrem_1119" = load i64, i64* @_gasrem + %"$gascmp_1120" = icmp ugt i64 1, %"$gasrem_1119" + br i1 %"$gascmp_1120", label %"$out_of_gas_1121", label %"$have_gas_1122" + +"$out_of_gas_1121": ; preds = %"$have_gas_1111" + call void @_out_of_gas() + br label %"$have_gas_1122" + +"$have_gas_1122": ; preds = %"$out_of_gas_1121", %"$have_gas_1111" + %"$consume_1123" = sub i64 %"$gasrem_1119", 1 + store i64 %"$consume_1123", i64* @_gasrem %"$len_11" = alloca %Uint32 - %"$len_639" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %len1 - %"$len_fptr_640" = extractvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$len_639", 0 - %"$len_envptr_641" = extractvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$len_639", 1 - %"$f2l_642" = load %TName_List_Int64*, %TName_List_Int64** %f2l - %"$len_call_643" = call %Uint32 %"$len_fptr_640"(i8* %"$len_envptr_641", %TName_List_Int64* %"$f2l_642") - store %Uint32 %"$len_call_643", %Uint32* %"$len_11" - %"$$len_11_644" = load %Uint32, %Uint32* %"$len_11" - store %Uint32 %"$$len_11_644", %Uint32* %"$expr_44" - br label %"$matchsucc_572" - -"$empty_default_576": ; preds = %entry - br label %"$matchsucc_572" - -"$matchsucc_572": ; preds = %"$False_611", %"$True_577", %"$empty_default_576" - %"$$expr_44_645" = load %Uint32, %Uint32* %"$expr_44" - ret %Uint32 %"$$expr_44_645" + %"$len_1124" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %len1 + %"$len_fptr_1125" = extractvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$len_1124", 0 + %"$len_envptr_1126" = extractvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$len_1124", 1 + %"$f2l_1127" = load %TName_List_Int64*, %TName_List_Int64** %f2l + %"$len_call_1128" = call %Uint32 %"$len_fptr_1125"(i8* %"$len_envptr_1126", %TName_List_Int64* %"$f2l_1127") + store %Uint32 %"$len_call_1128", %Uint32* %"$len_11" + %"$$len_11_1129" = load %Uint32, %Uint32* %"$len_11" + store %Uint32 %"$$len_11_1129", %Uint32* %"$expr_44" + br label %"$matchsucc_947" + +"$empty_default_951": ; preds = %"$have_gas_945" + br label %"$matchsucc_947" + +"$matchsucc_947": ; preds = %"$have_gas_1122", %"$have_gas_1033", %"$empty_default_951" + %"$$expr_44_1130" = load %Uint32, %Uint32* %"$expr_44" + ret %Uint32 %"$$expr_44_1130" } declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_646" = call %Uint32 @"$scilla_expr_510"(i8* null) - %"$pval_647" = alloca %Uint32 - %"$memvoidcast_648" = bitcast %Uint32* %"$pval_647" to i8* - store %Uint32 %"$exprval_646", %Uint32* %"$pval_647" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_73", i8* %"$memvoidcast_648") + %"$exprval_1131" = call %Uint32 @"$scilla_expr_830"(i8* null) + %"$pval_1132" = alloca %Uint32 + %"$memvoidcast_1133" = bitcast %Uint32* %"$pval_1132" to i8* + store %Uint32 %"$exprval_1131", %Uint32* %"$pval_1132" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_73", i8* %"$memvoidcast_1133") ret void } diff --git a/testsuite/expr/fun-type-inst.ll.result b/testsuite/expr/fun-type-inst.ll.result index 9a9f6d8d..83208d44 100644 --- a/testsuite/expr/fun-type-inst.ll.result +++ b/testsuite/expr/fun-type-inst.ll.result @@ -1 +1,2 @@ 2 : Uint32 +Gas remaining: 9999938 diff --git a/testsuite/expr/lit-bystr3.ll b/testsuite/expr/lit-bystr3.ll index bb0a6413..c36213d5 100644 --- a/testsuite/expr/lit-bystr3.ll +++ b/testsuite/expr/lit-bystr3.ll @@ -8,6 +8,7 @@ target triple = "x86_64-pc-linux-gnu" %_TyDescrTy_Typ = type { i32, 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 } @@ -47,19 +48,32 @@ entry: define internal [3 x i8] @"$scilla_expr_36"(i8* %0) { entry: %"$expr_0" = alloca [3 x i8] + %"$gasrem_37" = load i64, i64* @_gasrem + %"$gascmp_38" = icmp ugt i64 1, %"$gasrem_37" + br i1 %"$gascmp_38", label %"$out_of_gas_39", label %"$have_gas_40" + +"$out_of_gas_39": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_40" + +"$have_gas_40": ; preds = %"$out_of_gas_39", %entry + %"$consume_41" = sub i64 %"$gasrem_37", 1 + store i64 %"$consume_41", i64* @_gasrem store [3 x i8] c"\AB\09\FE", [3 x i8]* %"$expr_0" - %"$$expr_0_37" = load [3 x i8], [3 x i8]* %"$expr_0" - ret [3 x i8] %"$$expr_0_37" + %"$$expr_0_42" = load [3 x i8], [3 x i8]* %"$expr_0" + ret [3 x i8] %"$$expr_0_42" } +declare void @_out_of_gas() + declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_38" = call [3 x i8] @"$scilla_expr_36"(i8* null) - %"$pval_39" = alloca [3 x i8] - %"$memvoidcast_40" = bitcast [3 x i8]* %"$pval_39" to i8* - store [3 x i8] %"$exprval_38", [3 x i8]* %"$pval_39" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Bystr3_31", i8* %"$memvoidcast_40") + %"$exprval_43" = call [3 x i8] @"$scilla_expr_36"(i8* null) + %"$pval_44" = alloca [3 x i8] + %"$memvoidcast_45" = bitcast [3 x i8]* %"$pval_44" to i8* + store [3 x i8] %"$exprval_43", [3 x i8]* %"$pval_44" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Bystr3_31", i8* %"$memvoidcast_45") ret void } diff --git a/testsuite/expr/lit-bystr3.ll.result b/testsuite/expr/lit-bystr3.ll.result index 10bfce9c..c74950b0 100644 --- a/testsuite/expr/lit-bystr3.ll.result +++ b/testsuite/expr/lit-bystr3.ll.result @@ -1 +1,2 @@ 0xab09fe : ByStr3 +Gas remaining: 9999999 diff --git a/testsuite/expr/lit-emp_i32_i32.ll b/testsuite/expr/lit-emp_i32_i32.ll index 90726d6f..9d5e739c 100644 --- a/testsuite/expr/lit-emp_i32_i32.ll +++ b/testsuite/expr/lit-emp_i32_i32.ll @@ -11,6 +11,7 @@ target triple = "x86_64-pc-linux-gnu" %Int32 = type { i32 } @_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 } @@ -50,22 +51,35 @@ entry: define internal %Map_Int32_Int32* @"$scilla_expr_36"(i8* %0) { entry: %"$expr_0" = alloca %Map_Int32_Int32* - %"$execptr_load_37" = load i8*, i8** @_execptr - %"$_new_empty_map_call_38" = call i8* @_new_empty_map(i8* %"$execptr_load_37") - %"$Emp_39" = bitcast i8* %"$_new_empty_map_call_38" to %Map_Int32_Int32* - store %Map_Int32_Int32* %"$Emp_39", %Map_Int32_Int32** %"$expr_0" - %"$$expr_0_40" = load %Map_Int32_Int32*, %Map_Int32_Int32** %"$expr_0" - ret %Map_Int32_Int32* %"$$expr_0_40" + %"$gasrem_37" = load i64, i64* @_gasrem + %"$gascmp_38" = icmp ugt i64 1, %"$gasrem_37" + br i1 %"$gascmp_38", label %"$out_of_gas_39", label %"$have_gas_40" + +"$out_of_gas_39": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_40" + +"$have_gas_40": ; preds = %"$out_of_gas_39", %entry + %"$consume_41" = sub i64 %"$gasrem_37", 1 + store i64 %"$consume_41", i64* @_gasrem + %"$execptr_load_42" = load i8*, i8** @_execptr + %"$_new_empty_map_call_43" = call i8* @_new_empty_map(i8* %"$execptr_load_42") + %"$Emp_44" = bitcast i8* %"$_new_empty_map_call_43" to %Map_Int32_Int32* + store %Map_Int32_Int32* %"$Emp_44", %Map_Int32_Int32** %"$expr_0" + %"$$expr_0_45" = load %Map_Int32_Int32*, %Map_Int32_Int32** %"$expr_0" + ret %Map_Int32_Int32* %"$$expr_0_45" } +declare void @_out_of_gas() + declare i8* @_new_empty_map(i8*) declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_41" = call %Map_Int32_Int32* @"$scilla_expr_36"(i8* null) - %"$memvoidcast_42" = bitcast %Map_Int32_Int32* %"$exprval_41" to i8* - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Map_34", i8* %"$memvoidcast_42") + %"$exprval_46" = call %Map_Int32_Int32* @"$scilla_expr_36"(i8* null) + %"$memvoidcast_47" = bitcast %Map_Int32_Int32* %"$exprval_46" to i8* + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Map_34", i8* %"$memvoidcast_47") ret void } diff --git a/testsuite/expr/lit-emp_i32_i32.ll.result b/testsuite/expr/lit-emp_i32_i32.ll.result index 825dea8a..543090fc 100644 --- a/testsuite/expr/lit-emp_i32_i32.ll.result +++ b/testsuite/expr/lit-emp_i32_i32.ll.result @@ -1 +1,2 @@ Emp : Map (Int32) (Int32) +Gas remaining: 9999999 diff --git a/testsuite/expr/lit-emp_i32_list_string.ll b/testsuite/expr/lit-emp_i32_list_string.ll index 54e6385f..d4e639fc 100644 --- a/testsuite/expr/lit-emp_i32_list_string.ll +++ b/testsuite/expr/lit-emp_i32_list_string.ll @@ -19,6 +19,7 @@ target triple = "x86_64-pc-linux-gnu" %CName_Nil_String = 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 } @@ -71,22 +72,35 @@ entry: define internal %"Map_Int32_List_(String)"* @"$scilla_expr_49"(i8* %0) { entry: %"$expr_0" = alloca %"Map_Int32_List_(String)"* - %"$execptr_load_50" = load i8*, i8** @_execptr - %"$_new_empty_map_call_51" = call i8* @_new_empty_map(i8* %"$execptr_load_50") - %"$Emp_52" = bitcast i8* %"$_new_empty_map_call_51" to %"Map_Int32_List_(String)"* - store %"Map_Int32_List_(String)"* %"$Emp_52", %"Map_Int32_List_(String)"** %"$expr_0" - %"$$expr_0_53" = load %"Map_Int32_List_(String)"*, %"Map_Int32_List_(String)"** %"$expr_0" - ret %"Map_Int32_List_(String)"* %"$$expr_0_53" + %"$gasrem_50" = load i64, i64* @_gasrem + %"$gascmp_51" = icmp ugt i64 1, %"$gasrem_50" + br i1 %"$gascmp_51", label %"$out_of_gas_52", label %"$have_gas_53" + +"$out_of_gas_52": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_53" + +"$have_gas_53": ; preds = %"$out_of_gas_52", %entry + %"$consume_54" = sub i64 %"$gasrem_50", 1 + store i64 %"$consume_54", i64* @_gasrem + %"$execptr_load_55" = load i8*, i8** @_execptr + %"$_new_empty_map_call_56" = call i8* @_new_empty_map(i8* %"$execptr_load_55") + %"$Emp_57" = bitcast i8* %"$_new_empty_map_call_56" to %"Map_Int32_List_(String)"* + store %"Map_Int32_List_(String)"* %"$Emp_57", %"Map_Int32_List_(String)"** %"$expr_0" + %"$$expr_0_58" = load %"Map_Int32_List_(String)"*, %"Map_Int32_List_(String)"** %"$expr_0" + ret %"Map_Int32_List_(String)"* %"$$expr_0_58" } +declare void @_out_of_gas() + declare i8* @_new_empty_map(i8*) declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_54" = call %"Map_Int32_List_(String)"* @"$scilla_expr_49"(i8* null) - %"$memvoidcast_55" = bitcast %"Map_Int32_List_(String)"* %"$exprval_54" to i8* - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Map_35", i8* %"$memvoidcast_55") + %"$exprval_59" = call %"Map_Int32_List_(String)"* @"$scilla_expr_49"(i8* null) + %"$memvoidcast_60" = bitcast %"Map_Int32_List_(String)"* %"$exprval_59" to i8* + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Map_35", i8* %"$memvoidcast_60") ret void } diff --git a/testsuite/expr/lit-emp_i32_list_string.ll.result b/testsuite/expr/lit-emp_i32_list_string.ll.result index 6b52a017..d8d52328 100644 --- a/testsuite/expr/lit-emp_i32_list_string.ll.result +++ b/testsuite/expr/lit-emp_i32_list_string.ll.result @@ -1 +1,2 @@ Emp : Map (Int32) (List (String)) +Gas remaining: 9999999 diff --git a/testsuite/expr/lit-i256-4.ll b/testsuite/expr/lit-i256-4.ll index c7c5eddb..feced998 100644 --- a/testsuite/expr/lit-i256-4.ll +++ b/testsuite/expr/lit-i256-4.ll @@ -9,6 +9,7 @@ target triple = "x86_64-pc-linux-gnu" %Int256 = type { i256 } @_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 } @@ -46,19 +47,32 @@ entry: define internal void @"$scilla_expr_34"(i8* %0, %Int256* %1) { entry: %"$expr_0" = alloca %Int256 + %"$gasrem_35" = load i64, i64* @_gasrem + %"$gascmp_36" = icmp ugt i64 1, %"$gasrem_35" + br i1 %"$gascmp_36", label %"$out_of_gas_37", label %"$have_gas_38" + +"$out_of_gas_37": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_38" + +"$have_gas_38": ; preds = %"$out_of_gas_37", %entry + %"$consume_39" = sub i64 %"$gasrem_35", 1 + store i64 %"$consume_39", i64* @_gasrem store %Int256 { i256 4 }, %Int256* %"$expr_0" - %"$$expr_0_35" = load %Int256, %Int256* %"$expr_0" - store %Int256 %"$$expr_0_35", %Int256* %1 + %"$$expr_0_40" = load %Int256, %Int256* %"$expr_0" + store %Int256 %"$$expr_0_40", %Int256* %1 ret void } +declare void @_out_of_gas() + declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$mainval_36" = alloca %Int256 - %"$memvoidcast_37" = bitcast %Int256* %"$mainval_36" to i8* - call void @"$scilla_expr_34"(i8* null, %Int256* %"$mainval_36") - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int256_15", i8* %"$memvoidcast_37") + %"$mainval_41" = alloca %Int256 + %"$memvoidcast_42" = bitcast %Int256* %"$mainval_41" to i8* + call void @"$scilla_expr_34"(i8* null, %Int256* %"$mainval_41") + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int256_15", i8* %"$memvoidcast_42") ret void } diff --git a/testsuite/expr/lit-i256-4.ll.result b/testsuite/expr/lit-i256-4.ll.result index 0ef66fcd..14abf3f1 100644 --- a/testsuite/expr/lit-i256-4.ll.result +++ b/testsuite/expr/lit-i256-4.ll.result @@ -1 +1,2 @@ 4 : Int256 +Gas remaining: 9999999 diff --git a/testsuite/expr/lit-i256-max.ll b/testsuite/expr/lit-i256-max.ll index d3deada0..4cd6c4a2 100644 --- a/testsuite/expr/lit-i256-max.ll +++ b/testsuite/expr/lit-i256-max.ll @@ -9,6 +9,7 @@ target triple = "x86_64-pc-linux-gnu" %Int256 = type { i256 } @_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 } @@ -46,19 +47,32 @@ entry: define internal void @"$scilla_expr_34"(i8* %0, %Int256* %1) { entry: %"$expr_0" = alloca %Int256 + %"$gasrem_35" = load i64, i64* @_gasrem + %"$gascmp_36" = icmp ugt i64 1, %"$gasrem_35" + br i1 %"$gascmp_36", label %"$out_of_gas_37", label %"$have_gas_38" + +"$out_of_gas_37": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_38" + +"$have_gas_38": ; preds = %"$out_of_gas_37", %entry + %"$consume_39" = sub i64 %"$gasrem_35", 1 + store i64 %"$consume_39", i64* @_gasrem store %Int256 { i256 57896044618658097711785492504343953926634992332820282019728792003956564819967 }, %Int256* %"$expr_0" - %"$$expr_0_35" = load %Int256, %Int256* %"$expr_0" - store %Int256 %"$$expr_0_35", %Int256* %1 + %"$$expr_0_40" = load %Int256, %Int256* %"$expr_0" + store %Int256 %"$$expr_0_40", %Int256* %1 ret void } +declare void @_out_of_gas() + declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$mainval_36" = alloca %Int256 - %"$memvoidcast_37" = bitcast %Int256* %"$mainval_36" to i8* - call void @"$scilla_expr_34"(i8* null, %Int256* %"$mainval_36") - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int256_15", i8* %"$memvoidcast_37") + %"$mainval_41" = alloca %Int256 + %"$memvoidcast_42" = bitcast %Int256* %"$mainval_41" to i8* + call void @"$scilla_expr_34"(i8* null, %Int256* %"$mainval_41") + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int256_15", i8* %"$memvoidcast_42") ret void } diff --git a/testsuite/expr/lit-i256-max.ll.result b/testsuite/expr/lit-i256-max.ll.result index 2be4311b..5cb19a81 100644 --- a/testsuite/expr/lit-i256-max.ll.result +++ b/testsuite/expr/lit-i256-max.ll.result @@ -1 +1,2 @@ 57896044618658097711785492504343953926634992332820282019728792003956564819967 : Int256 +Gas remaining: 9999999 diff --git a/testsuite/expr/lit-i256-min.ll b/testsuite/expr/lit-i256-min.ll index 60dbd149..81a99df3 100644 --- a/testsuite/expr/lit-i256-min.ll +++ b/testsuite/expr/lit-i256-min.ll @@ -9,6 +9,7 @@ target triple = "x86_64-pc-linux-gnu" %Int256 = type { i256 } @_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 } @@ -46,19 +47,32 @@ entry: define internal void @"$scilla_expr_34"(i8* %0, %Int256* %1) { entry: %"$expr_0" = alloca %Int256 + %"$gasrem_35" = load i64, i64* @_gasrem + %"$gascmp_36" = icmp ugt i64 1, %"$gasrem_35" + br i1 %"$gascmp_36", label %"$out_of_gas_37", label %"$have_gas_38" + +"$out_of_gas_37": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_38" + +"$have_gas_38": ; preds = %"$out_of_gas_37", %entry + %"$consume_39" = sub i64 %"$gasrem_35", 1 + store i64 %"$consume_39", i64* @_gasrem store %Int256 { i256 -57896044618658097711785492504343953926634992332820282019728792003956564819968 }, %Int256* %"$expr_0" - %"$$expr_0_35" = load %Int256, %Int256* %"$expr_0" - store %Int256 %"$$expr_0_35", %Int256* %1 + %"$$expr_0_40" = load %Int256, %Int256* %"$expr_0" + store %Int256 %"$$expr_0_40", %Int256* %1 ret void } +declare void @_out_of_gas() + declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$mainval_36" = alloca %Int256 - %"$memvoidcast_37" = bitcast %Int256* %"$mainval_36" to i8* - call void @"$scilla_expr_34"(i8* null, %Int256* %"$mainval_36") - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int256_15", i8* %"$memvoidcast_37") + %"$mainval_41" = alloca %Int256 + %"$memvoidcast_42" = bitcast %Int256* %"$mainval_41" to i8* + call void @"$scilla_expr_34"(i8* null, %Int256* %"$mainval_41") + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int256_15", i8* %"$memvoidcast_42") ret void } diff --git a/testsuite/expr/lit-i256-min.ll.result b/testsuite/expr/lit-i256-min.ll.result index 1d4c7960..1555c544 100644 --- a/testsuite/expr/lit-i256-min.ll.result +++ b/testsuite/expr/lit-i256-min.ll.result @@ -1 +1,2 @@ -57896044618658097711785492504343953926634992332820282019728792003956564819968 : Int256 +Gas remaining: 9999999 diff --git a/testsuite/expr/lit-int32-1.ll b/testsuite/expr/lit-int32-1.ll index 077d2c10..e95ec24f 100644 --- a/testsuite/expr/lit-int32-1.ll +++ b/testsuite/expr/lit-int32-1.ll @@ -9,6 +9,7 @@ target triple = "x86_64-pc-linux-gnu" %Int32 = type { i32 } @_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 } @@ -46,19 +47,32 @@ entry: define internal %Int32 @"$scilla_expr_34"(i8* %0) { entry: %"$expr_0" = alloca %Int32 + %"$gasrem_35" = load i64, i64* @_gasrem + %"$gascmp_36" = icmp ugt i64 1, %"$gasrem_35" + br i1 %"$gascmp_36", label %"$out_of_gas_37", label %"$have_gas_38" + +"$out_of_gas_37": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_38" + +"$have_gas_38": ; preds = %"$out_of_gas_37", %entry + %"$consume_39" = sub i64 %"$gasrem_35", 1 + store i64 %"$consume_39", i64* @_gasrem store %Int32 { i32 -1 }, %Int32* %"$expr_0" - %"$$expr_0_35" = load %Int32, %Int32* %"$expr_0" - ret %Int32 %"$$expr_0_35" + %"$$expr_0_40" = load %Int32, %Int32* %"$expr_0" + ret %Int32 %"$$expr_0_40" } +declare void @_out_of_gas() + declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_36" = call %Int32 @"$scilla_expr_34"(i8* null) - %"$pval_37" = alloca %Int32 - %"$memvoidcast_38" = bitcast %Int32* %"$pval_37" to i8* - store %Int32 %"$exprval_36", %Int32* %"$pval_37" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_3", i8* %"$memvoidcast_38") + %"$exprval_41" = call %Int32 @"$scilla_expr_34"(i8* null) + %"$pval_42" = alloca %Int32 + %"$memvoidcast_43" = bitcast %Int32* %"$pval_42" to i8* + store %Int32 %"$exprval_41", %Int32* %"$pval_42" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_3", i8* %"$memvoidcast_43") ret void } diff --git a/testsuite/expr/lit-int32-1.ll.result b/testsuite/expr/lit-int32-1.ll.result index 43848b31..4cfe46bb 100644 --- a/testsuite/expr/lit-int32-1.ll.result +++ b/testsuite/expr/lit-int32-1.ll.result @@ -1 +1,2 @@ -1 : Int32 +Gas remaining: 9999999 diff --git a/testsuite/expr/lit-int32.ll b/testsuite/expr/lit-int32.ll index 760c5967..a8ed45b8 100644 --- a/testsuite/expr/lit-int32.ll +++ b/testsuite/expr/lit-int32.ll @@ -9,6 +9,7 @@ target triple = "x86_64-pc-linux-gnu" %Int32 = type { i32 } @_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 } @@ -46,19 +47,32 @@ entry: define internal %Int32 @"$scilla_expr_34"(i8* %0) { entry: %"$expr_0" = alloca %Int32 + %"$gasrem_35" = load i64, i64* @_gasrem + %"$gascmp_36" = icmp ugt i64 1, %"$gasrem_35" + br i1 %"$gascmp_36", label %"$out_of_gas_37", label %"$have_gas_38" + +"$out_of_gas_37": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_38" + +"$have_gas_38": ; preds = %"$out_of_gas_37", %entry + %"$consume_39" = sub i64 %"$gasrem_35", 1 + store i64 %"$consume_39", i64* @_gasrem store %Int32 { i32 4 }, %Int32* %"$expr_0" - %"$$expr_0_35" = load %Int32, %Int32* %"$expr_0" - ret %Int32 %"$$expr_0_35" + %"$$expr_0_40" = load %Int32, %Int32* %"$expr_0" + ret %Int32 %"$$expr_0_40" } +declare void @_out_of_gas() + declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_36" = call %Int32 @"$scilla_expr_34"(i8* null) - %"$pval_37" = alloca %Int32 - %"$memvoidcast_38" = bitcast %Int32* %"$pval_37" to i8* - store %Int32 %"$exprval_36", %Int32* %"$pval_37" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_3", i8* %"$memvoidcast_38") + %"$exprval_41" = call %Int32 @"$scilla_expr_34"(i8* null) + %"$pval_42" = alloca %Int32 + %"$memvoidcast_43" = bitcast %Int32* %"$pval_42" to i8* + store %Int32 %"$exprval_41", %Int32* %"$pval_42" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_3", i8* %"$memvoidcast_43") ret void } diff --git a/testsuite/expr/lit-int32.ll.result b/testsuite/expr/lit-int32.ll.result index 130f6e60..5a9c1967 100644 --- a/testsuite/expr/lit-int32.ll.result +++ b/testsuite/expr/lit-int32.ll.result @@ -1 +1,2 @@ 4 : Int32 +Gas remaining: 9999999 diff --git a/testsuite/expr/lit-nat_two.ll b/testsuite/expr/lit-nat_two.ll index 2c5a1754..43d6fa1f 100644 --- a/testsuite/expr/lit-nat_two.ll +++ b/testsuite/expr/lit-nat_two.ll @@ -18,6 +18,7 @@ target triple = "x86_64-pc-linux-gnu" %CName_Succ = type <{ i8, %TName_Nat* }> @_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 } @@ -68,50 +69,129 @@ entry: define internal %TName_Nat* @"$scilla_expr_47"(i8* %0) { entry: %"$expr_0" = alloca %TName_Nat* + %"$gasrem_48" = load i64, i64* @_gasrem + %"$gascmp_49" = icmp ugt i64 1, %"$gasrem_48" + br i1 %"$gascmp_49", label %"$out_of_gas_50", label %"$have_gas_51" + +"$out_of_gas_50": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_51" + +"$have_gas_51": ; preds = %"$out_of_gas_50", %entry + %"$consume_52" = sub i64 %"$gasrem_48", 1 + store i64 %"$consume_52", i64* @_gasrem %zero = alloca %TName_Nat* - %"$adtval_48_load" = load i8*, i8** @_execptr - %"$adtval_48_salloc" = call i8* @_salloc(i8* %"$adtval_48_load", i64 1) - %"$adtval_48" = bitcast i8* %"$adtval_48_salloc" to %CName_Zero* - %"$adtgep_49" = getelementptr inbounds %CName_Zero, %CName_Zero* %"$adtval_48", i32 0, i32 0 - store i8 0, i8* %"$adtgep_49" - %"$adtptr_50" = bitcast %CName_Zero* %"$adtval_48" to %TName_Nat* - store %TName_Nat* %"$adtptr_50", %TName_Nat** %zero + %"$gasrem_53" = load i64, i64* @_gasrem + %"$gascmp_54" = icmp ugt i64 1, %"$gasrem_53" + br i1 %"$gascmp_54", label %"$out_of_gas_55", label %"$have_gas_56" + +"$out_of_gas_55": ; preds = %"$have_gas_51" + call void @_out_of_gas() + br label %"$have_gas_56" + +"$have_gas_56": ; preds = %"$out_of_gas_55", %"$have_gas_51" + %"$consume_57" = sub i64 %"$gasrem_53", 1 + store i64 %"$consume_57", i64* @_gasrem + %"$adtval_58_load" = load i8*, i8** @_execptr + %"$adtval_58_salloc" = call i8* @_salloc(i8* %"$adtval_58_load", i64 1) + %"$adtval_58" = bitcast i8* %"$adtval_58_salloc" to %CName_Zero* + %"$adtgep_59" = getelementptr inbounds %CName_Zero, %CName_Zero* %"$adtval_58", i32 0, i32 0 + store i8 0, i8* %"$adtgep_59" + %"$adtptr_60" = bitcast %CName_Zero* %"$adtval_58" to %TName_Nat* + store %TName_Nat* %"$adtptr_60", %TName_Nat** %zero + %"$gasrem_61" = load i64, i64* @_gasrem + %"$gascmp_62" = icmp ugt i64 1, %"$gasrem_61" + br i1 %"$gascmp_62", label %"$out_of_gas_63", label %"$have_gas_64" + +"$out_of_gas_63": ; preds = %"$have_gas_56" + call void @_out_of_gas() + br label %"$have_gas_64" + +"$have_gas_64": ; preds = %"$out_of_gas_63", %"$have_gas_56" + %"$consume_65" = sub i64 %"$gasrem_61", 1 + store i64 %"$consume_65", i64* @_gasrem %one = alloca %TName_Nat* - %"$zero_51" = load %TName_Nat*, %TName_Nat** %zero - %"$adtval_52_load" = load i8*, i8** @_execptr - %"$adtval_52_salloc" = call i8* @_salloc(i8* %"$adtval_52_load", i64 9) - %"$adtval_52" = bitcast i8* %"$adtval_52_salloc" to %CName_Succ* - %"$adtgep_53" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_52", i32 0, i32 0 - store i8 1, i8* %"$adtgep_53" - %"$adtgep_54" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_52", i32 0, i32 1 - store %TName_Nat* %"$zero_51", %TName_Nat** %"$adtgep_54" - %"$adtptr_55" = bitcast %CName_Succ* %"$adtval_52" to %TName_Nat* - store %TName_Nat* %"$adtptr_55", %TName_Nat** %one + %"$gasrem_66" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_64" + call void @_out_of_gas() + br label %"$have_gas_69" + +"$have_gas_69": ; preds = %"$out_of_gas_68", %"$have_gas_64" + %"$consume_70" = sub i64 %"$gasrem_66", 1 + store i64 %"$consume_70", i64* @_gasrem + %"$zero_71" = load %TName_Nat*, %TName_Nat** %zero + %"$adtval_72_load" = load i8*, i8** @_execptr + %"$adtval_72_salloc" = call i8* @_salloc(i8* %"$adtval_72_load", i64 9) + %"$adtval_72" = bitcast i8* %"$adtval_72_salloc" to %CName_Succ* + %"$adtgep_73" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_72", i32 0, i32 0 + store i8 1, i8* %"$adtgep_73" + %"$adtgep_74" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_72", i32 0, i32 1 + store %TName_Nat* %"$zero_71", %TName_Nat** %"$adtgep_74" + %"$adtptr_75" = bitcast %CName_Succ* %"$adtval_72" to %TName_Nat* + store %TName_Nat* %"$adtptr_75", %TName_Nat** %one + %"$gasrem_76" = load i64, i64* @_gasrem + %"$gascmp_77" = icmp ugt i64 1, %"$gasrem_76" + br i1 %"$gascmp_77", label %"$out_of_gas_78", label %"$have_gas_79" + +"$out_of_gas_78": ; preds = %"$have_gas_69" + call void @_out_of_gas() + br label %"$have_gas_79" + +"$have_gas_79": ; preds = %"$out_of_gas_78", %"$have_gas_69" + %"$consume_80" = sub i64 %"$gasrem_76", 1 + store i64 %"$consume_80", i64* @_gasrem %two = alloca %TName_Nat* - %"$one_56" = load %TName_Nat*, %TName_Nat** %one - %"$adtval_57_load" = load i8*, i8** @_execptr - %"$adtval_57_salloc" = call i8* @_salloc(i8* %"$adtval_57_load", i64 9) - %"$adtval_57" = bitcast i8* %"$adtval_57_salloc" to %CName_Succ* - %"$adtgep_58" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_57", i32 0, i32 0 - store i8 1, i8* %"$adtgep_58" - %"$adtgep_59" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_57", i32 0, i32 1 - store %TName_Nat* %"$one_56", %TName_Nat** %"$adtgep_59" - %"$adtptr_60" = bitcast %CName_Succ* %"$adtval_57" to %TName_Nat* - store %TName_Nat* %"$adtptr_60", %TName_Nat** %two - %"$two_61" = load %TName_Nat*, %TName_Nat** %two - store %TName_Nat* %"$two_61", %TName_Nat** %"$expr_0" - %"$$expr_0_62" = load %TName_Nat*, %TName_Nat** %"$expr_0" - ret %TName_Nat* %"$$expr_0_62" + %"$gasrem_81" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_79" + call void @_out_of_gas() + br label %"$have_gas_84" + +"$have_gas_84": ; preds = %"$out_of_gas_83", %"$have_gas_79" + %"$consume_85" = sub i64 %"$gasrem_81", 1 + store i64 %"$consume_85", i64* @_gasrem + %"$one_86" = load %TName_Nat*, %TName_Nat** %one + %"$adtval_87_load" = load i8*, i8** @_execptr + %"$adtval_87_salloc" = call i8* @_salloc(i8* %"$adtval_87_load", i64 9) + %"$adtval_87" = bitcast i8* %"$adtval_87_salloc" to %CName_Succ* + %"$adtgep_88" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_87", i32 0, i32 0 + store i8 1, i8* %"$adtgep_88" + %"$adtgep_89" = getelementptr inbounds %CName_Succ, %CName_Succ* %"$adtval_87", i32 0, i32 1 + store %TName_Nat* %"$one_86", %TName_Nat** %"$adtgep_89" + %"$adtptr_90" = bitcast %CName_Succ* %"$adtval_87" to %TName_Nat* + store %TName_Nat* %"$adtptr_90", %TName_Nat** %two + %"$gasrem_91" = load i64, i64* @_gasrem + %"$gascmp_92" = icmp ugt i64 1, %"$gasrem_91" + br i1 %"$gascmp_92", label %"$out_of_gas_93", label %"$have_gas_94" + +"$out_of_gas_93": ; preds = %"$have_gas_84" + call void @_out_of_gas() + br label %"$have_gas_94" + +"$have_gas_94": ; preds = %"$out_of_gas_93", %"$have_gas_84" + %"$consume_95" = sub i64 %"$gasrem_91", 1 + store i64 %"$consume_95", i64* @_gasrem + %"$two_96" = load %TName_Nat*, %TName_Nat** %two + store %TName_Nat* %"$two_96", %TName_Nat** %"$expr_0" + %"$$expr_0_97" = load %TName_Nat*, %TName_Nat** %"$expr_0" + ret %TName_Nat* %"$$expr_0_97" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_63" = call %TName_Nat* @"$scilla_expr_47"(i8* null) - %"$memvoidcast_64" = bitcast %TName_Nat* %"$exprval_63" to i8* - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_Nat_33", i8* %"$memvoidcast_64") + %"$exprval_98" = call %TName_Nat* @"$scilla_expr_47"(i8* null) + %"$memvoidcast_99" = bitcast %TName_Nat* %"$exprval_98" to i8* + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_Nat_33", i8* %"$memvoidcast_99") ret void } diff --git a/testsuite/expr/lit-nat_two.ll.result b/testsuite/expr/lit-nat_two.ll.result index b70f0fcc..077328f8 100644 --- a/testsuite/expr/lit-nat_two.ll.result +++ b/testsuite/expr/lit-nat_two.ll.result @@ -1 +1,2 @@ Succ(Succ(Zero : Nat) : Nat) : Nat +Gas remaining: 9999993 diff --git a/testsuite/expr/lit-nat_zero.ll b/testsuite/expr/lit-nat_zero.ll index 0fbba313..f37c476a 100644 --- a/testsuite/expr/lit-nat_zero.ll +++ b/testsuite/expr/lit-nat_zero.ll @@ -15,6 +15,7 @@ target triple = "x86_64-pc-linux-gnu" %CName_Succ = type <{ i8, %TName_Nat* }> @_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 } @@ -65,25 +66,38 @@ entry: define internal %TName_Nat* @"$scilla_expr_47"(i8* %0) { entry: %"$expr_0" = alloca %TName_Nat* - %"$adtval_48_load" = load i8*, i8** @_execptr - %"$adtval_48_salloc" = call i8* @_salloc(i8* %"$adtval_48_load", i64 1) - %"$adtval_48" = bitcast i8* %"$adtval_48_salloc" to %CName_Zero* - %"$adtgep_49" = getelementptr inbounds %CName_Zero, %CName_Zero* %"$adtval_48", i32 0, i32 0 - store i8 0, i8* %"$adtgep_49" - %"$adtptr_50" = bitcast %CName_Zero* %"$adtval_48" to %TName_Nat* - store %TName_Nat* %"$adtptr_50", %TName_Nat** %"$expr_0" - %"$$expr_0_51" = load %TName_Nat*, %TName_Nat** %"$expr_0" - ret %TName_Nat* %"$$expr_0_51" + %"$gasrem_48" = load i64, i64* @_gasrem + %"$gascmp_49" = icmp ugt i64 1, %"$gasrem_48" + br i1 %"$gascmp_49", label %"$out_of_gas_50", label %"$have_gas_51" + +"$out_of_gas_50": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_51" + +"$have_gas_51": ; preds = %"$out_of_gas_50", %entry + %"$consume_52" = sub i64 %"$gasrem_48", 1 + store i64 %"$consume_52", i64* @_gasrem + %"$adtval_53_load" = load i8*, i8** @_execptr + %"$adtval_53_salloc" = call i8* @_salloc(i8* %"$adtval_53_load", i64 1) + %"$adtval_53" = bitcast i8* %"$adtval_53_salloc" to %CName_Zero* + %"$adtgep_54" = getelementptr inbounds %CName_Zero, %CName_Zero* %"$adtval_53", i32 0, i32 0 + store i8 0, i8* %"$adtgep_54" + %"$adtptr_55" = bitcast %CName_Zero* %"$adtval_53" to %TName_Nat* + store %TName_Nat* %"$adtptr_55", %TName_Nat** %"$expr_0" + %"$$expr_0_56" = load %TName_Nat*, %TName_Nat** %"$expr_0" + ret %TName_Nat* %"$$expr_0_56" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_52" = call %TName_Nat* @"$scilla_expr_47"(i8* null) - %"$memvoidcast_53" = bitcast %TName_Nat* %"$exprval_52" to i8* - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_Nat_33", i8* %"$memvoidcast_53") + %"$exprval_57" = call %TName_Nat* @"$scilla_expr_47"(i8* null) + %"$memvoidcast_58" = bitcast %TName_Nat* %"$exprval_57" to i8* + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_Nat_33", i8* %"$memvoidcast_58") ret void } diff --git a/testsuite/expr/lit-nat_zero.ll.result b/testsuite/expr/lit-nat_zero.ll.result index 7135f08d..7aca0df4 100644 --- a/testsuite/expr/lit-nat_zero.ll.result +++ b/testsuite/expr/lit-nat_zero.ll.result @@ -1 +1,2 @@ Zero : Nat +Gas remaining: 9999999 diff --git a/testsuite/expr/lit-nil.ll b/testsuite/expr/lit-nil.ll index c119112c..4e0a2aa8 100644 --- a/testsuite/expr/lit-nil.ll +++ b/testsuite/expr/lit-nil.ll @@ -16,6 +16,7 @@ target triple = "x86_64-pc-linux-gnu" %CName_Nil_Int32 = 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 } @@ -66,25 +67,38 @@ entry: define internal %TName_List_Int32* @"$scilla_expr_47"(i8* %0) { entry: %"$expr_0" = alloca %TName_List_Int32* - %"$adtval_48_load" = load i8*, i8** @_execptr - %"$adtval_48_salloc" = call i8* @_salloc(i8* %"$adtval_48_load", i64 1) - %"$adtval_48" = bitcast i8* %"$adtval_48_salloc" to %CName_Nil_Int32* - %"$adtgep_49" = getelementptr inbounds %CName_Nil_Int32, %CName_Nil_Int32* %"$adtval_48", i32 0, i32 0 - store i8 1, i8* %"$adtgep_49" - %"$adtptr_50" = bitcast %CName_Nil_Int32* %"$adtval_48" to %TName_List_Int32* - store %TName_List_Int32* %"$adtptr_50", %TName_List_Int32** %"$expr_0" - %"$$expr_0_51" = load %TName_List_Int32*, %TName_List_Int32** %"$expr_0" - ret %TName_List_Int32* %"$$expr_0_51" + %"$gasrem_48" = load i64, i64* @_gasrem + %"$gascmp_49" = icmp ugt i64 1, %"$gasrem_48" + br i1 %"$gascmp_49", label %"$out_of_gas_50", label %"$have_gas_51" + +"$out_of_gas_50": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_51" + +"$have_gas_51": ; preds = %"$out_of_gas_50", %entry + %"$consume_52" = sub i64 %"$gasrem_48", 1 + store i64 %"$consume_52", i64* @_gasrem + %"$adtval_53_load" = load i8*, i8** @_execptr + %"$adtval_53_salloc" = call i8* @_salloc(i8* %"$adtval_53_load", i64 1) + %"$adtval_53" = bitcast i8* %"$adtval_53_salloc" to %CName_Nil_Int32* + %"$adtgep_54" = getelementptr inbounds %CName_Nil_Int32, %CName_Nil_Int32* %"$adtval_53", i32 0, i32 0 + store i8 1, i8* %"$adtgep_54" + %"$adtptr_55" = bitcast %CName_Nil_Int32* %"$adtval_53" to %TName_List_Int32* + store %TName_List_Int32* %"$adtptr_55", %TName_List_Int32** %"$expr_0" + %"$$expr_0_56" = load %TName_List_Int32*, %TName_List_Int32** %"$expr_0" + ret %TName_List_Int32* %"$$expr_0_56" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_52" = call %TName_List_Int32* @"$scilla_expr_47"(i8* null) - %"$memvoidcast_53" = bitcast %TName_List_Int32* %"$exprval_52" to i8* - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Int32_33", i8* %"$memvoidcast_53") + %"$exprval_57" = call %TName_List_Int32* @"$scilla_expr_47"(i8* null) + %"$memvoidcast_58" = bitcast %TName_List_Int32* %"$exprval_57" to i8* + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Int32_33", i8* %"$memvoidcast_58") ret void } diff --git a/testsuite/expr/lit-nil.ll.result b/testsuite/expr/lit-nil.ll.result index a89754cd..542253e2 100644 --- a/testsuite/expr/lit-nil.ll.result +++ b/testsuite/expr/lit-nil.ll.result @@ -1 +1,2 @@ Nil : List (Int32) +Gas remaining: 9999999 diff --git a/testsuite/expr/lit-pair-list-int.ll b/testsuite/expr/lit-pair-list-int.ll index 87ab2d77..1bb5f598 100644 --- a/testsuite/expr/lit-pair-list-int.ll +++ b/testsuite/expr/lit-pair-list-int.ll @@ -28,6 +28,7 @@ target triple = "x86_64-pc-linux-gnu" %CName_Nil_Uint32 = 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 } @@ -98,79 +99,224 @@ entry: define internal %"TName_Pair_List_(Int32)_List_(Uint32)"* @"$scilla_expr_67"(i8* %0) { entry: %"$expr_0" = alloca %"TName_Pair_List_(Int32)_List_(Uint32)"* + %"$gasrem_68" = load i64, i64* @_gasrem + %"$gascmp_69" = icmp ugt i64 1, %"$gasrem_68" + br i1 %"$gascmp_69", label %"$out_of_gas_70", label %"$have_gas_71" + +"$out_of_gas_70": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_71" + +"$have_gas_71": ; preds = %"$out_of_gas_70", %entry + %"$consume_72" = sub i64 %"$gasrem_68", 1 + store i64 %"$consume_72", i64* @_gasrem %nil_int32 = alloca %TName_List_Int32* - %"$adtval_68_load" = load i8*, i8** @_execptr - %"$adtval_68_salloc" = call i8* @_salloc(i8* %"$adtval_68_load", i64 1) - %"$adtval_68" = bitcast i8* %"$adtval_68_salloc" to %CName_Nil_Int32* - %"$adtgep_69" = getelementptr inbounds %CName_Nil_Int32, %CName_Nil_Int32* %"$adtval_68", i32 0, i32 0 - store i8 1, i8* %"$adtgep_69" - %"$adtptr_70" = bitcast %CName_Nil_Int32* %"$adtval_68" to %TName_List_Int32* - store %TName_List_Int32* %"$adtptr_70", %TName_List_Int32** %nil_int32 + %"$gasrem_73" = load i64, i64* @_gasrem + %"$gascmp_74" = icmp ugt i64 1, %"$gasrem_73" + br i1 %"$gascmp_74", label %"$out_of_gas_75", label %"$have_gas_76" + +"$out_of_gas_75": ; preds = %"$have_gas_71" + call void @_out_of_gas() + br label %"$have_gas_76" + +"$have_gas_76": ; preds = %"$out_of_gas_75", %"$have_gas_71" + %"$consume_77" = sub i64 %"$gasrem_73", 1 + store i64 %"$consume_77", i64* @_gasrem + %"$adtval_78_load" = load i8*, i8** @_execptr + %"$adtval_78_salloc" = call i8* @_salloc(i8* %"$adtval_78_load", i64 1) + %"$adtval_78" = bitcast i8* %"$adtval_78_salloc" to %CName_Nil_Int32* + %"$adtgep_79" = getelementptr inbounds %CName_Nil_Int32, %CName_Nil_Int32* %"$adtval_78", i32 0, i32 0 + store i8 1, i8* %"$adtgep_79" + %"$adtptr_80" = bitcast %CName_Nil_Int32* %"$adtval_78" to %TName_List_Int32* + store %TName_List_Int32* %"$adtptr_80", %TName_List_Int32** %nil_int32 + %"$gasrem_81" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_76" + call void @_out_of_gas() + br label %"$have_gas_84" + +"$have_gas_84": ; preds = %"$out_of_gas_83", %"$have_gas_76" + %"$consume_85" = sub i64 %"$gasrem_81", 1 + store i64 %"$consume_85", i64* @_gasrem %ione = alloca %Int32 + %"$gasrem_86" = load i64, i64* @_gasrem + %"$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 store %Int32 { i32 1 }, %Int32* %ione + %"$gasrem_91" = load i64, i64* @_gasrem + %"$gascmp_92" = icmp ugt i64 1, %"$gasrem_91" + br i1 %"$gascmp_92", label %"$out_of_gas_93", label %"$have_gas_94" + +"$out_of_gas_93": ; preds = %"$have_gas_89" + call void @_out_of_gas() + br label %"$have_gas_94" + +"$have_gas_94": ; preds = %"$out_of_gas_93", %"$have_gas_89" + %"$consume_95" = sub i64 %"$gasrem_91", 1 + store i64 %"$consume_95", i64* @_gasrem %cons_int32 = alloca %TName_List_Int32* - %"$ione_71" = load %Int32, %Int32* %ione - %"$nil_int32_72" = load %TName_List_Int32*, %TName_List_Int32** %nil_int32 - %"$adtval_73_load" = load i8*, i8** @_execptr - %"$adtval_73_salloc" = call i8* @_salloc(i8* %"$adtval_73_load", i64 13) - %"$adtval_73" = bitcast i8* %"$adtval_73_salloc" to %CName_Cons_Int32* - %"$adtgep_74" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_73", i32 0, i32 0 - store i8 0, i8* %"$adtgep_74" - %"$adtgep_75" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_73", i32 0, i32 1 - store %Int32 %"$ione_71", %Int32* %"$adtgep_75" - %"$adtgep_76" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_73", i32 0, i32 2 - store %TName_List_Int32* %"$nil_int32_72", %TName_List_Int32** %"$adtgep_76" - %"$adtptr_77" = bitcast %CName_Cons_Int32* %"$adtval_73" to %TName_List_Int32* - store %TName_List_Int32* %"$adtptr_77", %TName_List_Int32** %cons_int32 + %"$gasrem_96" = load i64, i64* @_gasrem + %"$gascmp_97" = icmp ugt i64 1, %"$gasrem_96" + br i1 %"$gascmp_97", label %"$out_of_gas_98", label %"$have_gas_99" + +"$out_of_gas_98": ; preds = %"$have_gas_94" + call void @_out_of_gas() + br label %"$have_gas_99" + +"$have_gas_99": ; preds = %"$out_of_gas_98", %"$have_gas_94" + %"$consume_100" = sub i64 %"$gasrem_96", 1 + store i64 %"$consume_100", i64* @_gasrem + %"$ione_101" = load %Int32, %Int32* %ione + %"$nil_int32_102" = load %TName_List_Int32*, %TName_List_Int32** %nil_int32 + %"$adtval_103_load" = load i8*, i8** @_execptr + %"$adtval_103_salloc" = call i8* @_salloc(i8* %"$adtval_103_load", i64 13) + %"$adtval_103" = bitcast i8* %"$adtval_103_salloc" to %CName_Cons_Int32* + %"$adtgep_104" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_103", i32 0, i32 0 + store i8 0, i8* %"$adtgep_104" + %"$adtgep_105" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_103", i32 0, i32 1 + store %Int32 %"$ione_101", %Int32* %"$adtgep_105" + %"$adtgep_106" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_103", i32 0, i32 2 + store %TName_List_Int32* %"$nil_int32_102", %TName_List_Int32** %"$adtgep_106" + %"$adtptr_107" = bitcast %CName_Cons_Int32* %"$adtval_103" to %TName_List_Int32* + store %TName_List_Int32* %"$adtptr_107", %TName_List_Int32** %cons_int32 + %"$gasrem_108" = load i64, i64* @_gasrem + %"$gascmp_109" = icmp ugt i64 1, %"$gasrem_108" + br i1 %"$gascmp_109", label %"$out_of_gas_110", label %"$have_gas_111" + +"$out_of_gas_110": ; preds = %"$have_gas_99" + call void @_out_of_gas() + br label %"$have_gas_111" + +"$have_gas_111": ; preds = %"$out_of_gas_110", %"$have_gas_99" + %"$consume_112" = sub i64 %"$gasrem_108", 1 + store i64 %"$consume_112", i64* @_gasrem %nil_uint32 = alloca %TName_List_Uint32* - %"$adtval_78_load" = load i8*, i8** @_execptr - %"$adtval_78_salloc" = call i8* @_salloc(i8* %"$adtval_78_load", i64 1) - %"$adtval_78" = bitcast i8* %"$adtval_78_salloc" to %CName_Nil_Uint32* - %"$adtgep_79" = getelementptr inbounds %CName_Nil_Uint32, %CName_Nil_Uint32* %"$adtval_78", i32 0, i32 0 - store i8 1, i8* %"$adtgep_79" - %"$adtptr_80" = bitcast %CName_Nil_Uint32* %"$adtval_78" to %TName_List_Uint32* - store %TName_List_Uint32* %"$adtptr_80", %TName_List_Uint32** %nil_uint32 + %"$gasrem_113" = load i64, i64* @_gasrem + %"$gascmp_114" = icmp ugt i64 1, %"$gasrem_113" + br i1 %"$gascmp_114", label %"$out_of_gas_115", label %"$have_gas_116" + +"$out_of_gas_115": ; preds = %"$have_gas_111" + call void @_out_of_gas() + br label %"$have_gas_116" + +"$have_gas_116": ; preds = %"$out_of_gas_115", %"$have_gas_111" + %"$consume_117" = sub i64 %"$gasrem_113", 1 + store i64 %"$consume_117", i64* @_gasrem + %"$adtval_118_load" = load i8*, i8** @_execptr + %"$adtval_118_salloc" = call i8* @_salloc(i8* %"$adtval_118_load", i64 1) + %"$adtval_118" = bitcast i8* %"$adtval_118_salloc" to %CName_Nil_Uint32* + %"$adtgep_119" = getelementptr inbounds %CName_Nil_Uint32, %CName_Nil_Uint32* %"$adtval_118", i32 0, i32 0 + store i8 1, i8* %"$adtgep_119" + %"$adtptr_120" = bitcast %CName_Nil_Uint32* %"$adtval_118" to %TName_List_Uint32* + store %TName_List_Uint32* %"$adtptr_120", %TName_List_Uint32** %nil_uint32 + %"$gasrem_121" = load i64, i64* @_gasrem + %"$gascmp_122" = icmp ugt i64 1, %"$gasrem_121" + br i1 %"$gascmp_122", label %"$out_of_gas_123", label %"$have_gas_124" + +"$out_of_gas_123": ; preds = %"$have_gas_116" + call void @_out_of_gas() + br label %"$have_gas_124" + +"$have_gas_124": ; preds = %"$out_of_gas_123", %"$have_gas_116" + %"$consume_125" = sub i64 %"$gasrem_121", 1 + store i64 %"$consume_125", i64* @_gasrem %uione = alloca %Uint32 + %"$gasrem_126" = load i64, i64* @_gasrem + %"$gascmp_127" = icmp ugt i64 1, %"$gasrem_126" + br i1 %"$gascmp_127", label %"$out_of_gas_128", label %"$have_gas_129" + +"$out_of_gas_128": ; preds = %"$have_gas_124" + call void @_out_of_gas() + br label %"$have_gas_129" + +"$have_gas_129": ; preds = %"$out_of_gas_128", %"$have_gas_124" + %"$consume_130" = sub i64 %"$gasrem_126", 1 + store i64 %"$consume_130", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %uione + %"$gasrem_131" = load i64, i64* @_gasrem + %"$gascmp_132" = icmp ugt i64 1, %"$gasrem_131" + br i1 %"$gascmp_132", label %"$out_of_gas_133", label %"$have_gas_134" + +"$out_of_gas_133": ; preds = %"$have_gas_129" + call void @_out_of_gas() + br label %"$have_gas_134" + +"$have_gas_134": ; preds = %"$out_of_gas_133", %"$have_gas_129" + %"$consume_135" = sub i64 %"$gasrem_131", 1 + store i64 %"$consume_135", i64* @_gasrem %cons_uint32 = alloca %TName_List_Uint32* - %"$uione_81" = load %Uint32, %Uint32* %uione - %"$nil_uint32_82" = load %TName_List_Uint32*, %TName_List_Uint32** %nil_uint32 - %"$adtval_83_load" = load i8*, i8** @_execptr - %"$adtval_83_salloc" = call i8* @_salloc(i8* %"$adtval_83_load", i64 13) - %"$adtval_83" = bitcast i8* %"$adtval_83_salloc" to %CName_Cons_Uint32* - %"$adtgep_84" = getelementptr inbounds %CName_Cons_Uint32, %CName_Cons_Uint32* %"$adtval_83", i32 0, i32 0 - store i8 0, i8* %"$adtgep_84" - %"$adtgep_85" = getelementptr inbounds %CName_Cons_Uint32, %CName_Cons_Uint32* %"$adtval_83", i32 0, i32 1 - store %Uint32 %"$uione_81", %Uint32* %"$adtgep_85" - %"$adtgep_86" = getelementptr inbounds %CName_Cons_Uint32, %CName_Cons_Uint32* %"$adtval_83", i32 0, i32 2 - store %TName_List_Uint32* %"$nil_uint32_82", %TName_List_Uint32** %"$adtgep_86" - %"$adtptr_87" = bitcast %CName_Cons_Uint32* %"$adtval_83" to %TName_List_Uint32* - store %TName_List_Uint32* %"$adtptr_87", %TName_List_Uint32** %cons_uint32 - %"$cons_int32_88" = load %TName_List_Int32*, %TName_List_Int32** %cons_int32 - %"$cons_uint32_89" = load %TName_List_Uint32*, %TName_List_Uint32** %cons_uint32 - %"$adtval_90_load" = load i8*, i8** @_execptr - %"$adtval_90_salloc" = call i8* @_salloc(i8* %"$adtval_90_load", i64 17) - %"$adtval_90" = bitcast i8* %"$adtval_90_salloc" to %"CName_Pair_List_(Int32)_List_(Uint32)"* - %"$adtgep_91" = getelementptr inbounds %"CName_Pair_List_(Int32)_List_(Uint32)", %"CName_Pair_List_(Int32)_List_(Uint32)"* %"$adtval_90", i32 0, i32 0 - store i8 0, i8* %"$adtgep_91" - %"$adtgep_92" = getelementptr inbounds %"CName_Pair_List_(Int32)_List_(Uint32)", %"CName_Pair_List_(Int32)_List_(Uint32)"* %"$adtval_90", i32 0, i32 1 - store %TName_List_Int32* %"$cons_int32_88", %TName_List_Int32** %"$adtgep_92" - %"$adtgep_93" = getelementptr inbounds %"CName_Pair_List_(Int32)_List_(Uint32)", %"CName_Pair_List_(Int32)_List_(Uint32)"* %"$adtval_90", i32 0, i32 2 - store %TName_List_Uint32* %"$cons_uint32_89", %TName_List_Uint32** %"$adtgep_93" - %"$adtptr_94" = bitcast %"CName_Pair_List_(Int32)_List_(Uint32)"* %"$adtval_90" to %"TName_Pair_List_(Int32)_List_(Uint32)"* - store %"TName_Pair_List_(Int32)_List_(Uint32)"* %"$adtptr_94", %"TName_Pair_List_(Int32)_List_(Uint32)"** %"$expr_0" - %"$$expr_0_95" = load %"TName_Pair_List_(Int32)_List_(Uint32)"*, %"TName_Pair_List_(Int32)_List_(Uint32)"** %"$expr_0" - ret %"TName_Pair_List_(Int32)_List_(Uint32)"* %"$$expr_0_95" + %"$gasrem_136" = load i64, i64* @_gasrem + %"$gascmp_137" = icmp ugt i64 1, %"$gasrem_136" + br i1 %"$gascmp_137", label %"$out_of_gas_138", label %"$have_gas_139" + +"$out_of_gas_138": ; preds = %"$have_gas_134" + call void @_out_of_gas() + br label %"$have_gas_139" + +"$have_gas_139": ; preds = %"$out_of_gas_138", %"$have_gas_134" + %"$consume_140" = sub i64 %"$gasrem_136", 1 + store i64 %"$consume_140", i64* @_gasrem + %"$uione_141" = load %Uint32, %Uint32* %uione + %"$nil_uint32_142" = load %TName_List_Uint32*, %TName_List_Uint32** %nil_uint32 + %"$adtval_143_load" = load i8*, i8** @_execptr + %"$adtval_143_salloc" = call i8* @_salloc(i8* %"$adtval_143_load", i64 13) + %"$adtval_143" = bitcast i8* %"$adtval_143_salloc" to %CName_Cons_Uint32* + %"$adtgep_144" = getelementptr inbounds %CName_Cons_Uint32, %CName_Cons_Uint32* %"$adtval_143", i32 0, i32 0 + store i8 0, i8* %"$adtgep_144" + %"$adtgep_145" = getelementptr inbounds %CName_Cons_Uint32, %CName_Cons_Uint32* %"$adtval_143", i32 0, i32 1 + store %Uint32 %"$uione_141", %Uint32* %"$adtgep_145" + %"$adtgep_146" = getelementptr inbounds %CName_Cons_Uint32, %CName_Cons_Uint32* %"$adtval_143", i32 0, i32 2 + store %TName_List_Uint32* %"$nil_uint32_142", %TName_List_Uint32** %"$adtgep_146" + %"$adtptr_147" = bitcast %CName_Cons_Uint32* %"$adtval_143" to %TName_List_Uint32* + store %TName_List_Uint32* %"$adtptr_147", %TName_List_Uint32** %cons_uint32 + %"$gasrem_148" = load i64, i64* @_gasrem + %"$gascmp_149" = icmp ugt i64 1, %"$gasrem_148" + br i1 %"$gascmp_149", label %"$out_of_gas_150", label %"$have_gas_151" + +"$out_of_gas_150": ; preds = %"$have_gas_139" + call void @_out_of_gas() + br label %"$have_gas_151" + +"$have_gas_151": ; preds = %"$out_of_gas_150", %"$have_gas_139" + %"$consume_152" = sub i64 %"$gasrem_148", 1 + store i64 %"$consume_152", i64* @_gasrem + %"$cons_int32_153" = load %TName_List_Int32*, %TName_List_Int32** %cons_int32 + %"$cons_uint32_154" = load %TName_List_Uint32*, %TName_List_Uint32** %cons_uint32 + %"$adtval_155_load" = load i8*, i8** @_execptr + %"$adtval_155_salloc" = call i8* @_salloc(i8* %"$adtval_155_load", i64 17) + %"$adtval_155" = bitcast i8* %"$adtval_155_salloc" to %"CName_Pair_List_(Int32)_List_(Uint32)"* + %"$adtgep_156" = getelementptr inbounds %"CName_Pair_List_(Int32)_List_(Uint32)", %"CName_Pair_List_(Int32)_List_(Uint32)"* %"$adtval_155", i32 0, i32 0 + store i8 0, i8* %"$adtgep_156" + %"$adtgep_157" = getelementptr inbounds %"CName_Pair_List_(Int32)_List_(Uint32)", %"CName_Pair_List_(Int32)_List_(Uint32)"* %"$adtval_155", i32 0, i32 1 + store %TName_List_Int32* %"$cons_int32_153", %TName_List_Int32** %"$adtgep_157" + %"$adtgep_158" = getelementptr inbounds %"CName_Pair_List_(Int32)_List_(Uint32)", %"CName_Pair_List_(Int32)_List_(Uint32)"* %"$adtval_155", i32 0, i32 2 + store %TName_List_Uint32* %"$cons_uint32_154", %TName_List_Uint32** %"$adtgep_158" + %"$adtptr_159" = bitcast %"CName_Pair_List_(Int32)_List_(Uint32)"* %"$adtval_155" to %"TName_Pair_List_(Int32)_List_(Uint32)"* + store %"TName_Pair_List_(Int32)_List_(Uint32)"* %"$adtptr_159", %"TName_Pair_List_(Int32)_List_(Uint32)"** %"$expr_0" + %"$$expr_0_160" = load %"TName_Pair_List_(Int32)_List_(Uint32)"*, %"TName_Pair_List_(Int32)_List_(Uint32)"** %"$expr_0" + ret %"TName_Pair_List_(Int32)_List_(Uint32)"* %"$$expr_0_160" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_96" = call %"TName_Pair_List_(Int32)_List_(Uint32)"* @"$scilla_expr_67"(i8* null) - %"$memvoidcast_97" = bitcast %"TName_Pair_List_(Int32)_List_(Uint32)"* %"$exprval_96" to i8* - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_List_(Int32)_List_(Uint32)_35", i8* %"$memvoidcast_97") + %"$exprval_161" = call %"TName_Pair_List_(Int32)_List_(Uint32)"* @"$scilla_expr_67"(i8* null) + %"$memvoidcast_162" = bitcast %"TName_Pair_List_(Int32)_List_(Uint32)"* %"$exprval_161" to i8* + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_List_(Int32)_List_(Uint32)_35", i8* %"$memvoidcast_162") ret void } diff --git a/testsuite/expr/lit-pair-list-int.ll.result b/testsuite/expr/lit-pair-list-int.ll.result index 08ef9e70..0bd188ac 100644 --- a/testsuite/expr/lit-pair-list-int.ll.result +++ b/testsuite/expr/lit-pair-list-int.ll.result @@ -1 +1,2 @@ Pair(Cons(1 : Int32)(Nil : List (Int32)) : List (Int32))(Cons(1 : Uint32)(Nil : List (Uint32)) : List (Uint32)) : Pair (List (Int32)) (List (Uint32)) +Gas remaining: 9999987 diff --git a/testsuite/expr/lit-string.ll b/testsuite/expr/lit-string.ll index 21065732..34f13b27 100644 --- a/testsuite/expr/lit-string.ll +++ b/testsuite/expr/lit-string.ll @@ -9,6 +9,7 @@ target triple = "x86_64-pc-linux-gnu" %String = type { i8*, i32 } @_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 } @@ -37,7 +38,7 @@ target triple = "x86_64-pc-linux-gnu" @"$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*) } -@"$stringlit_35" = unnamed_addr constant [11 x i8] c"hello world" +@"$stringlit_40" = unnamed_addr constant [11 x i8] c"hello world" define void @_init_libs() { entry: @@ -47,19 +48,32 @@ entry: define internal %String @"$scilla_expr_34"(i8* %0) { entry: %"$expr_0" = alloca %String - store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_35", i32 0, i32 0), i32 11 }, %String* %"$expr_0" - %"$$expr_0_36" = load %String, %String* %"$expr_0" - ret %String %"$$expr_0_36" + %"$gasrem_35" = load i64, i64* @_gasrem + %"$gascmp_36" = icmp ugt i64 1, %"$gasrem_35" + br i1 %"$gascmp_36", label %"$out_of_gas_37", label %"$have_gas_38" + +"$out_of_gas_37": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_38" + +"$have_gas_38": ; preds = %"$out_of_gas_37", %entry + %"$consume_39" = sub i64 %"$gasrem_35", 1 + store i64 %"$consume_39", i64* @_gasrem + store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_40", i32 0, i32 0), i32 11 }, %String* %"$expr_0" + %"$$expr_0_41" = load %String, %String* %"$expr_0" + ret %String %"$$expr_0_41" } +declare void @_out_of_gas() + declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_37" = call %String @"$scilla_expr_34"(i8* null) - %"$pval_38" = alloca %String - %"$memvoidcast_39" = bitcast %String* %"$pval_38" to i8* - store %String %"$exprval_37", %String* %"$pval_38" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_String_19", i8* %"$memvoidcast_39") + %"$exprval_42" = call %String @"$scilla_expr_34"(i8* null) + %"$pval_43" = alloca %String + %"$memvoidcast_44" = bitcast %String* %"$pval_43" to i8* + store %String %"$exprval_42", %String* %"$pval_43" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_String_19", i8* %"$memvoidcast_44") ret void } diff --git a/testsuite/expr/lit-string.ll.result b/testsuite/expr/lit-string.ll.result index 521203ca..9c02cfd5 100644 --- a/testsuite/expr/lit-string.ll.result +++ b/testsuite/expr/lit-string.ll.result @@ -1 +1,2 @@ hello world : String +Gas remaining: 9999999 diff --git a/testsuite/expr/lit-ui256-4.ll b/testsuite/expr/lit-ui256-4.ll index ae35bd5f..4760fdd1 100644 --- a/testsuite/expr/lit-ui256-4.ll +++ b/testsuite/expr/lit-ui256-4.ll @@ -9,6 +9,7 @@ target triple = "x86_64-pc-linux-gnu" %Uint256 = type { i256 } @_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 } @@ -46,19 +47,32 @@ entry: define internal void @"$scilla_expr_34"(i8* %0, %Uint256* %1) { entry: %"$expr_0" = alloca %Uint256 + %"$gasrem_35" = load i64, i64* @_gasrem + %"$gascmp_36" = icmp ugt i64 1, %"$gasrem_35" + br i1 %"$gascmp_36", label %"$out_of_gas_37", label %"$have_gas_38" + +"$out_of_gas_37": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_38" + +"$have_gas_38": ; preds = %"$out_of_gas_37", %entry + %"$consume_39" = sub i64 %"$gasrem_35", 1 + store i64 %"$consume_39", i64* @_gasrem store %Uint256 { i256 4 }, %Uint256* %"$expr_0" - %"$$expr_0_35" = load %Uint256, %Uint256* %"$expr_0" - store %Uint256 %"$$expr_0_35", %Uint256* %1 + %"$$expr_0_40" = load %Uint256, %Uint256* %"$expr_0" + store %Uint256 %"$$expr_0_40", %Uint256* %1 ret void } +declare void @_out_of_gas() + declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$mainval_36" = alloca %Uint256 - %"$memvoidcast_37" = bitcast %Uint256* %"$mainval_36" to i8* - call void @"$scilla_expr_34"(i8* null, %Uint256* %"$mainval_36") - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint256_17", i8* %"$memvoidcast_37") + %"$mainval_41" = alloca %Uint256 + %"$memvoidcast_42" = bitcast %Uint256* %"$mainval_41" to i8* + call void @"$scilla_expr_34"(i8* null, %Uint256* %"$mainval_41") + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint256_17", i8* %"$memvoidcast_42") ret void } diff --git a/testsuite/expr/lit-ui256-4.ll.result b/testsuite/expr/lit-ui256-4.ll.result index 04d69f93..de204e3c 100644 --- a/testsuite/expr/lit-ui256-4.ll.result +++ b/testsuite/expr/lit-ui256-4.ll.result @@ -1 +1,2 @@ 4 : Uint256 +Gas remaining: 9999999 diff --git a/testsuite/expr/lit-ui256-max.ll b/testsuite/expr/lit-ui256-max.ll index bc823dcd..dd9c14ba 100644 --- a/testsuite/expr/lit-ui256-max.ll +++ b/testsuite/expr/lit-ui256-max.ll @@ -9,6 +9,7 @@ target triple = "x86_64-pc-linux-gnu" %Uint256 = type { i256 } @_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 } @@ -46,19 +47,32 @@ entry: define internal void @"$scilla_expr_34"(i8* %0, %Uint256* %1) { entry: %"$expr_0" = alloca %Uint256 + %"$gasrem_35" = load i64, i64* @_gasrem + %"$gascmp_36" = icmp ugt i64 1, %"$gasrem_35" + br i1 %"$gascmp_36", label %"$out_of_gas_37", label %"$have_gas_38" + +"$out_of_gas_37": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_38" + +"$have_gas_38": ; preds = %"$out_of_gas_37", %entry + %"$consume_39" = sub i64 %"$gasrem_35", 1 + store i64 %"$consume_39", i64* @_gasrem store %Uint256 { i256 -1 }, %Uint256* %"$expr_0" - %"$$expr_0_35" = load %Uint256, %Uint256* %"$expr_0" - store %Uint256 %"$$expr_0_35", %Uint256* %1 + %"$$expr_0_40" = load %Uint256, %Uint256* %"$expr_0" + store %Uint256 %"$$expr_0_40", %Uint256* %1 ret void } +declare void @_out_of_gas() + declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$mainval_36" = alloca %Uint256 - %"$memvoidcast_37" = bitcast %Uint256* %"$mainval_36" to i8* - call void @"$scilla_expr_34"(i8* null, %Uint256* %"$mainval_36") - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint256_17", i8* %"$memvoidcast_37") + %"$mainval_41" = alloca %Uint256 + %"$memvoidcast_42" = bitcast %Uint256* %"$mainval_41" to i8* + call void @"$scilla_expr_34"(i8* null, %Uint256* %"$mainval_41") + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint256_17", i8* %"$memvoidcast_42") ret void } diff --git a/testsuite/expr/lit-ui256-max.ll.result b/testsuite/expr/lit-ui256-max.ll.result index 0de23a18..cf7a60b0 100644 --- a/testsuite/expr/lit-ui256-max.ll.result +++ b/testsuite/expr/lit-ui256-max.ll.result @@ -1 +1,2 @@ 115792089237316195423570985008687907853269984665640564039457584007913129639935 : Uint256 +Gas remaining: 9999999 diff --git a/testsuite/expr/map1.ll b/testsuite/expr/map1.ll index 7bb71024..457db3e8 100644 --- a/testsuite/expr/map1.ll +++ b/testsuite/expr/map1.ll @@ -25,6 +25,7 @@ target triple = "x86_64-pc-linux-gnu" %"CName_Nil_Map_(Int32)_(Map_(String)_(Int32))" = 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 } @@ -81,22 +82,68 @@ entry: define internal %"Map_Uint128_List_(Map_(Int32)_(Map_(String)_(Int32)))"* @"$scilla_expr_53"(i8* %0) { entry: %"$expr_0" = alloca %"Map_Uint128_List_(Map_(Int32)_(Map_(String)_(Int32)))"* - %"$execptr_load_54" = load i8*, i8** @_execptr - %"$_new_empty_map_call_55" = call i8* @_new_empty_map(i8* %"$execptr_load_54") - %"$Emp_56" = bitcast i8* %"$_new_empty_map_call_55" to %"Map_Uint128_List_(Map_(Int32)_(Map_(String)_(Int32)))"* - store %"Map_Uint128_List_(Map_(Int32)_(Map_(String)_(Int32)))"* %"$Emp_56", %"Map_Uint128_List_(Map_(Int32)_(Map_(String)_(Int32)))"** %"$expr_0" - %"$$expr_0_57" = load %"Map_Uint128_List_(Map_(Int32)_(Map_(String)_(Int32)))"*, %"Map_Uint128_List_(Map_(Int32)_(Map_(String)_(Int32)))"** %"$expr_0" - ret %"Map_Uint128_List_(Map_(Int32)_(Map_(String)_(Int32)))"* %"$$expr_0_57" + %"$gasrem_54" = load i64, i64* @_gasrem + %"$gascmp_55" = icmp ugt i64 1, %"$gasrem_54" + br i1 %"$gascmp_55", label %"$out_of_gas_56", label %"$have_gas_57" + +"$out_of_gas_56": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_57" + +"$have_gas_57": ; preds = %"$out_of_gas_56", %entry + %"$consume_58" = sub i64 %"$gasrem_54", 1 + store i64 %"$consume_58", i64* @_gasrem + %"$gasrem_59" = load i64, i64* @_gasrem + %"$gascmp_60" = icmp ugt i64 1, %"$gasrem_59" + br i1 %"$gascmp_60", label %"$out_of_gas_61", label %"$have_gas_62" + +"$out_of_gas_61": ; preds = %"$have_gas_57" + call void @_out_of_gas() + br label %"$have_gas_62" + +"$have_gas_62": ; preds = %"$out_of_gas_61", %"$have_gas_57" + %"$consume_63" = sub i64 %"$gasrem_59", 1 + store i64 %"$consume_63", i64* @_gasrem + %"$gasrem_64" = load i64, i64* @_gasrem + %"$gascmp_65" = icmp ugt i64 1, %"$gasrem_64" + br i1 %"$gascmp_65", label %"$out_of_gas_66", label %"$have_gas_67" + +"$out_of_gas_66": ; preds = %"$have_gas_62" + call void @_out_of_gas() + br label %"$have_gas_67" + +"$have_gas_67": ; preds = %"$out_of_gas_66", %"$have_gas_62" + %"$consume_68" = sub i64 %"$gasrem_64", 1 + store i64 %"$consume_68", i64* @_gasrem + %"$gasrem_69" = load i64, i64* @_gasrem + %"$gascmp_70" = icmp ugt i64 1, %"$gasrem_69" + br i1 %"$gascmp_70", label %"$out_of_gas_71", label %"$have_gas_72" + +"$out_of_gas_71": ; preds = %"$have_gas_67" + call void @_out_of_gas() + br label %"$have_gas_72" + +"$have_gas_72": ; preds = %"$out_of_gas_71", %"$have_gas_67" + %"$consume_73" = sub i64 %"$gasrem_69", 1 + store i64 %"$consume_73", i64* @_gasrem + %"$execptr_load_74" = load i8*, i8** @_execptr + %"$_new_empty_map_call_75" = call i8* @_new_empty_map(i8* %"$execptr_load_74") + %"$Emp_76" = bitcast i8* %"$_new_empty_map_call_75" to %"Map_Uint128_List_(Map_(Int32)_(Map_(String)_(Int32)))"* + store %"Map_Uint128_List_(Map_(Int32)_(Map_(String)_(Int32)))"* %"$Emp_76", %"Map_Uint128_List_(Map_(Int32)_(Map_(String)_(Int32)))"** %"$expr_0" + %"$$expr_0_77" = load %"Map_Uint128_List_(Map_(Int32)_(Map_(String)_(Int32)))"*, %"Map_Uint128_List_(Map_(Int32)_(Map_(String)_(Int32)))"** %"$expr_0" + ret %"Map_Uint128_List_(Map_(Int32)_(Map_(String)_(Int32)))"* %"$$expr_0_77" } +declare void @_out_of_gas() + declare i8* @_new_empty_map(i8*) declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_58" = call %"Map_Uint128_List_(Map_(Int32)_(Map_(String)_(Int32)))"* @"$scilla_expr_53"(i8* null) - %"$memvoidcast_59" = bitcast %"Map_Uint128_List_(Map_(Int32)_(Map_(String)_(Int32)))"* %"$exprval_58" to i8* - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Map_37", i8* %"$memvoidcast_59") + %"$exprval_78" = call %"Map_Uint128_List_(Map_(Int32)_(Map_(String)_(Int32)))"* @"$scilla_expr_53"(i8* null) + %"$memvoidcast_79" = bitcast %"Map_Uint128_List_(Map_(Int32)_(Map_(String)_(Int32)))"* %"$exprval_78" to i8* + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Map_37", i8* %"$memvoidcast_79") ret void } diff --git a/testsuite/expr/map1.ll.result b/testsuite/expr/map1.ll.result index a1b4305a..067ccf2a 100644 --- a/testsuite/expr/map1.ll.result +++ b/testsuite/expr/map1.ll.result @@ -1 +1,2 @@ Emp : Map (Uint128) (List (Map (Int32) (Map (String) (Int32)))) +Gas remaining: 9999996 diff --git a/testsuite/expr/match_assign.ll b/testsuite/expr/match_assign.ll index a69909ae..1deea56f 100644 --- a/testsuite/expr/match_assign.ll +++ b/testsuite/expr/match_assign.ll @@ -24,6 +24,7 @@ target triple = "x86_64-pc-linux-gnu" %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 } @@ -74,56 +75,157 @@ entry: define internal %Int32 @"$scilla_expr_47"(i8* %0) { entry: %"$expr_0" = alloca %Int32 + %"$gasrem_48" = load i64, i64* @_gasrem + %"$gascmp_49" = icmp ugt i64 1, %"$gasrem_48" + br i1 %"$gascmp_49", label %"$out_of_gas_50", label %"$have_gas_51" + +"$out_of_gas_50": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_51" + +"$have_gas_51": ; preds = %"$out_of_gas_50", %entry + %"$consume_52" = sub i64 %"$gasrem_48", 1 + store i64 %"$consume_52", i64* @_gasrem %b = alloca %TName_Bool* - %"$adtval_48_load" = load i8*, i8** @_execptr - %"$adtval_48_salloc" = call i8* @_salloc(i8* %"$adtval_48_load", i64 1) - %"$adtval_48" = bitcast i8* %"$adtval_48_salloc" to %CName_False* - %"$adtgep_49" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_48", i32 0, i32 0 - store i8 1, i8* %"$adtgep_49" - %"$adtptr_50" = bitcast %CName_False* %"$adtval_48" to %TName_Bool* - store %TName_Bool* %"$adtptr_50", %TName_Bool** %b - %"$b_52" = load %TName_Bool*, %TName_Bool** %b - %"$b_tag_53" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b_52", i32 0, i32 0 - %"$b_tag_54" = load i8, i8* %"$b_tag_53" - switch i8 %"$b_tag_54", label %"$empty_default_55" [ - i8 0, label %"$True_56" - i8 1, label %"$False_59" + %"$gasrem_53" = load i64, i64* @_gasrem + %"$gascmp_54" = icmp ugt i64 1, %"$gasrem_53" + br i1 %"$gascmp_54", label %"$out_of_gas_55", label %"$have_gas_56" + +"$out_of_gas_55": ; preds = %"$have_gas_51" + call void @_out_of_gas() + br label %"$have_gas_56" + +"$have_gas_56": ; preds = %"$out_of_gas_55", %"$have_gas_51" + %"$consume_57" = sub i64 %"$gasrem_53", 1 + store i64 %"$consume_57", i64* @_gasrem + %"$adtval_58_load" = load i8*, i8** @_execptr + %"$adtval_58_salloc" = call i8* @_salloc(i8* %"$adtval_58_load", i64 1) + %"$adtval_58" = bitcast i8* %"$adtval_58_salloc" to %CName_False* + %"$adtgep_59" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_58", i32 0, i32 0 + store i8 1, i8* %"$adtgep_59" + %"$adtptr_60" = bitcast %CName_False* %"$adtval_58" to %TName_Bool* + store %TName_Bool* %"$adtptr_60", %TName_Bool** %b + %"$gasrem_61" = load i64, i64* @_gasrem + %"$gascmp_62" = icmp ugt i64 2, %"$gasrem_61" + br i1 %"$gascmp_62", label %"$out_of_gas_63", label %"$have_gas_64" + +"$out_of_gas_63": ; preds = %"$have_gas_56" + call void @_out_of_gas() + br label %"$have_gas_64" + +"$have_gas_64": ; preds = %"$out_of_gas_63", %"$have_gas_56" + %"$consume_65" = sub i64 %"$gasrem_61", 2 + store i64 %"$consume_65", i64* @_gasrem + %"$b_67" = load %TName_Bool*, %TName_Bool** %b + %"$b_tag_68" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b_67", i32 0, i32 0 + %"$b_tag_69" = load i8, i8* %"$b_tag_68" + switch i8 %"$b_tag_69", label %"$empty_default_70" [ + i8 0, label %"$True_71" + i8 1, label %"$False_89" ] -"$True_56": ; preds = %entry - %"$b_57" = bitcast %TName_Bool* %"$b_52" to %CName_True* +"$True_71": ; preds = %"$have_gas_64" + %"$b_72" = bitcast %TName_Bool* %"$b_67" to %CName_True* + %"$gasrem_73" = load i64, i64* @_gasrem + %"$gascmp_74" = icmp ugt i64 1, %"$gasrem_73" + br i1 %"$gascmp_74", label %"$out_of_gas_75", label %"$have_gas_76" + +"$out_of_gas_75": ; preds = %"$True_71" + call void @_out_of_gas() + br label %"$have_gas_76" + +"$have_gas_76": ; preds = %"$out_of_gas_75", %"$True_71" + %"$consume_77" = sub i64 %"$gasrem_73", 1 + store i64 %"$consume_77", i64* @_gasrem %x = alloca %Int32 + %"$gasrem_78" = load i64, i64* @_gasrem + %"$gascmp_79" = icmp ugt i64 1, %"$gasrem_78" + br i1 %"$gascmp_79", label %"$out_of_gas_80", label %"$have_gas_81" + +"$out_of_gas_80": ; preds = %"$have_gas_76" + call void @_out_of_gas() + br label %"$have_gas_81" + +"$have_gas_81": ; preds = %"$out_of_gas_80", %"$have_gas_76" + %"$consume_82" = sub i64 %"$gasrem_78", 1 + store i64 %"$consume_82", i64* @_gasrem store %Int32 { i32 1 }, %Int32* %x - %"$x_58" = load %Int32, %Int32* %x - store %Int32 %"$x_58", %Int32* %"$expr_0" - br label %"$matchsucc_51" + %"$gasrem_83" = load i64, i64* @_gasrem + %"$gascmp_84" = icmp ugt i64 1, %"$gasrem_83" + br i1 %"$gascmp_84", label %"$out_of_gas_85", label %"$have_gas_86" -"$False_59": ; preds = %entry - %"$b_60" = bitcast %TName_Bool* %"$b_52" to %CName_False* +"$out_of_gas_85": ; preds = %"$have_gas_81" + call void @_out_of_gas() + br label %"$have_gas_86" + +"$have_gas_86": ; preds = %"$out_of_gas_85", %"$have_gas_81" + %"$consume_87" = sub i64 %"$gasrem_83", 1 + store i64 %"$consume_87", i64* @_gasrem + %"$x_88" = load %Int32, %Int32* %x + store %Int32 %"$x_88", %Int32* %"$expr_0" + br label %"$matchsucc_66" + +"$False_89": ; preds = %"$have_gas_64" + %"$b_90" = bitcast %TName_Bool* %"$b_67" to %CName_False* + %"$gasrem_91" = load i64, i64* @_gasrem + %"$gascmp_92" = icmp ugt i64 1, %"$gasrem_91" + br i1 %"$gascmp_92", label %"$out_of_gas_93", label %"$have_gas_94" + +"$out_of_gas_93": ; preds = %"$False_89" + call void @_out_of_gas() + br label %"$have_gas_94" + +"$have_gas_94": ; preds = %"$out_of_gas_93", %"$False_89" + %"$consume_95" = sub i64 %"$gasrem_91", 1 + store i64 %"$consume_95", i64* @_gasrem %x1 = alloca %Int32 + %"$gasrem_96" = load i64, i64* @_gasrem + %"$gascmp_97" = icmp ugt i64 1, %"$gasrem_96" + br i1 %"$gascmp_97", label %"$out_of_gas_98", label %"$have_gas_99" + +"$out_of_gas_98": ; preds = %"$have_gas_94" + call void @_out_of_gas() + br label %"$have_gas_99" + +"$have_gas_99": ; preds = %"$out_of_gas_98", %"$have_gas_94" + %"$consume_100" = sub i64 %"$gasrem_96", 1 + store i64 %"$consume_100", i64* @_gasrem store %Int32 { i32 2 }, %Int32* %x1 - %"$x_61" = load %Int32, %Int32* %x1 - store %Int32 %"$x_61", %Int32* %"$expr_0" - br label %"$matchsucc_51" + %"$gasrem_101" = load i64, i64* @_gasrem + %"$gascmp_102" = icmp ugt i64 1, %"$gasrem_101" + br i1 %"$gascmp_102", label %"$out_of_gas_103", label %"$have_gas_104" + +"$out_of_gas_103": ; preds = %"$have_gas_99" + call void @_out_of_gas() + br label %"$have_gas_104" -"$empty_default_55": ; preds = %entry - br label %"$matchsucc_51" +"$have_gas_104": ; preds = %"$out_of_gas_103", %"$have_gas_99" + %"$consume_105" = sub i64 %"$gasrem_101", 1 + store i64 %"$consume_105", i64* @_gasrem + %"$x_106" = load %Int32, %Int32* %x1 + store %Int32 %"$x_106", %Int32* %"$expr_0" + br label %"$matchsucc_66" -"$matchsucc_51": ; preds = %"$False_59", %"$True_56", %"$empty_default_55" - %"$$expr_0_62" = load %Int32, %Int32* %"$expr_0" - ret %Int32 %"$$expr_0_62" +"$empty_default_70": ; preds = %"$have_gas_64" + br label %"$matchsucc_66" + +"$matchsucc_66": ; preds = %"$have_gas_104", %"$have_gas_86", %"$empty_default_70" + %"$$expr_0_107" = load %Int32, %Int32* %"$expr_0" + ret %Int32 %"$$expr_0_107" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_63" = call %Int32 @"$scilla_expr_47"(i8* null) - %"$pval_64" = alloca %Int32 - %"$memvoidcast_65" = bitcast %Int32* %"$pval_64" to i8* - store %Int32 %"$exprval_63", %Int32* %"$pval_64" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_3", i8* %"$memvoidcast_65") + %"$exprval_108" = call %Int32 @"$scilla_expr_47"(i8* null) + %"$pval_109" = alloca %Int32 + %"$memvoidcast_110" = bitcast %Int32* %"$pval_109" to i8* + store %Int32 %"$exprval_108", %Int32* %"$pval_109" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_3", i8* %"$memvoidcast_110") ret void } diff --git a/testsuite/expr/match_assign.ll.result b/testsuite/expr/match_assign.ll.result index 0e76b068..7eb95887 100644 --- a/testsuite/expr/match_assign.ll.result +++ b/testsuite/expr/match_assign.ll.result @@ -1 +1,2 @@ 2 : Int32 +Gas remaining: 9999993 diff --git a/testsuite/expr/multi-type-inst.ll b/testsuite/expr/multi-type-inst.ll index ae94275b..29a459ec 100644 --- a/testsuite/expr/multi-type-inst.ll +++ b/testsuite/expr/multi-type-inst.ll @@ -85,6 +85,7 @@ target triple = "x86_64-pc-linux-gnu" %CName_False = type <{ i8 }> @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_60" = global %"$TyDescrTy_PrimTyp_59" zeroinitializer @"$TyDescr_Int32_61" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_59"* @"$TyDescr_Int32_Prim_60" to i8*) } @"$TyDescr_Uint32_Prim_62" = global %"$TyDescrTy_PrimTyp_59" { i32 1, i32 0 } @@ -155,671 +156,1333 @@ target triple = "x86_64-pc-linux-gnu" define internal %TName_List_Int64* @"$fundef_57"(%"$$fundef_57_env_128"* %0, %Int64 %1) { entry: %"$retval_58" = alloca %TName_List_Int64* + %"$gasrem_733" = load i64, i64* @_gasrem + %"$gascmp_734" = icmp ugt i64 1, %"$gasrem_733" + br i1 %"$gascmp_734", label %"$out_of_gas_735", label %"$have_gas_736" + +"$out_of_gas_735": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_736" + +"$have_gas_736": ; preds = %"$out_of_gas_735", %entry + %"$consume_737" = sub i64 %"$gasrem_733", 1 + store i64 %"$consume_737", i64* @_gasrem %an = alloca %TName_List_Int64* - %"$adtval_458_load" = load i8*, i8** @_execptr - %"$adtval_458_salloc" = call i8* @_salloc(i8* %"$adtval_458_load", i64 1) - %"$adtval_458" = bitcast i8* %"$adtval_458_salloc" to %CName_Nil_Int64* - %"$adtgep_459" = getelementptr inbounds %CName_Nil_Int64, %CName_Nil_Int64* %"$adtval_458", i32 0, i32 0 - store i8 1, i8* %"$adtgep_459" - %"$adtptr_460" = bitcast %CName_Nil_Int64* %"$adtval_458" to %TName_List_Int64* - store %TName_List_Int64* %"$adtptr_460", %TName_List_Int64** %an + %"$gasrem_738" = load i64, i64* @_gasrem + %"$gascmp_739" = icmp ugt i64 1, %"$gasrem_738" + br i1 %"$gascmp_739", label %"$out_of_gas_740", label %"$have_gas_741" + +"$out_of_gas_740": ; preds = %"$have_gas_736" + call void @_out_of_gas() + br label %"$have_gas_741" + +"$have_gas_741": ; preds = %"$out_of_gas_740", %"$have_gas_736" + %"$consume_742" = sub i64 %"$gasrem_738", 1 + store i64 %"$consume_742", i64* @_gasrem + %"$adtval_743_load" = load i8*, i8** @_execptr + %"$adtval_743_salloc" = call i8* @_salloc(i8* %"$adtval_743_load", i64 1) + %"$adtval_743" = bitcast i8* %"$adtval_743_salloc" to %CName_Nil_Int64* + %"$adtgep_744" = getelementptr inbounds %CName_Nil_Int64, %CName_Nil_Int64* %"$adtval_743", i32 0, i32 0 + store i8 1, i8* %"$adtgep_744" + %"$adtptr_745" = bitcast %CName_Nil_Int64* %"$adtval_743" to %TName_List_Int64* + store %TName_List_Int64* %"$adtptr_745", %TName_List_Int64** %an + %"$gasrem_746" = load i64, i64* @_gasrem + %"$gascmp_747" = icmp ugt i64 1, %"$gasrem_746" + br i1 %"$gascmp_747", label %"$out_of_gas_748", label %"$have_gas_749" + +"$out_of_gas_748": ; preds = %"$have_gas_741" + call void @_out_of_gas() + br label %"$have_gas_749" + +"$have_gas_749": ; preds = %"$out_of_gas_748", %"$have_gas_741" + %"$consume_750" = sub i64 %"$gasrem_746", 1 + store i64 %"$consume_750", i64* @_gasrem %a1 = alloca %TName_List_Int64* - %"$an_461" = load %TName_List_Int64*, %TName_List_Int64** %an - %"$adtval_462_load" = load i8*, i8** @_execptr - %"$adtval_462_salloc" = call i8* @_salloc(i8* %"$adtval_462_load", i64 17) - %"$adtval_462" = bitcast i8* %"$adtval_462_salloc" to %CName_Cons_Int64* - %"$adtgep_463" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_462", i32 0, i32 0 - store i8 0, i8* %"$adtgep_463" - %"$adtgep_464" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_462", i32 0, i32 1 - store %Int64 %1, %Int64* %"$adtgep_464" - %"$adtgep_465" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_462", i32 0, i32 2 - store %TName_List_Int64* %"$an_461", %TName_List_Int64** %"$adtgep_465" - %"$adtptr_466" = bitcast %CName_Cons_Int64* %"$adtval_462" to %TName_List_Int64* - store %TName_List_Int64* %"$adtptr_466", %TName_List_Int64** %a1 - %"$a1_467" = load %TName_List_Int64*, %TName_List_Int64** %a1 - %"$adtval_468_load" = load i8*, i8** @_execptr - %"$adtval_468_salloc" = call i8* @_salloc(i8* %"$adtval_468_load", i64 17) - %"$adtval_468" = bitcast i8* %"$adtval_468_salloc" to %CName_Cons_Int64* - %"$adtgep_469" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_468", i32 0, i32 0 - store i8 0, i8* %"$adtgep_469" - %"$adtgep_470" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_468", i32 0, i32 1 - store %Int64 %1, %Int64* %"$adtgep_470" - %"$adtgep_471" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_468", i32 0, i32 2 - store %TName_List_Int64* %"$a1_467", %TName_List_Int64** %"$adtgep_471" - %"$adtptr_472" = bitcast %CName_Cons_Int64* %"$adtval_468" to %TName_List_Int64* - store %TName_List_Int64* %"$adtptr_472", %TName_List_Int64** %"$retval_58" - %"$$retval_58_473" = load %TName_List_Int64*, %TName_List_Int64** %"$retval_58" - ret %TName_List_Int64* %"$$retval_58_473" + %"$gasrem_751" = load i64, i64* @_gasrem + %"$gascmp_752" = icmp ugt i64 1, %"$gasrem_751" + br i1 %"$gascmp_752", label %"$out_of_gas_753", label %"$have_gas_754" + +"$out_of_gas_753": ; preds = %"$have_gas_749" + call void @_out_of_gas() + br label %"$have_gas_754" + +"$have_gas_754": ; preds = %"$out_of_gas_753", %"$have_gas_749" + %"$consume_755" = sub i64 %"$gasrem_751", 1 + store i64 %"$consume_755", i64* @_gasrem + %"$an_756" = load %TName_List_Int64*, %TName_List_Int64** %an + %"$adtval_757_load" = load i8*, i8** @_execptr + %"$adtval_757_salloc" = call i8* @_salloc(i8* %"$adtval_757_load", i64 17) + %"$adtval_757" = bitcast i8* %"$adtval_757_salloc" to %CName_Cons_Int64* + %"$adtgep_758" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_757", i32 0, i32 0 + store i8 0, i8* %"$adtgep_758" + %"$adtgep_759" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_757", i32 0, i32 1 + store %Int64 %1, %Int64* %"$adtgep_759" + %"$adtgep_760" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_757", i32 0, i32 2 + store %TName_List_Int64* %"$an_756", %TName_List_Int64** %"$adtgep_760" + %"$adtptr_761" = bitcast %CName_Cons_Int64* %"$adtval_757" to %TName_List_Int64* + store %TName_List_Int64* %"$adtptr_761", %TName_List_Int64** %a1 + %"$gasrem_762" = load i64, i64* @_gasrem + %"$gascmp_763" = icmp ugt i64 1, %"$gasrem_762" + br i1 %"$gascmp_763", label %"$out_of_gas_764", label %"$have_gas_765" + +"$out_of_gas_764": ; preds = %"$have_gas_754" + call void @_out_of_gas() + br label %"$have_gas_765" + +"$have_gas_765": ; preds = %"$out_of_gas_764", %"$have_gas_754" + %"$consume_766" = sub i64 %"$gasrem_762", 1 + store i64 %"$consume_766", i64* @_gasrem + %"$a1_767" = load %TName_List_Int64*, %TName_List_Int64** %a1 + %"$adtval_768_load" = load i8*, i8** @_execptr + %"$adtval_768_salloc" = call i8* @_salloc(i8* %"$adtval_768_load", i64 17) + %"$adtval_768" = bitcast i8* %"$adtval_768_salloc" to %CName_Cons_Int64* + %"$adtgep_769" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_768", i32 0, i32 0 + store i8 0, i8* %"$adtgep_769" + %"$adtgep_770" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_768", i32 0, i32 1 + store %Int64 %1, %Int64* %"$adtgep_770" + %"$adtgep_771" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_768", i32 0, i32 2 + store %TName_List_Int64* %"$a1_767", %TName_List_Int64** %"$adtgep_771" + %"$adtptr_772" = bitcast %CName_Cons_Int64* %"$adtval_768" to %TName_List_Int64* + store %TName_List_Int64* %"$adtptr_772", %TName_List_Int64** %"$retval_58" + %"$$retval_58_773" = load %TName_List_Int64*, %TName_List_Int64** %"$retval_58" + ret %TName_List_Int64* %"$$retval_58_773" } define internal { %TName_List_Int64* (i8*, %Int64)*, i8* } @"$fundef_55"(%"$$fundef_55_env_129"* %0) { entry: %"$retval_56" = alloca { %TName_List_Int64* (i8*, %Int64)*, i8* } + %"$gasrem_724" = load i64, i64* @_gasrem + %"$gascmp_725" = icmp ugt i64 1, %"$gasrem_724" + br i1 %"$gascmp_725", label %"$out_of_gas_726", label %"$have_gas_727" + +"$out_of_gas_726": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_727" + +"$have_gas_727": ; preds = %"$out_of_gas_726", %entry + %"$consume_728" = sub i64 %"$gasrem_724", 1 + store i64 %"$consume_728", i64* @_gasrem store { %TName_List_Int64* (i8*, %Int64)*, i8* } { %TName_List_Int64* (i8*, %Int64)* bitcast (%TName_List_Int64* (%"$$fundef_57_env_128"*, %Int64)* @"$fundef_57" to %TName_List_Int64* (i8*, %Int64)*), i8* null }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$retval_56" - %"$$retval_56_457" = load { %TName_List_Int64* (i8*, %Int64)*, i8* }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$retval_56" - ret { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$$retval_56_457" + %"$$retval_56_732" = load { %TName_List_Int64* (i8*, %Int64)*, i8* }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$retval_56" + ret { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$$retval_56_732" } define internal %TName_List_Int32* @"$fundef_53"(%"$$fundef_53_env_130"* %0, %Int32 %1) { entry: %"$retval_54" = alloca %TName_List_Int32* + %"$gasrem_683" = load i64, i64* @_gasrem + %"$gascmp_684" = icmp ugt i64 1, %"$gasrem_683" + br i1 %"$gascmp_684", label %"$out_of_gas_685", label %"$have_gas_686" + +"$out_of_gas_685": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_686" + +"$have_gas_686": ; preds = %"$out_of_gas_685", %entry + %"$consume_687" = sub i64 %"$gasrem_683", 1 + store i64 %"$consume_687", i64* @_gasrem %an = alloca %TName_List_Int32* - %"$adtval_438_load" = load i8*, i8** @_execptr - %"$adtval_438_salloc" = call i8* @_salloc(i8* %"$adtval_438_load", i64 1) - %"$adtval_438" = bitcast i8* %"$adtval_438_salloc" to %CName_Nil_Int32* - %"$adtgep_439" = getelementptr inbounds %CName_Nil_Int32, %CName_Nil_Int32* %"$adtval_438", i32 0, i32 0 - store i8 1, i8* %"$adtgep_439" - %"$adtptr_440" = bitcast %CName_Nil_Int32* %"$adtval_438" to %TName_List_Int32* - store %TName_List_Int32* %"$adtptr_440", %TName_List_Int32** %an + %"$gasrem_688" = load i64, i64* @_gasrem + %"$gascmp_689" = icmp ugt i64 1, %"$gasrem_688" + br i1 %"$gascmp_689", label %"$out_of_gas_690", label %"$have_gas_691" + +"$out_of_gas_690": ; preds = %"$have_gas_686" + call void @_out_of_gas() + br label %"$have_gas_691" + +"$have_gas_691": ; preds = %"$out_of_gas_690", %"$have_gas_686" + %"$consume_692" = sub i64 %"$gasrem_688", 1 + store i64 %"$consume_692", i64* @_gasrem + %"$adtval_693_load" = load i8*, i8** @_execptr + %"$adtval_693_salloc" = call i8* @_salloc(i8* %"$adtval_693_load", i64 1) + %"$adtval_693" = bitcast i8* %"$adtval_693_salloc" to %CName_Nil_Int32* + %"$adtgep_694" = getelementptr inbounds %CName_Nil_Int32, %CName_Nil_Int32* %"$adtval_693", i32 0, i32 0 + store i8 1, i8* %"$adtgep_694" + %"$adtptr_695" = bitcast %CName_Nil_Int32* %"$adtval_693" to %TName_List_Int32* + store %TName_List_Int32* %"$adtptr_695", %TName_List_Int32** %an + %"$gasrem_696" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_691" + call void @_out_of_gas() + br label %"$have_gas_699" + +"$have_gas_699": ; preds = %"$out_of_gas_698", %"$have_gas_691" + %"$consume_700" = sub i64 %"$gasrem_696", 1 + store i64 %"$consume_700", i64* @_gasrem %a1 = alloca %TName_List_Int32* - %"$an_441" = load %TName_List_Int32*, %TName_List_Int32** %an - %"$adtval_442_load" = load i8*, i8** @_execptr - %"$adtval_442_salloc" = call i8* @_salloc(i8* %"$adtval_442_load", i64 13) - %"$adtval_442" = bitcast i8* %"$adtval_442_salloc" to %CName_Cons_Int32* - %"$adtgep_443" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_442", i32 0, i32 0 - store i8 0, i8* %"$adtgep_443" - %"$adtgep_444" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_442", i32 0, i32 1 - store %Int32 %1, %Int32* %"$adtgep_444" - %"$adtgep_445" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_442", i32 0, i32 2 - store %TName_List_Int32* %"$an_441", %TName_List_Int32** %"$adtgep_445" - %"$adtptr_446" = bitcast %CName_Cons_Int32* %"$adtval_442" to %TName_List_Int32* - store %TName_List_Int32* %"$adtptr_446", %TName_List_Int32** %a1 - %"$a1_447" = load %TName_List_Int32*, %TName_List_Int32** %a1 - %"$adtval_448_load" = load i8*, i8** @_execptr - %"$adtval_448_salloc" = call i8* @_salloc(i8* %"$adtval_448_load", i64 13) - %"$adtval_448" = bitcast i8* %"$adtval_448_salloc" to %CName_Cons_Int32* - %"$adtgep_449" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_448", i32 0, i32 0 - store i8 0, i8* %"$adtgep_449" - %"$adtgep_450" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_448", i32 0, i32 1 - store %Int32 %1, %Int32* %"$adtgep_450" - %"$adtgep_451" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_448", i32 0, i32 2 - store %TName_List_Int32* %"$a1_447", %TName_List_Int32** %"$adtgep_451" - %"$adtptr_452" = bitcast %CName_Cons_Int32* %"$adtval_448" to %TName_List_Int32* - store %TName_List_Int32* %"$adtptr_452", %TName_List_Int32** %"$retval_54" - %"$$retval_54_453" = load %TName_List_Int32*, %TName_List_Int32** %"$retval_54" - ret %TName_List_Int32* %"$$retval_54_453" + %"$gasrem_701" = load i64, i64* @_gasrem + %"$gascmp_702" = icmp ugt i64 1, %"$gasrem_701" + br i1 %"$gascmp_702", label %"$out_of_gas_703", label %"$have_gas_704" + +"$out_of_gas_703": ; preds = %"$have_gas_699" + call void @_out_of_gas() + br label %"$have_gas_704" + +"$have_gas_704": ; preds = %"$out_of_gas_703", %"$have_gas_699" + %"$consume_705" = sub i64 %"$gasrem_701", 1 + store i64 %"$consume_705", i64* @_gasrem + %"$an_706" = load %TName_List_Int32*, %TName_List_Int32** %an + %"$adtval_707_load" = load i8*, i8** @_execptr + %"$adtval_707_salloc" = call i8* @_salloc(i8* %"$adtval_707_load", i64 13) + %"$adtval_707" = bitcast i8* %"$adtval_707_salloc" to %CName_Cons_Int32* + %"$adtgep_708" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_707", i32 0, i32 0 + store i8 0, i8* %"$adtgep_708" + %"$adtgep_709" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_707", i32 0, i32 1 + store %Int32 %1, %Int32* %"$adtgep_709" + %"$adtgep_710" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_707", i32 0, i32 2 + store %TName_List_Int32* %"$an_706", %TName_List_Int32** %"$adtgep_710" + %"$adtptr_711" = bitcast %CName_Cons_Int32* %"$adtval_707" to %TName_List_Int32* + store %TName_List_Int32* %"$adtptr_711", %TName_List_Int32** %a1 + %"$gasrem_712" = load i64, i64* @_gasrem + %"$gascmp_713" = icmp ugt i64 1, %"$gasrem_712" + br i1 %"$gascmp_713", label %"$out_of_gas_714", label %"$have_gas_715" + +"$out_of_gas_714": ; preds = %"$have_gas_704" + call void @_out_of_gas() + br label %"$have_gas_715" + +"$have_gas_715": ; preds = %"$out_of_gas_714", %"$have_gas_704" + %"$consume_716" = sub i64 %"$gasrem_712", 1 + store i64 %"$consume_716", i64* @_gasrem + %"$a1_717" = load %TName_List_Int32*, %TName_List_Int32** %a1 + %"$adtval_718_load" = load i8*, i8** @_execptr + %"$adtval_718_salloc" = call i8* @_salloc(i8* %"$adtval_718_load", i64 13) + %"$adtval_718" = bitcast i8* %"$adtval_718_salloc" to %CName_Cons_Int32* + %"$adtgep_719" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_718", i32 0, i32 0 + store i8 0, i8* %"$adtgep_719" + %"$adtgep_720" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_718", i32 0, i32 1 + store %Int32 %1, %Int32* %"$adtgep_720" + %"$adtgep_721" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_718", i32 0, i32 2 + store %TName_List_Int32* %"$a1_717", %TName_List_Int32** %"$adtgep_721" + %"$adtptr_722" = bitcast %CName_Cons_Int32* %"$adtval_718" to %TName_List_Int32* + store %TName_List_Int32* %"$adtptr_722", %TName_List_Int32** %"$retval_54" + %"$$retval_54_723" = load %TName_List_Int32*, %TName_List_Int32** %"$retval_54" + ret %TName_List_Int32* %"$$retval_54_723" } define internal { %TName_List_Int32* (i8*, %Int32)*, i8* } @"$fundef_51"(%"$$fundef_51_env_131"* %0) { entry: %"$retval_52" = alloca { %TName_List_Int32* (i8*, %Int32)*, i8* } + %"$gasrem_674" = load i64, i64* @_gasrem + %"$gascmp_675" = icmp ugt i64 1, %"$gasrem_674" + br i1 %"$gascmp_675", label %"$out_of_gas_676", label %"$have_gas_677" + +"$out_of_gas_676": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_677" + +"$have_gas_677": ; preds = %"$out_of_gas_676", %entry + %"$consume_678" = sub i64 %"$gasrem_674", 1 + store i64 %"$consume_678", i64* @_gasrem store { %TName_List_Int32* (i8*, %Int32)*, i8* } { %TName_List_Int32* (i8*, %Int32)* bitcast (%TName_List_Int32* (%"$$fundef_53_env_130"*, %Int32)* @"$fundef_53" to %TName_List_Int32* (i8*, %Int32)*), i8* null }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$retval_52" - %"$$retval_52_437" = load { %TName_List_Int32* (i8*, %Int32)*, i8* }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$retval_52" - ret { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$$retval_52_437" + %"$$retval_52_682" = load { %TName_List_Int32* (i8*, %Int32)*, i8* }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$retval_52" + ret { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$$retval_52_682" } define internal %TName_List_Int64* @"$fundef_49"(%"$$fundef_49_env_132"* %0, %Int64 %1) { entry: %"$retval_50" = alloca %TName_List_Int64* + %"$gasrem_649" = load i64, i64* @_gasrem + %"$gascmp_650" = icmp ugt i64 1, %"$gasrem_649" + br i1 %"$gascmp_650", label %"$out_of_gas_651", label %"$have_gas_652" + +"$out_of_gas_651": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_652" + +"$have_gas_652": ; preds = %"$out_of_gas_651", %entry + %"$consume_653" = sub i64 %"$gasrem_649", 1 + store i64 %"$consume_653", i64* @_gasrem %an = alloca %TName_List_Int64* - %"$adtval_424_load" = load i8*, i8** @_execptr - %"$adtval_424_salloc" = call i8* @_salloc(i8* %"$adtval_424_load", i64 1) - %"$adtval_424" = bitcast i8* %"$adtval_424_salloc" to %CName_Nil_Int64* - %"$adtgep_425" = getelementptr inbounds %CName_Nil_Int64, %CName_Nil_Int64* %"$adtval_424", i32 0, i32 0 - store i8 1, i8* %"$adtgep_425" - %"$adtptr_426" = bitcast %CName_Nil_Int64* %"$adtval_424" to %TName_List_Int64* - store %TName_List_Int64* %"$adtptr_426", %TName_List_Int64** %an - %"$an_427" = load %TName_List_Int64*, %TName_List_Int64** %an - %"$adtval_428_load" = load i8*, i8** @_execptr - %"$adtval_428_salloc" = call i8* @_salloc(i8* %"$adtval_428_load", i64 17) - %"$adtval_428" = bitcast i8* %"$adtval_428_salloc" to %CName_Cons_Int64* - %"$adtgep_429" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_428", i32 0, i32 0 - store i8 0, i8* %"$adtgep_429" - %"$adtgep_430" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_428", i32 0, i32 1 - store %Int64 %1, %Int64* %"$adtgep_430" - %"$adtgep_431" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_428", i32 0, i32 2 - store %TName_List_Int64* %"$an_427", %TName_List_Int64** %"$adtgep_431" - %"$adtptr_432" = bitcast %CName_Cons_Int64* %"$adtval_428" to %TName_List_Int64* - store %TName_List_Int64* %"$adtptr_432", %TName_List_Int64** %"$retval_50" - %"$$retval_50_433" = load %TName_List_Int64*, %TName_List_Int64** %"$retval_50" - ret %TName_List_Int64* %"$$retval_50_433" + %"$gasrem_654" = load i64, i64* @_gasrem + %"$gascmp_655" = icmp ugt i64 1, %"$gasrem_654" + br i1 %"$gascmp_655", label %"$out_of_gas_656", label %"$have_gas_657" + +"$out_of_gas_656": ; preds = %"$have_gas_652" + call void @_out_of_gas() + br label %"$have_gas_657" + +"$have_gas_657": ; preds = %"$out_of_gas_656", %"$have_gas_652" + %"$consume_658" = sub i64 %"$gasrem_654", 1 + store i64 %"$consume_658", i64* @_gasrem + %"$adtval_659_load" = load i8*, i8** @_execptr + %"$adtval_659_salloc" = call i8* @_salloc(i8* %"$adtval_659_load", i64 1) + %"$adtval_659" = bitcast i8* %"$adtval_659_salloc" to %CName_Nil_Int64* + %"$adtgep_660" = getelementptr inbounds %CName_Nil_Int64, %CName_Nil_Int64* %"$adtval_659", i32 0, i32 0 + store i8 1, i8* %"$adtgep_660" + %"$adtptr_661" = bitcast %CName_Nil_Int64* %"$adtval_659" to %TName_List_Int64* + store %TName_List_Int64* %"$adtptr_661", %TName_List_Int64** %an + %"$gasrem_662" = load i64, i64* @_gasrem + %"$gascmp_663" = icmp ugt i64 1, %"$gasrem_662" + br i1 %"$gascmp_663", label %"$out_of_gas_664", label %"$have_gas_665" + +"$out_of_gas_664": ; preds = %"$have_gas_657" + call void @_out_of_gas() + br label %"$have_gas_665" + +"$have_gas_665": ; preds = %"$out_of_gas_664", %"$have_gas_657" + %"$consume_666" = sub i64 %"$gasrem_662", 1 + store i64 %"$consume_666", i64* @_gasrem + %"$an_667" = load %TName_List_Int64*, %TName_List_Int64** %an + %"$adtval_668_load" = load i8*, i8** @_execptr + %"$adtval_668_salloc" = call i8* @_salloc(i8* %"$adtval_668_load", i64 17) + %"$adtval_668" = bitcast i8* %"$adtval_668_salloc" to %CName_Cons_Int64* + %"$adtgep_669" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_668", i32 0, i32 0 + store i8 0, i8* %"$adtgep_669" + %"$adtgep_670" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_668", i32 0, i32 1 + store %Int64 %1, %Int64* %"$adtgep_670" + %"$adtgep_671" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$adtval_668", i32 0, i32 2 + store %TName_List_Int64* %"$an_667", %TName_List_Int64** %"$adtgep_671" + %"$adtptr_672" = bitcast %CName_Cons_Int64* %"$adtval_668" to %TName_List_Int64* + store %TName_List_Int64* %"$adtptr_672", %TName_List_Int64** %"$retval_50" + %"$$retval_50_673" = load %TName_List_Int64*, %TName_List_Int64** %"$retval_50" + ret %TName_List_Int64* %"$$retval_50_673" } define internal { %TName_List_Int64* (i8*, %Int64)*, i8* } @"$fundef_47"(%"$$fundef_47_env_133"* %0) { entry: %"$retval_48" = alloca { %TName_List_Int64* (i8*, %Int64)*, i8* } + %"$gasrem_640" = load i64, i64* @_gasrem + %"$gascmp_641" = icmp ugt i64 1, %"$gasrem_640" + br i1 %"$gascmp_641", label %"$out_of_gas_642", label %"$have_gas_643" + +"$out_of_gas_642": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_643" + +"$have_gas_643": ; preds = %"$out_of_gas_642", %entry + %"$consume_644" = sub i64 %"$gasrem_640", 1 + store i64 %"$consume_644", i64* @_gasrem store { %TName_List_Int64* (i8*, %Int64)*, i8* } { %TName_List_Int64* (i8*, %Int64)* bitcast (%TName_List_Int64* (%"$$fundef_49_env_132"*, %Int64)* @"$fundef_49" to %TName_List_Int64* (i8*, %Int64)*), i8* null }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$retval_48" - %"$$retval_48_423" = load { %TName_List_Int64* (i8*, %Int64)*, i8* }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$retval_48" - ret { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$$retval_48_423" + %"$$retval_48_648" = load { %TName_List_Int64* (i8*, %Int64)*, i8* }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %"$retval_48" + ret { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$$retval_48_648" } define internal %TName_List_Int32* @"$fundef_45"(%"$$fundef_45_env_134"* %0, %Int32 %1) { entry: %"$retval_46" = alloca %TName_List_Int32* + %"$gasrem_615" = load i64, i64* @_gasrem + %"$gascmp_616" = icmp ugt i64 1, %"$gasrem_615" + br i1 %"$gascmp_616", label %"$out_of_gas_617", label %"$have_gas_618" + +"$out_of_gas_617": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_618" + +"$have_gas_618": ; preds = %"$out_of_gas_617", %entry + %"$consume_619" = sub i64 %"$gasrem_615", 1 + store i64 %"$consume_619", i64* @_gasrem %an = alloca %TName_List_Int32* - %"$adtval_410_load" = load i8*, i8** @_execptr - %"$adtval_410_salloc" = call i8* @_salloc(i8* %"$adtval_410_load", i64 1) - %"$adtval_410" = bitcast i8* %"$adtval_410_salloc" to %CName_Nil_Int32* - %"$adtgep_411" = getelementptr inbounds %CName_Nil_Int32, %CName_Nil_Int32* %"$adtval_410", i32 0, i32 0 - store i8 1, i8* %"$adtgep_411" - %"$adtptr_412" = bitcast %CName_Nil_Int32* %"$adtval_410" to %TName_List_Int32* - store %TName_List_Int32* %"$adtptr_412", %TName_List_Int32** %an - %"$an_413" = load %TName_List_Int32*, %TName_List_Int32** %an - %"$adtval_414_load" = load i8*, i8** @_execptr - %"$adtval_414_salloc" = call i8* @_salloc(i8* %"$adtval_414_load", i64 13) - %"$adtval_414" = bitcast i8* %"$adtval_414_salloc" to %CName_Cons_Int32* - %"$adtgep_415" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_414", i32 0, i32 0 - store i8 0, i8* %"$adtgep_415" - %"$adtgep_416" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_414", i32 0, i32 1 - store %Int32 %1, %Int32* %"$adtgep_416" - %"$adtgep_417" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_414", i32 0, i32 2 - store %TName_List_Int32* %"$an_413", %TName_List_Int32** %"$adtgep_417" - %"$adtptr_418" = bitcast %CName_Cons_Int32* %"$adtval_414" to %TName_List_Int32* - store %TName_List_Int32* %"$adtptr_418", %TName_List_Int32** %"$retval_46" - %"$$retval_46_419" = load %TName_List_Int32*, %TName_List_Int32** %"$retval_46" - ret %TName_List_Int32* %"$$retval_46_419" + %"$gasrem_620" = load i64, i64* @_gasrem + %"$gascmp_621" = icmp ugt i64 1, %"$gasrem_620" + br i1 %"$gascmp_621", label %"$out_of_gas_622", label %"$have_gas_623" + +"$out_of_gas_622": ; preds = %"$have_gas_618" + call void @_out_of_gas() + br label %"$have_gas_623" + +"$have_gas_623": ; preds = %"$out_of_gas_622", %"$have_gas_618" + %"$consume_624" = sub i64 %"$gasrem_620", 1 + store i64 %"$consume_624", i64* @_gasrem + %"$adtval_625_load" = load i8*, i8** @_execptr + %"$adtval_625_salloc" = call i8* @_salloc(i8* %"$adtval_625_load", i64 1) + %"$adtval_625" = bitcast i8* %"$adtval_625_salloc" to %CName_Nil_Int32* + %"$adtgep_626" = getelementptr inbounds %CName_Nil_Int32, %CName_Nil_Int32* %"$adtval_625", i32 0, i32 0 + store i8 1, i8* %"$adtgep_626" + %"$adtptr_627" = bitcast %CName_Nil_Int32* %"$adtval_625" to %TName_List_Int32* + store %TName_List_Int32* %"$adtptr_627", %TName_List_Int32** %an + %"$gasrem_628" = load i64, i64* @_gasrem + %"$gascmp_629" = icmp ugt i64 1, %"$gasrem_628" + br i1 %"$gascmp_629", label %"$out_of_gas_630", label %"$have_gas_631" + +"$out_of_gas_630": ; preds = %"$have_gas_623" + call void @_out_of_gas() + br label %"$have_gas_631" + +"$have_gas_631": ; preds = %"$out_of_gas_630", %"$have_gas_623" + %"$consume_632" = sub i64 %"$gasrem_628", 1 + store i64 %"$consume_632", i64* @_gasrem + %"$an_633" = load %TName_List_Int32*, %TName_List_Int32** %an + %"$adtval_634_load" = load i8*, i8** @_execptr + %"$adtval_634_salloc" = call i8* @_salloc(i8* %"$adtval_634_load", i64 13) + %"$adtval_634" = bitcast i8* %"$adtval_634_salloc" to %CName_Cons_Int32* + %"$adtgep_635" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_634", i32 0, i32 0 + store i8 0, i8* %"$adtgep_635" + %"$adtgep_636" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_634", i32 0, i32 1 + store %Int32 %1, %Int32* %"$adtgep_636" + %"$adtgep_637" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$adtval_634", i32 0, i32 2 + store %TName_List_Int32* %"$an_633", %TName_List_Int32** %"$adtgep_637" + %"$adtptr_638" = bitcast %CName_Cons_Int32* %"$adtval_634" to %TName_List_Int32* + store %TName_List_Int32* %"$adtptr_638", %TName_List_Int32** %"$retval_46" + %"$$retval_46_639" = load %TName_List_Int32*, %TName_List_Int32** %"$retval_46" + ret %TName_List_Int32* %"$$retval_46_639" } define internal { %TName_List_Int32* (i8*, %Int32)*, i8* } @"$fundef_43"(%"$$fundef_43_env_135"* %0) { entry: %"$retval_44" = alloca { %TName_List_Int32* (i8*, %Int32)*, i8* } + %"$gasrem_606" = load i64, i64* @_gasrem + %"$gascmp_607" = icmp ugt i64 1, %"$gasrem_606" + br i1 %"$gascmp_607", label %"$out_of_gas_608", label %"$have_gas_609" + +"$out_of_gas_608": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_609" + +"$have_gas_609": ; preds = %"$out_of_gas_608", %entry + %"$consume_610" = sub i64 %"$gasrem_606", 1 + store i64 %"$consume_610", i64* @_gasrem store { %TName_List_Int32* (i8*, %Int32)*, i8* } { %TName_List_Int32* (i8*, %Int32)* bitcast (%TName_List_Int32* (%"$$fundef_45_env_134"*, %Int32)* @"$fundef_45" to %TName_List_Int32* (i8*, %Int32)*), i8* null }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$retval_44" - %"$$retval_44_409" = load { %TName_List_Int32* (i8*, %Int32)*, i8* }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$retval_44" - ret { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$$retval_44_409" + %"$$retval_44_614" = load { %TName_List_Int32* (i8*, %Int32)*, i8* }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %"$retval_44" + ret { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$$retval_44_614" } define internal %Uint32 @"$fundef_40"(%"$$fundef_40_env_136"* %0, %Int64 %1) { entry: - %"$$fundef_40_env_one_398" = getelementptr inbounds %"$$fundef_40_env_136", %"$$fundef_40_env_136"* %0, i32 0, i32 0 - %"$one_envload_399" = load %Uint32, %Uint32* %"$$fundef_40_env_one_398" + %"$$fundef_40_env_one_598" = getelementptr inbounds %"$$fundef_40_env_136", %"$$fundef_40_env_136"* %0, i32 0, i32 0 + %"$one_envload_599" = load %Uint32, %Uint32* %"$$fundef_40_env_one_598" %one = alloca %Uint32 - store %Uint32 %"$one_envload_399", %Uint32* %one - %"$$fundef_40_env_z_400" = getelementptr inbounds %"$$fundef_40_env_136", %"$$fundef_40_env_136"* %0, i32 0, i32 1 - %"$z_envload_401" = load %Uint32, %Uint32* %"$$fundef_40_env_z_400" + store %Uint32 %"$one_envload_599", %Uint32* %one + %"$$fundef_40_env_z_600" = getelementptr inbounds %"$$fundef_40_env_136", %"$$fundef_40_env_136"* %0, i32 0, i32 1 + %"$z_envload_601" = load %Uint32, %Uint32* %"$$fundef_40_env_z_600" %z = alloca %Uint32 - store %Uint32 %"$z_envload_401", %Uint32* %z + store %Uint32 %"$z_envload_601", %Uint32* %z %"$retval_41" = alloca %Uint32 - %"$one_402" = load %Uint32, %Uint32* %one - %"$z_403" = load %Uint32, %Uint32* %z - %"$add_call_404" = call %Uint32 @_add_Uint32(%Uint32 %"$one_402", %Uint32 %"$z_403") - store %Uint32 %"$add_call_404", %Uint32* %"$retval_41" - %"$$retval_41_405" = load %Uint32, %Uint32* %"$retval_41" - ret %Uint32 %"$$retval_41_405" + %"$one_602" = load %Uint32, %Uint32* %one + %"$z_603" = load %Uint32, %Uint32* %z + %"$add_call_604" = call %Uint32 @_add_Uint32(%Uint32 %"$one_602", %Uint32 %"$z_603") + store %Uint32 %"$add_call_604", %Uint32* %"$retval_41" + %"$$retval_41_605" = load %Uint32, %Uint32* %"$retval_41" + ret %Uint32 %"$$retval_41_605" } define internal { %Uint32 (i8*, %Int64)*, i8* } @"$fundef_38"(%"$$fundef_38_env_137"* %0, %Uint32 %1) { entry: - %"$$fundef_38_env_one_388" = getelementptr inbounds %"$$fundef_38_env_137", %"$$fundef_38_env_137"* %0, i32 0, i32 0 - %"$one_envload_389" = load %Uint32, %Uint32* %"$$fundef_38_env_one_388" + %"$$fundef_38_env_one_583" = getelementptr inbounds %"$$fundef_38_env_137", %"$$fundef_38_env_137"* %0, i32 0, i32 0 + %"$one_envload_584" = load %Uint32, %Uint32* %"$$fundef_38_env_one_583" %one = alloca %Uint32 - store %Uint32 %"$one_envload_389", %Uint32* %one + store %Uint32 %"$one_envload_584", %Uint32* %one %"$retval_39" = alloca { %Uint32 (i8*, %Int64)*, i8* } - %"$$fundef_40_envp_390_load" = load i8*, i8** @_execptr - %"$$fundef_40_envp_390_salloc" = call i8* @_salloc(i8* %"$$fundef_40_envp_390_load", i64 8) - %"$$fundef_40_envp_390" = bitcast i8* %"$$fundef_40_envp_390_salloc" to %"$$fundef_40_env_136"* - %"$$fundef_40_env_voidp_392" = bitcast %"$$fundef_40_env_136"* %"$$fundef_40_envp_390" to i8* - %"$$fundef_40_cloval_393" = insertvalue { %Uint32 (i8*, %Int64)*, i8* } { %Uint32 (i8*, %Int64)* bitcast (%Uint32 (%"$$fundef_40_env_136"*, %Int64)* @"$fundef_40" to %Uint32 (i8*, %Int64)*), i8* undef }, i8* %"$$fundef_40_env_voidp_392", 1 - %"$$fundef_40_env_one_394" = getelementptr inbounds %"$$fundef_40_env_136", %"$$fundef_40_env_136"* %"$$fundef_40_envp_390", i32 0, i32 0 - %"$one_395" = load %Uint32, %Uint32* %one - store %Uint32 %"$one_395", %Uint32* %"$$fundef_40_env_one_394" - %"$$fundef_40_env_z_396" = getelementptr inbounds %"$$fundef_40_env_136", %"$$fundef_40_env_136"* %"$$fundef_40_envp_390", i32 0, i32 1 - store %Uint32 %1, %Uint32* %"$$fundef_40_env_z_396" - store { %Uint32 (i8*, %Int64)*, i8* } %"$$fundef_40_cloval_393", { %Uint32 (i8*, %Int64)*, i8* }* %"$retval_39" - %"$$retval_39_397" = load { %Uint32 (i8*, %Int64)*, i8* }, { %Uint32 (i8*, %Int64)*, i8* }* %"$retval_39" - ret { %Uint32 (i8*, %Int64)*, i8* } %"$$retval_39_397" + %"$gasrem_585" = load i64, i64* @_gasrem + %"$gascmp_586" = icmp ugt i64 1, %"$gasrem_585" + br i1 %"$gascmp_586", label %"$out_of_gas_587", label %"$have_gas_588" + +"$out_of_gas_587": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_588" + +"$have_gas_588": ; preds = %"$out_of_gas_587", %entry + %"$consume_589" = sub i64 %"$gasrem_585", 1 + store i64 %"$consume_589", i64* @_gasrem + %"$$fundef_40_envp_590_load" = load i8*, i8** @_execptr + %"$$fundef_40_envp_590_salloc" = call i8* @_salloc(i8* %"$$fundef_40_envp_590_load", i64 8) + %"$$fundef_40_envp_590" = bitcast i8* %"$$fundef_40_envp_590_salloc" to %"$$fundef_40_env_136"* + %"$$fundef_40_env_voidp_592" = bitcast %"$$fundef_40_env_136"* %"$$fundef_40_envp_590" to i8* + %"$$fundef_40_cloval_593" = insertvalue { %Uint32 (i8*, %Int64)*, i8* } { %Uint32 (i8*, %Int64)* bitcast (%Uint32 (%"$$fundef_40_env_136"*, %Int64)* @"$fundef_40" to %Uint32 (i8*, %Int64)*), i8* undef }, i8* %"$$fundef_40_env_voidp_592", 1 + %"$$fundef_40_env_one_594" = getelementptr inbounds %"$$fundef_40_env_136", %"$$fundef_40_env_136"* %"$$fundef_40_envp_590", i32 0, i32 0 + %"$one_595" = load %Uint32, %Uint32* %one + store %Uint32 %"$one_595", %Uint32* %"$$fundef_40_env_one_594" + %"$$fundef_40_env_z_596" = getelementptr inbounds %"$$fundef_40_env_136", %"$$fundef_40_env_136"* %"$$fundef_40_envp_590", i32 0, i32 1 + store %Uint32 %1, %Uint32* %"$$fundef_40_env_z_596" + store { %Uint32 (i8*, %Int64)*, i8* } %"$$fundef_40_cloval_593", { %Uint32 (i8*, %Int64)*, i8* }* %"$retval_39" + %"$$retval_39_597" = load { %Uint32 (i8*, %Int64)*, i8* }, { %Uint32 (i8*, %Int64)*, i8* }* %"$retval_39" + ret { %Uint32 (i8*, %Int64)*, i8* } %"$$retval_39_597" } define internal { %Uint32 (i8*, %TName_List_Int64*)*, i8* } @"$fundef_36"(%"$$fundef_36_env_138"* %0) { entry: - %"$$fundef_36_env_list_foldl_355" = getelementptr inbounds %"$$fundef_36_env_138", %"$$fundef_36_env_138"* %0, i32 0, i32 0 - %"$list_foldl_envload_356" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_36_env_list_foldl_355" + %"$$fundef_36_env_list_foldl_505" = getelementptr inbounds %"$$fundef_36_env_138", %"$$fundef_36_env_138"* %0, i32 0, i32 0 + %"$list_foldl_envload_506" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_36_env_list_foldl_505" %list_foldl = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_foldl_envload_356", { i8*, i8* }** %list_foldl + store { i8*, i8* }* %"$list_foldl_envload_506", { i8*, i8* }** %list_foldl %"$retval_37" = alloca { %Uint32 (i8*, %TName_List_Int64*)*, i8* } + %"$gasrem_507" = load i64, i64* @_gasrem + %"$gascmp_508" = icmp ugt i64 1, %"$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", 1 + store i64 %"$consume_511", i64* @_gasrem %foldl = alloca { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } - %"$list_foldl_357" = load { i8*, i8* }*, { i8*, i8* }** %list_foldl - %"$list_foldl_358" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_357", i32 2 - %"$list_foldl_359" = bitcast { i8*, i8* }* %"$list_foldl_358" to { { i8*, i8* }* (i8*)*, i8* }* - %"$list_foldl_360" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$list_foldl_359" - %"$list_foldl_fptr_361" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_360", 0 - %"$list_foldl_envptr_362" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_360", 1 - %"$list_foldl_call_363" = call { i8*, i8* }* %"$list_foldl_fptr_361"(i8* %"$list_foldl_envptr_362") - %"$list_foldl_364" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_call_363", i32 1 - %"$list_foldl_365" = bitcast { i8*, i8* }* %"$list_foldl_364" to { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - %"$list_foldl_366" = load { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_foldl_365" - %"$list_foldl_fptr_367" = extractvalue { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_366", 0 - %"$list_foldl_envptr_368" = extractvalue { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_366", 1 - %"$list_foldl_call_369" = call { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_fptr_367"(i8* %"$list_foldl_envptr_368") - store { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_call_369", { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl + %"$gasrem_512" = load i64, i64* @_gasrem + %"$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 + %"$list_foldl_517" = load { i8*, i8* }*, { i8*, i8* }** %list_foldl + %"$list_foldl_518" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_517", i32 2 + %"$list_foldl_519" = bitcast { i8*, i8* }* %"$list_foldl_518" to { { i8*, i8* }* (i8*)*, i8* }* + %"$list_foldl_520" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$list_foldl_519" + %"$list_foldl_fptr_521" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_520", 0 + %"$list_foldl_envptr_522" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_520", 1 + %"$list_foldl_call_523" = call { i8*, i8* }* %"$list_foldl_fptr_521"(i8* %"$list_foldl_envptr_522") + %"$list_foldl_524" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_call_523", i32 1 + %"$list_foldl_525" = bitcast { i8*, i8* }* %"$list_foldl_524" to { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + %"$list_foldl_526" = load { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_foldl_525" + %"$list_foldl_fptr_527" = extractvalue { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_526", 0 + %"$list_foldl_envptr_528" = extractvalue { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_526", 1 + %"$list_foldl_call_529" = call { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_fptr_527"(i8* %"$list_foldl_envptr_528") + store { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_call_529", { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl + %"$gasrem_530" = load i64, i64* @_gasrem + %"$gascmp_531" = icmp ugt i64 1, %"$gasrem_530" + br i1 %"$gascmp_531", label %"$out_of_gas_532", label %"$have_gas_533" + +"$out_of_gas_532": ; preds = %"$have_gas_515" + call void @_out_of_gas() + br label %"$have_gas_533" + +"$have_gas_533": ; preds = %"$out_of_gas_532", %"$have_gas_515" + %"$consume_534" = sub i64 %"$gasrem_530", 1 + store i64 %"$consume_534", i64* @_gasrem %one = alloca %Uint32 + %"$gasrem_535" = load i64, i64* @_gasrem + %"$gascmp_536" = icmp ugt i64 1, %"$gasrem_535" + br i1 %"$gascmp_536", label %"$out_of_gas_537", label %"$have_gas_538" + +"$out_of_gas_537": ; preds = %"$have_gas_533" + call void @_out_of_gas() + br label %"$have_gas_538" + +"$have_gas_538": ; preds = %"$out_of_gas_537", %"$have_gas_533" + %"$consume_539" = sub i64 %"$gasrem_535", 1 + store i64 %"$consume_539", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %one + %"$gasrem_540" = load i64, i64* @_gasrem + %"$gascmp_541" = icmp ugt i64 1, %"$gasrem_540" + br i1 %"$gascmp_541", label %"$out_of_gas_542", label %"$have_gas_543" + +"$out_of_gas_542": ; preds = %"$have_gas_538" + call void @_out_of_gas() + br label %"$have_gas_543" + +"$have_gas_543": ; preds = %"$out_of_gas_542", %"$have_gas_538" + %"$consume_544" = sub i64 %"$gasrem_540", 1 + store i64 %"$consume_544", i64* @_gasrem %iter = alloca { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } - %"$$fundef_38_envp_370_load" = load i8*, i8** @_execptr - %"$$fundef_38_envp_370_salloc" = call i8* @_salloc(i8* %"$$fundef_38_envp_370_load", i64 4) - %"$$fundef_38_envp_370" = bitcast i8* %"$$fundef_38_envp_370_salloc" to %"$$fundef_38_env_137"* - %"$$fundef_38_env_voidp_372" = bitcast %"$$fundef_38_env_137"* %"$$fundef_38_envp_370" to i8* - %"$$fundef_38_cloval_373" = insertvalue { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %Int64)*, i8* } (%"$$fundef_38_env_137"*, %Uint32)* @"$fundef_38" to { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_38_env_voidp_372", 1 - %"$$fundef_38_env_one_374" = getelementptr inbounds %"$$fundef_38_env_137", %"$$fundef_38_env_137"* %"$$fundef_38_envp_370", i32 0, i32 0 - %"$one_375" = load %Uint32, %Uint32* %one - store %Uint32 %"$one_375", %Uint32* %"$$fundef_38_env_one_374" - store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_38_cloval_373", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %iter + %"$gasrem_545" = load i64, i64* @_gasrem + %"$gascmp_546" = icmp ugt i64 1, %"$gasrem_545" + br i1 %"$gascmp_546", label %"$out_of_gas_547", label %"$have_gas_548" + +"$out_of_gas_547": ; preds = %"$have_gas_543" + call void @_out_of_gas() + br label %"$have_gas_548" + +"$have_gas_548": ; preds = %"$out_of_gas_547", %"$have_gas_543" + %"$consume_549" = sub i64 %"$gasrem_545", 1 + store i64 %"$consume_549", i64* @_gasrem + %"$$fundef_38_envp_550_load" = load i8*, i8** @_execptr + %"$$fundef_38_envp_550_salloc" = call i8* @_salloc(i8* %"$$fundef_38_envp_550_load", i64 4) + %"$$fundef_38_envp_550" = bitcast i8* %"$$fundef_38_envp_550_salloc" to %"$$fundef_38_env_137"* + %"$$fundef_38_env_voidp_552" = bitcast %"$$fundef_38_env_137"* %"$$fundef_38_envp_550" to i8* + %"$$fundef_38_cloval_553" = insertvalue { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %Int64)*, i8* } (%"$$fundef_38_env_137"*, %Uint32)* @"$fundef_38" to { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_38_env_voidp_552", 1 + %"$$fundef_38_env_one_554" = getelementptr inbounds %"$$fundef_38_env_137", %"$$fundef_38_env_137"* %"$$fundef_38_envp_550", i32 0, i32 0 + %"$one_555" = load %Uint32, %Uint32* %one + store %Uint32 %"$one_555", %Uint32* %"$$fundef_38_env_one_554" + store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_38_cloval_553", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %iter + %"$gasrem_556" = load i64, i64* @_gasrem + %"$gascmp_557" = icmp ugt i64 1, %"$gasrem_556" + br i1 %"$gascmp_557", label %"$out_of_gas_558", label %"$have_gas_559" + +"$out_of_gas_558": ; preds = %"$have_gas_548" + call void @_out_of_gas() + br label %"$have_gas_559" + +"$have_gas_559": ; preds = %"$out_of_gas_558", %"$have_gas_548" + %"$consume_560" = sub i64 %"$gasrem_556", 1 + store i64 %"$consume_560", i64* @_gasrem %init = alloca %Uint32 + %"$gasrem_561" = load i64, i64* @_gasrem + %"$gascmp_562" = icmp ugt i64 1, %"$gasrem_561" + br i1 %"$gascmp_562", label %"$out_of_gas_563", label %"$have_gas_564" + +"$out_of_gas_563": ; preds = %"$have_gas_559" + call void @_out_of_gas() + br label %"$have_gas_564" + +"$have_gas_564": ; preds = %"$out_of_gas_563", %"$have_gas_559" + %"$consume_565" = sub i64 %"$gasrem_561", 1 + store i64 %"$consume_565", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %init + %"$gasrem_566" = load i64, i64* @_gasrem + %"$gascmp_567" = icmp ugt i64 1, %"$gasrem_566" + br i1 %"$gascmp_567", label %"$out_of_gas_568", label %"$have_gas_569" + +"$out_of_gas_568": ; preds = %"$have_gas_564" + call void @_out_of_gas() + br label %"$have_gas_569" + +"$have_gas_569": ; preds = %"$out_of_gas_568", %"$have_gas_564" + %"$consume_570" = sub i64 %"$gasrem_566", 1 + store i64 %"$consume_570", i64* @_gasrem %"$foldl_4" = alloca { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } - %"$foldl_376" = load { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl - %"$foldl_fptr_377" = extractvalue { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_376", 0 - %"$foldl_envptr_378" = extractvalue { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_376", 1 - %"$iter_379" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %iter - %"$foldl_call_380" = call { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_fptr_377"(i8* %"$foldl_envptr_378", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$iter_379") - store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_call_380", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" + %"$foldl_571" = load { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl + %"$foldl_fptr_572" = extractvalue { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_571", 0 + %"$foldl_envptr_573" = extractvalue { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_571", 1 + %"$iter_574" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %iter + %"$foldl_call_575" = call { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_fptr_572"(i8* %"$foldl_envptr_573", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$iter_574") + store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_call_575", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" %"$foldl_5" = alloca { %Uint32 (i8*, %TName_List_Int64*)*, i8* } - %"$$foldl_4_381" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" - %"$$foldl_4_fptr_382" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_381", 0 - %"$$foldl_4_envptr_383" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_381", 1 - %"$init_384" = load %Uint32, %Uint32* %init - %"$$foldl_4_call_385" = call { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$foldl_4_fptr_382"(i8* %"$$foldl_4_envptr_383", %Uint32 %"$init_384") - store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$foldl_4_call_385", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$foldl_5" - %"$$foldl_5_386" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$foldl_5" - store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$foldl_5_386", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$retval_37" - %"$$retval_37_387" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$retval_37" - ret { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$retval_37_387" + %"$$foldl_4_576" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" + %"$$foldl_4_fptr_577" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_576", 0 + %"$$foldl_4_envptr_578" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_576", 1 + %"$init_579" = load %Uint32, %Uint32* %init + %"$$foldl_4_call_580" = call { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$foldl_4_fptr_577"(i8* %"$$foldl_4_envptr_578", %Uint32 %"$init_579") + store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$foldl_4_call_580", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$foldl_5" + %"$$foldl_5_581" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$foldl_5" + store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$foldl_5_581", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$retval_37" + %"$$retval_37_582" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$retval_37" + ret { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$retval_37_582" } define internal %Uint32 @"$fundef_34"(%"$$fundef_34_env_139"* %0, %Int32 %1) { entry: - %"$$fundef_34_env_one_347" = getelementptr inbounds %"$$fundef_34_env_139", %"$$fundef_34_env_139"* %0, i32 0, i32 0 - %"$one_envload_348" = load %Uint32, %Uint32* %"$$fundef_34_env_one_347" + %"$$fundef_34_env_one_497" = getelementptr inbounds %"$$fundef_34_env_139", %"$$fundef_34_env_139"* %0, i32 0, i32 0 + %"$one_envload_498" = load %Uint32, %Uint32* %"$$fundef_34_env_one_497" %one = alloca %Uint32 - store %Uint32 %"$one_envload_348", %Uint32* %one - %"$$fundef_34_env_z_349" = getelementptr inbounds %"$$fundef_34_env_139", %"$$fundef_34_env_139"* %0, i32 0, i32 1 - %"$z_envload_350" = load %Uint32, %Uint32* %"$$fundef_34_env_z_349" + store %Uint32 %"$one_envload_498", %Uint32* %one + %"$$fundef_34_env_z_499" = getelementptr inbounds %"$$fundef_34_env_139", %"$$fundef_34_env_139"* %0, i32 0, i32 1 + %"$z_envload_500" = load %Uint32, %Uint32* %"$$fundef_34_env_z_499" %z = alloca %Uint32 - store %Uint32 %"$z_envload_350", %Uint32* %z + store %Uint32 %"$z_envload_500", %Uint32* %z %"$retval_35" = alloca %Uint32 - %"$one_351" = load %Uint32, %Uint32* %one - %"$z_352" = load %Uint32, %Uint32* %z - %"$add_call_353" = call %Uint32 @_add_Uint32(%Uint32 %"$one_351", %Uint32 %"$z_352") - store %Uint32 %"$add_call_353", %Uint32* %"$retval_35" - %"$$retval_35_354" = load %Uint32, %Uint32* %"$retval_35" - ret %Uint32 %"$$retval_35_354" + %"$one_501" = load %Uint32, %Uint32* %one + %"$z_502" = load %Uint32, %Uint32* %z + %"$add_call_503" = call %Uint32 @_add_Uint32(%Uint32 %"$one_501", %Uint32 %"$z_502") + store %Uint32 %"$add_call_503", %Uint32* %"$retval_35" + %"$$retval_35_504" = load %Uint32, %Uint32* %"$retval_35" + ret %Uint32 %"$$retval_35_504" } define internal { %Uint32 (i8*, %Int32)*, i8* } @"$fundef_32"(%"$$fundef_32_env_140"* %0, %Uint32 %1) { entry: - %"$$fundef_32_env_one_337" = getelementptr inbounds %"$$fundef_32_env_140", %"$$fundef_32_env_140"* %0, i32 0, i32 0 - %"$one_envload_338" = load %Uint32, %Uint32* %"$$fundef_32_env_one_337" + %"$$fundef_32_env_one_482" = getelementptr inbounds %"$$fundef_32_env_140", %"$$fundef_32_env_140"* %0, i32 0, i32 0 + %"$one_envload_483" = load %Uint32, %Uint32* %"$$fundef_32_env_one_482" %one = alloca %Uint32 - store %Uint32 %"$one_envload_338", %Uint32* %one + store %Uint32 %"$one_envload_483", %Uint32* %one %"$retval_33" = alloca { %Uint32 (i8*, %Int32)*, i8* } - %"$$fundef_34_envp_339_load" = load i8*, i8** @_execptr - %"$$fundef_34_envp_339_salloc" = call i8* @_salloc(i8* %"$$fundef_34_envp_339_load", i64 8) - %"$$fundef_34_envp_339" = bitcast i8* %"$$fundef_34_envp_339_salloc" to %"$$fundef_34_env_139"* - %"$$fundef_34_env_voidp_341" = bitcast %"$$fundef_34_env_139"* %"$$fundef_34_envp_339" to i8* - %"$$fundef_34_cloval_342" = insertvalue { %Uint32 (i8*, %Int32)*, i8* } { %Uint32 (i8*, %Int32)* bitcast (%Uint32 (%"$$fundef_34_env_139"*, %Int32)* @"$fundef_34" to %Uint32 (i8*, %Int32)*), i8* undef }, i8* %"$$fundef_34_env_voidp_341", 1 - %"$$fundef_34_env_one_343" = getelementptr inbounds %"$$fundef_34_env_139", %"$$fundef_34_env_139"* %"$$fundef_34_envp_339", i32 0, i32 0 - %"$one_344" = load %Uint32, %Uint32* %one - store %Uint32 %"$one_344", %Uint32* %"$$fundef_34_env_one_343" - %"$$fundef_34_env_z_345" = getelementptr inbounds %"$$fundef_34_env_139", %"$$fundef_34_env_139"* %"$$fundef_34_envp_339", i32 0, i32 1 - store %Uint32 %1, %Uint32* %"$$fundef_34_env_z_345" - store { %Uint32 (i8*, %Int32)*, i8* } %"$$fundef_34_cloval_342", { %Uint32 (i8*, %Int32)*, i8* }* %"$retval_33" - %"$$retval_33_346" = load { %Uint32 (i8*, %Int32)*, i8* }, { %Uint32 (i8*, %Int32)*, i8* }* %"$retval_33" - ret { %Uint32 (i8*, %Int32)*, i8* } %"$$retval_33_346" + %"$gasrem_484" = load i64, i64* @_gasrem + %"$gascmp_485" = icmp ugt i64 1, %"$gasrem_484" + br i1 %"$gascmp_485", label %"$out_of_gas_486", label %"$have_gas_487" + +"$out_of_gas_486": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_487" + +"$have_gas_487": ; preds = %"$out_of_gas_486", %entry + %"$consume_488" = sub i64 %"$gasrem_484", 1 + store i64 %"$consume_488", i64* @_gasrem + %"$$fundef_34_envp_489_load" = load i8*, i8** @_execptr + %"$$fundef_34_envp_489_salloc" = call i8* @_salloc(i8* %"$$fundef_34_envp_489_load", i64 8) + %"$$fundef_34_envp_489" = bitcast i8* %"$$fundef_34_envp_489_salloc" to %"$$fundef_34_env_139"* + %"$$fundef_34_env_voidp_491" = bitcast %"$$fundef_34_env_139"* %"$$fundef_34_envp_489" to i8* + %"$$fundef_34_cloval_492" = insertvalue { %Uint32 (i8*, %Int32)*, i8* } { %Uint32 (i8*, %Int32)* bitcast (%Uint32 (%"$$fundef_34_env_139"*, %Int32)* @"$fundef_34" to %Uint32 (i8*, %Int32)*), i8* undef }, i8* %"$$fundef_34_env_voidp_491", 1 + %"$$fundef_34_env_one_493" = getelementptr inbounds %"$$fundef_34_env_139", %"$$fundef_34_env_139"* %"$$fundef_34_envp_489", i32 0, i32 0 + %"$one_494" = load %Uint32, %Uint32* %one + store %Uint32 %"$one_494", %Uint32* %"$$fundef_34_env_one_493" + %"$$fundef_34_env_z_495" = getelementptr inbounds %"$$fundef_34_env_139", %"$$fundef_34_env_139"* %"$$fundef_34_envp_489", i32 0, i32 1 + store %Uint32 %1, %Uint32* %"$$fundef_34_env_z_495" + store { %Uint32 (i8*, %Int32)*, i8* } %"$$fundef_34_cloval_492", { %Uint32 (i8*, %Int32)*, i8* }* %"$retval_33" + %"$$retval_33_496" = load { %Uint32 (i8*, %Int32)*, i8* }, { %Uint32 (i8*, %Int32)*, i8* }* %"$retval_33" + ret { %Uint32 (i8*, %Int32)*, i8* } %"$$retval_33_496" } define internal { %Uint32 (i8*, %TName_List_Int32*)*, i8* } @"$fundef_30"(%"$$fundef_30_env_141"* %0) { entry: - %"$$fundef_30_env_list_foldl_304" = getelementptr inbounds %"$$fundef_30_env_141", %"$$fundef_30_env_141"* %0, i32 0, i32 0 - %"$list_foldl_envload_305" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_30_env_list_foldl_304" + %"$$fundef_30_env_list_foldl_404" = getelementptr inbounds %"$$fundef_30_env_141", %"$$fundef_30_env_141"* %0, i32 0, i32 0 + %"$list_foldl_envload_405" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_30_env_list_foldl_404" %list_foldl = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_foldl_envload_305", { i8*, i8* }** %list_foldl + store { i8*, i8* }* %"$list_foldl_envload_405", { i8*, i8* }** %list_foldl %"$retval_31" = alloca { %Uint32 (i8*, %TName_List_Int32*)*, i8* } + %"$gasrem_406" = load i64, i64* @_gasrem + %"$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 %foldl = alloca { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } - %"$list_foldl_306" = load { i8*, i8* }*, { i8*, i8* }** %list_foldl - %"$list_foldl_307" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_306", i32 0 - %"$list_foldl_308" = bitcast { i8*, i8* }* %"$list_foldl_307" to { { i8*, i8* }* (i8*)*, i8* }* - %"$list_foldl_309" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$list_foldl_308" - %"$list_foldl_fptr_310" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_309", 0 - %"$list_foldl_envptr_311" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_309", 1 - %"$list_foldl_call_312" = call { i8*, i8* }* %"$list_foldl_fptr_310"(i8* %"$list_foldl_envptr_311") - %"$list_foldl_313" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_call_312", i32 1 - %"$list_foldl_314" = bitcast { i8*, i8* }* %"$list_foldl_313" to { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - %"$list_foldl_315" = load { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_foldl_314" - %"$list_foldl_fptr_316" = extractvalue { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_315", 0 - %"$list_foldl_envptr_317" = extractvalue { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_315", 1 - %"$list_foldl_call_318" = call { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_fptr_316"(i8* %"$list_foldl_envptr_317") - store { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_call_318", { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl + %"$gasrem_411" = load i64, i64* @_gasrem + %"$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_409" + call void @_out_of_gas() + br label %"$have_gas_414" + +"$have_gas_414": ; preds = %"$out_of_gas_413", %"$have_gas_409" + %"$consume_415" = sub i64 %"$gasrem_411", 1 + store i64 %"$consume_415", i64* @_gasrem + %"$list_foldl_416" = load { i8*, i8* }*, { i8*, i8* }** %list_foldl + %"$list_foldl_417" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_416", i32 0 + %"$list_foldl_418" = bitcast { i8*, i8* }* %"$list_foldl_417" to { { i8*, i8* }* (i8*)*, i8* }* + %"$list_foldl_419" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$list_foldl_418" + %"$list_foldl_fptr_420" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_419", 0 + %"$list_foldl_envptr_421" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_419", 1 + %"$list_foldl_call_422" = call { i8*, i8* }* %"$list_foldl_fptr_420"(i8* %"$list_foldl_envptr_421") + %"$list_foldl_423" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_call_422", i32 1 + %"$list_foldl_424" = bitcast { i8*, i8* }* %"$list_foldl_423" to { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + %"$list_foldl_425" = load { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_foldl_424" + %"$list_foldl_fptr_426" = extractvalue { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_425", 0 + %"$list_foldl_envptr_427" = extractvalue { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_425", 1 + %"$list_foldl_call_428" = call { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_fptr_426"(i8* %"$list_foldl_envptr_427") + store { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_call_428", { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl + %"$gasrem_429" = load i64, i64* @_gasrem + %"$gascmp_430" = icmp ugt i64 1, %"$gasrem_429" + br i1 %"$gascmp_430", label %"$out_of_gas_431", label %"$have_gas_432" + +"$out_of_gas_431": ; preds = %"$have_gas_414" + call void @_out_of_gas() + br label %"$have_gas_432" + +"$have_gas_432": ; preds = %"$out_of_gas_431", %"$have_gas_414" + %"$consume_433" = sub i64 %"$gasrem_429", 1 + store i64 %"$consume_433", i64* @_gasrem %one = alloca %Uint32 + %"$gasrem_434" = load i64, i64* @_gasrem + %"$gascmp_435" = icmp ugt i64 1, %"$gasrem_434" + br i1 %"$gascmp_435", label %"$out_of_gas_436", label %"$have_gas_437" + +"$out_of_gas_436": ; preds = %"$have_gas_432" + call void @_out_of_gas() + br label %"$have_gas_437" + +"$have_gas_437": ; preds = %"$out_of_gas_436", %"$have_gas_432" + %"$consume_438" = sub i64 %"$gasrem_434", 1 + store i64 %"$consume_438", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %one + %"$gasrem_439" = load i64, i64* @_gasrem + %"$gascmp_440" = icmp ugt i64 1, %"$gasrem_439" + br i1 %"$gascmp_440", label %"$out_of_gas_441", label %"$have_gas_442" + +"$out_of_gas_441": ; preds = %"$have_gas_437" + call void @_out_of_gas() + br label %"$have_gas_442" + +"$have_gas_442": ; preds = %"$out_of_gas_441", %"$have_gas_437" + %"$consume_443" = sub i64 %"$gasrem_439", 1 + store i64 %"$consume_443", i64* @_gasrem %iter = alloca { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } - %"$$fundef_32_envp_319_load" = load i8*, i8** @_execptr - %"$$fundef_32_envp_319_salloc" = call i8* @_salloc(i8* %"$$fundef_32_envp_319_load", i64 4) - %"$$fundef_32_envp_319" = bitcast i8* %"$$fundef_32_envp_319_salloc" to %"$$fundef_32_env_140"* - %"$$fundef_32_env_voidp_321" = bitcast %"$$fundef_32_env_140"* %"$$fundef_32_envp_319" to i8* - %"$$fundef_32_cloval_322" = insertvalue { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %Int32)*, i8* } (%"$$fundef_32_env_140"*, %Uint32)* @"$fundef_32" to { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_32_env_voidp_321", 1 - %"$$fundef_32_env_one_323" = getelementptr inbounds %"$$fundef_32_env_140", %"$$fundef_32_env_140"* %"$$fundef_32_envp_319", i32 0, i32 0 - %"$one_324" = load %Uint32, %Uint32* %one - store %Uint32 %"$one_324", %Uint32* %"$$fundef_32_env_one_323" - store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_32_cloval_322", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %iter + %"$gasrem_444" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_442" + call void @_out_of_gas() + br label %"$have_gas_447" + +"$have_gas_447": ; preds = %"$out_of_gas_446", %"$have_gas_442" + %"$consume_448" = sub i64 %"$gasrem_444", 1 + store i64 %"$consume_448", i64* @_gasrem + %"$$fundef_32_envp_449_load" = load i8*, i8** @_execptr + %"$$fundef_32_envp_449_salloc" = call i8* @_salloc(i8* %"$$fundef_32_envp_449_load", i64 4) + %"$$fundef_32_envp_449" = bitcast i8* %"$$fundef_32_envp_449_salloc" to %"$$fundef_32_env_140"* + %"$$fundef_32_env_voidp_451" = bitcast %"$$fundef_32_env_140"* %"$$fundef_32_envp_449" to i8* + %"$$fundef_32_cloval_452" = insertvalue { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %Int32)*, i8* } (%"$$fundef_32_env_140"*, %Uint32)* @"$fundef_32" to { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_32_env_voidp_451", 1 + %"$$fundef_32_env_one_453" = getelementptr inbounds %"$$fundef_32_env_140", %"$$fundef_32_env_140"* %"$$fundef_32_envp_449", i32 0, i32 0 + %"$one_454" = load %Uint32, %Uint32* %one + store %Uint32 %"$one_454", %Uint32* %"$$fundef_32_env_one_453" + store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_32_cloval_452", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %iter + %"$gasrem_455" = load i64, i64* @_gasrem + %"$gascmp_456" = icmp ugt i64 1, %"$gasrem_455" + br i1 %"$gascmp_456", label %"$out_of_gas_457", label %"$have_gas_458" + +"$out_of_gas_457": ; preds = %"$have_gas_447" + call void @_out_of_gas() + br label %"$have_gas_458" + +"$have_gas_458": ; preds = %"$out_of_gas_457", %"$have_gas_447" + %"$consume_459" = sub i64 %"$gasrem_455", 1 + store i64 %"$consume_459", i64* @_gasrem %init = alloca %Uint32 + %"$gasrem_460" = load i64, i64* @_gasrem + %"$gascmp_461" = icmp ugt i64 1, %"$gasrem_460" + br i1 %"$gascmp_461", label %"$out_of_gas_462", label %"$have_gas_463" + +"$out_of_gas_462": ; preds = %"$have_gas_458" + call void @_out_of_gas() + br label %"$have_gas_463" + +"$have_gas_463": ; preds = %"$out_of_gas_462", %"$have_gas_458" + %"$consume_464" = sub i64 %"$gasrem_460", 1 + store i64 %"$consume_464", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %init + %"$gasrem_465" = load i64, i64* @_gasrem + %"$gascmp_466" = icmp ugt i64 1, %"$gasrem_465" + br i1 %"$gascmp_466", label %"$out_of_gas_467", label %"$have_gas_468" + +"$out_of_gas_467": ; preds = %"$have_gas_463" + call void @_out_of_gas() + br label %"$have_gas_468" + +"$have_gas_468": ; preds = %"$out_of_gas_467", %"$have_gas_463" + %"$consume_469" = sub i64 %"$gasrem_465", 1 + store i64 %"$consume_469", i64* @_gasrem %"$foldl_4" = alloca { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } - %"$foldl_325" = load { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl - %"$foldl_fptr_326" = extractvalue { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_325", 0 - %"$foldl_envptr_327" = extractvalue { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_325", 1 - %"$iter_328" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %iter - %"$foldl_call_329" = call { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_fptr_326"(i8* %"$foldl_envptr_327", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$iter_328") - store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_call_329", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" + %"$foldl_470" = load { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl + %"$foldl_fptr_471" = extractvalue { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_470", 0 + %"$foldl_envptr_472" = extractvalue { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_470", 1 + %"$iter_473" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %iter + %"$foldl_call_474" = call { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_fptr_471"(i8* %"$foldl_envptr_472", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$iter_473") + store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_call_474", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" %"$foldl_5" = alloca { %Uint32 (i8*, %TName_List_Int32*)*, i8* } - %"$$foldl_4_330" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" - %"$$foldl_4_fptr_331" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_330", 0 - %"$$foldl_4_envptr_332" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_330", 1 - %"$init_333" = load %Uint32, %Uint32* %init - %"$$foldl_4_call_334" = call { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$foldl_4_fptr_331"(i8* %"$$foldl_4_envptr_332", %Uint32 %"$init_333") - store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$foldl_4_call_334", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$foldl_5" - %"$$foldl_5_335" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$foldl_5" - store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$foldl_5_335", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$retval_31" - %"$$retval_31_336" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$retval_31" - ret { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$retval_31_336" + %"$$foldl_4_475" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" + %"$$foldl_4_fptr_476" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_475", 0 + %"$$foldl_4_envptr_477" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_475", 1 + %"$init_478" = load %Uint32, %Uint32* %init + %"$$foldl_4_call_479" = call { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$foldl_4_fptr_476"(i8* %"$$foldl_4_envptr_477", %Uint32 %"$init_478") + store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$foldl_4_call_479", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$foldl_5" + %"$$foldl_5_480" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$foldl_5" + store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$foldl_5_480", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$retval_31" + %"$$retval_31_481" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$retval_31" + ret { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$retval_31_481" } define internal %Uint32 @"$fundef_28"(%"$$fundef_28_env_142"* %0, %TName_List_Int64* %1) { entry: - %"$$fundef_28_env_f_262" = getelementptr inbounds %"$$fundef_28_env_142", %"$$fundef_28_env_142"* %0, i32 0, i32 0 - %"$f_envload_263" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_f_262" + %"$$fundef_28_env_f_337" = getelementptr inbounds %"$$fundef_28_env_142", %"$$fundef_28_env_142"* %0, i32 0, i32 0 + %"$f_envload_338" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_f_337" %f = alloca { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_263", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$$fundef_28_env_g_264" = getelementptr inbounds %"$$fundef_28_env_142", %"$$fundef_28_env_142"* %0, i32 0, i32 1 - %"$g_envload_265" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_g_264" + store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_338", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$$fundef_28_env_g_339" = getelementptr inbounds %"$$fundef_28_env_142", %"$$fundef_28_env_142"* %0, i32 0, i32 1 + %"$g_envload_340" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_g_339" %g = alloca { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_265", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$$fundef_28_env_z_266" = getelementptr inbounds %"$$fundef_28_env_142", %"$$fundef_28_env_142"* %0, i32 0, i32 2 - %"$z_envload_267" = load %Uint32, %Uint32* %"$$fundef_28_env_z_266" + store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_340", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$$fundef_28_env_z_341" = getelementptr inbounds %"$$fundef_28_env_142", %"$$fundef_28_env_142"* %0, i32 0, i32 2 + %"$z_envload_342" = load %Uint32, %Uint32* %"$$fundef_28_env_z_341" %z = alloca %Uint32 - store %Uint32 %"$z_envload_267", %Uint32* %z + store %Uint32 %"$z_envload_342", %Uint32* %z %"$retval_29" = alloca %Uint32 - %"$l_tag_269" = getelementptr inbounds %TName_List_Int64, %TName_List_Int64* %1, i32 0, i32 0 - %"$l_tag_270" = load i8, i8* %"$l_tag_269" - switch i8 %"$l_tag_270", label %"$empty_default_271" [ - i8 0, label %"$Cons_272" - i8 1, label %"$Nil_300" + %"$gasrem_343" = load i64, i64* @_gasrem + %"$gascmp_344" = icmp ugt i64 2, %"$gasrem_343" + br i1 %"$gascmp_344", label %"$out_of_gas_345", label %"$have_gas_346" + +"$out_of_gas_345": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_346" + +"$have_gas_346": ; preds = %"$out_of_gas_345", %entry + %"$consume_347" = sub i64 %"$gasrem_343", 2 + store i64 %"$consume_347", i64* @_gasrem + %"$l_tag_349" = getelementptr inbounds %TName_List_Int64, %TName_List_Int64* %1, i32 0, i32 0 + %"$l_tag_350" = load i8, i8* %"$l_tag_349" + switch i8 %"$l_tag_350", label %"$empty_default_351" [ + i8 0, label %"$Cons_352" + i8 1, label %"$Nil_395" ] -"$Cons_272": ; preds = %entry - %"$l_273" = bitcast %TName_List_Int64* %1 to %CName_Cons_Int64* - %"$h_gep_274" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$l_273", i32 0, i32 1 - %"$h_load_275" = load %Int64, %Int64* %"$h_gep_274" +"$Cons_352": ; preds = %"$have_gas_346" + %"$l_353" = bitcast %TName_List_Int64* %1 to %CName_Cons_Int64* + %"$h_gep_354" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$l_353", i32 0, i32 1 + %"$h_load_355" = load %Int64, %Int64* %"$h_gep_354" %h = alloca %Int64 - store %Int64 %"$h_load_275", %Int64* %h - %"$t_gep_276" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$l_273", i32 0, i32 2 - %"$t_load_277" = load %TName_List_Int64*, %TName_List_Int64** %"$t_gep_276" + store %Int64 %"$h_load_355", %Int64* %h + %"$t_gep_356" = getelementptr inbounds %CName_Cons_Int64, %CName_Cons_Int64* %"$l_353", i32 0, i32 2 + %"$t_load_357" = load %TName_List_Int64*, %TName_List_Int64** %"$t_gep_356" %t = alloca %TName_List_Int64* - store %TName_List_Int64* %"$t_load_277", %TName_List_Int64** %t + store %TName_List_Int64* %"$t_load_357", %TName_List_Int64** %t + %"$gasrem_358" = load i64, i64* @_gasrem + %"$gascmp_359" = icmp ugt i64 1, %"$gasrem_358" + br i1 %"$gascmp_359", label %"$out_of_gas_360", label %"$have_gas_361" + +"$out_of_gas_360": ; preds = %"$Cons_352" + call void @_out_of_gas() + br label %"$have_gas_361" + +"$have_gas_361": ; preds = %"$out_of_gas_360", %"$Cons_352" + %"$consume_362" = sub i64 %"$gasrem_358", 1 + store i64 %"$consume_362", i64* @_gasrem %res = alloca %Uint32 + %"$gasrem_363" = load i64, i64* @_gasrem + %"$gascmp_364" = icmp ugt i64 1, %"$gasrem_363" + br i1 %"$gascmp_364", label %"$out_of_gas_365", label %"$have_gas_366" + +"$out_of_gas_365": ; preds = %"$have_gas_361" + call void @_out_of_gas() + br label %"$have_gas_366" + +"$have_gas_366": ; preds = %"$out_of_gas_365", %"$have_gas_361" + %"$consume_367" = sub i64 %"$gasrem_363", 1 + store i64 %"$consume_367", i64* @_gasrem %"$f_0" = alloca { %Uint32 (i8*, %Int64)*, i8* } - %"$f_278" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$f_fptr_279" = extractvalue { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_278", 0 - %"$f_envptr_280" = extractvalue { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_278", 1 - %"$z_281" = load %Uint32, %Uint32* %z - %"$f_call_282" = call { %Uint32 (i8*, %Int64)*, i8* } %"$f_fptr_279"(i8* %"$f_envptr_280", %Uint32 %"$z_281") - store { %Uint32 (i8*, %Int64)*, i8* } %"$f_call_282", { %Uint32 (i8*, %Int64)*, i8* }* %"$f_0" + %"$f_368" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$f_fptr_369" = extractvalue { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_368", 0 + %"$f_envptr_370" = extractvalue { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_368", 1 + %"$z_371" = load %Uint32, %Uint32* %z + %"$f_call_372" = call { %Uint32 (i8*, %Int64)*, i8* } %"$f_fptr_369"(i8* %"$f_envptr_370", %Uint32 %"$z_371") + store { %Uint32 (i8*, %Int64)*, i8* } %"$f_call_372", { %Uint32 (i8*, %Int64)*, i8* }* %"$f_0" %"$f_1" = alloca %Uint32 - %"$$f_0_283" = load { %Uint32 (i8*, %Int64)*, i8* }, { %Uint32 (i8*, %Int64)*, i8* }* %"$f_0" - %"$$f_0_fptr_284" = extractvalue { %Uint32 (i8*, %Int64)*, i8* } %"$$f_0_283", 0 - %"$$f_0_envptr_285" = extractvalue { %Uint32 (i8*, %Int64)*, i8* } %"$$f_0_283", 1 - %"$h_286" = load %Int64, %Int64* %h - %"$$f_0_call_287" = call %Uint32 %"$$f_0_fptr_284"(i8* %"$$f_0_envptr_285", %Int64 %"$h_286") - store %Uint32 %"$$f_0_call_287", %Uint32* %"$f_1" - %"$$f_1_288" = load %Uint32, %Uint32* %"$f_1" - store %Uint32 %"$$f_1_288", %Uint32* %res + %"$$f_0_373" = load { %Uint32 (i8*, %Int64)*, i8* }, { %Uint32 (i8*, %Int64)*, i8* }* %"$f_0" + %"$$f_0_fptr_374" = extractvalue { %Uint32 (i8*, %Int64)*, i8* } %"$$f_0_373", 0 + %"$$f_0_envptr_375" = extractvalue { %Uint32 (i8*, %Int64)*, i8* } %"$$f_0_373", 1 + %"$h_376" = load %Int64, %Int64* %h + %"$$f_0_call_377" = call %Uint32 %"$$f_0_fptr_374"(i8* %"$$f_0_envptr_375", %Int64 %"$h_376") + store %Uint32 %"$$f_0_call_377", %Uint32* %"$f_1" + %"$$f_1_378" = load %Uint32, %Uint32* %"$f_1" + store %Uint32 %"$$f_1_378", %Uint32* %res + %"$gasrem_379" = load i64, i64* @_gasrem + %"$gascmp_380" = icmp ugt i64 1, %"$gasrem_379" + br i1 %"$gascmp_380", label %"$out_of_gas_381", label %"$have_gas_382" + +"$out_of_gas_381": ; preds = %"$have_gas_366" + call void @_out_of_gas() + br label %"$have_gas_382" + +"$have_gas_382": ; preds = %"$out_of_gas_381", %"$have_gas_366" + %"$consume_383" = sub i64 %"$gasrem_379", 1 + store i64 %"$consume_383", i64* @_gasrem %"$g_2" = alloca { %Uint32 (i8*, %TName_List_Int64*)*, i8* } - %"$g_289" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$g_fptr_290" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_289", 0 - %"$g_envptr_291" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_289", 1 - %"$res_292" = load %Uint32, %Uint32* %res - %"$g_call_293" = call { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$g_fptr_290"(i8* %"$g_envptr_291", %Uint32 %"$res_292") - store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$g_call_293", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$g_2" + %"$g_384" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$g_fptr_385" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_384", 0 + %"$g_envptr_386" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_384", 1 + %"$res_387" = load %Uint32, %Uint32* %res + %"$g_call_388" = call { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$g_fptr_385"(i8* %"$g_envptr_386", %Uint32 %"$res_387") + store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$g_call_388", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$g_2" %"$g_3" = alloca %Uint32 - %"$$g_2_294" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$g_2" - %"$$g_2_fptr_295" = extractvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$g_2_294", 0 - %"$$g_2_envptr_296" = extractvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$g_2_294", 1 - %"$t_297" = load %TName_List_Int64*, %TName_List_Int64** %t - %"$$g_2_call_298" = call %Uint32 %"$$g_2_fptr_295"(i8* %"$$g_2_envptr_296", %TName_List_Int64* %"$t_297") - store %Uint32 %"$$g_2_call_298", %Uint32* %"$g_3" - %"$$g_3_299" = load %Uint32, %Uint32* %"$g_3" - store %Uint32 %"$$g_3_299", %Uint32* %"$retval_29" - br label %"$matchsucc_268" - -"$Nil_300": ; preds = %entry - %"$l_301" = bitcast %TName_List_Int64* %1 to %CName_Nil_Int64* - %"$z_302" = load %Uint32, %Uint32* %z - store %Uint32 %"$z_302", %Uint32* %"$retval_29" - br label %"$matchsucc_268" - -"$empty_default_271": ; preds = %entry - br label %"$matchsucc_268" - -"$matchsucc_268": ; preds = %"$Nil_300", %"$Cons_272", %"$empty_default_271" - %"$$retval_29_303" = load %Uint32, %Uint32* %"$retval_29" - ret %Uint32 %"$$retval_29_303" + %"$$g_2_389" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$g_2" + %"$$g_2_fptr_390" = extractvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$g_2_389", 0 + %"$$g_2_envptr_391" = extractvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$g_2_389", 1 + %"$t_392" = load %TName_List_Int64*, %TName_List_Int64** %t + %"$$g_2_call_393" = call %Uint32 %"$$g_2_fptr_390"(i8* %"$$g_2_envptr_391", %TName_List_Int64* %"$t_392") + store %Uint32 %"$$g_2_call_393", %Uint32* %"$g_3" + %"$$g_3_394" = load %Uint32, %Uint32* %"$g_3" + store %Uint32 %"$$g_3_394", %Uint32* %"$retval_29" + br label %"$matchsucc_348" + +"$Nil_395": ; preds = %"$have_gas_346" + %"$l_396" = bitcast %TName_List_Int64* %1 to %CName_Nil_Int64* + %"$gasrem_397" = load i64, i64* @_gasrem + %"$gascmp_398" = icmp ugt i64 1, %"$gasrem_397" + br i1 %"$gascmp_398", label %"$out_of_gas_399", label %"$have_gas_400" + +"$out_of_gas_399": ; preds = %"$Nil_395" + call void @_out_of_gas() + br label %"$have_gas_400" + +"$have_gas_400": ; preds = %"$out_of_gas_399", %"$Nil_395" + %"$consume_401" = sub i64 %"$gasrem_397", 1 + store i64 %"$consume_401", i64* @_gasrem + %"$z_402" = load %Uint32, %Uint32* %z + store %Uint32 %"$z_402", %Uint32* %"$retval_29" + br label %"$matchsucc_348" + +"$empty_default_351": ; preds = %"$have_gas_346" + br label %"$matchsucc_348" + +"$matchsucc_348": ; preds = %"$have_gas_400", %"$have_gas_382", %"$empty_default_351" + %"$$retval_29_403" = load %Uint32, %Uint32* %"$retval_29" + ret %Uint32 %"$$retval_29_403" } define internal { %Uint32 (i8*, %TName_List_Int64*)*, i8* } @"$fundef_26"(%"$$fundef_26_env_143"* %0, %Uint32 %1) { entry: - %"$$fundef_26_env_f_248" = getelementptr inbounds %"$$fundef_26_env_143", %"$$fundef_26_env_143"* %0, i32 0, i32 0 - %"$f_envload_249" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_26_env_f_248" + %"$$fundef_26_env_f_318" = getelementptr inbounds %"$$fundef_26_env_143", %"$$fundef_26_env_143"* %0, i32 0, i32 0 + %"$f_envload_319" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_26_env_f_318" %f = alloca { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_249", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$$fundef_26_env_g_250" = getelementptr inbounds %"$$fundef_26_env_143", %"$$fundef_26_env_143"* %0, i32 0, i32 1 - %"$g_envload_251" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_26_env_g_250" + store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_319", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$$fundef_26_env_g_320" = getelementptr inbounds %"$$fundef_26_env_143", %"$$fundef_26_env_143"* %0, i32 0, i32 1 + %"$g_envload_321" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_26_env_g_320" %g = alloca { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_251", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_321", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g %"$retval_27" = alloca { %Uint32 (i8*, %TName_List_Int64*)*, i8* } - %"$$fundef_28_envp_252_load" = load i8*, i8** @_execptr - %"$$fundef_28_envp_252_salloc" = call i8* @_salloc(i8* %"$$fundef_28_envp_252_load", i64 40) - %"$$fundef_28_envp_252" = bitcast i8* %"$$fundef_28_envp_252_salloc" to %"$$fundef_28_env_142"* - %"$$fundef_28_env_voidp_254" = bitcast %"$$fundef_28_env_142"* %"$$fundef_28_envp_252" to i8* - %"$$fundef_28_cloval_255" = insertvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } { %Uint32 (i8*, %TName_List_Int64*)* bitcast (%Uint32 (%"$$fundef_28_env_142"*, %TName_List_Int64*)* @"$fundef_28" to %Uint32 (i8*, %TName_List_Int64*)*), i8* undef }, i8* %"$$fundef_28_env_voidp_254", 1 - %"$$fundef_28_env_f_256" = getelementptr inbounds %"$$fundef_28_env_142", %"$$fundef_28_env_142"* %"$$fundef_28_envp_252", i32 0, i32 0 - %"$f_257" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %f - store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_257", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_f_256" - %"$$fundef_28_env_g_258" = getelementptr inbounds %"$$fundef_28_env_142", %"$$fundef_28_env_142"* %"$$fundef_28_envp_252", i32 0, i32 1 - %"$g_259" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_259", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_g_258" - %"$$fundef_28_env_z_260" = getelementptr inbounds %"$$fundef_28_env_142", %"$$fundef_28_env_142"* %"$$fundef_28_envp_252", i32 0, i32 2 - store %Uint32 %1, %Uint32* %"$$fundef_28_env_z_260" - store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$fundef_28_cloval_255", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$retval_27" - %"$$retval_27_261" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$retval_27" - ret { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$retval_27_261" + %"$gasrem_322" = load i64, i64* @_gasrem + %"$gascmp_323" = icmp ugt i64 1, %"$gasrem_322" + br i1 %"$gascmp_323", label %"$out_of_gas_324", label %"$have_gas_325" + +"$out_of_gas_324": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_325" + +"$have_gas_325": ; preds = %"$out_of_gas_324", %entry + %"$consume_326" = sub i64 %"$gasrem_322", 1 + store i64 %"$consume_326", i64* @_gasrem + %"$$fundef_28_envp_327_load" = load i8*, i8** @_execptr + %"$$fundef_28_envp_327_salloc" = call i8* @_salloc(i8* %"$$fundef_28_envp_327_load", i64 40) + %"$$fundef_28_envp_327" = bitcast i8* %"$$fundef_28_envp_327_salloc" to %"$$fundef_28_env_142"* + %"$$fundef_28_env_voidp_329" = bitcast %"$$fundef_28_env_142"* %"$$fundef_28_envp_327" to i8* + %"$$fundef_28_cloval_330" = insertvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } { %Uint32 (i8*, %TName_List_Int64*)* bitcast (%Uint32 (%"$$fundef_28_env_142"*, %TName_List_Int64*)* @"$fundef_28" to %Uint32 (i8*, %TName_List_Int64*)*), i8* undef }, i8* %"$$fundef_28_env_voidp_329", 1 + %"$$fundef_28_env_f_331" = getelementptr inbounds %"$$fundef_28_env_142", %"$$fundef_28_env_142"* %"$$fundef_28_envp_327", i32 0, i32 0 + %"$f_332" = load { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %f + store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %"$f_332", { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_f_331" + %"$$fundef_28_env_g_333" = getelementptr inbounds %"$$fundef_28_env_142", %"$$fundef_28_env_142"* %"$$fundef_28_envp_327", i32 0, i32 1 + %"$g_334" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_334", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_g_333" + %"$$fundef_28_env_z_335" = getelementptr inbounds %"$$fundef_28_env_142", %"$$fundef_28_env_142"* %"$$fundef_28_envp_327", i32 0, i32 2 + store %Uint32 %1, %Uint32* %"$$fundef_28_env_z_335" + store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$fundef_28_cloval_330", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$retval_27" + %"$$retval_27_336" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %"$retval_27" + ret { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$$retval_27_336" } define internal { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } @"$fundef_24"(%"$$fundef_24_env_144"* %0, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %1) { entry: %"$retval_25" = alloca { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } - %"$$fundef_26_envp_239_load" = load i8*, i8** @_execptr - %"$$fundef_26_envp_239_salloc" = call i8* @_salloc(i8* %"$$fundef_26_envp_239_load", i64 32) - %"$$fundef_26_envp_239" = bitcast i8* %"$$fundef_26_envp_239_salloc" to %"$$fundef_26_env_143"* - %"$$fundef_26_env_voidp_241" = bitcast %"$$fundef_26_env_143"* %"$$fundef_26_envp_239" to i8* - %"$$fundef_26_cloval_242" = insertvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_List_Int64*)*, i8* } (%"$$fundef_26_env_143"*, %Uint32)* @"$fundef_26" to { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_26_env_voidp_241", 1 + %"$gasrem_299" = load i64, i64* @_gasrem + %"$gascmp_300" = icmp ugt i64 1, %"$gasrem_299" + br i1 %"$gascmp_300", label %"$out_of_gas_301", label %"$have_gas_302" + +"$out_of_gas_301": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_302" + +"$have_gas_302": ; preds = %"$out_of_gas_301", %entry + %"$consume_303" = sub i64 %"$gasrem_299", 1 + store i64 %"$consume_303", i64* @_gasrem + %"$gasrem_304" = load i64, i64* @_gasrem + %"$gascmp_305" = icmp ugt i64 1, %"$gasrem_304" + br i1 %"$gascmp_305", label %"$out_of_gas_306", label %"$have_gas_307" + +"$out_of_gas_306": ; preds = %"$have_gas_302" + call void @_out_of_gas() + br label %"$have_gas_307" + +"$have_gas_307": ; preds = %"$out_of_gas_306", %"$have_gas_302" + %"$consume_308" = sub i64 %"$gasrem_304", 1 + store i64 %"$consume_308", i64* @_gasrem + %"$$fundef_26_envp_309_load" = load i8*, i8** @_execptr + %"$$fundef_26_envp_309_salloc" = call i8* @_salloc(i8* %"$$fundef_26_envp_309_load", i64 32) + %"$$fundef_26_envp_309" = bitcast i8* %"$$fundef_26_envp_309_salloc" to %"$$fundef_26_env_143"* + %"$$fundef_26_env_voidp_311" = bitcast %"$$fundef_26_env_143"* %"$$fundef_26_envp_309" to i8* + %"$$fundef_26_cloval_312" = insertvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_List_Int64*)*, i8* } (%"$$fundef_26_env_143"*, %Uint32)* @"$fundef_26" to { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_26_env_voidp_311", 1 %g = alloca { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_26_cloval_242", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$$fundef_26_env_f_243" = getelementptr inbounds %"$$fundef_26_env_143", %"$$fundef_26_env_143"* %"$$fundef_26_envp_239", i32 0, i32 0 - store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %1, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_26_env_f_243" - %"$$fundef_26_env_g_244" = getelementptr inbounds %"$$fundef_26_env_143", %"$$fundef_26_env_143"* %"$$fundef_26_envp_239", i32 0, i32 1 - %"$g_245" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_245", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_26_env_g_244" - %"$g_246" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_246", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_25" - %"$$retval_25_247" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_25" - ret { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_25_247" + store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_26_cloval_312", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$$fundef_26_env_f_313" = getelementptr inbounds %"$$fundef_26_env_143", %"$$fundef_26_env_143"* %"$$fundef_26_envp_309", i32 0, i32 0 + store { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* } %1, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_26_env_f_313" + %"$$fundef_26_env_g_314" = getelementptr inbounds %"$$fundef_26_env_143", %"$$fundef_26_env_143"* %"$$fundef_26_envp_309", i32 0, i32 1 + %"$g_315" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_315", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_26_env_g_314" + %"$g_316" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_316", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_25" + %"$$retval_25_317" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_25" + ret { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_25_317" } define internal { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } @"$fundef_22"(%"$$fundef_22_env_145"* %0) { entry: %"$retval_23" = alloca { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_290" = load i64, i64* @_gasrem + %"$gascmp_291" = icmp ugt i64 1, %"$gasrem_290" + br i1 %"$gascmp_291", label %"$out_of_gas_292", label %"$have_gas_293" + +"$out_of_gas_292": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_293" + +"$have_gas_293": ; preds = %"$out_of_gas_292", %entry + %"$consume_294" = sub i64 %"$gasrem_290", 1 + store i64 %"$consume_294", i64* @_gasrem store { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })* bitcast ({ { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (%"$$fundef_24_env_144"*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })* @"$fundef_24" to { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*), i8* null }, { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_23" - %"$$retval_23_238" = load { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_23" - ret { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_23_238" + %"$$retval_23_298" = load { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_23" + ret { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_23_298" } define internal { i8*, i8* }* @"$fundef_20"(%"$$fundef_20_env_146"* %0) { entry: %"$retval_21" = alloca { i8*, i8* }* - %"$dyndisp_table_231_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_231_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_231_salloc_load", i64 48) - %"$dyndisp_table_231_salloc" = bitcast i8* %"$dyndisp_table_231_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_231" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_231_salloc" to { i8*, i8* }* - %"$dyndisp_gep_232" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_231", i32 1 - %"$dyndisp_pcast_233" = bitcast { i8*, i8* }* %"$dyndisp_gep_232" to { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_22_env_145"*)* @"$fundef_22" to { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_233" - store { i8*, i8* }* %"$dyndisp_table_231", { i8*, i8* }** %"$retval_21" - %"$$retval_21_234" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_21" - ret { i8*, i8* }* %"$$retval_21_234" + %"$gasrem_278" = load i64, i64* @_gasrem + %"$gascmp_279" = icmp ugt i64 1, %"$gasrem_278" + br i1 %"$gascmp_279", label %"$out_of_gas_280", label %"$have_gas_281" + +"$out_of_gas_280": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_281" + +"$have_gas_281": ; preds = %"$out_of_gas_280", %entry + %"$consume_282" = sub i64 %"$gasrem_278", 1 + store i64 %"$consume_282", i64* @_gasrem + %"$dyndisp_table_286_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_286_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_286_salloc_load", i64 48) + %"$dyndisp_table_286_salloc" = bitcast i8* %"$dyndisp_table_286_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_286" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_286_salloc" to { i8*, i8* }* + %"$dyndisp_gep_287" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_286", i32 1 + %"$dyndisp_pcast_288" = bitcast { i8*, i8* }* %"$dyndisp_gep_287" to { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_22_env_145"*)* @"$fundef_22" to { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int64)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_288" + store { i8*, i8* }* %"$dyndisp_table_286", { i8*, i8* }** %"$retval_21" + %"$$retval_21_289" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_21" + ret { i8*, i8* }* %"$$retval_21_289" } define internal %Uint32 @"$fundef_18"(%"$$fundef_18_env_147"* %0, %TName_List_Int32* %1) { entry: - %"$$fundef_18_env_f_186" = getelementptr inbounds %"$$fundef_18_env_147", %"$$fundef_18_env_147"* %0, i32 0, i32 0 - %"$f_envload_187" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_f_186" + %"$$fundef_18_env_f_211" = getelementptr inbounds %"$$fundef_18_env_147", %"$$fundef_18_env_147"* %0, i32 0, i32 0 + %"$f_envload_212" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_f_211" %f = alloca { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_187", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$$fundef_18_env_g_188" = getelementptr inbounds %"$$fundef_18_env_147", %"$$fundef_18_env_147"* %0, i32 0, i32 1 - %"$g_envload_189" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_g_188" + store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_212", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$$fundef_18_env_g_213" = getelementptr inbounds %"$$fundef_18_env_147", %"$$fundef_18_env_147"* %0, i32 0, i32 1 + %"$g_envload_214" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_g_213" %g = alloca { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_189", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$$fundef_18_env_z_190" = getelementptr inbounds %"$$fundef_18_env_147", %"$$fundef_18_env_147"* %0, i32 0, i32 2 - %"$z_envload_191" = load %Uint32, %Uint32* %"$$fundef_18_env_z_190" + store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_214", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$$fundef_18_env_z_215" = getelementptr inbounds %"$$fundef_18_env_147", %"$$fundef_18_env_147"* %0, i32 0, i32 2 + %"$z_envload_216" = load %Uint32, %Uint32* %"$$fundef_18_env_z_215" %z = alloca %Uint32 - store %Uint32 %"$z_envload_191", %Uint32* %z + store %Uint32 %"$z_envload_216", %Uint32* %z %"$retval_19" = alloca %Uint32 - %"$l_tag_193" = getelementptr inbounds %TName_List_Int32, %TName_List_Int32* %1, i32 0, i32 0 - %"$l_tag_194" = load i8, i8* %"$l_tag_193" - switch i8 %"$l_tag_194", label %"$empty_default_195" [ - i8 0, label %"$Cons_196" - i8 1, label %"$Nil_224" + %"$gasrem_217" = load i64, i64* @_gasrem + %"$gascmp_218" = icmp ugt i64 2, %"$gasrem_217" + br i1 %"$gascmp_218", label %"$out_of_gas_219", label %"$have_gas_220" + +"$out_of_gas_219": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_220" + +"$have_gas_220": ; preds = %"$out_of_gas_219", %entry + %"$consume_221" = sub i64 %"$gasrem_217", 2 + store i64 %"$consume_221", i64* @_gasrem + %"$l_tag_223" = getelementptr inbounds %TName_List_Int32, %TName_List_Int32* %1, i32 0, i32 0 + %"$l_tag_224" = load i8, i8* %"$l_tag_223" + switch i8 %"$l_tag_224", label %"$empty_default_225" [ + i8 0, label %"$Cons_226" + i8 1, label %"$Nil_269" ] -"$Cons_196": ; preds = %entry - %"$l_197" = bitcast %TName_List_Int32* %1 to %CName_Cons_Int32* - %"$h_gep_198" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$l_197", i32 0, i32 1 - %"$h_load_199" = load %Int32, %Int32* %"$h_gep_198" +"$Cons_226": ; preds = %"$have_gas_220" + %"$l_227" = bitcast %TName_List_Int32* %1 to %CName_Cons_Int32* + %"$h_gep_228" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$l_227", i32 0, i32 1 + %"$h_load_229" = load %Int32, %Int32* %"$h_gep_228" %h = alloca %Int32 - store %Int32 %"$h_load_199", %Int32* %h - %"$t_gep_200" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$l_197", i32 0, i32 2 - %"$t_load_201" = load %TName_List_Int32*, %TName_List_Int32** %"$t_gep_200" + store %Int32 %"$h_load_229", %Int32* %h + %"$t_gep_230" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$l_227", i32 0, i32 2 + %"$t_load_231" = load %TName_List_Int32*, %TName_List_Int32** %"$t_gep_230" %t = alloca %TName_List_Int32* - store %TName_List_Int32* %"$t_load_201", %TName_List_Int32** %t + store %TName_List_Int32* %"$t_load_231", %TName_List_Int32** %t + %"$gasrem_232" = load i64, i64* @_gasrem + %"$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 = %"$Cons_226" + call void @_out_of_gas() + br label %"$have_gas_235" + +"$have_gas_235": ; preds = %"$out_of_gas_234", %"$Cons_226" + %"$consume_236" = sub i64 %"$gasrem_232", 1 + store i64 %"$consume_236", i64* @_gasrem %res = alloca %Uint32 + %"$gasrem_237" = load i64, i64* @_gasrem + %"$gascmp_238" = icmp ugt i64 1, %"$gasrem_237" + br i1 %"$gascmp_238", label %"$out_of_gas_239", label %"$have_gas_240" + +"$out_of_gas_239": ; preds = %"$have_gas_235" + call void @_out_of_gas() + br label %"$have_gas_240" + +"$have_gas_240": ; preds = %"$out_of_gas_239", %"$have_gas_235" + %"$consume_241" = sub i64 %"$gasrem_237", 1 + store i64 %"$consume_241", i64* @_gasrem %"$f_0" = alloca { %Uint32 (i8*, %Int32)*, i8* } - %"$f_202" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$f_fptr_203" = extractvalue { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_202", 0 - %"$f_envptr_204" = extractvalue { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_202", 1 - %"$z_205" = load %Uint32, %Uint32* %z - %"$f_call_206" = call { %Uint32 (i8*, %Int32)*, i8* } %"$f_fptr_203"(i8* %"$f_envptr_204", %Uint32 %"$z_205") - store { %Uint32 (i8*, %Int32)*, i8* } %"$f_call_206", { %Uint32 (i8*, %Int32)*, i8* }* %"$f_0" + %"$f_242" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$f_fptr_243" = extractvalue { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_242", 0 + %"$f_envptr_244" = extractvalue { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_242", 1 + %"$z_245" = load %Uint32, %Uint32* %z + %"$f_call_246" = call { %Uint32 (i8*, %Int32)*, i8* } %"$f_fptr_243"(i8* %"$f_envptr_244", %Uint32 %"$z_245") + store { %Uint32 (i8*, %Int32)*, i8* } %"$f_call_246", { %Uint32 (i8*, %Int32)*, i8* }* %"$f_0" %"$f_1" = alloca %Uint32 - %"$$f_0_207" = load { %Uint32 (i8*, %Int32)*, i8* }, { %Uint32 (i8*, %Int32)*, i8* }* %"$f_0" - %"$$f_0_fptr_208" = extractvalue { %Uint32 (i8*, %Int32)*, i8* } %"$$f_0_207", 0 - %"$$f_0_envptr_209" = extractvalue { %Uint32 (i8*, %Int32)*, i8* } %"$$f_0_207", 1 - %"$h_210" = load %Int32, %Int32* %h - %"$$f_0_call_211" = call %Uint32 %"$$f_0_fptr_208"(i8* %"$$f_0_envptr_209", %Int32 %"$h_210") - store %Uint32 %"$$f_0_call_211", %Uint32* %"$f_1" - %"$$f_1_212" = load %Uint32, %Uint32* %"$f_1" - store %Uint32 %"$$f_1_212", %Uint32* %res + %"$$f_0_247" = load { %Uint32 (i8*, %Int32)*, i8* }, { %Uint32 (i8*, %Int32)*, i8* }* %"$f_0" + %"$$f_0_fptr_248" = extractvalue { %Uint32 (i8*, %Int32)*, i8* } %"$$f_0_247", 0 + %"$$f_0_envptr_249" = extractvalue { %Uint32 (i8*, %Int32)*, i8* } %"$$f_0_247", 1 + %"$h_250" = load %Int32, %Int32* %h + %"$$f_0_call_251" = call %Uint32 %"$$f_0_fptr_248"(i8* %"$$f_0_envptr_249", %Int32 %"$h_250") + store %Uint32 %"$$f_0_call_251", %Uint32* %"$f_1" + %"$$f_1_252" = load %Uint32, %Uint32* %"$f_1" + store %Uint32 %"$$f_1_252", %Uint32* %res + %"$gasrem_253" = load i64, i64* @_gasrem + %"$gascmp_254" = icmp ugt i64 1, %"$gasrem_253" + br i1 %"$gascmp_254", label %"$out_of_gas_255", label %"$have_gas_256" + +"$out_of_gas_255": ; preds = %"$have_gas_240" + call void @_out_of_gas() + br label %"$have_gas_256" + +"$have_gas_256": ; preds = %"$out_of_gas_255", %"$have_gas_240" + %"$consume_257" = sub i64 %"$gasrem_253", 1 + store i64 %"$consume_257", i64* @_gasrem %"$g_2" = alloca { %Uint32 (i8*, %TName_List_Int32*)*, i8* } - %"$g_213" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$g_fptr_214" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_213", 0 - %"$g_envptr_215" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_213", 1 - %"$res_216" = load %Uint32, %Uint32* %res - %"$g_call_217" = call { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$g_fptr_214"(i8* %"$g_envptr_215", %Uint32 %"$res_216") - store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$g_call_217", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$g_2" + %"$g_258" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$g_fptr_259" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_258", 0 + %"$g_envptr_260" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_258", 1 + %"$res_261" = load %Uint32, %Uint32* %res + %"$g_call_262" = call { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$g_fptr_259"(i8* %"$g_envptr_260", %Uint32 %"$res_261") + store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$g_call_262", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$g_2" %"$g_3" = alloca %Uint32 - %"$$g_2_218" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$g_2" - %"$$g_2_fptr_219" = extractvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$g_2_218", 0 - %"$$g_2_envptr_220" = extractvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$g_2_218", 1 - %"$t_221" = load %TName_List_Int32*, %TName_List_Int32** %t - %"$$g_2_call_222" = call %Uint32 %"$$g_2_fptr_219"(i8* %"$$g_2_envptr_220", %TName_List_Int32* %"$t_221") - store %Uint32 %"$$g_2_call_222", %Uint32* %"$g_3" - %"$$g_3_223" = load %Uint32, %Uint32* %"$g_3" - store %Uint32 %"$$g_3_223", %Uint32* %"$retval_19" - br label %"$matchsucc_192" - -"$Nil_224": ; preds = %entry - %"$l_225" = bitcast %TName_List_Int32* %1 to %CName_Nil_Int32* - %"$z_226" = load %Uint32, %Uint32* %z - store %Uint32 %"$z_226", %Uint32* %"$retval_19" - br label %"$matchsucc_192" - -"$empty_default_195": ; preds = %entry - br label %"$matchsucc_192" - -"$matchsucc_192": ; preds = %"$Nil_224", %"$Cons_196", %"$empty_default_195" - %"$$retval_19_227" = load %Uint32, %Uint32* %"$retval_19" - ret %Uint32 %"$$retval_19_227" + %"$$g_2_263" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$g_2" + %"$$g_2_fptr_264" = extractvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$g_2_263", 0 + %"$$g_2_envptr_265" = extractvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$g_2_263", 1 + %"$t_266" = load %TName_List_Int32*, %TName_List_Int32** %t + %"$$g_2_call_267" = call %Uint32 %"$$g_2_fptr_264"(i8* %"$$g_2_envptr_265", %TName_List_Int32* %"$t_266") + store %Uint32 %"$$g_2_call_267", %Uint32* %"$g_3" + %"$$g_3_268" = load %Uint32, %Uint32* %"$g_3" + store %Uint32 %"$$g_3_268", %Uint32* %"$retval_19" + br label %"$matchsucc_222" + +"$Nil_269": ; preds = %"$have_gas_220" + %"$l_270" = bitcast %TName_List_Int32* %1 to %CName_Nil_Int32* + %"$gasrem_271" = load i64, i64* @_gasrem + %"$gascmp_272" = icmp ugt i64 1, %"$gasrem_271" + br i1 %"$gascmp_272", label %"$out_of_gas_273", label %"$have_gas_274" + +"$out_of_gas_273": ; preds = %"$Nil_269" + call void @_out_of_gas() + br label %"$have_gas_274" + +"$have_gas_274": ; preds = %"$out_of_gas_273", %"$Nil_269" + %"$consume_275" = sub i64 %"$gasrem_271", 1 + store i64 %"$consume_275", i64* @_gasrem + %"$z_276" = load %Uint32, %Uint32* %z + store %Uint32 %"$z_276", %Uint32* %"$retval_19" + br label %"$matchsucc_222" + +"$empty_default_225": ; preds = %"$have_gas_220" + br label %"$matchsucc_222" + +"$matchsucc_222": ; preds = %"$have_gas_274", %"$have_gas_256", %"$empty_default_225" + %"$$retval_19_277" = load %Uint32, %Uint32* %"$retval_19" + ret %Uint32 %"$$retval_19_277" } define internal { %Uint32 (i8*, %TName_List_Int32*)*, i8* } @"$fundef_16"(%"$$fundef_16_env_148"* %0, %Uint32 %1) { entry: - %"$$fundef_16_env_f_172" = getelementptr inbounds %"$$fundef_16_env_148", %"$$fundef_16_env_148"* %0, i32 0, i32 0 - %"$f_envload_173" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_16_env_f_172" + %"$$fundef_16_env_f_192" = getelementptr inbounds %"$$fundef_16_env_148", %"$$fundef_16_env_148"* %0, i32 0, i32 0 + %"$f_envload_193" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_16_env_f_192" %f = alloca { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_173", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$$fundef_16_env_g_174" = getelementptr inbounds %"$$fundef_16_env_148", %"$$fundef_16_env_148"* %0, i32 0, i32 1 - %"$g_envload_175" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_16_env_g_174" + store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_193", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$$fundef_16_env_g_194" = getelementptr inbounds %"$$fundef_16_env_148", %"$$fundef_16_env_148"* %0, i32 0, i32 1 + %"$g_envload_195" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_16_env_g_194" %g = alloca { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_175", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_195", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g %"$retval_17" = alloca { %Uint32 (i8*, %TName_List_Int32*)*, i8* } - %"$$fundef_18_envp_176_load" = load i8*, i8** @_execptr - %"$$fundef_18_envp_176_salloc" = call i8* @_salloc(i8* %"$$fundef_18_envp_176_load", i64 40) - %"$$fundef_18_envp_176" = bitcast i8* %"$$fundef_18_envp_176_salloc" to %"$$fundef_18_env_147"* - %"$$fundef_18_env_voidp_178" = bitcast %"$$fundef_18_env_147"* %"$$fundef_18_envp_176" to i8* - %"$$fundef_18_cloval_179" = insertvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } { %Uint32 (i8*, %TName_List_Int32*)* bitcast (%Uint32 (%"$$fundef_18_env_147"*, %TName_List_Int32*)* @"$fundef_18" to %Uint32 (i8*, %TName_List_Int32*)*), i8* undef }, i8* %"$$fundef_18_env_voidp_178", 1 - %"$$fundef_18_env_f_180" = getelementptr inbounds %"$$fundef_18_env_147", %"$$fundef_18_env_147"* %"$$fundef_18_envp_176", i32 0, i32 0 - %"$f_181" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %f - store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_181", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_f_180" - %"$$fundef_18_env_g_182" = getelementptr inbounds %"$$fundef_18_env_147", %"$$fundef_18_env_147"* %"$$fundef_18_envp_176", i32 0, i32 1 - %"$g_183" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_183", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_g_182" - %"$$fundef_18_env_z_184" = getelementptr inbounds %"$$fundef_18_env_147", %"$$fundef_18_env_147"* %"$$fundef_18_envp_176", i32 0, i32 2 - store %Uint32 %1, %Uint32* %"$$fundef_18_env_z_184" - store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$fundef_18_cloval_179", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$retval_17" - %"$$retval_17_185" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$retval_17" - ret { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$retval_17_185" + %"$gasrem_196" = load i64, i64* @_gasrem + %"$gascmp_197" = icmp ugt i64 1, %"$gasrem_196" + br i1 %"$gascmp_197", label %"$out_of_gas_198", label %"$have_gas_199" + +"$out_of_gas_198": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_199" + +"$have_gas_199": ; preds = %"$out_of_gas_198", %entry + %"$consume_200" = sub i64 %"$gasrem_196", 1 + store i64 %"$consume_200", i64* @_gasrem + %"$$fundef_18_envp_201_load" = load i8*, i8** @_execptr + %"$$fundef_18_envp_201_salloc" = call i8* @_salloc(i8* %"$$fundef_18_envp_201_load", i64 40) + %"$$fundef_18_envp_201" = bitcast i8* %"$$fundef_18_envp_201_salloc" to %"$$fundef_18_env_147"* + %"$$fundef_18_env_voidp_203" = bitcast %"$$fundef_18_env_147"* %"$$fundef_18_envp_201" to i8* + %"$$fundef_18_cloval_204" = insertvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } { %Uint32 (i8*, %TName_List_Int32*)* bitcast (%Uint32 (%"$$fundef_18_env_147"*, %TName_List_Int32*)* @"$fundef_18" to %Uint32 (i8*, %TName_List_Int32*)*), i8* undef }, i8* %"$$fundef_18_env_voidp_203", 1 + %"$$fundef_18_env_f_205" = getelementptr inbounds %"$$fundef_18_env_147", %"$$fundef_18_env_147"* %"$$fundef_18_envp_201", i32 0, i32 0 + %"$f_206" = load { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %f + store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$f_206", { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_f_205" + %"$$fundef_18_env_g_207" = getelementptr inbounds %"$$fundef_18_env_147", %"$$fundef_18_env_147"* %"$$fundef_18_envp_201", i32 0, i32 1 + %"$g_208" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_208", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_g_207" + %"$$fundef_18_env_z_209" = getelementptr inbounds %"$$fundef_18_env_147", %"$$fundef_18_env_147"* %"$$fundef_18_envp_201", i32 0, i32 2 + store %Uint32 %1, %Uint32* %"$$fundef_18_env_z_209" + store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$fundef_18_cloval_204", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$retval_17" + %"$$retval_17_210" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %"$retval_17" + ret { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$$retval_17_210" } define internal { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } @"$fundef_14"(%"$$fundef_14_env_149"* %0, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %1) { entry: %"$retval_15" = alloca { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } - %"$$fundef_16_envp_163_load" = load i8*, i8** @_execptr - %"$$fundef_16_envp_163_salloc" = call i8* @_salloc(i8* %"$$fundef_16_envp_163_load", i64 32) - %"$$fundef_16_envp_163" = bitcast i8* %"$$fundef_16_envp_163_salloc" to %"$$fundef_16_env_148"* - %"$$fundef_16_env_voidp_165" = bitcast %"$$fundef_16_env_148"* %"$$fundef_16_envp_163" to i8* - %"$$fundef_16_cloval_166" = insertvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_List_Int32*)*, i8* } (%"$$fundef_16_env_148"*, %Uint32)* @"$fundef_16" to { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_16_env_voidp_165", 1 + %"$gasrem_173" = load i64, i64* @_gasrem + %"$gascmp_174" = icmp ugt i64 1, %"$gasrem_173" + br i1 %"$gascmp_174", label %"$out_of_gas_175", label %"$have_gas_176" + +"$out_of_gas_175": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_176" + +"$have_gas_176": ; preds = %"$out_of_gas_175", %entry + %"$consume_177" = sub i64 %"$gasrem_173", 1 + store i64 %"$consume_177", i64* @_gasrem + %"$gasrem_178" = load i64, i64* @_gasrem + %"$gascmp_179" = icmp ugt i64 1, %"$gasrem_178" + br i1 %"$gascmp_179", label %"$out_of_gas_180", label %"$have_gas_181" + +"$out_of_gas_180": ; preds = %"$have_gas_176" + call void @_out_of_gas() + br label %"$have_gas_181" + +"$have_gas_181": ; preds = %"$out_of_gas_180", %"$have_gas_176" + %"$consume_182" = sub i64 %"$gasrem_178", 1 + store i64 %"$consume_182", i64* @_gasrem + %"$$fundef_16_envp_183_load" = load i8*, i8** @_execptr + %"$$fundef_16_envp_183_salloc" = call i8* @_salloc(i8* %"$$fundef_16_envp_183_load", i64 32) + %"$$fundef_16_envp_183" = bitcast i8* %"$$fundef_16_envp_183_salloc" to %"$$fundef_16_env_148"* + %"$$fundef_16_env_voidp_185" = bitcast %"$$fundef_16_env_148"* %"$$fundef_16_envp_183" to i8* + %"$$fundef_16_cloval_186" = insertvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_List_Int32*)*, i8* } (%"$$fundef_16_env_148"*, %Uint32)* @"$fundef_16" to { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_16_env_voidp_185", 1 %g = alloca { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_16_cloval_166", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$$fundef_16_env_f_167" = getelementptr inbounds %"$$fundef_16_env_148", %"$$fundef_16_env_148"* %"$$fundef_16_envp_163", i32 0, i32 0 - store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %1, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_16_env_f_167" - %"$$fundef_16_env_g_168" = getelementptr inbounds %"$$fundef_16_env_148", %"$$fundef_16_env_148"* %"$$fundef_16_envp_163", i32 0, i32 1 - %"$g_169" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_169", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_16_env_g_168" - %"$g_170" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_170", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_15" - %"$$retval_15_171" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_15" - ret { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_15_171" + store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_16_cloval_186", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$$fundef_16_env_f_187" = getelementptr inbounds %"$$fundef_16_env_148", %"$$fundef_16_env_148"* %"$$fundef_16_envp_183", i32 0, i32 0 + store { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %1, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_16_env_f_187" + %"$$fundef_16_env_g_188" = getelementptr inbounds %"$$fundef_16_env_148", %"$$fundef_16_env_148"* %"$$fundef_16_envp_183", i32 0, i32 1 + %"$g_189" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_189", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_16_env_g_188" + %"$g_190" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_190", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_15" + %"$$retval_15_191" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_15" + ret { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_15_191" } define internal { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } @"$fundef_12"(%"$$fundef_12_env_150"* %0) { entry: %"$retval_13" = alloca { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_164" = load i64, i64* @_gasrem + %"$gascmp_165" = icmp ugt i64 1, %"$gasrem_164" + br i1 %"$gascmp_165", label %"$out_of_gas_166", label %"$have_gas_167" + +"$out_of_gas_166": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_167" + +"$have_gas_167": ; preds = %"$out_of_gas_166", %entry + %"$consume_168" = sub i64 %"$gasrem_164", 1 + store i64 %"$consume_168", i64* @_gasrem store { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })* bitcast ({ { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (%"$$fundef_14_env_149"*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })* @"$fundef_14" to { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*), i8* null }, { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_13" - %"$$retval_13_162" = load { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_13" - ret { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_13_162" + %"$$retval_13_172" = load { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_13" + ret { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_13_172" } define internal { i8*, i8* }* @"$fundef_10"(%"$$fundef_10_env_151"* %0) { entry: %"$retval_11" = alloca { i8*, i8* }* - %"$dyndisp_table_155_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_155_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_155_salloc_load", i64 48) - %"$dyndisp_table_155_salloc" = bitcast i8* %"$dyndisp_table_155_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_155" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_155_salloc" to { i8*, i8* }* - %"$dyndisp_gep_156" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_155", i32 1 - %"$dyndisp_pcast_157" = bitcast { i8*, i8* }* %"$dyndisp_gep_156" to { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_12_env_150"*)* @"$fundef_12" to { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_157" - store { i8*, i8* }* %"$dyndisp_table_155", { i8*, i8* }** %"$retval_11" - %"$$retval_11_158" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_11" - ret { i8*, i8* }* %"$$retval_11_158" + %"$gasrem_152" = load i64, i64* @_gasrem + %"$gascmp_153" = icmp ugt i64 1, %"$gasrem_152" + br i1 %"$gascmp_153", label %"$out_of_gas_154", label %"$have_gas_155" + +"$out_of_gas_154": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_155" + +"$have_gas_155": ; preds = %"$out_of_gas_154", %entry + %"$consume_156" = sub i64 %"$gasrem_152", 1 + store i64 %"$consume_156", i64* @_gasrem + %"$dyndisp_table_160_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_160_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_160_salloc_load", i64 48) + %"$dyndisp_table_160_salloc" = bitcast i8* %"$dyndisp_table_160_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_160" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_160_salloc" to { i8*, i8* }* + %"$dyndisp_gep_161" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_160", i32 1 + %"$dyndisp_pcast_162" = bitcast { i8*, i8* }* %"$dyndisp_gep_161" to { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_12_env_150"*)* @"$fundef_12" to { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_162" + store { i8*, i8* }* %"$dyndisp_table_160", { i8*, i8* }** %"$retval_11" + %"$$retval_11_163" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_11" + ret { i8*, i8* }* %"$$retval_11_163" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) declare %Uint32 @_add_Uint32(%Uint32, %Uint32) @@ -829,216 +1492,579 @@ entry: ret void } -define internal %Uint32 @"$scilla_expr_474"(i8* %0) { +define internal %Uint32 @"$scilla_expr_774"(i8* %0) { entry: - %"$dyndisp_table_481_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_481_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_481_salloc_load", i64 48) - %"$dyndisp_table_481_salloc" = bitcast i8* %"$dyndisp_table_481_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_481" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_481_salloc" to { i8*, i8* }* - %"$dyndisp_gep_482" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_481", i32 0 - %"$dyndisp_pcast_483" = bitcast { i8*, i8* }* %"$dyndisp_gep_482" to { { i8*, i8* }* (i8*)*, i8* }* - store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_10_env_151"*)* @"$fundef_10" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_483" - %"$dyndisp_gep_484" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_481", i32 2 - %"$dyndisp_pcast_485" = bitcast { i8*, i8* }* %"$dyndisp_gep_484" to { { i8*, i8* }* (i8*)*, i8* }* - store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_20_env_146"*)* @"$fundef_20" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_485" - store { i8*, i8* }* %"$dyndisp_table_481", { i8*, i8* }** @list_foldl - %"$$fundef_30_envp_486_load" = load i8*, i8** @_execptr - %"$$fundef_30_envp_486_salloc" = call i8* @_salloc(i8* %"$$fundef_30_envp_486_load", i64 8) - %"$$fundef_30_envp_486" = bitcast i8* %"$$fundef_30_envp_486_salloc" to %"$$fundef_30_env_141"* - %"$$fundef_30_env_voidp_488" = bitcast %"$$fundef_30_env_141"* %"$$fundef_30_envp_486" to i8* - %"$$fundef_30_cloval_489" = insertvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %TName_List_Int32*)*, i8* } (%"$$fundef_30_env_141"*)* @"$fundef_30" to { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_30_env_voidp_488", 1 - %"$$fundef_30_env_list_foldl_490" = getelementptr inbounds %"$$fundef_30_env_141", %"$$fundef_30_env_141"* %"$$fundef_30_envp_486", i32 0, i32 0 - %"$list_foldl_491" = load { i8*, i8* }*, { i8*, i8* }** @list_foldl - store { i8*, i8* }* %"$list_foldl_491", { i8*, i8* }** %"$$fundef_30_env_list_foldl_490" - %"$$fundef_36_env_voidp_493" = bitcast %"$$fundef_30_env_141"* %"$$fundef_30_envp_486" to i8* - %"$$fundef_36_cloval_494" = insertvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %TName_List_Int64*)*, i8* } (%"$$fundef_36_env_138"*)* @"$fundef_36" to { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_36_env_voidp_493", 1 - %"$dyndisp_table_495_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_495_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_495_salloc_load", i64 48) - %"$dyndisp_table_495_salloc" = bitcast i8* %"$dyndisp_table_495_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_495" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_495_salloc" to { i8*, i8* }* - %"$dyndisp_gep_496" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_495", i32 0 - %"$dyndisp_pcast_497" = bitcast { i8*, i8* }* %"$dyndisp_gep_496" to { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }* - store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* } %"$$fundef_30_cloval_489", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_497" - %"$dyndisp_gep_498" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_495", i32 2 - %"$dyndisp_pcast_499" = bitcast { i8*, i8* }* %"$dyndisp_gep_498" to { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }* - store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* } %"$$fundef_36_cloval_494", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_499" - store { i8*, i8* }* %"$dyndisp_table_495", { i8*, i8* }** @list_length + %"$gasrem_775" = load i64, i64* @_gasrem + %"$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 = %entry + call void @_out_of_gas() + br label %"$have_gas_778" + +"$have_gas_778": ; preds = %"$out_of_gas_777", %entry + %"$consume_779" = sub i64 %"$gasrem_775", 1 + store i64 %"$consume_779", i64* @_gasrem + %"$dyndisp_table_786_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_786_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_786_salloc_load", i64 48) + %"$dyndisp_table_786_salloc" = bitcast i8* %"$dyndisp_table_786_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_786" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_786_salloc" to { i8*, i8* }* + %"$dyndisp_gep_787" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_786", i32 0 + %"$dyndisp_pcast_788" = bitcast { i8*, i8* }* %"$dyndisp_gep_787" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_10_env_151"*)* @"$fundef_10" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_788" + %"$dyndisp_gep_789" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_786", i32 2 + %"$dyndisp_pcast_790" = bitcast { i8*, i8* }* %"$dyndisp_gep_789" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_20_env_146"*)* @"$fundef_20" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_790" + store { i8*, i8* }* %"$dyndisp_table_786", { i8*, i8* }** @list_foldl + %"$gasrem_791" = load i64, i64* @_gasrem + %"$gascmp_792" = icmp ugt i64 1, %"$gasrem_791" + br i1 %"$gascmp_792", label %"$out_of_gas_793", label %"$have_gas_794" + +"$out_of_gas_793": ; preds = %"$have_gas_778" + call void @_out_of_gas() + br label %"$have_gas_794" + +"$have_gas_794": ; preds = %"$out_of_gas_793", %"$have_gas_778" + %"$consume_795" = sub i64 %"$gasrem_791", 1 + store i64 %"$consume_795", i64* @_gasrem + %"$$fundef_30_envp_796_load" = load i8*, i8** @_execptr + %"$$fundef_30_envp_796_salloc" = call i8* @_salloc(i8* %"$$fundef_30_envp_796_load", i64 8) + %"$$fundef_30_envp_796" = bitcast i8* %"$$fundef_30_envp_796_salloc" to %"$$fundef_30_env_141"* + %"$$fundef_30_env_voidp_798" = bitcast %"$$fundef_30_env_141"* %"$$fundef_30_envp_796" to i8* + %"$$fundef_30_cloval_799" = insertvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %TName_List_Int32*)*, i8* } (%"$$fundef_30_env_141"*)* @"$fundef_30" to { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_30_env_voidp_798", 1 + %"$$fundef_30_env_list_foldl_800" = getelementptr inbounds %"$$fundef_30_env_141", %"$$fundef_30_env_141"* %"$$fundef_30_envp_796", i32 0, i32 0 + %"$list_foldl_801" = load { i8*, i8* }*, { i8*, i8* }** @list_foldl + store { i8*, i8* }* %"$list_foldl_801", { i8*, i8* }** %"$$fundef_30_env_list_foldl_800" + %"$$fundef_36_env_voidp_803" = bitcast %"$$fundef_30_env_141"* %"$$fundef_30_envp_796" to i8* + %"$$fundef_36_cloval_804" = insertvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %TName_List_Int64*)*, i8* } (%"$$fundef_36_env_138"*)* @"$fundef_36" to { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_36_env_voidp_803", 1 + %"$dyndisp_table_805_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_805_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_805_salloc_load", i64 48) + %"$dyndisp_table_805_salloc" = bitcast i8* %"$dyndisp_table_805_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_805" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_805_salloc" to { i8*, i8* }* + %"$dyndisp_gep_806" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_805", i32 0 + %"$dyndisp_pcast_807" = bitcast { i8*, i8* }* %"$dyndisp_gep_806" to { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }* + store { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* } %"$$fundef_30_cloval_799", { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_807" + %"$dyndisp_gep_808" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_805", i32 2 + %"$dyndisp_pcast_809" = bitcast { i8*, i8* }* %"$dyndisp_gep_808" to { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }* + store { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* } %"$$fundef_36_cloval_804", { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_809" + store { i8*, i8* }* %"$dyndisp_table_805", { i8*, i8* }** @list_length %"$expr_42" = alloca %Uint32 + %"$gasrem_810" = load i64, i64* @_gasrem + %"$gascmp_811" = icmp ugt i64 1, %"$gasrem_810" + br i1 %"$gascmp_811", label %"$out_of_gas_812", label %"$have_gas_813" + +"$out_of_gas_812": ; preds = %"$have_gas_794" + call void @_out_of_gas() + br label %"$have_gas_813" + +"$have_gas_813": ; preds = %"$out_of_gas_812", %"$have_gas_794" + %"$consume_814" = sub i64 %"$gasrem_810", 1 + store i64 %"$consume_814", i64* @_gasrem %t1 = alloca { i8*, i8* }* - %"$dyndisp_table_506_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_506_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_506_salloc_load", i64 48) - %"$dyndisp_table_506_salloc" = bitcast i8* %"$dyndisp_table_506_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_506" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_506_salloc" to { i8*, i8* }* - %"$dyndisp_gep_507" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_506", i32 0 - %"$dyndisp_pcast_508" = bitcast { i8*, i8* }* %"$dyndisp_gep_507" to { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* - store { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* } { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)* bitcast ({ %TName_List_Int32* (i8*, %Int32)*, i8* } (%"$$fundef_43_env_135"*)* @"$fundef_43" to { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*), i8* null }, { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_508" - %"$dyndisp_gep_509" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_506", i32 2 - %"$dyndisp_pcast_510" = bitcast { i8*, i8* }* %"$dyndisp_gep_509" to { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* - store { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* } { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)* bitcast ({ %TName_List_Int64* (i8*, %Int64)*, i8* } (%"$$fundef_47_env_133"*)* @"$fundef_47" to { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*), i8* null }, { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_510" - store { i8*, i8* }* %"$dyndisp_table_506", { i8*, i8* }** %t1 + %"$gasrem_815" = load i64, i64* @_gasrem + %"$gascmp_816" = icmp ugt i64 1, %"$gasrem_815" + br i1 %"$gascmp_816", label %"$out_of_gas_817", label %"$have_gas_818" + +"$out_of_gas_817": ; preds = %"$have_gas_813" + call void @_out_of_gas() + br label %"$have_gas_818" + +"$have_gas_818": ; preds = %"$out_of_gas_817", %"$have_gas_813" + %"$consume_819" = sub i64 %"$gasrem_815", 1 + store i64 %"$consume_819", i64* @_gasrem + %"$dyndisp_table_826_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_826_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_826_salloc_load", i64 48) + %"$dyndisp_table_826_salloc" = bitcast i8* %"$dyndisp_table_826_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_826" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_826_salloc" to { i8*, i8* }* + %"$dyndisp_gep_827" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_826", i32 0 + %"$dyndisp_pcast_828" = bitcast { i8*, i8* }* %"$dyndisp_gep_827" to { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* + store { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* } { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)* bitcast ({ %TName_List_Int32* (i8*, %Int32)*, i8* } (%"$$fundef_43_env_135"*)* @"$fundef_43" to { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*), i8* null }, { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_828" + %"$dyndisp_gep_829" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_826", i32 2 + %"$dyndisp_pcast_830" = bitcast { i8*, i8* }* %"$dyndisp_gep_829" to { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* + store { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* } { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)* bitcast ({ %TName_List_Int64* (i8*, %Int64)*, i8* } (%"$$fundef_47_env_133"*)* @"$fundef_47" to { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*), i8* null }, { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_830" + store { i8*, i8* }* %"$dyndisp_table_826", { i8*, i8* }** %t1 + %"$gasrem_831" = load i64, i64* @_gasrem + %"$gascmp_832" = icmp ugt i64 1, %"$gasrem_831" + br i1 %"$gascmp_832", label %"$out_of_gas_833", label %"$have_gas_834" + +"$out_of_gas_833": ; preds = %"$have_gas_818" + call void @_out_of_gas() + br label %"$have_gas_834" + +"$have_gas_834": ; preds = %"$out_of_gas_833", %"$have_gas_818" + %"$consume_835" = sub i64 %"$gasrem_831", 1 + store i64 %"$consume_835", i64* @_gasrem %t2 = alloca { i8*, i8* }* - %"$dyndisp_table_517_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_517_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_517_salloc_load", i64 48) - %"$dyndisp_table_517_salloc" = bitcast i8* %"$dyndisp_table_517_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_517" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_517_salloc" to { i8*, i8* }* - %"$dyndisp_gep_518" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_517", i32 0 - %"$dyndisp_pcast_519" = bitcast { i8*, i8* }* %"$dyndisp_gep_518" to { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* - store { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* } { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)* bitcast ({ %TName_List_Int32* (i8*, %Int32)*, i8* } (%"$$fundef_51_env_131"*)* @"$fundef_51" to { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*), i8* null }, { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_519" - %"$dyndisp_gep_520" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_517", i32 2 - %"$dyndisp_pcast_521" = bitcast { i8*, i8* }* %"$dyndisp_gep_520" to { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* - store { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* } { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)* bitcast ({ %TName_List_Int64* (i8*, %Int64)*, i8* } (%"$$fundef_55_env_129"*)* @"$fundef_55" to { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*), i8* null }, { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_521" - store { i8*, i8* }* %"$dyndisp_table_517", { i8*, i8* }** %t2 + %"$gasrem_836" = load i64, i64* @_gasrem + %"$gascmp_837" = icmp ugt i64 1, %"$gasrem_836" + br i1 %"$gascmp_837", label %"$out_of_gas_838", label %"$have_gas_839" + +"$out_of_gas_838": ; preds = %"$have_gas_834" + call void @_out_of_gas() + br label %"$have_gas_839" + +"$have_gas_839": ; preds = %"$out_of_gas_838", %"$have_gas_834" + %"$consume_840" = sub i64 %"$gasrem_836", 1 + store i64 %"$consume_840", i64* @_gasrem + %"$dyndisp_table_847_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_847_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_847_salloc_load", i64 48) + %"$dyndisp_table_847_salloc" = bitcast i8* %"$dyndisp_table_847_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_847" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_847_salloc" to { i8*, i8* }* + %"$dyndisp_gep_848" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_847", i32 0 + %"$dyndisp_pcast_849" = bitcast { i8*, i8* }* %"$dyndisp_gep_848" to { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* + store { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* } { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)* bitcast ({ %TName_List_Int32* (i8*, %Int32)*, i8* } (%"$$fundef_51_env_131"*)* @"$fundef_51" to { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*), i8* null }, { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_849" + %"$dyndisp_gep_850" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_847", i32 2 + %"$dyndisp_pcast_851" = bitcast { i8*, i8* }* %"$dyndisp_gep_850" to { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* + store { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* } { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)* bitcast ({ %TName_List_Int64* (i8*, %Int64)*, i8* } (%"$$fundef_55_env_129"*)* @"$fundef_55" to { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*), i8* null }, { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_851" + store { i8*, i8* }* %"$dyndisp_table_847", { i8*, i8* }** %t2 + %"$gasrem_852" = load i64, i64* @_gasrem + %"$gascmp_853" = icmp ugt i64 1, %"$gasrem_852" + br i1 %"$gascmp_853", label %"$out_of_gas_854", label %"$have_gas_855" + +"$out_of_gas_854": ; preds = %"$have_gas_839" + call void @_out_of_gas() + br label %"$have_gas_855" + +"$have_gas_855": ; preds = %"$out_of_gas_854", %"$have_gas_839" + %"$consume_856" = sub i64 %"$gasrem_852", 1 + store i64 %"$consume_856", i64* @_gasrem %some_bool = alloca %TName_Bool* - %"$adtval_522_load" = load i8*, i8** @_execptr - %"$adtval_522_salloc" = call i8* @_salloc(i8* %"$adtval_522_load", i64 1) - %"$adtval_522" = bitcast i8* %"$adtval_522_salloc" to %CName_True* - %"$adtgep_523" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_522", i32 0, i32 0 - store i8 0, i8* %"$adtgep_523" - %"$adtptr_524" = bitcast %CName_True* %"$adtval_522" to %TName_Bool* - store %TName_Bool* %"$adtptr_524", %TName_Bool** %some_bool + %"$gasrem_857" = load i64, i64* @_gasrem + %"$gascmp_858" = icmp ugt i64 1, %"$gasrem_857" + br i1 %"$gascmp_858", label %"$out_of_gas_859", label %"$have_gas_860" + +"$out_of_gas_859": ; preds = %"$have_gas_855" + call void @_out_of_gas() + br label %"$have_gas_860" + +"$have_gas_860": ; preds = %"$out_of_gas_859", %"$have_gas_855" + %"$consume_861" = sub i64 %"$gasrem_857", 1 + store i64 %"$consume_861", i64* @_gasrem + %"$adtval_862_load" = load i8*, i8** @_execptr + %"$adtval_862_salloc" = call i8* @_salloc(i8* %"$adtval_862_load", i64 1) + %"$adtval_862" = bitcast i8* %"$adtval_862_salloc" to %CName_True* + %"$adtgep_863" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_862", i32 0, i32 0 + store i8 0, i8* %"$adtgep_863" + %"$adtptr_864" = bitcast %CName_True* %"$adtval_862" to %TName_Bool* + store %TName_Bool* %"$adtptr_864", %TName_Bool** %some_bool + %"$gasrem_865" = load i64, i64* @_gasrem + %"$gascmp_866" = icmp ugt i64 1, %"$gasrem_865" + br i1 %"$gascmp_866", label %"$out_of_gas_867", label %"$have_gas_868" + +"$out_of_gas_867": ; preds = %"$have_gas_860" + call void @_out_of_gas() + br label %"$have_gas_868" + +"$have_gas_868": ; preds = %"$out_of_gas_867", %"$have_gas_860" + %"$consume_869" = sub i64 %"$gasrem_865", 1 + store i64 %"$consume_869", i64* @_gasrem %f = alloca { i8*, i8* }* - %"$some_bool_526" = load %TName_Bool*, %TName_Bool** %some_bool - %"$some_bool_tag_527" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$some_bool_526", i32 0, i32 0 - %"$some_bool_tag_528" = load i8, i8* %"$some_bool_tag_527" - switch i8 %"$some_bool_tag_528", label %"$empty_default_529" [ - i8 0, label %"$True_530" - i8 1, label %"$False_533" + %"$gasrem_870" = load i64, i64* @_gasrem + %"$gascmp_871" = icmp ugt i64 2, %"$gasrem_870" + br i1 %"$gascmp_871", label %"$out_of_gas_872", label %"$have_gas_873" + +"$out_of_gas_872": ; preds = %"$have_gas_868" + call void @_out_of_gas() + br label %"$have_gas_873" + +"$have_gas_873": ; preds = %"$out_of_gas_872", %"$have_gas_868" + %"$consume_874" = sub i64 %"$gasrem_870", 2 + store i64 %"$consume_874", i64* @_gasrem + %"$some_bool_876" = load %TName_Bool*, %TName_Bool** %some_bool + %"$some_bool_tag_877" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$some_bool_876", i32 0, i32 0 + %"$some_bool_tag_878" = load i8, i8* %"$some_bool_tag_877" + switch i8 %"$some_bool_tag_878", label %"$empty_default_879" [ + i8 0, label %"$True_880" + i8 1, label %"$False_888" ] -"$True_530": ; preds = %entry - %"$some_bool_531" = bitcast %TName_Bool* %"$some_bool_526" to %CName_True* - %"$t2_532" = load { i8*, i8* }*, { i8*, i8* }** %t2 - store { i8*, i8* }* %"$t2_532", { i8*, i8* }** %f - br label %"$matchsucc_525" +"$True_880": ; preds = %"$have_gas_873" + %"$some_bool_881" = bitcast %TName_Bool* %"$some_bool_876" to %CName_True* + %"$gasrem_882" = load i64, i64* @_gasrem + %"$gascmp_883" = icmp ugt i64 1, %"$gasrem_882" + br i1 %"$gascmp_883", label %"$out_of_gas_884", label %"$have_gas_885" -"$False_533": ; preds = %entry - %"$some_bool_534" = bitcast %TName_Bool* %"$some_bool_526" to %CName_False* - %"$t1_535" = load { i8*, i8* }*, { i8*, i8* }** %t1 - store { i8*, i8* }* %"$t1_535", { i8*, i8* }** %f - br label %"$matchsucc_525" +"$out_of_gas_884": ; preds = %"$True_880" + call void @_out_of_gas() + br label %"$have_gas_885" -"$empty_default_529": ; preds = %entry - br label %"$matchsucc_525" +"$have_gas_885": ; preds = %"$out_of_gas_884", %"$True_880" + %"$consume_886" = sub i64 %"$gasrem_882", 1 + store i64 %"$consume_886", i64* @_gasrem + %"$t2_887" = load { i8*, i8* }*, { i8*, i8* }** %t2 + store { i8*, i8* }* %"$t2_887", { i8*, i8* }** %f + br label %"$matchsucc_875" -"$matchsucc_525": ; preds = %"$False_533", %"$True_530", %"$empty_default_529" +"$False_888": ; preds = %"$have_gas_873" + %"$some_bool_889" = bitcast %TName_Bool* %"$some_bool_876" to %CName_False* + %"$gasrem_890" = load i64, i64* @_gasrem + %"$gascmp_891" = icmp ugt i64 1, %"$gasrem_890" + br i1 %"$gascmp_891", label %"$out_of_gas_892", label %"$have_gas_893" + +"$out_of_gas_892": ; preds = %"$False_888" + call void @_out_of_gas() + br label %"$have_gas_893" + +"$have_gas_893": ; preds = %"$out_of_gas_892", %"$False_888" + %"$consume_894" = sub i64 %"$gasrem_890", 1 + store i64 %"$consume_894", i64* @_gasrem + %"$t1_895" = load { i8*, i8* }*, { i8*, i8* }** %t1 + store { i8*, i8* }* %"$t1_895", { i8*, i8* }** %f + br label %"$matchsucc_875" + +"$empty_default_879": ; preds = %"$have_gas_873" + br label %"$matchsucc_875" + +"$matchsucc_875": ; preds = %"$have_gas_893", %"$have_gas_885", %"$empty_default_879" + %"$gasrem_896" = load i64, i64* @_gasrem + %"$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 = %"$matchsucc_875" + call void @_out_of_gas() + br label %"$have_gas_899" + +"$have_gas_899": ; preds = %"$out_of_gas_898", %"$matchsucc_875" + %"$consume_900" = sub i64 %"$gasrem_896", 1 + store i64 %"$consume_900", i64* @_gasrem %some_bool2 = alloca %TName_Bool* - %"$adtval_536_load" = load i8*, i8** @_execptr - %"$adtval_536_salloc" = call i8* @_salloc(i8* %"$adtval_536_load", i64 1) - %"$adtval_536" = bitcast i8* %"$adtval_536_salloc" to %CName_False* - %"$adtgep_537" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_536", i32 0, i32 0 - store i8 1, i8* %"$adtgep_537" - %"$adtptr_538" = bitcast %CName_False* %"$adtval_536" to %TName_Bool* - store %TName_Bool* %"$adtptr_538", %TName_Bool** %some_bool2 - %"$some_bool2_540" = load %TName_Bool*, %TName_Bool** %some_bool2 - %"$some_bool2_tag_541" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$some_bool2_540", i32 0, i32 0 - %"$some_bool2_tag_542" = load i8, i8* %"$some_bool2_tag_541" - switch i8 %"$some_bool2_tag_542", label %"$empty_default_543" [ - i8 0, label %"$True_544" - i8 1, label %"$False_572" + %"$gasrem_901" = load i64, i64* @_gasrem + %"$gascmp_902" = icmp ugt i64 1, %"$gasrem_901" + br i1 %"$gascmp_902", label %"$out_of_gas_903", label %"$have_gas_904" + +"$out_of_gas_903": ; preds = %"$have_gas_899" + call void @_out_of_gas() + br label %"$have_gas_904" + +"$have_gas_904": ; preds = %"$out_of_gas_903", %"$have_gas_899" + %"$consume_905" = sub i64 %"$gasrem_901", 1 + store i64 %"$consume_905", i64* @_gasrem + %"$adtval_906_load" = load i8*, i8** @_execptr + %"$adtval_906_salloc" = call i8* @_salloc(i8* %"$adtval_906_load", i64 1) + %"$adtval_906" = bitcast i8* %"$adtval_906_salloc" to %CName_False* + %"$adtgep_907" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_906", i32 0, i32 0 + store i8 1, i8* %"$adtgep_907" + %"$adtptr_908" = bitcast %CName_False* %"$adtval_906" to %TName_Bool* + store %TName_Bool* %"$adtptr_908", %TName_Bool** %some_bool2 + %"$gasrem_909" = load i64, i64* @_gasrem + %"$gascmp_910" = icmp ugt i64 2, %"$gasrem_909" + br i1 %"$gascmp_910", label %"$out_of_gas_911", label %"$have_gas_912" + +"$out_of_gas_911": ; preds = %"$have_gas_904" + call void @_out_of_gas() + br label %"$have_gas_912" + +"$have_gas_912": ; preds = %"$out_of_gas_911", %"$have_gas_904" + %"$consume_913" = sub i64 %"$gasrem_909", 2 + store i64 %"$consume_913", i64* @_gasrem + %"$some_bool2_915" = load %TName_Bool*, %TName_Bool** %some_bool2 + %"$some_bool2_tag_916" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$some_bool2_915", i32 0, i32 0 + %"$some_bool2_tag_917" = load i8, i8* %"$some_bool2_tag_916" + switch i8 %"$some_bool2_tag_917", label %"$empty_default_918" [ + i8 0, label %"$True_919" + i8 1, label %"$False_992" ] -"$True_544": ; preds = %"$matchsucc_525" - %"$some_bool2_545" = bitcast %TName_Bool* %"$some_bool2_540" to %CName_True* +"$True_919": ; preds = %"$have_gas_912" + %"$some_bool2_920" = bitcast %TName_Bool* %"$some_bool2_915" to %CName_True* + %"$gasrem_921" = load i64, i64* @_gasrem + %"$gascmp_922" = icmp ugt i64 1, %"$gasrem_921" + br i1 %"$gascmp_922", label %"$out_of_gas_923", label %"$have_gas_924" + +"$out_of_gas_923": ; preds = %"$True_919" + call void @_out_of_gas() + br label %"$have_gas_924" + +"$have_gas_924": ; preds = %"$out_of_gas_923", %"$True_919" + %"$consume_925" = sub i64 %"$gasrem_921", 1 + store i64 %"$consume_925", i64* @_gasrem %f1 = alloca { %TName_List_Int32* (i8*, %Int32)*, i8* } - %"$f_546" = load { i8*, i8* }*, { i8*, i8* }** %f - %"$f_547" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$f_546", i32 0 - %"$f_548" = bitcast { i8*, i8* }* %"$f_547" to { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* - %"$f_549" = load { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }, { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* %"$f_548" - %"$f_fptr_550" = extractvalue { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* } %"$f_549", 0 - %"$f_envptr_551" = extractvalue { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* } %"$f_549", 1 - %"$f_call_552" = call { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f_fptr_550"(i8* %"$f_envptr_551") - store { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f_call_552", { %TName_List_Int32* (i8*, %Int32)*, i8* }* %f1 + %"$gasrem_926" = load i64, i64* @_gasrem + %"$gascmp_927" = icmp ugt i64 1, %"$gasrem_926" + br i1 %"$gascmp_927", label %"$out_of_gas_928", label %"$have_gas_929" + +"$out_of_gas_928": ; preds = %"$have_gas_924" + call void @_out_of_gas() + br label %"$have_gas_929" + +"$have_gas_929": ; preds = %"$out_of_gas_928", %"$have_gas_924" + %"$consume_930" = sub i64 %"$gasrem_926", 1 + store i64 %"$consume_930", i64* @_gasrem + %"$f_931" = load { i8*, i8* }*, { i8*, i8* }** %f + %"$f_932" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$f_931", i32 0 + %"$f_933" = bitcast { i8*, i8* }* %"$f_932" to { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* + %"$f_934" = load { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }, { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* }* %"$f_933" + %"$f_fptr_935" = extractvalue { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* } %"$f_934", 0 + %"$f_envptr_936" = extractvalue { { %TName_List_Int32* (i8*, %Int32)*, i8* } (i8*)*, i8* } %"$f_934", 1 + %"$f_call_937" = call { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f_fptr_935"(i8* %"$f_envptr_936") + store { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f_call_937", { %TName_List_Int32* (i8*, %Int32)*, i8* }* %f1 + %"$gasrem_938" = load i64, i64* @_gasrem + %"$gascmp_939" = icmp ugt i64 1, %"$gasrem_938" + br i1 %"$gascmp_939", label %"$out_of_gas_940", label %"$have_gas_941" + +"$out_of_gas_940": ; preds = %"$have_gas_929" + call void @_out_of_gas() + br label %"$have_gas_941" + +"$have_gas_941": ; preds = %"$out_of_gas_940", %"$have_gas_929" + %"$consume_942" = sub i64 %"$gasrem_938", 1 + store i64 %"$consume_942", i64* @_gasrem %len = alloca { %Uint32 (i8*, %TName_List_Int32*)*, i8* } - %"$list_length_553" = load { i8*, i8* }*, { i8*, i8* }** @list_length - %"$list_length_554" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_length_553", i32 0 - %"$list_length_555" = bitcast { i8*, i8* }* %"$list_length_554" to { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }* - %"$list_length_556" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }* %"$list_length_555" - %"$list_length_fptr_557" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* } %"$list_length_556", 0 - %"$list_length_envptr_558" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* } %"$list_length_556", 1 - %"$list_length_call_559" = call { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$list_length_fptr_557"(i8* %"$list_length_envptr_558") - store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$list_length_call_559", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %len + %"$gasrem_943" = load i64, i64* @_gasrem + %"$gascmp_944" = icmp ugt i64 1, %"$gasrem_943" + br i1 %"$gascmp_944", label %"$out_of_gas_945", label %"$have_gas_946" + +"$out_of_gas_945": ; preds = %"$have_gas_941" + call void @_out_of_gas() + br label %"$have_gas_946" + +"$have_gas_946": ; preds = %"$out_of_gas_945", %"$have_gas_941" + %"$consume_947" = sub i64 %"$gasrem_943", 1 + store i64 %"$consume_947", i64* @_gasrem + %"$list_length_948" = load { i8*, i8* }*, { i8*, i8* }** @list_length + %"$list_length_949" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_length_948", i32 0 + %"$list_length_950" = bitcast { i8*, i8* }* %"$list_length_949" to { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }* + %"$list_length_951" = load { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* }* %"$list_length_950" + %"$list_length_fptr_952" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* } %"$list_length_951", 0 + %"$list_length_envptr_953" = extractvalue { { %Uint32 (i8*, %TName_List_Int32*)*, i8* } (i8*)*, i8* } %"$list_length_951", 1 + %"$list_length_call_954" = call { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$list_length_fptr_952"(i8* %"$list_length_envptr_953") + store { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$list_length_call_954", { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %len + %"$gasrem_955" = load i64, i64* @_gasrem + %"$gascmp_956" = icmp ugt i64 1, %"$gasrem_955" + br i1 %"$gascmp_956", label %"$out_of_gas_957", label %"$have_gas_958" + +"$out_of_gas_957": ; preds = %"$have_gas_946" + call void @_out_of_gas() + br label %"$have_gas_958" + +"$have_gas_958": ; preds = %"$out_of_gas_957", %"$have_gas_946" + %"$consume_959" = sub i64 %"$gasrem_955", 1 + store i64 %"$consume_959", i64* @_gasrem %one = alloca %Int32 + %"$gasrem_960" = load i64, i64* @_gasrem + %"$gascmp_961" = icmp ugt i64 1, %"$gasrem_960" + br i1 %"$gascmp_961", label %"$out_of_gas_962", label %"$have_gas_963" + +"$out_of_gas_962": ; preds = %"$have_gas_958" + call void @_out_of_gas() + br label %"$have_gas_963" + +"$have_gas_963": ; preds = %"$out_of_gas_962", %"$have_gas_958" + %"$consume_964" = sub i64 %"$gasrem_960", 1 + store i64 %"$consume_964", i64* @_gasrem store %Int32 { i32 1 }, %Int32* %one + %"$gasrem_965" = load i64, i64* @_gasrem + %"$gascmp_966" = icmp ugt i64 1, %"$gasrem_965" + br i1 %"$gascmp_966", label %"$out_of_gas_967", label %"$have_gas_968" + +"$out_of_gas_967": ; preds = %"$have_gas_963" + call void @_out_of_gas() + br label %"$have_gas_968" + +"$have_gas_968": ; preds = %"$out_of_gas_967", %"$have_gas_963" + %"$consume_969" = sub i64 %"$gasrem_965", 1 + store i64 %"$consume_969", i64* @_gasrem %f1l = alloca %TName_List_Int32* + %"$gasrem_970" = load i64, i64* @_gasrem + %"$gascmp_971" = icmp ugt i64 1, %"$gasrem_970" + br i1 %"$gascmp_971", label %"$out_of_gas_972", label %"$have_gas_973" + +"$out_of_gas_972": ; preds = %"$have_gas_968" + call void @_out_of_gas() + br label %"$have_gas_973" + +"$have_gas_973": ; preds = %"$out_of_gas_972", %"$have_gas_968" + %"$consume_974" = sub i64 %"$gasrem_970", 1 + store i64 %"$consume_974", i64* @_gasrem %"$f1_6" = alloca %TName_List_Int32* - %"$f1_560" = load { %TName_List_Int32* (i8*, %Int32)*, i8* }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %f1 - %"$f1_fptr_561" = extractvalue { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f1_560", 0 - %"$f1_envptr_562" = extractvalue { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f1_560", 1 - %"$one_563" = load %Int32, %Int32* %one - %"$f1_call_564" = call %TName_List_Int32* %"$f1_fptr_561"(i8* %"$f1_envptr_562", %Int32 %"$one_563") - store %TName_List_Int32* %"$f1_call_564", %TName_List_Int32** %"$f1_6" - %"$$f1_6_565" = load %TName_List_Int32*, %TName_List_Int32** %"$f1_6" - store %TName_List_Int32* %"$$f1_6_565", %TName_List_Int32** %f1l + %"$f1_975" = load { %TName_List_Int32* (i8*, %Int32)*, i8* }, { %TName_List_Int32* (i8*, %Int32)*, i8* }* %f1 + %"$f1_fptr_976" = extractvalue { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f1_975", 0 + %"$f1_envptr_977" = extractvalue { %TName_List_Int32* (i8*, %Int32)*, i8* } %"$f1_975", 1 + %"$one_978" = load %Int32, %Int32* %one + %"$f1_call_979" = call %TName_List_Int32* %"$f1_fptr_976"(i8* %"$f1_envptr_977", %Int32 %"$one_978") + store %TName_List_Int32* %"$f1_call_979", %TName_List_Int32** %"$f1_6" + %"$$f1_6_980" = load %TName_List_Int32*, %TName_List_Int32** %"$f1_6" + store %TName_List_Int32* %"$$f1_6_980", %TName_List_Int32** %f1l + %"$gasrem_981" = load i64, i64* @_gasrem + %"$gascmp_982" = icmp ugt i64 1, %"$gasrem_981" + br i1 %"$gascmp_982", label %"$out_of_gas_983", label %"$have_gas_984" + +"$out_of_gas_983": ; preds = %"$have_gas_973" + call void @_out_of_gas() + br label %"$have_gas_984" + +"$have_gas_984": ; preds = %"$out_of_gas_983", %"$have_gas_973" + %"$consume_985" = sub i64 %"$gasrem_981", 1 + store i64 %"$consume_985", i64* @_gasrem %"$len_7" = alloca %Uint32 - %"$len_566" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %len - %"$len_fptr_567" = extractvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$len_566", 0 - %"$len_envptr_568" = extractvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$len_566", 1 - %"$f1l_569" = load %TName_List_Int32*, %TName_List_Int32** %f1l - %"$len_call_570" = call %Uint32 %"$len_fptr_567"(i8* %"$len_envptr_568", %TName_List_Int32* %"$f1l_569") - store %Uint32 %"$len_call_570", %Uint32* %"$len_7" - %"$$len_7_571" = load %Uint32, %Uint32* %"$len_7" - store %Uint32 %"$$len_7_571", %Uint32* %"$expr_42" - br label %"$matchsucc_539" - -"$False_572": ; preds = %"$matchsucc_525" - %"$some_bool2_573" = bitcast %TName_Bool* %"$some_bool2_540" to %CName_False* + %"$len_986" = load { %Uint32 (i8*, %TName_List_Int32*)*, i8* }, { %Uint32 (i8*, %TName_List_Int32*)*, i8* }* %len + %"$len_fptr_987" = extractvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$len_986", 0 + %"$len_envptr_988" = extractvalue { %Uint32 (i8*, %TName_List_Int32*)*, i8* } %"$len_986", 1 + %"$f1l_989" = load %TName_List_Int32*, %TName_List_Int32** %f1l + %"$len_call_990" = call %Uint32 %"$len_fptr_987"(i8* %"$len_envptr_988", %TName_List_Int32* %"$f1l_989") + store %Uint32 %"$len_call_990", %Uint32* %"$len_7" + %"$$len_7_991" = load %Uint32, %Uint32* %"$len_7" + store %Uint32 %"$$len_7_991", %Uint32* %"$expr_42" + br label %"$matchsucc_914" + +"$False_992": ; preds = %"$have_gas_912" + %"$some_bool2_993" = bitcast %TName_Bool* %"$some_bool2_915" to %CName_False* + %"$gasrem_994" = load i64, i64* @_gasrem + %"$gascmp_995" = icmp ugt i64 1, %"$gasrem_994" + br i1 %"$gascmp_995", label %"$out_of_gas_996", label %"$have_gas_997" + +"$out_of_gas_996": ; preds = %"$False_992" + call void @_out_of_gas() + br label %"$have_gas_997" + +"$have_gas_997": ; preds = %"$out_of_gas_996", %"$False_992" + %"$consume_998" = sub i64 %"$gasrem_994", 1 + store i64 %"$consume_998", i64* @_gasrem %f2 = alloca { %TName_List_Int64* (i8*, %Int64)*, i8* } - %"$f_574" = load { i8*, i8* }*, { i8*, i8* }** %f - %"$f_575" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$f_574", i32 2 - %"$f_576" = bitcast { i8*, i8* }* %"$f_575" to { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* - %"$f_577" = load { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }, { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* %"$f_576" - %"$f_fptr_578" = extractvalue { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* } %"$f_577", 0 - %"$f_envptr_579" = extractvalue { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* } %"$f_577", 1 - %"$f_call_580" = call { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f_fptr_578"(i8* %"$f_envptr_579") - store { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f_call_580", { %TName_List_Int64* (i8*, %Int64)*, i8* }* %f2 + %"$gasrem_999" = load i64, i64* @_gasrem + %"$gascmp_1000" = icmp ugt i64 1, %"$gasrem_999" + br i1 %"$gascmp_1000", label %"$out_of_gas_1001", label %"$have_gas_1002" + +"$out_of_gas_1001": ; preds = %"$have_gas_997" + call void @_out_of_gas() + br label %"$have_gas_1002" + +"$have_gas_1002": ; preds = %"$out_of_gas_1001", %"$have_gas_997" + %"$consume_1003" = sub i64 %"$gasrem_999", 1 + store i64 %"$consume_1003", i64* @_gasrem + %"$f_1004" = load { i8*, i8* }*, { i8*, i8* }** %f + %"$f_1005" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$f_1004", i32 2 + %"$f_1006" = bitcast { i8*, i8* }* %"$f_1005" to { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* + %"$f_1007" = load { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }, { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* }* %"$f_1006" + %"$f_fptr_1008" = extractvalue { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* } %"$f_1007", 0 + %"$f_envptr_1009" = extractvalue { { %TName_List_Int64* (i8*, %Int64)*, i8* } (i8*)*, i8* } %"$f_1007", 1 + %"$f_call_1010" = call { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f_fptr_1008"(i8* %"$f_envptr_1009") + store { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f_call_1010", { %TName_List_Int64* (i8*, %Int64)*, i8* }* %f2 + %"$gasrem_1011" = load i64, i64* @_gasrem + %"$gascmp_1012" = icmp ugt i64 1, %"$gasrem_1011" + br i1 %"$gascmp_1012", label %"$out_of_gas_1013", label %"$have_gas_1014" + +"$out_of_gas_1013": ; preds = %"$have_gas_1002" + call void @_out_of_gas() + br label %"$have_gas_1014" + +"$have_gas_1014": ; preds = %"$out_of_gas_1013", %"$have_gas_1002" + %"$consume_1015" = sub i64 %"$gasrem_1011", 1 + store i64 %"$consume_1015", i64* @_gasrem %len1 = alloca { %Uint32 (i8*, %TName_List_Int64*)*, i8* } - %"$list_length_581" = load { i8*, i8* }*, { i8*, i8* }** @list_length - %"$list_length_582" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_length_581", i32 2 - %"$list_length_583" = bitcast { i8*, i8* }* %"$list_length_582" to { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }* - %"$list_length_584" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }* %"$list_length_583" - %"$list_length_fptr_585" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* } %"$list_length_584", 0 - %"$list_length_envptr_586" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* } %"$list_length_584", 1 - %"$list_length_call_587" = call { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$list_length_fptr_585"(i8* %"$list_length_envptr_586") - store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$list_length_call_587", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %len1 + %"$gasrem_1016" = load i64, i64* @_gasrem + %"$gascmp_1017" = icmp ugt i64 1, %"$gasrem_1016" + br i1 %"$gascmp_1017", label %"$out_of_gas_1018", label %"$have_gas_1019" + +"$out_of_gas_1018": ; preds = %"$have_gas_1014" + call void @_out_of_gas() + br label %"$have_gas_1019" + +"$have_gas_1019": ; preds = %"$out_of_gas_1018", %"$have_gas_1014" + %"$consume_1020" = sub i64 %"$gasrem_1016", 1 + store i64 %"$consume_1020", i64* @_gasrem + %"$list_length_1021" = load { i8*, i8* }*, { i8*, i8* }** @list_length + %"$list_length_1022" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_length_1021", i32 2 + %"$list_length_1023" = bitcast { i8*, i8* }* %"$list_length_1022" to { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }* + %"$list_length_1024" = load { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* }* %"$list_length_1023" + %"$list_length_fptr_1025" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* } %"$list_length_1024", 0 + %"$list_length_envptr_1026" = extractvalue { { %Uint32 (i8*, %TName_List_Int64*)*, i8* } (i8*)*, i8* } %"$list_length_1024", 1 + %"$list_length_call_1027" = call { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$list_length_fptr_1025"(i8* %"$list_length_envptr_1026") + store { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$list_length_call_1027", { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %len1 + %"$gasrem_1028" = load i64, i64* @_gasrem + %"$gascmp_1029" = icmp ugt i64 1, %"$gasrem_1028" + br i1 %"$gascmp_1029", label %"$out_of_gas_1030", label %"$have_gas_1031" + +"$out_of_gas_1030": ; preds = %"$have_gas_1019" + call void @_out_of_gas() + br label %"$have_gas_1031" + +"$have_gas_1031": ; preds = %"$out_of_gas_1030", %"$have_gas_1019" + %"$consume_1032" = sub i64 %"$gasrem_1028", 1 + store i64 %"$consume_1032", i64* @_gasrem %one2 = alloca %Int64 + %"$gasrem_1033" = load i64, i64* @_gasrem + %"$gascmp_1034" = icmp ugt i64 1, %"$gasrem_1033" + br i1 %"$gascmp_1034", label %"$out_of_gas_1035", label %"$have_gas_1036" + +"$out_of_gas_1035": ; preds = %"$have_gas_1031" + call void @_out_of_gas() + br label %"$have_gas_1036" + +"$have_gas_1036": ; preds = %"$out_of_gas_1035", %"$have_gas_1031" + %"$consume_1037" = sub i64 %"$gasrem_1033", 1 + store i64 %"$consume_1037", i64* @_gasrem store %Int64 { i64 1 }, %Int64* %one2 + %"$gasrem_1038" = load i64, i64* @_gasrem + %"$gascmp_1039" = icmp ugt i64 1, %"$gasrem_1038" + br i1 %"$gascmp_1039", label %"$out_of_gas_1040", label %"$have_gas_1041" + +"$out_of_gas_1040": ; preds = %"$have_gas_1036" + call void @_out_of_gas() + br label %"$have_gas_1041" + +"$have_gas_1041": ; preds = %"$out_of_gas_1040", %"$have_gas_1036" + %"$consume_1042" = sub i64 %"$gasrem_1038", 1 + store i64 %"$consume_1042", i64* @_gasrem %f2l = alloca %TName_List_Int64* + %"$gasrem_1043" = load i64, i64* @_gasrem + %"$gascmp_1044" = icmp ugt i64 1, %"$gasrem_1043" + br i1 %"$gascmp_1044", label %"$out_of_gas_1045", label %"$have_gas_1046" + +"$out_of_gas_1045": ; preds = %"$have_gas_1041" + call void @_out_of_gas() + br label %"$have_gas_1046" + +"$have_gas_1046": ; preds = %"$out_of_gas_1045", %"$have_gas_1041" + %"$consume_1047" = sub i64 %"$gasrem_1043", 1 + store i64 %"$consume_1047", i64* @_gasrem %"$f2_8" = alloca %TName_List_Int64* - %"$f2_588" = load { %TName_List_Int64* (i8*, %Int64)*, i8* }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %f2 - %"$f2_fptr_589" = extractvalue { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f2_588", 0 - %"$f2_envptr_590" = extractvalue { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f2_588", 1 - %"$one_591" = load %Int64, %Int64* %one2 - %"$f2_call_592" = call %TName_List_Int64* %"$f2_fptr_589"(i8* %"$f2_envptr_590", %Int64 %"$one_591") - store %TName_List_Int64* %"$f2_call_592", %TName_List_Int64** %"$f2_8" - %"$$f2_8_593" = load %TName_List_Int64*, %TName_List_Int64** %"$f2_8" - store %TName_List_Int64* %"$$f2_8_593", %TName_List_Int64** %f2l + %"$f2_1048" = load { %TName_List_Int64* (i8*, %Int64)*, i8* }, { %TName_List_Int64* (i8*, %Int64)*, i8* }* %f2 + %"$f2_fptr_1049" = extractvalue { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f2_1048", 0 + %"$f2_envptr_1050" = extractvalue { %TName_List_Int64* (i8*, %Int64)*, i8* } %"$f2_1048", 1 + %"$one_1051" = load %Int64, %Int64* %one2 + %"$f2_call_1052" = call %TName_List_Int64* %"$f2_fptr_1049"(i8* %"$f2_envptr_1050", %Int64 %"$one_1051") + store %TName_List_Int64* %"$f2_call_1052", %TName_List_Int64** %"$f2_8" + %"$$f2_8_1053" = load %TName_List_Int64*, %TName_List_Int64** %"$f2_8" + store %TName_List_Int64* %"$$f2_8_1053", %TName_List_Int64** %f2l + %"$gasrem_1054" = load i64, i64* @_gasrem + %"$gascmp_1055" = icmp ugt i64 1, %"$gasrem_1054" + br i1 %"$gascmp_1055", label %"$out_of_gas_1056", label %"$have_gas_1057" + +"$out_of_gas_1056": ; preds = %"$have_gas_1046" + call void @_out_of_gas() + br label %"$have_gas_1057" + +"$have_gas_1057": ; preds = %"$out_of_gas_1056", %"$have_gas_1046" + %"$consume_1058" = sub i64 %"$gasrem_1054", 1 + store i64 %"$consume_1058", i64* @_gasrem %"$len_9" = alloca %Uint32 - %"$len_594" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %len1 - %"$len_fptr_595" = extractvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$len_594", 0 - %"$len_envptr_596" = extractvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$len_594", 1 - %"$f2l_597" = load %TName_List_Int64*, %TName_List_Int64** %f2l - %"$len_call_598" = call %Uint32 %"$len_fptr_595"(i8* %"$len_envptr_596", %TName_List_Int64* %"$f2l_597") - store %Uint32 %"$len_call_598", %Uint32* %"$len_9" - %"$$len_9_599" = load %Uint32, %Uint32* %"$len_9" - store %Uint32 %"$$len_9_599", %Uint32* %"$expr_42" - br label %"$matchsucc_539" - -"$empty_default_543": ; preds = %"$matchsucc_525" - br label %"$matchsucc_539" - -"$matchsucc_539": ; preds = %"$False_572", %"$True_544", %"$empty_default_543" - %"$$expr_42_600" = load %Uint32, %Uint32* %"$expr_42" - ret %Uint32 %"$$expr_42_600" + %"$len_1059" = load { %Uint32 (i8*, %TName_List_Int64*)*, i8* }, { %Uint32 (i8*, %TName_List_Int64*)*, i8* }* %len1 + %"$len_fptr_1060" = extractvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$len_1059", 0 + %"$len_envptr_1061" = extractvalue { %Uint32 (i8*, %TName_List_Int64*)*, i8* } %"$len_1059", 1 + %"$f2l_1062" = load %TName_List_Int64*, %TName_List_Int64** %f2l + %"$len_call_1063" = call %Uint32 %"$len_fptr_1060"(i8* %"$len_envptr_1061", %TName_List_Int64* %"$f2l_1062") + store %Uint32 %"$len_call_1063", %Uint32* %"$len_9" + %"$$len_9_1064" = load %Uint32, %Uint32* %"$len_9" + store %Uint32 %"$$len_9_1064", %Uint32* %"$expr_42" + br label %"$matchsucc_914" + +"$empty_default_918": ; preds = %"$have_gas_912" + br label %"$matchsucc_914" + +"$matchsucc_914": ; preds = %"$have_gas_1057", %"$have_gas_984", %"$empty_default_918" + %"$$expr_42_1065" = load %Uint32, %Uint32* %"$expr_42" + ret %Uint32 %"$$expr_42_1065" } declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_601" = call %Uint32 @"$scilla_expr_474"(i8* null) - %"$pval_602" = alloca %Uint32 - %"$memvoidcast_603" = bitcast %Uint32* %"$pval_602" to i8* - store %Uint32 %"$exprval_601", %Uint32* %"$pval_602" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_63", i8* %"$memvoidcast_603") + %"$exprval_1066" = call %Uint32 @"$scilla_expr_774"(i8* null) + %"$pval_1067" = alloca %Uint32 + %"$memvoidcast_1068" = bitcast %Uint32* %"$pval_1067" to i8* + store %Uint32 %"$exprval_1066", %Uint32* %"$pval_1067" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_63", i8* %"$memvoidcast_1068") ret void } diff --git a/testsuite/expr/multi-type-inst.ll.result b/testsuite/expr/multi-type-inst.ll.result index 9a9f6d8d..83208d44 100644 --- a/testsuite/expr/multi-type-inst.ll.result +++ b/testsuite/expr/multi-type-inst.ll.result @@ -1 +1,2 @@ 2 : Uint32 +Gas remaining: 9999938 diff --git a/testsuite/expr/name_clash.ll b/testsuite/expr/name_clash.ll index 554f7c62..6433a893 100644 --- a/testsuite/expr/name_clash.ll +++ b/testsuite/expr/name_clash.ll @@ -14,6 +14,7 @@ target triple = "x86_64-pc-linux-gnu" %Uint32 = type { i32 } @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_3" = global %"$TyDescrTy_PrimTyp_2" zeroinitializer @"$TyDescr_Int32_4" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_2"* @"$TyDescr_Int32_Prim_3" to i8*) } @"$TyDescr_Uint32_Prim_5" = global %"$TyDescrTy_PrimTyp_2" { i32 1, i32 0 } @@ -51,31 +52,99 @@ entry: define internal %Uint32 @"$scilla_expr_35"(i8* %0) { entry: %"$expr_1" = alloca %Uint32 + %"$gasrem_36" = load i64, i64* @_gasrem + %"$gascmp_37" = icmp ugt i64 1, %"$gasrem_36" + br i1 %"$gascmp_37", label %"$out_of_gas_38", label %"$have_gas_39" + +"$out_of_gas_38": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_39" + +"$have_gas_39": ; preds = %"$out_of_gas_38", %entry + %"$consume_40" = sub i64 %"$gasrem_36", 1 + store i64 %"$consume_40", i64* @_gasrem %a = alloca %Uint32 + %"$gasrem_41" = load i64, i64* @_gasrem + %"$gascmp_42" = icmp ugt i64 1, %"$gasrem_41" + br i1 %"$gascmp_42", label %"$out_of_gas_43", label %"$have_gas_44" + +"$out_of_gas_43": ; preds = %"$have_gas_39" + call void @_out_of_gas() + br label %"$have_gas_44" + +"$have_gas_44": ; preds = %"$out_of_gas_43", %"$have_gas_39" + %"$consume_45" = sub i64 %"$gasrem_41", 1 + store i64 %"$consume_45", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %a + %"$gasrem_46" = load i64, i64* @_gasrem + %"$gascmp_47" = icmp ugt i64 1, %"$gasrem_46" + br i1 %"$gascmp_47", label %"$out_of_gas_48", label %"$have_gas_49" + +"$out_of_gas_48": ; preds = %"$have_gas_44" + call void @_out_of_gas() + br label %"$have_gas_49" + +"$have_gas_49": ; preds = %"$out_of_gas_48", %"$have_gas_44" + %"$consume_50" = sub i64 %"$gasrem_46", 1 + store i64 %"$consume_50", i64* @_gasrem %x = alloca %Uint32 + %"$gasrem_51" = load i64, i64* @_gasrem + %"$gascmp_52" = icmp ugt i64 1, %"$gasrem_51" + br i1 %"$gascmp_52", label %"$out_of_gas_53", label %"$have_gas_54" + +"$out_of_gas_53": ; preds = %"$have_gas_49" + call void @_out_of_gas() + br label %"$have_gas_54" + +"$have_gas_54": ; preds = %"$out_of_gas_53", %"$have_gas_49" + %"$consume_55" = sub i64 %"$gasrem_51", 1 + store i64 %"$consume_55", i64* @_gasrem %"$a_0" = alloca %Uint32 + %"$gasrem_56" = load i64, i64* @_gasrem + %"$gascmp_57" = icmp ugt i64 1, %"$gasrem_56" + br i1 %"$gascmp_57", label %"$out_of_gas_58", label %"$have_gas_59" + +"$out_of_gas_58": ; preds = %"$have_gas_54" + call void @_out_of_gas() + br label %"$have_gas_59" + +"$have_gas_59": ; preds = %"$out_of_gas_58", %"$have_gas_54" + %"$consume_60" = sub i64 %"$gasrem_56", 1 + store i64 %"$consume_60", i64* @_gasrem store %Uint32 { i32 2 }, %Uint32* %"$a_0" - %"$$a_0_36" = load %Uint32, %Uint32* %"$a_0" - store %Uint32 %"$$a_0_36", %Uint32* %x - %"$a_37" = load %Uint32, %Uint32* %a - %"$x_38" = load %Uint32, %Uint32* %x - %"$add_call_39" = call %Uint32 @_add_Uint32(%Uint32 %"$a_37", %Uint32 %"$x_38") - store %Uint32 %"$add_call_39", %Uint32* %"$expr_1" - %"$$expr_1_40" = load %Uint32, %Uint32* %"$expr_1" - ret %Uint32 %"$$expr_1_40" + %"$gasrem_61" = load i64, i64* @_gasrem + %"$gascmp_62" = icmp ugt i64 1, %"$gasrem_61" + br i1 %"$gascmp_62", label %"$out_of_gas_63", label %"$have_gas_64" + +"$out_of_gas_63": ; preds = %"$have_gas_59" + call void @_out_of_gas() + br label %"$have_gas_64" + +"$have_gas_64": ; preds = %"$out_of_gas_63", %"$have_gas_59" + %"$consume_65" = sub i64 %"$gasrem_61", 1 + store i64 %"$consume_65", i64* @_gasrem + %"$$a_0_66" = load %Uint32, %Uint32* %"$a_0" + store %Uint32 %"$$a_0_66", %Uint32* %x + %"$a_67" = load %Uint32, %Uint32* %a + %"$x_68" = load %Uint32, %Uint32* %x + %"$add_call_69" = call %Uint32 @_add_Uint32(%Uint32 %"$a_67", %Uint32 %"$x_68") + store %Uint32 %"$add_call_69", %Uint32* %"$expr_1" + %"$$expr_1_70" = load %Uint32, %Uint32* %"$expr_1" + ret %Uint32 %"$$expr_1_70" } +declare void @_out_of_gas() + declare %Uint32 @_add_Uint32(%Uint32, %Uint32) declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_41" = call %Uint32 @"$scilla_expr_35"(i8* null) - %"$pval_42" = alloca %Uint32 - %"$memvoidcast_43" = bitcast %Uint32* %"$pval_42" to i8* - store %Uint32 %"$exprval_41", %Uint32* %"$pval_42" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_6", i8* %"$memvoidcast_43") + %"$exprval_71" = call %Uint32 @"$scilla_expr_35"(i8* null) + %"$pval_72" = alloca %Uint32 + %"$memvoidcast_73" = bitcast %Uint32* %"$pval_72" to i8* + store %Uint32 %"$exprval_71", %Uint32* %"$pval_72" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_6", i8* %"$memvoidcast_73") ret void } diff --git a/testsuite/expr/name_clash.ll.result b/testsuite/expr/name_clash.ll.result index 07dd9506..a0334bca 100644 --- a/testsuite/expr/name_clash.ll.result +++ b/testsuite/expr/name_clash.ll.result @@ -1 +1,2 @@ 3 : Uint32 +Gas remaining: 9999994 diff --git a/testsuite/expr/name_clash2.ll b/testsuite/expr/name_clash2.ll index 31f36c02..19b72ee8 100644 --- a/testsuite/expr/name_clash2.ll +++ b/testsuite/expr/name_clash2.ll @@ -15,6 +15,7 @@ target triple = "x86_64-pc-linux-gnu" %Uint32 = type { i32 } @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_6" = global %"$TyDescrTy_PrimTyp_5" zeroinitializer @"$TyDescr_Int32_7" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_5"* @"$TyDescr_Int32_Prim_6" to i8*) } @"$TyDescr_Uint32_Prim_8" = global %"$TyDescrTy_PrimTyp_5" { i32 1, i32 0 } @@ -47,39 +48,118 @@ target triple = "x86_64-pc-linux-gnu" define internal %Uint32 @"$fundef_3"(%"$$fundef_3_env_38"* %0, %Uint32 %1) { entry: %"$retval_4" = alloca %Uint32 + %"$gasrem_39" = load i64, i64* @_gasrem + %"$gascmp_40" = icmp ugt i64 1, %"$gasrem_39" + br i1 %"$gascmp_40", label %"$out_of_gas_41", label %"$have_gas_42" + +"$out_of_gas_41": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_42" + +"$have_gas_42": ; preds = %"$out_of_gas_41", %entry + %"$consume_43" = sub i64 %"$gasrem_39", 1 + store i64 %"$consume_43", i64* @_gasrem store %Uint32 %1, %Uint32* %"$retval_4" - %"$$retval_4_39" = load %Uint32, %Uint32* %"$retval_4" - ret %Uint32 %"$$retval_4_39" + %"$$retval_4_44" = load %Uint32, %Uint32* %"$retval_4" + ret %Uint32 %"$$retval_4_44" } +declare void @_out_of_gas() + define void @_init_libs() { entry: ret void } -define internal %Uint32 @"$scilla_expr_40"(i8* %0) { +define internal %Uint32 @"$scilla_expr_45"(i8* %0) { entry: %"$expr_2" = alloca %Uint32 + %"$gasrem_46" = load i64, i64* @_gasrem + %"$gascmp_47" = icmp ugt i64 1, %"$gasrem_46" + br i1 %"$gascmp_47", label %"$out_of_gas_48", label %"$have_gas_49" + +"$out_of_gas_48": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_49" + +"$have_gas_49": ; preds = %"$out_of_gas_48", %entry + %"$consume_50" = sub i64 %"$gasrem_46", 1 + store i64 %"$consume_50", i64* @_gasrem %a = alloca %Uint32 + %"$gasrem_51" = load i64, i64* @_gasrem + %"$gascmp_52" = icmp ugt i64 1, %"$gasrem_51" + br i1 %"$gascmp_52", label %"$out_of_gas_53", label %"$have_gas_54" + +"$out_of_gas_53": ; preds = %"$have_gas_49" + call void @_out_of_gas() + br label %"$have_gas_54" + +"$have_gas_54": ; preds = %"$out_of_gas_53", %"$have_gas_49" + %"$consume_55" = sub i64 %"$gasrem_51", 1 + store i64 %"$consume_55", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %a + %"$gasrem_56" = load i64, i64* @_gasrem + %"$gascmp_57" = icmp ugt i64 1, %"$gasrem_56" + br i1 %"$gascmp_57", label %"$out_of_gas_58", label %"$have_gas_59" + +"$out_of_gas_58": ; preds = %"$have_gas_54" + call void @_out_of_gas() + br label %"$have_gas_59" + +"$have_gas_59": ; preds = %"$out_of_gas_58", %"$have_gas_54" + %"$consume_60" = sub i64 %"$gasrem_56", 1 + store i64 %"$consume_60", i64* @_gasrem %f = alloca { %Uint32 (i8*, %Uint32)*, i8* } + %"$gasrem_61" = load i64, i64* @_gasrem + %"$gascmp_62" = icmp ugt i64 1, %"$gasrem_61" + br i1 %"$gascmp_62", label %"$out_of_gas_63", label %"$have_gas_64" + +"$out_of_gas_63": ; preds = %"$have_gas_59" + call void @_out_of_gas() + br label %"$have_gas_64" + +"$have_gas_64": ; preds = %"$out_of_gas_63", %"$have_gas_59" + %"$consume_65" = sub i64 %"$gasrem_61", 1 + store i64 %"$consume_65", i64* @_gasrem store { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_3_env_38"*, %Uint32)* @"$fundef_3" to %Uint32 (i8*, %Uint32)*), i8* null }, { %Uint32 (i8*, %Uint32)*, i8* }* %f + %"$gasrem_69" = load i64, i64* @_gasrem + %"$gascmp_70" = icmp ugt i64 1, %"$gasrem_69" + br i1 %"$gascmp_70", label %"$out_of_gas_71", label %"$have_gas_72" + +"$out_of_gas_71": ; preds = %"$have_gas_64" + call void @_out_of_gas() + br label %"$have_gas_72" + +"$have_gas_72": ; preds = %"$out_of_gas_71", %"$have_gas_64" + %"$consume_73" = sub i64 %"$gasrem_69", 1 + store i64 %"$consume_73", i64* @_gasrem %b = alloca %Uint32 + %"$gasrem_74" = load i64, i64* @_gasrem + %"$gascmp_75" = icmp ugt i64 1, %"$gasrem_74" + br i1 %"$gascmp_75", label %"$out_of_gas_76", label %"$have_gas_77" + +"$out_of_gas_76": ; preds = %"$have_gas_72" + call void @_out_of_gas() + br label %"$have_gas_77" + +"$have_gas_77": ; preds = %"$out_of_gas_76", %"$have_gas_72" + %"$consume_78" = sub i64 %"$gasrem_74", 1 + store i64 %"$consume_78", i64* @_gasrem %"$f_1" = alloca %Uint32 - %"$f_44" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %f - %"$f_fptr_45" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$f_44", 0 - %"$f_envptr_46" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$f_44", 1 - %"$a_47" = load %Uint32, %Uint32* %a - %"$f_call_48" = call %Uint32 %"$f_fptr_45"(i8* %"$f_envptr_46", %Uint32 %"$a_47") - store %Uint32 %"$f_call_48", %Uint32* %"$f_1" - %"$$f_1_49" = load %Uint32, %Uint32* %"$f_1" - store %Uint32 %"$$f_1_49", %Uint32* %b - %"$a_50" = load %Uint32, %Uint32* %a - %"$b_51" = load %Uint32, %Uint32* %b - %"$add_call_52" = call %Uint32 @_add_Uint32(%Uint32 %"$a_50", %Uint32 %"$b_51") - store %Uint32 %"$add_call_52", %Uint32* %"$expr_2" - %"$$expr_2_53" = load %Uint32, %Uint32* %"$expr_2" - ret %Uint32 %"$$expr_2_53" + %"$f_79" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %f + %"$f_fptr_80" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$f_79", 0 + %"$f_envptr_81" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$f_79", 1 + %"$a_82" = load %Uint32, %Uint32* %a + %"$f_call_83" = call %Uint32 %"$f_fptr_80"(i8* %"$f_envptr_81", %Uint32 %"$a_82") + store %Uint32 %"$f_call_83", %Uint32* %"$f_1" + %"$$f_1_84" = load %Uint32, %Uint32* %"$f_1" + store %Uint32 %"$$f_1_84", %Uint32* %b + %"$a_85" = load %Uint32, %Uint32* %a + %"$b_86" = load %Uint32, %Uint32* %b + %"$add_call_87" = call %Uint32 @_add_Uint32(%Uint32 %"$a_85", %Uint32 %"$b_86") + store %Uint32 %"$add_call_87", %Uint32* %"$expr_2" + %"$$expr_2_88" = load %Uint32, %Uint32* %"$expr_2" + ret %Uint32 %"$$expr_2_88" } declare %Uint32 @_add_Uint32(%Uint32, %Uint32) @@ -88,10 +168,10 @@ declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_54" = call %Uint32 @"$scilla_expr_40"(i8* null) - %"$pval_55" = alloca %Uint32 - %"$memvoidcast_56" = bitcast %Uint32* %"$pval_55" to i8* - store %Uint32 %"$exprval_54", %Uint32* %"$pval_55" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_9", i8* %"$memvoidcast_56") + %"$exprval_89" = call %Uint32 @"$scilla_expr_45"(i8* null) + %"$pval_90" = alloca %Uint32 + %"$memvoidcast_91" = bitcast %Uint32* %"$pval_90" to i8* + store %Uint32 %"$exprval_89", %Uint32* %"$pval_90" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_9", i8* %"$memvoidcast_91") ret void } diff --git a/testsuite/expr/name_clash2.ll.result b/testsuite/expr/name_clash2.ll.result index 9a9f6d8d..ba91f6fb 100644 --- a/testsuite/expr/name_clash2.ll.result +++ b/testsuite/expr/name_clash2.ll.result @@ -1 +1,2 @@ 2 : Uint32 +Gas remaining: 9999993 diff --git a/testsuite/expr/nonprenex.ll b/testsuite/expr/nonprenex.ll index dce387c2..aa8381e9 100644 --- a/testsuite/expr/nonprenex.ll +++ b/testsuite/expr/nonprenex.ll @@ -77,6 +77,7 @@ target triple = "x86_64-pc-linux-gnu" %"$$fundef_12_env_152" = type {} @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_60" = global %"$TyDescrTy_PrimTyp_59" zeroinitializer @"$TyDescr_Int32_61" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_59"* @"$TyDescr_Int32_Prim_60" to i8*) } @"$TyDescr_Uint32_Prim_62" = global %"$TyDescrTy_PrimTyp_59" { i32 1, i32 0 } @@ -148,694 +149,1345 @@ target triple = "x86_64-pc-linux-gnu" define internal { i8*, i8* }* @"$fundef_57"(%"$$fundef_57_env_130"* %0, { i8*, i8* }* %1) { entry: - %"$$fundef_57_env_b_478" = getelementptr inbounds %"$$fundef_57_env_130", %"$$fundef_57_env_130"* %0, i32 0, i32 0 - %"$b_envload_479" = load %TName_Bool*, %TName_Bool** %"$$fundef_57_env_b_478" + %"$$fundef_57_env_b_758" = getelementptr inbounds %"$$fundef_57_env_130", %"$$fundef_57_env_130"* %0, i32 0, i32 0 + %"$b_envload_759" = load %TName_Bool*, %TName_Bool** %"$$fundef_57_env_b_758" %b = alloca %TName_Bool* - store %TName_Bool* %"$b_envload_479", %TName_Bool** %b - %"$$fundef_57_env_f_480" = getelementptr inbounds %"$$fundef_57_env_130", %"$$fundef_57_env_130"* %0, i32 0, i32 1 - %"$f_envload_481" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_57_env_f_480" + store %TName_Bool* %"$b_envload_759", %TName_Bool** %b + %"$$fundef_57_env_f_760" = getelementptr inbounds %"$$fundef_57_env_130", %"$$fundef_57_env_130"* %0, i32 0, i32 1 + %"$f_envload_761" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_57_env_f_760" %f = alloca { i8*, i8* }* - store { i8*, i8* }* %"$f_envload_481", { i8*, i8* }** %f + store { i8*, i8* }* %"$f_envload_761", { i8*, i8* }** %f %"$retval_58" = alloca { i8*, i8* }* - %"$b_483" = load %TName_Bool*, %TName_Bool** %b - %"$b_tag_484" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b_483", i32 0, i32 0 - %"$b_tag_485" = load i8, i8* %"$b_tag_484" - switch i8 %"$b_tag_485", label %"$empty_default_486" [ - i8 0, label %"$True_487" - i8 1, label %"$False_489" + %"$gasrem_762" = load i64, i64* @_gasrem + %"$gascmp_763" = icmp ugt i64 2, %"$gasrem_762" + br i1 %"$gascmp_763", label %"$out_of_gas_764", label %"$have_gas_765" + +"$out_of_gas_764": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_765" + +"$have_gas_765": ; preds = %"$out_of_gas_764", %entry + %"$consume_766" = sub i64 %"$gasrem_762", 2 + store i64 %"$consume_766", i64* @_gasrem + %"$b_768" = load %TName_Bool*, %TName_Bool** %b + %"$b_tag_769" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b_768", i32 0, i32 0 + %"$b_tag_770" = load i8, i8* %"$b_tag_769" + switch i8 %"$b_tag_770", label %"$empty_default_771" [ + i8 0, label %"$True_772" + i8 1, label %"$False_779" ] -"$True_487": ; preds = %entry - %"$b_488" = bitcast %TName_Bool* %"$b_483" to %CName_True* +"$True_772": ; preds = %"$have_gas_765" + %"$b_773" = bitcast %TName_Bool* %"$b_768" to %CName_True* + %"$gasrem_774" = load i64, i64* @_gasrem + %"$gascmp_775" = icmp ugt i64 1, %"$gasrem_774" + br i1 %"$gascmp_775", label %"$out_of_gas_776", label %"$have_gas_777" + +"$out_of_gas_776": ; preds = %"$True_772" + call void @_out_of_gas() + br label %"$have_gas_777" + +"$have_gas_777": ; preds = %"$out_of_gas_776", %"$True_772" + %"$consume_778" = sub i64 %"$gasrem_774", 1 + store i64 %"$consume_778", i64* @_gasrem store { i8*, i8* }* %1, { i8*, i8* }** %"$retval_58" - br label %"$matchsucc_482" + br label %"$matchsucc_767" + +"$False_779": ; preds = %"$have_gas_765" + %"$b_780" = bitcast %TName_Bool* %"$b_768" to %CName_False* + %"$gasrem_781" = load i64, i64* @_gasrem + %"$gascmp_782" = icmp ugt i64 1, %"$gasrem_781" + br i1 %"$gascmp_782", label %"$out_of_gas_783", label %"$have_gas_784" + +"$out_of_gas_783": ; preds = %"$False_779" + call void @_out_of_gas() + br label %"$have_gas_784" -"$False_489": ; preds = %entry - %"$b_490" = bitcast %TName_Bool* %"$b_483" to %CName_False* - %"$f_491" = load { i8*, i8* }*, { i8*, i8* }** %f - store { i8*, i8* }* %"$f_491", { i8*, i8* }** %"$retval_58" - br label %"$matchsucc_482" +"$have_gas_784": ; preds = %"$out_of_gas_783", %"$False_779" + %"$consume_785" = sub i64 %"$gasrem_781", 1 + store i64 %"$consume_785", i64* @_gasrem + %"$f_786" = load { i8*, i8* }*, { i8*, i8* }** %f + store { i8*, i8* }* %"$f_786", { i8*, i8* }** %"$retval_58" + br label %"$matchsucc_767" -"$empty_default_486": ; preds = %entry - br label %"$matchsucc_482" +"$empty_default_771": ; preds = %"$have_gas_765" + br label %"$matchsucc_767" -"$matchsucc_482": ; preds = %"$False_489", %"$True_487", %"$empty_default_486" - %"$$retval_58_492" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_58" - ret { i8*, i8* }* %"$$retval_58_492" +"$matchsucc_767": ; preds = %"$have_gas_784", %"$have_gas_777", %"$empty_default_771" + %"$$retval_58_787" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_58" + ret { i8*, i8* }* %"$$retval_58_787" } define internal { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } @"$fundef_55"(%"$$fundef_55_env_131"* %0, { i8*, i8* }* %1) { entry: - %"$$fundef_55_env_b_468" = getelementptr inbounds %"$$fundef_55_env_131", %"$$fundef_55_env_131"* %0, i32 0, i32 0 - %"$b_envload_469" = load %TName_Bool*, %TName_Bool** %"$$fundef_55_env_b_468" + %"$$fundef_55_env_b_743" = getelementptr inbounds %"$$fundef_55_env_131", %"$$fundef_55_env_131"* %0, i32 0, i32 0 + %"$b_envload_744" = load %TName_Bool*, %TName_Bool** %"$$fundef_55_env_b_743" %b = alloca %TName_Bool* - store %TName_Bool* %"$b_envload_469", %TName_Bool** %b + store %TName_Bool* %"$b_envload_744", %TName_Bool** %b %"$retval_56" = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } - %"$$fundef_57_envp_470_load" = load i8*, i8** @_execptr - %"$$fundef_57_envp_470_salloc" = call i8* @_salloc(i8* %"$$fundef_57_envp_470_load", i64 16) - %"$$fundef_57_envp_470" = bitcast i8* %"$$fundef_57_envp_470_salloc" to %"$$fundef_57_env_130"* - %"$$fundef_57_env_voidp_472" = bitcast %"$$fundef_57_env_130"* %"$$fundef_57_envp_470" to i8* - %"$$fundef_57_cloval_473" = insertvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } { { i8*, i8* }* (i8*, { i8*, i8* }*)* bitcast ({ i8*, i8* }* (%"$$fundef_57_env_130"*, { i8*, i8* }*)* @"$fundef_57" to { i8*, i8* }* (i8*, { i8*, i8* }*)*), i8* undef }, i8* %"$$fundef_57_env_voidp_472", 1 - %"$$fundef_57_env_b_474" = getelementptr inbounds %"$$fundef_57_env_130", %"$$fundef_57_env_130"* %"$$fundef_57_envp_470", i32 0, i32 0 - %"$b_475" = load %TName_Bool*, %TName_Bool** %b - store %TName_Bool* %"$b_475", %TName_Bool** %"$$fundef_57_env_b_474" - %"$$fundef_57_env_f_476" = getelementptr inbounds %"$$fundef_57_env_130", %"$$fundef_57_env_130"* %"$$fundef_57_envp_470", i32 0, i32 1 - store { i8*, i8* }* %1, { i8*, i8* }** %"$$fundef_57_env_f_476" - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$fundef_57_cloval_473", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_56" - %"$$retval_56_477" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_56" - ret { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$retval_56_477" + %"$gasrem_745" = load i64, i64* @_gasrem + %"$gascmp_746" = icmp ugt i64 1, %"$gasrem_745" + br i1 %"$gascmp_746", label %"$out_of_gas_747", label %"$have_gas_748" + +"$out_of_gas_747": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_748" + +"$have_gas_748": ; preds = %"$out_of_gas_747", %entry + %"$consume_749" = sub i64 %"$gasrem_745", 1 + store i64 %"$consume_749", i64* @_gasrem + %"$$fundef_57_envp_750_load" = load i8*, i8** @_execptr + %"$$fundef_57_envp_750_salloc" = call i8* @_salloc(i8* %"$$fundef_57_envp_750_load", i64 16) + %"$$fundef_57_envp_750" = bitcast i8* %"$$fundef_57_envp_750_salloc" to %"$$fundef_57_env_130"* + %"$$fundef_57_env_voidp_752" = bitcast %"$$fundef_57_env_130"* %"$$fundef_57_envp_750" to i8* + %"$$fundef_57_cloval_753" = insertvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } { { i8*, i8* }* (i8*, { i8*, i8* }*)* bitcast ({ i8*, i8* }* (%"$$fundef_57_env_130"*, { i8*, i8* }*)* @"$fundef_57" to { i8*, i8* }* (i8*, { i8*, i8* }*)*), i8* undef }, i8* %"$$fundef_57_env_voidp_752", 1 + %"$$fundef_57_env_b_754" = getelementptr inbounds %"$$fundef_57_env_130", %"$$fundef_57_env_130"* %"$$fundef_57_envp_750", i32 0, i32 0 + %"$b_755" = load %TName_Bool*, %TName_Bool** %b + store %TName_Bool* %"$b_755", %TName_Bool** %"$$fundef_57_env_b_754" + %"$$fundef_57_env_f_756" = getelementptr inbounds %"$$fundef_57_env_130", %"$$fundef_57_env_130"* %"$$fundef_57_envp_750", i32 0, i32 1 + store { i8*, i8* }* %1, { i8*, i8* }** %"$$fundef_57_env_f_756" + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$fundef_57_cloval_753", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_56" + %"$$retval_56_757" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$retval_56" + ret { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$retval_56_757" } define internal { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } @"$fundef_53"(%"$$fundef_53_env_132"* %0, %TName_Bool* %1) { entry: %"$retval_54" = alloca { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } - %"$$fundef_55_envp_462_load" = load i8*, i8** @_execptr - %"$$fundef_55_envp_462_salloc" = call i8* @_salloc(i8* %"$$fundef_55_envp_462_load", i64 8) - %"$$fundef_55_envp_462" = bitcast i8* %"$$fundef_55_envp_462_salloc" to %"$$fundef_55_env_131"* - %"$$fundef_55_env_voidp_464" = bitcast %"$$fundef_55_env_131"* %"$$fundef_55_envp_462" to i8* - %"$$fundef_55_cloval_465" = insertvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)* bitcast ({ { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (%"$$fundef_55_env_131"*, { i8*, i8* }*)* @"$fundef_55" to { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*), i8* undef }, i8* %"$$fundef_55_env_voidp_464", 1 - %"$$fundef_55_env_b_466" = getelementptr inbounds %"$$fundef_55_env_131", %"$$fundef_55_env_131"* %"$$fundef_55_envp_462", i32 0, i32 0 - store %TName_Bool* %1, %TName_Bool** %"$$fundef_55_env_b_466" - store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$$fundef_55_cloval_465", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$retval_54" - %"$$retval_54_467" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$retval_54" - ret { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$$retval_54_467" + %"$gasrem_732" = load i64, i64* @_gasrem + %"$gascmp_733" = icmp ugt i64 1, %"$gasrem_732" + br i1 %"$gascmp_733", label %"$out_of_gas_734", label %"$have_gas_735" + +"$out_of_gas_734": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_735" + +"$have_gas_735": ; preds = %"$out_of_gas_734", %entry + %"$consume_736" = sub i64 %"$gasrem_732", 1 + store i64 %"$consume_736", i64* @_gasrem + %"$$fundef_55_envp_737_load" = load i8*, i8** @_execptr + %"$$fundef_55_envp_737_salloc" = call i8* @_salloc(i8* %"$$fundef_55_envp_737_load", i64 8) + %"$$fundef_55_envp_737" = bitcast i8* %"$$fundef_55_envp_737_salloc" to %"$$fundef_55_env_131"* + %"$$fundef_55_env_voidp_739" = bitcast %"$$fundef_55_env_131"* %"$$fundef_55_envp_737" to i8* + %"$$fundef_55_cloval_740" = insertvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)* bitcast ({ { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (%"$$fundef_55_env_131"*, { i8*, i8* }*)* @"$fundef_55" to { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*), i8* undef }, i8* %"$$fundef_55_env_voidp_739", 1 + %"$$fundef_55_env_b_741" = getelementptr inbounds %"$$fundef_55_env_131", %"$$fundef_55_env_131"* %"$$fundef_55_envp_737", i32 0, i32 0 + store %TName_Bool* %1, %TName_Bool** %"$$fundef_55_env_b_741" + store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$$fundef_55_cloval_740", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$retval_54" + %"$$retval_54_742" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$retval_54" + ret { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$$retval_54_742" } define internal %Uint32 @"$fundef_51"(%"$$fundef_51_env_133"* %0, %TName_List_ByStr20* %1) { entry: - %"$$fundef_51_env_list_length_444" = getelementptr inbounds %"$$fundef_51_env_133", %"$$fundef_51_env_133"* %0, i32 0, i32 0 - %"$list_length_envload_445" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_51_env_list_length_444" + %"$$fundef_51_env_list_length_684" = getelementptr inbounds %"$$fundef_51_env_133", %"$$fundef_51_env_133"* %0, i32 0, i32 0 + %"$list_length_envload_685" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_51_env_list_length_684" %list_length = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_length_envload_445", { i8*, i8* }** %list_length + store { i8*, i8* }* %"$list_length_envload_685", { i8*, i8* }** %list_length %"$retval_52" = alloca %Uint32 + %"$gasrem_686" = load i64, i64* @_gasrem + %"$gascmp_687" = icmp ugt i64 1, %"$gasrem_686" + br i1 %"$gascmp_687", label %"$out_of_gas_688", label %"$have_gas_689" + +"$out_of_gas_688": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_689" + +"$have_gas_689": ; preds = %"$out_of_gas_688", %entry + %"$consume_690" = sub i64 %"$gasrem_686", 1 + store i64 %"$consume_690", i64* @_gasrem %ll = alloca { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } - %"$list_length_446" = load { i8*, i8* }*, { i8*, i8* }** %list_length - %"$list_length_447" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_length_446", i32 2 - %"$list_length_448" = bitcast { i8*, i8* }* %"$list_length_447" to { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }* - %"$list_length_449" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }* %"$list_length_448" - %"$list_length_fptr_450" = extractvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* } %"$list_length_449", 0 - %"$list_length_envptr_451" = extractvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* } %"$list_length_449", 1 - %"$list_length_call_452" = call { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$list_length_fptr_450"(i8* %"$list_length_envptr_451") - store { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$list_length_call_452", { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %ll + %"$gasrem_691" = load i64, i64* @_gasrem + %"$gascmp_692" = icmp ugt i64 1, %"$gasrem_691" + br i1 %"$gascmp_692", label %"$out_of_gas_693", label %"$have_gas_694" + +"$out_of_gas_693": ; preds = %"$have_gas_689" + call void @_out_of_gas() + br label %"$have_gas_694" + +"$have_gas_694": ; preds = %"$out_of_gas_693", %"$have_gas_689" + %"$consume_695" = sub i64 %"$gasrem_691", 1 + store i64 %"$consume_695", i64* @_gasrem + %"$list_length_696" = load { i8*, i8* }*, { i8*, i8* }** %list_length + %"$list_length_697" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_length_696", i32 2 + %"$list_length_698" = bitcast { i8*, i8* }* %"$list_length_697" to { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }* + %"$list_length_699" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }* %"$list_length_698" + %"$list_length_fptr_700" = extractvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* } %"$list_length_699", 0 + %"$list_length_envptr_701" = extractvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* } %"$list_length_699", 1 + %"$list_length_call_702" = call { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$list_length_fptr_700"(i8* %"$list_length_envptr_701") + store { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$list_length_call_702", { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %ll + %"$gasrem_703" = load i64, i64* @_gasrem + %"$gascmp_704" = icmp ugt i64 1, %"$gasrem_703" + br i1 %"$gascmp_704", label %"$out_of_gas_705", label %"$have_gas_706" + +"$out_of_gas_705": ; preds = %"$have_gas_694" + call void @_out_of_gas() + br label %"$have_gas_706" + +"$have_gas_706": ; preds = %"$out_of_gas_705", %"$have_gas_694" + %"$consume_707" = sub i64 %"$gasrem_703", 1 + store i64 %"$consume_707", i64* @_gasrem %n = alloca %Uint32 + %"$gasrem_708" = load i64, i64* @_gasrem + %"$gascmp_709" = icmp ugt i64 1, %"$gasrem_708" + br i1 %"$gascmp_709", label %"$out_of_gas_710", label %"$have_gas_711" + +"$out_of_gas_710": ; preds = %"$have_gas_706" + call void @_out_of_gas() + br label %"$have_gas_711" + +"$have_gas_711": ; preds = %"$out_of_gas_710", %"$have_gas_706" + %"$consume_712" = sub i64 %"$gasrem_708", 1 + store i64 %"$consume_712", i64* @_gasrem %"$ll_6" = alloca %Uint32 - %"$ll_453" = load { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }, { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %ll - %"$ll_fptr_454" = extractvalue { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$ll_453", 0 - %"$ll_envptr_455" = extractvalue { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$ll_453", 1 - %"$ll_call_456" = call %Uint32 %"$ll_fptr_454"(i8* %"$ll_envptr_455", %TName_List_ByStr20* %1) - store %Uint32 %"$ll_call_456", %Uint32* %"$ll_6" - %"$$ll_6_457" = load %Uint32, %Uint32* %"$ll_6" - store %Uint32 %"$$ll_6_457", %Uint32* %n + %"$ll_713" = load { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }, { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %ll + %"$ll_fptr_714" = extractvalue { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$ll_713", 0 + %"$ll_envptr_715" = extractvalue { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$ll_713", 1 + %"$ll_call_716" = call %Uint32 %"$ll_fptr_714"(i8* %"$ll_envptr_715", %TName_List_ByStr20* %1) + store %Uint32 %"$ll_call_716", %Uint32* %"$ll_6" + %"$$ll_6_717" = load %Uint32, %Uint32* %"$ll_6" + store %Uint32 %"$$ll_6_717", %Uint32* %n + %"$gasrem_718" = load i64, i64* @_gasrem + %"$gascmp_719" = icmp ugt i64 1, %"$gasrem_718" + br i1 %"$gascmp_719", label %"$out_of_gas_720", label %"$have_gas_721" + +"$out_of_gas_720": ; preds = %"$have_gas_711" + call void @_out_of_gas() + br label %"$have_gas_721" + +"$have_gas_721": ; preds = %"$out_of_gas_720", %"$have_gas_711" + %"$consume_722" = sub i64 %"$gasrem_718", 1 + store i64 %"$consume_722", i64* @_gasrem %two = alloca %Uint32 + %"$gasrem_723" = load i64, i64* @_gasrem + %"$gascmp_724" = icmp ugt i64 1, %"$gasrem_723" + br i1 %"$gascmp_724", label %"$out_of_gas_725", label %"$have_gas_726" + +"$out_of_gas_725": ; preds = %"$have_gas_721" + call void @_out_of_gas() + br label %"$have_gas_726" + +"$have_gas_726": ; preds = %"$out_of_gas_725", %"$have_gas_721" + %"$consume_727" = sub i64 %"$gasrem_723", 1 + store i64 %"$consume_727", i64* @_gasrem store %Uint32 { i32 2 }, %Uint32* %two - %"$n_458" = load %Uint32, %Uint32* %n - %"$two_459" = load %Uint32, %Uint32* %two - %"$add_call_460" = call %Uint32 @_add_Uint32(%Uint32 %"$n_458", %Uint32 %"$two_459") - store %Uint32 %"$add_call_460", %Uint32* %"$retval_52" - %"$$retval_52_461" = load %Uint32, %Uint32* %"$retval_52" - ret %Uint32 %"$$retval_52_461" + %"$n_728" = load %Uint32, %Uint32* %n + %"$two_729" = load %Uint32, %Uint32* %two + %"$add_call_730" = call %Uint32 @_add_Uint32(%Uint32 %"$n_728", %Uint32 %"$two_729") + store %Uint32 %"$add_call_730", %Uint32* %"$retval_52" + %"$$retval_52_731" = load %Uint32, %Uint32* %"$retval_52" + ret %Uint32 %"$$retval_52_731" } define internal { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_49"(%"$$fundef_49_env_134"* %0) { entry: - %"$$fundef_49_env_list_length_435" = getelementptr inbounds %"$$fundef_49_env_134", %"$$fundef_49_env_134"* %0, i32 0, i32 0 - %"$list_length_envload_436" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_49_env_list_length_435" + %"$$fundef_49_env_list_length_670" = getelementptr inbounds %"$$fundef_49_env_134", %"$$fundef_49_env_134"* %0, i32 0, i32 0 + %"$list_length_envload_671" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_49_env_list_length_670" %list_length = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_length_envload_436", { i8*, i8* }** %list_length + store { i8*, i8* }* %"$list_length_envload_671", { i8*, i8* }** %list_length %"$retval_50" = alloca { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } - %"$$fundef_51_envp_437_load" = load i8*, i8** @_execptr - %"$$fundef_51_envp_437_salloc" = call i8* @_salloc(i8* %"$$fundef_51_envp_437_load", i64 8) - %"$$fundef_51_envp_437" = bitcast i8* %"$$fundef_51_envp_437_salloc" to %"$$fundef_51_env_133"* - %"$$fundef_51_env_voidp_439" = bitcast %"$$fundef_51_env_133"* %"$$fundef_51_envp_437" to i8* - %"$$fundef_51_cloval_440" = insertvalue { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } { %Uint32 (i8*, %TName_List_ByStr20*)* bitcast (%Uint32 (%"$$fundef_51_env_133"*, %TName_List_ByStr20*)* @"$fundef_51" to %Uint32 (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_51_env_voidp_439", 1 - %"$$fundef_51_env_list_length_441" = getelementptr inbounds %"$$fundef_51_env_133", %"$$fundef_51_env_133"* %"$$fundef_51_envp_437", i32 0, i32 0 - %"$list_length_442" = load { i8*, i8* }*, { i8*, i8* }** %list_length - store { i8*, i8* }* %"$list_length_442", { i8*, i8* }** %"$$fundef_51_env_list_length_441" - store { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_51_cloval_440", { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_50" - %"$$retval_50_443" = load { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }, { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_50" - ret { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_50_443" + %"$gasrem_672" = load i64, i64* @_gasrem + %"$gascmp_673" = icmp ugt i64 1, %"$gasrem_672" + br i1 %"$gascmp_673", label %"$out_of_gas_674", label %"$have_gas_675" + +"$out_of_gas_674": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_675" + +"$have_gas_675": ; preds = %"$out_of_gas_674", %entry + %"$consume_676" = sub i64 %"$gasrem_672", 1 + store i64 %"$consume_676", i64* @_gasrem + %"$$fundef_51_envp_677_load" = load i8*, i8** @_execptr + %"$$fundef_51_envp_677_salloc" = call i8* @_salloc(i8* %"$$fundef_51_envp_677_load", i64 8) + %"$$fundef_51_envp_677" = bitcast i8* %"$$fundef_51_envp_677_salloc" to %"$$fundef_51_env_133"* + %"$$fundef_51_env_voidp_679" = bitcast %"$$fundef_51_env_133"* %"$$fundef_51_envp_677" to i8* + %"$$fundef_51_cloval_680" = insertvalue { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } { %Uint32 (i8*, %TName_List_ByStr20*)* bitcast (%Uint32 (%"$$fundef_51_env_133"*, %TName_List_ByStr20*)* @"$fundef_51" to %Uint32 (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_51_env_voidp_679", 1 + %"$$fundef_51_env_list_length_681" = getelementptr inbounds %"$$fundef_51_env_133", %"$$fundef_51_env_133"* %"$$fundef_51_envp_677", i32 0, i32 0 + %"$list_length_682" = load { i8*, i8* }*, { i8*, i8* }** %list_length + store { i8*, i8* }* %"$list_length_682", { i8*, i8* }** %"$$fundef_51_env_list_length_681" + store { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_51_cloval_680", { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_50" + %"$$retval_50_683" = load { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }, { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_50" + ret { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_50_683" } define internal %Uint32 @"$fundef_47"(%"$$fundef_47_env_135"* %0, %TName_List_String* %1) { entry: - %"$$fundef_47_env_list_length_417" = getelementptr inbounds %"$$fundef_47_env_135", %"$$fundef_47_env_135"* %0, i32 0, i32 0 - %"$list_length_envload_418" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_47_env_list_length_417" + %"$$fundef_47_env_list_length_622" = getelementptr inbounds %"$$fundef_47_env_135", %"$$fundef_47_env_135"* %0, i32 0, i32 0 + %"$list_length_envload_623" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_47_env_list_length_622" %list_length = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_length_envload_418", { i8*, i8* }** %list_length + store { i8*, i8* }* %"$list_length_envload_623", { i8*, i8* }** %list_length %"$retval_48" = alloca %Uint32 + %"$gasrem_624" = load i64, i64* @_gasrem + %"$gascmp_625" = icmp ugt i64 1, %"$gasrem_624" + br i1 %"$gascmp_625", label %"$out_of_gas_626", label %"$have_gas_627" + +"$out_of_gas_626": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_627" + +"$have_gas_627": ; preds = %"$out_of_gas_626", %entry + %"$consume_628" = sub i64 %"$gasrem_624", 1 + store i64 %"$consume_628", i64* @_gasrem %ll = alloca { %Uint32 (i8*, %TName_List_String*)*, i8* } - %"$list_length_419" = load { i8*, i8* }*, { i8*, i8* }** %list_length - %"$list_length_420" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_length_419", i32 0 - %"$list_length_421" = bitcast { i8*, i8* }* %"$list_length_420" to { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* - %"$list_length_422" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* %"$list_length_421" - %"$list_length_fptr_423" = extractvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } %"$list_length_422", 0 - %"$list_length_envptr_424" = extractvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } %"$list_length_422", 1 - %"$list_length_call_425" = call { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$list_length_fptr_423"(i8* %"$list_length_envptr_424") - store { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$list_length_call_425", { %Uint32 (i8*, %TName_List_String*)*, i8* }* %ll + %"$gasrem_629" = load i64, i64* @_gasrem + %"$gascmp_630" = icmp ugt i64 1, %"$gasrem_629" + br i1 %"$gascmp_630", label %"$out_of_gas_631", label %"$have_gas_632" + +"$out_of_gas_631": ; preds = %"$have_gas_627" + call void @_out_of_gas() + br label %"$have_gas_632" + +"$have_gas_632": ; preds = %"$out_of_gas_631", %"$have_gas_627" + %"$consume_633" = sub i64 %"$gasrem_629", 1 + store i64 %"$consume_633", i64* @_gasrem + %"$list_length_634" = load { i8*, i8* }*, { i8*, i8* }** %list_length + %"$list_length_635" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_length_634", i32 0 + %"$list_length_636" = bitcast { i8*, i8* }* %"$list_length_635" to { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* + %"$list_length_637" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* %"$list_length_636" + %"$list_length_fptr_638" = extractvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } %"$list_length_637", 0 + %"$list_length_envptr_639" = extractvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } %"$list_length_637", 1 + %"$list_length_call_640" = call { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$list_length_fptr_638"(i8* %"$list_length_envptr_639") + store { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$list_length_call_640", { %Uint32 (i8*, %TName_List_String*)*, i8* }* %ll + %"$gasrem_641" = load i64, i64* @_gasrem + %"$gascmp_642" = icmp ugt i64 1, %"$gasrem_641" + br i1 %"$gascmp_642", label %"$out_of_gas_643", label %"$have_gas_644" + +"$out_of_gas_643": ; preds = %"$have_gas_632" + call void @_out_of_gas() + br label %"$have_gas_644" + +"$have_gas_644": ; preds = %"$out_of_gas_643", %"$have_gas_632" + %"$consume_645" = sub i64 %"$gasrem_641", 1 + store i64 %"$consume_645", i64* @_gasrem %n = alloca %Uint32 + %"$gasrem_646" = load i64, i64* @_gasrem + %"$gascmp_647" = icmp ugt i64 1, %"$gasrem_646" + br i1 %"$gascmp_647", label %"$out_of_gas_648", label %"$have_gas_649" + +"$out_of_gas_648": ; preds = %"$have_gas_644" + call void @_out_of_gas() + br label %"$have_gas_649" + +"$have_gas_649": ; preds = %"$out_of_gas_648", %"$have_gas_644" + %"$consume_650" = sub i64 %"$gasrem_646", 1 + store i64 %"$consume_650", i64* @_gasrem %"$ll_6" = alloca %Uint32 - %"$ll_426" = load { %Uint32 (i8*, %TName_List_String*)*, i8* }, { %Uint32 (i8*, %TName_List_String*)*, i8* }* %ll - %"$ll_fptr_427" = extractvalue { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$ll_426", 0 - %"$ll_envptr_428" = extractvalue { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$ll_426", 1 - %"$ll_call_429" = call %Uint32 %"$ll_fptr_427"(i8* %"$ll_envptr_428", %TName_List_String* %1) - store %Uint32 %"$ll_call_429", %Uint32* %"$ll_6" - %"$$ll_6_430" = load %Uint32, %Uint32* %"$ll_6" - store %Uint32 %"$$ll_6_430", %Uint32* %n + %"$ll_651" = load { %Uint32 (i8*, %TName_List_String*)*, i8* }, { %Uint32 (i8*, %TName_List_String*)*, i8* }* %ll + %"$ll_fptr_652" = extractvalue { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$ll_651", 0 + %"$ll_envptr_653" = extractvalue { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$ll_651", 1 + %"$ll_call_654" = call %Uint32 %"$ll_fptr_652"(i8* %"$ll_envptr_653", %TName_List_String* %1) + store %Uint32 %"$ll_call_654", %Uint32* %"$ll_6" + %"$$ll_6_655" = load %Uint32, %Uint32* %"$ll_6" + store %Uint32 %"$$ll_6_655", %Uint32* %n + %"$gasrem_656" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_649" + call void @_out_of_gas() + br label %"$have_gas_659" + +"$have_gas_659": ; preds = %"$out_of_gas_658", %"$have_gas_649" + %"$consume_660" = sub i64 %"$gasrem_656", 1 + store i64 %"$consume_660", i64* @_gasrem %two = alloca %Uint32 + %"$gasrem_661" = load i64, i64* @_gasrem + %"$gascmp_662" = icmp ugt i64 1, %"$gasrem_661" + br i1 %"$gascmp_662", label %"$out_of_gas_663", label %"$have_gas_664" + +"$out_of_gas_663": ; preds = %"$have_gas_659" + call void @_out_of_gas() + br label %"$have_gas_664" + +"$have_gas_664": ; preds = %"$out_of_gas_663", %"$have_gas_659" + %"$consume_665" = sub i64 %"$gasrem_661", 1 + store i64 %"$consume_665", i64* @_gasrem store %Uint32 { i32 2 }, %Uint32* %two - %"$n_431" = load %Uint32, %Uint32* %n - %"$two_432" = load %Uint32, %Uint32* %two - %"$add_call_433" = call %Uint32 @_add_Uint32(%Uint32 %"$n_431", %Uint32 %"$two_432") - store %Uint32 %"$add_call_433", %Uint32* %"$retval_48" - %"$$retval_48_434" = load %Uint32, %Uint32* %"$retval_48" - ret %Uint32 %"$$retval_48_434" + %"$n_666" = load %Uint32, %Uint32* %n + %"$two_667" = load %Uint32, %Uint32* %two + %"$add_call_668" = call %Uint32 @_add_Uint32(%Uint32 %"$n_666", %Uint32 %"$two_667") + store %Uint32 %"$add_call_668", %Uint32* %"$retval_48" + %"$$retval_48_669" = load %Uint32, %Uint32* %"$retval_48" + ret %Uint32 %"$$retval_48_669" } define internal { %Uint32 (i8*, %TName_List_String*)*, i8* } @"$fundef_45"(%"$$fundef_45_env_136"* %0) { entry: - %"$$fundef_45_env_list_length_408" = getelementptr inbounds %"$$fundef_45_env_136", %"$$fundef_45_env_136"* %0, i32 0, i32 0 - %"$list_length_envload_409" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_45_env_list_length_408" + %"$$fundef_45_env_list_length_608" = getelementptr inbounds %"$$fundef_45_env_136", %"$$fundef_45_env_136"* %0, i32 0, i32 0 + %"$list_length_envload_609" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_45_env_list_length_608" %list_length = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_length_envload_409", { i8*, i8* }** %list_length + store { i8*, i8* }* %"$list_length_envload_609", { i8*, i8* }** %list_length %"$retval_46" = alloca { %Uint32 (i8*, %TName_List_String*)*, i8* } - %"$$fundef_47_envp_410_load" = load i8*, i8** @_execptr - %"$$fundef_47_envp_410_salloc" = call i8* @_salloc(i8* %"$$fundef_47_envp_410_load", i64 8) - %"$$fundef_47_envp_410" = bitcast i8* %"$$fundef_47_envp_410_salloc" to %"$$fundef_47_env_135"* - %"$$fundef_47_env_voidp_412" = bitcast %"$$fundef_47_env_135"* %"$$fundef_47_envp_410" to i8* - %"$$fundef_47_cloval_413" = insertvalue { %Uint32 (i8*, %TName_List_String*)*, i8* } { %Uint32 (i8*, %TName_List_String*)* bitcast (%Uint32 (%"$$fundef_47_env_135"*, %TName_List_String*)* @"$fundef_47" to %Uint32 (i8*, %TName_List_String*)*), i8* undef }, i8* %"$$fundef_47_env_voidp_412", 1 - %"$$fundef_47_env_list_length_414" = getelementptr inbounds %"$$fundef_47_env_135", %"$$fundef_47_env_135"* %"$$fundef_47_envp_410", i32 0, i32 0 - %"$list_length_415" = load { i8*, i8* }*, { i8*, i8* }** %list_length - store { i8*, i8* }* %"$list_length_415", { i8*, i8* }** %"$$fundef_47_env_list_length_414" - store { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$fundef_47_cloval_413", { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$retval_46" - %"$$retval_46_416" = load { %Uint32 (i8*, %TName_List_String*)*, i8* }, { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$retval_46" - ret { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$retval_46_416" + %"$gasrem_610" = load i64, i64* @_gasrem + %"$gascmp_611" = icmp ugt i64 1, %"$gasrem_610" + br i1 %"$gascmp_611", label %"$out_of_gas_612", label %"$have_gas_613" + +"$out_of_gas_612": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_613" + +"$have_gas_613": ; preds = %"$out_of_gas_612", %entry + %"$consume_614" = sub i64 %"$gasrem_610", 1 + store i64 %"$consume_614", i64* @_gasrem + %"$$fundef_47_envp_615_load" = load i8*, i8** @_execptr + %"$$fundef_47_envp_615_salloc" = call i8* @_salloc(i8* %"$$fundef_47_envp_615_load", i64 8) + %"$$fundef_47_envp_615" = bitcast i8* %"$$fundef_47_envp_615_salloc" to %"$$fundef_47_env_135"* + %"$$fundef_47_env_voidp_617" = bitcast %"$$fundef_47_env_135"* %"$$fundef_47_envp_615" to i8* + %"$$fundef_47_cloval_618" = insertvalue { %Uint32 (i8*, %TName_List_String*)*, i8* } { %Uint32 (i8*, %TName_List_String*)* bitcast (%Uint32 (%"$$fundef_47_env_135"*, %TName_List_String*)* @"$fundef_47" to %Uint32 (i8*, %TName_List_String*)*), i8* undef }, i8* %"$$fundef_47_env_voidp_617", 1 + %"$$fundef_47_env_list_length_619" = getelementptr inbounds %"$$fundef_47_env_135", %"$$fundef_47_env_135"* %"$$fundef_47_envp_615", i32 0, i32 0 + %"$list_length_620" = load { i8*, i8* }*, { i8*, i8* }** %list_length + store { i8*, i8* }* %"$list_length_620", { i8*, i8* }** %"$$fundef_47_env_list_length_619" + store { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$fundef_47_cloval_618", { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$retval_46" + %"$$retval_46_621" = load { %Uint32 (i8*, %TName_List_String*)*, i8* }, { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$retval_46" + ret { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$retval_46_621" } define internal %Uint32 @"$fundef_42"(%"$$fundef_42_env_137"* %0, [20 x i8]* %1) { entry: %h = load [20 x i8], [20 x i8]* %1 - %"$$fundef_42_env_one_400" = getelementptr inbounds %"$$fundef_42_env_137", %"$$fundef_42_env_137"* %0, i32 0, i32 0 - %"$one_envload_401" = load %Uint32, %Uint32* %"$$fundef_42_env_one_400" + %"$$fundef_42_env_one_600" = getelementptr inbounds %"$$fundef_42_env_137", %"$$fundef_42_env_137"* %0, i32 0, i32 0 + %"$one_envload_601" = load %Uint32, %Uint32* %"$$fundef_42_env_one_600" %one = alloca %Uint32 - store %Uint32 %"$one_envload_401", %Uint32* %one - %"$$fundef_42_env_z_402" = getelementptr inbounds %"$$fundef_42_env_137", %"$$fundef_42_env_137"* %0, i32 0, i32 1 - %"$z_envload_403" = load %Uint32, %Uint32* %"$$fundef_42_env_z_402" + store %Uint32 %"$one_envload_601", %Uint32* %one + %"$$fundef_42_env_z_602" = getelementptr inbounds %"$$fundef_42_env_137", %"$$fundef_42_env_137"* %0, i32 0, i32 1 + %"$z_envload_603" = load %Uint32, %Uint32* %"$$fundef_42_env_z_602" %z = alloca %Uint32 - store %Uint32 %"$z_envload_403", %Uint32* %z + store %Uint32 %"$z_envload_603", %Uint32* %z %"$retval_43" = alloca %Uint32 - %"$one_404" = load %Uint32, %Uint32* %one - %"$z_405" = load %Uint32, %Uint32* %z - %"$add_call_406" = call %Uint32 @_add_Uint32(%Uint32 %"$one_404", %Uint32 %"$z_405") - store %Uint32 %"$add_call_406", %Uint32* %"$retval_43" - %"$$retval_43_407" = load %Uint32, %Uint32* %"$retval_43" - ret %Uint32 %"$$retval_43_407" + %"$one_604" = load %Uint32, %Uint32* %one + %"$z_605" = load %Uint32, %Uint32* %z + %"$add_call_606" = call %Uint32 @_add_Uint32(%Uint32 %"$one_604", %Uint32 %"$z_605") + store %Uint32 %"$add_call_606", %Uint32* %"$retval_43" + %"$$retval_43_607" = load %Uint32, %Uint32* %"$retval_43" + ret %Uint32 %"$$retval_43_607" } define internal { %Uint32 (i8*, [20 x i8]*)*, i8* } @"$fundef_40"(%"$$fundef_40_env_138"* %0, %Uint32 %1) { entry: - %"$$fundef_40_env_one_390" = getelementptr inbounds %"$$fundef_40_env_138", %"$$fundef_40_env_138"* %0, i32 0, i32 0 - %"$one_envload_391" = load %Uint32, %Uint32* %"$$fundef_40_env_one_390" + %"$$fundef_40_env_one_585" = getelementptr inbounds %"$$fundef_40_env_138", %"$$fundef_40_env_138"* %0, i32 0, i32 0 + %"$one_envload_586" = load %Uint32, %Uint32* %"$$fundef_40_env_one_585" %one = alloca %Uint32 - store %Uint32 %"$one_envload_391", %Uint32* %one + store %Uint32 %"$one_envload_586", %Uint32* %one %"$retval_41" = alloca { %Uint32 (i8*, [20 x i8]*)*, i8* } - %"$$fundef_42_envp_392_load" = load i8*, i8** @_execptr - %"$$fundef_42_envp_392_salloc" = call i8* @_salloc(i8* %"$$fundef_42_envp_392_load", i64 8) - %"$$fundef_42_envp_392" = bitcast i8* %"$$fundef_42_envp_392_salloc" to %"$$fundef_42_env_137"* - %"$$fundef_42_env_voidp_394" = bitcast %"$$fundef_42_env_137"* %"$$fundef_42_envp_392" to i8* - %"$$fundef_42_cloval_395" = insertvalue { %Uint32 (i8*, [20 x i8]*)*, i8* } { %Uint32 (i8*, [20 x i8]*)* bitcast (%Uint32 (%"$$fundef_42_env_137"*, [20 x i8]*)* @"$fundef_42" to %Uint32 (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_42_env_voidp_394", 1 - %"$$fundef_42_env_one_396" = getelementptr inbounds %"$$fundef_42_env_137", %"$$fundef_42_env_137"* %"$$fundef_42_envp_392", i32 0, i32 0 - %"$one_397" = load %Uint32, %Uint32* %one - store %Uint32 %"$one_397", %Uint32* %"$$fundef_42_env_one_396" - %"$$fundef_42_env_z_398" = getelementptr inbounds %"$$fundef_42_env_137", %"$$fundef_42_env_137"* %"$$fundef_42_envp_392", i32 0, i32 1 - store %Uint32 %1, %Uint32* %"$$fundef_42_env_z_398" - store { %Uint32 (i8*, [20 x i8]*)*, i8* } %"$$fundef_42_cloval_395", { %Uint32 (i8*, [20 x i8]*)*, i8* }* %"$retval_41" - %"$$retval_41_399" = load { %Uint32 (i8*, [20 x i8]*)*, i8* }, { %Uint32 (i8*, [20 x i8]*)*, i8* }* %"$retval_41" - ret { %Uint32 (i8*, [20 x i8]*)*, i8* } %"$$retval_41_399" + %"$gasrem_587" = load i64, i64* @_gasrem + %"$gascmp_588" = icmp ugt i64 1, %"$gasrem_587" + br i1 %"$gascmp_588", label %"$out_of_gas_589", label %"$have_gas_590" + +"$out_of_gas_589": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_590" + +"$have_gas_590": ; preds = %"$out_of_gas_589", %entry + %"$consume_591" = sub i64 %"$gasrem_587", 1 + store i64 %"$consume_591", i64* @_gasrem + %"$$fundef_42_envp_592_load" = load i8*, i8** @_execptr + %"$$fundef_42_envp_592_salloc" = call i8* @_salloc(i8* %"$$fundef_42_envp_592_load", i64 8) + %"$$fundef_42_envp_592" = bitcast i8* %"$$fundef_42_envp_592_salloc" to %"$$fundef_42_env_137"* + %"$$fundef_42_env_voidp_594" = bitcast %"$$fundef_42_env_137"* %"$$fundef_42_envp_592" to i8* + %"$$fundef_42_cloval_595" = insertvalue { %Uint32 (i8*, [20 x i8]*)*, i8* } { %Uint32 (i8*, [20 x i8]*)* bitcast (%Uint32 (%"$$fundef_42_env_137"*, [20 x i8]*)* @"$fundef_42" to %Uint32 (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_42_env_voidp_594", 1 + %"$$fundef_42_env_one_596" = getelementptr inbounds %"$$fundef_42_env_137", %"$$fundef_42_env_137"* %"$$fundef_42_envp_592", i32 0, i32 0 + %"$one_597" = load %Uint32, %Uint32* %one + store %Uint32 %"$one_597", %Uint32* %"$$fundef_42_env_one_596" + %"$$fundef_42_env_z_598" = getelementptr inbounds %"$$fundef_42_env_137", %"$$fundef_42_env_137"* %"$$fundef_42_envp_592", i32 0, i32 1 + store %Uint32 %1, %Uint32* %"$$fundef_42_env_z_598" + store { %Uint32 (i8*, [20 x i8]*)*, i8* } %"$$fundef_42_cloval_595", { %Uint32 (i8*, [20 x i8]*)*, i8* }* %"$retval_41" + %"$$retval_41_599" = load { %Uint32 (i8*, [20 x i8]*)*, i8* }, { %Uint32 (i8*, [20 x i8]*)*, i8* }* %"$retval_41" + ret { %Uint32 (i8*, [20 x i8]*)*, i8* } %"$$retval_41_599" } define internal { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_38"(%"$$fundef_38_env_139"* %0) { entry: - %"$$fundef_38_env_list_foldl_357" = getelementptr inbounds %"$$fundef_38_env_139", %"$$fundef_38_env_139"* %0, i32 0, i32 0 - %"$list_foldl_envload_358" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_38_env_list_foldl_357" + %"$$fundef_38_env_list_foldl_507" = getelementptr inbounds %"$$fundef_38_env_139", %"$$fundef_38_env_139"* %0, i32 0, i32 0 + %"$list_foldl_envload_508" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_38_env_list_foldl_507" %list_foldl = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_foldl_envload_358", { i8*, i8* }** %list_foldl + store { i8*, i8* }* %"$list_foldl_envload_508", { i8*, i8* }** %list_foldl %"$retval_39" = alloca { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } + %"$gasrem_509" = load i64, i64* @_gasrem + %"$gascmp_510" = icmp ugt i64 1, %"$gasrem_509" + br i1 %"$gascmp_510", label %"$out_of_gas_511", label %"$have_gas_512" + +"$out_of_gas_511": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_512" + +"$have_gas_512": ; preds = %"$out_of_gas_511", %entry + %"$consume_513" = sub i64 %"$gasrem_509", 1 + store i64 %"$consume_513", i64* @_gasrem %foldl = alloca { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } - %"$list_foldl_359" = load { i8*, i8* }*, { i8*, i8* }** %list_foldl - %"$list_foldl_360" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_359", i32 2 - %"$list_foldl_361" = bitcast { i8*, i8* }* %"$list_foldl_360" to { { i8*, i8* }* (i8*)*, i8* }* - %"$list_foldl_362" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$list_foldl_361" - %"$list_foldl_fptr_363" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_362", 0 - %"$list_foldl_envptr_364" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_362", 1 - %"$list_foldl_call_365" = call { i8*, i8* }* %"$list_foldl_fptr_363"(i8* %"$list_foldl_envptr_364") - %"$list_foldl_366" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_call_365", i32 1 - %"$list_foldl_367" = bitcast { i8*, i8* }* %"$list_foldl_366" to { { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - %"$list_foldl_368" = load { { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_foldl_367" - %"$list_foldl_fptr_369" = extractvalue { { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_368", 0 - %"$list_foldl_envptr_370" = extractvalue { { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_368", 1 - %"$list_foldl_call_371" = call { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_fptr_369"(i8* %"$list_foldl_envptr_370") - store { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_call_371", { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl + %"$gasrem_514" = load i64, i64* @_gasrem + %"$gascmp_515" = icmp ugt i64 1, %"$gasrem_514" + br i1 %"$gascmp_515", label %"$out_of_gas_516", label %"$have_gas_517" + +"$out_of_gas_516": ; preds = %"$have_gas_512" + call void @_out_of_gas() + br label %"$have_gas_517" + +"$have_gas_517": ; preds = %"$out_of_gas_516", %"$have_gas_512" + %"$consume_518" = sub i64 %"$gasrem_514", 1 + store i64 %"$consume_518", i64* @_gasrem + %"$list_foldl_519" = load { i8*, i8* }*, { i8*, i8* }** %list_foldl + %"$list_foldl_520" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_519", i32 2 + %"$list_foldl_521" = bitcast { i8*, i8* }* %"$list_foldl_520" to { { i8*, i8* }* (i8*)*, i8* }* + %"$list_foldl_522" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$list_foldl_521" + %"$list_foldl_fptr_523" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_522", 0 + %"$list_foldl_envptr_524" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_522", 1 + %"$list_foldl_call_525" = call { i8*, i8* }* %"$list_foldl_fptr_523"(i8* %"$list_foldl_envptr_524") + %"$list_foldl_526" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_call_525", i32 1 + %"$list_foldl_527" = bitcast { i8*, i8* }* %"$list_foldl_526" to { { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + %"$list_foldl_528" = load { { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_foldl_527" + %"$list_foldl_fptr_529" = extractvalue { { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_528", 0 + %"$list_foldl_envptr_530" = extractvalue { { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_528", 1 + %"$list_foldl_call_531" = call { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_fptr_529"(i8* %"$list_foldl_envptr_530") + store { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_call_531", { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl + %"$gasrem_532" = load i64, i64* @_gasrem + %"$gascmp_533" = icmp ugt i64 1, %"$gasrem_532" + br i1 %"$gascmp_533", label %"$out_of_gas_534", label %"$have_gas_535" + +"$out_of_gas_534": ; preds = %"$have_gas_517" + call void @_out_of_gas() + br label %"$have_gas_535" + +"$have_gas_535": ; preds = %"$out_of_gas_534", %"$have_gas_517" + %"$consume_536" = sub i64 %"$gasrem_532", 1 + store i64 %"$consume_536", i64* @_gasrem %one = alloca %Uint32 + %"$gasrem_537" = load i64, i64* @_gasrem + %"$gascmp_538" = icmp ugt i64 1, %"$gasrem_537" + br i1 %"$gascmp_538", label %"$out_of_gas_539", label %"$have_gas_540" + +"$out_of_gas_539": ; preds = %"$have_gas_535" + call void @_out_of_gas() + br label %"$have_gas_540" + +"$have_gas_540": ; preds = %"$out_of_gas_539", %"$have_gas_535" + %"$consume_541" = sub i64 %"$gasrem_537", 1 + store i64 %"$consume_541", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %one + %"$gasrem_542" = load i64, i64* @_gasrem + %"$gascmp_543" = icmp ugt i64 1, %"$gasrem_542" + br i1 %"$gascmp_543", label %"$out_of_gas_544", label %"$have_gas_545" + +"$out_of_gas_544": ; preds = %"$have_gas_540" + call void @_out_of_gas() + br label %"$have_gas_545" + +"$have_gas_545": ; preds = %"$out_of_gas_544", %"$have_gas_540" + %"$consume_546" = sub i64 %"$gasrem_542", 1 + store i64 %"$consume_546", i64* @_gasrem %iter = alloca { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } - %"$$fundef_40_envp_372_load" = load i8*, i8** @_execptr - %"$$fundef_40_envp_372_salloc" = call i8* @_salloc(i8* %"$$fundef_40_envp_372_load", i64 4) - %"$$fundef_40_envp_372" = bitcast i8* %"$$fundef_40_envp_372_salloc" to %"$$fundef_40_env_138"* - %"$$fundef_40_env_voidp_374" = bitcast %"$$fundef_40_env_138"* %"$$fundef_40_envp_372" to i8* - %"$$fundef_40_cloval_375" = insertvalue { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, [20 x i8]*)*, i8* } (%"$$fundef_40_env_138"*, %Uint32)* @"$fundef_40" to { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_40_env_voidp_374", 1 - %"$$fundef_40_env_one_376" = getelementptr inbounds %"$$fundef_40_env_138", %"$$fundef_40_env_138"* %"$$fundef_40_envp_372", i32 0, i32 0 - %"$one_377" = load %Uint32, %Uint32* %one - store %Uint32 %"$one_377", %Uint32* %"$$fundef_40_env_one_376" - store { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_40_cloval_375", { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %iter + %"$gasrem_547" = load i64, i64* @_gasrem + %"$gascmp_548" = icmp ugt i64 1, %"$gasrem_547" + br i1 %"$gascmp_548", label %"$out_of_gas_549", label %"$have_gas_550" + +"$out_of_gas_549": ; preds = %"$have_gas_545" + call void @_out_of_gas() + br label %"$have_gas_550" + +"$have_gas_550": ; preds = %"$out_of_gas_549", %"$have_gas_545" + %"$consume_551" = sub i64 %"$gasrem_547", 1 + store i64 %"$consume_551", i64* @_gasrem + %"$$fundef_40_envp_552_load" = load i8*, i8** @_execptr + %"$$fundef_40_envp_552_salloc" = call i8* @_salloc(i8* %"$$fundef_40_envp_552_load", i64 4) + %"$$fundef_40_envp_552" = bitcast i8* %"$$fundef_40_envp_552_salloc" to %"$$fundef_40_env_138"* + %"$$fundef_40_env_voidp_554" = bitcast %"$$fundef_40_env_138"* %"$$fundef_40_envp_552" to i8* + %"$$fundef_40_cloval_555" = insertvalue { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, [20 x i8]*)*, i8* } (%"$$fundef_40_env_138"*, %Uint32)* @"$fundef_40" to { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_40_env_voidp_554", 1 + %"$$fundef_40_env_one_556" = getelementptr inbounds %"$$fundef_40_env_138", %"$$fundef_40_env_138"* %"$$fundef_40_envp_552", i32 0, i32 0 + %"$one_557" = load %Uint32, %Uint32* %one + store %Uint32 %"$one_557", %Uint32* %"$$fundef_40_env_one_556" + store { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_40_cloval_555", { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %iter + %"$gasrem_558" = load i64, i64* @_gasrem + %"$gascmp_559" = icmp ugt i64 1, %"$gasrem_558" + br i1 %"$gascmp_559", label %"$out_of_gas_560", label %"$have_gas_561" + +"$out_of_gas_560": ; preds = %"$have_gas_550" + call void @_out_of_gas() + br label %"$have_gas_561" + +"$have_gas_561": ; preds = %"$out_of_gas_560", %"$have_gas_550" + %"$consume_562" = sub i64 %"$gasrem_558", 1 + store i64 %"$consume_562", i64* @_gasrem %init = alloca %Uint32 + %"$gasrem_563" = load i64, i64* @_gasrem + %"$gascmp_564" = icmp ugt i64 1, %"$gasrem_563" + br i1 %"$gascmp_564", label %"$out_of_gas_565", label %"$have_gas_566" + +"$out_of_gas_565": ; preds = %"$have_gas_561" + call void @_out_of_gas() + br label %"$have_gas_566" + +"$have_gas_566": ; preds = %"$out_of_gas_565", %"$have_gas_561" + %"$consume_567" = sub i64 %"$gasrem_563", 1 + store i64 %"$consume_567", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %init + %"$gasrem_568" = load i64, i64* @_gasrem + %"$gascmp_569" = icmp ugt i64 1, %"$gasrem_568" + br i1 %"$gascmp_569", label %"$out_of_gas_570", label %"$have_gas_571" + +"$out_of_gas_570": ; preds = %"$have_gas_566" + call void @_out_of_gas() + br label %"$have_gas_571" + +"$have_gas_571": ; preds = %"$out_of_gas_570", %"$have_gas_566" + %"$consume_572" = sub i64 %"$gasrem_568", 1 + store i64 %"$consume_572", i64* @_gasrem %"$foldl_4" = alloca { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } - %"$foldl_378" = load { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl - %"$foldl_fptr_379" = extractvalue { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_378", 0 - %"$foldl_envptr_380" = extractvalue { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_378", 1 - %"$iter_381" = load { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %iter - %"$foldl_call_382" = call { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_fptr_379"(i8* %"$foldl_envptr_380", { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } %"$iter_381") - store { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_call_382", { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" + %"$foldl_573" = load { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl + %"$foldl_fptr_574" = extractvalue { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_573", 0 + %"$foldl_envptr_575" = extractvalue { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_573", 1 + %"$iter_576" = load { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %iter + %"$foldl_call_577" = call { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_fptr_574"(i8* %"$foldl_envptr_575", { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } %"$iter_576") + store { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_call_577", { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" %"$foldl_5" = alloca { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } - %"$$foldl_4_383" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" - %"$$foldl_4_fptr_384" = extractvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_383", 0 - %"$$foldl_4_envptr_385" = extractvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_383", 1 - %"$init_386" = load %Uint32, %Uint32* %init - %"$$foldl_4_call_387" = call { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldl_4_fptr_384"(i8* %"$$foldl_4_envptr_385", %Uint32 %"$init_386") - store { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldl_4_call_387", { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$foldl_5" - %"$$foldl_5_388" = load { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }, { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$foldl_5" - store { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldl_5_388", { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_39" - %"$$retval_39_389" = load { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }, { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_39" - ret { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_39_389" + %"$$foldl_4_578" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" + %"$$foldl_4_fptr_579" = extractvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_578", 0 + %"$$foldl_4_envptr_580" = extractvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_578", 1 + %"$init_581" = load %Uint32, %Uint32* %init + %"$$foldl_4_call_582" = call { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldl_4_fptr_579"(i8* %"$$foldl_4_envptr_580", %Uint32 %"$init_581") + store { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldl_4_call_582", { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$foldl_5" + %"$$foldl_5_583" = load { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }, { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$foldl_5" + store { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldl_5_583", { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_39" + %"$$retval_39_584" = load { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }, { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_39" + ret { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_39_584" } define internal %Uint32 @"$fundef_36"(%"$$fundef_36_env_140"* %0, %String %1) { entry: - %"$$fundef_36_env_one_349" = getelementptr inbounds %"$$fundef_36_env_140", %"$$fundef_36_env_140"* %0, i32 0, i32 0 - %"$one_envload_350" = load %Uint32, %Uint32* %"$$fundef_36_env_one_349" + %"$$fundef_36_env_one_499" = getelementptr inbounds %"$$fundef_36_env_140", %"$$fundef_36_env_140"* %0, i32 0, i32 0 + %"$one_envload_500" = load %Uint32, %Uint32* %"$$fundef_36_env_one_499" %one = alloca %Uint32 - store %Uint32 %"$one_envload_350", %Uint32* %one - %"$$fundef_36_env_z_351" = getelementptr inbounds %"$$fundef_36_env_140", %"$$fundef_36_env_140"* %0, i32 0, i32 1 - %"$z_envload_352" = load %Uint32, %Uint32* %"$$fundef_36_env_z_351" + store %Uint32 %"$one_envload_500", %Uint32* %one + %"$$fundef_36_env_z_501" = getelementptr inbounds %"$$fundef_36_env_140", %"$$fundef_36_env_140"* %0, i32 0, i32 1 + %"$z_envload_502" = load %Uint32, %Uint32* %"$$fundef_36_env_z_501" %z = alloca %Uint32 - store %Uint32 %"$z_envload_352", %Uint32* %z + store %Uint32 %"$z_envload_502", %Uint32* %z %"$retval_37" = alloca %Uint32 - %"$one_353" = load %Uint32, %Uint32* %one - %"$z_354" = load %Uint32, %Uint32* %z - %"$add_call_355" = call %Uint32 @_add_Uint32(%Uint32 %"$one_353", %Uint32 %"$z_354") - store %Uint32 %"$add_call_355", %Uint32* %"$retval_37" - %"$$retval_37_356" = load %Uint32, %Uint32* %"$retval_37" - ret %Uint32 %"$$retval_37_356" + %"$one_503" = load %Uint32, %Uint32* %one + %"$z_504" = load %Uint32, %Uint32* %z + %"$add_call_505" = call %Uint32 @_add_Uint32(%Uint32 %"$one_503", %Uint32 %"$z_504") + store %Uint32 %"$add_call_505", %Uint32* %"$retval_37" + %"$$retval_37_506" = load %Uint32, %Uint32* %"$retval_37" + ret %Uint32 %"$$retval_37_506" } define internal { %Uint32 (i8*, %String)*, i8* } @"$fundef_34"(%"$$fundef_34_env_141"* %0, %Uint32 %1) { entry: - %"$$fundef_34_env_one_339" = getelementptr inbounds %"$$fundef_34_env_141", %"$$fundef_34_env_141"* %0, i32 0, i32 0 - %"$one_envload_340" = load %Uint32, %Uint32* %"$$fundef_34_env_one_339" + %"$$fundef_34_env_one_484" = getelementptr inbounds %"$$fundef_34_env_141", %"$$fundef_34_env_141"* %0, i32 0, i32 0 + %"$one_envload_485" = load %Uint32, %Uint32* %"$$fundef_34_env_one_484" %one = alloca %Uint32 - store %Uint32 %"$one_envload_340", %Uint32* %one + store %Uint32 %"$one_envload_485", %Uint32* %one %"$retval_35" = alloca { %Uint32 (i8*, %String)*, i8* } - %"$$fundef_36_envp_341_load" = load i8*, i8** @_execptr - %"$$fundef_36_envp_341_salloc" = call i8* @_salloc(i8* %"$$fundef_36_envp_341_load", i64 8) - %"$$fundef_36_envp_341" = bitcast i8* %"$$fundef_36_envp_341_salloc" to %"$$fundef_36_env_140"* - %"$$fundef_36_env_voidp_343" = bitcast %"$$fundef_36_env_140"* %"$$fundef_36_envp_341" to i8* - %"$$fundef_36_cloval_344" = insertvalue { %Uint32 (i8*, %String)*, i8* } { %Uint32 (i8*, %String)* bitcast (%Uint32 (%"$$fundef_36_env_140"*, %String)* @"$fundef_36" to %Uint32 (i8*, %String)*), i8* undef }, i8* %"$$fundef_36_env_voidp_343", 1 - %"$$fundef_36_env_one_345" = getelementptr inbounds %"$$fundef_36_env_140", %"$$fundef_36_env_140"* %"$$fundef_36_envp_341", i32 0, i32 0 - %"$one_346" = load %Uint32, %Uint32* %one - store %Uint32 %"$one_346", %Uint32* %"$$fundef_36_env_one_345" - %"$$fundef_36_env_z_347" = getelementptr inbounds %"$$fundef_36_env_140", %"$$fundef_36_env_140"* %"$$fundef_36_envp_341", i32 0, i32 1 - store %Uint32 %1, %Uint32* %"$$fundef_36_env_z_347" - store { %Uint32 (i8*, %String)*, i8* } %"$$fundef_36_cloval_344", { %Uint32 (i8*, %String)*, i8* }* %"$retval_35" - %"$$retval_35_348" = load { %Uint32 (i8*, %String)*, i8* }, { %Uint32 (i8*, %String)*, i8* }* %"$retval_35" - ret { %Uint32 (i8*, %String)*, i8* } %"$$retval_35_348" + %"$gasrem_486" = load i64, i64* @_gasrem + %"$gascmp_487" = icmp ugt i64 1, %"$gasrem_486" + br i1 %"$gascmp_487", label %"$out_of_gas_488", label %"$have_gas_489" + +"$out_of_gas_488": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_489" + +"$have_gas_489": ; preds = %"$out_of_gas_488", %entry + %"$consume_490" = sub i64 %"$gasrem_486", 1 + store i64 %"$consume_490", i64* @_gasrem + %"$$fundef_36_envp_491_load" = load i8*, i8** @_execptr + %"$$fundef_36_envp_491_salloc" = call i8* @_salloc(i8* %"$$fundef_36_envp_491_load", i64 8) + %"$$fundef_36_envp_491" = bitcast i8* %"$$fundef_36_envp_491_salloc" to %"$$fundef_36_env_140"* + %"$$fundef_36_env_voidp_493" = bitcast %"$$fundef_36_env_140"* %"$$fundef_36_envp_491" to i8* + %"$$fundef_36_cloval_494" = insertvalue { %Uint32 (i8*, %String)*, i8* } { %Uint32 (i8*, %String)* bitcast (%Uint32 (%"$$fundef_36_env_140"*, %String)* @"$fundef_36" to %Uint32 (i8*, %String)*), i8* undef }, i8* %"$$fundef_36_env_voidp_493", 1 + %"$$fundef_36_env_one_495" = getelementptr inbounds %"$$fundef_36_env_140", %"$$fundef_36_env_140"* %"$$fundef_36_envp_491", i32 0, i32 0 + %"$one_496" = load %Uint32, %Uint32* %one + store %Uint32 %"$one_496", %Uint32* %"$$fundef_36_env_one_495" + %"$$fundef_36_env_z_497" = getelementptr inbounds %"$$fundef_36_env_140", %"$$fundef_36_env_140"* %"$$fundef_36_envp_491", i32 0, i32 1 + store %Uint32 %1, %Uint32* %"$$fundef_36_env_z_497" + store { %Uint32 (i8*, %String)*, i8* } %"$$fundef_36_cloval_494", { %Uint32 (i8*, %String)*, i8* }* %"$retval_35" + %"$$retval_35_498" = load { %Uint32 (i8*, %String)*, i8* }, { %Uint32 (i8*, %String)*, i8* }* %"$retval_35" + ret { %Uint32 (i8*, %String)*, i8* } %"$$retval_35_498" } define internal { %Uint32 (i8*, %TName_List_String*)*, i8* } @"$fundef_32"(%"$$fundef_32_env_142"* %0) { entry: - %"$$fundef_32_env_list_foldl_306" = getelementptr inbounds %"$$fundef_32_env_142", %"$$fundef_32_env_142"* %0, i32 0, i32 0 - %"$list_foldl_envload_307" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_32_env_list_foldl_306" + %"$$fundef_32_env_list_foldl_406" = getelementptr inbounds %"$$fundef_32_env_142", %"$$fundef_32_env_142"* %0, i32 0, i32 0 + %"$list_foldl_envload_407" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_32_env_list_foldl_406" %list_foldl = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_foldl_envload_307", { i8*, i8* }** %list_foldl + store { i8*, i8* }* %"$list_foldl_envload_407", { i8*, i8* }** %list_foldl %"$retval_33" = alloca { %Uint32 (i8*, %TName_List_String*)*, i8* } + %"$gasrem_408" = load i64, i64* @_gasrem + %"$gascmp_409" = icmp ugt i64 1, %"$gasrem_408" + br i1 %"$gascmp_409", label %"$out_of_gas_410", label %"$have_gas_411" + +"$out_of_gas_410": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_411" + +"$have_gas_411": ; preds = %"$out_of_gas_410", %entry + %"$consume_412" = sub i64 %"$gasrem_408", 1 + store i64 %"$consume_412", i64* @_gasrem %foldl = alloca { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } - %"$list_foldl_308" = load { i8*, i8* }*, { i8*, i8* }** %list_foldl - %"$list_foldl_309" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_308", i32 0 - %"$list_foldl_310" = bitcast { i8*, i8* }* %"$list_foldl_309" to { { i8*, i8* }* (i8*)*, i8* }* - %"$list_foldl_311" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$list_foldl_310" - %"$list_foldl_fptr_312" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_311", 0 - %"$list_foldl_envptr_313" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_311", 1 - %"$list_foldl_call_314" = call { i8*, i8* }* %"$list_foldl_fptr_312"(i8* %"$list_foldl_envptr_313") - %"$list_foldl_315" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_call_314", i32 1 - %"$list_foldl_316" = bitcast { i8*, i8* }* %"$list_foldl_315" to { { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - %"$list_foldl_317" = load { { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_foldl_316" - %"$list_foldl_fptr_318" = extractvalue { { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_317", 0 - %"$list_foldl_envptr_319" = extractvalue { { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_317", 1 - %"$list_foldl_call_320" = call { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_fptr_318"(i8* %"$list_foldl_envptr_319") - store { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_call_320", { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl + %"$gasrem_413" = load i64, i64* @_gasrem + %"$gascmp_414" = icmp ugt i64 1, %"$gasrem_413" + br i1 %"$gascmp_414", label %"$out_of_gas_415", label %"$have_gas_416" + +"$out_of_gas_415": ; preds = %"$have_gas_411" + call void @_out_of_gas() + br label %"$have_gas_416" + +"$have_gas_416": ; preds = %"$out_of_gas_415", %"$have_gas_411" + %"$consume_417" = sub i64 %"$gasrem_413", 1 + store i64 %"$consume_417", i64* @_gasrem + %"$list_foldl_418" = load { i8*, i8* }*, { i8*, i8* }** %list_foldl + %"$list_foldl_419" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_418", i32 0 + %"$list_foldl_420" = bitcast { i8*, i8* }* %"$list_foldl_419" to { { i8*, i8* }* (i8*)*, i8* }* + %"$list_foldl_421" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$list_foldl_420" + %"$list_foldl_fptr_422" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_421", 0 + %"$list_foldl_envptr_423" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldl_421", 1 + %"$list_foldl_call_424" = call { i8*, i8* }* %"$list_foldl_fptr_422"(i8* %"$list_foldl_envptr_423") + %"$list_foldl_425" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldl_call_424", i32 1 + %"$list_foldl_426" = bitcast { i8*, i8* }* %"$list_foldl_425" to { { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + %"$list_foldl_427" = load { { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_foldl_426" + %"$list_foldl_fptr_428" = extractvalue { { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_427", 0 + %"$list_foldl_envptr_429" = extractvalue { { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldl_427", 1 + %"$list_foldl_call_430" = call { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_fptr_428"(i8* %"$list_foldl_envptr_429") + store { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$list_foldl_call_430", { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl + %"$gasrem_431" = load i64, i64* @_gasrem + %"$gascmp_432" = icmp ugt i64 1, %"$gasrem_431" + br i1 %"$gascmp_432", label %"$out_of_gas_433", label %"$have_gas_434" + +"$out_of_gas_433": ; preds = %"$have_gas_416" + call void @_out_of_gas() + br label %"$have_gas_434" + +"$have_gas_434": ; preds = %"$out_of_gas_433", %"$have_gas_416" + %"$consume_435" = sub i64 %"$gasrem_431", 1 + store i64 %"$consume_435", i64* @_gasrem %one = alloca %Uint32 + %"$gasrem_436" = load i64, i64* @_gasrem + %"$gascmp_437" = icmp ugt i64 1, %"$gasrem_436" + br i1 %"$gascmp_437", label %"$out_of_gas_438", label %"$have_gas_439" + +"$out_of_gas_438": ; preds = %"$have_gas_434" + call void @_out_of_gas() + br label %"$have_gas_439" + +"$have_gas_439": ; preds = %"$out_of_gas_438", %"$have_gas_434" + %"$consume_440" = sub i64 %"$gasrem_436", 1 + store i64 %"$consume_440", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %one + %"$gasrem_441" = load i64, i64* @_gasrem + %"$gascmp_442" = icmp ugt i64 1, %"$gasrem_441" + br i1 %"$gascmp_442", label %"$out_of_gas_443", label %"$have_gas_444" + +"$out_of_gas_443": ; preds = %"$have_gas_439" + call void @_out_of_gas() + br label %"$have_gas_444" + +"$have_gas_444": ; preds = %"$out_of_gas_443", %"$have_gas_439" + %"$consume_445" = sub i64 %"$gasrem_441", 1 + store i64 %"$consume_445", i64* @_gasrem %iter = alloca { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } - %"$$fundef_34_envp_321_load" = load i8*, i8** @_execptr - %"$$fundef_34_envp_321_salloc" = call i8* @_salloc(i8* %"$$fundef_34_envp_321_load", i64 4) - %"$$fundef_34_envp_321" = bitcast i8* %"$$fundef_34_envp_321_salloc" to %"$$fundef_34_env_141"* - %"$$fundef_34_env_voidp_323" = bitcast %"$$fundef_34_env_141"* %"$$fundef_34_envp_321" to i8* - %"$$fundef_34_cloval_324" = insertvalue { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %String)*, i8* } (%"$$fundef_34_env_141"*, %Uint32)* @"$fundef_34" to { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_34_env_voidp_323", 1 - %"$$fundef_34_env_one_325" = getelementptr inbounds %"$$fundef_34_env_141", %"$$fundef_34_env_141"* %"$$fundef_34_envp_321", i32 0, i32 0 - %"$one_326" = load %Uint32, %Uint32* %one - store %Uint32 %"$one_326", %Uint32* %"$$fundef_34_env_one_325" - store { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_34_cloval_324", { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %iter + %"$gasrem_446" = load i64, i64* @_gasrem + %"$gascmp_447" = icmp ugt i64 1, %"$gasrem_446" + br i1 %"$gascmp_447", label %"$out_of_gas_448", label %"$have_gas_449" + +"$out_of_gas_448": ; preds = %"$have_gas_444" + call void @_out_of_gas() + br label %"$have_gas_449" + +"$have_gas_449": ; preds = %"$out_of_gas_448", %"$have_gas_444" + %"$consume_450" = sub i64 %"$gasrem_446", 1 + store i64 %"$consume_450", i64* @_gasrem + %"$$fundef_34_envp_451_load" = load i8*, i8** @_execptr + %"$$fundef_34_envp_451_salloc" = call i8* @_salloc(i8* %"$$fundef_34_envp_451_load", i64 4) + %"$$fundef_34_envp_451" = bitcast i8* %"$$fundef_34_envp_451_salloc" to %"$$fundef_34_env_141"* + %"$$fundef_34_env_voidp_453" = bitcast %"$$fundef_34_env_141"* %"$$fundef_34_envp_451" to i8* + %"$$fundef_34_cloval_454" = insertvalue { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %String)*, i8* } (%"$$fundef_34_env_141"*, %Uint32)* @"$fundef_34" to { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_34_env_voidp_453", 1 + %"$$fundef_34_env_one_455" = getelementptr inbounds %"$$fundef_34_env_141", %"$$fundef_34_env_141"* %"$$fundef_34_envp_451", i32 0, i32 0 + %"$one_456" = load %Uint32, %Uint32* %one + store %Uint32 %"$one_456", %Uint32* %"$$fundef_34_env_one_455" + store { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_34_cloval_454", { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %iter + %"$gasrem_457" = load i64, i64* @_gasrem + %"$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_449" + call void @_out_of_gas() + br label %"$have_gas_460" + +"$have_gas_460": ; preds = %"$out_of_gas_459", %"$have_gas_449" + %"$consume_461" = sub i64 %"$gasrem_457", 1 + store i64 %"$consume_461", i64* @_gasrem %init = alloca %Uint32 + %"$gasrem_462" = load i64, i64* @_gasrem + %"$gascmp_463" = icmp ugt i64 1, %"$gasrem_462" + br i1 %"$gascmp_463", label %"$out_of_gas_464", label %"$have_gas_465" + +"$out_of_gas_464": ; preds = %"$have_gas_460" + call void @_out_of_gas() + br label %"$have_gas_465" + +"$have_gas_465": ; preds = %"$out_of_gas_464", %"$have_gas_460" + %"$consume_466" = sub i64 %"$gasrem_462", 1 + store i64 %"$consume_466", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %init + %"$gasrem_467" = load i64, i64* @_gasrem + %"$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_465" + call void @_out_of_gas() + br label %"$have_gas_470" + +"$have_gas_470": ; preds = %"$out_of_gas_469", %"$have_gas_465" + %"$consume_471" = sub i64 %"$gasrem_467", 1 + store i64 %"$consume_471", i64* @_gasrem %"$foldl_4" = alloca { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } - %"$foldl_327" = load { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl - %"$foldl_fptr_328" = extractvalue { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_327", 0 - %"$foldl_envptr_329" = extractvalue { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_327", 1 - %"$iter_330" = load { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %iter - %"$foldl_call_331" = call { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_fptr_328"(i8* %"$foldl_envptr_329", { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } %"$iter_330") - store { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_call_331", { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" + %"$foldl_472" = load { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %foldl + %"$foldl_fptr_473" = extractvalue { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_472", 0 + %"$foldl_envptr_474" = extractvalue { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$foldl_472", 1 + %"$iter_475" = load { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %iter + %"$foldl_call_476" = call { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_fptr_473"(i8* %"$foldl_envptr_474", { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } %"$iter_475") + store { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$foldl_call_476", { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" %"$foldl_5" = alloca { %Uint32 (i8*, %TName_List_String*)*, i8* } - %"$$foldl_4_332" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" - %"$$foldl_4_fptr_333" = extractvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_332", 0 - %"$$foldl_4_envptr_334" = extractvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_332", 1 - %"$init_335" = load %Uint32, %Uint32* %init - %"$$foldl_4_call_336" = call { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$foldl_4_fptr_333"(i8* %"$$foldl_4_envptr_334", %Uint32 %"$init_335") - store { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$foldl_4_call_336", { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$foldl_5" - %"$$foldl_5_337" = load { %Uint32 (i8*, %TName_List_String*)*, i8* }, { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$foldl_5" - store { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$foldl_5_337", { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$retval_33" - %"$$retval_33_338" = load { %Uint32 (i8*, %TName_List_String*)*, i8* }, { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$retval_33" - ret { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$retval_33_338" + %"$$foldl_4_477" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %"$foldl_4" + %"$$foldl_4_fptr_478" = extractvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_477", 0 + %"$$foldl_4_envptr_479" = extractvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$$foldl_4_477", 1 + %"$init_480" = load %Uint32, %Uint32* %init + %"$$foldl_4_call_481" = call { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$foldl_4_fptr_478"(i8* %"$$foldl_4_envptr_479", %Uint32 %"$init_480") + store { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$foldl_4_call_481", { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$foldl_5" + %"$$foldl_5_482" = load { %Uint32 (i8*, %TName_List_String*)*, i8* }, { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$foldl_5" + store { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$foldl_5_482", { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$retval_33" + %"$$retval_33_483" = load { %Uint32 (i8*, %TName_List_String*)*, i8* }, { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$retval_33" + ret { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$retval_33_483" } define internal %Uint32 @"$fundef_30"(%"$$fundef_30_env_143"* %0, %TName_List_ByStr20* %1) { entry: - %"$$fundef_30_env_f_263" = getelementptr inbounds %"$$fundef_30_env_143", %"$$fundef_30_env_143"* %0, i32 0, i32 0 - %"$f_envload_264" = load { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_30_env_f_263" + %"$$fundef_30_env_f_338" = getelementptr inbounds %"$$fundef_30_env_143", %"$$fundef_30_env_143"* %0, i32 0, i32 0 + %"$f_envload_339" = load { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_30_env_f_338" %f = alloca { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_264", { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$$fundef_30_env_g_265" = getelementptr inbounds %"$$fundef_30_env_143", %"$$fundef_30_env_143"* %0, i32 0, i32 1 - %"$g_envload_266" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_30_env_g_265" + store { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_339", { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$$fundef_30_env_g_340" = getelementptr inbounds %"$$fundef_30_env_143", %"$$fundef_30_env_143"* %0, i32 0, i32 1 + %"$g_envload_341" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_30_env_g_340" %g = alloca { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_266", { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$$fundef_30_env_z_267" = getelementptr inbounds %"$$fundef_30_env_143", %"$$fundef_30_env_143"* %0, i32 0, i32 2 - %"$z_envload_268" = load %Uint32, %Uint32* %"$$fundef_30_env_z_267" + store { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_341", { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$$fundef_30_env_z_342" = getelementptr inbounds %"$$fundef_30_env_143", %"$$fundef_30_env_143"* %0, i32 0, i32 2 + %"$z_envload_343" = load %Uint32, %Uint32* %"$$fundef_30_env_z_342" %z = alloca %Uint32 - store %Uint32 %"$z_envload_268", %Uint32* %z + store %Uint32 %"$z_envload_343", %Uint32* %z %"$retval_31" = alloca %Uint32 - %"$l_tag_270" = getelementptr inbounds %TName_List_ByStr20, %TName_List_ByStr20* %1, i32 0, i32 0 - %"$l_tag_271" = load i8, i8* %"$l_tag_270" - switch i8 %"$l_tag_271", label %"$empty_default_272" [ - i8 0, label %"$Cons_273" - i8 1, label %"$Nil_302" + %"$gasrem_344" = load i64, i64* @_gasrem + %"$gascmp_345" = icmp ugt i64 2, %"$gasrem_344" + br i1 %"$gascmp_345", label %"$out_of_gas_346", label %"$have_gas_347" + +"$out_of_gas_346": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_347" + +"$have_gas_347": ; preds = %"$out_of_gas_346", %entry + %"$consume_348" = sub i64 %"$gasrem_344", 2 + store i64 %"$consume_348", i64* @_gasrem + %"$l_tag_350" = getelementptr inbounds %TName_List_ByStr20, %TName_List_ByStr20* %1, i32 0, i32 0 + %"$l_tag_351" = load i8, i8* %"$l_tag_350" + switch i8 %"$l_tag_351", label %"$empty_default_352" [ + i8 0, label %"$Cons_353" + i8 1, label %"$Nil_397" ] -"$Cons_273": ; preds = %entry - %"$l_274" = bitcast %TName_List_ByStr20* %1 to %CName_Cons_ByStr20* - %"$h_gep_275" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$l_274", i32 0, i32 1 - %"$h_load_276" = load [20 x i8], [20 x i8]* %"$h_gep_275" +"$Cons_353": ; preds = %"$have_gas_347" + %"$l_354" = bitcast %TName_List_ByStr20* %1 to %CName_Cons_ByStr20* + %"$h_gep_355" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$l_354", i32 0, i32 1 + %"$h_load_356" = load [20 x i8], [20 x i8]* %"$h_gep_355" %h = alloca [20 x i8] - store [20 x i8] %"$h_load_276", [20 x i8]* %h - %"$t_gep_277" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$l_274", i32 0, i32 2 - %"$t_load_278" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$t_gep_277" + store [20 x i8] %"$h_load_356", [20 x i8]* %h + %"$t_gep_357" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$l_354", i32 0, i32 2 + %"$t_load_358" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$t_gep_357" %t = alloca %TName_List_ByStr20* - store %TName_List_ByStr20* %"$t_load_278", %TName_List_ByStr20** %t + store %TName_List_ByStr20* %"$t_load_358", %TName_List_ByStr20** %t + %"$gasrem_359" = load i64, i64* @_gasrem + %"$gascmp_360" = icmp ugt i64 1, %"$gasrem_359" + br i1 %"$gascmp_360", label %"$out_of_gas_361", label %"$have_gas_362" + +"$out_of_gas_361": ; preds = %"$Cons_353" + call void @_out_of_gas() + br label %"$have_gas_362" + +"$have_gas_362": ; preds = %"$out_of_gas_361", %"$Cons_353" + %"$consume_363" = sub i64 %"$gasrem_359", 1 + store i64 %"$consume_363", i64* @_gasrem %res = alloca %Uint32 + %"$gasrem_364" = load i64, i64* @_gasrem + %"$gascmp_365" = icmp ugt i64 1, %"$gasrem_364" + br i1 %"$gascmp_365", label %"$out_of_gas_366", label %"$have_gas_367" + +"$out_of_gas_366": ; preds = %"$have_gas_362" + call void @_out_of_gas() + br label %"$have_gas_367" + +"$have_gas_367": ; preds = %"$out_of_gas_366", %"$have_gas_362" + %"$consume_368" = sub i64 %"$gasrem_364", 1 + store i64 %"$consume_368", i64* @_gasrem %"$f_0" = alloca { %Uint32 (i8*, [20 x i8]*)*, i8* } - %"$f_279" = load { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$f_fptr_280" = extractvalue { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } %"$f_279", 0 - %"$f_envptr_281" = extractvalue { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } %"$f_279", 1 - %"$z_282" = load %Uint32, %Uint32* %z - %"$f_call_283" = call { %Uint32 (i8*, [20 x i8]*)*, i8* } %"$f_fptr_280"(i8* %"$f_envptr_281", %Uint32 %"$z_282") - store { %Uint32 (i8*, [20 x i8]*)*, i8* } %"$f_call_283", { %Uint32 (i8*, [20 x i8]*)*, i8* }* %"$f_0" + %"$f_369" = load { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$f_fptr_370" = extractvalue { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } %"$f_369", 0 + %"$f_envptr_371" = extractvalue { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } %"$f_369", 1 + %"$z_372" = load %Uint32, %Uint32* %z + %"$f_call_373" = call { %Uint32 (i8*, [20 x i8]*)*, i8* } %"$f_fptr_370"(i8* %"$f_envptr_371", %Uint32 %"$z_372") + store { %Uint32 (i8*, [20 x i8]*)*, i8* } %"$f_call_373", { %Uint32 (i8*, [20 x i8]*)*, i8* }* %"$f_0" %"$f_1" = alloca %Uint32 - %"$$f_0_284" = load { %Uint32 (i8*, [20 x i8]*)*, i8* }, { %Uint32 (i8*, [20 x i8]*)*, i8* }* %"$f_0" - %"$$f_0_fptr_285" = extractvalue { %Uint32 (i8*, [20 x i8]*)*, i8* } %"$$f_0_284", 0 - %"$$f_0_envptr_286" = extractvalue { %Uint32 (i8*, [20 x i8]*)*, i8* } %"$$f_0_284", 1 - %"$$f_0_h_287" = alloca [20 x i8] - %"$h_288" = load [20 x i8], [20 x i8]* %h - store [20 x i8] %"$h_288", [20 x i8]* %"$$f_0_h_287" - %"$$f_0_call_289" = call %Uint32 %"$$f_0_fptr_285"(i8* %"$$f_0_envptr_286", [20 x i8]* %"$$f_0_h_287") - store %Uint32 %"$$f_0_call_289", %Uint32* %"$f_1" - %"$$f_1_290" = load %Uint32, %Uint32* %"$f_1" - store %Uint32 %"$$f_1_290", %Uint32* %res + %"$$f_0_374" = load { %Uint32 (i8*, [20 x i8]*)*, i8* }, { %Uint32 (i8*, [20 x i8]*)*, i8* }* %"$f_0" + %"$$f_0_fptr_375" = extractvalue { %Uint32 (i8*, [20 x i8]*)*, i8* } %"$$f_0_374", 0 + %"$$f_0_envptr_376" = extractvalue { %Uint32 (i8*, [20 x i8]*)*, i8* } %"$$f_0_374", 1 + %"$$f_0_h_377" = alloca [20 x i8] + %"$h_378" = load [20 x i8], [20 x i8]* %h + store [20 x i8] %"$h_378", [20 x i8]* %"$$f_0_h_377" + %"$$f_0_call_379" = call %Uint32 %"$$f_0_fptr_375"(i8* %"$$f_0_envptr_376", [20 x i8]* %"$$f_0_h_377") + store %Uint32 %"$$f_0_call_379", %Uint32* %"$f_1" + %"$$f_1_380" = load %Uint32, %Uint32* %"$f_1" + store %Uint32 %"$$f_1_380", %Uint32* %res + %"$gasrem_381" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_367" + call void @_out_of_gas() + br label %"$have_gas_384" + +"$have_gas_384": ; preds = %"$out_of_gas_383", %"$have_gas_367" + %"$consume_385" = sub i64 %"$gasrem_381", 1 + store i64 %"$consume_385", i64* @_gasrem %"$g_2" = alloca { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } - %"$g_291" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$g_fptr_292" = extractvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_291", 0 - %"$g_envptr_293" = extractvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_291", 1 - %"$res_294" = load %Uint32, %Uint32* %res - %"$g_call_295" = call { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$g_fptr_292"(i8* %"$g_envptr_293", %Uint32 %"$res_294") - store { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$g_call_295", { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$g_2" + %"$g_386" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$g_fptr_387" = extractvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_386", 0 + %"$g_envptr_388" = extractvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_386", 1 + %"$res_389" = load %Uint32, %Uint32* %res + %"$g_call_390" = call { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$g_fptr_387"(i8* %"$g_envptr_388", %Uint32 %"$res_389") + store { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$g_call_390", { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$g_2" %"$g_3" = alloca %Uint32 - %"$$g_2_296" = load { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }, { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$g_2" - %"$$g_2_fptr_297" = extractvalue { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$g_2_296", 0 - %"$$g_2_envptr_298" = extractvalue { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$g_2_296", 1 - %"$t_299" = load %TName_List_ByStr20*, %TName_List_ByStr20** %t - %"$$g_2_call_300" = call %Uint32 %"$$g_2_fptr_297"(i8* %"$$g_2_envptr_298", %TName_List_ByStr20* %"$t_299") - store %Uint32 %"$$g_2_call_300", %Uint32* %"$g_3" - %"$$g_3_301" = load %Uint32, %Uint32* %"$g_3" - store %Uint32 %"$$g_3_301", %Uint32* %"$retval_31" - br label %"$matchsucc_269" - -"$Nil_302": ; preds = %entry - %"$l_303" = bitcast %TName_List_ByStr20* %1 to %CName_Nil_ByStr20* - %"$z_304" = load %Uint32, %Uint32* %z - store %Uint32 %"$z_304", %Uint32* %"$retval_31" - br label %"$matchsucc_269" - -"$empty_default_272": ; preds = %entry - br label %"$matchsucc_269" - -"$matchsucc_269": ; preds = %"$Nil_302", %"$Cons_273", %"$empty_default_272" - %"$$retval_31_305" = load %Uint32, %Uint32* %"$retval_31" - ret %Uint32 %"$$retval_31_305" + %"$$g_2_391" = load { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }, { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$g_2" + %"$$g_2_fptr_392" = extractvalue { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$g_2_391", 0 + %"$$g_2_envptr_393" = extractvalue { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$g_2_391", 1 + %"$t_394" = load %TName_List_ByStr20*, %TName_List_ByStr20** %t + %"$$g_2_call_395" = call %Uint32 %"$$g_2_fptr_392"(i8* %"$$g_2_envptr_393", %TName_List_ByStr20* %"$t_394") + store %Uint32 %"$$g_2_call_395", %Uint32* %"$g_3" + %"$$g_3_396" = load %Uint32, %Uint32* %"$g_3" + store %Uint32 %"$$g_3_396", %Uint32* %"$retval_31" + br label %"$matchsucc_349" + +"$Nil_397": ; preds = %"$have_gas_347" + %"$l_398" = bitcast %TName_List_ByStr20* %1 to %CName_Nil_ByStr20* + %"$gasrem_399" = load i64, i64* @_gasrem + %"$gascmp_400" = icmp ugt i64 1, %"$gasrem_399" + br i1 %"$gascmp_400", label %"$out_of_gas_401", label %"$have_gas_402" + +"$out_of_gas_401": ; preds = %"$Nil_397" + call void @_out_of_gas() + br label %"$have_gas_402" + +"$have_gas_402": ; preds = %"$out_of_gas_401", %"$Nil_397" + %"$consume_403" = sub i64 %"$gasrem_399", 1 + store i64 %"$consume_403", i64* @_gasrem + %"$z_404" = load %Uint32, %Uint32* %z + store %Uint32 %"$z_404", %Uint32* %"$retval_31" + br label %"$matchsucc_349" + +"$empty_default_352": ; preds = %"$have_gas_347" + br label %"$matchsucc_349" + +"$matchsucc_349": ; preds = %"$have_gas_402", %"$have_gas_384", %"$empty_default_352" + %"$$retval_31_405" = load %Uint32, %Uint32* %"$retval_31" + ret %Uint32 %"$$retval_31_405" } define internal { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_28"(%"$$fundef_28_env_144"* %0, %Uint32 %1) { entry: - %"$$fundef_28_env_f_249" = getelementptr inbounds %"$$fundef_28_env_144", %"$$fundef_28_env_144"* %0, i32 0, i32 0 - %"$f_envload_250" = load { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_f_249" + %"$$fundef_28_env_f_319" = getelementptr inbounds %"$$fundef_28_env_144", %"$$fundef_28_env_144"* %0, i32 0, i32 0 + %"$f_envload_320" = load { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_f_319" %f = alloca { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_250", { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$$fundef_28_env_g_251" = getelementptr inbounds %"$$fundef_28_env_144", %"$$fundef_28_env_144"* %0, i32 0, i32 1 - %"$g_envload_252" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_g_251" + store { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_320", { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$$fundef_28_env_g_321" = getelementptr inbounds %"$$fundef_28_env_144", %"$$fundef_28_env_144"* %0, i32 0, i32 1 + %"$g_envload_322" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_g_321" %g = alloca { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_252", { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_322", { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %g %"$retval_29" = alloca { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } - %"$$fundef_30_envp_253_load" = load i8*, i8** @_execptr - %"$$fundef_30_envp_253_salloc" = call i8* @_salloc(i8* %"$$fundef_30_envp_253_load", i64 40) - %"$$fundef_30_envp_253" = bitcast i8* %"$$fundef_30_envp_253_salloc" to %"$$fundef_30_env_143"* - %"$$fundef_30_env_voidp_255" = bitcast %"$$fundef_30_env_143"* %"$$fundef_30_envp_253" to i8* - %"$$fundef_30_cloval_256" = insertvalue { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } { %Uint32 (i8*, %TName_List_ByStr20*)* bitcast (%Uint32 (%"$$fundef_30_env_143"*, %TName_List_ByStr20*)* @"$fundef_30" to %Uint32 (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_30_env_voidp_255", 1 - %"$$fundef_30_env_f_257" = getelementptr inbounds %"$$fundef_30_env_143", %"$$fundef_30_env_143"* %"$$fundef_30_envp_253", i32 0, i32 0 - %"$f_258" = load { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %f - store { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } %"$f_258", { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_30_env_f_257" - %"$$fundef_30_env_g_259" = getelementptr inbounds %"$$fundef_30_env_143", %"$$fundef_30_env_143"* %"$$fundef_30_envp_253", i32 0, i32 1 - %"$g_260" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_260", { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_30_env_g_259" - %"$$fundef_30_env_z_261" = getelementptr inbounds %"$$fundef_30_env_143", %"$$fundef_30_env_143"* %"$$fundef_30_envp_253", i32 0, i32 2 - store %Uint32 %1, %Uint32* %"$$fundef_30_env_z_261" - store { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_30_cloval_256", { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_29" - %"$$retval_29_262" = load { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }, { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_29" - ret { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_29_262" + %"$gasrem_323" = load i64, i64* @_gasrem + %"$gascmp_324" = icmp ugt i64 1, %"$gasrem_323" + br i1 %"$gascmp_324", label %"$out_of_gas_325", label %"$have_gas_326" + +"$out_of_gas_325": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_326" + +"$have_gas_326": ; preds = %"$out_of_gas_325", %entry + %"$consume_327" = sub i64 %"$gasrem_323", 1 + store i64 %"$consume_327", i64* @_gasrem + %"$$fundef_30_envp_328_load" = load i8*, i8** @_execptr + %"$$fundef_30_envp_328_salloc" = call i8* @_salloc(i8* %"$$fundef_30_envp_328_load", i64 40) + %"$$fundef_30_envp_328" = bitcast i8* %"$$fundef_30_envp_328_salloc" to %"$$fundef_30_env_143"* + %"$$fundef_30_env_voidp_330" = bitcast %"$$fundef_30_env_143"* %"$$fundef_30_envp_328" to i8* + %"$$fundef_30_cloval_331" = insertvalue { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } { %Uint32 (i8*, %TName_List_ByStr20*)* bitcast (%Uint32 (%"$$fundef_30_env_143"*, %TName_List_ByStr20*)* @"$fundef_30" to %Uint32 (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_30_env_voidp_330", 1 + %"$$fundef_30_env_f_332" = getelementptr inbounds %"$$fundef_30_env_143", %"$$fundef_30_env_143"* %"$$fundef_30_envp_328", i32 0, i32 0 + %"$f_333" = load { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %f + store { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } %"$f_333", { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_30_env_f_332" + %"$$fundef_30_env_g_334" = getelementptr inbounds %"$$fundef_30_env_143", %"$$fundef_30_env_143"* %"$$fundef_30_envp_328", i32 0, i32 1 + %"$g_335" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_335", { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_30_env_g_334" + %"$$fundef_30_env_z_336" = getelementptr inbounds %"$$fundef_30_env_143", %"$$fundef_30_env_143"* %"$$fundef_30_envp_328", i32 0, i32 2 + store %Uint32 %1, %Uint32* %"$$fundef_30_env_z_336" + store { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_30_cloval_331", { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_29" + %"$$retval_29_337" = load { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }, { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_29" + ret { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_29_337" } define internal { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } @"$fundef_26"(%"$$fundef_26_env_145"* %0, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } %1) { entry: %"$retval_27" = alloca { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } - %"$$fundef_28_envp_240_load" = load i8*, i8** @_execptr - %"$$fundef_28_envp_240_salloc" = call i8* @_salloc(i8* %"$$fundef_28_envp_240_load", i64 32) - %"$$fundef_28_envp_240" = bitcast i8* %"$$fundef_28_envp_240_salloc" to %"$$fundef_28_env_144"* - %"$$fundef_28_env_voidp_242" = bitcast %"$$fundef_28_env_144"* %"$$fundef_28_envp_240" to i8* - %"$$fundef_28_cloval_243" = insertvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_28_env_144"*, %Uint32)* @"$fundef_28" to { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_28_env_voidp_242", 1 + %"$gasrem_300" = load i64, i64* @_gasrem + %"$gascmp_301" = icmp ugt i64 1, %"$gasrem_300" + br i1 %"$gascmp_301", label %"$out_of_gas_302", label %"$have_gas_303" + +"$out_of_gas_302": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_303" + +"$have_gas_303": ; preds = %"$out_of_gas_302", %entry + %"$consume_304" = sub i64 %"$gasrem_300", 1 + store i64 %"$consume_304", i64* @_gasrem + %"$gasrem_305" = load i64, i64* @_gasrem + %"$gascmp_306" = icmp ugt i64 1, %"$gasrem_305" + br i1 %"$gascmp_306", label %"$out_of_gas_307", label %"$have_gas_308" + +"$out_of_gas_307": ; preds = %"$have_gas_303" + call void @_out_of_gas() + br label %"$have_gas_308" + +"$have_gas_308": ; preds = %"$out_of_gas_307", %"$have_gas_303" + %"$consume_309" = sub i64 %"$gasrem_305", 1 + store i64 %"$consume_309", i64* @_gasrem + %"$$fundef_28_envp_310_load" = load i8*, i8** @_execptr + %"$$fundef_28_envp_310_salloc" = call i8* @_salloc(i8* %"$$fundef_28_envp_310_load", i64 32) + %"$$fundef_28_envp_310" = bitcast i8* %"$$fundef_28_envp_310_salloc" to %"$$fundef_28_env_144"* + %"$$fundef_28_env_voidp_312" = bitcast %"$$fundef_28_env_144"* %"$$fundef_28_envp_310" to i8* + %"$$fundef_28_cloval_313" = insertvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_28_env_144"*, %Uint32)* @"$fundef_28" to { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_28_env_voidp_312", 1 %g = alloca { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_28_cloval_243", { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$$fundef_28_env_f_244" = getelementptr inbounds %"$$fundef_28_env_144", %"$$fundef_28_env_144"* %"$$fundef_28_envp_240", i32 0, i32 0 - store { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } %1, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_f_244" - %"$$fundef_28_env_g_245" = getelementptr inbounds %"$$fundef_28_env_144", %"$$fundef_28_env_144"* %"$$fundef_28_envp_240", i32 0, i32 1 - %"$g_246" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_246", { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_g_245" - %"$g_247" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_247", { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_27" - %"$$retval_27_248" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_27" - ret { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_27_248" + store { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_28_cloval_313", { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$$fundef_28_env_f_314" = getelementptr inbounds %"$$fundef_28_env_144", %"$$fundef_28_env_144"* %"$$fundef_28_envp_310", i32 0, i32 0 + store { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* } %1, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_f_314" + %"$$fundef_28_env_g_315" = getelementptr inbounds %"$$fundef_28_env_144", %"$$fundef_28_env_144"* %"$$fundef_28_envp_310", i32 0, i32 1 + %"$g_316" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_316", { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_28_env_g_315" + %"$g_317" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_317", { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_27" + %"$$retval_27_318" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_27" + ret { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_27_318" } define internal { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } @"$fundef_24"(%"$$fundef_24_env_146"* %0) { entry: %"$retval_25" = alloca { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_291" = load i64, i64* @_gasrem + %"$gascmp_292" = icmp ugt i64 1, %"$gasrem_291" + br i1 %"$gascmp_292", label %"$out_of_gas_293", label %"$have_gas_294" + +"$out_of_gas_293": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_294" + +"$have_gas_294": ; preds = %"$out_of_gas_293", %entry + %"$consume_295" = sub i64 %"$gasrem_291", 1 + store i64 %"$consume_295", i64* @_gasrem store { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })* bitcast ({ { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (%"$$fundef_26_env_145"*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })* @"$fundef_26" to { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*), i8* null }, { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_25" - %"$$retval_25_239" = load { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_25" - ret { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_25_239" + %"$$retval_25_299" = load { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_25" + ret { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_25_299" } define internal { i8*, i8* }* @"$fundef_22"(%"$$fundef_22_env_147"* %0) { entry: %"$retval_23" = alloca { i8*, i8* }* - %"$dyndisp_table_232_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_232_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_232_salloc_load", i64 48) - %"$dyndisp_table_232_salloc" = bitcast i8* %"$dyndisp_table_232_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_232" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_232_salloc" to { i8*, i8* }* - %"$dyndisp_gep_233" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_232", i32 1 - %"$dyndisp_pcast_234" = bitcast { i8*, i8* }* %"$dyndisp_gep_233" to { { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_24_env_146"*)* @"$fundef_24" to { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_234" - store { i8*, i8* }* %"$dyndisp_table_232", { i8*, i8* }** %"$retval_23" - %"$$retval_23_235" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_23" - ret { i8*, i8* }* %"$$retval_23_235" + %"$gasrem_279" = load i64, i64* @_gasrem + %"$gascmp_280" = icmp ugt i64 1, %"$gasrem_279" + br i1 %"$gascmp_280", label %"$out_of_gas_281", label %"$have_gas_282" + +"$out_of_gas_281": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_282" + +"$have_gas_282": ; preds = %"$out_of_gas_281", %entry + %"$consume_283" = sub i64 %"$gasrem_279", 1 + store i64 %"$consume_283", i64* @_gasrem + %"$dyndisp_table_287_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_287_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_287_salloc_load", i64 48) + %"$dyndisp_table_287_salloc" = bitcast i8* %"$dyndisp_table_287_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_287" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_287_salloc" to { i8*, i8* }* + %"$dyndisp_gep_288" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_287", i32 1 + %"$dyndisp_pcast_289" = bitcast { i8*, i8* }* %"$dyndisp_gep_288" to { { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_24_env_146"*)* @"$fundef_24" to { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, [20 x i8]*)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_289" + store { i8*, i8* }* %"$dyndisp_table_287", { i8*, i8* }** %"$retval_23" + %"$$retval_23_290" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_23" + ret { i8*, i8* }* %"$$retval_23_290" } define internal %Uint32 @"$fundef_20"(%"$$fundef_20_env_148"* %0, %TName_List_String* %1) { entry: - %"$$fundef_20_env_f_187" = getelementptr inbounds %"$$fundef_20_env_148", %"$$fundef_20_env_148"* %0, i32 0, i32 0 - %"$f_envload_188" = load { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_20_env_f_187" + %"$$fundef_20_env_f_212" = getelementptr inbounds %"$$fundef_20_env_148", %"$$fundef_20_env_148"* %0, i32 0, i32 0 + %"$f_envload_213" = load { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_20_env_f_212" %f = alloca { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_188", { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$$fundef_20_env_g_189" = getelementptr inbounds %"$$fundef_20_env_148", %"$$fundef_20_env_148"* %0, i32 0, i32 1 - %"$g_envload_190" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_20_env_g_189" + store { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_213", { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$$fundef_20_env_g_214" = getelementptr inbounds %"$$fundef_20_env_148", %"$$fundef_20_env_148"* %0, i32 0, i32 1 + %"$g_envload_215" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_20_env_g_214" %g = alloca { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_190", { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$$fundef_20_env_z_191" = getelementptr inbounds %"$$fundef_20_env_148", %"$$fundef_20_env_148"* %0, i32 0, i32 2 - %"$z_envload_192" = load %Uint32, %Uint32* %"$$fundef_20_env_z_191" + store { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_215", { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$$fundef_20_env_z_216" = getelementptr inbounds %"$$fundef_20_env_148", %"$$fundef_20_env_148"* %0, i32 0, i32 2 + %"$z_envload_217" = load %Uint32, %Uint32* %"$$fundef_20_env_z_216" %z = alloca %Uint32 - store %Uint32 %"$z_envload_192", %Uint32* %z + store %Uint32 %"$z_envload_217", %Uint32* %z %"$retval_21" = alloca %Uint32 - %"$l_tag_194" = getelementptr inbounds %TName_List_String, %TName_List_String* %1, i32 0, i32 0 - %"$l_tag_195" = load i8, i8* %"$l_tag_194" - switch i8 %"$l_tag_195", label %"$empty_default_196" [ - i8 0, label %"$Cons_197" - i8 1, label %"$Nil_225" + %"$gasrem_218" = load i64, i64* @_gasrem + %"$gascmp_219" = icmp ugt i64 2, %"$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", 2 + store i64 %"$consume_222", i64* @_gasrem + %"$l_tag_224" = getelementptr inbounds %TName_List_String, %TName_List_String* %1, i32 0, i32 0 + %"$l_tag_225" = load i8, i8* %"$l_tag_224" + switch i8 %"$l_tag_225", label %"$empty_default_226" [ + i8 0, label %"$Cons_227" + i8 1, label %"$Nil_270" ] -"$Cons_197": ; preds = %entry - %"$l_198" = bitcast %TName_List_String* %1 to %CName_Cons_String* - %"$h_gep_199" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$l_198", i32 0, i32 1 - %"$h_load_200" = load %String, %String* %"$h_gep_199" +"$Cons_227": ; preds = %"$have_gas_221" + %"$l_228" = bitcast %TName_List_String* %1 to %CName_Cons_String* + %"$h_gep_229" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$l_228", i32 0, i32 1 + %"$h_load_230" = load %String, %String* %"$h_gep_229" %h = alloca %String - store %String %"$h_load_200", %String* %h - %"$t_gep_201" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$l_198", i32 0, i32 2 - %"$t_load_202" = load %TName_List_String*, %TName_List_String** %"$t_gep_201" + store %String %"$h_load_230", %String* %h + %"$t_gep_231" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$l_228", i32 0, i32 2 + %"$t_load_232" = load %TName_List_String*, %TName_List_String** %"$t_gep_231" %t = alloca %TName_List_String* - store %TName_List_String* %"$t_load_202", %TName_List_String** %t + store %TName_List_String* %"$t_load_232", %TName_List_String** %t + %"$gasrem_233" = load i64, i64* @_gasrem + %"$gascmp_234" = icmp ugt i64 1, %"$gasrem_233" + br i1 %"$gascmp_234", label %"$out_of_gas_235", label %"$have_gas_236" + +"$out_of_gas_235": ; preds = %"$Cons_227" + call void @_out_of_gas() + br label %"$have_gas_236" + +"$have_gas_236": ; preds = %"$out_of_gas_235", %"$Cons_227" + %"$consume_237" = sub i64 %"$gasrem_233", 1 + store i64 %"$consume_237", i64* @_gasrem %res = alloca %Uint32 + %"$gasrem_238" = load i64, i64* @_gasrem + %"$gascmp_239" = icmp ugt i64 1, %"$gasrem_238" + br i1 %"$gascmp_239", label %"$out_of_gas_240", label %"$have_gas_241" + +"$out_of_gas_240": ; preds = %"$have_gas_236" + call void @_out_of_gas() + br label %"$have_gas_241" + +"$have_gas_241": ; preds = %"$out_of_gas_240", %"$have_gas_236" + %"$consume_242" = sub i64 %"$gasrem_238", 1 + store i64 %"$consume_242", i64* @_gasrem %"$f_0" = alloca { %Uint32 (i8*, %String)*, i8* } - %"$f_203" = load { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$f_fptr_204" = extractvalue { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } %"$f_203", 0 - %"$f_envptr_205" = extractvalue { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } %"$f_203", 1 - %"$z_206" = load %Uint32, %Uint32* %z - %"$f_call_207" = call { %Uint32 (i8*, %String)*, i8* } %"$f_fptr_204"(i8* %"$f_envptr_205", %Uint32 %"$z_206") - store { %Uint32 (i8*, %String)*, i8* } %"$f_call_207", { %Uint32 (i8*, %String)*, i8* }* %"$f_0" + %"$f_243" = load { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$f_fptr_244" = extractvalue { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } %"$f_243", 0 + %"$f_envptr_245" = extractvalue { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } %"$f_243", 1 + %"$z_246" = load %Uint32, %Uint32* %z + %"$f_call_247" = call { %Uint32 (i8*, %String)*, i8* } %"$f_fptr_244"(i8* %"$f_envptr_245", %Uint32 %"$z_246") + store { %Uint32 (i8*, %String)*, i8* } %"$f_call_247", { %Uint32 (i8*, %String)*, i8* }* %"$f_0" %"$f_1" = alloca %Uint32 - %"$$f_0_208" = load { %Uint32 (i8*, %String)*, i8* }, { %Uint32 (i8*, %String)*, i8* }* %"$f_0" - %"$$f_0_fptr_209" = extractvalue { %Uint32 (i8*, %String)*, i8* } %"$$f_0_208", 0 - %"$$f_0_envptr_210" = extractvalue { %Uint32 (i8*, %String)*, i8* } %"$$f_0_208", 1 - %"$h_211" = load %String, %String* %h - %"$$f_0_call_212" = call %Uint32 %"$$f_0_fptr_209"(i8* %"$$f_0_envptr_210", %String %"$h_211") - store %Uint32 %"$$f_0_call_212", %Uint32* %"$f_1" - %"$$f_1_213" = load %Uint32, %Uint32* %"$f_1" - store %Uint32 %"$$f_1_213", %Uint32* %res + %"$$f_0_248" = load { %Uint32 (i8*, %String)*, i8* }, { %Uint32 (i8*, %String)*, i8* }* %"$f_0" + %"$$f_0_fptr_249" = extractvalue { %Uint32 (i8*, %String)*, i8* } %"$$f_0_248", 0 + %"$$f_0_envptr_250" = extractvalue { %Uint32 (i8*, %String)*, i8* } %"$$f_0_248", 1 + %"$h_251" = load %String, %String* %h + %"$$f_0_call_252" = call %Uint32 %"$$f_0_fptr_249"(i8* %"$$f_0_envptr_250", %String %"$h_251") + store %Uint32 %"$$f_0_call_252", %Uint32* %"$f_1" + %"$$f_1_253" = load %Uint32, %Uint32* %"$f_1" + store %Uint32 %"$$f_1_253", %Uint32* %res + %"$gasrem_254" = load i64, i64* @_gasrem + %"$gascmp_255" = icmp ugt i64 1, %"$gasrem_254" + br i1 %"$gascmp_255", label %"$out_of_gas_256", label %"$have_gas_257" + +"$out_of_gas_256": ; preds = %"$have_gas_241" + call void @_out_of_gas() + br label %"$have_gas_257" + +"$have_gas_257": ; preds = %"$out_of_gas_256", %"$have_gas_241" + %"$consume_258" = sub i64 %"$gasrem_254", 1 + store i64 %"$consume_258", i64* @_gasrem %"$g_2" = alloca { %Uint32 (i8*, %TName_List_String*)*, i8* } - %"$g_214" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$g_fptr_215" = extractvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_214", 0 - %"$g_envptr_216" = extractvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_214", 1 - %"$res_217" = load %Uint32, %Uint32* %res - %"$g_call_218" = call { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$g_fptr_215"(i8* %"$g_envptr_216", %Uint32 %"$res_217") - store { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$g_call_218", { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$g_2" + %"$g_259" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$g_fptr_260" = extractvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_259", 0 + %"$g_envptr_261" = extractvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_259", 1 + %"$res_262" = load %Uint32, %Uint32* %res + %"$g_call_263" = call { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$g_fptr_260"(i8* %"$g_envptr_261", %Uint32 %"$res_262") + store { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$g_call_263", { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$g_2" %"$g_3" = alloca %Uint32 - %"$$g_2_219" = load { %Uint32 (i8*, %TName_List_String*)*, i8* }, { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$g_2" - %"$$g_2_fptr_220" = extractvalue { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$g_2_219", 0 - %"$$g_2_envptr_221" = extractvalue { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$g_2_219", 1 - %"$t_222" = load %TName_List_String*, %TName_List_String** %t - %"$$g_2_call_223" = call %Uint32 %"$$g_2_fptr_220"(i8* %"$$g_2_envptr_221", %TName_List_String* %"$t_222") - store %Uint32 %"$$g_2_call_223", %Uint32* %"$g_3" - %"$$g_3_224" = load %Uint32, %Uint32* %"$g_3" - store %Uint32 %"$$g_3_224", %Uint32* %"$retval_21" - br label %"$matchsucc_193" - -"$Nil_225": ; preds = %entry - %"$l_226" = bitcast %TName_List_String* %1 to %CName_Nil_String* - %"$z_227" = load %Uint32, %Uint32* %z - store %Uint32 %"$z_227", %Uint32* %"$retval_21" - br label %"$matchsucc_193" - -"$empty_default_196": ; preds = %entry - br label %"$matchsucc_193" - -"$matchsucc_193": ; preds = %"$Nil_225", %"$Cons_197", %"$empty_default_196" - %"$$retval_21_228" = load %Uint32, %Uint32* %"$retval_21" - ret %Uint32 %"$$retval_21_228" + %"$$g_2_264" = load { %Uint32 (i8*, %TName_List_String*)*, i8* }, { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$g_2" + %"$$g_2_fptr_265" = extractvalue { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$g_2_264", 0 + %"$$g_2_envptr_266" = extractvalue { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$g_2_264", 1 + %"$t_267" = load %TName_List_String*, %TName_List_String** %t + %"$$g_2_call_268" = call %Uint32 %"$$g_2_fptr_265"(i8* %"$$g_2_envptr_266", %TName_List_String* %"$t_267") + store %Uint32 %"$$g_2_call_268", %Uint32* %"$g_3" + %"$$g_3_269" = load %Uint32, %Uint32* %"$g_3" + store %Uint32 %"$$g_3_269", %Uint32* %"$retval_21" + br label %"$matchsucc_223" + +"$Nil_270": ; preds = %"$have_gas_221" + %"$l_271" = bitcast %TName_List_String* %1 to %CName_Nil_String* + %"$gasrem_272" = load i64, i64* @_gasrem + %"$gascmp_273" = icmp ugt i64 1, %"$gasrem_272" + br i1 %"$gascmp_273", label %"$out_of_gas_274", label %"$have_gas_275" + +"$out_of_gas_274": ; preds = %"$Nil_270" + call void @_out_of_gas() + br label %"$have_gas_275" + +"$have_gas_275": ; preds = %"$out_of_gas_274", %"$Nil_270" + %"$consume_276" = sub i64 %"$gasrem_272", 1 + store i64 %"$consume_276", i64* @_gasrem + %"$z_277" = load %Uint32, %Uint32* %z + store %Uint32 %"$z_277", %Uint32* %"$retval_21" + br label %"$matchsucc_223" + +"$empty_default_226": ; preds = %"$have_gas_221" + br label %"$matchsucc_223" + +"$matchsucc_223": ; preds = %"$have_gas_275", %"$have_gas_257", %"$empty_default_226" + %"$$retval_21_278" = load %Uint32, %Uint32* %"$retval_21" + ret %Uint32 %"$$retval_21_278" } define internal { %Uint32 (i8*, %TName_List_String*)*, i8* } @"$fundef_18"(%"$$fundef_18_env_149"* %0, %Uint32 %1) { entry: - %"$$fundef_18_env_f_173" = getelementptr inbounds %"$$fundef_18_env_149", %"$$fundef_18_env_149"* %0, i32 0, i32 0 - %"$f_envload_174" = load { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_f_173" + %"$$fundef_18_env_f_193" = getelementptr inbounds %"$$fundef_18_env_149", %"$$fundef_18_env_149"* %0, i32 0, i32 0 + %"$f_envload_194" = load { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_f_193" %f = alloca { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_174", { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %f - %"$$fundef_18_env_g_175" = getelementptr inbounds %"$$fundef_18_env_149", %"$$fundef_18_env_149"* %0, i32 0, i32 1 - %"$g_envload_176" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_g_175" + store { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } %"$f_envload_194", { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %f + %"$$fundef_18_env_g_195" = getelementptr inbounds %"$$fundef_18_env_149", %"$$fundef_18_env_149"* %0, i32 0, i32 1 + %"$g_envload_196" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_g_195" %g = alloca { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_176", { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_envload_196", { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %g %"$retval_19" = alloca { %Uint32 (i8*, %TName_List_String*)*, i8* } - %"$$fundef_20_envp_177_load" = load i8*, i8** @_execptr - %"$$fundef_20_envp_177_salloc" = call i8* @_salloc(i8* %"$$fundef_20_envp_177_load", i64 40) - %"$$fundef_20_envp_177" = bitcast i8* %"$$fundef_20_envp_177_salloc" to %"$$fundef_20_env_148"* - %"$$fundef_20_env_voidp_179" = bitcast %"$$fundef_20_env_148"* %"$$fundef_20_envp_177" to i8* - %"$$fundef_20_cloval_180" = insertvalue { %Uint32 (i8*, %TName_List_String*)*, i8* } { %Uint32 (i8*, %TName_List_String*)* bitcast (%Uint32 (%"$$fundef_20_env_148"*, %TName_List_String*)* @"$fundef_20" to %Uint32 (i8*, %TName_List_String*)*), i8* undef }, i8* %"$$fundef_20_env_voidp_179", 1 - %"$$fundef_20_env_f_181" = getelementptr inbounds %"$$fundef_20_env_148", %"$$fundef_20_env_148"* %"$$fundef_20_envp_177", i32 0, i32 0 - %"$f_182" = load { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %f - store { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } %"$f_182", { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_20_env_f_181" - %"$$fundef_20_env_g_183" = getelementptr inbounds %"$$fundef_20_env_148", %"$$fundef_20_env_148"* %"$$fundef_20_envp_177", i32 0, i32 1 - %"$g_184" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_184", { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_20_env_g_183" - %"$$fundef_20_env_z_185" = getelementptr inbounds %"$$fundef_20_env_148", %"$$fundef_20_env_148"* %"$$fundef_20_envp_177", i32 0, i32 2 - store %Uint32 %1, %Uint32* %"$$fundef_20_env_z_185" - store { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$fundef_20_cloval_180", { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$retval_19" - %"$$retval_19_186" = load { %Uint32 (i8*, %TName_List_String*)*, i8* }, { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$retval_19" - ret { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$retval_19_186" + %"$gasrem_197" = load i64, i64* @_gasrem + %"$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 + %"$$fundef_20_envp_202_load" = load i8*, i8** @_execptr + %"$$fundef_20_envp_202_salloc" = call i8* @_salloc(i8* %"$$fundef_20_envp_202_load", i64 40) + %"$$fundef_20_envp_202" = bitcast i8* %"$$fundef_20_envp_202_salloc" to %"$$fundef_20_env_148"* + %"$$fundef_20_env_voidp_204" = bitcast %"$$fundef_20_env_148"* %"$$fundef_20_envp_202" to i8* + %"$$fundef_20_cloval_205" = insertvalue { %Uint32 (i8*, %TName_List_String*)*, i8* } { %Uint32 (i8*, %TName_List_String*)* bitcast (%Uint32 (%"$$fundef_20_env_148"*, %TName_List_String*)* @"$fundef_20" to %Uint32 (i8*, %TName_List_String*)*), i8* undef }, i8* %"$$fundef_20_env_voidp_204", 1 + %"$$fundef_20_env_f_206" = getelementptr inbounds %"$$fundef_20_env_148", %"$$fundef_20_env_148"* %"$$fundef_20_envp_202", i32 0, i32 0 + %"$f_207" = load { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %f + store { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } %"$f_207", { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_20_env_f_206" + %"$$fundef_20_env_g_208" = getelementptr inbounds %"$$fundef_20_env_148", %"$$fundef_20_env_148"* %"$$fundef_20_envp_202", i32 0, i32 1 + %"$g_209" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_209", { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_20_env_g_208" + %"$$fundef_20_env_z_210" = getelementptr inbounds %"$$fundef_20_env_148", %"$$fundef_20_env_148"* %"$$fundef_20_envp_202", i32 0, i32 2 + store %Uint32 %1, %Uint32* %"$$fundef_20_env_z_210" + store { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$fundef_20_cloval_205", { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$retval_19" + %"$$retval_19_211" = load { %Uint32 (i8*, %TName_List_String*)*, i8* }, { %Uint32 (i8*, %TName_List_String*)*, i8* }* %"$retval_19" + ret { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$$retval_19_211" } define internal { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } @"$fundef_16"(%"$$fundef_16_env_150"* %0, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } %1) { entry: %"$retval_17" = alloca { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } - %"$$fundef_18_envp_164_load" = load i8*, i8** @_execptr - %"$$fundef_18_envp_164_salloc" = call i8* @_salloc(i8* %"$$fundef_18_envp_164_load", i64 32) - %"$$fundef_18_envp_164" = bitcast i8* %"$$fundef_18_envp_164_salloc" to %"$$fundef_18_env_149"* - %"$$fundef_18_env_voidp_166" = bitcast %"$$fundef_18_env_149"* %"$$fundef_18_envp_164" to i8* - %"$$fundef_18_cloval_167" = insertvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_List_String*)*, i8* } (%"$$fundef_18_env_149"*, %Uint32)* @"$fundef_18" to { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_18_env_voidp_166", 1 + %"$gasrem_174" = load i64, i64* @_gasrem + %"$gascmp_175" = icmp ugt i64 1, %"$gasrem_174" + br i1 %"$gascmp_175", label %"$out_of_gas_176", label %"$have_gas_177" + +"$out_of_gas_176": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_177" + +"$have_gas_177": ; preds = %"$out_of_gas_176", %entry + %"$consume_178" = sub i64 %"$gasrem_174", 1 + store i64 %"$consume_178", i64* @_gasrem + %"$gasrem_179" = load i64, i64* @_gasrem + %"$gascmp_180" = icmp ugt i64 1, %"$gasrem_179" + br i1 %"$gascmp_180", label %"$out_of_gas_181", label %"$have_gas_182" + +"$out_of_gas_181": ; preds = %"$have_gas_177" + call void @_out_of_gas() + br label %"$have_gas_182" + +"$have_gas_182": ; preds = %"$out_of_gas_181", %"$have_gas_177" + %"$consume_183" = sub i64 %"$gasrem_179", 1 + store i64 %"$consume_183", i64* @_gasrem + %"$$fundef_18_envp_184_load" = load i8*, i8** @_execptr + %"$$fundef_18_envp_184_salloc" = call i8* @_salloc(i8* %"$$fundef_18_envp_184_load", i64 32) + %"$$fundef_18_envp_184" = bitcast i8* %"$$fundef_18_envp_184_salloc" to %"$$fundef_18_env_149"* + %"$$fundef_18_env_voidp_186" = bitcast %"$$fundef_18_env_149"* %"$$fundef_18_envp_184" to i8* + %"$$fundef_18_cloval_187" = insertvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)* bitcast ({ %Uint32 (i8*, %TName_List_String*)*, i8* } (%"$$fundef_18_env_149"*, %Uint32)* @"$fundef_18" to { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*), i8* undef }, i8* %"$$fundef_18_env_voidp_186", 1 %g = alloca { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } - store { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_18_cloval_167", { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %g - %"$$fundef_18_env_f_168" = getelementptr inbounds %"$$fundef_18_env_149", %"$$fundef_18_env_149"* %"$$fundef_18_envp_164", i32 0, i32 0 - store { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } %1, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_f_168" - %"$$fundef_18_env_g_169" = getelementptr inbounds %"$$fundef_18_env_149", %"$$fundef_18_env_149"* %"$$fundef_18_envp_164", i32 0, i32 1 - %"$g_170" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_170", { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_g_169" - %"$g_171" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %g - store { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_171", { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_17" - %"$$retval_17_172" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_17" - ret { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_17_172" + store { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$$fundef_18_cloval_187", { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %g + %"$$fundef_18_env_f_188" = getelementptr inbounds %"$$fundef_18_env_149", %"$$fundef_18_env_149"* %"$$fundef_18_envp_184", i32 0, i32 0 + store { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* } %1, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_f_188" + %"$$fundef_18_env_g_189" = getelementptr inbounds %"$$fundef_18_env_149", %"$$fundef_18_env_149"* %"$$fundef_18_envp_184", i32 0, i32 1 + %"$g_190" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_190", { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %"$$fundef_18_env_g_189" + %"$g_191" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %g + store { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$g_191", { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_17" + %"$$retval_17_192" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_17" + ret { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_17_192" } define internal { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } @"$fundef_14"(%"$$fundef_14_env_151"* %0) { entry: %"$retval_15" = alloca { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } + %"$gasrem_165" = load i64, i64* @_gasrem + %"$gascmp_166" = icmp ugt i64 1, %"$gasrem_165" + br i1 %"$gascmp_166", label %"$out_of_gas_167", label %"$have_gas_168" + +"$out_of_gas_167": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_168" + +"$have_gas_168": ; preds = %"$out_of_gas_167", %entry + %"$consume_169" = sub i64 %"$gasrem_165", 1 + store i64 %"$consume_169", i64* @_gasrem store { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })* bitcast ({ { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (%"$$fundef_16_env_150"*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })* @"$fundef_16" to { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*), i8* null }, { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_15" - %"$$retval_15_163" = load { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_15" - ret { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_15_163" + %"$$retval_15_173" = load { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }, { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* }* %"$retval_15" + ret { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } %"$$retval_15_173" } define internal { i8*, i8* }* @"$fundef_12"(%"$$fundef_12_env_152"* %0) { entry: %"$retval_13" = alloca { i8*, i8* }* - %"$dyndisp_table_156_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_156_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_156_salloc_load", i64 48) - %"$dyndisp_table_156_salloc" = bitcast i8* %"$dyndisp_table_156_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_156" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_156_salloc" to { i8*, i8* }* - %"$dyndisp_gep_157" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_156", i32 1 - %"$dyndisp_pcast_158" = bitcast { i8*, i8* }* %"$dyndisp_gep_157" to { { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_14_env_151"*)* @"$fundef_14" to { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_158" - store { i8*, i8* }* %"$dyndisp_table_156", { i8*, i8* }** %"$retval_13" - %"$$retval_13_159" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_13" - ret { i8*, i8* }* %"$$retval_13_159" + %"$gasrem_153" = load i64, i64* @_gasrem + %"$gascmp_154" = icmp ugt i64 1, %"$gasrem_153" + br i1 %"$gascmp_154", label %"$out_of_gas_155", label %"$have_gas_156" + +"$out_of_gas_155": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_156" + +"$have_gas_156": ; preds = %"$out_of_gas_155", %entry + %"$consume_157" = sub i64 %"$gasrem_153", 1 + store i64 %"$consume_157", i64* @_gasrem + %"$dyndisp_table_161_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_161_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_161_salloc_load", i64 48) + %"$dyndisp_table_161_salloc" = bitcast i8* %"$dyndisp_table_161_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_161" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_161_salloc" to { i8*, i8* }* + %"$dyndisp_gep_162" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_161", i32 1 + %"$dyndisp_pcast_163" = bitcast { i8*, i8* }* %"$dyndisp_gep_162" to { { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* } { { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)* bitcast ({ { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (%"$$fundef_14_env_151"*)* @"$fundef_14" to { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*, %Uint32)*, i8* } (i8*, { { %Uint32 (i8*, %String)*, i8* } (i8*, %Uint32)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_163" + store { i8*, i8* }* %"$dyndisp_table_161", { i8*, i8* }** %"$retval_13" + %"$$retval_13_164" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_13" + ret { i8*, i8* }* %"$$retval_13_164" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) declare %Uint32 @_add_Uint32(%Uint32, %Uint32) @@ -845,167 +1497,409 @@ entry: ret void } -define internal %Uint32 @"$scilla_expr_493"(i8* %0) { +define internal %Uint32 @"$scilla_expr_788"(i8* %0) { entry: - %"$dyndisp_table_500_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_500_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_500_salloc_load", i64 48) - %"$dyndisp_table_500_salloc" = bitcast i8* %"$dyndisp_table_500_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_500" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_500_salloc" to { i8*, i8* }* - %"$dyndisp_gep_501" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_500", i32 0 - %"$dyndisp_pcast_502" = bitcast { i8*, i8* }* %"$dyndisp_gep_501" to { { i8*, i8* }* (i8*)*, i8* }* - store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_12_env_152"*)* @"$fundef_12" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_502" - %"$dyndisp_gep_503" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_500", i32 2 - %"$dyndisp_pcast_504" = bitcast { i8*, i8* }* %"$dyndisp_gep_503" to { { i8*, i8* }* (i8*)*, i8* }* - store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_22_env_147"*)* @"$fundef_22" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_504" - store { i8*, i8* }* %"$dyndisp_table_500", { i8*, i8* }** @list_foldl - %"$$fundef_32_envp_505_load" = load i8*, i8** @_execptr - %"$$fundef_32_envp_505_salloc" = call i8* @_salloc(i8* %"$$fundef_32_envp_505_load", i64 8) - %"$$fundef_32_envp_505" = bitcast i8* %"$$fundef_32_envp_505_salloc" to %"$$fundef_32_env_142"* - %"$$fundef_32_env_voidp_507" = bitcast %"$$fundef_32_env_142"* %"$$fundef_32_envp_505" to i8* - %"$$fundef_32_cloval_508" = insertvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %TName_List_String*)*, i8* } (%"$$fundef_32_env_142"*)* @"$fundef_32" to { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_32_env_voidp_507", 1 - %"$$fundef_32_env_list_foldl_509" = getelementptr inbounds %"$$fundef_32_env_142", %"$$fundef_32_env_142"* %"$$fundef_32_envp_505", i32 0, i32 0 - %"$list_foldl_510" = load { i8*, i8* }*, { i8*, i8* }** @list_foldl - store { i8*, i8* }* %"$list_foldl_510", { i8*, i8* }** %"$$fundef_32_env_list_foldl_509" - %"$$fundef_38_env_voidp_512" = bitcast %"$$fundef_32_env_142"* %"$$fundef_32_envp_505" to i8* - %"$$fundef_38_cloval_513" = insertvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_38_env_139"*)* @"$fundef_38" to { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_38_env_voidp_512", 1 - %"$dyndisp_table_514_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_514_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_514_salloc_load", i64 48) - %"$dyndisp_table_514_salloc" = bitcast i8* %"$dyndisp_table_514_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_514" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_514_salloc" to { i8*, i8* }* - %"$dyndisp_gep_515" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_514", i32 0 - %"$dyndisp_pcast_516" = bitcast { i8*, i8* }* %"$dyndisp_gep_515" to { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* - store { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } %"$$fundef_32_cloval_508", { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_516" - %"$dyndisp_gep_517" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_514", i32 2 - %"$dyndisp_pcast_518" = bitcast { i8*, i8* }* %"$dyndisp_gep_517" to { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }* - store { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* } %"$$fundef_38_cloval_513", { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_518" - store { i8*, i8* }* %"$dyndisp_table_514", { i8*, i8* }** @list_length + %"$gasrem_789" = load i64, i64* @_gasrem + %"$gascmp_790" = icmp ugt i64 1, %"$gasrem_789" + br i1 %"$gascmp_790", label %"$out_of_gas_791", label %"$have_gas_792" + +"$out_of_gas_791": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_792" + +"$have_gas_792": ; preds = %"$out_of_gas_791", %entry + %"$consume_793" = sub i64 %"$gasrem_789", 1 + store i64 %"$consume_793", i64* @_gasrem + %"$dyndisp_table_800_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_800_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_800_salloc_load", i64 48) + %"$dyndisp_table_800_salloc" = bitcast i8* %"$dyndisp_table_800_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_800" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_800_salloc" to { i8*, i8* }* + %"$dyndisp_gep_801" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_800", i32 0 + %"$dyndisp_pcast_802" = bitcast { i8*, i8* }* %"$dyndisp_gep_801" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_12_env_152"*)* @"$fundef_12" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_802" + %"$dyndisp_gep_803" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_800", i32 2 + %"$dyndisp_pcast_804" = bitcast { i8*, i8* }* %"$dyndisp_gep_803" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_22_env_147"*)* @"$fundef_22" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_804" + store { i8*, i8* }* %"$dyndisp_table_800", { i8*, i8* }** @list_foldl + %"$gasrem_805" = load i64, i64* @_gasrem + %"$gascmp_806" = icmp ugt i64 1, %"$gasrem_805" + br i1 %"$gascmp_806", label %"$out_of_gas_807", label %"$have_gas_808" + +"$out_of_gas_807": ; preds = %"$have_gas_792" + call void @_out_of_gas() + br label %"$have_gas_808" + +"$have_gas_808": ; preds = %"$out_of_gas_807", %"$have_gas_792" + %"$consume_809" = sub i64 %"$gasrem_805", 1 + store i64 %"$consume_809", i64* @_gasrem + %"$$fundef_32_envp_810_load" = load i8*, i8** @_execptr + %"$$fundef_32_envp_810_salloc" = call i8* @_salloc(i8* %"$$fundef_32_envp_810_load", i64 8) + %"$$fundef_32_envp_810" = bitcast i8* %"$$fundef_32_envp_810_salloc" to %"$$fundef_32_env_142"* + %"$$fundef_32_env_voidp_812" = bitcast %"$$fundef_32_env_142"* %"$$fundef_32_envp_810" to i8* + %"$$fundef_32_cloval_813" = insertvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %TName_List_String*)*, i8* } (%"$$fundef_32_env_142"*)* @"$fundef_32" to { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_32_env_voidp_812", 1 + %"$$fundef_32_env_list_foldl_814" = getelementptr inbounds %"$$fundef_32_env_142", %"$$fundef_32_env_142"* %"$$fundef_32_envp_810", i32 0, i32 0 + %"$list_foldl_815" = load { i8*, i8* }*, { i8*, i8* }** @list_foldl + store { i8*, i8* }* %"$list_foldl_815", { i8*, i8* }** %"$$fundef_32_env_list_foldl_814" + %"$$fundef_38_env_voidp_817" = bitcast %"$$fundef_32_env_142"* %"$$fundef_32_envp_810" to i8* + %"$$fundef_38_cloval_818" = insertvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_38_env_139"*)* @"$fundef_38" to { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_38_env_voidp_817", 1 + %"$dyndisp_table_819_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_819_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_819_salloc_load", i64 48) + %"$dyndisp_table_819_salloc" = bitcast i8* %"$dyndisp_table_819_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_819" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_819_salloc" to { i8*, i8* }* + %"$dyndisp_gep_820" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_819", i32 0 + %"$dyndisp_pcast_821" = bitcast { i8*, i8* }* %"$dyndisp_gep_820" to { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* + store { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } %"$$fundef_32_cloval_813", { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_821" + %"$dyndisp_gep_822" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_819", i32 2 + %"$dyndisp_pcast_823" = bitcast { i8*, i8* }* %"$dyndisp_gep_822" to { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }* + store { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* } %"$$fundef_38_cloval_818", { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_823" + store { i8*, i8* }* %"$dyndisp_table_819", { i8*, i8* }** @list_length %"$expr_44" = alloca %Uint32 + %"$gasrem_824" = load i64, i64* @_gasrem + %"$gascmp_825" = icmp ugt i64 1, %"$gasrem_824" + br i1 %"$gascmp_825", label %"$out_of_gas_826", label %"$have_gas_827" + +"$out_of_gas_826": ; preds = %"$have_gas_808" + call void @_out_of_gas() + br label %"$have_gas_827" + +"$have_gas_827": ; preds = %"$out_of_gas_826", %"$have_gas_808" + %"$consume_828" = sub i64 %"$gasrem_824", 1 + store i64 %"$consume_828", i64* @_gasrem %list_length2 = alloca { i8*, i8* }* - %"$$fundef_45_envp_519_load" = load i8*, i8** @_execptr - %"$$fundef_45_envp_519_salloc" = call i8* @_salloc(i8* %"$$fundef_45_envp_519_load", i64 8) - %"$$fundef_45_envp_519" = bitcast i8* %"$$fundef_45_envp_519_salloc" to %"$$fundef_45_env_136"* - %"$$fundef_45_env_voidp_521" = bitcast %"$$fundef_45_env_136"* %"$$fundef_45_envp_519" to i8* - %"$$fundef_45_cloval_522" = insertvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %TName_List_String*)*, i8* } (%"$$fundef_45_env_136"*)* @"$fundef_45" to { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_45_env_voidp_521", 1 - %"$$fundef_45_env_list_length_523" = getelementptr inbounds %"$$fundef_45_env_136", %"$$fundef_45_env_136"* %"$$fundef_45_envp_519", i32 0, i32 0 - %"$list_length_524" = load { i8*, i8* }*, { i8*, i8* }** @list_length - store { i8*, i8* }* %"$list_length_524", { i8*, i8* }** %"$$fundef_45_env_list_length_523" - %"$$fundef_49_env_voidp_526" = bitcast %"$$fundef_45_env_136"* %"$$fundef_45_envp_519" to i8* - %"$$fundef_49_cloval_527" = insertvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_49_env_134"*)* @"$fundef_49" to { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_49_env_voidp_526", 1 - %"$dyndisp_table_528_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_528_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_528_salloc_load", i64 48) - %"$dyndisp_table_528_salloc" = bitcast i8* %"$dyndisp_table_528_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_528" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_528_salloc" to { i8*, i8* }* - %"$dyndisp_gep_529" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_528", i32 0 - %"$dyndisp_pcast_530" = bitcast { i8*, i8* }* %"$dyndisp_gep_529" to { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* - store { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } %"$$fundef_45_cloval_522", { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_530" - %"$dyndisp_gep_531" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_528", i32 2 - %"$dyndisp_pcast_532" = bitcast { i8*, i8* }* %"$dyndisp_gep_531" to { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }* - store { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* } %"$$fundef_49_cloval_527", { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_532" - store { i8*, i8* }* %"$dyndisp_table_528", { i8*, i8* }** %list_length2 + %"$gasrem_829" = load i64, i64* @_gasrem + %"$gascmp_830" = icmp ugt i64 1, %"$gasrem_829" + br i1 %"$gascmp_830", label %"$out_of_gas_831", label %"$have_gas_832" + +"$out_of_gas_831": ; preds = %"$have_gas_827" + call void @_out_of_gas() + br label %"$have_gas_832" + +"$have_gas_832": ; preds = %"$out_of_gas_831", %"$have_gas_827" + %"$consume_833" = sub i64 %"$gasrem_829", 1 + store i64 %"$consume_833", i64* @_gasrem + %"$$fundef_45_envp_834_load" = load i8*, i8** @_execptr + %"$$fundef_45_envp_834_salloc" = call i8* @_salloc(i8* %"$$fundef_45_envp_834_load", i64 8) + %"$$fundef_45_envp_834" = bitcast i8* %"$$fundef_45_envp_834_salloc" to %"$$fundef_45_env_136"* + %"$$fundef_45_env_voidp_836" = bitcast %"$$fundef_45_env_136"* %"$$fundef_45_envp_834" to i8* + %"$$fundef_45_cloval_837" = insertvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %TName_List_String*)*, i8* } (%"$$fundef_45_env_136"*)* @"$fundef_45" to { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_45_env_voidp_836", 1 + %"$$fundef_45_env_list_length_838" = getelementptr inbounds %"$$fundef_45_env_136", %"$$fundef_45_env_136"* %"$$fundef_45_envp_834", i32 0, i32 0 + %"$list_length_839" = load { i8*, i8* }*, { i8*, i8* }** @list_length + store { i8*, i8* }* %"$list_length_839", { i8*, i8* }** %"$$fundef_45_env_list_length_838" + %"$$fundef_49_env_voidp_841" = bitcast %"$$fundef_45_env_136"* %"$$fundef_45_envp_834" to i8* + %"$$fundef_49_cloval_842" = insertvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_49_env_134"*)* @"$fundef_49" to { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_49_env_voidp_841", 1 + %"$dyndisp_table_843_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_843_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_843_salloc_load", i64 48) + %"$dyndisp_table_843_salloc" = bitcast i8* %"$dyndisp_table_843_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_843" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_843_salloc" to { i8*, i8* }* + %"$dyndisp_gep_844" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_843", i32 0 + %"$dyndisp_pcast_845" = bitcast { i8*, i8* }* %"$dyndisp_gep_844" to { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* + store { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } %"$$fundef_45_cloval_837", { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_845" + %"$dyndisp_gep_846" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_843", i32 2 + %"$dyndisp_pcast_847" = bitcast { i8*, i8* }* %"$dyndisp_gep_846" to { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }* + store { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* } %"$$fundef_49_cloval_842", { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_847" + store { i8*, i8* }* %"$dyndisp_table_843", { i8*, i8* }** %list_length2 + %"$gasrem_848" = load i64, i64* @_gasrem + %"$gascmp_849" = icmp ugt i64 1, %"$gasrem_848" + br i1 %"$gascmp_849", label %"$out_of_gas_850", label %"$have_gas_851" + +"$out_of_gas_850": ; preds = %"$have_gas_832" + call void @_out_of_gas() + br label %"$have_gas_851" + +"$have_gas_851": ; preds = %"$out_of_gas_850", %"$have_gas_832" + %"$consume_852" = sub i64 %"$gasrem_848", 1 + store i64 %"$consume_852", i64* @_gasrem %t = alloca { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*, %TName_Bool*)*, i8* } + %"$gasrem_853" = load i64, i64* @_gasrem + %"$gascmp_854" = icmp ugt i64 1, %"$gasrem_853" + br i1 %"$gascmp_854", label %"$out_of_gas_855", label %"$have_gas_856" + +"$out_of_gas_855": ; preds = %"$have_gas_851" + call void @_out_of_gas() + br label %"$have_gas_856" + +"$have_gas_856": ; preds = %"$out_of_gas_855", %"$have_gas_851" + %"$consume_857" = sub i64 %"$gasrem_853", 1 + store i64 %"$consume_857", i64* @_gasrem store { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*, %TName_Bool*)*, i8* } { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*, %TName_Bool*)* bitcast ({ { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (%"$$fundef_53_env_132"*, %TName_Bool*)* @"$fundef_53" to { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*, %TName_Bool*)*), i8* null }, { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %t + %"$gasrem_861" = load i64, i64* @_gasrem + %"$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_856" + call void @_out_of_gas() + br label %"$have_gas_864" + +"$have_gas_864": ; preds = %"$out_of_gas_863", %"$have_gas_856" + %"$consume_865" = sub i64 %"$gasrem_861", 1 + store i64 %"$consume_865", i64* @_gasrem %true = alloca %TName_Bool* - %"$adtval_536_load" = load i8*, i8** @_execptr - %"$adtval_536_salloc" = call i8* @_salloc(i8* %"$adtval_536_load", i64 1) - %"$adtval_536" = bitcast i8* %"$adtval_536_salloc" to %CName_True* - %"$adtgep_537" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_536", i32 0, i32 0 - store i8 0, i8* %"$adtgep_537" - %"$adtptr_538" = bitcast %CName_True* %"$adtval_536" to %TName_Bool* - store %TName_Bool* %"$adtptr_538", %TName_Bool** %true + %"$gasrem_866" = load i64, i64* @_gasrem + %"$gascmp_867" = icmp ugt i64 1, %"$gasrem_866" + br i1 %"$gascmp_867", label %"$out_of_gas_868", label %"$have_gas_869" + +"$out_of_gas_868": ; preds = %"$have_gas_864" + call void @_out_of_gas() + br label %"$have_gas_869" + +"$have_gas_869": ; preds = %"$out_of_gas_868", %"$have_gas_864" + %"$consume_870" = sub i64 %"$gasrem_866", 1 + store i64 %"$consume_870", i64* @_gasrem + %"$adtval_871_load" = load i8*, i8** @_execptr + %"$adtval_871_salloc" = call i8* @_salloc(i8* %"$adtval_871_load", i64 1) + %"$adtval_871" = bitcast i8* %"$adtval_871_salloc" to %CName_True* + %"$adtgep_872" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_871", i32 0, i32 0 + store i8 0, i8* %"$adtgep_872" + %"$adtptr_873" = bitcast %CName_True* %"$adtval_871" to %TName_Bool* + store %TName_Bool* %"$adtptr_873", %TName_Bool** %true + %"$gasrem_874" = load i64, i64* @_gasrem + %"$gascmp_875" = icmp ugt i64 1, %"$gasrem_874" + br i1 %"$gascmp_875", label %"$out_of_gas_876", label %"$have_gas_877" + +"$out_of_gas_876": ; preds = %"$have_gas_869" + call void @_out_of_gas() + br label %"$have_gas_877" + +"$have_gas_877": ; preds = %"$out_of_gas_876", %"$have_gas_869" + %"$consume_878" = sub i64 %"$gasrem_874", 1 + store i64 %"$consume_878", i64* @_gasrem %f = alloca { i8*, i8* }* + %"$gasrem_879" = load i64, i64* @_gasrem + %"$gascmp_880" = icmp ugt i64 1, %"$gasrem_879" + br i1 %"$gascmp_880", label %"$out_of_gas_881", label %"$have_gas_882" + +"$out_of_gas_881": ; preds = %"$have_gas_877" + call void @_out_of_gas() + br label %"$have_gas_882" + +"$have_gas_882": ; preds = %"$out_of_gas_881", %"$have_gas_877" + %"$consume_883" = sub i64 %"$gasrem_879", 1 + store i64 %"$consume_883", i64* @_gasrem %"$t_7" = alloca { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } - %"$t_539" = load { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %t - %"$t_fptr_540" = extractvalue { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$t_539", 0 - %"$t_envptr_541" = extractvalue { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$t_539", 1 - %"$true_542" = load %TName_Bool*, %TName_Bool** %true - %"$t_call_543" = call { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$t_fptr_540"(i8* %"$t_envptr_541", %TName_Bool* %"$true_542") - store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$t_call_543", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$t_7" + %"$t_884" = load { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %t + %"$t_fptr_885" = extractvalue { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$t_884", 0 + %"$t_envptr_886" = extractvalue { { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$t_884", 1 + %"$true_887" = load %TName_Bool*, %TName_Bool** %true + %"$t_call_888" = call { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$t_fptr_885"(i8* %"$t_envptr_886", %TName_Bool* %"$true_887") + store { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$t_call_888", { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$t_7" %"$t_8" = alloca { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } - %"$$t_7_544" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$t_7" - %"$$t_7_fptr_545" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$$t_7_544", 0 - %"$$t_7_envptr_546" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$$t_7_544", 1 - %"$list_length_547" = load { i8*, i8* }*, { i8*, i8* }** @list_length - %"$$t_7_call_548" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$t_7_fptr_545"(i8* %"$$t_7_envptr_546", { i8*, i8* }* %"$list_length_547") - store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$t_7_call_548", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$t_8" + %"$$t_7_889" = load { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }, { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* }* %"$t_7" + %"$$t_7_fptr_890" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$$t_7_889", 0 + %"$$t_7_envptr_891" = extractvalue { { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } (i8*, { i8*, i8* }*)*, i8* } %"$$t_7_889", 1 + %"$list_length_892" = load { i8*, i8* }*, { i8*, i8* }** @list_length + %"$$t_7_call_893" = call { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$t_7_fptr_890"(i8* %"$$t_7_envptr_891", { i8*, i8* }* %"$list_length_892") + store { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$t_7_call_893", { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$t_8" %"$t_9" = alloca { i8*, i8* }* - %"$$t_8_549" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$t_8" - %"$$t_8_fptr_550" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$t_8_549", 0 - %"$$t_8_envptr_551" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$t_8_549", 1 - %"$list_length2_552" = load { i8*, i8* }*, { i8*, i8* }** %list_length2 - %"$$t_8_call_553" = call { i8*, i8* }* %"$$t_8_fptr_550"(i8* %"$$t_8_envptr_551", { i8*, i8* }* %"$list_length2_552") - store { i8*, i8* }* %"$$t_8_call_553", { i8*, i8* }** %"$t_9" - %"$$t_9_554" = load { i8*, i8* }*, { i8*, i8* }** %"$t_9" - store { i8*, i8* }* %"$$t_9_554", { i8*, i8* }** %f + %"$$t_8_894" = load { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }, { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* }* %"$t_8" + %"$$t_8_fptr_895" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$t_8_894", 0 + %"$$t_8_envptr_896" = extractvalue { { i8*, i8* }* (i8*, { i8*, i8* }*)*, i8* } %"$$t_8_894", 1 + %"$list_length2_897" = load { i8*, i8* }*, { i8*, i8* }** %list_length2 + %"$$t_8_call_898" = call { i8*, i8* }* %"$$t_8_fptr_895"(i8* %"$$t_8_envptr_896", { i8*, i8* }* %"$list_length2_897") + store { i8*, i8* }* %"$$t_8_call_898", { i8*, i8* }** %"$t_9" + %"$$t_9_899" = load { i8*, i8* }*, { i8*, i8* }** %"$t_9" + store { i8*, i8* }* %"$$t_9_899", { i8*, i8* }** %f + %"$gasrem_900" = load i64, i64* @_gasrem + %"$gascmp_901" = icmp ugt i64 1, %"$gasrem_900" + br i1 %"$gascmp_901", label %"$out_of_gas_902", label %"$have_gas_903" + +"$out_of_gas_902": ; preds = %"$have_gas_882" + call void @_out_of_gas() + br label %"$have_gas_903" + +"$have_gas_903": ; preds = %"$out_of_gas_902", %"$have_gas_882" + %"$consume_904" = sub i64 %"$gasrem_900", 1 + store i64 %"$consume_904", i64* @_gasrem %f_string = alloca { %Uint32 (i8*, %TName_List_String*)*, i8* } - %"$f_555" = load { i8*, i8* }*, { i8*, i8* }** %f - %"$f_556" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$f_555", i32 0 - %"$f_557" = bitcast { i8*, i8* }* %"$f_556" to { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* - %"$f_558" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* %"$f_557" - %"$f_fptr_559" = extractvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } %"$f_558", 0 - %"$f_envptr_560" = extractvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } %"$f_558", 1 - %"$f_call_561" = call { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$f_fptr_559"(i8* %"$f_envptr_560") - store { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$f_call_561", { %Uint32 (i8*, %TName_List_String*)*, i8* }* %f_string + %"$gasrem_905" = load i64, i64* @_gasrem + %"$gascmp_906" = icmp ugt i64 1, %"$gasrem_905" + br i1 %"$gascmp_906", label %"$out_of_gas_907", label %"$have_gas_908" + +"$out_of_gas_907": ; preds = %"$have_gas_903" + call void @_out_of_gas() + br label %"$have_gas_908" + +"$have_gas_908": ; preds = %"$out_of_gas_907", %"$have_gas_903" + %"$consume_909" = sub i64 %"$gasrem_905", 1 + store i64 %"$consume_909", i64* @_gasrem + %"$f_910" = load { i8*, i8* }*, { i8*, i8* }** %f + %"$f_911" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$f_910", i32 0 + %"$f_912" = bitcast { i8*, i8* }* %"$f_911" to { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* + %"$f_913" = load { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* %"$f_912" + %"$f_fptr_914" = extractvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } %"$f_913", 0 + %"$f_envptr_915" = extractvalue { { %Uint32 (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } %"$f_913", 1 + %"$f_call_916" = call { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$f_fptr_914"(i8* %"$f_envptr_915") + store { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$f_call_916", { %Uint32 (i8*, %TName_List_String*)*, i8* }* %f_string + %"$gasrem_917" = load i64, i64* @_gasrem + %"$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_908" + call void @_out_of_gas() + br label %"$have_gas_920" + +"$have_gas_920": ; preds = %"$out_of_gas_919", %"$have_gas_908" + %"$consume_921" = sub i64 %"$gasrem_917", 1 + store i64 %"$consume_921", i64* @_gasrem %f_bystr20 = alloca { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } - %"$f_562" = load { i8*, i8* }*, { i8*, i8* }** %f - %"$f_563" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$f_562", i32 2 - %"$f_564" = bitcast { i8*, i8* }* %"$f_563" to { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }* - %"$f_565" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }* %"$f_564" - %"$f_fptr_566" = extractvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* } %"$f_565", 0 - %"$f_envptr_567" = extractvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* } %"$f_565", 1 - %"$f_call_568" = call { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$f_fptr_566"(i8* %"$f_envptr_567") - store { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$f_call_568", { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %f_bystr20 + %"$gasrem_922" = load i64, i64* @_gasrem + %"$gascmp_923" = icmp ugt i64 1, %"$gasrem_922" + br i1 %"$gascmp_923", label %"$out_of_gas_924", label %"$have_gas_925" + +"$out_of_gas_924": ; preds = %"$have_gas_920" + call void @_out_of_gas() + br label %"$have_gas_925" + +"$have_gas_925": ; preds = %"$out_of_gas_924", %"$have_gas_920" + %"$consume_926" = sub i64 %"$gasrem_922", 1 + store i64 %"$consume_926", i64* @_gasrem + %"$f_927" = load { i8*, i8* }*, { i8*, i8* }** %f + %"$f_928" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$f_927", i32 2 + %"$f_929" = bitcast { i8*, i8* }* %"$f_928" to { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }* + %"$f_930" = load { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* }* %"$f_929" + %"$f_fptr_931" = extractvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* } %"$f_930", 0 + %"$f_envptr_932" = extractvalue { { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } (i8*)*, i8* } %"$f_930", 1 + %"$f_call_933" = call { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$f_fptr_931"(i8* %"$f_envptr_932") + store { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$f_call_933", { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %f_bystr20 + %"$gasrem_934" = load i64, i64* @_gasrem + %"$gascmp_935" = icmp ugt i64 1, %"$gasrem_934" + br i1 %"$gascmp_935", label %"$out_of_gas_936", label %"$have_gas_937" + +"$out_of_gas_936": ; preds = %"$have_gas_925" + call void @_out_of_gas() + br label %"$have_gas_937" + +"$have_gas_937": ; preds = %"$out_of_gas_936", %"$have_gas_925" + %"$consume_938" = sub i64 %"$gasrem_934", 1 + store i64 %"$consume_938", i64* @_gasrem %nil_string = alloca %TName_List_String* - %"$adtval_569_load" = load i8*, i8** @_execptr - %"$adtval_569_salloc" = call i8* @_salloc(i8* %"$adtval_569_load", i64 1) - %"$adtval_569" = bitcast i8* %"$adtval_569_salloc" to %CName_Nil_String* - %"$adtgep_570" = getelementptr inbounds %CName_Nil_String, %CName_Nil_String* %"$adtval_569", i32 0, i32 0 - store i8 1, i8* %"$adtgep_570" - %"$adtptr_571" = bitcast %CName_Nil_String* %"$adtval_569" to %TName_List_String* - store %TName_List_String* %"$adtptr_571", %TName_List_String** %nil_string + %"$gasrem_939" = load i64, i64* @_gasrem + %"$gascmp_940" = icmp ugt i64 1, %"$gasrem_939" + br i1 %"$gascmp_940", label %"$out_of_gas_941", label %"$have_gas_942" + +"$out_of_gas_941": ; preds = %"$have_gas_937" + call void @_out_of_gas() + br label %"$have_gas_942" + +"$have_gas_942": ; preds = %"$out_of_gas_941", %"$have_gas_937" + %"$consume_943" = sub i64 %"$gasrem_939", 1 + store i64 %"$consume_943", i64* @_gasrem + %"$adtval_944_load" = load i8*, i8** @_execptr + %"$adtval_944_salloc" = call i8* @_salloc(i8* %"$adtval_944_load", i64 1) + %"$adtval_944" = bitcast i8* %"$adtval_944_salloc" to %CName_Nil_String* + %"$adtgep_945" = getelementptr inbounds %CName_Nil_String, %CName_Nil_String* %"$adtval_944", i32 0, i32 0 + store i8 1, i8* %"$adtgep_945" + %"$adtptr_946" = bitcast %CName_Nil_String* %"$adtval_944" to %TName_List_String* + store %TName_List_String* %"$adtptr_946", %TName_List_String** %nil_string + %"$gasrem_947" = load i64, i64* @_gasrem + %"$gascmp_948" = icmp ugt i64 1, %"$gasrem_947" + br i1 %"$gascmp_948", label %"$out_of_gas_949", label %"$have_gas_950" + +"$out_of_gas_949": ; preds = %"$have_gas_942" + call void @_out_of_gas() + br label %"$have_gas_950" + +"$have_gas_950": ; preds = %"$out_of_gas_949", %"$have_gas_942" + %"$consume_951" = sub i64 %"$gasrem_947", 1 + store i64 %"$consume_951", i64* @_gasrem %nil_bystr20 = alloca %TName_List_ByStr20* - %"$adtval_572_load" = load i8*, i8** @_execptr - %"$adtval_572_salloc" = call i8* @_salloc(i8* %"$adtval_572_load", i64 1) - %"$adtval_572" = bitcast i8* %"$adtval_572_salloc" to %CName_Nil_ByStr20* - %"$adtgep_573" = getelementptr inbounds %CName_Nil_ByStr20, %CName_Nil_ByStr20* %"$adtval_572", i32 0, i32 0 - store i8 1, i8* %"$adtgep_573" - %"$adtptr_574" = bitcast %CName_Nil_ByStr20* %"$adtval_572" to %TName_List_ByStr20* - store %TName_List_ByStr20* %"$adtptr_574", %TName_List_ByStr20** %nil_bystr20 + %"$gasrem_952" = load i64, i64* @_gasrem + %"$gascmp_953" = icmp ugt i64 1, %"$gasrem_952" + br i1 %"$gascmp_953", label %"$out_of_gas_954", label %"$have_gas_955" + +"$out_of_gas_954": ; preds = %"$have_gas_950" + call void @_out_of_gas() + br label %"$have_gas_955" + +"$have_gas_955": ; preds = %"$out_of_gas_954", %"$have_gas_950" + %"$consume_956" = sub i64 %"$gasrem_952", 1 + store i64 %"$consume_956", i64* @_gasrem + %"$adtval_957_load" = load i8*, i8** @_execptr + %"$adtval_957_salloc" = call i8* @_salloc(i8* %"$adtval_957_load", i64 1) + %"$adtval_957" = bitcast i8* %"$adtval_957_salloc" to %CName_Nil_ByStr20* + %"$adtgep_958" = getelementptr inbounds %CName_Nil_ByStr20, %CName_Nil_ByStr20* %"$adtval_957", i32 0, i32 0 + store i8 1, i8* %"$adtgep_958" + %"$adtptr_959" = bitcast %CName_Nil_ByStr20* %"$adtval_957" to %TName_List_ByStr20* + store %TName_List_ByStr20* %"$adtptr_959", %TName_List_ByStr20** %nil_bystr20 + %"$gasrem_960" = load i64, i64* @_gasrem + %"$gascmp_961" = icmp ugt i64 1, %"$gasrem_960" + br i1 %"$gascmp_961", label %"$out_of_gas_962", label %"$have_gas_963" + +"$out_of_gas_962": ; preds = %"$have_gas_955" + call void @_out_of_gas() + br label %"$have_gas_963" + +"$have_gas_963": ; preds = %"$out_of_gas_962", %"$have_gas_955" + %"$consume_964" = sub i64 %"$gasrem_960", 1 + store i64 %"$consume_964", i64* @_gasrem %a = alloca %Uint32 + %"$gasrem_965" = load i64, i64* @_gasrem + %"$gascmp_966" = icmp ugt i64 1, %"$gasrem_965" + br i1 %"$gascmp_966", label %"$out_of_gas_967", label %"$have_gas_968" + +"$out_of_gas_967": ; preds = %"$have_gas_963" + call void @_out_of_gas() + br label %"$have_gas_968" + +"$have_gas_968": ; preds = %"$out_of_gas_967", %"$have_gas_963" + %"$consume_969" = sub i64 %"$gasrem_965", 1 + store i64 %"$consume_969", i64* @_gasrem %"$f_string_10" = alloca %Uint32 - %"$f_string_575" = load { %Uint32 (i8*, %TName_List_String*)*, i8* }, { %Uint32 (i8*, %TName_List_String*)*, i8* }* %f_string - %"$f_string_fptr_576" = extractvalue { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$f_string_575", 0 - %"$f_string_envptr_577" = extractvalue { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$f_string_575", 1 - %"$nil_string_578" = load %TName_List_String*, %TName_List_String** %nil_string - %"$f_string_call_579" = call %Uint32 %"$f_string_fptr_576"(i8* %"$f_string_envptr_577", %TName_List_String* %"$nil_string_578") - store %Uint32 %"$f_string_call_579", %Uint32* %"$f_string_10" - %"$$f_string_10_580" = load %Uint32, %Uint32* %"$f_string_10" - store %Uint32 %"$$f_string_10_580", %Uint32* %a + %"$f_string_970" = load { %Uint32 (i8*, %TName_List_String*)*, i8* }, { %Uint32 (i8*, %TName_List_String*)*, i8* }* %f_string + %"$f_string_fptr_971" = extractvalue { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$f_string_970", 0 + %"$f_string_envptr_972" = extractvalue { %Uint32 (i8*, %TName_List_String*)*, i8* } %"$f_string_970", 1 + %"$nil_string_973" = load %TName_List_String*, %TName_List_String** %nil_string + %"$f_string_call_974" = call %Uint32 %"$f_string_fptr_971"(i8* %"$f_string_envptr_972", %TName_List_String* %"$nil_string_973") + store %Uint32 %"$f_string_call_974", %Uint32* %"$f_string_10" + %"$$f_string_10_975" = load %Uint32, %Uint32* %"$f_string_10" + store %Uint32 %"$$f_string_10_975", %Uint32* %a + %"$gasrem_976" = load i64, i64* @_gasrem + %"$gascmp_977" = icmp ugt i64 1, %"$gasrem_976" + br i1 %"$gascmp_977", label %"$out_of_gas_978", label %"$have_gas_979" + +"$out_of_gas_978": ; preds = %"$have_gas_968" + call void @_out_of_gas() + br label %"$have_gas_979" + +"$have_gas_979": ; preds = %"$out_of_gas_978", %"$have_gas_968" + %"$consume_980" = sub i64 %"$gasrem_976", 1 + store i64 %"$consume_980", i64* @_gasrem %b = alloca %Uint32 + %"$gasrem_981" = load i64, i64* @_gasrem + %"$gascmp_982" = icmp ugt i64 1, %"$gasrem_981" + br i1 %"$gascmp_982", label %"$out_of_gas_983", label %"$have_gas_984" + +"$out_of_gas_983": ; preds = %"$have_gas_979" + call void @_out_of_gas() + br label %"$have_gas_984" + +"$have_gas_984": ; preds = %"$out_of_gas_983", %"$have_gas_979" + %"$consume_985" = sub i64 %"$gasrem_981", 1 + store i64 %"$consume_985", i64* @_gasrem %"$f_bystr20_11" = alloca %Uint32 - %"$f_bystr20_581" = load { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }, { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %f_bystr20 - %"$f_bystr20_fptr_582" = extractvalue { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$f_bystr20_581", 0 - %"$f_bystr20_envptr_583" = extractvalue { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$f_bystr20_581", 1 - %"$nil_bystr20_584" = load %TName_List_ByStr20*, %TName_List_ByStr20** %nil_bystr20 - %"$f_bystr20_call_585" = call %Uint32 %"$f_bystr20_fptr_582"(i8* %"$f_bystr20_envptr_583", %TName_List_ByStr20* %"$nil_bystr20_584") - store %Uint32 %"$f_bystr20_call_585", %Uint32* %"$f_bystr20_11" - %"$$f_bystr20_11_586" = load %Uint32, %Uint32* %"$f_bystr20_11" - store %Uint32 %"$$f_bystr20_11_586", %Uint32* %b - %"$a_587" = load %Uint32, %Uint32* %a - %"$b_588" = load %Uint32, %Uint32* %b - %"$add_call_589" = call %Uint32 @_add_Uint32(%Uint32 %"$a_587", %Uint32 %"$b_588") - store %Uint32 %"$add_call_589", %Uint32* %"$expr_44" - %"$$expr_44_590" = load %Uint32, %Uint32* %"$expr_44" - ret %Uint32 %"$$expr_44_590" + %"$f_bystr20_986" = load { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }, { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* }* %f_bystr20 + %"$f_bystr20_fptr_987" = extractvalue { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$f_bystr20_986", 0 + %"$f_bystr20_envptr_988" = extractvalue { %Uint32 (i8*, %TName_List_ByStr20*)*, i8* } %"$f_bystr20_986", 1 + %"$nil_bystr20_989" = load %TName_List_ByStr20*, %TName_List_ByStr20** %nil_bystr20 + %"$f_bystr20_call_990" = call %Uint32 %"$f_bystr20_fptr_987"(i8* %"$f_bystr20_envptr_988", %TName_List_ByStr20* %"$nil_bystr20_989") + store %Uint32 %"$f_bystr20_call_990", %Uint32* %"$f_bystr20_11" + %"$$f_bystr20_11_991" = load %Uint32, %Uint32* %"$f_bystr20_11" + store %Uint32 %"$$f_bystr20_11_991", %Uint32* %b + %"$a_992" = load %Uint32, %Uint32* %a + %"$b_993" = load %Uint32, %Uint32* %b + %"$add_call_994" = call %Uint32 @_add_Uint32(%Uint32 %"$a_992", %Uint32 %"$b_993") + store %Uint32 %"$add_call_994", %Uint32* %"$expr_44" + %"$$expr_44_995" = load %Uint32, %Uint32* %"$expr_44" + ret %Uint32 %"$$expr_44_995" } declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_591" = call %Uint32 @"$scilla_expr_493"(i8* null) - %"$pval_592" = alloca %Uint32 - %"$memvoidcast_593" = bitcast %Uint32* %"$pval_592" to i8* - store %Uint32 %"$exprval_591", %Uint32* %"$pval_592" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_63", i8* %"$memvoidcast_593") + %"$exprval_996" = call %Uint32 @"$scilla_expr_788"(i8* null) + %"$pval_997" = alloca %Uint32 + %"$memvoidcast_998" = bitcast %Uint32* %"$pval_997" to i8* + store %Uint32 %"$exprval_996", %Uint32* %"$pval_997" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_63", i8* %"$memvoidcast_998") ret void } diff --git a/testsuite/expr/nonprenex.ll.result b/testsuite/expr/nonprenex.ll.result index 044c00cd..1691d467 100644 --- a/testsuite/expr/nonprenex.ll.result +++ b/testsuite/expr/nonprenex.ll.result @@ -1 +1,2 @@ 4 : Uint32 +Gas remaining: 9999925 diff --git a/testsuite/expr/pm1.ll b/testsuite/expr/pm1.ll index 16d885fa..a017c3f6 100644 --- a/testsuite/expr/pm1.ll +++ b/testsuite/expr/pm1.ll @@ -26,6 +26,7 @@ target triple = "x86_64-pc-linux-gnu" %CName_False = type <{ i8 }> @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_6" = global %"$TyDescrTy_PrimTyp_5" zeroinitializer @"$TyDescr_Int32_7" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_5"* @"$TyDescr_Int32_Prim_6" to i8*) } @"$TyDescr_Uint32_Prim_8" = global %"$TyDescrTy_PrimTyp_5" { i32 1, i32 0 } @@ -79,75 +80,209 @@ entry: %y = alloca %Int32 store %Int32 %"$y_envload_55", %Int32* %y %"$retval_4" = alloca %Int32 - %"$c_tag_58" = getelementptr inbounds %TName_Bool, %TName_Bool* %1, i32 0, i32 0 - %"$c_tag_59" = load i8, i8* %"$c_tag_58" - switch i8 %"$c_tag_59", label %"$default_60" [ - i8 0, label %"$True_61" + %"$gasrem_56" = load i64, i64* @_gasrem + %"$gascmp_57" = icmp ugt i64 2, %"$gasrem_56" + br i1 %"$gascmp_57", label %"$out_of_gas_58", label %"$have_gas_59" + +"$out_of_gas_58": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_59" + +"$have_gas_59": ; preds = %"$out_of_gas_58", %entry + %"$consume_60" = sub i64 %"$gasrem_56", 2 + store i64 %"$consume_60", i64* @_gasrem + %"$c_tag_68" = getelementptr inbounds %TName_Bool, %TName_Bool* %1, i32 0, i32 0 + %"$c_tag_69" = load i8, i8* %"$c_tag_68" + switch i8 %"$c_tag_69", label %"$default_70" [ + i8 0, label %"$True_71" ] -"$True_61": ; preds = %entry - %"$c_62" = bitcast %TName_Bool* %1 to %CName_True* - %"$x_63" = load %Int32, %Int32* %x - store %Int32 %"$x_63", %Int32* %"$retval_4" - br label %"$matchsucc_56" +"$True_71": ; preds = %"$have_gas_59" + %"$c_72" = bitcast %TName_Bool* %1 to %CName_True* + %"$gasrem_73" = load i64, i64* @_gasrem + %"$gascmp_74" = icmp ugt i64 1, %"$gasrem_73" + br i1 %"$gascmp_74", label %"$out_of_gas_75", label %"$have_gas_76" + +"$out_of_gas_75": ; preds = %"$True_71" + call void @_out_of_gas() + br label %"$have_gas_76" + +"$have_gas_76": ; preds = %"$out_of_gas_75", %"$True_71" + %"$consume_77" = sub i64 %"$gasrem_73", 1 + store i64 %"$consume_77", i64* @_gasrem + %"$x_78" = load %Int32, %Int32* %x + store %Int32 %"$x_78", %Int32* %"$retval_4" + br label %"$matchsucc_61" -"$default_60": ; preds = %entry +"$default_70": ; preds = %"$have_gas_59" br label %"$joinp_0" -"$joinp_0": ; preds = %"$default_60" - %"$y_57" = load %Int32, %Int32* %y - store %Int32 %"$y_57", %Int32* %"$retval_4" - br label %"$matchsucc_56" +"$joinp_0": ; preds = %"$default_70" + %"$gasrem_62" = load i64, i64* @_gasrem + %"$gascmp_63" = icmp ugt i64 1, %"$gasrem_62" + br i1 %"$gascmp_63", label %"$out_of_gas_64", label %"$have_gas_65" -"$matchsucc_56": ; preds = %"$True_61", %"$joinp_0" - %"$$retval_4_64" = load %Int32, %Int32* %"$retval_4" - ret %Int32 %"$$retval_4_64" +"$out_of_gas_64": ; preds = %"$joinp_0" + call void @_out_of_gas() + br label %"$have_gas_65" + +"$have_gas_65": ; preds = %"$out_of_gas_64", %"$joinp_0" + %"$consume_66" = sub i64 %"$gasrem_62", 1 + store i64 %"$consume_66", i64* @_gasrem + %"$y_67" = load %Int32, %Int32* %y + store %Int32 %"$y_67", %Int32* %"$retval_4" + br label %"$matchsucc_61" + +"$matchsucc_61": ; preds = %"$have_gas_76", %"$have_gas_65" + %"$$retval_4_79" = load %Int32, %Int32* %"$retval_4" + ret %Int32 %"$$retval_4_79" } +declare void @_out_of_gas() + define void @_init_libs() { entry: ret void } -define internal %Int32 @"$scilla_expr_65"(i8* %0) { +define internal %Int32 @"$scilla_expr_80"(i8* %0) { entry: %"$expr_2" = alloca %Int32 + %"$gasrem_81" = load i64, i64* @_gasrem + %"$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 %x = alloca %Int32 + %"$gasrem_86" = load i64, i64* @_gasrem + %"$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 store %Int32 { i32 42 }, %Int32* %x + %"$gasrem_91" = load i64, i64* @_gasrem + %"$gascmp_92" = icmp ugt i64 1, %"$gasrem_91" + br i1 %"$gascmp_92", label %"$out_of_gas_93", label %"$have_gas_94" + +"$out_of_gas_93": ; preds = %"$have_gas_89" + call void @_out_of_gas() + br label %"$have_gas_94" + +"$have_gas_94": ; preds = %"$out_of_gas_93", %"$have_gas_89" + %"$consume_95" = sub i64 %"$gasrem_91", 1 + store i64 %"$consume_95", i64* @_gasrem %y = alloca %Int32 + %"$gasrem_96" = load i64, i64* @_gasrem + %"$gascmp_97" = icmp ugt i64 1, %"$gasrem_96" + br i1 %"$gascmp_97", label %"$out_of_gas_98", label %"$have_gas_99" + +"$out_of_gas_98": ; preds = %"$have_gas_94" + call void @_out_of_gas() + br label %"$have_gas_99" + +"$have_gas_99": ; preds = %"$out_of_gas_98", %"$have_gas_94" + %"$consume_100" = sub i64 %"$gasrem_96", 1 + store i64 %"$consume_100", i64* @_gasrem store %Int32 { i32 41 }, %Int32* %y + %"$gasrem_101" = load i64, i64* @_gasrem + %"$gascmp_102" = icmp ugt i64 1, %"$gasrem_101" + br i1 %"$gascmp_102", label %"$out_of_gas_103", label %"$have_gas_104" + +"$out_of_gas_103": ; preds = %"$have_gas_99" + call void @_out_of_gas() + br label %"$have_gas_104" + +"$have_gas_104": ; preds = %"$out_of_gas_103", %"$have_gas_99" + %"$consume_105" = sub i64 %"$gasrem_101", 1 + store i64 %"$consume_105", i64* @_gasrem %f = alloca { %Int32 (i8*, %TName_Bool*)*, i8* } - %"$$fundef_3_envp_66_load" = load i8*, i8** @_execptr - %"$$fundef_3_envp_66_salloc" = call i8* @_salloc(i8* %"$$fundef_3_envp_66_load", i64 8) - %"$$fundef_3_envp_66" = bitcast i8* %"$$fundef_3_envp_66_salloc" to %"$$fundef_3_env_51"* - %"$$fundef_3_env_voidp_68" = bitcast %"$$fundef_3_env_51"* %"$$fundef_3_envp_66" to i8* - %"$$fundef_3_cloval_69" = insertvalue { %Int32 (i8*, %TName_Bool*)*, i8* } { %Int32 (i8*, %TName_Bool*)* bitcast (%Int32 (%"$$fundef_3_env_51"*, %TName_Bool*)* @"$fundef_3" to %Int32 (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_3_env_voidp_68", 1 - %"$$fundef_3_env_x_70" = getelementptr inbounds %"$$fundef_3_env_51", %"$$fundef_3_env_51"* %"$$fundef_3_envp_66", i32 0, i32 0 - %"$x_71" = load %Int32, %Int32* %x - store %Int32 %"$x_71", %Int32* %"$$fundef_3_env_x_70" - %"$$fundef_3_env_y_72" = getelementptr inbounds %"$$fundef_3_env_51", %"$$fundef_3_env_51"* %"$$fundef_3_envp_66", i32 0, i32 1 - %"$y_73" = load %Int32, %Int32* %y - store %Int32 %"$y_73", %Int32* %"$$fundef_3_env_y_72" - store { %Int32 (i8*, %TName_Bool*)*, i8* } %"$$fundef_3_cloval_69", { %Int32 (i8*, %TName_Bool*)*, i8* }* %f + %"$gasrem_106" = load i64, i64* @_gasrem + %"$gascmp_107" = icmp ugt i64 1, %"$gasrem_106" + br i1 %"$gascmp_107", label %"$out_of_gas_108", label %"$have_gas_109" + +"$out_of_gas_108": ; preds = %"$have_gas_104" + call void @_out_of_gas() + br label %"$have_gas_109" + +"$have_gas_109": ; preds = %"$out_of_gas_108", %"$have_gas_104" + %"$consume_110" = sub i64 %"$gasrem_106", 1 + store i64 %"$consume_110", i64* @_gasrem + %"$$fundef_3_envp_111_load" = load i8*, i8** @_execptr + %"$$fundef_3_envp_111_salloc" = call i8* @_salloc(i8* %"$$fundef_3_envp_111_load", i64 8) + %"$$fundef_3_envp_111" = bitcast i8* %"$$fundef_3_envp_111_salloc" to %"$$fundef_3_env_51"* + %"$$fundef_3_env_voidp_113" = bitcast %"$$fundef_3_env_51"* %"$$fundef_3_envp_111" to i8* + %"$$fundef_3_cloval_114" = insertvalue { %Int32 (i8*, %TName_Bool*)*, i8* } { %Int32 (i8*, %TName_Bool*)* bitcast (%Int32 (%"$$fundef_3_env_51"*, %TName_Bool*)* @"$fundef_3" to %Int32 (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_3_env_voidp_113", 1 + %"$$fundef_3_env_x_115" = getelementptr inbounds %"$$fundef_3_env_51", %"$$fundef_3_env_51"* %"$$fundef_3_envp_111", i32 0, i32 0 + %"$x_116" = load %Int32, %Int32* %x + store %Int32 %"$x_116", %Int32* %"$$fundef_3_env_x_115" + %"$$fundef_3_env_y_117" = getelementptr inbounds %"$$fundef_3_env_51", %"$$fundef_3_env_51"* %"$$fundef_3_envp_111", i32 0, i32 1 + %"$y_118" = load %Int32, %Int32* %y + store %Int32 %"$y_118", %Int32* %"$$fundef_3_env_y_117" + store { %Int32 (i8*, %TName_Bool*)*, i8* } %"$$fundef_3_cloval_114", { %Int32 (i8*, %TName_Bool*)*, i8* }* %f + %"$gasrem_119" = load i64, i64* @_gasrem + %"$gascmp_120" = icmp ugt i64 1, %"$gasrem_119" + br i1 %"$gascmp_120", label %"$out_of_gas_121", label %"$have_gas_122" + +"$out_of_gas_121": ; preds = %"$have_gas_109" + call void @_out_of_gas() + br label %"$have_gas_122" + +"$have_gas_122": ; preds = %"$out_of_gas_121", %"$have_gas_109" + %"$consume_123" = sub i64 %"$gasrem_119", 1 + store i64 %"$consume_123", i64* @_gasrem %t = alloca %TName_Bool* - %"$adtval_74_load" = load i8*, i8** @_execptr - %"$adtval_74_salloc" = call i8* @_salloc(i8* %"$adtval_74_load", i64 1) - %"$adtval_74" = bitcast i8* %"$adtval_74_salloc" to %CName_True* - %"$adtgep_75" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_74", i32 0, i32 0 - store i8 0, i8* %"$adtgep_75" - %"$adtptr_76" = bitcast %CName_True* %"$adtval_74" to %TName_Bool* - store %TName_Bool* %"$adtptr_76", %TName_Bool** %t + %"$gasrem_124" = load i64, i64* @_gasrem + %"$gascmp_125" = icmp ugt i64 1, %"$gasrem_124" + br i1 %"$gascmp_125", label %"$out_of_gas_126", label %"$have_gas_127" + +"$out_of_gas_126": ; preds = %"$have_gas_122" + call void @_out_of_gas() + br label %"$have_gas_127" + +"$have_gas_127": ; preds = %"$out_of_gas_126", %"$have_gas_122" + %"$consume_128" = sub i64 %"$gasrem_124", 1 + store i64 %"$consume_128", i64* @_gasrem + %"$adtval_129_load" = load i8*, i8** @_execptr + %"$adtval_129_salloc" = call i8* @_salloc(i8* %"$adtval_129_load", i64 1) + %"$adtval_129" = bitcast i8* %"$adtval_129_salloc" to %CName_True* + %"$adtgep_130" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_129", i32 0, i32 0 + store i8 0, i8* %"$adtgep_130" + %"$adtptr_131" = bitcast %CName_True* %"$adtval_129" to %TName_Bool* + store %TName_Bool* %"$adtptr_131", %TName_Bool** %t + %"$gasrem_132" = load i64, i64* @_gasrem + %"$gascmp_133" = icmp ugt i64 1, %"$gasrem_132" + br i1 %"$gascmp_133", label %"$out_of_gas_134", label %"$have_gas_135" + +"$out_of_gas_134": ; preds = %"$have_gas_127" + call void @_out_of_gas() + br label %"$have_gas_135" + +"$have_gas_135": ; preds = %"$out_of_gas_134", %"$have_gas_127" + %"$consume_136" = sub i64 %"$gasrem_132", 1 + store i64 %"$consume_136", i64* @_gasrem %"$f_1" = alloca %Int32 - %"$f_77" = load { %Int32 (i8*, %TName_Bool*)*, i8* }, { %Int32 (i8*, %TName_Bool*)*, i8* }* %f - %"$f_fptr_78" = extractvalue { %Int32 (i8*, %TName_Bool*)*, i8* } %"$f_77", 0 - %"$f_envptr_79" = extractvalue { %Int32 (i8*, %TName_Bool*)*, i8* } %"$f_77", 1 - %"$t_80" = load %TName_Bool*, %TName_Bool** %t - %"$f_call_81" = call %Int32 %"$f_fptr_78"(i8* %"$f_envptr_79", %TName_Bool* %"$t_80") - store %Int32 %"$f_call_81", %Int32* %"$f_1" - %"$$f_1_82" = load %Int32, %Int32* %"$f_1" - store %Int32 %"$$f_1_82", %Int32* %"$expr_2" - %"$$expr_2_83" = load %Int32, %Int32* %"$expr_2" - ret %Int32 %"$$expr_2_83" + %"$f_137" = load { %Int32 (i8*, %TName_Bool*)*, i8* }, { %Int32 (i8*, %TName_Bool*)*, i8* }* %f + %"$f_fptr_138" = extractvalue { %Int32 (i8*, %TName_Bool*)*, i8* } %"$f_137", 0 + %"$f_envptr_139" = extractvalue { %Int32 (i8*, %TName_Bool*)*, i8* } %"$f_137", 1 + %"$t_140" = load %TName_Bool*, %TName_Bool** %t + %"$f_call_141" = call %Int32 %"$f_fptr_138"(i8* %"$f_envptr_139", %TName_Bool* %"$t_140") + store %Int32 %"$f_call_141", %Int32* %"$f_1" + %"$$f_1_142" = load %Int32, %Int32* %"$f_1" + store %Int32 %"$$f_1_142", %Int32* %"$expr_2" + %"$$expr_2_143" = load %Int32, %Int32* %"$expr_2" + ret %Int32 %"$$expr_2_143" } declare i8* @_salloc(i8*, i64) @@ -156,10 +291,10 @@ declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_84" = call %Int32 @"$scilla_expr_65"(i8* null) - %"$pval_85" = alloca %Int32 - %"$memvoidcast_86" = bitcast %Int32* %"$pval_85" to i8* - store %Int32 %"$exprval_84", %Int32* %"$pval_85" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_7", i8* %"$memvoidcast_86") + %"$exprval_144" = call %Int32 @"$scilla_expr_80"(i8* null) + %"$pval_145" = alloca %Int32 + %"$memvoidcast_146" = bitcast %Int32* %"$pval_145" to i8* + store %Int32 %"$exprval_144", %Int32* %"$pval_145" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_7", i8* %"$memvoidcast_146") ret void } diff --git a/testsuite/expr/pm1.ll.result b/testsuite/expr/pm1.ll.result index 5aa23579..4e511239 100644 --- a/testsuite/expr/pm1.ll.result +++ b/testsuite/expr/pm1.ll.result @@ -1 +1,2 @@ 42 : Int32 +Gas remaining: 9999988 diff --git a/testsuite/expr/pm2.ll b/testsuite/expr/pm2.ll index 4b877f3c..ced8d00b 100644 --- a/testsuite/expr/pm2.ll +++ b/testsuite/expr/pm2.ll @@ -32,6 +32,7 @@ target triple = "x86_64-pc-linux-gnu" %"CName_None_Option_(Int32)" = type <{ i8 }> @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_6" = global %"$TyDescrTy_PrimTyp_5" zeroinitializer @"$TyDescr_Int32_7" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_5"* @"$TyDescr_Int32_Prim_6" to i8*) } @"$TyDescr_Uint32_Prim_8" = global %"$TyDescrTy_PrimTyp_5" { i32 1, i32 0 } @@ -95,121 +96,288 @@ entry: %y = alloca %Int32 store %Int32 %"$y_envload_65", %Int32* %y %"$retval_4" = alloca %Int32 - %"$o_tag_67" = getelementptr inbounds %"TName_Option_Option_(Int32)", %"TName_Option_Option_(Int32)"* %1, i32 0, i32 0 - %"$o_tag_68" = load i8, i8* %"$o_tag_67" - switch i8 %"$o_tag_68", label %"$empty_default_69" [ - i8 1, label %"$None_70" - i8 0, label %"$Some_73" + %"$gasrem_66" = load i64, i64* @_gasrem + %"$gascmp_67" = icmp ugt i64 3, %"$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", 3 + store i64 %"$consume_70", i64* @_gasrem + %"$o_tag_72" = getelementptr inbounds %"TName_Option_Option_(Int32)", %"TName_Option_Option_(Int32)"* %1, i32 0, i32 0 + %"$o_tag_73" = load i8, i8* %"$o_tag_72" + switch i8 %"$o_tag_73", label %"$empty_default_74" [ + i8 1, label %"$None_75" + i8 0, label %"$Some_83" ] -"$None_70": ; preds = %entry - %"$o_71" = bitcast %"TName_Option_Option_(Int32)"* %1 to %"CName_None_Option_(Int32)"* - %"$x_72" = load %Int32, %Int32* %x - store %Int32 %"$x_72", %Int32* %"$retval_4" - br label %"$matchsucc_66" +"$None_75": ; preds = %"$have_gas_69" + %"$o_76" = bitcast %"TName_Option_Option_(Int32)"* %1 to %"CName_None_Option_(Int32)"* + %"$gasrem_77" = load i64, i64* @_gasrem + %"$gascmp_78" = icmp ugt i64 1, %"$gasrem_77" + br i1 %"$gascmp_78", label %"$out_of_gas_79", label %"$have_gas_80" + +"$out_of_gas_79": ; preds = %"$None_75" + call void @_out_of_gas() + br label %"$have_gas_80" -"$Some_73": ; preds = %entry - %"$o_74" = bitcast %"TName_Option_Option_(Int32)"* %1 to %"CName_Some_Option_(Int32)"* - %"$$o_0_gep_75" = getelementptr inbounds %"CName_Some_Option_(Int32)", %"CName_Some_Option_(Int32)"* %"$o_74", i32 0, i32 1 - %"$$o_0_load_76" = load %TName_Option_Int32*, %TName_Option_Int32** %"$$o_0_gep_75" +"$have_gas_80": ; preds = %"$out_of_gas_79", %"$None_75" + %"$consume_81" = sub i64 %"$gasrem_77", 1 + store i64 %"$consume_81", i64* @_gasrem + %"$x_82" = load %Int32, %Int32* %x + store %Int32 %"$x_82", %Int32* %"$retval_4" + br label %"$matchsucc_71" + +"$Some_83": ; preds = %"$have_gas_69" + %"$o_84" = bitcast %"TName_Option_Option_(Int32)"* %1 to %"CName_Some_Option_(Int32)"* + %"$$o_0_gep_85" = getelementptr inbounds %"CName_Some_Option_(Int32)", %"CName_Some_Option_(Int32)"* %"$o_84", i32 0, i32 1 + %"$$o_0_load_86" = load %TName_Option_Int32*, %TName_Option_Int32** %"$$o_0_gep_85" %"$o_0" = alloca %TName_Option_Int32* - store %TName_Option_Int32* %"$$o_0_load_76", %TName_Option_Int32** %"$o_0" - %"$$o_0_78" = load %TName_Option_Int32*, %TName_Option_Int32** %"$o_0" - %"$$o_0_tag_79" = getelementptr inbounds %TName_Option_Int32, %TName_Option_Int32* %"$$o_0_78", i32 0, i32 0 - %"$$o_0_tag_80" = load i8, i8* %"$$o_0_tag_79" - switch i8 %"$$o_0_tag_80", label %"$empty_default_81" [ - i8 1, label %"$None_82" - i8 0, label %"$Some_85" + store %TName_Option_Int32* %"$$o_0_load_86", %TName_Option_Int32** %"$o_0" + %"$$o_0_88" = load %TName_Option_Int32*, %TName_Option_Int32** %"$o_0" + %"$$o_0_tag_89" = getelementptr inbounds %TName_Option_Int32, %TName_Option_Int32* %"$$o_0_88", i32 0, i32 0 + %"$$o_0_tag_90" = load i8, i8* %"$$o_0_tag_89" + switch i8 %"$$o_0_tag_90", label %"$empty_default_91" [ + i8 1, label %"$None_92" + i8 0, label %"$Some_100" ] -"$None_82": ; preds = %"$Some_73" - %"$$o_0_83" = bitcast %TName_Option_Int32* %"$$o_0_78" to %CName_None_Int32* - %"$y_84" = load %Int32, %Int32* %y - store %Int32 %"$y_84", %Int32* %"$retval_4" - br label %"$matchsucc_77" +"$None_92": ; preds = %"$Some_83" + %"$$o_0_93" = bitcast %TName_Option_Int32* %"$$o_0_88" to %CName_None_Int32* + %"$gasrem_94" = load i64, i64* @_gasrem + %"$gascmp_95" = icmp ugt i64 1, %"$gasrem_94" + br i1 %"$gascmp_95", label %"$out_of_gas_96", label %"$have_gas_97" + +"$out_of_gas_96": ; preds = %"$None_92" + call void @_out_of_gas() + br label %"$have_gas_97" -"$Some_85": ; preds = %"$Some_73" - %"$$o_0_86" = bitcast %TName_Option_Int32* %"$$o_0_78" to %CName_Some_Int32* - %"$z_gep_87" = getelementptr inbounds %CName_Some_Int32, %CName_Some_Int32* %"$$o_0_86", i32 0, i32 1 - %"$z_load_88" = load %Int32, %Int32* %"$z_gep_87" +"$have_gas_97": ; preds = %"$out_of_gas_96", %"$None_92" + %"$consume_98" = sub i64 %"$gasrem_94", 1 + store i64 %"$consume_98", i64* @_gasrem + %"$y_99" = load %Int32, %Int32* %y + store %Int32 %"$y_99", %Int32* %"$retval_4" + br label %"$matchsucc_87" + +"$Some_100": ; preds = %"$Some_83" + %"$$o_0_101" = bitcast %TName_Option_Int32* %"$$o_0_88" to %CName_Some_Int32* + %"$z_gep_102" = getelementptr inbounds %CName_Some_Int32, %CName_Some_Int32* %"$$o_0_101", i32 0, i32 1 + %"$z_load_103" = load %Int32, %Int32* %"$z_gep_102" %z = alloca %Int32 - store %Int32 %"$z_load_88", %Int32* %z - %"$z_89" = load %Int32, %Int32* %z - store %Int32 %"$z_89", %Int32* %"$retval_4" - br label %"$matchsucc_77" + store %Int32 %"$z_load_103", %Int32* %z + %"$gasrem_104" = load i64, i64* @_gasrem + %"$gascmp_105" = icmp ugt i64 1, %"$gasrem_104" + br i1 %"$gascmp_105", label %"$out_of_gas_106", label %"$have_gas_107" + +"$out_of_gas_106": ; preds = %"$Some_100" + call void @_out_of_gas() + br label %"$have_gas_107" + +"$have_gas_107": ; preds = %"$out_of_gas_106", %"$Some_100" + %"$consume_108" = sub i64 %"$gasrem_104", 1 + store i64 %"$consume_108", i64* @_gasrem + %"$z_109" = load %Int32, %Int32* %z + store %Int32 %"$z_109", %Int32* %"$retval_4" + br label %"$matchsucc_87" -"$empty_default_81": ; preds = %"$Some_73" - br label %"$matchsucc_77" +"$empty_default_91": ; preds = %"$Some_83" + br label %"$matchsucc_87" -"$matchsucc_77": ; preds = %"$Some_85", %"$None_82", %"$empty_default_81" - br label %"$matchsucc_66" +"$matchsucc_87": ; preds = %"$have_gas_107", %"$have_gas_97", %"$empty_default_91" + br label %"$matchsucc_71" -"$empty_default_69": ; preds = %entry - br label %"$matchsucc_66" +"$empty_default_74": ; preds = %"$have_gas_69" + br label %"$matchsucc_71" -"$matchsucc_66": ; preds = %"$matchsucc_77", %"$None_70", %"$empty_default_69" - %"$$retval_4_90" = load %Int32, %Int32* %"$retval_4" - ret %Int32 %"$$retval_4_90" +"$matchsucc_71": ; preds = %"$matchsucc_87", %"$have_gas_80", %"$empty_default_74" + %"$$retval_4_110" = load %Int32, %Int32* %"$retval_4" + ret %Int32 %"$$retval_4_110" } +declare void @_out_of_gas() + define void @_init_libs() { entry: ret void } -define internal %Int32 @"$scilla_expr_91"(i8* %0) { +define internal %Int32 @"$scilla_expr_111"(i8* %0) { entry: %"$expr_2" = alloca %Int32 + %"$gasrem_112" = load i64, i64* @_gasrem + %"$gascmp_113" = icmp ugt i64 1, %"$gasrem_112" + br i1 %"$gascmp_113", label %"$out_of_gas_114", label %"$have_gas_115" + +"$out_of_gas_114": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_115" + +"$have_gas_115": ; preds = %"$out_of_gas_114", %entry + %"$consume_116" = sub i64 %"$gasrem_112", 1 + store i64 %"$consume_116", i64* @_gasrem %x = alloca %Int32 + %"$gasrem_117" = load i64, i64* @_gasrem + %"$gascmp_118" = icmp ugt i64 1, %"$gasrem_117" + br i1 %"$gascmp_118", label %"$out_of_gas_119", label %"$have_gas_120" + +"$out_of_gas_119": ; preds = %"$have_gas_115" + call void @_out_of_gas() + br label %"$have_gas_120" + +"$have_gas_120": ; preds = %"$out_of_gas_119", %"$have_gas_115" + %"$consume_121" = sub i64 %"$gasrem_117", 1 + store i64 %"$consume_121", i64* @_gasrem store %Int32 { i32 42 }, %Int32* %x + %"$gasrem_122" = load i64, i64* @_gasrem + %"$gascmp_123" = icmp ugt i64 1, %"$gasrem_122" + br i1 %"$gascmp_123", label %"$out_of_gas_124", label %"$have_gas_125" + +"$out_of_gas_124": ; preds = %"$have_gas_120" + call void @_out_of_gas() + br label %"$have_gas_125" + +"$have_gas_125": ; preds = %"$out_of_gas_124", %"$have_gas_120" + %"$consume_126" = sub i64 %"$gasrem_122", 1 + store i64 %"$consume_126", i64* @_gasrem %y = alloca %Int32 + %"$gasrem_127" = load i64, i64* @_gasrem + %"$gascmp_128" = icmp ugt i64 1, %"$gasrem_127" + br i1 %"$gascmp_128", label %"$out_of_gas_129", label %"$have_gas_130" + +"$out_of_gas_129": ; preds = %"$have_gas_125" + call void @_out_of_gas() + br label %"$have_gas_130" + +"$have_gas_130": ; preds = %"$out_of_gas_129", %"$have_gas_125" + %"$consume_131" = sub i64 %"$gasrem_127", 1 + store i64 %"$consume_131", i64* @_gasrem store %Int32 { i32 41 }, %Int32* %y + %"$gasrem_132" = load i64, i64* @_gasrem + %"$gascmp_133" = icmp ugt i64 1, %"$gasrem_132" + br i1 %"$gascmp_133", label %"$out_of_gas_134", label %"$have_gas_135" + +"$out_of_gas_134": ; preds = %"$have_gas_130" + call void @_out_of_gas() + br label %"$have_gas_135" + +"$have_gas_135": ; preds = %"$out_of_gas_134", %"$have_gas_130" + %"$consume_136" = sub i64 %"$gasrem_132", 1 + store i64 %"$consume_136", i64* @_gasrem %f = alloca { %Int32 (i8*, %"TName_Option_Option_(Int32)"*)*, i8* } - %"$$fundef_3_envp_92_load" = load i8*, i8** @_execptr - %"$$fundef_3_envp_92_salloc" = call i8* @_salloc(i8* %"$$fundef_3_envp_92_load", i64 8) - %"$$fundef_3_envp_92" = bitcast i8* %"$$fundef_3_envp_92_salloc" to %"$$fundef_3_env_61"* - %"$$fundef_3_env_voidp_94" = bitcast %"$$fundef_3_env_61"* %"$$fundef_3_envp_92" to i8* - %"$$fundef_3_cloval_95" = insertvalue { %Int32 (i8*, %"TName_Option_Option_(Int32)"*)*, i8* } { %Int32 (i8*, %"TName_Option_Option_(Int32)"*)* bitcast (%Int32 (%"$$fundef_3_env_61"*, %"TName_Option_Option_(Int32)"*)* @"$fundef_3" to %Int32 (i8*, %"TName_Option_Option_(Int32)"*)*), i8* undef }, i8* %"$$fundef_3_env_voidp_94", 1 - %"$$fundef_3_env_x_96" = getelementptr inbounds %"$$fundef_3_env_61", %"$$fundef_3_env_61"* %"$$fundef_3_envp_92", i32 0, i32 0 - %"$x_97" = load %Int32, %Int32* %x - store %Int32 %"$x_97", %Int32* %"$$fundef_3_env_x_96" - %"$$fundef_3_env_y_98" = getelementptr inbounds %"$$fundef_3_env_61", %"$$fundef_3_env_61"* %"$$fundef_3_envp_92", i32 0, i32 1 - %"$y_99" = load %Int32, %Int32* %y - store %Int32 %"$y_99", %Int32* %"$$fundef_3_env_y_98" - store { %Int32 (i8*, %"TName_Option_Option_(Int32)"*)*, i8* } %"$$fundef_3_cloval_95", { %Int32 (i8*, %"TName_Option_Option_(Int32)"*)*, i8* }* %f + %"$gasrem_137" = load i64, i64* @_gasrem + %"$gascmp_138" = icmp ugt i64 1, %"$gasrem_137" + br i1 %"$gascmp_138", label %"$out_of_gas_139", label %"$have_gas_140" + +"$out_of_gas_139": ; preds = %"$have_gas_135" + call void @_out_of_gas() + br label %"$have_gas_140" + +"$have_gas_140": ; preds = %"$out_of_gas_139", %"$have_gas_135" + %"$consume_141" = sub i64 %"$gasrem_137", 1 + store i64 %"$consume_141", i64* @_gasrem + %"$$fundef_3_envp_142_load" = load i8*, i8** @_execptr + %"$$fundef_3_envp_142_salloc" = call i8* @_salloc(i8* %"$$fundef_3_envp_142_load", i64 8) + %"$$fundef_3_envp_142" = bitcast i8* %"$$fundef_3_envp_142_salloc" to %"$$fundef_3_env_61"* + %"$$fundef_3_env_voidp_144" = bitcast %"$$fundef_3_env_61"* %"$$fundef_3_envp_142" to i8* + %"$$fundef_3_cloval_145" = insertvalue { %Int32 (i8*, %"TName_Option_Option_(Int32)"*)*, i8* } { %Int32 (i8*, %"TName_Option_Option_(Int32)"*)* bitcast (%Int32 (%"$$fundef_3_env_61"*, %"TName_Option_Option_(Int32)"*)* @"$fundef_3" to %Int32 (i8*, %"TName_Option_Option_(Int32)"*)*), i8* undef }, i8* %"$$fundef_3_env_voidp_144", 1 + %"$$fundef_3_env_x_146" = getelementptr inbounds %"$$fundef_3_env_61", %"$$fundef_3_env_61"* %"$$fundef_3_envp_142", i32 0, i32 0 + %"$x_147" = load %Int32, %Int32* %x + store %Int32 %"$x_147", %Int32* %"$$fundef_3_env_x_146" + %"$$fundef_3_env_y_148" = getelementptr inbounds %"$$fundef_3_env_61", %"$$fundef_3_env_61"* %"$$fundef_3_envp_142", i32 0, i32 1 + %"$y_149" = load %Int32, %Int32* %y + store %Int32 %"$y_149", %Int32* %"$$fundef_3_env_y_148" + store { %Int32 (i8*, %"TName_Option_Option_(Int32)"*)*, i8* } %"$$fundef_3_cloval_145", { %Int32 (i8*, %"TName_Option_Option_(Int32)"*)*, i8* }* %f + %"$gasrem_150" = load i64, i64* @_gasrem + %"$gascmp_151" = icmp ugt i64 1, %"$gasrem_150" + br i1 %"$gascmp_151", label %"$out_of_gas_152", label %"$have_gas_153" + +"$out_of_gas_152": ; preds = %"$have_gas_140" + call void @_out_of_gas() + br label %"$have_gas_153" + +"$have_gas_153": ; preds = %"$out_of_gas_152", %"$have_gas_140" + %"$consume_154" = sub i64 %"$gasrem_150", 1 + store i64 %"$consume_154", i64* @_gasrem %o1 = alloca %TName_Option_Int32* - %"$x_100" = load %Int32, %Int32* %x - %"$adtval_101_load" = load i8*, i8** @_execptr - %"$adtval_101_salloc" = call i8* @_salloc(i8* %"$adtval_101_load", i64 5) - %"$adtval_101" = bitcast i8* %"$adtval_101_salloc" to %CName_Some_Int32* - %"$adtgep_102" = getelementptr inbounds %CName_Some_Int32, %CName_Some_Int32* %"$adtval_101", i32 0, i32 0 - store i8 0, i8* %"$adtgep_102" - %"$adtgep_103" = getelementptr inbounds %CName_Some_Int32, %CName_Some_Int32* %"$adtval_101", i32 0, i32 1 - store %Int32 %"$x_100", %Int32* %"$adtgep_103" - %"$adtptr_104" = bitcast %CName_Some_Int32* %"$adtval_101" to %TName_Option_Int32* - store %TName_Option_Int32* %"$adtptr_104", %TName_Option_Int32** %o1 + %"$gasrem_155" = load i64, i64* @_gasrem + %"$gascmp_156" = icmp ugt i64 1, %"$gasrem_155" + br i1 %"$gascmp_156", label %"$out_of_gas_157", label %"$have_gas_158" + +"$out_of_gas_157": ; preds = %"$have_gas_153" + call void @_out_of_gas() + br label %"$have_gas_158" + +"$have_gas_158": ; preds = %"$out_of_gas_157", %"$have_gas_153" + %"$consume_159" = sub i64 %"$gasrem_155", 1 + store i64 %"$consume_159", i64* @_gasrem + %"$x_160" = load %Int32, %Int32* %x + %"$adtval_161_load" = load i8*, i8** @_execptr + %"$adtval_161_salloc" = call i8* @_salloc(i8* %"$adtval_161_load", i64 5) + %"$adtval_161" = bitcast i8* %"$adtval_161_salloc" to %CName_Some_Int32* + %"$adtgep_162" = getelementptr inbounds %CName_Some_Int32, %CName_Some_Int32* %"$adtval_161", i32 0, i32 0 + store i8 0, i8* %"$adtgep_162" + %"$adtgep_163" = getelementptr inbounds %CName_Some_Int32, %CName_Some_Int32* %"$adtval_161", i32 0, i32 1 + store %Int32 %"$x_160", %Int32* %"$adtgep_163" + %"$adtptr_164" = bitcast %CName_Some_Int32* %"$adtval_161" to %TName_Option_Int32* + store %TName_Option_Int32* %"$adtptr_164", %TName_Option_Int32** %o1 + %"$gasrem_165" = load i64, i64* @_gasrem + %"$gascmp_166" = icmp ugt i64 1, %"$gasrem_165" + br i1 %"$gascmp_166", label %"$out_of_gas_167", label %"$have_gas_168" + +"$out_of_gas_167": ; preds = %"$have_gas_158" + call void @_out_of_gas() + br label %"$have_gas_168" + +"$have_gas_168": ; preds = %"$out_of_gas_167", %"$have_gas_158" + %"$consume_169" = sub i64 %"$gasrem_165", 1 + store i64 %"$consume_169", i64* @_gasrem %o2 = alloca %"TName_Option_Option_(Int32)"* - %"$o1_105" = load %TName_Option_Int32*, %TName_Option_Int32** %o1 - %"$adtval_106_load" = load i8*, i8** @_execptr - %"$adtval_106_salloc" = call i8* @_salloc(i8* %"$adtval_106_load", i64 9) - %"$adtval_106" = bitcast i8* %"$adtval_106_salloc" to %"CName_Some_Option_(Int32)"* - %"$adtgep_107" = getelementptr inbounds %"CName_Some_Option_(Int32)", %"CName_Some_Option_(Int32)"* %"$adtval_106", i32 0, i32 0 - store i8 0, i8* %"$adtgep_107" - %"$adtgep_108" = getelementptr inbounds %"CName_Some_Option_(Int32)", %"CName_Some_Option_(Int32)"* %"$adtval_106", i32 0, i32 1 - store %TName_Option_Int32* %"$o1_105", %TName_Option_Int32** %"$adtgep_108" - %"$adtptr_109" = bitcast %"CName_Some_Option_(Int32)"* %"$adtval_106" to %"TName_Option_Option_(Int32)"* - store %"TName_Option_Option_(Int32)"* %"$adtptr_109", %"TName_Option_Option_(Int32)"** %o2 + %"$gasrem_170" = load i64, i64* @_gasrem + %"$gascmp_171" = icmp ugt i64 1, %"$gasrem_170" + br i1 %"$gascmp_171", label %"$out_of_gas_172", label %"$have_gas_173" + +"$out_of_gas_172": ; preds = %"$have_gas_168" + call void @_out_of_gas() + br label %"$have_gas_173" + +"$have_gas_173": ; preds = %"$out_of_gas_172", %"$have_gas_168" + %"$consume_174" = sub i64 %"$gasrem_170", 1 + store i64 %"$consume_174", i64* @_gasrem + %"$o1_175" = load %TName_Option_Int32*, %TName_Option_Int32** %o1 + %"$adtval_176_load" = load i8*, i8** @_execptr + %"$adtval_176_salloc" = call i8* @_salloc(i8* %"$adtval_176_load", i64 9) + %"$adtval_176" = bitcast i8* %"$adtval_176_salloc" to %"CName_Some_Option_(Int32)"* + %"$adtgep_177" = getelementptr inbounds %"CName_Some_Option_(Int32)", %"CName_Some_Option_(Int32)"* %"$adtval_176", i32 0, i32 0 + store i8 0, i8* %"$adtgep_177" + %"$adtgep_178" = getelementptr inbounds %"CName_Some_Option_(Int32)", %"CName_Some_Option_(Int32)"* %"$adtval_176", i32 0, i32 1 + store %TName_Option_Int32* %"$o1_175", %TName_Option_Int32** %"$adtgep_178" + %"$adtptr_179" = bitcast %"CName_Some_Option_(Int32)"* %"$adtval_176" to %"TName_Option_Option_(Int32)"* + store %"TName_Option_Option_(Int32)"* %"$adtptr_179", %"TName_Option_Option_(Int32)"** %o2 + %"$gasrem_180" = load i64, i64* @_gasrem + %"$gascmp_181" = icmp ugt i64 1, %"$gasrem_180" + br i1 %"$gascmp_181", label %"$out_of_gas_182", label %"$have_gas_183" + +"$out_of_gas_182": ; preds = %"$have_gas_173" + call void @_out_of_gas() + br label %"$have_gas_183" + +"$have_gas_183": ; preds = %"$out_of_gas_182", %"$have_gas_173" + %"$consume_184" = sub i64 %"$gasrem_180", 1 + store i64 %"$consume_184", i64* @_gasrem %"$f_1" = alloca %Int32 - %"$f_110" = load { %Int32 (i8*, %"TName_Option_Option_(Int32)"*)*, i8* }, { %Int32 (i8*, %"TName_Option_Option_(Int32)"*)*, i8* }* %f - %"$f_fptr_111" = extractvalue { %Int32 (i8*, %"TName_Option_Option_(Int32)"*)*, i8* } %"$f_110", 0 - %"$f_envptr_112" = extractvalue { %Int32 (i8*, %"TName_Option_Option_(Int32)"*)*, i8* } %"$f_110", 1 - %"$o2_113" = load %"TName_Option_Option_(Int32)"*, %"TName_Option_Option_(Int32)"** %o2 - %"$f_call_114" = call %Int32 %"$f_fptr_111"(i8* %"$f_envptr_112", %"TName_Option_Option_(Int32)"* %"$o2_113") - store %Int32 %"$f_call_114", %Int32* %"$f_1" - %"$$f_1_115" = load %Int32, %Int32* %"$f_1" - store %Int32 %"$$f_1_115", %Int32* %"$expr_2" - %"$$expr_2_116" = load %Int32, %Int32* %"$expr_2" - ret %Int32 %"$$expr_2_116" + %"$f_185" = load { %Int32 (i8*, %"TName_Option_Option_(Int32)"*)*, i8* }, { %Int32 (i8*, %"TName_Option_Option_(Int32)"*)*, i8* }* %f + %"$f_fptr_186" = extractvalue { %Int32 (i8*, %"TName_Option_Option_(Int32)"*)*, i8* } %"$f_185", 0 + %"$f_envptr_187" = extractvalue { %Int32 (i8*, %"TName_Option_Option_(Int32)"*)*, i8* } %"$f_185", 1 + %"$o2_188" = load %"TName_Option_Option_(Int32)"*, %"TName_Option_Option_(Int32)"** %o2 + %"$f_call_189" = call %Int32 %"$f_fptr_186"(i8* %"$f_envptr_187", %"TName_Option_Option_(Int32)"* %"$o2_188") + store %Int32 %"$f_call_189", %Int32* %"$f_1" + %"$$f_1_190" = load %Int32, %Int32* %"$f_1" + store %Int32 %"$$f_1_190", %Int32* %"$expr_2" + %"$$expr_2_191" = load %Int32, %Int32* %"$expr_2" + ret %Int32 %"$$expr_2_191" } declare i8* @_salloc(i8*, i64) @@ -218,10 +386,10 @@ declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_117" = call %Int32 @"$scilla_expr_91"(i8* null) - %"$pval_118" = alloca %Int32 - %"$memvoidcast_119" = bitcast %Int32* %"$pval_118" to i8* - store %Int32 %"$exprval_117", %Int32* %"$pval_118" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_7", i8* %"$memvoidcast_119") + %"$exprval_192" = call %Int32 @"$scilla_expr_111"(i8* null) + %"$pval_193" = alloca %Int32 + %"$memvoidcast_194" = bitcast %Int32* %"$pval_193" to i8* + store %Int32 %"$exprval_192", %Int32* %"$pval_193" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_7", i8* %"$memvoidcast_194") ret void } diff --git a/testsuite/expr/pm2.ll.result b/testsuite/expr/pm2.ll.result index 5aa23579..cc63b4ec 100644 --- a/testsuite/expr/pm2.ll.result +++ b/testsuite/expr/pm2.ll.result @@ -1 +1,2 @@ 42 : Int32 +Gas remaining: 9999985 diff --git a/testsuite/expr/simple-fun.ll b/testsuite/expr/simple-fun.ll index 30690767..9225a91b 100644 --- a/testsuite/expr/simple-fun.ll +++ b/testsuite/expr/simple-fun.ll @@ -15,6 +15,7 @@ target triple = "x86_64-pc-linux-gnu" %Int32 = type { i32 } @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_5" = global %"$TyDescrTy_PrimTyp_4" zeroinitializer @"$TyDescr_Int32_6" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_4"* @"$TyDescr_Int32_Prim_5" to i8*) } @"$TyDescr_Uint32_Prim_7" = global %"$TyDescrTy_PrimTyp_4" { i32 1, i32 0 } @@ -47,44 +48,112 @@ target triple = "x86_64-pc-linux-gnu" define internal %Int32 @"$fundef_2"(%"$$fundef_2_env_37"* %0, %Int32 %1) { entry: %"$retval_3" = alloca %Int32 + %"$gasrem_38" = load i64, i64* @_gasrem + %"$gascmp_39" = icmp ugt i64 1, %"$gasrem_38" + br i1 %"$gascmp_39", label %"$out_of_gas_40", label %"$have_gas_41" + +"$out_of_gas_40": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_41" + +"$have_gas_41": ; preds = %"$out_of_gas_40", %entry + %"$consume_42" = sub i64 %"$gasrem_38", 1 + store i64 %"$consume_42", i64* @_gasrem store %Int32 %1, %Int32* %"$retval_3" - %"$$retval_3_38" = load %Int32, %Int32* %"$retval_3" - ret %Int32 %"$$retval_3_38" + %"$$retval_3_43" = load %Int32, %Int32* %"$retval_3" + ret %Int32 %"$$retval_3_43" } +declare void @_out_of_gas() + define void @_init_libs() { entry: ret void } -define internal %Int32 @"$scilla_expr_39"(i8* %0) { +define internal %Int32 @"$scilla_expr_44"(i8* %0) { entry: %"$expr_1" = alloca %Int32 + %"$gasrem_45" = load i64, i64* @_gasrem + %"$gascmp_46" = icmp ugt i64 1, %"$gasrem_45" + br i1 %"$gascmp_46", label %"$out_of_gas_47", label %"$have_gas_48" + +"$out_of_gas_47": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_48" + +"$have_gas_48": ; preds = %"$out_of_gas_47", %entry + %"$consume_49" = sub i64 %"$gasrem_45", 1 + store i64 %"$consume_49", i64* @_gasrem %f = alloca { %Int32 (i8*, %Int32)*, i8* } + %"$gasrem_50" = load i64, i64* @_gasrem + %"$gascmp_51" = icmp ugt i64 1, %"$gasrem_50" + br i1 %"$gascmp_51", label %"$out_of_gas_52", label %"$have_gas_53" + +"$out_of_gas_52": ; preds = %"$have_gas_48" + call void @_out_of_gas() + br label %"$have_gas_53" + +"$have_gas_53": ; preds = %"$out_of_gas_52", %"$have_gas_48" + %"$consume_54" = sub i64 %"$gasrem_50", 1 + store i64 %"$consume_54", i64* @_gasrem store { %Int32 (i8*, %Int32)*, i8* } { %Int32 (i8*, %Int32)* bitcast (%Int32 (%"$$fundef_2_env_37"*, %Int32)* @"$fundef_2" to %Int32 (i8*, %Int32)*), i8* null }, { %Int32 (i8*, %Int32)*, i8* }* %f + %"$gasrem_58" = load i64, i64* @_gasrem + %"$gascmp_59" = icmp ugt i64 1, %"$gasrem_58" + br i1 %"$gascmp_59", label %"$out_of_gas_60", label %"$have_gas_61" + +"$out_of_gas_60": ; preds = %"$have_gas_53" + call void @_out_of_gas() + br label %"$have_gas_61" + +"$have_gas_61": ; preds = %"$out_of_gas_60", %"$have_gas_53" + %"$consume_62" = sub i64 %"$gasrem_58", 1 + store i64 %"$consume_62", i64* @_gasrem %i = alloca %Int32 + %"$gasrem_63" = load i64, i64* @_gasrem + %"$gascmp_64" = icmp ugt i64 1, %"$gasrem_63" + br i1 %"$gascmp_64", label %"$out_of_gas_65", label %"$have_gas_66" + +"$out_of_gas_65": ; preds = %"$have_gas_61" + call void @_out_of_gas() + br label %"$have_gas_66" + +"$have_gas_66": ; preds = %"$out_of_gas_65", %"$have_gas_61" + %"$consume_67" = sub i64 %"$gasrem_63", 1 + store i64 %"$consume_67", i64* @_gasrem store %Int32 zeroinitializer, %Int32* %i + %"$gasrem_68" = load i64, i64* @_gasrem + %"$gascmp_69" = icmp ugt i64 1, %"$gasrem_68" + br i1 %"$gascmp_69", label %"$out_of_gas_70", label %"$have_gas_71" + +"$out_of_gas_70": ; preds = %"$have_gas_66" + call void @_out_of_gas() + br label %"$have_gas_71" + +"$have_gas_71": ; preds = %"$out_of_gas_70", %"$have_gas_66" + %"$consume_72" = sub i64 %"$gasrem_68", 1 + store i64 %"$consume_72", i64* @_gasrem %"$f_0" = alloca %Int32 - %"$f_43" = load { %Int32 (i8*, %Int32)*, i8* }, { %Int32 (i8*, %Int32)*, i8* }* %f - %"$f_fptr_44" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$f_43", 0 - %"$f_envptr_45" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$f_43", 1 - %"$i_46" = load %Int32, %Int32* %i - %"$f_call_47" = call %Int32 %"$f_fptr_44"(i8* %"$f_envptr_45", %Int32 %"$i_46") - store %Int32 %"$f_call_47", %Int32* %"$f_0" - %"$$f_0_48" = load %Int32, %Int32* %"$f_0" - store %Int32 %"$$f_0_48", %Int32* %"$expr_1" - %"$$expr_1_49" = load %Int32, %Int32* %"$expr_1" - ret %Int32 %"$$expr_1_49" + %"$f_73" = load { %Int32 (i8*, %Int32)*, i8* }, { %Int32 (i8*, %Int32)*, i8* }* %f + %"$f_fptr_74" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$f_73", 0 + %"$f_envptr_75" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$f_73", 1 + %"$i_76" = load %Int32, %Int32* %i + %"$f_call_77" = call %Int32 %"$f_fptr_74"(i8* %"$f_envptr_75", %Int32 %"$i_76") + store %Int32 %"$f_call_77", %Int32* %"$f_0" + %"$$f_0_78" = load %Int32, %Int32* %"$f_0" + store %Int32 %"$$f_0_78", %Int32* %"$expr_1" + %"$$expr_1_79" = load %Int32, %Int32* %"$expr_1" + ret %Int32 %"$$expr_1_79" } declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_50" = call %Int32 @"$scilla_expr_39"(i8* null) - %"$pval_51" = alloca %Int32 - %"$memvoidcast_52" = bitcast %Int32* %"$pval_51" to i8* - store %Int32 %"$exprval_50", %Int32* %"$pval_51" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_6", i8* %"$memvoidcast_52") + %"$exprval_80" = call %Int32 @"$scilla_expr_44"(i8* null) + %"$pval_81" = alloca %Int32 + %"$memvoidcast_82" = bitcast %Int32* %"$pval_81" to i8* + store %Int32 %"$exprval_80", %Int32* %"$pval_81" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_6", i8* %"$memvoidcast_82") ret void } diff --git a/testsuite/expr/simple-fun.ll.result b/testsuite/expr/simple-fun.ll.result index 54050754..6b59375f 100644 --- a/testsuite/expr/simple-fun.ll.result +++ b/testsuite/expr/simple-fun.ll.result @@ -1 +1,2 @@ 0 : Int32 +Gas remaining: 9999994 diff --git a/testsuite/expr/simple_ho.ll b/testsuite/expr/simple_ho.ll index d1fa7cbc..cde0bb88 100644 --- a/testsuite/expr/simple_ho.ll +++ b/testsuite/expr/simple_ho.ll @@ -26,6 +26,7 @@ target triple = "x86_64-pc-linux-gnu" %"$$fundef_4_env_45" = type {} @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_11" = global %"$TyDescrTy_PrimTyp_10" zeroinitializer @"$TyDescr_Int32_12" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_10"* @"$TyDescr_Int32_Prim_11" to i8*) } @"$TyDescr_Uint32_Prim_13" = global %"$TyDescrTy_PrimTyp_10" { i32 1, i32 0 } @@ -58,49 +59,95 @@ target triple = "x86_64-pc-linux-gnu" define internal %Int32 @"$fundef_8"(%"$$fundef_8_env_43"* %0, %Int32 %1) { entry: %"$retval_9" = alloca %Int32 + %"$gasrem_70" = load i64, i64* @_gasrem + %"$gascmp_71" = icmp ugt i64 1, %"$gasrem_70" + br i1 %"$gascmp_71", label %"$out_of_gas_72", label %"$have_gas_73" + +"$out_of_gas_72": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_73" + +"$have_gas_73": ; preds = %"$out_of_gas_72", %entry + %"$consume_74" = sub i64 %"$gasrem_70", 1 + store i64 %"$consume_74", i64* @_gasrem %b = alloca %Int32 + %"$gasrem_75" = load i64, i64* @_gasrem + %"$gascmp_76" = icmp ugt i64 1, %"$gasrem_75" + br i1 %"$gascmp_76", label %"$out_of_gas_77", label %"$have_gas_78" + +"$out_of_gas_77": ; preds = %"$have_gas_73" + call void @_out_of_gas() + br label %"$have_gas_78" + +"$have_gas_78": ; preds = %"$out_of_gas_77", %"$have_gas_73" + %"$consume_79" = sub i64 %"$gasrem_75", 1 + store i64 %"$consume_79", i64* @_gasrem store %Int32 { i32 1 }, %Int32* %b - %"$b_60" = load %Int32, %Int32* %b - %"$add_call_61" = call %Int32 @_add_Int32(%Int32 %1, %Int32 %"$b_60") - store %Int32 %"$add_call_61", %Int32* %"$retval_9" - %"$$retval_9_62" = load %Int32, %Int32* %"$retval_9" - ret %Int32 %"$$retval_9_62" + %"$b_80" = load %Int32, %Int32* %b + %"$add_call_81" = call %Int32 @_add_Int32(%Int32 %1, %Int32 %"$b_80") + store %Int32 %"$add_call_81", %Int32* %"$retval_9" + %"$$retval_9_82" = load %Int32, %Int32* %"$retval_9" + ret %Int32 %"$$retval_9_82" } define internal %Int32 @"$fundef_6"(%"$$fundef_6_env_44"* %0, %Int32 %1) { entry: - %"$$fundef_6_env_h_52" = getelementptr inbounds %"$$fundef_6_env_44", %"$$fundef_6_env_44"* %0, i32 0, i32 0 - %"$h_envload_53" = load { %Int32 (i8*, %Int32)*, i8* }, { %Int32 (i8*, %Int32)*, i8* }* %"$$fundef_6_env_h_52" + %"$$fundef_6_env_h_57" = getelementptr inbounds %"$$fundef_6_env_44", %"$$fundef_6_env_44"* %0, i32 0, i32 0 + %"$h_envload_58" = load { %Int32 (i8*, %Int32)*, i8* }, { %Int32 (i8*, %Int32)*, i8* }* %"$$fundef_6_env_h_57" %h = alloca { %Int32 (i8*, %Int32)*, i8* } - store { %Int32 (i8*, %Int32)*, i8* } %"$h_envload_53", { %Int32 (i8*, %Int32)*, i8* }* %h + store { %Int32 (i8*, %Int32)*, i8* } %"$h_envload_58", { %Int32 (i8*, %Int32)*, i8* }* %h %"$retval_7" = alloca %Int32 + %"$gasrem_59" = load i64, i64* @_gasrem + %"$gascmp_60" = icmp ugt i64 1, %"$gasrem_59" + br i1 %"$gascmp_60", label %"$out_of_gas_61", label %"$have_gas_62" + +"$out_of_gas_61": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_62" + +"$have_gas_62": ; preds = %"$out_of_gas_61", %entry + %"$consume_63" = sub i64 %"$gasrem_59", 1 + store i64 %"$consume_63", i64* @_gasrem %"$h_0" = alloca %Int32 - %"$h_54" = load { %Int32 (i8*, %Int32)*, i8* }, { %Int32 (i8*, %Int32)*, i8* }* %h - %"$h_fptr_55" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$h_54", 0 - %"$h_envptr_56" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$h_54", 1 - %"$h_call_57" = call %Int32 %"$h_fptr_55"(i8* %"$h_envptr_56", %Int32 %1) - store %Int32 %"$h_call_57", %Int32* %"$h_0" - %"$$h_0_58" = load %Int32, %Int32* %"$h_0" - store %Int32 %"$$h_0_58", %Int32* %"$retval_7" - %"$$retval_7_59" = load %Int32, %Int32* %"$retval_7" - ret %Int32 %"$$retval_7_59" + %"$h_64" = load { %Int32 (i8*, %Int32)*, i8* }, { %Int32 (i8*, %Int32)*, i8* }* %h + %"$h_fptr_65" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$h_64", 0 + %"$h_envptr_66" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$h_64", 1 + %"$h_call_67" = call %Int32 %"$h_fptr_65"(i8* %"$h_envptr_66", %Int32 %1) + store %Int32 %"$h_call_67", %Int32* %"$h_0" + %"$$h_0_68" = load %Int32, %Int32* %"$h_0" + store %Int32 %"$$h_0_68", %Int32* %"$retval_7" + %"$$retval_7_69" = load %Int32, %Int32* %"$retval_7" + ret %Int32 %"$$retval_7_69" } define internal { %Int32 (i8*, %Int32)*, i8* } @"$fundef_4"(%"$$fundef_4_env_45"* %0, { %Int32 (i8*, %Int32)*, i8* } %1) { entry: %"$retval_5" = alloca { %Int32 (i8*, %Int32)*, i8* } - %"$$fundef_6_envp_46_load" = load i8*, i8** @_execptr - %"$$fundef_6_envp_46_salloc" = call i8* @_salloc(i8* %"$$fundef_6_envp_46_load", i64 16) - %"$$fundef_6_envp_46" = bitcast i8* %"$$fundef_6_envp_46_salloc" to %"$$fundef_6_env_44"* - %"$$fundef_6_env_voidp_48" = bitcast %"$$fundef_6_env_44"* %"$$fundef_6_envp_46" to i8* - %"$$fundef_6_cloval_49" = insertvalue { %Int32 (i8*, %Int32)*, i8* } { %Int32 (i8*, %Int32)* bitcast (%Int32 (%"$$fundef_6_env_44"*, %Int32)* @"$fundef_6" to %Int32 (i8*, %Int32)*), i8* undef }, i8* %"$$fundef_6_env_voidp_48", 1 - %"$$fundef_6_env_h_50" = getelementptr inbounds %"$$fundef_6_env_44", %"$$fundef_6_env_44"* %"$$fundef_6_envp_46", i32 0, i32 0 - store { %Int32 (i8*, %Int32)*, i8* } %1, { %Int32 (i8*, %Int32)*, i8* }* %"$$fundef_6_env_h_50" - store { %Int32 (i8*, %Int32)*, i8* } %"$$fundef_6_cloval_49", { %Int32 (i8*, %Int32)*, i8* }* %"$retval_5" - %"$$retval_5_51" = load { %Int32 (i8*, %Int32)*, i8* }, { %Int32 (i8*, %Int32)*, i8* }* %"$retval_5" - ret { %Int32 (i8*, %Int32)*, i8* } %"$$retval_5_51" + %"$gasrem_46" = load i64, i64* @_gasrem + %"$gascmp_47" = icmp ugt i64 1, %"$gasrem_46" + br i1 %"$gascmp_47", label %"$out_of_gas_48", label %"$have_gas_49" + +"$out_of_gas_48": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_49" + +"$have_gas_49": ; preds = %"$out_of_gas_48", %entry + %"$consume_50" = sub i64 %"$gasrem_46", 1 + store i64 %"$consume_50", i64* @_gasrem + %"$$fundef_6_envp_51_load" = load i8*, i8** @_execptr + %"$$fundef_6_envp_51_salloc" = call i8* @_salloc(i8* %"$$fundef_6_envp_51_load", i64 16) + %"$$fundef_6_envp_51" = bitcast i8* %"$$fundef_6_envp_51_salloc" to %"$$fundef_6_env_44"* + %"$$fundef_6_env_voidp_53" = bitcast %"$$fundef_6_env_44"* %"$$fundef_6_envp_51" to i8* + %"$$fundef_6_cloval_54" = insertvalue { %Int32 (i8*, %Int32)*, i8* } { %Int32 (i8*, %Int32)* bitcast (%Int32 (%"$$fundef_6_env_44"*, %Int32)* @"$fundef_6" to %Int32 (i8*, %Int32)*), i8* undef }, i8* %"$$fundef_6_env_voidp_53", 1 + %"$$fundef_6_env_h_55" = getelementptr inbounds %"$$fundef_6_env_44", %"$$fundef_6_env_44"* %"$$fundef_6_envp_51", i32 0, i32 0 + store { %Int32 (i8*, %Int32)*, i8* } %1, { %Int32 (i8*, %Int32)*, i8* }* %"$$fundef_6_env_h_55" + store { %Int32 (i8*, %Int32)*, i8* } %"$$fundef_6_cloval_54", { %Int32 (i8*, %Int32)*, i8* }* %"$retval_5" + %"$$retval_5_56" = load { %Int32 (i8*, %Int32)*, i8* }, { %Int32 (i8*, %Int32)*, i8* }* %"$retval_5" + ret { %Int32 (i8*, %Int32)*, i8* } %"$$retval_5_56" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) declare %Int32 @_add_Int32(%Int32, %Int32) @@ -110,43 +157,120 @@ entry: ret void } -define internal %Int32 @"$scilla_expr_63"(i8* %0) { +define internal %Int32 @"$scilla_expr_83"(i8* %0) { entry: %"$expr_3" = alloca %Int32 + %"$gasrem_84" = load i64, i64* @_gasrem + %"$gascmp_85" = icmp ugt i64 1, %"$gasrem_84" + br i1 %"$gascmp_85", label %"$out_of_gas_86", label %"$have_gas_87" + +"$out_of_gas_86": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_87" + +"$have_gas_87": ; preds = %"$out_of_gas_86", %entry + %"$consume_88" = sub i64 %"$gasrem_84", 1 + store i64 %"$consume_88", i64* @_gasrem %ho = alloca { { %Int32 (i8*, %Int32)*, i8* } (i8*, { %Int32 (i8*, %Int32)*, i8* })*, i8* } + %"$gasrem_89" = load i64, i64* @_gasrem + %"$gascmp_90" = icmp ugt i64 1, %"$gasrem_89" + br i1 %"$gascmp_90", label %"$out_of_gas_91", label %"$have_gas_92" + +"$out_of_gas_91": ; preds = %"$have_gas_87" + call void @_out_of_gas() + br label %"$have_gas_92" + +"$have_gas_92": ; preds = %"$out_of_gas_91", %"$have_gas_87" + %"$consume_93" = sub i64 %"$gasrem_89", 1 + store i64 %"$consume_93", i64* @_gasrem store { { %Int32 (i8*, %Int32)*, i8* } (i8*, { %Int32 (i8*, %Int32)*, i8* })*, i8* } { { %Int32 (i8*, %Int32)*, i8* } (i8*, { %Int32 (i8*, %Int32)*, i8* })* bitcast ({ %Int32 (i8*, %Int32)*, i8* } (%"$$fundef_4_env_45"*, { %Int32 (i8*, %Int32)*, i8* })* @"$fundef_4" to { %Int32 (i8*, %Int32)*, i8* } (i8*, { %Int32 (i8*, %Int32)*, i8* })*), i8* null }, { { %Int32 (i8*, %Int32)*, i8* } (i8*, { %Int32 (i8*, %Int32)*, i8* })*, i8* }* %ho + %"$gasrem_97" = load i64, i64* @_gasrem + %"$gascmp_98" = icmp ugt i64 1, %"$gasrem_97" + br i1 %"$gascmp_98", label %"$out_of_gas_99", label %"$have_gas_100" + +"$out_of_gas_99": ; preds = %"$have_gas_92" + call void @_out_of_gas() + br label %"$have_gas_100" + +"$have_gas_100": ; preds = %"$out_of_gas_99", %"$have_gas_92" + %"$consume_101" = sub i64 %"$gasrem_97", 1 + store i64 %"$consume_101", i64* @_gasrem %inc = alloca { %Int32 (i8*, %Int32)*, i8* } + %"$gasrem_102" = load i64, i64* @_gasrem + %"$gascmp_103" = icmp ugt i64 1, %"$gasrem_102" + br i1 %"$gascmp_103", label %"$out_of_gas_104", label %"$have_gas_105" + +"$out_of_gas_104": ; preds = %"$have_gas_100" + call void @_out_of_gas() + br label %"$have_gas_105" + +"$have_gas_105": ; preds = %"$out_of_gas_104", %"$have_gas_100" + %"$consume_106" = sub i64 %"$gasrem_102", 1 + store i64 %"$consume_106", i64* @_gasrem store { %Int32 (i8*, %Int32)*, i8* } { %Int32 (i8*, %Int32)* bitcast (%Int32 (%"$$fundef_8_env_43"*, %Int32)* @"$fundef_8" to %Int32 (i8*, %Int32)*), i8* null }, { %Int32 (i8*, %Int32)*, i8* }* %inc + %"$gasrem_110" = load i64, i64* @_gasrem + %"$gascmp_111" = icmp ugt i64 1, %"$gasrem_110" + br i1 %"$gascmp_111", label %"$out_of_gas_112", label %"$have_gas_113" + +"$out_of_gas_112": ; preds = %"$have_gas_105" + call void @_out_of_gas() + br label %"$have_gas_113" + +"$have_gas_113": ; preds = %"$out_of_gas_112", %"$have_gas_105" + %"$consume_114" = sub i64 %"$gasrem_110", 1 + store i64 %"$consume_114", i64* @_gasrem %hundred = alloca %Int32 + %"$gasrem_115" = load i64, i64* @_gasrem + %"$gascmp_116" = icmp ugt i64 1, %"$gasrem_115" + br i1 %"$gascmp_116", label %"$out_of_gas_117", label %"$have_gas_118" + +"$out_of_gas_117": ; preds = %"$have_gas_113" + call void @_out_of_gas() + br label %"$have_gas_118" + +"$have_gas_118": ; preds = %"$out_of_gas_117", %"$have_gas_113" + %"$consume_119" = sub i64 %"$gasrem_115", 1 + store i64 %"$consume_119", i64* @_gasrem store %Int32 { i32 100 }, %Int32* %hundred + %"$gasrem_120" = load i64, i64* @_gasrem + %"$gascmp_121" = icmp ugt i64 1, %"$gasrem_120" + br i1 %"$gascmp_121", label %"$out_of_gas_122", label %"$have_gas_123" + +"$out_of_gas_122": ; preds = %"$have_gas_118" + call void @_out_of_gas() + br label %"$have_gas_123" + +"$have_gas_123": ; preds = %"$out_of_gas_122", %"$have_gas_118" + %"$consume_124" = sub i64 %"$gasrem_120", 1 + store i64 %"$consume_124", i64* @_gasrem %"$ho_1" = alloca { %Int32 (i8*, %Int32)*, i8* } - %"$ho_70" = load { { %Int32 (i8*, %Int32)*, i8* } (i8*, { %Int32 (i8*, %Int32)*, i8* })*, i8* }, { { %Int32 (i8*, %Int32)*, i8* } (i8*, { %Int32 (i8*, %Int32)*, i8* })*, i8* }* %ho - %"$ho_fptr_71" = extractvalue { { %Int32 (i8*, %Int32)*, i8* } (i8*, { %Int32 (i8*, %Int32)*, i8* })*, i8* } %"$ho_70", 0 - %"$ho_envptr_72" = extractvalue { { %Int32 (i8*, %Int32)*, i8* } (i8*, { %Int32 (i8*, %Int32)*, i8* })*, i8* } %"$ho_70", 1 - %"$inc_73" = load { %Int32 (i8*, %Int32)*, i8* }, { %Int32 (i8*, %Int32)*, i8* }* %inc - %"$ho_call_74" = call { %Int32 (i8*, %Int32)*, i8* } %"$ho_fptr_71"(i8* %"$ho_envptr_72", { %Int32 (i8*, %Int32)*, i8* } %"$inc_73") - store { %Int32 (i8*, %Int32)*, i8* } %"$ho_call_74", { %Int32 (i8*, %Int32)*, i8* }* %"$ho_1" + %"$ho_125" = load { { %Int32 (i8*, %Int32)*, i8* } (i8*, { %Int32 (i8*, %Int32)*, i8* })*, i8* }, { { %Int32 (i8*, %Int32)*, i8* } (i8*, { %Int32 (i8*, %Int32)*, i8* })*, i8* }* %ho + %"$ho_fptr_126" = extractvalue { { %Int32 (i8*, %Int32)*, i8* } (i8*, { %Int32 (i8*, %Int32)*, i8* })*, i8* } %"$ho_125", 0 + %"$ho_envptr_127" = extractvalue { { %Int32 (i8*, %Int32)*, i8* } (i8*, { %Int32 (i8*, %Int32)*, i8* })*, i8* } %"$ho_125", 1 + %"$inc_128" = load { %Int32 (i8*, %Int32)*, i8* }, { %Int32 (i8*, %Int32)*, i8* }* %inc + %"$ho_call_129" = call { %Int32 (i8*, %Int32)*, i8* } %"$ho_fptr_126"(i8* %"$ho_envptr_127", { %Int32 (i8*, %Int32)*, i8* } %"$inc_128") + store { %Int32 (i8*, %Int32)*, i8* } %"$ho_call_129", { %Int32 (i8*, %Int32)*, i8* }* %"$ho_1" %"$ho_2" = alloca %Int32 - %"$$ho_1_75" = load { %Int32 (i8*, %Int32)*, i8* }, { %Int32 (i8*, %Int32)*, i8* }* %"$ho_1" - %"$$ho_1_fptr_76" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$$ho_1_75", 0 - %"$$ho_1_envptr_77" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$$ho_1_75", 1 - %"$hundred_78" = load %Int32, %Int32* %hundred - %"$$ho_1_call_79" = call %Int32 %"$$ho_1_fptr_76"(i8* %"$$ho_1_envptr_77", %Int32 %"$hundred_78") - store %Int32 %"$$ho_1_call_79", %Int32* %"$ho_2" - %"$$ho_2_80" = load %Int32, %Int32* %"$ho_2" - store %Int32 %"$$ho_2_80", %Int32* %"$expr_3" - %"$$expr_3_81" = load %Int32, %Int32* %"$expr_3" - ret %Int32 %"$$expr_3_81" + %"$$ho_1_130" = load { %Int32 (i8*, %Int32)*, i8* }, { %Int32 (i8*, %Int32)*, i8* }* %"$ho_1" + %"$$ho_1_fptr_131" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$$ho_1_130", 0 + %"$$ho_1_envptr_132" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$$ho_1_130", 1 + %"$hundred_133" = load %Int32, %Int32* %hundred + %"$$ho_1_call_134" = call %Int32 %"$$ho_1_fptr_131"(i8* %"$$ho_1_envptr_132", %Int32 %"$hundred_133") + store %Int32 %"$$ho_1_call_134", %Int32* %"$ho_2" + %"$$ho_2_135" = load %Int32, %Int32* %"$ho_2" + store %Int32 %"$$ho_2_135", %Int32* %"$expr_3" + %"$$expr_3_136" = load %Int32, %Int32* %"$expr_3" + ret %Int32 %"$$expr_3_136" } declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_82" = call %Int32 @"$scilla_expr_63"(i8* null) - %"$pval_83" = alloca %Int32 - %"$memvoidcast_84" = bitcast %Int32* %"$pval_83" to i8* - store %Int32 %"$exprval_82", %Int32* %"$pval_83" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_12", i8* %"$memvoidcast_84") + %"$exprval_137" = call %Int32 @"$scilla_expr_83"(i8* null) + %"$pval_138" = alloca %Int32 + %"$memvoidcast_139" = bitcast %Int32* %"$pval_138" to i8* + store %Int32 %"$exprval_137", %Int32* %"$pval_138" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_12", i8* %"$memvoidcast_139") ret void } diff --git a/testsuite/expr/simple_ho.ll.result b/testsuite/expr/simple_ho.ll.result index eb04fc55..5ed9fd25 100644 --- a/testsuite/expr/simple_ho.ll.result +++ b/testsuite/expr/simple_ho.ll.result @@ -1 +1,2 @@ 101 : Int32 +Gas remaining: 9999989 diff --git a/testsuite/expr/tname_clash.ll b/testsuite/expr/tname_clash.ll index ae55e98e..9e06d7f1 100644 --- a/testsuite/expr/tname_clash.ll +++ b/testsuite/expr/tname_clash.ll @@ -36,6 +36,7 @@ target triple = "x86_64-pc-linux-gnu" %"$$fundef_3_env_60" = type {} @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_14" = global %"$TyDescrTy_PrimTyp_13" zeroinitializer @"$TyDescr_Int32_15" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_13"* @"$TyDescr_Int32_Prim_14" to i8*) } @"$TyDescr_Uint32_Prim_16" = global %"$TyDescrTy_PrimTyp_13" { i32 1, i32 0 } @@ -77,84 +78,141 @@ target triple = "x86_64-pc-linux-gnu" define internal { i8*, i8* }* @"$fundef_11"(%"$$fundef_11_env_56"* %0) { entry: - %"$$fundef_11_env_tf_87" = getelementptr inbounds %"$$fundef_11_env_56", %"$$fundef_11_env_56"* %0, i32 0, i32 0 - %"$tf_envload_88" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_11_env_tf_87" + %"$$fundef_11_env_tf_107" = getelementptr inbounds %"$$fundef_11_env_56", %"$$fundef_11_env_56"* %0, i32 0, i32 0 + %"$tf_envload_108" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_11_env_tf_107" %tf = alloca { i8*, i8* }* - store { i8*, i8* }* %"$tf_envload_88", { i8*, i8* }** %tf + store { i8*, i8* }* %"$tf_envload_108", { i8*, i8* }** %tf %"$retval_12" = alloca { i8*, i8* }* - %"$tf_89" = load { i8*, i8* }*, { i8*, i8* }** %tf - %"$tf_90" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_89", i32 0 - %"$tf_91" = bitcast { i8*, i8* }* %"$tf_90" to { { i8*, i8* }* (i8*)*, i8* }* - %"$tf_92" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf_91" - %"$tf_fptr_93" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_92", 0 - %"$tf_envptr_94" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_92", 1 - %"$tf_call_95" = call { i8*, i8* }* %"$tf_fptr_93"(i8* %"$tf_envptr_94") - store { i8*, i8* }* %"$tf_call_95", { i8*, i8* }** %"$retval_12" - %"$$retval_12_96" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_12" - ret { i8*, i8* }* %"$$retval_12_96" + %"$gasrem_109" = load i64, i64* @_gasrem + %"$gascmp_110" = icmp ugt i64 1, %"$gasrem_109" + br i1 %"$gascmp_110", label %"$out_of_gas_111", label %"$have_gas_112" + +"$out_of_gas_111": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_112" + +"$have_gas_112": ; preds = %"$out_of_gas_111", %entry + %"$consume_113" = sub i64 %"$gasrem_109", 1 + store i64 %"$consume_113", i64* @_gasrem + %"$tf_114" = load { i8*, i8* }*, { i8*, i8* }** %tf + %"$tf_115" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_114", i32 0 + %"$tf_116" = bitcast { i8*, i8* }* %"$tf_115" to { { i8*, i8* }* (i8*)*, i8* }* + %"$tf_117" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf_116" + %"$tf_fptr_118" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_117", 0 + %"$tf_envptr_119" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_117", 1 + %"$tf_call_120" = call { i8*, i8* }* %"$tf_fptr_118"(i8* %"$tf_envptr_119") + store { i8*, i8* }* %"$tf_call_120", { i8*, i8* }** %"$retval_12" + %"$$retval_12_121" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_12" + ret { i8*, i8* }* %"$$retval_12_121" } define internal %TName_Pair_Int32_Int64* @"$fundef_9"(%"$$fundef_9_env_57"* %0, %Int64 %1) { entry: - %"$$fundef_9_env_a_78" = getelementptr inbounds %"$$fundef_9_env_57", %"$$fundef_9_env_57"* %0, i32 0, i32 0 - %"$a_envload_79" = load %Int32, %Int32* %"$$fundef_9_env_a_78" + %"$$fundef_9_env_a_93" = getelementptr inbounds %"$$fundef_9_env_57", %"$$fundef_9_env_57"* %0, i32 0, i32 0 + %"$a_envload_94" = load %Int32, %Int32* %"$$fundef_9_env_a_93" %a = alloca %Int32 - store %Int32 %"$a_envload_79", %Int32* %a + store %Int32 %"$a_envload_94", %Int32* %a %"$retval_10" = alloca %TName_Pair_Int32_Int64* - %"$a_80" = load %Int32, %Int32* %a - %"$adtval_81_load" = load i8*, i8** @_execptr - %"$adtval_81_salloc" = call i8* @_salloc(i8* %"$adtval_81_load", i64 13) - %"$adtval_81" = bitcast i8* %"$adtval_81_salloc" to %CName_Pair_Int32_Int64* - %"$adtgep_82" = getelementptr inbounds %CName_Pair_Int32_Int64, %CName_Pair_Int32_Int64* %"$adtval_81", i32 0, i32 0 - store i8 0, i8* %"$adtgep_82" - %"$adtgep_83" = getelementptr inbounds %CName_Pair_Int32_Int64, %CName_Pair_Int32_Int64* %"$adtval_81", i32 0, i32 1 - store %Int32 %"$a_80", %Int32* %"$adtgep_83" - %"$adtgep_84" = getelementptr inbounds %CName_Pair_Int32_Int64, %CName_Pair_Int32_Int64* %"$adtval_81", i32 0, i32 2 - store %Int64 %1, %Int64* %"$adtgep_84" - %"$adtptr_85" = bitcast %CName_Pair_Int32_Int64* %"$adtval_81" to %TName_Pair_Int32_Int64* - store %TName_Pair_Int32_Int64* %"$adtptr_85", %TName_Pair_Int32_Int64** %"$retval_10" - %"$$retval_10_86" = load %TName_Pair_Int32_Int64*, %TName_Pair_Int32_Int64** %"$retval_10" - ret %TName_Pair_Int32_Int64* %"$$retval_10_86" + %"$gasrem_95" = load i64, i64* @_gasrem + %"$gascmp_96" = icmp ugt i64 1, %"$gasrem_95" + br i1 %"$gascmp_96", label %"$out_of_gas_97", label %"$have_gas_98" + +"$out_of_gas_97": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_98" + +"$have_gas_98": ; preds = %"$out_of_gas_97", %entry + %"$consume_99" = sub i64 %"$gasrem_95", 1 + store i64 %"$consume_99", i64* @_gasrem + %"$a_100" = load %Int32, %Int32* %a + %"$adtval_101_load" = load i8*, i8** @_execptr + %"$adtval_101_salloc" = call i8* @_salloc(i8* %"$adtval_101_load", i64 13) + %"$adtval_101" = bitcast i8* %"$adtval_101_salloc" to %CName_Pair_Int32_Int64* + %"$adtgep_102" = getelementptr inbounds %CName_Pair_Int32_Int64, %CName_Pair_Int32_Int64* %"$adtval_101", i32 0, i32 0 + store i8 0, i8* %"$adtgep_102" + %"$adtgep_103" = getelementptr inbounds %CName_Pair_Int32_Int64, %CName_Pair_Int32_Int64* %"$adtval_101", i32 0, i32 1 + store %Int32 %"$a_100", %Int32* %"$adtgep_103" + %"$adtgep_104" = getelementptr inbounds %CName_Pair_Int32_Int64, %CName_Pair_Int32_Int64* %"$adtval_101", i32 0, i32 2 + store %Int64 %1, %Int64* %"$adtgep_104" + %"$adtptr_105" = bitcast %CName_Pair_Int32_Int64* %"$adtval_101" to %TName_Pair_Int32_Int64* + store %TName_Pair_Int32_Int64* %"$adtptr_105", %TName_Pair_Int32_Int64** %"$retval_10" + %"$$retval_10_106" = load %TName_Pair_Int32_Int64*, %TName_Pair_Int32_Int64** %"$retval_10" + ret %TName_Pair_Int32_Int64* %"$$retval_10_106" } define internal { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } @"$fundef_7"(%"$$fundef_7_env_58"* %0, %Int32 %1) { entry: %"$retval_8" = alloca { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } - %"$$fundef_9_envp_72_load" = load i8*, i8** @_execptr - %"$$fundef_9_envp_72_salloc" = call i8* @_salloc(i8* %"$$fundef_9_envp_72_load", i64 4) - %"$$fundef_9_envp_72" = bitcast i8* %"$$fundef_9_envp_72_salloc" to %"$$fundef_9_env_57"* - %"$$fundef_9_env_voidp_74" = bitcast %"$$fundef_9_env_57"* %"$$fundef_9_envp_72" to i8* - %"$$fundef_9_cloval_75" = insertvalue { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } { %TName_Pair_Int32_Int64* (i8*, %Int64)* bitcast (%TName_Pair_Int32_Int64* (%"$$fundef_9_env_57"*, %Int64)* @"$fundef_9" to %TName_Pair_Int32_Int64* (i8*, %Int64)*), i8* undef }, i8* %"$$fundef_9_env_voidp_74", 1 - %"$$fundef_9_env_a_76" = getelementptr inbounds %"$$fundef_9_env_57", %"$$fundef_9_env_57"* %"$$fundef_9_envp_72", i32 0, i32 0 - store %Int32 %1, %Int32* %"$$fundef_9_env_a_76" - store { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } %"$$fundef_9_cloval_75", { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* }* %"$retval_8" - %"$$retval_8_77" = load { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* }, { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* }* %"$retval_8" - ret { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } %"$$retval_8_77" + %"$gasrem_82" = load i64, i64* @_gasrem + %"$gascmp_83" = icmp ugt i64 1, %"$gasrem_82" + br i1 %"$gascmp_83", label %"$out_of_gas_84", label %"$have_gas_85" + +"$out_of_gas_84": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_85" + +"$have_gas_85": ; preds = %"$out_of_gas_84", %entry + %"$consume_86" = sub i64 %"$gasrem_82", 1 + store i64 %"$consume_86", i64* @_gasrem + %"$$fundef_9_envp_87_load" = load i8*, i8** @_execptr + %"$$fundef_9_envp_87_salloc" = call i8* @_salloc(i8* %"$$fundef_9_envp_87_load", i64 4) + %"$$fundef_9_envp_87" = bitcast i8* %"$$fundef_9_envp_87_salloc" to %"$$fundef_9_env_57"* + %"$$fundef_9_env_voidp_89" = bitcast %"$$fundef_9_env_57"* %"$$fundef_9_envp_87" to i8* + %"$$fundef_9_cloval_90" = insertvalue { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } { %TName_Pair_Int32_Int64* (i8*, %Int64)* bitcast (%TName_Pair_Int32_Int64* (%"$$fundef_9_env_57"*, %Int64)* @"$fundef_9" to %TName_Pair_Int32_Int64* (i8*, %Int64)*), i8* undef }, i8* %"$$fundef_9_env_voidp_89", 1 + %"$$fundef_9_env_a_91" = getelementptr inbounds %"$$fundef_9_env_57", %"$$fundef_9_env_57"* %"$$fundef_9_envp_87", i32 0, i32 0 + store %Int32 %1, %Int32* %"$$fundef_9_env_a_91" + store { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } %"$$fundef_9_cloval_90", { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* }* %"$retval_8" + %"$$retval_8_92" = load { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* }, { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* }* %"$retval_8" + ret { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } %"$$retval_8_92" } define internal { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } @"$fundef_5"(%"$$fundef_5_env_59"* %0) { entry: %"$retval_6" = alloca { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } + %"$gasrem_73" = load i64, i64* @_gasrem + %"$gascmp_74" = icmp ugt i64 1, %"$gasrem_73" + br i1 %"$gascmp_74", label %"$out_of_gas_75", label %"$have_gas_76" + +"$out_of_gas_75": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_76" + +"$have_gas_76": ; preds = %"$out_of_gas_75", %entry + %"$consume_77" = sub i64 %"$gasrem_73", 1 + store i64 %"$consume_77", i64* @_gasrem store { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)* bitcast ({ %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (%"$$fundef_7_env_58"*, %Int32)* @"$fundef_7" to { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*), i8* null }, { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* }* %"$retval_6" - %"$$retval_6_71" = load { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* }, { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* }* %"$retval_6" - ret { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } %"$$retval_6_71" + %"$$retval_6_81" = load { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* }, { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* }* %"$retval_6" + ret { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } %"$$retval_6_81" } define internal { i8*, i8* }* @"$fundef_3"(%"$$fundef_3_env_60"* %0) { entry: %"$retval_4" = alloca { i8*, i8* }* - %"$dyndisp_table_64_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_64_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_64_salloc_load", i64 32) - %"$dyndisp_table_64_salloc" = bitcast i8* %"$dyndisp_table_64_salloc_salloc" to [2 x { i8*, i8* }]* - %"$dyndisp_table_64" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_64_salloc" to { i8*, i8* }* - %"$dyndisp_gep_65" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_64", i32 1 - %"$dyndisp_pcast_66" = bitcast { i8*, i8* }* %"$dyndisp_gep_65" to { { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)*, i8* }* - store { { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)*, i8* } { { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)* bitcast ({ { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (%"$$fundef_5_env_59"*)* @"$fundef_5" to { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)*), i8* null }, { { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_66" - store { i8*, i8* }* %"$dyndisp_table_64", { i8*, i8* }** %"$retval_4" - %"$$retval_4_67" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_4" - ret { i8*, i8* }* %"$$retval_4_67" + %"$gasrem_61" = load i64, i64* @_gasrem + %"$gascmp_62" = icmp ugt i64 1, %"$gasrem_61" + br i1 %"$gascmp_62", label %"$out_of_gas_63", label %"$have_gas_64" + +"$out_of_gas_63": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_64" + +"$have_gas_64": ; preds = %"$out_of_gas_63", %entry + %"$consume_65" = sub i64 %"$gasrem_61", 1 + store i64 %"$consume_65", i64* @_gasrem + %"$dyndisp_table_69_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_69_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_69_salloc_load", i64 32) + %"$dyndisp_table_69_salloc" = bitcast i8* %"$dyndisp_table_69_salloc_salloc" to [2 x { i8*, i8* }]* + %"$dyndisp_table_69" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_69_salloc" to { i8*, i8* }* + %"$dyndisp_gep_70" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_69", i32 1 + %"$dyndisp_pcast_71" = bitcast { i8*, i8* }* %"$dyndisp_gep_70" to { { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)*, i8* }* + store { { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)*, i8* } { { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)* bitcast ({ { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (%"$$fundef_5_env_59"*)* @"$fundef_5" to { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)*), i8* null }, { { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_71" + store { i8*, i8* }* %"$dyndisp_table_69", { i8*, i8* }** %"$retval_4" + %"$$retval_4_72" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_4" + ret { i8*, i8* }* %"$$retval_4_72" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) define void @_init_libs() { @@ -162,80 +220,201 @@ entry: ret void } -define internal %TName_Pair_Int32_Int64* @"$scilla_expr_97"(i8* %0) { +define internal %TName_Pair_Int32_Int64* @"$scilla_expr_122"(i8* %0) { entry: %"$expr_2" = alloca %TName_Pair_Int32_Int64* + %"$gasrem_123" = load i64, i64* @_gasrem + %"$gascmp_124" = icmp ugt i64 1, %"$gasrem_123" + br i1 %"$gascmp_124", label %"$out_of_gas_125", label %"$have_gas_126" + +"$out_of_gas_125": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_126" + +"$have_gas_126": ; preds = %"$out_of_gas_125", %entry + %"$consume_127" = sub i64 %"$gasrem_123", 1 + store i64 %"$consume_127", i64* @_gasrem %tf = alloca { i8*, i8* }* - %"$dyndisp_table_101_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_101_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_101_salloc_load", i64 32) - %"$dyndisp_table_101_salloc" = bitcast i8* %"$dyndisp_table_101_salloc_salloc" to [2 x { i8*, i8* }]* - %"$dyndisp_table_101" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_101_salloc" to { i8*, i8* }* - %"$dyndisp_gep_102" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_101", i32 0 - %"$dyndisp_pcast_103" = bitcast { i8*, i8* }* %"$dyndisp_gep_102" to { { i8*, i8* }* (i8*)*, i8* }* - store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_3_env_60"*)* @"$fundef_3" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_103" - store { i8*, i8* }* %"$dyndisp_table_101", { i8*, i8* }** %tf + %"$gasrem_128" = load i64, i64* @_gasrem + %"$gascmp_129" = icmp ugt i64 1, %"$gasrem_128" + br i1 %"$gascmp_129", label %"$out_of_gas_130", label %"$have_gas_131" + +"$out_of_gas_130": ; preds = %"$have_gas_126" + call void @_out_of_gas() + br label %"$have_gas_131" + +"$have_gas_131": ; preds = %"$out_of_gas_130", %"$have_gas_126" + %"$consume_132" = sub i64 %"$gasrem_128", 1 + store i64 %"$consume_132", i64* @_gasrem + %"$dyndisp_table_136_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_136_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_136_salloc_load", i64 32) + %"$dyndisp_table_136_salloc" = bitcast i8* %"$dyndisp_table_136_salloc_salloc" to [2 x { i8*, i8* }]* + %"$dyndisp_table_136" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_136_salloc" to { i8*, i8* }* + %"$dyndisp_gep_137" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_136", i32 0 + %"$dyndisp_pcast_138" = bitcast { i8*, i8* }* %"$dyndisp_gep_137" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_3_env_60"*)* @"$fundef_3" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_138" + store { i8*, i8* }* %"$dyndisp_table_136", { i8*, i8* }** %tf + %"$gasrem_139" = load i64, i64* @_gasrem + %"$gascmp_140" = icmp ugt i64 1, %"$gasrem_139" + br i1 %"$gascmp_140", label %"$out_of_gas_141", label %"$have_gas_142" + +"$out_of_gas_141": ; preds = %"$have_gas_131" + call void @_out_of_gas() + br label %"$have_gas_142" + +"$have_gas_142": ; preds = %"$out_of_gas_141", %"$have_gas_131" + %"$consume_143" = sub i64 %"$gasrem_139", 1 + store i64 %"$consume_143", i64* @_gasrem %tf2 = alloca { i8*, i8* }* - %"$$fundef_11_envp_104_load" = load i8*, i8** @_execptr - %"$$fundef_11_envp_104_salloc" = call i8* @_salloc(i8* %"$$fundef_11_envp_104_load", i64 8) - %"$$fundef_11_envp_104" = bitcast i8* %"$$fundef_11_envp_104_salloc" to %"$$fundef_11_env_56"* - %"$$fundef_11_env_voidp_106" = bitcast %"$$fundef_11_env_56"* %"$$fundef_11_envp_104" to i8* - %"$$fundef_11_cloval_107" = insertvalue { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_11_env_56"*)* @"$fundef_11" to { i8*, i8* }* (i8*)*), i8* undef }, i8* %"$$fundef_11_env_voidp_106", 1 - %"$$fundef_11_env_tf_108" = getelementptr inbounds %"$$fundef_11_env_56", %"$$fundef_11_env_56"* %"$$fundef_11_envp_104", i32 0, i32 0 - %"$tf_109" = load { i8*, i8* }*, { i8*, i8* }** %tf - store { i8*, i8* }* %"$tf_109", { i8*, i8* }** %"$$fundef_11_env_tf_108" - %"$dyndisp_table_110_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_110_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_110_salloc_load", i64 32) - %"$dyndisp_table_110_salloc" = bitcast i8* %"$dyndisp_table_110_salloc_salloc" to [2 x { i8*, i8* }]* - %"$dyndisp_table_110" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_110_salloc" to { i8*, i8* }* - %"$dyndisp_gep_111" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_110", i32 0 - %"$dyndisp_pcast_112" = bitcast { i8*, i8* }* %"$dyndisp_gep_111" to { { i8*, i8* }* (i8*)*, i8* }* - store { { i8*, i8* }* (i8*)*, i8* } %"$$fundef_11_cloval_107", { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_112" - store { i8*, i8* }* %"$dyndisp_table_110", { i8*, i8* }** %tf2 + %"$gasrem_144" = load i64, i64* @_gasrem + %"$gascmp_145" = icmp ugt i64 1, %"$gasrem_144" + br i1 %"$gascmp_145", label %"$out_of_gas_146", label %"$have_gas_147" + +"$out_of_gas_146": ; preds = %"$have_gas_142" + call void @_out_of_gas() + br label %"$have_gas_147" + +"$have_gas_147": ; preds = %"$out_of_gas_146", %"$have_gas_142" + %"$consume_148" = sub i64 %"$gasrem_144", 1 + store i64 %"$consume_148", i64* @_gasrem + %"$$fundef_11_envp_149_load" = load i8*, i8** @_execptr + %"$$fundef_11_envp_149_salloc" = call i8* @_salloc(i8* %"$$fundef_11_envp_149_load", i64 8) + %"$$fundef_11_envp_149" = bitcast i8* %"$$fundef_11_envp_149_salloc" to %"$$fundef_11_env_56"* + %"$$fundef_11_env_voidp_151" = bitcast %"$$fundef_11_env_56"* %"$$fundef_11_envp_149" to i8* + %"$$fundef_11_cloval_152" = insertvalue { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_11_env_56"*)* @"$fundef_11" to { i8*, i8* }* (i8*)*), i8* undef }, i8* %"$$fundef_11_env_voidp_151", 1 + %"$$fundef_11_env_tf_153" = getelementptr inbounds %"$$fundef_11_env_56", %"$$fundef_11_env_56"* %"$$fundef_11_envp_149", i32 0, i32 0 + %"$tf_154" = load { i8*, i8* }*, { i8*, i8* }** %tf + store { i8*, i8* }* %"$tf_154", { i8*, i8* }** %"$$fundef_11_env_tf_153" + %"$dyndisp_table_155_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_155_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_155_salloc_load", i64 32) + %"$dyndisp_table_155_salloc" = bitcast i8* %"$dyndisp_table_155_salloc_salloc" to [2 x { i8*, i8* }]* + %"$dyndisp_table_155" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_155_salloc" to { i8*, i8* }* + %"$dyndisp_gep_156" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_155", i32 0 + %"$dyndisp_pcast_157" = bitcast { i8*, i8* }* %"$dyndisp_gep_156" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } %"$$fundef_11_cloval_152", { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_157" + store { i8*, i8* }* %"$dyndisp_table_155", { i8*, i8* }** %tf2 + %"$gasrem_158" = load i64, i64* @_gasrem + %"$gascmp_159" = icmp ugt i64 1, %"$gasrem_158" + br i1 %"$gascmp_159", label %"$out_of_gas_160", label %"$have_gas_161" + +"$out_of_gas_160": ; preds = %"$have_gas_147" + call void @_out_of_gas() + br label %"$have_gas_161" + +"$have_gas_161": ; preds = %"$out_of_gas_160", %"$have_gas_147" + %"$consume_162" = sub i64 %"$gasrem_158", 1 + store i64 %"$consume_162", i64* @_gasrem %f = alloca { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } - %"$tf2_113" = load { i8*, i8* }*, { i8*, i8* }** %tf2 - %"$tf2_114" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf2_113", i32 0 - %"$tf2_115" = bitcast { i8*, i8* }* %"$tf2_114" to { { i8*, i8* }* (i8*)*, i8* }* - %"$tf2_116" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf2_115" - %"$tf2_fptr_117" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf2_116", 0 - %"$tf2_envptr_118" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf2_116", 1 - %"$tf2_call_119" = call { i8*, i8* }* %"$tf2_fptr_117"(i8* %"$tf2_envptr_118") - %"$tf2_120" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf2_call_119", i32 1 - %"$tf2_121" = bitcast { i8*, i8* }* %"$tf2_120" to { { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)*, i8* }* - %"$tf2_122" = load { { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)*, i8* }, { { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)*, i8* }* %"$tf2_121" - %"$tf2_fptr_123" = extractvalue { { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)*, i8* } %"$tf2_122", 0 - %"$tf2_envptr_124" = extractvalue { { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)*, i8* } %"$tf2_122", 1 - %"$tf2_call_125" = call { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } %"$tf2_fptr_123"(i8* %"$tf2_envptr_124") - store { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } %"$tf2_call_125", { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* }* %f + %"$gasrem_163" = load i64, i64* @_gasrem + %"$gascmp_164" = icmp ugt i64 1, %"$gasrem_163" + br i1 %"$gascmp_164", label %"$out_of_gas_165", label %"$have_gas_166" + +"$out_of_gas_165": ; preds = %"$have_gas_161" + call void @_out_of_gas() + br label %"$have_gas_166" + +"$have_gas_166": ; preds = %"$out_of_gas_165", %"$have_gas_161" + %"$consume_167" = sub i64 %"$gasrem_163", 1 + store i64 %"$consume_167", i64* @_gasrem + %"$tf2_168" = load { i8*, i8* }*, { i8*, i8* }** %tf2 + %"$tf2_169" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf2_168", i32 0 + %"$tf2_170" = bitcast { i8*, i8* }* %"$tf2_169" to { { i8*, i8* }* (i8*)*, i8* }* + %"$tf2_171" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf2_170" + %"$tf2_fptr_172" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf2_171", 0 + %"$tf2_envptr_173" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf2_171", 1 + %"$tf2_call_174" = call { i8*, i8* }* %"$tf2_fptr_172"(i8* %"$tf2_envptr_173") + %"$tf2_175" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf2_call_174", i32 1 + %"$tf2_176" = bitcast { i8*, i8* }* %"$tf2_175" to { { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)*, i8* }* + %"$tf2_177" = load { { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)*, i8* }, { { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)*, i8* }* %"$tf2_176" + %"$tf2_fptr_178" = extractvalue { { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)*, i8* } %"$tf2_177", 0 + %"$tf2_envptr_179" = extractvalue { { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } (i8*)*, i8* } %"$tf2_177", 1 + %"$tf2_call_180" = call { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } %"$tf2_fptr_178"(i8* %"$tf2_envptr_179") + store { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } %"$tf2_call_180", { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* }* %f + %"$gasrem_181" = load i64, i64* @_gasrem + %"$gascmp_182" = icmp ugt i64 1, %"$gasrem_181" + br i1 %"$gascmp_182", label %"$out_of_gas_183", label %"$have_gas_184" + +"$out_of_gas_183": ; preds = %"$have_gas_166" + call void @_out_of_gas() + br label %"$have_gas_184" + +"$have_gas_184": ; preds = %"$out_of_gas_183", %"$have_gas_166" + %"$consume_185" = sub i64 %"$gasrem_181", 1 + store i64 %"$consume_185", i64* @_gasrem %one = alloca %Int32 + %"$gasrem_186" = load i64, i64* @_gasrem + %"$gascmp_187" = icmp ugt i64 1, %"$gasrem_186" + br i1 %"$gascmp_187", label %"$out_of_gas_188", label %"$have_gas_189" + +"$out_of_gas_188": ; preds = %"$have_gas_184" + call void @_out_of_gas() + br label %"$have_gas_189" + +"$have_gas_189": ; preds = %"$out_of_gas_188", %"$have_gas_184" + %"$consume_190" = sub i64 %"$gasrem_186", 1 + store i64 %"$consume_190", i64* @_gasrem store %Int32 { i32 1 }, %Int32* %one + %"$gasrem_191" = load i64, i64* @_gasrem + %"$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_189" + call void @_out_of_gas() + br label %"$have_gas_194" + +"$have_gas_194": ; preds = %"$out_of_gas_193", %"$have_gas_189" + %"$consume_195" = sub i64 %"$gasrem_191", 1 + store i64 %"$consume_195", i64* @_gasrem %two = alloca %Int64 + %"$gasrem_196" = load i64, i64* @_gasrem + %"$gascmp_197" = icmp ugt i64 1, %"$gasrem_196" + br i1 %"$gascmp_197", label %"$out_of_gas_198", label %"$have_gas_199" + +"$out_of_gas_198": ; preds = %"$have_gas_194" + call void @_out_of_gas() + br label %"$have_gas_199" + +"$have_gas_199": ; preds = %"$out_of_gas_198", %"$have_gas_194" + %"$consume_200" = sub i64 %"$gasrem_196", 1 + store i64 %"$consume_200", i64* @_gasrem store %Int64 { i64 2 }, %Int64* %two + %"$gasrem_201" = load i64, i64* @_gasrem + %"$gascmp_202" = icmp ugt i64 1, %"$gasrem_201" + br i1 %"$gascmp_202", label %"$out_of_gas_203", label %"$have_gas_204" + +"$out_of_gas_203": ; preds = %"$have_gas_199" + call void @_out_of_gas() + br label %"$have_gas_204" + +"$have_gas_204": ; preds = %"$out_of_gas_203", %"$have_gas_199" + %"$consume_205" = sub i64 %"$gasrem_201", 1 + store i64 %"$consume_205", i64* @_gasrem %"$f_0" = alloca { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } - %"$f_126" = load { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* }, { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* }* %f - %"$f_fptr_127" = extractvalue { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } %"$f_126", 0 - %"$f_envptr_128" = extractvalue { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } %"$f_126", 1 - %"$one_129" = load %Int32, %Int32* %one - %"$f_call_130" = call { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } %"$f_fptr_127"(i8* %"$f_envptr_128", %Int32 %"$one_129") - store { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } %"$f_call_130", { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* }* %"$f_0" + %"$f_206" = load { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* }, { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* }* %f + %"$f_fptr_207" = extractvalue { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } %"$f_206", 0 + %"$f_envptr_208" = extractvalue { { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } (i8*, %Int32)*, i8* } %"$f_206", 1 + %"$one_209" = load %Int32, %Int32* %one + %"$f_call_210" = call { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } %"$f_fptr_207"(i8* %"$f_envptr_208", %Int32 %"$one_209") + store { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } %"$f_call_210", { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* }* %"$f_0" %"$f_1" = alloca %TName_Pair_Int32_Int64* - %"$$f_0_131" = load { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* }, { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* }* %"$f_0" - %"$$f_0_fptr_132" = extractvalue { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } %"$$f_0_131", 0 - %"$$f_0_envptr_133" = extractvalue { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } %"$$f_0_131", 1 - %"$two_134" = load %Int64, %Int64* %two - %"$$f_0_call_135" = call %TName_Pair_Int32_Int64* %"$$f_0_fptr_132"(i8* %"$$f_0_envptr_133", %Int64 %"$two_134") - store %TName_Pair_Int32_Int64* %"$$f_0_call_135", %TName_Pair_Int32_Int64** %"$f_1" - %"$$f_1_136" = load %TName_Pair_Int32_Int64*, %TName_Pair_Int32_Int64** %"$f_1" - store %TName_Pair_Int32_Int64* %"$$f_1_136", %TName_Pair_Int32_Int64** %"$expr_2" - %"$$expr_2_137" = load %TName_Pair_Int32_Int64*, %TName_Pair_Int32_Int64** %"$expr_2" - ret %TName_Pair_Int32_Int64* %"$$expr_2_137" + %"$$f_0_211" = load { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* }, { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* }* %"$f_0" + %"$$f_0_fptr_212" = extractvalue { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } %"$$f_0_211", 0 + %"$$f_0_envptr_213" = extractvalue { %TName_Pair_Int32_Int64* (i8*, %Int64)*, i8* } %"$$f_0_211", 1 + %"$two_214" = load %Int64, %Int64* %two + %"$$f_0_call_215" = call %TName_Pair_Int32_Int64* %"$$f_0_fptr_212"(i8* %"$$f_0_envptr_213", %Int64 %"$two_214") + store %TName_Pair_Int32_Int64* %"$$f_0_call_215", %TName_Pair_Int32_Int64** %"$f_1" + %"$$f_1_216" = load %TName_Pair_Int32_Int64*, %TName_Pair_Int32_Int64** %"$f_1" + store %TName_Pair_Int32_Int64* %"$$f_1_216", %TName_Pair_Int32_Int64** %"$expr_2" + %"$$expr_2_217" = load %TName_Pair_Int32_Int64*, %TName_Pair_Int32_Int64** %"$expr_2" + ret %TName_Pair_Int32_Int64* %"$$expr_2_217" } declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_138" = call %TName_Pair_Int32_Int64* @"$scilla_expr_97"(i8* null) - %"$memvoidcast_139" = bitcast %TName_Pair_Int32_Int64* %"$exprval_138" to i8* - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_Int32_Int64_45", i8* %"$memvoidcast_139") + %"$exprval_218" = call %TName_Pair_Int32_Int64* @"$scilla_expr_122"(i8* null) + %"$memvoidcast_219" = bitcast %TName_Pair_Int32_Int64* %"$exprval_218" to i8* + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_Int32_Int64_45", i8* %"$memvoidcast_219") ret void } diff --git a/testsuite/expr/tname_clash.ll.result b/testsuite/expr/tname_clash.ll.result index 63e96eea..ee7353a9 100644 --- a/testsuite/expr/tname_clash.ll.result +++ b/testsuite/expr/tname_clash.ll.result @@ -1 +1,2 @@ Pair(1 : Int32)(2 : Int64) : Pair (Int32) (Int64) +Gas remaining: 9999984 diff --git a/testsuite/expr/typ-inst.ll b/testsuite/expr/typ-inst.ll index 943a1ff8..0e1c8354 100644 --- a/testsuite/expr/typ-inst.ll +++ b/testsuite/expr/typ-inst.ll @@ -19,6 +19,7 @@ target triple = "x86_64-pc-linux-gnu" %"$$fundef_2_env_40" = type {} @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_7" = global %"$TyDescrTy_PrimTyp_6" zeroinitializer @"$TyDescr_Int32_8" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_6"* @"$TyDescr_Int32_Prim_7" to i8*) } @"$TyDescr_Uint32_Prim_9" = global %"$TyDescrTy_PrimTyp_6" { i32 1, i32 0 } @@ -51,58 +52,159 @@ target triple = "x86_64-pc-linux-gnu" define internal %Uint32 @"$fundef_4"(%"$$fundef_4_env_39"* %0, %Uint32 %1) { entry: %"$retval_5" = alloca %Uint32 + %"$gasrem_50" = load i64, i64* @_gasrem + %"$gascmp_51" = icmp ugt i64 1, %"$gasrem_50" + br i1 %"$gascmp_51", label %"$out_of_gas_52", label %"$have_gas_53" + +"$out_of_gas_52": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_53" + +"$have_gas_53": ; preds = %"$out_of_gas_52", %entry + %"$consume_54" = sub i64 %"$gasrem_50", 1 + store i64 %"$consume_54", i64* @_gasrem store %Uint32 %1, %Uint32* %"$retval_5" - %"$$retval_5_45" = load %Uint32, %Uint32* %"$retval_5" - ret %Uint32 %"$$retval_5_45" + %"$$retval_5_55" = load %Uint32, %Uint32* %"$retval_5" + ret %Uint32 %"$$retval_5_55" } define internal { %Uint32 (i8*, %Uint32)*, i8* } @"$fundef_2"(%"$$fundef_2_env_40"* %0) { entry: %"$retval_3" = alloca { %Uint32 (i8*, %Uint32)*, i8* } + %"$gasrem_41" = load i64, i64* @_gasrem + %"$gascmp_42" = icmp ugt i64 1, %"$gasrem_41" + br i1 %"$gascmp_42", label %"$out_of_gas_43", label %"$have_gas_44" + +"$out_of_gas_43": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_44" + +"$have_gas_44": ; preds = %"$out_of_gas_43", %entry + %"$consume_45" = sub i64 %"$gasrem_41", 1 + store i64 %"$consume_45", i64* @_gasrem store { %Uint32 (i8*, %Uint32)*, i8* } { %Uint32 (i8*, %Uint32)* bitcast (%Uint32 (%"$$fundef_4_env_39"*, %Uint32)* @"$fundef_4" to %Uint32 (i8*, %Uint32)*), i8* null }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_3" - %"$$retval_3_44" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_3" - ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_3_44" + %"$$retval_3_49" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %"$retval_3" + ret { %Uint32 (i8*, %Uint32)*, i8* } %"$$retval_3_49" } +declare void @_out_of_gas() + define void @_init_libs() { entry: ret void } -define internal %Uint32 @"$scilla_expr_46"(i8* %0) { +define internal %Uint32 @"$scilla_expr_56"(i8* %0) { entry: %"$expr_1" = alloca %Uint32 + %"$gasrem_57" = load i64, i64* @_gasrem + %"$gascmp_58" = icmp ugt i64 1, %"$gasrem_57" + br i1 %"$gascmp_58", label %"$out_of_gas_59", label %"$have_gas_60" + +"$out_of_gas_59": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_60" + +"$have_gas_60": ; preds = %"$out_of_gas_59", %entry + %"$consume_61" = sub i64 %"$gasrem_57", 1 + store i64 %"$consume_61", i64* @_gasrem %tf = alloca { i8*, i8* }* - %"$dyndisp_table_50_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_50_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_50_salloc_load", i64 16) - %"$dyndisp_table_50_salloc" = bitcast i8* %"$dyndisp_table_50_salloc_salloc" to [1 x { i8*, i8* }]* - %"$dyndisp_table_50" = bitcast [1 x { i8*, i8* }]* %"$dyndisp_table_50_salloc" to { i8*, i8* }* - %"$dyndisp_gep_51" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_50", i32 0 - %"$dyndisp_pcast_52" = bitcast { i8*, i8* }* %"$dyndisp_gep_51" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* - store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %Uint32)*, i8* } (%"$$fundef_2_env_40"*)* @"$fundef_2" to { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*), i8* null }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_52" - store { i8*, i8* }* %"$dyndisp_table_50", { i8*, i8* }** %tf + %"$gasrem_62" = load i64, i64* @_gasrem + %"$gascmp_63" = icmp ugt i64 1, %"$gasrem_62" + br i1 %"$gascmp_63", label %"$out_of_gas_64", label %"$have_gas_65" + +"$out_of_gas_64": ; preds = %"$have_gas_60" + call void @_out_of_gas() + br label %"$have_gas_65" + +"$have_gas_65": ; preds = %"$out_of_gas_64", %"$have_gas_60" + %"$consume_66" = sub i64 %"$gasrem_62", 1 + store i64 %"$consume_66", i64* @_gasrem + %"$dyndisp_table_70_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_70_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_70_salloc_load", i64 16) + %"$dyndisp_table_70_salloc" = bitcast i8* %"$dyndisp_table_70_salloc_salloc" to [1 x { i8*, i8* }]* + %"$dyndisp_table_70" = bitcast [1 x { i8*, i8* }]* %"$dyndisp_table_70_salloc" to { i8*, i8* }* + %"$dyndisp_gep_71" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_70", i32 0 + %"$dyndisp_pcast_72" = bitcast { i8*, i8* }* %"$dyndisp_gep_71" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* + store { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)* bitcast ({ %Uint32 (i8*, %Uint32)*, i8* } (%"$$fundef_2_env_40"*)* @"$fundef_2" to { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*), i8* null }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_72" + store { i8*, i8* }* %"$dyndisp_table_70", { i8*, i8* }** %tf + %"$gasrem_73" = load i64, i64* @_gasrem + %"$gascmp_74" = icmp ugt i64 1, %"$gasrem_73" + br i1 %"$gascmp_74", label %"$out_of_gas_75", label %"$have_gas_76" + +"$out_of_gas_75": ; preds = %"$have_gas_65" + call void @_out_of_gas() + br label %"$have_gas_76" + +"$have_gas_76": ; preds = %"$out_of_gas_75", %"$have_gas_65" + %"$consume_77" = sub i64 %"$gasrem_73", 1 + store i64 %"$consume_77", i64* @_gasrem %t = alloca { %Uint32 (i8*, %Uint32)*, i8* } - %"$tf_53" = load { i8*, i8* }*, { i8*, i8* }** %tf - %"$tf_54" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_53", i32 0 - %"$tf_55" = bitcast { i8*, i8* }* %"$tf_54" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* - %"$tf_56" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$tf_55" - %"$tf_fptr_57" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf_56", 0 - %"$tf_envptr_58" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf_56", 1 - %"$tf_call_59" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$tf_fptr_57"(i8* %"$tf_envptr_58") - store { %Uint32 (i8*, %Uint32)*, i8* } %"$tf_call_59", { %Uint32 (i8*, %Uint32)*, i8* }* %t + %"$gasrem_78" = load i64, i64* @_gasrem + %"$gascmp_79" = icmp ugt i64 1, %"$gasrem_78" + br i1 %"$gascmp_79", label %"$out_of_gas_80", label %"$have_gas_81" + +"$out_of_gas_80": ; preds = %"$have_gas_76" + call void @_out_of_gas() + br label %"$have_gas_81" + +"$have_gas_81": ; preds = %"$out_of_gas_80", %"$have_gas_76" + %"$consume_82" = sub i64 %"$gasrem_78", 1 + store i64 %"$consume_82", i64* @_gasrem + %"$tf_83" = load { i8*, i8* }*, { i8*, i8* }** %tf + %"$tf_84" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_83", i32 0 + %"$tf_85" = bitcast { i8*, i8* }* %"$tf_84" to { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* + %"$tf_86" = load { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }, { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$tf_85" + %"$tf_fptr_87" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf_86", 0 + %"$tf_envptr_88" = extractvalue { { %Uint32 (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf_86", 1 + %"$tf_call_89" = call { %Uint32 (i8*, %Uint32)*, i8* } %"$tf_fptr_87"(i8* %"$tf_envptr_88") + store { %Uint32 (i8*, %Uint32)*, i8* } %"$tf_call_89", { %Uint32 (i8*, %Uint32)*, i8* }* %t + %"$gasrem_90" = load i64, i64* @_gasrem + %"$gascmp_91" = icmp ugt i64 1, %"$gasrem_90" + br i1 %"$gascmp_91", label %"$out_of_gas_92", label %"$have_gas_93" + +"$out_of_gas_92": ; preds = %"$have_gas_81" + call void @_out_of_gas() + br label %"$have_gas_93" + +"$have_gas_93": ; preds = %"$out_of_gas_92", %"$have_gas_81" + %"$consume_94" = sub i64 %"$gasrem_90", 1 + store i64 %"$consume_94", i64* @_gasrem %one = alloca %Uint32 + %"$gasrem_95" = load i64, i64* @_gasrem + %"$gascmp_96" = icmp ugt i64 1, %"$gasrem_95" + br i1 %"$gascmp_96", label %"$out_of_gas_97", label %"$have_gas_98" + +"$out_of_gas_97": ; preds = %"$have_gas_93" + call void @_out_of_gas() + br label %"$have_gas_98" + +"$have_gas_98": ; preds = %"$out_of_gas_97", %"$have_gas_93" + %"$consume_99" = sub i64 %"$gasrem_95", 1 + store i64 %"$consume_99", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %one + %"$gasrem_100" = load i64, i64* @_gasrem + %"$gascmp_101" = icmp ugt i64 1, %"$gasrem_100" + br i1 %"$gascmp_101", label %"$out_of_gas_102", label %"$have_gas_103" + +"$out_of_gas_102": ; preds = %"$have_gas_98" + call void @_out_of_gas() + br label %"$have_gas_103" + +"$have_gas_103": ; preds = %"$out_of_gas_102", %"$have_gas_98" + %"$consume_104" = sub i64 %"$gasrem_100", 1 + store i64 %"$consume_104", i64* @_gasrem %"$t_0" = alloca %Uint32 - %"$t_60" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %t - %"$t_fptr_61" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$t_60", 0 - %"$t_envptr_62" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$t_60", 1 - %"$one_63" = load %Uint32, %Uint32* %one - %"$t_call_64" = call %Uint32 %"$t_fptr_61"(i8* %"$t_envptr_62", %Uint32 %"$one_63") - store %Uint32 %"$t_call_64", %Uint32* %"$t_0" - %"$$t_0_65" = load %Uint32, %Uint32* %"$t_0" - store %Uint32 %"$$t_0_65", %Uint32* %"$expr_1" - %"$$expr_1_66" = load %Uint32, %Uint32* %"$expr_1" - ret %Uint32 %"$$expr_1_66" + %"$t_105" = load { %Uint32 (i8*, %Uint32)*, i8* }, { %Uint32 (i8*, %Uint32)*, i8* }* %t + %"$t_fptr_106" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$t_105", 0 + %"$t_envptr_107" = extractvalue { %Uint32 (i8*, %Uint32)*, i8* } %"$t_105", 1 + %"$one_108" = load %Uint32, %Uint32* %one + %"$t_call_109" = call %Uint32 %"$t_fptr_106"(i8* %"$t_envptr_107", %Uint32 %"$one_108") + store %Uint32 %"$t_call_109", %Uint32* %"$t_0" + %"$$t_0_110" = load %Uint32, %Uint32* %"$t_0" + store %Uint32 %"$$t_0_110", %Uint32* %"$expr_1" + %"$$expr_1_111" = load %Uint32, %Uint32* %"$expr_1" + ret %Uint32 %"$$expr_1_111" } declare i8* @_salloc(i8*, i64) @@ -111,10 +213,10 @@ declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_67" = call %Uint32 @"$scilla_expr_46"(i8* null) - %"$pval_68" = alloca %Uint32 - %"$memvoidcast_69" = bitcast %Uint32* %"$pval_68" to i8* - store %Uint32 %"$exprval_67", %Uint32* %"$pval_68" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_10", i8* %"$memvoidcast_69") + %"$exprval_112" = call %Uint32 @"$scilla_expr_56"(i8* null) + %"$pval_113" = alloca %Uint32 + %"$memvoidcast_114" = bitcast %Uint32* %"$pval_113" to i8* + store %Uint32 %"$exprval_112", %Uint32* %"$pval_113" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Uint32_10", i8* %"$memvoidcast_114") ret void } diff --git a/testsuite/expr/typ-inst.ll.result b/testsuite/expr/typ-inst.ll.result index 58801fff..af183437 100644 --- a/testsuite/expr/typ-inst.ll.result +++ b/testsuite/expr/typ-inst.ll.result @@ -1 +1,2 @@ 1 : Uint32 +Gas remaining: 9999991 diff --git a/testsuite/expr/typ1-inst.ll b/testsuite/expr/typ1-inst.ll index bd3bb73b..a9554305 100644 --- a/testsuite/expr/typ1-inst.ll +++ b/testsuite/expr/typ1-inst.ll @@ -25,6 +25,7 @@ target triple = "x86_64-pc-linux-gnu" %"$$fundef_3_env_47" = type {} @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_12" = global %"$TyDescrTy_PrimTyp_11" zeroinitializer @"$TyDescr_Int32_13" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_11"* @"$TyDescr_Int32_Prim_12" to i8*) } @"$TyDescr_Uint32_Prim_14" = global %"$TyDescrTy_PrimTyp_11" { i32 1, i32 0 } @@ -57,42 +58,88 @@ target triple = "x86_64-pc-linux-gnu" define internal %Int32 @"$fundef_9"(%"$$fundef_9_env_44"* %0, %Int32 %1) { entry: %"$retval_10" = alloca %Int32 + %"$gasrem_78" = load i64, i64* @_gasrem + %"$gascmp_79" = icmp ugt i64 1, %"$gasrem_78" + br i1 %"$gascmp_79", label %"$out_of_gas_80", label %"$have_gas_81" + +"$out_of_gas_80": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_81" + +"$have_gas_81": ; preds = %"$out_of_gas_80", %entry + %"$consume_82" = sub i64 %"$gasrem_78", 1 + store i64 %"$consume_82", i64* @_gasrem store %Int32 %1, %Int32* %"$retval_10" - %"$$retval_10_63" = load %Int32, %Int32* %"$retval_10" - ret %Int32 %"$$retval_10_63" + %"$$retval_10_83" = load %Int32, %Int32* %"$retval_10" + ret %Int32 %"$$retval_10_83" } define internal { %Int32 (i8*, %Int32)*, i8* } @"$fundef_7"(%"$$fundef_7_env_45"* %0, %Uint32 %1) { entry: %"$retval_8" = alloca { %Int32 (i8*, %Int32)*, i8* } + %"$gasrem_69" = load i64, i64* @_gasrem + %"$gascmp_70" = icmp ugt i64 1, %"$gasrem_69" + br i1 %"$gascmp_70", label %"$out_of_gas_71", label %"$have_gas_72" + +"$out_of_gas_71": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_72" + +"$have_gas_72": ; preds = %"$out_of_gas_71", %entry + %"$consume_73" = sub i64 %"$gasrem_69", 1 + store i64 %"$consume_73", i64* @_gasrem store { %Int32 (i8*, %Int32)*, i8* } { %Int32 (i8*, %Int32)* bitcast (%Int32 (%"$$fundef_9_env_44"*, %Int32)* @"$fundef_9" to %Int32 (i8*, %Int32)*), i8* null }, { %Int32 (i8*, %Int32)*, i8* }* %"$retval_8" - %"$$retval_8_62" = load { %Int32 (i8*, %Int32)*, i8* }, { %Int32 (i8*, %Int32)*, i8* }* %"$retval_8" - ret { %Int32 (i8*, %Int32)*, i8* } %"$$retval_8_62" + %"$$retval_8_77" = load { %Int32 (i8*, %Int32)*, i8* }, { %Int32 (i8*, %Int32)*, i8* }* %"$retval_8" + ret { %Int32 (i8*, %Int32)*, i8* } %"$$retval_8_77" } define internal { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } @"$fundef_5"(%"$$fundef_5_env_46"* %0) { entry: %"$retval_6" = alloca { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } + %"$gasrem_60" = load i64, i64* @_gasrem + %"$gascmp_61" = icmp ugt i64 1, %"$gasrem_60" + br i1 %"$gascmp_61", label %"$out_of_gas_62", label %"$have_gas_63" + +"$out_of_gas_62": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_63" + +"$have_gas_63": ; preds = %"$out_of_gas_62", %entry + %"$consume_64" = sub i64 %"$gasrem_60", 1 + store i64 %"$consume_64", i64* @_gasrem store { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)* bitcast ({ %Int32 (i8*, %Int32)*, i8* } (%"$$fundef_7_env_45"*, %Uint32)* @"$fundef_7" to { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*), i8* null }, { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_6" - %"$$retval_6_58" = load { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_6" - ret { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_6_58" + %"$$retval_6_68" = load { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_6" + ret { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_6_68" } define internal { i8*, i8* }* @"$fundef_3"(%"$$fundef_3_env_47"* %0) { entry: %"$retval_4" = alloca { i8*, i8* }* - %"$dyndisp_table_51_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_51_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_51_salloc_load", i64 32) - %"$dyndisp_table_51_salloc" = bitcast i8* %"$dyndisp_table_51_salloc_salloc" to [2 x { i8*, i8* }]* - %"$dyndisp_table_51" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_51_salloc" to { i8*, i8* }* - %"$dyndisp_gep_52" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_51", i32 1 - %"$dyndisp_pcast_53" = bitcast { i8*, i8* }* %"$dyndisp_gep_52" to { { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* - store { { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } { { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)* bitcast ({ { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (%"$$fundef_5_env_46"*)* @"$fundef_5" to { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*), i8* null }, { { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_53" - store { i8*, i8* }* %"$dyndisp_table_51", { i8*, i8* }** %"$retval_4" - %"$$retval_4_54" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_4" - ret { i8*, i8* }* %"$$retval_4_54" + %"$gasrem_48" = load i64, i64* @_gasrem + %"$gascmp_49" = icmp ugt i64 1, %"$gasrem_48" + br i1 %"$gascmp_49", label %"$out_of_gas_50", label %"$have_gas_51" + +"$out_of_gas_50": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_51" + +"$have_gas_51": ; preds = %"$out_of_gas_50", %entry + %"$consume_52" = sub i64 %"$gasrem_48", 1 + store i64 %"$consume_52", i64* @_gasrem + %"$dyndisp_table_56_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_56_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_56_salloc_load", i64 32) + %"$dyndisp_table_56_salloc" = bitcast i8* %"$dyndisp_table_56_salloc_salloc" to [2 x { i8*, i8* }]* + %"$dyndisp_table_56" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_56_salloc" to { i8*, i8* }* + %"$dyndisp_gep_57" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_56", i32 1 + %"$dyndisp_pcast_58" = bitcast { i8*, i8* }* %"$dyndisp_gep_57" to { { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* + store { { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } { { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)* bitcast ({ { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (%"$$fundef_5_env_46"*)* @"$fundef_5" to { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*), i8* null }, { { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_58" + store { i8*, i8* }* %"$dyndisp_table_56", { i8*, i8* }** %"$retval_4" + %"$$retval_4_59" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_4" + ret { i8*, i8* }* %"$$retval_4_59" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) define void @_init_libs() { @@ -100,65 +147,164 @@ entry: ret void } -define internal %Int32 @"$scilla_expr_64"(i8* %0) { +define internal %Int32 @"$scilla_expr_84"(i8* %0) { entry: %"$expr_2" = alloca %Int32 + %"$gasrem_85" = load i64, i64* @_gasrem + %"$gascmp_86" = icmp ugt i64 1, %"$gasrem_85" + br i1 %"$gascmp_86", label %"$out_of_gas_87", label %"$have_gas_88" + +"$out_of_gas_87": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_88" + +"$have_gas_88": ; preds = %"$out_of_gas_87", %entry + %"$consume_89" = sub i64 %"$gasrem_85", 1 + store i64 %"$consume_89", i64* @_gasrem %tf = alloca { i8*, i8* }* - %"$dyndisp_table_68_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_68_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_68_salloc_load", i64 32) - %"$dyndisp_table_68_salloc" = bitcast i8* %"$dyndisp_table_68_salloc_salloc" to [2 x { i8*, i8* }]* - %"$dyndisp_table_68" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_68_salloc" to { i8*, i8* }* - %"$dyndisp_gep_69" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_68", i32 0 - %"$dyndisp_pcast_70" = bitcast { i8*, i8* }* %"$dyndisp_gep_69" to { { i8*, i8* }* (i8*)*, i8* }* - store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_3_env_47"*)* @"$fundef_3" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_70" - store { i8*, i8* }* %"$dyndisp_table_68", { i8*, i8* }** %tf + %"$gasrem_90" = load i64, i64* @_gasrem + %"$gascmp_91" = icmp ugt i64 1, %"$gasrem_90" + br i1 %"$gascmp_91", label %"$out_of_gas_92", label %"$have_gas_93" + +"$out_of_gas_92": ; preds = %"$have_gas_88" + call void @_out_of_gas() + br label %"$have_gas_93" + +"$have_gas_93": ; preds = %"$out_of_gas_92", %"$have_gas_88" + %"$consume_94" = sub i64 %"$gasrem_90", 1 + store i64 %"$consume_94", i64* @_gasrem + %"$dyndisp_table_98_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_98_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_98_salloc_load", i64 32) + %"$dyndisp_table_98_salloc" = bitcast i8* %"$dyndisp_table_98_salloc_salloc" to [2 x { i8*, i8* }]* + %"$dyndisp_table_98" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_98_salloc" to { i8*, i8* }* + %"$dyndisp_gep_99" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_98", i32 0 + %"$dyndisp_pcast_100" = bitcast { i8*, i8* }* %"$dyndisp_gep_99" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_3_env_47"*)* @"$fundef_3" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_100" + store { i8*, i8* }* %"$dyndisp_table_98", { i8*, i8* }** %tf + %"$gasrem_101" = load i64, i64* @_gasrem + %"$gascmp_102" = icmp ugt i64 1, %"$gasrem_101" + br i1 %"$gascmp_102", label %"$out_of_gas_103", label %"$have_gas_104" + +"$out_of_gas_103": ; preds = %"$have_gas_93" + call void @_out_of_gas() + br label %"$have_gas_104" + +"$have_gas_104": ; preds = %"$out_of_gas_103", %"$have_gas_93" + %"$consume_105" = sub i64 %"$gasrem_101", 1 + store i64 %"$consume_105", i64* @_gasrem %t = alloca { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } - %"$tf_71" = load { i8*, i8* }*, { i8*, i8* }** %tf - %"$tf_72" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_71", i32 0 - %"$tf_73" = bitcast { i8*, i8* }* %"$tf_72" to { { i8*, i8* }* (i8*)*, i8* }* - %"$tf_74" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf_73" - %"$tf_fptr_75" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_74", 0 - %"$tf_envptr_76" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_74", 1 - %"$tf_call_77" = call { i8*, i8* }* %"$tf_fptr_75"(i8* %"$tf_envptr_76") - %"$tf_78" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_call_77", i32 1 - %"$tf_79" = bitcast { i8*, i8* }* %"$tf_78" to { { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* - %"$tf_80" = load { { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }, { { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$tf_79" - %"$tf_fptr_81" = extractvalue { { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf_80", 0 - %"$tf_envptr_82" = extractvalue { { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf_80", 1 - %"$tf_call_83" = call { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$tf_fptr_81"(i8* %"$tf_envptr_82") - store { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$tf_call_83", { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %t + %"$gasrem_106" = load i64, i64* @_gasrem + %"$gascmp_107" = icmp ugt i64 1, %"$gasrem_106" + br i1 %"$gascmp_107", label %"$out_of_gas_108", label %"$have_gas_109" + +"$out_of_gas_108": ; preds = %"$have_gas_104" + call void @_out_of_gas() + br label %"$have_gas_109" + +"$have_gas_109": ; preds = %"$out_of_gas_108", %"$have_gas_104" + %"$consume_110" = sub i64 %"$gasrem_106", 1 + store i64 %"$consume_110", i64* @_gasrem + %"$tf_111" = load { i8*, i8* }*, { i8*, i8* }** %tf + %"$tf_112" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_111", i32 0 + %"$tf_113" = bitcast { i8*, i8* }* %"$tf_112" to { { i8*, i8* }* (i8*)*, i8* }* + %"$tf_114" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf_113" + %"$tf_fptr_115" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_114", 0 + %"$tf_envptr_116" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_114", 1 + %"$tf_call_117" = call { i8*, i8* }* %"$tf_fptr_115"(i8* %"$tf_envptr_116") + %"$tf_118" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_call_117", i32 1 + %"$tf_119" = bitcast { i8*, i8* }* %"$tf_118" to { { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* + %"$tf_120" = load { { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }, { { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$tf_119" + %"$tf_fptr_121" = extractvalue { { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf_120", 0 + %"$tf_envptr_122" = extractvalue { { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf_120", 1 + %"$tf_call_123" = call { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$tf_fptr_121"(i8* %"$tf_envptr_122") + store { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$tf_call_123", { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %t + %"$gasrem_124" = load i64, i64* @_gasrem + %"$gascmp_125" = icmp ugt i64 1, %"$gasrem_124" + br i1 %"$gascmp_125", label %"$out_of_gas_126", label %"$have_gas_127" + +"$out_of_gas_126": ; preds = %"$have_gas_109" + call void @_out_of_gas() + br label %"$have_gas_127" + +"$have_gas_127": ; preds = %"$out_of_gas_126", %"$have_gas_109" + %"$consume_128" = sub i64 %"$gasrem_124", 1 + store i64 %"$consume_128", i64* @_gasrem %one = alloca %Uint32 + %"$gasrem_129" = load i64, i64* @_gasrem + %"$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 store %Uint32 { i32 1 }, %Uint32* %one + %"$gasrem_134" = load i64, i64* @_gasrem + %"$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 %two = alloca %Int32 + %"$gasrem_139" = load i64, i64* @_gasrem + %"$gascmp_140" = icmp ugt i64 1, %"$gasrem_139" + br i1 %"$gascmp_140", label %"$out_of_gas_141", label %"$have_gas_142" + +"$out_of_gas_141": ; preds = %"$have_gas_137" + call void @_out_of_gas() + br label %"$have_gas_142" + +"$have_gas_142": ; preds = %"$out_of_gas_141", %"$have_gas_137" + %"$consume_143" = sub i64 %"$gasrem_139", 1 + store i64 %"$consume_143", i64* @_gasrem store %Int32 { i32 2 }, %Int32* %two + %"$gasrem_144" = load i64, i64* @_gasrem + %"$gascmp_145" = icmp ugt i64 1, %"$gasrem_144" + br i1 %"$gascmp_145", label %"$out_of_gas_146", label %"$have_gas_147" + +"$out_of_gas_146": ; preds = %"$have_gas_142" + call void @_out_of_gas() + br label %"$have_gas_147" + +"$have_gas_147": ; preds = %"$out_of_gas_146", %"$have_gas_142" + %"$consume_148" = sub i64 %"$gasrem_144", 1 + store i64 %"$consume_148", i64* @_gasrem %"$t_0" = alloca { %Int32 (i8*, %Int32)*, i8* } - %"$t_84" = load { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %t - %"$t_fptr_85" = extractvalue { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$t_84", 0 - %"$t_envptr_86" = extractvalue { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$t_84", 1 - %"$one_87" = load %Uint32, %Uint32* %one - %"$t_call_88" = call { %Int32 (i8*, %Int32)*, i8* } %"$t_fptr_85"(i8* %"$t_envptr_86", %Uint32 %"$one_87") - store { %Int32 (i8*, %Int32)*, i8* } %"$t_call_88", { %Int32 (i8*, %Int32)*, i8* }* %"$t_0" + %"$t_149" = load { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }, { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* }* %t + %"$t_fptr_150" = extractvalue { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$t_149", 0 + %"$t_envptr_151" = extractvalue { { %Int32 (i8*, %Int32)*, i8* } (i8*, %Uint32)*, i8* } %"$t_149", 1 + %"$one_152" = load %Uint32, %Uint32* %one + %"$t_call_153" = call { %Int32 (i8*, %Int32)*, i8* } %"$t_fptr_150"(i8* %"$t_envptr_151", %Uint32 %"$one_152") + store { %Int32 (i8*, %Int32)*, i8* } %"$t_call_153", { %Int32 (i8*, %Int32)*, i8* }* %"$t_0" %"$t_1" = alloca %Int32 - %"$$t_0_89" = load { %Int32 (i8*, %Int32)*, i8* }, { %Int32 (i8*, %Int32)*, i8* }* %"$t_0" - %"$$t_0_fptr_90" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$$t_0_89", 0 - %"$$t_0_envptr_91" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$$t_0_89", 1 - %"$two_92" = load %Int32, %Int32* %two - %"$$t_0_call_93" = call %Int32 %"$$t_0_fptr_90"(i8* %"$$t_0_envptr_91", %Int32 %"$two_92") - store %Int32 %"$$t_0_call_93", %Int32* %"$t_1" - %"$$t_1_94" = load %Int32, %Int32* %"$t_1" - store %Int32 %"$$t_1_94", %Int32* %"$expr_2" - %"$$expr_2_95" = load %Int32, %Int32* %"$expr_2" - ret %Int32 %"$$expr_2_95" + %"$$t_0_154" = load { %Int32 (i8*, %Int32)*, i8* }, { %Int32 (i8*, %Int32)*, i8* }* %"$t_0" + %"$$t_0_fptr_155" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$$t_0_154", 0 + %"$$t_0_envptr_156" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$$t_0_154", 1 + %"$two_157" = load %Int32, %Int32* %two + %"$$t_0_call_158" = call %Int32 %"$$t_0_fptr_155"(i8* %"$$t_0_envptr_156", %Int32 %"$two_157") + store %Int32 %"$$t_0_call_158", %Int32* %"$t_1" + %"$$t_1_159" = load %Int32, %Int32* %"$t_1" + store %Int32 %"$$t_1_159", %Int32* %"$expr_2" + %"$$expr_2_160" = load %Int32, %Int32* %"$expr_2" + ret %Int32 %"$$expr_2_160" } declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_96" = call %Int32 @"$scilla_expr_64"(i8* null) - %"$pval_97" = alloca %Int32 - %"$memvoidcast_98" = bitcast %Int32* %"$pval_97" to i8* - store %Int32 %"$exprval_96", %Int32* %"$pval_97" - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_13", i8* %"$memvoidcast_98") + %"$exprval_161" = call %Int32 @"$scilla_expr_84"(i8* null) + %"$pval_162" = alloca %Int32 + %"$memvoidcast_163" = bitcast %Int32* %"$pval_162" to i8* + store %Int32 %"$exprval_161", %Int32* %"$pval_162" + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_Int32_13", i8* %"$memvoidcast_163") ret void } diff --git a/testsuite/expr/typ1-inst.ll.result b/testsuite/expr/typ1-inst.ll.result index 0e76b068..57f41a4b 100644 --- a/testsuite/expr/typ1-inst.ll.result +++ b/testsuite/expr/typ1-inst.ll.result @@ -1 +1,2 @@ 2 : Int32 +Gas remaining: 9999987 diff --git a/testsuite/expr/typ2-inst.ll b/testsuite/expr/typ2-inst.ll index bc42ab6d..fd9496fd 100644 --- a/testsuite/expr/typ2-inst.ll +++ b/testsuite/expr/typ2-inst.ll @@ -57,6 +57,7 @@ target triple = "x86_64-pc-linux-gnu" %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)" = type <{ i8, %TName_Pair_Uint32_Uint64*, %TName_Pair_String_ByStr20* }> @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_30" = global %"$TyDescrTy_PrimTyp_29" zeroinitializer @"$TyDescr_Int32_31" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_29"* @"$TyDescr_Int32_Prim_30" to i8*) } @"$TyDescr_Uint32_Prim_32" = global %"$TyDescrTy_PrimTyp_29" { i32 1, i32 0 } @@ -111,235 +112,369 @@ target triple = "x86_64-pc-linux-gnu" @"$TyDescr_Pair_Uint32_Uint64_ADTTyp_Specl_85" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_60" { %_TyDescrTy_Typ** getelementptr inbounds ([2 x %_TyDescrTy_Typ*], [2 x %_TyDescrTy_Typ*]* @"$TyDescr_Pair_Uint32_Uint64_ADTTyp_Specl_m_TArgs_84", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_62"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Constr_62"*], [1 x %"$TyDescrTy_ADTTyp_Constr_62"*]* @"$TyDescr_Pair_Uint32_Uint64_ADTTyp_Specl_m_constrs_83", i32 0, i32 0), %"$TyDescrTy_ADTTyp_61"* @"$TyDescr_Pair_ADTTyp_67" } @"$TyDescr_Pair_ADTTyp_m_specls_86" = unnamed_addr constant [3 x %"$TyDescrTy_ADTTyp_Specl_60"*] [%"$TyDescrTy_ADTTyp_Specl_60"* @"$TyDescr_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)_ADTTyp_Specl_73", %"$TyDescrTy_ADTTyp_Specl_60"* @"$TyDescr_Pair_String_ByStr20_ADTTyp_Specl_79", %"$TyDescrTy_ADTTyp_Specl_60"* @"$TyDescr_Pair_Uint32_Uint64_ADTTyp_Specl_85"] @"$TyDescr_ADT_Pair_87" = unnamed_addr constant [4 x i8] c"Pair" -@"$stringlit_260" = unnamed_addr constant [5 x i8] c"hello" +@"$stringlit_390" = unnamed_addr constant [5 x i8] c"hello" define internal { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } @"$fundef_27"(%"$$fundef_27_env_88"* %0) { entry: - %"$$fundef_27_env_tf_192" = getelementptr inbounds %"$$fundef_27_env_88", %"$$fundef_27_env_88"* %0, i32 0, i32 0 - %"$tf_envload_193" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_27_env_tf_192" + %"$$fundef_27_env_tf_247" = getelementptr inbounds %"$$fundef_27_env_88", %"$$fundef_27_env_88"* %0, i32 0, i32 0 + %"$tf_envload_248" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_27_env_tf_247" %tf = alloca { i8*, i8* }* - store { i8*, i8* }* %"$tf_envload_193", { i8*, i8* }** %tf + store { i8*, i8* }* %"$tf_envload_248", { i8*, i8* }** %tf %"$retval_28" = alloca { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } - %"$tf_194" = load { i8*, i8* }*, { i8*, i8* }** %tf - %"$tf_195" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_194", i32 2 - %"$tf_196" = bitcast { i8*, i8* }* %"$tf_195" to { { i8*, i8* }* (i8*)*, i8* }* - %"$tf_197" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf_196" - %"$tf_fptr_198" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_197", 0 - %"$tf_envptr_199" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_197", 1 - %"$tf_call_200" = call { i8*, i8* }* %"$tf_fptr_198"(i8* %"$tf_envptr_199") - %"$tf_201" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_call_200", i32 3 - %"$tf_202" = bitcast { i8*, i8* }* %"$tf_201" to { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }* - %"$tf_203" = load { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }, { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }* %"$tf_202" - %"$tf_fptr_204" = extractvalue { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* } %"$tf_203", 0 - %"$tf_envptr_205" = extractvalue { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* } %"$tf_203", 1 - %"$tf_call_206" = call { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } %"$tf_fptr_204"(i8* %"$tf_envptr_205") - store { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } %"$tf_call_206", { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* }* %"$retval_28" - %"$$retval_28_207" = load { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* }, { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* }* %"$retval_28" - ret { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } %"$$retval_28_207" + %"$gasrem_249" = load i64, i64* @_gasrem + %"$gascmp_250" = icmp ugt i64 1, %"$gasrem_249" + br i1 %"$gascmp_250", label %"$out_of_gas_251", label %"$have_gas_252" + +"$out_of_gas_251": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_252" + +"$have_gas_252": ; preds = %"$out_of_gas_251", %entry + %"$consume_253" = sub i64 %"$gasrem_249", 1 + store i64 %"$consume_253", i64* @_gasrem + %"$tf_254" = load { i8*, i8* }*, { i8*, i8* }** %tf + %"$tf_255" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_254", i32 2 + %"$tf_256" = bitcast { i8*, i8* }* %"$tf_255" to { { i8*, i8* }* (i8*)*, i8* }* + %"$tf_257" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf_256" + %"$tf_fptr_258" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_257", 0 + %"$tf_envptr_259" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_257", 1 + %"$tf_call_260" = call { i8*, i8* }* %"$tf_fptr_258"(i8* %"$tf_envptr_259") + %"$tf_261" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_call_260", i32 3 + %"$tf_262" = bitcast { i8*, i8* }* %"$tf_261" to { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }* + %"$tf_263" = load { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }, { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }* %"$tf_262" + %"$tf_fptr_264" = extractvalue { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* } %"$tf_263", 0 + %"$tf_envptr_265" = extractvalue { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* } %"$tf_263", 1 + %"$tf_call_266" = call { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } %"$tf_fptr_264"(i8* %"$tf_envptr_265") + store { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } %"$tf_call_266", { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* }* %"$retval_28" + %"$$retval_28_267" = load { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* }, { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* }* %"$retval_28" + ret { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } %"$$retval_28_267" } define internal { i8*, i8* }* @"$fundef_25"(%"$$fundef_25_env_89"* %0) { entry: - %"$$fundef_25_env_tf_180" = getelementptr inbounds %"$$fundef_25_env_89", %"$$fundef_25_env_89"* %0, i32 0, i32 0 - %"$tf_envload_181" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_25_env_tf_180" + %"$$fundef_25_env_tf_230" = getelementptr inbounds %"$$fundef_25_env_89", %"$$fundef_25_env_89"* %0, i32 0, i32 0 + %"$tf_envload_231" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_25_env_tf_230" %tf = alloca { i8*, i8* }* - store { i8*, i8* }* %"$tf_envload_181", { i8*, i8* }** %tf + store { i8*, i8* }* %"$tf_envload_231", { i8*, i8* }** %tf %"$retval_26" = alloca { i8*, i8* }* - %"$$fundef_27_envp_182_load" = load i8*, i8** @_execptr - %"$$fundef_27_envp_182_salloc" = call i8* @_salloc(i8* %"$$fundef_27_envp_182_load", i64 8) - %"$$fundef_27_envp_182" = bitcast i8* %"$$fundef_27_envp_182_salloc" to %"$$fundef_27_env_88"* - %"$$fundef_27_env_voidp_184" = bitcast %"$$fundef_27_env_88"* %"$$fundef_27_envp_182" to i8* - %"$$fundef_27_cloval_185" = insertvalue { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* } { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)* bitcast ({ { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (%"$$fundef_27_env_88"*)* @"$fundef_27" to { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_27_env_voidp_184", 1 - %"$$fundef_27_env_tf_186" = getelementptr inbounds %"$$fundef_27_env_88", %"$$fundef_27_env_88"* %"$$fundef_27_envp_182", i32 0, i32 0 - %"$tf_187" = load { i8*, i8* }*, { i8*, i8* }** %tf - store { i8*, i8* }* %"$tf_187", { i8*, i8* }** %"$$fundef_27_env_tf_186" - %"$dyndisp_table_188_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_188_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_188_salloc_load", i64 64) - %"$dyndisp_table_188_salloc" = bitcast i8* %"$dyndisp_table_188_salloc_salloc" to [4 x { i8*, i8* }]* - %"$dyndisp_table_188" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_188_salloc" to { i8*, i8* }* - %"$dyndisp_gep_189" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_188", i32 3 - %"$dyndisp_pcast_190" = bitcast { i8*, i8* }* %"$dyndisp_gep_189" to { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }* - store { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* } %"$$fundef_27_cloval_185", { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_190" - store { i8*, i8* }* %"$dyndisp_table_188", { i8*, i8* }** %"$retval_26" - %"$$retval_26_191" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_26" - ret { i8*, i8* }* %"$$retval_26_191" + %"$gasrem_232" = load i64, i64* @_gasrem + %"$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 = %entry + call void @_out_of_gas() + br label %"$have_gas_235" + +"$have_gas_235": ; preds = %"$out_of_gas_234", %entry + %"$consume_236" = sub i64 %"$gasrem_232", 1 + store i64 %"$consume_236", i64* @_gasrem + %"$$fundef_27_envp_237_load" = load i8*, i8** @_execptr + %"$$fundef_27_envp_237_salloc" = call i8* @_salloc(i8* %"$$fundef_27_envp_237_load", i64 8) + %"$$fundef_27_envp_237" = bitcast i8* %"$$fundef_27_envp_237_salloc" to %"$$fundef_27_env_88"* + %"$$fundef_27_env_voidp_239" = bitcast %"$$fundef_27_env_88"* %"$$fundef_27_envp_237" to i8* + %"$$fundef_27_cloval_240" = insertvalue { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* } { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)* bitcast ({ { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (%"$$fundef_27_env_88"*)* @"$fundef_27" to { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_27_env_voidp_239", 1 + %"$$fundef_27_env_tf_241" = getelementptr inbounds %"$$fundef_27_env_88", %"$$fundef_27_env_88"* %"$$fundef_27_envp_237", i32 0, i32 0 + %"$tf_242" = load { i8*, i8* }*, { i8*, i8* }** %tf + store { i8*, i8* }* %"$tf_242", { i8*, i8* }** %"$$fundef_27_env_tf_241" + %"$dyndisp_table_243_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_243_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_243_salloc_load", i64 64) + %"$dyndisp_table_243_salloc" = bitcast i8* %"$dyndisp_table_243_salloc_salloc" to [4 x { i8*, i8* }]* + %"$dyndisp_table_243" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_243_salloc" to { i8*, i8* }* + %"$dyndisp_gep_244" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_243", i32 3 + %"$dyndisp_pcast_245" = bitcast { i8*, i8* }* %"$dyndisp_gep_244" to { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }* + store { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* } %"$$fundef_27_cloval_240", { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_245" + store { i8*, i8* }* %"$dyndisp_table_243", { i8*, i8* }** %"$retval_26" + %"$$retval_26_246" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_26" + ret { i8*, i8* }* %"$$retval_26_246" } define internal { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } @"$fundef_23"(%"$$fundef_23_env_90"* %0) { entry: - %"$$fundef_23_env_tf_164" = getelementptr inbounds %"$$fundef_23_env_90", %"$$fundef_23_env_90"* %0, i32 0, i32 0 - %"$tf_envload_165" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_23_env_tf_164" + %"$$fundef_23_env_tf_209" = getelementptr inbounds %"$$fundef_23_env_90", %"$$fundef_23_env_90"* %0, i32 0, i32 0 + %"$tf_envload_210" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_23_env_tf_209" %tf = alloca { i8*, i8* }* - store { i8*, i8* }* %"$tf_envload_165", { i8*, i8* }** %tf + store { i8*, i8* }* %"$tf_envload_210", { i8*, i8* }** %tf %"$retval_24" = alloca { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } - %"$tf_166" = load { i8*, i8* }*, { i8*, i8* }** %tf - %"$tf_167" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_166", i32 0 - %"$tf_168" = bitcast { i8*, i8* }* %"$tf_167" to { { i8*, i8* }* (i8*)*, i8* }* - %"$tf_169" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf_168" - %"$tf_fptr_170" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_169", 0 - %"$tf_envptr_171" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_169", 1 - %"$tf_call_172" = call { i8*, i8* }* %"$tf_fptr_170"(i8* %"$tf_envptr_171") - %"$tf_173" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_call_172", i32 1 - %"$tf_174" = bitcast { i8*, i8* }* %"$tf_173" to { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* - %"$tf_175" = load { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }, { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$tf_174" - %"$tf_fptr_176" = extractvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf_175", 0 - %"$tf_envptr_177" = extractvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf_175", 1 - %"$tf_call_178" = call { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$tf_fptr_176"(i8* %"$tf_envptr_177") - store { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$tf_call_178", { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_24" - %"$$retval_24_179" = load { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }, { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_24" - ret { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_24_179" + %"$gasrem_211" = load i64, i64* @_gasrem + %"$gascmp_212" = icmp ugt i64 1, %"$gasrem_211" + br i1 %"$gascmp_212", label %"$out_of_gas_213", label %"$have_gas_214" + +"$out_of_gas_213": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_214" + +"$have_gas_214": ; preds = %"$out_of_gas_213", %entry + %"$consume_215" = sub i64 %"$gasrem_211", 1 + store i64 %"$consume_215", i64* @_gasrem + %"$tf_216" = load { i8*, i8* }*, { i8*, i8* }** %tf + %"$tf_217" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_216", i32 0 + %"$tf_218" = bitcast { i8*, i8* }* %"$tf_217" to { { i8*, i8* }* (i8*)*, i8* }* + %"$tf_219" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf_218" + %"$tf_fptr_220" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_219", 0 + %"$tf_envptr_221" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_219", 1 + %"$tf_call_222" = call { i8*, i8* }* %"$tf_fptr_220"(i8* %"$tf_envptr_221") + %"$tf_223" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_call_222", i32 1 + %"$tf_224" = bitcast { i8*, i8* }* %"$tf_223" to { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* + %"$tf_225" = load { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }, { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$tf_224" + %"$tf_fptr_226" = extractvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf_225", 0 + %"$tf_envptr_227" = extractvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf_225", 1 + %"$tf_call_228" = call { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$tf_fptr_226"(i8* %"$tf_envptr_227") + store { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$tf_call_228", { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_24" + %"$$retval_24_229" = load { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }, { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_24" + ret { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_24_229" } define internal { i8*, i8* }* @"$fundef_21"(%"$$fundef_21_env_91"* %0) { entry: - %"$$fundef_21_env_tf_152" = getelementptr inbounds %"$$fundef_21_env_91", %"$$fundef_21_env_91"* %0, i32 0, i32 0 - %"$tf_envload_153" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_21_env_tf_152" + %"$$fundef_21_env_tf_192" = getelementptr inbounds %"$$fundef_21_env_91", %"$$fundef_21_env_91"* %0, i32 0, i32 0 + %"$tf_envload_193" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_21_env_tf_192" %tf = alloca { i8*, i8* }* - store { i8*, i8* }* %"$tf_envload_153", { i8*, i8* }** %tf + store { i8*, i8* }* %"$tf_envload_193", { i8*, i8* }** %tf %"$retval_22" = alloca { i8*, i8* }* - %"$$fundef_23_envp_154_load" = load i8*, i8** @_execptr - %"$$fundef_23_envp_154_salloc" = call i8* @_salloc(i8* %"$$fundef_23_envp_154_load", i64 8) - %"$$fundef_23_envp_154" = bitcast i8* %"$$fundef_23_envp_154_salloc" to %"$$fundef_23_env_90"* - %"$$fundef_23_env_voidp_156" = bitcast %"$$fundef_23_env_90"* %"$$fundef_23_envp_154" to i8* - %"$$fundef_23_cloval_157" = insertvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)* bitcast ({ { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (%"$$fundef_23_env_90"*)* @"$fundef_23" to { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_23_env_voidp_156", 1 - %"$$fundef_23_env_tf_158" = getelementptr inbounds %"$$fundef_23_env_90", %"$$fundef_23_env_90"* %"$$fundef_23_envp_154", i32 0, i32 0 - %"$tf_159" = load { i8*, i8* }*, { i8*, i8* }** %tf - store { i8*, i8* }* %"$tf_159", { i8*, i8* }** %"$$fundef_23_env_tf_158" - %"$dyndisp_table_160_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_160_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_160_salloc_load", i64 64) - %"$dyndisp_table_160_salloc" = bitcast i8* %"$dyndisp_table_160_salloc_salloc" to [4 x { i8*, i8* }]* - %"$dyndisp_table_160" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_160_salloc" to { i8*, i8* }* - %"$dyndisp_gep_161" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_160", i32 1 - %"$dyndisp_pcast_162" = bitcast { i8*, i8* }* %"$dyndisp_gep_161" to { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* - store { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$$fundef_23_cloval_157", { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_162" - store { i8*, i8* }* %"$dyndisp_table_160", { i8*, i8* }** %"$retval_22" - %"$$retval_22_163" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_22" - ret { i8*, i8* }* %"$$retval_22_163" + %"$gasrem_194" = load i64, i64* @_gasrem + %"$gascmp_195" = icmp ugt i64 1, %"$gasrem_194" + br i1 %"$gascmp_195", label %"$out_of_gas_196", label %"$have_gas_197" + +"$out_of_gas_196": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_197" + +"$have_gas_197": ; preds = %"$out_of_gas_196", %entry + %"$consume_198" = sub i64 %"$gasrem_194", 1 + store i64 %"$consume_198", i64* @_gasrem + %"$$fundef_23_envp_199_load" = load i8*, i8** @_execptr + %"$$fundef_23_envp_199_salloc" = call i8* @_salloc(i8* %"$$fundef_23_envp_199_load", i64 8) + %"$$fundef_23_envp_199" = bitcast i8* %"$$fundef_23_envp_199_salloc" to %"$$fundef_23_env_90"* + %"$$fundef_23_env_voidp_201" = bitcast %"$$fundef_23_env_90"* %"$$fundef_23_envp_199" to i8* + %"$$fundef_23_cloval_202" = insertvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)* bitcast ({ { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (%"$$fundef_23_env_90"*)* @"$fundef_23" to { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_23_env_voidp_201", 1 + %"$$fundef_23_env_tf_203" = getelementptr inbounds %"$$fundef_23_env_90", %"$$fundef_23_env_90"* %"$$fundef_23_envp_199", i32 0, i32 0 + %"$tf_204" = load { i8*, i8* }*, { i8*, i8* }** %tf + store { i8*, i8* }* %"$tf_204", { i8*, i8* }** %"$$fundef_23_env_tf_203" + %"$dyndisp_table_205_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_205_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_205_salloc_load", i64 64) + %"$dyndisp_table_205_salloc" = bitcast i8* %"$dyndisp_table_205_salloc_salloc" to [4 x { i8*, i8* }]* + %"$dyndisp_table_205" = bitcast [4 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_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* + store { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$$fundef_23_cloval_202", { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_207" + store { i8*, i8* }* %"$dyndisp_table_205", { i8*, i8* }** %"$retval_22" + %"$$retval_22_208" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_22" + ret { i8*, i8* }* %"$$retval_22_208" } define internal %TName_Pair_String_ByStr20* @"$fundef_19"(%"$$fundef_19_env_92"* %0, [20 x i8]* %1) { entry: %b = load [20 x i8], [20 x i8]* %1 - %"$$fundef_19_env_a_143" = getelementptr inbounds %"$$fundef_19_env_92", %"$$fundef_19_env_92"* %0, i32 0, i32 0 - %"$a_envload_144" = load %String, %String* %"$$fundef_19_env_a_143" + %"$$fundef_19_env_a_178" = getelementptr inbounds %"$$fundef_19_env_92", %"$$fundef_19_env_92"* %0, i32 0, i32 0 + %"$a_envload_179" = load %String, %String* %"$$fundef_19_env_a_178" %a = alloca %String - store %String %"$a_envload_144", %String* %a + store %String %"$a_envload_179", %String* %a %"$retval_20" = alloca %TName_Pair_String_ByStr20* - %"$a_145" = load %String, %String* %a - %"$adtval_146_load" = load i8*, i8** @_execptr - %"$adtval_146_salloc" = call i8* @_salloc(i8* %"$adtval_146_load", i64 37) - %"$adtval_146" = bitcast i8* %"$adtval_146_salloc" to %CName_Pair_String_ByStr20* - %"$adtgep_147" = getelementptr inbounds %CName_Pair_String_ByStr20, %CName_Pair_String_ByStr20* %"$adtval_146", i32 0, i32 0 - store i8 0, i8* %"$adtgep_147" - %"$adtgep_148" = getelementptr inbounds %CName_Pair_String_ByStr20, %CName_Pair_String_ByStr20* %"$adtval_146", i32 0, i32 1 - store %String %"$a_145", %String* %"$adtgep_148" - %"$adtgep_149" = getelementptr inbounds %CName_Pair_String_ByStr20, %CName_Pair_String_ByStr20* %"$adtval_146", i32 0, i32 2 - store [20 x i8] %b, [20 x i8]* %"$adtgep_149" - %"$adtptr_150" = bitcast %CName_Pair_String_ByStr20* %"$adtval_146" to %TName_Pair_String_ByStr20* - store %TName_Pair_String_ByStr20* %"$adtptr_150", %TName_Pair_String_ByStr20** %"$retval_20" - %"$$retval_20_151" = load %TName_Pair_String_ByStr20*, %TName_Pair_String_ByStr20** %"$retval_20" - ret %TName_Pair_String_ByStr20* %"$$retval_20_151" + %"$gasrem_180" = load i64, i64* @_gasrem + %"$gascmp_181" = icmp ugt i64 1, %"$gasrem_180" + br i1 %"$gascmp_181", label %"$out_of_gas_182", label %"$have_gas_183" + +"$out_of_gas_182": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_183" + +"$have_gas_183": ; preds = %"$out_of_gas_182", %entry + %"$consume_184" = sub i64 %"$gasrem_180", 1 + store i64 %"$consume_184", i64* @_gasrem + %"$a_185" = load %String, %String* %a + %"$adtval_186_load" = load i8*, i8** @_execptr + %"$adtval_186_salloc" = call i8* @_salloc(i8* %"$adtval_186_load", i64 37) + %"$adtval_186" = bitcast i8* %"$adtval_186_salloc" to %CName_Pair_String_ByStr20* + %"$adtgep_187" = getelementptr inbounds %CName_Pair_String_ByStr20, %CName_Pair_String_ByStr20* %"$adtval_186", i32 0, i32 0 + store i8 0, i8* %"$adtgep_187" + %"$adtgep_188" = getelementptr inbounds %CName_Pair_String_ByStr20, %CName_Pair_String_ByStr20* %"$adtval_186", i32 0, i32 1 + store %String %"$a_185", %String* %"$adtgep_188" + %"$adtgep_189" = getelementptr inbounds %CName_Pair_String_ByStr20, %CName_Pair_String_ByStr20* %"$adtval_186", i32 0, i32 2 + store [20 x i8] %b, [20 x i8]* %"$adtgep_189" + %"$adtptr_190" = bitcast %CName_Pair_String_ByStr20* %"$adtval_186" to %TName_Pair_String_ByStr20* + store %TName_Pair_String_ByStr20* %"$adtptr_190", %TName_Pair_String_ByStr20** %"$retval_20" + %"$$retval_20_191" = load %TName_Pair_String_ByStr20*, %TName_Pair_String_ByStr20** %"$retval_20" + ret %TName_Pair_String_ByStr20* %"$$retval_20_191" } define internal { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } @"$fundef_17"(%"$$fundef_17_env_93"* %0, %String %1) { entry: %"$retval_18" = alloca { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } - %"$$fundef_19_envp_137_load" = load i8*, i8** @_execptr - %"$$fundef_19_envp_137_salloc" = call i8* @_salloc(i8* %"$$fundef_19_envp_137_load", i64 16) - %"$$fundef_19_envp_137" = bitcast i8* %"$$fundef_19_envp_137_salloc" to %"$$fundef_19_env_92"* - %"$$fundef_19_env_voidp_139" = bitcast %"$$fundef_19_env_92"* %"$$fundef_19_envp_137" to i8* - %"$$fundef_19_cloval_140" = insertvalue { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)* bitcast (%TName_Pair_String_ByStr20* (%"$$fundef_19_env_92"*, [20 x i8]*)* @"$fundef_19" to %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_19_env_voidp_139", 1 - %"$$fundef_19_env_a_141" = getelementptr inbounds %"$$fundef_19_env_92", %"$$fundef_19_env_92"* %"$$fundef_19_envp_137", i32 0, i32 0 - store %String %1, %String* %"$$fundef_19_env_a_141" - store { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$fundef_19_cloval_140", { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$retval_18" - %"$$retval_18_142" = load { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* }, { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$retval_18" - ret { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$retval_18_142" + %"$gasrem_167" = load i64, i64* @_gasrem + %"$gascmp_168" = icmp ugt i64 1, %"$gasrem_167" + br i1 %"$gascmp_168", label %"$out_of_gas_169", label %"$have_gas_170" + +"$out_of_gas_169": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_170" + +"$have_gas_170": ; preds = %"$out_of_gas_169", %entry + %"$consume_171" = sub i64 %"$gasrem_167", 1 + store i64 %"$consume_171", i64* @_gasrem + %"$$fundef_19_envp_172_load" = load i8*, i8** @_execptr + %"$$fundef_19_envp_172_salloc" = call i8* @_salloc(i8* %"$$fundef_19_envp_172_load", i64 16) + %"$$fundef_19_envp_172" = bitcast i8* %"$$fundef_19_envp_172_salloc" to %"$$fundef_19_env_92"* + %"$$fundef_19_env_voidp_174" = bitcast %"$$fundef_19_env_92"* %"$$fundef_19_envp_172" to i8* + %"$$fundef_19_cloval_175" = insertvalue { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)* bitcast (%TName_Pair_String_ByStr20* (%"$$fundef_19_env_92"*, [20 x i8]*)* @"$fundef_19" to %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_19_env_voidp_174", 1 + %"$$fundef_19_env_a_176" = getelementptr inbounds %"$$fundef_19_env_92", %"$$fundef_19_env_92"* %"$$fundef_19_envp_172", i32 0, i32 0 + store %String %1, %String* %"$$fundef_19_env_a_176" + store { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$fundef_19_cloval_175", { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$retval_18" + %"$$retval_18_177" = load { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* }, { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$retval_18" + ret { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$retval_18_177" } define internal { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } @"$fundef_15"(%"$$fundef_15_env_94"* %0) { entry: %"$retval_16" = alloca { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } + %"$gasrem_158" = load i64, i64* @_gasrem + %"$gascmp_159" = icmp ugt i64 1, %"$gasrem_158" + br i1 %"$gascmp_159", label %"$out_of_gas_160", label %"$have_gas_161" + +"$out_of_gas_160": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_161" + +"$have_gas_161": ; preds = %"$out_of_gas_160", %entry + %"$consume_162" = sub i64 %"$gasrem_158", 1 + store i64 %"$consume_162", i64* @_gasrem store { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)* bitcast ({ %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (%"$$fundef_17_env_93"*, %String)* @"$fundef_17" to { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*), i8* null }, { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* }* %"$retval_16" - %"$$retval_16_136" = load { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* }, { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* }* %"$retval_16" - ret { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } %"$$retval_16_136" + %"$$retval_16_166" = load { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* }, { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* }* %"$retval_16" + ret { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } %"$$retval_16_166" } define internal { i8*, i8* }* @"$fundef_13"(%"$$fundef_13_env_95"* %0) { entry: %"$retval_14" = alloca { i8*, i8* }* - %"$dyndisp_table_129_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_129_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_129_salloc_load", i64 64) - %"$dyndisp_table_129_salloc" = bitcast i8* %"$dyndisp_table_129_salloc_salloc" to [4 x { i8*, i8* }]* - %"$dyndisp_table_129" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_129_salloc" to { i8*, i8* }* - %"$dyndisp_gep_130" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_129", i32 3 - %"$dyndisp_pcast_131" = bitcast { i8*, i8* }* %"$dyndisp_gep_130" to { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }* - store { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* } { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)* bitcast ({ { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (%"$$fundef_15_env_94"*)* @"$fundef_15" to { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*), i8* null }, { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_131" - store { i8*, i8* }* %"$dyndisp_table_129", { i8*, i8* }** %"$retval_14" - %"$$retval_14_132" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_14" - ret { i8*, i8* }* %"$$retval_14_132" + %"$gasrem_146" = load i64, i64* @_gasrem + %"$gascmp_147" = icmp ugt i64 1, %"$gasrem_146" + br i1 %"$gascmp_147", label %"$out_of_gas_148", label %"$have_gas_149" + +"$out_of_gas_148": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_149" + +"$have_gas_149": ; preds = %"$out_of_gas_148", %entry + %"$consume_150" = sub i64 %"$gasrem_146", 1 + store i64 %"$consume_150", i64* @_gasrem + %"$dyndisp_table_154_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_154_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_154_salloc_load", i64 64) + %"$dyndisp_table_154_salloc" = bitcast i8* %"$dyndisp_table_154_salloc_salloc" to [4 x { i8*, i8* }]* + %"$dyndisp_table_154" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_154_salloc" to { i8*, i8* }* + %"$dyndisp_gep_155" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_154", i32 3 + %"$dyndisp_pcast_156" = bitcast { i8*, i8* }* %"$dyndisp_gep_155" to { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }* + store { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* } { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)* bitcast ({ { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (%"$$fundef_15_env_94"*)* @"$fundef_15" to { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*), i8* null }, { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_156" + store { i8*, i8* }* %"$dyndisp_table_154", { i8*, i8* }** %"$retval_14" + %"$$retval_14_157" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_14" + ret { i8*, i8* }* %"$$retval_14_157" } define internal %TName_Pair_Uint32_Uint64* @"$fundef_11"(%"$$fundef_11_env_96"* %0, %Uint64 %1) { entry: - %"$$fundef_11_env_a_117" = getelementptr inbounds %"$$fundef_11_env_96", %"$$fundef_11_env_96"* %0, i32 0, i32 0 - %"$a_envload_118" = load %Uint32, %Uint32* %"$$fundef_11_env_a_117" + %"$$fundef_11_env_a_132" = getelementptr inbounds %"$$fundef_11_env_96", %"$$fundef_11_env_96"* %0, i32 0, i32 0 + %"$a_envload_133" = load %Uint32, %Uint32* %"$$fundef_11_env_a_132" %a = alloca %Uint32 - store %Uint32 %"$a_envload_118", %Uint32* %a + store %Uint32 %"$a_envload_133", %Uint32* %a %"$retval_12" = alloca %TName_Pair_Uint32_Uint64* - %"$a_119" = load %Uint32, %Uint32* %a - %"$adtval_120_load" = load i8*, i8** @_execptr - %"$adtval_120_salloc" = call i8* @_salloc(i8* %"$adtval_120_load", i64 13) - %"$adtval_120" = bitcast i8* %"$adtval_120_salloc" to %CName_Pair_Uint32_Uint64* - %"$adtgep_121" = getelementptr inbounds %CName_Pair_Uint32_Uint64, %CName_Pair_Uint32_Uint64* %"$adtval_120", i32 0, i32 0 - store i8 0, i8* %"$adtgep_121" - %"$adtgep_122" = getelementptr inbounds %CName_Pair_Uint32_Uint64, %CName_Pair_Uint32_Uint64* %"$adtval_120", i32 0, i32 1 - store %Uint32 %"$a_119", %Uint32* %"$adtgep_122" - %"$adtgep_123" = getelementptr inbounds %CName_Pair_Uint32_Uint64, %CName_Pair_Uint32_Uint64* %"$adtval_120", i32 0, i32 2 - store %Uint64 %1, %Uint64* %"$adtgep_123" - %"$adtptr_124" = bitcast %CName_Pair_Uint32_Uint64* %"$adtval_120" to %TName_Pair_Uint32_Uint64* - store %TName_Pair_Uint32_Uint64* %"$adtptr_124", %TName_Pair_Uint32_Uint64** %"$retval_12" - %"$$retval_12_125" = load %TName_Pair_Uint32_Uint64*, %TName_Pair_Uint32_Uint64** %"$retval_12" - ret %TName_Pair_Uint32_Uint64* %"$$retval_12_125" + %"$gasrem_134" = load i64, i64* @_gasrem + %"$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 = %entry + call void @_out_of_gas() + br label %"$have_gas_137" + +"$have_gas_137": ; preds = %"$out_of_gas_136", %entry + %"$consume_138" = sub i64 %"$gasrem_134", 1 + store i64 %"$consume_138", i64* @_gasrem + %"$a_139" = load %Uint32, %Uint32* %a + %"$adtval_140_load" = load i8*, i8** @_execptr + %"$adtval_140_salloc" = call i8* @_salloc(i8* %"$adtval_140_load", i64 13) + %"$adtval_140" = bitcast i8* %"$adtval_140_salloc" to %CName_Pair_Uint32_Uint64* + %"$adtgep_141" = getelementptr inbounds %CName_Pair_Uint32_Uint64, %CName_Pair_Uint32_Uint64* %"$adtval_140", i32 0, i32 0 + store i8 0, i8* %"$adtgep_141" + %"$adtgep_142" = getelementptr inbounds %CName_Pair_Uint32_Uint64, %CName_Pair_Uint32_Uint64* %"$adtval_140", i32 0, i32 1 + store %Uint32 %"$a_139", %Uint32* %"$adtgep_142" + %"$adtgep_143" = getelementptr inbounds %CName_Pair_Uint32_Uint64, %CName_Pair_Uint32_Uint64* %"$adtval_140", i32 0, i32 2 + store %Uint64 %1, %Uint64* %"$adtgep_143" + %"$adtptr_144" = bitcast %CName_Pair_Uint32_Uint64* %"$adtval_140" to %TName_Pair_Uint32_Uint64* + store %TName_Pair_Uint32_Uint64* %"$adtptr_144", %TName_Pair_Uint32_Uint64** %"$retval_12" + %"$$retval_12_145" = load %TName_Pair_Uint32_Uint64*, %TName_Pair_Uint32_Uint64** %"$retval_12" + ret %TName_Pair_Uint32_Uint64* %"$$retval_12_145" } define internal { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } @"$fundef_9"(%"$$fundef_9_env_97"* %0, %Uint32 %1) { entry: %"$retval_10" = alloca { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } - %"$$fundef_11_envp_111_load" = load i8*, i8** @_execptr - %"$$fundef_11_envp_111_salloc" = call i8* @_salloc(i8* %"$$fundef_11_envp_111_load", i64 4) - %"$$fundef_11_envp_111" = bitcast i8* %"$$fundef_11_envp_111_salloc" to %"$$fundef_11_env_96"* - %"$$fundef_11_env_voidp_113" = bitcast %"$$fundef_11_env_96"* %"$$fundef_11_envp_111" to i8* - %"$$fundef_11_cloval_114" = insertvalue { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)* bitcast (%TName_Pair_Uint32_Uint64* (%"$$fundef_11_env_96"*, %Uint64)* @"$fundef_11" to %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*), i8* undef }, i8* %"$$fundef_11_env_voidp_113", 1 - %"$$fundef_11_env_a_115" = getelementptr inbounds %"$$fundef_11_env_96", %"$$fundef_11_env_96"* %"$$fundef_11_envp_111", i32 0, i32 0 - store %Uint32 %1, %Uint32* %"$$fundef_11_env_a_115" - store { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$$fundef_11_cloval_114", { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }* %"$retval_10" - %"$$retval_10_116" = load { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }, { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }* %"$retval_10" - ret { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$$retval_10_116" + %"$gasrem_121" = load i64, i64* @_gasrem + %"$gascmp_122" = icmp ugt i64 1, %"$gasrem_121" + br i1 %"$gascmp_122", label %"$out_of_gas_123", label %"$have_gas_124" + +"$out_of_gas_123": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_124" + +"$have_gas_124": ; preds = %"$out_of_gas_123", %entry + %"$consume_125" = sub i64 %"$gasrem_121", 1 + store i64 %"$consume_125", i64* @_gasrem + %"$$fundef_11_envp_126_load" = load i8*, i8** @_execptr + %"$$fundef_11_envp_126_salloc" = call i8* @_salloc(i8* %"$$fundef_11_envp_126_load", i64 4) + %"$$fundef_11_envp_126" = bitcast i8* %"$$fundef_11_envp_126_salloc" to %"$$fundef_11_env_96"* + %"$$fundef_11_env_voidp_128" = bitcast %"$$fundef_11_env_96"* %"$$fundef_11_envp_126" to i8* + %"$$fundef_11_cloval_129" = insertvalue { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)* bitcast (%TName_Pair_Uint32_Uint64* (%"$$fundef_11_env_96"*, %Uint64)* @"$fundef_11" to %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*), i8* undef }, i8* %"$$fundef_11_env_voidp_128", 1 + %"$$fundef_11_env_a_130" = getelementptr inbounds %"$$fundef_11_env_96", %"$$fundef_11_env_96"* %"$$fundef_11_envp_126", i32 0, i32 0 + store %Uint32 %1, %Uint32* %"$$fundef_11_env_a_130" + store { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$$fundef_11_cloval_129", { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }* %"$retval_10" + %"$$retval_10_131" = load { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }, { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }* %"$retval_10" + ret { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$$retval_10_131" } define internal { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } @"$fundef_7"(%"$$fundef_7_env_98"* %0) { entry: %"$retval_8" = alloca { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } + %"$gasrem_112" = load i64, i64* @_gasrem + %"$gascmp_113" = icmp ugt i64 1, %"$gasrem_112" + br i1 %"$gascmp_113", label %"$out_of_gas_114", label %"$have_gas_115" + +"$out_of_gas_114": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_115" + +"$have_gas_115": ; preds = %"$out_of_gas_114", %entry + %"$consume_116" = sub i64 %"$gasrem_112", 1 + store i64 %"$consume_116", i64* @_gasrem store { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)* bitcast ({ %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (%"$$fundef_9_env_97"*, %Uint32)* @"$fundef_9" to { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*), i8* null }, { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_8" - %"$$retval_8_110" = load { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }, { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_8" - ret { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_8_110" + %"$$retval_8_120" = load { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }, { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_8" + ret { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_8_120" } define internal { i8*, i8* }* @"$fundef_5"(%"$$fundef_5_env_99"* %0) { entry: %"$retval_6" = alloca { i8*, i8* }* - %"$dyndisp_table_103_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_103_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_103_salloc_load", i64 64) - %"$dyndisp_table_103_salloc" = bitcast i8* %"$dyndisp_table_103_salloc_salloc" to [4 x { i8*, i8* }]* - %"$dyndisp_table_103" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_103_salloc" to { i8*, i8* }* - %"$dyndisp_gep_104" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_103", i32 1 - %"$dyndisp_pcast_105" = bitcast { i8*, i8* }* %"$dyndisp_gep_104" to { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* - store { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)* bitcast ({ { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (%"$$fundef_7_env_98"*)* @"$fundef_7" to { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*), i8* null }, { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_105" - store { i8*, i8* }* %"$dyndisp_table_103", { i8*, i8* }** %"$retval_6" - %"$$retval_6_106" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_6" - ret { i8*, i8* }* %"$$retval_6_106" + %"$gasrem_100" = load i64, i64* @_gasrem + %"$gascmp_101" = icmp ugt i64 1, %"$gasrem_100" + br i1 %"$gascmp_101", label %"$out_of_gas_102", label %"$have_gas_103" + +"$out_of_gas_102": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_103" + +"$have_gas_103": ; preds = %"$out_of_gas_102", %entry + %"$consume_104" = sub i64 %"$gasrem_100", 1 + store i64 %"$consume_104", i64* @_gasrem + %"$dyndisp_table_108_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_108_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_108_salloc_load", i64 64) + %"$dyndisp_table_108_salloc" = bitcast i8* %"$dyndisp_table_108_salloc_salloc" to [4 x { i8*, i8* }]* + %"$dyndisp_table_108" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_108_salloc" to { i8*, i8* }* + %"$dyndisp_gep_109" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_108", i32 1 + %"$dyndisp_pcast_110" = bitcast { i8*, i8* }* %"$dyndisp_gep_109" to { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* + store { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)* bitcast ({ { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (%"$$fundef_7_env_98"*)* @"$fundef_7" to { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*), i8* null }, { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_110" + store { i8*, i8* }* %"$dyndisp_table_108", { i8*, i8* }** %"$retval_6" + %"$$retval_6_111" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_6" + ret { i8*, i8* }* %"$$retval_6_111" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) define void @_init_libs() { @@ -347,140 +482,371 @@ entry: ret void } -define internal %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* @"$scilla_expr_208"(i8* %0) { +define internal %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* @"$scilla_expr_268"(i8* %0) { entry: %"$expr_4" = alloca %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* + %"$gasrem_269" = load i64, i64* @_gasrem + %"$gascmp_270" = icmp ugt i64 1, %"$gasrem_269" + br i1 %"$gascmp_270", label %"$out_of_gas_271", label %"$have_gas_272" + +"$out_of_gas_271": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_272" + +"$have_gas_272": ; preds = %"$out_of_gas_271", %entry + %"$consume_273" = sub i64 %"$gasrem_269", 1 + store i64 %"$consume_273", i64* @_gasrem %tf = alloca { i8*, i8* }* - %"$dyndisp_table_215_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_215_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_215_salloc_load", i64 64) - %"$dyndisp_table_215_salloc" = bitcast i8* %"$dyndisp_table_215_salloc_salloc" to [4 x { i8*, i8* }]* - %"$dyndisp_table_215" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_215_salloc" to { i8*, i8* }* - %"$dyndisp_gep_216" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_215", i32 0 - %"$dyndisp_pcast_217" = bitcast { i8*, i8* }* %"$dyndisp_gep_216" to { { i8*, i8* }* (i8*)*, i8* }* - store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_5_env_99"*)* @"$fundef_5" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_217" - %"$dyndisp_gep_218" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_215", i32 2 - %"$dyndisp_pcast_219" = bitcast { i8*, i8* }* %"$dyndisp_gep_218" to { { i8*, i8* }* (i8*)*, i8* }* - store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_13_env_95"*)* @"$fundef_13" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_219" - store { i8*, i8* }* %"$dyndisp_table_215", { i8*, i8* }** %tf + %"$gasrem_274" = load i64, i64* @_gasrem + %"$gascmp_275" = icmp ugt i64 1, %"$gasrem_274" + br i1 %"$gascmp_275", label %"$out_of_gas_276", label %"$have_gas_277" + +"$out_of_gas_276": ; preds = %"$have_gas_272" + call void @_out_of_gas() + br label %"$have_gas_277" + +"$have_gas_277": ; preds = %"$out_of_gas_276", %"$have_gas_272" + %"$consume_278" = sub i64 %"$gasrem_274", 1 + store i64 %"$consume_278", i64* @_gasrem + %"$dyndisp_table_285_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_285_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_285_salloc_load", i64 64) + %"$dyndisp_table_285_salloc" = bitcast i8* %"$dyndisp_table_285_salloc_salloc" to [4 x { i8*, i8* }]* + %"$dyndisp_table_285" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_285_salloc" to { i8*, i8* }* + %"$dyndisp_gep_286" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_285", i32 0 + %"$dyndisp_pcast_287" = bitcast { i8*, i8* }* %"$dyndisp_gep_286" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_5_env_99"*)* @"$fundef_5" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_287" + %"$dyndisp_gep_288" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_285", i32 2 + %"$dyndisp_pcast_289" = bitcast { i8*, i8* }* %"$dyndisp_gep_288" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_13_env_95"*)* @"$fundef_13" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_289" + store { i8*, i8* }* %"$dyndisp_table_285", { i8*, i8* }** %tf + %"$gasrem_290" = load i64, i64* @_gasrem + %"$gascmp_291" = icmp ugt i64 1, %"$gasrem_290" + br i1 %"$gascmp_291", label %"$out_of_gas_292", label %"$have_gas_293" + +"$out_of_gas_292": ; preds = %"$have_gas_277" + call void @_out_of_gas() + br label %"$have_gas_293" + +"$have_gas_293": ; preds = %"$out_of_gas_292", %"$have_gas_277" + %"$consume_294" = sub i64 %"$gasrem_290", 1 + store i64 %"$consume_294", i64* @_gasrem %tf1 = alloca { i8*, i8* }* - %"$$fundef_21_envp_220_load" = load i8*, i8** @_execptr - %"$$fundef_21_envp_220_salloc" = call i8* @_salloc(i8* %"$$fundef_21_envp_220_load", i64 8) - %"$$fundef_21_envp_220" = bitcast i8* %"$$fundef_21_envp_220_salloc" to %"$$fundef_21_env_91"* - %"$$fundef_21_env_voidp_222" = bitcast %"$$fundef_21_env_91"* %"$$fundef_21_envp_220" to i8* - %"$$fundef_21_cloval_223" = insertvalue { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_21_env_91"*)* @"$fundef_21" to { i8*, i8* }* (i8*)*), i8* undef }, i8* %"$$fundef_21_env_voidp_222", 1 - %"$$fundef_21_env_tf_224" = getelementptr inbounds %"$$fundef_21_env_91", %"$$fundef_21_env_91"* %"$$fundef_21_envp_220", i32 0, i32 0 - %"$tf_225" = load { i8*, i8* }*, { i8*, i8* }** %tf - store { i8*, i8* }* %"$tf_225", { i8*, i8* }** %"$$fundef_21_env_tf_224" - %"$$fundef_25_env_voidp_227" = bitcast %"$$fundef_21_env_91"* %"$$fundef_21_envp_220" to i8* - %"$$fundef_25_cloval_228" = insertvalue { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_25_env_89"*)* @"$fundef_25" to { i8*, i8* }* (i8*)*), i8* undef }, i8* %"$$fundef_25_env_voidp_227", 1 - %"$dyndisp_table_229_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_229_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_229_salloc_load", i64 64) - %"$dyndisp_table_229_salloc" = bitcast i8* %"$dyndisp_table_229_salloc_salloc" to [4 x { i8*, i8* }]* - %"$dyndisp_table_229" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_229_salloc" to { i8*, i8* }* - %"$dyndisp_gep_230" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_229", i32 0 - %"$dyndisp_pcast_231" = bitcast { i8*, i8* }* %"$dyndisp_gep_230" to { { i8*, i8* }* (i8*)*, i8* }* - store { { i8*, i8* }* (i8*)*, i8* } %"$$fundef_21_cloval_223", { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_231" - %"$dyndisp_gep_232" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_229", i32 2 - %"$dyndisp_pcast_233" = bitcast { i8*, i8* }* %"$dyndisp_gep_232" to { { i8*, i8* }* (i8*)*, i8* }* - store { { i8*, i8* }* (i8*)*, i8* } %"$$fundef_25_cloval_228", { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_233" - store { i8*, i8* }* %"$dyndisp_table_229", { i8*, i8* }** %tf1 + %"$gasrem_295" = load i64, i64* @_gasrem + %"$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_293" + call void @_out_of_gas() + br label %"$have_gas_298" + +"$have_gas_298": ; preds = %"$out_of_gas_297", %"$have_gas_293" + %"$consume_299" = sub i64 %"$gasrem_295", 1 + store i64 %"$consume_299", i64* @_gasrem + %"$$fundef_21_envp_300_load" = load i8*, i8** @_execptr + %"$$fundef_21_envp_300_salloc" = call i8* @_salloc(i8* %"$$fundef_21_envp_300_load", i64 8) + %"$$fundef_21_envp_300" = bitcast i8* %"$$fundef_21_envp_300_salloc" to %"$$fundef_21_env_91"* + %"$$fundef_21_env_voidp_302" = bitcast %"$$fundef_21_env_91"* %"$$fundef_21_envp_300" to i8* + %"$$fundef_21_cloval_303" = insertvalue { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_21_env_91"*)* @"$fundef_21" to { i8*, i8* }* (i8*)*), i8* undef }, i8* %"$$fundef_21_env_voidp_302", 1 + %"$$fundef_21_env_tf_304" = getelementptr inbounds %"$$fundef_21_env_91", %"$$fundef_21_env_91"* %"$$fundef_21_envp_300", i32 0, i32 0 + %"$tf_305" = load { i8*, i8* }*, { i8*, i8* }** %tf + store { i8*, i8* }* %"$tf_305", { i8*, i8* }** %"$$fundef_21_env_tf_304" + %"$$fundef_25_env_voidp_307" = bitcast %"$$fundef_21_env_91"* %"$$fundef_21_envp_300" to i8* + %"$$fundef_25_cloval_308" = insertvalue { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_25_env_89"*)* @"$fundef_25" to { i8*, i8* }* (i8*)*), i8* undef }, i8* %"$$fundef_25_env_voidp_307", 1 + %"$dyndisp_table_309_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_309_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_309_salloc_load", i64 64) + %"$dyndisp_table_309_salloc" = bitcast i8* %"$dyndisp_table_309_salloc_salloc" to [4 x { i8*, i8* }]* + %"$dyndisp_table_309" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_309_salloc" to { i8*, i8* }* + %"$dyndisp_gep_310" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_309", i32 0 + %"$dyndisp_pcast_311" = bitcast { i8*, i8* }* %"$dyndisp_gep_310" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } %"$$fundef_21_cloval_303", { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_311" + %"$dyndisp_gep_312" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_309", i32 2 + %"$dyndisp_pcast_313" = bitcast { i8*, i8* }* %"$dyndisp_gep_312" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } %"$$fundef_25_cloval_308", { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_313" + store { i8*, i8* }* %"$dyndisp_table_309", { i8*, i8* }** %tf1 + %"$gasrem_314" = load i64, i64* @_gasrem + %"$gascmp_315" = icmp ugt i64 1, %"$gasrem_314" + br i1 %"$gascmp_315", label %"$out_of_gas_316", label %"$have_gas_317" + +"$out_of_gas_316": ; preds = %"$have_gas_298" + call void @_out_of_gas() + br label %"$have_gas_317" + +"$have_gas_317": ; preds = %"$out_of_gas_316", %"$have_gas_298" + %"$consume_318" = sub i64 %"$gasrem_314", 1 + store i64 %"$consume_318", i64* @_gasrem %t1 = alloca { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } - %"$tf1_234" = load { i8*, i8* }*, { i8*, i8* }** %tf1 - %"$tf1_235" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf1_234", i32 0 - %"$tf1_236" = bitcast { i8*, i8* }* %"$tf1_235" to { { i8*, i8* }* (i8*)*, i8* }* - %"$tf1_237" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf1_236" - %"$tf1_fptr_238" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf1_237", 0 - %"$tf1_envptr_239" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf1_237", 1 - %"$tf1_call_240" = call { i8*, i8* }* %"$tf1_fptr_238"(i8* %"$tf1_envptr_239") - %"$tf1_241" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf1_call_240", i32 1 - %"$tf1_242" = bitcast { i8*, i8* }* %"$tf1_241" to { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* - %"$tf1_243" = load { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }, { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$tf1_242" - %"$tf1_fptr_244" = extractvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf1_243", 0 - %"$tf1_envptr_245" = extractvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf1_243", 1 - %"$tf1_call_246" = call { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$tf1_fptr_244"(i8* %"$tf1_envptr_245") - store { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$tf1_call_246", { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %t1 + %"$gasrem_319" = load i64, i64* @_gasrem + %"$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 + %"$tf1_324" = load { i8*, i8* }*, { i8*, i8* }** %tf1 + %"$tf1_325" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf1_324", i32 0 + %"$tf1_326" = bitcast { i8*, i8* }* %"$tf1_325" to { { i8*, i8* }* (i8*)*, i8* }* + %"$tf1_327" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf1_326" + %"$tf1_fptr_328" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf1_327", 0 + %"$tf1_envptr_329" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf1_327", 1 + %"$tf1_call_330" = call { i8*, i8* }* %"$tf1_fptr_328"(i8* %"$tf1_envptr_329") + %"$tf1_331" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf1_call_330", i32 1 + %"$tf1_332" = bitcast { i8*, i8* }* %"$tf1_331" to { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* + %"$tf1_333" = load { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }, { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$tf1_332" + %"$tf1_fptr_334" = extractvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf1_333", 0 + %"$tf1_envptr_335" = extractvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf1_333", 1 + %"$tf1_call_336" = call { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$tf1_fptr_334"(i8* %"$tf1_envptr_335") + store { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$tf1_call_336", { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %t1 + %"$gasrem_337" = load i64, i64* @_gasrem + %"$gascmp_338" = icmp ugt i64 1, %"$gasrem_337" + br i1 %"$gascmp_338", label %"$out_of_gas_339", label %"$have_gas_340" + +"$out_of_gas_339": ; preds = %"$have_gas_322" + call void @_out_of_gas() + br label %"$have_gas_340" + +"$have_gas_340": ; preds = %"$out_of_gas_339", %"$have_gas_322" + %"$consume_341" = sub i64 %"$gasrem_337", 1 + store i64 %"$consume_341", i64* @_gasrem %t2 = alloca { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } - %"$tf1_247" = load { i8*, i8* }*, { i8*, i8* }** %tf1 - %"$tf1_248" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf1_247", i32 2 - %"$tf1_249" = bitcast { i8*, i8* }* %"$tf1_248" to { { i8*, i8* }* (i8*)*, i8* }* - %"$tf1_250" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf1_249" - %"$tf1_fptr_251" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf1_250", 0 - %"$tf1_envptr_252" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf1_250", 1 - %"$tf1_call_253" = call { i8*, i8* }* %"$tf1_fptr_251"(i8* %"$tf1_envptr_252") - %"$tf1_254" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf1_call_253", i32 3 - %"$tf1_255" = bitcast { i8*, i8* }* %"$tf1_254" to { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }* - %"$tf1_256" = load { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }, { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }* %"$tf1_255" - %"$tf1_fptr_257" = extractvalue { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* } %"$tf1_256", 0 - %"$tf1_envptr_258" = extractvalue { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* } %"$tf1_256", 1 - %"$tf1_call_259" = call { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } %"$tf1_fptr_257"(i8* %"$tf1_envptr_258") - store { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } %"$tf1_call_259", { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* }* %t2 + %"$gasrem_342" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_340" + call void @_out_of_gas() + br label %"$have_gas_345" + +"$have_gas_345": ; preds = %"$out_of_gas_344", %"$have_gas_340" + %"$consume_346" = sub i64 %"$gasrem_342", 1 + store i64 %"$consume_346", i64* @_gasrem + %"$tf1_347" = load { i8*, i8* }*, { i8*, i8* }** %tf1 + %"$tf1_348" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf1_347", i32 2 + %"$tf1_349" = bitcast { i8*, i8* }* %"$tf1_348" to { { i8*, i8* }* (i8*)*, i8* }* + %"$tf1_350" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf1_349" + %"$tf1_fptr_351" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf1_350", 0 + %"$tf1_envptr_352" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf1_350", 1 + %"$tf1_call_353" = call { i8*, i8* }* %"$tf1_fptr_351"(i8* %"$tf1_envptr_352") + %"$tf1_354" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf1_call_353", i32 3 + %"$tf1_355" = bitcast { i8*, i8* }* %"$tf1_354" to { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }* + %"$tf1_356" = load { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }, { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* }* %"$tf1_355" + %"$tf1_fptr_357" = extractvalue { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* } %"$tf1_356", 0 + %"$tf1_envptr_358" = extractvalue { { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } (i8*)*, i8* } %"$tf1_356", 1 + %"$tf1_call_359" = call { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } %"$tf1_fptr_357"(i8* %"$tf1_envptr_358") + store { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } %"$tf1_call_359", { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* }* %t2 + %"$gasrem_360" = load i64, i64* @_gasrem + %"$gascmp_361" = icmp ugt i64 1, %"$gasrem_360" + br i1 %"$gascmp_361", label %"$out_of_gas_362", label %"$have_gas_363" + +"$out_of_gas_362": ; preds = %"$have_gas_345" + call void @_out_of_gas() + br label %"$have_gas_363" + +"$have_gas_363": ; preds = %"$out_of_gas_362", %"$have_gas_345" + %"$consume_364" = sub i64 %"$gasrem_360", 1 + store i64 %"$consume_364", i64* @_gasrem %uint32_one = alloca %Uint32 + %"$gasrem_365" = load i64, i64* @_gasrem + %"$gascmp_366" = icmp ugt i64 1, %"$gasrem_365" + br i1 %"$gascmp_366", label %"$out_of_gas_367", label %"$have_gas_368" + +"$out_of_gas_367": ; preds = %"$have_gas_363" + call void @_out_of_gas() + br label %"$have_gas_368" + +"$have_gas_368": ; preds = %"$out_of_gas_367", %"$have_gas_363" + %"$consume_369" = sub i64 %"$gasrem_365", 1 + store i64 %"$consume_369", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %uint32_one + %"$gasrem_370" = load i64, i64* @_gasrem + %"$gascmp_371" = icmp ugt i64 1, %"$gasrem_370" + br i1 %"$gascmp_371", label %"$out_of_gas_372", label %"$have_gas_373" + +"$out_of_gas_372": ; preds = %"$have_gas_368" + call void @_out_of_gas() + br label %"$have_gas_373" + +"$have_gas_373": ; preds = %"$out_of_gas_372", %"$have_gas_368" + %"$consume_374" = sub i64 %"$gasrem_370", 1 + store i64 %"$consume_374", i64* @_gasrem %uint64_two = alloca %Uint64 + %"$gasrem_375" = load i64, i64* @_gasrem + %"$gascmp_376" = icmp ugt i64 1, %"$gasrem_375" + br i1 %"$gascmp_376", label %"$out_of_gas_377", label %"$have_gas_378" + +"$out_of_gas_377": ; preds = %"$have_gas_373" + call void @_out_of_gas() + br label %"$have_gas_378" + +"$have_gas_378": ; preds = %"$out_of_gas_377", %"$have_gas_373" + %"$consume_379" = sub i64 %"$gasrem_375", 1 + store i64 %"$consume_379", i64* @_gasrem store %Uint64 { i64 2 }, %Uint64* %uint64_two + %"$gasrem_380" = load i64, i64* @_gasrem + %"$gascmp_381" = icmp ugt i64 1, %"$gasrem_380" + br i1 %"$gascmp_381", label %"$out_of_gas_382", label %"$have_gas_383" + +"$out_of_gas_382": ; preds = %"$have_gas_378" + call void @_out_of_gas() + br label %"$have_gas_383" + +"$have_gas_383": ; preds = %"$out_of_gas_382", %"$have_gas_378" + %"$consume_384" = sub i64 %"$gasrem_380", 1 + store i64 %"$consume_384", i64* @_gasrem %hello_string = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_260", i32 0, i32 0), i32 5 }, %String* %hello_string + %"$gasrem_385" = load i64, i64* @_gasrem + %"$gascmp_386" = icmp ugt i64 1, %"$gasrem_385" + br i1 %"$gascmp_386", label %"$out_of_gas_387", label %"$have_gas_388" + +"$out_of_gas_387": ; preds = %"$have_gas_383" + call void @_out_of_gas() + br label %"$have_gas_388" + +"$have_gas_388": ; preds = %"$out_of_gas_387", %"$have_gas_383" + %"$consume_389" = sub i64 %"$gasrem_385", 1 + store i64 %"$consume_389", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_390", i32 0, i32 0), i32 5 }, %String* %hello_string + %"$gasrem_391" = load i64, i64* @_gasrem + %"$gascmp_392" = icmp ugt i64 1, %"$gasrem_391" + br i1 %"$gascmp_392", label %"$out_of_gas_393", label %"$have_gas_394" + +"$out_of_gas_393": ; preds = %"$have_gas_388" + call void @_out_of_gas() + br label %"$have_gas_394" + +"$have_gas_394": ; preds = %"$out_of_gas_393", %"$have_gas_388" + %"$consume_395" = sub i64 %"$gasrem_391", 1 + store i64 %"$consume_395", i64* @_gasrem %addr_bystr20 = alloca [20 x i8] + %"$gasrem_396" = load i64, i64* @_gasrem + %"$gascmp_397" = icmp ugt i64 1, %"$gasrem_396" + br i1 %"$gascmp_397", label %"$out_of_gas_398", label %"$have_gas_399" + +"$out_of_gas_398": ; preds = %"$have_gas_394" + call void @_out_of_gas() + br label %"$have_gas_399" + +"$have_gas_399": ; preds = %"$out_of_gas_398", %"$have_gas_394" + %"$consume_400" = sub i64 %"$gasrem_396", 1 + store i64 %"$consume_400", i64* @_gasrem store [20 x i8] c"\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA\AA", [20 x i8]* %addr_bystr20 + %"$gasrem_401" = load i64, i64* @_gasrem + %"$gascmp_402" = icmp ugt i64 1, %"$gasrem_401" + br i1 %"$gascmp_402", label %"$out_of_gas_403", label %"$have_gas_404" + +"$out_of_gas_403": ; preds = %"$have_gas_399" + call void @_out_of_gas() + br label %"$have_gas_404" + +"$have_gas_404": ; preds = %"$out_of_gas_403", %"$have_gas_399" + %"$consume_405" = sub i64 %"$gasrem_401", 1 + store i64 %"$consume_405", i64* @_gasrem %p1 = alloca %TName_Pair_Uint32_Uint64* + %"$gasrem_406" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_404" + call void @_out_of_gas() + br label %"$have_gas_409" + +"$have_gas_409": ; preds = %"$out_of_gas_408", %"$have_gas_404" + %"$consume_410" = sub i64 %"$gasrem_406", 1 + store i64 %"$consume_410", i64* @_gasrem %"$t1_0" = alloca { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } - %"$t1_261" = load { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }, { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %t1 - %"$t1_fptr_262" = extractvalue { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$t1_261", 0 - %"$t1_envptr_263" = extractvalue { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$t1_261", 1 - %"$uint32_one_264" = load %Uint32, %Uint32* %uint32_one - %"$t1_call_265" = call { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$t1_fptr_262"(i8* %"$t1_envptr_263", %Uint32 %"$uint32_one_264") - store { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$t1_call_265", { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }* %"$t1_0" + %"$t1_411" = load { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }, { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %t1 + %"$t1_fptr_412" = extractvalue { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$t1_411", 0 + %"$t1_envptr_413" = extractvalue { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$t1_411", 1 + %"$uint32_one_414" = load %Uint32, %Uint32* %uint32_one + %"$t1_call_415" = call { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$t1_fptr_412"(i8* %"$t1_envptr_413", %Uint32 %"$uint32_one_414") + store { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$t1_call_415", { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }* %"$t1_0" %"$t1_1" = alloca %TName_Pair_Uint32_Uint64* - %"$$t1_0_266" = load { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }, { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }* %"$t1_0" - %"$$t1_0_fptr_267" = extractvalue { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$$t1_0_266", 0 - %"$$t1_0_envptr_268" = extractvalue { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$$t1_0_266", 1 - %"$uint64_two_269" = load %Uint64, %Uint64* %uint64_two - %"$$t1_0_call_270" = call %TName_Pair_Uint32_Uint64* %"$$t1_0_fptr_267"(i8* %"$$t1_0_envptr_268", %Uint64 %"$uint64_two_269") - store %TName_Pair_Uint32_Uint64* %"$$t1_0_call_270", %TName_Pair_Uint32_Uint64** %"$t1_1" - %"$$t1_1_271" = load %TName_Pair_Uint32_Uint64*, %TName_Pair_Uint32_Uint64** %"$t1_1" - store %TName_Pair_Uint32_Uint64* %"$$t1_1_271", %TName_Pair_Uint32_Uint64** %p1 + %"$$t1_0_416" = load { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }, { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }* %"$t1_0" + %"$$t1_0_fptr_417" = extractvalue { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$$t1_0_416", 0 + %"$$t1_0_envptr_418" = extractvalue { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$$t1_0_416", 1 + %"$uint64_two_419" = load %Uint64, %Uint64* %uint64_two + %"$$t1_0_call_420" = call %TName_Pair_Uint32_Uint64* %"$$t1_0_fptr_417"(i8* %"$$t1_0_envptr_418", %Uint64 %"$uint64_two_419") + store %TName_Pair_Uint32_Uint64* %"$$t1_0_call_420", %TName_Pair_Uint32_Uint64** %"$t1_1" + %"$$t1_1_421" = load %TName_Pair_Uint32_Uint64*, %TName_Pair_Uint32_Uint64** %"$t1_1" + store %TName_Pair_Uint32_Uint64* %"$$t1_1_421", %TName_Pair_Uint32_Uint64** %p1 + %"$gasrem_422" = load i64, i64* @_gasrem + %"$gascmp_423" = icmp ugt i64 1, %"$gasrem_422" + br i1 %"$gascmp_423", label %"$out_of_gas_424", label %"$have_gas_425" + +"$out_of_gas_424": ; preds = %"$have_gas_409" + call void @_out_of_gas() + br label %"$have_gas_425" + +"$have_gas_425": ; preds = %"$out_of_gas_424", %"$have_gas_409" + %"$consume_426" = sub i64 %"$gasrem_422", 1 + store i64 %"$consume_426", i64* @_gasrem %p2 = alloca %TName_Pair_String_ByStr20* + %"$gasrem_427" = load i64, i64* @_gasrem + %"$gascmp_428" = icmp ugt i64 1, %"$gasrem_427" + br i1 %"$gascmp_428", label %"$out_of_gas_429", label %"$have_gas_430" + +"$out_of_gas_429": ; preds = %"$have_gas_425" + call void @_out_of_gas() + br label %"$have_gas_430" + +"$have_gas_430": ; preds = %"$out_of_gas_429", %"$have_gas_425" + %"$consume_431" = sub i64 %"$gasrem_427", 1 + store i64 %"$consume_431", i64* @_gasrem %"$t2_2" = alloca { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } - %"$t2_272" = load { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* }, { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* }* %t2 - %"$t2_fptr_273" = extractvalue { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } %"$t2_272", 0 - %"$t2_envptr_274" = extractvalue { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } %"$t2_272", 1 - %"$hello_string_275" = load %String, %String* %hello_string - %"$t2_call_276" = call { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$t2_fptr_273"(i8* %"$t2_envptr_274", %String %"$hello_string_275") - store { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$t2_call_276", { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$t2_2" + %"$t2_432" = load { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* }, { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* }* %t2 + %"$t2_fptr_433" = extractvalue { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } %"$t2_432", 0 + %"$t2_envptr_434" = extractvalue { { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %String)*, i8* } %"$t2_432", 1 + %"$hello_string_435" = load %String, %String* %hello_string + %"$t2_call_436" = call { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$t2_fptr_433"(i8* %"$t2_envptr_434", %String %"$hello_string_435") + store { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$t2_call_436", { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$t2_2" %"$t2_3" = alloca %TName_Pair_String_ByStr20* - %"$$t2_2_277" = load { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* }, { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$t2_2" - %"$$t2_2_fptr_278" = extractvalue { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$t2_2_277", 0 - %"$$t2_2_envptr_279" = extractvalue { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$t2_2_277", 1 - %"$$t2_2_addr_bystr20_280" = alloca [20 x i8] - %"$addr_bystr20_281" = load [20 x i8], [20 x i8]* %addr_bystr20 - store [20 x i8] %"$addr_bystr20_281", [20 x i8]* %"$$t2_2_addr_bystr20_280" - %"$$t2_2_call_282" = call %TName_Pair_String_ByStr20* %"$$t2_2_fptr_278"(i8* %"$$t2_2_envptr_279", [20 x i8]* %"$$t2_2_addr_bystr20_280") - store %TName_Pair_String_ByStr20* %"$$t2_2_call_282", %TName_Pair_String_ByStr20** %"$t2_3" - %"$$t2_3_283" = load %TName_Pair_String_ByStr20*, %TName_Pair_String_ByStr20** %"$t2_3" - store %TName_Pair_String_ByStr20* %"$$t2_3_283", %TName_Pair_String_ByStr20** %p2 - %"$p1_284" = load %TName_Pair_Uint32_Uint64*, %TName_Pair_Uint32_Uint64** %p1 - %"$p2_285" = load %TName_Pair_String_ByStr20*, %TName_Pair_String_ByStr20** %p2 - %"$adtval_286_load" = load i8*, i8** @_execptr - %"$adtval_286_salloc" = call i8* @_salloc(i8* %"$adtval_286_load", i64 17) - %"$adtval_286" = bitcast i8* %"$adtval_286_salloc" to %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* - %"$adtgep_287" = getelementptr inbounds %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)", %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* %"$adtval_286", i32 0, i32 0 - store i8 0, i8* %"$adtgep_287" - %"$adtgep_288" = getelementptr inbounds %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)", %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* %"$adtval_286", i32 0, i32 1 - store %TName_Pair_Uint32_Uint64* %"$p1_284", %TName_Pair_Uint32_Uint64** %"$adtgep_288" - %"$adtgep_289" = getelementptr inbounds %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)", %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* %"$adtval_286", i32 0, i32 2 - store %TName_Pair_String_ByStr20* %"$p2_285", %TName_Pair_String_ByStr20** %"$adtgep_289" - %"$adtptr_290" = bitcast %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* %"$adtval_286" to %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* - store %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* %"$adtptr_290", %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"** %"$expr_4" - %"$$expr_4_291" = load %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"*, %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"** %"$expr_4" - ret %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* %"$$expr_4_291" + %"$$t2_2_437" = load { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* }, { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$t2_2" + %"$$t2_2_fptr_438" = extractvalue { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$t2_2_437", 0 + %"$$t2_2_envptr_439" = extractvalue { %TName_Pair_String_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$t2_2_437", 1 + %"$$t2_2_addr_bystr20_440" = alloca [20 x i8] + %"$addr_bystr20_441" = load [20 x i8], [20 x i8]* %addr_bystr20 + store [20 x i8] %"$addr_bystr20_441", [20 x i8]* %"$$t2_2_addr_bystr20_440" + %"$$t2_2_call_442" = call %TName_Pair_String_ByStr20* %"$$t2_2_fptr_438"(i8* %"$$t2_2_envptr_439", [20 x i8]* %"$$t2_2_addr_bystr20_440") + store %TName_Pair_String_ByStr20* %"$$t2_2_call_442", %TName_Pair_String_ByStr20** %"$t2_3" + %"$$t2_3_443" = load %TName_Pair_String_ByStr20*, %TName_Pair_String_ByStr20** %"$t2_3" + store %TName_Pair_String_ByStr20* %"$$t2_3_443", %TName_Pair_String_ByStr20** %p2 + %"$gasrem_444" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_430" + call void @_out_of_gas() + br label %"$have_gas_447" + +"$have_gas_447": ; preds = %"$out_of_gas_446", %"$have_gas_430" + %"$consume_448" = sub i64 %"$gasrem_444", 1 + store i64 %"$consume_448", i64* @_gasrem + %"$p1_449" = load %TName_Pair_Uint32_Uint64*, %TName_Pair_Uint32_Uint64** %p1 + %"$p2_450" = load %TName_Pair_String_ByStr20*, %TName_Pair_String_ByStr20** %p2 + %"$adtval_451_load" = load i8*, i8** @_execptr + %"$adtval_451_salloc" = call i8* @_salloc(i8* %"$adtval_451_load", i64 17) + %"$adtval_451" = bitcast i8* %"$adtval_451_salloc" to %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* + %"$adtgep_452" = getelementptr inbounds %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)", %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* %"$adtval_451", i32 0, i32 0 + store i8 0, i8* %"$adtgep_452" + %"$adtgep_453" = getelementptr inbounds %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)", %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* %"$adtval_451", i32 0, i32 1 + store %TName_Pair_Uint32_Uint64* %"$p1_449", %TName_Pair_Uint32_Uint64** %"$adtgep_453" + %"$adtgep_454" = getelementptr inbounds %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)", %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* %"$adtval_451", i32 0, i32 2 + store %TName_Pair_String_ByStr20* %"$p2_450", %TName_Pair_String_ByStr20** %"$adtgep_454" + %"$adtptr_455" = bitcast %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* %"$adtval_451" to %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* + store %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* %"$adtptr_455", %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"** %"$expr_4" + %"$$expr_4_456" = load %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"*, %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"** %"$expr_4" + ret %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* %"$$expr_4_456" } declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_292" = call %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* @"$scilla_expr_208"(i8* null) - %"$memvoidcast_293" = bitcast %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* %"$exprval_292" to i8* - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)_63", i8* %"$memvoidcast_293") + %"$exprval_457" = call %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* @"$scilla_expr_268"(i8* null) + %"$memvoidcast_458" = bitcast %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)"* %"$exprval_457" to i8* + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_Pair_(Uint32)_(Uint64)_Pair_(String)_(ByStr20)_63", i8* %"$memvoidcast_458") ret void } diff --git a/testsuite/expr/typ2-inst.ll.result b/testsuite/expr/typ2-inst.ll.result index 323eba1a..2393162d 100644 --- a/testsuite/expr/typ2-inst.ll.result +++ b/testsuite/expr/typ2-inst.ll.result @@ -1 +1,2 @@ Pair(Pair(1 : Uint32)(2 : Uint64) : Pair (Uint32) (Uint64))(Pair(hello : String)(0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa : ByStr20) : Pair (String) (ByStr20)) : Pair (Pair (Uint32) (Uint64)) (Pair (String) (ByStr20)) +Gas remaining: 9999967 diff --git a/testsuite/expr/typ3-inst.ll b/testsuite/expr/typ3-inst.ll index 71426c06..eacf7140 100644 --- a/testsuite/expr/typ3-inst.ll +++ b/testsuite/expr/typ3-inst.ll @@ -60,6 +60,7 @@ target triple = "x86_64-pc-linux-gnu" %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)" = type <{ i8, %TName_Pair_Uint32_Uint64*, %TName_Pair_ByStr1_ByStr2* }> @_execptr = global i8* null +@_gasrem = global i64 0 @"$TyDescr_Int32_Prim_32" = global %"$TyDescrTy_PrimTyp_31" zeroinitializer @"$TyDescr_Int32_33" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_31"* @"$TyDescr_Int32_Prim_32" to i8*) } @"$TyDescr_Uint32_Prim_34" = global %"$TyDescrTy_PrimTyp_31" { i32 1, i32 0 } @@ -126,227 +127,372 @@ target triple = "x86_64-pc-linux-gnu" define internal { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } @"$fundef_29"(%"$$fundef_29_env_99"* %0) { entry: - %"$$fundef_29_env_tf_200" = getelementptr inbounds %"$$fundef_29_env_99", %"$$fundef_29_env_99"* %0, i32 0, i32 0 - %"$tf_envload_201" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_29_env_tf_200" + %"$$fundef_29_env_tf_260" = getelementptr inbounds %"$$fundef_29_env_99", %"$$fundef_29_env_99"* %0, i32 0, i32 0 + %"$tf_envload_261" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_29_env_tf_260" %tf = alloca { i8*, i8* }* - store { i8*, i8* }* %"$tf_envload_201", { i8*, i8* }** %tf + store { i8*, i8* }* %"$tf_envload_261", { i8*, i8* }** %tf %"$retval_30" = alloca { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } - %"$tf_202" = load { i8*, i8* }*, { i8*, i8* }** %tf - %"$tf_203" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_202", i32 0 - %"$tf_204" = bitcast { i8*, i8* }* %"$tf_203" to { { i8*, i8* }* (i8*)*, i8* }* - %"$tf_205" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf_204" - %"$tf_fptr_206" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_205", 0 - %"$tf_envptr_207" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_205", 1 - %"$tf_call_208" = call { i8*, i8* }* %"$tf_fptr_206"(i8* %"$tf_envptr_207") - %"$tf_209" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_call_208", i32 1 - %"$tf_210" = bitcast { i8*, i8* }* %"$tf_209" to { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* - %"$tf_211" = load { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }, { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$tf_210" - %"$tf_fptr_212" = extractvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf_211", 0 - %"$tf_envptr_213" = extractvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf_211", 1 - %"$tf_call_214" = call { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$tf_fptr_212"(i8* %"$tf_envptr_213") - store { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$tf_call_214", { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_30" - %"$$retval_30_215" = load { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }, { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_30" - ret { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_30_215" + %"$gasrem_262" = load i64, i64* @_gasrem + %"$gascmp_263" = icmp ugt i64 1, %"$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", 1 + store i64 %"$consume_266", i64* @_gasrem + %"$tf_267" = load { i8*, i8* }*, { i8*, i8* }** %tf + %"$tf_268" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_267", i32 0 + %"$tf_269" = bitcast { i8*, i8* }* %"$tf_268" to { { i8*, i8* }* (i8*)*, i8* }* + %"$tf_270" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf_269" + %"$tf_fptr_271" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_270", 0 + %"$tf_envptr_272" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_270", 1 + %"$tf_call_273" = call { i8*, i8* }* %"$tf_fptr_271"(i8* %"$tf_envptr_272") + %"$tf_274" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_call_273", i32 1 + %"$tf_275" = bitcast { i8*, i8* }* %"$tf_274" to { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* + %"$tf_276" = load { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }, { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$tf_275" + %"$tf_fptr_277" = extractvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf_276", 0 + %"$tf_envptr_278" = extractvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf_276", 1 + %"$tf_call_279" = call { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$tf_fptr_277"(i8* %"$tf_envptr_278") + store { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$tf_call_279", { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_30" + %"$$retval_30_280" = load { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }, { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_30" + ret { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_30_280" } define internal { i8*, i8* }* @"$fundef_27"(%"$$fundef_27_env_100"* %0) { entry: - %"$$fundef_27_env_tf_188" = getelementptr inbounds %"$$fundef_27_env_100", %"$$fundef_27_env_100"* %0, i32 0, i32 0 - %"$tf_envload_189" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_27_env_tf_188" + %"$$fundef_27_env_tf_243" = getelementptr inbounds %"$$fundef_27_env_100", %"$$fundef_27_env_100"* %0, i32 0, i32 0 + %"$tf_envload_244" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_27_env_tf_243" %tf = alloca { i8*, i8* }* - store { i8*, i8* }* %"$tf_envload_189", { i8*, i8* }** %tf + store { i8*, i8* }* %"$tf_envload_244", { i8*, i8* }** %tf %"$retval_28" = alloca { i8*, i8* }* - %"$$fundef_29_envp_190_load" = load i8*, i8** @_execptr - %"$$fundef_29_envp_190_salloc" = call i8* @_salloc(i8* %"$$fundef_29_envp_190_load", i64 8) - %"$$fundef_29_envp_190" = bitcast i8* %"$$fundef_29_envp_190_salloc" to %"$$fundef_29_env_99"* - %"$$fundef_29_env_voidp_192" = bitcast %"$$fundef_29_env_99"* %"$$fundef_29_envp_190" to i8* - %"$$fundef_29_cloval_193" = insertvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)* bitcast ({ { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (%"$$fundef_29_env_99"*)* @"$fundef_29" to { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_29_env_voidp_192", 1 - %"$$fundef_29_env_tf_194" = getelementptr inbounds %"$$fundef_29_env_99", %"$$fundef_29_env_99"* %"$$fundef_29_envp_190", i32 0, i32 0 - %"$tf_195" = load { i8*, i8* }*, { i8*, i8* }** %tf - store { i8*, i8* }* %"$tf_195", { i8*, i8* }** %"$$fundef_29_env_tf_194" - %"$dyndisp_table_196_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_196_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_196_salloc_load", i64 64) - %"$dyndisp_table_196_salloc" = bitcast i8* %"$dyndisp_table_196_salloc_salloc" to [4 x { i8*, i8* }]* - %"$dyndisp_table_196" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_196_salloc" to { i8*, i8* }* - %"$dyndisp_gep_197" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_196", i32 1 - %"$dyndisp_pcast_198" = bitcast { i8*, i8* }* %"$dyndisp_gep_197" to { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* - store { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$$fundef_29_cloval_193", { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_198" - store { i8*, i8* }* %"$dyndisp_table_196", { i8*, i8* }** %"$retval_28" - %"$$retval_28_199" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_28" - ret { i8*, i8* }* %"$$retval_28_199" + %"$gasrem_245" = load i64, i64* @_gasrem + %"$gascmp_246" = icmp ugt i64 1, %"$gasrem_245" + br i1 %"$gascmp_246", label %"$out_of_gas_247", label %"$have_gas_248" + +"$out_of_gas_247": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_248" + +"$have_gas_248": ; preds = %"$out_of_gas_247", %entry + %"$consume_249" = sub i64 %"$gasrem_245", 1 + store i64 %"$consume_249", i64* @_gasrem + %"$$fundef_29_envp_250_load" = load i8*, i8** @_execptr + %"$$fundef_29_envp_250_salloc" = call i8* @_salloc(i8* %"$$fundef_29_envp_250_load", i64 8) + %"$$fundef_29_envp_250" = bitcast i8* %"$$fundef_29_envp_250_salloc" to %"$$fundef_29_env_99"* + %"$$fundef_29_env_voidp_252" = bitcast %"$$fundef_29_env_99"* %"$$fundef_29_envp_250" to i8* + %"$$fundef_29_cloval_253" = insertvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)* bitcast ({ { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (%"$$fundef_29_env_99"*)* @"$fundef_29" to { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_29_env_voidp_252", 1 + %"$$fundef_29_env_tf_254" = getelementptr inbounds %"$$fundef_29_env_99", %"$$fundef_29_env_99"* %"$$fundef_29_envp_250", i32 0, i32 0 + %"$tf_255" = load { i8*, i8* }*, { i8*, i8* }** %tf + store { i8*, i8* }* %"$tf_255", { i8*, i8* }** %"$$fundef_29_env_tf_254" + %"$dyndisp_table_256_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_256_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_256_salloc_load", i64 64) + %"$dyndisp_table_256_salloc" = bitcast i8* %"$dyndisp_table_256_salloc_salloc" to [4 x { i8*, i8* }]* + %"$dyndisp_table_256" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_256_salloc" to { i8*, i8* }* + %"$dyndisp_gep_257" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_256", i32 1 + %"$dyndisp_pcast_258" = bitcast { i8*, i8* }* %"$dyndisp_gep_257" to { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* + store { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$$fundef_29_cloval_253", { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_258" + store { i8*, i8* }* %"$dyndisp_table_256", { i8*, i8* }** %"$retval_28" + %"$$retval_28_259" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_28" + ret { i8*, i8* }* %"$$retval_28_259" } define internal %TName_Pair_ByStr1_ByStr2* @"$fundef_25"(%"$$fundef_25_env_101"* %0, [2 x i8] %1) { entry: - %"$$fundef_25_env_a_179" = getelementptr inbounds %"$$fundef_25_env_101", %"$$fundef_25_env_101"* %0, i32 0, i32 0 - %"$a_envload_180" = load [1 x i8], [1 x i8]* %"$$fundef_25_env_a_179" + %"$$fundef_25_env_a_229" = getelementptr inbounds %"$$fundef_25_env_101", %"$$fundef_25_env_101"* %0, i32 0, i32 0 + %"$a_envload_230" = load [1 x i8], [1 x i8]* %"$$fundef_25_env_a_229" %a = alloca [1 x i8] - store [1 x i8] %"$a_envload_180", [1 x i8]* %a + store [1 x i8] %"$a_envload_230", [1 x i8]* %a %"$retval_26" = alloca %TName_Pair_ByStr1_ByStr2* - %"$a_181" = load [1 x i8], [1 x i8]* %a - %"$adtval_182_load" = load i8*, i8** @_execptr - %"$adtval_182_salloc" = call i8* @_salloc(i8* %"$adtval_182_load", i64 4) - %"$adtval_182" = bitcast i8* %"$adtval_182_salloc" to %CName_Pair_ByStr1_ByStr2* - %"$adtgep_183" = getelementptr inbounds %CName_Pair_ByStr1_ByStr2, %CName_Pair_ByStr1_ByStr2* %"$adtval_182", i32 0, i32 0 - store i8 0, i8* %"$adtgep_183" - %"$adtgep_184" = getelementptr inbounds %CName_Pair_ByStr1_ByStr2, %CName_Pair_ByStr1_ByStr2* %"$adtval_182", i32 0, i32 1 - store [1 x i8] %"$a_181", [1 x i8]* %"$adtgep_184" - %"$adtgep_185" = getelementptr inbounds %CName_Pair_ByStr1_ByStr2, %CName_Pair_ByStr1_ByStr2* %"$adtval_182", i32 0, i32 2 - store [2 x i8] %1, [2 x i8]* %"$adtgep_185" - %"$adtptr_186" = bitcast %CName_Pair_ByStr1_ByStr2* %"$adtval_182" to %TName_Pair_ByStr1_ByStr2* - store %TName_Pair_ByStr1_ByStr2* %"$adtptr_186", %TName_Pair_ByStr1_ByStr2** %"$retval_26" - %"$$retval_26_187" = load %TName_Pair_ByStr1_ByStr2*, %TName_Pair_ByStr1_ByStr2** %"$retval_26" - ret %TName_Pair_ByStr1_ByStr2* %"$$retval_26_187" + %"$gasrem_231" = load i64, i64* @_gasrem + %"$gascmp_232" = icmp ugt i64 1, %"$gasrem_231" + br i1 %"$gascmp_232", label %"$out_of_gas_233", label %"$have_gas_234" + +"$out_of_gas_233": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_234" + +"$have_gas_234": ; preds = %"$out_of_gas_233", %entry + %"$consume_235" = sub i64 %"$gasrem_231", 1 + store i64 %"$consume_235", i64* @_gasrem + %"$a_236" = load [1 x i8], [1 x i8]* %a + %"$adtval_237_load" = load i8*, i8** @_execptr + %"$adtval_237_salloc" = call i8* @_salloc(i8* %"$adtval_237_load", i64 4) + %"$adtval_237" = bitcast i8* %"$adtval_237_salloc" to %CName_Pair_ByStr1_ByStr2* + %"$adtgep_238" = getelementptr inbounds %CName_Pair_ByStr1_ByStr2, %CName_Pair_ByStr1_ByStr2* %"$adtval_237", i32 0, i32 0 + store i8 0, i8* %"$adtgep_238" + %"$adtgep_239" = getelementptr inbounds %CName_Pair_ByStr1_ByStr2, %CName_Pair_ByStr1_ByStr2* %"$adtval_237", i32 0, i32 1 + store [1 x i8] %"$a_236", [1 x i8]* %"$adtgep_239" + %"$adtgep_240" = getelementptr inbounds %CName_Pair_ByStr1_ByStr2, %CName_Pair_ByStr1_ByStr2* %"$adtval_237", i32 0, i32 2 + store [2 x i8] %1, [2 x i8]* %"$adtgep_240" + %"$adtptr_241" = bitcast %CName_Pair_ByStr1_ByStr2* %"$adtval_237" to %TName_Pair_ByStr1_ByStr2* + store %TName_Pair_ByStr1_ByStr2* %"$adtptr_241", %TName_Pair_ByStr1_ByStr2** %"$retval_26" + %"$$retval_26_242" = load %TName_Pair_ByStr1_ByStr2*, %TName_Pair_ByStr1_ByStr2** %"$retval_26" + ret %TName_Pair_ByStr1_ByStr2* %"$$retval_26_242" } define internal { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } @"$fundef_23"(%"$$fundef_23_env_102"* %0, [1 x i8] %1) { entry: %"$retval_24" = alloca { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } - %"$$fundef_25_envp_173_load" = load i8*, i8** @_execptr - %"$$fundef_25_envp_173_salloc" = call i8* @_salloc(i8* %"$$fundef_25_envp_173_load", i64 1) - %"$$fundef_25_envp_173" = bitcast i8* %"$$fundef_25_envp_173_salloc" to %"$$fundef_25_env_101"* - %"$$fundef_25_env_voidp_175" = bitcast %"$$fundef_25_env_101"* %"$$fundef_25_envp_173" to i8* - %"$$fundef_25_cloval_176" = insertvalue { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])* bitcast (%TName_Pair_ByStr1_ByStr2* (%"$$fundef_25_env_101"*, [2 x i8])* @"$fundef_25" to %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*), i8* undef }, i8* %"$$fundef_25_env_voidp_175", 1 - %"$$fundef_25_env_a_177" = getelementptr inbounds %"$$fundef_25_env_101", %"$$fundef_25_env_101"* %"$$fundef_25_envp_173", i32 0, i32 0 - store [1 x i8] %1, [1 x i8]* %"$$fundef_25_env_a_177" - store { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } %"$$fundef_25_cloval_176", { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* }* %"$retval_24" - %"$$retval_24_178" = load { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* }, { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* }* %"$retval_24" - ret { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } %"$$retval_24_178" + %"$gasrem_218" = load i64, i64* @_gasrem + %"$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 + %"$$fundef_25_envp_223_load" = load i8*, i8** @_execptr + %"$$fundef_25_envp_223_salloc" = call i8* @_salloc(i8* %"$$fundef_25_envp_223_load", i64 1) + %"$$fundef_25_envp_223" = bitcast i8* %"$$fundef_25_envp_223_salloc" to %"$$fundef_25_env_101"* + %"$$fundef_25_env_voidp_225" = bitcast %"$$fundef_25_env_101"* %"$$fundef_25_envp_223" to i8* + %"$$fundef_25_cloval_226" = insertvalue { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])* bitcast (%TName_Pair_ByStr1_ByStr2* (%"$$fundef_25_env_101"*, [2 x i8])* @"$fundef_25" to %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*), i8* undef }, i8* %"$$fundef_25_env_voidp_225", 1 + %"$$fundef_25_env_a_227" = getelementptr inbounds %"$$fundef_25_env_101", %"$$fundef_25_env_101"* %"$$fundef_25_envp_223", i32 0, i32 0 + store [1 x i8] %1, [1 x i8]* %"$$fundef_25_env_a_227" + store { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } %"$$fundef_25_cloval_226", { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* }* %"$retval_24" + %"$$retval_24_228" = load { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* }, { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* }* %"$retval_24" + ret { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } %"$$retval_24_228" } define internal { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } @"$fundef_21"(%"$$fundef_21_env_103"* %0) { entry: %"$retval_22" = alloca { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } + %"$gasrem_209" = load i64, i64* @_gasrem + %"$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 store { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])* bitcast ({ %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (%"$$fundef_23_env_102"*, [1 x i8])* @"$fundef_23" to { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*), i8* null }, { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* }* %"$retval_22" - %"$$retval_22_172" = load { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* }, { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* }* %"$retval_22" - ret { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } %"$$retval_22_172" + %"$$retval_22_217" = load { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* }, { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* }* %"$retval_22" + ret { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } %"$$retval_22_217" } define internal %TName_Pair_ByStr1_Uint64* @"$fundef_19"(%"$$fundef_19_env_104"* %0, %Uint64 %1) { entry: - %"$$fundef_19_env_a_160" = getelementptr inbounds %"$$fundef_19_env_104", %"$$fundef_19_env_104"* %0, i32 0, i32 0 - %"$a_envload_161" = load [1 x i8], [1 x i8]* %"$$fundef_19_env_a_160" + %"$$fundef_19_env_a_195" = getelementptr inbounds %"$$fundef_19_env_104", %"$$fundef_19_env_104"* %0, i32 0, i32 0 + %"$a_envload_196" = load [1 x i8], [1 x i8]* %"$$fundef_19_env_a_195" %a = alloca [1 x i8] - store [1 x i8] %"$a_envload_161", [1 x i8]* %a + store [1 x i8] %"$a_envload_196", [1 x i8]* %a %"$retval_20" = alloca %TName_Pair_ByStr1_Uint64* - %"$a_162" = load [1 x i8], [1 x i8]* %a - %"$adtval_163_load" = load i8*, i8** @_execptr - %"$adtval_163_salloc" = call i8* @_salloc(i8* %"$adtval_163_load", i64 10) - %"$adtval_163" = bitcast i8* %"$adtval_163_salloc" to %CName_Pair_ByStr1_Uint64* - %"$adtgep_164" = getelementptr inbounds %CName_Pair_ByStr1_Uint64, %CName_Pair_ByStr1_Uint64* %"$adtval_163", i32 0, i32 0 - store i8 0, i8* %"$adtgep_164" - %"$adtgep_165" = getelementptr inbounds %CName_Pair_ByStr1_Uint64, %CName_Pair_ByStr1_Uint64* %"$adtval_163", i32 0, i32 1 - store [1 x i8] %"$a_162", [1 x i8]* %"$adtgep_165" - %"$adtgep_166" = getelementptr inbounds %CName_Pair_ByStr1_Uint64, %CName_Pair_ByStr1_Uint64* %"$adtval_163", i32 0, i32 2 - store %Uint64 %1, %Uint64* %"$adtgep_166" - %"$adtptr_167" = bitcast %CName_Pair_ByStr1_Uint64* %"$adtval_163" to %TName_Pair_ByStr1_Uint64* - store %TName_Pair_ByStr1_Uint64* %"$adtptr_167", %TName_Pair_ByStr1_Uint64** %"$retval_20" - %"$$retval_20_168" = load %TName_Pair_ByStr1_Uint64*, %TName_Pair_ByStr1_Uint64** %"$retval_20" - ret %TName_Pair_ByStr1_Uint64* %"$$retval_20_168" + %"$gasrem_197" = load i64, i64* @_gasrem + %"$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 + %"$a_202" = load [1 x i8], [1 x i8]* %a + %"$adtval_203_load" = load i8*, i8** @_execptr + %"$adtval_203_salloc" = call i8* @_salloc(i8* %"$adtval_203_load", i64 10) + %"$adtval_203" = bitcast i8* %"$adtval_203_salloc" to %CName_Pair_ByStr1_Uint64* + %"$adtgep_204" = getelementptr inbounds %CName_Pair_ByStr1_Uint64, %CName_Pair_ByStr1_Uint64* %"$adtval_203", i32 0, i32 0 + store i8 0, i8* %"$adtgep_204" + %"$adtgep_205" = getelementptr inbounds %CName_Pair_ByStr1_Uint64, %CName_Pair_ByStr1_Uint64* %"$adtval_203", i32 0, i32 1 + store [1 x i8] %"$a_202", [1 x i8]* %"$adtgep_205" + %"$adtgep_206" = getelementptr inbounds %CName_Pair_ByStr1_Uint64, %CName_Pair_ByStr1_Uint64* %"$adtval_203", i32 0, i32 2 + store %Uint64 %1, %Uint64* %"$adtgep_206" + %"$adtptr_207" = bitcast %CName_Pair_ByStr1_Uint64* %"$adtval_203" to %TName_Pair_ByStr1_Uint64* + store %TName_Pair_ByStr1_Uint64* %"$adtptr_207", %TName_Pair_ByStr1_Uint64** %"$retval_20" + %"$$retval_20_208" = load %TName_Pair_ByStr1_Uint64*, %TName_Pair_ByStr1_Uint64** %"$retval_20" + ret %TName_Pair_ByStr1_Uint64* %"$$retval_20_208" } define internal { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } @"$fundef_17"(%"$$fundef_17_env_105"* %0, [1 x i8] %1) { entry: %"$retval_18" = alloca { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } - %"$$fundef_19_envp_154_load" = load i8*, i8** @_execptr - %"$$fundef_19_envp_154_salloc" = call i8* @_salloc(i8* %"$$fundef_19_envp_154_load", i64 1) - %"$$fundef_19_envp_154" = bitcast i8* %"$$fundef_19_envp_154_salloc" to %"$$fundef_19_env_104"* - %"$$fundef_19_env_voidp_156" = bitcast %"$$fundef_19_env_104"* %"$$fundef_19_envp_154" to i8* - %"$$fundef_19_cloval_157" = insertvalue { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)* bitcast (%TName_Pair_ByStr1_Uint64* (%"$$fundef_19_env_104"*, %Uint64)* @"$fundef_19" to %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*), i8* undef }, i8* %"$$fundef_19_env_voidp_156", 1 - %"$$fundef_19_env_a_158" = getelementptr inbounds %"$$fundef_19_env_104", %"$$fundef_19_env_104"* %"$$fundef_19_envp_154", i32 0, i32 0 - store [1 x i8] %1, [1 x i8]* %"$$fundef_19_env_a_158" - store { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } %"$$fundef_19_cloval_157", { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* }* %"$retval_18" - %"$$retval_18_159" = load { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* }, { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* }* %"$retval_18" - ret { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } %"$$retval_18_159" + %"$gasrem_184" = load i64, i64* @_gasrem + %"$gascmp_185" = icmp ugt i64 1, %"$gasrem_184" + br i1 %"$gascmp_185", label %"$out_of_gas_186", label %"$have_gas_187" + +"$out_of_gas_186": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_187" + +"$have_gas_187": ; preds = %"$out_of_gas_186", %entry + %"$consume_188" = sub i64 %"$gasrem_184", 1 + store i64 %"$consume_188", i64* @_gasrem + %"$$fundef_19_envp_189_load" = load i8*, i8** @_execptr + %"$$fundef_19_envp_189_salloc" = call i8* @_salloc(i8* %"$$fundef_19_envp_189_load", i64 1) + %"$$fundef_19_envp_189" = bitcast i8* %"$$fundef_19_envp_189_salloc" to %"$$fundef_19_env_104"* + %"$$fundef_19_env_voidp_191" = bitcast %"$$fundef_19_env_104"* %"$$fundef_19_envp_189" to i8* + %"$$fundef_19_cloval_192" = insertvalue { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)* bitcast (%TName_Pair_ByStr1_Uint64* (%"$$fundef_19_env_104"*, %Uint64)* @"$fundef_19" to %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*), i8* undef }, i8* %"$$fundef_19_env_voidp_191", 1 + %"$$fundef_19_env_a_193" = getelementptr inbounds %"$$fundef_19_env_104", %"$$fundef_19_env_104"* %"$$fundef_19_envp_189", i32 0, i32 0 + store [1 x i8] %1, [1 x i8]* %"$$fundef_19_env_a_193" + store { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } %"$$fundef_19_cloval_192", { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* }* %"$retval_18" + %"$$retval_18_194" = load { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* }, { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* }* %"$retval_18" + ret { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } %"$$retval_18_194" } define internal { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* } @"$fundef_15"(%"$$fundef_15_env_106"* %0) { entry: %"$retval_16" = alloca { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* } + %"$gasrem_175" = load i64, i64* @_gasrem + %"$gascmp_176" = icmp ugt i64 1, %"$gasrem_175" + br i1 %"$gascmp_176", label %"$out_of_gas_177", label %"$have_gas_178" + +"$out_of_gas_177": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_178" + +"$have_gas_178": ; preds = %"$out_of_gas_177", %entry + %"$consume_179" = sub i64 %"$gasrem_175", 1 + store i64 %"$consume_179", i64* @_gasrem store { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* } { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])* bitcast ({ %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (%"$$fundef_17_env_105"*, [1 x i8])* @"$fundef_17" to { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*), i8* null }, { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* }* %"$retval_16" - %"$$retval_16_153" = load { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* }, { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* }* %"$retval_16" - ret { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* } %"$$retval_16_153" + %"$$retval_16_183" = load { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* }, { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* }* %"$retval_16" + ret { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* } %"$$retval_16_183" } define internal { i8*, i8* }* @"$fundef_13"(%"$$fundef_13_env_107"* %0) { entry: %"$retval_14" = alloca { i8*, i8* }* - %"$dyndisp_table_144_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_144_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_144_salloc_load", i64 64) - %"$dyndisp_table_144_salloc" = bitcast i8* %"$dyndisp_table_144_salloc_salloc" to [4 x { i8*, i8* }]* - %"$dyndisp_table_144" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_144_salloc" to { i8*, i8* }* - %"$dyndisp_gep_145" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_144", i32 1 - %"$dyndisp_pcast_146" = bitcast { i8*, i8* }* %"$dyndisp_gep_145" to { { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* }* - store { { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* } { { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* } (i8*)* bitcast ({ { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* } (%"$$fundef_15_env_106"*)* @"$fundef_15" to { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*), i8* null }, { { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_146" - %"$dyndisp_gep_147" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_144", i32 3 - %"$dyndisp_pcast_148" = bitcast { i8*, i8* }* %"$dyndisp_gep_147" to { { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* }* - store { { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* } { { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)* bitcast ({ { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (%"$$fundef_21_env_103"*)* @"$fundef_21" to { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*), i8* null }, { { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_148" - store { i8*, i8* }* %"$dyndisp_table_144", { i8*, i8* }** %"$retval_14" - %"$$retval_14_149" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_14" - ret { i8*, i8* }* %"$$retval_14_149" + %"$gasrem_158" = load i64, i64* @_gasrem + %"$gascmp_159" = icmp ugt i64 1, %"$gasrem_158" + br i1 %"$gascmp_159", label %"$out_of_gas_160", label %"$have_gas_161" + +"$out_of_gas_160": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_161" + +"$have_gas_161": ; preds = %"$out_of_gas_160", %entry + %"$consume_162" = sub i64 %"$gasrem_158", 1 + store i64 %"$consume_162", i64* @_gasrem + %"$dyndisp_table_169_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_169_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_169_salloc_load", i64 64) + %"$dyndisp_table_169_salloc" = bitcast i8* %"$dyndisp_table_169_salloc_salloc" to [4 x { i8*, i8* }]* + %"$dyndisp_table_169" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_169_salloc" to { i8*, i8* }* + %"$dyndisp_gep_170" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_169", i32 1 + %"$dyndisp_pcast_171" = bitcast { i8*, i8* }* %"$dyndisp_gep_170" to { { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* }* + store { { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* } { { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* } (i8*)* bitcast ({ { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* } (%"$$fundef_15_env_106"*)* @"$fundef_15" to { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*), i8* null }, { { { %TName_Pair_ByStr1_Uint64* (i8*, %Uint64)*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_171" + %"$dyndisp_gep_172" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_169", i32 3 + %"$dyndisp_pcast_173" = bitcast { i8*, i8* }* %"$dyndisp_gep_172" to { { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* }* + store { { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* } { { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)* bitcast ({ { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (%"$$fundef_21_env_103"*)* @"$fundef_21" to { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*), i8* null }, { { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_173" + store { i8*, i8* }* %"$dyndisp_table_169", { i8*, i8* }** %"$retval_14" + %"$$retval_14_174" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_14" + ret { i8*, i8* }* %"$$retval_14_174" } define internal %TName_Pair_Uint32_Uint64* @"$fundef_11"(%"$$fundef_11_env_108"* %0, %Uint64 %1) { entry: - %"$$fundef_11_env_a_129" = getelementptr inbounds %"$$fundef_11_env_108", %"$$fundef_11_env_108"* %0, i32 0, i32 0 - %"$a_envload_130" = load %Uint32, %Uint32* %"$$fundef_11_env_a_129" + %"$$fundef_11_env_a_144" = getelementptr inbounds %"$$fundef_11_env_108", %"$$fundef_11_env_108"* %0, i32 0, i32 0 + %"$a_envload_145" = load %Uint32, %Uint32* %"$$fundef_11_env_a_144" %a = alloca %Uint32 - store %Uint32 %"$a_envload_130", %Uint32* %a + store %Uint32 %"$a_envload_145", %Uint32* %a %"$retval_12" = alloca %TName_Pair_Uint32_Uint64* - %"$a_131" = load %Uint32, %Uint32* %a - %"$adtval_132_load" = load i8*, i8** @_execptr - %"$adtval_132_salloc" = call i8* @_salloc(i8* %"$adtval_132_load", i64 13) - %"$adtval_132" = bitcast i8* %"$adtval_132_salloc" to %CName_Pair_Uint32_Uint64* - %"$adtgep_133" = getelementptr inbounds %CName_Pair_Uint32_Uint64, %CName_Pair_Uint32_Uint64* %"$adtval_132", i32 0, i32 0 - store i8 0, i8* %"$adtgep_133" - %"$adtgep_134" = getelementptr inbounds %CName_Pair_Uint32_Uint64, %CName_Pair_Uint32_Uint64* %"$adtval_132", i32 0, i32 1 - store %Uint32 %"$a_131", %Uint32* %"$adtgep_134" - %"$adtgep_135" = getelementptr inbounds %CName_Pair_Uint32_Uint64, %CName_Pair_Uint32_Uint64* %"$adtval_132", i32 0, i32 2 - store %Uint64 %1, %Uint64* %"$adtgep_135" - %"$adtptr_136" = bitcast %CName_Pair_Uint32_Uint64* %"$adtval_132" to %TName_Pair_Uint32_Uint64* - store %TName_Pair_Uint32_Uint64* %"$adtptr_136", %TName_Pair_Uint32_Uint64** %"$retval_12" - %"$$retval_12_137" = load %TName_Pair_Uint32_Uint64*, %TName_Pair_Uint32_Uint64** %"$retval_12" - ret %TName_Pair_Uint32_Uint64* %"$$retval_12_137" + %"$gasrem_146" = load i64, i64* @_gasrem + %"$gascmp_147" = icmp ugt i64 1, %"$gasrem_146" + br i1 %"$gascmp_147", label %"$out_of_gas_148", label %"$have_gas_149" + +"$out_of_gas_148": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_149" + +"$have_gas_149": ; preds = %"$out_of_gas_148", %entry + %"$consume_150" = sub i64 %"$gasrem_146", 1 + store i64 %"$consume_150", i64* @_gasrem + %"$a_151" = load %Uint32, %Uint32* %a + %"$adtval_152_load" = load i8*, i8** @_execptr + %"$adtval_152_salloc" = call i8* @_salloc(i8* %"$adtval_152_load", i64 13) + %"$adtval_152" = bitcast i8* %"$adtval_152_salloc" to %CName_Pair_Uint32_Uint64* + %"$adtgep_153" = getelementptr inbounds %CName_Pair_Uint32_Uint64, %CName_Pair_Uint32_Uint64* %"$adtval_152", i32 0, i32 0 + store i8 0, i8* %"$adtgep_153" + %"$adtgep_154" = getelementptr inbounds %CName_Pair_Uint32_Uint64, %CName_Pair_Uint32_Uint64* %"$adtval_152", i32 0, i32 1 + store %Uint32 %"$a_151", %Uint32* %"$adtgep_154" + %"$adtgep_155" = getelementptr inbounds %CName_Pair_Uint32_Uint64, %CName_Pair_Uint32_Uint64* %"$adtval_152", i32 0, i32 2 + store %Uint64 %1, %Uint64* %"$adtgep_155" + %"$adtptr_156" = bitcast %CName_Pair_Uint32_Uint64* %"$adtval_152" to %TName_Pair_Uint32_Uint64* + store %TName_Pair_Uint32_Uint64* %"$adtptr_156", %TName_Pair_Uint32_Uint64** %"$retval_12" + %"$$retval_12_157" = load %TName_Pair_Uint32_Uint64*, %TName_Pair_Uint32_Uint64** %"$retval_12" + ret %TName_Pair_Uint32_Uint64* %"$$retval_12_157" } define internal { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } @"$fundef_9"(%"$$fundef_9_env_109"* %0, %Uint32 %1) { entry: %"$retval_10" = alloca { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } - %"$$fundef_11_envp_123_load" = load i8*, i8** @_execptr - %"$$fundef_11_envp_123_salloc" = call i8* @_salloc(i8* %"$$fundef_11_envp_123_load", i64 4) - %"$$fundef_11_envp_123" = bitcast i8* %"$$fundef_11_envp_123_salloc" to %"$$fundef_11_env_108"* - %"$$fundef_11_env_voidp_125" = bitcast %"$$fundef_11_env_108"* %"$$fundef_11_envp_123" to i8* - %"$$fundef_11_cloval_126" = insertvalue { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)* bitcast (%TName_Pair_Uint32_Uint64* (%"$$fundef_11_env_108"*, %Uint64)* @"$fundef_11" to %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*), i8* undef }, i8* %"$$fundef_11_env_voidp_125", 1 - %"$$fundef_11_env_a_127" = getelementptr inbounds %"$$fundef_11_env_108", %"$$fundef_11_env_108"* %"$$fundef_11_envp_123", i32 0, i32 0 - store %Uint32 %1, %Uint32* %"$$fundef_11_env_a_127" - store { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$$fundef_11_cloval_126", { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }* %"$retval_10" - %"$$retval_10_128" = load { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }, { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }* %"$retval_10" - ret { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$$retval_10_128" + %"$gasrem_133" = load i64, i64* @_gasrem + %"$gascmp_134" = icmp ugt i64 1, %"$gasrem_133" + br i1 %"$gascmp_134", label %"$out_of_gas_135", label %"$have_gas_136" + +"$out_of_gas_135": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_136" + +"$have_gas_136": ; preds = %"$out_of_gas_135", %entry + %"$consume_137" = sub i64 %"$gasrem_133", 1 + store i64 %"$consume_137", i64* @_gasrem + %"$$fundef_11_envp_138_load" = load i8*, i8** @_execptr + %"$$fundef_11_envp_138_salloc" = call i8* @_salloc(i8* %"$$fundef_11_envp_138_load", i64 4) + %"$$fundef_11_envp_138" = bitcast i8* %"$$fundef_11_envp_138_salloc" to %"$$fundef_11_env_108"* + %"$$fundef_11_env_voidp_140" = bitcast %"$$fundef_11_env_108"* %"$$fundef_11_envp_138" to i8* + %"$$fundef_11_cloval_141" = insertvalue { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)* bitcast (%TName_Pair_Uint32_Uint64* (%"$$fundef_11_env_108"*, %Uint64)* @"$fundef_11" to %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*), i8* undef }, i8* %"$$fundef_11_env_voidp_140", 1 + %"$$fundef_11_env_a_142" = getelementptr inbounds %"$$fundef_11_env_108", %"$$fundef_11_env_108"* %"$$fundef_11_envp_138", i32 0, i32 0 + store %Uint32 %1, %Uint32* %"$$fundef_11_env_a_142" + store { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$$fundef_11_cloval_141", { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }* %"$retval_10" + %"$$retval_10_143" = load { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }, { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }* %"$retval_10" + ret { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$$retval_10_143" } define internal { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } @"$fundef_7"(%"$$fundef_7_env_110"* %0) { entry: %"$retval_8" = alloca { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } + %"$gasrem_124" = load i64, i64* @_gasrem + %"$gascmp_125" = icmp ugt i64 1, %"$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", 1 + store i64 %"$consume_128", i64* @_gasrem store { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)* bitcast ({ %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (%"$$fundef_9_env_109"*, %Uint32)* @"$fundef_9" to { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*), i8* null }, { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_8" - %"$$retval_8_122" = load { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }, { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_8" - ret { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_8_122" + %"$$retval_8_132" = load { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }, { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %"$retval_8" + ret { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$$retval_8_132" } define internal { i8*, i8* }* @"$fundef_5"(%"$$fundef_5_env_111"* %0) { entry: %"$retval_6" = alloca { i8*, i8* }* - %"$dyndisp_table_115_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_115_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_115_salloc_load", i64 64) - %"$dyndisp_table_115_salloc" = bitcast i8* %"$dyndisp_table_115_salloc_salloc" to [4 x { i8*, i8* }]* - %"$dyndisp_table_115" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_115_salloc" to { i8*, i8* }* - %"$dyndisp_gep_116" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_115", i32 1 - %"$dyndisp_pcast_117" = bitcast { i8*, i8* }* %"$dyndisp_gep_116" to { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* - store { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)* bitcast ({ { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (%"$$fundef_7_env_110"*)* @"$fundef_7" to { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*), i8* null }, { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_117" - store { i8*, i8* }* %"$dyndisp_table_115", { i8*, i8* }** %"$retval_6" - %"$$retval_6_118" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_6" - ret { i8*, i8* }* %"$$retval_6_118" + %"$gasrem_112" = load i64, i64* @_gasrem + %"$gascmp_113" = icmp ugt i64 1, %"$gasrem_112" + br i1 %"$gascmp_113", label %"$out_of_gas_114", label %"$have_gas_115" + +"$out_of_gas_114": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_115" + +"$have_gas_115": ; preds = %"$out_of_gas_114", %entry + %"$consume_116" = sub i64 %"$gasrem_112", 1 + store i64 %"$consume_116", i64* @_gasrem + %"$dyndisp_table_120_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_120_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_120_salloc_load", i64 64) + %"$dyndisp_table_120_salloc" = bitcast i8* %"$dyndisp_table_120_salloc_salloc" to [4 x { i8*, i8* }]* + %"$dyndisp_table_120" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_120_salloc" to { i8*, i8* }* + %"$dyndisp_gep_121" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_120", i32 1 + %"$dyndisp_pcast_122" = bitcast { i8*, i8* }* %"$dyndisp_gep_121" to { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* + store { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)* bitcast ({ { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (%"$$fundef_7_env_110"*)* @"$fundef_7" to { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*), i8* null }, { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_122" + store { i8*, i8* }* %"$dyndisp_table_120", { i8*, i8* }** %"$retval_6" + %"$$retval_6_123" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_6" + ret { i8*, i8* }* %"$$retval_6_123" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) define void @_init_libs() { @@ -354,136 +500,389 @@ entry: ret void } -define internal %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* @"$scilla_expr_216"(i8* %0) { +define internal %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* @"$scilla_expr_281"(i8* %0) { entry: %"$expr_4" = alloca %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* + %"$gasrem_282" = load i64, i64* @_gasrem + %"$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 = %entry + call void @_out_of_gas() + br label %"$have_gas_285" + +"$have_gas_285": ; preds = %"$out_of_gas_284", %entry + %"$consume_286" = sub i64 %"$gasrem_282", 1 + store i64 %"$consume_286", i64* @_gasrem %tf = alloca { i8*, i8* }* - %"$dyndisp_table_223_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_223_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_223_salloc_load", i64 64) - %"$dyndisp_table_223_salloc" = bitcast i8* %"$dyndisp_table_223_salloc_salloc" to [4 x { i8*, i8* }]* - %"$dyndisp_table_223" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_223_salloc" to { i8*, i8* }* - %"$dyndisp_gep_224" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_223", i32 0 - %"$dyndisp_pcast_225" = bitcast { i8*, i8* }* %"$dyndisp_gep_224" to { { i8*, i8* }* (i8*)*, i8* }* - store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_5_env_111"*)* @"$fundef_5" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_225" - %"$dyndisp_gep_226" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_223", i32 2 - %"$dyndisp_pcast_227" = bitcast { i8*, i8* }* %"$dyndisp_gep_226" to { { i8*, i8* }* (i8*)*, i8* }* - store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_13_env_107"*)* @"$fundef_13" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_227" - store { i8*, i8* }* %"$dyndisp_table_223", { i8*, i8* }** %tf + %"$gasrem_287" = load i64, i64* @_gasrem + %"$gascmp_288" = icmp ugt i64 1, %"$gasrem_287" + br i1 %"$gascmp_288", label %"$out_of_gas_289", label %"$have_gas_290" + +"$out_of_gas_289": ; preds = %"$have_gas_285" + call void @_out_of_gas() + br label %"$have_gas_290" + +"$have_gas_290": ; preds = %"$out_of_gas_289", %"$have_gas_285" + %"$consume_291" = sub i64 %"$gasrem_287", 1 + store i64 %"$consume_291", i64* @_gasrem + %"$dyndisp_table_298_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_298_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_298_salloc_load", i64 64) + %"$dyndisp_table_298_salloc" = bitcast i8* %"$dyndisp_table_298_salloc_salloc" to [4 x { i8*, i8* }]* + %"$dyndisp_table_298" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_298_salloc" to { i8*, i8* }* + %"$dyndisp_gep_299" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_298", i32 0 + %"$dyndisp_pcast_300" = bitcast { i8*, i8* }* %"$dyndisp_gep_299" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_5_env_111"*)* @"$fundef_5" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_300" + %"$dyndisp_gep_301" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_298", i32 2 + %"$dyndisp_pcast_302" = bitcast { i8*, i8* }* %"$dyndisp_gep_301" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_13_env_107"*)* @"$fundef_13" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_302" + store { i8*, i8* }* %"$dyndisp_table_298", { i8*, i8* }** %tf + %"$gasrem_303" = load i64, i64* @_gasrem + %"$gascmp_304" = icmp ugt i64 1, %"$gasrem_303" + br i1 %"$gascmp_304", label %"$out_of_gas_305", label %"$have_gas_306" + +"$out_of_gas_305": ; preds = %"$have_gas_290" + call void @_out_of_gas() + br label %"$have_gas_306" + +"$have_gas_306": ; preds = %"$out_of_gas_305", %"$have_gas_290" + %"$consume_307" = sub i64 %"$gasrem_303", 1 + store i64 %"$consume_307", i64* @_gasrem %tf1 = alloca { i8*, i8* }* - %"$$fundef_27_envp_228_load" = load i8*, i8** @_execptr - %"$$fundef_27_envp_228_salloc" = call i8* @_salloc(i8* %"$$fundef_27_envp_228_load", i64 8) - %"$$fundef_27_envp_228" = bitcast i8* %"$$fundef_27_envp_228_salloc" to %"$$fundef_27_env_100"* - %"$$fundef_27_env_voidp_230" = bitcast %"$$fundef_27_env_100"* %"$$fundef_27_envp_228" to i8* - %"$$fundef_27_cloval_231" = insertvalue { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_27_env_100"*)* @"$fundef_27" to { i8*, i8* }* (i8*)*), i8* undef }, i8* %"$$fundef_27_env_voidp_230", 1 - %"$$fundef_27_env_tf_232" = getelementptr inbounds %"$$fundef_27_env_100", %"$$fundef_27_env_100"* %"$$fundef_27_envp_228", i32 0, i32 0 - %"$tf_233" = load { i8*, i8* }*, { i8*, i8* }** %tf - store { i8*, i8* }* %"$tf_233", { i8*, i8* }** %"$$fundef_27_env_tf_232" - %"$dyndisp_table_234_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_234_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_234_salloc_load", i64 64) - %"$dyndisp_table_234_salloc" = bitcast i8* %"$dyndisp_table_234_salloc_salloc" to [4 x { i8*, i8* }]* - %"$dyndisp_table_234" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_234_salloc" to { i8*, i8* }* - %"$dyndisp_gep_235" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_234", i32 0 - %"$dyndisp_pcast_236" = bitcast { i8*, i8* }* %"$dyndisp_gep_235" to { { i8*, i8* }* (i8*)*, i8* }* - store { { i8*, i8* }* (i8*)*, i8* } %"$$fundef_27_cloval_231", { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_236" - store { i8*, i8* }* %"$dyndisp_table_234", { i8*, i8* }** %tf1 + %"$gasrem_308" = load i64, i64* @_gasrem + %"$gascmp_309" = icmp ugt i64 1, %"$gasrem_308" + br i1 %"$gascmp_309", label %"$out_of_gas_310", label %"$have_gas_311" + +"$out_of_gas_310": ; preds = %"$have_gas_306" + call void @_out_of_gas() + br label %"$have_gas_311" + +"$have_gas_311": ; preds = %"$out_of_gas_310", %"$have_gas_306" + %"$consume_312" = sub i64 %"$gasrem_308", 1 + store i64 %"$consume_312", i64* @_gasrem + %"$$fundef_27_envp_313_load" = load i8*, i8** @_execptr + %"$$fundef_27_envp_313_salloc" = call i8* @_salloc(i8* %"$$fundef_27_envp_313_load", i64 8) + %"$$fundef_27_envp_313" = bitcast i8* %"$$fundef_27_envp_313_salloc" to %"$$fundef_27_env_100"* + %"$$fundef_27_env_voidp_315" = bitcast %"$$fundef_27_env_100"* %"$$fundef_27_envp_313" to i8* + %"$$fundef_27_cloval_316" = insertvalue { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_27_env_100"*)* @"$fundef_27" to { i8*, i8* }* (i8*)*), i8* undef }, i8* %"$$fundef_27_env_voidp_315", 1 + %"$$fundef_27_env_tf_317" = getelementptr inbounds %"$$fundef_27_env_100", %"$$fundef_27_env_100"* %"$$fundef_27_envp_313", i32 0, i32 0 + %"$tf_318" = load { i8*, i8* }*, { i8*, i8* }** %tf + store { i8*, i8* }* %"$tf_318", { i8*, i8* }** %"$$fundef_27_env_tf_317" + %"$dyndisp_table_319_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_319_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_319_salloc_load", i64 64) + %"$dyndisp_table_319_salloc" = bitcast i8* %"$dyndisp_table_319_salloc_salloc" to [4 x { i8*, i8* }]* + %"$dyndisp_table_319" = bitcast [4 x { i8*, i8* }]* %"$dyndisp_table_319_salloc" to { i8*, i8* }* + %"$dyndisp_gep_320" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_319", i32 0 + %"$dyndisp_pcast_321" = bitcast { i8*, i8* }* %"$dyndisp_gep_320" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } %"$$fundef_27_cloval_316", { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_321" + store { i8*, i8* }* %"$dyndisp_table_319", { i8*, i8* }** %tf1 + %"$gasrem_322" = load i64, i64* @_gasrem + %"$gascmp_323" = icmp ugt i64 1, %"$gasrem_322" + br i1 %"$gascmp_323", label %"$out_of_gas_324", label %"$have_gas_325" + +"$out_of_gas_324": ; preds = %"$have_gas_311" + call void @_out_of_gas() + br label %"$have_gas_325" + +"$have_gas_325": ; preds = %"$out_of_gas_324", %"$have_gas_311" + %"$consume_326" = sub i64 %"$gasrem_322", 1 + store i64 %"$consume_326", i64* @_gasrem %t1 = alloca { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } - %"$tf1_237" = load { i8*, i8* }*, { i8*, i8* }** %tf1 - %"$tf1_238" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf1_237", i32 0 - %"$tf1_239" = bitcast { i8*, i8* }* %"$tf1_238" to { { i8*, i8* }* (i8*)*, i8* }* - %"$tf1_240" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf1_239" - %"$tf1_fptr_241" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf1_240", 0 - %"$tf1_envptr_242" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf1_240", 1 - %"$tf1_call_243" = call { i8*, i8* }* %"$tf1_fptr_241"(i8* %"$tf1_envptr_242") - %"$tf1_244" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf1_call_243", i32 1 - %"$tf1_245" = bitcast { i8*, i8* }* %"$tf1_244" to { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* - %"$tf1_246" = load { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }, { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$tf1_245" - %"$tf1_fptr_247" = extractvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf1_246", 0 - %"$tf1_envptr_248" = extractvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf1_246", 1 - %"$tf1_call_249" = call { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$tf1_fptr_247"(i8* %"$tf1_envptr_248") - store { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$tf1_call_249", { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %t1 + %"$gasrem_327" = load i64, i64* @_gasrem + %"$gascmp_328" = icmp ugt i64 1, %"$gasrem_327" + br i1 %"$gascmp_328", label %"$out_of_gas_329", label %"$have_gas_330" + +"$out_of_gas_329": ; preds = %"$have_gas_325" + call void @_out_of_gas() + br label %"$have_gas_330" + +"$have_gas_330": ; preds = %"$out_of_gas_329", %"$have_gas_325" + %"$consume_331" = sub i64 %"$gasrem_327", 1 + store i64 %"$consume_331", i64* @_gasrem + %"$tf1_332" = load { i8*, i8* }*, { i8*, i8* }** %tf1 + %"$tf1_333" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf1_332", i32 0 + %"$tf1_334" = bitcast { i8*, i8* }* %"$tf1_333" to { { i8*, i8* }* (i8*)*, i8* }* + %"$tf1_335" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf1_334" + %"$tf1_fptr_336" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf1_335", 0 + %"$tf1_envptr_337" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf1_335", 1 + %"$tf1_call_338" = call { i8*, i8* }* %"$tf1_fptr_336"(i8* %"$tf1_envptr_337") + %"$tf1_339" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf1_call_338", i32 1 + %"$tf1_340" = bitcast { i8*, i8* }* %"$tf1_339" to { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* + %"$tf1_341" = load { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }, { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* }* %"$tf1_340" + %"$tf1_fptr_342" = extractvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf1_341", 0 + %"$tf1_envptr_343" = extractvalue { { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } (i8*)*, i8* } %"$tf1_341", 1 + %"$tf1_call_344" = call { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$tf1_fptr_342"(i8* %"$tf1_envptr_343") + store { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$tf1_call_344", { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %t1 + %"$gasrem_345" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_330" + call void @_out_of_gas() + br label %"$have_gas_348" + +"$have_gas_348": ; preds = %"$out_of_gas_347", %"$have_gas_330" + %"$consume_349" = sub i64 %"$gasrem_345", 1 + store i64 %"$consume_349", i64* @_gasrem %t3 = alloca { i8*, i8* }* - %"$tf_250" = load { i8*, i8* }*, { i8*, i8* }** %tf - %"$tf_251" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_250", i32 2 - %"$tf_252" = bitcast { i8*, i8* }* %"$tf_251" to { { i8*, i8* }* (i8*)*, i8* }* - %"$tf_253" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf_252" - %"$tf_fptr_254" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_253", 0 - %"$tf_envptr_255" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_253", 1 - %"$tf_call_256" = call { i8*, i8* }* %"$tf_fptr_254"(i8* %"$tf_envptr_255") - store { i8*, i8* }* %"$tf_call_256", { i8*, i8* }** %t3 + %"$gasrem_350" = load i64, i64* @_gasrem + %"$gascmp_351" = icmp ugt i64 1, %"$gasrem_350" + br i1 %"$gascmp_351", label %"$out_of_gas_352", label %"$have_gas_353" + +"$out_of_gas_352": ; preds = %"$have_gas_348" + call void @_out_of_gas() + br label %"$have_gas_353" + +"$have_gas_353": ; preds = %"$out_of_gas_352", %"$have_gas_348" + %"$consume_354" = sub i64 %"$gasrem_350", 1 + store i64 %"$consume_354", i64* @_gasrem + %"$tf_355" = load { i8*, i8* }*, { i8*, i8* }** %tf + %"$tf_356" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$tf_355", i32 2 + %"$tf_357" = bitcast { i8*, i8* }* %"$tf_356" to { { i8*, i8* }* (i8*)*, i8* }* + %"$tf_358" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$tf_357" + %"$tf_fptr_359" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_358", 0 + %"$tf_envptr_360" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$tf_358", 1 + %"$tf_call_361" = call { i8*, i8* }* %"$tf_fptr_359"(i8* %"$tf_envptr_360") + store { i8*, i8* }* %"$tf_call_361", { i8*, i8* }** %t3 + %"$gasrem_362" = load i64, i64* @_gasrem + %"$gascmp_363" = icmp ugt i64 1, %"$gasrem_362" + br i1 %"$gascmp_363", label %"$out_of_gas_364", label %"$have_gas_365" + +"$out_of_gas_364": ; preds = %"$have_gas_353" + call void @_out_of_gas() + br label %"$have_gas_365" + +"$have_gas_365": ; preds = %"$out_of_gas_364", %"$have_gas_353" + %"$consume_366" = sub i64 %"$gasrem_362", 1 + store i64 %"$consume_366", i64* @_gasrem %t4 = alloca { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } - %"$t3_257" = load { i8*, i8* }*, { i8*, i8* }** %t3 - %"$t3_258" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$t3_257", i32 3 - %"$t3_259" = bitcast { i8*, i8* }* %"$t3_258" to { { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* }* - %"$t3_260" = load { { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* }, { { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* }* %"$t3_259" - %"$t3_fptr_261" = extractvalue { { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* } %"$t3_260", 0 - %"$t3_envptr_262" = extractvalue { { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* } %"$t3_260", 1 - %"$t3_call_263" = call { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } %"$t3_fptr_261"(i8* %"$t3_envptr_262") - store { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } %"$t3_call_263", { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* }* %t4 + %"$gasrem_367" = load i64, i64* @_gasrem + %"$gascmp_368" = icmp ugt i64 1, %"$gasrem_367" + br i1 %"$gascmp_368", label %"$out_of_gas_369", label %"$have_gas_370" + +"$out_of_gas_369": ; preds = %"$have_gas_365" + call void @_out_of_gas() + br label %"$have_gas_370" + +"$have_gas_370": ; preds = %"$out_of_gas_369", %"$have_gas_365" + %"$consume_371" = sub i64 %"$gasrem_367", 1 + store i64 %"$consume_371", i64* @_gasrem + %"$t3_372" = load { i8*, i8* }*, { i8*, i8* }** %t3 + %"$t3_373" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$t3_372", i32 3 + %"$t3_374" = bitcast { i8*, i8* }* %"$t3_373" to { { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* }* + %"$t3_375" = load { { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* }, { { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* }* %"$t3_374" + %"$t3_fptr_376" = extractvalue { { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* } %"$t3_375", 0 + %"$t3_envptr_377" = extractvalue { { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } (i8*)*, i8* } %"$t3_375", 1 + %"$t3_call_378" = call { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } %"$t3_fptr_376"(i8* %"$t3_envptr_377") + store { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } %"$t3_call_378", { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* }* %t4 + %"$gasrem_379" = load i64, i64* @_gasrem + %"$gascmp_380" = icmp ugt i64 1, %"$gasrem_379" + br i1 %"$gascmp_380", label %"$out_of_gas_381", label %"$have_gas_382" + +"$out_of_gas_381": ; preds = %"$have_gas_370" + call void @_out_of_gas() + br label %"$have_gas_382" + +"$have_gas_382": ; preds = %"$out_of_gas_381", %"$have_gas_370" + %"$consume_383" = sub i64 %"$gasrem_379", 1 + store i64 %"$consume_383", i64* @_gasrem %uint32_one = alloca %Uint32 + %"$gasrem_384" = load i64, i64* @_gasrem + %"$gascmp_385" = icmp ugt i64 1, %"$gasrem_384" + br i1 %"$gascmp_385", label %"$out_of_gas_386", label %"$have_gas_387" + +"$out_of_gas_386": ; preds = %"$have_gas_382" + call void @_out_of_gas() + br label %"$have_gas_387" + +"$have_gas_387": ; preds = %"$out_of_gas_386", %"$have_gas_382" + %"$consume_388" = sub i64 %"$gasrem_384", 1 + store i64 %"$consume_388", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %uint32_one + %"$gasrem_389" = load i64, i64* @_gasrem + %"$gascmp_390" = icmp ugt i64 1, %"$gasrem_389" + br i1 %"$gascmp_390", label %"$out_of_gas_391", label %"$have_gas_392" + +"$out_of_gas_391": ; preds = %"$have_gas_387" + call void @_out_of_gas() + br label %"$have_gas_392" + +"$have_gas_392": ; preds = %"$out_of_gas_391", %"$have_gas_387" + %"$consume_393" = sub i64 %"$gasrem_389", 1 + store i64 %"$consume_393", i64* @_gasrem %uint64_two = alloca %Uint64 + %"$gasrem_394" = load i64, i64* @_gasrem + %"$gascmp_395" = icmp ugt i64 1, %"$gasrem_394" + br i1 %"$gascmp_395", label %"$out_of_gas_396", label %"$have_gas_397" + +"$out_of_gas_396": ; preds = %"$have_gas_392" + call void @_out_of_gas() + br label %"$have_gas_397" + +"$have_gas_397": ; preds = %"$out_of_gas_396", %"$have_gas_392" + %"$consume_398" = sub i64 %"$gasrem_394", 1 + store i64 %"$consume_398", i64* @_gasrem store %Uint64 { i64 2 }, %Uint64* %uint64_two + %"$gasrem_399" = load i64, i64* @_gasrem + %"$gascmp_400" = icmp ugt i64 1, %"$gasrem_399" + br i1 %"$gascmp_400", label %"$out_of_gas_401", label %"$have_gas_402" + +"$out_of_gas_401": ; preds = %"$have_gas_397" + call void @_out_of_gas() + br label %"$have_gas_402" + +"$have_gas_402": ; preds = %"$out_of_gas_401", %"$have_gas_397" + %"$consume_403" = sub i64 %"$gasrem_399", 1 + store i64 %"$consume_403", i64* @_gasrem %addr_bystr1 = alloca [1 x i8] + %"$gasrem_404" = load i64, i64* @_gasrem + %"$gascmp_405" = icmp ugt i64 1, %"$gasrem_404" + br i1 %"$gascmp_405", label %"$out_of_gas_406", label %"$have_gas_407" + +"$out_of_gas_406": ; preds = %"$have_gas_402" + call void @_out_of_gas() + br label %"$have_gas_407" + +"$have_gas_407": ; preds = %"$out_of_gas_406", %"$have_gas_402" + %"$consume_408" = sub i64 %"$gasrem_404", 1 + store i64 %"$consume_408", i64* @_gasrem store [1 x i8] c"\AA", [1 x i8]* %addr_bystr1 + %"$gasrem_409" = load i64, i64* @_gasrem + %"$gascmp_410" = icmp ugt i64 1, %"$gasrem_409" + br i1 %"$gascmp_410", label %"$out_of_gas_411", label %"$have_gas_412" + +"$out_of_gas_411": ; preds = %"$have_gas_407" + call void @_out_of_gas() + br label %"$have_gas_412" + +"$have_gas_412": ; preds = %"$out_of_gas_411", %"$have_gas_407" + %"$consume_413" = sub i64 %"$gasrem_409", 1 + store i64 %"$consume_413", i64* @_gasrem %addr_bystr2 = alloca [2 x i8] + %"$gasrem_414" = load i64, i64* @_gasrem + %"$gascmp_415" = icmp ugt i64 1, %"$gasrem_414" + br i1 %"$gascmp_415", label %"$out_of_gas_416", label %"$have_gas_417" + +"$out_of_gas_416": ; preds = %"$have_gas_412" + call void @_out_of_gas() + br label %"$have_gas_417" + +"$have_gas_417": ; preds = %"$out_of_gas_416", %"$have_gas_412" + %"$consume_418" = sub i64 %"$gasrem_414", 1 + store i64 %"$consume_418", i64* @_gasrem store [2 x i8] c"\AA\BB", [2 x i8]* %addr_bystr2 + %"$gasrem_419" = load i64, i64* @_gasrem + %"$gascmp_420" = icmp ugt i64 1, %"$gasrem_419" + br i1 %"$gascmp_420", label %"$out_of_gas_421", label %"$have_gas_422" + +"$out_of_gas_421": ; preds = %"$have_gas_417" + call void @_out_of_gas() + br label %"$have_gas_422" + +"$have_gas_422": ; preds = %"$out_of_gas_421", %"$have_gas_417" + %"$consume_423" = sub i64 %"$gasrem_419", 1 + store i64 %"$consume_423", i64* @_gasrem %p1 = alloca %TName_Pair_Uint32_Uint64* + %"$gasrem_424" = load i64, i64* @_gasrem + %"$gascmp_425" = icmp ugt i64 1, %"$gasrem_424" + br i1 %"$gascmp_425", label %"$out_of_gas_426", label %"$have_gas_427" + +"$out_of_gas_426": ; preds = %"$have_gas_422" + call void @_out_of_gas() + br label %"$have_gas_427" + +"$have_gas_427": ; preds = %"$out_of_gas_426", %"$have_gas_422" + %"$consume_428" = sub i64 %"$gasrem_424", 1 + store i64 %"$consume_428", i64* @_gasrem %"$t1_0" = alloca { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } - %"$t1_264" = load { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }, { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %t1 - %"$t1_fptr_265" = extractvalue { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$t1_264", 0 - %"$t1_envptr_266" = extractvalue { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$t1_264", 1 - %"$uint32_one_267" = load %Uint32, %Uint32* %uint32_one - %"$t1_call_268" = call { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$t1_fptr_265"(i8* %"$t1_envptr_266", %Uint32 %"$uint32_one_267") - store { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$t1_call_268", { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }* %"$t1_0" + %"$t1_429" = load { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }, { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* }* %t1 + %"$t1_fptr_430" = extractvalue { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$t1_429", 0 + %"$t1_envptr_431" = extractvalue { { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } (i8*, %Uint32)*, i8* } %"$t1_429", 1 + %"$uint32_one_432" = load %Uint32, %Uint32* %uint32_one + %"$t1_call_433" = call { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$t1_fptr_430"(i8* %"$t1_envptr_431", %Uint32 %"$uint32_one_432") + store { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$t1_call_433", { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }* %"$t1_0" %"$t1_1" = alloca %TName_Pair_Uint32_Uint64* - %"$$t1_0_269" = load { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }, { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }* %"$t1_0" - %"$$t1_0_fptr_270" = extractvalue { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$$t1_0_269", 0 - %"$$t1_0_envptr_271" = extractvalue { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$$t1_0_269", 1 - %"$uint64_two_272" = load %Uint64, %Uint64* %uint64_two - %"$$t1_0_call_273" = call %TName_Pair_Uint32_Uint64* %"$$t1_0_fptr_270"(i8* %"$$t1_0_envptr_271", %Uint64 %"$uint64_two_272") - store %TName_Pair_Uint32_Uint64* %"$$t1_0_call_273", %TName_Pair_Uint32_Uint64** %"$t1_1" - %"$$t1_1_274" = load %TName_Pair_Uint32_Uint64*, %TName_Pair_Uint32_Uint64** %"$t1_1" - store %TName_Pair_Uint32_Uint64* %"$$t1_1_274", %TName_Pair_Uint32_Uint64** %p1 + %"$$t1_0_434" = load { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }, { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* }* %"$t1_0" + %"$$t1_0_fptr_435" = extractvalue { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$$t1_0_434", 0 + %"$$t1_0_envptr_436" = extractvalue { %TName_Pair_Uint32_Uint64* (i8*, %Uint64)*, i8* } %"$$t1_0_434", 1 + %"$uint64_two_437" = load %Uint64, %Uint64* %uint64_two + %"$$t1_0_call_438" = call %TName_Pair_Uint32_Uint64* %"$$t1_0_fptr_435"(i8* %"$$t1_0_envptr_436", %Uint64 %"$uint64_two_437") + store %TName_Pair_Uint32_Uint64* %"$$t1_0_call_438", %TName_Pair_Uint32_Uint64** %"$t1_1" + %"$$t1_1_439" = load %TName_Pair_Uint32_Uint64*, %TName_Pair_Uint32_Uint64** %"$t1_1" + store %TName_Pair_Uint32_Uint64* %"$$t1_1_439", %TName_Pair_Uint32_Uint64** %p1 + %"$gasrem_440" = load i64, i64* @_gasrem + %"$gascmp_441" = icmp ugt i64 1, %"$gasrem_440" + br i1 %"$gascmp_441", label %"$out_of_gas_442", label %"$have_gas_443" + +"$out_of_gas_442": ; preds = %"$have_gas_427" + call void @_out_of_gas() + br label %"$have_gas_443" + +"$have_gas_443": ; preds = %"$out_of_gas_442", %"$have_gas_427" + %"$consume_444" = sub i64 %"$gasrem_440", 1 + store i64 %"$consume_444", i64* @_gasrem %p2 = alloca %TName_Pair_ByStr1_ByStr2* + %"$gasrem_445" = load i64, i64* @_gasrem + %"$gascmp_446" = icmp ugt i64 1, %"$gasrem_445" + br i1 %"$gascmp_446", label %"$out_of_gas_447", label %"$have_gas_448" + +"$out_of_gas_447": ; preds = %"$have_gas_443" + call void @_out_of_gas() + br label %"$have_gas_448" + +"$have_gas_448": ; preds = %"$out_of_gas_447", %"$have_gas_443" + %"$consume_449" = sub i64 %"$gasrem_445", 1 + store i64 %"$consume_449", i64* @_gasrem %"$t4_2" = alloca { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } - %"$t4_275" = load { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* }, { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* }* %t4 - %"$t4_fptr_276" = extractvalue { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } %"$t4_275", 0 - %"$t4_envptr_277" = extractvalue { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } %"$t4_275", 1 - %"$addr_bystr1_278" = load [1 x i8], [1 x i8]* %addr_bystr1 - %"$t4_call_279" = call { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } %"$t4_fptr_276"(i8* %"$t4_envptr_277", [1 x i8] %"$addr_bystr1_278") - store { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } %"$t4_call_279", { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* }* %"$t4_2" + %"$t4_450" = load { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* }, { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* }* %t4 + %"$t4_fptr_451" = extractvalue { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } %"$t4_450", 0 + %"$t4_envptr_452" = extractvalue { { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } (i8*, [1 x i8])*, i8* } %"$t4_450", 1 + %"$addr_bystr1_453" = load [1 x i8], [1 x i8]* %addr_bystr1 + %"$t4_call_454" = call { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } %"$t4_fptr_451"(i8* %"$t4_envptr_452", [1 x i8] %"$addr_bystr1_453") + store { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } %"$t4_call_454", { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* }* %"$t4_2" %"$t4_3" = alloca %TName_Pair_ByStr1_ByStr2* - %"$$t4_2_280" = load { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* }, { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* }* %"$t4_2" - %"$$t4_2_fptr_281" = extractvalue { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } %"$$t4_2_280", 0 - %"$$t4_2_envptr_282" = extractvalue { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } %"$$t4_2_280", 1 - %"$addr_bystr2_283" = load [2 x i8], [2 x i8]* %addr_bystr2 - %"$$t4_2_call_284" = call %TName_Pair_ByStr1_ByStr2* %"$$t4_2_fptr_281"(i8* %"$$t4_2_envptr_282", [2 x i8] %"$addr_bystr2_283") - store %TName_Pair_ByStr1_ByStr2* %"$$t4_2_call_284", %TName_Pair_ByStr1_ByStr2** %"$t4_3" - %"$$t4_3_285" = load %TName_Pair_ByStr1_ByStr2*, %TName_Pair_ByStr1_ByStr2** %"$t4_3" - store %TName_Pair_ByStr1_ByStr2* %"$$t4_3_285", %TName_Pair_ByStr1_ByStr2** %p2 - %"$p1_286" = load %TName_Pair_Uint32_Uint64*, %TName_Pair_Uint32_Uint64** %p1 - %"$p2_287" = load %TName_Pair_ByStr1_ByStr2*, %TName_Pair_ByStr1_ByStr2** %p2 - %"$adtval_288_load" = load i8*, i8** @_execptr - %"$adtval_288_salloc" = call i8* @_salloc(i8* %"$adtval_288_load", i64 17) - %"$adtval_288" = bitcast i8* %"$adtval_288_salloc" to %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* - %"$adtgep_289" = getelementptr inbounds %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)", %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* %"$adtval_288", i32 0, i32 0 - store i8 0, i8* %"$adtgep_289" - %"$adtgep_290" = getelementptr inbounds %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)", %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* %"$adtval_288", i32 0, i32 1 - store %TName_Pair_Uint32_Uint64* %"$p1_286", %TName_Pair_Uint32_Uint64** %"$adtgep_290" - %"$adtgep_291" = getelementptr inbounds %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)", %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* %"$adtval_288", i32 0, i32 2 - store %TName_Pair_ByStr1_ByStr2* %"$p2_287", %TName_Pair_ByStr1_ByStr2** %"$adtgep_291" - %"$adtptr_292" = bitcast %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* %"$adtval_288" to %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* - store %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* %"$adtptr_292", %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"** %"$expr_4" - %"$$expr_4_293" = load %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"*, %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"** %"$expr_4" - ret %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* %"$$expr_4_293" + %"$$t4_2_455" = load { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* }, { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* }* %"$t4_2" + %"$$t4_2_fptr_456" = extractvalue { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } %"$$t4_2_455", 0 + %"$$t4_2_envptr_457" = extractvalue { %TName_Pair_ByStr1_ByStr2* (i8*, [2 x i8])*, i8* } %"$$t4_2_455", 1 + %"$addr_bystr2_458" = load [2 x i8], [2 x i8]* %addr_bystr2 + %"$$t4_2_call_459" = call %TName_Pair_ByStr1_ByStr2* %"$$t4_2_fptr_456"(i8* %"$$t4_2_envptr_457", [2 x i8] %"$addr_bystr2_458") + store %TName_Pair_ByStr1_ByStr2* %"$$t4_2_call_459", %TName_Pair_ByStr1_ByStr2** %"$t4_3" + %"$$t4_3_460" = load %TName_Pair_ByStr1_ByStr2*, %TName_Pair_ByStr1_ByStr2** %"$t4_3" + store %TName_Pair_ByStr1_ByStr2* %"$$t4_3_460", %TName_Pair_ByStr1_ByStr2** %p2 + %"$gasrem_461" = load i64, i64* @_gasrem + %"$gascmp_462" = icmp ugt i64 1, %"$gasrem_461" + br i1 %"$gascmp_462", label %"$out_of_gas_463", label %"$have_gas_464" + +"$out_of_gas_463": ; preds = %"$have_gas_448" + call void @_out_of_gas() + br label %"$have_gas_464" + +"$have_gas_464": ; preds = %"$out_of_gas_463", %"$have_gas_448" + %"$consume_465" = sub i64 %"$gasrem_461", 1 + store i64 %"$consume_465", i64* @_gasrem + %"$p1_466" = load %TName_Pair_Uint32_Uint64*, %TName_Pair_Uint32_Uint64** %p1 + %"$p2_467" = load %TName_Pair_ByStr1_ByStr2*, %TName_Pair_ByStr1_ByStr2** %p2 + %"$adtval_468_load" = load i8*, i8** @_execptr + %"$adtval_468_salloc" = call i8* @_salloc(i8* %"$adtval_468_load", i64 17) + %"$adtval_468" = bitcast i8* %"$adtval_468_salloc" to %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* + %"$adtgep_469" = getelementptr inbounds %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)", %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* %"$adtval_468", i32 0, i32 0 + store i8 0, i8* %"$adtgep_469" + %"$adtgep_470" = getelementptr inbounds %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)", %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* %"$adtval_468", i32 0, i32 1 + store %TName_Pair_Uint32_Uint64* %"$p1_466", %TName_Pair_Uint32_Uint64** %"$adtgep_470" + %"$adtgep_471" = getelementptr inbounds %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)", %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* %"$adtval_468", i32 0, i32 2 + store %TName_Pair_ByStr1_ByStr2* %"$p2_467", %TName_Pair_ByStr1_ByStr2** %"$adtgep_471" + %"$adtptr_472" = bitcast %"CName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* %"$adtval_468" to %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* + store %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* %"$adtptr_472", %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"** %"$expr_4" + %"$$expr_4_473" = load %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"*, %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"** %"$expr_4" + ret %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* %"$$expr_4_473" } declare void @_print_scilla_val(%_TyDescrTy_Typ*, i8*) define void @scilla_main() { entry: - %"$exprval_294" = call %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* @"$scilla_expr_216"(i8* null) - %"$memvoidcast_295" = bitcast %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* %"$exprval_294" to i8* - call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)_67", i8* %"$memvoidcast_295") + %"$exprval_474" = call %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* @"$scilla_expr_281"(i8* null) + %"$memvoidcast_475" = bitcast %"TName_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)"* %"$exprval_474" to i8* + call void @_print_scilla_val(%_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_Pair_(Uint32)_(Uint64)_Pair_(ByStr1)_(ByStr2)_67", i8* %"$memvoidcast_475") ret void } diff --git a/testsuite/expr/typ3-inst.ll.result b/testsuite/expr/typ3-inst.ll.result index ff55696a..62057353 100644 --- a/testsuite/expr/typ3-inst.ll.result +++ b/testsuite/expr/typ3-inst.ll.result @@ -1 +1,2 @@ Pair(Pair(1 : Uint32)(2 : Uint64) : Pair (Uint32) (Uint64))(Pair(0xaa : ByStr1)(0xaabb : ByStr2) : Pair (ByStr1) (ByStr2)) : Pair (Pair (Uint32) (Uint64)) (Pair (ByStr1) (ByStr2)) +Gas remaining: 9999967 From fa87a12d587f502933b5baea3e18671975d56cf8 Mon Sep 17 00:00:00 2001 From: Vaivaswatha Nagaraj Date: Thu, 8 Oct 2020 19:03:22 +0530 Subject: [PATCH 2/3] Implement literal_cost and mapsortcost, update tests --- include/ScillaVM/JITD.h | 57 +- libjitd/JITD.cpp | 30 +- libsrtl/ScillaBuiltins.cpp | 35 +- libsrtl/ScillaBuiltins.h | 11 +- libsrtl/ScillaValue.cpp | 115 + libsrtl/ScillaValue.h | 4 + runners/expr-runner.cpp | 9 +- testsuite/ContrTests.cpp | 30 +- testsuite/contr/accept.ll | 506 +- testsuite/contr/accept.output_Accept1.json | 2 +- testsuite/contr/accept.output_Accept2.json | 2 +- .../contr/accept.output_Accept3_succ.json | 2 +- testsuite/contr/event.ll | 113 +- testsuite/contr/event.output.json | 2 +- testsuite/contr/helloWorld.init_output.json | 7 + testsuite/contr/helloWorld.ll | 1320 +- .../contr/helloWorld.output_contrAddr.json | 2 +- .../contr/helloWorld.output_getHello.json | 2 +- .../contr/helloWorld.output_multipleMsgs.json | 2 +- .../helloWorld.output_printContrParams.json | 2 +- .../contr/helloWorld.output_setHello_1.json | 2 +- .../contr/helloWorld.output_setHello_2.json | 2 +- testsuite/contr/init_output.json | 2 +- testsuite/contr/map_corners.init_output.json | 7 + testsuite/contr/map_corners_test.ll | 10891 ++++++++--- testsuite/contr/map_corners_test.output.json | 2 +- .../contr/map_corners_test.output_1.json | 7 + .../contr/map_corners_test.output_10.json | 7 + .../contr/map_corners_test.output_11.json | 7 + .../contr/map_corners_test.output_12.json | 7 + .../contr/map_corners_test.output_13.json | 7 + .../contr/map_corners_test.output_14.json | 7 + .../contr/map_corners_test.output_15.json | 7 + .../contr/map_corners_test.output_16.json | 7 + .../contr/map_corners_test.output_17.json | 7 + .../contr/map_corners_test.output_18.json | 7 + .../contr/map_corners_test.output_2.json | 7 + .../contr/map_corners_test.output_3.json | 7 + .../contr/map_corners_test.output_4.json | 7 + .../contr/map_corners_test.output_5.json | 7 + .../contr/map_corners_test.output_6.json | 7 + .../contr/map_corners_test.output_7.json | 7 + .../contr/map_corners_test.output_8.json | 7 + .../contr/map_corners_test.output_9.json | 7 + testsuite/contr/match_assign.ll | 380 +- .../contr/match_assign.output_t1_false.json | 2 +- .../contr/match_assign.output_t1_true.json | 2 +- testsuite/contr/match_assign2.ll | 228 +- testsuite/contr/match_assign2.output_t1.json | 2 +- testsuite/contr/match_assign3.ll | 339 +- .../contr/match_assign3.output_t1_false.json | 2 +- .../contr/match_assign3.output_t1_true.json | 2 +- testsuite/contr/name_clash1.ll | 324 +- .../contr/name_clash1.output_t1_false.json | 2 +- .../contr/name_clash1.output_t1_true.json | 2 +- testsuite/contr/name_clash2.ll | 265 +- .../contr/name_clash2.output_t1_false.json | 2 +- .../contr/name_clash2.output_t1_true.json | 2 +- testsuite/contr/pm-empty.ll | 201 +- testsuite/contr/pm-empty.output_t1_false.json | 2 +- testsuite/contr/pm-empty.output_t1_true.json | 2 +- testsuite/contr/send.ll | 574 +- testsuite/contr/send.output_SendMsg.json | 2 +- testsuite/contr/send.output_SendMsg2.json | 2 +- testsuite/contr/simple-map.init_output.json | 7 + testsuite/contr/simple-map.ll | 581 +- testsuite/contr/simple-map.output.json | 2 +- testsuite/contr/simple-map.output_00_0.json | 7 + testsuite/contr/simple-map.output_00_1.json | 7 + testsuite/contr/simple-map.output_01_0.json | 7 + testsuite/contr/simple-map.output_01_1.json | 7 + testsuite/contr/throw.ll | 76 +- testsuite/contr/ud-proxy.ll | 1167 +- testsuite/contr/ud-proxy.output_bestow.json | 2 +- testsuite/contr/ud-registry.init_output.json | 7 + testsuite/contr/ud-registry.ll | 14870 ++++++++++------ .../contr/ud-registry.output_bestow.json | 2 +- .../contr/ud-registry.output_setAdmin.json | 2 +- .../ud-registry.output_setRegistrar.json | 2 +- 79 files changed, 22799 insertions(+), 9569 deletions(-) create mode 100644 testsuite/contr/helloWorld.init_output.json create mode 100644 testsuite/contr/map_corners.init_output.json create mode 100644 testsuite/contr/map_corners_test.output_1.json create mode 100644 testsuite/contr/map_corners_test.output_10.json create mode 100644 testsuite/contr/map_corners_test.output_11.json create mode 100644 testsuite/contr/map_corners_test.output_12.json create mode 100644 testsuite/contr/map_corners_test.output_13.json create mode 100644 testsuite/contr/map_corners_test.output_14.json create mode 100644 testsuite/contr/map_corners_test.output_15.json create mode 100644 testsuite/contr/map_corners_test.output_16.json create mode 100644 testsuite/contr/map_corners_test.output_17.json create mode 100644 testsuite/contr/map_corners_test.output_18.json create mode 100644 testsuite/contr/map_corners_test.output_2.json create mode 100644 testsuite/contr/map_corners_test.output_3.json create mode 100644 testsuite/contr/map_corners_test.output_4.json create mode 100644 testsuite/contr/map_corners_test.output_5.json create mode 100644 testsuite/contr/map_corners_test.output_6.json create mode 100644 testsuite/contr/map_corners_test.output_7.json create mode 100644 testsuite/contr/map_corners_test.output_8.json create mode 100644 testsuite/contr/map_corners_test.output_9.json create mode 100644 testsuite/contr/simple-map.init_output.json create mode 100644 testsuite/contr/simple-map.output_00_0.json create mode 100644 testsuite/contr/simple-map.output_00_1.json create mode 100644 testsuite/contr/simple-map.output_01_0.json create mode 100644 testsuite/contr/simple-map.output_01_1.json create mode 100644 testsuite/contr/ud-registry.init_output.json diff --git a/include/ScillaVM/JITD.h b/include/ScillaVM/JITD.h index 90ea3182..5b5c91fa 100644 --- a/include/ScillaVM/JITD.h +++ b/include/ScillaVM/JITD.h @@ -95,7 +95,8 @@ struct ScillaParams { }; // Each ScillaJIT object compiles an LLVM-IR module and provides access -// to the symbols inside it. +// to the symbols inside it. It is recommended use ScillaJIT_Safe, +// which hides many private methods in this class and makes it safer. class ScillaJIT { private: // Use the Create method to build a ScillaJIT object. @@ -132,12 +133,19 @@ class ScillaJIT { ScillaCacheManager * = nullptr); // Get address for @Symbol inside the compiled IR, ready to be used. void *getAddressFor(const std::string &Symbol); + + // Initialize gas-remaining field in the code and initialize libraries. + uint64_t *initGasAndLibs(uint64_t GasRem); // Execute a message. Json::Value execMsg(const std::string &Balance, uint64_t GasLimit, Json::Value &Msg); // Initialize the contract state to field initialization values in the source. // This is to be called only during deployment of the contract. Never again. Json::Value initState(uint64_t GasLimit); + // What's the gas remaining from previous execution (initState / execMsg). + // Useful if execution was interrupted due to an exception. + // Use with care if you don't want to end up with a stale value. + uint64_t getGasRem(); // Allocate and own the memory for code owned by this object. void *sAlloc(size_t Size); @@ -152,4 +160,51 @@ class ScillaJIT { ~ScillaJIT(); }; +// Typical usage: +// ScillaJIT_Safe::init(); : One time ever +// 1. auto SJ = ScillaJIT_Safe::create(...); +// 2. (a) Deployment (b) Transition execution +// a. auto Output = ScillaJIT_Safe::initState(...); +// OR +// b. auto Output = ScillaJIT_Safe::execMsg(...); +// 3. If ScillaError exception, check remaining gas with getGasRem(). +class ScillaJIT_Safe : private ScillaJIT { +public: + // One time initialization. + static void init() { ScillaJIT::init(); } + // JIT Compile LLVM-IR @FileName. ModuleID is derived from @FileName. + // Optionally, a cache manager can be provided. + static std::unique_ptr + create(const ScillaParams &SPs, const std::string &FileName, + const Json::Value &ContrParams, ScillaCacheManager *SCM = nullptr) { + ScillaJIT *Ptr = + ScillaJIT::create(SPs, FileName, ContrParams, SCM).release(); + return std::unique_ptr(static_cast(Ptr)); + } + // JIT Compile LLVM-IR in @IR, affixing @ModuleID to it. + // Optionally, a cache manager can be provided. + static std::unique_ptr + create(const ScillaParams &SPs, const std::string &IR, + const std::string &ModuleID, const Json::Value &ContrParams, + ScillaCacheManager *SCM = nullptr) { + ScillaJIT *Ptr = + ScillaJIT::create(SPs, IR, ModuleID, ContrParams, SCM).release(); + return std::unique_ptr(static_cast(Ptr)); + } + // Execute a message. + Json::Value execMsg(const std::string &Balance, uint64_t GasLimit, + Json::Value &Msg) { + return ScillaJIT::execMsg(Balance, GasLimit, Msg); + } + // Initialize the contract state to field initialization values in the source. + // This is to be called only during deployment of the contract. Never again. + Json::Value initState(uint64_t GasLimit) { + return ScillaJIT::initState(GasLimit); + } + // What's the gas remaining from previous execution (initState / execMsg). + // Useful if execution was interrupted due to an exception. + // Use with care if you don't want to end up with a stale value. + uint64_t getGasRem() { return ScillaJIT::getGasRem(); } +}; + } // namespace ScillaVM diff --git a/libjitd/JITD.cpp b/libjitd/JITD.cpp index 024fc635..ca3fe9ee 100644 --- a/libjitd/JITD.cpp +++ b/libjitd/JITD.cpp @@ -294,10 +294,7 @@ std::unique_ptr ScillaJIT::create(const ScillaParams &SPs, // Set execptr in the generated code to THIS auto ExecPtr = THIS->getAddressFor("_execptr"); *reinterpret_cast(ExecPtr) = THIS; - // Call the library initialisation function - auto initLibs = - reinterpret_cast(THIS->getAddressFor("_init_libs")); - initLibs(); + // Initialize contract parameters. THIS->initContrParams(ContrParams); @@ -350,10 +347,23 @@ void ScillaJIT::initContrParams(const Json::Value &CP) { } } -Json::Value ScillaJIT::initState(uint64_t GasLimit) { - // Set gas limit in the contract module. +uint64_t *ScillaJIT::initGasAndLibs(uint64_t GasLimit) { + // Set gas limit in the JIT'ed code module. auto GasRemPtr = reinterpret_cast(getAddressFor("_gasrem")); *GasRemPtr = GasLimit; + + // Call the library initialisation function. + auto initLibs = + reinterpret_cast(getAddressFor("_init_libs")); + initLibs(); + + return GasRemPtr; +} + +Json::Value ScillaJIT::initState(uint64_t GasLimit) { + + auto GasRemPtr = initGasAndLibs(GasLimit); + // Let's setup the TransitionState for this transition. TS = std::make_unique("0", "0", GasRemPtr); auto fIS = reinterpret_cast(getAddressFor("_init_state")); @@ -361,6 +371,10 @@ Json::Value ScillaJIT::initState(uint64_t GasLimit) { return TS->finalize(); } +uint64_t ScillaJIT::getGasRem() { + return *reinterpret_cast(getAddressFor("_gasrem")); +} + void *ScillaJIT::getAddressFor(const std::string &Symbol) { auto SA = Jitter->lookup(Symbol); @@ -405,9 +419,7 @@ Json::Value ScillaJIT::execMsg(const std::string &Balance, uint64_t GasLimit, !AmountJ.isString()) CREATE_ERROR("Invalid Message"); - // Set gas limit in the contract module. - auto GasRemPtr = reinterpret_cast(getAddressFor("_gasrem")); - *GasRemPtr = GasLimit; + auto GasRemPtr = initGasAndLibs(GasLimit); // Let's setup the TransitionState for this transition. TS = diff --git a/libsrtl/ScillaBuiltins.cpp b/libsrtl/ScillaBuiltins.cpp index 741261ba..57c7db0f 100644 --- a/libsrtl/ScillaBuiltins.cpp +++ b/libsrtl/ScillaBuiltins.cpp @@ -69,6 +69,8 @@ std::vector getAllScillaBuiltins(void) { {"_contains", (void *) _contains}, {"_remove", (void *) _remove}, {"_size", (void *) _size}, + {"_literal_cost", (void *) _literal_cost}, + {"_mapsortcost", (void *) _mapsortcost}, }; // clang-format on @@ -435,7 +437,7 @@ void *_to_nat(ScillaJIT *SJ, ScillaTypes::Uint32 UI) { return MemPrev; } -void _send(ScillaJIT *SJ, const ScillaTypes::Typ *T, void *V) { +void _send(ScillaJIT *SJ, const ScillaTypes::Typ *T, const void *V) { auto J = ScillaValues::toJSON(T, V); // J is a Scilla list of Messages. Form a JSON array instead. // TODO: Consider having a Scilla List -> std::vector and calling @@ -463,12 +465,39 @@ void _send(ScillaJIT *SJ, const ScillaTypes::Typ *T, void *V) { } } -void _event(ScillaJIT *SJ, const ScillaTypes::Typ *T, void *V) { +uint64_t _literal_cost (const ScillaTypes::Typ *T, const void *V) { + return ScillaValues::literalCost(T, V); +} + +uint64_t _mapsortcost (const ScillaParams::MapValueT *M) { + uint64_t Cost = 0; + + // First calculate cost for sub-maps (if any). + for (auto &Itr : *M) { + if (boost::has_type(Itr.second)) { + break; + } + ASSERT(boost::has_type(Itr.second)); + auto *SubM = &boost::any_cast(Itr.second); + Cost += _mapsortcost(SubM); + } + + // Cost of sorting *this* map. + auto Len = M->size(); + if (Len > 0) { + auto LogLen = static_cast(log(static_cast(Len))); + Cost += (Len * LogLen); + } + + return Cost; +} + +void _event(ScillaJIT *SJ, const ScillaTypes::Typ *T, const void *V) { auto J = ScillaValues::toJSON(T, V); SJ->TS->processEvent(J); } -void _throw(ScillaJIT *SJ, const ScillaTypes::Typ *T, void *V) { +void _throw(ScillaJIT *SJ, const ScillaTypes::Typ *T, const void *V) { (void)SJ; auto J = ScillaValues::toJSON(T, V); SCILLA_EXCEPTION("Exception thrown: " + J.toStyledString()); diff --git a/libsrtl/ScillaBuiltins.h b/libsrtl/ScillaBuiltins.h index 2e170ddd..49b752e5 100644 --- a/libsrtl/ScillaBuiltins.h +++ b/libsrtl/ScillaBuiltins.h @@ -138,13 +138,13 @@ uint8_t *_eq_Uint256(ScillaVM::ScillaJIT *SJ, void *_to_nat(ScillaVM::ScillaJIT *SJ, ScillaVM::ScillaTypes::Uint32 UI); void _send(ScillaVM::ScillaJIT *SJ, const ScillaVM::ScillaTypes::Typ *T, - void *V); + const void *V); void _event(ScillaVM::ScillaJIT *SJ, const ScillaVM::ScillaTypes::Typ *T, - void *V); + const void *V); void _throw(ScillaVM::ScillaJIT *SJ, const ScillaVM::ScillaTypes::Typ *T, - void *V); + const void *V); uint8_t *_eq_String(ScillaVM::ScillaJIT *SJ, ScillaVM::ScillaTypes::String Lhs, ScillaVM::ScillaTypes::String Rhs); @@ -181,7 +181,12 @@ void *_contains(ScillaVM::ScillaJIT *SJ, const ScillaVM::ScillaTypes::Typ *T, void *_remove(ScillaVM::ScillaJIT *SJ, const ScillaVM::ScillaTypes::Typ *T, const ScillaVM::ScillaParams::MapValueT *M, const void *K); + +// Scilla builtin _size : The size of a map. ScillaVM::ScillaTypes::Uint32 _size(const ScillaVM::ScillaParams::MapValueT *M); +uint64_t _literal_cost (const ScillaVM::ScillaTypes::Typ *T, const void *V); +uint64_t _mapsortcost (const ScillaVM::ScillaParams::MapValueT *M); + } // extern "C" #pragma clang diagnostic pop diff --git a/libsrtl/ScillaValue.cpp b/libsrtl/ScillaValue.cpp index 57497537..386e27a1 100644 --- a/libsrtl/ScillaValue.cpp +++ b/libsrtl/ScillaValue.cpp @@ -699,5 +699,120 @@ void serializeForHashing(ByteVec &Ret, const ScillaTypes::Typ *T, } } +uint64_t literalCost(const ScillaTypes::Typ *T, const void *V) { + + // StringLits have fixed cost till a certain length + // and linear cost growth after that. + auto stringLengthNormalize = [](uint64_t l) -> uint64_t { + if (l <= 20) + return 20; + else + return l; + }; + + switch (T->m_t) { + case ScillaTypes::Typ::Prim_typ: { + switch (T->m_sub.m_primt->m_pt) { + case ScillaTypes::PrimTyp::Int_typ: + case ScillaTypes::PrimTyp::Uint_typ: + case ScillaTypes::PrimTyp::Bystrx_typ: + return ScillaTypes::Typ::sizeOf(T); + case ScillaTypes::PrimTyp::String_typ: { + auto SP = reinterpret_cast(V); + return stringLengthNormalize(SP->m_length); + } + case ScillaTypes::PrimTyp::Bystr_typ: { + auto SP = reinterpret_cast(V); + return SP->m_length; + } + case ScillaTypes::PrimTyp::Bnum_typ: { + return 64; + } break; + case ScillaTypes::PrimTyp::Msg_typ: + case ScillaTypes::PrimTyp::Event_typ: + case ScillaTypes::PrimTyp::Exception_typ: { + if (!V) { + ASSERT(T->m_sub.m_primt->m_pt == ScillaTypes::PrimTyp::Exception_typ); + return 0; + } + + auto V_UC = reinterpret_cast(V); + int NFields = *(V_UC++); + + uint64_t Acc = 0; + for (int I = 0; I < NFields; I++) { + // 1. Field's name. + auto *FNameP = reinterpret_cast(V_UC); + Acc += stringLengthNormalize(FNameP->m_length); + V_UC += sizeof(ScillaTypes::String); + // 2. Type descriptor for the value. + auto *TD = *reinterpret_cast(V_UC); + V_UC += sizeof(const ScillaTypes::Typ *); + // 3. The value itself. + if (ScillaTypes::Typ::isBoxed(TD)) { + Acc += literalCost(TD, *reinterpret_cast(V_UC)); + } else { + Acc += literalCost(TD, V_UC); + } + V_UC += ScillaTypes::Typ::sizeOf(TD); + } + return Acc; + } + } + break; + } + case ScillaTypes::Typ::ADT_typ: { + uint64_t Acc = 0; + auto Tag = *reinterpret_cast(V); + auto SpeclP = T->m_sub.m_spladt; + auto ConstrP = SpeclP->m_constrs[Tag]; + auto VP = reinterpret_cast(V); + // Increment VP once to go past the Tag. + VP++; + for (int I = 0; I < ConstrP->m_numArgs; I++) { + auto ArgT = ConstrP->m_args[I]; + if (ScillaTypes::Typ::isBoxed(ArgT)) + Acc += literalCost(ArgT, *reinterpret_cast(VP)); + else + Acc += literalCost(ArgT, reinterpret_cast(VP)); + // Increment our data pointer equal to the size we just finised. + // structs containing ADTs are packed, so that we don't have to + // worry about padding here. + VP += ScillaTypes::Typ::sizeOf(ArgT); + } + return Acc; + }; + case ScillaTypes::Typ::Map_typ: + auto ValT = T->m_sub.m_mapt->m_valTyp; + auto M = reinterpret_cast(V); + MemoryAllocator MA; + SAllocator SA( + std::bind(&MemoryAllocator::mAlloc, &MA, std::placeholders::_1)); + + uint64_t Acc = 0; + for (auto &Itr : *M) { + Json::Value KeyJ = parseJSONString(Itr.first); + Acc += stringLengthNormalize(KeyJ.asString().size()); + switch (ValT->m_t) { + case ScillaTypes::Typ::Map_typ: { + auto &ValV = + boost::any_cast(Itr.second); + Acc += literalCost(ValT, &ValV); + break; + } + default: { + auto &ValJS = boost::any_cast(Itr.second); + auto ValJ = parseJSONString(ValJS); + auto *ValV = fromJSON(SA, ValT, ValJ); + Acc += literalCost(ValT, ValV); + } + } + } + return Acc; + } + + CREATE_ERROR("Unreachable"); +} + } // namespace ScillaValues } // namespace ScillaVM diff --git a/libsrtl/ScillaValue.h b/libsrtl/ScillaValue.h index 6ddd939e..bd8de064 100644 --- a/libsrtl/ScillaValue.h +++ b/libsrtl/ScillaValue.h @@ -50,5 +50,9 @@ void *fromJSONToMem(SAllocator &A, void *Mem, int MemSize, void serializeForHashing(ByteVec &Ret, const ScillaTypes::Typ *T, const void *V); +// Computs the cost of (memory occupied by) a Scilla value. +// Compatible with literal_cost in Gas.ml in Scilla_base. +uint64_t literalCost (const ScillaTypes::Typ *T, const void *V); + } // namespace ScillaValues } // namespace ScillaVM diff --git a/runners/expr-runner.cpp b/runners/expr-runner.cpp index 54a3bdd1..5f2acf61 100644 --- a/runners/expr-runner.cpp +++ b/runners/expr-runner.cpp @@ -118,13 +118,14 @@ int main(int argc, char *argv[]) { ScillaJIT::create(ScillaParams(), InputFilename, Json::arrayValue); auto ScillaMainAddr = SJ->getAddressFor("scilla_main"); auto ScillaMain = reinterpret_cast(ScillaMainAddr); - // Set the remaining gas inside the LLVM-IR for the expression. - auto GasRemPtr = reinterpret_cast(SJ->getAddressFor("_gasrem")); - *GasRemPtr = GasLimit; + + // Set gas available in the JIT'ed code and then initialize libraries. + SJ->initGasAndLibs(GasLimit); + // Execute ... ScillaMain(); // Collect and print the remaining gas. - ScillaStdout += "Gas remaining: " + std::to_string(*GasRemPtr) + "\n"; + ScillaStdout += "Gas remaining: " + std::to_string(SJ->getGasRem()) + "\n"; } catch (const ScillaError &e) { std::cerr << e.toString() << "\n"; return EXIT_FAILURE; diff --git a/testsuite/ContrTests.cpp b/testsuite/ContrTests.cpp index 2213fdf7..45612999 100644 --- a/testsuite/ContrTests.cpp +++ b/testsuite/ContrTests.cpp @@ -55,7 +55,7 @@ void testMessage(const std::string &ContrFilename, std::string PathPrefix = Config::TestsuiteSrc + "/contr/"; - ScillaJIT::init(); + ScillaJIT_Safe::init(); Json::Value MessageJSON, InitJSON; std::string Balance; @@ -79,10 +79,10 @@ void testMessage(const std::string &ContrFilename, // Create a JIT engine and execute the message. // TODO: Due to the below mentioned bug, this can't be in a try-catch block. - std::unique_ptr JE; + std::unique_ptr JE; { ScopeTimer CreateTimer(ContrFilename + ": ScillaJIT::create"); - JE = ScillaJIT::create(SP, PathPrefix + ContrFilename, InitJSON, &OCache); + JE = ScillaJIT_Safe::create(SP, PathPrefix + ContrFilename, InitJSON, &OCache); } Json::Value OJ; try { @@ -160,7 +160,7 @@ void testMessageFail(const std::string &ContrFilename, std::string PathPrefix = Config::TestsuiteSrc + "/contr/"; - ScillaJIT::init(); + ScillaJIT_Safe::init(); Json::Value MessageJSON, InitJSON; std::string Balance; @@ -178,10 +178,10 @@ void testMessageFail(const std::string &ContrFilename, // Create a JIT engine and execute the message. // TODO: Due to the below mentioned bug, this can't be in a try-catch block. - std::unique_ptr JE; + std::unique_ptr JE; { ScopeTimer CreateTimer(ContrFilename + ": ScillaJIT::create"); - JE = ScillaJIT::create(SP, PathPrefix + ContrFilename, InitJSON, &OCache); + JE = ScillaJIT_Safe::create(SP, PathPrefix + ContrFilename, InitJSON, &OCache); } bool CaughtException = false; @@ -216,35 +216,35 @@ BOOST_AUTO_TEST_SUITE(simple_map) BOOST_AUTO_TEST_CASE(state_init) { testMessage("simple-map.ll", "", "empty_init.json", "simple-map.contrinfo.json", "", "simple-map.state_00.json", - "init_output.json"); + "simple-map.init_output.json"); } BOOST_AUTO_TEST_CASE(state_00_message_Increment) { testMessage("simple-map.ll", "simple-map.message_Increment.json", "empty_init.json", "simple-map.contrinfo.json", "simple-map.state_00.json", "simple-map.state_02.json", - "simple-map.output.json"); + "simple-map.output_00_0.json"); } BOOST_AUTO_TEST_CASE(state_01_message_Increment) { testMessage("simple-map.ll", "simple-map.message_Increment.json", "empty_init.json", "simple-map.contrinfo.json", "simple-map.state_01.json", "simple-map.state_03.json", - "simple-map.output.json"); + "simple-map.output_01_0.json"); } BOOST_AUTO_TEST_CASE(state_00_message_IncrementN_1) { testMessage("simple-map.ll", "simple-map.message_IncrementN_1.json", "empty_init.json", "simple-map.contrinfo.json", "simple-map.state_00.json", "simple-map.state_04.json", - "simple-map.output.json"); + "simple-map.output_00_1.json"); } BOOST_AUTO_TEST_CASE(state_01_message_IncrementN_1) { testMessage("simple-map.ll", "simple-map.message_IncrementN_1.json", "empty_init.json", "simple-map.contrinfo.json", "simple-map.state_01.json", "simple-map.state_05.json", - "simple-map.output.json"); + "simple-map.output_01_1.json"); } BOOST_AUTO_TEST_SUITE_END() // simple_map @@ -291,7 +291,7 @@ BOOST_AUTO_TEST_SUITE(helloWorld) BOOST_AUTO_TEST_CASE(helloWorld_state_init) { testMessage("helloWorld.ll", "", "helloWorld.init.json", "helloWorld.contrinfo.json", "", "helloWorld.state_00.json", - "init_output.json"); + "helloWorld.init_output.json"); } BOOST_AUTO_TEST_CASE(state_00_message_setHello_1) { @@ -364,7 +364,7 @@ BOOST_AUTO_TEST_SUITE(ud) BOOST_AUTO_TEST_CASE(registry_state_init) { testMessage("ud-registry.ll", "", "ud-registry.init.json", "ud-registry.contrinfo.json", "", "ud-registry.state_00.json", - "init_output.json"); + "ud-registry.init_output.json"); } BOOST_AUTO_TEST_CASE(registry_state_00_message_setRegistrar) { @@ -482,7 +482,7 @@ BOOST_AUTO_TEST_SUITE(map_corners_test) BOOST_AUTO_TEST_CASE(map_corners_state_init) { testMessage("map_corners_test.ll", "", "empty_init.json", "map_corners_test.contrinfo.json", "", - "map_corners_test.state_00.json", "init_output.json"); + "map_corners_test.state_00.json", "map_corners.init_output.json"); } BOOST_AUTO_TEST_CASE(map_corners_test_exec) { @@ -497,7 +497,7 @@ BOOST_AUTO_TEST_CASE(map_corners_test_exec) { testMessage("map_corners_test.ll", Msg, "empty_init.json", "map_corners_test.contrinfo.json", StartState, FinishState, - "map_corners_test.output.json"); + "map_corners_test.output_" + std::to_string(I) + ".json"); BOOST_TEST_CHECKPOINT("map_corners_test: " << I << " successful."); } diff --git a/testsuite/contr/accept.ll b/testsuite/contr/accept.ll index e212203d..f8e7251e 100644 --- a/testsuite/contr/accept.ll +++ b/testsuite/contr/accept.ll @@ -68,48 +68,94 @@ target triple = "x86_64-pc-linux-gnu" @one_msg = global { %TName_List_Message* (i8*, i8*)*, i8* } zeroinitializer @_scilla_version = global %Uint32 zeroinitializer @_this_address = global [20 x i8] zeroinitializer -@"$stringlit_79" = unnamed_addr constant [4 x i8] c"_tag" -@"$stringlit_84" = unnamed_addr constant [0 x i8] zeroinitializer -@"$stringlit_87" = unnamed_addr constant [10 x i8] c"_recipient" -@"$stringlit_94" = unnamed_addr constant [7 x i8] c"_amount" -@"$stringlit_119" = unnamed_addr constant [4 x i8] c"_tag" -@"$stringlit_124" = unnamed_addr constant [0 x i8] zeroinitializer -@"$stringlit_127" = unnamed_addr constant [10 x i8] c"_recipient" -@"$stringlit_134" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_124" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_129" = unnamed_addr constant [0 x i8] zeroinitializer +@"$stringlit_132" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_139" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_197" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_202" = unnamed_addr constant [0 x i8] zeroinitializer +@"$stringlit_205" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_212" = unnamed_addr constant [7 x i8] c"_amount" @_tydescr_table = constant [16 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_38", %_TyDescrTy_Typ* @"$TyDescr_Event_28", %_TyDescrTy_Typ* @"$TyDescr_Int64_10", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_34", %_TyDescrTy_Typ* @"$TyDescr_Uint256_20", %_TyDescrTy_Typ* @"$TyDescr_Uint32_8", %_TyDescrTy_Typ* @"$TyDescr_Uint64_12", %_TyDescrTy_Typ* @"$TyDescr_Bnum_24", %_TyDescrTy_Typ* @"$TyDescr_Uint128_16", %_TyDescrTy_Typ* @"$TyDescr_Exception_30", %_TyDescrTy_Typ* @"$TyDescr_String_22", %_TyDescrTy_Typ* @"$TyDescr_Int256_18", %_TyDescrTy_Typ* @"$TyDescr_Int128_14", %_TyDescrTy_Typ* @"$TyDescr_Bystr_32", %_TyDescrTy_Typ* @"$TyDescr_Message_26", %_TyDescrTy_Typ* @"$TyDescr_Int32_6"] @_tydescr_table_length = constant i32 16 define internal %TName_List_Message* @"$fundef_2"(%"$$fundef_2_env_52"* %0, i8* %1) { entry: %"$retval_3" = alloca %TName_List_Message* + %"$gasrem_53" = load i64, i64* @_gasrem + %"$gascmp_54" = icmp ugt i64 1, %"$gasrem_53" + br i1 %"$gascmp_54", label %"$out_of_gas_55", label %"$have_gas_56" + +"$out_of_gas_55": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_56" + +"$have_gas_56": ; preds = %"$out_of_gas_55", %entry + %"$consume_57" = sub i64 %"$gasrem_53", 1 + store i64 %"$consume_57", i64* @_gasrem %nil_msg = alloca %TName_List_Message* - %"$adtval_53_load" = load i8*, i8** @_execptr - %"$adtval_53_salloc" = call i8* @_salloc(i8* %"$adtval_53_load", i64 1) - %"$adtval_53" = bitcast i8* %"$adtval_53_salloc" to %CName_Nil_Message* - %"$adtgep_54" = getelementptr inbounds %CName_Nil_Message, %CName_Nil_Message* %"$adtval_53", i32 0, i32 0 - store i8 1, i8* %"$adtgep_54" - %"$adtptr_55" = bitcast %CName_Nil_Message* %"$adtval_53" to %TName_List_Message* - store %TName_List_Message* %"$adtptr_55", %TName_List_Message** %nil_msg - %"$nil_msg_56" = load %TName_List_Message*, %TName_List_Message** %nil_msg - %"$adtval_57_load" = load i8*, i8** @_execptr - %"$adtval_57_salloc" = call i8* @_salloc(i8* %"$adtval_57_load", i64 17) - %"$adtval_57" = bitcast i8* %"$adtval_57_salloc" to %CName_Cons_Message* - %"$adtgep_58" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_57", i32 0, i32 0 - store i8 0, i8* %"$adtgep_58" - %"$adtgep_59" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_57", i32 0, i32 1 - store i8* %1, i8** %"$adtgep_59" - %"$adtgep_60" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_57", i32 0, i32 2 - store %TName_List_Message* %"$nil_msg_56", %TName_List_Message** %"$adtgep_60" - %"$adtptr_61" = bitcast %CName_Cons_Message* %"$adtval_57" to %TName_List_Message* - store %TName_List_Message* %"$adtptr_61", %TName_List_Message** %"$retval_3" - %"$$retval_3_62" = load %TName_List_Message*, %TName_List_Message** %"$retval_3" - ret %TName_List_Message* %"$$retval_3_62" + %"$gasrem_58" = load i64, i64* @_gasrem + %"$gascmp_59" = icmp ugt i64 1, %"$gasrem_58" + br i1 %"$gascmp_59", label %"$out_of_gas_60", label %"$have_gas_61" + +"$out_of_gas_60": ; preds = %"$have_gas_56" + call void @_out_of_gas() + br label %"$have_gas_61" + +"$have_gas_61": ; preds = %"$out_of_gas_60", %"$have_gas_56" + %"$consume_62" = sub i64 %"$gasrem_58", 1 + store i64 %"$consume_62", i64* @_gasrem + %"$adtval_63_load" = load i8*, i8** @_execptr + %"$adtval_63_salloc" = call i8* @_salloc(i8* %"$adtval_63_load", i64 1) + %"$adtval_63" = bitcast i8* %"$adtval_63_salloc" to %CName_Nil_Message* + %"$adtgep_64" = getelementptr inbounds %CName_Nil_Message, %CName_Nil_Message* %"$adtval_63", i32 0, i32 0 + store i8 1, i8* %"$adtgep_64" + %"$adtptr_65" = bitcast %CName_Nil_Message* %"$adtval_63" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_65", %TName_List_Message** %nil_msg + %"$gasrem_66" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_61" + call void @_out_of_gas() + br label %"$have_gas_69" + +"$have_gas_69": ; preds = %"$out_of_gas_68", %"$have_gas_61" + %"$consume_70" = sub i64 %"$gasrem_66", 1 + store i64 %"$consume_70", i64* @_gasrem + %"$nil_msg_71" = load %TName_List_Message*, %TName_List_Message** %nil_msg + %"$adtval_72_load" = load i8*, i8** @_execptr + %"$adtval_72_salloc" = call i8* @_salloc(i8* %"$adtval_72_load", i64 17) + %"$adtval_72" = bitcast i8* %"$adtval_72_salloc" to %CName_Cons_Message* + %"$adtgep_73" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_72", i32 0, i32 0 + store i8 0, i8* %"$adtgep_73" + %"$adtgep_74" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_72", i32 0, i32 1 + store i8* %1, i8** %"$adtgep_74" + %"$adtgep_75" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_72", i32 0, i32 2 + store %TName_List_Message* %"$nil_msg_71", %TName_List_Message** %"$adtgep_75" + %"$adtptr_76" = bitcast %CName_Cons_Message* %"$adtval_72" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_76", %TName_List_Message** %"$retval_3" + %"$$retval_3_77" = load %TName_List_Message*, %TName_List_Message** %"$retval_3" + ret %TName_List_Message* %"$$retval_3_77" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) define void @_init_libs() { entry: + %"$gasrem_78" = load i64, i64* @_gasrem + %"$gascmp_79" = icmp ugt i64 1, %"$gasrem_78" + br i1 %"$gascmp_79", label %"$out_of_gas_80", label %"$have_gas_81" + +"$out_of_gas_80": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_81" + +"$have_gas_81": ; preds = %"$out_of_gas_80", %entry + %"$consume_82" = sub i64 %"$gasrem_78", 1 + store i64 %"$consume_82", i64* @_gasrem store { %TName_List_Message* (i8*, i8*)*, i8* } { %TName_List_Message* (i8*, i8*)* bitcast (%TName_List_Message* (%"$$fundef_2_env_52"*, i8*)* @"$fundef_2" to %TName_List_Message* (i8*, i8*)*), i8* null }, { %TName_List_Message* (i8*, i8*)*, i8* }* @one_msg ret void } @@ -119,13 +165,35 @@ entry: ret void } -define internal void @"$Accept1_66"(%Uint128 %_amount, [20 x i8]* %"$_sender_67") { +define internal void @"$Accept1_86"(%Uint128 %_amount, [20 x i8]* %"$_sender_87") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_67" - %"$execptr_load_68" = load i8*, i8** @_execptr - call void @_accept(i8* %"$execptr_load_68") - %"$execptr_load_69" = load i8*, i8** @_execptr - call void @_accept(i8* %"$execptr_load_69") + %_sender = load [20 x i8], [20 x i8]* %"$_sender_87" + %"$gasrem_88" = load i64, i64* @_gasrem + %"$gascmp_89" = icmp ugt i64 1, %"$gasrem_88" + br i1 %"$gascmp_89", label %"$out_of_gas_90", label %"$have_gas_91" + +"$out_of_gas_90": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_91" + +"$have_gas_91": ; preds = %"$out_of_gas_90", %entry + %"$consume_92" = sub i64 %"$gasrem_88", 1 + store i64 %"$consume_92", i64* @_gasrem + %"$execptr_load_93" = load i8*, i8** @_execptr + call void @_accept(i8* %"$execptr_load_93") + %"$gasrem_94" = load i64, i64* @_gasrem + %"$gascmp_95" = icmp ugt i64 1, %"$gasrem_94" + br i1 %"$gascmp_95", label %"$out_of_gas_96", label %"$have_gas_97" + +"$out_of_gas_96": ; preds = %"$have_gas_91" + call void @_out_of_gas() + br label %"$have_gas_97" + +"$have_gas_97": ; preds = %"$out_of_gas_96", %"$have_gas_91" + %"$consume_98" = sub i64 %"$gasrem_94", 1 + store i64 %"$consume_98", i64* @_gasrem + %"$execptr_load_99" = load i8*, i8** @_execptr + call void @_accept(i8* %"$execptr_load_99") ret void } @@ -133,145 +201,285 @@ declare void @_accept(i8*) define void @Accept1(i8* %0) { entry: - %"$_amount_71" = getelementptr i8, i8* %0, i32 0 - %"$_amount_72" = bitcast i8* %"$_amount_71" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_72" - %"$_sender_73" = getelementptr i8, i8* %0, i32 16 - %"$_sender_74" = bitcast i8* %"$_sender_73" to [20 x i8]* - call void @"$Accept1_66"(%Uint128 %_amount, [20 x i8]* %"$_sender_74") + %"$_amount_101" = getelementptr i8, i8* %0, i32 0 + %"$_amount_102" = bitcast i8* %"$_amount_101" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_102" + %"$_sender_103" = getelementptr i8, i8* %0, i32 16 + %"$_sender_104" = bitcast i8* %"$_sender_103" to [20 x i8]* + call void @"$Accept1_86"(%Uint128 %_amount, [20 x i8]* %"$_sender_104") ret void } -define internal void @"$Accept2_75"(%Uint128 %_amount, [20 x i8]* %"$_sender_76") { +define internal void @"$Accept2_105"(%Uint128 %_amount, [20 x i8]* %"$_sender_106") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_76" - %"$execptr_load_77" = load i8*, i8** @_execptr - call void @_accept(i8* %"$execptr_load_77") + %_sender = load [20 x i8], [20 x i8]* %"$_sender_106" + %"$gasrem_107" = load i64, i64* @_gasrem + %"$gascmp_108" = icmp ugt i64 1, %"$gasrem_107" + br i1 %"$gascmp_108", label %"$out_of_gas_109", label %"$have_gas_110" + +"$out_of_gas_109": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_110" + +"$have_gas_110": ; preds = %"$out_of_gas_109", %entry + %"$consume_111" = sub i64 %"$gasrem_107", 1 + store i64 %"$consume_111", i64* @_gasrem + %"$execptr_load_112" = load i8*, i8** @_execptr + call void @_accept(i8* %"$execptr_load_112") + %"$gasrem_113" = load i64, i64* @_gasrem + %"$gascmp_114" = icmp ugt i64 1, %"$gasrem_113" + br i1 %"$gascmp_114", label %"$out_of_gas_115", label %"$have_gas_116" + +"$out_of_gas_115": ; preds = %"$have_gas_110" + call void @_out_of_gas() + br label %"$have_gas_116" + +"$have_gas_116": ; preds = %"$out_of_gas_115", %"$have_gas_110" + %"$consume_117" = sub i64 %"$gasrem_113", 1 + store i64 %"$consume_117", i64* @_gasrem %msg1 = alloca i8* - %"$msgobj_78_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_78_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_78_salloc_load", i64 125) - %"$msgobj_78_salloc" = bitcast i8* %"$msgobj_78_salloc_salloc" to [125 x i8]* - %"$msgobj_78" = bitcast [125 x i8]* %"$msgobj_78_salloc" to i8* - store i8 3, i8* %"$msgobj_78" - %"$msgobj_fname_80" = getelementptr i8, i8* %"$msgobj_78", i32 1 - %"$msgobj_fname_81" = bitcast i8* %"$msgobj_fname_80" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_79", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_81" - %"$msgobj_td_82" = getelementptr i8, i8* %"$msgobj_78", i32 17 - %"$msgobj_td_83" = bitcast i8* %"$msgobj_td_82" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_22", %_TyDescrTy_Typ** %"$msgobj_td_83" - %"$msgobj_v_85" = getelementptr i8, i8* %"$msgobj_78", i32 25 - %"$msgobj_v_86" = bitcast i8* %"$msgobj_v_85" to %String* - store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_84", i32 0, i32 0), i32 0 }, %String* %"$msgobj_v_86" - %"$msgobj_fname_88" = getelementptr i8, i8* %"$msgobj_78", i32 41 - %"$msgobj_fname_89" = bitcast i8* %"$msgobj_fname_88" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_87", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_89" - %"$msgobj_td_90" = getelementptr i8, i8* %"$msgobj_78", i32 57 - %"$msgobj_td_91" = bitcast i8* %"$msgobj_td_90" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_34", %_TyDescrTy_Typ** %"$msgobj_td_91" - %"$msgobj_v_92" = getelementptr i8, i8* %"$msgobj_78", i32 65 - %"$msgobj_v_93" = bitcast i8* %"$msgobj_v_92" to [20 x i8]* - store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_93" - %"$msgobj_fname_95" = getelementptr i8, i8* %"$msgobj_78", i32 85 - %"$msgobj_fname_96" = bitcast i8* %"$msgobj_fname_95" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_94", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_96" - %"$msgobj_td_97" = getelementptr i8, i8* %"$msgobj_78", i32 101 - %"$msgobj_td_98" = bitcast i8* %"$msgobj_td_97" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Uint128_16", %_TyDescrTy_Typ** %"$msgobj_td_98" - %"$msgobj_v_99" = getelementptr i8, i8* %"$msgobj_78", i32 109 - %"$msgobj_v_100" = bitcast i8* %"$msgobj_v_99" to %Uint128* - store %Uint128 %_amount, %Uint128* %"$msgobj_v_100" - store i8* %"$msgobj_78", i8** %msg1 + %"$gasrem_118" = load i64, i64* @_gasrem + %"$gascmp_119" = icmp ugt i64 1, %"$gasrem_118" + br i1 %"$gascmp_119", label %"$out_of_gas_120", label %"$have_gas_121" + +"$out_of_gas_120": ; preds = %"$have_gas_116" + call void @_out_of_gas() + br label %"$have_gas_121" + +"$have_gas_121": ; preds = %"$out_of_gas_120", %"$have_gas_116" + %"$consume_122" = sub i64 %"$gasrem_118", 1 + store i64 %"$consume_122", i64* @_gasrem + %"$msgobj_123_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_123_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_123_salloc_load", i64 125) + %"$msgobj_123_salloc" = bitcast i8* %"$msgobj_123_salloc_salloc" to [125 x i8]* + %"$msgobj_123" = bitcast [125 x i8]* %"$msgobj_123_salloc" to i8* + store i8 3, i8* %"$msgobj_123" + %"$msgobj_fname_125" = getelementptr i8, i8* %"$msgobj_123", i32 1 + %"$msgobj_fname_126" = bitcast i8* %"$msgobj_fname_125" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_124", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_126" + %"$msgobj_td_127" = getelementptr i8, i8* %"$msgobj_123", i32 17 + %"$msgobj_td_128" = bitcast i8* %"$msgobj_td_127" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_22", %_TyDescrTy_Typ** %"$msgobj_td_128" + %"$msgobj_v_130" = getelementptr i8, i8* %"$msgobj_123", i32 25 + %"$msgobj_v_131" = bitcast i8* %"$msgobj_v_130" to %String* + store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_129", i32 0, i32 0), i32 0 }, %String* %"$msgobj_v_131" + %"$msgobj_fname_133" = getelementptr i8, i8* %"$msgobj_123", i32 41 + %"$msgobj_fname_134" = bitcast i8* %"$msgobj_fname_133" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_132", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_134" + %"$msgobj_td_135" = getelementptr i8, i8* %"$msgobj_123", i32 57 + %"$msgobj_td_136" = bitcast i8* %"$msgobj_td_135" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_34", %_TyDescrTy_Typ** %"$msgobj_td_136" + %"$msgobj_v_137" = getelementptr i8, i8* %"$msgobj_123", i32 65 + %"$msgobj_v_138" = bitcast i8* %"$msgobj_v_137" to [20 x i8]* + store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_138" + %"$msgobj_fname_140" = getelementptr i8, i8* %"$msgobj_123", i32 85 + %"$msgobj_fname_141" = bitcast i8* %"$msgobj_fname_140" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_139", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_141" + %"$msgobj_td_142" = getelementptr i8, i8* %"$msgobj_123", i32 101 + %"$msgobj_td_143" = bitcast i8* %"$msgobj_td_142" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_16", %_TyDescrTy_Typ** %"$msgobj_td_143" + %"$msgobj_v_144" = getelementptr i8, i8* %"$msgobj_123", i32 109 + %"$msgobj_v_145" = bitcast i8* %"$msgobj_v_144" to %Uint128* + store %Uint128 %_amount, %Uint128* %"$msgobj_v_145" + store i8* %"$msgobj_123", i8** %msg1 + %"$gasrem_147" = load i64, i64* @_gasrem + %"$gascmp_148" = icmp ugt i64 1, %"$gasrem_147" + br i1 %"$gascmp_148", label %"$out_of_gas_149", label %"$have_gas_150" + +"$out_of_gas_149": ; preds = %"$have_gas_121" + call void @_out_of_gas() + br label %"$have_gas_150" + +"$have_gas_150": ; preds = %"$out_of_gas_149", %"$have_gas_121" + %"$consume_151" = sub i64 %"$gasrem_147", 1 + store i64 %"$consume_151", i64* @_gasrem %msgs = alloca %TName_List_Message* + %"$gasrem_152" = load i64, i64* @_gasrem + %"$gascmp_153" = icmp ugt i64 1, %"$gasrem_152" + br i1 %"$gascmp_153", label %"$out_of_gas_154", label %"$have_gas_155" + +"$out_of_gas_154": ; preds = %"$have_gas_150" + call void @_out_of_gas() + br label %"$have_gas_155" + +"$have_gas_155": ; preds = %"$out_of_gas_154", %"$have_gas_150" + %"$consume_156" = sub i64 %"$gasrem_152", 1 + store i64 %"$consume_156", i64* @_gasrem %"$one_msg_0" = alloca %TName_List_Message* - %"$one_msg_102" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @one_msg - %"$one_msg_fptr_103" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_102", 0 - %"$one_msg_envptr_104" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_102", 1 - %"$msg1_105" = load i8*, i8** %msg1 - %"$one_msg_call_106" = call %TName_List_Message* %"$one_msg_fptr_103"(i8* %"$one_msg_envptr_104", i8* %"$msg1_105") - store %TName_List_Message* %"$one_msg_call_106", %TName_List_Message** %"$one_msg_0" - %"$$one_msg_0_107" = load %TName_List_Message*, %TName_List_Message** %"$one_msg_0" - store %TName_List_Message* %"$$one_msg_0_107", %TName_List_Message** %msgs - %"$execptr_load_108" = load i8*, i8** @_execptr - %"$msgs_109" = load %TName_List_Message*, %TName_List_Message** %msgs - call void @_send(i8* %"$execptr_load_108", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_38", %TName_List_Message* %"$msgs_109") + %"$one_msg_157" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @one_msg + %"$one_msg_fptr_158" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_157", 0 + %"$one_msg_envptr_159" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_157", 1 + %"$msg1_160" = load i8*, i8** %msg1 + %"$one_msg_call_161" = call %TName_List_Message* %"$one_msg_fptr_158"(i8* %"$one_msg_envptr_159", i8* %"$msg1_160") + store %TName_List_Message* %"$one_msg_call_161", %TName_List_Message** %"$one_msg_0" + %"$$one_msg_0_162" = load %TName_List_Message*, %TName_List_Message** %"$one_msg_0" + store %TName_List_Message* %"$$one_msg_0_162", %TName_List_Message** %msgs + %"$msgs_163" = load %TName_List_Message*, %TName_List_Message** %msgs + %"$$msgs_163_164" = bitcast %TName_List_Message* %"$msgs_163" to i8* + %"$_literal_cost_call_165" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_38", i8* %"$$msgs_163_164") + %"$gasrem_166" = load i64, i64* @_gasrem + %"$gascmp_167" = icmp ugt i64 %"$_literal_cost_call_165", %"$gasrem_166" + br i1 %"$gascmp_167", label %"$out_of_gas_168", label %"$have_gas_169" + +"$out_of_gas_168": ; preds = %"$have_gas_155" + call void @_out_of_gas() + br label %"$have_gas_169" + +"$have_gas_169": ; preds = %"$out_of_gas_168", %"$have_gas_155" + %"$consume_170" = sub i64 %"$gasrem_166", %"$_literal_cost_call_165" + store i64 %"$consume_170", i64* @_gasrem + %"$execptr_load_171" = load i8*, i8** @_execptr + %"$msgs_172" = load %TName_List_Message*, %TName_List_Message** %msgs + call void @_send(i8* %"$execptr_load_171", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_38", %TName_List_Message* %"$msgs_172") ret void } +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + declare void @_send(i8*, %_TyDescrTy_Typ*, %TName_List_Message*) define void @Accept2(i8* %0) { entry: - %"$_amount_111" = getelementptr i8, i8* %0, i32 0 - %"$_amount_112" = bitcast i8* %"$_amount_111" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_112" - %"$_sender_113" = getelementptr i8, i8* %0, i32 16 - %"$_sender_114" = bitcast i8* %"$_sender_113" to [20 x i8]* - call void @"$Accept2_75"(%Uint128 %_amount, [20 x i8]* %"$_sender_114") + %"$_amount_174" = getelementptr i8, i8* %0, i32 0 + %"$_amount_175" = bitcast i8* %"$_amount_174" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_175" + %"$_sender_176" = getelementptr i8, i8* %0, i32 16 + %"$_sender_177" = bitcast i8* %"$_sender_176" to [20 x i8]* + call void @"$Accept2_105"(%Uint128 %_amount, [20 x i8]* %"$_sender_177") ret void } -define internal void @"$Accept3_115"(%Uint128 %_amount, [20 x i8]* %"$_sender_116") { +define internal void @"$Accept3_178"(%Uint128 %_amount, [20 x i8]* %"$_sender_179") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_116" - %"$execptr_load_117" = load i8*, i8** @_execptr - call void @_accept(i8* %"$execptr_load_117") + %_sender = load [20 x i8], [20 x i8]* %"$_sender_179" + %"$gasrem_180" = load i64, i64* @_gasrem + %"$gascmp_181" = icmp ugt i64 1, %"$gasrem_180" + br i1 %"$gascmp_181", label %"$out_of_gas_182", label %"$have_gas_183" + +"$out_of_gas_182": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_183" + +"$have_gas_183": ; preds = %"$out_of_gas_182", %entry + %"$consume_184" = sub i64 %"$gasrem_180", 1 + store i64 %"$consume_184", i64* @_gasrem + %"$execptr_load_185" = load i8*, i8** @_execptr + call void @_accept(i8* %"$execptr_load_185") + %"$gasrem_186" = load i64, i64* @_gasrem + %"$gascmp_187" = icmp ugt i64 1, %"$gasrem_186" + br i1 %"$gascmp_187", label %"$out_of_gas_188", label %"$have_gas_189" + +"$out_of_gas_188": ; preds = %"$have_gas_183" + call void @_out_of_gas() + br label %"$have_gas_189" + +"$have_gas_189": ; preds = %"$out_of_gas_188", %"$have_gas_183" + %"$consume_190" = sub i64 %"$gasrem_186", 1 + store i64 %"$consume_190", i64* @_gasrem %msg1 = alloca i8* - %"$msgobj_118_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_118_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_118_salloc_load", i64 125) - %"$msgobj_118_salloc" = bitcast i8* %"$msgobj_118_salloc_salloc" to [125 x i8]* - %"$msgobj_118" = bitcast [125 x i8]* %"$msgobj_118_salloc" to i8* - store i8 3, i8* %"$msgobj_118" - %"$msgobj_fname_120" = getelementptr i8, i8* %"$msgobj_118", i32 1 - %"$msgobj_fname_121" = bitcast i8* %"$msgobj_fname_120" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_119", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_121" - %"$msgobj_td_122" = getelementptr i8, i8* %"$msgobj_118", i32 17 - %"$msgobj_td_123" = bitcast i8* %"$msgobj_td_122" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_22", %_TyDescrTy_Typ** %"$msgobj_td_123" - %"$msgobj_v_125" = getelementptr i8, i8* %"$msgobj_118", i32 25 - %"$msgobj_v_126" = bitcast i8* %"$msgobj_v_125" to %String* - store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_124", i32 0, i32 0), i32 0 }, %String* %"$msgobj_v_126" - %"$msgobj_fname_128" = getelementptr i8, i8* %"$msgobj_118", i32 41 - %"$msgobj_fname_129" = bitcast i8* %"$msgobj_fname_128" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_127", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_129" - %"$msgobj_td_130" = getelementptr i8, i8* %"$msgobj_118", i32 57 - %"$msgobj_td_131" = bitcast i8* %"$msgobj_td_130" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_34", %_TyDescrTy_Typ** %"$msgobj_td_131" - %"$msgobj_v_132" = getelementptr i8, i8* %"$msgobj_118", i32 65 - %"$msgobj_v_133" = bitcast i8* %"$msgobj_v_132" to [20 x i8]* - store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_133" - %"$msgobj_fname_135" = getelementptr i8, i8* %"$msgobj_118", i32 85 - %"$msgobj_fname_136" = bitcast i8* %"$msgobj_fname_135" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_134", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_136" - %"$msgobj_td_137" = getelementptr i8, i8* %"$msgobj_118", i32 101 - %"$msgobj_td_138" = bitcast i8* %"$msgobj_td_137" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Uint128_16", %_TyDescrTy_Typ** %"$msgobj_td_138" - %"$msgobj_v_139" = getelementptr i8, i8* %"$msgobj_118", i32 109 - %"$msgobj_v_140" = bitcast i8* %"$msgobj_v_139" to %Uint128* - store %Uint128 { i128 100 }, %Uint128* %"$msgobj_v_140" - store i8* %"$msgobj_118", i8** %msg1 + %"$gasrem_191" = load i64, i64* @_gasrem + %"$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_189" + call void @_out_of_gas() + br label %"$have_gas_194" + +"$have_gas_194": ; preds = %"$out_of_gas_193", %"$have_gas_189" + %"$consume_195" = sub i64 %"$gasrem_191", 1 + store i64 %"$consume_195", i64* @_gasrem + %"$msgobj_196_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_196_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_196_salloc_load", i64 125) + %"$msgobj_196_salloc" = bitcast i8* %"$msgobj_196_salloc_salloc" to [125 x i8]* + %"$msgobj_196" = bitcast [125 x i8]* %"$msgobj_196_salloc" to i8* + store i8 3, i8* %"$msgobj_196" + %"$msgobj_fname_198" = getelementptr i8, i8* %"$msgobj_196", i32 1 + %"$msgobj_fname_199" = bitcast i8* %"$msgobj_fname_198" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_197", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_199" + %"$msgobj_td_200" = getelementptr i8, i8* %"$msgobj_196", i32 17 + %"$msgobj_td_201" = bitcast i8* %"$msgobj_td_200" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_22", %_TyDescrTy_Typ** %"$msgobj_td_201" + %"$msgobj_v_203" = getelementptr i8, i8* %"$msgobj_196", i32 25 + %"$msgobj_v_204" = bitcast i8* %"$msgobj_v_203" to %String* + store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_202", i32 0, i32 0), i32 0 }, %String* %"$msgobj_v_204" + %"$msgobj_fname_206" = getelementptr i8, i8* %"$msgobj_196", i32 41 + %"$msgobj_fname_207" = bitcast i8* %"$msgobj_fname_206" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_205", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_207" + %"$msgobj_td_208" = getelementptr i8, i8* %"$msgobj_196", i32 57 + %"$msgobj_td_209" = bitcast i8* %"$msgobj_td_208" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_34", %_TyDescrTy_Typ** %"$msgobj_td_209" + %"$msgobj_v_210" = getelementptr i8, i8* %"$msgobj_196", i32 65 + %"$msgobj_v_211" = bitcast i8* %"$msgobj_v_210" to [20 x i8]* + store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_211" + %"$msgobj_fname_213" = getelementptr i8, i8* %"$msgobj_196", i32 85 + %"$msgobj_fname_214" = bitcast i8* %"$msgobj_fname_213" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_212", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_214" + %"$msgobj_td_215" = getelementptr i8, i8* %"$msgobj_196", i32 101 + %"$msgobj_td_216" = bitcast i8* %"$msgobj_td_215" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_16", %_TyDescrTy_Typ** %"$msgobj_td_216" + %"$msgobj_v_217" = getelementptr i8, i8* %"$msgobj_196", i32 109 + %"$msgobj_v_218" = bitcast i8* %"$msgobj_v_217" to %Uint128* + store %Uint128 { i128 100 }, %Uint128* %"$msgobj_v_218" + store i8* %"$msgobj_196", i8** %msg1 + %"$gasrem_220" = load i64, i64* @_gasrem + %"$gascmp_221" = icmp ugt i64 1, %"$gasrem_220" + br i1 %"$gascmp_221", label %"$out_of_gas_222", label %"$have_gas_223" + +"$out_of_gas_222": ; preds = %"$have_gas_194" + call void @_out_of_gas() + br label %"$have_gas_223" + +"$have_gas_223": ; preds = %"$out_of_gas_222", %"$have_gas_194" + %"$consume_224" = sub i64 %"$gasrem_220", 1 + store i64 %"$consume_224", i64* @_gasrem %msgs = alloca %TName_List_Message* + %"$gasrem_225" = load i64, i64* @_gasrem + %"$gascmp_226" = icmp ugt i64 1, %"$gasrem_225" + br i1 %"$gascmp_226", label %"$out_of_gas_227", label %"$have_gas_228" + +"$out_of_gas_227": ; preds = %"$have_gas_223" + call void @_out_of_gas() + br label %"$have_gas_228" + +"$have_gas_228": ; preds = %"$out_of_gas_227", %"$have_gas_223" + %"$consume_229" = sub i64 %"$gasrem_225", 1 + store i64 %"$consume_229", i64* @_gasrem %"$one_msg_1" = alloca %TName_List_Message* - %"$one_msg_142" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @one_msg - %"$one_msg_fptr_143" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_142", 0 - %"$one_msg_envptr_144" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_142", 1 - %"$msg1_145" = load i8*, i8** %msg1 - %"$one_msg_call_146" = call %TName_List_Message* %"$one_msg_fptr_143"(i8* %"$one_msg_envptr_144", i8* %"$msg1_145") - store %TName_List_Message* %"$one_msg_call_146", %TName_List_Message** %"$one_msg_1" - %"$$one_msg_1_147" = load %TName_List_Message*, %TName_List_Message** %"$one_msg_1" - store %TName_List_Message* %"$$one_msg_1_147", %TName_List_Message** %msgs - %"$execptr_load_148" = load i8*, i8** @_execptr - %"$msgs_149" = load %TName_List_Message*, %TName_List_Message** %msgs - call void @_send(i8* %"$execptr_load_148", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_38", %TName_List_Message* %"$msgs_149") + %"$one_msg_230" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @one_msg + %"$one_msg_fptr_231" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_230", 0 + %"$one_msg_envptr_232" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_230", 1 + %"$msg1_233" = load i8*, i8** %msg1 + %"$one_msg_call_234" = call %TName_List_Message* %"$one_msg_fptr_231"(i8* %"$one_msg_envptr_232", i8* %"$msg1_233") + store %TName_List_Message* %"$one_msg_call_234", %TName_List_Message** %"$one_msg_1" + %"$$one_msg_1_235" = load %TName_List_Message*, %TName_List_Message** %"$one_msg_1" + store %TName_List_Message* %"$$one_msg_1_235", %TName_List_Message** %msgs + %"$msgs_236" = load %TName_List_Message*, %TName_List_Message** %msgs + %"$$msgs_236_237" = bitcast %TName_List_Message* %"$msgs_236" to i8* + %"$_literal_cost_call_238" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_38", i8* %"$$msgs_236_237") + %"$gasrem_239" = load i64, i64* @_gasrem + %"$gascmp_240" = icmp ugt i64 %"$_literal_cost_call_238", %"$gasrem_239" + br i1 %"$gascmp_240", label %"$out_of_gas_241", label %"$have_gas_242" + +"$out_of_gas_241": ; preds = %"$have_gas_228" + call void @_out_of_gas() + br label %"$have_gas_242" + +"$have_gas_242": ; preds = %"$out_of_gas_241", %"$have_gas_228" + %"$consume_243" = sub i64 %"$gasrem_239", %"$_literal_cost_call_238" + store i64 %"$consume_243", i64* @_gasrem + %"$execptr_load_244" = load i8*, i8** @_execptr + %"$msgs_245" = load %TName_List_Message*, %TName_List_Message** %msgs + call void @_send(i8* %"$execptr_load_244", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_38", %TName_List_Message* %"$msgs_245") ret void } define void @Accept3(i8* %0) { entry: - %"$_amount_151" = getelementptr i8, i8* %0, i32 0 - %"$_amount_152" = bitcast i8* %"$_amount_151" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_152" - %"$_sender_153" = getelementptr i8, i8* %0, i32 16 - %"$_sender_154" = bitcast i8* %"$_sender_153" to [20 x i8]* - call void @"$Accept3_115"(%Uint128 %_amount, [20 x i8]* %"$_sender_154") + %"$_amount_247" = getelementptr i8, i8* %0, i32 0 + %"$_amount_248" = bitcast i8* %"$_amount_247" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_248" + %"$_sender_249" = getelementptr i8, i8* %0, i32 16 + %"$_sender_250" = bitcast i8* %"$_sender_249" to [20 x i8]* + call void @"$Accept3_178"(%Uint128 %_amount, [20 x i8]* %"$_sender_250") ret void } diff --git a/testsuite/contr/accept.output_Accept1.json b/testsuite/contr/accept.output_Accept1.json index 47afd7d6..ea257aa1 100644 --- a/testsuite/contr/accept.output_Accept1.json +++ b/testsuite/contr/accept.output_Accept1.json @@ -1,7 +1,7 @@ { "_accepted" : "true", "events" : [], - "gas_remaining" : "10000000", + "gas_remaining" : "9999997", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/accept.output_Accept2.json b/testsuite/contr/accept.output_Accept2.json index 1a2a2532..8dd32870 100644 --- a/testsuite/contr/accept.output_Accept2.json +++ b/testsuite/contr/accept.output_Accept2.json @@ -1,7 +1,7 @@ { "_accepted" : "true", "events" : [], - "gas_remaining" : "10000000", + "gas_remaining" : "9999875", "messages" : [ { "_amount" : "100", diff --git a/testsuite/contr/accept.output_Accept3_succ.json b/testsuite/contr/accept.output_Accept3_succ.json index 1a2a2532..8dd32870 100644 --- a/testsuite/contr/accept.output_Accept3_succ.json +++ b/testsuite/contr/accept.output_Accept3_succ.json @@ -1,7 +1,7 @@ { "_accepted" : "true", "events" : [], - "gas_remaining" : "10000000", + "gas_remaining" : "9999875", "messages" : [ { "_amount" : "100", diff --git a/testsuite/contr/event.ll b/testsuite/contr/event.ll index a4df1562..e31aac06 100644 --- a/testsuite/contr/event.ll +++ b/testsuite/contr/event.ll @@ -46,10 +46,10 @@ target triple = "x86_64-pc-linux-gnu" @"$TyDescr_Bystr20_30" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_0"* @"$TyDescr_Bystr20_Prim_29" to i8*) } @_scilla_version = global %Uint32 zeroinitializer @_this_address = global [20 x i8] zeroinitializer -@"$stringlit_38" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_43" = unnamed_addr constant [5 x i8] c"Hello" -@"$stringlit_46" = unnamed_addr constant [3 x i8] c"msg" -@"$stringlit_51" = unnamed_addr constant [5 x i8] c"World" +@"$stringlit_48" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_53" = unnamed_addr constant [5 x i8] c"Hello" +@"$stringlit_56" = unnamed_addr constant [3 x i8] c"msg" +@"$stringlit_61" = unnamed_addr constant [5 x i8] c"World" @_tydescr_table = constant [15 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Event_24", %_TyDescrTy_Typ* @"$TyDescr_Int64_6", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_30", %_TyDescrTy_Typ* @"$TyDescr_Uint256_16", %_TyDescrTy_Typ* @"$TyDescr_Uint32_4", %_TyDescrTy_Typ* @"$TyDescr_Uint64_8", %_TyDescrTy_Typ* @"$TyDescr_Bnum_20", %_TyDescrTy_Typ* @"$TyDescr_Uint128_12", %_TyDescrTy_Typ* @"$TyDescr_Exception_26", %_TyDescrTy_Typ* @"$TyDescr_String_18", %_TyDescrTy_Typ* @"$TyDescr_Int256_14", %_TyDescrTy_Typ* @"$TyDescr_Int128_10", %_TyDescrTy_Typ* @"$TyDescr_Bystr_28", %_TyDescrTy_Typ* @"$TyDescr_Message_22", %_TyDescrTy_Typ* @"$TyDescr_Int32_2"] @_tydescr_table_length = constant i32 15 @@ -66,48 +66,87 @@ entry: define internal void @"$EventCreate_35"(%Uint128 %_amount, [20 x i8]* %"$_sender_36") { entry: %_sender = load [20 x i8], [20 x i8]* %"$_sender_36" + %"$gasrem_37" = load i64, i64* @_gasrem + %"$gascmp_38" = icmp ugt i64 1, %"$gasrem_37" + br i1 %"$gascmp_38", label %"$out_of_gas_39", label %"$have_gas_40" + +"$out_of_gas_39": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_40" + +"$have_gas_40": ; preds = %"$out_of_gas_39", %entry + %"$consume_41" = sub i64 %"$gasrem_37", 1 + store i64 %"$consume_41", i64* @_gasrem %e = alloca i8* - %"$msgobj_37_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_37_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_37_salloc_load", i64 81) - %"$msgobj_37_salloc" = bitcast i8* %"$msgobj_37_salloc_salloc" to [81 x i8]* - %"$msgobj_37" = bitcast [81 x i8]* %"$msgobj_37_salloc" to i8* - store i8 2, i8* %"$msgobj_37" - %"$msgobj_fname_39" = getelementptr i8, i8* %"$msgobj_37", i32 1 - %"$msgobj_fname_40" = bitcast i8* %"$msgobj_fname_39" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_38", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_40" - %"$msgobj_td_41" = getelementptr i8, i8* %"$msgobj_37", i32 17 - %"$msgobj_td_42" = bitcast i8* %"$msgobj_td_41" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_18", %_TyDescrTy_Typ** %"$msgobj_td_42" - %"$msgobj_v_44" = getelementptr i8, i8* %"$msgobj_37", i32 25 - %"$msgobj_v_45" = bitcast i8* %"$msgobj_v_44" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_43", i32 0, i32 0), i32 5 }, %String* %"$msgobj_v_45" - %"$msgobj_fname_47" = getelementptr i8, i8* %"$msgobj_37", i32 41 - %"$msgobj_fname_48" = bitcast i8* %"$msgobj_fname_47" to %String* - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_46", i32 0, i32 0), i32 3 }, %String* %"$msgobj_fname_48" - %"$msgobj_td_49" = getelementptr i8, i8* %"$msgobj_37", i32 57 - %"$msgobj_td_50" = bitcast i8* %"$msgobj_td_49" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_18", %_TyDescrTy_Typ** %"$msgobj_td_50" - %"$msgobj_v_52" = getelementptr i8, i8* %"$msgobj_37", i32 65 - %"$msgobj_v_53" = bitcast i8* %"$msgobj_v_52" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_51", i32 0, i32 0), i32 5 }, %String* %"$msgobj_v_53" - store i8* %"$msgobj_37", i8** %e - %"$execptr_load_55" = load i8*, i8** @_execptr - %"$e_56" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_55", %_TyDescrTy_Typ* @"$TyDescr_Event_24", i8* %"$e_56") + %"$gasrem_42" = load i64, i64* @_gasrem + %"$gascmp_43" = icmp ugt i64 1, %"$gasrem_42" + br i1 %"$gascmp_43", label %"$out_of_gas_44", label %"$have_gas_45" + +"$out_of_gas_44": ; preds = %"$have_gas_40" + call void @_out_of_gas() + br label %"$have_gas_45" + +"$have_gas_45": ; preds = %"$out_of_gas_44", %"$have_gas_40" + %"$consume_46" = sub i64 %"$gasrem_42", 1 + store i64 %"$consume_46", i64* @_gasrem + %"$msgobj_47_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_47_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_47_salloc_load", i64 81) + %"$msgobj_47_salloc" = bitcast i8* %"$msgobj_47_salloc_salloc" to [81 x i8]* + %"$msgobj_47" = bitcast [81 x i8]* %"$msgobj_47_salloc" to i8* + store i8 2, i8* %"$msgobj_47" + %"$msgobj_fname_49" = getelementptr i8, i8* %"$msgobj_47", i32 1 + %"$msgobj_fname_50" = bitcast i8* %"$msgobj_fname_49" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_48", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_50" + %"$msgobj_td_51" = getelementptr i8, i8* %"$msgobj_47", i32 17 + %"$msgobj_td_52" = bitcast i8* %"$msgobj_td_51" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_18", %_TyDescrTy_Typ** %"$msgobj_td_52" + %"$msgobj_v_54" = getelementptr i8, i8* %"$msgobj_47", i32 25 + %"$msgobj_v_55" = bitcast i8* %"$msgobj_v_54" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_53", i32 0, i32 0), i32 5 }, %String* %"$msgobj_v_55" + %"$msgobj_fname_57" = getelementptr i8, i8* %"$msgobj_47", i32 41 + %"$msgobj_fname_58" = bitcast i8* %"$msgobj_fname_57" to %String* + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_56", i32 0, i32 0), i32 3 }, %String* %"$msgobj_fname_58" + %"$msgobj_td_59" = getelementptr i8, i8* %"$msgobj_47", i32 57 + %"$msgobj_td_60" = bitcast i8* %"$msgobj_td_59" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_18", %_TyDescrTy_Typ** %"$msgobj_td_60" + %"$msgobj_v_62" = getelementptr i8, i8* %"$msgobj_47", i32 65 + %"$msgobj_v_63" = bitcast i8* %"$msgobj_v_62" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_61", i32 0, i32 0), i32 5 }, %String* %"$msgobj_v_63" + store i8* %"$msgobj_47", i8** %e + %"$e_65" = load i8*, i8** %e + %"$_literal_cost_call_67" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_24", i8* %"$e_65") + %"$gasrem_68" = load i64, i64* @_gasrem + %"$gascmp_69" = icmp ugt i64 %"$_literal_cost_call_67", %"$gasrem_68" + br i1 %"$gascmp_69", label %"$out_of_gas_70", label %"$have_gas_71" + +"$out_of_gas_70": ; preds = %"$have_gas_45" + call void @_out_of_gas() + br label %"$have_gas_71" + +"$have_gas_71": ; preds = %"$out_of_gas_70", %"$have_gas_45" + %"$consume_72" = sub i64 %"$gasrem_68", %"$_literal_cost_call_67" + store i64 %"$consume_72", i64* @_gasrem + %"$execptr_load_73" = load i8*, i8** @_execptr + %"$e_74" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_73", %_TyDescrTy_Typ* @"$TyDescr_Event_24", i8* %"$e_74") ret void } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + declare void @_event(i8*, %_TyDescrTy_Typ*, i8*) define void @EventCreate(i8* %0) { entry: - %"$_amount_58" = getelementptr i8, i8* %0, i32 0 - %"$_amount_59" = bitcast i8* %"$_amount_58" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_59" - %"$_sender_60" = getelementptr i8, i8* %0, i32 16 - %"$_sender_61" = bitcast i8* %"$_sender_60" to [20 x i8]* - call void @"$EventCreate_35"(%Uint128 %_amount, [20 x i8]* %"$_sender_61") + %"$_amount_76" = getelementptr i8, i8* %0, i32 0 + %"$_amount_77" = bitcast i8* %"$_amount_76" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_77" + %"$_sender_78" = getelementptr i8, i8* %0, i32 16 + %"$_sender_79" = bitcast i8* %"$_sender_78" to [20 x i8]* + call void @"$EventCreate_35"(%Uint128 %_amount, [20 x i8]* %"$_sender_79") ret void } diff --git a/testsuite/contr/event.output.json b/testsuite/contr/event.output.json index 356dffe3..7436663f 100644 --- a/testsuite/contr/event.output.json +++ b/testsuite/contr/event.output.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999918", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/helloWorld.init_output.json b/testsuite/contr/helloWorld.init_output.json new file mode 100644 index 00000000..2deaf981 --- /dev/null +++ b/testsuite/contr/helloWorld.init_output.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999994", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/helloWorld.ll b/testsuite/contr/helloWorld.ll index 78a6e509..26186279 100644 --- a/testsuite/contr/helloWorld.ll +++ b/testsuite/contr/helloWorld.ll @@ -114,7 +114,7 @@ target triple = "x86_64-pc-linux-gnu" @not_owner_code = global %Int32 zeroinitializer @set_hello_code = global %Int32 zeroinitializer @smsg = global %String zeroinitializer -@"$stringlit_100" = unnamed_addr constant [8 x i8] c"get lost" +@"$stringlit_135" = unnamed_addr constant [8 x i8] c"get lost" @_scilla_version = global %Uint32 zeroinitializer @_this_address = global [20 x i8] zeroinitializer @owner = global [20 x i8] zeroinitializer @@ -124,261 +124,523 @@ target triple = "x86_64-pc-linux-gnu" @bstr = global %Bystr zeroinitializer @all_names = global %TName_List_String* null @pear = global %TName_Pair_Int128_String* null -@"$welcome_msg_103" = unnamed_addr constant [12 x i8] c"welcome_msg\00" -@"$sendoff_msg_109" = unnamed_addr constant [12 x i8] c"sendoff_msg\00" -@"$stringlit_130" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_135" = unnamed_addr constant [10 x i8] c"setHello()" -@"$stringlit_138" = unnamed_addr constant [4 x i8] c"code" -@"$welcome_msg_152" = unnamed_addr constant [12 x i8] c"welcome_msg\00" -@"$stringlit_156" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_161" = unnamed_addr constant [10 x i8] c"setHello()" -@"$stringlit_164" = unnamed_addr constant [4 x i8] c"code" -@"$welcome_msg_185" = unnamed_addr constant [12 x i8] c"welcome_msg\00" -@"$stringlit_190" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_195" = unnamed_addr constant [10 x i8] c"getHello()" -@"$stringlit_198" = unnamed_addr constant [3 x i8] c"msg" -@"$stringlit_217" = unnamed_addr constant [4 x i8] c"_tag" -@"$stringlit_222" = unnamed_addr constant [0 x i8] zeroinitializer -@"$stringlit_225" = unnamed_addr constant [10 x i8] c"_recipient" -@"$stringlit_232" = unnamed_addr constant [7 x i8] c"_amount" -@"$stringlit_241" = unnamed_addr constant [4 x i8] c"_tag" -@"$stringlit_246" = unnamed_addr constant [0 x i8] zeroinitializer -@"$stringlit_249" = unnamed_addr constant [10 x i8] c"_recipient" -@"$stringlit_256" = unnamed_addr constant [7 x i8] c"_amount" -@"$stringlit_287" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_292" = unnamed_addr constant [15 x i8] c"ContractAddress" -@"$stringlit_295" = unnamed_addr constant [4 x i8] c"addr" -@"$stringlit_314" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_319" = unnamed_addr constant [14 x i8] c"AllContrparams" -@"$stringlit_322" = unnamed_addr constant [5 x i8] c"owner" -@"$stringlit_330" = unnamed_addr constant [4 x i8] c"name" -@"$stringlit_338" = unnamed_addr constant [7 x i8] c"uint256" -@"$stringlit_346" = unnamed_addr constant [5 x i8] c"int32" -@"$stringlit_354" = unnamed_addr constant [4 x i8] c"bstr" -@"$stringlit_362" = unnamed_addr constant [9 x i8] c"all_names" -@"$stringlit_370" = unnamed_addr constant [4 x i8] c"pear" +@"$welcome_msg_143" = unnamed_addr constant [12 x i8] c"welcome_msg\00" +@"$sendoff_msg_154" = unnamed_addr constant [12 x i8] c"sendoff_msg\00" +@"$stringlit_195" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_200" = unnamed_addr constant [10 x i8] c"setHello()" +@"$stringlit_203" = unnamed_addr constant [4 x i8] c"code" +@"$welcome_msg_233" = unnamed_addr constant [12 x i8] c"welcome_msg\00" +@"$stringlit_247" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_252" = unnamed_addr constant [10 x i8] c"setHello()" +@"$stringlit_255" = unnamed_addr constant [4 x i8] c"code" +@"$welcome_msg_284" = unnamed_addr constant [12 x i8] c"welcome_msg\00" +@"$stringlit_309" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_314" = unnamed_addr constant [10 x i8] c"getHello()" +@"$stringlit_317" = unnamed_addr constant [3 x i8] c"msg" +@"$stringlit_354" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_359" = unnamed_addr constant [0 x i8] zeroinitializer +@"$stringlit_362" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_369" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_388" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_393" = unnamed_addr constant [0 x i8] zeroinitializer +@"$stringlit_396" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_403" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_472" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_477" = unnamed_addr constant [15 x i8] c"ContractAddress" +@"$stringlit_480" = unnamed_addr constant [4 x i8] c"addr" +@"$stringlit_517" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_522" = unnamed_addr constant [14 x i8] c"AllContrparams" +@"$stringlit_525" = unnamed_addr constant [5 x i8] c"owner" +@"$stringlit_533" = unnamed_addr constant [4 x i8] c"name" +@"$stringlit_541" = unnamed_addr constant [7 x i8] c"uint256" +@"$stringlit_549" = unnamed_addr constant [5 x i8] c"int32" +@"$stringlit_557" = unnamed_addr constant [4 x i8] c"bstr" +@"$stringlit_565" = unnamed_addr constant [9 x i8] c"all_names" +@"$stringlit_573" = unnamed_addr constant [4 x i8] c"pear" @_tydescr_table = constant [19 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_42", %_TyDescrTy_Typ* @"$TyDescr_Event_29", %_TyDescrTy_Typ* @"$TyDescr_Int64_11", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_39", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_35", %_TyDescrTy_Typ* @"$TyDescr_Uint256_21", %_TyDescrTy_Typ* @"$TyDescr_Uint32_9", %_TyDescrTy_Typ* @"$TyDescr_Uint64_13", %_TyDescrTy_Typ* @"$TyDescr_Bnum_25", %_TyDescrTy_Typ* @"$TyDescr_Uint128_17", %_TyDescrTy_Typ* @"$TyDescr_Exception_31", %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_Int128_String_40", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_41", %_TyDescrTy_Typ* @"$TyDescr_Int256_19", %_TyDescrTy_Typ* @"$TyDescr_Int128_15", %_TyDescrTy_Typ* @"$TyDescr_Bystr_33", %_TyDescrTy_Typ* @"$TyDescr_Message_27", %_TyDescrTy_Typ* @"$TyDescr_Int32_7"] @_tydescr_table_length = constant i32 19 define internal %TName_List_Message* @"$fundef_1"(%"$$fundef_1_env_86"* %0, i8* %1) { entry: %"$retval_2" = alloca %TName_List_Message* + %"$gasrem_87" = load i64, i64* @_gasrem + %"$gascmp_88" = icmp ugt i64 1, %"$gasrem_87" + br i1 %"$gascmp_88", label %"$out_of_gas_89", label %"$have_gas_90" + +"$out_of_gas_89": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_90" + +"$have_gas_90": ; preds = %"$out_of_gas_89", %entry + %"$consume_91" = sub i64 %"$gasrem_87", 1 + store i64 %"$consume_91", i64* @_gasrem %nil_msg = alloca %TName_List_Message* - %"$adtval_87_load" = load i8*, i8** @_execptr - %"$adtval_87_salloc" = call i8* @_salloc(i8* %"$adtval_87_load", i64 1) - %"$adtval_87" = bitcast i8* %"$adtval_87_salloc" to %CName_Nil_Message* - %"$adtgep_88" = getelementptr inbounds %CName_Nil_Message, %CName_Nil_Message* %"$adtval_87", i32 0, i32 0 - store i8 1, i8* %"$adtgep_88" - %"$adtptr_89" = bitcast %CName_Nil_Message* %"$adtval_87" to %TName_List_Message* - store %TName_List_Message* %"$adtptr_89", %TName_List_Message** %nil_msg - %"$nil_msg_90" = load %TName_List_Message*, %TName_List_Message** %nil_msg - %"$adtval_91_load" = load i8*, i8** @_execptr - %"$adtval_91_salloc" = call i8* @_salloc(i8* %"$adtval_91_load", i64 17) - %"$adtval_91" = bitcast i8* %"$adtval_91_salloc" to %CName_Cons_Message* - %"$adtgep_92" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_91", i32 0, i32 0 - store i8 0, i8* %"$adtgep_92" - %"$adtgep_93" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_91", i32 0, i32 1 - store i8* %1, i8** %"$adtgep_93" - %"$adtgep_94" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_91", i32 0, i32 2 - store %TName_List_Message* %"$nil_msg_90", %TName_List_Message** %"$adtgep_94" - %"$adtptr_95" = bitcast %CName_Cons_Message* %"$adtval_91" to %TName_List_Message* - store %TName_List_Message* %"$adtptr_95", %TName_List_Message** %"$retval_2" - %"$$retval_2_96" = load %TName_List_Message*, %TName_List_Message** %"$retval_2" - ret %TName_List_Message* %"$$retval_2_96" + %"$gasrem_92" = load i64, i64* @_gasrem + %"$gascmp_93" = icmp ugt i64 1, %"$gasrem_92" + br i1 %"$gascmp_93", label %"$out_of_gas_94", label %"$have_gas_95" + +"$out_of_gas_94": ; preds = %"$have_gas_90" + call void @_out_of_gas() + br label %"$have_gas_95" + +"$have_gas_95": ; preds = %"$out_of_gas_94", %"$have_gas_90" + %"$consume_96" = sub i64 %"$gasrem_92", 1 + store i64 %"$consume_96", i64* @_gasrem + %"$adtval_97_load" = load i8*, i8** @_execptr + %"$adtval_97_salloc" = call i8* @_salloc(i8* %"$adtval_97_load", i64 1) + %"$adtval_97" = bitcast i8* %"$adtval_97_salloc" to %CName_Nil_Message* + %"$adtgep_98" = getelementptr inbounds %CName_Nil_Message, %CName_Nil_Message* %"$adtval_97", i32 0, i32 0 + store i8 1, i8* %"$adtgep_98" + %"$adtptr_99" = bitcast %CName_Nil_Message* %"$adtval_97" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_99", %TName_List_Message** %nil_msg + %"$gasrem_100" = load i64, i64* @_gasrem + %"$gascmp_101" = icmp ugt i64 1, %"$gasrem_100" + br i1 %"$gascmp_101", label %"$out_of_gas_102", label %"$have_gas_103" + +"$out_of_gas_102": ; preds = %"$have_gas_95" + call void @_out_of_gas() + br label %"$have_gas_103" + +"$have_gas_103": ; preds = %"$out_of_gas_102", %"$have_gas_95" + %"$consume_104" = sub i64 %"$gasrem_100", 1 + store i64 %"$consume_104", i64* @_gasrem + %"$nil_msg_105" = load %TName_List_Message*, %TName_List_Message** %nil_msg + %"$adtval_106_load" = load i8*, i8** @_execptr + %"$adtval_106_salloc" = call i8* @_salloc(i8* %"$adtval_106_load", i64 17) + %"$adtval_106" = bitcast i8* %"$adtval_106_salloc" to %CName_Cons_Message* + %"$adtgep_107" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_106", i32 0, i32 0 + store i8 0, i8* %"$adtgep_107" + %"$adtgep_108" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_106", i32 0, i32 1 + store i8* %1, i8** %"$adtgep_108" + %"$adtgep_109" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_106", i32 0, i32 2 + store %TName_List_Message* %"$nil_msg_105", %TName_List_Message** %"$adtgep_109" + %"$adtptr_110" = bitcast %CName_Cons_Message* %"$adtval_106" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_110", %TName_List_Message** %"$retval_2" + %"$$retval_2_111" = load %TName_List_Message*, %TName_List_Message** %"$retval_2" + ret %TName_List_Message* %"$$retval_2_111" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) define void @_init_libs() { entry: + %"$gasrem_112" = load i64, i64* @_gasrem + %"$gascmp_113" = icmp ugt i64 1, %"$gasrem_112" + br i1 %"$gascmp_113", label %"$out_of_gas_114", label %"$have_gas_115" + +"$out_of_gas_114": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_115" + +"$have_gas_115": ; preds = %"$out_of_gas_114", %entry + %"$consume_116" = sub i64 %"$gasrem_112", 1 + store i64 %"$consume_116", i64* @_gasrem store { %TName_List_Message* (i8*, i8*)*, i8* } { %TName_List_Message* (i8*, i8*)* bitcast (%TName_List_Message* (%"$$fundef_1_env_86"*, i8*)* @"$fundef_1" to %TName_List_Message* (i8*, i8*)*), i8* null }, { %TName_List_Message* (i8*, i8*)*, i8* }* @one_msg + %"$gasrem_120" = load i64, i64* @_gasrem + %"$gascmp_121" = icmp ugt i64 1, %"$gasrem_120" + br i1 %"$gascmp_121", label %"$out_of_gas_122", label %"$have_gas_123" + +"$out_of_gas_122": ; preds = %"$have_gas_115" + call void @_out_of_gas() + br label %"$have_gas_123" + +"$have_gas_123": ; preds = %"$out_of_gas_122", %"$have_gas_115" + %"$consume_124" = sub i64 %"$gasrem_120", 1 + store i64 %"$consume_124", i64* @_gasrem store %Int32 { i32 1 }, %Int32* @not_owner_code + %"$gasrem_125" = load i64, i64* @_gasrem + %"$gascmp_126" = icmp ugt i64 1, %"$gasrem_125" + br i1 %"$gascmp_126", label %"$out_of_gas_127", label %"$have_gas_128" + +"$out_of_gas_127": ; preds = %"$have_gas_123" + call void @_out_of_gas() + br label %"$have_gas_128" + +"$have_gas_128": ; preds = %"$out_of_gas_127", %"$have_gas_123" + %"$consume_129" = sub i64 %"$gasrem_125", 1 + store i64 %"$consume_129", i64* @_gasrem store %Int32 { i32 2 }, %Int32* @set_hello_code - store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_100", i32 0, i32 0), i32 8 }, %String* @smsg + %"$gasrem_130" = load i64, i64* @_gasrem + %"$gascmp_131" = icmp ugt i64 1, %"$gasrem_130" + br i1 %"$gascmp_131", label %"$out_of_gas_132", label %"$have_gas_133" + +"$out_of_gas_132": ; preds = %"$have_gas_128" + call void @_out_of_gas() + br label %"$have_gas_133" + +"$have_gas_133": ; preds = %"$out_of_gas_132", %"$have_gas_128" + %"$consume_134" = sub i64 %"$gasrem_130", 1 + store i64 %"$consume_134", i64* @_gasrem + store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_135", i32 0, i32 0), i32 8 }, %String* @smsg ret void } define void @_init_state() { entry: %"$welcome_msg_3" = alloca %String - %"$name_101" = load %String, %String* @name - store %String %"$name_101", %String* %"$welcome_msg_3" - %"$execptr_load_102" = load i8*, i8** @_execptr - %"$$welcome_msg_3_104" = load %String, %String* %"$welcome_msg_3" - %"$update_value_105" = alloca %String - store %String %"$$welcome_msg_3_104", %String* %"$update_value_105" - %"$update_value_106" = bitcast %String* %"$update_value_105" to i8* - call void @_update_field(i8* %"$execptr_load_102", i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$welcome_msg_103", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_23", i32 0, i8* null, i8* %"$update_value_106") + %"$gasrem_136" = load i64, i64* @_gasrem + %"$gascmp_137" = icmp ugt i64 1, %"$gasrem_136" + br i1 %"$gascmp_137", label %"$out_of_gas_138", label %"$have_gas_139" + +"$out_of_gas_138": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_139" + +"$have_gas_139": ; preds = %"$out_of_gas_138", %entry + %"$consume_140" = sub i64 %"$gasrem_136", 1 + store i64 %"$consume_140", i64* @_gasrem + %"$name_141" = load %String, %String* @name + store %String %"$name_141", %String* %"$welcome_msg_3" + %"$execptr_load_142" = load i8*, i8** @_execptr + %"$$welcome_msg_3_144" = load %String, %String* %"$welcome_msg_3" + %"$update_value_145" = alloca %String + store %String %"$$welcome_msg_3_144", %String* %"$update_value_145" + %"$update_value_146" = bitcast %String* %"$update_value_145" to i8* + call void @_update_field(i8* %"$execptr_load_142", i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$welcome_msg_143", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_23", i32 0, i8* null, i8* %"$update_value_146") %"$sendoff_msg_4" = alloca %String - %"$smsg_107" = load %String, %String* @smsg - store %String %"$smsg_107", %String* %"$sendoff_msg_4" - %"$execptr_load_108" = load i8*, i8** @_execptr - %"$$sendoff_msg_4_110" = load %String, %String* %"$sendoff_msg_4" - %"$update_value_111" = alloca %String - store %String %"$$sendoff_msg_4_110", %String* %"$update_value_111" - %"$update_value_112" = bitcast %String* %"$update_value_111" to i8* - call void @_update_field(i8* %"$execptr_load_108", i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$sendoff_msg_109", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_23", i32 0, i8* null, i8* %"$update_value_112") + %"$gasrem_147" = load i64, i64* @_gasrem + %"$gascmp_148" = icmp ugt i64 1, %"$gasrem_147" + br i1 %"$gascmp_148", label %"$out_of_gas_149", label %"$have_gas_150" + +"$out_of_gas_149": ; preds = %"$have_gas_139" + call void @_out_of_gas() + br label %"$have_gas_150" + +"$have_gas_150": ; preds = %"$out_of_gas_149", %"$have_gas_139" + %"$consume_151" = sub i64 %"$gasrem_147", 1 + store i64 %"$consume_151", i64* @_gasrem + %"$smsg_152" = load %String, %String* @smsg + store %String %"$smsg_152", %String* %"$sendoff_msg_4" + %"$execptr_load_153" = load i8*, i8** @_execptr + %"$$sendoff_msg_4_155" = load %String, %String* %"$sendoff_msg_4" + %"$update_value_156" = alloca %String + store %String %"$$sendoff_msg_4_155", %String* %"$update_value_156" + %"$update_value_157" = bitcast %String* %"$update_value_156" to i8* + call void @_update_field(i8* %"$execptr_load_153", i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$sendoff_msg_154", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_23", i32 0, i8* null, i8* %"$update_value_157") ret void } declare void @_update_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i8*) -define internal void @"$setHello_113"(%Uint128 %_amount, [20 x i8]* %"$_sender_114", %String %msg) { +define internal void @"$setHello_158"(%Uint128 %_amount, [20 x i8]* %"$_sender_159", %String %msg) { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_114" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_159" + %"$gasrem_160" = load i64, i64* @_gasrem + %"$gascmp_161" = icmp ugt i64 1, %"$gasrem_160" + br i1 %"$gascmp_161", label %"$out_of_gas_162", label %"$have_gas_163" + +"$out_of_gas_162": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_163" + +"$have_gas_163": ; preds = %"$out_of_gas_162", %entry + %"$consume_164" = sub i64 %"$gasrem_160", 1 + store i64 %"$consume_164", i64* @_gasrem %is_owner = alloca %TName_Bool* - %"$execptr_load_115" = load i8*, i8** @_execptr - %"$eq_owner_116" = alloca [20 x i8] - %"$owner_117" = load [20 x i8], [20 x i8]* @owner - store [20 x i8] %"$owner_117", [20 x i8]* %"$eq_owner_116" - %"$$eq_owner_116_118" = bitcast [20 x i8]* %"$eq_owner_116" to i8* - %"$eq__sender_119" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$eq__sender_119" - %"$$eq__sender_119_120" = bitcast [20 x i8]* %"$eq__sender_119" to i8* - %"$eq_call_121" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_115", i32 20, i8* %"$$eq_owner_116_118", i8* %"$$eq__sender_119_120") - store %TName_Bool* %"$eq_call_121", %TName_Bool** %is_owner - %"$is_owner_123" = load %TName_Bool*, %TName_Bool** %is_owner - %"$is_owner_tag_124" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_owner_123", i32 0, i32 0 - %"$is_owner_tag_125" = load i8, i8* %"$is_owner_tag_124" - switch i8 %"$is_owner_tag_125", label %"$empty_default_126" [ - i8 1, label %"$False_127" - i8 0, label %"$True_149" + %"$execptr_load_165" = load i8*, i8** @_execptr + %"$eq_owner_166" = alloca [20 x i8] + %"$owner_167" = load [20 x i8], [20 x i8]* @owner + store [20 x i8] %"$owner_167", [20 x i8]* %"$eq_owner_166" + %"$$eq_owner_166_168" = bitcast [20 x i8]* %"$eq_owner_166" to i8* + %"$eq__sender_169" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$eq__sender_169" + %"$$eq__sender_169_170" = bitcast [20 x i8]* %"$eq__sender_169" to i8* + %"$eq_call_171" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_165", i32 20, i8* %"$$eq_owner_166_168", i8* %"$$eq__sender_169_170") + store %TName_Bool* %"$eq_call_171", %TName_Bool** %is_owner + %"$gasrem_172" = load i64, i64* @_gasrem + %"$gascmp_173" = icmp ugt i64 2, %"$gasrem_172" + br i1 %"$gascmp_173", label %"$out_of_gas_174", label %"$have_gas_175" + +"$out_of_gas_174": ; preds = %"$have_gas_163" + call void @_out_of_gas() + br label %"$have_gas_175" + +"$have_gas_175": ; preds = %"$out_of_gas_174", %"$have_gas_163" + %"$consume_176" = sub i64 %"$gasrem_172", 2 + store i64 %"$consume_176", i64* @_gasrem + %"$is_owner_178" = load %TName_Bool*, %TName_Bool** %is_owner + %"$is_owner_tag_179" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_owner_178", i32 0, i32 0 + %"$is_owner_tag_180" = load i8, i8* %"$is_owner_tag_179" + switch i8 %"$is_owner_tag_180", label %"$empty_default_181" [ + i8 1, label %"$False_182" + i8 0, label %"$True_222" ] -"$False_127": ; preds = %entry - %"$is_owner_128" = bitcast %TName_Bool* %"$is_owner_123" to %CName_False* +"$False_182": ; preds = %"$have_gas_175" + %"$is_owner_183" = bitcast %TName_Bool* %"$is_owner_178" to %CName_False* + %"$gasrem_184" = load i64, i64* @_gasrem + %"$gascmp_185" = icmp ugt i64 1, %"$gasrem_184" + br i1 %"$gascmp_185", label %"$out_of_gas_186", label %"$have_gas_187" + +"$out_of_gas_186": ; preds = %"$False_182" + call void @_out_of_gas() + br label %"$have_gas_187" + +"$have_gas_187": ; preds = %"$out_of_gas_186", %"$False_182" + %"$consume_188" = sub i64 %"$gasrem_184", 1 + store i64 %"$consume_188", i64* @_gasrem %e = alloca i8* - %"$msgobj_129_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_129_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_129_salloc_load", i64 69) - %"$msgobj_129_salloc" = bitcast i8* %"$msgobj_129_salloc_salloc" to [69 x i8]* - %"$msgobj_129" = bitcast [69 x i8]* %"$msgobj_129_salloc" to i8* - store i8 2, i8* %"$msgobj_129" - %"$msgobj_fname_131" = getelementptr i8, i8* %"$msgobj_129", i32 1 - %"$msgobj_fname_132" = bitcast i8* %"$msgobj_fname_131" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_130", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_132" - %"$msgobj_td_133" = getelementptr i8, i8* %"$msgobj_129", i32 17 - %"$msgobj_td_134" = bitcast i8* %"$msgobj_td_133" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ** %"$msgobj_td_134" - %"$msgobj_v_136" = getelementptr i8, i8* %"$msgobj_129", i32 25 - %"$msgobj_v_137" = bitcast i8* %"$msgobj_v_136" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_135", i32 0, i32 0), i32 10 }, %String* %"$msgobj_v_137" - %"$msgobj_fname_139" = getelementptr i8, i8* %"$msgobj_129", i32 41 - %"$msgobj_fname_140" = bitcast i8* %"$msgobj_fname_139" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_138", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_140" - %"$msgobj_td_141" = getelementptr i8, i8* %"$msgobj_129", i32 57 - %"$msgobj_td_142" = bitcast i8* %"$msgobj_td_141" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Int32_7", %_TyDescrTy_Typ** %"$msgobj_td_142" - %"$not_owner_code_143" = load %Int32, %Int32* @not_owner_code - %"$msgobj_v_144" = getelementptr i8, i8* %"$msgobj_129", i32 65 - %"$msgobj_v_145" = bitcast i8* %"$msgobj_v_144" to %Int32* - store %Int32 %"$not_owner_code_143", %Int32* %"$msgobj_v_145" - store i8* %"$msgobj_129", i8** %e - %"$execptr_load_147" = load i8*, i8** @_execptr - %"$e_148" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_147", %_TyDescrTy_Typ* @"$TyDescr_Event_29", i8* %"$e_148") - br label %"$matchsucc_122" - -"$True_149": ; preds = %entry - %"$is_owner_150" = bitcast %TName_Bool* %"$is_owner_123" to %CName_True* - %"$execptr_load_151" = load i8*, i8** @_execptr - %"$update_value_153" = alloca %String - store %String %msg, %String* %"$update_value_153" - %"$update_value_154" = bitcast %String* %"$update_value_153" to i8* - call void @_update_field(i8* %"$execptr_load_151", i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$welcome_msg_152", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_23", i32 0, i8* null, i8* %"$update_value_154") + %"$gasrem_189" = load i64, i64* @_gasrem + %"$gascmp_190" = icmp ugt i64 1, %"$gasrem_189" + br i1 %"$gascmp_190", label %"$out_of_gas_191", label %"$have_gas_192" + +"$out_of_gas_191": ; preds = %"$have_gas_187" + call void @_out_of_gas() + br label %"$have_gas_192" + +"$have_gas_192": ; preds = %"$out_of_gas_191", %"$have_gas_187" + %"$consume_193" = sub i64 %"$gasrem_189", 1 + store i64 %"$consume_193", i64* @_gasrem + %"$msgobj_194_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_194_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_194_salloc_load", i64 69) + %"$msgobj_194_salloc" = bitcast i8* %"$msgobj_194_salloc_salloc" to [69 x i8]* + %"$msgobj_194" = bitcast [69 x i8]* %"$msgobj_194_salloc" to i8* + store i8 2, i8* %"$msgobj_194" + %"$msgobj_fname_196" = getelementptr i8, i8* %"$msgobj_194", i32 1 + %"$msgobj_fname_197" = bitcast i8* %"$msgobj_fname_196" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_195", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_197" + %"$msgobj_td_198" = getelementptr i8, i8* %"$msgobj_194", i32 17 + %"$msgobj_td_199" = bitcast i8* %"$msgobj_td_198" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ** %"$msgobj_td_199" + %"$msgobj_v_201" = getelementptr i8, i8* %"$msgobj_194", i32 25 + %"$msgobj_v_202" = bitcast i8* %"$msgobj_v_201" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_200", i32 0, i32 0), i32 10 }, %String* %"$msgobj_v_202" + %"$msgobj_fname_204" = getelementptr i8, i8* %"$msgobj_194", i32 41 + %"$msgobj_fname_205" = bitcast i8* %"$msgobj_fname_204" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_203", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_205" + %"$msgobj_td_206" = getelementptr i8, i8* %"$msgobj_194", i32 57 + %"$msgobj_td_207" = bitcast i8* %"$msgobj_td_206" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Int32_7", %_TyDescrTy_Typ** %"$msgobj_td_207" + %"$not_owner_code_208" = load %Int32, %Int32* @not_owner_code + %"$msgobj_v_209" = getelementptr i8, i8* %"$msgobj_194", i32 65 + %"$msgobj_v_210" = bitcast i8* %"$msgobj_v_209" to %Int32* + store %Int32 %"$not_owner_code_208", %Int32* %"$msgobj_v_210" + store i8* %"$msgobj_194", i8** %e + %"$e_212" = load i8*, i8** %e + %"$_literal_cost_call_214" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_29", i8* %"$e_212") + %"$gasrem_215" = load i64, i64* @_gasrem + %"$gascmp_216" = icmp ugt i64 %"$_literal_cost_call_214", %"$gasrem_215" + br i1 %"$gascmp_216", label %"$out_of_gas_217", label %"$have_gas_218" + +"$out_of_gas_217": ; preds = %"$have_gas_192" + call void @_out_of_gas() + br label %"$have_gas_218" + +"$have_gas_218": ; preds = %"$out_of_gas_217", %"$have_gas_192" + %"$consume_219" = sub i64 %"$gasrem_215", %"$_literal_cost_call_214" + store i64 %"$consume_219", i64* @_gasrem + %"$execptr_load_220" = load i8*, i8** @_execptr + %"$e_221" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_220", %_TyDescrTy_Typ* @"$TyDescr_Event_29", i8* %"$e_221") + br label %"$matchsucc_177" + +"$True_222": ; preds = %"$have_gas_175" + %"$is_owner_223" = bitcast %TName_Bool* %"$is_owner_178" to %CName_True* + %"$_literal_cost_msg_224" = alloca %String + store %String %msg, %String* %"$_literal_cost_msg_224" + %"$$_literal_cost_msg_224_225" = bitcast %String* %"$_literal_cost_msg_224" to i8* + %"$_literal_cost_call_226" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_23", i8* %"$$_literal_cost_msg_224_225") + %"$gasrem_227" = load i64, i64* @_gasrem + %"$gascmp_228" = icmp ugt i64 %"$_literal_cost_call_226", %"$gasrem_227" + br i1 %"$gascmp_228", label %"$out_of_gas_229", label %"$have_gas_230" + +"$out_of_gas_229": ; preds = %"$True_222" + call void @_out_of_gas() + br label %"$have_gas_230" + +"$have_gas_230": ; preds = %"$out_of_gas_229", %"$True_222" + %"$consume_231" = sub i64 %"$gasrem_227", %"$_literal_cost_call_226" + store i64 %"$consume_231", i64* @_gasrem + %"$execptr_load_232" = load i8*, i8** @_execptr + %"$update_value_234" = alloca %String + store %String %msg, %String* %"$update_value_234" + %"$update_value_235" = bitcast %String* %"$update_value_234" to i8* + call void @_update_field(i8* %"$execptr_load_232", i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$welcome_msg_233", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_23", i32 0, i8* null, i8* %"$update_value_235") + %"$gasrem_236" = load i64, i64* @_gasrem + %"$gascmp_237" = icmp ugt i64 1, %"$gasrem_236" + br i1 %"$gascmp_237", label %"$out_of_gas_238", label %"$have_gas_239" + +"$out_of_gas_238": ; preds = %"$have_gas_230" + call void @_out_of_gas() + br label %"$have_gas_239" + +"$have_gas_239": ; preds = %"$out_of_gas_238", %"$have_gas_230" + %"$consume_240" = sub i64 %"$gasrem_236", 1 + store i64 %"$consume_240", i64* @_gasrem %e1 = alloca i8* - %"$msgobj_155_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_155_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_155_salloc_load", i64 69) - %"$msgobj_155_salloc" = bitcast i8* %"$msgobj_155_salloc_salloc" to [69 x i8]* - %"$msgobj_155" = bitcast [69 x i8]* %"$msgobj_155_salloc" to i8* - store i8 2, i8* %"$msgobj_155" - %"$msgobj_fname_157" = getelementptr i8, i8* %"$msgobj_155", i32 1 - %"$msgobj_fname_158" = bitcast i8* %"$msgobj_fname_157" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_156", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_158" - %"$msgobj_td_159" = getelementptr i8, i8* %"$msgobj_155", i32 17 - %"$msgobj_td_160" = bitcast i8* %"$msgobj_td_159" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ** %"$msgobj_td_160" - %"$msgobj_v_162" = getelementptr i8, i8* %"$msgobj_155", i32 25 - %"$msgobj_v_163" = bitcast i8* %"$msgobj_v_162" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_161", i32 0, i32 0), i32 10 }, %String* %"$msgobj_v_163" - %"$msgobj_fname_165" = getelementptr i8, i8* %"$msgobj_155", i32 41 - %"$msgobj_fname_166" = bitcast i8* %"$msgobj_fname_165" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_164", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_166" - %"$msgobj_td_167" = getelementptr i8, i8* %"$msgobj_155", i32 57 - %"$msgobj_td_168" = bitcast i8* %"$msgobj_td_167" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Int32_7", %_TyDescrTy_Typ** %"$msgobj_td_168" - %"$set_hello_code_169" = load %Int32, %Int32* @set_hello_code - %"$msgobj_v_170" = getelementptr i8, i8* %"$msgobj_155", i32 65 - %"$msgobj_v_171" = bitcast i8* %"$msgobj_v_170" to %Int32* - store %Int32 %"$set_hello_code_169", %Int32* %"$msgobj_v_171" - store i8* %"$msgobj_155", i8** %e1 - %"$execptr_load_173" = load i8*, i8** @_execptr - %"$e_174" = load i8*, i8** %e1 - call void @_event(i8* %"$execptr_load_173", %_TyDescrTy_Typ* @"$TyDescr_Event_29", i8* %"$e_174") - br label %"$matchsucc_122" - -"$empty_default_126": ; preds = %entry - br label %"$matchsucc_122" - -"$matchsucc_122": ; preds = %"$True_149", %"$False_127", %"$empty_default_126" + %"$gasrem_241" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_239" + call void @_out_of_gas() + br label %"$have_gas_244" + +"$have_gas_244": ; preds = %"$out_of_gas_243", %"$have_gas_239" + %"$consume_245" = sub i64 %"$gasrem_241", 1 + store i64 %"$consume_245", i64* @_gasrem + %"$msgobj_246_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_246_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_246_salloc_load", i64 69) + %"$msgobj_246_salloc" = bitcast i8* %"$msgobj_246_salloc_salloc" to [69 x i8]* + %"$msgobj_246" = bitcast [69 x i8]* %"$msgobj_246_salloc" to i8* + store i8 2, i8* %"$msgobj_246" + %"$msgobj_fname_248" = getelementptr i8, i8* %"$msgobj_246", i32 1 + %"$msgobj_fname_249" = bitcast i8* %"$msgobj_fname_248" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_247", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_249" + %"$msgobj_td_250" = getelementptr i8, i8* %"$msgobj_246", i32 17 + %"$msgobj_td_251" = bitcast i8* %"$msgobj_td_250" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ** %"$msgobj_td_251" + %"$msgobj_v_253" = getelementptr i8, i8* %"$msgobj_246", i32 25 + %"$msgobj_v_254" = bitcast i8* %"$msgobj_v_253" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_252", i32 0, i32 0), i32 10 }, %String* %"$msgobj_v_254" + %"$msgobj_fname_256" = getelementptr i8, i8* %"$msgobj_246", i32 41 + %"$msgobj_fname_257" = bitcast i8* %"$msgobj_fname_256" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_255", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_257" + %"$msgobj_td_258" = getelementptr i8, i8* %"$msgobj_246", i32 57 + %"$msgobj_td_259" = bitcast i8* %"$msgobj_td_258" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Int32_7", %_TyDescrTy_Typ** %"$msgobj_td_259" + %"$set_hello_code_260" = load %Int32, %Int32* @set_hello_code + %"$msgobj_v_261" = getelementptr i8, i8* %"$msgobj_246", i32 65 + %"$msgobj_v_262" = bitcast i8* %"$msgobj_v_261" to %Int32* + store %Int32 %"$set_hello_code_260", %Int32* %"$msgobj_v_262" + store i8* %"$msgobj_246", i8** %e1 + %"$e_264" = load i8*, i8** %e1 + %"$_literal_cost_call_266" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_29", i8* %"$e_264") + %"$gasrem_267" = load i64, i64* @_gasrem + %"$gascmp_268" = icmp ugt i64 %"$_literal_cost_call_266", %"$gasrem_267" + br i1 %"$gascmp_268", label %"$out_of_gas_269", label %"$have_gas_270" + +"$out_of_gas_269": ; preds = %"$have_gas_244" + call void @_out_of_gas() + br label %"$have_gas_270" + +"$have_gas_270": ; preds = %"$out_of_gas_269", %"$have_gas_244" + %"$consume_271" = sub i64 %"$gasrem_267", %"$_literal_cost_call_266" + store i64 %"$consume_271", i64* @_gasrem + %"$execptr_load_272" = load i8*, i8** @_execptr + %"$e_273" = load i8*, i8** %e1 + call void @_event(i8* %"$execptr_load_272", %_TyDescrTy_Typ* @"$TyDescr_Event_29", i8* %"$e_273") + br label %"$matchsucc_177" + +"$empty_default_181": ; preds = %"$have_gas_175" + br label %"$matchsucc_177" + +"$matchsucc_177": ; preds = %"$have_gas_270", %"$have_gas_218", %"$empty_default_181" ret void } declare %TName_Bool* @_eq_ByStrX(i8*, i32, i8*, i8*) +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + declare void @_event(i8*, %_TyDescrTy_Typ*, i8*) define void @setHello(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" - %"$_sender_178" = getelementptr i8, i8* %0, i32 16 - %"$_sender_179" = bitcast i8* %"$_sender_178" to [20 x i8]* - %"$msg_180" = getelementptr i8, i8* %0, i32 36 - %"$msg_181" = bitcast i8* %"$msg_180" to %String* - %msg = load %String, %String* %"$msg_181" - call void @"$setHello_113"(%Uint128 %_amount, [20 x i8]* %"$_sender_179", %String %msg) + %"$_amount_275" = getelementptr i8, i8* %0, i32 0 + %"$_amount_276" = bitcast i8* %"$_amount_275" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_276" + %"$_sender_277" = getelementptr i8, i8* %0, i32 16 + %"$_sender_278" = bitcast i8* %"$_sender_277" to [20 x i8]* + %"$msg_279" = getelementptr i8, i8* %0, i32 36 + %"$msg_280" = bitcast i8* %"$msg_279" to %String* + %msg = load %String, %String* %"$msg_280" + call void @"$setHello_158"(%Uint128 %_amount, [20 x i8]* %"$_sender_278", %String %msg) ret void } -define internal void @"$getHello_182"(%Uint128 %_amount, [20 x i8]* %"$_sender_183") { +define internal void @"$getHello_281"(%Uint128 %_amount, [20 x i8]* %"$_sender_282") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_183" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_282" %r = alloca %String - %"$execptr_load_184" = load i8*, i8** @_execptr - %"$r_186" = call i8* @_fetch_field(i8* %"$execptr_load_184", i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$welcome_msg_185", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_23", i32 0, i8* null, i32 1) - %"$r_187" = bitcast i8* %"$r_186" to %String* - %"$r_188" = load %String, %String* %"$r_187" - store %String %"$r_188", %String* %r + %"$execptr_load_283" = load i8*, i8** @_execptr + %"$r_285" = call i8* @_fetch_field(i8* %"$execptr_load_283", i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$welcome_msg_284", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_23", i32 0, i8* null, i32 1) + %"$r_286" = bitcast i8* %"$r_285" to %String* + %"$r_287" = load %String, %String* %"$r_286" + store %String %"$r_287", %String* %r + %"$_literal_cost_r_288" = alloca %String + %"$r_289" = load %String, %String* %r + store %String %"$r_289", %String* %"$_literal_cost_r_288" + %"$$_literal_cost_r_288_290" = bitcast %String* %"$_literal_cost_r_288" to i8* + %"$_literal_cost_call_291" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_23", i8* %"$$_literal_cost_r_288_290") + %"$gasadd_292" = add i64 %"$_literal_cost_call_291", 0 + %"$gasrem_293" = load i64, i64* @_gasrem + %"$gascmp_294" = icmp ugt i64 %"$gasadd_292", %"$gasrem_293" + br i1 %"$gascmp_294", label %"$out_of_gas_295", label %"$have_gas_296" + +"$out_of_gas_295": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_296" + +"$have_gas_296": ; preds = %"$out_of_gas_295", %entry + %"$consume_297" = sub i64 %"$gasrem_293", %"$gasadd_292" + store i64 %"$consume_297", i64* @_gasrem + %"$gasrem_298" = load i64, i64* @_gasrem + %"$gascmp_299" = icmp ugt i64 1, %"$gasrem_298" + br i1 %"$gascmp_299", label %"$out_of_gas_300", label %"$have_gas_301" + +"$out_of_gas_300": ; preds = %"$have_gas_296" + call void @_out_of_gas() + br label %"$have_gas_301" + +"$have_gas_301": ; preds = %"$out_of_gas_300", %"$have_gas_296" + %"$consume_302" = sub i64 %"$gasrem_298", 1 + store i64 %"$consume_302", i64* @_gasrem %e = alloca i8* - %"$msgobj_189_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_189_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_189_salloc_load", i64 81) - %"$msgobj_189_salloc" = bitcast i8* %"$msgobj_189_salloc_salloc" to [81 x i8]* - %"$msgobj_189" = bitcast [81 x i8]* %"$msgobj_189_salloc" to i8* - store i8 2, i8* %"$msgobj_189" - %"$msgobj_fname_191" = getelementptr i8, i8* %"$msgobj_189", i32 1 - %"$msgobj_fname_192" = bitcast i8* %"$msgobj_fname_191" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_190", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_192" - %"$msgobj_td_193" = getelementptr i8, i8* %"$msgobj_189", i32 17 - %"$msgobj_td_194" = bitcast i8* %"$msgobj_td_193" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ** %"$msgobj_td_194" - %"$msgobj_v_196" = getelementptr i8, i8* %"$msgobj_189", i32 25 - %"$msgobj_v_197" = bitcast i8* %"$msgobj_v_196" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_195", i32 0, i32 0), i32 10 }, %String* %"$msgobj_v_197" - %"$msgobj_fname_199" = getelementptr i8, i8* %"$msgobj_189", i32 41 - %"$msgobj_fname_200" = bitcast i8* %"$msgobj_fname_199" to %String* - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_198", i32 0, i32 0), i32 3 }, %String* %"$msgobj_fname_200" - %"$msgobj_td_201" = getelementptr i8, i8* %"$msgobj_189", i32 57 - %"$msgobj_td_202" = bitcast i8* %"$msgobj_td_201" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ** %"$msgobj_td_202" - %"$r_203" = load %String, %String* %r - %"$msgobj_v_204" = getelementptr i8, i8* %"$msgobj_189", i32 65 - %"$msgobj_v_205" = bitcast i8* %"$msgobj_v_204" to %String* - store %String %"$r_203", %String* %"$msgobj_v_205" - store i8* %"$msgobj_189", i8** %e - %"$execptr_load_207" = load i8*, i8** @_execptr - %"$e_208" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_207", %_TyDescrTy_Typ* @"$TyDescr_Event_29", i8* %"$e_208") + %"$gasrem_303" = load i64, i64* @_gasrem + %"$gascmp_304" = icmp ugt i64 1, %"$gasrem_303" + br i1 %"$gascmp_304", label %"$out_of_gas_305", label %"$have_gas_306" + +"$out_of_gas_305": ; preds = %"$have_gas_301" + call void @_out_of_gas() + br label %"$have_gas_306" + +"$have_gas_306": ; preds = %"$out_of_gas_305", %"$have_gas_301" + %"$consume_307" = sub i64 %"$gasrem_303", 1 + store i64 %"$consume_307", i64* @_gasrem + %"$msgobj_308_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_308_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_308_salloc_load", i64 81) + %"$msgobj_308_salloc" = bitcast i8* %"$msgobj_308_salloc_salloc" to [81 x i8]* + %"$msgobj_308" = bitcast [81 x i8]* %"$msgobj_308_salloc" to i8* + store i8 2, i8* %"$msgobj_308" + %"$msgobj_fname_310" = getelementptr i8, i8* %"$msgobj_308", i32 1 + %"$msgobj_fname_311" = bitcast i8* %"$msgobj_fname_310" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_309", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_311" + %"$msgobj_td_312" = getelementptr i8, i8* %"$msgobj_308", i32 17 + %"$msgobj_td_313" = bitcast i8* %"$msgobj_td_312" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ** %"$msgobj_td_313" + %"$msgobj_v_315" = getelementptr i8, i8* %"$msgobj_308", i32 25 + %"$msgobj_v_316" = bitcast i8* %"$msgobj_v_315" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_314", i32 0, i32 0), i32 10 }, %String* %"$msgobj_v_316" + %"$msgobj_fname_318" = getelementptr i8, i8* %"$msgobj_308", i32 41 + %"$msgobj_fname_319" = bitcast i8* %"$msgobj_fname_318" to %String* + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_317", i32 0, i32 0), i32 3 }, %String* %"$msgobj_fname_319" + %"$msgobj_td_320" = getelementptr i8, i8* %"$msgobj_308", i32 57 + %"$msgobj_td_321" = bitcast i8* %"$msgobj_td_320" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ** %"$msgobj_td_321" + %"$r_322" = load %String, %String* %r + %"$msgobj_v_323" = getelementptr i8, i8* %"$msgobj_308", i32 65 + %"$msgobj_v_324" = bitcast i8* %"$msgobj_v_323" to %String* + store %String %"$r_322", %String* %"$msgobj_v_324" + store i8* %"$msgobj_308", i8** %e + %"$e_326" = load i8*, i8** %e + %"$_literal_cost_call_328" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_29", i8* %"$e_326") + %"$gasrem_329" = load i64, i64* @_gasrem + %"$gascmp_330" = icmp ugt i64 %"$_literal_cost_call_328", %"$gasrem_329" + br i1 %"$gascmp_330", label %"$out_of_gas_331", label %"$have_gas_332" + +"$out_of_gas_331": ; preds = %"$have_gas_306" + call void @_out_of_gas() + br label %"$have_gas_332" + +"$have_gas_332": ; preds = %"$out_of_gas_331", %"$have_gas_306" + %"$consume_333" = sub i64 %"$gasrem_329", %"$_literal_cost_call_328" + store i64 %"$consume_333", i64* @_gasrem + %"$execptr_load_334" = load i8*, i8** @_execptr + %"$e_335" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_334", %_TyDescrTy_Typ* @"$TyDescr_Event_29", i8* %"$e_335") ret void } @@ -386,113 +648,215 @@ declare i8* @_fetch_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i32) define void @getHello(i8* %0) { entry: - %"$_amount_210" = getelementptr i8, i8* %0, i32 0 - %"$_amount_211" = bitcast i8* %"$_amount_210" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_211" - %"$_sender_212" = getelementptr i8, i8* %0, i32 16 - %"$_sender_213" = bitcast i8* %"$_sender_212" to [20 x i8]* - call void @"$getHello_182"(%Uint128 %_amount, [20 x i8]* %"$_sender_213") + %"$_amount_337" = getelementptr i8, i8* %0, i32 0 + %"$_amount_338" = bitcast i8* %"$_amount_337" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_338" + %"$_sender_339" = getelementptr i8, i8* %0, i32 16 + %"$_sender_340" = bitcast i8* %"$_sender_339" to [20 x i8]* + call void @"$getHello_281"(%Uint128 %_amount, [20 x i8]* %"$_sender_340") ret void } -define internal void @"$multipleMsgs_214"(%Uint128 %_amount, [20 x i8]* %"$_sender_215") { +define internal void @"$multipleMsgs_341"(%Uint128 %_amount, [20 x i8]* %"$_sender_342") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_215" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_342" + %"$gasrem_343" = load i64, i64* @_gasrem + %"$gascmp_344" = icmp ugt i64 1, %"$gasrem_343" + br i1 %"$gascmp_344", label %"$out_of_gas_345", label %"$have_gas_346" + +"$out_of_gas_345": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_346" + +"$have_gas_346": ; preds = %"$out_of_gas_345", %entry + %"$consume_347" = sub i64 %"$gasrem_343", 1 + store i64 %"$consume_347", i64* @_gasrem %msg1 = alloca i8* - %"$msgobj_216_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_216_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_216_salloc_load", i64 125) - %"$msgobj_216_salloc" = bitcast i8* %"$msgobj_216_salloc_salloc" to [125 x i8]* - %"$msgobj_216" = bitcast [125 x i8]* %"$msgobj_216_salloc" to i8* - store i8 3, i8* %"$msgobj_216" - %"$msgobj_fname_218" = getelementptr i8, i8* %"$msgobj_216", i32 1 - %"$msgobj_fname_219" = bitcast i8* %"$msgobj_fname_218" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_217", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_219" - %"$msgobj_td_220" = getelementptr i8, i8* %"$msgobj_216", i32 17 - %"$msgobj_td_221" = bitcast i8* %"$msgobj_td_220" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ** %"$msgobj_td_221" - %"$msgobj_v_223" = getelementptr i8, i8* %"$msgobj_216", i32 25 - %"$msgobj_v_224" = bitcast i8* %"$msgobj_v_223" to %String* - store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_222", i32 0, i32 0), i32 0 }, %String* %"$msgobj_v_224" - %"$msgobj_fname_226" = getelementptr i8, i8* %"$msgobj_216", i32 41 - %"$msgobj_fname_227" = bitcast i8* %"$msgobj_fname_226" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_225", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_227" - %"$msgobj_td_228" = getelementptr i8, i8* %"$msgobj_216", i32 57 - %"$msgobj_td_229" = bitcast i8* %"$msgobj_td_228" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_35", %_TyDescrTy_Typ** %"$msgobj_td_229" - %"$msgobj_v_230" = getelementptr i8, i8* %"$msgobj_216", i32 65 - %"$msgobj_v_231" = bitcast i8* %"$msgobj_v_230" to [20 x i8]* - store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_231" - %"$msgobj_fname_233" = getelementptr i8, i8* %"$msgobj_216", i32 85 - %"$msgobj_fname_234" = bitcast i8* %"$msgobj_fname_233" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_232", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_234" - %"$msgobj_td_235" = getelementptr i8, i8* %"$msgobj_216", i32 101 - %"$msgobj_td_236" = bitcast i8* %"$msgobj_td_235" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Uint128_17", %_TyDescrTy_Typ** %"$msgobj_td_236" - %"$msgobj_v_237" = getelementptr i8, i8* %"$msgobj_216", i32 109 - %"$msgobj_v_238" = bitcast i8* %"$msgobj_v_237" to %Uint128* - store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_238" - store i8* %"$msgobj_216", i8** %msg1 + %"$gasrem_348" = load i64, i64* @_gasrem + %"$gascmp_349" = icmp ugt i64 1, %"$gasrem_348" + br i1 %"$gascmp_349", label %"$out_of_gas_350", label %"$have_gas_351" + +"$out_of_gas_350": ; preds = %"$have_gas_346" + call void @_out_of_gas() + br label %"$have_gas_351" + +"$have_gas_351": ; preds = %"$out_of_gas_350", %"$have_gas_346" + %"$consume_352" = sub i64 %"$gasrem_348", 1 + store i64 %"$consume_352", i64* @_gasrem + %"$msgobj_353_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_353_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_353_salloc_load", i64 125) + %"$msgobj_353_salloc" = bitcast i8* %"$msgobj_353_salloc_salloc" to [125 x i8]* + %"$msgobj_353" = bitcast [125 x i8]* %"$msgobj_353_salloc" to i8* + store i8 3, i8* %"$msgobj_353" + %"$msgobj_fname_355" = getelementptr i8, i8* %"$msgobj_353", i32 1 + %"$msgobj_fname_356" = bitcast i8* %"$msgobj_fname_355" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_354", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_356" + %"$msgobj_td_357" = getelementptr i8, i8* %"$msgobj_353", i32 17 + %"$msgobj_td_358" = bitcast i8* %"$msgobj_td_357" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ** %"$msgobj_td_358" + %"$msgobj_v_360" = getelementptr i8, i8* %"$msgobj_353", i32 25 + %"$msgobj_v_361" = bitcast i8* %"$msgobj_v_360" to %String* + store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_359", i32 0, i32 0), i32 0 }, %String* %"$msgobj_v_361" + %"$msgobj_fname_363" = getelementptr i8, i8* %"$msgobj_353", i32 41 + %"$msgobj_fname_364" = bitcast i8* %"$msgobj_fname_363" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_362", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_364" + %"$msgobj_td_365" = getelementptr i8, i8* %"$msgobj_353", i32 57 + %"$msgobj_td_366" = bitcast i8* %"$msgobj_td_365" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_35", %_TyDescrTy_Typ** %"$msgobj_td_366" + %"$msgobj_v_367" = getelementptr i8, i8* %"$msgobj_353", i32 65 + %"$msgobj_v_368" = bitcast i8* %"$msgobj_v_367" to [20 x i8]* + store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_368" + %"$msgobj_fname_370" = getelementptr i8, i8* %"$msgobj_353", i32 85 + %"$msgobj_fname_371" = bitcast i8* %"$msgobj_fname_370" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_369", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_371" + %"$msgobj_td_372" = getelementptr i8, i8* %"$msgobj_353", i32 101 + %"$msgobj_td_373" = bitcast i8* %"$msgobj_td_372" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_17", %_TyDescrTy_Typ** %"$msgobj_td_373" + %"$msgobj_v_374" = getelementptr i8, i8* %"$msgobj_353", i32 109 + %"$msgobj_v_375" = bitcast i8* %"$msgobj_v_374" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_375" + store i8* %"$msgobj_353", i8** %msg1 + %"$gasrem_377" = load i64, i64* @_gasrem + %"$gascmp_378" = icmp ugt i64 1, %"$gasrem_377" + br i1 %"$gascmp_378", label %"$out_of_gas_379", label %"$have_gas_380" + +"$out_of_gas_379": ; preds = %"$have_gas_351" + call void @_out_of_gas() + br label %"$have_gas_380" + +"$have_gas_380": ; preds = %"$out_of_gas_379", %"$have_gas_351" + %"$consume_381" = sub i64 %"$gasrem_377", 1 + store i64 %"$consume_381", i64* @_gasrem %msg2 = alloca i8* - %"$msgobj_240_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_240_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_240_salloc_load", i64 125) - %"$msgobj_240_salloc" = bitcast i8* %"$msgobj_240_salloc_salloc" to [125 x i8]* - %"$msgobj_240" = bitcast [125 x i8]* %"$msgobj_240_salloc" to i8* - store i8 3, i8* %"$msgobj_240" - %"$msgobj_fname_242" = getelementptr i8, i8* %"$msgobj_240", i32 1 - %"$msgobj_fname_243" = bitcast i8* %"$msgobj_fname_242" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_241", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_243" - %"$msgobj_td_244" = getelementptr i8, i8* %"$msgobj_240", i32 17 - %"$msgobj_td_245" = bitcast i8* %"$msgobj_td_244" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ** %"$msgobj_td_245" - %"$msgobj_v_247" = getelementptr i8, i8* %"$msgobj_240", i32 25 - %"$msgobj_v_248" = bitcast i8* %"$msgobj_v_247" to %String* - store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_246", i32 0, i32 0), i32 0 }, %String* %"$msgobj_v_248" - %"$msgobj_fname_250" = getelementptr i8, i8* %"$msgobj_240", i32 41 - %"$msgobj_fname_251" = bitcast i8* %"$msgobj_fname_250" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_249", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_251" - %"$msgobj_td_252" = getelementptr i8, i8* %"$msgobj_240", i32 57 - %"$msgobj_td_253" = bitcast i8* %"$msgobj_td_252" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_35", %_TyDescrTy_Typ** %"$msgobj_td_253" - %"$msgobj_v_254" = getelementptr i8, i8* %"$msgobj_240", i32 65 - %"$msgobj_v_255" = bitcast i8* %"$msgobj_v_254" to [20 x i8]* - store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_255" - %"$msgobj_fname_257" = getelementptr i8, i8* %"$msgobj_240", i32 85 - %"$msgobj_fname_258" = bitcast i8* %"$msgobj_fname_257" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_256", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_258" - %"$msgobj_td_259" = getelementptr i8, i8* %"$msgobj_240", i32 101 - %"$msgobj_td_260" = bitcast i8* %"$msgobj_td_259" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Uint128_17", %_TyDescrTy_Typ** %"$msgobj_td_260" - %"$msgobj_v_261" = getelementptr i8, i8* %"$msgobj_240", i32 109 - %"$msgobj_v_262" = bitcast i8* %"$msgobj_v_261" to %Uint128* - store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_262" - store i8* %"$msgobj_240", i8** %msg2 + %"$gasrem_382" = load i64, i64* @_gasrem + %"$gascmp_383" = icmp ugt i64 1, %"$gasrem_382" + br i1 %"$gascmp_383", label %"$out_of_gas_384", label %"$have_gas_385" + +"$out_of_gas_384": ; preds = %"$have_gas_380" + call void @_out_of_gas() + br label %"$have_gas_385" + +"$have_gas_385": ; preds = %"$out_of_gas_384", %"$have_gas_380" + %"$consume_386" = sub i64 %"$gasrem_382", 1 + store i64 %"$consume_386", i64* @_gasrem + %"$msgobj_387_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_387_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_387_salloc_load", i64 125) + %"$msgobj_387_salloc" = bitcast i8* %"$msgobj_387_salloc_salloc" to [125 x i8]* + %"$msgobj_387" = bitcast [125 x i8]* %"$msgobj_387_salloc" to i8* + store i8 3, i8* %"$msgobj_387" + %"$msgobj_fname_389" = getelementptr i8, i8* %"$msgobj_387", i32 1 + %"$msgobj_fname_390" = bitcast i8* %"$msgobj_fname_389" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_388", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_390" + %"$msgobj_td_391" = getelementptr i8, i8* %"$msgobj_387", i32 17 + %"$msgobj_td_392" = bitcast i8* %"$msgobj_td_391" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ** %"$msgobj_td_392" + %"$msgobj_v_394" = getelementptr i8, i8* %"$msgobj_387", i32 25 + %"$msgobj_v_395" = bitcast i8* %"$msgobj_v_394" to %String* + store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_393", i32 0, i32 0), i32 0 }, %String* %"$msgobj_v_395" + %"$msgobj_fname_397" = getelementptr i8, i8* %"$msgobj_387", i32 41 + %"$msgobj_fname_398" = bitcast i8* %"$msgobj_fname_397" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_396", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_398" + %"$msgobj_td_399" = getelementptr i8, i8* %"$msgobj_387", i32 57 + %"$msgobj_td_400" = bitcast i8* %"$msgobj_td_399" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_35", %_TyDescrTy_Typ** %"$msgobj_td_400" + %"$msgobj_v_401" = getelementptr i8, i8* %"$msgobj_387", i32 65 + %"$msgobj_v_402" = bitcast i8* %"$msgobj_v_401" to [20 x i8]* + store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_402" + %"$msgobj_fname_404" = getelementptr i8, i8* %"$msgobj_387", i32 85 + %"$msgobj_fname_405" = bitcast i8* %"$msgobj_fname_404" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_403", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_405" + %"$msgobj_td_406" = getelementptr i8, i8* %"$msgobj_387", i32 101 + %"$msgobj_td_407" = bitcast i8* %"$msgobj_td_406" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_17", %_TyDescrTy_Typ** %"$msgobj_td_407" + %"$msgobj_v_408" = getelementptr i8, i8* %"$msgobj_387", i32 109 + %"$msgobj_v_409" = bitcast i8* %"$msgobj_v_408" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_409" + store i8* %"$msgobj_387", i8** %msg2 + %"$gasrem_411" = load i64, i64* @_gasrem + %"$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_385" + call void @_out_of_gas() + br label %"$have_gas_414" + +"$have_gas_414": ; preds = %"$out_of_gas_413", %"$have_gas_385" + %"$consume_415" = sub i64 %"$gasrem_411", 1 + store i64 %"$consume_415", i64* @_gasrem %msgs1 = alloca %TName_List_Message* + %"$gasrem_416" = load i64, i64* @_gasrem + %"$gascmp_417" = icmp ugt i64 1, %"$gasrem_416" + br i1 %"$gascmp_417", label %"$out_of_gas_418", label %"$have_gas_419" + +"$out_of_gas_418": ; preds = %"$have_gas_414" + call void @_out_of_gas() + br label %"$have_gas_419" + +"$have_gas_419": ; preds = %"$out_of_gas_418", %"$have_gas_414" + %"$consume_420" = sub i64 %"$gasrem_416", 1 + store i64 %"$consume_420", i64* @_gasrem %"$one_msg_0" = alloca %TName_List_Message* - %"$one_msg_264" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @one_msg - %"$one_msg_fptr_265" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_264", 0 - %"$one_msg_envptr_266" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_264", 1 - %"$msg1_267" = load i8*, i8** %msg1 - %"$one_msg_call_268" = call %TName_List_Message* %"$one_msg_fptr_265"(i8* %"$one_msg_envptr_266", i8* %"$msg1_267") - store %TName_List_Message* %"$one_msg_call_268", %TName_List_Message** %"$one_msg_0" - %"$$one_msg_0_269" = load %TName_List_Message*, %TName_List_Message** %"$one_msg_0" - store %TName_List_Message* %"$$one_msg_0_269", %TName_List_Message** %msgs1 + %"$one_msg_421" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @one_msg + %"$one_msg_fptr_422" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_421", 0 + %"$one_msg_envptr_423" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_421", 1 + %"$msg1_424" = load i8*, i8** %msg1 + %"$one_msg_call_425" = call %TName_List_Message* %"$one_msg_fptr_422"(i8* %"$one_msg_envptr_423", i8* %"$msg1_424") + store %TName_List_Message* %"$one_msg_call_425", %TName_List_Message** %"$one_msg_0" + %"$$one_msg_0_426" = load %TName_List_Message*, %TName_List_Message** %"$one_msg_0" + store %TName_List_Message* %"$$one_msg_0_426", %TName_List_Message** %msgs1 + %"$gasrem_427" = load i64, i64* @_gasrem + %"$gascmp_428" = icmp ugt i64 1, %"$gasrem_427" + br i1 %"$gascmp_428", label %"$out_of_gas_429", label %"$have_gas_430" + +"$out_of_gas_429": ; preds = %"$have_gas_419" + call void @_out_of_gas() + br label %"$have_gas_430" + +"$have_gas_430": ; preds = %"$out_of_gas_429", %"$have_gas_419" + %"$consume_431" = sub i64 %"$gasrem_427", 1 + store i64 %"$consume_431", i64* @_gasrem %msgs2 = alloca %TName_List_Message* - %"$msg2_270" = load i8*, i8** %msg2 - %"$msgs1_271" = load %TName_List_Message*, %TName_List_Message** %msgs1 - %"$adtval_272_load" = load i8*, i8** @_execptr - %"$adtval_272_salloc" = call i8* @_salloc(i8* %"$adtval_272_load", i64 17) - %"$adtval_272" = bitcast i8* %"$adtval_272_salloc" to %CName_Cons_Message* - %"$adtgep_273" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_272", i32 0, i32 0 - store i8 0, i8* %"$adtgep_273" - %"$adtgep_274" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_272", i32 0, i32 1 - store i8* %"$msg2_270", i8** %"$adtgep_274" - %"$adtgep_275" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_272", i32 0, i32 2 - store %TName_List_Message* %"$msgs1_271", %TName_List_Message** %"$adtgep_275" - %"$adtptr_276" = bitcast %CName_Cons_Message* %"$adtval_272" to %TName_List_Message* - store %TName_List_Message* %"$adtptr_276", %TName_List_Message** %msgs2 - %"$execptr_load_277" = load i8*, i8** @_execptr - %"$msgs2_278" = load %TName_List_Message*, %TName_List_Message** %msgs2 - call void @_send(i8* %"$execptr_load_277", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_42", %TName_List_Message* %"$msgs2_278") + %"$gasrem_432" = load i64, i64* @_gasrem + %"$gascmp_433" = icmp ugt i64 1, %"$gasrem_432" + br i1 %"$gascmp_433", label %"$out_of_gas_434", label %"$have_gas_435" + +"$out_of_gas_434": ; preds = %"$have_gas_430" + call void @_out_of_gas() + br label %"$have_gas_435" + +"$have_gas_435": ; preds = %"$out_of_gas_434", %"$have_gas_430" + %"$consume_436" = sub i64 %"$gasrem_432", 1 + store i64 %"$consume_436", i64* @_gasrem + %"$msg2_437" = load i8*, i8** %msg2 + %"$msgs1_438" = load %TName_List_Message*, %TName_List_Message** %msgs1 + %"$adtval_439_load" = load i8*, i8** @_execptr + %"$adtval_439_salloc" = call i8* @_salloc(i8* %"$adtval_439_load", i64 17) + %"$adtval_439" = bitcast i8* %"$adtval_439_salloc" to %CName_Cons_Message* + %"$adtgep_440" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_439", i32 0, i32 0 + store i8 0, i8* %"$adtgep_440" + %"$adtgep_441" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_439", i32 0, i32 1 + store i8* %"$msg2_437", i8** %"$adtgep_441" + %"$adtgep_442" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_439", i32 0, i32 2 + store %TName_List_Message* %"$msgs1_438", %TName_List_Message** %"$adtgep_442" + %"$adtptr_443" = bitcast %CName_Cons_Message* %"$adtval_439" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_443", %TName_List_Message** %msgs2 + %"$msgs2_444" = load %TName_List_Message*, %TName_List_Message** %msgs2 + %"$$msgs2_444_445" = bitcast %TName_List_Message* %"$msgs2_444" to i8* + %"$_literal_cost_call_446" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_42", i8* %"$$msgs2_444_445") + %"$gasrem_447" = load i64, i64* @_gasrem + %"$gascmp_448" = icmp ugt i64 %"$_literal_cost_call_446", %"$gasrem_447" + br i1 %"$gascmp_448", label %"$out_of_gas_449", label %"$have_gas_450" + +"$out_of_gas_449": ; preds = %"$have_gas_435" + call void @_out_of_gas() + br label %"$have_gas_450" + +"$have_gas_450": ; preds = %"$out_of_gas_449", %"$have_gas_435" + %"$consume_451" = sub i64 %"$gasrem_447", %"$_literal_cost_call_446" + store i64 %"$consume_451", i64* @_gasrem + %"$execptr_load_452" = load i8*, i8** @_execptr + %"$msgs2_453" = load %TName_List_Message*, %TName_List_Message** %msgs2 + call void @_send(i8* %"$execptr_load_452", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_42", %TName_List_Message* %"$msgs2_453") ret void } @@ -500,163 +864,233 @@ declare void @_send(i8*, %_TyDescrTy_Typ*, %TName_List_Message*) define void @multipleMsgs(i8* %0) { entry: - %"$_amount_280" = getelementptr i8, i8* %0, i32 0 - %"$_amount_281" = bitcast i8* %"$_amount_280" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_281" - %"$_sender_282" = getelementptr i8, i8* %0, i32 16 - %"$_sender_283" = bitcast i8* %"$_sender_282" to [20 x i8]* - call void @"$multipleMsgs_214"(%Uint128 %_amount, [20 x i8]* %"$_sender_283") + %"$_amount_455" = getelementptr i8, i8* %0, i32 0 + %"$_amount_456" = bitcast i8* %"$_amount_455" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_456" + %"$_sender_457" = getelementptr i8, i8* %0, i32 16 + %"$_sender_458" = bitcast i8* %"$_sender_457" to [20 x i8]* + call void @"$multipleMsgs_341"(%Uint128 %_amount, [20 x i8]* %"$_sender_458") ret void } -define internal void @"$contrAddr_284"(%Uint128 %_amount, [20 x i8]* %"$_sender_285") { +define internal void @"$contrAddr_459"(%Uint128 %_amount, [20 x i8]* %"$_sender_460") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_285" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_460" + %"$gasrem_461" = load i64, i64* @_gasrem + %"$gascmp_462" = icmp ugt i64 1, %"$gasrem_461" + br i1 %"$gascmp_462", label %"$out_of_gas_463", label %"$have_gas_464" + +"$out_of_gas_463": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_464" + +"$have_gas_464": ; preds = %"$out_of_gas_463", %entry + %"$consume_465" = sub i64 %"$gasrem_461", 1 + store i64 %"$consume_465", i64* @_gasrem %msg1 = alloca i8* - %"$msgobj_286_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_286_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_286_salloc_load", i64 85) - %"$msgobj_286_salloc" = bitcast i8* %"$msgobj_286_salloc_salloc" to [85 x i8]* - %"$msgobj_286" = bitcast [85 x i8]* %"$msgobj_286_salloc" to i8* - store i8 2, i8* %"$msgobj_286" - %"$msgobj_fname_288" = getelementptr i8, i8* %"$msgobj_286", i32 1 - %"$msgobj_fname_289" = bitcast i8* %"$msgobj_fname_288" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_287", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_289" - %"$msgobj_td_290" = getelementptr i8, i8* %"$msgobj_286", i32 17 - %"$msgobj_td_291" = bitcast i8* %"$msgobj_td_290" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ** %"$msgobj_td_291" - %"$msgobj_v_293" = getelementptr i8, i8* %"$msgobj_286", i32 25 - %"$msgobj_v_294" = bitcast i8* %"$msgobj_v_293" to %String* - store %String { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stringlit_292", i32 0, i32 0), i32 15 }, %String* %"$msgobj_v_294" - %"$msgobj_fname_296" = getelementptr i8, i8* %"$msgobj_286", i32 41 - %"$msgobj_fname_297" = bitcast i8* %"$msgobj_fname_296" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_295", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_297" - %"$msgobj_td_298" = getelementptr i8, i8* %"$msgobj_286", i32 57 - %"$msgobj_td_299" = bitcast i8* %"$msgobj_td_298" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_35", %_TyDescrTy_Typ** %"$msgobj_td_299" - %"$_this_address_300" = load [20 x i8], [20 x i8]* @_this_address - %"$msgobj_v_301" = getelementptr i8, i8* %"$msgobj_286", i32 65 - %"$msgobj_v_302" = bitcast i8* %"$msgobj_v_301" to [20 x i8]* - store [20 x i8] %"$_this_address_300", [20 x i8]* %"$msgobj_v_302" - store i8* %"$msgobj_286", i8** %msg1 - %"$execptr_load_304" = load i8*, i8** @_execptr - %"$msg1_305" = load i8*, i8** %msg1 - call void @_event(i8* %"$execptr_load_304", %_TyDescrTy_Typ* @"$TyDescr_Event_29", i8* %"$msg1_305") + %"$gasrem_466" = load i64, i64* @_gasrem + %"$gascmp_467" = icmp ugt i64 1, %"$gasrem_466" + br i1 %"$gascmp_467", label %"$out_of_gas_468", label %"$have_gas_469" + +"$out_of_gas_468": ; preds = %"$have_gas_464" + call void @_out_of_gas() + br label %"$have_gas_469" + +"$have_gas_469": ; preds = %"$out_of_gas_468", %"$have_gas_464" + %"$consume_470" = sub i64 %"$gasrem_466", 1 + store i64 %"$consume_470", i64* @_gasrem + %"$msgobj_471_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_471_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_471_salloc_load", i64 85) + %"$msgobj_471_salloc" = bitcast i8* %"$msgobj_471_salloc_salloc" to [85 x i8]* + %"$msgobj_471" = bitcast [85 x i8]* %"$msgobj_471_salloc" to i8* + store i8 2, i8* %"$msgobj_471" + %"$msgobj_fname_473" = getelementptr i8, i8* %"$msgobj_471", i32 1 + %"$msgobj_fname_474" = bitcast i8* %"$msgobj_fname_473" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_472", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_474" + %"$msgobj_td_475" = getelementptr i8, i8* %"$msgobj_471", i32 17 + %"$msgobj_td_476" = bitcast i8* %"$msgobj_td_475" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ** %"$msgobj_td_476" + %"$msgobj_v_478" = getelementptr i8, i8* %"$msgobj_471", i32 25 + %"$msgobj_v_479" = bitcast i8* %"$msgobj_v_478" to %String* + store %String { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stringlit_477", i32 0, i32 0), i32 15 }, %String* %"$msgobj_v_479" + %"$msgobj_fname_481" = getelementptr i8, i8* %"$msgobj_471", i32 41 + %"$msgobj_fname_482" = bitcast i8* %"$msgobj_fname_481" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_480", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_482" + %"$msgobj_td_483" = getelementptr i8, i8* %"$msgobj_471", i32 57 + %"$msgobj_td_484" = bitcast i8* %"$msgobj_td_483" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_35", %_TyDescrTy_Typ** %"$msgobj_td_484" + %"$_this_address_485" = load [20 x i8], [20 x i8]* @_this_address + %"$msgobj_v_486" = getelementptr i8, i8* %"$msgobj_471", i32 65 + %"$msgobj_v_487" = bitcast i8* %"$msgobj_v_486" to [20 x i8]* + store [20 x i8] %"$_this_address_485", [20 x i8]* %"$msgobj_v_487" + store i8* %"$msgobj_471", i8** %msg1 + %"$msg1_489" = load i8*, i8** %msg1 + %"$_literal_cost_call_491" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_29", i8* %"$msg1_489") + %"$gasrem_492" = load i64, i64* @_gasrem + %"$gascmp_493" = icmp ugt i64 %"$_literal_cost_call_491", %"$gasrem_492" + br i1 %"$gascmp_493", label %"$out_of_gas_494", label %"$have_gas_495" + +"$out_of_gas_494": ; preds = %"$have_gas_469" + call void @_out_of_gas() + br label %"$have_gas_495" + +"$have_gas_495": ; preds = %"$out_of_gas_494", %"$have_gas_469" + %"$consume_496" = sub i64 %"$gasrem_492", %"$_literal_cost_call_491" + store i64 %"$consume_496", i64* @_gasrem + %"$execptr_load_497" = load i8*, i8** @_execptr + %"$msg1_498" = load i8*, i8** %msg1 + call void @_event(i8* %"$execptr_load_497", %_TyDescrTy_Typ* @"$TyDescr_Event_29", i8* %"$msg1_498") ret void } define void @contrAddr(i8* %0) { entry: - %"$_amount_307" = getelementptr i8, i8* %0, i32 0 - %"$_amount_308" = bitcast i8* %"$_amount_307" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_308" - %"$_sender_309" = getelementptr i8, i8* %0, i32 16 - %"$_sender_310" = bitcast i8* %"$_sender_309" to [20 x i8]* - call void @"$contrAddr_284"(%Uint128 %_amount, [20 x i8]* %"$_sender_310") + %"$_amount_500" = getelementptr i8, i8* %0, i32 0 + %"$_amount_501" = bitcast i8* %"$_amount_500" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_501" + %"$_sender_502" = getelementptr i8, i8* %0, i32 16 + %"$_sender_503" = bitcast i8* %"$_sender_502" to [20 x i8]* + call void @"$contrAddr_459"(%Uint128 %_amount, [20 x i8]* %"$_sender_503") ret void } -define internal void @"$printContrParams_311"(%Uint128 %_amount, [20 x i8]* %"$_sender_312") { +define internal void @"$printContrParams_504"(%Uint128 %_amount, [20 x i8]* %"$_sender_505") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_312" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_505" + %"$gasrem_506" = load i64, i64* @_gasrem + %"$gascmp_507" = icmp ugt i64 1, %"$gasrem_506" + br i1 %"$gascmp_507", label %"$out_of_gas_508", label %"$have_gas_509" + +"$out_of_gas_508": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_509" + +"$have_gas_509": ; preds = %"$out_of_gas_508", %entry + %"$consume_510" = sub i64 %"$gasrem_506", 1 + store i64 %"$consume_510", i64* @_gasrem %e = alloca i8* - %"$msgobj_313_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_313_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_313_salloc_load", i64 313) - %"$msgobj_313_salloc" = bitcast i8* %"$msgobj_313_salloc_salloc" to [313 x i8]* - %"$msgobj_313" = bitcast [313 x i8]* %"$msgobj_313_salloc" to i8* - store i8 8, i8* %"$msgobj_313" - %"$msgobj_fname_315" = getelementptr i8, i8* %"$msgobj_313", i32 1 - %"$msgobj_fname_316" = bitcast i8* %"$msgobj_fname_315" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_314", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_316" - %"$msgobj_td_317" = getelementptr i8, i8* %"$msgobj_313", i32 17 - %"$msgobj_td_318" = bitcast i8* %"$msgobj_td_317" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ** %"$msgobj_td_318" - %"$msgobj_v_320" = getelementptr i8, i8* %"$msgobj_313", i32 25 - %"$msgobj_v_321" = bitcast i8* %"$msgobj_v_320" to %String* - store %String { i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$stringlit_319", i32 0, i32 0), i32 14 }, %String* %"$msgobj_v_321" - %"$msgobj_fname_323" = getelementptr i8, i8* %"$msgobj_313", i32 41 - %"$msgobj_fname_324" = bitcast i8* %"$msgobj_fname_323" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_322", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_324" - %"$msgobj_td_325" = getelementptr i8, i8* %"$msgobj_313", i32 57 - %"$msgobj_td_326" = bitcast i8* %"$msgobj_td_325" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_35", %_TyDescrTy_Typ** %"$msgobj_td_326" - %"$owner_327" = load [20 x i8], [20 x i8]* @owner - %"$msgobj_v_328" = getelementptr i8, i8* %"$msgobj_313", i32 65 - %"$msgobj_v_329" = bitcast i8* %"$msgobj_v_328" to [20 x i8]* - store [20 x i8] %"$owner_327", [20 x i8]* %"$msgobj_v_329" - %"$msgobj_fname_331" = getelementptr i8, i8* %"$msgobj_313", i32 85 - %"$msgobj_fname_332" = bitcast i8* %"$msgobj_fname_331" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_330", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_332" - %"$msgobj_td_333" = getelementptr i8, i8* %"$msgobj_313", i32 101 - %"$msgobj_td_334" = bitcast i8* %"$msgobj_td_333" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ** %"$msgobj_td_334" - %"$name_335" = load %String, %String* @name - %"$msgobj_v_336" = getelementptr i8, i8* %"$msgobj_313", i32 109 - %"$msgobj_v_337" = bitcast i8* %"$msgobj_v_336" to %String* - store %String %"$name_335", %String* %"$msgobj_v_337" - %"$msgobj_fname_339" = getelementptr i8, i8* %"$msgobj_313", i32 125 - %"$msgobj_fname_340" = bitcast i8* %"$msgobj_fname_339" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_338", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_340" - %"$msgobj_td_341" = getelementptr i8, i8* %"$msgobj_313", i32 141 - %"$msgobj_td_342" = bitcast i8* %"$msgobj_td_341" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Uint256_21", %_TyDescrTy_Typ** %"$msgobj_td_342" - %"$uint256_343" = load %Uint256, %Uint256* @uint256 - %"$msgobj_v_344" = getelementptr i8, i8* %"$msgobj_313", i32 149 - %"$msgobj_v_345" = bitcast i8* %"$msgobj_v_344" to %Uint256* - store %Uint256 %"$uint256_343", %Uint256* %"$msgobj_v_345" - %"$msgobj_fname_347" = getelementptr i8, i8* %"$msgobj_313", i32 181 - %"$msgobj_fname_348" = bitcast i8* %"$msgobj_fname_347" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_346", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_348" - %"$msgobj_td_349" = getelementptr i8, i8* %"$msgobj_313", i32 197 - %"$msgobj_td_350" = bitcast i8* %"$msgobj_td_349" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Int32_7", %_TyDescrTy_Typ** %"$msgobj_td_350" - %"$int32_351" = load %Int32, %Int32* @int32 - %"$msgobj_v_352" = getelementptr i8, i8* %"$msgobj_313", i32 205 - %"$msgobj_v_353" = bitcast i8* %"$msgobj_v_352" to %Int32* - store %Int32 %"$int32_351", %Int32* %"$msgobj_v_353" - %"$msgobj_fname_355" = getelementptr i8, i8* %"$msgobj_313", i32 209 - %"$msgobj_fname_356" = bitcast i8* %"$msgobj_fname_355" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_354", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_356" - %"$msgobj_td_357" = getelementptr i8, i8* %"$msgobj_313", i32 225 - %"$msgobj_td_358" = bitcast i8* %"$msgobj_td_357" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr_33", %_TyDescrTy_Typ** %"$msgobj_td_358" - %"$bstr_359" = load %Bystr, %Bystr* @bstr - %"$msgobj_v_360" = getelementptr i8, i8* %"$msgobj_313", i32 233 - %"$msgobj_v_361" = bitcast i8* %"$msgobj_v_360" to %Bystr* - store %Bystr %"$bstr_359", %Bystr* %"$msgobj_v_361" - %"$msgobj_fname_363" = getelementptr i8, i8* %"$msgobj_313", i32 249 - %"$msgobj_fname_364" = bitcast i8* %"$msgobj_fname_363" to %String* - store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_362", i32 0, i32 0), i32 9 }, %String* %"$msgobj_fname_364" - %"$msgobj_td_365" = getelementptr i8, i8* %"$msgobj_313", i32 265 - %"$msgobj_td_366" = bitcast i8* %"$msgobj_td_365" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_41", %_TyDescrTy_Typ** %"$msgobj_td_366" - %"$all_names_367" = load %TName_List_String*, %TName_List_String** @all_names - %"$msgobj_v_368" = getelementptr i8, i8* %"$msgobj_313", i32 273 - %"$msgobj_v_369" = bitcast i8* %"$msgobj_v_368" to %TName_List_String** - store %TName_List_String* %"$all_names_367", %TName_List_String** %"$msgobj_v_369" - %"$msgobj_fname_371" = getelementptr i8, i8* %"$msgobj_313", i32 281 - %"$msgobj_fname_372" = bitcast i8* %"$msgobj_fname_371" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_370", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_372" - %"$msgobj_td_373" = getelementptr i8, i8* %"$msgobj_313", i32 297 - %"$msgobj_td_374" = bitcast i8* %"$msgobj_td_373" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_Int128_String_40", %_TyDescrTy_Typ** %"$msgobj_td_374" - %"$pear_375" = load %TName_Pair_Int128_String*, %TName_Pair_Int128_String** @pear - %"$msgobj_v_376" = getelementptr i8, i8* %"$msgobj_313", i32 305 - %"$msgobj_v_377" = bitcast i8* %"$msgobj_v_376" to %TName_Pair_Int128_String** - store %TName_Pair_Int128_String* %"$pear_375", %TName_Pair_Int128_String** %"$msgobj_v_377" - store i8* %"$msgobj_313", i8** %e - %"$execptr_load_379" = load i8*, i8** @_execptr - %"$e_380" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_379", %_TyDescrTy_Typ* @"$TyDescr_Event_29", i8* %"$e_380") + %"$gasrem_511" = load i64, i64* @_gasrem + %"$gascmp_512" = icmp ugt i64 1, %"$gasrem_511" + br i1 %"$gascmp_512", label %"$out_of_gas_513", label %"$have_gas_514" + +"$out_of_gas_513": ; preds = %"$have_gas_509" + call void @_out_of_gas() + br label %"$have_gas_514" + +"$have_gas_514": ; preds = %"$out_of_gas_513", %"$have_gas_509" + %"$consume_515" = sub i64 %"$gasrem_511", 1 + store i64 %"$consume_515", i64* @_gasrem + %"$msgobj_516_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_516_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_516_salloc_load", i64 313) + %"$msgobj_516_salloc" = bitcast i8* %"$msgobj_516_salloc_salloc" to [313 x i8]* + %"$msgobj_516" = bitcast [313 x i8]* %"$msgobj_516_salloc" to i8* + store i8 8, i8* %"$msgobj_516" + %"$msgobj_fname_518" = getelementptr i8, i8* %"$msgobj_516", i32 1 + %"$msgobj_fname_519" = bitcast i8* %"$msgobj_fname_518" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_517", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_519" + %"$msgobj_td_520" = getelementptr i8, i8* %"$msgobj_516", i32 17 + %"$msgobj_td_521" = bitcast i8* %"$msgobj_td_520" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ** %"$msgobj_td_521" + %"$msgobj_v_523" = getelementptr i8, i8* %"$msgobj_516", i32 25 + %"$msgobj_v_524" = bitcast i8* %"$msgobj_v_523" to %String* + store %String { i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$stringlit_522", i32 0, i32 0), i32 14 }, %String* %"$msgobj_v_524" + %"$msgobj_fname_526" = getelementptr i8, i8* %"$msgobj_516", i32 41 + %"$msgobj_fname_527" = bitcast i8* %"$msgobj_fname_526" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_525", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_527" + %"$msgobj_td_528" = getelementptr i8, i8* %"$msgobj_516", i32 57 + %"$msgobj_td_529" = bitcast i8* %"$msgobj_td_528" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_35", %_TyDescrTy_Typ** %"$msgobj_td_529" + %"$owner_530" = load [20 x i8], [20 x i8]* @owner + %"$msgobj_v_531" = getelementptr i8, i8* %"$msgobj_516", i32 65 + %"$msgobj_v_532" = bitcast i8* %"$msgobj_v_531" to [20 x i8]* + store [20 x i8] %"$owner_530", [20 x i8]* %"$msgobj_v_532" + %"$msgobj_fname_534" = getelementptr i8, i8* %"$msgobj_516", i32 85 + %"$msgobj_fname_535" = bitcast i8* %"$msgobj_fname_534" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_533", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_535" + %"$msgobj_td_536" = getelementptr i8, i8* %"$msgobj_516", i32 101 + %"$msgobj_td_537" = bitcast i8* %"$msgobj_td_536" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_23", %_TyDescrTy_Typ** %"$msgobj_td_537" + %"$name_538" = load %String, %String* @name + %"$msgobj_v_539" = getelementptr i8, i8* %"$msgobj_516", i32 109 + %"$msgobj_v_540" = bitcast i8* %"$msgobj_v_539" to %String* + store %String %"$name_538", %String* %"$msgobj_v_540" + %"$msgobj_fname_542" = getelementptr i8, i8* %"$msgobj_516", i32 125 + %"$msgobj_fname_543" = bitcast i8* %"$msgobj_fname_542" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_541", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_543" + %"$msgobj_td_544" = getelementptr i8, i8* %"$msgobj_516", i32 141 + %"$msgobj_td_545" = bitcast i8* %"$msgobj_td_544" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint256_21", %_TyDescrTy_Typ** %"$msgobj_td_545" + %"$uint256_546" = load %Uint256, %Uint256* @uint256 + %"$msgobj_v_547" = getelementptr i8, i8* %"$msgobj_516", i32 149 + %"$msgobj_v_548" = bitcast i8* %"$msgobj_v_547" to %Uint256* + store %Uint256 %"$uint256_546", %Uint256* %"$msgobj_v_548" + %"$msgobj_fname_550" = getelementptr i8, i8* %"$msgobj_516", i32 181 + %"$msgobj_fname_551" = bitcast i8* %"$msgobj_fname_550" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_549", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_551" + %"$msgobj_td_552" = getelementptr i8, i8* %"$msgobj_516", i32 197 + %"$msgobj_td_553" = bitcast i8* %"$msgobj_td_552" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Int32_7", %_TyDescrTy_Typ** %"$msgobj_td_553" + %"$int32_554" = load %Int32, %Int32* @int32 + %"$msgobj_v_555" = getelementptr i8, i8* %"$msgobj_516", i32 205 + %"$msgobj_v_556" = bitcast i8* %"$msgobj_v_555" to %Int32* + store %Int32 %"$int32_554", %Int32* %"$msgobj_v_556" + %"$msgobj_fname_558" = getelementptr i8, i8* %"$msgobj_516", i32 209 + %"$msgobj_fname_559" = bitcast i8* %"$msgobj_fname_558" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_557", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_559" + %"$msgobj_td_560" = getelementptr i8, i8* %"$msgobj_516", i32 225 + %"$msgobj_td_561" = bitcast i8* %"$msgobj_td_560" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr_33", %_TyDescrTy_Typ** %"$msgobj_td_561" + %"$bstr_562" = load %Bystr, %Bystr* @bstr + %"$msgobj_v_563" = getelementptr i8, i8* %"$msgobj_516", i32 233 + %"$msgobj_v_564" = bitcast i8* %"$msgobj_v_563" to %Bystr* + store %Bystr %"$bstr_562", %Bystr* %"$msgobj_v_564" + %"$msgobj_fname_566" = getelementptr i8, i8* %"$msgobj_516", i32 249 + %"$msgobj_fname_567" = bitcast i8* %"$msgobj_fname_566" to %String* + store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_565", i32 0, i32 0), i32 9 }, %String* %"$msgobj_fname_567" + %"$msgobj_td_568" = getelementptr i8, i8* %"$msgobj_516", i32 265 + %"$msgobj_td_569" = bitcast i8* %"$msgobj_td_568" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_41", %_TyDescrTy_Typ** %"$msgobj_td_569" + %"$all_names_570" = load %TName_List_String*, %TName_List_String** @all_names + %"$msgobj_v_571" = getelementptr i8, i8* %"$msgobj_516", i32 273 + %"$msgobj_v_572" = bitcast i8* %"$msgobj_v_571" to %TName_List_String** + store %TName_List_String* %"$all_names_570", %TName_List_String** %"$msgobj_v_572" + %"$msgobj_fname_574" = getelementptr i8, i8* %"$msgobj_516", i32 281 + %"$msgobj_fname_575" = bitcast i8* %"$msgobj_fname_574" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_573", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_575" + %"$msgobj_td_576" = getelementptr i8, i8* %"$msgobj_516", i32 297 + %"$msgobj_td_577" = bitcast i8* %"$msgobj_td_576" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_Int128_String_40", %_TyDescrTy_Typ** %"$msgobj_td_577" + %"$pear_578" = load %TName_Pair_Int128_String*, %TName_Pair_Int128_String** @pear + %"$msgobj_v_579" = getelementptr i8, i8* %"$msgobj_516", i32 305 + %"$msgobj_v_580" = bitcast i8* %"$msgobj_v_579" to %TName_Pair_Int128_String** + store %TName_Pair_Int128_String* %"$pear_578", %TName_Pair_Int128_String** %"$msgobj_v_580" + store i8* %"$msgobj_516", i8** %e + %"$e_582" = load i8*, i8** %e + %"$_literal_cost_call_584" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_29", i8* %"$e_582") + %"$gasrem_585" = load i64, i64* @_gasrem + %"$gascmp_586" = icmp ugt i64 %"$_literal_cost_call_584", %"$gasrem_585" + br i1 %"$gascmp_586", label %"$out_of_gas_587", label %"$have_gas_588" + +"$out_of_gas_587": ; preds = %"$have_gas_514" + call void @_out_of_gas() + br label %"$have_gas_588" + +"$have_gas_588": ; preds = %"$out_of_gas_587", %"$have_gas_514" + %"$consume_589" = sub i64 %"$gasrem_585", %"$_literal_cost_call_584" + store i64 %"$consume_589", i64* @_gasrem + %"$execptr_load_590" = load i8*, i8** @_execptr + %"$e_591" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_590", %_TyDescrTy_Typ* @"$TyDescr_Event_29", i8* %"$e_591") ret void } define void @printContrParams(i8* %0) { entry: - %"$_amount_382" = getelementptr i8, i8* %0, i32 0 - %"$_amount_383" = bitcast i8* %"$_amount_382" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_383" - %"$_sender_384" = getelementptr i8, i8* %0, i32 16 - %"$_sender_385" = bitcast i8* %"$_sender_384" to [20 x i8]* - call void @"$printContrParams_311"(%Uint128 %_amount, [20 x i8]* %"$_sender_385") + %"$_amount_593" = getelementptr i8, i8* %0, i32 0 + %"$_amount_594" = bitcast i8* %"$_amount_593" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_594" + %"$_sender_595" = getelementptr i8, i8* %0, i32 16 + %"$_sender_596" = bitcast i8* %"$_sender_595" to [20 x i8]* + call void @"$printContrParams_504"(%Uint128 %_amount, [20 x i8]* %"$_sender_596") ret void } diff --git a/testsuite/contr/helloWorld.output_contrAddr.json b/testsuite/contr/helloWorld.output_contrAddr.json index 809f5557..184ea1e9 100644 --- a/testsuite/contr/helloWorld.output_contrAddr.json +++ b/testsuite/contr/helloWorld.output_contrAddr.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999914", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/helloWorld.output_getHello.json b/testsuite/contr/helloWorld.output_getHello.json index 4783db85..03b1a6d0 100644 --- a/testsuite/contr/helloWorld.output_getHello.json +++ b/testsuite/contr/helloWorld.output_getHello.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999894", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/helloWorld.output_multipleMsgs.json b/testsuite/contr/helloWorld.output_multipleMsgs.json index 3132024e..ec762f48 100644 --- a/testsuite/contr/helloWorld.output_multipleMsgs.json +++ b/testsuite/contr/helloWorld.output_multipleMsgs.json @@ -1,7 +1,7 @@ { "_accepted" : "false", "events" : [], - "gas_remaining" : "10000000", + "gas_remaining" : "9999753", "messages" : [ { "_amount" : "0", diff --git a/testsuite/contr/helloWorld.output_printContrParams.json b/testsuite/contr/helloWorld.output_printContrParams.json index 8b90b2c0..52c9205e 100644 --- a/testsuite/contr/helloWorld.output_printContrParams.json +++ b/testsuite/contr/helloWorld.output_printContrParams.json @@ -57,7 +57,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999680", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/helloWorld.output_setHello_1.json b/testsuite/contr/helloWorld.output_setHello_1.json index 5c43f691..b2897374 100644 --- a/testsuite/contr/helloWorld.output_setHello_1.json +++ b/testsuite/contr/helloWorld.output_setHello_1.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999907", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/helloWorld.output_setHello_2.json b/testsuite/contr/helloWorld.output_setHello_2.json index 2049305c..f2217310 100644 --- a/testsuite/contr/helloWorld.output_setHello_2.json +++ b/testsuite/contr/helloWorld.output_setHello_2.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999927", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/init_output.json b/testsuite/contr/init_output.json index 07164781..2deaf981 100644 --- a/testsuite/contr/init_output.json +++ b/testsuite/contr/init_output.json @@ -1,7 +1,7 @@ { "_accepted" : "false", "events" : [], - "gas_remaining" : "10000000", + "gas_remaining" : "9999994", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/map_corners.init_output.json b/testsuite/contr/map_corners.init_output.json new file mode 100644 index 00000000..2deaf981 --- /dev/null +++ b/testsuite/contr/map_corners.init_output.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999994", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/map_corners_test.ll b/testsuite/contr/map_corners_test.ll index ec5fdbeb..f7a16aee 100644 --- a/testsuite/contr/map_corners_test.ll +++ b/testsuite/contr/map_corners_test.ll @@ -6,19 +6,19 @@ source_filename = "MapCornersTest" 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-pc-linux-gnu" -%"$TyDescrTy_PrimTyp_32" = type { i32, i32 } +%"$TyDescrTy_PrimTyp_31" = type { i32, i32 } %_TyDescrTy_Typ = type { i32, i8* } -%"$TyDescrTy_ADTTyp_64" = type { %TyDescrString, i32, i32, i32, %"$TyDescrTy_ADTTyp_Specl_63"** } +%"$TyDescrTy_ADTTyp_63" = type { %TyDescrString, i32, i32, i32, %"$TyDescrTy_ADTTyp_Specl_62"** } %TyDescrString = type { i8*, i32 } -%"$TyDescrTy_ADTTyp_Specl_63" = type { %_TyDescrTy_Typ**, %"$TyDescrTy_ADTTyp_Constr_65"**, %"$TyDescrTy_ADTTyp_64"* } -%"$TyDescrTy_ADTTyp_Constr_65" = type { %TyDescrString, i32, %_TyDescrTy_Typ** } -%"$TyDescr_MapTyp_70" = type { %_TyDescrTy_Typ*, %_TyDescrTy_Typ* } +%"$TyDescrTy_ADTTyp_Specl_62" = type { %_TyDescrTy_Typ**, %"$TyDescrTy_ADTTyp_Constr_64"**, %"$TyDescrTy_ADTTyp_63"* } +%"$TyDescrTy_ADTTyp_Constr_64" = type { %TyDescrString, i32, %_TyDescrTy_Typ** } +%"$TyDescr_MapTyp_69" = type { %_TyDescrTy_Typ*, %_TyDescrTy_Typ* } %TName_Bool = type { i8, %CName_True*, %CName_False* } %CName_True = type <{ i8 }> %CName_False = type <{ i8 }> %Uint32 = type { i32 } -%"$$fundef_25_env_119" = type { %TName_Bool* } -%"$$fundef_23_env_120" = type {} +%"$$fundef_24_env_118" = type { %TName_Bool* } +%"$$fundef_22_env_119" = type {} %String = type { i8*, i32 } %Map_String_String = type { %String, %String } %"Map_String_Map_(String)_(String)" = type { %String, %Map_String_String* } @@ -36,385 +36,497 @@ target triple = "x86_64-pc-linux-gnu" @_execptr = global i8* null @_gasrem = global i64 0 -@"$TyDescr_Int32_Prim_33" = global %"$TyDescrTy_PrimTyp_32" zeroinitializer -@"$TyDescr_Int32_34" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_32"* @"$TyDescr_Int32_Prim_33" to i8*) } -@"$TyDescr_Uint32_Prim_35" = global %"$TyDescrTy_PrimTyp_32" { i32 1, i32 0 } -@"$TyDescr_Uint32_36" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_32"* @"$TyDescr_Uint32_Prim_35" to i8*) } -@"$TyDescr_Int64_Prim_37" = global %"$TyDescrTy_PrimTyp_32" { i32 0, i32 1 } -@"$TyDescr_Int64_38" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_32"* @"$TyDescr_Int64_Prim_37" to i8*) } -@"$TyDescr_Uint64_Prim_39" = global %"$TyDescrTy_PrimTyp_32" { i32 1, i32 1 } -@"$TyDescr_Uint64_40" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_32"* @"$TyDescr_Uint64_Prim_39" to i8*) } -@"$TyDescr_Int128_Prim_41" = global %"$TyDescrTy_PrimTyp_32" { i32 0, i32 2 } -@"$TyDescr_Int128_42" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_32"* @"$TyDescr_Int128_Prim_41" to i8*) } -@"$TyDescr_Uint128_Prim_43" = global %"$TyDescrTy_PrimTyp_32" { i32 1, i32 2 } -@"$TyDescr_Uint128_44" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_32"* @"$TyDescr_Uint128_Prim_43" to i8*) } -@"$TyDescr_Int256_Prim_45" = global %"$TyDescrTy_PrimTyp_32" { i32 0, i32 3 } -@"$TyDescr_Int256_46" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_32"* @"$TyDescr_Int256_Prim_45" to i8*) } -@"$TyDescr_Uint256_Prim_47" = global %"$TyDescrTy_PrimTyp_32" { i32 1, i32 3 } -@"$TyDescr_Uint256_48" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_32"* @"$TyDescr_Uint256_Prim_47" to i8*) } -@"$TyDescr_String_Prim_49" = global %"$TyDescrTy_PrimTyp_32" { i32 2, i32 0 } -@"$TyDescr_String_50" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_32"* @"$TyDescr_String_Prim_49" to i8*) } -@"$TyDescr_Bnum_Prim_51" = global %"$TyDescrTy_PrimTyp_32" { i32 3, i32 0 } -@"$TyDescr_Bnum_52" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_32"* @"$TyDescr_Bnum_Prim_51" to i8*) } -@"$TyDescr_Message_Prim_53" = global %"$TyDescrTy_PrimTyp_32" { i32 4, i32 0 } -@"$TyDescr_Message_54" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_32"* @"$TyDescr_Message_Prim_53" to i8*) } -@"$TyDescr_Event_Prim_55" = global %"$TyDescrTy_PrimTyp_32" { i32 5, i32 0 } -@"$TyDescr_Event_56" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_32"* @"$TyDescr_Event_Prim_55" to i8*) } -@"$TyDescr_Exception_Prim_57" = global %"$TyDescrTy_PrimTyp_32" { i32 6, i32 0 } -@"$TyDescr_Exception_58" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_32"* @"$TyDescr_Exception_Prim_57" to i8*) } -@"$TyDescr_Bystr_Prim_59" = global %"$TyDescrTy_PrimTyp_32" { i32 7, i32 0 } -@"$TyDescr_Bystr_60" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_32"* @"$TyDescr_Bystr_Prim_59" to i8*) } -@"$TyDescr_Bystr20_Prim_61" = global %"$TyDescrTy_PrimTyp_32" { i32 8, i32 20 } -@"$TyDescr_Bystr20_62" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_32"* @"$TyDescr_Bystr20_Prim_61" to i8*) } -@"$TyDescr_ADT_Option_Map_(String)_(Map_(String)_(String))_66" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_63"* @"$TyDescr_Option_Map_(String)_(Map_(String)_(String))_ADTTyp_Specl_83" to i8*) } -@"$TyDescr_ADT_Option_Map_(String)_(String)_67" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_63"* @"$TyDescr_Option_Map_(String)_(String)_ADTTyp_Specl_92" to i8*) } -@"$TyDescr_ADT_Option_String_68" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_63"* @"$TyDescr_Option_String_ADTTyp_Specl_101" to i8*) } -@"$TyDescr_ADT_Bool_69" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_63"* @"$TyDescr_Bool_ADTTyp_Specl_113" to i8*) } -@"$TyDescr_Map_71" = unnamed_addr constant %_TyDescrTy_Typ { i32 2, i8* bitcast (%"$TyDescr_MapTyp_70"* @"$TyDescr_MapTyp_116" to i8*) } -@"$TyDescr_Map_72" = unnamed_addr constant %_TyDescrTy_Typ { i32 2, i8* bitcast (%"$TyDescr_MapTyp_70"* @"$TyDescr_MapTyp_117" to i8*) } -@"$TyDescr_Map_73" = unnamed_addr constant %_TyDescrTy_Typ { i32 2, i8* bitcast (%"$TyDescr_MapTyp_70"* @"$TyDescr_MapTyp_118" to i8*) } -@"$TyDescr_Option_ADTTyp_74" = unnamed_addr constant %"$TyDescrTy_ADTTyp_64" { %TyDescrString { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$TyDescr_ADT_Option_103", i32 0, i32 0), i32 6 }, i32 1, i32 2, i32 3, %"$TyDescrTy_ADTTyp_Specl_63"** getelementptr inbounds ([3 x %"$TyDescrTy_ADTTyp_Specl_63"*], [3 x %"$TyDescrTy_ADTTyp_Specl_63"*]* @"$TyDescr_Option_ADTTyp_m_specls_102", i32 0, i32 0) } -@"$TyDescr_Option_Some_Map_(String)_(Map_(String)_(String))_Constr_m_args_75" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Map_72"] -@"$TyDescr_ADT_Some_76" = unnamed_addr constant [4 x i8] c"Some" -@"$TyDescr_Option_Some_Map_(String)_(Map_(String)_(String))_ADTTyp_Constr_77" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_65" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Some_76", i32 0, i32 0), i32 4 }, i32 1, %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_Some_Map_(String)_(Map_(String)_(String))_Constr_m_args_75", i32 0, i32 0) } -@"$TyDescr_Option_None_Map_(String)_(Map_(String)_(String))_Constr_m_args_78" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer -@"$TyDescr_ADT_None_79" = unnamed_addr constant [4 x i8] c"None" -@"$TyDescr_Option_None_Map_(String)_(Map_(String)_(String))_ADTTyp_Constr_80" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_65" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_None_79", i32 0, i32 0), i32 4 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_None_Map_(String)_(Map_(String)_(String))_Constr_m_args_78", i32 0, i32 0) } -@"$TyDescr_Option_Map_(String)_(Map_(String)_(String))_ADTTyp_Specl_m_constrs_81" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_65"*] [%"$TyDescrTy_ADTTyp_Constr_65"* @"$TyDescr_Option_Some_Map_(String)_(Map_(String)_(String))_ADTTyp_Constr_77", %"$TyDescrTy_ADTTyp_Constr_65"* @"$TyDescr_Option_None_Map_(String)_(Map_(String)_(String))_ADTTyp_Constr_80"] -@"$TyDescr_Option_Map_(String)_(Map_(String)_(String))_ADTTyp_Specl_m_TArgs_82" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Map_72"] -@"$TyDescr_Option_Map_(String)_(Map_(String)_(String))_ADTTyp_Specl_83" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_63" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_Map_(String)_(Map_(String)_(String))_ADTTyp_Specl_m_TArgs_82", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_65"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_65"*], [2 x %"$TyDescrTy_ADTTyp_Constr_65"*]* @"$TyDescr_Option_Map_(String)_(Map_(String)_(String))_ADTTyp_Specl_m_constrs_81", i32 0, i32 0), %"$TyDescrTy_ADTTyp_64"* @"$TyDescr_Option_ADTTyp_74" } -@"$TyDescr_Option_Some_Map_(String)_(String)_Constr_m_args_84" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Map_73"] -@"$TyDescr_ADT_Some_85" = unnamed_addr constant [4 x i8] c"Some" -@"$TyDescr_Option_Some_Map_(String)_(String)_ADTTyp_Constr_86" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_65" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Some_85", i32 0, i32 0), i32 4 }, i32 1, %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_Some_Map_(String)_(String)_Constr_m_args_84", i32 0, i32 0) } -@"$TyDescr_Option_None_Map_(String)_(String)_Constr_m_args_87" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer -@"$TyDescr_ADT_None_88" = unnamed_addr constant [4 x i8] c"None" -@"$TyDescr_Option_None_Map_(String)_(String)_ADTTyp_Constr_89" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_65" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_None_88", i32 0, i32 0), i32 4 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_None_Map_(String)_(String)_Constr_m_args_87", i32 0, i32 0) } -@"$TyDescr_Option_Map_(String)_(String)_ADTTyp_Specl_m_constrs_90" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_65"*] [%"$TyDescrTy_ADTTyp_Constr_65"* @"$TyDescr_Option_Some_Map_(String)_(String)_ADTTyp_Constr_86", %"$TyDescrTy_ADTTyp_Constr_65"* @"$TyDescr_Option_None_Map_(String)_(String)_ADTTyp_Constr_89"] -@"$TyDescr_Option_Map_(String)_(String)_ADTTyp_Specl_m_TArgs_91" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Map_73"] -@"$TyDescr_Option_Map_(String)_(String)_ADTTyp_Specl_92" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_63" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_Map_(String)_(String)_ADTTyp_Specl_m_TArgs_91", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_65"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_65"*], [2 x %"$TyDescrTy_ADTTyp_Constr_65"*]* @"$TyDescr_Option_Map_(String)_(String)_ADTTyp_Specl_m_constrs_90", i32 0, i32 0), %"$TyDescrTy_ADTTyp_64"* @"$TyDescr_Option_ADTTyp_74" } -@"$TyDescr_Option_Some_String_Constr_m_args_93" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_String_50"] -@"$TyDescr_ADT_Some_94" = unnamed_addr constant [4 x i8] c"Some" -@"$TyDescr_Option_Some_String_ADTTyp_Constr_95" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_65" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Some_94", 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_93", i32 0, i32 0) } -@"$TyDescr_Option_None_String_Constr_m_args_96" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer -@"$TyDescr_ADT_None_97" = unnamed_addr constant [4 x i8] c"None" -@"$TyDescr_Option_None_String_ADTTyp_Constr_98" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_65" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_None_97", 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_96", i32 0, i32 0) } -@"$TyDescr_Option_String_ADTTyp_Specl_m_constrs_99" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_65"*] [%"$TyDescrTy_ADTTyp_Constr_65"* @"$TyDescr_Option_Some_String_ADTTyp_Constr_95", %"$TyDescrTy_ADTTyp_Constr_65"* @"$TyDescr_Option_None_String_ADTTyp_Constr_98"] -@"$TyDescr_Option_String_ADTTyp_Specl_m_TArgs_100" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_String_50"] -@"$TyDescr_Option_String_ADTTyp_Specl_101" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_63" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_String_ADTTyp_Specl_m_TArgs_100", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_65"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_65"*], [2 x %"$TyDescrTy_ADTTyp_Constr_65"*]* @"$TyDescr_Option_String_ADTTyp_Specl_m_constrs_99", i32 0, i32 0), %"$TyDescrTy_ADTTyp_64"* @"$TyDescr_Option_ADTTyp_74" } -@"$TyDescr_Option_ADTTyp_m_specls_102" = unnamed_addr constant [3 x %"$TyDescrTy_ADTTyp_Specl_63"*] [%"$TyDescrTy_ADTTyp_Specl_63"* @"$TyDescr_Option_Map_(String)_(Map_(String)_(String))_ADTTyp_Specl_83", %"$TyDescrTy_ADTTyp_Specl_63"* @"$TyDescr_Option_Map_(String)_(String)_ADTTyp_Specl_92", %"$TyDescrTy_ADTTyp_Specl_63"* @"$TyDescr_Option_String_ADTTyp_Specl_101"] -@"$TyDescr_ADT_Option_103" = unnamed_addr constant [6 x i8] c"Option" -@"$TyDescr_Bool_ADTTyp_104" = unnamed_addr constant %"$TyDescrTy_ADTTyp_64" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Bool_115", i32 0, i32 0), i32 4 }, i32 0, i32 2, i32 1, %"$TyDescrTy_ADTTyp_Specl_63"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Specl_63"*], [1 x %"$TyDescrTy_ADTTyp_Specl_63"*]* @"$TyDescr_Bool_ADTTyp_m_specls_114", i32 0, i32 0) } -@"$TyDescr_Bool_True_Constr_m_args_105" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer -@"$TyDescr_ADT_True_106" = unnamed_addr constant [4 x i8] c"True" -@"$TyDescr_Bool_True_ADTTyp_Constr_107" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_65" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_True_106", 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_105", i32 0, i32 0) } -@"$TyDescr_Bool_False_Constr_m_args_108" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer -@"$TyDescr_ADT_False_109" = unnamed_addr constant [5 x i8] c"False" -@"$TyDescr_Bool_False_ADTTyp_Constr_110" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_65" { %TyDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$TyDescr_ADT_False_109", 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_108", i32 0, i32 0) } -@"$TyDescr_Bool_ADTTyp_Specl_m_constrs_111" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_65"*] [%"$TyDescrTy_ADTTyp_Constr_65"* @"$TyDescr_Bool_True_ADTTyp_Constr_107", %"$TyDescrTy_ADTTyp_Constr_65"* @"$TyDescr_Bool_False_ADTTyp_Constr_110"] -@"$TyDescr_Bool_ADTTyp_Specl_m_TArgs_112" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer -@"$TyDescr_Bool_ADTTyp_Specl_113" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_63" { %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Bool_ADTTyp_Specl_m_TArgs_112", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_65"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_65"*], [2 x %"$TyDescrTy_ADTTyp_Constr_65"*]* @"$TyDescr_Bool_ADTTyp_Specl_m_constrs_111", i32 0, i32 0), %"$TyDescrTy_ADTTyp_64"* @"$TyDescr_Bool_ADTTyp_104" } -@"$TyDescr_Bool_ADTTyp_m_specls_114" = unnamed_addr constant [1 x %"$TyDescrTy_ADTTyp_Specl_63"*] [%"$TyDescrTy_ADTTyp_Specl_63"* @"$TyDescr_Bool_ADTTyp_Specl_113"] -@"$TyDescr_ADT_Bool_115" = unnamed_addr constant [4 x i8] c"Bool" -@"$TyDescr_MapTyp_116" = unnamed_addr constant %"$TyDescr_MapTyp_70" { %_TyDescrTy_Typ* @"$TyDescr_String_50", %_TyDescrTy_Typ* @"$TyDescr_Map_72" } -@"$TyDescr_MapTyp_117" = unnamed_addr constant %"$TyDescr_MapTyp_70" { %_TyDescrTy_Typ* @"$TyDescr_String_50", %_TyDescrTy_Typ* @"$TyDescr_Map_73" } -@"$TyDescr_MapTyp_118" = unnamed_addr constant %"$TyDescr_MapTyp_70" { %_TyDescrTy_Typ* @"$TyDescr_String_50", %_TyDescrTy_Typ* @"$TyDescr_String_50" } +@"$TyDescr_Int32_Prim_32" = global %"$TyDescrTy_PrimTyp_31" zeroinitializer +@"$TyDescr_Int32_33" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_31"* @"$TyDescr_Int32_Prim_32" to i8*) } +@"$TyDescr_Uint32_Prim_34" = global %"$TyDescrTy_PrimTyp_31" { i32 1, i32 0 } +@"$TyDescr_Uint32_35" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_31"* @"$TyDescr_Uint32_Prim_34" to i8*) } +@"$TyDescr_Int64_Prim_36" = global %"$TyDescrTy_PrimTyp_31" { i32 0, i32 1 } +@"$TyDescr_Int64_37" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_31"* @"$TyDescr_Int64_Prim_36" to i8*) } +@"$TyDescr_Uint64_Prim_38" = global %"$TyDescrTy_PrimTyp_31" { i32 1, i32 1 } +@"$TyDescr_Uint64_39" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_31"* @"$TyDescr_Uint64_Prim_38" to i8*) } +@"$TyDescr_Int128_Prim_40" = global %"$TyDescrTy_PrimTyp_31" { i32 0, i32 2 } +@"$TyDescr_Int128_41" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_31"* @"$TyDescr_Int128_Prim_40" to i8*) } +@"$TyDescr_Uint128_Prim_42" = global %"$TyDescrTy_PrimTyp_31" { i32 1, i32 2 } +@"$TyDescr_Uint128_43" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_31"* @"$TyDescr_Uint128_Prim_42" to i8*) } +@"$TyDescr_Int256_Prim_44" = global %"$TyDescrTy_PrimTyp_31" { i32 0, i32 3 } +@"$TyDescr_Int256_45" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_31"* @"$TyDescr_Int256_Prim_44" to i8*) } +@"$TyDescr_Uint256_Prim_46" = global %"$TyDescrTy_PrimTyp_31" { i32 1, i32 3 } +@"$TyDescr_Uint256_47" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_31"* @"$TyDescr_Uint256_Prim_46" to i8*) } +@"$TyDescr_String_Prim_48" = global %"$TyDescrTy_PrimTyp_31" { i32 2, i32 0 } +@"$TyDescr_String_49" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_31"* @"$TyDescr_String_Prim_48" to i8*) } +@"$TyDescr_Bnum_Prim_50" = global %"$TyDescrTy_PrimTyp_31" { i32 3, i32 0 } +@"$TyDescr_Bnum_51" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_31"* @"$TyDescr_Bnum_Prim_50" to i8*) } +@"$TyDescr_Message_Prim_52" = global %"$TyDescrTy_PrimTyp_31" { i32 4, i32 0 } +@"$TyDescr_Message_53" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_31"* @"$TyDescr_Message_Prim_52" to i8*) } +@"$TyDescr_Event_Prim_54" = global %"$TyDescrTy_PrimTyp_31" { i32 5, i32 0 } +@"$TyDescr_Event_55" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_31"* @"$TyDescr_Event_Prim_54" to i8*) } +@"$TyDescr_Exception_Prim_56" = global %"$TyDescrTy_PrimTyp_31" { i32 6, i32 0 } +@"$TyDescr_Exception_57" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_31"* @"$TyDescr_Exception_Prim_56" to i8*) } +@"$TyDescr_Bystr_Prim_58" = global %"$TyDescrTy_PrimTyp_31" { i32 7, i32 0 } +@"$TyDescr_Bystr_59" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_31"* @"$TyDescr_Bystr_Prim_58" to i8*) } +@"$TyDescr_Bystr20_Prim_60" = global %"$TyDescrTy_PrimTyp_31" { i32 8, i32 20 } +@"$TyDescr_Bystr20_61" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_31"* @"$TyDescr_Bystr20_Prim_60" to i8*) } +@"$TyDescr_ADT_Option_Map_(String)_(Map_(String)_(String))_65" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_62"* @"$TyDescr_Option_Map_(String)_(Map_(String)_(String))_ADTTyp_Specl_82" to i8*) } +@"$TyDescr_ADT_Option_Map_(String)_(String)_66" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_62"* @"$TyDescr_Option_Map_(String)_(String)_ADTTyp_Specl_91" to i8*) } +@"$TyDescr_ADT_Option_String_67" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_62"* @"$TyDescr_Option_String_ADTTyp_Specl_100" to i8*) } +@"$TyDescr_ADT_Bool_68" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_62"* @"$TyDescr_Bool_ADTTyp_Specl_112" to i8*) } +@"$TyDescr_Map_70" = unnamed_addr constant %_TyDescrTy_Typ { i32 2, i8* bitcast (%"$TyDescr_MapTyp_69"* @"$TyDescr_MapTyp_115" to i8*) } +@"$TyDescr_Map_71" = unnamed_addr constant %_TyDescrTy_Typ { i32 2, i8* bitcast (%"$TyDescr_MapTyp_69"* @"$TyDescr_MapTyp_116" to i8*) } +@"$TyDescr_Map_72" = unnamed_addr constant %_TyDescrTy_Typ { i32 2, i8* bitcast (%"$TyDescr_MapTyp_69"* @"$TyDescr_MapTyp_117" to i8*) } +@"$TyDescr_Option_ADTTyp_73" = unnamed_addr constant %"$TyDescrTy_ADTTyp_63" { %TyDescrString { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$TyDescr_ADT_Option_102", i32 0, i32 0), i32 6 }, i32 1, i32 2, i32 3, %"$TyDescrTy_ADTTyp_Specl_62"** getelementptr inbounds ([3 x %"$TyDescrTy_ADTTyp_Specl_62"*], [3 x %"$TyDescrTy_ADTTyp_Specl_62"*]* @"$TyDescr_Option_ADTTyp_m_specls_101", i32 0, i32 0) } +@"$TyDescr_Option_Some_Map_(String)_(Map_(String)_(String))_Constr_m_args_74" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Map_71"] +@"$TyDescr_ADT_Some_75" = unnamed_addr constant [4 x i8] c"Some" +@"$TyDescr_Option_Some_Map_(String)_(Map_(String)_(String))_ADTTyp_Constr_76" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_64" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Some_75", i32 0, i32 0), i32 4 }, i32 1, %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_Some_Map_(String)_(Map_(String)_(String))_Constr_m_args_74", i32 0, i32 0) } +@"$TyDescr_Option_None_Map_(String)_(Map_(String)_(String))_Constr_m_args_77" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_None_78" = unnamed_addr constant [4 x i8] c"None" +@"$TyDescr_Option_None_Map_(String)_(Map_(String)_(String))_ADTTyp_Constr_79" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_64" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_None_78", i32 0, i32 0), i32 4 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_None_Map_(String)_(Map_(String)_(String))_Constr_m_args_77", i32 0, i32 0) } +@"$TyDescr_Option_Map_(String)_(Map_(String)_(String))_ADTTyp_Specl_m_constrs_80" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_64"*] [%"$TyDescrTy_ADTTyp_Constr_64"* @"$TyDescr_Option_Some_Map_(String)_(Map_(String)_(String))_ADTTyp_Constr_76", %"$TyDescrTy_ADTTyp_Constr_64"* @"$TyDescr_Option_None_Map_(String)_(Map_(String)_(String))_ADTTyp_Constr_79"] +@"$TyDescr_Option_Map_(String)_(Map_(String)_(String))_ADTTyp_Specl_m_TArgs_81" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Map_71"] +@"$TyDescr_Option_Map_(String)_(Map_(String)_(String))_ADTTyp_Specl_82" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_62" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_Map_(String)_(Map_(String)_(String))_ADTTyp_Specl_m_TArgs_81", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_64"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_64"*], [2 x %"$TyDescrTy_ADTTyp_Constr_64"*]* @"$TyDescr_Option_Map_(String)_(Map_(String)_(String))_ADTTyp_Specl_m_constrs_80", i32 0, i32 0), %"$TyDescrTy_ADTTyp_63"* @"$TyDescr_Option_ADTTyp_73" } +@"$TyDescr_Option_Some_Map_(String)_(String)_Constr_m_args_83" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Map_72"] +@"$TyDescr_ADT_Some_84" = unnamed_addr constant [4 x i8] c"Some" +@"$TyDescr_Option_Some_Map_(String)_(String)_ADTTyp_Constr_85" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_64" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Some_84", i32 0, i32 0), i32 4 }, i32 1, %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_Some_Map_(String)_(String)_Constr_m_args_83", i32 0, i32 0) } +@"$TyDescr_Option_None_Map_(String)_(String)_Constr_m_args_86" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_None_87" = unnamed_addr constant [4 x i8] c"None" +@"$TyDescr_Option_None_Map_(String)_(String)_ADTTyp_Constr_88" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_64" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_None_87", i32 0, i32 0), i32 4 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_None_Map_(String)_(String)_Constr_m_args_86", i32 0, i32 0) } +@"$TyDescr_Option_Map_(String)_(String)_ADTTyp_Specl_m_constrs_89" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_64"*] [%"$TyDescrTy_ADTTyp_Constr_64"* @"$TyDescr_Option_Some_Map_(String)_(String)_ADTTyp_Constr_85", %"$TyDescrTy_ADTTyp_Constr_64"* @"$TyDescr_Option_None_Map_(String)_(String)_ADTTyp_Constr_88"] +@"$TyDescr_Option_Map_(String)_(String)_ADTTyp_Specl_m_TArgs_90" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Map_72"] +@"$TyDescr_Option_Map_(String)_(String)_ADTTyp_Specl_91" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_62" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_Map_(String)_(String)_ADTTyp_Specl_m_TArgs_90", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_64"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_64"*], [2 x %"$TyDescrTy_ADTTyp_Constr_64"*]* @"$TyDescr_Option_Map_(String)_(String)_ADTTyp_Specl_m_constrs_89", i32 0, i32 0), %"$TyDescrTy_ADTTyp_63"* @"$TyDescr_Option_ADTTyp_73" } +@"$TyDescr_Option_Some_String_Constr_m_args_92" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_String_49"] +@"$TyDescr_ADT_Some_93" = unnamed_addr constant [4 x i8] c"Some" +@"$TyDescr_Option_Some_String_ADTTyp_Constr_94" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_64" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Some_93", 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_92", i32 0, i32 0) } +@"$TyDescr_Option_None_String_Constr_m_args_95" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_None_96" = unnamed_addr constant [4 x i8] c"None" +@"$TyDescr_Option_None_String_ADTTyp_Constr_97" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_64" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_None_96", 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_95", i32 0, i32 0) } +@"$TyDescr_Option_String_ADTTyp_Specl_m_constrs_98" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_64"*] [%"$TyDescrTy_ADTTyp_Constr_64"* @"$TyDescr_Option_Some_String_ADTTyp_Constr_94", %"$TyDescrTy_ADTTyp_Constr_64"* @"$TyDescr_Option_None_String_ADTTyp_Constr_97"] +@"$TyDescr_Option_String_ADTTyp_Specl_m_TArgs_99" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_String_49"] +@"$TyDescr_Option_String_ADTTyp_Specl_100" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_62" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_String_ADTTyp_Specl_m_TArgs_99", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_64"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_64"*], [2 x %"$TyDescrTy_ADTTyp_Constr_64"*]* @"$TyDescr_Option_String_ADTTyp_Specl_m_constrs_98", i32 0, i32 0), %"$TyDescrTy_ADTTyp_63"* @"$TyDescr_Option_ADTTyp_73" } +@"$TyDescr_Option_ADTTyp_m_specls_101" = unnamed_addr constant [3 x %"$TyDescrTy_ADTTyp_Specl_62"*] [%"$TyDescrTy_ADTTyp_Specl_62"* @"$TyDescr_Option_Map_(String)_(Map_(String)_(String))_ADTTyp_Specl_82", %"$TyDescrTy_ADTTyp_Specl_62"* @"$TyDescr_Option_Map_(String)_(String)_ADTTyp_Specl_91", %"$TyDescrTy_ADTTyp_Specl_62"* @"$TyDescr_Option_String_ADTTyp_Specl_100"] +@"$TyDescr_ADT_Option_102" = unnamed_addr constant [6 x i8] c"Option" +@"$TyDescr_Bool_ADTTyp_103" = unnamed_addr constant %"$TyDescrTy_ADTTyp_63" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Bool_114", i32 0, i32 0), i32 4 }, i32 0, i32 2, i32 1, %"$TyDescrTy_ADTTyp_Specl_62"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Specl_62"*], [1 x %"$TyDescrTy_ADTTyp_Specl_62"*]* @"$TyDescr_Bool_ADTTyp_m_specls_113", i32 0, i32 0) } +@"$TyDescr_Bool_True_Constr_m_args_104" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_True_105" = unnamed_addr constant [4 x i8] c"True" +@"$TyDescr_Bool_True_ADTTyp_Constr_106" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_64" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_True_105", 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_104", i32 0, i32 0) } +@"$TyDescr_Bool_False_Constr_m_args_107" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_False_108" = unnamed_addr constant [5 x i8] c"False" +@"$TyDescr_Bool_False_ADTTyp_Constr_109" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_64" { %TyDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$TyDescr_ADT_False_108", 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_107", i32 0, i32 0) } +@"$TyDescr_Bool_ADTTyp_Specl_m_constrs_110" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_64"*] [%"$TyDescrTy_ADTTyp_Constr_64"* @"$TyDescr_Bool_True_ADTTyp_Constr_106", %"$TyDescrTy_ADTTyp_Constr_64"* @"$TyDescr_Bool_False_ADTTyp_Constr_109"] +@"$TyDescr_Bool_ADTTyp_Specl_m_TArgs_111" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_Bool_ADTTyp_Specl_112" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_62" { %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Bool_ADTTyp_Specl_m_TArgs_111", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_64"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_64"*], [2 x %"$TyDescrTy_ADTTyp_Constr_64"*]* @"$TyDescr_Bool_ADTTyp_Specl_m_constrs_110", i32 0, i32 0), %"$TyDescrTy_ADTTyp_63"* @"$TyDescr_Bool_ADTTyp_103" } +@"$TyDescr_Bool_ADTTyp_m_specls_113" = unnamed_addr constant [1 x %"$TyDescrTy_ADTTyp_Specl_62"*] [%"$TyDescrTy_ADTTyp_Specl_62"* @"$TyDescr_Bool_ADTTyp_Specl_112"] +@"$TyDescr_ADT_Bool_114" = unnamed_addr constant [4 x i8] c"Bool" +@"$TyDescr_MapTyp_115" = unnamed_addr constant %"$TyDescr_MapTyp_69" { %_TyDescrTy_Typ* @"$TyDescr_String_49", %_TyDescrTy_Typ* @"$TyDescr_Map_71" } +@"$TyDescr_MapTyp_116" = unnamed_addr constant %"$TyDescr_MapTyp_69" { %_TyDescrTy_Typ* @"$TyDescr_String_49", %_TyDescrTy_Typ* @"$TyDescr_Map_72" } +@"$TyDescr_MapTyp_117" = unnamed_addr constant %"$TyDescr_MapTyp_69" { %_TyDescrTy_Typ* @"$TyDescr_String_49", %_TyDescrTy_Typ* @"$TyDescr_String_49" } @andb = global { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } zeroinitializer @_scilla_version = global %Uint32 zeroinitializer @_this_address = global [20 x i8] zeroinitializer -@"$stringlit_145" = unnamed_addr constant [3 x i8] c"420" -@"$f_s1_147" = unnamed_addr constant [5 x i8] c"f_s1\00" -@"$f_m1_155" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$f_m2_162" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$f_m3_169" = unnamed_addr constant [5 x i8] c"f_m3\00" -@"$f_m_176" = unnamed_addr constant [4 x i8] c"f_m\00" -@"$stringlit_182" = unnamed_addr constant [10 x i8] c"_exception" -@"$stringlit_187" = unnamed_addr constant [11 x i8] c"Test Failed" -@"$stringlit_190" = unnamed_addr constant [9 x i8] c"test_name" -@"$stringlit_203" = unnamed_addr constant [10 x i8] c"_exception" -@"$stringlit_208" = unnamed_addr constant [11 x i8] c"Test Failed" -@"$stringlit_211" = unnamed_addr constant [9 x i8] c"test_name" -@"$stringlit_218" = unnamed_addr constant [7 x i8] c"message" -@"$stringlit_230" = unnamed_addr constant [2 x i8] c"t1" -@"$f_s1_232" = unnamed_addr constant [5 x i8] c"f_s1\00" -@"$stringlit_236" = unnamed_addr constant [3 x i8] c"420" -@"$stringlit_252" = unnamed_addr constant [3 x i8] c"421" -@"$f_s1_254" = unnamed_addr constant [5 x i8] c"f_s1\00" -@"$stringlit_265" = unnamed_addr constant [2 x i8] c"t2" -@"$f_s1_267" = unnamed_addr constant [5 x i8] c"f_s1\00" -@"$stringlit_271" = unnamed_addr constant [3 x i8] c"421" -@"$stringlit_287" = unnamed_addr constant [4 x i8] c"key1" -@"$stringlit_288" = unnamed_addr constant [3 x i8] c"420" -@"$f_m1_293" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_304" = unnamed_addr constant [2 x i8] c"t3" -@"$stringlit_305" = unnamed_addr constant [3 x i8] c"420" -@"$stringlit_306" = unnamed_addr constant [4 x i8] c"key1" -@"$f_m1_311" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_334" = unnamed_addr constant [23 x i8] c"Incorrect value for key" -@"$stringlit_344" = unnamed_addr constant [4 x i8] c"key2" -@"$f_m1_349" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_361" = unnamed_addr constant [25 x i8] c"Rogue value found for key" -@"$f_m1_371" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_379" = unnamed_addr constant [2 x i8] c"t4" -@"$stringlit_380" = unnamed_addr constant [4 x i8] c"key1" -@"$f_m1_385" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_399" = unnamed_addr constant [5 x i8] c"key1a" -@"$stringlit_400" = unnamed_addr constant [5 x i8] c"key2a" -@"$stringlit_401" = unnamed_addr constant [3 x i8] c"420" -@"$f_m2_408" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_419" = unnamed_addr constant [2 x i8] c"t5" -@"$stringlit_420" = unnamed_addr constant [3 x i8] c"420" -@"$stringlit_421" = unnamed_addr constant [5 x i8] c"key1a" -@"$stringlit_422" = unnamed_addr constant [5 x i8] c"key2a" -@"$f_m2_429" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_454" = unnamed_addr constant [23 x i8] c"Incorrect value fetched" -@"$stringlit_465" = unnamed_addr constant [5 x i8] c"key2b" -@"$stringlit_466" = unnamed_addr constant [3 x i8] c"840" -@"$stringlit_478" = unnamed_addr constant [5 x i8] c"key2c" -@"$stringlit_479" = unnamed_addr constant [3 x i8] c"841" -@"$stringlit_491" = unnamed_addr constant [5 x i8] c"key1b" -@"$f_m2_496" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_506" = unnamed_addr constant [2 x i8] c"t6" -@"$stringlit_507" = unnamed_addr constant [5 x i8] c"key1a" -@"$stringlit_508" = unnamed_addr constant [5 x i8] c"key2a" -@"$f_m2_515" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_527" = unnamed_addr constant [3 x i8] c"420" -@"$stringlit_541" = unnamed_addr constant [31 x i8] c"Incorrect value for key1a,key2a" -@"$stringlit_547" = unnamed_addr constant [21 x i8] c"key1a,key2a not found" -@"$stringlit_551" = unnamed_addr constant [5 x i8] c"key1b" -@"$stringlit_552" = unnamed_addr constant [5 x i8] c"key2b" -@"$f_m2_559" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_571" = unnamed_addr constant [3 x i8] c"840" -@"$stringlit_585" = unnamed_addr constant [31 x i8] c"Incorrect value for key1b,key2b" -@"$stringlit_591" = unnamed_addr constant [21 x i8] c"key1b,key2b not found" -@"$stringlit_595" = unnamed_addr constant [5 x i8] c"key1b" -@"$stringlit_596" = unnamed_addr constant [5 x i8] c"key2c" -@"$f_m2_603" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_615" = unnamed_addr constant [3 x i8] c"841" -@"$stringlit_629" = unnamed_addr constant [31 x i8] c"Incorrect value for key1b,key2c" -@"$stringlit_635" = unnamed_addr constant [21 x i8] c"key1b,key2c not found" -@"$f_m2_643" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_651" = unnamed_addr constant [2 x i8] c"t7" -@"$stringlit_652" = unnamed_addr constant [5 x i8] c"key1a" -@"$stringlit_653" = unnamed_addr constant [5 x i8] c"key2a" -@"$f_m2_660" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_672" = unnamed_addr constant [3 x i8] c"420" -@"$stringlit_686" = unnamed_addr constant [31 x i8] c"Incorrect value for key1a,key2a" -@"$stringlit_692" = unnamed_addr constant [21 x i8] c"key1a,key2a not found" -@"$stringlit_696" = unnamed_addr constant [5 x i8] c"key1b" -@"$f_m2_701" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_713" = unnamed_addr constant [36 x i8] c"Fail: deleted value for key1b found!" -@"$stringlit_719" = unnamed_addr constant [5 x i8] c"key1b" -@"$stringlit_720" = unnamed_addr constant [5 x i8] c"key2b" -@"$f_m2_727" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_739" = unnamed_addr constant [42 x i8] c"Fail: deleted value for key1b,key2b found!" -@"$stringlit_745" = unnamed_addr constant [5 x i8] c"key1b" -@"$stringlit_746" = unnamed_addr constant [5 x i8] c"key2d" -@"$f_m2_753" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_765" = unnamed_addr constant [42 x i8] c"Fail: deleted value for key1b,key2d found!" -@"$stringlit_771" = unnamed_addr constant [5 x i8] c"key1b" -@"$stringlit_772" = unnamed_addr constant [5 x i8] c"key2c" -@"$stringlit_773" = unnamed_addr constant [3 x i8] c"121" -@"$f_m2_780" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_791" = unnamed_addr constant [2 x i8] c"t8" -@"$stringlit_792" = unnamed_addr constant [5 x i8] c"key1a" -@"$stringlit_793" = unnamed_addr constant [5 x i8] c"key2a" -@"$f_m2_800" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_812" = unnamed_addr constant [3 x i8] c"420" -@"$stringlit_826" = unnamed_addr constant [31 x i8] c"Incorrect value for key1a,key2a" -@"$stringlit_832" = unnamed_addr constant [21 x i8] c"key1a,key2a not found" -@"$stringlit_836" = unnamed_addr constant [5 x i8] c"key1b" -@"$stringlit_837" = unnamed_addr constant [5 x i8] c"key2c" -@"$f_m2_844" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_856" = unnamed_addr constant [3 x i8] c"121" -@"$stringlit_870" = unnamed_addr constant [31 x i8] c"Incorrect value for key1b,key2c" -@"$stringlit_876" = unnamed_addr constant [21 x i8] c"key1b,key2c not found" -@"$f_m1_884" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_894" = unnamed_addr constant [2 x i8] c"t9" -@"$f_m1_896" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_917" = unnamed_addr constant [5 x i8] c"key1a" -@"$stringlit_918" = unnamed_addr constant [3 x i8] c"420" -@"$f_m1_931" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_941" = unnamed_addr constant [3 x i8] c"t10" -@"$stringlit_942" = unnamed_addr constant [5 x i8] c"key1a" -@"$f_m1_944" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_964" = unnamed_addr constant [3 x i8] c"420" -@"$stringlit_978" = unnamed_addr constant [25 x i8] c"Incorrect value for key1a" -@"$stringlit_984" = unnamed_addr constant [15 x i8] c"key1a not found" -@"$f_m1_992" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_1000" = unnamed_addr constant [3 x i8] c"t11" -@"$f_m1_1002" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$f_m2_1027" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_1037" = unnamed_addr constant [3 x i8] c"t12" -@"$f_m2_1039" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_1063" = unnamed_addr constant [5 x i8] c"key1a" +@"$stringlit_174" = unnamed_addr constant [3 x i8] c"420" +@"$f_s1_176" = unnamed_addr constant [5 x i8] c"f_s1\00" +@"$f_m1_189" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$f_m2_201" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$f_m3_213" = unnamed_addr constant [5 x i8] c"f_m3\00" +@"$f_m_225" = unnamed_addr constant [4 x i8] c"f_m\00" +@"$stringlit_241" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_246" = unnamed_addr constant [11 x i8] c"Test Failed" +@"$stringlit_249" = unnamed_addr constant [9 x i8] c"test_name" +@"$stringlit_272" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_277" = unnamed_addr constant [11 x i8] c"Test Failed" +@"$stringlit_280" = unnamed_addr constant [9 x i8] c"test_name" +@"$stringlit_287" = unnamed_addr constant [7 x i8] c"message" +@"$stringlit_309" = unnamed_addr constant [2 x i8] c"t1" +@"$f_s1_311" = unnamed_addr constant [5 x i8] c"f_s1\00" +@"$stringlit_335" = unnamed_addr constant [3 x i8] c"420" +@"$stringlit_376" = unnamed_addr constant [3 x i8] c"421" +@"$f_s1_387" = unnamed_addr constant [5 x i8] c"f_s1\00" +@"$stringlit_408" = unnamed_addr constant [2 x i8] c"t2" +@"$f_s1_410" = unnamed_addr constant [5 x i8] c"f_s1\00" +@"$stringlit_434" = unnamed_addr constant [3 x i8] c"421" +@"$stringlit_475" = unnamed_addr constant [4 x i8] c"key1" +@"$stringlit_486" = unnamed_addr constant [3 x i8] c"420" +@"$f_m1_501" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_522" = unnamed_addr constant [2 x i8] c"t3" +@"$stringlit_533" = unnamed_addr constant [3 x i8] c"420" +@"$stringlit_544" = unnamed_addr constant [4 x i8] c"key1" +@"$f_m1_549" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_607" = unnamed_addr constant [23 x i8] c"Incorrect value for key" +@"$stringlit_637" = unnamed_addr constant [4 x i8] c"key2" +@"$f_m1_642" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_679" = unnamed_addr constant [25 x i8] c"Rogue value found for key" +@"$f_m1_699" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_717" = unnamed_addr constant [2 x i8] c"t4" +@"$stringlit_728" = unnamed_addr constant [4 x i8] c"key1" +@"$f_m1_733" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_777" = unnamed_addr constant [5 x i8] c"key1a" +@"$stringlit_788" = unnamed_addr constant [5 x i8] c"key2a" +@"$stringlit_799" = unnamed_addr constant [3 x i8] c"420" +@"$f_m2_816" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_837" = unnamed_addr constant [2 x i8] c"t5" +@"$stringlit_848" = unnamed_addr constant [3 x i8] c"420" +@"$stringlit_859" = unnamed_addr constant [5 x i8] c"key1a" +@"$stringlit_870" = unnamed_addr constant [5 x i8] c"key2a" +@"$f_m2_877" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_937" = unnamed_addr constant [23 x i8] c"Incorrect value fetched" +@"$stringlit_983" = unnamed_addr constant [5 x i8] c"key2b" +@"$stringlit_994" = unnamed_addr constant [3 x i8] c"840" +@"$stringlit_1021" = unnamed_addr constant [5 x i8] c"key2c" +@"$stringlit_1032" = unnamed_addr constant [3 x i8] c"841" +@"$stringlit_1054" = unnamed_addr constant [5 x i8] c"key1b" @"$f_m2_1068" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_1078" = unnamed_addr constant [3 x i8] c"t13" -@"$stringlit_1079" = unnamed_addr constant [5 x i8] c"key1a" -@"$f_m2_1084" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_1112" = unnamed_addr constant [29 x i8] c"Submap should have been empty" -@"$stringlit_1123" = unnamed_addr constant [5 x i8] c"key2a" -@"$f_m3_1151" = unnamed_addr constant [5 x i8] c"f_m3\00" -@"$stringlit_1161" = unnamed_addr constant [3 x i8] c"t14" -@"$f_m3_1163" = unnamed_addr constant [5 x i8] c"f_m3\00" -@"$f_m_1188" = unnamed_addr constant [4 x i8] c"f_m\00" -@"$stringlit_1198" = unnamed_addr constant [3 x i8] c"t15" -@"$f_m3_1200" = unnamed_addr constant [5 x i8] c"f_m3\00" -@"$stringlit_1219" = unnamed_addr constant [22 x i8] c"Incorrect size of f_m3" -@"$stringlit_1223" = unnamed_addr constant [5 x i8] c"key1a" -@"$stringlit_1224" = unnamed_addr constant [5 x i8] c"key2a" -@"$stringlit_1289" = unnamed_addr constant [36 x i8] c"Incorrect size of f_m3[key1a][key2a]" -@"$stringlit_1295" = unnamed_addr constant [19 x i8] c"Unexpected empty m1" -@"$stringlit_1301" = unnamed_addr constant [28 x i8] c"Incorrect size of f_m3[key1]" -@"$stringlit_1307" = unnamed_addr constant [19 x i8] c"Unexpected empty m2" -@"$stringlit_1311" = unnamed_addr constant [5 x i8] c"key1b" -@"$stringlit_1312" = unnamed_addr constant [5 x i8] c"key2b" -@"$stringlit_1313" = unnamed_addr constant [5 x i8] c"key1c" -@"$stringlit_1314" = unnamed_addr constant [5 x i8] c"key2c" -@"$stringlit_1315" = unnamed_addr constant [5 x i8] c"key1d" -@"$stringlit_1316" = unnamed_addr constant [5 x i8] c"key2d" -@"$stringlit_1317" = unnamed_addr constant [3 x i8] c"420" -@"$stringlit_1318" = unnamed_addr constant [3 x i8] c"421" -@"$stringlit_1319" = unnamed_addr constant [3 x i8] c"422" -@"$stringlit_1320" = unnamed_addr constant [3 x i8] c"423" -@"$f_m2_1413" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_1423" = unnamed_addr constant [3 x i8] c"t16" -@"$stringlit_1424" = unnamed_addr constant [5 x i8] c"key1a" -@"$stringlit_1425" = unnamed_addr constant [5 x i8] c"key2a" -@"$stringlit_1426" = unnamed_addr constant [5 x i8] c"key1b" -@"$stringlit_1427" = unnamed_addr constant [5 x i8] c"key2b" -@"$stringlit_1428" = unnamed_addr constant [5 x i8] c"key1c" -@"$stringlit_1429" = unnamed_addr constant [5 x i8] c"key2c" -@"$stringlit_1430" = unnamed_addr constant [5 x i8] c"key1d" -@"$stringlit_1431" = unnamed_addr constant [5 x i8] c"key2d" -@"$f_m2_1438" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$f_m2_1447" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$f_m2_1456" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$f_m2_1465" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_1468" = unnamed_addr constant [3 x i8] c"420" -@"$stringlit_1469" = unnamed_addr constant [3 x i8] c"421" -@"$stringlit_1470" = unnamed_addr constant [3 x i8] c"422" -@"$stringlit_1471" = unnamed_addr constant [3 x i8] c"423" -@"$stringlit_1588" = unnamed_addr constant [0 x i8] zeroinitializer -@"$stringlit_1589" = unnamed_addr constant [3 x i8] c"420" -@"$f_m1_1605" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_1615" = unnamed_addr constant [3 x i8] c"t17" -@"$stringlit_1616" = unnamed_addr constant [0 x i8] zeroinitializer -@"$f_m1_1621" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$f_m1_1639" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_1647" = unnamed_addr constant [3 x i8] c"t18" -@"$stringlit_1648" = unnamed_addr constant [0 x i8] zeroinitializer -@"$f_m1_1653" = unnamed_addr constant [5 x i8] c"f_m1\00" -@_tydescr_table = constant [22 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Map_73", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Map_(String)_(String)_67", %_TyDescrTy_Typ* @"$TyDescr_Event_56", %_TyDescrTy_Typ* @"$TyDescr_Int64_38", %_TyDescrTy_Typ* @"$TyDescr_Map_71", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_69", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_62", %_TyDescrTy_Typ* @"$TyDescr_Uint256_48", %_TyDescrTy_Typ* @"$TyDescr_Uint32_36", %_TyDescrTy_Typ* @"$TyDescr_Map_72", %_TyDescrTy_Typ* @"$TyDescr_Uint64_40", %_TyDescrTy_Typ* @"$TyDescr_Bnum_52", %_TyDescrTy_Typ* @"$TyDescr_Uint128_44", %_TyDescrTy_Typ* @"$TyDescr_Exception_58", %_TyDescrTy_Typ* @"$TyDescr_String_50", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Map_(String)_(Map_(String)_(String))_66", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_68", %_TyDescrTy_Typ* @"$TyDescr_Int256_46", %_TyDescrTy_Typ* @"$TyDescr_Int128_42", %_TyDescrTy_Typ* @"$TyDescr_Bystr_60", %_TyDescrTy_Typ* @"$TyDescr_Message_54", %_TyDescrTy_Typ* @"$TyDescr_Int32_34"] +@"$stringlit_1088" = unnamed_addr constant [2 x i8] c"t6" +@"$stringlit_1099" = unnamed_addr constant [5 x i8] c"key1a" +@"$stringlit_1110" = unnamed_addr constant [5 x i8] c"key2a" +@"$f_m2_1117" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1154" = unnamed_addr constant [3 x i8] c"420" +@"$stringlit_1188" = unnamed_addr constant [31 x i8] c"Incorrect value for key1a,key2a" +@"$stringlit_1209" = unnamed_addr constant [21 x i8] c"key1a,key2a not found" +@"$stringlit_1228" = unnamed_addr constant [5 x i8] c"key1b" +@"$stringlit_1239" = unnamed_addr constant [5 x i8] c"key2b" +@"$f_m2_1246" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1283" = unnamed_addr constant [3 x i8] c"840" +@"$stringlit_1317" = unnamed_addr constant [31 x i8] c"Incorrect value for key1b,key2b" +@"$stringlit_1338" = unnamed_addr constant [21 x i8] c"key1b,key2b not found" +@"$stringlit_1357" = unnamed_addr constant [5 x i8] c"key1b" +@"$stringlit_1368" = unnamed_addr constant [5 x i8] c"key2c" +@"$f_m2_1375" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1412" = unnamed_addr constant [3 x i8] c"841" +@"$stringlit_1446" = unnamed_addr constant [31 x i8] c"Incorrect value for key1b,key2c" +@"$stringlit_1467" = unnamed_addr constant [21 x i8] c"key1b,key2c not found" +@"$f_m2_1485" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1503" = unnamed_addr constant [2 x i8] c"t7" +@"$stringlit_1514" = unnamed_addr constant [5 x i8] c"key1a" +@"$stringlit_1525" = unnamed_addr constant [5 x i8] c"key2a" +@"$f_m2_1532" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1569" = unnamed_addr constant [3 x i8] c"420" +@"$stringlit_1603" = unnamed_addr constant [31 x i8] c"Incorrect value for key1a,key2a" +@"$stringlit_1624" = unnamed_addr constant [21 x i8] c"key1a,key2a not found" +@"$stringlit_1643" = unnamed_addr constant [5 x i8] c"key1b" +@"$f_m2_1648" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1685" = unnamed_addr constant [36 x i8] c"Fail: deleted value for key1b found!" +@"$stringlit_1706" = unnamed_addr constant [5 x i8] c"key1b" +@"$stringlit_1717" = unnamed_addr constant [5 x i8] c"key2b" +@"$f_m2_1724" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1761" = unnamed_addr constant [42 x i8] c"Fail: deleted value for key1b,key2b found!" +@"$stringlit_1782" = unnamed_addr constant [5 x i8] c"key1b" +@"$stringlit_1793" = unnamed_addr constant [5 x i8] c"key2d" +@"$f_m2_1800" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1837" = unnamed_addr constant [42 x i8] c"Fail: deleted value for key1b,key2d found!" +@"$stringlit_1858" = unnamed_addr constant [5 x i8] c"key1b" +@"$stringlit_1869" = unnamed_addr constant [5 x i8] c"key2c" +@"$stringlit_1880" = unnamed_addr constant [3 x i8] c"121" +@"$f_m2_1897" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1918" = unnamed_addr constant [2 x i8] c"t8" +@"$stringlit_1929" = unnamed_addr constant [5 x i8] c"key1a" +@"$stringlit_1940" = unnamed_addr constant [5 x i8] c"key2a" +@"$f_m2_1947" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1984" = unnamed_addr constant [3 x i8] c"420" +@"$stringlit_2018" = unnamed_addr constant [31 x i8] c"Incorrect value for key1a,key2a" +@"$stringlit_2039" = unnamed_addr constant [21 x i8] c"key1a,key2a not found" +@"$stringlit_2058" = unnamed_addr constant [5 x i8] c"key1b" +@"$stringlit_2069" = unnamed_addr constant [5 x i8] c"key2c" +@"$f_m2_2076" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_2113" = unnamed_addr constant [3 x i8] c"121" +@"$stringlit_2147" = unnamed_addr constant [31 x i8] c"Incorrect value for key1b,key2c" +@"$stringlit_2168" = unnamed_addr constant [21 x i8] c"key1b,key2c not found" +@"$f_m1_2199" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_2219" = unnamed_addr constant [2 x i8] c"t9" +@"$f_m1_2221" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_2294" = unnamed_addr constant [5 x i8] c"key1a" +@"$stringlit_2305" = unnamed_addr constant [3 x i8] c"420" +@"$f_m1_2331" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_2351" = unnamed_addr constant [3 x i8] c"t10" +@"$stringlit_2362" = unnamed_addr constant [5 x i8] c"key1a" +@"$f_m1_2364" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_2416" = unnamed_addr constant [3 x i8] c"420" +@"$stringlit_2450" = unnamed_addr constant [25 x i8] c"Incorrect value for key1a" +@"$stringlit_2471" = unnamed_addr constant [15 x i8] c"key1a not found" +@"$f_m1_2489" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_2507" = unnamed_addr constant [3 x i8] c"t11" +@"$f_m1_2509" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$f_m2_2594" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_2614" = unnamed_addr constant [3 x i8] c"t12" +@"$f_m2_2616" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_2702" = unnamed_addr constant [5 x i8] c"key1a" +@"$f_m2_2716" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_2736" = unnamed_addr constant [3 x i8] c"t13" +@"$stringlit_2747" = unnamed_addr constant [5 x i8] c"key1a" +@"$f_m2_2752" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_2830" = unnamed_addr constant [29 x i8] c"Submap should have been empty" +@"$stringlit_2876" = unnamed_addr constant [5 x i8] c"key2a" +@"$f_m3_2937" = unnamed_addr constant [5 x i8] c"f_m3\00" +@"$stringlit_2957" = unnamed_addr constant [3 x i8] c"t14" +@"$f_m3_2959" = unnamed_addr constant [5 x i8] c"f_m3\00" +@"$f_m_3044" = unnamed_addr constant [4 x i8] c"f_m\00" +@"$stringlit_3064" = unnamed_addr constant [3 x i8] c"t15" +@"$f_m3_3066" = unnamed_addr constant [5 x i8] c"f_m3\00" +@"$stringlit_3132" = unnamed_addr constant [22 x i8] c"Incorrect size of f_m3" +@"$stringlit_3151" = unnamed_addr constant [5 x i8] c"key1a" +@"$stringlit_3162" = unnamed_addr constant [5 x i8] c"key2a" +@"$stringlit_3297" = unnamed_addr constant [36 x i8] c"Incorrect size of f_m3[key1a][key2a]" +@"$stringlit_3318" = unnamed_addr constant [19 x i8] c"Unexpected empty m1" +@"$stringlit_3339" = unnamed_addr constant [28 x i8] c"Incorrect size of f_m3[key1]" +@"$stringlit_3360" = unnamed_addr constant [19 x i8] c"Unexpected empty m2" +@"$stringlit_3379" = unnamed_addr constant [5 x i8] c"key1b" +@"$stringlit_3390" = unnamed_addr constant [5 x i8] c"key2b" +@"$stringlit_3401" = unnamed_addr constant [5 x i8] c"key1c" +@"$stringlit_3412" = unnamed_addr constant [5 x i8] c"key2c" +@"$stringlit_3423" = unnamed_addr constant [5 x i8] c"key1d" +@"$stringlit_3434" = unnamed_addr constant [5 x i8] c"key2d" +@"$stringlit_3445" = unnamed_addr constant [3 x i8] c"420" +@"$stringlit_3456" = unnamed_addr constant [3 x i8] c"421" +@"$stringlit_3467" = unnamed_addr constant [3 x i8] c"422" +@"$stringlit_3478" = unnamed_addr constant [3 x i8] c"423" +@"$f_m2_3649" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_3669" = unnamed_addr constant [3 x i8] c"t16" +@"$stringlit_3680" = unnamed_addr constant [5 x i8] c"key1a" +@"$stringlit_3691" = unnamed_addr constant [5 x i8] c"key2a" +@"$stringlit_3702" = unnamed_addr constant [5 x i8] c"key1b" +@"$stringlit_3713" = unnamed_addr constant [5 x i8] c"key2b" +@"$stringlit_3724" = unnamed_addr constant [5 x i8] c"key1c" +@"$stringlit_3735" = unnamed_addr constant [5 x i8] c"key2c" +@"$stringlit_3746" = unnamed_addr constant [5 x i8] c"key1d" +@"$stringlit_3757" = unnamed_addr constant [5 x i8] c"key2d" +@"$f_m2_3764" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$f_m2_3783" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$f_m2_3802" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$f_m2_3821" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_3844" = unnamed_addr constant [3 x i8] c"420" +@"$stringlit_3855" = unnamed_addr constant [3 x i8] c"421" +@"$stringlit_3866" = unnamed_addr constant [3 x i8] c"422" +@"$stringlit_3877" = unnamed_addr constant [3 x i8] c"423" +@"$stringlit_4109" = unnamed_addr constant [0 x i8] zeroinitializer +@"$stringlit_4120" = unnamed_addr constant [3 x i8] c"420" +@"$f_m1_4154" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_4174" = unnamed_addr constant [3 x i8] c"t17" +@"$stringlit_4185" = unnamed_addr constant [0 x i8] zeroinitializer +@"$f_m1_4190" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$f_m1_4233" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_4251" = unnamed_addr constant [3 x i8] c"t18" +@"$stringlit_4262" = unnamed_addr constant [0 x i8] zeroinitializer +@"$f_m1_4267" = unnamed_addr constant [5 x i8] c"f_m1\00" +@_tydescr_table = constant [22 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Map_72", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Map_(String)_(String)_66", %_TyDescrTy_Typ* @"$TyDescr_Event_55", %_TyDescrTy_Typ* @"$TyDescr_Int64_37", %_TyDescrTy_Typ* @"$TyDescr_Map_70", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_68", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_61", %_TyDescrTy_Typ* @"$TyDescr_Uint256_47", %_TyDescrTy_Typ* @"$TyDescr_Uint32_35", %_TyDescrTy_Typ* @"$TyDescr_Map_71", %_TyDescrTy_Typ* @"$TyDescr_Uint64_39", %_TyDescrTy_Typ* @"$TyDescr_Bnum_51", %_TyDescrTy_Typ* @"$TyDescr_Uint128_43", %_TyDescrTy_Typ* @"$TyDescr_Exception_57", %_TyDescrTy_Typ* @"$TyDescr_String_49", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Map_(String)_(Map_(String)_(String))_65", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", %_TyDescrTy_Typ* @"$TyDescr_Int256_45", %_TyDescrTy_Typ* @"$TyDescr_Int128_41", %_TyDescrTy_Typ* @"$TyDescr_Bystr_59", %_TyDescrTy_Typ* @"$TyDescr_Message_53", %_TyDescrTy_Typ* @"$TyDescr_Int32_33"] @_tydescr_table_length = constant i32 22 -define internal %TName_Bool* @"$fundef_25"(%"$$fundef_25_env_119"* %0, %TName_Bool* %1) { +define internal %TName_Bool* @"$fundef_24"(%"$$fundef_24_env_118"* %0, %TName_Bool* %1) { entry: - %"$$fundef_25_env_b_127" = getelementptr inbounds %"$$fundef_25_env_119", %"$$fundef_25_env_119"* %0, i32 0, i32 0 - %"$b_envload_128" = load %TName_Bool*, %TName_Bool** %"$$fundef_25_env_b_127" + %"$$fundef_24_env_b_131" = getelementptr inbounds %"$$fundef_24_env_118", %"$$fundef_24_env_118"* %0, i32 0, i32 0 + %"$b_envload_132" = load %TName_Bool*, %TName_Bool** %"$$fundef_24_env_b_131" %b = alloca %TName_Bool* - store %TName_Bool* %"$b_envload_128", %TName_Bool** %b - %"$retval_26" = alloca %TName_Bool* - %"$b_130" = load %TName_Bool*, %TName_Bool** %b - %"$b_tag_131" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b_130", i32 0, i32 0 - %"$b_tag_132" = load i8, i8* %"$b_tag_131" - switch i8 %"$b_tag_132", label %"$empty_default_133" [ - i8 1, label %"$False_134" - i8 0, label %"$True_139" + store %TName_Bool* %"$b_envload_132", %TName_Bool** %b + %"$retval_25" = alloca %TName_Bool* + %"$gasrem_133" = load i64, i64* @_gasrem + %"$gascmp_134" = icmp ugt i64 2, %"$gasrem_133" + br i1 %"$gascmp_134", label %"$out_of_gas_135", label %"$have_gas_136" + +"$out_of_gas_135": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_136" + +"$have_gas_136": ; preds = %"$out_of_gas_135", %entry + %"$consume_137" = sub i64 %"$gasrem_133", 2 + store i64 %"$consume_137", i64* @_gasrem + %"$b_139" = load %TName_Bool*, %TName_Bool** %b + %"$b_tag_140" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b_139", i32 0, i32 0 + %"$b_tag_141" = load i8, i8* %"$b_tag_140" + switch i8 %"$b_tag_141", label %"$empty_default_142" [ + i8 1, label %"$False_143" + i8 0, label %"$True_153" ] -"$False_134": ; preds = %entry - %"$b_135" = bitcast %TName_Bool* %"$b_130" to %CName_False* - %"$adtval_136_load" = load i8*, i8** @_execptr - %"$adtval_136_salloc" = call i8* @_salloc(i8* %"$adtval_136_load", i64 1) - %"$adtval_136" = bitcast i8* %"$adtval_136_salloc" to %CName_False* - %"$adtgep_137" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_136", i32 0, i32 0 - store i8 1, i8* %"$adtgep_137" - %"$adtptr_138" = bitcast %CName_False* %"$adtval_136" to %TName_Bool* - store %TName_Bool* %"$adtptr_138", %TName_Bool** %"$retval_26" - br label %"$matchsucc_129" - -"$True_139": ; preds = %entry - %"$b_140" = bitcast %TName_Bool* %"$b_130" to %CName_True* - store %TName_Bool* %1, %TName_Bool** %"$retval_26" - br label %"$matchsucc_129" - -"$empty_default_133": ; preds = %entry - br label %"$matchsucc_129" - -"$matchsucc_129": ; preds = %"$True_139", %"$False_134", %"$empty_default_133" - %"$$retval_26_141" = load %TName_Bool*, %TName_Bool** %"$retval_26" - ret %TName_Bool* %"$$retval_26_141" +"$False_143": ; preds = %"$have_gas_136" + %"$b_144" = bitcast %TName_Bool* %"$b_139" to %CName_False* + %"$gasrem_145" = load i64, i64* @_gasrem + %"$gascmp_146" = icmp ugt i64 1, %"$gasrem_145" + br i1 %"$gascmp_146", label %"$out_of_gas_147", label %"$have_gas_148" + +"$out_of_gas_147": ; preds = %"$False_143" + call void @_out_of_gas() + br label %"$have_gas_148" + +"$have_gas_148": ; preds = %"$out_of_gas_147", %"$False_143" + %"$consume_149" = sub i64 %"$gasrem_145", 1 + store i64 %"$consume_149", i64* @_gasrem + %"$adtval_150_load" = load i8*, i8** @_execptr + %"$adtval_150_salloc" = call i8* @_salloc(i8* %"$adtval_150_load", i64 1) + %"$adtval_150" = bitcast i8* %"$adtval_150_salloc" to %CName_False* + %"$adtgep_151" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_150", i32 0, i32 0 + store i8 1, i8* %"$adtgep_151" + %"$adtptr_152" = bitcast %CName_False* %"$adtval_150" to %TName_Bool* + store %TName_Bool* %"$adtptr_152", %TName_Bool** %"$retval_25" + br label %"$matchsucc_138" + +"$True_153": ; preds = %"$have_gas_136" + %"$b_154" = bitcast %TName_Bool* %"$b_139" to %CName_True* + %"$gasrem_155" = load i64, i64* @_gasrem + %"$gascmp_156" = icmp ugt i64 1, %"$gasrem_155" + br i1 %"$gascmp_156", label %"$out_of_gas_157", label %"$have_gas_158" + +"$out_of_gas_157": ; preds = %"$True_153" + call void @_out_of_gas() + br label %"$have_gas_158" + +"$have_gas_158": ; preds = %"$out_of_gas_157", %"$True_153" + %"$consume_159" = sub i64 %"$gasrem_155", 1 + store i64 %"$consume_159", i64* @_gasrem + store %TName_Bool* %1, %TName_Bool** %"$retval_25" + br label %"$matchsucc_138" + +"$empty_default_142": ; preds = %"$have_gas_136" + br label %"$matchsucc_138" + +"$matchsucc_138": ; preds = %"$have_gas_158", %"$have_gas_148", %"$empty_default_142" + %"$$retval_25_160" = load %TName_Bool*, %TName_Bool** %"$retval_25" + ret %TName_Bool* %"$$retval_25_160" } -define internal { %TName_Bool* (i8*, %TName_Bool*)*, i8* } @"$fundef_23"(%"$$fundef_23_env_120"* %0, %TName_Bool* %1) { +define internal { %TName_Bool* (i8*, %TName_Bool*)*, i8* } @"$fundef_22"(%"$$fundef_22_env_119"* %0, %TName_Bool* %1) { entry: - %"$retval_24" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$$fundef_25_envp_121_load" = load i8*, i8** @_execptr - %"$$fundef_25_envp_121_salloc" = call i8* @_salloc(i8* %"$$fundef_25_envp_121_load", i64 8) - %"$$fundef_25_envp_121" = bitcast i8* %"$$fundef_25_envp_121_salloc" to %"$$fundef_25_env_119"* - %"$$fundef_25_env_voidp_123" = bitcast %"$$fundef_25_env_119"* %"$$fundef_25_envp_121" to i8* - %"$$fundef_25_cloval_124" = insertvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } { %TName_Bool* (i8*, %TName_Bool*)* bitcast (%TName_Bool* (%"$$fundef_25_env_119"*, %TName_Bool*)* @"$fundef_25" to %TName_Bool* (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_25_env_voidp_123", 1 - %"$$fundef_25_env_b_125" = getelementptr inbounds %"$$fundef_25_env_119", %"$$fundef_25_env_119"* %"$$fundef_25_envp_121", i32 0, i32 0 - store %TName_Bool* %1, %TName_Bool** %"$$fundef_25_env_b_125" - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$fundef_25_cloval_124", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_24" - %"$$retval_24_126" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_24" - ret { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$retval_24_126" + %"$retval_23" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$gasrem_120" = load i64, i64* @_gasrem + %"$gascmp_121" = icmp ugt i64 1, %"$gasrem_120" + br i1 %"$gascmp_121", label %"$out_of_gas_122", label %"$have_gas_123" + +"$out_of_gas_122": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_123" + +"$have_gas_123": ; preds = %"$out_of_gas_122", %entry + %"$consume_124" = sub i64 %"$gasrem_120", 1 + store i64 %"$consume_124", i64* @_gasrem + %"$$fundef_24_envp_125_load" = load i8*, i8** @_execptr + %"$$fundef_24_envp_125_salloc" = call i8* @_salloc(i8* %"$$fundef_24_envp_125_load", i64 8) + %"$$fundef_24_envp_125" = bitcast i8* %"$$fundef_24_envp_125_salloc" to %"$$fundef_24_env_118"* + %"$$fundef_24_env_voidp_127" = bitcast %"$$fundef_24_env_118"* %"$$fundef_24_envp_125" to i8* + %"$$fundef_24_cloval_128" = insertvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } { %TName_Bool* (i8*, %TName_Bool*)* bitcast (%TName_Bool* (%"$$fundef_24_env_118"*, %TName_Bool*)* @"$fundef_24" to %TName_Bool* (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_24_env_voidp_127", 1 + %"$$fundef_24_env_b_129" = getelementptr inbounds %"$$fundef_24_env_118", %"$$fundef_24_env_118"* %"$$fundef_24_envp_125", i32 0, i32 0 + store %TName_Bool* %1, %TName_Bool** %"$$fundef_24_env_b_129" + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$fundef_24_cloval_128", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_23" + %"$$retval_23_130" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_23" + ret { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$retval_23_130" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) define void @_init_libs() { entry: - store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)* bitcast ({ %TName_Bool* (i8*, %TName_Bool*)*, i8* } (%"$$fundef_23_env_120"*, %TName_Bool*)* @"$fundef_23" to { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*), i8* null }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb + %"$gasrem_161" = load i64, i64* @_gasrem + %"$gascmp_162" = icmp ugt i64 1, %"$gasrem_161" + br i1 %"$gascmp_162", label %"$out_of_gas_163", label %"$have_gas_164" + +"$out_of_gas_163": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_164" + +"$have_gas_164": ; preds = %"$out_of_gas_163", %entry + %"$consume_165" = sub i64 %"$gasrem_161", 1 + store i64 %"$consume_165", i64* @_gasrem + store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)* bitcast ({ %TName_Bool* (i8*, %TName_Bool*)*, i8* } (%"$$fundef_22_env_119"*, %TName_Bool*)* @"$fundef_22" to { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*), i8* null }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb ret void } define void @_init_state() { entry: - %"$f_s1_27" = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_145", i32 0, i32 0), i32 3 }, %String* %"$f_s1_27" - %"$execptr_load_146" = load i8*, i8** @_execptr - %"$$f_s1_27_148" = load %String, %String* %"$f_s1_27" - %"$update_value_149" = alloca %String - store %String %"$$f_s1_27_148", %String* %"$update_value_149" - %"$update_value_150" = bitcast %String* %"$update_value_149" to i8* - call void @_update_field(i8* %"$execptr_load_146", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_s1_147", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_50", i32 0, i8* null, i8* %"$update_value_150") - %"$f_m1_28" = alloca %Map_String_String* - %"$execptr_load_151" = load i8*, i8** @_execptr - %"$_new_empty_map_call_152" = call i8* @_new_empty_map(i8* %"$execptr_load_151") - %"$Emp_153" = bitcast i8* %"$_new_empty_map_call_152" to %Map_String_String* - store %Map_String_String* %"$Emp_153", %Map_String_String** %"$f_m1_28" - %"$execptr_load_154" = load i8*, i8** @_execptr - %"$$f_m1_28_156" = load %Map_String_String*, %Map_String_String** %"$f_m1_28" - %"$update_value_157" = bitcast %Map_String_String* %"$$f_m1_28_156" to i8* - call void @_update_field(i8* %"$execptr_load_154", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_155", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_73", i32 0, i8* null, i8* %"$update_value_157") - %"$f_m2_29" = alloca %"Map_String_Map_(String)_(String)"* - %"$execptr_load_158" = load i8*, i8** @_execptr - %"$_new_empty_map_call_159" = call i8* @_new_empty_map(i8* %"$execptr_load_158") - %"$Emp_160" = bitcast i8* %"$_new_empty_map_call_159" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$Emp_160", %"Map_String_Map_(String)_(String)"** %"$f_m2_29" - %"$execptr_load_161" = load i8*, i8** @_execptr - %"$$f_m2_29_163" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %"$f_m2_29" - %"$update_value_164" = bitcast %"Map_String_Map_(String)_(String)"* %"$$f_m2_29_163" to i8* - call void @_update_field(i8* %"$execptr_load_161", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_162", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i8* %"$update_value_164") - %"$f_m3_30" = alloca %"Map_String_Map_(String)_(Map_(String)_(String))"* - %"$execptr_load_165" = load i8*, i8** @_execptr - %"$_new_empty_map_call_166" = call i8* @_new_empty_map(i8* %"$execptr_load_165") - %"$Emp_167" = bitcast i8* %"$_new_empty_map_call_166" to %"Map_String_Map_(String)_(Map_(String)_(String))"* - store %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$Emp_167", %"Map_String_Map_(String)_(Map_(String)_(String))"** %"$f_m3_30" - %"$execptr_load_168" = load i8*, i8** @_execptr - %"$$f_m3_30_170" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %"$f_m3_30" - %"$update_value_171" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$$f_m3_30_170" to i8* - call void @_update_field(i8* %"$execptr_load_168", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m3_169", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 0, i8* null, i8* %"$update_value_171") - %"$f_m_31" = alloca %"Map_String_Map_(String)_(String)"* - %"$execptr_load_172" = load i8*, i8** @_execptr - %"$_new_empty_map_call_173" = call i8* @_new_empty_map(i8* %"$execptr_load_172") - %"$Emp_174" = bitcast i8* %"$_new_empty_map_call_173" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$Emp_174", %"Map_String_Map_(String)_(String)"** %"$f_m_31" + %"$f_s1_26" = alloca %String + %"$gasrem_169" = load i64, i64* @_gasrem + %"$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 + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_174", i32 0, i32 0), i32 3 }, %String* %"$f_s1_26" %"$execptr_load_175" = load i8*, i8** @_execptr - %"$$f_m_31_177" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %"$f_m_31" - %"$update_value_178" = bitcast %"Map_String_Map_(String)_(String)"* %"$$f_m_31_177" to i8* - call void @_update_field(i8* %"$execptr_load_175", i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$f_m_176", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i8* %"$update_value_178") + %"$$f_s1_26_177" = load %String, %String* %"$f_s1_26" + %"$update_value_178" = alloca %String + store %String %"$$f_s1_26_177", %String* %"$update_value_178" + %"$update_value_179" = bitcast %String* %"$update_value_178" to i8* + call void @_update_field(i8* %"$execptr_load_175", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_s1_176", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_49", i32 0, i8* null, i8* %"$update_value_179") + %"$f_m1_27" = alloca %Map_String_String* + %"$gasrem_180" = load i64, i64* @_gasrem + %"$gascmp_181" = icmp ugt i64 1, %"$gasrem_180" + br i1 %"$gascmp_181", label %"$out_of_gas_182", label %"$have_gas_183" + +"$out_of_gas_182": ; preds = %"$have_gas_172" + call void @_out_of_gas() + br label %"$have_gas_183" + +"$have_gas_183": ; preds = %"$out_of_gas_182", %"$have_gas_172" + %"$consume_184" = sub i64 %"$gasrem_180", 1 + store i64 %"$consume_184", i64* @_gasrem + %"$execptr_load_185" = load i8*, i8** @_execptr + %"$_new_empty_map_call_186" = call i8* @_new_empty_map(i8* %"$execptr_load_185") + %"$Emp_187" = bitcast i8* %"$_new_empty_map_call_186" to %Map_String_String* + store %Map_String_String* %"$Emp_187", %Map_String_String** %"$f_m1_27" + %"$execptr_load_188" = load i8*, i8** @_execptr + %"$$f_m1_27_190" = load %Map_String_String*, %Map_String_String** %"$f_m1_27" + %"$update_value_191" = bitcast %Map_String_String* %"$$f_m1_27_190" to i8* + call void @_update_field(i8* %"$execptr_load_188", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_189", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i8* %"$update_value_191") + %"$f_m2_28" = alloca %"Map_String_Map_(String)_(String)"* + %"$gasrem_192" = load i64, i64* @_gasrem + %"$gascmp_193" = icmp ugt i64 1, %"$gasrem_192" + br i1 %"$gascmp_193", label %"$out_of_gas_194", label %"$have_gas_195" + +"$out_of_gas_194": ; preds = %"$have_gas_183" + call void @_out_of_gas() + br label %"$have_gas_195" + +"$have_gas_195": ; preds = %"$out_of_gas_194", %"$have_gas_183" + %"$consume_196" = sub i64 %"$gasrem_192", 1 + store i64 %"$consume_196", i64* @_gasrem + %"$execptr_load_197" = load i8*, i8** @_execptr + %"$_new_empty_map_call_198" = call i8* @_new_empty_map(i8* %"$execptr_load_197") + %"$Emp_199" = bitcast i8* %"$_new_empty_map_call_198" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$Emp_199", %"Map_String_Map_(String)_(String)"** %"$f_m2_28" + %"$execptr_load_200" = load i8*, i8** @_execptr + %"$$f_m2_28_202" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %"$f_m2_28" + %"$update_value_203" = bitcast %"Map_String_Map_(String)_(String)"* %"$$f_m2_28_202" to i8* + call void @_update_field(i8* %"$execptr_load_200", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_201", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 0, i8* null, i8* %"$update_value_203") + %"$f_m3_29" = alloca %"Map_String_Map_(String)_(Map_(String)_(String))"* + %"$gasrem_204" = load i64, i64* @_gasrem + %"$gascmp_205" = icmp ugt i64 1, %"$gasrem_204" + br i1 %"$gascmp_205", label %"$out_of_gas_206", label %"$have_gas_207" + +"$out_of_gas_206": ; preds = %"$have_gas_195" + call void @_out_of_gas() + br label %"$have_gas_207" + +"$have_gas_207": ; preds = %"$out_of_gas_206", %"$have_gas_195" + %"$consume_208" = sub i64 %"$gasrem_204", 1 + store i64 %"$consume_208", i64* @_gasrem + %"$execptr_load_209" = load i8*, i8** @_execptr + %"$_new_empty_map_call_210" = call i8* @_new_empty_map(i8* %"$execptr_load_209") + %"$Emp_211" = bitcast i8* %"$_new_empty_map_call_210" to %"Map_String_Map_(String)_(Map_(String)_(String))"* + store %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$Emp_211", %"Map_String_Map_(String)_(Map_(String)_(String))"** %"$f_m3_29" + %"$execptr_load_212" = load i8*, i8** @_execptr + %"$$f_m3_29_214" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %"$f_m3_29" + %"$update_value_215" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$$f_m3_29_214" to i8* + call void @_update_field(i8* %"$execptr_load_212", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m3_213", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_70", i32 0, i8* null, i8* %"$update_value_215") + %"$f_m_30" = alloca %"Map_String_Map_(String)_(String)"* + %"$gasrem_216" = load i64, i64* @_gasrem + %"$gascmp_217" = icmp ugt i64 1, %"$gasrem_216" + br i1 %"$gascmp_217", label %"$out_of_gas_218", label %"$have_gas_219" + +"$out_of_gas_218": ; preds = %"$have_gas_207" + call void @_out_of_gas() + br label %"$have_gas_219" + +"$have_gas_219": ; preds = %"$out_of_gas_218", %"$have_gas_207" + %"$consume_220" = sub i64 %"$gasrem_216", 1 + store i64 %"$consume_220", i64* @_gasrem + %"$execptr_load_221" = load i8*, i8** @_execptr + %"$_new_empty_map_call_222" = call i8* @_new_empty_map(i8* %"$execptr_load_221") + %"$Emp_223" = bitcast i8* %"$_new_empty_map_call_222" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$Emp_223", %"Map_String_Map_(String)_(String)"** %"$f_m_30" + %"$execptr_load_224" = load i8*, i8** @_execptr + %"$$f_m_30_226" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %"$f_m_30" + %"$update_value_227" = bitcast %"Map_String_Map_(String)_(String)"* %"$$f_m_30_226" to i8* + call void @_update_field(i8* %"$execptr_load_224", i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$f_m_225", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 0, i8* null, i8* %"$update_value_227") ret void } @@ -422,610 +534,1710 @@ declare void @_update_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i8*) declare i8* @_new_empty_map(i8*) -define internal void @"$fail_179"(%Uint128 %_amount, [20 x i8]* %"$_sender_180", %String %tname) { +define internal void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$_sender_229", %String %tname) { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_180" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_229" + %"$gasrem_230" = load i64, i64* @_gasrem + %"$gascmp_231" = icmp ugt i64 1, %"$gasrem_230" + br i1 %"$gascmp_231", label %"$out_of_gas_232", label %"$have_gas_233" + +"$out_of_gas_232": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_233" + +"$have_gas_233": ; preds = %"$out_of_gas_232", %entry + %"$consume_234" = sub i64 %"$gasrem_230", 1 + store i64 %"$consume_234", i64* @_gasrem %e = alloca i8* - %"$msgobj_181_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_181_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_181_salloc_load", i64 81) - %"$msgobj_181_salloc" = bitcast i8* %"$msgobj_181_salloc_salloc" to [81 x i8]* - %"$msgobj_181" = bitcast [81 x i8]* %"$msgobj_181_salloc" to i8* - store i8 2, i8* %"$msgobj_181" - %"$msgobj_fname_183" = getelementptr i8, i8* %"$msgobj_181", i32 1 - %"$msgobj_fname_184" = bitcast i8* %"$msgobj_fname_183" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_182", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_184" - %"$msgobj_td_185" = getelementptr i8, i8* %"$msgobj_181", i32 17 - %"$msgobj_td_186" = bitcast i8* %"$msgobj_td_185" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_50", %_TyDescrTy_Typ** %"$msgobj_td_186" - %"$msgobj_v_188" = getelementptr i8, i8* %"$msgobj_181", i32 25 - %"$msgobj_v_189" = bitcast i8* %"$msgobj_v_188" to %String* - store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_187", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_189" - %"$msgobj_fname_191" = getelementptr i8, i8* %"$msgobj_181", i32 41 - %"$msgobj_fname_192" = bitcast i8* %"$msgobj_fname_191" to %String* - store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_190", i32 0, i32 0), i32 9 }, %String* %"$msgobj_fname_192" - %"$msgobj_td_193" = getelementptr i8, i8* %"$msgobj_181", i32 57 - %"$msgobj_td_194" = bitcast i8* %"$msgobj_td_193" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_50", %_TyDescrTy_Typ** %"$msgobj_td_194" - %"$msgobj_v_195" = getelementptr i8, i8* %"$msgobj_181", i32 65 - %"$msgobj_v_196" = bitcast i8* %"$msgobj_v_195" to %String* - store %String %tname, %String* %"$msgobj_v_196" - store i8* %"$msgobj_181", i8** %e - %"$execptr_load_198" = load i8*, i8** @_execptr - %"$e_199" = load i8*, i8** %e - call void @_throw(i8* %"$execptr_load_198", %_TyDescrTy_Typ* @"$TyDescr_Exception_58", i8* %"$e_199") + %"$gasrem_235" = load i64, i64* @_gasrem + %"$gascmp_236" = icmp ugt i64 1, %"$gasrem_235" + br i1 %"$gascmp_236", label %"$out_of_gas_237", label %"$have_gas_238" + +"$out_of_gas_237": ; preds = %"$have_gas_233" + call void @_out_of_gas() + br label %"$have_gas_238" + +"$have_gas_238": ; preds = %"$out_of_gas_237", %"$have_gas_233" + %"$consume_239" = sub i64 %"$gasrem_235", 1 + store i64 %"$consume_239", i64* @_gasrem + %"$msgobj_240_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_240_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_240_salloc_load", i64 81) + %"$msgobj_240_salloc" = bitcast i8* %"$msgobj_240_salloc_salloc" to [81 x i8]* + %"$msgobj_240" = bitcast [81 x i8]* %"$msgobj_240_salloc" to i8* + store i8 2, i8* %"$msgobj_240" + %"$msgobj_fname_242" = getelementptr i8, i8* %"$msgobj_240", i32 1 + %"$msgobj_fname_243" = bitcast i8* %"$msgobj_fname_242" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_241", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_243" + %"$msgobj_td_244" = getelementptr i8, i8* %"$msgobj_240", i32 17 + %"$msgobj_td_245" = bitcast i8* %"$msgobj_td_244" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_49", %_TyDescrTy_Typ** %"$msgobj_td_245" + %"$msgobj_v_247" = getelementptr i8, i8* %"$msgobj_240", i32 25 + %"$msgobj_v_248" = bitcast i8* %"$msgobj_v_247" to %String* + store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_246", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_248" + %"$msgobj_fname_250" = getelementptr i8, i8* %"$msgobj_240", i32 41 + %"$msgobj_fname_251" = bitcast i8* %"$msgobj_fname_250" to %String* + store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_249", i32 0, i32 0), i32 9 }, %String* %"$msgobj_fname_251" + %"$msgobj_td_252" = getelementptr i8, i8* %"$msgobj_240", i32 57 + %"$msgobj_td_253" = bitcast i8* %"$msgobj_td_252" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_49", %_TyDescrTy_Typ** %"$msgobj_td_253" + %"$msgobj_v_254" = getelementptr i8, i8* %"$msgobj_240", i32 65 + %"$msgobj_v_255" = bitcast i8* %"$msgobj_v_254" to %String* + store %String %tname, %String* %"$msgobj_v_255" + store i8* %"$msgobj_240", i8** %e + %"$execptr_load_257" = load i8*, i8** @_execptr + %"$e_258" = load i8*, i8** %e + call void @_throw(i8* %"$execptr_load_257", %_TyDescrTy_Typ* @"$TyDescr_Exception_57", i8* %"$e_258") ret void } declare void @_throw(i8*, %_TyDescrTy_Typ*, i8*) -define internal void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$_sender_201", %String %tname, %String %msg) { +define internal void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$_sender_260", %String %tname, %String %msg) { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_201" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_260" + %"$gasrem_261" = load i64, i64* @_gasrem + %"$gascmp_262" = icmp ugt i64 1, %"$gasrem_261" + br i1 %"$gascmp_262", label %"$out_of_gas_263", label %"$have_gas_264" + +"$out_of_gas_263": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_264" + +"$have_gas_264": ; preds = %"$out_of_gas_263", %entry + %"$consume_265" = sub i64 %"$gasrem_261", 1 + store i64 %"$consume_265", i64* @_gasrem %e = alloca i8* - %"$msgobj_202_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_202_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_202_salloc_load", i64 121) - %"$msgobj_202_salloc" = bitcast i8* %"$msgobj_202_salloc_salloc" to [121 x i8]* - %"$msgobj_202" = bitcast [121 x i8]* %"$msgobj_202_salloc" to i8* - store i8 3, i8* %"$msgobj_202" - %"$msgobj_fname_204" = getelementptr i8, i8* %"$msgobj_202", i32 1 - %"$msgobj_fname_205" = bitcast i8* %"$msgobj_fname_204" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_203", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_205" - %"$msgobj_td_206" = getelementptr i8, i8* %"$msgobj_202", i32 17 - %"$msgobj_td_207" = bitcast i8* %"$msgobj_td_206" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_50", %_TyDescrTy_Typ** %"$msgobj_td_207" - %"$msgobj_v_209" = getelementptr i8, i8* %"$msgobj_202", i32 25 - %"$msgobj_v_210" = bitcast i8* %"$msgobj_v_209" to %String* - store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_208", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_210" - %"$msgobj_fname_212" = getelementptr i8, i8* %"$msgobj_202", i32 41 - %"$msgobj_fname_213" = bitcast i8* %"$msgobj_fname_212" to %String* - store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_211", i32 0, i32 0), i32 9 }, %String* %"$msgobj_fname_213" - %"$msgobj_td_214" = getelementptr i8, i8* %"$msgobj_202", i32 57 - %"$msgobj_td_215" = bitcast i8* %"$msgobj_td_214" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_50", %_TyDescrTy_Typ** %"$msgobj_td_215" - %"$msgobj_v_216" = getelementptr i8, i8* %"$msgobj_202", i32 65 - %"$msgobj_v_217" = bitcast i8* %"$msgobj_v_216" to %String* - store %String %tname, %String* %"$msgobj_v_217" - %"$msgobj_fname_219" = getelementptr i8, i8* %"$msgobj_202", i32 81 - %"$msgobj_fname_220" = bitcast i8* %"$msgobj_fname_219" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_218", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_220" - %"$msgobj_td_221" = getelementptr i8, i8* %"$msgobj_202", i32 97 - %"$msgobj_td_222" = bitcast i8* %"$msgobj_td_221" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_50", %_TyDescrTy_Typ** %"$msgobj_td_222" - %"$msgobj_v_223" = getelementptr i8, i8* %"$msgobj_202", i32 105 - %"$msgobj_v_224" = bitcast i8* %"$msgobj_v_223" to %String* - store %String %msg, %String* %"$msgobj_v_224" - store i8* %"$msgobj_202", i8** %e - %"$execptr_load_226" = load i8*, i8** @_execptr - %"$e_227" = load i8*, i8** %e - call void @_throw(i8* %"$execptr_load_226", %_TyDescrTy_Typ* @"$TyDescr_Exception_58", i8* %"$e_227") + %"$gasrem_266" = load i64, i64* @_gasrem + %"$gascmp_267" = icmp ugt i64 1, %"$gasrem_266" + br i1 %"$gascmp_267", label %"$out_of_gas_268", label %"$have_gas_269" + +"$out_of_gas_268": ; preds = %"$have_gas_264" + call void @_out_of_gas() + br label %"$have_gas_269" + +"$have_gas_269": ; preds = %"$out_of_gas_268", %"$have_gas_264" + %"$consume_270" = sub i64 %"$gasrem_266", 1 + store i64 %"$consume_270", i64* @_gasrem + %"$msgobj_271_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_271_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_271_salloc_load", i64 121) + %"$msgobj_271_salloc" = bitcast i8* %"$msgobj_271_salloc_salloc" to [121 x i8]* + %"$msgobj_271" = bitcast [121 x i8]* %"$msgobj_271_salloc" to i8* + store i8 3, i8* %"$msgobj_271" + %"$msgobj_fname_273" = getelementptr i8, i8* %"$msgobj_271", i32 1 + %"$msgobj_fname_274" = bitcast i8* %"$msgobj_fname_273" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_272", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_274" + %"$msgobj_td_275" = getelementptr i8, i8* %"$msgobj_271", i32 17 + %"$msgobj_td_276" = bitcast i8* %"$msgobj_td_275" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_49", %_TyDescrTy_Typ** %"$msgobj_td_276" + %"$msgobj_v_278" = getelementptr i8, i8* %"$msgobj_271", i32 25 + %"$msgobj_v_279" = bitcast i8* %"$msgobj_v_278" to %String* + store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_277", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_279" + %"$msgobj_fname_281" = getelementptr i8, i8* %"$msgobj_271", i32 41 + %"$msgobj_fname_282" = bitcast i8* %"$msgobj_fname_281" to %String* + store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_280", i32 0, i32 0), i32 9 }, %String* %"$msgobj_fname_282" + %"$msgobj_td_283" = getelementptr i8, i8* %"$msgobj_271", i32 57 + %"$msgobj_td_284" = bitcast i8* %"$msgobj_td_283" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_49", %_TyDescrTy_Typ** %"$msgobj_td_284" + %"$msgobj_v_285" = getelementptr i8, i8* %"$msgobj_271", i32 65 + %"$msgobj_v_286" = bitcast i8* %"$msgobj_v_285" to %String* + store %String %tname, %String* %"$msgobj_v_286" + %"$msgobj_fname_288" = getelementptr i8, i8* %"$msgobj_271", i32 81 + %"$msgobj_fname_289" = bitcast i8* %"$msgobj_fname_288" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_287", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_289" + %"$msgobj_td_290" = getelementptr i8, i8* %"$msgobj_271", i32 97 + %"$msgobj_td_291" = bitcast i8* %"$msgobj_td_290" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_49", %_TyDescrTy_Typ** %"$msgobj_td_291" + %"$msgobj_v_292" = getelementptr i8, i8* %"$msgobj_271", i32 105 + %"$msgobj_v_293" = bitcast i8* %"$msgobj_v_292" to %String* + store %String %msg, %String* %"$msgobj_v_293" + store i8* %"$msgobj_271", i8** %e + %"$execptr_load_295" = load i8*, i8** @_execptr + %"$e_296" = load i8*, i8** %e + call void @_throw(i8* %"$execptr_load_295", %_TyDescrTy_Typ* @"$TyDescr_Exception_57", i8* %"$e_296") ret void } -define internal void @"$t1_228"(%Uint128 %_amount, [20 x i8]* %"$_sender_229") { +define internal void @"$t1_297"(%Uint128 %_amount, [20 x i8]* %"$_sender_298") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_229" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_298" + %"$gasrem_299" = load i64, i64* @_gasrem + %"$gascmp_300" = icmp ugt i64 1, %"$gasrem_299" + br i1 %"$gascmp_300", label %"$out_of_gas_301", label %"$have_gas_302" + +"$out_of_gas_301": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_302" + +"$have_gas_302": ; preds = %"$out_of_gas_301", %entry + %"$consume_303" = sub i64 %"$gasrem_299", 1 + store i64 %"$consume_303", i64* @_gasrem %tname = alloca %String - store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_230", i32 0, i32 0), i32 2 }, %String* %tname + %"$gasrem_304" = load i64, i64* @_gasrem + %"$gascmp_305" = icmp ugt i64 1, %"$gasrem_304" + br i1 %"$gascmp_305", label %"$out_of_gas_306", label %"$have_gas_307" + +"$out_of_gas_306": ; preds = %"$have_gas_302" + call void @_out_of_gas() + br label %"$have_gas_307" + +"$have_gas_307": ; preds = %"$out_of_gas_306", %"$have_gas_302" + %"$consume_308" = sub i64 %"$gasrem_304", 1 + store i64 %"$consume_308", i64* @_gasrem + store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_309", i32 0, i32 0), i32 2 }, %String* %tname %f = alloca %String - %"$execptr_load_231" = load i8*, i8** @_execptr - %"$f_233" = call i8* @_fetch_field(i8* %"$execptr_load_231", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_s1_232", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_50", i32 0, i8* null, i32 1) - %"$f_234" = bitcast i8* %"$f_233" to %String* - %"$f_235" = load %String, %String* %"$f_234" - store %String %"$f_235", %String* %f + %"$execptr_load_310" = load i8*, i8** @_execptr + %"$f_312" = call i8* @_fetch_field(i8* %"$execptr_load_310", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_s1_311", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_49", i32 0, i8* null, i32 1) + %"$f_313" = bitcast i8* %"$f_312" to %String* + %"$f_314" = load %String, %String* %"$f_313" + store %String %"$f_314", %String* %f + %"$_literal_cost_f_315" = alloca %String + %"$f_316" = load %String, %String* %f + store %String %"$f_316", %String* %"$_literal_cost_f_315" + %"$$_literal_cost_f_315_317" = bitcast %String* %"$_literal_cost_f_315" to i8* + %"$_literal_cost_call_318" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_49", i8* %"$$_literal_cost_f_315_317") + %"$gasadd_319" = add i64 %"$_literal_cost_call_318", 0 + %"$gasrem_320" = load i64, i64* @_gasrem + %"$gascmp_321" = icmp ugt i64 %"$gasadd_319", %"$gasrem_320" + br i1 %"$gascmp_321", label %"$out_of_gas_322", label %"$have_gas_323" + +"$out_of_gas_322": ; preds = %"$have_gas_307" + call void @_out_of_gas() + br label %"$have_gas_323" + +"$have_gas_323": ; preds = %"$out_of_gas_322", %"$have_gas_307" + %"$consume_324" = sub i64 %"$gasrem_320", %"$gasadd_319" + store i64 %"$consume_324", i64* @_gasrem + %"$gasrem_325" = load i64, i64* @_gasrem + %"$gascmp_326" = icmp ugt i64 1, %"$gasrem_325" + br i1 %"$gascmp_326", label %"$out_of_gas_327", label %"$have_gas_328" + +"$out_of_gas_327": ; preds = %"$have_gas_323" + call void @_out_of_gas() + br label %"$have_gas_328" + +"$have_gas_328": ; preds = %"$out_of_gas_327", %"$have_gas_323" + %"$consume_329" = sub i64 %"$gasrem_325", 1 + store i64 %"$consume_329", i64* @_gasrem %s = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_236", i32 0, i32 0), i32 3 }, %String* %s + %"$gasrem_330" = load i64, i64* @_gasrem + %"$gascmp_331" = icmp ugt i64 1, %"$gasrem_330" + br i1 %"$gascmp_331", label %"$out_of_gas_332", label %"$have_gas_333" + +"$out_of_gas_332": ; preds = %"$have_gas_328" + call void @_out_of_gas() + br label %"$have_gas_333" + +"$have_gas_333": ; preds = %"$out_of_gas_332", %"$have_gas_328" + %"$consume_334" = sub i64 %"$gasrem_330", 1 + store i64 %"$consume_334", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_335", i32 0, i32 0), i32 3 }, %String* %s + %"$gasrem_336" = load i64, i64* @_gasrem + %"$gascmp_337" = icmp ugt i64 1, %"$gasrem_336" + br i1 %"$gascmp_337", label %"$out_of_gas_338", label %"$have_gas_339" + +"$out_of_gas_338": ; preds = %"$have_gas_333" + call void @_out_of_gas() + br label %"$have_gas_339" + +"$have_gas_339": ; preds = %"$out_of_gas_338", %"$have_gas_333" + %"$consume_340" = sub i64 %"$gasrem_336", 1 + store i64 %"$consume_340", i64* @_gasrem %t = alloca %TName_Bool* - %"$execptr_load_237" = load i8*, i8** @_execptr - %"$f_238" = load %String, %String* %f - %"$s_239" = load %String, %String* %s - %"$eq_call_240" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_237", %String %"$f_238", %String %"$s_239") - store %TName_Bool* %"$eq_call_240", %TName_Bool** %t - %"$t_242" = load %TName_Bool*, %TName_Bool** %t - %"$t_tag_243" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$t_242", i32 0, i32 0 - %"$t_tag_244" = load i8, i8* %"$t_tag_243" - switch i8 %"$t_tag_244", label %"$empty_default_245" [ - i8 1, label %"$False_246" - i8 0, label %"$True_250" + %"$execptr_load_341" = load i8*, i8** @_execptr + %"$f_342" = load %String, %String* %f + %"$s_343" = load %String, %String* %s + %"$eq_call_344" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_341", %String %"$f_342", %String %"$s_343") + store %TName_Bool* %"$eq_call_344", %TName_Bool** %t + %"$gasrem_345" = load i64, i64* @_gasrem + %"$gascmp_346" = icmp ugt i64 2, %"$gasrem_345" + br i1 %"$gascmp_346", label %"$out_of_gas_347", label %"$have_gas_348" + +"$out_of_gas_347": ; preds = %"$have_gas_339" + call void @_out_of_gas() + br label %"$have_gas_348" + +"$have_gas_348": ; preds = %"$out_of_gas_347", %"$have_gas_339" + %"$consume_349" = sub i64 %"$gasrem_345", 2 + store i64 %"$consume_349", i64* @_gasrem + %"$t_351" = load %TName_Bool*, %TName_Bool** %t + %"$t_tag_352" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$t_351", i32 0, i32 0 + %"$t_tag_353" = load i8, i8* %"$t_tag_352" + switch i8 %"$t_tag_353", label %"$empty_default_354" [ + i8 1, label %"$False_355" + i8 0, label %"$True_364" ] -"$False_246": ; preds = %entry - %"$t_247" = bitcast %TName_Bool* %"$t_242" to %CName_False* - %"$fail__sender_248" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_248" - %"$tname_249" = load %String, %String* %tname - call void @"$fail_179"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_248", %String %"$tname_249") - br label %"$matchsucc_241" +"$False_355": ; preds = %"$have_gas_348" + %"$t_356" = bitcast %TName_Bool* %"$t_351" to %CName_False* + %"$gasrem_357" = load i64, i64* @_gasrem + %"$gascmp_358" = icmp ugt i64 1, %"$gasrem_357" + br i1 %"$gascmp_358", label %"$out_of_gas_359", label %"$have_gas_360" + +"$out_of_gas_359": ; preds = %"$False_355" + call void @_out_of_gas() + br label %"$have_gas_360" + +"$have_gas_360": ; preds = %"$out_of_gas_359", %"$False_355" + %"$consume_361" = sub i64 %"$gasrem_357", 1 + store i64 %"$consume_361", i64* @_gasrem + %"$fail__sender_362" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_362" + %"$tname_363" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_362", %String %"$tname_363") + br label %"$matchsucc_350" + +"$True_364": ; preds = %"$have_gas_348" + %"$t_365" = bitcast %TName_Bool* %"$t_351" to %CName_True* + br label %"$matchsucc_350" -"$True_250": ; preds = %entry - %"$t_251" = bitcast %TName_Bool* %"$t_242" to %CName_True* - br label %"$matchsucc_241" +"$empty_default_354": ; preds = %"$have_gas_348" + br label %"$matchsucc_350" -"$empty_default_245": ; preds = %entry - br label %"$matchsucc_241" +"$matchsucc_350": ; preds = %"$True_364", %"$have_gas_360", %"$empty_default_354" + %"$gasrem_366" = load i64, i64* @_gasrem + %"$gascmp_367" = icmp ugt i64 1, %"$gasrem_366" + br i1 %"$gascmp_367", label %"$out_of_gas_368", label %"$have_gas_369" -"$matchsucc_241": ; preds = %"$True_250", %"$False_246", %"$empty_default_245" +"$out_of_gas_368": ; preds = %"$matchsucc_350" + call void @_out_of_gas() + br label %"$have_gas_369" + +"$have_gas_369": ; preds = %"$out_of_gas_368", %"$matchsucc_350" + %"$consume_370" = sub i64 %"$gasrem_366", 1 + store i64 %"$consume_370", i64* @_gasrem %s2 = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_252", i32 0, i32 0), i32 3 }, %String* %s2 - %"$execptr_load_253" = load i8*, i8** @_execptr - %"$s2_255" = load %String, %String* %s2 - %"$update_value_256" = alloca %String - store %String %"$s2_255", %String* %"$update_value_256" - %"$update_value_257" = bitcast %String* %"$update_value_256" to i8* - call void @_update_field(i8* %"$execptr_load_253", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_s1_254", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_50", i32 0, i8* null, i8* %"$update_value_257") + %"$gasrem_371" = load i64, i64* @_gasrem + %"$gascmp_372" = icmp ugt i64 1, %"$gasrem_371" + br i1 %"$gascmp_372", label %"$out_of_gas_373", label %"$have_gas_374" + +"$out_of_gas_373": ; preds = %"$have_gas_369" + call void @_out_of_gas() + br label %"$have_gas_374" + +"$have_gas_374": ; preds = %"$out_of_gas_373", %"$have_gas_369" + %"$consume_375" = sub i64 %"$gasrem_371", 1 + store i64 %"$consume_375", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_376", i32 0, i32 0), i32 3 }, %String* %s2 + %"$_literal_cost_s2_377" = alloca %String + %"$s2_378" = load %String, %String* %s2 + store %String %"$s2_378", %String* %"$_literal_cost_s2_377" + %"$$_literal_cost_s2_377_379" = bitcast %String* %"$_literal_cost_s2_377" to i8* + %"$_literal_cost_call_380" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_49", i8* %"$$_literal_cost_s2_377_379") + %"$gasrem_381" = load i64, i64* @_gasrem + %"$gascmp_382" = icmp ugt i64 %"$_literal_cost_call_380", %"$gasrem_381" + br i1 %"$gascmp_382", label %"$out_of_gas_383", label %"$have_gas_384" + +"$out_of_gas_383": ; preds = %"$have_gas_374" + call void @_out_of_gas() + br label %"$have_gas_384" + +"$have_gas_384": ; preds = %"$out_of_gas_383", %"$have_gas_374" + %"$consume_385" = sub i64 %"$gasrem_381", %"$_literal_cost_call_380" + store i64 %"$consume_385", i64* @_gasrem + %"$execptr_load_386" = load i8*, i8** @_execptr + %"$s2_388" = load %String, %String* %s2 + %"$update_value_389" = alloca %String + store %String %"$s2_388", %String* %"$update_value_389" + %"$update_value_390" = bitcast %String* %"$update_value_389" to i8* + call void @_update_field(i8* %"$execptr_load_386", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_s1_387", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_49", i32 0, i8* null, i8* %"$update_value_390") ret void } declare i8* @_fetch_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i32) +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + declare %TName_Bool* @_eq_String(i8*, %String, %String) define void @t1(i8* %0) { entry: - %"$_amount_259" = getelementptr i8, i8* %0, i32 0 - %"$_amount_260" = bitcast i8* %"$_amount_259" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_260" - %"$_sender_261" = getelementptr i8, i8* %0, i32 16 - %"$_sender_262" = bitcast i8* %"$_sender_261" to [20 x i8]* - call void @"$t1_228"(%Uint128 %_amount, [20 x i8]* %"$_sender_262") + %"$_amount_392" = getelementptr i8, i8* %0, i32 0 + %"$_amount_393" = bitcast i8* %"$_amount_392" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_393" + %"$_sender_394" = getelementptr i8, i8* %0, i32 16 + %"$_sender_395" = bitcast i8* %"$_sender_394" to [20 x i8]* + call void @"$t1_297"(%Uint128 %_amount, [20 x i8]* %"$_sender_395") ret void } -define internal void @"$t2_263"(%Uint128 %_amount, [20 x i8]* %"$_sender_264") { +define internal void @"$t2_396"(%Uint128 %_amount, [20 x i8]* %"$_sender_397") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_264" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_397" + %"$gasrem_398" = load i64, i64* @_gasrem + %"$gascmp_399" = icmp ugt i64 1, %"$gasrem_398" + br i1 %"$gascmp_399", label %"$out_of_gas_400", label %"$have_gas_401" + +"$out_of_gas_400": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_401" + +"$have_gas_401": ; preds = %"$out_of_gas_400", %entry + %"$consume_402" = sub i64 %"$gasrem_398", 1 + store i64 %"$consume_402", i64* @_gasrem %tname = alloca %String - store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_265", i32 0, i32 0), i32 2 }, %String* %tname + %"$gasrem_403" = load i64, i64* @_gasrem + %"$gascmp_404" = icmp ugt i64 1, %"$gasrem_403" + br i1 %"$gascmp_404", label %"$out_of_gas_405", label %"$have_gas_406" + +"$out_of_gas_405": ; preds = %"$have_gas_401" + call void @_out_of_gas() + br label %"$have_gas_406" + +"$have_gas_406": ; preds = %"$out_of_gas_405", %"$have_gas_401" + %"$consume_407" = sub i64 %"$gasrem_403", 1 + store i64 %"$consume_407", i64* @_gasrem + store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_408", i32 0, i32 0), i32 2 }, %String* %tname %f = alloca %String - %"$execptr_load_266" = load i8*, i8** @_execptr - %"$f_268" = call i8* @_fetch_field(i8* %"$execptr_load_266", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_s1_267", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_50", i32 0, i8* null, i32 1) - %"$f_269" = bitcast i8* %"$f_268" to %String* - %"$f_270" = load %String, %String* %"$f_269" - store %String %"$f_270", %String* %f + %"$execptr_load_409" = load i8*, i8** @_execptr + %"$f_411" = call i8* @_fetch_field(i8* %"$execptr_load_409", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_s1_410", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_49", i32 0, i8* null, i32 1) + %"$f_412" = bitcast i8* %"$f_411" to %String* + %"$f_413" = load %String, %String* %"$f_412" + store %String %"$f_413", %String* %f + %"$_literal_cost_f_414" = alloca %String + %"$f_415" = load %String, %String* %f + store %String %"$f_415", %String* %"$_literal_cost_f_414" + %"$$_literal_cost_f_414_416" = bitcast %String* %"$_literal_cost_f_414" to i8* + %"$_literal_cost_call_417" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_49", i8* %"$$_literal_cost_f_414_416") + %"$gasadd_418" = add i64 %"$_literal_cost_call_417", 0 + %"$gasrem_419" = load i64, i64* @_gasrem + %"$gascmp_420" = icmp ugt i64 %"$gasadd_418", %"$gasrem_419" + br i1 %"$gascmp_420", label %"$out_of_gas_421", label %"$have_gas_422" + +"$out_of_gas_421": ; preds = %"$have_gas_406" + call void @_out_of_gas() + br label %"$have_gas_422" + +"$have_gas_422": ; preds = %"$out_of_gas_421", %"$have_gas_406" + %"$consume_423" = sub i64 %"$gasrem_419", %"$gasadd_418" + store i64 %"$consume_423", i64* @_gasrem + %"$gasrem_424" = load i64, i64* @_gasrem + %"$gascmp_425" = icmp ugt i64 1, %"$gasrem_424" + br i1 %"$gascmp_425", label %"$out_of_gas_426", label %"$have_gas_427" + +"$out_of_gas_426": ; preds = %"$have_gas_422" + call void @_out_of_gas() + br label %"$have_gas_427" + +"$have_gas_427": ; preds = %"$out_of_gas_426", %"$have_gas_422" + %"$consume_428" = sub i64 %"$gasrem_424", 1 + store i64 %"$consume_428", i64* @_gasrem %s = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_271", i32 0, i32 0), i32 3 }, %String* %s + %"$gasrem_429" = load i64, i64* @_gasrem + %"$gascmp_430" = icmp ugt i64 1, %"$gasrem_429" + br i1 %"$gascmp_430", label %"$out_of_gas_431", label %"$have_gas_432" + +"$out_of_gas_431": ; preds = %"$have_gas_427" + call void @_out_of_gas() + br label %"$have_gas_432" + +"$have_gas_432": ; preds = %"$out_of_gas_431", %"$have_gas_427" + %"$consume_433" = sub i64 %"$gasrem_429", 1 + store i64 %"$consume_433", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_434", i32 0, i32 0), i32 3 }, %String* %s + %"$gasrem_435" = load i64, i64* @_gasrem + %"$gascmp_436" = icmp ugt i64 1, %"$gasrem_435" + br i1 %"$gascmp_436", label %"$out_of_gas_437", label %"$have_gas_438" + +"$out_of_gas_437": ; preds = %"$have_gas_432" + call void @_out_of_gas() + br label %"$have_gas_438" + +"$have_gas_438": ; preds = %"$out_of_gas_437", %"$have_gas_432" + %"$consume_439" = sub i64 %"$gasrem_435", 1 + store i64 %"$consume_439", i64* @_gasrem %t = alloca %TName_Bool* - %"$execptr_load_272" = load i8*, i8** @_execptr - %"$f_273" = load %String, %String* %f - %"$s_274" = load %String, %String* %s - %"$eq_call_275" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_272", %String %"$f_273", %String %"$s_274") - store %TName_Bool* %"$eq_call_275", %TName_Bool** %t - %"$t_277" = load %TName_Bool*, %TName_Bool** %t - %"$t_tag_278" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$t_277", i32 0, i32 0 - %"$t_tag_279" = load i8, i8* %"$t_tag_278" - switch i8 %"$t_tag_279", label %"$empty_default_280" [ - i8 1, label %"$False_281" - i8 0, label %"$True_285" + %"$execptr_load_440" = load i8*, i8** @_execptr + %"$f_441" = load %String, %String* %f + %"$s_442" = load %String, %String* %s + %"$eq_call_443" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_440", %String %"$f_441", %String %"$s_442") + store %TName_Bool* %"$eq_call_443", %TName_Bool** %t + %"$gasrem_444" = load i64, i64* @_gasrem + %"$gascmp_445" = icmp ugt i64 2, %"$gasrem_444" + br i1 %"$gascmp_445", label %"$out_of_gas_446", label %"$have_gas_447" + +"$out_of_gas_446": ; preds = %"$have_gas_438" + call void @_out_of_gas() + br label %"$have_gas_447" + +"$have_gas_447": ; preds = %"$out_of_gas_446", %"$have_gas_438" + %"$consume_448" = sub i64 %"$gasrem_444", 2 + store i64 %"$consume_448", i64* @_gasrem + %"$t_450" = load %TName_Bool*, %TName_Bool** %t + %"$t_tag_451" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$t_450", i32 0, i32 0 + %"$t_tag_452" = load i8, i8* %"$t_tag_451" + switch i8 %"$t_tag_452", label %"$empty_default_453" [ + i8 1, label %"$False_454" + i8 0, label %"$True_463" ] -"$False_281": ; preds = %entry - %"$t_282" = bitcast %TName_Bool* %"$t_277" to %CName_False* - %"$fail__sender_283" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_283" - %"$tname_284" = load %String, %String* %tname - call void @"$fail_179"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_283", %String %"$tname_284") - br label %"$matchsucc_276" - -"$True_285": ; preds = %entry - %"$t_286" = bitcast %TName_Bool* %"$t_277" to %CName_True* - br label %"$matchsucc_276" - -"$empty_default_280": ; preds = %entry - br label %"$matchsucc_276" - -"$matchsucc_276": ; preds = %"$True_285", %"$False_281", %"$empty_default_280" +"$False_454": ; preds = %"$have_gas_447" + %"$t_455" = bitcast %TName_Bool* %"$t_450" to %CName_False* + %"$gasrem_456" = load i64, i64* @_gasrem + %"$gascmp_457" = icmp ugt i64 1, %"$gasrem_456" + br i1 %"$gascmp_457", label %"$out_of_gas_458", label %"$have_gas_459" + +"$out_of_gas_458": ; preds = %"$False_454" + call void @_out_of_gas() + br label %"$have_gas_459" + +"$have_gas_459": ; preds = %"$out_of_gas_458", %"$False_454" + %"$consume_460" = sub i64 %"$gasrem_456", 1 + store i64 %"$consume_460", i64* @_gasrem + %"$fail__sender_461" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_461" + %"$tname_462" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_461", %String %"$tname_462") + br label %"$matchsucc_449" + +"$True_463": ; preds = %"$have_gas_447" + %"$t_464" = bitcast %TName_Bool* %"$t_450" to %CName_True* + br label %"$matchsucc_449" + +"$empty_default_453": ; preds = %"$have_gas_447" + br label %"$matchsucc_449" + +"$matchsucc_449": ; preds = %"$True_463", %"$have_gas_459", %"$empty_default_453" + %"$gasrem_465" = load i64, i64* @_gasrem + %"$gascmp_466" = icmp ugt i64 1, %"$gasrem_465" + br i1 %"$gascmp_466", label %"$out_of_gas_467", label %"$have_gas_468" + +"$out_of_gas_467": ; preds = %"$matchsucc_449" + call void @_out_of_gas() + br label %"$have_gas_468" + +"$have_gas_468": ; preds = %"$out_of_gas_467", %"$matchsucc_449" + %"$consume_469" = sub i64 %"$gasrem_465", 1 + store i64 %"$consume_469", i64* @_gasrem %key1 = alloca %String - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_287", i32 0, i32 0), i32 4 }, %String* %key1 + %"$gasrem_470" = load i64, i64* @_gasrem + %"$gascmp_471" = icmp ugt i64 1, %"$gasrem_470" + br i1 %"$gascmp_471", label %"$out_of_gas_472", label %"$have_gas_473" + +"$out_of_gas_472": ; preds = %"$have_gas_468" + call void @_out_of_gas() + br label %"$have_gas_473" + +"$have_gas_473": ; preds = %"$out_of_gas_472", %"$have_gas_468" + %"$consume_474" = sub i64 %"$gasrem_470", 1 + store i64 %"$consume_474", i64* @_gasrem + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_475", i32 0, i32 0), i32 4 }, %String* %key1 + %"$gasrem_476" = load i64, i64* @_gasrem + %"$gascmp_477" = icmp ugt i64 1, %"$gasrem_476" + br i1 %"$gascmp_477", label %"$out_of_gas_478", label %"$have_gas_479" + +"$out_of_gas_478": ; preds = %"$have_gas_473" + call void @_out_of_gas() + br label %"$have_gas_479" + +"$have_gas_479": ; preds = %"$out_of_gas_478", %"$have_gas_473" + %"$consume_480" = sub i64 %"$gasrem_476", 1 + store i64 %"$consume_480", i64* @_gasrem %val1 = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_288", i32 0, i32 0), i32 3 }, %String* %val1 - %"$indices_buf_289_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_289_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_289_salloc_load", i64 16) - %"$indices_buf_289_salloc" = bitcast i8* %"$indices_buf_289_salloc_salloc" to [16 x i8]* - %"$indices_buf_289" = bitcast [16 x i8]* %"$indices_buf_289_salloc" to i8* - %"$key1_290" = load %String, %String* %key1 - %"$indices_gep_291" = getelementptr i8, i8* %"$indices_buf_289", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_291" to %String* - store %String %"$key1_290", %String* %indices_cast - %"$execptr_load_292" = load i8*, i8** @_execptr - %"$val1_294" = load %String, %String* %val1 - %"$update_value_295" = alloca %String - store %String %"$val1_294", %String* %"$update_value_295" - %"$update_value_296" = bitcast %String* %"$update_value_295" to i8* - call void @_update_field(i8* %"$execptr_load_292", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_293", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_73", i32 1, i8* %"$indices_buf_289", i8* %"$update_value_296") + %"$gasrem_481" = load i64, i64* @_gasrem + %"$gascmp_482" = icmp ugt i64 1, %"$gasrem_481" + br i1 %"$gascmp_482", label %"$out_of_gas_483", label %"$have_gas_484" + +"$out_of_gas_483": ; preds = %"$have_gas_479" + call void @_out_of_gas() + br label %"$have_gas_484" + +"$have_gas_484": ; preds = %"$out_of_gas_483", %"$have_gas_479" + %"$consume_485" = sub i64 %"$gasrem_481", 1 + store i64 %"$consume_485", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_486", i32 0, i32 0), i32 3 }, %String* %val1 + %"$_literal_cost_val1_487" = alloca %String + %"$val1_488" = load %String, %String* %val1 + store %String %"$val1_488", %String* %"$_literal_cost_val1_487" + %"$$_literal_cost_val1_487_489" = bitcast %String* %"$_literal_cost_val1_487" to i8* + %"$_literal_cost_call_490" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_49", i8* %"$$_literal_cost_val1_487_489") + %"$gasadd_491" = add i64 %"$_literal_cost_call_490", 1 + %"$gasrem_492" = load i64, i64* @_gasrem + %"$gascmp_493" = icmp ugt i64 %"$gasadd_491", %"$gasrem_492" + br i1 %"$gascmp_493", label %"$out_of_gas_494", label %"$have_gas_495" + +"$out_of_gas_494": ; preds = %"$have_gas_484" + call void @_out_of_gas() + br label %"$have_gas_495" + +"$have_gas_495": ; preds = %"$out_of_gas_494", %"$have_gas_484" + %"$consume_496" = sub i64 %"$gasrem_492", %"$gasadd_491" + store i64 %"$consume_496", i64* @_gasrem + %"$indices_buf_497_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_497_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_497_salloc_load", i64 16) + %"$indices_buf_497_salloc" = bitcast i8* %"$indices_buf_497_salloc_salloc" to [16 x i8]* + %"$indices_buf_497" = bitcast [16 x i8]* %"$indices_buf_497_salloc" to i8* + %"$key1_498" = load %String, %String* %key1 + %"$indices_gep_499" = getelementptr i8, i8* %"$indices_buf_497", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_499" to %String* + store %String %"$key1_498", %String* %indices_cast + %"$execptr_load_500" = load i8*, i8** @_execptr + %"$val1_502" = load %String, %String* %val1 + %"$update_value_503" = alloca %String + store %String %"$val1_502", %String* %"$update_value_503" + %"$update_value_504" = bitcast %String* %"$update_value_503" to i8* + call void @_update_field(i8* %"$execptr_load_500", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_501", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_497", i8* %"$update_value_504") ret void } define void @t2(i8* %0) { entry: - %"$_amount_298" = getelementptr i8, i8* %0, i32 0 - %"$_amount_299" = bitcast i8* %"$_amount_298" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_299" - %"$_sender_300" = getelementptr i8, i8* %0, i32 16 - %"$_sender_301" = bitcast i8* %"$_sender_300" to [20 x i8]* - call void @"$t2_263"(%Uint128 %_amount, [20 x i8]* %"$_sender_301") + %"$_amount_506" = getelementptr i8, i8* %0, i32 0 + %"$_amount_507" = bitcast i8* %"$_amount_506" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_507" + %"$_sender_508" = getelementptr i8, i8* %0, i32 16 + %"$_sender_509" = bitcast i8* %"$_sender_508" to [20 x i8]* + call void @"$t2_396"(%Uint128 %_amount, [20 x i8]* %"$_sender_509") ret void } -define internal void @"$t3_302"(%Uint128 %_amount, [20 x i8]* %"$_sender_303") { +define internal void @"$t3_510"(%Uint128 %_amount, [20 x i8]* %"$_sender_511") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_303" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_511" + %"$gasrem_512" = load i64, i64* @_gasrem + %"$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 = %entry + call void @_out_of_gas() + br label %"$have_gas_515" + +"$have_gas_515": ; preds = %"$out_of_gas_514", %entry + %"$consume_516" = sub i64 %"$gasrem_512", 1 + store i64 %"$consume_516", i64* @_gasrem %tname = alloca %String - store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_304", i32 0, i32 0), i32 2 }, %String* %tname + %"$gasrem_517" = load i64, i64* @_gasrem + %"$gascmp_518" = icmp ugt i64 1, %"$gasrem_517" + br i1 %"$gascmp_518", label %"$out_of_gas_519", label %"$have_gas_520" + +"$out_of_gas_519": ; preds = %"$have_gas_515" + call void @_out_of_gas() + br label %"$have_gas_520" + +"$have_gas_520": ; preds = %"$out_of_gas_519", %"$have_gas_515" + %"$consume_521" = sub i64 %"$gasrem_517", 1 + store i64 %"$consume_521", i64* @_gasrem + store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_522", i32 0, i32 0), i32 2 }, %String* %tname + %"$gasrem_523" = load i64, i64* @_gasrem + %"$gascmp_524" = icmp ugt i64 1, %"$gasrem_523" + br i1 %"$gascmp_524", label %"$out_of_gas_525", label %"$have_gas_526" + +"$out_of_gas_525": ; preds = %"$have_gas_520" + call void @_out_of_gas() + br label %"$have_gas_526" + +"$have_gas_526": ; preds = %"$out_of_gas_525", %"$have_gas_520" + %"$consume_527" = sub i64 %"$gasrem_523", 1 + store i64 %"$consume_527", i64* @_gasrem %s = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_305", i32 0, i32 0), i32 3 }, %String* %s + %"$gasrem_528" = load i64, i64* @_gasrem + %"$gascmp_529" = icmp ugt i64 1, %"$gasrem_528" + br i1 %"$gascmp_529", label %"$out_of_gas_530", label %"$have_gas_531" + +"$out_of_gas_530": ; preds = %"$have_gas_526" + call void @_out_of_gas() + br label %"$have_gas_531" + +"$have_gas_531": ; preds = %"$out_of_gas_530", %"$have_gas_526" + %"$consume_532" = sub i64 %"$gasrem_528", 1 + store i64 %"$consume_532", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_533", i32 0, i32 0), i32 3 }, %String* %s + %"$gasrem_534" = load i64, i64* @_gasrem + %"$gascmp_535" = icmp ugt i64 1, %"$gasrem_534" + br i1 %"$gascmp_535", label %"$out_of_gas_536", label %"$have_gas_537" + +"$out_of_gas_536": ; preds = %"$have_gas_531" + call void @_out_of_gas() + br label %"$have_gas_537" + +"$have_gas_537": ; preds = %"$out_of_gas_536", %"$have_gas_531" + %"$consume_538" = sub i64 %"$gasrem_534", 1 + store i64 %"$consume_538", i64* @_gasrem %key1 = alloca %String - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_306", i32 0, i32 0), i32 4 }, %String* %key1 + %"$gasrem_539" = load i64, i64* @_gasrem + %"$gascmp_540" = icmp ugt i64 1, %"$gasrem_539" + br i1 %"$gascmp_540", label %"$out_of_gas_541", label %"$have_gas_542" + +"$out_of_gas_541": ; preds = %"$have_gas_537" + call void @_out_of_gas() + br label %"$have_gas_542" + +"$have_gas_542": ; preds = %"$out_of_gas_541", %"$have_gas_537" + %"$consume_543" = sub i64 %"$gasrem_539", 1 + store i64 %"$consume_543", i64* @_gasrem + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_544", i32 0, i32 0), i32 4 }, %String* %key1 %val1 = alloca %TName_Option_String* - %"$indices_buf_307_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_307_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_307_salloc_load", i64 16) - %"$indices_buf_307_salloc" = bitcast i8* %"$indices_buf_307_salloc_salloc" to [16 x i8]* - %"$indices_buf_307" = bitcast [16 x i8]* %"$indices_buf_307_salloc" to i8* - %"$key1_308" = load %String, %String* %key1 - %"$indices_gep_309" = getelementptr i8, i8* %"$indices_buf_307", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_309" to %String* - store %String %"$key1_308", %String* %indices_cast - %"$execptr_load_310" = load i8*, i8** @_execptr - %"$val1_312" = call i8* @_fetch_field(i8* %"$execptr_load_310", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_311", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_73", i32 1, i8* %"$indices_buf_307", i32 1) - %"$val1_313" = bitcast i8* %"$val1_312" to %TName_Option_String* - store %TName_Option_String* %"$val1_313", %TName_Option_String** %val1 - %"$val1_315" = load %TName_Option_String*, %TName_Option_String** %val1 - %"$val1_tag_316" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$val1_315", i32 0, i32 0 - %"$val1_tag_317" = load i8, i8* %"$val1_tag_316" - switch i8 %"$val1_tag_317", label %"$empty_default_318" [ - i8 0, label %"$Some_319" - i8 1, label %"$None_340" + %"$indices_buf_545_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_545_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_545_salloc_load", i64 16) + %"$indices_buf_545_salloc" = bitcast i8* %"$indices_buf_545_salloc_salloc" to [16 x i8]* + %"$indices_buf_545" = bitcast [16 x i8]* %"$indices_buf_545_salloc" to i8* + %"$key1_546" = load %String, %String* %key1 + %"$indices_gep_547" = getelementptr i8, i8* %"$indices_buf_545", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_547" to %String* + store %String %"$key1_546", %String* %indices_cast + %"$execptr_load_548" = load i8*, i8** @_execptr + %"$val1_550" = call i8* @_fetch_field(i8* %"$execptr_load_548", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_549", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_545", i32 1) + %"$val1_551" = bitcast i8* %"$val1_550" to %TName_Option_String* + store %TName_Option_String* %"$val1_551", %TName_Option_String** %val1 + %"$val1_552" = load %TName_Option_String*, %TName_Option_String** %val1 + %"$$val1_552_553" = bitcast %TName_Option_String* %"$val1_552" to i8* + %"$_literal_cost_call_554" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$val1_552_553") + %"$gasadd_555" = add i64 %"$_literal_cost_call_554", 0 + %"$gasadd_556" = add i64 %"$gasadd_555", 1 + %"$gasrem_557" = load i64, i64* @_gasrem + %"$gascmp_558" = icmp ugt i64 %"$gasadd_556", %"$gasrem_557" + br i1 %"$gascmp_558", label %"$out_of_gas_559", label %"$have_gas_560" + +"$out_of_gas_559": ; preds = %"$have_gas_542" + call void @_out_of_gas() + br label %"$have_gas_560" + +"$have_gas_560": ; preds = %"$out_of_gas_559", %"$have_gas_542" + %"$consume_561" = sub i64 %"$gasrem_557", %"$gasadd_556" + store i64 %"$consume_561", i64* @_gasrem + %"$gasrem_562" = load i64, i64* @_gasrem + %"$gascmp_563" = icmp ugt i64 2, %"$gasrem_562" + br i1 %"$gascmp_563", label %"$out_of_gas_564", label %"$have_gas_565" + +"$out_of_gas_564": ; preds = %"$have_gas_560" + call void @_out_of_gas() + br label %"$have_gas_565" + +"$have_gas_565": ; preds = %"$out_of_gas_564", %"$have_gas_560" + %"$consume_566" = sub i64 %"$gasrem_562", 2 + store i64 %"$consume_566", i64* @_gasrem + %"$val1_568" = load %TName_Option_String*, %TName_Option_String** %val1 + %"$val1_tag_569" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$val1_568", i32 0, i32 0 + %"$val1_tag_570" = load i8, i8* %"$val1_tag_569" + switch i8 %"$val1_tag_570", label %"$empty_default_571" [ + i8 0, label %"$Some_572" + i8 1, label %"$None_618" ] -"$Some_319": ; preds = %entry - %"$val1_320" = bitcast %TName_Option_String* %"$val1_315" to %CName_Some_String* - %"$val_gep_321" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$val1_320", i32 0, i32 1 - %"$val_load_322" = load %String, %String* %"$val_gep_321" +"$Some_572": ; preds = %"$have_gas_565" + %"$val1_573" = bitcast %TName_Option_String* %"$val1_568" to %CName_Some_String* + %"$val_gep_574" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$val1_573", i32 0, i32 1 + %"$val_load_575" = load %String, %String* %"$val_gep_574" %val = alloca %String - store %String %"$val_load_322", %String* %val + store %String %"$val_load_575", %String* %val + %"$gasrem_576" = load i64, i64* @_gasrem + %"$gascmp_577" = icmp ugt i64 1, %"$gasrem_576" + br i1 %"$gascmp_577", label %"$out_of_gas_578", label %"$have_gas_579" + +"$out_of_gas_578": ; preds = %"$Some_572" + call void @_out_of_gas() + br label %"$have_gas_579" + +"$have_gas_579": ; preds = %"$out_of_gas_578", %"$Some_572" + %"$consume_580" = sub i64 %"$gasrem_576", 1 + store i64 %"$consume_580", i64* @_gasrem %t = alloca %TName_Bool* - %"$execptr_load_323" = load i8*, i8** @_execptr - %"$val_324" = load %String, %String* %val - %"$s_325" = load %String, %String* %s - %"$eq_call_326" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_323", %String %"$val_324", %String %"$s_325") - store %TName_Bool* %"$eq_call_326", %TName_Bool** %t - %"$t_328" = load %TName_Bool*, %TName_Bool** %t - %"$t_tag_329" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$t_328", i32 0, i32 0 - %"$t_tag_330" = load i8, i8* %"$t_tag_329" - switch i8 %"$t_tag_330", label %"$empty_default_331" [ - i8 1, label %"$False_332" - i8 0, label %"$True_338" + %"$execptr_load_581" = load i8*, i8** @_execptr + %"$val_582" = load %String, %String* %val + %"$s_583" = load %String, %String* %s + %"$eq_call_584" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_581", %String %"$val_582", %String %"$s_583") + store %TName_Bool* %"$eq_call_584", %TName_Bool** %t + %"$gasrem_585" = load i64, i64* @_gasrem + %"$gascmp_586" = icmp ugt i64 2, %"$gasrem_585" + br i1 %"$gascmp_586", label %"$out_of_gas_587", label %"$have_gas_588" + +"$out_of_gas_587": ; preds = %"$have_gas_579" + call void @_out_of_gas() + br label %"$have_gas_588" + +"$have_gas_588": ; preds = %"$out_of_gas_587", %"$have_gas_579" + %"$consume_589" = sub i64 %"$gasrem_585", 2 + store i64 %"$consume_589", i64* @_gasrem + %"$t_591" = load %TName_Bool*, %TName_Bool** %t + %"$t_tag_592" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$t_591", i32 0, i32 0 + %"$t_tag_593" = load i8, i8* %"$t_tag_592" + switch i8 %"$t_tag_593", label %"$empty_default_594" [ + i8 1, label %"$False_595" + i8 0, label %"$True_616" ] -"$False_332": ; preds = %"$Some_319" - %"$t_333" = bitcast %TName_Bool* %"$t_328" to %CName_False* +"$False_595": ; preds = %"$have_gas_588" + %"$t_596" = bitcast %TName_Bool* %"$t_591" to %CName_False* + %"$gasrem_597" = load i64, i64* @_gasrem + %"$gascmp_598" = icmp ugt i64 1, %"$gasrem_597" + br i1 %"$gascmp_598", label %"$out_of_gas_599", label %"$have_gas_600" + +"$out_of_gas_599": ; preds = %"$False_595" + call void @_out_of_gas() + br label %"$have_gas_600" + +"$have_gas_600": ; preds = %"$out_of_gas_599", %"$False_595" + %"$consume_601" = sub i64 %"$gasrem_597", 1 + store i64 %"$consume_601", i64* @_gasrem %m = alloca %String - store %String { i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"$stringlit_334", i32 0, i32 0), i32 23 }, %String* %m - %"$fail_msg__sender_335" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_335" - %"$tname_336" = load %String, %String* %tname - %"$m_337" = load %String, %String* %m - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_335", %String %"$tname_336", %String %"$m_337") - br label %"$matchsucc_327" - -"$True_338": ; preds = %"$Some_319" - %"$t_339" = bitcast %TName_Bool* %"$t_328" to %CName_True* - br label %"$matchsucc_327" - -"$empty_default_331": ; preds = %"$Some_319" - br label %"$matchsucc_327" - -"$matchsucc_327": ; preds = %"$True_338", %"$False_332", %"$empty_default_331" - br label %"$matchsucc_314" - -"$None_340": ; preds = %entry - %"$val1_341" = bitcast %TName_Option_String* %"$val1_315" to %CName_None_String* - %"$fail__sender_342" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_342" - %"$tname_343" = load %String, %String* %tname - call void @"$fail_179"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_342", %String %"$tname_343") - br label %"$matchsucc_314" - -"$empty_default_318": ; preds = %entry - br label %"$matchsucc_314" - -"$matchsucc_314": ; preds = %"$None_340", %"$matchsucc_327", %"$empty_default_318" + %"$gasrem_602" = load i64, i64* @_gasrem + %"$gascmp_603" = icmp ugt i64 1, %"$gasrem_602" + br i1 %"$gascmp_603", label %"$out_of_gas_604", label %"$have_gas_605" + +"$out_of_gas_604": ; preds = %"$have_gas_600" + call void @_out_of_gas() + br label %"$have_gas_605" + +"$have_gas_605": ; preds = %"$out_of_gas_604", %"$have_gas_600" + %"$consume_606" = sub i64 %"$gasrem_602", 1 + store i64 %"$consume_606", i64* @_gasrem + store %String { i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"$stringlit_607", i32 0, i32 0), i32 23 }, %String* %m + %"$gasrem_608" = load i64, i64* @_gasrem + %"$gascmp_609" = icmp ugt i64 1, %"$gasrem_608" + br i1 %"$gascmp_609", label %"$out_of_gas_610", label %"$have_gas_611" + +"$out_of_gas_610": ; preds = %"$have_gas_605" + call void @_out_of_gas() + br label %"$have_gas_611" + +"$have_gas_611": ; preds = %"$out_of_gas_610", %"$have_gas_605" + %"$consume_612" = sub i64 %"$gasrem_608", 1 + store i64 %"$consume_612", i64* @_gasrem + %"$fail_msg__sender_613" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_613" + %"$tname_614" = load %String, %String* %tname + %"$m_615" = load %String, %String* %m + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_613", %String %"$tname_614", %String %"$m_615") + br label %"$matchsucc_590" + +"$True_616": ; preds = %"$have_gas_588" + %"$t_617" = bitcast %TName_Bool* %"$t_591" to %CName_True* + br label %"$matchsucc_590" + +"$empty_default_594": ; preds = %"$have_gas_588" + br label %"$matchsucc_590" + +"$matchsucc_590": ; preds = %"$True_616", %"$have_gas_611", %"$empty_default_594" + br label %"$matchsucc_567" + +"$None_618": ; preds = %"$have_gas_565" + %"$val1_619" = bitcast %TName_Option_String* %"$val1_568" to %CName_None_String* + %"$gasrem_620" = load i64, i64* @_gasrem + %"$gascmp_621" = icmp ugt i64 1, %"$gasrem_620" + br i1 %"$gascmp_621", label %"$out_of_gas_622", label %"$have_gas_623" + +"$out_of_gas_622": ; preds = %"$None_618" + call void @_out_of_gas() + br label %"$have_gas_623" + +"$have_gas_623": ; preds = %"$out_of_gas_622", %"$None_618" + %"$consume_624" = sub i64 %"$gasrem_620", 1 + store i64 %"$consume_624", i64* @_gasrem + %"$fail__sender_625" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_625" + %"$tname_626" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_625", %String %"$tname_626") + br label %"$matchsucc_567" + +"$empty_default_571": ; preds = %"$have_gas_565" + br label %"$matchsucc_567" + +"$matchsucc_567": ; preds = %"$have_gas_623", %"$matchsucc_590", %"$empty_default_571" + %"$gasrem_627" = load i64, i64* @_gasrem + %"$gascmp_628" = icmp ugt i64 1, %"$gasrem_627" + br i1 %"$gascmp_628", label %"$out_of_gas_629", label %"$have_gas_630" + +"$out_of_gas_629": ; preds = %"$matchsucc_567" + call void @_out_of_gas() + br label %"$have_gas_630" + +"$have_gas_630": ; preds = %"$out_of_gas_629", %"$matchsucc_567" + %"$consume_631" = sub i64 %"$gasrem_627", 1 + store i64 %"$consume_631", i64* @_gasrem %key2 = alloca %String - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_344", i32 0, i32 0), i32 4 }, %String* %key2 + %"$gasrem_632" = load i64, i64* @_gasrem + %"$gascmp_633" = icmp ugt i64 1, %"$gasrem_632" + br i1 %"$gascmp_633", label %"$out_of_gas_634", label %"$have_gas_635" + +"$out_of_gas_634": ; preds = %"$have_gas_630" + call void @_out_of_gas() + br label %"$have_gas_635" + +"$have_gas_635": ; preds = %"$out_of_gas_634", %"$have_gas_630" + %"$consume_636" = sub i64 %"$gasrem_632", 1 + store i64 %"$consume_636", i64* @_gasrem + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_637", i32 0, i32 0), i32 4 }, %String* %key2 %val2 = alloca %TName_Option_String* - %"$indices_buf_345_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_345_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_345_salloc_load", i64 16) - %"$indices_buf_345_salloc" = bitcast i8* %"$indices_buf_345_salloc_salloc" to [16 x i8]* - %"$indices_buf_345" = bitcast [16 x i8]* %"$indices_buf_345_salloc" to i8* - %"$key2_346" = load %String, %String* %key2 - %"$indices_gep_347" = getelementptr i8, i8* %"$indices_buf_345", i32 0 - %indices_cast1 = bitcast i8* %"$indices_gep_347" to %String* - store %String %"$key2_346", %String* %indices_cast1 - %"$execptr_load_348" = load i8*, i8** @_execptr - %"$val2_350" = call i8* @_fetch_field(i8* %"$execptr_load_348", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_349", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_73", i32 1, i8* %"$indices_buf_345", i32 1) - %"$val2_351" = bitcast i8* %"$val2_350" to %TName_Option_String* - store %TName_Option_String* %"$val2_351", %TName_Option_String** %val2 - %"$val2_353" = load %TName_Option_String*, %TName_Option_String** %val2 - %"$val2_tag_354" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$val2_353", i32 0, i32 0 - %"$val2_tag_355" = load i8, i8* %"$val2_tag_354" - switch i8 %"$val2_tag_355", label %"$empty_default_356" [ - i8 0, label %"$Some_357" - i8 1, label %"$None_365" + %"$indices_buf_638_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_638_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_638_salloc_load", i64 16) + %"$indices_buf_638_salloc" = bitcast i8* %"$indices_buf_638_salloc_salloc" to [16 x i8]* + %"$indices_buf_638" = bitcast [16 x i8]* %"$indices_buf_638_salloc" to i8* + %"$key2_639" = load %String, %String* %key2 + %"$indices_gep_640" = getelementptr i8, i8* %"$indices_buf_638", i32 0 + %indices_cast1 = bitcast i8* %"$indices_gep_640" to %String* + store %String %"$key2_639", %String* %indices_cast1 + %"$execptr_load_641" = load i8*, i8** @_execptr + %"$val2_643" = call i8* @_fetch_field(i8* %"$execptr_load_641", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_642", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_638", i32 1) + %"$val2_644" = bitcast i8* %"$val2_643" to %TName_Option_String* + store %TName_Option_String* %"$val2_644", %TName_Option_String** %val2 + %"$val2_645" = load %TName_Option_String*, %TName_Option_String** %val2 + %"$$val2_645_646" = bitcast %TName_Option_String* %"$val2_645" to i8* + %"$_literal_cost_call_647" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$val2_645_646") + %"$gasadd_648" = add i64 %"$_literal_cost_call_647", 0 + %"$gasadd_649" = add i64 %"$gasadd_648", 1 + %"$gasrem_650" = load i64, i64* @_gasrem + %"$gascmp_651" = icmp ugt i64 %"$gasadd_649", %"$gasrem_650" + br i1 %"$gascmp_651", label %"$out_of_gas_652", label %"$have_gas_653" + +"$out_of_gas_652": ; preds = %"$have_gas_635" + call void @_out_of_gas() + br label %"$have_gas_653" + +"$have_gas_653": ; preds = %"$out_of_gas_652", %"$have_gas_635" + %"$consume_654" = sub i64 %"$gasrem_650", %"$gasadd_649" + store i64 %"$consume_654", i64* @_gasrem + %"$gasrem_655" = load i64, i64* @_gasrem + %"$gascmp_656" = icmp ugt i64 2, %"$gasrem_655" + br i1 %"$gascmp_656", label %"$out_of_gas_657", label %"$have_gas_658" + +"$out_of_gas_657": ; preds = %"$have_gas_653" + call void @_out_of_gas() + br label %"$have_gas_658" + +"$have_gas_658": ; preds = %"$out_of_gas_657", %"$have_gas_653" + %"$consume_659" = sub i64 %"$gasrem_655", 2 + store i64 %"$consume_659", i64* @_gasrem + %"$val2_661" = load %TName_Option_String*, %TName_Option_String** %val2 + %"$val2_tag_662" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$val2_661", i32 0, i32 0 + %"$val2_tag_663" = load i8, i8* %"$val2_tag_662" + switch i8 %"$val2_tag_663", label %"$empty_default_664" [ + i8 0, label %"$Some_665" + i8 1, label %"$None_688" ] -"$Some_357": ; preds = %"$matchsucc_314" - %"$val2_358" = bitcast %TName_Option_String* %"$val2_353" to %CName_Some_String* - %"$$val2_13_gep_359" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$val2_358", i32 0, i32 1 - %"$$val2_13_load_360" = load %String, %String* %"$$val2_13_gep_359" - %"$val2_13" = alloca %String - store %String %"$$val2_13_load_360", %String* %"$val2_13" +"$Some_665": ; preds = %"$have_gas_658" + %"$val2_666" = bitcast %TName_Option_String* %"$val2_661" to %CName_Some_String* + %"$$val2_12_gep_667" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$val2_666", i32 0, i32 1 + %"$$val2_12_load_668" = load %String, %String* %"$$val2_12_gep_667" + %"$val2_12" = alloca %String + store %String %"$$val2_12_load_668", %String* %"$val2_12" + %"$gasrem_669" = load i64, i64* @_gasrem + %"$gascmp_670" = icmp ugt i64 1, %"$gasrem_669" + br i1 %"$gascmp_670", label %"$out_of_gas_671", label %"$have_gas_672" + +"$out_of_gas_671": ; preds = %"$Some_665" + call void @_out_of_gas() + br label %"$have_gas_672" + +"$have_gas_672": ; preds = %"$out_of_gas_671", %"$Some_665" + %"$consume_673" = sub i64 %"$gasrem_669", 1 + store i64 %"$consume_673", i64* @_gasrem %m2 = alloca %String - store %String { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @"$stringlit_361", i32 0, i32 0), i32 25 }, %String* %m2 - %"$fail_msg__sender_362" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_362" - %"$tname_363" = load %String, %String* %tname - %"$m_364" = load %String, %String* %m2 - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_362", %String %"$tname_363", %String %"$m_364") - br label %"$matchsucc_352" - -"$None_365": ; preds = %"$matchsucc_314" - %"$val2_366" = bitcast %TName_Option_String* %"$val2_353" to %CName_None_String* - br label %"$matchsucc_352" - -"$empty_default_356": ; preds = %"$matchsucc_314" - br label %"$matchsucc_352" - -"$matchsucc_352": ; preds = %"$None_365", %"$Some_357", %"$empty_default_356" - %"$indices_buf_367_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_367_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_367_salloc_load", i64 16) - %"$indices_buf_367_salloc" = bitcast i8* %"$indices_buf_367_salloc_salloc" to [16 x i8]* - %"$indices_buf_367" = bitcast [16 x i8]* %"$indices_buf_367_salloc" to i8* - %"$key1_368" = load %String, %String* %key1 - %"$indices_gep_369" = getelementptr i8, i8* %"$indices_buf_367", i32 0 - %indices_cast3 = bitcast i8* %"$indices_gep_369" to %String* - store %String %"$key1_368", %String* %indices_cast3 - %"$execptr_load_370" = load i8*, i8** @_execptr - call void @_update_field(i8* %"$execptr_load_370", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_371", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_73", i32 1, i8* %"$indices_buf_367", i8* null) + %"$gasrem_674" = load i64, i64* @_gasrem + %"$gascmp_675" = icmp ugt i64 1, %"$gasrem_674" + br i1 %"$gascmp_675", label %"$out_of_gas_676", label %"$have_gas_677" + +"$out_of_gas_676": ; preds = %"$have_gas_672" + call void @_out_of_gas() + br label %"$have_gas_677" + +"$have_gas_677": ; preds = %"$out_of_gas_676", %"$have_gas_672" + %"$consume_678" = sub i64 %"$gasrem_674", 1 + store i64 %"$consume_678", i64* @_gasrem + store %String { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @"$stringlit_679", i32 0, i32 0), i32 25 }, %String* %m2 + %"$gasrem_680" = load i64, i64* @_gasrem + %"$gascmp_681" = icmp ugt i64 1, %"$gasrem_680" + br i1 %"$gascmp_681", label %"$out_of_gas_682", label %"$have_gas_683" + +"$out_of_gas_682": ; preds = %"$have_gas_677" + call void @_out_of_gas() + br label %"$have_gas_683" + +"$have_gas_683": ; preds = %"$out_of_gas_682", %"$have_gas_677" + %"$consume_684" = sub i64 %"$gasrem_680", 1 + store i64 %"$consume_684", i64* @_gasrem + %"$fail_msg__sender_685" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_685" + %"$tname_686" = load %String, %String* %tname + %"$m_687" = load %String, %String* %m2 + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_685", %String %"$tname_686", %String %"$m_687") + br label %"$matchsucc_660" + +"$None_688": ; preds = %"$have_gas_658" + %"$val2_689" = bitcast %TName_Option_String* %"$val2_661" to %CName_None_String* + br label %"$matchsucc_660" + +"$empty_default_664": ; preds = %"$have_gas_658" + br label %"$matchsucc_660" + +"$matchsucc_660": ; preds = %"$None_688", %"$have_gas_683", %"$empty_default_664" + %"$gasrem_690" = load i64, i64* @_gasrem + %"$gascmp_691" = icmp ugt i64 1, %"$gasrem_690" + br i1 %"$gascmp_691", label %"$out_of_gas_692", label %"$have_gas_693" + +"$out_of_gas_692": ; preds = %"$matchsucc_660" + call void @_out_of_gas() + br label %"$have_gas_693" + +"$have_gas_693": ; preds = %"$out_of_gas_692", %"$matchsucc_660" + %"$consume_694" = sub i64 %"$gasrem_690", 1 + store i64 %"$consume_694", i64* @_gasrem + %"$indices_buf_695_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_695_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_695_salloc_load", i64 16) + %"$indices_buf_695_salloc" = bitcast i8* %"$indices_buf_695_salloc_salloc" to [16 x i8]* + %"$indices_buf_695" = bitcast [16 x i8]* %"$indices_buf_695_salloc" to i8* + %"$key1_696" = load %String, %String* %key1 + %"$indices_gep_697" = getelementptr i8, i8* %"$indices_buf_695", i32 0 + %indices_cast3 = bitcast i8* %"$indices_gep_697" to %String* + store %String %"$key1_696", %String* %indices_cast3 + %"$execptr_load_698" = load i8*, i8** @_execptr + call void @_update_field(i8* %"$execptr_load_698", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_699", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_695", i8* null) ret void } define void @t3(i8* %0) { entry: - %"$_amount_373" = getelementptr i8, i8* %0, i32 0 - %"$_amount_374" = bitcast i8* %"$_amount_373" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_374" - %"$_sender_375" = getelementptr i8, i8* %0, i32 16 - %"$_sender_376" = bitcast i8* %"$_sender_375" to [20 x i8]* - call void @"$t3_302"(%Uint128 %_amount, [20 x i8]* %"$_sender_376") + %"$_amount_701" = getelementptr i8, i8* %0, i32 0 + %"$_amount_702" = bitcast i8* %"$_amount_701" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_702" + %"$_sender_703" = getelementptr i8, i8* %0, i32 16 + %"$_sender_704" = bitcast i8* %"$_sender_703" to [20 x i8]* + call void @"$t3_510"(%Uint128 %_amount, [20 x i8]* %"$_sender_704") ret void } -define internal void @"$t4_377"(%Uint128 %_amount, [20 x i8]* %"$_sender_378") { +define internal void @"$t4_705"(%Uint128 %_amount, [20 x i8]* %"$_sender_706") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_378" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_706" + %"$gasrem_707" = load i64, i64* @_gasrem + %"$gascmp_708" = icmp ugt i64 1, %"$gasrem_707" + br i1 %"$gascmp_708", label %"$out_of_gas_709", label %"$have_gas_710" + +"$out_of_gas_709": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_710" + +"$have_gas_710": ; preds = %"$out_of_gas_709", %entry + %"$consume_711" = sub i64 %"$gasrem_707", 1 + store i64 %"$consume_711", i64* @_gasrem %tname = alloca %String - store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_379", i32 0, i32 0), i32 2 }, %String* %tname + %"$gasrem_712" = load i64, i64* @_gasrem + %"$gascmp_713" = icmp ugt i64 1, %"$gasrem_712" + br i1 %"$gascmp_713", label %"$out_of_gas_714", label %"$have_gas_715" + +"$out_of_gas_714": ; preds = %"$have_gas_710" + call void @_out_of_gas() + br label %"$have_gas_715" + +"$have_gas_715": ; preds = %"$out_of_gas_714", %"$have_gas_710" + %"$consume_716" = sub i64 %"$gasrem_712", 1 + store i64 %"$consume_716", i64* @_gasrem + store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_717", i32 0, i32 0), i32 2 }, %String* %tname + %"$gasrem_718" = load i64, i64* @_gasrem + %"$gascmp_719" = icmp ugt i64 1, %"$gasrem_718" + br i1 %"$gascmp_719", label %"$out_of_gas_720", label %"$have_gas_721" + +"$out_of_gas_720": ; preds = %"$have_gas_715" + call void @_out_of_gas() + br label %"$have_gas_721" + +"$have_gas_721": ; preds = %"$out_of_gas_720", %"$have_gas_715" + %"$consume_722" = sub i64 %"$gasrem_718", 1 + store i64 %"$consume_722", i64* @_gasrem %key1 = alloca %String - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_380", i32 0, i32 0), i32 4 }, %String* %key1 + %"$gasrem_723" = load i64, i64* @_gasrem + %"$gascmp_724" = icmp ugt i64 1, %"$gasrem_723" + br i1 %"$gascmp_724", label %"$out_of_gas_725", label %"$have_gas_726" + +"$out_of_gas_725": ; preds = %"$have_gas_721" + call void @_out_of_gas() + br label %"$have_gas_726" + +"$have_gas_726": ; preds = %"$out_of_gas_725", %"$have_gas_721" + %"$consume_727" = sub i64 %"$gasrem_723", 1 + store i64 %"$consume_727", i64* @_gasrem + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_728", i32 0, i32 0), i32 4 }, %String* %key1 %key1_found = alloca %TName_Bool* - %"$indices_buf_381_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_381_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_381_salloc_load", i64 16) - %"$indices_buf_381_salloc" = bitcast i8* %"$indices_buf_381_salloc_salloc" to [16 x i8]* - %"$indices_buf_381" = bitcast [16 x i8]* %"$indices_buf_381_salloc" to i8* - %"$key1_382" = load %String, %String* %key1 - %"$indices_gep_383" = getelementptr i8, i8* %"$indices_buf_381", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_383" to %String* - store %String %"$key1_382", %String* %indices_cast - %"$execptr_load_384" = load i8*, i8** @_execptr - %"$key1_found_386" = call i8* @_fetch_field(i8* %"$execptr_load_384", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_385", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_73", i32 1, i8* %"$indices_buf_381", i32 0) - %"$key1_found_387" = bitcast i8* %"$key1_found_386" to %TName_Bool* - store %TName_Bool* %"$key1_found_387", %TName_Bool** %key1_found - %"$key1_found_389" = load %TName_Bool*, %TName_Bool** %key1_found - %"$key1_found_tag_390" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$key1_found_389", i32 0, i32 0 - %"$key1_found_tag_391" = load i8, i8* %"$key1_found_tag_390" - switch i8 %"$key1_found_tag_391", label %"$empty_default_392" [ - i8 0, label %"$True_393" - i8 1, label %"$False_397" + %"$indices_buf_729_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_729_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_729_salloc_load", i64 16) + %"$indices_buf_729_salloc" = bitcast i8* %"$indices_buf_729_salloc_salloc" to [16 x i8]* + %"$indices_buf_729" = bitcast [16 x i8]* %"$indices_buf_729_salloc" to i8* + %"$key1_730" = load %String, %String* %key1 + %"$indices_gep_731" = getelementptr i8, i8* %"$indices_buf_729", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_731" to %String* + store %String %"$key1_730", %String* %indices_cast + %"$execptr_load_732" = load i8*, i8** @_execptr + %"$key1_found_734" = call i8* @_fetch_field(i8* %"$execptr_load_732", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_733", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_729", i32 0) + %"$key1_found_735" = bitcast i8* %"$key1_found_734" to %TName_Bool* + store %TName_Bool* %"$key1_found_735", %TName_Bool** %key1_found + %"$key1_found_736" = load %TName_Bool*, %TName_Bool** %key1_found + %"$$key1_found_736_737" = bitcast %TName_Bool* %"$key1_found_736" to i8* + %"$_literal_cost_call_738" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_68", i8* %"$$key1_found_736_737") + %"$gasadd_739" = add i64 %"$_literal_cost_call_738", 0 + %"$gasadd_740" = add i64 %"$gasadd_739", 1 + %"$gasrem_741" = load i64, i64* @_gasrem + %"$gascmp_742" = icmp ugt i64 %"$gasadd_740", %"$gasrem_741" + br i1 %"$gascmp_742", label %"$out_of_gas_743", label %"$have_gas_744" + +"$out_of_gas_743": ; preds = %"$have_gas_726" + call void @_out_of_gas() + br label %"$have_gas_744" + +"$have_gas_744": ; preds = %"$out_of_gas_743", %"$have_gas_726" + %"$consume_745" = sub i64 %"$gasrem_741", %"$gasadd_740" + store i64 %"$consume_745", i64* @_gasrem + %"$gasrem_746" = load i64, i64* @_gasrem + %"$gascmp_747" = icmp ugt i64 2, %"$gasrem_746" + br i1 %"$gascmp_747", label %"$out_of_gas_748", label %"$have_gas_749" + +"$out_of_gas_748": ; preds = %"$have_gas_744" + call void @_out_of_gas() + br label %"$have_gas_749" + +"$have_gas_749": ; preds = %"$out_of_gas_748", %"$have_gas_744" + %"$consume_750" = sub i64 %"$gasrem_746", 2 + store i64 %"$consume_750", i64* @_gasrem + %"$key1_found_752" = load %TName_Bool*, %TName_Bool** %key1_found + %"$key1_found_tag_753" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$key1_found_752", i32 0, i32 0 + %"$key1_found_tag_754" = load i8, i8* %"$key1_found_tag_753" + switch i8 %"$key1_found_tag_754", label %"$empty_default_755" [ + i8 0, label %"$True_756" + i8 1, label %"$False_765" ] -"$True_393": ; preds = %entry - %"$key1_found_394" = bitcast %TName_Bool* %"$key1_found_389" to %CName_True* - %"$fail__sender_395" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_395" - %"$tname_396" = load %String, %String* %tname - call void @"$fail_179"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_395", %String %"$tname_396") - br label %"$matchsucc_388" - -"$False_397": ; preds = %entry - %"$key1_found_398" = bitcast %TName_Bool* %"$key1_found_389" to %CName_False* - br label %"$matchsucc_388" - -"$empty_default_392": ; preds = %entry - br label %"$matchsucc_388" - -"$matchsucc_388": ; preds = %"$False_397", %"$True_393", %"$empty_default_392" +"$True_756": ; preds = %"$have_gas_749" + %"$key1_found_757" = bitcast %TName_Bool* %"$key1_found_752" to %CName_True* + %"$gasrem_758" = load i64, i64* @_gasrem + %"$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 = %"$True_756" + call void @_out_of_gas() + br label %"$have_gas_761" + +"$have_gas_761": ; preds = %"$out_of_gas_760", %"$True_756" + %"$consume_762" = sub i64 %"$gasrem_758", 1 + store i64 %"$consume_762", i64* @_gasrem + %"$fail__sender_763" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_763" + %"$tname_764" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_763", %String %"$tname_764") + br label %"$matchsucc_751" + +"$False_765": ; preds = %"$have_gas_749" + %"$key1_found_766" = bitcast %TName_Bool* %"$key1_found_752" to %CName_False* + br label %"$matchsucc_751" + +"$empty_default_755": ; preds = %"$have_gas_749" + br label %"$matchsucc_751" + +"$matchsucc_751": ; preds = %"$False_765", %"$have_gas_761", %"$empty_default_755" + %"$gasrem_767" = load i64, i64* @_gasrem + %"$gascmp_768" = icmp ugt i64 1, %"$gasrem_767" + br i1 %"$gascmp_768", label %"$out_of_gas_769", label %"$have_gas_770" + +"$out_of_gas_769": ; preds = %"$matchsucc_751" + call void @_out_of_gas() + br label %"$have_gas_770" + +"$have_gas_770": ; preds = %"$out_of_gas_769", %"$matchsucc_751" + %"$consume_771" = sub i64 %"$gasrem_767", 1 + store i64 %"$consume_771", i64* @_gasrem %key1a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_399", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_772" = load i64, i64* @_gasrem + %"$gascmp_773" = icmp ugt i64 1, %"$gasrem_772" + br i1 %"$gascmp_773", label %"$out_of_gas_774", label %"$have_gas_775" + +"$out_of_gas_774": ; preds = %"$have_gas_770" + call void @_out_of_gas() + br label %"$have_gas_775" + +"$have_gas_775": ; preds = %"$out_of_gas_774", %"$have_gas_770" + %"$consume_776" = sub i64 %"$gasrem_772", 1 + store i64 %"$consume_776", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_777", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_778" = load i64, i64* @_gasrem + %"$gascmp_779" = icmp ugt i64 1, %"$gasrem_778" + br i1 %"$gascmp_779", label %"$out_of_gas_780", label %"$have_gas_781" + +"$out_of_gas_780": ; preds = %"$have_gas_775" + call void @_out_of_gas() + br label %"$have_gas_781" + +"$have_gas_781": ; preds = %"$out_of_gas_780", %"$have_gas_775" + %"$consume_782" = sub i64 %"$gasrem_778", 1 + store i64 %"$consume_782", i64* @_gasrem %key2a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_400", i32 0, i32 0), i32 5 }, %String* %key2a + %"$gasrem_783" = load i64, i64* @_gasrem + %"$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_781" + call void @_out_of_gas() + br label %"$have_gas_786" + +"$have_gas_786": ; preds = %"$out_of_gas_785", %"$have_gas_781" + %"$consume_787" = sub i64 %"$gasrem_783", 1 + store i64 %"$consume_787", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_788", i32 0, i32 0), i32 5 }, %String* %key2a + %"$gasrem_789" = load i64, i64* @_gasrem + %"$gascmp_790" = icmp ugt i64 1, %"$gasrem_789" + br i1 %"$gascmp_790", label %"$out_of_gas_791", label %"$have_gas_792" + +"$out_of_gas_791": ; preds = %"$have_gas_786" + call void @_out_of_gas() + br label %"$have_gas_792" + +"$have_gas_792": ; preds = %"$out_of_gas_791", %"$have_gas_786" + %"$consume_793" = sub i64 %"$gasrem_789", 1 + store i64 %"$consume_793", i64* @_gasrem %s = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_401", i32 0, i32 0), i32 3 }, %String* %s - %"$indices_buf_402_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_402_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_402_salloc_load", i64 32) - %"$indices_buf_402_salloc" = bitcast i8* %"$indices_buf_402_salloc_salloc" to [32 x i8]* - %"$indices_buf_402" = bitcast [32 x i8]* %"$indices_buf_402_salloc" to i8* - %"$key1a_403" = load %String, %String* %key1a - %"$indices_gep_404" = getelementptr i8, i8* %"$indices_buf_402", i32 0 - %indices_cast1 = bitcast i8* %"$indices_gep_404" to %String* - store %String %"$key1a_403", %String* %indices_cast1 - %"$key2a_405" = load %String, %String* %key2a - %"$indices_gep_406" = getelementptr i8, i8* %"$indices_buf_402", i32 16 - %indices_cast2 = bitcast i8* %"$indices_gep_406" to %String* - store %String %"$key2a_405", %String* %indices_cast2 - %"$execptr_load_407" = load i8*, i8** @_execptr - %"$s_409" = load %String, %String* %s - %"$update_value_410" = alloca %String - store %String %"$s_409", %String* %"$update_value_410" - %"$update_value_411" = bitcast %String* %"$update_value_410" to i8* - call void @_update_field(i8* %"$execptr_load_407", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_408", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 2, i8* %"$indices_buf_402", i8* %"$update_value_411") + %"$gasrem_794" = load i64, i64* @_gasrem + %"$gascmp_795" = icmp ugt i64 1, %"$gasrem_794" + br i1 %"$gascmp_795", label %"$out_of_gas_796", label %"$have_gas_797" + +"$out_of_gas_796": ; preds = %"$have_gas_792" + call void @_out_of_gas() + br label %"$have_gas_797" + +"$have_gas_797": ; preds = %"$out_of_gas_796", %"$have_gas_792" + %"$consume_798" = sub i64 %"$gasrem_794", 1 + store i64 %"$consume_798", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_799", i32 0, i32 0), i32 3 }, %String* %s + %"$_literal_cost_s_800" = alloca %String + %"$s_801" = load %String, %String* %s + store %String %"$s_801", %String* %"$_literal_cost_s_800" + %"$$_literal_cost_s_800_802" = bitcast %String* %"$_literal_cost_s_800" to i8* + %"$_literal_cost_call_803" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_49", i8* %"$$_literal_cost_s_800_802") + %"$gasadd_804" = add i64 %"$_literal_cost_call_803", 2 + %"$gasrem_805" = load i64, i64* @_gasrem + %"$gascmp_806" = icmp ugt i64 %"$gasadd_804", %"$gasrem_805" + br i1 %"$gascmp_806", label %"$out_of_gas_807", label %"$have_gas_808" + +"$out_of_gas_807": ; preds = %"$have_gas_797" + call void @_out_of_gas() + br label %"$have_gas_808" + +"$have_gas_808": ; preds = %"$out_of_gas_807", %"$have_gas_797" + %"$consume_809" = sub i64 %"$gasrem_805", %"$gasadd_804" + store i64 %"$consume_809", i64* @_gasrem + %"$indices_buf_810_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_810_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_810_salloc_load", i64 32) + %"$indices_buf_810_salloc" = bitcast i8* %"$indices_buf_810_salloc_salloc" to [32 x i8]* + %"$indices_buf_810" = bitcast [32 x i8]* %"$indices_buf_810_salloc" to i8* + %"$key1a_811" = load %String, %String* %key1a + %"$indices_gep_812" = getelementptr i8, i8* %"$indices_buf_810", i32 0 + %indices_cast1 = bitcast i8* %"$indices_gep_812" to %String* + store %String %"$key1a_811", %String* %indices_cast1 + %"$key2a_813" = load %String, %String* %key2a + %"$indices_gep_814" = getelementptr i8, i8* %"$indices_buf_810", i32 16 + %indices_cast2 = bitcast i8* %"$indices_gep_814" to %String* + store %String %"$key2a_813", %String* %indices_cast2 + %"$execptr_load_815" = load i8*, i8** @_execptr + %"$s_817" = load %String, %String* %s + %"$update_value_818" = alloca %String + store %String %"$s_817", %String* %"$update_value_818" + %"$update_value_819" = bitcast %String* %"$update_value_818" to i8* + call void @_update_field(i8* %"$execptr_load_815", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_816", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_810", i8* %"$update_value_819") ret void } define void @t4(i8* %0) { entry: - %"$_amount_413" = getelementptr i8, i8* %0, i32 0 - %"$_amount_414" = bitcast i8* %"$_amount_413" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_414" - %"$_sender_415" = getelementptr i8, i8* %0, i32 16 - %"$_sender_416" = bitcast i8* %"$_sender_415" to [20 x i8]* - call void @"$t4_377"(%Uint128 %_amount, [20 x i8]* %"$_sender_416") + %"$_amount_821" = getelementptr i8, i8* %0, i32 0 + %"$_amount_822" = bitcast i8* %"$_amount_821" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_822" + %"$_sender_823" = getelementptr i8, i8* %0, i32 16 + %"$_sender_824" = bitcast i8* %"$_sender_823" to [20 x i8]* + call void @"$t4_705"(%Uint128 %_amount, [20 x i8]* %"$_sender_824") ret void } -define internal void @"$t5_417"(%Uint128 %_amount, [20 x i8]* %"$_sender_418") { +define internal void @"$t5_825"(%Uint128 %_amount, [20 x i8]* %"$_sender_826") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_418" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_826" + %"$gasrem_827" = load i64, i64* @_gasrem + %"$gascmp_828" = icmp ugt i64 1, %"$gasrem_827" + br i1 %"$gascmp_828", label %"$out_of_gas_829", label %"$have_gas_830" + +"$out_of_gas_829": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_830" + +"$have_gas_830": ; preds = %"$out_of_gas_829", %entry + %"$consume_831" = sub i64 %"$gasrem_827", 1 + store i64 %"$consume_831", i64* @_gasrem %tname = alloca %String - store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_419", i32 0, i32 0), i32 2 }, %String* %tname + %"$gasrem_832" = load i64, i64* @_gasrem + %"$gascmp_833" = icmp ugt i64 1, %"$gasrem_832" + br i1 %"$gascmp_833", label %"$out_of_gas_834", label %"$have_gas_835" + +"$out_of_gas_834": ; preds = %"$have_gas_830" + call void @_out_of_gas() + br label %"$have_gas_835" + +"$have_gas_835": ; preds = %"$out_of_gas_834", %"$have_gas_830" + %"$consume_836" = sub i64 %"$gasrem_832", 1 + store i64 %"$consume_836", i64* @_gasrem + store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_837", i32 0, i32 0), i32 2 }, %String* %tname + %"$gasrem_838" = load i64, i64* @_gasrem + %"$gascmp_839" = icmp ugt i64 1, %"$gasrem_838" + br i1 %"$gascmp_839", label %"$out_of_gas_840", label %"$have_gas_841" + +"$out_of_gas_840": ; preds = %"$have_gas_835" + call void @_out_of_gas() + br label %"$have_gas_841" + +"$have_gas_841": ; preds = %"$out_of_gas_840", %"$have_gas_835" + %"$consume_842" = sub i64 %"$gasrem_838", 1 + store i64 %"$consume_842", i64* @_gasrem %s = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_420", i32 0, i32 0), i32 3 }, %String* %s + %"$gasrem_843" = load i64, i64* @_gasrem + %"$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_841" + call void @_out_of_gas() + br label %"$have_gas_846" + +"$have_gas_846": ; preds = %"$out_of_gas_845", %"$have_gas_841" + %"$consume_847" = sub i64 %"$gasrem_843", 1 + store i64 %"$consume_847", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_848", i32 0, i32 0), i32 3 }, %String* %s + %"$gasrem_849" = load i64, i64* @_gasrem + %"$gascmp_850" = icmp ugt i64 1, %"$gasrem_849" + br i1 %"$gascmp_850", label %"$out_of_gas_851", label %"$have_gas_852" + +"$out_of_gas_851": ; preds = %"$have_gas_846" + call void @_out_of_gas() + br label %"$have_gas_852" + +"$have_gas_852": ; preds = %"$out_of_gas_851", %"$have_gas_846" + %"$consume_853" = sub i64 %"$gasrem_849", 1 + store i64 %"$consume_853", i64* @_gasrem %key1a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_421", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_854" = load i64, i64* @_gasrem + %"$gascmp_855" = icmp ugt i64 1, %"$gasrem_854" + br i1 %"$gascmp_855", label %"$out_of_gas_856", label %"$have_gas_857" + +"$out_of_gas_856": ; preds = %"$have_gas_852" + call void @_out_of_gas() + br label %"$have_gas_857" + +"$have_gas_857": ; preds = %"$out_of_gas_856", %"$have_gas_852" + %"$consume_858" = sub i64 %"$gasrem_854", 1 + store i64 %"$consume_858", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_859", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_860" = load i64, i64* @_gasrem + %"$gascmp_861" = icmp ugt i64 1, %"$gasrem_860" + br i1 %"$gascmp_861", label %"$out_of_gas_862", label %"$have_gas_863" + +"$out_of_gas_862": ; preds = %"$have_gas_857" + call void @_out_of_gas() + br label %"$have_gas_863" + +"$have_gas_863": ; preds = %"$out_of_gas_862", %"$have_gas_857" + %"$consume_864" = sub i64 %"$gasrem_860", 1 + store i64 %"$consume_864", i64* @_gasrem %key2a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_422", i32 0, i32 0), i32 5 }, %String* %key2a + %"$gasrem_865" = load i64, i64* @_gasrem + %"$gascmp_866" = icmp ugt i64 1, %"$gasrem_865" + br i1 %"$gascmp_866", label %"$out_of_gas_867", label %"$have_gas_868" + +"$out_of_gas_867": ; preds = %"$have_gas_863" + call void @_out_of_gas() + br label %"$have_gas_868" + +"$have_gas_868": ; preds = %"$out_of_gas_867", %"$have_gas_863" + %"$consume_869" = sub i64 %"$gasrem_865", 1 + store i64 %"$consume_869", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_870", i32 0, i32 0), i32 5 }, %String* %key2a %val = alloca %TName_Option_String* - %"$indices_buf_423_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_423_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_423_salloc_load", i64 32) - %"$indices_buf_423_salloc" = bitcast i8* %"$indices_buf_423_salloc_salloc" to [32 x i8]* - %"$indices_buf_423" = bitcast [32 x i8]* %"$indices_buf_423_salloc" to i8* - %"$key1a_424" = load %String, %String* %key1a - %"$indices_gep_425" = getelementptr i8, i8* %"$indices_buf_423", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_425" to %String* - store %String %"$key1a_424", %String* %indices_cast - %"$key2a_426" = load %String, %String* %key2a - %"$indices_gep_427" = getelementptr i8, i8* %"$indices_buf_423", i32 16 - %indices_cast1 = bitcast i8* %"$indices_gep_427" to %String* - store %String %"$key2a_426", %String* %indices_cast1 - %"$execptr_load_428" = load i8*, i8** @_execptr - %"$val_430" = call i8* @_fetch_field(i8* %"$execptr_load_428", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_429", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 2, i8* %"$indices_buf_423", i32 1) - %"$val_431" = bitcast i8* %"$val_430" to %TName_Option_String* - store %TName_Option_String* %"$val_431", %TName_Option_String** %val - %"$val_433" = load %TName_Option_String*, %TName_Option_String** %val - %"$val_tag_434" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$val_433", i32 0, i32 0 - %"$val_tag_435" = load i8, i8* %"$val_tag_434" - switch i8 %"$val_tag_435", label %"$empty_default_436" [ - i8 0, label %"$Some_437" - i8 1, label %"$None_458" + %"$indices_buf_871_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_871_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_871_salloc_load", i64 32) + %"$indices_buf_871_salloc" = bitcast i8* %"$indices_buf_871_salloc_salloc" to [32 x i8]* + %"$indices_buf_871" = bitcast [32 x i8]* %"$indices_buf_871_salloc" to i8* + %"$key1a_872" = load %String, %String* %key1a + %"$indices_gep_873" = getelementptr i8, i8* %"$indices_buf_871", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_873" to %String* + store %String %"$key1a_872", %String* %indices_cast + %"$key2a_874" = load %String, %String* %key2a + %"$indices_gep_875" = getelementptr i8, i8* %"$indices_buf_871", i32 16 + %indices_cast1 = bitcast i8* %"$indices_gep_875" to %String* + store %String %"$key2a_874", %String* %indices_cast1 + %"$execptr_load_876" = load i8*, i8** @_execptr + %"$val_878" = call i8* @_fetch_field(i8* %"$execptr_load_876", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_877", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_871", i32 1) + %"$val_879" = bitcast i8* %"$val_878" to %TName_Option_String* + store %TName_Option_String* %"$val_879", %TName_Option_String** %val + %"$val_880" = load %TName_Option_String*, %TName_Option_String** %val + %"$$val_880_881" = bitcast %TName_Option_String* %"$val_880" to i8* + %"$_literal_cost_call_882" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$val_880_881") + %"$gasadd_883" = add i64 %"$_literal_cost_call_882", 0 + %"$gasadd_884" = add i64 %"$gasadd_883", 2 + %"$gasrem_885" = load i64, i64* @_gasrem + %"$gascmp_886" = icmp ugt i64 %"$gasadd_884", %"$gasrem_885" + br i1 %"$gascmp_886", label %"$out_of_gas_887", label %"$have_gas_888" + +"$out_of_gas_887": ; preds = %"$have_gas_868" + call void @_out_of_gas() + br label %"$have_gas_888" + +"$have_gas_888": ; preds = %"$out_of_gas_887", %"$have_gas_868" + %"$consume_889" = sub i64 %"$gasrem_885", %"$gasadd_884" + store i64 %"$consume_889", i64* @_gasrem + %"$gasrem_890" = load i64, i64* @_gasrem + %"$gascmp_891" = icmp ugt i64 2, %"$gasrem_890" + br i1 %"$gascmp_891", label %"$out_of_gas_892", label %"$have_gas_893" + +"$out_of_gas_892": ; preds = %"$have_gas_888" + call void @_out_of_gas() + br label %"$have_gas_893" + +"$have_gas_893": ; preds = %"$out_of_gas_892", %"$have_gas_888" + %"$consume_894" = sub i64 %"$gasrem_890", 2 + store i64 %"$consume_894", i64* @_gasrem + %"$val_896" = load %TName_Option_String*, %TName_Option_String** %val + %"$val_tag_897" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$val_896", i32 0, i32 0 + %"$val_tag_898" = load i8, i8* %"$val_tag_897" + switch i8 %"$val_tag_898", label %"$empty_default_899" [ + i8 0, label %"$Some_900" + i8 1, label %"$None_946" ] -"$Some_437": ; preds = %entry - %"$val_438" = bitcast %TName_Option_String* %"$val_433" to %CName_Some_String* - %"$v_gep_439" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$val_438", i32 0, i32 1 - %"$v_load_440" = load %String, %String* %"$v_gep_439" +"$Some_900": ; preds = %"$have_gas_893" + %"$val_901" = bitcast %TName_Option_String* %"$val_896" to %CName_Some_String* + %"$v_gep_902" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$val_901", i32 0, i32 1 + %"$v_load_903" = load %String, %String* %"$v_gep_902" %v = alloca %String - store %String %"$v_load_440", %String* %v + store %String %"$v_load_903", %String* %v + %"$gasrem_904" = load i64, i64* @_gasrem + %"$gascmp_905" = icmp ugt i64 1, %"$gasrem_904" + br i1 %"$gascmp_905", label %"$out_of_gas_906", label %"$have_gas_907" + +"$out_of_gas_906": ; preds = %"$Some_900" + call void @_out_of_gas() + br label %"$have_gas_907" + +"$have_gas_907": ; preds = %"$out_of_gas_906", %"$Some_900" + %"$consume_908" = sub i64 %"$gasrem_904", 1 + store i64 %"$consume_908", i64* @_gasrem %t = alloca %TName_Bool* - %"$execptr_load_441" = load i8*, i8** @_execptr - %"$v_442" = load %String, %String* %v - %"$s_443" = load %String, %String* %s - %"$eq_call_444" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_441", %String %"$v_442", %String %"$s_443") - store %TName_Bool* %"$eq_call_444", %TName_Bool** %t - %"$t_446" = load %TName_Bool*, %TName_Bool** %t - %"$t_tag_447" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$t_446", i32 0, i32 0 - %"$t_tag_448" = load i8, i8* %"$t_tag_447" - switch i8 %"$t_tag_448", label %"$empty_default_449" [ - i8 0, label %"$True_450" - i8 1, label %"$False_452" + %"$execptr_load_909" = load i8*, i8** @_execptr + %"$v_910" = load %String, %String* %v + %"$s_911" = load %String, %String* %s + %"$eq_call_912" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_909", %String %"$v_910", %String %"$s_911") + store %TName_Bool* %"$eq_call_912", %TName_Bool** %t + %"$gasrem_913" = load i64, i64* @_gasrem + %"$gascmp_914" = icmp ugt i64 2, %"$gasrem_913" + br i1 %"$gascmp_914", label %"$out_of_gas_915", label %"$have_gas_916" + +"$out_of_gas_915": ; preds = %"$have_gas_907" + call void @_out_of_gas() + br label %"$have_gas_916" + +"$have_gas_916": ; preds = %"$out_of_gas_915", %"$have_gas_907" + %"$consume_917" = sub i64 %"$gasrem_913", 2 + store i64 %"$consume_917", i64* @_gasrem + %"$t_919" = load %TName_Bool*, %TName_Bool** %t + %"$t_tag_920" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$t_919", i32 0, i32 0 + %"$t_tag_921" = load i8, i8* %"$t_tag_920" + switch i8 %"$t_tag_921", label %"$empty_default_922" [ + i8 0, label %"$True_923" + i8 1, label %"$False_925" ] -"$True_450": ; preds = %"$Some_437" - %"$t_451" = bitcast %TName_Bool* %"$t_446" to %CName_True* - br label %"$matchsucc_445" +"$True_923": ; preds = %"$have_gas_916" + %"$t_924" = bitcast %TName_Bool* %"$t_919" to %CName_True* + br label %"$matchsucc_918" + +"$False_925": ; preds = %"$have_gas_916" + %"$t_926" = bitcast %TName_Bool* %"$t_919" to %CName_False* + %"$gasrem_927" = load i64, i64* @_gasrem + %"$gascmp_928" = icmp ugt i64 1, %"$gasrem_927" + br i1 %"$gascmp_928", label %"$out_of_gas_929", label %"$have_gas_930" + +"$out_of_gas_929": ; preds = %"$False_925" + call void @_out_of_gas() + br label %"$have_gas_930" -"$False_452": ; preds = %"$Some_437" - %"$t_453" = bitcast %TName_Bool* %"$t_446" to %CName_False* +"$have_gas_930": ; preds = %"$out_of_gas_929", %"$False_925" + %"$consume_931" = sub i64 %"$gasrem_927", 1 + store i64 %"$consume_931", i64* @_gasrem %m = alloca %String - store %String { i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"$stringlit_454", i32 0, i32 0), i32 23 }, %String* %m - %"$fail_msg__sender_455" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_455" - %"$tname_456" = load %String, %String* %tname - %"$m_457" = load %String, %String* %m - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_455", %String %"$tname_456", %String %"$m_457") - br label %"$matchsucc_445" - -"$empty_default_449": ; preds = %"$Some_437" - br label %"$matchsucc_445" - -"$matchsucc_445": ; preds = %"$False_452", %"$True_450", %"$empty_default_449" - br label %"$matchsucc_432" - -"$None_458": ; preds = %entry - %"$val_459" = bitcast %TName_Option_String* %"$val_433" to %CName_None_String* - %"$fail__sender_460" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_460" - %"$tname_461" = load %String, %String* %tname - call void @"$fail_179"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_460", %String %"$tname_461") - br label %"$matchsucc_432" - -"$empty_default_436": ; preds = %entry - br label %"$matchsucc_432" - -"$matchsucc_432": ; preds = %"$None_458", %"$matchsucc_445", %"$empty_default_436" + %"$gasrem_932" = load i64, i64* @_gasrem + %"$gascmp_933" = icmp ugt i64 1, %"$gasrem_932" + br i1 %"$gascmp_933", label %"$out_of_gas_934", label %"$have_gas_935" + +"$out_of_gas_934": ; preds = %"$have_gas_930" + call void @_out_of_gas() + br label %"$have_gas_935" + +"$have_gas_935": ; preds = %"$out_of_gas_934", %"$have_gas_930" + %"$consume_936" = sub i64 %"$gasrem_932", 1 + store i64 %"$consume_936", i64* @_gasrem + store %String { i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"$stringlit_937", i32 0, i32 0), i32 23 }, %String* %m + %"$gasrem_938" = load i64, i64* @_gasrem + %"$gascmp_939" = icmp ugt i64 1, %"$gasrem_938" + br i1 %"$gascmp_939", label %"$out_of_gas_940", label %"$have_gas_941" + +"$out_of_gas_940": ; preds = %"$have_gas_935" + call void @_out_of_gas() + br label %"$have_gas_941" + +"$have_gas_941": ; preds = %"$out_of_gas_940", %"$have_gas_935" + %"$consume_942" = sub i64 %"$gasrem_938", 1 + store i64 %"$consume_942", i64* @_gasrem + %"$fail_msg__sender_943" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_943" + %"$tname_944" = load %String, %String* %tname + %"$m_945" = load %String, %String* %m + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_943", %String %"$tname_944", %String %"$m_945") + br label %"$matchsucc_918" + +"$empty_default_922": ; preds = %"$have_gas_916" + br label %"$matchsucc_918" + +"$matchsucc_918": ; preds = %"$have_gas_941", %"$True_923", %"$empty_default_922" + br label %"$matchsucc_895" + +"$None_946": ; preds = %"$have_gas_893" + %"$val_947" = bitcast %TName_Option_String* %"$val_896" to %CName_None_String* + %"$gasrem_948" = load i64, i64* @_gasrem + %"$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 = %"$None_946" + call void @_out_of_gas() + br label %"$have_gas_951" + +"$have_gas_951": ; preds = %"$out_of_gas_950", %"$None_946" + %"$consume_952" = sub i64 %"$gasrem_948", 1 + store i64 %"$consume_952", i64* @_gasrem + %"$fail__sender_953" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_953" + %"$tname_954" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_953", %String %"$tname_954") + br label %"$matchsucc_895" + +"$empty_default_899": ; preds = %"$have_gas_893" + br label %"$matchsucc_895" + +"$matchsucc_895": ; preds = %"$have_gas_951", %"$matchsucc_918", %"$empty_default_899" + %"$gasrem_955" = load i64, i64* @_gasrem + %"$gascmp_956" = icmp ugt i64 1, %"$gasrem_955" + br i1 %"$gascmp_956", label %"$out_of_gas_957", label %"$have_gas_958" + +"$out_of_gas_957": ; preds = %"$matchsucc_895" + call void @_out_of_gas() + br label %"$have_gas_958" + +"$have_gas_958": ; preds = %"$out_of_gas_957", %"$matchsucc_895" + %"$consume_959" = sub i64 %"$gasrem_955", 1 + store i64 %"$consume_959", i64* @_gasrem %l_m2 = alloca %Map_String_String* + %"$gasrem_960" = load i64, i64* @_gasrem + %"$gascmp_961" = icmp ugt i64 1, %"$gasrem_960" + br i1 %"$gascmp_961", label %"$out_of_gas_962", label %"$have_gas_963" + +"$out_of_gas_962": ; preds = %"$have_gas_958" + call void @_out_of_gas() + br label %"$have_gas_963" + +"$have_gas_963": ; preds = %"$out_of_gas_962", %"$have_gas_958" + %"$consume_964" = sub i64 %"$gasrem_960", 1 + store i64 %"$consume_964", i64* @_gasrem %e = alloca %Map_String_String* - %"$execptr_load_462" = load i8*, i8** @_execptr - %"$_new_empty_map_call_463" = call i8* @_new_empty_map(i8* %"$execptr_load_462") - %"$Emp_464" = bitcast i8* %"$_new_empty_map_call_463" to %Map_String_String* - store %Map_String_String* %"$Emp_464", %Map_String_String** %e + %"$gasrem_965" = load i64, i64* @_gasrem + %"$gascmp_966" = icmp ugt i64 1, %"$gasrem_965" + br i1 %"$gascmp_966", label %"$out_of_gas_967", label %"$have_gas_968" + +"$out_of_gas_967": ; preds = %"$have_gas_963" + call void @_out_of_gas() + br label %"$have_gas_968" + +"$have_gas_968": ; preds = %"$out_of_gas_967", %"$have_gas_963" + %"$consume_969" = sub i64 %"$gasrem_965", 1 + store i64 %"$consume_969", i64* @_gasrem + %"$execptr_load_970" = load i8*, i8** @_execptr + %"$_new_empty_map_call_971" = call i8* @_new_empty_map(i8* %"$execptr_load_970") + %"$Emp_972" = bitcast i8* %"$_new_empty_map_call_971" to %Map_String_String* + store %Map_String_String* %"$Emp_972", %Map_String_String** %e + %"$gasrem_973" = load i64, i64* @_gasrem + %"$gascmp_974" = icmp ugt i64 1, %"$gasrem_973" + br i1 %"$gascmp_974", label %"$out_of_gas_975", label %"$have_gas_976" + +"$out_of_gas_975": ; preds = %"$have_gas_968" + call void @_out_of_gas() + br label %"$have_gas_976" + +"$have_gas_976": ; preds = %"$out_of_gas_975", %"$have_gas_968" + %"$consume_977" = sub i64 %"$gasrem_973", 1 + store i64 %"$consume_977", i64* @_gasrem %key2b = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_465", i32 0, i32 0), i32 5 }, %String* %key2b + %"$gasrem_978" = load i64, i64* @_gasrem + %"$gascmp_979" = icmp ugt i64 1, %"$gasrem_978" + br i1 %"$gascmp_979", label %"$out_of_gas_980", label %"$have_gas_981" + +"$out_of_gas_980": ; preds = %"$have_gas_976" + call void @_out_of_gas() + br label %"$have_gas_981" + +"$have_gas_981": ; preds = %"$out_of_gas_980", %"$have_gas_976" + %"$consume_982" = sub i64 %"$gasrem_978", 1 + store i64 %"$consume_982", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_983", i32 0, i32 0), i32 5 }, %String* %key2b + %"$gasrem_984" = load i64, i64* @_gasrem + %"$gascmp_985" = icmp ugt i64 1, %"$gasrem_984" + br i1 %"$gascmp_985", label %"$out_of_gas_986", label %"$have_gas_987" + +"$out_of_gas_986": ; preds = %"$have_gas_981" + call void @_out_of_gas() + br label %"$have_gas_987" + +"$have_gas_987": ; preds = %"$out_of_gas_986", %"$have_gas_981" + %"$consume_988" = sub i64 %"$gasrem_984", 1 + store i64 %"$consume_988", i64* @_gasrem %s1 = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_466", i32 0, i32 0), i32 3 }, %String* %s1 + %"$gasrem_989" = load i64, i64* @_gasrem + %"$gascmp_990" = icmp ugt i64 1, %"$gasrem_989" + br i1 %"$gascmp_990", label %"$out_of_gas_991", label %"$have_gas_992" + +"$out_of_gas_991": ; preds = %"$have_gas_987" + call void @_out_of_gas() + br label %"$have_gas_992" + +"$have_gas_992": ; preds = %"$out_of_gas_991", %"$have_gas_987" + %"$consume_993" = sub i64 %"$gasrem_989", 1 + store i64 %"$consume_993", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_994", i32 0, i32 0), i32 3 }, %String* %s1 + %"$gasrem_995" = load i64, i64* @_gasrem + %"$gascmp_996" = icmp ugt i64 1, %"$gasrem_995" + br i1 %"$gascmp_996", label %"$out_of_gas_997", label %"$have_gas_998" + +"$out_of_gas_997": ; preds = %"$have_gas_992" + call void @_out_of_gas() + br label %"$have_gas_998" + +"$have_gas_998": ; preds = %"$out_of_gas_997", %"$have_gas_992" + %"$consume_999" = sub i64 %"$gasrem_995", 1 + store i64 %"$consume_999", i64* @_gasrem %m1 = alloca %Map_String_String* - %"$execptr_load_467" = load i8*, i8** @_execptr - %"$e_468" = load %Map_String_String*, %Map_String_String** %e - %"$$e_468_469" = bitcast %Map_String_String* %"$e_468" to i8* - %"$put_key2b_470" = alloca %String - %"$key2b_471" = load %String, %String* %key2b - store %String %"$key2b_471", %String* %"$put_key2b_470" - %"$$put_key2b_470_472" = bitcast %String* %"$put_key2b_470" to i8* - %"$put_s1_473" = alloca %String - %"$s1_474" = load %String, %String* %s1 - store %String %"$s1_474", %String* %"$put_s1_473" - %"$$put_s1_473_475" = bitcast %String* %"$put_s1_473" to i8* - %"$put_call_476" = call i8* @_put(i8* %"$execptr_load_467", %_TyDescrTy_Typ* @"$TyDescr_Map_73", i8* %"$$e_468_469", i8* %"$$put_key2b_470_472", i8* %"$$put_s1_473_475") - %"$_put_477" = bitcast i8* %"$put_call_476" to %Map_String_String* - store %Map_String_String* %"$_put_477", %Map_String_String** %m1 + %"$execptr_load_1000" = load i8*, i8** @_execptr + %"$e_1001" = load %Map_String_String*, %Map_String_String** %e + %"$$e_1001_1002" = bitcast %Map_String_String* %"$e_1001" to i8* + %"$put_key2b_1003" = alloca %String + %"$key2b_1004" = load %String, %String* %key2b + store %String %"$key2b_1004", %String* %"$put_key2b_1003" + %"$$put_key2b_1003_1005" = bitcast %String* %"$put_key2b_1003" to i8* + %"$put_s1_1006" = alloca %String + %"$s1_1007" = load %String, %String* %s1 + store %String %"$s1_1007", %String* %"$put_s1_1006" + %"$$put_s1_1006_1008" = bitcast %String* %"$put_s1_1006" to i8* + %"$put_call_1009" = call i8* @_put(i8* %"$execptr_load_1000", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$e_1001_1002", i8* %"$$put_key2b_1003_1005", i8* %"$$put_s1_1006_1008") + %"$_put_1010" = bitcast i8* %"$put_call_1009" to %Map_String_String* + store %Map_String_String* %"$_put_1010", %Map_String_String** %m1 + %"$gasrem_1011" = load i64, i64* @_gasrem + %"$gascmp_1012" = icmp ugt i64 1, %"$gasrem_1011" + br i1 %"$gascmp_1012", label %"$out_of_gas_1013", label %"$have_gas_1014" + +"$out_of_gas_1013": ; preds = %"$have_gas_998" + call void @_out_of_gas() + br label %"$have_gas_1014" + +"$have_gas_1014": ; preds = %"$out_of_gas_1013", %"$have_gas_998" + %"$consume_1015" = sub i64 %"$gasrem_1011", 1 + store i64 %"$consume_1015", i64* @_gasrem %key2c = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_478", i32 0, i32 0), i32 5 }, %String* %key2c + %"$gasrem_1016" = load i64, i64* @_gasrem + %"$gascmp_1017" = icmp ugt i64 1, %"$gasrem_1016" + br i1 %"$gascmp_1017", label %"$out_of_gas_1018", label %"$have_gas_1019" + +"$out_of_gas_1018": ; preds = %"$have_gas_1014" + call void @_out_of_gas() + br label %"$have_gas_1019" + +"$have_gas_1019": ; preds = %"$out_of_gas_1018", %"$have_gas_1014" + %"$consume_1020" = sub i64 %"$gasrem_1016", 1 + store i64 %"$consume_1020", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1021", i32 0, i32 0), i32 5 }, %String* %key2c + %"$gasrem_1022" = load i64, i64* @_gasrem + %"$gascmp_1023" = icmp ugt i64 1, %"$gasrem_1022" + br i1 %"$gascmp_1023", label %"$out_of_gas_1024", label %"$have_gas_1025" + +"$out_of_gas_1024": ; preds = %"$have_gas_1019" + call void @_out_of_gas() + br label %"$have_gas_1025" + +"$have_gas_1025": ; preds = %"$out_of_gas_1024", %"$have_gas_1019" + %"$consume_1026" = sub i64 %"$gasrem_1022", 1 + store i64 %"$consume_1026", i64* @_gasrem %s2 = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_479", i32 0, i32 0), i32 3 }, %String* %s2 - %"$execptr_load_480" = load i8*, i8** @_execptr - %"$m1_481" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_481_482" = bitcast %Map_String_String* %"$m1_481" to i8* - %"$put_key2c_483" = alloca %String - %"$key2c_484" = load %String, %String* %key2c - store %String %"$key2c_484", %String* %"$put_key2c_483" - %"$$put_key2c_483_485" = bitcast %String* %"$put_key2c_483" to i8* - %"$put_s2_486" = alloca %String - %"$s2_487" = load %String, %String* %s2 - store %String %"$s2_487", %String* %"$put_s2_486" - %"$$put_s2_486_488" = bitcast %String* %"$put_s2_486" to i8* - %"$put_call_489" = call i8* @_put(i8* %"$execptr_load_480", %_TyDescrTy_Typ* @"$TyDescr_Map_73", i8* %"$$m1_481_482", i8* %"$$put_key2c_483_485", i8* %"$$put_s2_486_488") - %"$_put_490" = bitcast i8* %"$put_call_489" to %Map_String_String* - store %Map_String_String* %"$_put_490", %Map_String_String** %l_m2 + %"$gasrem_1027" = load i64, i64* @_gasrem + %"$gascmp_1028" = icmp ugt i64 1, %"$gasrem_1027" + br i1 %"$gascmp_1028", label %"$out_of_gas_1029", label %"$have_gas_1030" + +"$out_of_gas_1029": ; preds = %"$have_gas_1025" + call void @_out_of_gas() + br label %"$have_gas_1030" + +"$have_gas_1030": ; preds = %"$out_of_gas_1029", %"$have_gas_1025" + %"$consume_1031" = sub i64 %"$gasrem_1027", 1 + store i64 %"$consume_1031", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1032", i32 0, i32 0), i32 3 }, %String* %s2 + %"$execptr_load_1033" = load i8*, i8** @_execptr + %"$m1_1034" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_1034_1035" = bitcast %Map_String_String* %"$m1_1034" to i8* + %"$put_key2c_1036" = alloca %String + %"$key2c_1037" = load %String, %String* %key2c + store %String %"$key2c_1037", %String* %"$put_key2c_1036" + %"$$put_key2c_1036_1038" = bitcast %String* %"$put_key2c_1036" to i8* + %"$put_s2_1039" = alloca %String + %"$s2_1040" = load %String, %String* %s2 + store %String %"$s2_1040", %String* %"$put_s2_1039" + %"$$put_s2_1039_1041" = bitcast %String* %"$put_s2_1039" to i8* + %"$put_call_1042" = call i8* @_put(i8* %"$execptr_load_1033", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_1034_1035", i8* %"$$put_key2c_1036_1038", i8* %"$$put_s2_1039_1041") + %"$_put_1043" = bitcast i8* %"$put_call_1042" to %Map_String_String* + store %Map_String_String* %"$_put_1043", %Map_String_String** %l_m2 + %"$gasrem_1044" = load i64, i64* @_gasrem + %"$gascmp_1045" = icmp ugt i64 1, %"$gasrem_1044" + br i1 %"$gascmp_1045", label %"$out_of_gas_1046", label %"$have_gas_1047" + +"$out_of_gas_1046": ; preds = %"$have_gas_1030" + call void @_out_of_gas() + br label %"$have_gas_1047" + +"$have_gas_1047": ; preds = %"$out_of_gas_1046", %"$have_gas_1030" + %"$consume_1048" = sub i64 %"$gasrem_1044", 1 + store i64 %"$consume_1048", i64* @_gasrem %key1b = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_491", i32 0, i32 0), i32 5 }, %String* %key1b - %"$indices_buf_492_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_492_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_492_salloc_load", i64 16) - %"$indices_buf_492_salloc" = bitcast i8* %"$indices_buf_492_salloc_salloc" to [16 x i8]* - %"$indices_buf_492" = bitcast [16 x i8]* %"$indices_buf_492_salloc" to i8* - %"$key1b_493" = load %String, %String* %key1b - %"$indices_gep_494" = getelementptr i8, i8* %"$indices_buf_492", i32 0 - %indices_cast2 = bitcast i8* %"$indices_gep_494" to %String* - store %String %"$key1b_493", %String* %indices_cast2 - %"$execptr_load_495" = load i8*, i8** @_execptr - %"$l_m2_497" = load %Map_String_String*, %Map_String_String** %l_m2 - %"$update_value_498" = bitcast %Map_String_String* %"$l_m2_497" to i8* - call void @_update_field(i8* %"$execptr_load_495", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_496", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_492", i8* %"$update_value_498") + %"$gasrem_1049" = load i64, i64* @_gasrem + %"$gascmp_1050" = icmp ugt i64 1, %"$gasrem_1049" + br i1 %"$gascmp_1050", label %"$out_of_gas_1051", label %"$have_gas_1052" + +"$out_of_gas_1051": ; preds = %"$have_gas_1047" + call void @_out_of_gas() + br label %"$have_gas_1052" + +"$have_gas_1052": ; preds = %"$out_of_gas_1051", %"$have_gas_1047" + %"$consume_1053" = sub i64 %"$gasrem_1049", 1 + store i64 %"$consume_1053", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1054", i32 0, i32 0), i32 5 }, %String* %key1b + %"$l_m2_1055" = load %Map_String_String*, %Map_String_String** %l_m2 + %"$$l_m2_1055_1056" = bitcast %Map_String_String* %"$l_m2_1055" to i8* + %"$_literal_cost_call_1057" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$l_m2_1055_1056") + %"$gasadd_1058" = add i64 %"$_literal_cost_call_1057", 1 + %"$gasrem_1059" = load i64, i64* @_gasrem + %"$gascmp_1060" = icmp ugt i64 %"$gasadd_1058", %"$gasrem_1059" + br i1 %"$gascmp_1060", label %"$out_of_gas_1061", label %"$have_gas_1062" + +"$out_of_gas_1061": ; preds = %"$have_gas_1052" + call void @_out_of_gas() + br label %"$have_gas_1062" + +"$have_gas_1062": ; preds = %"$out_of_gas_1061", %"$have_gas_1052" + %"$consume_1063" = sub i64 %"$gasrem_1059", %"$gasadd_1058" + store i64 %"$consume_1063", i64* @_gasrem + %"$indices_buf_1064_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1064_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1064_salloc_load", i64 16) + %"$indices_buf_1064_salloc" = bitcast i8* %"$indices_buf_1064_salloc_salloc" to [16 x i8]* + %"$indices_buf_1064" = bitcast [16 x i8]* %"$indices_buf_1064_salloc" to i8* + %"$key1b_1065" = load %String, %String* %key1b + %"$indices_gep_1066" = getelementptr i8, i8* %"$indices_buf_1064", i32 0 + %indices_cast2 = bitcast i8* %"$indices_gep_1066" to %String* + store %String %"$key1b_1065", %String* %indices_cast2 + %"$execptr_load_1067" = load i8*, i8** @_execptr + %"$l_m2_1069" = load %Map_String_String*, %Map_String_String** %l_m2 + %"$update_value_1070" = bitcast %Map_String_String* %"$l_m2_1069" to i8* + call void @_update_field(i8* %"$execptr_load_1067", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1068", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 1, i8* %"$indices_buf_1064", i8* %"$update_value_1070") ret void } @@ -1033,974 +2245,2928 @@ declare i8* @_put(i8*, %_TyDescrTy_Typ*, i8*, i8*, i8*) define void @t5(i8* %0) { entry: - %"$_amount_500" = getelementptr i8, i8* %0, i32 0 - %"$_amount_501" = bitcast i8* %"$_amount_500" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_501" - %"$_sender_502" = getelementptr i8, i8* %0, i32 16 - %"$_sender_503" = bitcast i8* %"$_sender_502" to [20 x i8]* - call void @"$t5_417"(%Uint128 %_amount, [20 x i8]* %"$_sender_503") + %"$_amount_1072" = getelementptr i8, i8* %0, i32 0 + %"$_amount_1073" = bitcast i8* %"$_amount_1072" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_1073" + %"$_sender_1074" = getelementptr i8, i8* %0, i32 16 + %"$_sender_1075" = bitcast i8* %"$_sender_1074" to [20 x i8]* + call void @"$t5_825"(%Uint128 %_amount, [20 x i8]* %"$_sender_1075") ret void } -define internal void @"$t6_504"(%Uint128 %_amount, [20 x i8]* %"$_sender_505") { +define internal void @"$t6_1076"(%Uint128 %_amount, [20 x i8]* %"$_sender_1077") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_505" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1077" + %"$gasrem_1078" = load i64, i64* @_gasrem + %"$gascmp_1079" = icmp ugt i64 1, %"$gasrem_1078" + br i1 %"$gascmp_1079", label %"$out_of_gas_1080", label %"$have_gas_1081" + +"$out_of_gas_1080": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1081" + +"$have_gas_1081": ; preds = %"$out_of_gas_1080", %entry + %"$consume_1082" = sub i64 %"$gasrem_1078", 1 + store i64 %"$consume_1082", i64* @_gasrem %tname = alloca %String - store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_506", i32 0, i32 0), i32 2 }, %String* %tname + %"$gasrem_1083" = load i64, i64* @_gasrem + %"$gascmp_1084" = icmp ugt i64 1, %"$gasrem_1083" + br i1 %"$gascmp_1084", label %"$out_of_gas_1085", label %"$have_gas_1086" + +"$out_of_gas_1085": ; preds = %"$have_gas_1081" + call void @_out_of_gas() + br label %"$have_gas_1086" + +"$have_gas_1086": ; preds = %"$out_of_gas_1085", %"$have_gas_1081" + %"$consume_1087" = sub i64 %"$gasrem_1083", 1 + store i64 %"$consume_1087", i64* @_gasrem + store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_1088", i32 0, i32 0), i32 2 }, %String* %tname + %"$gasrem_1089" = load i64, i64* @_gasrem + %"$gascmp_1090" = icmp ugt i64 1, %"$gasrem_1089" + br i1 %"$gascmp_1090", label %"$out_of_gas_1091", label %"$have_gas_1092" + +"$out_of_gas_1091": ; preds = %"$have_gas_1086" + call void @_out_of_gas() + br label %"$have_gas_1092" + +"$have_gas_1092": ; preds = %"$out_of_gas_1091", %"$have_gas_1086" + %"$consume_1093" = sub i64 %"$gasrem_1089", 1 + store i64 %"$consume_1093", i64* @_gasrem %key1a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_507", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_1094" = load i64, i64* @_gasrem + %"$gascmp_1095" = icmp ugt i64 1, %"$gasrem_1094" + br i1 %"$gascmp_1095", label %"$out_of_gas_1096", label %"$have_gas_1097" + +"$out_of_gas_1096": ; preds = %"$have_gas_1092" + call void @_out_of_gas() + br label %"$have_gas_1097" + +"$have_gas_1097": ; preds = %"$out_of_gas_1096", %"$have_gas_1092" + %"$consume_1098" = sub i64 %"$gasrem_1094", 1 + store i64 %"$consume_1098", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1099", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_1100" = load i64, i64* @_gasrem + %"$gascmp_1101" = icmp ugt i64 1, %"$gasrem_1100" + br i1 %"$gascmp_1101", label %"$out_of_gas_1102", label %"$have_gas_1103" + +"$out_of_gas_1102": ; preds = %"$have_gas_1097" + call void @_out_of_gas() + br label %"$have_gas_1103" + +"$have_gas_1103": ; preds = %"$out_of_gas_1102", %"$have_gas_1097" + %"$consume_1104" = sub i64 %"$gasrem_1100", 1 + store i64 %"$consume_1104", i64* @_gasrem %key2a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_508", i32 0, i32 0), i32 5 }, %String* %key2a + %"$gasrem_1105" = load i64, i64* @_gasrem + %"$gascmp_1106" = icmp ugt i64 1, %"$gasrem_1105" + br i1 %"$gascmp_1106", label %"$out_of_gas_1107", label %"$have_gas_1108" + +"$out_of_gas_1107": ; preds = %"$have_gas_1103" + call void @_out_of_gas() + br label %"$have_gas_1108" + +"$have_gas_1108": ; preds = %"$out_of_gas_1107", %"$have_gas_1103" + %"$consume_1109" = sub i64 %"$gasrem_1105", 1 + store i64 %"$consume_1109", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1110", i32 0, i32 0), i32 5 }, %String* %key2a %c1 = alloca %TName_Option_String* - %"$indices_buf_509_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_509_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_509_salloc_load", i64 32) - %"$indices_buf_509_salloc" = bitcast i8* %"$indices_buf_509_salloc_salloc" to [32 x i8]* - %"$indices_buf_509" = bitcast [32 x i8]* %"$indices_buf_509_salloc" to i8* - %"$key1a_510" = load %String, %String* %key1a - %"$indices_gep_511" = getelementptr i8, i8* %"$indices_buf_509", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_511" to %String* - store %String %"$key1a_510", %String* %indices_cast - %"$key2a_512" = load %String, %String* %key2a - %"$indices_gep_513" = getelementptr i8, i8* %"$indices_buf_509", i32 16 - %indices_cast1 = bitcast i8* %"$indices_gep_513" to %String* - store %String %"$key2a_512", %String* %indices_cast1 - %"$execptr_load_514" = load i8*, i8** @_execptr - %"$c1_516" = call i8* @_fetch_field(i8* %"$execptr_load_514", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_515", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 2, i8* %"$indices_buf_509", i32 1) - %"$c1_517" = bitcast i8* %"$c1_516" to %TName_Option_String* - store %TName_Option_String* %"$c1_517", %TName_Option_String** %c1 - %"$c1_519" = load %TName_Option_String*, %TName_Option_String** %c1 - %"$c1_tag_520" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$c1_519", i32 0, i32 0 - %"$c1_tag_521" = load i8, i8* %"$c1_tag_520" - switch i8 %"$c1_tag_521", label %"$empty_default_522" [ - i8 0, label %"$Some_523" - i8 1, label %"$None_545" + %"$indices_buf_1111_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1111_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1111_salloc_load", i64 32) + %"$indices_buf_1111_salloc" = bitcast i8* %"$indices_buf_1111_salloc_salloc" to [32 x i8]* + %"$indices_buf_1111" = bitcast [32 x i8]* %"$indices_buf_1111_salloc" to i8* + %"$key1a_1112" = load %String, %String* %key1a + %"$indices_gep_1113" = getelementptr i8, i8* %"$indices_buf_1111", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_1113" to %String* + store %String %"$key1a_1112", %String* %indices_cast + %"$key2a_1114" = load %String, %String* %key2a + %"$indices_gep_1115" = getelementptr i8, i8* %"$indices_buf_1111", i32 16 + %indices_cast1 = bitcast i8* %"$indices_gep_1115" to %String* + store %String %"$key2a_1114", %String* %indices_cast1 + %"$execptr_load_1116" = load i8*, i8** @_execptr + %"$c1_1118" = call i8* @_fetch_field(i8* %"$execptr_load_1116", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1117", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1111", i32 1) + %"$c1_1119" = bitcast i8* %"$c1_1118" to %TName_Option_String* + store %TName_Option_String* %"$c1_1119", %TName_Option_String** %c1 + %"$c1_1120" = load %TName_Option_String*, %TName_Option_String** %c1 + %"$$c1_1120_1121" = bitcast %TName_Option_String* %"$c1_1120" to i8* + %"$_literal_cost_call_1122" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$c1_1120_1121") + %"$gasadd_1123" = add i64 %"$_literal_cost_call_1122", 0 + %"$gasadd_1124" = add i64 %"$gasadd_1123", 2 + %"$gasrem_1125" = load i64, i64* @_gasrem + %"$gascmp_1126" = icmp ugt i64 %"$gasadd_1124", %"$gasrem_1125" + br i1 %"$gascmp_1126", label %"$out_of_gas_1127", label %"$have_gas_1128" + +"$out_of_gas_1127": ; preds = %"$have_gas_1108" + call void @_out_of_gas() + br label %"$have_gas_1128" + +"$have_gas_1128": ; preds = %"$out_of_gas_1127", %"$have_gas_1108" + %"$consume_1129" = sub i64 %"$gasrem_1125", %"$gasadd_1124" + store i64 %"$consume_1129", i64* @_gasrem + %"$gasrem_1130" = load i64, i64* @_gasrem + %"$gascmp_1131" = icmp ugt i64 2, %"$gasrem_1130" + br i1 %"$gascmp_1131", label %"$out_of_gas_1132", label %"$have_gas_1133" + +"$out_of_gas_1132": ; preds = %"$have_gas_1128" + call void @_out_of_gas() + br label %"$have_gas_1133" + +"$have_gas_1133": ; preds = %"$out_of_gas_1132", %"$have_gas_1128" + %"$consume_1134" = sub i64 %"$gasrem_1130", 2 + store i64 %"$consume_1134", i64* @_gasrem + %"$c1_1136" = load %TName_Option_String*, %TName_Option_String** %c1 + %"$c1_tag_1137" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$c1_1136", i32 0, i32 0 + %"$c1_tag_1138" = load i8, i8* %"$c1_tag_1137" + switch i8 %"$c1_tag_1138", label %"$empty_default_1139" [ + i8 0, label %"$Some_1140" + i8 1, label %"$None_1197" ] -"$Some_523": ; preds = %entry - %"$c1_524" = bitcast %TName_Option_String* %"$c1_519" to %CName_Some_String* - %"$c_gep_525" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$c1_524", i32 0, i32 1 - %"$c_load_526" = load %String, %String* %"$c_gep_525" +"$Some_1140": ; preds = %"$have_gas_1133" + %"$c1_1141" = bitcast %TName_Option_String* %"$c1_1136" to %CName_Some_String* + %"$c_gep_1142" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$c1_1141", i32 0, i32 1 + %"$c_load_1143" = load %String, %String* %"$c_gep_1142" %c = alloca %String - store %String %"$c_load_526", %String* %c + store %String %"$c_load_1143", %String* %c + %"$gasrem_1144" = load i64, i64* @_gasrem + %"$gascmp_1145" = icmp ugt i64 1, %"$gasrem_1144" + br i1 %"$gascmp_1145", label %"$out_of_gas_1146", label %"$have_gas_1147" + +"$out_of_gas_1146": ; preds = %"$Some_1140" + call void @_out_of_gas() + br label %"$have_gas_1147" + +"$have_gas_1147": ; preds = %"$out_of_gas_1146", %"$Some_1140" + %"$consume_1148" = sub i64 %"$gasrem_1144", 1 + store i64 %"$consume_1148", i64* @_gasrem %v = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_527", i32 0, i32 0), i32 3 }, %String* %v + %"$gasrem_1149" = load i64, i64* @_gasrem + %"$gascmp_1150" = icmp ugt i64 1, %"$gasrem_1149" + br i1 %"$gascmp_1150", label %"$out_of_gas_1151", label %"$have_gas_1152" + +"$out_of_gas_1151": ; preds = %"$have_gas_1147" + call void @_out_of_gas() + br label %"$have_gas_1152" + +"$have_gas_1152": ; preds = %"$out_of_gas_1151", %"$have_gas_1147" + %"$consume_1153" = sub i64 %"$gasrem_1149", 1 + store i64 %"$consume_1153", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1154", i32 0, i32 0), i32 3 }, %String* %v + %"$gasrem_1155" = load i64, i64* @_gasrem + %"$gascmp_1156" = icmp ugt i64 1, %"$gasrem_1155" + br i1 %"$gascmp_1156", label %"$out_of_gas_1157", label %"$have_gas_1158" + +"$out_of_gas_1157": ; preds = %"$have_gas_1152" + call void @_out_of_gas() + br label %"$have_gas_1158" + +"$have_gas_1158": ; preds = %"$out_of_gas_1157", %"$have_gas_1152" + %"$consume_1159" = sub i64 %"$gasrem_1155", 1 + store i64 %"$consume_1159", i64* @_gasrem %eq = alloca %TName_Bool* - %"$execptr_load_528" = load i8*, i8** @_execptr - %"$c_529" = load %String, %String* %c - %"$v_530" = load %String, %String* %v - %"$eq_call_531" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_528", %String %"$c_529", %String %"$v_530") - store %TName_Bool* %"$eq_call_531", %TName_Bool** %eq - %"$eq_533" = load %TName_Bool*, %TName_Bool** %eq - %"$eq_tag_534" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_533", i32 0, i32 0 - %"$eq_tag_535" = load i8, i8* %"$eq_tag_534" - switch i8 %"$eq_tag_535", label %"$empty_default_536" [ - i8 0, label %"$True_537" - i8 1, label %"$False_539" + %"$execptr_load_1160" = load i8*, i8** @_execptr + %"$c_1161" = load %String, %String* %c + %"$v_1162" = load %String, %String* %v + %"$eq_call_1163" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_1160", %String %"$c_1161", %String %"$v_1162") + store %TName_Bool* %"$eq_call_1163", %TName_Bool** %eq + %"$gasrem_1164" = load i64, i64* @_gasrem + %"$gascmp_1165" = icmp ugt i64 2, %"$gasrem_1164" + br i1 %"$gascmp_1165", label %"$out_of_gas_1166", label %"$have_gas_1167" + +"$out_of_gas_1166": ; preds = %"$have_gas_1158" + call void @_out_of_gas() + br label %"$have_gas_1167" + +"$have_gas_1167": ; preds = %"$out_of_gas_1166", %"$have_gas_1158" + %"$consume_1168" = sub i64 %"$gasrem_1164", 2 + store i64 %"$consume_1168", i64* @_gasrem + %"$eq_1170" = load %TName_Bool*, %TName_Bool** %eq + %"$eq_tag_1171" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_1170", i32 0, i32 0 + %"$eq_tag_1172" = load i8, i8* %"$eq_tag_1171" + switch i8 %"$eq_tag_1172", label %"$empty_default_1173" [ + i8 0, label %"$True_1174" + i8 1, label %"$False_1176" ] -"$True_537": ; preds = %"$Some_523" - %"$eq_538" = bitcast %TName_Bool* %"$eq_533" to %CName_True* - br label %"$matchsucc_532" +"$True_1174": ; preds = %"$have_gas_1167" + %"$eq_1175" = bitcast %TName_Bool* %"$eq_1170" to %CName_True* + br label %"$matchsucc_1169" + +"$False_1176": ; preds = %"$have_gas_1167" + %"$eq_1177" = bitcast %TName_Bool* %"$eq_1170" to %CName_False* + %"$gasrem_1178" = load i64, i64* @_gasrem + %"$gascmp_1179" = icmp ugt i64 1, %"$gasrem_1178" + br i1 %"$gascmp_1179", label %"$out_of_gas_1180", label %"$have_gas_1181" + +"$out_of_gas_1180": ; preds = %"$False_1176" + call void @_out_of_gas() + br label %"$have_gas_1181" -"$False_539": ; preds = %"$Some_523" - %"$eq_540" = bitcast %TName_Bool* %"$eq_533" to %CName_False* +"$have_gas_1181": ; preds = %"$out_of_gas_1180", %"$False_1176" + %"$consume_1182" = sub i64 %"$gasrem_1178", 1 + store i64 %"$consume_1182", i64* @_gasrem %m = alloca %String - store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_541", i32 0, i32 0), i32 31 }, %String* %m - %"$fail_msg__sender_542" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_542" - %"$tname_543" = load %String, %String* %tname - %"$m_544" = load %String, %String* %m - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_542", %String %"$tname_543", %String %"$m_544") - br label %"$matchsucc_532" - -"$empty_default_536": ; preds = %"$Some_523" - br label %"$matchsucc_532" - -"$matchsucc_532": ; preds = %"$False_539", %"$True_537", %"$empty_default_536" - br label %"$matchsucc_518" - -"$None_545": ; preds = %entry - %"$c1_546" = bitcast %TName_Option_String* %"$c1_519" to %CName_None_String* + %"$gasrem_1183" = load i64, i64* @_gasrem + %"$gascmp_1184" = icmp ugt i64 1, %"$gasrem_1183" + br i1 %"$gascmp_1184", label %"$out_of_gas_1185", label %"$have_gas_1186" + +"$out_of_gas_1185": ; preds = %"$have_gas_1181" + call void @_out_of_gas() + br label %"$have_gas_1186" + +"$have_gas_1186": ; preds = %"$out_of_gas_1185", %"$have_gas_1181" + %"$consume_1187" = sub i64 %"$gasrem_1183", 1 + store i64 %"$consume_1187", i64* @_gasrem + store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_1188", i32 0, i32 0), i32 31 }, %String* %m + %"$gasrem_1189" = load i64, i64* @_gasrem + %"$gascmp_1190" = icmp ugt i64 1, %"$gasrem_1189" + br i1 %"$gascmp_1190", label %"$out_of_gas_1191", label %"$have_gas_1192" + +"$out_of_gas_1191": ; preds = %"$have_gas_1186" + call void @_out_of_gas() + br label %"$have_gas_1192" + +"$have_gas_1192": ; preds = %"$out_of_gas_1191", %"$have_gas_1186" + %"$consume_1193" = sub i64 %"$gasrem_1189", 1 + store i64 %"$consume_1193", i64* @_gasrem + %"$fail_msg__sender_1194" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1194" + %"$tname_1195" = load %String, %String* %tname + %"$m_1196" = load %String, %String* %m + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1194", %String %"$tname_1195", %String %"$m_1196") + br label %"$matchsucc_1169" + +"$empty_default_1173": ; preds = %"$have_gas_1167" + br label %"$matchsucc_1169" + +"$matchsucc_1169": ; preds = %"$have_gas_1192", %"$True_1174", %"$empty_default_1173" + br label %"$matchsucc_1135" + +"$None_1197": ; preds = %"$have_gas_1133" + %"$c1_1198" = bitcast %TName_Option_String* %"$c1_1136" to %CName_None_String* + %"$gasrem_1199" = load i64, i64* @_gasrem + %"$gascmp_1200" = icmp ugt i64 1, %"$gasrem_1199" + br i1 %"$gascmp_1200", label %"$out_of_gas_1201", label %"$have_gas_1202" + +"$out_of_gas_1201": ; preds = %"$None_1197" + call void @_out_of_gas() + br label %"$have_gas_1202" + +"$have_gas_1202": ; preds = %"$out_of_gas_1201", %"$None_1197" + %"$consume_1203" = sub i64 %"$gasrem_1199", 1 + store i64 %"$consume_1203", i64* @_gasrem %m2 = alloca %String - store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_547", i32 0, i32 0), i32 21 }, %String* %m2 - %"$fail_msg__sender_548" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_548" - %"$tname_549" = load %String, %String* %tname - %"$m_550" = load %String, %String* %m2 - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_548", %String %"$tname_549", %String %"$m_550") - br label %"$matchsucc_518" - -"$empty_default_522": ; preds = %entry - br label %"$matchsucc_518" - -"$matchsucc_518": ; preds = %"$None_545", %"$matchsucc_532", %"$empty_default_522" + %"$gasrem_1204" = load i64, i64* @_gasrem + %"$gascmp_1205" = icmp ugt i64 1, %"$gasrem_1204" + br i1 %"$gascmp_1205", label %"$out_of_gas_1206", label %"$have_gas_1207" + +"$out_of_gas_1206": ; preds = %"$have_gas_1202" + call void @_out_of_gas() + br label %"$have_gas_1207" + +"$have_gas_1207": ; preds = %"$out_of_gas_1206", %"$have_gas_1202" + %"$consume_1208" = sub i64 %"$gasrem_1204", 1 + store i64 %"$consume_1208", i64* @_gasrem + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_1209", i32 0, i32 0), i32 21 }, %String* %m2 + %"$gasrem_1210" = load i64, i64* @_gasrem + %"$gascmp_1211" = icmp ugt i64 1, %"$gasrem_1210" + br i1 %"$gascmp_1211", label %"$out_of_gas_1212", label %"$have_gas_1213" + +"$out_of_gas_1212": ; preds = %"$have_gas_1207" + call void @_out_of_gas() + br label %"$have_gas_1213" + +"$have_gas_1213": ; preds = %"$out_of_gas_1212", %"$have_gas_1207" + %"$consume_1214" = sub i64 %"$gasrem_1210", 1 + store i64 %"$consume_1214", i64* @_gasrem + %"$fail_msg__sender_1215" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1215" + %"$tname_1216" = load %String, %String* %tname + %"$m_1217" = load %String, %String* %m2 + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1215", %String %"$tname_1216", %String %"$m_1217") + br label %"$matchsucc_1135" + +"$empty_default_1139": ; preds = %"$have_gas_1133" + br label %"$matchsucc_1135" + +"$matchsucc_1135": ; preds = %"$have_gas_1213", %"$matchsucc_1169", %"$empty_default_1139" + %"$gasrem_1218" = load i64, i64* @_gasrem + %"$gascmp_1219" = icmp ugt i64 1, %"$gasrem_1218" + br i1 %"$gascmp_1219", label %"$out_of_gas_1220", label %"$have_gas_1221" + +"$out_of_gas_1220": ; preds = %"$matchsucc_1135" + call void @_out_of_gas() + br label %"$have_gas_1221" + +"$have_gas_1221": ; preds = %"$out_of_gas_1220", %"$matchsucc_1135" + %"$consume_1222" = sub i64 %"$gasrem_1218", 1 + store i64 %"$consume_1222", i64* @_gasrem %key1b = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_551", i32 0, i32 0), i32 5 }, %String* %key1b + %"$gasrem_1223" = load i64, i64* @_gasrem + %"$gascmp_1224" = icmp ugt i64 1, %"$gasrem_1223" + br i1 %"$gascmp_1224", label %"$out_of_gas_1225", label %"$have_gas_1226" + +"$out_of_gas_1225": ; preds = %"$have_gas_1221" + call void @_out_of_gas() + br label %"$have_gas_1226" + +"$have_gas_1226": ; preds = %"$out_of_gas_1225", %"$have_gas_1221" + %"$consume_1227" = sub i64 %"$gasrem_1223", 1 + store i64 %"$consume_1227", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1228", i32 0, i32 0), i32 5 }, %String* %key1b + %"$gasrem_1229" = load i64, i64* @_gasrem + %"$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_1226" + call void @_out_of_gas() + br label %"$have_gas_1232" + +"$have_gas_1232": ; preds = %"$out_of_gas_1231", %"$have_gas_1226" + %"$consume_1233" = sub i64 %"$gasrem_1229", 1 + store i64 %"$consume_1233", i64* @_gasrem %key2b = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_552", i32 0, i32 0), i32 5 }, %String* %key2b + %"$gasrem_1234" = load i64, i64* @_gasrem + %"$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 + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1239", i32 0, i32 0), i32 5 }, %String* %key2b %"$c1_0" = alloca %TName_Option_String* - %"$indices_buf_553_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_553_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_553_salloc_load", i64 32) - %"$indices_buf_553_salloc" = bitcast i8* %"$indices_buf_553_salloc_salloc" to [32 x i8]* - %"$indices_buf_553" = bitcast [32 x i8]* %"$indices_buf_553_salloc" to i8* - %"$key1b_554" = load %String, %String* %key1b - %"$indices_gep_555" = getelementptr i8, i8* %"$indices_buf_553", i32 0 - %indices_cast3 = bitcast i8* %"$indices_gep_555" to %String* - store %String %"$key1b_554", %String* %indices_cast3 - %"$key2b_556" = load %String, %String* %key2b - %"$indices_gep_557" = getelementptr i8, i8* %"$indices_buf_553", i32 16 - %indices_cast4 = bitcast i8* %"$indices_gep_557" to %String* - store %String %"$key2b_556", %String* %indices_cast4 - %"$execptr_load_558" = load i8*, i8** @_execptr - %"$$c1_0_560" = call i8* @_fetch_field(i8* %"$execptr_load_558", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_559", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 2, i8* %"$indices_buf_553", i32 1) - %"$$c1_0_561" = bitcast i8* %"$$c1_0_560" to %TName_Option_String* - store %TName_Option_String* %"$$c1_0_561", %TName_Option_String** %"$c1_0" - %"$$c1_0_563" = load %TName_Option_String*, %TName_Option_String** %"$c1_0" - %"$$c1_0_tag_564" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_0_563", i32 0, i32 0 - %"$$c1_0_tag_565" = load i8, i8* %"$$c1_0_tag_564" - switch i8 %"$$c1_0_tag_565", label %"$empty_default_566" [ - i8 0, label %"$Some_567" - i8 1, label %"$None_589" + %"$indices_buf_1240_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1240_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1240_salloc_load", i64 32) + %"$indices_buf_1240_salloc" = bitcast i8* %"$indices_buf_1240_salloc_salloc" to [32 x i8]* + %"$indices_buf_1240" = bitcast [32 x i8]* %"$indices_buf_1240_salloc" to i8* + %"$key1b_1241" = load %String, %String* %key1b + %"$indices_gep_1242" = getelementptr i8, i8* %"$indices_buf_1240", i32 0 + %indices_cast3 = bitcast i8* %"$indices_gep_1242" to %String* + store %String %"$key1b_1241", %String* %indices_cast3 + %"$key2b_1243" = load %String, %String* %key2b + %"$indices_gep_1244" = getelementptr i8, i8* %"$indices_buf_1240", i32 16 + %indices_cast4 = bitcast i8* %"$indices_gep_1244" to %String* + store %String %"$key2b_1243", %String* %indices_cast4 + %"$execptr_load_1245" = load i8*, i8** @_execptr + %"$$c1_0_1247" = call i8* @_fetch_field(i8* %"$execptr_load_1245", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1246", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1240", i32 1) + %"$$c1_0_1248" = bitcast i8* %"$$c1_0_1247" to %TName_Option_String* + store %TName_Option_String* %"$$c1_0_1248", %TName_Option_String** %"$c1_0" + %"$$c1_0_1249" = load %TName_Option_String*, %TName_Option_String** %"$c1_0" + %"$$$c1_0_1249_1250" = bitcast %TName_Option_String* %"$$c1_0_1249" to i8* + %"$_literal_cost_call_1251" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$$c1_0_1249_1250") + %"$gasadd_1252" = add i64 %"$_literal_cost_call_1251", 0 + %"$gasadd_1253" = add i64 %"$gasadd_1252", 2 + %"$gasrem_1254" = load i64, i64* @_gasrem + %"$gascmp_1255" = icmp ugt i64 %"$gasadd_1253", %"$gasrem_1254" + br i1 %"$gascmp_1255", label %"$out_of_gas_1256", label %"$have_gas_1257" + +"$out_of_gas_1256": ; preds = %"$have_gas_1237" + call void @_out_of_gas() + br label %"$have_gas_1257" + +"$have_gas_1257": ; preds = %"$out_of_gas_1256", %"$have_gas_1237" + %"$consume_1258" = sub i64 %"$gasrem_1254", %"$gasadd_1253" + store i64 %"$consume_1258", i64* @_gasrem + %"$gasrem_1259" = load i64, i64* @_gasrem + %"$gascmp_1260" = icmp ugt i64 2, %"$gasrem_1259" + br i1 %"$gascmp_1260", label %"$out_of_gas_1261", label %"$have_gas_1262" + +"$out_of_gas_1261": ; preds = %"$have_gas_1257" + call void @_out_of_gas() + br label %"$have_gas_1262" + +"$have_gas_1262": ; preds = %"$out_of_gas_1261", %"$have_gas_1257" + %"$consume_1263" = sub i64 %"$gasrem_1259", 2 + store i64 %"$consume_1263", i64* @_gasrem + %"$$c1_0_1265" = load %TName_Option_String*, %TName_Option_String** %"$c1_0" + %"$$c1_0_tag_1266" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_0_1265", i32 0, i32 0 + %"$$c1_0_tag_1267" = load i8, i8* %"$$c1_0_tag_1266" + switch i8 %"$$c1_0_tag_1267", label %"$empty_default_1268" [ + i8 0, label %"$Some_1269" + i8 1, label %"$None_1326" ] -"$Some_567": ; preds = %"$matchsucc_518" - %"$$c1_0_568" = bitcast %TName_Option_String* %"$$c1_0_563" to %CName_Some_String* - %"$c_gep_569" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_0_568", i32 0, i32 1 - %"$c_load_570" = load %String, %String* %"$c_gep_569" +"$Some_1269": ; preds = %"$have_gas_1262" + %"$$c1_0_1270" = bitcast %TName_Option_String* %"$$c1_0_1265" to %CName_Some_String* + %"$c_gep_1271" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_0_1270", i32 0, i32 1 + %"$c_load_1272" = load %String, %String* %"$c_gep_1271" %c5 = alloca %String - store %String %"$c_load_570", %String* %c5 + store %String %"$c_load_1272", %String* %c5 + %"$gasrem_1273" = load i64, i64* @_gasrem + %"$gascmp_1274" = icmp ugt i64 1, %"$gasrem_1273" + br i1 %"$gascmp_1274", label %"$out_of_gas_1275", label %"$have_gas_1276" + +"$out_of_gas_1275": ; preds = %"$Some_1269" + call void @_out_of_gas() + br label %"$have_gas_1276" + +"$have_gas_1276": ; preds = %"$out_of_gas_1275", %"$Some_1269" + %"$consume_1277" = sub i64 %"$gasrem_1273", 1 + store i64 %"$consume_1277", i64* @_gasrem %v6 = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_571", i32 0, i32 0), i32 3 }, %String* %v6 + %"$gasrem_1278" = load i64, i64* @_gasrem + %"$gascmp_1279" = icmp ugt i64 1, %"$gasrem_1278" + br i1 %"$gascmp_1279", label %"$out_of_gas_1280", label %"$have_gas_1281" + +"$out_of_gas_1280": ; preds = %"$have_gas_1276" + call void @_out_of_gas() + br label %"$have_gas_1281" + +"$have_gas_1281": ; preds = %"$out_of_gas_1280", %"$have_gas_1276" + %"$consume_1282" = sub i64 %"$gasrem_1278", 1 + store i64 %"$consume_1282", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1283", i32 0, i32 0), i32 3 }, %String* %v6 + %"$gasrem_1284" = load i64, i64* @_gasrem + %"$gascmp_1285" = icmp ugt i64 1, %"$gasrem_1284" + br i1 %"$gascmp_1285", label %"$out_of_gas_1286", label %"$have_gas_1287" + +"$out_of_gas_1286": ; preds = %"$have_gas_1281" + call void @_out_of_gas() + br label %"$have_gas_1287" + +"$have_gas_1287": ; preds = %"$out_of_gas_1286", %"$have_gas_1281" + %"$consume_1288" = sub i64 %"$gasrem_1284", 1 + store i64 %"$consume_1288", i64* @_gasrem %eq7 = alloca %TName_Bool* - %"$execptr_load_572" = load i8*, i8** @_execptr - %"$c_573" = load %String, %String* %c5 - %"$v_574" = load %String, %String* %v6 - %"$eq_call_575" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_572", %String %"$c_573", %String %"$v_574") - store %TName_Bool* %"$eq_call_575", %TName_Bool** %eq7 - %"$eq_577" = load %TName_Bool*, %TName_Bool** %eq7 - %"$eq_tag_578" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_577", i32 0, i32 0 - %"$eq_tag_579" = load i8, i8* %"$eq_tag_578" - switch i8 %"$eq_tag_579", label %"$empty_default_580" [ - i8 0, label %"$True_581" - i8 1, label %"$False_583" + %"$execptr_load_1289" = load i8*, i8** @_execptr + %"$c_1290" = load %String, %String* %c5 + %"$v_1291" = load %String, %String* %v6 + %"$eq_call_1292" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_1289", %String %"$c_1290", %String %"$v_1291") + store %TName_Bool* %"$eq_call_1292", %TName_Bool** %eq7 + %"$gasrem_1293" = load i64, i64* @_gasrem + %"$gascmp_1294" = icmp ugt i64 2, %"$gasrem_1293" + br i1 %"$gascmp_1294", label %"$out_of_gas_1295", label %"$have_gas_1296" + +"$out_of_gas_1295": ; preds = %"$have_gas_1287" + call void @_out_of_gas() + br label %"$have_gas_1296" + +"$have_gas_1296": ; preds = %"$out_of_gas_1295", %"$have_gas_1287" + %"$consume_1297" = sub i64 %"$gasrem_1293", 2 + store i64 %"$consume_1297", i64* @_gasrem + %"$eq_1299" = load %TName_Bool*, %TName_Bool** %eq7 + %"$eq_tag_1300" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_1299", i32 0, i32 0 + %"$eq_tag_1301" = load i8, i8* %"$eq_tag_1300" + switch i8 %"$eq_tag_1301", label %"$empty_default_1302" [ + i8 0, label %"$True_1303" + i8 1, label %"$False_1305" ] -"$True_581": ; preds = %"$Some_567" - %"$eq_582" = bitcast %TName_Bool* %"$eq_577" to %CName_True* - br label %"$matchsucc_576" +"$True_1303": ; preds = %"$have_gas_1296" + %"$eq_1304" = bitcast %TName_Bool* %"$eq_1299" to %CName_True* + br label %"$matchsucc_1298" -"$False_583": ; preds = %"$Some_567" - %"$eq_584" = bitcast %TName_Bool* %"$eq_577" to %CName_False* +"$False_1305": ; preds = %"$have_gas_1296" + %"$eq_1306" = bitcast %TName_Bool* %"$eq_1299" to %CName_False* + %"$gasrem_1307" = load i64, i64* @_gasrem + %"$gascmp_1308" = icmp ugt i64 1, %"$gasrem_1307" + br i1 %"$gascmp_1308", label %"$out_of_gas_1309", label %"$have_gas_1310" + +"$out_of_gas_1309": ; preds = %"$False_1305" + call void @_out_of_gas() + br label %"$have_gas_1310" + +"$have_gas_1310": ; preds = %"$out_of_gas_1309", %"$False_1305" + %"$consume_1311" = sub i64 %"$gasrem_1307", 1 + store i64 %"$consume_1311", i64* @_gasrem %m8 = alloca %String - store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_585", i32 0, i32 0), i32 31 }, %String* %m8 - %"$fail_msg__sender_586" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_586" - %"$tname_587" = load %String, %String* %tname - %"$m_588" = load %String, %String* %m8 - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_586", %String %"$tname_587", %String %"$m_588") - br label %"$matchsucc_576" - -"$empty_default_580": ; preds = %"$Some_567" - br label %"$matchsucc_576" - -"$matchsucc_576": ; preds = %"$False_583", %"$True_581", %"$empty_default_580" - br label %"$matchsucc_562" - -"$None_589": ; preds = %"$matchsucc_518" - %"$$c1_0_590" = bitcast %TName_Option_String* %"$$c1_0_563" to %CName_None_String* + %"$gasrem_1312" = load i64, i64* @_gasrem + %"$gascmp_1313" = icmp ugt i64 1, %"$gasrem_1312" + br i1 %"$gascmp_1313", label %"$out_of_gas_1314", label %"$have_gas_1315" + +"$out_of_gas_1314": ; preds = %"$have_gas_1310" + call void @_out_of_gas() + br label %"$have_gas_1315" + +"$have_gas_1315": ; preds = %"$out_of_gas_1314", %"$have_gas_1310" + %"$consume_1316" = sub i64 %"$gasrem_1312", 1 + store i64 %"$consume_1316", i64* @_gasrem + store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_1317", i32 0, i32 0), i32 31 }, %String* %m8 + %"$gasrem_1318" = load i64, i64* @_gasrem + %"$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_1315" + call void @_out_of_gas() + br label %"$have_gas_1321" + +"$have_gas_1321": ; preds = %"$out_of_gas_1320", %"$have_gas_1315" + %"$consume_1322" = sub i64 %"$gasrem_1318", 1 + store i64 %"$consume_1322", i64* @_gasrem + %"$fail_msg__sender_1323" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1323" + %"$tname_1324" = load %String, %String* %tname + %"$m_1325" = load %String, %String* %m8 + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1323", %String %"$tname_1324", %String %"$m_1325") + br label %"$matchsucc_1298" + +"$empty_default_1302": ; preds = %"$have_gas_1296" + br label %"$matchsucc_1298" + +"$matchsucc_1298": ; preds = %"$have_gas_1321", %"$True_1303", %"$empty_default_1302" + br label %"$matchsucc_1264" + +"$None_1326": ; preds = %"$have_gas_1262" + %"$$c1_0_1327" = bitcast %TName_Option_String* %"$$c1_0_1265" to %CName_None_String* + %"$gasrem_1328" = load i64, i64* @_gasrem + %"$gascmp_1329" = icmp ugt i64 1, %"$gasrem_1328" + br i1 %"$gascmp_1329", label %"$out_of_gas_1330", label %"$have_gas_1331" + +"$out_of_gas_1330": ; preds = %"$None_1326" + call void @_out_of_gas() + br label %"$have_gas_1331" + +"$have_gas_1331": ; preds = %"$out_of_gas_1330", %"$None_1326" + %"$consume_1332" = sub i64 %"$gasrem_1328", 1 + store i64 %"$consume_1332", i64* @_gasrem %m9 = alloca %String - store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_591", i32 0, i32 0), i32 21 }, %String* %m9 - %"$fail_msg__sender_592" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_592" - %"$tname_593" = load %String, %String* %tname - %"$m_594" = load %String, %String* %m9 - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_592", %String %"$tname_593", %String %"$m_594") - br label %"$matchsucc_562" - -"$empty_default_566": ; preds = %"$matchsucc_518" - br label %"$matchsucc_562" - -"$matchsucc_562": ; preds = %"$None_589", %"$matchsucc_576", %"$empty_default_566" + %"$gasrem_1333" = load i64, i64* @_gasrem + %"$gascmp_1334" = icmp ugt i64 1, %"$gasrem_1333" + br i1 %"$gascmp_1334", label %"$out_of_gas_1335", label %"$have_gas_1336" + +"$out_of_gas_1335": ; preds = %"$have_gas_1331" + call void @_out_of_gas() + br label %"$have_gas_1336" + +"$have_gas_1336": ; preds = %"$out_of_gas_1335", %"$have_gas_1331" + %"$consume_1337" = sub i64 %"$gasrem_1333", 1 + store i64 %"$consume_1337", i64* @_gasrem + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_1338", i32 0, i32 0), i32 21 }, %String* %m9 + %"$gasrem_1339" = load i64, i64* @_gasrem + %"$gascmp_1340" = icmp ugt i64 1, %"$gasrem_1339" + br i1 %"$gascmp_1340", label %"$out_of_gas_1341", label %"$have_gas_1342" + +"$out_of_gas_1341": ; preds = %"$have_gas_1336" + call void @_out_of_gas() + br label %"$have_gas_1342" + +"$have_gas_1342": ; preds = %"$out_of_gas_1341", %"$have_gas_1336" + %"$consume_1343" = sub i64 %"$gasrem_1339", 1 + store i64 %"$consume_1343", i64* @_gasrem + %"$fail_msg__sender_1344" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1344" + %"$tname_1345" = load %String, %String* %tname + %"$m_1346" = load %String, %String* %m9 + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1344", %String %"$tname_1345", %String %"$m_1346") + br label %"$matchsucc_1264" + +"$empty_default_1268": ; preds = %"$have_gas_1262" + br label %"$matchsucc_1264" + +"$matchsucc_1264": ; preds = %"$have_gas_1342", %"$matchsucc_1298", %"$empty_default_1268" + %"$gasrem_1347" = load i64, i64* @_gasrem + %"$gascmp_1348" = icmp ugt i64 1, %"$gasrem_1347" + br i1 %"$gascmp_1348", label %"$out_of_gas_1349", label %"$have_gas_1350" + +"$out_of_gas_1349": ; preds = %"$matchsucc_1264" + call void @_out_of_gas() + br label %"$have_gas_1350" + +"$have_gas_1350": ; preds = %"$out_of_gas_1349", %"$matchsucc_1264" + %"$consume_1351" = sub i64 %"$gasrem_1347", 1 + store i64 %"$consume_1351", i64* @_gasrem %"$key1b_1" = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_595", i32 0, i32 0), i32 5 }, %String* %"$key1b_1" + %"$gasrem_1352" = load i64, i64* @_gasrem + %"$gascmp_1353" = icmp ugt i64 1, %"$gasrem_1352" + br i1 %"$gascmp_1353", label %"$out_of_gas_1354", label %"$have_gas_1355" + +"$out_of_gas_1354": ; preds = %"$have_gas_1350" + call void @_out_of_gas() + br label %"$have_gas_1355" + +"$have_gas_1355": ; preds = %"$out_of_gas_1354", %"$have_gas_1350" + %"$consume_1356" = sub i64 %"$gasrem_1352", 1 + store i64 %"$consume_1356", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1357", i32 0, i32 0), i32 5 }, %String* %"$key1b_1" + %"$gasrem_1358" = load i64, i64* @_gasrem + %"$gascmp_1359" = icmp ugt i64 1, %"$gasrem_1358" + br i1 %"$gascmp_1359", label %"$out_of_gas_1360", label %"$have_gas_1361" + +"$out_of_gas_1360": ; preds = %"$have_gas_1355" + call void @_out_of_gas() + br label %"$have_gas_1361" + +"$have_gas_1361": ; preds = %"$out_of_gas_1360", %"$have_gas_1355" + %"$consume_1362" = sub i64 %"$gasrem_1358", 1 + store i64 %"$consume_1362", i64* @_gasrem %key2c = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_596", i32 0, i32 0), i32 5 }, %String* %key2c + %"$gasrem_1363" = load i64, i64* @_gasrem + %"$gascmp_1364" = icmp ugt i64 1, %"$gasrem_1363" + br i1 %"$gascmp_1364", label %"$out_of_gas_1365", label %"$have_gas_1366" + +"$out_of_gas_1365": ; preds = %"$have_gas_1361" + call void @_out_of_gas() + br label %"$have_gas_1366" + +"$have_gas_1366": ; preds = %"$out_of_gas_1365", %"$have_gas_1361" + %"$consume_1367" = sub i64 %"$gasrem_1363", 1 + store i64 %"$consume_1367", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1368", i32 0, i32 0), i32 5 }, %String* %key2c %"$c1_2" = alloca %TName_Option_String* - %"$indices_buf_597_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_597_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_597_salloc_load", i64 32) - %"$indices_buf_597_salloc" = bitcast i8* %"$indices_buf_597_salloc_salloc" to [32 x i8]* - %"$indices_buf_597" = bitcast [32 x i8]* %"$indices_buf_597_salloc" to i8* - %"$$key1b_1_598" = load %String, %String* %"$key1b_1" - %"$indices_gep_599" = getelementptr i8, i8* %"$indices_buf_597", i32 0 - %indices_cast10 = bitcast i8* %"$indices_gep_599" to %String* - store %String %"$$key1b_1_598", %String* %indices_cast10 - %"$key2c_600" = load %String, %String* %key2c - %"$indices_gep_601" = getelementptr i8, i8* %"$indices_buf_597", i32 16 - %indices_cast11 = bitcast i8* %"$indices_gep_601" to %String* - store %String %"$key2c_600", %String* %indices_cast11 - %"$execptr_load_602" = load i8*, i8** @_execptr - %"$$c1_2_604" = call i8* @_fetch_field(i8* %"$execptr_load_602", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_603", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 2, i8* %"$indices_buf_597", i32 1) - %"$$c1_2_605" = bitcast i8* %"$$c1_2_604" to %TName_Option_String* - store %TName_Option_String* %"$$c1_2_605", %TName_Option_String** %"$c1_2" - %"$$c1_2_607" = load %TName_Option_String*, %TName_Option_String** %"$c1_2" - %"$$c1_2_tag_608" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_2_607", i32 0, i32 0 - %"$$c1_2_tag_609" = load i8, i8* %"$$c1_2_tag_608" - switch i8 %"$$c1_2_tag_609", label %"$empty_default_610" [ - i8 0, label %"$Some_611" - i8 1, label %"$None_633" + %"$indices_buf_1369_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1369_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1369_salloc_load", i64 32) + %"$indices_buf_1369_salloc" = bitcast i8* %"$indices_buf_1369_salloc_salloc" to [32 x i8]* + %"$indices_buf_1369" = bitcast [32 x i8]* %"$indices_buf_1369_salloc" to i8* + %"$$key1b_1_1370" = load %String, %String* %"$key1b_1" + %"$indices_gep_1371" = getelementptr i8, i8* %"$indices_buf_1369", i32 0 + %indices_cast10 = bitcast i8* %"$indices_gep_1371" to %String* + store %String %"$$key1b_1_1370", %String* %indices_cast10 + %"$key2c_1372" = load %String, %String* %key2c + %"$indices_gep_1373" = getelementptr i8, i8* %"$indices_buf_1369", i32 16 + %indices_cast11 = bitcast i8* %"$indices_gep_1373" to %String* + store %String %"$key2c_1372", %String* %indices_cast11 + %"$execptr_load_1374" = load i8*, i8** @_execptr + %"$$c1_2_1376" = call i8* @_fetch_field(i8* %"$execptr_load_1374", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1375", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1369", i32 1) + %"$$c1_2_1377" = bitcast i8* %"$$c1_2_1376" to %TName_Option_String* + store %TName_Option_String* %"$$c1_2_1377", %TName_Option_String** %"$c1_2" + %"$$c1_2_1378" = load %TName_Option_String*, %TName_Option_String** %"$c1_2" + %"$$$c1_2_1378_1379" = bitcast %TName_Option_String* %"$$c1_2_1378" to i8* + %"$_literal_cost_call_1380" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$$c1_2_1378_1379") + %"$gasadd_1381" = add i64 %"$_literal_cost_call_1380", 0 + %"$gasadd_1382" = add i64 %"$gasadd_1381", 2 + %"$gasrem_1383" = load i64, i64* @_gasrem + %"$gascmp_1384" = icmp ugt i64 %"$gasadd_1382", %"$gasrem_1383" + br i1 %"$gascmp_1384", label %"$out_of_gas_1385", label %"$have_gas_1386" + +"$out_of_gas_1385": ; preds = %"$have_gas_1366" + call void @_out_of_gas() + br label %"$have_gas_1386" + +"$have_gas_1386": ; preds = %"$out_of_gas_1385", %"$have_gas_1366" + %"$consume_1387" = sub i64 %"$gasrem_1383", %"$gasadd_1382" + store i64 %"$consume_1387", i64* @_gasrem + %"$gasrem_1388" = load i64, i64* @_gasrem + %"$gascmp_1389" = icmp ugt i64 2, %"$gasrem_1388" + br i1 %"$gascmp_1389", label %"$out_of_gas_1390", label %"$have_gas_1391" + +"$out_of_gas_1390": ; preds = %"$have_gas_1386" + call void @_out_of_gas() + br label %"$have_gas_1391" + +"$have_gas_1391": ; preds = %"$out_of_gas_1390", %"$have_gas_1386" + %"$consume_1392" = sub i64 %"$gasrem_1388", 2 + store i64 %"$consume_1392", i64* @_gasrem + %"$$c1_2_1394" = load %TName_Option_String*, %TName_Option_String** %"$c1_2" + %"$$c1_2_tag_1395" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_2_1394", i32 0, i32 0 + %"$$c1_2_tag_1396" = load i8, i8* %"$$c1_2_tag_1395" + switch i8 %"$$c1_2_tag_1396", label %"$empty_default_1397" [ + i8 0, label %"$Some_1398" + i8 1, label %"$None_1455" ] -"$Some_611": ; preds = %"$matchsucc_562" - %"$$c1_2_612" = bitcast %TName_Option_String* %"$$c1_2_607" to %CName_Some_String* - %"$c_gep_613" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_2_612", i32 0, i32 1 - %"$c_load_614" = load %String, %String* %"$c_gep_613" +"$Some_1398": ; preds = %"$have_gas_1391" + %"$$c1_2_1399" = bitcast %TName_Option_String* %"$$c1_2_1394" to %CName_Some_String* + %"$c_gep_1400" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_2_1399", i32 0, i32 1 + %"$c_load_1401" = load %String, %String* %"$c_gep_1400" %c12 = alloca %String - store %String %"$c_load_614", %String* %c12 + store %String %"$c_load_1401", %String* %c12 + %"$gasrem_1402" = load i64, i64* @_gasrem + %"$gascmp_1403" = icmp ugt i64 1, %"$gasrem_1402" + br i1 %"$gascmp_1403", label %"$out_of_gas_1404", label %"$have_gas_1405" + +"$out_of_gas_1404": ; preds = %"$Some_1398" + call void @_out_of_gas() + br label %"$have_gas_1405" + +"$have_gas_1405": ; preds = %"$out_of_gas_1404", %"$Some_1398" + %"$consume_1406" = sub i64 %"$gasrem_1402", 1 + store i64 %"$consume_1406", i64* @_gasrem %v13 = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_615", i32 0, i32 0), i32 3 }, %String* %v13 + %"$gasrem_1407" = load i64, i64* @_gasrem + %"$gascmp_1408" = icmp ugt i64 1, %"$gasrem_1407" + br i1 %"$gascmp_1408", label %"$out_of_gas_1409", label %"$have_gas_1410" + +"$out_of_gas_1409": ; preds = %"$have_gas_1405" + call void @_out_of_gas() + br label %"$have_gas_1410" + +"$have_gas_1410": ; preds = %"$out_of_gas_1409", %"$have_gas_1405" + %"$consume_1411" = sub i64 %"$gasrem_1407", 1 + store i64 %"$consume_1411", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1412", i32 0, i32 0), i32 3 }, %String* %v13 + %"$gasrem_1413" = load i64, i64* @_gasrem + %"$gascmp_1414" = icmp ugt i64 1, %"$gasrem_1413" + br i1 %"$gascmp_1414", label %"$out_of_gas_1415", label %"$have_gas_1416" + +"$out_of_gas_1415": ; preds = %"$have_gas_1410" + call void @_out_of_gas() + br label %"$have_gas_1416" + +"$have_gas_1416": ; preds = %"$out_of_gas_1415", %"$have_gas_1410" + %"$consume_1417" = sub i64 %"$gasrem_1413", 1 + store i64 %"$consume_1417", i64* @_gasrem %eq14 = alloca %TName_Bool* - %"$execptr_load_616" = load i8*, i8** @_execptr - %"$c_617" = load %String, %String* %c12 - %"$v_618" = load %String, %String* %v13 - %"$eq_call_619" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_616", %String %"$c_617", %String %"$v_618") - store %TName_Bool* %"$eq_call_619", %TName_Bool** %eq14 - %"$eq_621" = load %TName_Bool*, %TName_Bool** %eq14 - %"$eq_tag_622" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_621", i32 0, i32 0 - %"$eq_tag_623" = load i8, i8* %"$eq_tag_622" - switch i8 %"$eq_tag_623", label %"$empty_default_624" [ - i8 0, label %"$True_625" - i8 1, label %"$False_627" + %"$execptr_load_1418" = load i8*, i8** @_execptr + %"$c_1419" = load %String, %String* %c12 + %"$v_1420" = load %String, %String* %v13 + %"$eq_call_1421" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_1418", %String %"$c_1419", %String %"$v_1420") + store %TName_Bool* %"$eq_call_1421", %TName_Bool** %eq14 + %"$gasrem_1422" = load i64, i64* @_gasrem + %"$gascmp_1423" = icmp ugt i64 2, %"$gasrem_1422" + br i1 %"$gascmp_1423", label %"$out_of_gas_1424", label %"$have_gas_1425" + +"$out_of_gas_1424": ; preds = %"$have_gas_1416" + call void @_out_of_gas() + br label %"$have_gas_1425" + +"$have_gas_1425": ; preds = %"$out_of_gas_1424", %"$have_gas_1416" + %"$consume_1426" = sub i64 %"$gasrem_1422", 2 + store i64 %"$consume_1426", i64* @_gasrem + %"$eq_1428" = load %TName_Bool*, %TName_Bool** %eq14 + %"$eq_tag_1429" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_1428", i32 0, i32 0 + %"$eq_tag_1430" = load i8, i8* %"$eq_tag_1429" + switch i8 %"$eq_tag_1430", label %"$empty_default_1431" [ + i8 0, label %"$True_1432" + i8 1, label %"$False_1434" ] -"$True_625": ; preds = %"$Some_611" - %"$eq_626" = bitcast %TName_Bool* %"$eq_621" to %CName_True* - br label %"$matchsucc_620" +"$True_1432": ; preds = %"$have_gas_1425" + %"$eq_1433" = bitcast %TName_Bool* %"$eq_1428" to %CName_True* + br label %"$matchsucc_1427" + +"$False_1434": ; preds = %"$have_gas_1425" + %"$eq_1435" = bitcast %TName_Bool* %"$eq_1428" to %CName_False* + %"$gasrem_1436" = load i64, i64* @_gasrem + %"$gascmp_1437" = icmp ugt i64 1, %"$gasrem_1436" + br i1 %"$gascmp_1437", label %"$out_of_gas_1438", label %"$have_gas_1439" -"$False_627": ; preds = %"$Some_611" - %"$eq_628" = bitcast %TName_Bool* %"$eq_621" to %CName_False* +"$out_of_gas_1438": ; preds = %"$False_1434" + call void @_out_of_gas() + br label %"$have_gas_1439" + +"$have_gas_1439": ; preds = %"$out_of_gas_1438", %"$False_1434" + %"$consume_1440" = sub i64 %"$gasrem_1436", 1 + store i64 %"$consume_1440", i64* @_gasrem %m15 = alloca %String - store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_629", i32 0, i32 0), i32 31 }, %String* %m15 - %"$fail_msg__sender_630" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_630" - %"$tname_631" = load %String, %String* %tname - %"$m_632" = load %String, %String* %m15 - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_630", %String %"$tname_631", %String %"$m_632") - br label %"$matchsucc_620" - -"$empty_default_624": ; preds = %"$Some_611" - br label %"$matchsucc_620" - -"$matchsucc_620": ; preds = %"$False_627", %"$True_625", %"$empty_default_624" - br label %"$matchsucc_606" - -"$None_633": ; preds = %"$matchsucc_562" - %"$$c1_2_634" = bitcast %TName_Option_String* %"$$c1_2_607" to %CName_None_String* + %"$gasrem_1441" = load i64, i64* @_gasrem + %"$gascmp_1442" = icmp ugt i64 1, %"$gasrem_1441" + br i1 %"$gascmp_1442", label %"$out_of_gas_1443", label %"$have_gas_1444" + +"$out_of_gas_1443": ; preds = %"$have_gas_1439" + call void @_out_of_gas() + br label %"$have_gas_1444" + +"$have_gas_1444": ; preds = %"$out_of_gas_1443", %"$have_gas_1439" + %"$consume_1445" = sub i64 %"$gasrem_1441", 1 + store i64 %"$consume_1445", i64* @_gasrem + store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_1446", i32 0, i32 0), i32 31 }, %String* %m15 + %"$gasrem_1447" = load i64, i64* @_gasrem + %"$gascmp_1448" = icmp ugt i64 1, %"$gasrem_1447" + br i1 %"$gascmp_1448", label %"$out_of_gas_1449", label %"$have_gas_1450" + +"$out_of_gas_1449": ; preds = %"$have_gas_1444" + call void @_out_of_gas() + br label %"$have_gas_1450" + +"$have_gas_1450": ; preds = %"$out_of_gas_1449", %"$have_gas_1444" + %"$consume_1451" = sub i64 %"$gasrem_1447", 1 + store i64 %"$consume_1451", i64* @_gasrem + %"$fail_msg__sender_1452" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1452" + %"$tname_1453" = load %String, %String* %tname + %"$m_1454" = load %String, %String* %m15 + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1452", %String %"$tname_1453", %String %"$m_1454") + br label %"$matchsucc_1427" + +"$empty_default_1431": ; preds = %"$have_gas_1425" + br label %"$matchsucc_1427" + +"$matchsucc_1427": ; preds = %"$have_gas_1450", %"$True_1432", %"$empty_default_1431" + br label %"$matchsucc_1393" + +"$None_1455": ; preds = %"$have_gas_1391" + %"$$c1_2_1456" = bitcast %TName_Option_String* %"$$c1_2_1394" to %CName_None_String* + %"$gasrem_1457" = load i64, i64* @_gasrem + %"$gascmp_1458" = icmp ugt i64 1, %"$gasrem_1457" + br i1 %"$gascmp_1458", label %"$out_of_gas_1459", label %"$have_gas_1460" + +"$out_of_gas_1459": ; preds = %"$None_1455" + call void @_out_of_gas() + br label %"$have_gas_1460" + +"$have_gas_1460": ; preds = %"$out_of_gas_1459", %"$None_1455" + %"$consume_1461" = sub i64 %"$gasrem_1457", 1 + store i64 %"$consume_1461", i64* @_gasrem %m16 = alloca %String - store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_635", i32 0, i32 0), i32 21 }, %String* %m16 - %"$fail_msg__sender_636" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_636" - %"$tname_637" = load %String, %String* %tname - %"$m_638" = load %String, %String* %m16 - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_636", %String %"$tname_637", %String %"$m_638") - br label %"$matchsucc_606" - -"$empty_default_610": ; preds = %"$matchsucc_562" - br label %"$matchsucc_606" - -"$matchsucc_606": ; preds = %"$None_633", %"$matchsucc_620", %"$empty_default_610" - %"$indices_buf_639_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_639_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_639_salloc_load", i64 16) - %"$indices_buf_639_salloc" = bitcast i8* %"$indices_buf_639_salloc_salloc" to [16 x i8]* - %"$indices_buf_639" = bitcast [16 x i8]* %"$indices_buf_639_salloc" to i8* - %"$$key1b_1_640" = load %String, %String* %"$key1b_1" - %"$indices_gep_641" = getelementptr i8, i8* %"$indices_buf_639", i32 0 - %indices_cast17 = bitcast i8* %"$indices_gep_641" to %String* - store %String %"$$key1b_1_640", %String* %indices_cast17 - %"$execptr_load_642" = load i8*, i8** @_execptr - call void @_update_field(i8* %"$execptr_load_642", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_643", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_639", i8* null) + %"$gasrem_1462" = load i64, i64* @_gasrem + %"$gascmp_1463" = icmp ugt i64 1, %"$gasrem_1462" + br i1 %"$gascmp_1463", label %"$out_of_gas_1464", label %"$have_gas_1465" + +"$out_of_gas_1464": ; preds = %"$have_gas_1460" + call void @_out_of_gas() + br label %"$have_gas_1465" + +"$have_gas_1465": ; preds = %"$out_of_gas_1464", %"$have_gas_1460" + %"$consume_1466" = sub i64 %"$gasrem_1462", 1 + store i64 %"$consume_1466", i64* @_gasrem + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_1467", i32 0, i32 0), i32 21 }, %String* %m16 + %"$gasrem_1468" = load i64, i64* @_gasrem + %"$gascmp_1469" = icmp ugt i64 1, %"$gasrem_1468" + br i1 %"$gascmp_1469", label %"$out_of_gas_1470", label %"$have_gas_1471" + +"$out_of_gas_1470": ; preds = %"$have_gas_1465" + call void @_out_of_gas() + br label %"$have_gas_1471" + +"$have_gas_1471": ; preds = %"$out_of_gas_1470", %"$have_gas_1465" + %"$consume_1472" = sub i64 %"$gasrem_1468", 1 + store i64 %"$consume_1472", i64* @_gasrem + %"$fail_msg__sender_1473" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1473" + %"$tname_1474" = load %String, %String* %tname + %"$m_1475" = load %String, %String* %m16 + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1473", %String %"$tname_1474", %String %"$m_1475") + br label %"$matchsucc_1393" + +"$empty_default_1397": ; preds = %"$have_gas_1391" + br label %"$matchsucc_1393" + +"$matchsucc_1393": ; preds = %"$have_gas_1471", %"$matchsucc_1427", %"$empty_default_1397" + %"$gasrem_1476" = load i64, i64* @_gasrem + %"$gascmp_1477" = icmp ugt i64 1, %"$gasrem_1476" + br i1 %"$gascmp_1477", label %"$out_of_gas_1478", label %"$have_gas_1479" + +"$out_of_gas_1478": ; preds = %"$matchsucc_1393" + call void @_out_of_gas() + br label %"$have_gas_1479" + +"$have_gas_1479": ; preds = %"$out_of_gas_1478", %"$matchsucc_1393" + %"$consume_1480" = sub i64 %"$gasrem_1476", 1 + store i64 %"$consume_1480", i64* @_gasrem + %"$indices_buf_1481_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1481_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1481_salloc_load", i64 16) + %"$indices_buf_1481_salloc" = bitcast i8* %"$indices_buf_1481_salloc_salloc" to [16 x i8]* + %"$indices_buf_1481" = bitcast [16 x i8]* %"$indices_buf_1481_salloc" to i8* + %"$$key1b_1_1482" = load %String, %String* %"$key1b_1" + %"$indices_gep_1483" = getelementptr i8, i8* %"$indices_buf_1481", i32 0 + %indices_cast17 = bitcast i8* %"$indices_gep_1483" to %String* + store %String %"$$key1b_1_1482", %String* %indices_cast17 + %"$execptr_load_1484" = load i8*, i8** @_execptr + call void @_update_field(i8* %"$execptr_load_1484", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1485", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 1, i8* %"$indices_buf_1481", i8* null) ret void } define void @t6(i8* %0) { entry: - %"$_amount_645" = getelementptr i8, i8* %0, i32 0 - %"$_amount_646" = bitcast i8* %"$_amount_645" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_646" - %"$_sender_647" = getelementptr i8, i8* %0, i32 16 - %"$_sender_648" = bitcast i8* %"$_sender_647" to [20 x i8]* - call void @"$t6_504"(%Uint128 %_amount, [20 x i8]* %"$_sender_648") + %"$_amount_1487" = getelementptr i8, i8* %0, i32 0 + %"$_amount_1488" = bitcast i8* %"$_amount_1487" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_1488" + %"$_sender_1489" = getelementptr i8, i8* %0, i32 16 + %"$_sender_1490" = bitcast i8* %"$_sender_1489" to [20 x i8]* + call void @"$t6_1076"(%Uint128 %_amount, [20 x i8]* %"$_sender_1490") ret void } -define internal void @"$t7_649"(%Uint128 %_amount, [20 x i8]* %"$_sender_650") { +define internal void @"$t7_1491"(%Uint128 %_amount, [20 x i8]* %"$_sender_1492") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_650" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1492" + %"$gasrem_1493" = load i64, i64* @_gasrem + %"$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 = %entry + call void @_out_of_gas() + br label %"$have_gas_1496" + +"$have_gas_1496": ; preds = %"$out_of_gas_1495", %entry + %"$consume_1497" = sub i64 %"$gasrem_1493", 1 + store i64 %"$consume_1497", i64* @_gasrem %tname = alloca %String - store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_651", i32 0, i32 0), i32 2 }, %String* %tname + %"$gasrem_1498" = load i64, i64* @_gasrem + %"$gascmp_1499" = icmp ugt i64 1, %"$gasrem_1498" + br i1 %"$gascmp_1499", label %"$out_of_gas_1500", label %"$have_gas_1501" + +"$out_of_gas_1500": ; preds = %"$have_gas_1496" + call void @_out_of_gas() + br label %"$have_gas_1501" + +"$have_gas_1501": ; preds = %"$out_of_gas_1500", %"$have_gas_1496" + %"$consume_1502" = sub i64 %"$gasrem_1498", 1 + store i64 %"$consume_1502", i64* @_gasrem + store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_1503", i32 0, i32 0), i32 2 }, %String* %tname + %"$gasrem_1504" = load i64, i64* @_gasrem + %"$gascmp_1505" = icmp ugt i64 1, %"$gasrem_1504" + br i1 %"$gascmp_1505", label %"$out_of_gas_1506", label %"$have_gas_1507" + +"$out_of_gas_1506": ; preds = %"$have_gas_1501" + call void @_out_of_gas() + br label %"$have_gas_1507" + +"$have_gas_1507": ; preds = %"$out_of_gas_1506", %"$have_gas_1501" + %"$consume_1508" = sub i64 %"$gasrem_1504", 1 + store i64 %"$consume_1508", i64* @_gasrem %key1a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_652", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_1509" = load i64, i64* @_gasrem + %"$gascmp_1510" = icmp ugt i64 1, %"$gasrem_1509" + br i1 %"$gascmp_1510", label %"$out_of_gas_1511", label %"$have_gas_1512" + +"$out_of_gas_1511": ; preds = %"$have_gas_1507" + call void @_out_of_gas() + br label %"$have_gas_1512" + +"$have_gas_1512": ; preds = %"$out_of_gas_1511", %"$have_gas_1507" + %"$consume_1513" = sub i64 %"$gasrem_1509", 1 + store i64 %"$consume_1513", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1514", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_1515" = load i64, i64* @_gasrem + %"$gascmp_1516" = icmp ugt i64 1, %"$gasrem_1515" + br i1 %"$gascmp_1516", label %"$out_of_gas_1517", label %"$have_gas_1518" + +"$out_of_gas_1517": ; preds = %"$have_gas_1512" + call void @_out_of_gas() + br label %"$have_gas_1518" + +"$have_gas_1518": ; preds = %"$out_of_gas_1517", %"$have_gas_1512" + %"$consume_1519" = sub i64 %"$gasrem_1515", 1 + store i64 %"$consume_1519", i64* @_gasrem %key2a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_653", i32 0, i32 0), i32 5 }, %String* %key2a + %"$gasrem_1520" = load i64, i64* @_gasrem + %"$gascmp_1521" = icmp ugt i64 1, %"$gasrem_1520" + br i1 %"$gascmp_1521", label %"$out_of_gas_1522", label %"$have_gas_1523" + +"$out_of_gas_1522": ; preds = %"$have_gas_1518" + call void @_out_of_gas() + br label %"$have_gas_1523" + +"$have_gas_1523": ; preds = %"$out_of_gas_1522", %"$have_gas_1518" + %"$consume_1524" = sub i64 %"$gasrem_1520", 1 + store i64 %"$consume_1524", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1525", i32 0, i32 0), i32 5 }, %String* %key2a %c1 = alloca %TName_Option_String* - %"$indices_buf_654_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_654_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_654_salloc_load", i64 32) - %"$indices_buf_654_salloc" = bitcast i8* %"$indices_buf_654_salloc_salloc" to [32 x i8]* - %"$indices_buf_654" = bitcast [32 x i8]* %"$indices_buf_654_salloc" to i8* - %"$key1a_655" = load %String, %String* %key1a - %"$indices_gep_656" = getelementptr i8, i8* %"$indices_buf_654", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_656" to %String* - store %String %"$key1a_655", %String* %indices_cast - %"$key2a_657" = load %String, %String* %key2a - %"$indices_gep_658" = getelementptr i8, i8* %"$indices_buf_654", i32 16 - %indices_cast1 = bitcast i8* %"$indices_gep_658" to %String* - store %String %"$key2a_657", %String* %indices_cast1 - %"$execptr_load_659" = load i8*, i8** @_execptr - %"$c1_661" = call i8* @_fetch_field(i8* %"$execptr_load_659", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_660", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 2, i8* %"$indices_buf_654", i32 1) - %"$c1_662" = bitcast i8* %"$c1_661" to %TName_Option_String* - store %TName_Option_String* %"$c1_662", %TName_Option_String** %c1 - %"$c1_664" = load %TName_Option_String*, %TName_Option_String** %c1 - %"$c1_tag_665" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$c1_664", i32 0, i32 0 - %"$c1_tag_666" = load i8, i8* %"$c1_tag_665" - switch i8 %"$c1_tag_666", label %"$empty_default_667" [ - i8 0, label %"$Some_668" - i8 1, label %"$None_690" + %"$indices_buf_1526_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1526_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1526_salloc_load", i64 32) + %"$indices_buf_1526_salloc" = bitcast i8* %"$indices_buf_1526_salloc_salloc" to [32 x i8]* + %"$indices_buf_1526" = bitcast [32 x i8]* %"$indices_buf_1526_salloc" to i8* + %"$key1a_1527" = load %String, %String* %key1a + %"$indices_gep_1528" = getelementptr i8, i8* %"$indices_buf_1526", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_1528" to %String* + store %String %"$key1a_1527", %String* %indices_cast + %"$key2a_1529" = load %String, %String* %key2a + %"$indices_gep_1530" = getelementptr i8, i8* %"$indices_buf_1526", i32 16 + %indices_cast1 = bitcast i8* %"$indices_gep_1530" to %String* + store %String %"$key2a_1529", %String* %indices_cast1 + %"$execptr_load_1531" = load i8*, i8** @_execptr + %"$c1_1533" = call i8* @_fetch_field(i8* %"$execptr_load_1531", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1532", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1526", i32 1) + %"$c1_1534" = bitcast i8* %"$c1_1533" to %TName_Option_String* + store %TName_Option_String* %"$c1_1534", %TName_Option_String** %c1 + %"$c1_1535" = load %TName_Option_String*, %TName_Option_String** %c1 + %"$$c1_1535_1536" = bitcast %TName_Option_String* %"$c1_1535" to i8* + %"$_literal_cost_call_1537" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$c1_1535_1536") + %"$gasadd_1538" = add i64 %"$_literal_cost_call_1537", 0 + %"$gasadd_1539" = add i64 %"$gasadd_1538", 2 + %"$gasrem_1540" = load i64, i64* @_gasrem + %"$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_1523" + call void @_out_of_gas() + br label %"$have_gas_1543" + +"$have_gas_1543": ; preds = %"$out_of_gas_1542", %"$have_gas_1523" + %"$consume_1544" = sub i64 %"$gasrem_1540", %"$gasadd_1539" + store i64 %"$consume_1544", i64* @_gasrem + %"$gasrem_1545" = load i64, i64* @_gasrem + %"$gascmp_1546" = icmp ugt i64 2, %"$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", 2 + store i64 %"$consume_1549", i64* @_gasrem + %"$c1_1551" = load %TName_Option_String*, %TName_Option_String** %c1 + %"$c1_tag_1552" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$c1_1551", i32 0, i32 0 + %"$c1_tag_1553" = load i8, i8* %"$c1_tag_1552" + switch i8 %"$c1_tag_1553", label %"$empty_default_1554" [ + i8 0, label %"$Some_1555" + i8 1, label %"$None_1612" ] -"$Some_668": ; preds = %entry - %"$c1_669" = bitcast %TName_Option_String* %"$c1_664" to %CName_Some_String* - %"$c_gep_670" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$c1_669", i32 0, i32 1 - %"$c_load_671" = load %String, %String* %"$c_gep_670" +"$Some_1555": ; preds = %"$have_gas_1548" + %"$c1_1556" = bitcast %TName_Option_String* %"$c1_1551" to %CName_Some_String* + %"$c_gep_1557" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$c1_1556", i32 0, i32 1 + %"$c_load_1558" = load %String, %String* %"$c_gep_1557" %c = alloca %String - store %String %"$c_load_671", %String* %c + store %String %"$c_load_1558", %String* %c + %"$gasrem_1559" = load i64, i64* @_gasrem + %"$gascmp_1560" = icmp ugt i64 1, %"$gasrem_1559" + br i1 %"$gascmp_1560", label %"$out_of_gas_1561", label %"$have_gas_1562" + +"$out_of_gas_1561": ; preds = %"$Some_1555" + call void @_out_of_gas() + br label %"$have_gas_1562" + +"$have_gas_1562": ; preds = %"$out_of_gas_1561", %"$Some_1555" + %"$consume_1563" = sub i64 %"$gasrem_1559", 1 + store i64 %"$consume_1563", i64* @_gasrem %v = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_672", i32 0, i32 0), i32 3 }, %String* %v + %"$gasrem_1564" = load i64, i64* @_gasrem + %"$gascmp_1565" = icmp ugt i64 1, %"$gasrem_1564" + br i1 %"$gascmp_1565", label %"$out_of_gas_1566", label %"$have_gas_1567" + +"$out_of_gas_1566": ; preds = %"$have_gas_1562" + call void @_out_of_gas() + br label %"$have_gas_1567" + +"$have_gas_1567": ; preds = %"$out_of_gas_1566", %"$have_gas_1562" + %"$consume_1568" = sub i64 %"$gasrem_1564", 1 + store i64 %"$consume_1568", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1569", i32 0, i32 0), i32 3 }, %String* %v + %"$gasrem_1570" = load i64, i64* @_gasrem + %"$gascmp_1571" = icmp ugt i64 1, %"$gasrem_1570" + br i1 %"$gascmp_1571", label %"$out_of_gas_1572", label %"$have_gas_1573" + +"$out_of_gas_1572": ; preds = %"$have_gas_1567" + call void @_out_of_gas() + br label %"$have_gas_1573" + +"$have_gas_1573": ; preds = %"$out_of_gas_1572", %"$have_gas_1567" + %"$consume_1574" = sub i64 %"$gasrem_1570", 1 + store i64 %"$consume_1574", i64* @_gasrem %eq = alloca %TName_Bool* - %"$execptr_load_673" = load i8*, i8** @_execptr - %"$c_674" = load %String, %String* %c - %"$v_675" = load %String, %String* %v - %"$eq_call_676" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_673", %String %"$c_674", %String %"$v_675") - store %TName_Bool* %"$eq_call_676", %TName_Bool** %eq - %"$eq_678" = load %TName_Bool*, %TName_Bool** %eq - %"$eq_tag_679" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_678", i32 0, i32 0 - %"$eq_tag_680" = load i8, i8* %"$eq_tag_679" - switch i8 %"$eq_tag_680", label %"$empty_default_681" [ - i8 0, label %"$True_682" - i8 1, label %"$False_684" + %"$execptr_load_1575" = load i8*, i8** @_execptr + %"$c_1576" = load %String, %String* %c + %"$v_1577" = load %String, %String* %v + %"$eq_call_1578" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_1575", %String %"$c_1576", %String %"$v_1577") + store %TName_Bool* %"$eq_call_1578", %TName_Bool** %eq + %"$gasrem_1579" = load i64, i64* @_gasrem + %"$gascmp_1580" = icmp ugt i64 2, %"$gasrem_1579" + br i1 %"$gascmp_1580", label %"$out_of_gas_1581", label %"$have_gas_1582" + +"$out_of_gas_1581": ; preds = %"$have_gas_1573" + call void @_out_of_gas() + br label %"$have_gas_1582" + +"$have_gas_1582": ; preds = %"$out_of_gas_1581", %"$have_gas_1573" + %"$consume_1583" = sub i64 %"$gasrem_1579", 2 + store i64 %"$consume_1583", i64* @_gasrem + %"$eq_1585" = load %TName_Bool*, %TName_Bool** %eq + %"$eq_tag_1586" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_1585", i32 0, i32 0 + %"$eq_tag_1587" = load i8, i8* %"$eq_tag_1586" + switch i8 %"$eq_tag_1587", label %"$empty_default_1588" [ + i8 0, label %"$True_1589" + i8 1, label %"$False_1591" ] -"$True_682": ; preds = %"$Some_668" - %"$eq_683" = bitcast %TName_Bool* %"$eq_678" to %CName_True* - br label %"$matchsucc_677" +"$True_1589": ; preds = %"$have_gas_1582" + %"$eq_1590" = bitcast %TName_Bool* %"$eq_1585" to %CName_True* + br label %"$matchsucc_1584" + +"$False_1591": ; preds = %"$have_gas_1582" + %"$eq_1592" = bitcast %TName_Bool* %"$eq_1585" to %CName_False* + %"$gasrem_1593" = load i64, i64* @_gasrem + %"$gascmp_1594" = icmp ugt i64 1, %"$gasrem_1593" + br i1 %"$gascmp_1594", label %"$out_of_gas_1595", label %"$have_gas_1596" + +"$out_of_gas_1595": ; preds = %"$False_1591" + call void @_out_of_gas() + br label %"$have_gas_1596" -"$False_684": ; preds = %"$Some_668" - %"$eq_685" = bitcast %TName_Bool* %"$eq_678" to %CName_False* +"$have_gas_1596": ; preds = %"$out_of_gas_1595", %"$False_1591" + %"$consume_1597" = sub i64 %"$gasrem_1593", 1 + store i64 %"$consume_1597", i64* @_gasrem %m = alloca %String - store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_686", i32 0, i32 0), i32 31 }, %String* %m - %"$fail_msg__sender_687" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_687" - %"$tname_688" = load %String, %String* %tname - %"$m_689" = load %String, %String* %m - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_687", %String %"$tname_688", %String %"$m_689") - br label %"$matchsucc_677" - -"$empty_default_681": ; preds = %"$Some_668" - br label %"$matchsucc_677" - -"$matchsucc_677": ; preds = %"$False_684", %"$True_682", %"$empty_default_681" - br label %"$matchsucc_663" - -"$None_690": ; preds = %entry - %"$c1_691" = bitcast %TName_Option_String* %"$c1_664" to %CName_None_String* + %"$gasrem_1598" = load i64, i64* @_gasrem + %"$gascmp_1599" = icmp ugt i64 1, %"$gasrem_1598" + br i1 %"$gascmp_1599", label %"$out_of_gas_1600", label %"$have_gas_1601" + +"$out_of_gas_1600": ; preds = %"$have_gas_1596" + call void @_out_of_gas() + br label %"$have_gas_1601" + +"$have_gas_1601": ; preds = %"$out_of_gas_1600", %"$have_gas_1596" + %"$consume_1602" = sub i64 %"$gasrem_1598", 1 + store i64 %"$consume_1602", i64* @_gasrem + store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_1603", i32 0, i32 0), i32 31 }, %String* %m + %"$gasrem_1604" = load i64, i64* @_gasrem + %"$gascmp_1605" = icmp ugt i64 1, %"$gasrem_1604" + br i1 %"$gascmp_1605", label %"$out_of_gas_1606", label %"$have_gas_1607" + +"$out_of_gas_1606": ; preds = %"$have_gas_1601" + call void @_out_of_gas() + br label %"$have_gas_1607" + +"$have_gas_1607": ; preds = %"$out_of_gas_1606", %"$have_gas_1601" + %"$consume_1608" = sub i64 %"$gasrem_1604", 1 + store i64 %"$consume_1608", i64* @_gasrem + %"$fail_msg__sender_1609" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1609" + %"$tname_1610" = load %String, %String* %tname + %"$m_1611" = load %String, %String* %m + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1609", %String %"$tname_1610", %String %"$m_1611") + br label %"$matchsucc_1584" + +"$empty_default_1588": ; preds = %"$have_gas_1582" + br label %"$matchsucc_1584" + +"$matchsucc_1584": ; preds = %"$have_gas_1607", %"$True_1589", %"$empty_default_1588" + br label %"$matchsucc_1550" + +"$None_1612": ; preds = %"$have_gas_1548" + %"$c1_1613" = bitcast %TName_Option_String* %"$c1_1551" to %CName_None_String* + %"$gasrem_1614" = load i64, i64* @_gasrem + %"$gascmp_1615" = icmp ugt i64 1, %"$gasrem_1614" + br i1 %"$gascmp_1615", label %"$out_of_gas_1616", label %"$have_gas_1617" + +"$out_of_gas_1616": ; preds = %"$None_1612" + call void @_out_of_gas() + br label %"$have_gas_1617" + +"$have_gas_1617": ; preds = %"$out_of_gas_1616", %"$None_1612" + %"$consume_1618" = sub i64 %"$gasrem_1614", 1 + store i64 %"$consume_1618", i64* @_gasrem %m2 = alloca %String - store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_692", i32 0, i32 0), i32 21 }, %String* %m2 - %"$fail_msg__sender_693" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_693" - %"$tname_694" = load %String, %String* %tname - %"$m_695" = load %String, %String* %m2 - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_693", %String %"$tname_694", %String %"$m_695") - br label %"$matchsucc_663" - -"$empty_default_667": ; preds = %entry - br label %"$matchsucc_663" - -"$matchsucc_663": ; preds = %"$None_690", %"$matchsucc_677", %"$empty_default_667" + %"$gasrem_1619" = load i64, i64* @_gasrem + %"$gascmp_1620" = icmp ugt i64 1, %"$gasrem_1619" + br i1 %"$gascmp_1620", label %"$out_of_gas_1621", label %"$have_gas_1622" + +"$out_of_gas_1621": ; preds = %"$have_gas_1617" + call void @_out_of_gas() + br label %"$have_gas_1622" + +"$have_gas_1622": ; preds = %"$out_of_gas_1621", %"$have_gas_1617" + %"$consume_1623" = sub i64 %"$gasrem_1619", 1 + store i64 %"$consume_1623", i64* @_gasrem + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_1624", i32 0, i32 0), i32 21 }, %String* %m2 + %"$gasrem_1625" = load i64, i64* @_gasrem + %"$gascmp_1626" = icmp ugt i64 1, %"$gasrem_1625" + br i1 %"$gascmp_1626", label %"$out_of_gas_1627", label %"$have_gas_1628" + +"$out_of_gas_1627": ; preds = %"$have_gas_1622" + call void @_out_of_gas() + br label %"$have_gas_1628" + +"$have_gas_1628": ; preds = %"$out_of_gas_1627", %"$have_gas_1622" + %"$consume_1629" = sub i64 %"$gasrem_1625", 1 + store i64 %"$consume_1629", i64* @_gasrem + %"$fail_msg__sender_1630" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1630" + %"$tname_1631" = load %String, %String* %tname + %"$m_1632" = load %String, %String* %m2 + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1630", %String %"$tname_1631", %String %"$m_1632") + br label %"$matchsucc_1550" + +"$empty_default_1554": ; preds = %"$have_gas_1548" + br label %"$matchsucc_1550" + +"$matchsucc_1550": ; preds = %"$have_gas_1628", %"$matchsucc_1584", %"$empty_default_1554" + %"$gasrem_1633" = load i64, i64* @_gasrem + %"$gascmp_1634" = icmp ugt i64 1, %"$gasrem_1633" + br i1 %"$gascmp_1634", label %"$out_of_gas_1635", label %"$have_gas_1636" + +"$out_of_gas_1635": ; preds = %"$matchsucc_1550" + call void @_out_of_gas() + br label %"$have_gas_1636" + +"$have_gas_1636": ; preds = %"$out_of_gas_1635", %"$matchsucc_1550" + %"$consume_1637" = sub i64 %"$gasrem_1633", 1 + store i64 %"$consume_1637", i64* @_gasrem %key1b = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_696", i32 0, i32 0), i32 5 }, %String* %key1b + %"$gasrem_1638" = load i64, i64* @_gasrem + %"$gascmp_1639" = icmp ugt i64 1, %"$gasrem_1638" + br i1 %"$gascmp_1639", label %"$out_of_gas_1640", label %"$have_gas_1641" + +"$out_of_gas_1640": ; preds = %"$have_gas_1636" + call void @_out_of_gas() + br label %"$have_gas_1641" + +"$have_gas_1641": ; preds = %"$out_of_gas_1640", %"$have_gas_1636" + %"$consume_1642" = sub i64 %"$gasrem_1638", 1 + store i64 %"$consume_1642", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1643", i32 0, i32 0), i32 5 }, %String* %key1b %"$c1_3" = alloca %"TName_Option_Map_(String)_(String)"* - %"$indices_buf_697_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_697_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_697_salloc_load", i64 16) - %"$indices_buf_697_salloc" = bitcast i8* %"$indices_buf_697_salloc_salloc" to [16 x i8]* - %"$indices_buf_697" = bitcast [16 x i8]* %"$indices_buf_697_salloc" to i8* - %"$key1b_698" = load %String, %String* %key1b - %"$indices_gep_699" = getelementptr i8, i8* %"$indices_buf_697", i32 0 - %indices_cast3 = bitcast i8* %"$indices_gep_699" to %String* - store %String %"$key1b_698", %String* %indices_cast3 - %"$execptr_load_700" = load i8*, i8** @_execptr - %"$$c1_3_702" = call i8* @_fetch_field(i8* %"$execptr_load_700", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_701", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_697", i32 1) - %"$$c1_3_703" = bitcast i8* %"$$c1_3_702" to %"TName_Option_Map_(String)_(String)"* - store %"TName_Option_Map_(String)_(String)"* %"$$c1_3_703", %"TName_Option_Map_(String)_(String)"** %"$c1_3" - %"$$c1_3_705" = load %"TName_Option_Map_(String)_(String)"*, %"TName_Option_Map_(String)_(String)"** %"$c1_3" - %"$$c1_3_tag_706" = getelementptr inbounds %"TName_Option_Map_(String)_(String)", %"TName_Option_Map_(String)_(String)"* %"$$c1_3_705", i32 0, i32 0 - %"$$c1_3_tag_707" = load i8, i8* %"$$c1_3_tag_706" - switch i8 %"$$c1_3_tag_707", label %"$empty_default_708" [ - i8 0, label %"$Some_709" - i8 1, label %"$None_717" + %"$indices_buf_1644_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1644_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1644_salloc_load", i64 16) + %"$indices_buf_1644_salloc" = bitcast i8* %"$indices_buf_1644_salloc_salloc" to [16 x i8]* + %"$indices_buf_1644" = bitcast [16 x i8]* %"$indices_buf_1644_salloc" to i8* + %"$key1b_1645" = load %String, %String* %key1b + %"$indices_gep_1646" = getelementptr i8, i8* %"$indices_buf_1644", i32 0 + %indices_cast3 = bitcast i8* %"$indices_gep_1646" to %String* + store %String %"$key1b_1645", %String* %indices_cast3 + %"$execptr_load_1647" = load i8*, i8** @_execptr + %"$$c1_3_1649" = call i8* @_fetch_field(i8* %"$execptr_load_1647", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1648", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 1, i8* %"$indices_buf_1644", i32 1) + %"$$c1_3_1650" = bitcast i8* %"$$c1_3_1649" to %"TName_Option_Map_(String)_(String)"* + store %"TName_Option_Map_(String)_(String)"* %"$$c1_3_1650", %"TName_Option_Map_(String)_(String)"** %"$c1_3" + %"$$c1_3_1651" = load %"TName_Option_Map_(String)_(String)"*, %"TName_Option_Map_(String)_(String)"** %"$c1_3" + %"$$$c1_3_1651_1652" = bitcast %"TName_Option_Map_(String)_(String)"* %"$$c1_3_1651" to i8* + %"$_literal_cost_call_1653" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Map_(String)_(String)_66", i8* %"$$$c1_3_1651_1652") + %"$gasadd_1654" = add i64 %"$_literal_cost_call_1653", 0 + %"$gasadd_1655" = add i64 %"$gasadd_1654", 1 + %"$gasrem_1656" = load i64, i64* @_gasrem + %"$gascmp_1657" = icmp ugt i64 %"$gasadd_1655", %"$gasrem_1656" + br i1 %"$gascmp_1657", label %"$out_of_gas_1658", label %"$have_gas_1659" + +"$out_of_gas_1658": ; preds = %"$have_gas_1641" + call void @_out_of_gas() + br label %"$have_gas_1659" + +"$have_gas_1659": ; preds = %"$out_of_gas_1658", %"$have_gas_1641" + %"$consume_1660" = sub i64 %"$gasrem_1656", %"$gasadd_1655" + store i64 %"$consume_1660", i64* @_gasrem + %"$gasrem_1661" = load i64, i64* @_gasrem + %"$gascmp_1662" = icmp ugt i64 2, %"$gasrem_1661" + br i1 %"$gascmp_1662", label %"$out_of_gas_1663", label %"$have_gas_1664" + +"$out_of_gas_1663": ; preds = %"$have_gas_1659" + call void @_out_of_gas() + br label %"$have_gas_1664" + +"$have_gas_1664": ; preds = %"$out_of_gas_1663", %"$have_gas_1659" + %"$consume_1665" = sub i64 %"$gasrem_1661", 2 + store i64 %"$consume_1665", i64* @_gasrem + %"$$c1_3_1667" = load %"TName_Option_Map_(String)_(String)"*, %"TName_Option_Map_(String)_(String)"** %"$c1_3" + %"$$c1_3_tag_1668" = getelementptr inbounds %"TName_Option_Map_(String)_(String)", %"TName_Option_Map_(String)_(String)"* %"$$c1_3_1667", i32 0, i32 0 + %"$$c1_3_tag_1669" = load i8, i8* %"$$c1_3_tag_1668" + switch i8 %"$$c1_3_tag_1669", label %"$empty_default_1670" [ + i8 0, label %"$Some_1671" + i8 1, label %"$None_1694" ] -"$Some_709": ; preds = %"$matchsucc_663" - %"$$c1_3_710" = bitcast %"TName_Option_Map_(String)_(String)"* %"$$c1_3_705" to %"CName_Some_Map_(String)_(String)"* - %"$$$c1_3_16_gep_711" = getelementptr inbounds %"CName_Some_Map_(String)_(String)", %"CName_Some_Map_(String)_(String)"* %"$$c1_3_710", i32 0, i32 1 - %"$$$c1_3_16_load_712" = load %Map_String_String*, %Map_String_String** %"$$$c1_3_16_gep_711" - %"$$c1_3_16" = alloca %Map_String_String* - store %Map_String_String* %"$$$c1_3_16_load_712", %Map_String_String** %"$$c1_3_16" +"$Some_1671": ; preds = %"$have_gas_1664" + %"$$c1_3_1672" = bitcast %"TName_Option_Map_(String)_(String)"* %"$$c1_3_1667" to %"CName_Some_Map_(String)_(String)"* + %"$$$c1_3_15_gep_1673" = getelementptr inbounds %"CName_Some_Map_(String)_(String)", %"CName_Some_Map_(String)_(String)"* %"$$c1_3_1672", i32 0, i32 1 + %"$$$c1_3_15_load_1674" = load %Map_String_String*, %Map_String_String** %"$$$c1_3_15_gep_1673" + %"$$c1_3_15" = alloca %Map_String_String* + store %Map_String_String* %"$$$c1_3_15_load_1674", %Map_String_String** %"$$c1_3_15" + %"$gasrem_1675" = load i64, i64* @_gasrem + %"$gascmp_1676" = icmp ugt i64 1, %"$gasrem_1675" + br i1 %"$gascmp_1676", label %"$out_of_gas_1677", label %"$have_gas_1678" + +"$out_of_gas_1677": ; preds = %"$Some_1671" + call void @_out_of_gas() + br label %"$have_gas_1678" + +"$have_gas_1678": ; preds = %"$out_of_gas_1677", %"$Some_1671" + %"$consume_1679" = sub i64 %"$gasrem_1675", 1 + store i64 %"$consume_1679", i64* @_gasrem %m4 = alloca %String - store %String { i8* getelementptr inbounds ([36 x i8], [36 x i8]* @"$stringlit_713", i32 0, i32 0), i32 36 }, %String* %m4 - %"$fail_msg__sender_714" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_714" - %"$tname_715" = load %String, %String* %tname - %"$m_716" = load %String, %String* %m4 - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_714", %String %"$tname_715", %String %"$m_716") - br label %"$matchsucc_704" - -"$None_717": ; preds = %"$matchsucc_663" - %"$$c1_3_718" = bitcast %"TName_Option_Map_(String)_(String)"* %"$$c1_3_705" to %"CName_None_Map_(String)_(String)"* - br label %"$matchsucc_704" - -"$empty_default_708": ; preds = %"$matchsucc_663" - br label %"$matchsucc_704" - -"$matchsucc_704": ; preds = %"$None_717", %"$Some_709", %"$empty_default_708" + %"$gasrem_1680" = load i64, i64* @_gasrem + %"$gascmp_1681" = icmp ugt i64 1, %"$gasrem_1680" + br i1 %"$gascmp_1681", label %"$out_of_gas_1682", label %"$have_gas_1683" + +"$out_of_gas_1682": ; preds = %"$have_gas_1678" + call void @_out_of_gas() + br label %"$have_gas_1683" + +"$have_gas_1683": ; preds = %"$out_of_gas_1682", %"$have_gas_1678" + %"$consume_1684" = sub i64 %"$gasrem_1680", 1 + store i64 %"$consume_1684", i64* @_gasrem + store %String { i8* getelementptr inbounds ([36 x i8], [36 x i8]* @"$stringlit_1685", i32 0, i32 0), i32 36 }, %String* %m4 + %"$gasrem_1686" = load i64, i64* @_gasrem + %"$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_1683" + call void @_out_of_gas() + br label %"$have_gas_1689" + +"$have_gas_1689": ; preds = %"$out_of_gas_1688", %"$have_gas_1683" + %"$consume_1690" = sub i64 %"$gasrem_1686", 1 + store i64 %"$consume_1690", i64* @_gasrem + %"$fail_msg__sender_1691" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1691" + %"$tname_1692" = load %String, %String* %tname + %"$m_1693" = load %String, %String* %m4 + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1691", %String %"$tname_1692", %String %"$m_1693") + br label %"$matchsucc_1666" + +"$None_1694": ; preds = %"$have_gas_1664" + %"$$c1_3_1695" = bitcast %"TName_Option_Map_(String)_(String)"* %"$$c1_3_1667" to %"CName_None_Map_(String)_(String)"* + br label %"$matchsucc_1666" + +"$empty_default_1670": ; preds = %"$have_gas_1664" + br label %"$matchsucc_1666" + +"$matchsucc_1666": ; preds = %"$None_1694", %"$have_gas_1689", %"$empty_default_1670" + %"$gasrem_1696" = load i64, i64* @_gasrem + %"$gascmp_1697" = icmp ugt i64 1, %"$gasrem_1696" + br i1 %"$gascmp_1697", label %"$out_of_gas_1698", label %"$have_gas_1699" + +"$out_of_gas_1698": ; preds = %"$matchsucc_1666" + call void @_out_of_gas() + br label %"$have_gas_1699" + +"$have_gas_1699": ; preds = %"$out_of_gas_1698", %"$matchsucc_1666" + %"$consume_1700" = sub i64 %"$gasrem_1696", 1 + store i64 %"$consume_1700", i64* @_gasrem %"$key1b_4" = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_719", i32 0, i32 0), i32 5 }, %String* %"$key1b_4" + %"$gasrem_1701" = load i64, i64* @_gasrem + %"$gascmp_1702" = icmp ugt i64 1, %"$gasrem_1701" + br i1 %"$gascmp_1702", label %"$out_of_gas_1703", label %"$have_gas_1704" + +"$out_of_gas_1703": ; preds = %"$have_gas_1699" + call void @_out_of_gas() + br label %"$have_gas_1704" + +"$have_gas_1704": ; preds = %"$out_of_gas_1703", %"$have_gas_1699" + %"$consume_1705" = sub i64 %"$gasrem_1701", 1 + store i64 %"$consume_1705", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1706", i32 0, i32 0), i32 5 }, %String* %"$key1b_4" + %"$gasrem_1707" = load i64, i64* @_gasrem + %"$gascmp_1708" = icmp ugt i64 1, %"$gasrem_1707" + br i1 %"$gascmp_1708", label %"$out_of_gas_1709", label %"$have_gas_1710" + +"$out_of_gas_1709": ; preds = %"$have_gas_1704" + call void @_out_of_gas() + br label %"$have_gas_1710" + +"$have_gas_1710": ; preds = %"$out_of_gas_1709", %"$have_gas_1704" + %"$consume_1711" = sub i64 %"$gasrem_1707", 1 + store i64 %"$consume_1711", i64* @_gasrem %key2b = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_720", i32 0, i32 0), i32 5 }, %String* %key2b + %"$gasrem_1712" = load i64, i64* @_gasrem + %"$gascmp_1713" = icmp ugt i64 1, %"$gasrem_1712" + br i1 %"$gascmp_1713", label %"$out_of_gas_1714", label %"$have_gas_1715" + +"$out_of_gas_1714": ; preds = %"$have_gas_1710" + call void @_out_of_gas() + br label %"$have_gas_1715" + +"$have_gas_1715": ; preds = %"$out_of_gas_1714", %"$have_gas_1710" + %"$consume_1716" = sub i64 %"$gasrem_1712", 1 + store i64 %"$consume_1716", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1717", i32 0, i32 0), i32 5 }, %String* %key2b %"$c1_5" = alloca %TName_Option_String* - %"$indices_buf_721_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_721_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_721_salloc_load", i64 32) - %"$indices_buf_721_salloc" = bitcast i8* %"$indices_buf_721_salloc_salloc" to [32 x i8]* - %"$indices_buf_721" = bitcast [32 x i8]* %"$indices_buf_721_salloc" to i8* - %"$$key1b_4_722" = load %String, %String* %"$key1b_4" - %"$indices_gep_723" = getelementptr i8, i8* %"$indices_buf_721", i32 0 - %indices_cast5 = bitcast i8* %"$indices_gep_723" to %String* - store %String %"$$key1b_4_722", %String* %indices_cast5 - %"$key2b_724" = load %String, %String* %key2b - %"$indices_gep_725" = getelementptr i8, i8* %"$indices_buf_721", i32 16 - %indices_cast6 = bitcast i8* %"$indices_gep_725" to %String* - store %String %"$key2b_724", %String* %indices_cast6 - %"$execptr_load_726" = load i8*, i8** @_execptr - %"$$c1_5_728" = call i8* @_fetch_field(i8* %"$execptr_load_726", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_727", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 2, i8* %"$indices_buf_721", i32 1) - %"$$c1_5_729" = bitcast i8* %"$$c1_5_728" to %TName_Option_String* - store %TName_Option_String* %"$$c1_5_729", %TName_Option_String** %"$c1_5" - %"$$c1_5_731" = load %TName_Option_String*, %TName_Option_String** %"$c1_5" - %"$$c1_5_tag_732" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_5_731", i32 0, i32 0 - %"$$c1_5_tag_733" = load i8, i8* %"$$c1_5_tag_732" - switch i8 %"$$c1_5_tag_733", label %"$empty_default_734" [ - i8 0, label %"$Some_735" - i8 1, label %"$None_743" + %"$indices_buf_1718_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1718_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1718_salloc_load", i64 32) + %"$indices_buf_1718_salloc" = bitcast i8* %"$indices_buf_1718_salloc_salloc" to [32 x i8]* + %"$indices_buf_1718" = bitcast [32 x i8]* %"$indices_buf_1718_salloc" to i8* + %"$$key1b_4_1719" = load %String, %String* %"$key1b_4" + %"$indices_gep_1720" = getelementptr i8, i8* %"$indices_buf_1718", i32 0 + %indices_cast5 = bitcast i8* %"$indices_gep_1720" to %String* + store %String %"$$key1b_4_1719", %String* %indices_cast5 + %"$key2b_1721" = load %String, %String* %key2b + %"$indices_gep_1722" = getelementptr i8, i8* %"$indices_buf_1718", i32 16 + %indices_cast6 = bitcast i8* %"$indices_gep_1722" to %String* + store %String %"$key2b_1721", %String* %indices_cast6 + %"$execptr_load_1723" = load i8*, i8** @_execptr + %"$$c1_5_1725" = call i8* @_fetch_field(i8* %"$execptr_load_1723", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1724", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1718", i32 1) + %"$$c1_5_1726" = bitcast i8* %"$$c1_5_1725" to %TName_Option_String* + store %TName_Option_String* %"$$c1_5_1726", %TName_Option_String** %"$c1_5" + %"$$c1_5_1727" = load %TName_Option_String*, %TName_Option_String** %"$c1_5" + %"$$$c1_5_1727_1728" = bitcast %TName_Option_String* %"$$c1_5_1727" to i8* + %"$_literal_cost_call_1729" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$$c1_5_1727_1728") + %"$gasadd_1730" = add i64 %"$_literal_cost_call_1729", 0 + %"$gasadd_1731" = add i64 %"$gasadd_1730", 2 + %"$gasrem_1732" = load i64, i64* @_gasrem + %"$gascmp_1733" = icmp ugt i64 %"$gasadd_1731", %"$gasrem_1732" + br i1 %"$gascmp_1733", label %"$out_of_gas_1734", label %"$have_gas_1735" + +"$out_of_gas_1734": ; preds = %"$have_gas_1715" + call void @_out_of_gas() + br label %"$have_gas_1735" + +"$have_gas_1735": ; preds = %"$out_of_gas_1734", %"$have_gas_1715" + %"$consume_1736" = sub i64 %"$gasrem_1732", %"$gasadd_1731" + store i64 %"$consume_1736", i64* @_gasrem + %"$gasrem_1737" = load i64, i64* @_gasrem + %"$gascmp_1738" = icmp ugt i64 2, %"$gasrem_1737" + br i1 %"$gascmp_1738", label %"$out_of_gas_1739", label %"$have_gas_1740" + +"$out_of_gas_1739": ; preds = %"$have_gas_1735" + call void @_out_of_gas() + br label %"$have_gas_1740" + +"$have_gas_1740": ; preds = %"$out_of_gas_1739", %"$have_gas_1735" + %"$consume_1741" = sub i64 %"$gasrem_1737", 2 + store i64 %"$consume_1741", i64* @_gasrem + %"$$c1_5_1743" = load %TName_Option_String*, %TName_Option_String** %"$c1_5" + %"$$c1_5_tag_1744" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_5_1743", i32 0, i32 0 + %"$$c1_5_tag_1745" = load i8, i8* %"$$c1_5_tag_1744" + switch i8 %"$$c1_5_tag_1745", label %"$empty_default_1746" [ + i8 0, label %"$Some_1747" + i8 1, label %"$None_1770" ] -"$Some_735": ; preds = %"$matchsucc_704" - %"$$c1_5_736" = bitcast %TName_Option_String* %"$$c1_5_731" to %CName_Some_String* - %"$$$c1_5_15_gep_737" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_5_736", i32 0, i32 1 - %"$$$c1_5_15_load_738" = load %String, %String* %"$$$c1_5_15_gep_737" - %"$$c1_5_15" = alloca %String - store %String %"$$$c1_5_15_load_738", %String* %"$$c1_5_15" +"$Some_1747": ; preds = %"$have_gas_1740" + %"$$c1_5_1748" = bitcast %TName_Option_String* %"$$c1_5_1743" to %CName_Some_String* + %"$$$c1_5_14_gep_1749" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_5_1748", i32 0, i32 1 + %"$$$c1_5_14_load_1750" = load %String, %String* %"$$$c1_5_14_gep_1749" + %"$$c1_5_14" = alloca %String + store %String %"$$$c1_5_14_load_1750", %String* %"$$c1_5_14" + %"$gasrem_1751" = load i64, i64* @_gasrem + %"$gascmp_1752" = icmp ugt i64 1, %"$gasrem_1751" + br i1 %"$gascmp_1752", label %"$out_of_gas_1753", label %"$have_gas_1754" + +"$out_of_gas_1753": ; preds = %"$Some_1747" + call void @_out_of_gas() + br label %"$have_gas_1754" + +"$have_gas_1754": ; preds = %"$out_of_gas_1753", %"$Some_1747" + %"$consume_1755" = sub i64 %"$gasrem_1751", 1 + store i64 %"$consume_1755", i64* @_gasrem %m7 = alloca %String - store %String { i8* getelementptr inbounds ([42 x i8], [42 x i8]* @"$stringlit_739", i32 0, i32 0), i32 42 }, %String* %m7 - %"$fail_msg__sender_740" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_740" - %"$tname_741" = load %String, %String* %tname - %"$m_742" = load %String, %String* %m7 - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_740", %String %"$tname_741", %String %"$m_742") - br label %"$matchsucc_730" - -"$None_743": ; preds = %"$matchsucc_704" - %"$$c1_5_744" = bitcast %TName_Option_String* %"$$c1_5_731" to %CName_None_String* - br label %"$matchsucc_730" - -"$empty_default_734": ; preds = %"$matchsucc_704" - br label %"$matchsucc_730" - -"$matchsucc_730": ; preds = %"$None_743", %"$Some_735", %"$empty_default_734" + %"$gasrem_1756" = load i64, i64* @_gasrem + %"$gascmp_1757" = icmp ugt i64 1, %"$gasrem_1756" + br i1 %"$gascmp_1757", label %"$out_of_gas_1758", label %"$have_gas_1759" + +"$out_of_gas_1758": ; preds = %"$have_gas_1754" + call void @_out_of_gas() + br label %"$have_gas_1759" + +"$have_gas_1759": ; preds = %"$out_of_gas_1758", %"$have_gas_1754" + %"$consume_1760" = sub i64 %"$gasrem_1756", 1 + store i64 %"$consume_1760", i64* @_gasrem + store %String { i8* getelementptr inbounds ([42 x i8], [42 x i8]* @"$stringlit_1761", i32 0, i32 0), i32 42 }, %String* %m7 + %"$gasrem_1762" = load i64, i64* @_gasrem + %"$gascmp_1763" = icmp ugt i64 1, %"$gasrem_1762" + br i1 %"$gascmp_1763", label %"$out_of_gas_1764", label %"$have_gas_1765" + +"$out_of_gas_1764": ; preds = %"$have_gas_1759" + call void @_out_of_gas() + br label %"$have_gas_1765" + +"$have_gas_1765": ; preds = %"$out_of_gas_1764", %"$have_gas_1759" + %"$consume_1766" = sub i64 %"$gasrem_1762", 1 + store i64 %"$consume_1766", i64* @_gasrem + %"$fail_msg__sender_1767" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1767" + %"$tname_1768" = load %String, %String* %tname + %"$m_1769" = load %String, %String* %m7 + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1767", %String %"$tname_1768", %String %"$m_1769") + br label %"$matchsucc_1742" + +"$None_1770": ; preds = %"$have_gas_1740" + %"$$c1_5_1771" = bitcast %TName_Option_String* %"$$c1_5_1743" to %CName_None_String* + br label %"$matchsucc_1742" + +"$empty_default_1746": ; preds = %"$have_gas_1740" + br label %"$matchsucc_1742" + +"$matchsucc_1742": ; preds = %"$None_1770", %"$have_gas_1765", %"$empty_default_1746" + %"$gasrem_1772" = load i64, i64* @_gasrem + %"$gascmp_1773" = icmp ugt i64 1, %"$gasrem_1772" + br i1 %"$gascmp_1773", label %"$out_of_gas_1774", label %"$have_gas_1775" + +"$out_of_gas_1774": ; preds = %"$matchsucc_1742" + call void @_out_of_gas() + br label %"$have_gas_1775" + +"$have_gas_1775": ; preds = %"$out_of_gas_1774", %"$matchsucc_1742" + %"$consume_1776" = sub i64 %"$gasrem_1772", 1 + store i64 %"$consume_1776", i64* @_gasrem %"$key1b_6" = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_745", i32 0, i32 0), i32 5 }, %String* %"$key1b_6" + %"$gasrem_1777" = load i64, i64* @_gasrem + %"$gascmp_1778" = icmp ugt i64 1, %"$gasrem_1777" + br i1 %"$gascmp_1778", label %"$out_of_gas_1779", label %"$have_gas_1780" + +"$out_of_gas_1779": ; preds = %"$have_gas_1775" + call void @_out_of_gas() + br label %"$have_gas_1780" + +"$have_gas_1780": ; preds = %"$out_of_gas_1779", %"$have_gas_1775" + %"$consume_1781" = sub i64 %"$gasrem_1777", 1 + store i64 %"$consume_1781", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1782", i32 0, i32 0), i32 5 }, %String* %"$key1b_6" + %"$gasrem_1783" = load i64, i64* @_gasrem + %"$gascmp_1784" = icmp ugt i64 1, %"$gasrem_1783" + br i1 %"$gascmp_1784", label %"$out_of_gas_1785", label %"$have_gas_1786" + +"$out_of_gas_1785": ; preds = %"$have_gas_1780" + call void @_out_of_gas() + br label %"$have_gas_1786" + +"$have_gas_1786": ; preds = %"$out_of_gas_1785", %"$have_gas_1780" + %"$consume_1787" = sub i64 %"$gasrem_1783", 1 + store i64 %"$consume_1787", i64* @_gasrem %key2d = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_746", i32 0, i32 0), i32 5 }, %String* %key2d + %"$gasrem_1788" = load i64, i64* @_gasrem + %"$gascmp_1789" = icmp ugt i64 1, %"$gasrem_1788" + br i1 %"$gascmp_1789", label %"$out_of_gas_1790", label %"$have_gas_1791" + +"$out_of_gas_1790": ; preds = %"$have_gas_1786" + call void @_out_of_gas() + br label %"$have_gas_1791" + +"$have_gas_1791": ; preds = %"$out_of_gas_1790", %"$have_gas_1786" + %"$consume_1792" = sub i64 %"$gasrem_1788", 1 + store i64 %"$consume_1792", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1793", i32 0, i32 0), i32 5 }, %String* %key2d %"$c1_7" = alloca %TName_Option_String* - %"$indices_buf_747_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_747_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_747_salloc_load", i64 32) - %"$indices_buf_747_salloc" = bitcast i8* %"$indices_buf_747_salloc_salloc" to [32 x i8]* - %"$indices_buf_747" = bitcast [32 x i8]* %"$indices_buf_747_salloc" to i8* - %"$$key1b_6_748" = load %String, %String* %"$key1b_6" - %"$indices_gep_749" = getelementptr i8, i8* %"$indices_buf_747", i32 0 - %indices_cast8 = bitcast i8* %"$indices_gep_749" to %String* - store %String %"$$key1b_6_748", %String* %indices_cast8 - %"$key2d_750" = load %String, %String* %key2d - %"$indices_gep_751" = getelementptr i8, i8* %"$indices_buf_747", i32 16 - %indices_cast9 = bitcast i8* %"$indices_gep_751" to %String* - store %String %"$key2d_750", %String* %indices_cast9 - %"$execptr_load_752" = load i8*, i8** @_execptr - %"$$c1_7_754" = call i8* @_fetch_field(i8* %"$execptr_load_752", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_753", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 2, i8* %"$indices_buf_747", i32 1) - %"$$c1_7_755" = bitcast i8* %"$$c1_7_754" to %TName_Option_String* - store %TName_Option_String* %"$$c1_7_755", %TName_Option_String** %"$c1_7" - %"$$c1_7_757" = load %TName_Option_String*, %TName_Option_String** %"$c1_7" - %"$$c1_7_tag_758" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_7_757", i32 0, i32 0 - %"$$c1_7_tag_759" = load i8, i8* %"$$c1_7_tag_758" - switch i8 %"$$c1_7_tag_759", label %"$empty_default_760" [ - i8 0, label %"$Some_761" - i8 1, label %"$None_769" + %"$indices_buf_1794_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1794_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1794_salloc_load", i64 32) + %"$indices_buf_1794_salloc" = bitcast i8* %"$indices_buf_1794_salloc_salloc" to [32 x i8]* + %"$indices_buf_1794" = bitcast [32 x i8]* %"$indices_buf_1794_salloc" to i8* + %"$$key1b_6_1795" = load %String, %String* %"$key1b_6" + %"$indices_gep_1796" = getelementptr i8, i8* %"$indices_buf_1794", i32 0 + %indices_cast8 = bitcast i8* %"$indices_gep_1796" to %String* + store %String %"$$key1b_6_1795", %String* %indices_cast8 + %"$key2d_1797" = load %String, %String* %key2d + %"$indices_gep_1798" = getelementptr i8, i8* %"$indices_buf_1794", i32 16 + %indices_cast9 = bitcast i8* %"$indices_gep_1798" to %String* + store %String %"$key2d_1797", %String* %indices_cast9 + %"$execptr_load_1799" = load i8*, i8** @_execptr + %"$$c1_7_1801" = call i8* @_fetch_field(i8* %"$execptr_load_1799", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1800", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1794", i32 1) + %"$$c1_7_1802" = bitcast i8* %"$$c1_7_1801" to %TName_Option_String* + store %TName_Option_String* %"$$c1_7_1802", %TName_Option_String** %"$c1_7" + %"$$c1_7_1803" = load %TName_Option_String*, %TName_Option_String** %"$c1_7" + %"$$$c1_7_1803_1804" = bitcast %TName_Option_String* %"$$c1_7_1803" to i8* + %"$_literal_cost_call_1805" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$$c1_7_1803_1804") + %"$gasadd_1806" = add i64 %"$_literal_cost_call_1805", 0 + %"$gasadd_1807" = add i64 %"$gasadd_1806", 2 + %"$gasrem_1808" = load i64, i64* @_gasrem + %"$gascmp_1809" = icmp ugt i64 %"$gasadd_1807", %"$gasrem_1808" + br i1 %"$gascmp_1809", label %"$out_of_gas_1810", label %"$have_gas_1811" + +"$out_of_gas_1810": ; preds = %"$have_gas_1791" + call void @_out_of_gas() + br label %"$have_gas_1811" + +"$have_gas_1811": ; preds = %"$out_of_gas_1810", %"$have_gas_1791" + %"$consume_1812" = sub i64 %"$gasrem_1808", %"$gasadd_1807" + store i64 %"$consume_1812", i64* @_gasrem + %"$gasrem_1813" = load i64, i64* @_gasrem + %"$gascmp_1814" = icmp ugt i64 2, %"$gasrem_1813" + br i1 %"$gascmp_1814", label %"$out_of_gas_1815", label %"$have_gas_1816" + +"$out_of_gas_1815": ; preds = %"$have_gas_1811" + call void @_out_of_gas() + br label %"$have_gas_1816" + +"$have_gas_1816": ; preds = %"$out_of_gas_1815", %"$have_gas_1811" + %"$consume_1817" = sub i64 %"$gasrem_1813", 2 + store i64 %"$consume_1817", i64* @_gasrem + %"$$c1_7_1819" = load %TName_Option_String*, %TName_Option_String** %"$c1_7" + %"$$c1_7_tag_1820" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_7_1819", i32 0, i32 0 + %"$$c1_7_tag_1821" = load i8, i8* %"$$c1_7_tag_1820" + switch i8 %"$$c1_7_tag_1821", label %"$empty_default_1822" [ + i8 0, label %"$Some_1823" + i8 1, label %"$None_1846" ] -"$Some_761": ; preds = %"$matchsucc_730" - %"$$c1_7_762" = bitcast %TName_Option_String* %"$$c1_7_757" to %CName_Some_String* - %"$$$c1_7_14_gep_763" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_7_762", i32 0, i32 1 - %"$$$c1_7_14_load_764" = load %String, %String* %"$$$c1_7_14_gep_763" - %"$$c1_7_14" = alloca %String - store %String %"$$$c1_7_14_load_764", %String* %"$$c1_7_14" +"$Some_1823": ; preds = %"$have_gas_1816" + %"$$c1_7_1824" = bitcast %TName_Option_String* %"$$c1_7_1819" to %CName_Some_String* + %"$$$c1_7_13_gep_1825" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_7_1824", i32 0, i32 1 + %"$$$c1_7_13_load_1826" = load %String, %String* %"$$$c1_7_13_gep_1825" + %"$$c1_7_13" = alloca %String + store %String %"$$$c1_7_13_load_1826", %String* %"$$c1_7_13" + %"$gasrem_1827" = load i64, i64* @_gasrem + %"$gascmp_1828" = icmp ugt i64 1, %"$gasrem_1827" + br i1 %"$gascmp_1828", label %"$out_of_gas_1829", label %"$have_gas_1830" + +"$out_of_gas_1829": ; preds = %"$Some_1823" + call void @_out_of_gas() + br label %"$have_gas_1830" + +"$have_gas_1830": ; preds = %"$out_of_gas_1829", %"$Some_1823" + %"$consume_1831" = sub i64 %"$gasrem_1827", 1 + store i64 %"$consume_1831", i64* @_gasrem %m10 = alloca %String - store %String { i8* getelementptr inbounds ([42 x i8], [42 x i8]* @"$stringlit_765", i32 0, i32 0), i32 42 }, %String* %m10 - %"$fail_msg__sender_766" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_766" - %"$tname_767" = load %String, %String* %tname - %"$m_768" = load %String, %String* %m10 - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_766", %String %"$tname_767", %String %"$m_768") - br label %"$matchsucc_756" - -"$None_769": ; preds = %"$matchsucc_730" - %"$$c1_7_770" = bitcast %TName_Option_String* %"$$c1_7_757" to %CName_None_String* - br label %"$matchsucc_756" - -"$empty_default_760": ; preds = %"$matchsucc_730" - br label %"$matchsucc_756" - -"$matchsucc_756": ; preds = %"$None_769", %"$Some_761", %"$empty_default_760" + %"$gasrem_1832" = load i64, i64* @_gasrem + %"$gascmp_1833" = icmp ugt i64 1, %"$gasrem_1832" + br i1 %"$gascmp_1833", label %"$out_of_gas_1834", label %"$have_gas_1835" + +"$out_of_gas_1834": ; preds = %"$have_gas_1830" + call void @_out_of_gas() + br label %"$have_gas_1835" + +"$have_gas_1835": ; preds = %"$out_of_gas_1834", %"$have_gas_1830" + %"$consume_1836" = sub i64 %"$gasrem_1832", 1 + store i64 %"$consume_1836", i64* @_gasrem + store %String { i8* getelementptr inbounds ([42 x i8], [42 x i8]* @"$stringlit_1837", i32 0, i32 0), i32 42 }, %String* %m10 + %"$gasrem_1838" = load i64, i64* @_gasrem + %"$gascmp_1839" = icmp ugt i64 1, %"$gasrem_1838" + br i1 %"$gascmp_1839", label %"$out_of_gas_1840", label %"$have_gas_1841" + +"$out_of_gas_1840": ; preds = %"$have_gas_1835" + call void @_out_of_gas() + br label %"$have_gas_1841" + +"$have_gas_1841": ; preds = %"$out_of_gas_1840", %"$have_gas_1835" + %"$consume_1842" = sub i64 %"$gasrem_1838", 1 + store i64 %"$consume_1842", i64* @_gasrem + %"$fail_msg__sender_1843" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1843" + %"$tname_1844" = load %String, %String* %tname + %"$m_1845" = load %String, %String* %m10 + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1843", %String %"$tname_1844", %String %"$m_1845") + br label %"$matchsucc_1818" + +"$None_1846": ; preds = %"$have_gas_1816" + %"$$c1_7_1847" = bitcast %TName_Option_String* %"$$c1_7_1819" to %CName_None_String* + br label %"$matchsucc_1818" + +"$empty_default_1822": ; preds = %"$have_gas_1816" + br label %"$matchsucc_1818" + +"$matchsucc_1818": ; preds = %"$None_1846", %"$have_gas_1841", %"$empty_default_1822" + %"$gasrem_1848" = load i64, i64* @_gasrem + %"$gascmp_1849" = icmp ugt i64 1, %"$gasrem_1848" + br i1 %"$gascmp_1849", label %"$out_of_gas_1850", label %"$have_gas_1851" + +"$out_of_gas_1850": ; preds = %"$matchsucc_1818" + call void @_out_of_gas() + br label %"$have_gas_1851" + +"$have_gas_1851": ; preds = %"$out_of_gas_1850", %"$matchsucc_1818" + %"$consume_1852" = sub i64 %"$gasrem_1848", 1 + store i64 %"$consume_1852", i64* @_gasrem %"$key1b_8" = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_771", i32 0, i32 0), i32 5 }, %String* %"$key1b_8" + %"$gasrem_1853" = load i64, i64* @_gasrem + %"$gascmp_1854" = icmp ugt i64 1, %"$gasrem_1853" + br i1 %"$gascmp_1854", label %"$out_of_gas_1855", label %"$have_gas_1856" + +"$out_of_gas_1855": ; preds = %"$have_gas_1851" + call void @_out_of_gas() + br label %"$have_gas_1856" + +"$have_gas_1856": ; preds = %"$out_of_gas_1855", %"$have_gas_1851" + %"$consume_1857" = sub i64 %"$gasrem_1853", 1 + store i64 %"$consume_1857", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1858", i32 0, i32 0), i32 5 }, %String* %"$key1b_8" + %"$gasrem_1859" = load i64, i64* @_gasrem + %"$gascmp_1860" = icmp ugt i64 1, %"$gasrem_1859" + br i1 %"$gascmp_1860", label %"$out_of_gas_1861", label %"$have_gas_1862" + +"$out_of_gas_1861": ; preds = %"$have_gas_1856" + call void @_out_of_gas() + br label %"$have_gas_1862" + +"$have_gas_1862": ; preds = %"$out_of_gas_1861", %"$have_gas_1856" + %"$consume_1863" = sub i64 %"$gasrem_1859", 1 + store i64 %"$consume_1863", i64* @_gasrem %key2c = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_772", i32 0, i32 0), i32 5 }, %String* %key2c + %"$gasrem_1864" = load i64, i64* @_gasrem + %"$gascmp_1865" = icmp ugt i64 1, %"$gasrem_1864" + br i1 %"$gascmp_1865", label %"$out_of_gas_1866", label %"$have_gas_1867" + +"$out_of_gas_1866": ; preds = %"$have_gas_1862" + call void @_out_of_gas() + br label %"$have_gas_1867" + +"$have_gas_1867": ; preds = %"$out_of_gas_1866", %"$have_gas_1862" + %"$consume_1868" = sub i64 %"$gasrem_1864", 1 + store i64 %"$consume_1868", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1869", i32 0, i32 0), i32 5 }, %String* %key2c + %"$gasrem_1870" = load i64, i64* @_gasrem + %"$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_1867" + call void @_out_of_gas() + br label %"$have_gas_1873" + +"$have_gas_1873": ; preds = %"$out_of_gas_1872", %"$have_gas_1867" + %"$consume_1874" = sub i64 %"$gasrem_1870", 1 + store i64 %"$consume_1874", i64* @_gasrem %s = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_773", i32 0, i32 0), i32 3 }, %String* %s - %"$indices_buf_774_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_774_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_774_salloc_load", i64 32) - %"$indices_buf_774_salloc" = bitcast i8* %"$indices_buf_774_salloc_salloc" to [32 x i8]* - %"$indices_buf_774" = bitcast [32 x i8]* %"$indices_buf_774_salloc" to i8* - %"$$key1b_8_775" = load %String, %String* %"$key1b_8" - %"$indices_gep_776" = getelementptr i8, i8* %"$indices_buf_774", i32 0 - %indices_cast11 = bitcast i8* %"$indices_gep_776" to %String* - store %String %"$$key1b_8_775", %String* %indices_cast11 - %"$key2c_777" = load %String, %String* %key2c - %"$indices_gep_778" = getelementptr i8, i8* %"$indices_buf_774", i32 16 - %indices_cast12 = bitcast i8* %"$indices_gep_778" to %String* - store %String %"$key2c_777", %String* %indices_cast12 - %"$execptr_load_779" = load i8*, i8** @_execptr - %"$s_781" = load %String, %String* %s - %"$update_value_782" = alloca %String - store %String %"$s_781", %String* %"$update_value_782" - %"$update_value_783" = bitcast %String* %"$update_value_782" to i8* - call void @_update_field(i8* %"$execptr_load_779", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_780", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 2, i8* %"$indices_buf_774", i8* %"$update_value_783") + %"$gasrem_1875" = load i64, i64* @_gasrem + %"$gascmp_1876" = icmp ugt i64 1, %"$gasrem_1875" + br i1 %"$gascmp_1876", label %"$out_of_gas_1877", label %"$have_gas_1878" + +"$out_of_gas_1877": ; preds = %"$have_gas_1873" + call void @_out_of_gas() + br label %"$have_gas_1878" + +"$have_gas_1878": ; preds = %"$out_of_gas_1877", %"$have_gas_1873" + %"$consume_1879" = sub i64 %"$gasrem_1875", 1 + store i64 %"$consume_1879", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1880", i32 0, i32 0), i32 3 }, %String* %s + %"$_literal_cost_s_1881" = alloca %String + %"$s_1882" = load %String, %String* %s + store %String %"$s_1882", %String* %"$_literal_cost_s_1881" + %"$$_literal_cost_s_1881_1883" = bitcast %String* %"$_literal_cost_s_1881" to i8* + %"$_literal_cost_call_1884" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_49", i8* %"$$_literal_cost_s_1881_1883") + %"$gasadd_1885" = add i64 %"$_literal_cost_call_1884", 2 + %"$gasrem_1886" = load i64, i64* @_gasrem + %"$gascmp_1887" = icmp ugt i64 %"$gasadd_1885", %"$gasrem_1886" + br i1 %"$gascmp_1887", label %"$out_of_gas_1888", label %"$have_gas_1889" + +"$out_of_gas_1888": ; preds = %"$have_gas_1878" + call void @_out_of_gas() + br label %"$have_gas_1889" + +"$have_gas_1889": ; preds = %"$out_of_gas_1888", %"$have_gas_1878" + %"$consume_1890" = sub i64 %"$gasrem_1886", %"$gasadd_1885" + store i64 %"$consume_1890", i64* @_gasrem + %"$indices_buf_1891_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1891_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1891_salloc_load", i64 32) + %"$indices_buf_1891_salloc" = bitcast i8* %"$indices_buf_1891_salloc_salloc" to [32 x i8]* + %"$indices_buf_1891" = bitcast [32 x i8]* %"$indices_buf_1891_salloc" to i8* + %"$$key1b_8_1892" = load %String, %String* %"$key1b_8" + %"$indices_gep_1893" = getelementptr i8, i8* %"$indices_buf_1891", i32 0 + %indices_cast11 = bitcast i8* %"$indices_gep_1893" to %String* + store %String %"$$key1b_8_1892", %String* %indices_cast11 + %"$key2c_1894" = load %String, %String* %key2c + %"$indices_gep_1895" = getelementptr i8, i8* %"$indices_buf_1891", i32 16 + %indices_cast12 = bitcast i8* %"$indices_gep_1895" to %String* + store %String %"$key2c_1894", %String* %indices_cast12 + %"$execptr_load_1896" = load i8*, i8** @_execptr + %"$s_1898" = load %String, %String* %s + %"$update_value_1899" = alloca %String + store %String %"$s_1898", %String* %"$update_value_1899" + %"$update_value_1900" = bitcast %String* %"$update_value_1899" to i8* + call void @_update_field(i8* %"$execptr_load_1896", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1897", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1891", i8* %"$update_value_1900") ret void } define void @t7(i8* %0) { entry: - %"$_amount_785" = getelementptr i8, i8* %0, i32 0 - %"$_amount_786" = bitcast i8* %"$_amount_785" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_786" - %"$_sender_787" = getelementptr i8, i8* %0, i32 16 - %"$_sender_788" = bitcast i8* %"$_sender_787" to [20 x i8]* - call void @"$t7_649"(%Uint128 %_amount, [20 x i8]* %"$_sender_788") + %"$_amount_1902" = getelementptr i8, i8* %0, i32 0 + %"$_amount_1903" = bitcast i8* %"$_amount_1902" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_1903" + %"$_sender_1904" = getelementptr i8, i8* %0, i32 16 + %"$_sender_1905" = bitcast i8* %"$_sender_1904" to [20 x i8]* + call void @"$t7_1491"(%Uint128 %_amount, [20 x i8]* %"$_sender_1905") ret void } -define internal void @"$t8_789"(%Uint128 %_amount, [20 x i8]* %"$_sender_790") { +define internal void @"$t8_1906"(%Uint128 %_amount, [20 x i8]* %"$_sender_1907") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_790" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1907" + %"$gasrem_1908" = load i64, i64* @_gasrem + %"$gascmp_1909" = icmp ugt i64 1, %"$gasrem_1908" + br i1 %"$gascmp_1909", label %"$out_of_gas_1910", label %"$have_gas_1911" + +"$out_of_gas_1910": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1911" + +"$have_gas_1911": ; preds = %"$out_of_gas_1910", %entry + %"$consume_1912" = sub i64 %"$gasrem_1908", 1 + store i64 %"$consume_1912", i64* @_gasrem %tname = alloca %String - store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_791", i32 0, i32 0), i32 2 }, %String* %tname + %"$gasrem_1913" = load i64, i64* @_gasrem + %"$gascmp_1914" = icmp ugt i64 1, %"$gasrem_1913" + br i1 %"$gascmp_1914", label %"$out_of_gas_1915", label %"$have_gas_1916" + +"$out_of_gas_1915": ; preds = %"$have_gas_1911" + call void @_out_of_gas() + br label %"$have_gas_1916" + +"$have_gas_1916": ; preds = %"$out_of_gas_1915", %"$have_gas_1911" + %"$consume_1917" = sub i64 %"$gasrem_1913", 1 + store i64 %"$consume_1917", i64* @_gasrem + store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_1918", i32 0, i32 0), i32 2 }, %String* %tname + %"$gasrem_1919" = load i64, i64* @_gasrem + %"$gascmp_1920" = icmp ugt i64 1, %"$gasrem_1919" + br i1 %"$gascmp_1920", label %"$out_of_gas_1921", label %"$have_gas_1922" + +"$out_of_gas_1921": ; preds = %"$have_gas_1916" + call void @_out_of_gas() + br label %"$have_gas_1922" + +"$have_gas_1922": ; preds = %"$out_of_gas_1921", %"$have_gas_1916" + %"$consume_1923" = sub i64 %"$gasrem_1919", 1 + store i64 %"$consume_1923", i64* @_gasrem %key1a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_792", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_1924" = load i64, i64* @_gasrem + %"$gascmp_1925" = icmp ugt i64 1, %"$gasrem_1924" + br i1 %"$gascmp_1925", label %"$out_of_gas_1926", label %"$have_gas_1927" + +"$out_of_gas_1926": ; preds = %"$have_gas_1922" + call void @_out_of_gas() + br label %"$have_gas_1927" + +"$have_gas_1927": ; preds = %"$out_of_gas_1926", %"$have_gas_1922" + %"$consume_1928" = sub i64 %"$gasrem_1924", 1 + store i64 %"$consume_1928", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1929", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_1930" = load i64, i64* @_gasrem + %"$gascmp_1931" = icmp ugt i64 1, %"$gasrem_1930" + br i1 %"$gascmp_1931", label %"$out_of_gas_1932", label %"$have_gas_1933" + +"$out_of_gas_1932": ; preds = %"$have_gas_1927" + call void @_out_of_gas() + br label %"$have_gas_1933" + +"$have_gas_1933": ; preds = %"$out_of_gas_1932", %"$have_gas_1927" + %"$consume_1934" = sub i64 %"$gasrem_1930", 1 + store i64 %"$consume_1934", i64* @_gasrem %key2a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_793", i32 0, i32 0), i32 5 }, %String* %key2a + %"$gasrem_1935" = load i64, i64* @_gasrem + %"$gascmp_1936" = icmp ugt i64 1, %"$gasrem_1935" + br i1 %"$gascmp_1936", label %"$out_of_gas_1937", label %"$have_gas_1938" + +"$out_of_gas_1937": ; preds = %"$have_gas_1933" + call void @_out_of_gas() + br label %"$have_gas_1938" + +"$have_gas_1938": ; preds = %"$out_of_gas_1937", %"$have_gas_1933" + %"$consume_1939" = sub i64 %"$gasrem_1935", 1 + store i64 %"$consume_1939", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1940", i32 0, i32 0), i32 5 }, %String* %key2a %c1 = alloca %TName_Option_String* - %"$indices_buf_794_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_794_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_794_salloc_load", i64 32) - %"$indices_buf_794_salloc" = bitcast i8* %"$indices_buf_794_salloc_salloc" to [32 x i8]* - %"$indices_buf_794" = bitcast [32 x i8]* %"$indices_buf_794_salloc" to i8* - %"$key1a_795" = load %String, %String* %key1a - %"$indices_gep_796" = getelementptr i8, i8* %"$indices_buf_794", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_796" to %String* - store %String %"$key1a_795", %String* %indices_cast - %"$key2a_797" = load %String, %String* %key2a - %"$indices_gep_798" = getelementptr i8, i8* %"$indices_buf_794", i32 16 - %indices_cast1 = bitcast i8* %"$indices_gep_798" to %String* - store %String %"$key2a_797", %String* %indices_cast1 - %"$execptr_load_799" = load i8*, i8** @_execptr - %"$c1_801" = call i8* @_fetch_field(i8* %"$execptr_load_799", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_800", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 2, i8* %"$indices_buf_794", i32 1) - %"$c1_802" = bitcast i8* %"$c1_801" to %TName_Option_String* - store %TName_Option_String* %"$c1_802", %TName_Option_String** %c1 - %"$c1_804" = load %TName_Option_String*, %TName_Option_String** %c1 - %"$c1_tag_805" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$c1_804", i32 0, i32 0 - %"$c1_tag_806" = load i8, i8* %"$c1_tag_805" - switch i8 %"$c1_tag_806", label %"$empty_default_807" [ - i8 0, label %"$Some_808" - i8 1, label %"$None_830" + %"$indices_buf_1941_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1941_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1941_salloc_load", i64 32) + %"$indices_buf_1941_salloc" = bitcast i8* %"$indices_buf_1941_salloc_salloc" to [32 x i8]* + %"$indices_buf_1941" = bitcast [32 x i8]* %"$indices_buf_1941_salloc" to i8* + %"$key1a_1942" = load %String, %String* %key1a + %"$indices_gep_1943" = getelementptr i8, i8* %"$indices_buf_1941", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_1943" to %String* + store %String %"$key1a_1942", %String* %indices_cast + %"$key2a_1944" = load %String, %String* %key2a + %"$indices_gep_1945" = getelementptr i8, i8* %"$indices_buf_1941", i32 16 + %indices_cast1 = bitcast i8* %"$indices_gep_1945" to %String* + store %String %"$key2a_1944", %String* %indices_cast1 + %"$execptr_load_1946" = load i8*, i8** @_execptr + %"$c1_1948" = call i8* @_fetch_field(i8* %"$execptr_load_1946", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1947", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1941", i32 1) + %"$c1_1949" = bitcast i8* %"$c1_1948" to %TName_Option_String* + store %TName_Option_String* %"$c1_1949", %TName_Option_String** %c1 + %"$c1_1950" = load %TName_Option_String*, %TName_Option_String** %c1 + %"$$c1_1950_1951" = bitcast %TName_Option_String* %"$c1_1950" to i8* + %"$_literal_cost_call_1952" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$c1_1950_1951") + %"$gasadd_1953" = add i64 %"$_literal_cost_call_1952", 0 + %"$gasadd_1954" = add i64 %"$gasadd_1953", 2 + %"$gasrem_1955" = load i64, i64* @_gasrem + %"$gascmp_1956" = icmp ugt i64 %"$gasadd_1954", %"$gasrem_1955" + br i1 %"$gascmp_1956", label %"$out_of_gas_1957", label %"$have_gas_1958" + +"$out_of_gas_1957": ; preds = %"$have_gas_1938" + call void @_out_of_gas() + br label %"$have_gas_1958" + +"$have_gas_1958": ; preds = %"$out_of_gas_1957", %"$have_gas_1938" + %"$consume_1959" = sub i64 %"$gasrem_1955", %"$gasadd_1954" + store i64 %"$consume_1959", i64* @_gasrem + %"$gasrem_1960" = load i64, i64* @_gasrem + %"$gascmp_1961" = icmp ugt i64 2, %"$gasrem_1960" + br i1 %"$gascmp_1961", label %"$out_of_gas_1962", label %"$have_gas_1963" + +"$out_of_gas_1962": ; preds = %"$have_gas_1958" + call void @_out_of_gas() + br label %"$have_gas_1963" + +"$have_gas_1963": ; preds = %"$out_of_gas_1962", %"$have_gas_1958" + %"$consume_1964" = sub i64 %"$gasrem_1960", 2 + store i64 %"$consume_1964", i64* @_gasrem + %"$c1_1966" = load %TName_Option_String*, %TName_Option_String** %c1 + %"$c1_tag_1967" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$c1_1966", i32 0, i32 0 + %"$c1_tag_1968" = load i8, i8* %"$c1_tag_1967" + switch i8 %"$c1_tag_1968", label %"$empty_default_1969" [ + i8 0, label %"$Some_1970" + i8 1, label %"$None_2027" ] -"$Some_808": ; preds = %entry - %"$c1_809" = bitcast %TName_Option_String* %"$c1_804" to %CName_Some_String* - %"$c_gep_810" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$c1_809", i32 0, i32 1 - %"$c_load_811" = load %String, %String* %"$c_gep_810" +"$Some_1970": ; preds = %"$have_gas_1963" + %"$c1_1971" = bitcast %TName_Option_String* %"$c1_1966" to %CName_Some_String* + %"$c_gep_1972" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$c1_1971", i32 0, i32 1 + %"$c_load_1973" = load %String, %String* %"$c_gep_1972" %c = alloca %String - store %String %"$c_load_811", %String* %c + store %String %"$c_load_1973", %String* %c + %"$gasrem_1974" = load i64, i64* @_gasrem + %"$gascmp_1975" = icmp ugt i64 1, %"$gasrem_1974" + br i1 %"$gascmp_1975", label %"$out_of_gas_1976", label %"$have_gas_1977" + +"$out_of_gas_1976": ; preds = %"$Some_1970" + call void @_out_of_gas() + br label %"$have_gas_1977" + +"$have_gas_1977": ; preds = %"$out_of_gas_1976", %"$Some_1970" + %"$consume_1978" = sub i64 %"$gasrem_1974", 1 + store i64 %"$consume_1978", i64* @_gasrem %v = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_812", i32 0, i32 0), i32 3 }, %String* %v + %"$gasrem_1979" = load i64, i64* @_gasrem + %"$gascmp_1980" = icmp ugt i64 1, %"$gasrem_1979" + br i1 %"$gascmp_1980", label %"$out_of_gas_1981", label %"$have_gas_1982" + +"$out_of_gas_1981": ; preds = %"$have_gas_1977" + call void @_out_of_gas() + br label %"$have_gas_1982" + +"$have_gas_1982": ; preds = %"$out_of_gas_1981", %"$have_gas_1977" + %"$consume_1983" = sub i64 %"$gasrem_1979", 1 + store i64 %"$consume_1983", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1984", i32 0, i32 0), i32 3 }, %String* %v + %"$gasrem_1985" = load i64, i64* @_gasrem + %"$gascmp_1986" = icmp ugt i64 1, %"$gasrem_1985" + br i1 %"$gascmp_1986", label %"$out_of_gas_1987", label %"$have_gas_1988" + +"$out_of_gas_1987": ; preds = %"$have_gas_1982" + call void @_out_of_gas() + br label %"$have_gas_1988" + +"$have_gas_1988": ; preds = %"$out_of_gas_1987", %"$have_gas_1982" + %"$consume_1989" = sub i64 %"$gasrem_1985", 1 + store i64 %"$consume_1989", i64* @_gasrem %eq = alloca %TName_Bool* - %"$execptr_load_813" = load i8*, i8** @_execptr - %"$c_814" = load %String, %String* %c - %"$v_815" = load %String, %String* %v - %"$eq_call_816" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_813", %String %"$c_814", %String %"$v_815") - store %TName_Bool* %"$eq_call_816", %TName_Bool** %eq - %"$eq_818" = load %TName_Bool*, %TName_Bool** %eq - %"$eq_tag_819" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_818", i32 0, i32 0 - %"$eq_tag_820" = load i8, i8* %"$eq_tag_819" - switch i8 %"$eq_tag_820", label %"$empty_default_821" [ - i8 0, label %"$True_822" - i8 1, label %"$False_824" + %"$execptr_load_1990" = load i8*, i8** @_execptr + %"$c_1991" = load %String, %String* %c + %"$v_1992" = load %String, %String* %v + %"$eq_call_1993" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_1990", %String %"$c_1991", %String %"$v_1992") + store %TName_Bool* %"$eq_call_1993", %TName_Bool** %eq + %"$gasrem_1994" = load i64, i64* @_gasrem + %"$gascmp_1995" = icmp ugt i64 2, %"$gasrem_1994" + br i1 %"$gascmp_1995", label %"$out_of_gas_1996", label %"$have_gas_1997" + +"$out_of_gas_1996": ; preds = %"$have_gas_1988" + call void @_out_of_gas() + br label %"$have_gas_1997" + +"$have_gas_1997": ; preds = %"$out_of_gas_1996", %"$have_gas_1988" + %"$consume_1998" = sub i64 %"$gasrem_1994", 2 + store i64 %"$consume_1998", i64* @_gasrem + %"$eq_2000" = load %TName_Bool*, %TName_Bool** %eq + %"$eq_tag_2001" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_2000", i32 0, i32 0 + %"$eq_tag_2002" = load i8, i8* %"$eq_tag_2001" + switch i8 %"$eq_tag_2002", label %"$empty_default_2003" [ + i8 0, label %"$True_2004" + i8 1, label %"$False_2006" ] -"$True_822": ; preds = %"$Some_808" - %"$eq_823" = bitcast %TName_Bool* %"$eq_818" to %CName_True* - br label %"$matchsucc_817" +"$True_2004": ; preds = %"$have_gas_1997" + %"$eq_2005" = bitcast %TName_Bool* %"$eq_2000" to %CName_True* + br label %"$matchsucc_1999" + +"$False_2006": ; preds = %"$have_gas_1997" + %"$eq_2007" = bitcast %TName_Bool* %"$eq_2000" to %CName_False* + %"$gasrem_2008" = load i64, i64* @_gasrem + %"$gascmp_2009" = icmp ugt i64 1, %"$gasrem_2008" + br i1 %"$gascmp_2009", label %"$out_of_gas_2010", label %"$have_gas_2011" + +"$out_of_gas_2010": ; preds = %"$False_2006" + call void @_out_of_gas() + br label %"$have_gas_2011" -"$False_824": ; preds = %"$Some_808" - %"$eq_825" = bitcast %TName_Bool* %"$eq_818" to %CName_False* +"$have_gas_2011": ; preds = %"$out_of_gas_2010", %"$False_2006" + %"$consume_2012" = sub i64 %"$gasrem_2008", 1 + store i64 %"$consume_2012", i64* @_gasrem %m = alloca %String - store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_826", i32 0, i32 0), i32 31 }, %String* %m - %"$fail_msg__sender_827" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_827" - %"$tname_828" = load %String, %String* %tname - %"$m_829" = load %String, %String* %m - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_827", %String %"$tname_828", %String %"$m_829") - br label %"$matchsucc_817" - -"$empty_default_821": ; preds = %"$Some_808" - br label %"$matchsucc_817" - -"$matchsucc_817": ; preds = %"$False_824", %"$True_822", %"$empty_default_821" - br label %"$matchsucc_803" - -"$None_830": ; preds = %entry - %"$c1_831" = bitcast %TName_Option_String* %"$c1_804" to %CName_None_String* + %"$gasrem_2013" = load i64, i64* @_gasrem + %"$gascmp_2014" = icmp ugt i64 1, %"$gasrem_2013" + br i1 %"$gascmp_2014", label %"$out_of_gas_2015", label %"$have_gas_2016" + +"$out_of_gas_2015": ; preds = %"$have_gas_2011" + call void @_out_of_gas() + br label %"$have_gas_2016" + +"$have_gas_2016": ; preds = %"$out_of_gas_2015", %"$have_gas_2011" + %"$consume_2017" = sub i64 %"$gasrem_2013", 1 + store i64 %"$consume_2017", i64* @_gasrem + store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_2018", i32 0, i32 0), i32 31 }, %String* %m + %"$gasrem_2019" = load i64, i64* @_gasrem + %"$gascmp_2020" = icmp ugt i64 1, %"$gasrem_2019" + br i1 %"$gascmp_2020", label %"$out_of_gas_2021", label %"$have_gas_2022" + +"$out_of_gas_2021": ; preds = %"$have_gas_2016" + call void @_out_of_gas() + br label %"$have_gas_2022" + +"$have_gas_2022": ; preds = %"$out_of_gas_2021", %"$have_gas_2016" + %"$consume_2023" = sub i64 %"$gasrem_2019", 1 + store i64 %"$consume_2023", i64* @_gasrem + %"$fail_msg__sender_2024" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2024" + %"$tname_2025" = load %String, %String* %tname + %"$m_2026" = load %String, %String* %m + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2024", %String %"$tname_2025", %String %"$m_2026") + br label %"$matchsucc_1999" + +"$empty_default_2003": ; preds = %"$have_gas_1997" + br label %"$matchsucc_1999" + +"$matchsucc_1999": ; preds = %"$have_gas_2022", %"$True_2004", %"$empty_default_2003" + br label %"$matchsucc_1965" + +"$None_2027": ; preds = %"$have_gas_1963" + %"$c1_2028" = bitcast %TName_Option_String* %"$c1_1966" to %CName_None_String* + %"$gasrem_2029" = load i64, i64* @_gasrem + %"$gascmp_2030" = icmp ugt i64 1, %"$gasrem_2029" + br i1 %"$gascmp_2030", label %"$out_of_gas_2031", label %"$have_gas_2032" + +"$out_of_gas_2031": ; preds = %"$None_2027" + call void @_out_of_gas() + br label %"$have_gas_2032" + +"$have_gas_2032": ; preds = %"$out_of_gas_2031", %"$None_2027" + %"$consume_2033" = sub i64 %"$gasrem_2029", 1 + store i64 %"$consume_2033", i64* @_gasrem %m2 = alloca %String - store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_832", i32 0, i32 0), i32 21 }, %String* %m2 - %"$fail_msg__sender_833" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_833" - %"$tname_834" = load %String, %String* %tname - %"$m_835" = load %String, %String* %m2 - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_833", %String %"$tname_834", %String %"$m_835") - br label %"$matchsucc_803" - -"$empty_default_807": ; preds = %entry - br label %"$matchsucc_803" - -"$matchsucc_803": ; preds = %"$None_830", %"$matchsucc_817", %"$empty_default_807" + %"$gasrem_2034" = load i64, i64* @_gasrem + %"$gascmp_2035" = icmp ugt i64 1, %"$gasrem_2034" + br i1 %"$gascmp_2035", label %"$out_of_gas_2036", label %"$have_gas_2037" + +"$out_of_gas_2036": ; preds = %"$have_gas_2032" + call void @_out_of_gas() + br label %"$have_gas_2037" + +"$have_gas_2037": ; preds = %"$out_of_gas_2036", %"$have_gas_2032" + %"$consume_2038" = sub i64 %"$gasrem_2034", 1 + store i64 %"$consume_2038", i64* @_gasrem + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_2039", i32 0, i32 0), i32 21 }, %String* %m2 + %"$gasrem_2040" = load i64, i64* @_gasrem + %"$gascmp_2041" = icmp ugt i64 1, %"$gasrem_2040" + br i1 %"$gascmp_2041", label %"$out_of_gas_2042", label %"$have_gas_2043" + +"$out_of_gas_2042": ; preds = %"$have_gas_2037" + call void @_out_of_gas() + br label %"$have_gas_2043" + +"$have_gas_2043": ; preds = %"$out_of_gas_2042", %"$have_gas_2037" + %"$consume_2044" = sub i64 %"$gasrem_2040", 1 + store i64 %"$consume_2044", i64* @_gasrem + %"$fail_msg__sender_2045" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2045" + %"$tname_2046" = load %String, %String* %tname + %"$m_2047" = load %String, %String* %m2 + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2045", %String %"$tname_2046", %String %"$m_2047") + br label %"$matchsucc_1965" + +"$empty_default_1969": ; preds = %"$have_gas_1963" + br label %"$matchsucc_1965" + +"$matchsucc_1965": ; preds = %"$have_gas_2043", %"$matchsucc_1999", %"$empty_default_1969" + %"$gasrem_2048" = load i64, i64* @_gasrem + %"$gascmp_2049" = icmp ugt i64 1, %"$gasrem_2048" + br i1 %"$gascmp_2049", label %"$out_of_gas_2050", label %"$have_gas_2051" + +"$out_of_gas_2050": ; preds = %"$matchsucc_1965" + call void @_out_of_gas() + br label %"$have_gas_2051" + +"$have_gas_2051": ; preds = %"$out_of_gas_2050", %"$matchsucc_1965" + %"$consume_2052" = sub i64 %"$gasrem_2048", 1 + store i64 %"$consume_2052", i64* @_gasrem %key1b = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_836", i32 0, i32 0), i32 5 }, %String* %key1b + %"$gasrem_2053" = load i64, i64* @_gasrem + %"$gascmp_2054" = icmp ugt i64 1, %"$gasrem_2053" + br i1 %"$gascmp_2054", label %"$out_of_gas_2055", label %"$have_gas_2056" + +"$out_of_gas_2055": ; preds = %"$have_gas_2051" + call void @_out_of_gas() + br label %"$have_gas_2056" + +"$have_gas_2056": ; preds = %"$out_of_gas_2055", %"$have_gas_2051" + %"$consume_2057" = sub i64 %"$gasrem_2053", 1 + store i64 %"$consume_2057", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2058", i32 0, i32 0), i32 5 }, %String* %key1b + %"$gasrem_2059" = load i64, i64* @_gasrem + %"$gascmp_2060" = icmp ugt i64 1, %"$gasrem_2059" + br i1 %"$gascmp_2060", label %"$out_of_gas_2061", label %"$have_gas_2062" + +"$out_of_gas_2061": ; preds = %"$have_gas_2056" + call void @_out_of_gas() + br label %"$have_gas_2062" + +"$have_gas_2062": ; preds = %"$out_of_gas_2061", %"$have_gas_2056" + %"$consume_2063" = sub i64 %"$gasrem_2059", 1 + store i64 %"$consume_2063", i64* @_gasrem %key2c = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_837", i32 0, i32 0), i32 5 }, %String* %key2c + %"$gasrem_2064" = load i64, i64* @_gasrem + %"$gascmp_2065" = icmp ugt i64 1, %"$gasrem_2064" + br i1 %"$gascmp_2065", label %"$out_of_gas_2066", label %"$have_gas_2067" + +"$out_of_gas_2066": ; preds = %"$have_gas_2062" + call void @_out_of_gas() + br label %"$have_gas_2067" + +"$have_gas_2067": ; preds = %"$out_of_gas_2066", %"$have_gas_2062" + %"$consume_2068" = sub i64 %"$gasrem_2064", 1 + store i64 %"$consume_2068", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2069", i32 0, i32 0), i32 5 }, %String* %key2c %"$c1_9" = alloca %TName_Option_String* - %"$indices_buf_838_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_838_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_838_salloc_load", i64 32) - %"$indices_buf_838_salloc" = bitcast i8* %"$indices_buf_838_salloc_salloc" to [32 x i8]* - %"$indices_buf_838" = bitcast [32 x i8]* %"$indices_buf_838_salloc" to i8* - %"$key1b_839" = load %String, %String* %key1b - %"$indices_gep_840" = getelementptr i8, i8* %"$indices_buf_838", i32 0 - %indices_cast3 = bitcast i8* %"$indices_gep_840" to %String* - store %String %"$key1b_839", %String* %indices_cast3 - %"$key2c_841" = load %String, %String* %key2c - %"$indices_gep_842" = getelementptr i8, i8* %"$indices_buf_838", i32 16 - %indices_cast4 = bitcast i8* %"$indices_gep_842" to %String* - store %String %"$key2c_841", %String* %indices_cast4 - %"$execptr_load_843" = load i8*, i8** @_execptr - %"$$c1_9_845" = call i8* @_fetch_field(i8* %"$execptr_load_843", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_844", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 2, i8* %"$indices_buf_838", i32 1) - %"$$c1_9_846" = bitcast i8* %"$$c1_9_845" to %TName_Option_String* - store %TName_Option_String* %"$$c1_9_846", %TName_Option_String** %"$c1_9" - %"$$c1_9_848" = load %TName_Option_String*, %TName_Option_String** %"$c1_9" - %"$$c1_9_tag_849" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_9_848", i32 0, i32 0 - %"$$c1_9_tag_850" = load i8, i8* %"$$c1_9_tag_849" - switch i8 %"$$c1_9_tag_850", label %"$empty_default_851" [ - i8 0, label %"$Some_852" - i8 1, label %"$None_874" + %"$indices_buf_2070_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_2070_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2070_salloc_load", i64 32) + %"$indices_buf_2070_salloc" = bitcast i8* %"$indices_buf_2070_salloc_salloc" to [32 x i8]* + %"$indices_buf_2070" = bitcast [32 x i8]* %"$indices_buf_2070_salloc" to i8* + %"$key1b_2071" = load %String, %String* %key1b + %"$indices_gep_2072" = getelementptr i8, i8* %"$indices_buf_2070", i32 0 + %indices_cast3 = bitcast i8* %"$indices_gep_2072" to %String* + store %String %"$key1b_2071", %String* %indices_cast3 + %"$key2c_2073" = load %String, %String* %key2c + %"$indices_gep_2074" = getelementptr i8, i8* %"$indices_buf_2070", i32 16 + %indices_cast4 = bitcast i8* %"$indices_gep_2074" to %String* + store %String %"$key2c_2073", %String* %indices_cast4 + %"$execptr_load_2075" = load i8*, i8** @_execptr + %"$$c1_9_2077" = call i8* @_fetch_field(i8* %"$execptr_load_2075", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_2076", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_2070", i32 1) + %"$$c1_9_2078" = bitcast i8* %"$$c1_9_2077" to %TName_Option_String* + store %TName_Option_String* %"$$c1_9_2078", %TName_Option_String** %"$c1_9" + %"$$c1_9_2079" = load %TName_Option_String*, %TName_Option_String** %"$c1_9" + %"$$$c1_9_2079_2080" = bitcast %TName_Option_String* %"$$c1_9_2079" to i8* + %"$_literal_cost_call_2081" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$$c1_9_2079_2080") + %"$gasadd_2082" = add i64 %"$_literal_cost_call_2081", 0 + %"$gasadd_2083" = add i64 %"$gasadd_2082", 2 + %"$gasrem_2084" = load i64, i64* @_gasrem + %"$gascmp_2085" = icmp ugt i64 %"$gasadd_2083", %"$gasrem_2084" + br i1 %"$gascmp_2085", label %"$out_of_gas_2086", label %"$have_gas_2087" + +"$out_of_gas_2086": ; preds = %"$have_gas_2067" + call void @_out_of_gas() + br label %"$have_gas_2087" + +"$have_gas_2087": ; preds = %"$out_of_gas_2086", %"$have_gas_2067" + %"$consume_2088" = sub i64 %"$gasrem_2084", %"$gasadd_2083" + store i64 %"$consume_2088", i64* @_gasrem + %"$gasrem_2089" = load i64, i64* @_gasrem + %"$gascmp_2090" = icmp ugt i64 2, %"$gasrem_2089" + br i1 %"$gascmp_2090", label %"$out_of_gas_2091", label %"$have_gas_2092" + +"$out_of_gas_2091": ; preds = %"$have_gas_2087" + call void @_out_of_gas() + br label %"$have_gas_2092" + +"$have_gas_2092": ; preds = %"$out_of_gas_2091", %"$have_gas_2087" + %"$consume_2093" = sub i64 %"$gasrem_2089", 2 + store i64 %"$consume_2093", i64* @_gasrem + %"$$c1_9_2095" = load %TName_Option_String*, %TName_Option_String** %"$c1_9" + %"$$c1_9_tag_2096" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_9_2095", i32 0, i32 0 + %"$$c1_9_tag_2097" = load i8, i8* %"$$c1_9_tag_2096" + switch i8 %"$$c1_9_tag_2097", label %"$empty_default_2098" [ + i8 0, label %"$Some_2099" + i8 1, label %"$None_2156" ] -"$Some_852": ; preds = %"$matchsucc_803" - %"$$c1_9_853" = bitcast %TName_Option_String* %"$$c1_9_848" to %CName_Some_String* - %"$c_gep_854" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_9_853", i32 0, i32 1 - %"$c_load_855" = load %String, %String* %"$c_gep_854" +"$Some_2099": ; preds = %"$have_gas_2092" + %"$$c1_9_2100" = bitcast %TName_Option_String* %"$$c1_9_2095" to %CName_Some_String* + %"$c_gep_2101" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_9_2100", i32 0, i32 1 + %"$c_load_2102" = load %String, %String* %"$c_gep_2101" %c5 = alloca %String - store %String %"$c_load_855", %String* %c5 + store %String %"$c_load_2102", %String* %c5 + %"$gasrem_2103" = load i64, i64* @_gasrem + %"$gascmp_2104" = icmp ugt i64 1, %"$gasrem_2103" + br i1 %"$gascmp_2104", label %"$out_of_gas_2105", label %"$have_gas_2106" + +"$out_of_gas_2105": ; preds = %"$Some_2099" + call void @_out_of_gas() + br label %"$have_gas_2106" + +"$have_gas_2106": ; preds = %"$out_of_gas_2105", %"$Some_2099" + %"$consume_2107" = sub i64 %"$gasrem_2103", 1 + store i64 %"$consume_2107", i64* @_gasrem %v6 = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_856", i32 0, i32 0), i32 3 }, %String* %v6 + %"$gasrem_2108" = load i64, i64* @_gasrem + %"$gascmp_2109" = icmp ugt i64 1, %"$gasrem_2108" + br i1 %"$gascmp_2109", label %"$out_of_gas_2110", label %"$have_gas_2111" + +"$out_of_gas_2110": ; preds = %"$have_gas_2106" + call void @_out_of_gas() + br label %"$have_gas_2111" + +"$have_gas_2111": ; preds = %"$out_of_gas_2110", %"$have_gas_2106" + %"$consume_2112" = sub i64 %"$gasrem_2108", 1 + store i64 %"$consume_2112", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2113", i32 0, i32 0), i32 3 }, %String* %v6 + %"$gasrem_2114" = load i64, i64* @_gasrem + %"$gascmp_2115" = icmp ugt i64 1, %"$gasrem_2114" + br i1 %"$gascmp_2115", label %"$out_of_gas_2116", label %"$have_gas_2117" + +"$out_of_gas_2116": ; preds = %"$have_gas_2111" + call void @_out_of_gas() + br label %"$have_gas_2117" + +"$have_gas_2117": ; preds = %"$out_of_gas_2116", %"$have_gas_2111" + %"$consume_2118" = sub i64 %"$gasrem_2114", 1 + store i64 %"$consume_2118", i64* @_gasrem %eq7 = alloca %TName_Bool* - %"$execptr_load_857" = load i8*, i8** @_execptr - %"$c_858" = load %String, %String* %c5 - %"$v_859" = load %String, %String* %v6 - %"$eq_call_860" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_857", %String %"$c_858", %String %"$v_859") - store %TName_Bool* %"$eq_call_860", %TName_Bool** %eq7 - %"$eq_862" = load %TName_Bool*, %TName_Bool** %eq7 - %"$eq_tag_863" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_862", i32 0, i32 0 - %"$eq_tag_864" = load i8, i8* %"$eq_tag_863" - switch i8 %"$eq_tag_864", label %"$empty_default_865" [ - i8 0, label %"$True_866" - i8 1, label %"$False_868" + %"$execptr_load_2119" = load i8*, i8** @_execptr + %"$c_2120" = load %String, %String* %c5 + %"$v_2121" = load %String, %String* %v6 + %"$eq_call_2122" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_2119", %String %"$c_2120", %String %"$v_2121") + store %TName_Bool* %"$eq_call_2122", %TName_Bool** %eq7 + %"$gasrem_2123" = load i64, i64* @_gasrem + %"$gascmp_2124" = icmp ugt i64 2, %"$gasrem_2123" + br i1 %"$gascmp_2124", label %"$out_of_gas_2125", label %"$have_gas_2126" + +"$out_of_gas_2125": ; preds = %"$have_gas_2117" + call void @_out_of_gas() + br label %"$have_gas_2126" + +"$have_gas_2126": ; preds = %"$out_of_gas_2125", %"$have_gas_2117" + %"$consume_2127" = sub i64 %"$gasrem_2123", 2 + store i64 %"$consume_2127", i64* @_gasrem + %"$eq_2129" = load %TName_Bool*, %TName_Bool** %eq7 + %"$eq_tag_2130" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_2129", i32 0, i32 0 + %"$eq_tag_2131" = load i8, i8* %"$eq_tag_2130" + switch i8 %"$eq_tag_2131", label %"$empty_default_2132" [ + i8 0, label %"$True_2133" + i8 1, label %"$False_2135" ] -"$True_866": ; preds = %"$Some_852" - %"$eq_867" = bitcast %TName_Bool* %"$eq_862" to %CName_True* - br label %"$matchsucc_861" +"$True_2133": ; preds = %"$have_gas_2126" + %"$eq_2134" = bitcast %TName_Bool* %"$eq_2129" to %CName_True* + br label %"$matchsucc_2128" -"$False_868": ; preds = %"$Some_852" - %"$eq_869" = bitcast %TName_Bool* %"$eq_862" to %CName_False* +"$False_2135": ; preds = %"$have_gas_2126" + %"$eq_2136" = bitcast %TName_Bool* %"$eq_2129" to %CName_False* + %"$gasrem_2137" = load i64, i64* @_gasrem + %"$gascmp_2138" = icmp ugt i64 1, %"$gasrem_2137" + br i1 %"$gascmp_2138", label %"$out_of_gas_2139", label %"$have_gas_2140" + +"$out_of_gas_2139": ; preds = %"$False_2135" + call void @_out_of_gas() + br label %"$have_gas_2140" + +"$have_gas_2140": ; preds = %"$out_of_gas_2139", %"$False_2135" + %"$consume_2141" = sub i64 %"$gasrem_2137", 1 + store i64 %"$consume_2141", i64* @_gasrem %m8 = alloca %String - store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_870", i32 0, i32 0), i32 31 }, %String* %m8 - %"$fail_msg__sender_871" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_871" - %"$tname_872" = load %String, %String* %tname - %"$m_873" = load %String, %String* %m8 - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_871", %String %"$tname_872", %String %"$m_873") - br label %"$matchsucc_861" - -"$empty_default_865": ; preds = %"$Some_852" - br label %"$matchsucc_861" - -"$matchsucc_861": ; preds = %"$False_868", %"$True_866", %"$empty_default_865" - br label %"$matchsucc_847" - -"$None_874": ; preds = %"$matchsucc_803" - %"$$c1_9_875" = bitcast %TName_Option_String* %"$$c1_9_848" to %CName_None_String* + %"$gasrem_2142" = load i64, i64* @_gasrem + %"$gascmp_2143" = icmp ugt i64 1, %"$gasrem_2142" + br i1 %"$gascmp_2143", label %"$out_of_gas_2144", label %"$have_gas_2145" + +"$out_of_gas_2144": ; preds = %"$have_gas_2140" + call void @_out_of_gas() + br label %"$have_gas_2145" + +"$have_gas_2145": ; preds = %"$out_of_gas_2144", %"$have_gas_2140" + %"$consume_2146" = sub i64 %"$gasrem_2142", 1 + store i64 %"$consume_2146", i64* @_gasrem + store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_2147", i32 0, i32 0), i32 31 }, %String* %m8 + %"$gasrem_2148" = load i64, i64* @_gasrem + %"$gascmp_2149" = icmp ugt i64 1, %"$gasrem_2148" + br i1 %"$gascmp_2149", label %"$out_of_gas_2150", label %"$have_gas_2151" + +"$out_of_gas_2150": ; preds = %"$have_gas_2145" + call void @_out_of_gas() + br label %"$have_gas_2151" + +"$have_gas_2151": ; preds = %"$out_of_gas_2150", %"$have_gas_2145" + %"$consume_2152" = sub i64 %"$gasrem_2148", 1 + store i64 %"$consume_2152", i64* @_gasrem + %"$fail_msg__sender_2153" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2153" + %"$tname_2154" = load %String, %String* %tname + %"$m_2155" = load %String, %String* %m8 + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2153", %String %"$tname_2154", %String %"$m_2155") + br label %"$matchsucc_2128" + +"$empty_default_2132": ; preds = %"$have_gas_2126" + br label %"$matchsucc_2128" + +"$matchsucc_2128": ; preds = %"$have_gas_2151", %"$True_2133", %"$empty_default_2132" + br label %"$matchsucc_2094" + +"$None_2156": ; preds = %"$have_gas_2092" + %"$$c1_9_2157" = bitcast %TName_Option_String* %"$$c1_9_2095" to %CName_None_String* + %"$gasrem_2158" = load i64, i64* @_gasrem + %"$gascmp_2159" = icmp ugt i64 1, %"$gasrem_2158" + br i1 %"$gascmp_2159", label %"$out_of_gas_2160", label %"$have_gas_2161" + +"$out_of_gas_2160": ; preds = %"$None_2156" + call void @_out_of_gas() + br label %"$have_gas_2161" + +"$have_gas_2161": ; preds = %"$out_of_gas_2160", %"$None_2156" + %"$consume_2162" = sub i64 %"$gasrem_2158", 1 + store i64 %"$consume_2162", i64* @_gasrem %m9 = alloca %String - store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_876", i32 0, i32 0), i32 21 }, %String* %m9 - %"$fail_msg__sender_877" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_877" - %"$tname_878" = load %String, %String* %tname - %"$m_879" = load %String, %String* %m9 - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_877", %String %"$tname_878", %String %"$m_879") - br label %"$matchsucc_847" - -"$empty_default_851": ; preds = %"$matchsucc_803" - br label %"$matchsucc_847" - -"$matchsucc_847": ; preds = %"$None_874", %"$matchsucc_861", %"$empty_default_851" + %"$gasrem_2163" = load i64, i64* @_gasrem + %"$gascmp_2164" = icmp ugt i64 1, %"$gasrem_2163" + br i1 %"$gascmp_2164", label %"$out_of_gas_2165", label %"$have_gas_2166" + +"$out_of_gas_2165": ; preds = %"$have_gas_2161" + call void @_out_of_gas() + br label %"$have_gas_2166" + +"$have_gas_2166": ; preds = %"$out_of_gas_2165", %"$have_gas_2161" + %"$consume_2167" = sub i64 %"$gasrem_2163", 1 + store i64 %"$consume_2167", i64* @_gasrem + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_2168", i32 0, i32 0), i32 21 }, %String* %m9 + %"$gasrem_2169" = load i64, i64* @_gasrem + %"$gascmp_2170" = icmp ugt i64 1, %"$gasrem_2169" + br i1 %"$gascmp_2170", label %"$out_of_gas_2171", label %"$have_gas_2172" + +"$out_of_gas_2171": ; preds = %"$have_gas_2166" + call void @_out_of_gas() + br label %"$have_gas_2172" + +"$have_gas_2172": ; preds = %"$out_of_gas_2171", %"$have_gas_2166" + %"$consume_2173" = sub i64 %"$gasrem_2169", 1 + store i64 %"$consume_2173", i64* @_gasrem + %"$fail_msg__sender_2174" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2174" + %"$tname_2175" = load %String, %String* %tname + %"$m_2176" = load %String, %String* %m9 + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2174", %String %"$tname_2175", %String %"$m_2176") + br label %"$matchsucc_2094" + +"$empty_default_2098": ; preds = %"$have_gas_2092" + br label %"$matchsucc_2094" + +"$matchsucc_2094": ; preds = %"$have_gas_2172", %"$matchsucc_2128", %"$empty_default_2098" + %"$gasrem_2177" = load i64, i64* @_gasrem + %"$gascmp_2178" = icmp ugt i64 1, %"$gasrem_2177" + br i1 %"$gascmp_2178", label %"$out_of_gas_2179", label %"$have_gas_2180" + +"$out_of_gas_2179": ; preds = %"$matchsucc_2094" + call void @_out_of_gas() + br label %"$have_gas_2180" + +"$have_gas_2180": ; preds = %"$out_of_gas_2179", %"$matchsucc_2094" + %"$consume_2181" = sub i64 %"$gasrem_2177", 1 + store i64 %"$consume_2181", i64* @_gasrem %em = alloca %Map_String_String* - %"$execptr_load_880" = load i8*, i8** @_execptr - %"$_new_empty_map_call_881" = call i8* @_new_empty_map(i8* %"$execptr_load_880") - %"$Emp_882" = bitcast i8* %"$_new_empty_map_call_881" to %Map_String_String* - store %Map_String_String* %"$Emp_882", %Map_String_String** %em - %"$execptr_load_883" = load i8*, i8** @_execptr - %"$em_885" = load %Map_String_String*, %Map_String_String** %em - %"$update_value_886" = bitcast %Map_String_String* %"$em_885" to i8* - call void @_update_field(i8* %"$execptr_load_883", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_884", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_73", i32 0, i8* null, i8* %"$update_value_886") + %"$gasrem_2182" = load i64, i64* @_gasrem + %"$gascmp_2183" = icmp ugt i64 1, %"$gasrem_2182" + br i1 %"$gascmp_2183", label %"$out_of_gas_2184", label %"$have_gas_2185" + +"$out_of_gas_2184": ; preds = %"$have_gas_2180" + call void @_out_of_gas() + br label %"$have_gas_2185" + +"$have_gas_2185": ; preds = %"$out_of_gas_2184", %"$have_gas_2180" + %"$consume_2186" = sub i64 %"$gasrem_2182", 1 + store i64 %"$consume_2186", i64* @_gasrem + %"$execptr_load_2187" = load i8*, i8** @_execptr + %"$_new_empty_map_call_2188" = call i8* @_new_empty_map(i8* %"$execptr_load_2187") + %"$Emp_2189" = bitcast i8* %"$_new_empty_map_call_2188" to %Map_String_String* + store %Map_String_String* %"$Emp_2189", %Map_String_String** %em + %"$em_2190" = load %Map_String_String*, %Map_String_String** %em + %"$$em_2190_2191" = bitcast %Map_String_String* %"$em_2190" to i8* + %"$_literal_cost_call_2192" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$em_2190_2191") + %"$gasrem_2193" = load i64, i64* @_gasrem + %"$gascmp_2194" = icmp ugt i64 %"$_literal_cost_call_2192", %"$gasrem_2193" + br i1 %"$gascmp_2194", label %"$out_of_gas_2195", label %"$have_gas_2196" + +"$out_of_gas_2195": ; preds = %"$have_gas_2185" + call void @_out_of_gas() + br label %"$have_gas_2196" + +"$have_gas_2196": ; preds = %"$out_of_gas_2195", %"$have_gas_2185" + %"$consume_2197" = sub i64 %"$gasrem_2193", %"$_literal_cost_call_2192" + store i64 %"$consume_2197", i64* @_gasrem + %"$execptr_load_2198" = load i8*, i8** @_execptr + %"$em_2200" = load %Map_String_String*, %Map_String_String** %em + %"$update_value_2201" = bitcast %Map_String_String* %"$em_2200" to i8* + call void @_update_field(i8* %"$execptr_load_2198", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_2199", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i8* %"$update_value_2201") ret void } define void @t8(i8* %0) { entry: - %"$_amount_888" = getelementptr i8, i8* %0, i32 0 - %"$_amount_889" = bitcast i8* %"$_amount_888" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_889" - %"$_sender_890" = getelementptr i8, i8* %0, i32 16 - %"$_sender_891" = bitcast i8* %"$_sender_890" to [20 x i8]* - call void @"$t8_789"(%Uint128 %_amount, [20 x i8]* %"$_sender_891") + %"$_amount_2203" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2204" = bitcast i8* %"$_amount_2203" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2204" + %"$_sender_2205" = getelementptr i8, i8* %0, i32 16 + %"$_sender_2206" = bitcast i8* %"$_sender_2205" to [20 x i8]* + call void @"$t8_1906"(%Uint128 %_amount, [20 x i8]* %"$_sender_2206") ret void } -define internal void @"$t9_892"(%Uint128 %_amount, [20 x i8]* %"$_sender_893") { +define internal void @"$t9_2207"(%Uint128 %_amount, [20 x i8]* %"$_sender_2208") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_893" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2208" + %"$gasrem_2209" = load i64, i64* @_gasrem + %"$gascmp_2210" = icmp ugt i64 1, %"$gasrem_2209" + br i1 %"$gascmp_2210", label %"$out_of_gas_2211", label %"$have_gas_2212" + +"$out_of_gas_2211": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2212" + +"$have_gas_2212": ; preds = %"$out_of_gas_2211", %entry + %"$consume_2213" = sub i64 %"$gasrem_2209", 1 + store i64 %"$consume_2213", i64* @_gasrem %tname = alloca %String - store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_894", i32 0, i32 0), i32 2 }, %String* %tname + %"$gasrem_2214" = load i64, i64* @_gasrem + %"$gascmp_2215" = icmp ugt i64 1, %"$gasrem_2214" + br i1 %"$gascmp_2215", label %"$out_of_gas_2216", label %"$have_gas_2217" + +"$out_of_gas_2216": ; preds = %"$have_gas_2212" + call void @_out_of_gas() + br label %"$have_gas_2217" + +"$have_gas_2217": ; preds = %"$out_of_gas_2216", %"$have_gas_2212" + %"$consume_2218" = sub i64 %"$gasrem_2214", 1 + store i64 %"$consume_2218", i64* @_gasrem + store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_2219", i32 0, i32 0), i32 2 }, %String* %tname %m1 = alloca %Map_String_String* - %"$execptr_load_895" = load i8*, i8** @_execptr - %"$m1_897" = call i8* @_fetch_field(i8* %"$execptr_load_895", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_896", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_73", i32 0, i8* null, i32 1) - %"$m1_898" = bitcast i8* %"$m1_897" to %Map_String_String* - store %Map_String_String* %"$m1_898", %Map_String_String** %m1 + %"$execptr_load_2220" = load i8*, i8** @_execptr + %"$m1_2222" = call i8* @_fetch_field(i8* %"$execptr_load_2220", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_2221", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i32 1) + %"$m1_2223" = bitcast i8* %"$m1_2222" to %Map_String_String* + store %Map_String_String* %"$m1_2223", %Map_String_String** %m1 + %"$m1_2224" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2224_2225" = bitcast %Map_String_String* %"$m1_2224" to i8* + %"$_literal_cost_call_2226" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_2224_2225") + %"$m1_2227" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2227_2228" = bitcast %Map_String_String* %"$m1_2227" to i8* + %"$_mapsortcost_call_2229" = call i64 @_mapsortcost(i8* %"$$m1_2227_2228") + %"$gasadd_2230" = add i64 %"$_literal_cost_call_2226", %"$_mapsortcost_call_2229" + %"$gasrem_2231" = load i64, i64* @_gasrem + %"$gascmp_2232" = icmp ugt i64 %"$gasadd_2230", %"$gasrem_2231" + br i1 %"$gascmp_2232", label %"$out_of_gas_2233", label %"$have_gas_2234" + +"$out_of_gas_2233": ; preds = %"$have_gas_2217" + call void @_out_of_gas() + br label %"$have_gas_2234" + +"$have_gas_2234": ; preds = %"$out_of_gas_2233", %"$have_gas_2217" + %"$consume_2235" = sub i64 %"$gasrem_2231", %"$gasadd_2230" + store i64 %"$consume_2235", i64* @_gasrem + %"$gasrem_2236" = load i64, i64* @_gasrem + %"$gascmp_2237" = icmp ugt i64 1, %"$gasrem_2236" + br i1 %"$gascmp_2237", label %"$out_of_gas_2238", label %"$have_gas_2239" + +"$out_of_gas_2238": ; preds = %"$have_gas_2234" + call void @_out_of_gas() + br label %"$have_gas_2239" + +"$have_gas_2239": ; preds = %"$out_of_gas_2238", %"$have_gas_2234" + %"$consume_2240" = sub i64 %"$gasrem_2236", 1 + store i64 %"$consume_2240", i64* @_gasrem %m1_size = alloca %Uint32 - %"$m1_899" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_899_900" = bitcast %Map_String_String* %"$m1_899" to i8* - %"$size_call_901" = call %Uint32 @_size(i8* %"$$m1_899_900") - store %Uint32 %"$size_call_901", %Uint32* %m1_size + %"$m1_2241" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2241_2242" = bitcast %Map_String_String* %"$m1_2241" to i8* + %"$size_call_2243" = call %Uint32 @_size(i8* %"$$m1_2241_2242") + store %Uint32 %"$size_call_2243", %Uint32* %m1_size + %"$gasrem_2244" = load i64, i64* @_gasrem + %"$gascmp_2245" = icmp ugt i64 1, %"$gasrem_2244" + br i1 %"$gascmp_2245", label %"$out_of_gas_2246", label %"$have_gas_2247" + +"$out_of_gas_2246": ; preds = %"$have_gas_2239" + call void @_out_of_gas() + br label %"$have_gas_2247" + +"$have_gas_2247": ; preds = %"$out_of_gas_2246", %"$have_gas_2239" + %"$consume_2248" = sub i64 %"$gasrem_2244", 1 + store i64 %"$consume_2248", i64* @_gasrem %zero = alloca %Uint32 - store %Uint32 zeroinitializer, %Uint32* %zero - %is_empty = alloca %TName_Bool* - %"$execptr_load_902" = load i8*, i8** @_execptr - %"$m1_size_903" = load %Uint32, %Uint32* %m1_size - %"$zero_904" = load %Uint32, %Uint32* %zero - %"$eq_call_905" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_902", %Uint32 %"$m1_size_903", %Uint32 %"$zero_904") - store %TName_Bool* %"$eq_call_905", %TName_Bool** %is_empty - %"$is_empty_907" = load %TName_Bool*, %TName_Bool** %is_empty - %"$is_empty_tag_908" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_907", i32 0, i32 0 - %"$is_empty_tag_909" = load i8, i8* %"$is_empty_tag_908" - switch i8 %"$is_empty_tag_909", label %"$empty_default_910" [ - i8 0, label %"$True_911" - i8 1, label %"$False_913" - ] + %"$gasrem_2249" = load i64, i64* @_gasrem + %"$gascmp_2250" = icmp ugt i64 1, %"$gasrem_2249" + br i1 %"$gascmp_2250", label %"$out_of_gas_2251", label %"$have_gas_2252" + +"$out_of_gas_2251": ; preds = %"$have_gas_2247" + call void @_out_of_gas() + br label %"$have_gas_2252" -"$True_911": ; preds = %entry - %"$is_empty_912" = bitcast %TName_Bool* %"$is_empty_907" to %CName_True* - br label %"$matchsucc_906" +"$have_gas_2252": ; preds = %"$out_of_gas_2251", %"$have_gas_2247" + %"$consume_2253" = sub i64 %"$gasrem_2249", 1 + store i64 %"$consume_2253", i64* @_gasrem + store %Uint32 zeroinitializer, %Uint32* %zero + %"$gasrem_2254" = load i64, i64* @_gasrem + %"$gascmp_2255" = icmp ugt i64 1, %"$gasrem_2254" + br i1 %"$gascmp_2255", label %"$out_of_gas_2256", label %"$have_gas_2257" -"$False_913": ; preds = %entry - %"$is_empty_914" = bitcast %TName_Bool* %"$is_empty_907" to %CName_False* - %"$fail__sender_915" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_915" - %"$tname_916" = load %String, %String* %tname - call void @"$fail_179"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_915", %String %"$tname_916") - br label %"$matchsucc_906" +"$out_of_gas_2256": ; preds = %"$have_gas_2252" + call void @_out_of_gas() + br label %"$have_gas_2257" -"$empty_default_910": ; preds = %entry - br label %"$matchsucc_906" +"$have_gas_2257": ; preds = %"$out_of_gas_2256", %"$have_gas_2252" + %"$consume_2258" = sub i64 %"$gasrem_2254", 1 + store i64 %"$consume_2258", i64* @_gasrem + %is_empty = alloca %TName_Bool* + %"$execptr_load_2259" = load i8*, i8** @_execptr + %"$m1_size_2260" = load %Uint32, %Uint32* %m1_size + %"$zero_2261" = load %Uint32, %Uint32* %zero + %"$eq_call_2262" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_2259", %Uint32 %"$m1_size_2260", %Uint32 %"$zero_2261") + store %TName_Bool* %"$eq_call_2262", %TName_Bool** %is_empty + %"$gasrem_2263" = load i64, i64* @_gasrem + %"$gascmp_2264" = icmp ugt i64 2, %"$gasrem_2263" + br i1 %"$gascmp_2264", label %"$out_of_gas_2265", label %"$have_gas_2266" + +"$out_of_gas_2265": ; preds = %"$have_gas_2257" + call void @_out_of_gas() + br label %"$have_gas_2266" + +"$have_gas_2266": ; preds = %"$out_of_gas_2265", %"$have_gas_2257" + %"$consume_2267" = sub i64 %"$gasrem_2263", 2 + store i64 %"$consume_2267", i64* @_gasrem + %"$is_empty_2269" = load %TName_Bool*, %TName_Bool** %is_empty + %"$is_empty_tag_2270" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_2269", i32 0, i32 0 + %"$is_empty_tag_2271" = load i8, i8* %"$is_empty_tag_2270" + switch i8 %"$is_empty_tag_2271", label %"$empty_default_2272" [ + i8 0, label %"$True_2273" + i8 1, label %"$False_2275" + ] -"$matchsucc_906": ; preds = %"$False_913", %"$True_911", %"$empty_default_910" +"$True_2273": ; preds = %"$have_gas_2266" + %"$is_empty_2274" = bitcast %TName_Bool* %"$is_empty_2269" to %CName_True* + br label %"$matchsucc_2268" + +"$False_2275": ; preds = %"$have_gas_2266" + %"$is_empty_2276" = bitcast %TName_Bool* %"$is_empty_2269" to %CName_False* + %"$gasrem_2277" = load i64, i64* @_gasrem + %"$gascmp_2278" = icmp ugt i64 1, %"$gasrem_2277" + br i1 %"$gascmp_2278", label %"$out_of_gas_2279", label %"$have_gas_2280" + +"$out_of_gas_2279": ; preds = %"$False_2275" + call void @_out_of_gas() + br label %"$have_gas_2280" + +"$have_gas_2280": ; preds = %"$out_of_gas_2279", %"$False_2275" + %"$consume_2281" = sub i64 %"$gasrem_2277", 1 + store i64 %"$consume_2281", i64* @_gasrem + %"$fail__sender_2282" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_2282" + %"$tname_2283" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_2282", %String %"$tname_2283") + br label %"$matchsucc_2268" + +"$empty_default_2272": ; preds = %"$have_gas_2266" + br label %"$matchsucc_2268" + +"$matchsucc_2268": ; preds = %"$have_gas_2280", %"$True_2273", %"$empty_default_2272" + %"$gasrem_2284" = load i64, i64* @_gasrem + %"$gascmp_2285" = icmp ugt i64 1, %"$gasrem_2284" + br i1 %"$gascmp_2285", label %"$out_of_gas_2286", label %"$have_gas_2287" + +"$out_of_gas_2286": ; preds = %"$matchsucc_2268" + call void @_out_of_gas() + br label %"$have_gas_2287" + +"$have_gas_2287": ; preds = %"$out_of_gas_2286", %"$matchsucc_2268" + %"$consume_2288" = sub i64 %"$gasrem_2284", 1 + store i64 %"$consume_2288", i64* @_gasrem %key1a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_917", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_2289" = load i64, i64* @_gasrem + %"$gascmp_2290" = icmp ugt i64 1, %"$gasrem_2289" + br i1 %"$gascmp_2290", label %"$out_of_gas_2291", label %"$have_gas_2292" + +"$out_of_gas_2291": ; preds = %"$have_gas_2287" + call void @_out_of_gas() + br label %"$have_gas_2292" + +"$have_gas_2292": ; preds = %"$out_of_gas_2291", %"$have_gas_2287" + %"$consume_2293" = sub i64 %"$gasrem_2289", 1 + store i64 %"$consume_2293", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2294", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_2295" = load i64, i64* @_gasrem + %"$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_2292" + call void @_out_of_gas() + br label %"$have_gas_2298" + +"$have_gas_2298": ; preds = %"$out_of_gas_2297", %"$have_gas_2292" + %"$consume_2299" = sub i64 %"$gasrem_2295", 1 + store i64 %"$consume_2299", i64* @_gasrem %val = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_918", i32 0, i32 0), i32 3 }, %String* %val + %"$gasrem_2300" = load i64, i64* @_gasrem + %"$gascmp_2301" = icmp ugt i64 1, %"$gasrem_2300" + br i1 %"$gascmp_2301", label %"$out_of_gas_2302", label %"$have_gas_2303" + +"$out_of_gas_2302": ; preds = %"$have_gas_2298" + call void @_out_of_gas() + br label %"$have_gas_2303" + +"$have_gas_2303": ; preds = %"$out_of_gas_2302", %"$have_gas_2298" + %"$consume_2304" = sub i64 %"$gasrem_2300", 1 + store i64 %"$consume_2304", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2305", i32 0, i32 0), i32 3 }, %String* %val + %"$gasrem_2306" = load i64, i64* @_gasrem + %"$gascmp_2307" = icmp ugt i64 1, %"$gasrem_2306" + br i1 %"$gascmp_2307", label %"$out_of_gas_2308", label %"$have_gas_2309" + +"$out_of_gas_2308": ; preds = %"$have_gas_2303" + call void @_out_of_gas() + br label %"$have_gas_2309" + +"$have_gas_2309": ; preds = %"$out_of_gas_2308", %"$have_gas_2303" + %"$consume_2310" = sub i64 %"$gasrem_2306", 1 + store i64 %"$consume_2310", i64* @_gasrem %"$m1_10" = alloca %Map_String_String* - %"$execptr_load_919" = load i8*, i8** @_execptr - %"$m1_920" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_920_921" = bitcast %Map_String_String* %"$m1_920" to i8* - %"$put_key1a_922" = alloca %String - %"$key1a_923" = load %String, %String* %key1a - store %String %"$key1a_923", %String* %"$put_key1a_922" - %"$$put_key1a_922_924" = bitcast %String* %"$put_key1a_922" to i8* - %"$put_val_925" = alloca %String - %"$val_926" = load %String, %String* %val - store %String %"$val_926", %String* %"$put_val_925" - %"$$put_val_925_927" = bitcast %String* %"$put_val_925" to i8* - %"$put_call_928" = call i8* @_put(i8* %"$execptr_load_919", %_TyDescrTy_Typ* @"$TyDescr_Map_73", i8* %"$$m1_920_921", i8* %"$$put_key1a_922_924", i8* %"$$put_val_925_927") - %"$_put_929" = bitcast i8* %"$put_call_928" to %Map_String_String* - store %Map_String_String* %"$_put_929", %Map_String_String** %"$m1_10" - %"$execptr_load_930" = load i8*, i8** @_execptr - %"$$m1_10_932" = load %Map_String_String*, %Map_String_String** %"$m1_10" - %"$update_value_933" = bitcast %Map_String_String* %"$$m1_10_932" to i8* - call void @_update_field(i8* %"$execptr_load_930", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_931", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_73", i32 0, i8* null, i8* %"$update_value_933") + %"$execptr_load_2311" = load i8*, i8** @_execptr + %"$m1_2312" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2312_2313" = bitcast %Map_String_String* %"$m1_2312" to i8* + %"$put_key1a_2314" = alloca %String + %"$key1a_2315" = load %String, %String* %key1a + store %String %"$key1a_2315", %String* %"$put_key1a_2314" + %"$$put_key1a_2314_2316" = bitcast %String* %"$put_key1a_2314" to i8* + %"$put_val_2317" = alloca %String + %"$val_2318" = load %String, %String* %val + store %String %"$val_2318", %String* %"$put_val_2317" + %"$$put_val_2317_2319" = bitcast %String* %"$put_val_2317" to i8* + %"$put_call_2320" = call i8* @_put(i8* %"$execptr_load_2311", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_2312_2313", i8* %"$$put_key1a_2314_2316", i8* %"$$put_val_2317_2319") + %"$_put_2321" = bitcast i8* %"$put_call_2320" to %Map_String_String* + store %Map_String_String* %"$_put_2321", %Map_String_String** %"$m1_10" + %"$$m1_10_2322" = load %Map_String_String*, %Map_String_String** %"$m1_10" + %"$$$m1_10_2322_2323" = bitcast %Map_String_String* %"$$m1_10_2322" to i8* + %"$_literal_cost_call_2324" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$$m1_10_2322_2323") + %"$gasrem_2325" = load i64, i64* @_gasrem + %"$gascmp_2326" = icmp ugt i64 %"$_literal_cost_call_2324", %"$gasrem_2325" + br i1 %"$gascmp_2326", label %"$out_of_gas_2327", label %"$have_gas_2328" + +"$out_of_gas_2327": ; preds = %"$have_gas_2309" + call void @_out_of_gas() + br label %"$have_gas_2328" + +"$have_gas_2328": ; preds = %"$out_of_gas_2327", %"$have_gas_2309" + %"$consume_2329" = sub i64 %"$gasrem_2325", %"$_literal_cost_call_2324" + store i64 %"$consume_2329", i64* @_gasrem + %"$execptr_load_2330" = load i8*, i8** @_execptr + %"$$m1_10_2332" = load %Map_String_String*, %Map_String_String** %"$m1_10" + %"$update_value_2333" = bitcast %Map_String_String* %"$$m1_10_2332" to i8* + call void @_update_field(i8* %"$execptr_load_2330", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_2331", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i8* %"$update_value_2333") ret void } +declare i64 @_mapsortcost(i8*) + declare %Uint32 @_size(i8*) declare %TName_Bool* @_eq_Uint32(i8*, %Uint32, %Uint32) define void @t9(i8* %0) { entry: - %"$_amount_935" = getelementptr i8, i8* %0, i32 0 - %"$_amount_936" = bitcast i8* %"$_amount_935" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_936" - %"$_sender_937" = getelementptr i8, i8* %0, i32 16 - %"$_sender_938" = bitcast i8* %"$_sender_937" to [20 x i8]* - call void @"$t9_892"(%Uint128 %_amount, [20 x i8]* %"$_sender_938") + %"$_amount_2335" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2336" = bitcast i8* %"$_amount_2335" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2336" + %"$_sender_2337" = getelementptr i8, i8* %0, i32 16 + %"$_sender_2338" = bitcast i8* %"$_sender_2337" to [20 x i8]* + call void @"$t9_2207"(%Uint128 %_amount, [20 x i8]* %"$_sender_2338") ret void } -define internal void @"$t10_939"(%Uint128 %_amount, [20 x i8]* %"$_sender_940") { +define internal void @"$t10_2339"(%Uint128 %_amount, [20 x i8]* %"$_sender_2340") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_940" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2340" + %"$gasrem_2341" = load i64, i64* @_gasrem + %"$gascmp_2342" = icmp ugt i64 1, %"$gasrem_2341" + br i1 %"$gascmp_2342", label %"$out_of_gas_2343", label %"$have_gas_2344" + +"$out_of_gas_2343": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2344" + +"$have_gas_2344": ; preds = %"$out_of_gas_2343", %entry + %"$consume_2345" = sub i64 %"$gasrem_2341", 1 + store i64 %"$consume_2345", i64* @_gasrem %tname = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_941", i32 0, i32 0), i32 3 }, %String* %tname + %"$gasrem_2346" = load i64, i64* @_gasrem + %"$gascmp_2347" = icmp ugt i64 1, %"$gasrem_2346" + br i1 %"$gascmp_2347", label %"$out_of_gas_2348", label %"$have_gas_2349" + +"$out_of_gas_2348": ; preds = %"$have_gas_2344" + call void @_out_of_gas() + br label %"$have_gas_2349" + +"$have_gas_2349": ; preds = %"$out_of_gas_2348", %"$have_gas_2344" + %"$consume_2350" = sub i64 %"$gasrem_2346", 1 + store i64 %"$consume_2350", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2351", i32 0, i32 0), i32 3 }, %String* %tname + %"$gasrem_2352" = load i64, i64* @_gasrem + %"$gascmp_2353" = icmp ugt i64 1, %"$gasrem_2352" + br i1 %"$gascmp_2353", label %"$out_of_gas_2354", label %"$have_gas_2355" + +"$out_of_gas_2354": ; preds = %"$have_gas_2349" + call void @_out_of_gas() + br label %"$have_gas_2355" + +"$have_gas_2355": ; preds = %"$out_of_gas_2354", %"$have_gas_2349" + %"$consume_2356" = sub i64 %"$gasrem_2352", 1 + store i64 %"$consume_2356", i64* @_gasrem %key1a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_942", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_2357" = load i64, i64* @_gasrem + %"$gascmp_2358" = icmp ugt i64 1, %"$gasrem_2357" + br i1 %"$gascmp_2358", label %"$out_of_gas_2359", label %"$have_gas_2360" + +"$out_of_gas_2359": ; preds = %"$have_gas_2355" + call void @_out_of_gas() + br label %"$have_gas_2360" + +"$have_gas_2360": ; preds = %"$out_of_gas_2359", %"$have_gas_2355" + %"$consume_2361" = sub i64 %"$gasrem_2357", 1 + store i64 %"$consume_2361", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2362", i32 0, i32 0), i32 5 }, %String* %key1a %m1 = alloca %Map_String_String* - %"$execptr_load_943" = load i8*, i8** @_execptr - %"$m1_945" = call i8* @_fetch_field(i8* %"$execptr_load_943", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_944", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_73", i32 0, i8* null, i32 1) - %"$m1_946" = bitcast i8* %"$m1_945" to %Map_String_String* - store %Map_String_String* %"$m1_946", %Map_String_String** %m1 + %"$execptr_load_2363" = load i8*, i8** @_execptr + %"$m1_2365" = call i8* @_fetch_field(i8* %"$execptr_load_2363", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_2364", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i32 1) + %"$m1_2366" = bitcast i8* %"$m1_2365" to %Map_String_String* + store %Map_String_String* %"$m1_2366", %Map_String_String** %m1 + %"$m1_2367" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2367_2368" = bitcast %Map_String_String* %"$m1_2367" to i8* + %"$_literal_cost_call_2369" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_2367_2368") + %"$m1_2370" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2370_2371" = bitcast %Map_String_String* %"$m1_2370" to i8* + %"$_mapsortcost_call_2372" = call i64 @_mapsortcost(i8* %"$$m1_2370_2371") + %"$gasadd_2373" = add i64 %"$_literal_cost_call_2369", %"$_mapsortcost_call_2372" + %"$gasrem_2374" = load i64, i64* @_gasrem + %"$gascmp_2375" = icmp ugt i64 %"$gasadd_2373", %"$gasrem_2374" + br i1 %"$gascmp_2375", label %"$out_of_gas_2376", label %"$have_gas_2377" + +"$out_of_gas_2376": ; preds = %"$have_gas_2360" + call void @_out_of_gas() + br label %"$have_gas_2377" + +"$have_gas_2377": ; preds = %"$out_of_gas_2376", %"$have_gas_2360" + %"$consume_2378" = sub i64 %"$gasrem_2374", %"$gasadd_2373" + store i64 %"$consume_2378", i64* @_gasrem + %"$gasrem_2379" = load i64, i64* @_gasrem + %"$gascmp_2380" = icmp ugt i64 1, %"$gasrem_2379" + br i1 %"$gascmp_2380", label %"$out_of_gas_2381", label %"$have_gas_2382" + +"$out_of_gas_2381": ; preds = %"$have_gas_2377" + call void @_out_of_gas() + br label %"$have_gas_2382" + +"$have_gas_2382": ; preds = %"$out_of_gas_2381", %"$have_gas_2377" + %"$consume_2383" = sub i64 %"$gasrem_2379", 1 + store i64 %"$consume_2383", i64* @_gasrem %c1 = alloca %TName_Option_String* - %"$execptr_load_947" = load i8*, i8** @_execptr - %"$m1_948" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_948_949" = bitcast %Map_String_String* %"$m1_948" to i8* - %"$get_key1a_950" = alloca %String - %"$key1a_951" = load %String, %String* %key1a - store %String %"$key1a_951", %String* %"$get_key1a_950" - %"$$get_key1a_950_952" = bitcast %String* %"$get_key1a_950" to i8* - %"$get_call_953" = call i8* @_get(i8* %"$execptr_load_947", %_TyDescrTy_Typ* @"$TyDescr_Map_73", i8* %"$$m1_948_949", i8* %"$$get_key1a_950_952") - %"$_get_954" = bitcast i8* %"$get_call_953" to %TName_Option_String* - store %TName_Option_String* %"$_get_954", %TName_Option_String** %c1 - %"$c1_956" = load %TName_Option_String*, %TName_Option_String** %c1 - %"$c1_tag_957" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$c1_956", i32 0, i32 0 - %"$c1_tag_958" = load i8, i8* %"$c1_tag_957" - switch i8 %"$c1_tag_958", label %"$empty_default_959" [ - i8 0, label %"$Some_960" - i8 1, label %"$None_982" + %"$execptr_load_2384" = load i8*, i8** @_execptr + %"$m1_2385" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2385_2386" = bitcast %Map_String_String* %"$m1_2385" to i8* + %"$get_key1a_2387" = alloca %String + %"$key1a_2388" = load %String, %String* %key1a + store %String %"$key1a_2388", %String* %"$get_key1a_2387" + %"$$get_key1a_2387_2389" = bitcast %String* %"$get_key1a_2387" to i8* + %"$get_call_2390" = call i8* @_get(i8* %"$execptr_load_2384", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_2385_2386", i8* %"$$get_key1a_2387_2389") + %"$_get_2391" = bitcast i8* %"$get_call_2390" to %TName_Option_String* + store %TName_Option_String* %"$_get_2391", %TName_Option_String** %c1 + %"$gasrem_2392" = load i64, i64* @_gasrem + %"$gascmp_2393" = icmp ugt i64 2, %"$gasrem_2392" + br i1 %"$gascmp_2393", label %"$out_of_gas_2394", label %"$have_gas_2395" + +"$out_of_gas_2394": ; preds = %"$have_gas_2382" + call void @_out_of_gas() + br label %"$have_gas_2395" + +"$have_gas_2395": ; preds = %"$out_of_gas_2394", %"$have_gas_2382" + %"$consume_2396" = sub i64 %"$gasrem_2392", 2 + store i64 %"$consume_2396", i64* @_gasrem + %"$c1_2398" = load %TName_Option_String*, %TName_Option_String** %c1 + %"$c1_tag_2399" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$c1_2398", i32 0, i32 0 + %"$c1_tag_2400" = load i8, i8* %"$c1_tag_2399" + switch i8 %"$c1_tag_2400", label %"$empty_default_2401" [ + i8 0, label %"$Some_2402" + i8 1, label %"$None_2459" ] -"$Some_960": ; preds = %entry - %"$c1_961" = bitcast %TName_Option_String* %"$c1_956" to %CName_Some_String* - %"$c_gep_962" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$c1_961", i32 0, i32 1 - %"$c_load_963" = load %String, %String* %"$c_gep_962" +"$Some_2402": ; preds = %"$have_gas_2395" + %"$c1_2403" = bitcast %TName_Option_String* %"$c1_2398" to %CName_Some_String* + %"$c_gep_2404" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$c1_2403", i32 0, i32 1 + %"$c_load_2405" = load %String, %String* %"$c_gep_2404" %c = alloca %String - store %String %"$c_load_963", %String* %c + store %String %"$c_load_2405", %String* %c + %"$gasrem_2406" = load i64, i64* @_gasrem + %"$gascmp_2407" = icmp ugt i64 1, %"$gasrem_2406" + br i1 %"$gascmp_2407", label %"$out_of_gas_2408", label %"$have_gas_2409" + +"$out_of_gas_2408": ; preds = %"$Some_2402" + call void @_out_of_gas() + br label %"$have_gas_2409" + +"$have_gas_2409": ; preds = %"$out_of_gas_2408", %"$Some_2402" + %"$consume_2410" = sub i64 %"$gasrem_2406", 1 + store i64 %"$consume_2410", i64* @_gasrem %v = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_964", i32 0, i32 0), i32 3 }, %String* %v + %"$gasrem_2411" = load i64, i64* @_gasrem + %"$gascmp_2412" = icmp ugt i64 1, %"$gasrem_2411" + br i1 %"$gascmp_2412", label %"$out_of_gas_2413", label %"$have_gas_2414" + +"$out_of_gas_2413": ; preds = %"$have_gas_2409" + call void @_out_of_gas() + br label %"$have_gas_2414" + +"$have_gas_2414": ; preds = %"$out_of_gas_2413", %"$have_gas_2409" + %"$consume_2415" = sub i64 %"$gasrem_2411", 1 + store i64 %"$consume_2415", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2416", i32 0, i32 0), i32 3 }, %String* %v + %"$gasrem_2417" = load i64, i64* @_gasrem + %"$gascmp_2418" = icmp ugt i64 1, %"$gasrem_2417" + br i1 %"$gascmp_2418", label %"$out_of_gas_2419", label %"$have_gas_2420" + +"$out_of_gas_2419": ; preds = %"$have_gas_2414" + call void @_out_of_gas() + br label %"$have_gas_2420" + +"$have_gas_2420": ; preds = %"$out_of_gas_2419", %"$have_gas_2414" + %"$consume_2421" = sub i64 %"$gasrem_2417", 1 + store i64 %"$consume_2421", i64* @_gasrem %eq = alloca %TName_Bool* - %"$execptr_load_965" = load i8*, i8** @_execptr - %"$c_966" = load %String, %String* %c - %"$v_967" = load %String, %String* %v - %"$eq_call_968" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_965", %String %"$c_966", %String %"$v_967") - store %TName_Bool* %"$eq_call_968", %TName_Bool** %eq - %"$eq_970" = load %TName_Bool*, %TName_Bool** %eq - %"$eq_tag_971" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_970", i32 0, i32 0 - %"$eq_tag_972" = load i8, i8* %"$eq_tag_971" - switch i8 %"$eq_tag_972", label %"$empty_default_973" [ - i8 0, label %"$True_974" - i8 1, label %"$False_976" + %"$execptr_load_2422" = load i8*, i8** @_execptr + %"$c_2423" = load %String, %String* %c + %"$v_2424" = load %String, %String* %v + %"$eq_call_2425" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_2422", %String %"$c_2423", %String %"$v_2424") + store %TName_Bool* %"$eq_call_2425", %TName_Bool** %eq + %"$gasrem_2426" = load i64, i64* @_gasrem + %"$gascmp_2427" = icmp ugt i64 2, %"$gasrem_2426" + br i1 %"$gascmp_2427", label %"$out_of_gas_2428", label %"$have_gas_2429" + +"$out_of_gas_2428": ; preds = %"$have_gas_2420" + call void @_out_of_gas() + br label %"$have_gas_2429" + +"$have_gas_2429": ; preds = %"$out_of_gas_2428", %"$have_gas_2420" + %"$consume_2430" = sub i64 %"$gasrem_2426", 2 + store i64 %"$consume_2430", i64* @_gasrem + %"$eq_2432" = load %TName_Bool*, %TName_Bool** %eq + %"$eq_tag_2433" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_2432", i32 0, i32 0 + %"$eq_tag_2434" = load i8, i8* %"$eq_tag_2433" + switch i8 %"$eq_tag_2434", label %"$empty_default_2435" [ + i8 0, label %"$True_2436" + i8 1, label %"$False_2438" ] -"$True_974": ; preds = %"$Some_960" - %"$eq_975" = bitcast %TName_Bool* %"$eq_970" to %CName_True* - br label %"$matchsucc_969" +"$True_2436": ; preds = %"$have_gas_2429" + %"$eq_2437" = bitcast %TName_Bool* %"$eq_2432" to %CName_True* + br label %"$matchsucc_2431" + +"$False_2438": ; preds = %"$have_gas_2429" + %"$eq_2439" = bitcast %TName_Bool* %"$eq_2432" to %CName_False* + %"$gasrem_2440" = load i64, i64* @_gasrem + %"$gascmp_2441" = icmp ugt i64 1, %"$gasrem_2440" + br i1 %"$gascmp_2441", label %"$out_of_gas_2442", label %"$have_gas_2443" -"$False_976": ; preds = %"$Some_960" - %"$eq_977" = bitcast %TName_Bool* %"$eq_970" to %CName_False* +"$out_of_gas_2442": ; preds = %"$False_2438" + call void @_out_of_gas() + br label %"$have_gas_2443" + +"$have_gas_2443": ; preds = %"$out_of_gas_2442", %"$False_2438" + %"$consume_2444" = sub i64 %"$gasrem_2440", 1 + store i64 %"$consume_2444", i64* @_gasrem %m = alloca %String - store %String { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @"$stringlit_978", i32 0, i32 0), i32 25 }, %String* %m - %"$fail_msg__sender_979" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_979" - %"$tname_980" = load %String, %String* %tname - %"$m_981" = load %String, %String* %m - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_979", %String %"$tname_980", %String %"$m_981") - br label %"$matchsucc_969" - -"$empty_default_973": ; preds = %"$Some_960" - br label %"$matchsucc_969" - -"$matchsucc_969": ; preds = %"$False_976", %"$True_974", %"$empty_default_973" - br label %"$matchsucc_955" - -"$None_982": ; preds = %entry - %"$c1_983" = bitcast %TName_Option_String* %"$c1_956" to %CName_None_String* + %"$gasrem_2445" = load i64, i64* @_gasrem + %"$gascmp_2446" = icmp ugt i64 1, %"$gasrem_2445" + br i1 %"$gascmp_2446", label %"$out_of_gas_2447", label %"$have_gas_2448" + +"$out_of_gas_2447": ; preds = %"$have_gas_2443" + call void @_out_of_gas() + br label %"$have_gas_2448" + +"$have_gas_2448": ; preds = %"$out_of_gas_2447", %"$have_gas_2443" + %"$consume_2449" = sub i64 %"$gasrem_2445", 1 + store i64 %"$consume_2449", i64* @_gasrem + store %String { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @"$stringlit_2450", i32 0, i32 0), i32 25 }, %String* %m + %"$gasrem_2451" = load i64, i64* @_gasrem + %"$gascmp_2452" = icmp ugt i64 1, %"$gasrem_2451" + br i1 %"$gascmp_2452", label %"$out_of_gas_2453", label %"$have_gas_2454" + +"$out_of_gas_2453": ; preds = %"$have_gas_2448" + call void @_out_of_gas() + br label %"$have_gas_2454" + +"$have_gas_2454": ; preds = %"$out_of_gas_2453", %"$have_gas_2448" + %"$consume_2455" = sub i64 %"$gasrem_2451", 1 + store i64 %"$consume_2455", i64* @_gasrem + %"$fail_msg__sender_2456" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2456" + %"$tname_2457" = load %String, %String* %tname + %"$m_2458" = load %String, %String* %m + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2456", %String %"$tname_2457", %String %"$m_2458") + br label %"$matchsucc_2431" + +"$empty_default_2435": ; preds = %"$have_gas_2429" + br label %"$matchsucc_2431" + +"$matchsucc_2431": ; preds = %"$have_gas_2454", %"$True_2436", %"$empty_default_2435" + br label %"$matchsucc_2397" + +"$None_2459": ; preds = %"$have_gas_2395" + %"$c1_2460" = bitcast %TName_Option_String* %"$c1_2398" to %CName_None_String* + %"$gasrem_2461" = load i64, i64* @_gasrem + %"$gascmp_2462" = icmp ugt i64 1, %"$gasrem_2461" + br i1 %"$gascmp_2462", label %"$out_of_gas_2463", label %"$have_gas_2464" + +"$out_of_gas_2463": ; preds = %"$None_2459" + call void @_out_of_gas() + br label %"$have_gas_2464" + +"$have_gas_2464": ; preds = %"$out_of_gas_2463", %"$None_2459" + %"$consume_2465" = sub i64 %"$gasrem_2461", 1 + store i64 %"$consume_2465", i64* @_gasrem %m2 = alloca %String - store %String { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stringlit_984", i32 0, i32 0), i32 15 }, %String* %m2 - %"$fail_msg__sender_985" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_985" - %"$tname_986" = load %String, %String* %tname - %"$m_987" = load %String, %String* %m2 - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_985", %String %"$tname_986", %String %"$m_987") - br label %"$matchsucc_955" - -"$empty_default_959": ; preds = %entry - br label %"$matchsucc_955" - -"$matchsucc_955": ; preds = %"$None_982", %"$matchsucc_969", %"$empty_default_959" - %"$indices_buf_988_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_988_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_988_salloc_load", i64 16) - %"$indices_buf_988_salloc" = bitcast i8* %"$indices_buf_988_salloc_salloc" to [16 x i8]* - %"$indices_buf_988" = bitcast [16 x i8]* %"$indices_buf_988_salloc" to i8* - %"$key1a_989" = load %String, %String* %key1a - %"$indices_gep_990" = getelementptr i8, i8* %"$indices_buf_988", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_990" to %String* - store %String %"$key1a_989", %String* %indices_cast - %"$execptr_load_991" = load i8*, i8** @_execptr - call void @_update_field(i8* %"$execptr_load_991", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_992", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_73", i32 1, i8* %"$indices_buf_988", i8* null) + %"$gasrem_2466" = load i64, i64* @_gasrem + %"$gascmp_2467" = icmp ugt i64 1, %"$gasrem_2466" + br i1 %"$gascmp_2467", label %"$out_of_gas_2468", label %"$have_gas_2469" + +"$out_of_gas_2468": ; preds = %"$have_gas_2464" + call void @_out_of_gas() + br label %"$have_gas_2469" + +"$have_gas_2469": ; preds = %"$out_of_gas_2468", %"$have_gas_2464" + %"$consume_2470" = sub i64 %"$gasrem_2466", 1 + store i64 %"$consume_2470", i64* @_gasrem + store %String { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stringlit_2471", i32 0, i32 0), i32 15 }, %String* %m2 + %"$gasrem_2472" = load i64, i64* @_gasrem + %"$gascmp_2473" = icmp ugt i64 1, %"$gasrem_2472" + br i1 %"$gascmp_2473", label %"$out_of_gas_2474", label %"$have_gas_2475" + +"$out_of_gas_2474": ; preds = %"$have_gas_2469" + call void @_out_of_gas() + br label %"$have_gas_2475" + +"$have_gas_2475": ; preds = %"$out_of_gas_2474", %"$have_gas_2469" + %"$consume_2476" = sub i64 %"$gasrem_2472", 1 + store i64 %"$consume_2476", i64* @_gasrem + %"$fail_msg__sender_2477" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2477" + %"$tname_2478" = load %String, %String* %tname + %"$m_2479" = load %String, %String* %m2 + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2477", %String %"$tname_2478", %String %"$m_2479") + br label %"$matchsucc_2397" + +"$empty_default_2401": ; preds = %"$have_gas_2395" + br label %"$matchsucc_2397" + +"$matchsucc_2397": ; preds = %"$have_gas_2475", %"$matchsucc_2431", %"$empty_default_2401" + %"$gasrem_2480" = load i64, i64* @_gasrem + %"$gascmp_2481" = icmp ugt i64 1, %"$gasrem_2480" + br i1 %"$gascmp_2481", label %"$out_of_gas_2482", label %"$have_gas_2483" + +"$out_of_gas_2482": ; preds = %"$matchsucc_2397" + call void @_out_of_gas() + br label %"$have_gas_2483" + +"$have_gas_2483": ; preds = %"$out_of_gas_2482", %"$matchsucc_2397" + %"$consume_2484" = sub i64 %"$gasrem_2480", 1 + store i64 %"$consume_2484", i64* @_gasrem + %"$indices_buf_2485_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_2485_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2485_salloc_load", i64 16) + %"$indices_buf_2485_salloc" = bitcast i8* %"$indices_buf_2485_salloc_salloc" to [16 x i8]* + %"$indices_buf_2485" = bitcast [16 x i8]* %"$indices_buf_2485_salloc" to i8* + %"$key1a_2486" = load %String, %String* %key1a + %"$indices_gep_2487" = getelementptr i8, i8* %"$indices_buf_2485", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_2487" to %String* + store %String %"$key1a_2486", %String* %indices_cast + %"$execptr_load_2488" = load i8*, i8** @_execptr + call void @_update_field(i8* %"$execptr_load_2488", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_2489", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_2485", i8* null) ret void } @@ -2008,1247 +5174,3650 @@ declare i8* @_get(i8*, %_TyDescrTy_Typ*, i8*, i8*) define void @t10(i8* %0) { entry: - %"$_amount_994" = getelementptr i8, i8* %0, i32 0 - %"$_amount_995" = bitcast i8* %"$_amount_994" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_995" - %"$_sender_996" = getelementptr i8, i8* %0, i32 16 - %"$_sender_997" = bitcast i8* %"$_sender_996" to [20 x i8]* - call void @"$t10_939"(%Uint128 %_amount, [20 x i8]* %"$_sender_997") + %"$_amount_2491" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2492" = bitcast i8* %"$_amount_2491" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2492" + %"$_sender_2493" = getelementptr i8, i8* %0, i32 16 + %"$_sender_2494" = bitcast i8* %"$_sender_2493" to [20 x i8]* + call void @"$t10_2339"(%Uint128 %_amount, [20 x i8]* %"$_sender_2494") ret void } -define internal void @"$t11_998"(%Uint128 %_amount, [20 x i8]* %"$_sender_999") { +define internal void @"$t11_2495"(%Uint128 %_amount, [20 x i8]* %"$_sender_2496") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_999" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2496" + %"$gasrem_2497" = load i64, i64* @_gasrem + %"$gascmp_2498" = icmp ugt i64 1, %"$gasrem_2497" + br i1 %"$gascmp_2498", label %"$out_of_gas_2499", label %"$have_gas_2500" + +"$out_of_gas_2499": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2500" + +"$have_gas_2500": ; preds = %"$out_of_gas_2499", %entry + %"$consume_2501" = sub i64 %"$gasrem_2497", 1 + store i64 %"$consume_2501", i64* @_gasrem %tname = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1000", i32 0, i32 0), i32 3 }, %String* %tname + %"$gasrem_2502" = load i64, i64* @_gasrem + %"$gascmp_2503" = icmp ugt i64 1, %"$gasrem_2502" + br i1 %"$gascmp_2503", label %"$out_of_gas_2504", label %"$have_gas_2505" + +"$out_of_gas_2504": ; preds = %"$have_gas_2500" + call void @_out_of_gas() + br label %"$have_gas_2505" + +"$have_gas_2505": ; preds = %"$out_of_gas_2504", %"$have_gas_2500" + %"$consume_2506" = sub i64 %"$gasrem_2502", 1 + store i64 %"$consume_2506", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2507", i32 0, i32 0), i32 3 }, %String* %tname %m1 = alloca %Map_String_String* - %"$execptr_load_1001" = load i8*, i8** @_execptr - %"$m1_1003" = call i8* @_fetch_field(i8* %"$execptr_load_1001", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_1002", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_73", i32 0, i8* null, i32 1) - %"$m1_1004" = bitcast i8* %"$m1_1003" to %Map_String_String* - store %Map_String_String* %"$m1_1004", %Map_String_String** %m1 + %"$execptr_load_2508" = load i8*, i8** @_execptr + %"$m1_2510" = call i8* @_fetch_field(i8* %"$execptr_load_2508", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_2509", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i32 1) + %"$m1_2511" = bitcast i8* %"$m1_2510" to %Map_String_String* + store %Map_String_String* %"$m1_2511", %Map_String_String** %m1 + %"$m1_2512" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2512_2513" = bitcast %Map_String_String* %"$m1_2512" to i8* + %"$_literal_cost_call_2514" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_2512_2513") + %"$m1_2515" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2515_2516" = bitcast %Map_String_String* %"$m1_2515" to i8* + %"$_mapsortcost_call_2517" = call i64 @_mapsortcost(i8* %"$$m1_2515_2516") + %"$gasadd_2518" = add i64 %"$_literal_cost_call_2514", %"$_mapsortcost_call_2517" + %"$gasrem_2519" = load i64, i64* @_gasrem + %"$gascmp_2520" = icmp ugt i64 %"$gasadd_2518", %"$gasrem_2519" + br i1 %"$gascmp_2520", label %"$out_of_gas_2521", label %"$have_gas_2522" + +"$out_of_gas_2521": ; preds = %"$have_gas_2505" + call void @_out_of_gas() + br label %"$have_gas_2522" + +"$have_gas_2522": ; preds = %"$out_of_gas_2521", %"$have_gas_2505" + %"$consume_2523" = sub i64 %"$gasrem_2519", %"$gasadd_2518" + store i64 %"$consume_2523", i64* @_gasrem + %"$gasrem_2524" = load i64, i64* @_gasrem + %"$gascmp_2525" = icmp ugt i64 1, %"$gasrem_2524" + br i1 %"$gascmp_2525", label %"$out_of_gas_2526", label %"$have_gas_2527" + +"$out_of_gas_2526": ; preds = %"$have_gas_2522" + call void @_out_of_gas() + br label %"$have_gas_2527" + +"$have_gas_2527": ; preds = %"$out_of_gas_2526", %"$have_gas_2522" + %"$consume_2528" = sub i64 %"$gasrem_2524", 1 + store i64 %"$consume_2528", i64* @_gasrem %m1_size = alloca %Uint32 - %"$m1_1005" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_1005_1006" = bitcast %Map_String_String* %"$m1_1005" to i8* - %"$size_call_1007" = call %Uint32 @_size(i8* %"$$m1_1005_1006") - store %Uint32 %"$size_call_1007", %Uint32* %m1_size + %"$m1_2529" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2529_2530" = bitcast %Map_String_String* %"$m1_2529" to i8* + %"$size_call_2531" = call %Uint32 @_size(i8* %"$$m1_2529_2530") + store %Uint32 %"$size_call_2531", %Uint32* %m1_size + %"$gasrem_2532" = load i64, i64* @_gasrem + %"$gascmp_2533" = icmp ugt i64 1, %"$gasrem_2532" + br i1 %"$gascmp_2533", label %"$out_of_gas_2534", label %"$have_gas_2535" + +"$out_of_gas_2534": ; preds = %"$have_gas_2527" + call void @_out_of_gas() + br label %"$have_gas_2535" + +"$have_gas_2535": ; preds = %"$out_of_gas_2534", %"$have_gas_2527" + %"$consume_2536" = sub i64 %"$gasrem_2532", 1 + store i64 %"$consume_2536", i64* @_gasrem %zero = alloca %Uint32 - store %Uint32 zeroinitializer, %Uint32* %zero - %is_empty = alloca %TName_Bool* - %"$execptr_load_1008" = load i8*, i8** @_execptr - %"$m1_size_1009" = load %Uint32, %Uint32* %m1_size - %"$zero_1010" = load %Uint32, %Uint32* %zero - %"$eq_call_1011" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_1008", %Uint32 %"$m1_size_1009", %Uint32 %"$zero_1010") - store %TName_Bool* %"$eq_call_1011", %TName_Bool** %is_empty - %"$is_empty_1013" = load %TName_Bool*, %TName_Bool** %is_empty - %"$is_empty_tag_1014" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_1013", i32 0, i32 0 - %"$is_empty_tag_1015" = load i8, i8* %"$is_empty_tag_1014" - switch i8 %"$is_empty_tag_1015", label %"$empty_default_1016" [ - i8 0, label %"$True_1017" - i8 1, label %"$False_1019" - ] + %"$gasrem_2537" = load i64, i64* @_gasrem + %"$gascmp_2538" = icmp ugt i64 1, %"$gasrem_2537" + br i1 %"$gascmp_2538", label %"$out_of_gas_2539", label %"$have_gas_2540" -"$True_1017": ; preds = %entry - %"$is_empty_1018" = bitcast %TName_Bool* %"$is_empty_1013" to %CName_True* - br label %"$matchsucc_1012" +"$out_of_gas_2539": ; preds = %"$have_gas_2535" + call void @_out_of_gas() + br label %"$have_gas_2540" -"$False_1019": ; preds = %entry - %"$is_empty_1020" = bitcast %TName_Bool* %"$is_empty_1013" to %CName_False* - %"$fail__sender_1021" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_1021" - %"$tname_1022" = load %String, %String* %tname - call void @"$fail_179"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_1021", %String %"$tname_1022") - br label %"$matchsucc_1012" +"$have_gas_2540": ; preds = %"$out_of_gas_2539", %"$have_gas_2535" + %"$consume_2541" = sub i64 %"$gasrem_2537", 1 + store i64 %"$consume_2541", i64* @_gasrem + store %Uint32 zeroinitializer, %Uint32* %zero + %"$gasrem_2542" = load i64, i64* @_gasrem + %"$gascmp_2543" = icmp ugt i64 1, %"$gasrem_2542" + br i1 %"$gascmp_2543", label %"$out_of_gas_2544", label %"$have_gas_2545" -"$empty_default_1016": ; preds = %entry - br label %"$matchsucc_1012" +"$out_of_gas_2544": ; preds = %"$have_gas_2540" + call void @_out_of_gas() + br label %"$have_gas_2545" + +"$have_gas_2545": ; preds = %"$out_of_gas_2544", %"$have_gas_2540" + %"$consume_2546" = sub i64 %"$gasrem_2542", 1 + store i64 %"$consume_2546", i64* @_gasrem + %is_empty = alloca %TName_Bool* + %"$execptr_load_2547" = load i8*, i8** @_execptr + %"$m1_size_2548" = load %Uint32, %Uint32* %m1_size + %"$zero_2549" = load %Uint32, %Uint32* %zero + %"$eq_call_2550" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_2547", %Uint32 %"$m1_size_2548", %Uint32 %"$zero_2549") + store %TName_Bool* %"$eq_call_2550", %TName_Bool** %is_empty + %"$gasrem_2551" = load i64, i64* @_gasrem + %"$gascmp_2552" = icmp ugt i64 2, %"$gasrem_2551" + br i1 %"$gascmp_2552", label %"$out_of_gas_2553", label %"$have_gas_2554" + +"$out_of_gas_2553": ; preds = %"$have_gas_2545" + call void @_out_of_gas() + br label %"$have_gas_2554" + +"$have_gas_2554": ; preds = %"$out_of_gas_2553", %"$have_gas_2545" + %"$consume_2555" = sub i64 %"$gasrem_2551", 2 + store i64 %"$consume_2555", i64* @_gasrem + %"$is_empty_2557" = load %TName_Bool*, %TName_Bool** %is_empty + %"$is_empty_tag_2558" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_2557", i32 0, i32 0 + %"$is_empty_tag_2559" = load i8, i8* %"$is_empty_tag_2558" + switch i8 %"$is_empty_tag_2559", label %"$empty_default_2560" [ + i8 0, label %"$True_2561" + i8 1, label %"$False_2563" + ] -"$matchsucc_1012": ; preds = %"$False_1019", %"$True_1017", %"$empty_default_1016" +"$True_2561": ; preds = %"$have_gas_2554" + %"$is_empty_2562" = bitcast %TName_Bool* %"$is_empty_2557" to %CName_True* + br label %"$matchsucc_2556" + +"$False_2563": ; preds = %"$have_gas_2554" + %"$is_empty_2564" = bitcast %TName_Bool* %"$is_empty_2557" to %CName_False* + %"$gasrem_2565" = load i64, i64* @_gasrem + %"$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 = %"$False_2563" + call void @_out_of_gas() + br label %"$have_gas_2568" + +"$have_gas_2568": ; preds = %"$out_of_gas_2567", %"$False_2563" + %"$consume_2569" = sub i64 %"$gasrem_2565", 1 + store i64 %"$consume_2569", i64* @_gasrem + %"$fail__sender_2570" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_2570" + %"$tname_2571" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_2570", %String %"$tname_2571") + br label %"$matchsucc_2556" + +"$empty_default_2560": ; preds = %"$have_gas_2554" + br label %"$matchsucc_2556" + +"$matchsucc_2556": ; preds = %"$have_gas_2568", %"$True_2561", %"$empty_default_2560" + %"$gasrem_2572" = load i64, i64* @_gasrem + %"$gascmp_2573" = icmp ugt i64 1, %"$gasrem_2572" + br i1 %"$gascmp_2573", label %"$out_of_gas_2574", label %"$have_gas_2575" + +"$out_of_gas_2574": ; preds = %"$matchsucc_2556" + call void @_out_of_gas() + br label %"$have_gas_2575" + +"$have_gas_2575": ; preds = %"$out_of_gas_2574", %"$matchsucc_2556" + %"$consume_2576" = sub i64 %"$gasrem_2572", 1 + store i64 %"$consume_2576", i64* @_gasrem %e2 = alloca %"Map_String_Map_(String)_(String)"* - %"$execptr_load_1023" = load i8*, i8** @_execptr - %"$_new_empty_map_call_1024" = call i8* @_new_empty_map(i8* %"$execptr_load_1023") - %"$Emp_1025" = bitcast i8* %"$_new_empty_map_call_1024" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$Emp_1025", %"Map_String_Map_(String)_(String)"** %e2 - %"$execptr_load_1026" = load i8*, i8** @_execptr - %"$e2_1028" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %e2 - %"$update_value_1029" = bitcast %"Map_String_Map_(String)_(String)"* %"$e2_1028" to i8* - call void @_update_field(i8* %"$execptr_load_1026", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1027", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i8* %"$update_value_1029") + %"$gasrem_2577" = load i64, i64* @_gasrem + %"$gascmp_2578" = icmp ugt i64 1, %"$gasrem_2577" + br i1 %"$gascmp_2578", label %"$out_of_gas_2579", label %"$have_gas_2580" + +"$out_of_gas_2579": ; preds = %"$have_gas_2575" + call void @_out_of_gas() + br label %"$have_gas_2580" + +"$have_gas_2580": ; preds = %"$out_of_gas_2579", %"$have_gas_2575" + %"$consume_2581" = sub i64 %"$gasrem_2577", 1 + store i64 %"$consume_2581", i64* @_gasrem + %"$execptr_load_2582" = load i8*, i8** @_execptr + %"$_new_empty_map_call_2583" = call i8* @_new_empty_map(i8* %"$execptr_load_2582") + %"$Emp_2584" = bitcast i8* %"$_new_empty_map_call_2583" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$Emp_2584", %"Map_String_Map_(String)_(String)"** %e2 + %"$e2_2585" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %e2 + %"$$e2_2585_2586" = bitcast %"Map_String_Map_(String)_(String)"* %"$e2_2585" to i8* + %"$_literal_cost_call_2587" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$e2_2585_2586") + %"$gasrem_2588" = load i64, i64* @_gasrem + %"$gascmp_2589" = icmp ugt i64 %"$_literal_cost_call_2587", %"$gasrem_2588" + br i1 %"$gascmp_2589", label %"$out_of_gas_2590", label %"$have_gas_2591" + +"$out_of_gas_2590": ; preds = %"$have_gas_2580" + call void @_out_of_gas() + br label %"$have_gas_2591" + +"$have_gas_2591": ; preds = %"$out_of_gas_2590", %"$have_gas_2580" + %"$consume_2592" = sub i64 %"$gasrem_2588", %"$_literal_cost_call_2587" + store i64 %"$consume_2592", i64* @_gasrem + %"$execptr_load_2593" = load i8*, i8** @_execptr + %"$e2_2595" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %e2 + %"$update_value_2596" = bitcast %"Map_String_Map_(String)_(String)"* %"$e2_2595" to i8* + call void @_update_field(i8* %"$execptr_load_2593", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_2594", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 0, i8* null, i8* %"$update_value_2596") ret void } define void @t11(i8* %0) { entry: - %"$_amount_1031" = getelementptr i8, i8* %0, i32 0 - %"$_amount_1032" = bitcast i8* %"$_amount_1031" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_1032" - %"$_sender_1033" = getelementptr i8, i8* %0, i32 16 - %"$_sender_1034" = bitcast i8* %"$_sender_1033" to [20 x i8]* - call void @"$t11_998"(%Uint128 %_amount, [20 x i8]* %"$_sender_1034") + %"$_amount_2598" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2599" = bitcast i8* %"$_amount_2598" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2599" + %"$_sender_2600" = getelementptr i8, i8* %0, i32 16 + %"$_sender_2601" = bitcast i8* %"$_sender_2600" to [20 x i8]* + call void @"$t11_2495"(%Uint128 %_amount, [20 x i8]* %"$_sender_2601") ret void } -define internal void @"$t12_1035"(%Uint128 %_amount, [20 x i8]* %"$_sender_1036") { +define internal void @"$t12_2602"(%Uint128 %_amount, [20 x i8]* %"$_sender_2603") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_1036" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2603" + %"$gasrem_2604" = load i64, i64* @_gasrem + %"$gascmp_2605" = icmp ugt i64 1, %"$gasrem_2604" + br i1 %"$gascmp_2605", label %"$out_of_gas_2606", label %"$have_gas_2607" + +"$out_of_gas_2606": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2607" + +"$have_gas_2607": ; preds = %"$out_of_gas_2606", %entry + %"$consume_2608" = sub i64 %"$gasrem_2604", 1 + store i64 %"$consume_2608", i64* @_gasrem %tname = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1037", i32 0, i32 0), i32 3 }, %String* %tname + %"$gasrem_2609" = load i64, i64* @_gasrem + %"$gascmp_2610" = icmp ugt i64 1, %"$gasrem_2609" + br i1 %"$gascmp_2610", label %"$out_of_gas_2611", label %"$have_gas_2612" + +"$out_of_gas_2611": ; preds = %"$have_gas_2607" + call void @_out_of_gas() + br label %"$have_gas_2612" + +"$have_gas_2612": ; preds = %"$out_of_gas_2611", %"$have_gas_2607" + %"$consume_2613" = sub i64 %"$gasrem_2609", 1 + store i64 %"$consume_2613", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2614", i32 0, i32 0), i32 3 }, %String* %tname %m2 = alloca %"Map_String_Map_(String)_(String)"* - %"$execptr_load_1038" = load i8*, i8** @_execptr - %"$m2_1040" = call i8* @_fetch_field(i8* %"$execptr_load_1038", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1039", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i32 1) - %"$m2_1041" = bitcast i8* %"$m2_1040" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$m2_1041", %"Map_String_Map_(String)_(String)"** %m2 + %"$execptr_load_2615" = load i8*, i8** @_execptr + %"$m2_2617" = call i8* @_fetch_field(i8* %"$execptr_load_2615", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_2616", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 0, i8* null, i32 1) + %"$m2_2618" = bitcast i8* %"$m2_2617" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$m2_2618", %"Map_String_Map_(String)_(String)"** %m2 + %"$m2_2619" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 + %"$$m2_2619_2620" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_2619" to i8* + %"$_literal_cost_call_2621" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m2_2619_2620") + %"$m2_2622" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 + %"$$m2_2622_2623" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_2622" to i8* + %"$_mapsortcost_call_2624" = call i64 @_mapsortcost(i8* %"$$m2_2622_2623") + %"$gasadd_2625" = add i64 %"$_literal_cost_call_2621", %"$_mapsortcost_call_2624" + %"$gasrem_2626" = load i64, i64* @_gasrem + %"$gascmp_2627" = icmp ugt i64 %"$gasadd_2625", %"$gasrem_2626" + br i1 %"$gascmp_2627", label %"$out_of_gas_2628", label %"$have_gas_2629" + +"$out_of_gas_2628": ; preds = %"$have_gas_2612" + call void @_out_of_gas() + br label %"$have_gas_2629" + +"$have_gas_2629": ; preds = %"$out_of_gas_2628", %"$have_gas_2612" + %"$consume_2630" = sub i64 %"$gasrem_2626", %"$gasadd_2625" + store i64 %"$consume_2630", i64* @_gasrem + %"$gasrem_2631" = load i64, i64* @_gasrem + %"$gascmp_2632" = icmp ugt i64 1, %"$gasrem_2631" + br i1 %"$gascmp_2632", label %"$out_of_gas_2633", label %"$have_gas_2634" + +"$out_of_gas_2633": ; preds = %"$have_gas_2629" + call void @_out_of_gas() + br label %"$have_gas_2634" + +"$have_gas_2634": ; preds = %"$out_of_gas_2633", %"$have_gas_2629" + %"$consume_2635" = sub i64 %"$gasrem_2631", 1 + store i64 %"$consume_2635", i64* @_gasrem %m2_size = alloca %Uint32 - %"$m2_1042" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 - %"$$m2_1042_1043" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_1042" to i8* - %"$size_call_1044" = call %Uint32 @_size(i8* %"$$m2_1042_1043") - store %Uint32 %"$size_call_1044", %Uint32* %m2_size + %"$m2_2636" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 + %"$$m2_2636_2637" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_2636" to i8* + %"$size_call_2638" = call %Uint32 @_size(i8* %"$$m2_2636_2637") + store %Uint32 %"$size_call_2638", %Uint32* %m2_size + %"$gasrem_2639" = load i64, i64* @_gasrem + %"$gascmp_2640" = icmp ugt i64 1, %"$gasrem_2639" + br i1 %"$gascmp_2640", label %"$out_of_gas_2641", label %"$have_gas_2642" + +"$out_of_gas_2641": ; preds = %"$have_gas_2634" + call void @_out_of_gas() + br label %"$have_gas_2642" + +"$have_gas_2642": ; preds = %"$out_of_gas_2641", %"$have_gas_2634" + %"$consume_2643" = sub i64 %"$gasrem_2639", 1 + store i64 %"$consume_2643", i64* @_gasrem %zero = alloca %Uint32 - store %Uint32 zeroinitializer, %Uint32* %zero - %is_empty = alloca %TName_Bool* - %"$execptr_load_1045" = load i8*, i8** @_execptr - %"$m2_size_1046" = load %Uint32, %Uint32* %m2_size - %"$zero_1047" = load %Uint32, %Uint32* %zero - %"$eq_call_1048" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_1045", %Uint32 %"$m2_size_1046", %Uint32 %"$zero_1047") - store %TName_Bool* %"$eq_call_1048", %TName_Bool** %is_empty - %"$is_empty_1050" = load %TName_Bool*, %TName_Bool** %is_empty - %"$is_empty_tag_1051" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_1050", i32 0, i32 0 - %"$is_empty_tag_1052" = load i8, i8* %"$is_empty_tag_1051" - switch i8 %"$is_empty_tag_1052", label %"$empty_default_1053" [ - i8 0, label %"$True_1054" - i8 1, label %"$False_1056" - ] + %"$gasrem_2644" = load i64, i64* @_gasrem + %"$gascmp_2645" = icmp ugt i64 1, %"$gasrem_2644" + br i1 %"$gascmp_2645", label %"$out_of_gas_2646", label %"$have_gas_2647" -"$True_1054": ; preds = %entry - %"$is_empty_1055" = bitcast %TName_Bool* %"$is_empty_1050" to %CName_True* - br label %"$matchsucc_1049" +"$out_of_gas_2646": ; preds = %"$have_gas_2642" + call void @_out_of_gas() + br label %"$have_gas_2647" -"$False_1056": ; preds = %entry - %"$is_empty_1057" = bitcast %TName_Bool* %"$is_empty_1050" to %CName_False* - %"$fail__sender_1058" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_1058" - %"$tname_1059" = load %String, %String* %tname - call void @"$fail_179"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_1058", %String %"$tname_1059") - br label %"$matchsucc_1049" +"$have_gas_2647": ; preds = %"$out_of_gas_2646", %"$have_gas_2642" + %"$consume_2648" = sub i64 %"$gasrem_2644", 1 + store i64 %"$consume_2648", i64* @_gasrem + store %Uint32 zeroinitializer, %Uint32* %zero + %"$gasrem_2649" = load i64, i64* @_gasrem + %"$gascmp_2650" = icmp ugt i64 1, %"$gasrem_2649" + br i1 %"$gascmp_2650", label %"$out_of_gas_2651", label %"$have_gas_2652" -"$empty_default_1053": ; preds = %entry - br label %"$matchsucc_1049" +"$out_of_gas_2651": ; preds = %"$have_gas_2647" + call void @_out_of_gas() + br label %"$have_gas_2652" -"$matchsucc_1049": ; preds = %"$False_1056", %"$True_1054", %"$empty_default_1053" +"$have_gas_2652": ; preds = %"$out_of_gas_2651", %"$have_gas_2647" + %"$consume_2653" = sub i64 %"$gasrem_2649", 1 + store i64 %"$consume_2653", i64* @_gasrem + %is_empty = alloca %TName_Bool* + %"$execptr_load_2654" = load i8*, i8** @_execptr + %"$m2_size_2655" = load %Uint32, %Uint32* %m2_size + %"$zero_2656" = load %Uint32, %Uint32* %zero + %"$eq_call_2657" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_2654", %Uint32 %"$m2_size_2655", %Uint32 %"$zero_2656") + store %TName_Bool* %"$eq_call_2657", %TName_Bool** %is_empty + %"$gasrem_2658" = load i64, i64* @_gasrem + %"$gascmp_2659" = icmp ugt i64 2, %"$gasrem_2658" + br i1 %"$gascmp_2659", label %"$out_of_gas_2660", label %"$have_gas_2661" + +"$out_of_gas_2660": ; preds = %"$have_gas_2652" + call void @_out_of_gas() + br label %"$have_gas_2661" + +"$have_gas_2661": ; preds = %"$out_of_gas_2660", %"$have_gas_2652" + %"$consume_2662" = sub i64 %"$gasrem_2658", 2 + store i64 %"$consume_2662", i64* @_gasrem + %"$is_empty_2664" = load %TName_Bool*, %TName_Bool** %is_empty + %"$is_empty_tag_2665" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_2664", i32 0, i32 0 + %"$is_empty_tag_2666" = load i8, i8* %"$is_empty_tag_2665" + switch i8 %"$is_empty_tag_2666", label %"$empty_default_2667" [ + i8 0, label %"$True_2668" + i8 1, label %"$False_2670" + ] + +"$True_2668": ; preds = %"$have_gas_2661" + %"$is_empty_2669" = bitcast %TName_Bool* %"$is_empty_2664" to %CName_True* + br label %"$matchsucc_2663" + +"$False_2670": ; preds = %"$have_gas_2661" + %"$is_empty_2671" = bitcast %TName_Bool* %"$is_empty_2664" to %CName_False* + %"$gasrem_2672" = load i64, i64* @_gasrem + %"$gascmp_2673" = icmp ugt i64 1, %"$gasrem_2672" + br i1 %"$gascmp_2673", label %"$out_of_gas_2674", label %"$have_gas_2675" + +"$out_of_gas_2674": ; preds = %"$False_2670" + call void @_out_of_gas() + br label %"$have_gas_2675" + +"$have_gas_2675": ; preds = %"$out_of_gas_2674", %"$False_2670" + %"$consume_2676" = sub i64 %"$gasrem_2672", 1 + store i64 %"$consume_2676", i64* @_gasrem + %"$fail__sender_2677" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_2677" + %"$tname_2678" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_2677", %String %"$tname_2678") + br label %"$matchsucc_2663" + +"$empty_default_2667": ; preds = %"$have_gas_2661" + br label %"$matchsucc_2663" + +"$matchsucc_2663": ; preds = %"$have_gas_2675", %"$True_2668", %"$empty_default_2667" + %"$gasrem_2679" = load i64, i64* @_gasrem + %"$gascmp_2680" = icmp ugt i64 1, %"$gasrem_2679" + br i1 %"$gascmp_2680", label %"$out_of_gas_2681", label %"$have_gas_2682" + +"$out_of_gas_2681": ; preds = %"$matchsucc_2663" + call void @_out_of_gas() + br label %"$have_gas_2682" + +"$have_gas_2682": ; preds = %"$out_of_gas_2681", %"$matchsucc_2663" + %"$consume_2683" = sub i64 %"$gasrem_2679", 1 + store i64 %"$consume_2683", i64* @_gasrem %e1 = alloca %Map_String_String* - %"$execptr_load_1060" = load i8*, i8** @_execptr - %"$_new_empty_map_call_1061" = call i8* @_new_empty_map(i8* %"$execptr_load_1060") - %"$Emp_1062" = bitcast i8* %"$_new_empty_map_call_1061" to %Map_String_String* - store %Map_String_String* %"$Emp_1062", %Map_String_String** %e1 + %"$gasrem_2684" = load i64, i64* @_gasrem + %"$gascmp_2685" = icmp ugt i64 1, %"$gasrem_2684" + br i1 %"$gascmp_2685", label %"$out_of_gas_2686", label %"$have_gas_2687" + +"$out_of_gas_2686": ; preds = %"$have_gas_2682" + call void @_out_of_gas() + br label %"$have_gas_2687" + +"$have_gas_2687": ; preds = %"$out_of_gas_2686", %"$have_gas_2682" + %"$consume_2688" = sub i64 %"$gasrem_2684", 1 + store i64 %"$consume_2688", i64* @_gasrem + %"$execptr_load_2689" = load i8*, i8** @_execptr + %"$_new_empty_map_call_2690" = call i8* @_new_empty_map(i8* %"$execptr_load_2689") + %"$Emp_2691" = bitcast i8* %"$_new_empty_map_call_2690" to %Map_String_String* + store %Map_String_String* %"$Emp_2691", %Map_String_String** %e1 + %"$gasrem_2692" = load i64, i64* @_gasrem + %"$gascmp_2693" = icmp ugt i64 1, %"$gasrem_2692" + br i1 %"$gascmp_2693", label %"$out_of_gas_2694", label %"$have_gas_2695" + +"$out_of_gas_2694": ; preds = %"$have_gas_2687" + call void @_out_of_gas() + br label %"$have_gas_2695" + +"$have_gas_2695": ; preds = %"$out_of_gas_2694", %"$have_gas_2687" + %"$consume_2696" = sub i64 %"$gasrem_2692", 1 + store i64 %"$consume_2696", i64* @_gasrem %key1a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1063", i32 0, i32 0), i32 5 }, %String* %key1a - %"$indices_buf_1064_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1064_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1064_salloc_load", i64 16) - %"$indices_buf_1064_salloc" = bitcast i8* %"$indices_buf_1064_salloc_salloc" to [16 x i8]* - %"$indices_buf_1064" = bitcast [16 x i8]* %"$indices_buf_1064_salloc" to i8* - %"$key1a_1065" = load %String, %String* %key1a - %"$indices_gep_1066" = getelementptr i8, i8* %"$indices_buf_1064", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_1066" to %String* - store %String %"$key1a_1065", %String* %indices_cast - %"$execptr_load_1067" = load i8*, i8** @_execptr - %"$e1_1069" = load %Map_String_String*, %Map_String_String** %e1 - %"$update_value_1070" = bitcast %Map_String_String* %"$e1_1069" to i8* - call void @_update_field(i8* %"$execptr_load_1067", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1068", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_1064", i8* %"$update_value_1070") + %"$gasrem_2697" = load i64, i64* @_gasrem + %"$gascmp_2698" = icmp ugt i64 1, %"$gasrem_2697" + br i1 %"$gascmp_2698", label %"$out_of_gas_2699", label %"$have_gas_2700" + +"$out_of_gas_2699": ; preds = %"$have_gas_2695" + call void @_out_of_gas() + br label %"$have_gas_2700" + +"$have_gas_2700": ; preds = %"$out_of_gas_2699", %"$have_gas_2695" + %"$consume_2701" = sub i64 %"$gasrem_2697", 1 + store i64 %"$consume_2701", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2702", i32 0, i32 0), i32 5 }, %String* %key1a + %"$e1_2703" = load %Map_String_String*, %Map_String_String** %e1 + %"$$e1_2703_2704" = bitcast %Map_String_String* %"$e1_2703" to i8* + %"$_literal_cost_call_2705" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$e1_2703_2704") + %"$gasadd_2706" = add i64 %"$_literal_cost_call_2705", 1 + %"$gasrem_2707" = load i64, i64* @_gasrem + %"$gascmp_2708" = icmp ugt i64 %"$gasadd_2706", %"$gasrem_2707" + br i1 %"$gascmp_2708", label %"$out_of_gas_2709", label %"$have_gas_2710" + +"$out_of_gas_2709": ; preds = %"$have_gas_2700" + call void @_out_of_gas() + br label %"$have_gas_2710" + +"$have_gas_2710": ; preds = %"$out_of_gas_2709", %"$have_gas_2700" + %"$consume_2711" = sub i64 %"$gasrem_2707", %"$gasadd_2706" + store i64 %"$consume_2711", i64* @_gasrem + %"$indices_buf_2712_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_2712_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2712_salloc_load", i64 16) + %"$indices_buf_2712_salloc" = bitcast i8* %"$indices_buf_2712_salloc_salloc" to [16 x i8]* + %"$indices_buf_2712" = bitcast [16 x i8]* %"$indices_buf_2712_salloc" to i8* + %"$key1a_2713" = load %String, %String* %key1a + %"$indices_gep_2714" = getelementptr i8, i8* %"$indices_buf_2712", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_2714" to %String* + store %String %"$key1a_2713", %String* %indices_cast + %"$execptr_load_2715" = load i8*, i8** @_execptr + %"$e1_2717" = load %Map_String_String*, %Map_String_String** %e1 + %"$update_value_2718" = bitcast %Map_String_String* %"$e1_2717" to i8* + call void @_update_field(i8* %"$execptr_load_2715", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_2716", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 1, i8* %"$indices_buf_2712", i8* %"$update_value_2718") ret void } define void @t12(i8* %0) { entry: - %"$_amount_1072" = getelementptr i8, i8* %0, i32 0 - %"$_amount_1073" = bitcast i8* %"$_amount_1072" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_1073" - %"$_sender_1074" = getelementptr i8, i8* %0, i32 16 - %"$_sender_1075" = bitcast i8* %"$_sender_1074" to [20 x i8]* - call void @"$t12_1035"(%Uint128 %_amount, [20 x i8]* %"$_sender_1075") + %"$_amount_2720" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2721" = bitcast i8* %"$_amount_2720" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2721" + %"$_sender_2722" = getelementptr i8, i8* %0, i32 16 + %"$_sender_2723" = bitcast i8* %"$_sender_2722" to [20 x i8]* + call void @"$t12_2602"(%Uint128 %_amount, [20 x i8]* %"$_sender_2723") ret void } -define internal void @"$t13_1076"(%Uint128 %_amount, [20 x i8]* %"$_sender_1077") { +define internal void @"$t13_2724"(%Uint128 %_amount, [20 x i8]* %"$_sender_2725") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_1077" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2725" + %"$gasrem_2726" = load i64, i64* @_gasrem + %"$gascmp_2727" = icmp ugt i64 1, %"$gasrem_2726" + br i1 %"$gascmp_2727", label %"$out_of_gas_2728", label %"$have_gas_2729" + +"$out_of_gas_2728": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2729" + +"$have_gas_2729": ; preds = %"$out_of_gas_2728", %entry + %"$consume_2730" = sub i64 %"$gasrem_2726", 1 + store i64 %"$consume_2730", i64* @_gasrem %tname = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1078", i32 0, i32 0), i32 3 }, %String* %tname + %"$gasrem_2731" = load i64, i64* @_gasrem + %"$gascmp_2732" = icmp ugt i64 1, %"$gasrem_2731" + br i1 %"$gascmp_2732", label %"$out_of_gas_2733", label %"$have_gas_2734" + +"$out_of_gas_2733": ; preds = %"$have_gas_2729" + call void @_out_of_gas() + br label %"$have_gas_2734" + +"$have_gas_2734": ; preds = %"$out_of_gas_2733", %"$have_gas_2729" + %"$consume_2735" = sub i64 %"$gasrem_2731", 1 + store i64 %"$consume_2735", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2736", i32 0, i32 0), i32 3 }, %String* %tname + %"$gasrem_2737" = load i64, i64* @_gasrem + %"$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_2734" + call void @_out_of_gas() + br label %"$have_gas_2740" + +"$have_gas_2740": ; preds = %"$out_of_gas_2739", %"$have_gas_2734" + %"$consume_2741" = sub i64 %"$gasrem_2737", 1 + store i64 %"$consume_2741", i64* @_gasrem %key1a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1079", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_2742" = load i64, i64* @_gasrem + %"$gascmp_2743" = icmp ugt i64 1, %"$gasrem_2742" + br i1 %"$gascmp_2743", label %"$out_of_gas_2744", label %"$have_gas_2745" + +"$out_of_gas_2744": ; preds = %"$have_gas_2740" + call void @_out_of_gas() + br label %"$have_gas_2745" + +"$have_gas_2745": ; preds = %"$out_of_gas_2744", %"$have_gas_2740" + %"$consume_2746" = sub i64 %"$gasrem_2742", 1 + store i64 %"$consume_2746", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2747", i32 0, i32 0), i32 5 }, %String* %key1a %mo = alloca %"TName_Option_Map_(String)_(String)"* - %"$indices_buf_1080_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1080_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1080_salloc_load", i64 16) - %"$indices_buf_1080_salloc" = bitcast i8* %"$indices_buf_1080_salloc_salloc" to [16 x i8]* - %"$indices_buf_1080" = bitcast [16 x i8]* %"$indices_buf_1080_salloc" to i8* - %"$key1a_1081" = load %String, %String* %key1a - %"$indices_gep_1082" = getelementptr i8, i8* %"$indices_buf_1080", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_1082" to %String* - store %String %"$key1a_1081", %String* %indices_cast - %"$execptr_load_1083" = load i8*, i8** @_execptr - %"$mo_1085" = call i8* @_fetch_field(i8* %"$execptr_load_1083", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1084", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_1080", i32 1) - %"$mo_1086" = bitcast i8* %"$mo_1085" to %"TName_Option_Map_(String)_(String)"* - store %"TName_Option_Map_(String)_(String)"* %"$mo_1086", %"TName_Option_Map_(String)_(String)"** %mo - %"$mo_1088" = load %"TName_Option_Map_(String)_(String)"*, %"TName_Option_Map_(String)_(String)"** %mo - %"$mo_tag_1089" = getelementptr inbounds %"TName_Option_Map_(String)_(String)", %"TName_Option_Map_(String)_(String)"* %"$mo_1088", i32 0, i32 0 - %"$mo_tag_1090" = load i8, i8* %"$mo_tag_1089" - switch i8 %"$mo_tag_1090", label %"$empty_default_1091" [ - i8 0, label %"$Some_1092" - i8 1, label %"$None_1116" + %"$indices_buf_2748_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_2748_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2748_salloc_load", i64 16) + %"$indices_buf_2748_salloc" = bitcast i8* %"$indices_buf_2748_salloc_salloc" to [16 x i8]* + %"$indices_buf_2748" = bitcast [16 x i8]* %"$indices_buf_2748_salloc" to i8* + %"$key1a_2749" = load %String, %String* %key1a + %"$indices_gep_2750" = getelementptr i8, i8* %"$indices_buf_2748", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_2750" to %String* + store %String %"$key1a_2749", %String* %indices_cast + %"$execptr_load_2751" = load i8*, i8** @_execptr + %"$mo_2753" = call i8* @_fetch_field(i8* %"$execptr_load_2751", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_2752", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 1, i8* %"$indices_buf_2748", i32 1) + %"$mo_2754" = bitcast i8* %"$mo_2753" to %"TName_Option_Map_(String)_(String)"* + store %"TName_Option_Map_(String)_(String)"* %"$mo_2754", %"TName_Option_Map_(String)_(String)"** %mo + %"$mo_2755" = load %"TName_Option_Map_(String)_(String)"*, %"TName_Option_Map_(String)_(String)"** %mo + %"$$mo_2755_2756" = bitcast %"TName_Option_Map_(String)_(String)"* %"$mo_2755" to i8* + %"$_literal_cost_call_2757" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Map_(String)_(String)_66", i8* %"$$mo_2755_2756") + %"$gasadd_2758" = add i64 %"$_literal_cost_call_2757", 0 + %"$gasadd_2759" = add i64 %"$gasadd_2758", 1 + %"$gasrem_2760" = load i64, i64* @_gasrem + %"$gascmp_2761" = icmp ugt i64 %"$gasadd_2759", %"$gasrem_2760" + br i1 %"$gascmp_2761", label %"$out_of_gas_2762", label %"$have_gas_2763" + +"$out_of_gas_2762": ; preds = %"$have_gas_2745" + call void @_out_of_gas() + br label %"$have_gas_2763" + +"$have_gas_2763": ; preds = %"$out_of_gas_2762", %"$have_gas_2745" + %"$consume_2764" = sub i64 %"$gasrem_2760", %"$gasadd_2759" + store i64 %"$consume_2764", i64* @_gasrem + %"$gasrem_2765" = load i64, i64* @_gasrem + %"$gascmp_2766" = icmp ugt i64 2, %"$gasrem_2765" + br i1 %"$gascmp_2766", label %"$out_of_gas_2767", label %"$have_gas_2768" + +"$out_of_gas_2767": ; preds = %"$have_gas_2763" + call void @_out_of_gas() + br label %"$have_gas_2768" + +"$have_gas_2768": ; preds = %"$out_of_gas_2767", %"$have_gas_2763" + %"$consume_2769" = sub i64 %"$gasrem_2765", 2 + store i64 %"$consume_2769", i64* @_gasrem + %"$mo_2771" = load %"TName_Option_Map_(String)_(String)"*, %"TName_Option_Map_(String)_(String)"** %mo + %"$mo_tag_2772" = getelementptr inbounds %"TName_Option_Map_(String)_(String)", %"TName_Option_Map_(String)_(String)"* %"$mo_2771", i32 0, i32 0 + %"$mo_tag_2773" = load i8, i8* %"$mo_tag_2772" + switch i8 %"$mo_tag_2773", label %"$empty_default_2774" [ + i8 0, label %"$Some_2775" + i8 1, label %"$None_2839" ] -"$Some_1092": ; preds = %entry - %"$mo_1093" = bitcast %"TName_Option_Map_(String)_(String)"* %"$mo_1088" to %"CName_Some_Map_(String)_(String)"* - %"$m_gep_1094" = getelementptr inbounds %"CName_Some_Map_(String)_(String)", %"CName_Some_Map_(String)_(String)"* %"$mo_1093", i32 0, i32 1 - %"$m_load_1095" = load %Map_String_String*, %Map_String_String** %"$m_gep_1094" +"$Some_2775": ; preds = %"$have_gas_2768" + %"$mo_2776" = bitcast %"TName_Option_Map_(String)_(String)"* %"$mo_2771" to %"CName_Some_Map_(String)_(String)"* + %"$m_gep_2777" = getelementptr inbounds %"CName_Some_Map_(String)_(String)", %"CName_Some_Map_(String)_(String)"* %"$mo_2776", i32 0, i32 1 + %"$m_load_2778" = load %Map_String_String*, %Map_String_String** %"$m_gep_2777" %m = alloca %Map_String_String* - store %Map_String_String* %"$m_load_1095", %Map_String_String** %m + store %Map_String_String* %"$m_load_2778", %Map_String_String** %m + %"$gasrem_2779" = load i64, i64* @_gasrem + %"$gascmp_2780" = icmp ugt i64 1, %"$gasrem_2779" + br i1 %"$gascmp_2780", label %"$out_of_gas_2781", label %"$have_gas_2782" + +"$out_of_gas_2781": ; preds = %"$Some_2775" + call void @_out_of_gas() + br label %"$have_gas_2782" + +"$have_gas_2782": ; preds = %"$out_of_gas_2781", %"$Some_2775" + %"$consume_2783" = sub i64 %"$gasrem_2779", 1 + store i64 %"$consume_2783", i64* @_gasrem %m_size = alloca %Uint32 - %"$m_1096" = load %Map_String_String*, %Map_String_String** %m - %"$$m_1096_1097" = bitcast %Map_String_String* %"$m_1096" to i8* - %"$size_call_1098" = call %Uint32 @_size(i8* %"$$m_1096_1097") - store %Uint32 %"$size_call_1098", %Uint32* %m_size + %"$m_2784" = load %Map_String_String*, %Map_String_String** %m + %"$$m_2784_2785" = bitcast %Map_String_String* %"$m_2784" to i8* + %"$size_call_2786" = call %Uint32 @_size(i8* %"$$m_2784_2785") + store %Uint32 %"$size_call_2786", %Uint32* %m_size + %"$gasrem_2787" = load i64, i64* @_gasrem + %"$gascmp_2788" = icmp ugt i64 1, %"$gasrem_2787" + br i1 %"$gascmp_2788", label %"$out_of_gas_2789", label %"$have_gas_2790" + +"$out_of_gas_2789": ; preds = %"$have_gas_2782" + call void @_out_of_gas() + br label %"$have_gas_2790" + +"$have_gas_2790": ; preds = %"$out_of_gas_2789", %"$have_gas_2782" + %"$consume_2791" = sub i64 %"$gasrem_2787", 1 + store i64 %"$consume_2791", i64* @_gasrem %zero = alloca %Uint32 + %"$gasrem_2792" = load i64, i64* @_gasrem + %"$gascmp_2793" = icmp ugt i64 1, %"$gasrem_2792" + br i1 %"$gascmp_2793", label %"$out_of_gas_2794", label %"$have_gas_2795" + +"$out_of_gas_2794": ; preds = %"$have_gas_2790" + call void @_out_of_gas() + br label %"$have_gas_2795" + +"$have_gas_2795": ; preds = %"$out_of_gas_2794", %"$have_gas_2790" + %"$consume_2796" = sub i64 %"$gasrem_2792", 1 + store i64 %"$consume_2796", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %zero + %"$gasrem_2797" = load i64, i64* @_gasrem + %"$gascmp_2798" = icmp ugt i64 1, %"$gasrem_2797" + br i1 %"$gascmp_2798", label %"$out_of_gas_2799", label %"$have_gas_2800" + +"$out_of_gas_2799": ; preds = %"$have_gas_2795" + call void @_out_of_gas() + br label %"$have_gas_2800" + +"$have_gas_2800": ; preds = %"$out_of_gas_2799", %"$have_gas_2795" + %"$consume_2801" = sub i64 %"$gasrem_2797", 1 + store i64 %"$consume_2801", i64* @_gasrem %is_empty = alloca %TName_Bool* - %"$execptr_load_1099" = load i8*, i8** @_execptr - %"$m_size_1100" = load %Uint32, %Uint32* %m_size - %"$zero_1101" = load %Uint32, %Uint32* %zero - %"$eq_call_1102" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_1099", %Uint32 %"$m_size_1100", %Uint32 %"$zero_1101") - store %TName_Bool* %"$eq_call_1102", %TName_Bool** %is_empty - %"$is_empty_1104" = load %TName_Bool*, %TName_Bool** %is_empty - %"$is_empty_tag_1105" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_1104", i32 0, i32 0 - %"$is_empty_tag_1106" = load i8, i8* %"$is_empty_tag_1105" - switch i8 %"$is_empty_tag_1106", label %"$empty_default_1107" [ - i8 0, label %"$True_1108" - i8 1, label %"$False_1110" + %"$execptr_load_2802" = load i8*, i8** @_execptr + %"$m_size_2803" = load %Uint32, %Uint32* %m_size + %"$zero_2804" = load %Uint32, %Uint32* %zero + %"$eq_call_2805" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_2802", %Uint32 %"$m_size_2803", %Uint32 %"$zero_2804") + store %TName_Bool* %"$eq_call_2805", %TName_Bool** %is_empty + %"$gasrem_2806" = load i64, i64* @_gasrem + %"$gascmp_2807" = icmp ugt i64 2, %"$gasrem_2806" + br i1 %"$gascmp_2807", label %"$out_of_gas_2808", label %"$have_gas_2809" + +"$out_of_gas_2808": ; preds = %"$have_gas_2800" + call void @_out_of_gas() + br label %"$have_gas_2809" + +"$have_gas_2809": ; preds = %"$out_of_gas_2808", %"$have_gas_2800" + %"$consume_2810" = sub i64 %"$gasrem_2806", 2 + store i64 %"$consume_2810", i64* @_gasrem + %"$is_empty_2812" = load %TName_Bool*, %TName_Bool** %is_empty + %"$is_empty_tag_2813" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_2812", i32 0, i32 0 + %"$is_empty_tag_2814" = load i8, i8* %"$is_empty_tag_2813" + switch i8 %"$is_empty_tag_2814", label %"$empty_default_2815" [ + i8 0, label %"$True_2816" + i8 1, label %"$False_2818" ] -"$True_1108": ; preds = %"$Some_1092" - %"$is_empty_1109" = bitcast %TName_Bool* %"$is_empty_1104" to %CName_True* - br label %"$matchsucc_1103" +"$True_2816": ; preds = %"$have_gas_2809" + %"$is_empty_2817" = bitcast %TName_Bool* %"$is_empty_2812" to %CName_True* + br label %"$matchsucc_2811" + +"$False_2818": ; preds = %"$have_gas_2809" + %"$is_empty_2819" = bitcast %TName_Bool* %"$is_empty_2812" to %CName_False* + %"$gasrem_2820" = load i64, i64* @_gasrem + %"$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 = %"$False_2818" + call void @_out_of_gas() + br label %"$have_gas_2823" -"$False_1110": ; preds = %"$Some_1092" - %"$is_empty_1111" = bitcast %TName_Bool* %"$is_empty_1104" to %CName_False* +"$have_gas_2823": ; preds = %"$out_of_gas_2822", %"$False_2818" + %"$consume_2824" = sub i64 %"$gasrem_2820", 1 + store i64 %"$consume_2824", i64* @_gasrem %msg = alloca %String - store %String { i8* getelementptr inbounds ([29 x i8], [29 x i8]* @"$stringlit_1112", i32 0, i32 0), i32 29 }, %String* %msg - %"$fail_msg__sender_1113" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1113" - %"$tname_1114" = load %String, %String* %tname - %"$msg_1115" = load %String, %String* %msg - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1113", %String %"$tname_1114", %String %"$msg_1115") - br label %"$matchsucc_1103" - -"$empty_default_1107": ; preds = %"$Some_1092" - br label %"$matchsucc_1103" - -"$matchsucc_1103": ; preds = %"$False_1110", %"$True_1108", %"$empty_default_1107" - br label %"$matchsucc_1087" - -"$None_1116": ; preds = %entry - %"$mo_1117" = bitcast %"TName_Option_Map_(String)_(String)"* %"$mo_1088" to %"CName_None_Map_(String)_(String)"* - %"$fail__sender_1118" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_1118" - %"$tname_1119" = load %String, %String* %tname - call void @"$fail_179"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_1118", %String %"$tname_1119") - br label %"$matchsucc_1087" - -"$empty_default_1091": ; preds = %entry - br label %"$matchsucc_1087" - -"$matchsucc_1087": ; preds = %"$None_1116", %"$matchsucc_1103", %"$empty_default_1091" + %"$gasrem_2825" = load i64, i64* @_gasrem + %"$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 + store %String { i8* getelementptr inbounds ([29 x i8], [29 x i8]* @"$stringlit_2830", i32 0, i32 0), i32 29 }, %String* %msg + %"$gasrem_2831" = load i64, i64* @_gasrem + %"$gascmp_2832" = icmp ugt i64 1, %"$gasrem_2831" + br i1 %"$gascmp_2832", label %"$out_of_gas_2833", label %"$have_gas_2834" + +"$out_of_gas_2833": ; preds = %"$have_gas_2828" + call void @_out_of_gas() + br label %"$have_gas_2834" + +"$have_gas_2834": ; preds = %"$out_of_gas_2833", %"$have_gas_2828" + %"$consume_2835" = sub i64 %"$gasrem_2831", 1 + store i64 %"$consume_2835", i64* @_gasrem + %"$fail_msg__sender_2836" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2836" + %"$tname_2837" = load %String, %String* %tname + %"$msg_2838" = load %String, %String* %msg + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2836", %String %"$tname_2837", %String %"$msg_2838") + br label %"$matchsucc_2811" + +"$empty_default_2815": ; preds = %"$have_gas_2809" + br label %"$matchsucc_2811" + +"$matchsucc_2811": ; preds = %"$have_gas_2834", %"$True_2816", %"$empty_default_2815" + br label %"$matchsucc_2770" + +"$None_2839": ; preds = %"$have_gas_2768" + %"$mo_2840" = bitcast %"TName_Option_Map_(String)_(String)"* %"$mo_2771" to %"CName_None_Map_(String)_(String)"* + %"$gasrem_2841" = load i64, i64* @_gasrem + %"$gascmp_2842" = icmp ugt i64 1, %"$gasrem_2841" + br i1 %"$gascmp_2842", label %"$out_of_gas_2843", label %"$have_gas_2844" + +"$out_of_gas_2843": ; preds = %"$None_2839" + call void @_out_of_gas() + br label %"$have_gas_2844" + +"$have_gas_2844": ; preds = %"$out_of_gas_2843", %"$None_2839" + %"$consume_2845" = sub i64 %"$gasrem_2841", 1 + store i64 %"$consume_2845", i64* @_gasrem + %"$fail__sender_2846" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_2846" + %"$tname_2847" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_2846", %String %"$tname_2847") + br label %"$matchsucc_2770" + +"$empty_default_2774": ; preds = %"$have_gas_2768" + br label %"$matchsucc_2770" + +"$matchsucc_2770": ; preds = %"$have_gas_2844", %"$matchsucc_2811", %"$empty_default_2774" + %"$gasrem_2848" = load i64, i64* @_gasrem + %"$gascmp_2849" = icmp ugt i64 1, %"$gasrem_2848" + br i1 %"$gascmp_2849", label %"$out_of_gas_2850", label %"$have_gas_2851" + +"$out_of_gas_2850": ; preds = %"$matchsucc_2770" + call void @_out_of_gas() + br label %"$have_gas_2851" + +"$have_gas_2851": ; preds = %"$out_of_gas_2850", %"$matchsucc_2770" + %"$consume_2852" = sub i64 %"$gasrem_2848", 1 + store i64 %"$consume_2852", i64* @_gasrem %m3 = alloca %Map_String_String* - %"$execptr_load_1120" = load i8*, i8** @_execptr - %"$_new_empty_map_call_1121" = call i8* @_new_empty_map(i8* %"$execptr_load_1120") - %"$Emp_1122" = bitcast i8* %"$_new_empty_map_call_1121" to %Map_String_String* - store %Map_String_String* %"$Emp_1122", %Map_String_String** %m3 + %"$gasrem_2853" = load i64, i64* @_gasrem + %"$gascmp_2854" = icmp ugt i64 1, %"$gasrem_2853" + br i1 %"$gascmp_2854", label %"$out_of_gas_2855", label %"$have_gas_2856" + +"$out_of_gas_2855": ; preds = %"$have_gas_2851" + call void @_out_of_gas() + br label %"$have_gas_2856" + +"$have_gas_2856": ; preds = %"$out_of_gas_2855", %"$have_gas_2851" + %"$consume_2857" = sub i64 %"$gasrem_2853", 1 + store i64 %"$consume_2857", i64* @_gasrem + %"$execptr_load_2858" = load i8*, i8** @_execptr + %"$_new_empty_map_call_2859" = call i8* @_new_empty_map(i8* %"$execptr_load_2858") + %"$Emp_2860" = bitcast i8* %"$_new_empty_map_call_2859" to %Map_String_String* + store %Map_String_String* %"$Emp_2860", %Map_String_String** %m3 + %"$gasrem_2861" = load i64, i64* @_gasrem + %"$gascmp_2862" = icmp ugt i64 1, %"$gasrem_2861" + br i1 %"$gascmp_2862", label %"$out_of_gas_2863", label %"$have_gas_2864" + +"$out_of_gas_2863": ; preds = %"$have_gas_2856" + call void @_out_of_gas() + br label %"$have_gas_2864" + +"$have_gas_2864": ; preds = %"$out_of_gas_2863", %"$have_gas_2856" + %"$consume_2865" = sub i64 %"$gasrem_2861", 1 + store i64 %"$consume_2865", i64* @_gasrem %m2 = alloca %"Map_String_Map_(String)_(String)"* + %"$gasrem_2866" = load i64, i64* @_gasrem + %"$gascmp_2867" = icmp ugt i64 1, %"$gasrem_2866" + br i1 %"$gascmp_2867", label %"$out_of_gas_2868", label %"$have_gas_2869" + +"$out_of_gas_2868": ; preds = %"$have_gas_2864" + call void @_out_of_gas() + br label %"$have_gas_2869" + +"$have_gas_2869": ; preds = %"$out_of_gas_2868", %"$have_gas_2864" + %"$consume_2870" = sub i64 %"$gasrem_2866", 1 + store i64 %"$consume_2870", i64* @_gasrem %key2a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1123", i32 0, i32 0), i32 5 }, %String* %key2a + %"$gasrem_2871" = load i64, i64* @_gasrem + %"$gascmp_2872" = icmp ugt i64 1, %"$gasrem_2871" + br i1 %"$gascmp_2872", label %"$out_of_gas_2873", label %"$have_gas_2874" + +"$out_of_gas_2873": ; preds = %"$have_gas_2869" + call void @_out_of_gas() + br label %"$have_gas_2874" + +"$have_gas_2874": ; preds = %"$out_of_gas_2873", %"$have_gas_2869" + %"$consume_2875" = sub i64 %"$gasrem_2871", 1 + store i64 %"$consume_2875", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2876", i32 0, i32 0), i32 5 }, %String* %key2a + %"$gasrem_2877" = load i64, i64* @_gasrem + %"$gascmp_2878" = icmp ugt i64 1, %"$gasrem_2877" + br i1 %"$gascmp_2878", label %"$out_of_gas_2879", label %"$have_gas_2880" + +"$out_of_gas_2879": ; preds = %"$have_gas_2874" + call void @_out_of_gas() + br label %"$have_gas_2880" + +"$have_gas_2880": ; preds = %"$out_of_gas_2879", %"$have_gas_2874" + %"$consume_2881" = sub i64 %"$gasrem_2877", 1 + store i64 %"$consume_2881", i64* @_gasrem %e = alloca %"Map_String_Map_(String)_(String)"* - %"$execptr_load_1124" = load i8*, i8** @_execptr - %"$_new_empty_map_call_1125" = call i8* @_new_empty_map(i8* %"$execptr_load_1124") - %"$Emp_1126" = bitcast i8* %"$_new_empty_map_call_1125" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$Emp_1126", %"Map_String_Map_(String)_(String)"** %e - %"$execptr_load_1127" = load i8*, i8** @_execptr - %"$e_1128" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %e - %"$$e_1128_1129" = bitcast %"Map_String_Map_(String)_(String)"* %"$e_1128" to i8* - %"$put_key2a_1130" = alloca %String - %"$key2a_1131" = load %String, %String* %key2a - store %String %"$key2a_1131", %String* %"$put_key2a_1130" - %"$$put_key2a_1130_1132" = bitcast %String* %"$put_key2a_1130" to i8* - %"$m3_1133" = load %Map_String_String*, %Map_String_String** %m3 - %"$$m3_1133_1134" = bitcast %Map_String_String* %"$m3_1133" to i8* - %"$put_call_1135" = call i8* @_put(i8* %"$execptr_load_1127", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$e_1128_1129", i8* %"$$put_key2a_1130_1132", i8* %"$$m3_1133_1134") - %"$_put_1136" = bitcast i8* %"$put_call_1135" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$_put_1136", %"Map_String_Map_(String)_(String)"** %m2 - %"$m3_12" = alloca %"Map_String_Map_(String)_(Map_(String)_(String))"* - %"$e_11" = alloca %"Map_String_Map_(String)_(Map_(String)_(String))"* - %"$execptr_load_1137" = load i8*, i8** @_execptr - %"$_new_empty_map_call_1138" = call i8* @_new_empty_map(i8* %"$execptr_load_1137") - %"$Emp_1139" = bitcast i8* %"$_new_empty_map_call_1138" to %"Map_String_Map_(String)_(Map_(String)_(String))"* - store %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$Emp_1139", %"Map_String_Map_(String)_(Map_(String)_(String))"** %"$e_11" - %"$execptr_load_1140" = load i8*, i8** @_execptr - %"$$e_11_1141" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %"$e_11" - %"$$$e_11_1141_1142" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$$e_11_1141" to i8* - %"$put_key1a_1143" = alloca %String - %"$key1a_1144" = load %String, %String* %key1a - store %String %"$key1a_1144", %String* %"$put_key1a_1143" - %"$$put_key1a_1143_1145" = bitcast %String* %"$put_key1a_1143" to i8* - %"$m2_1146" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 - %"$$m2_1146_1147" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_1146" to i8* - %"$put_call_1148" = call i8* @_put(i8* %"$execptr_load_1140", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$$e_11_1141_1142", i8* %"$$put_key1a_1143_1145", i8* %"$$m2_1146_1147") - %"$_put_1149" = bitcast i8* %"$put_call_1148" to %"Map_String_Map_(String)_(Map_(String)_(String))"* - store %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$_put_1149", %"Map_String_Map_(String)_(Map_(String)_(String))"** %"$m3_12" - %"$execptr_load_1150" = load i8*, i8** @_execptr - %"$$m3_12_1152" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %"$m3_12" - %"$update_value_1153" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$$m3_12_1152" to i8* - call void @_update_field(i8* %"$execptr_load_1150", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m3_1151", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 0, i8* null, i8* %"$update_value_1153") + %"$gasrem_2882" = load i64, i64* @_gasrem + %"$gascmp_2883" = icmp ugt i64 1, %"$gasrem_2882" + br i1 %"$gascmp_2883", label %"$out_of_gas_2884", label %"$have_gas_2885" + +"$out_of_gas_2884": ; preds = %"$have_gas_2880" + call void @_out_of_gas() + br label %"$have_gas_2885" + +"$have_gas_2885": ; preds = %"$out_of_gas_2884", %"$have_gas_2880" + %"$consume_2886" = sub i64 %"$gasrem_2882", 1 + store i64 %"$consume_2886", i64* @_gasrem + %"$execptr_load_2887" = load i8*, i8** @_execptr + %"$_new_empty_map_call_2888" = call i8* @_new_empty_map(i8* %"$execptr_load_2887") + %"$Emp_2889" = bitcast i8* %"$_new_empty_map_call_2888" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$Emp_2889", %"Map_String_Map_(String)_(String)"** %e + %"$execptr_load_2890" = load i8*, i8** @_execptr + %"$e_2891" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %e + %"$$e_2891_2892" = bitcast %"Map_String_Map_(String)_(String)"* %"$e_2891" to i8* + %"$put_key2a_2893" = alloca %String + %"$key2a_2894" = load %String, %String* %key2a + store %String %"$key2a_2894", %String* %"$put_key2a_2893" + %"$$put_key2a_2893_2895" = bitcast %String* %"$put_key2a_2893" to i8* + %"$m3_2896" = load %Map_String_String*, %Map_String_String** %m3 + %"$$m3_2896_2897" = bitcast %Map_String_String* %"$m3_2896" to i8* + %"$put_call_2898" = call i8* @_put(i8* %"$execptr_load_2890", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$e_2891_2892", i8* %"$$put_key2a_2893_2895", i8* %"$$m3_2896_2897") + %"$_put_2899" = bitcast i8* %"$put_call_2898" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$_put_2899", %"Map_String_Map_(String)_(String)"** %m2 + %"$gasrem_2900" = load i64, i64* @_gasrem + %"$gascmp_2901" = icmp ugt i64 1, %"$gasrem_2900" + br i1 %"$gascmp_2901", label %"$out_of_gas_2902", label %"$have_gas_2903" + +"$out_of_gas_2902": ; preds = %"$have_gas_2885" + call void @_out_of_gas() + br label %"$have_gas_2903" + +"$have_gas_2903": ; preds = %"$out_of_gas_2902", %"$have_gas_2885" + %"$consume_2904" = sub i64 %"$gasrem_2900", 1 + store i64 %"$consume_2904", i64* @_gasrem + %"$m3_11" = alloca %"Map_String_Map_(String)_(Map_(String)_(String))"* + %"$gasrem_2905" = load i64, i64* @_gasrem + %"$gascmp_2906" = icmp ugt i64 1, %"$gasrem_2905" + br i1 %"$gascmp_2906", label %"$out_of_gas_2907", label %"$have_gas_2908" + +"$out_of_gas_2907": ; preds = %"$have_gas_2903" + call void @_out_of_gas() + br label %"$have_gas_2908" + +"$have_gas_2908": ; preds = %"$out_of_gas_2907", %"$have_gas_2903" + %"$consume_2909" = sub i64 %"$gasrem_2905", 1 + store i64 %"$consume_2909", i64* @_gasrem + %e1 = alloca %"Map_String_Map_(String)_(Map_(String)_(String))"* + %"$gasrem_2910" = load i64, i64* @_gasrem + %"$gascmp_2911" = icmp ugt i64 1, %"$gasrem_2910" + br i1 %"$gascmp_2911", label %"$out_of_gas_2912", label %"$have_gas_2913" + +"$out_of_gas_2912": ; preds = %"$have_gas_2908" + call void @_out_of_gas() + br label %"$have_gas_2913" + +"$have_gas_2913": ; preds = %"$out_of_gas_2912", %"$have_gas_2908" + %"$consume_2914" = sub i64 %"$gasrem_2910", 1 + store i64 %"$consume_2914", i64* @_gasrem + %"$execptr_load_2915" = load i8*, i8** @_execptr + %"$_new_empty_map_call_2916" = call i8* @_new_empty_map(i8* %"$execptr_load_2915") + %"$Emp_2917" = bitcast i8* %"$_new_empty_map_call_2916" to %"Map_String_Map_(String)_(Map_(String)_(String))"* + store %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$Emp_2917", %"Map_String_Map_(String)_(Map_(String)_(String))"** %e1 + %"$execptr_load_2918" = load i8*, i8** @_execptr + %"$e_2919" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %e1 + %"$$e_2919_2920" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$e_2919" to i8* + %"$put_key1a_2921" = alloca %String + %"$key1a_2922" = load %String, %String* %key1a + store %String %"$key1a_2922", %String* %"$put_key1a_2921" + %"$$put_key1a_2921_2923" = bitcast %String* %"$put_key1a_2921" to i8* + %"$m2_2924" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 + %"$$m2_2924_2925" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_2924" to i8* + %"$put_call_2926" = call i8* @_put(i8* %"$execptr_load_2918", %_TyDescrTy_Typ* @"$TyDescr_Map_70", i8* %"$$e_2919_2920", i8* %"$$put_key1a_2921_2923", i8* %"$$m2_2924_2925") + %"$_put_2927" = bitcast i8* %"$put_call_2926" to %"Map_String_Map_(String)_(Map_(String)_(String))"* + store %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$_put_2927", %"Map_String_Map_(String)_(Map_(String)_(String))"** %"$m3_11" + %"$$m3_11_2928" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %"$m3_11" + %"$$$m3_11_2928_2929" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$$m3_11_2928" to i8* + %"$_literal_cost_call_2930" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_70", i8* %"$$$m3_11_2928_2929") + %"$gasrem_2931" = load i64, i64* @_gasrem + %"$gascmp_2932" = icmp ugt i64 %"$_literal_cost_call_2930", %"$gasrem_2931" + br i1 %"$gascmp_2932", label %"$out_of_gas_2933", label %"$have_gas_2934" + +"$out_of_gas_2933": ; preds = %"$have_gas_2913" + call void @_out_of_gas() + br label %"$have_gas_2934" + +"$have_gas_2934": ; preds = %"$out_of_gas_2933", %"$have_gas_2913" + %"$consume_2935" = sub i64 %"$gasrem_2931", %"$_literal_cost_call_2930" + store i64 %"$consume_2935", i64* @_gasrem + %"$execptr_load_2936" = load i8*, i8** @_execptr + %"$$m3_11_2938" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %"$m3_11" + %"$update_value_2939" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$$m3_11_2938" to i8* + call void @_update_field(i8* %"$execptr_load_2936", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m3_2937", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_70", i32 0, i8* null, i8* %"$update_value_2939") ret void } define void @t13(i8* %0) { entry: - %"$_amount_1155" = getelementptr i8, i8* %0, i32 0 - %"$_amount_1156" = bitcast i8* %"$_amount_1155" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_1156" - %"$_sender_1157" = getelementptr i8, i8* %0, i32 16 - %"$_sender_1158" = bitcast i8* %"$_sender_1157" to [20 x i8]* - call void @"$t13_1076"(%Uint128 %_amount, [20 x i8]* %"$_sender_1158") + %"$_amount_2941" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2942" = bitcast i8* %"$_amount_2941" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2942" + %"$_sender_2943" = getelementptr i8, i8* %0, i32 16 + %"$_sender_2944" = bitcast i8* %"$_sender_2943" to [20 x i8]* + call void @"$t13_2724"(%Uint128 %_amount, [20 x i8]* %"$_sender_2944") ret void } -define internal void @"$t14_1159"(%Uint128 %_amount, [20 x i8]* %"$_sender_1160") { +define internal void @"$t14_2945"(%Uint128 %_amount, [20 x i8]* %"$_sender_2946") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_1160" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2946" + %"$gasrem_2947" = load i64, i64* @_gasrem + %"$gascmp_2948" = icmp ugt i64 1, %"$gasrem_2947" + br i1 %"$gascmp_2948", label %"$out_of_gas_2949", label %"$have_gas_2950" + +"$out_of_gas_2949": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2950" + +"$have_gas_2950": ; preds = %"$out_of_gas_2949", %entry + %"$consume_2951" = sub i64 %"$gasrem_2947", 1 + store i64 %"$consume_2951", i64* @_gasrem %tname = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1161", i32 0, i32 0), i32 3 }, %String* %tname + %"$gasrem_2952" = load i64, i64* @_gasrem + %"$gascmp_2953" = icmp ugt i64 1, %"$gasrem_2952" + br i1 %"$gascmp_2953", label %"$out_of_gas_2954", label %"$have_gas_2955" + +"$out_of_gas_2954": ; preds = %"$have_gas_2950" + call void @_out_of_gas() + br label %"$have_gas_2955" + +"$have_gas_2955": ; preds = %"$out_of_gas_2954", %"$have_gas_2950" + %"$consume_2956" = sub i64 %"$gasrem_2952", 1 + store i64 %"$consume_2956", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2957", i32 0, i32 0), i32 3 }, %String* %tname %m3 = alloca %"Map_String_Map_(String)_(Map_(String)_(String))"* - %"$execptr_load_1162" = load i8*, i8** @_execptr - %"$m3_1164" = call i8* @_fetch_field(i8* %"$execptr_load_1162", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m3_1163", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 0, i8* null, i32 1) - %"$m3_1165" = bitcast i8* %"$m3_1164" to %"Map_String_Map_(String)_(Map_(String)_(String))"* - store %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_1165", %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$execptr_load_2958" = load i8*, i8** @_execptr + %"$m3_2960" = call i8* @_fetch_field(i8* %"$execptr_load_2958", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m3_2959", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_70", i32 0, i8* null, i32 1) + %"$m3_2961" = bitcast i8* %"$m3_2960" to %"Map_String_Map_(String)_(Map_(String)_(String))"* + store %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_2961", %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$m3_2962" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$$m3_2962_2963" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_2962" to i8* + %"$_literal_cost_call_2964" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_70", i8* %"$$m3_2962_2963") + %"$m3_2965" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$$m3_2965_2966" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_2965" to i8* + %"$_mapsortcost_call_2967" = call i64 @_mapsortcost(i8* %"$$m3_2965_2966") + %"$gasadd_2968" = add i64 %"$_literal_cost_call_2964", %"$_mapsortcost_call_2967" + %"$gasrem_2969" = load i64, i64* @_gasrem + %"$gascmp_2970" = icmp ugt i64 %"$gasadd_2968", %"$gasrem_2969" + br i1 %"$gascmp_2970", label %"$out_of_gas_2971", label %"$have_gas_2972" + +"$out_of_gas_2971": ; preds = %"$have_gas_2955" + call void @_out_of_gas() + br label %"$have_gas_2972" + +"$have_gas_2972": ; preds = %"$out_of_gas_2971", %"$have_gas_2955" + %"$consume_2973" = sub i64 %"$gasrem_2969", %"$gasadd_2968" + store i64 %"$consume_2973", i64* @_gasrem + %"$gasrem_2974" = load i64, i64* @_gasrem + %"$gascmp_2975" = icmp ugt i64 1, %"$gasrem_2974" + br i1 %"$gascmp_2975", label %"$out_of_gas_2976", label %"$have_gas_2977" + +"$out_of_gas_2976": ; preds = %"$have_gas_2972" + call void @_out_of_gas() + br label %"$have_gas_2977" + +"$have_gas_2977": ; preds = %"$out_of_gas_2976", %"$have_gas_2972" + %"$consume_2978" = sub i64 %"$gasrem_2974", 1 + store i64 %"$consume_2978", i64* @_gasrem %m3_size = alloca %Uint32 - %"$m3_1166" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 - %"$$m3_1166_1167" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_1166" to i8* - %"$size_call_1168" = call %Uint32 @_size(i8* %"$$m3_1166_1167") - store %Uint32 %"$size_call_1168", %Uint32* %m3_size + %"$m3_2979" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$$m3_2979_2980" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_2979" to i8* + %"$size_call_2981" = call %Uint32 @_size(i8* %"$$m3_2979_2980") + store %Uint32 %"$size_call_2981", %Uint32* %m3_size + %"$gasrem_2982" = load i64, i64* @_gasrem + %"$gascmp_2983" = icmp ugt i64 1, %"$gasrem_2982" + br i1 %"$gascmp_2983", label %"$out_of_gas_2984", label %"$have_gas_2985" + +"$out_of_gas_2984": ; preds = %"$have_gas_2977" + call void @_out_of_gas() + br label %"$have_gas_2985" + +"$have_gas_2985": ; preds = %"$out_of_gas_2984", %"$have_gas_2977" + %"$consume_2986" = sub i64 %"$gasrem_2982", 1 + store i64 %"$consume_2986", i64* @_gasrem %one = alloca %Uint32 - store %Uint32 { i32 1 }, %Uint32* %one - %is_empty = alloca %TName_Bool* - %"$execptr_load_1169" = load i8*, i8** @_execptr - %"$m3_size_1170" = load %Uint32, %Uint32* %m3_size - %"$one_1171" = load %Uint32, %Uint32* %one - %"$eq_call_1172" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_1169", %Uint32 %"$m3_size_1170", %Uint32 %"$one_1171") - store %TName_Bool* %"$eq_call_1172", %TName_Bool** %is_empty - %"$is_empty_1174" = load %TName_Bool*, %TName_Bool** %is_empty - %"$is_empty_tag_1175" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_1174", i32 0, i32 0 - %"$is_empty_tag_1176" = load i8, i8* %"$is_empty_tag_1175" - switch i8 %"$is_empty_tag_1176", label %"$empty_default_1177" [ - i8 0, label %"$True_1178" - i8 1, label %"$False_1180" - ] + %"$gasrem_2987" = load i64, i64* @_gasrem + %"$gascmp_2988" = icmp ugt i64 1, %"$gasrem_2987" + br i1 %"$gascmp_2988", label %"$out_of_gas_2989", label %"$have_gas_2990" -"$True_1178": ; preds = %entry - %"$is_empty_1179" = bitcast %TName_Bool* %"$is_empty_1174" to %CName_True* - br label %"$matchsucc_1173" +"$out_of_gas_2989": ; preds = %"$have_gas_2985" + call void @_out_of_gas() + br label %"$have_gas_2990" -"$False_1180": ; preds = %entry - %"$is_empty_1181" = bitcast %TName_Bool* %"$is_empty_1174" to %CName_False* - %"$fail__sender_1182" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_1182" - %"$tname_1183" = load %String, %String* %tname - call void @"$fail_179"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_1182", %String %"$tname_1183") - br label %"$matchsucc_1173" +"$have_gas_2990": ; preds = %"$out_of_gas_2989", %"$have_gas_2985" + %"$consume_2991" = sub i64 %"$gasrem_2987", 1 + store i64 %"$consume_2991", i64* @_gasrem + store %Uint32 { i32 1 }, %Uint32* %one + %"$gasrem_2992" = load i64, i64* @_gasrem + %"$gascmp_2993" = icmp ugt i64 1, %"$gasrem_2992" + br i1 %"$gascmp_2993", label %"$out_of_gas_2994", label %"$have_gas_2995" -"$empty_default_1177": ; preds = %entry - br label %"$matchsucc_1173" +"$out_of_gas_2994": ; preds = %"$have_gas_2990" + call void @_out_of_gas() + br label %"$have_gas_2995" -"$matchsucc_1173": ; preds = %"$False_1180", %"$True_1178", %"$empty_default_1177" +"$have_gas_2995": ; preds = %"$out_of_gas_2994", %"$have_gas_2990" + %"$consume_2996" = sub i64 %"$gasrem_2992", 1 + store i64 %"$consume_2996", i64* @_gasrem + %is_empty = alloca %TName_Bool* + %"$execptr_load_2997" = load i8*, i8** @_execptr + %"$m3_size_2998" = load %Uint32, %Uint32* %m3_size + %"$one_2999" = load %Uint32, %Uint32* %one + %"$eq_call_3000" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_2997", %Uint32 %"$m3_size_2998", %Uint32 %"$one_2999") + store %TName_Bool* %"$eq_call_3000", %TName_Bool** %is_empty + %"$gasrem_3001" = load i64, i64* @_gasrem + %"$gascmp_3002" = icmp ugt i64 2, %"$gasrem_3001" + br i1 %"$gascmp_3002", label %"$out_of_gas_3003", label %"$have_gas_3004" + +"$out_of_gas_3003": ; preds = %"$have_gas_2995" + call void @_out_of_gas() + br label %"$have_gas_3004" + +"$have_gas_3004": ; preds = %"$out_of_gas_3003", %"$have_gas_2995" + %"$consume_3005" = sub i64 %"$gasrem_3001", 2 + store i64 %"$consume_3005", i64* @_gasrem + %"$is_empty_3007" = load %TName_Bool*, %TName_Bool** %is_empty + %"$is_empty_tag_3008" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_3007", i32 0, i32 0 + %"$is_empty_tag_3009" = load i8, i8* %"$is_empty_tag_3008" + switch i8 %"$is_empty_tag_3009", label %"$empty_default_3010" [ + i8 0, label %"$True_3011" + i8 1, label %"$False_3013" + ] + +"$True_3011": ; preds = %"$have_gas_3004" + %"$is_empty_3012" = bitcast %TName_Bool* %"$is_empty_3007" to %CName_True* + br label %"$matchsucc_3006" + +"$False_3013": ; preds = %"$have_gas_3004" + %"$is_empty_3014" = bitcast %TName_Bool* %"$is_empty_3007" to %CName_False* + %"$gasrem_3015" = load i64, i64* @_gasrem + %"$gascmp_3016" = icmp ugt i64 1, %"$gasrem_3015" + br i1 %"$gascmp_3016", label %"$out_of_gas_3017", label %"$have_gas_3018" + +"$out_of_gas_3017": ; preds = %"$False_3013" + call void @_out_of_gas() + br label %"$have_gas_3018" + +"$have_gas_3018": ; preds = %"$out_of_gas_3017", %"$False_3013" + %"$consume_3019" = sub i64 %"$gasrem_3015", 1 + store i64 %"$consume_3019", i64* @_gasrem + %"$fail__sender_3020" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_3020" + %"$tname_3021" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_3020", %String %"$tname_3021") + br label %"$matchsucc_3006" + +"$empty_default_3010": ; preds = %"$have_gas_3004" + br label %"$matchsucc_3006" + +"$matchsucc_3006": ; preds = %"$have_gas_3018", %"$True_3011", %"$empty_default_3010" + %"$gasrem_3022" = load i64, i64* @_gasrem + %"$gascmp_3023" = icmp ugt i64 1, %"$gasrem_3022" + br i1 %"$gascmp_3023", label %"$out_of_gas_3024", label %"$have_gas_3025" + +"$out_of_gas_3024": ; preds = %"$matchsucc_3006" + call void @_out_of_gas() + br label %"$have_gas_3025" + +"$have_gas_3025": ; preds = %"$out_of_gas_3024", %"$matchsucc_3006" + %"$consume_3026" = sub i64 %"$gasrem_3022", 1 + store i64 %"$consume_3026", i64* @_gasrem %e = alloca %"Map_String_Map_(String)_(String)"* - %"$execptr_load_1184" = load i8*, i8** @_execptr - %"$_new_empty_map_call_1185" = call i8* @_new_empty_map(i8* %"$execptr_load_1184") - %"$Emp_1186" = bitcast i8* %"$_new_empty_map_call_1185" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$Emp_1186", %"Map_String_Map_(String)_(String)"** %e - %"$execptr_load_1187" = load i8*, i8** @_execptr - %"$e_1189" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %e - %"$update_value_1190" = bitcast %"Map_String_Map_(String)_(String)"* %"$e_1189" to i8* - call void @_update_field(i8* %"$execptr_load_1187", i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$f_m_1188", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i8* %"$update_value_1190") + %"$gasrem_3027" = load i64, i64* @_gasrem + %"$gascmp_3028" = icmp ugt i64 1, %"$gasrem_3027" + br i1 %"$gascmp_3028", label %"$out_of_gas_3029", label %"$have_gas_3030" + +"$out_of_gas_3029": ; preds = %"$have_gas_3025" + call void @_out_of_gas() + br label %"$have_gas_3030" + +"$have_gas_3030": ; preds = %"$out_of_gas_3029", %"$have_gas_3025" + %"$consume_3031" = sub i64 %"$gasrem_3027", 1 + store i64 %"$consume_3031", i64* @_gasrem + %"$execptr_load_3032" = load i8*, i8** @_execptr + %"$_new_empty_map_call_3033" = call i8* @_new_empty_map(i8* %"$execptr_load_3032") + %"$Emp_3034" = bitcast i8* %"$_new_empty_map_call_3033" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$Emp_3034", %"Map_String_Map_(String)_(String)"** %e + %"$e_3035" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %e + %"$$e_3035_3036" = bitcast %"Map_String_Map_(String)_(String)"* %"$e_3035" to i8* + %"$_literal_cost_call_3037" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$e_3035_3036") + %"$gasrem_3038" = load i64, i64* @_gasrem + %"$gascmp_3039" = icmp ugt i64 %"$_literal_cost_call_3037", %"$gasrem_3038" + br i1 %"$gascmp_3039", label %"$out_of_gas_3040", label %"$have_gas_3041" + +"$out_of_gas_3040": ; preds = %"$have_gas_3030" + call void @_out_of_gas() + br label %"$have_gas_3041" + +"$have_gas_3041": ; preds = %"$out_of_gas_3040", %"$have_gas_3030" + %"$consume_3042" = sub i64 %"$gasrem_3038", %"$_literal_cost_call_3037" + store i64 %"$consume_3042", i64* @_gasrem + %"$execptr_load_3043" = load i8*, i8** @_execptr + %"$e_3045" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %e + %"$update_value_3046" = bitcast %"Map_String_Map_(String)_(String)"* %"$e_3045" to i8* + call void @_update_field(i8* %"$execptr_load_3043", i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$f_m_3044", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 0, i8* null, i8* %"$update_value_3046") ret void } define void @t14(i8* %0) { entry: - %"$_amount_1192" = getelementptr i8, i8* %0, i32 0 - %"$_amount_1193" = bitcast i8* %"$_amount_1192" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_1193" - %"$_sender_1194" = getelementptr i8, i8* %0, i32 16 - %"$_sender_1195" = bitcast i8* %"$_sender_1194" to [20 x i8]* - call void @"$t14_1159"(%Uint128 %_amount, [20 x i8]* %"$_sender_1195") + %"$_amount_3048" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3049" = bitcast i8* %"$_amount_3048" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3049" + %"$_sender_3050" = getelementptr i8, i8* %0, i32 16 + %"$_sender_3051" = bitcast i8* %"$_sender_3050" to [20 x i8]* + call void @"$t14_2945"(%Uint128 %_amount, [20 x i8]* %"$_sender_3051") ret void } -define internal void @"$t15_1196"(%Uint128 %_amount, [20 x i8]* %"$_sender_1197") { +define internal void @"$t15_3052"(%Uint128 %_amount, [20 x i8]* %"$_sender_3053") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_1197" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3053" + %"$gasrem_3054" = load i64, i64* @_gasrem + %"$gascmp_3055" = icmp ugt i64 1, %"$gasrem_3054" + br i1 %"$gascmp_3055", label %"$out_of_gas_3056", label %"$have_gas_3057" + +"$out_of_gas_3056": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3057" + +"$have_gas_3057": ; preds = %"$out_of_gas_3056", %entry + %"$consume_3058" = sub i64 %"$gasrem_3054", 1 + store i64 %"$consume_3058", i64* @_gasrem %tname = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1198", i32 0, i32 0), i32 3 }, %String* %tname + %"$gasrem_3059" = load i64, i64* @_gasrem + %"$gascmp_3060" = icmp ugt i64 1, %"$gasrem_3059" + br i1 %"$gascmp_3060", label %"$out_of_gas_3061", label %"$have_gas_3062" + +"$out_of_gas_3061": ; preds = %"$have_gas_3057" + call void @_out_of_gas() + br label %"$have_gas_3062" + +"$have_gas_3062": ; preds = %"$out_of_gas_3061", %"$have_gas_3057" + %"$consume_3063" = sub i64 %"$gasrem_3059", 1 + store i64 %"$consume_3063", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3064", i32 0, i32 0), i32 3 }, %String* %tname %m3 = alloca %"Map_String_Map_(String)_(Map_(String)_(String))"* - %"$execptr_load_1199" = load i8*, i8** @_execptr - %"$m3_1201" = call i8* @_fetch_field(i8* %"$execptr_load_1199", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m3_1200", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 0, i8* null, i32 1) - %"$m3_1202" = bitcast i8* %"$m3_1201" to %"Map_String_Map_(String)_(Map_(String)_(String))"* - store %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_1202", %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$execptr_load_3065" = load i8*, i8** @_execptr + %"$m3_3067" = call i8* @_fetch_field(i8* %"$execptr_load_3065", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m3_3066", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_70", i32 0, i8* null, i32 1) + %"$m3_3068" = bitcast i8* %"$m3_3067" to %"Map_String_Map_(String)_(Map_(String)_(String))"* + store %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_3068", %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$m3_3069" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$$m3_3069_3070" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_3069" to i8* + %"$_literal_cost_call_3071" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_70", i8* %"$$m3_3069_3070") + %"$m3_3072" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$$m3_3072_3073" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_3072" to i8* + %"$_mapsortcost_call_3074" = call i64 @_mapsortcost(i8* %"$$m3_3072_3073") + %"$gasadd_3075" = add i64 %"$_literal_cost_call_3071", %"$_mapsortcost_call_3074" + %"$gasrem_3076" = load i64, i64* @_gasrem + %"$gascmp_3077" = icmp ugt i64 %"$gasadd_3075", %"$gasrem_3076" + br i1 %"$gascmp_3077", label %"$out_of_gas_3078", label %"$have_gas_3079" + +"$out_of_gas_3078": ; preds = %"$have_gas_3062" + call void @_out_of_gas() + br label %"$have_gas_3079" + +"$have_gas_3079": ; preds = %"$out_of_gas_3078", %"$have_gas_3062" + %"$consume_3080" = sub i64 %"$gasrem_3076", %"$gasadd_3075" + store i64 %"$consume_3080", i64* @_gasrem + %"$gasrem_3081" = load i64, i64* @_gasrem + %"$gascmp_3082" = icmp ugt i64 1, %"$gasrem_3081" + br i1 %"$gascmp_3082", label %"$out_of_gas_3083", label %"$have_gas_3084" + +"$out_of_gas_3083": ; preds = %"$have_gas_3079" + call void @_out_of_gas() + br label %"$have_gas_3084" + +"$have_gas_3084": ; preds = %"$out_of_gas_3083", %"$have_gas_3079" + %"$consume_3085" = sub i64 %"$gasrem_3081", 1 + store i64 %"$consume_3085", i64* @_gasrem %m3_size = alloca %Uint32 - %"$m3_1203" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 - %"$$m3_1203_1204" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_1203" to i8* - %"$size_call_1205" = call %Uint32 @_size(i8* %"$$m3_1203_1204") - store %Uint32 %"$size_call_1205", %Uint32* %m3_size + %"$m3_3086" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$$m3_3086_3087" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_3086" to i8* + %"$size_call_3088" = call %Uint32 @_size(i8* %"$$m3_3086_3087") + store %Uint32 %"$size_call_3088", %Uint32* %m3_size + %"$gasrem_3089" = load i64, i64* @_gasrem + %"$gascmp_3090" = icmp ugt i64 1, %"$gasrem_3089" + br i1 %"$gascmp_3090", label %"$out_of_gas_3091", label %"$have_gas_3092" + +"$out_of_gas_3091": ; preds = %"$have_gas_3084" + call void @_out_of_gas() + br label %"$have_gas_3092" + +"$have_gas_3092": ; preds = %"$out_of_gas_3091", %"$have_gas_3084" + %"$consume_3093" = sub i64 %"$gasrem_3089", 1 + store i64 %"$consume_3093", i64* @_gasrem %one = alloca %Uint32 + %"$gasrem_3094" = load i64, i64* @_gasrem + %"$gascmp_3095" = icmp ugt i64 1, %"$gasrem_3094" + br i1 %"$gascmp_3095", label %"$out_of_gas_3096", label %"$have_gas_3097" + +"$out_of_gas_3096": ; preds = %"$have_gas_3092" + call void @_out_of_gas() + br label %"$have_gas_3097" + +"$have_gas_3097": ; preds = %"$out_of_gas_3096", %"$have_gas_3092" + %"$consume_3098" = sub i64 %"$gasrem_3094", 1 + store i64 %"$consume_3098", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %one + %"$gasrem_3099" = load i64, i64* @_gasrem + %"$gascmp_3100" = icmp ugt i64 1, %"$gasrem_3099" + br i1 %"$gascmp_3100", label %"$out_of_gas_3101", label %"$have_gas_3102" + +"$out_of_gas_3101": ; preds = %"$have_gas_3097" + call void @_out_of_gas() + br label %"$have_gas_3102" + +"$have_gas_3102": ; preds = %"$out_of_gas_3101", %"$have_gas_3097" + %"$consume_3103" = sub i64 %"$gasrem_3099", 1 + store i64 %"$consume_3103", i64* @_gasrem %is_one = alloca %TName_Bool* - %"$execptr_load_1206" = load i8*, i8** @_execptr - %"$m3_size_1207" = load %Uint32, %Uint32* %m3_size - %"$one_1208" = load %Uint32, %Uint32* %one - %"$eq_call_1209" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_1206", %Uint32 %"$m3_size_1207", %Uint32 %"$one_1208") - store %TName_Bool* %"$eq_call_1209", %TName_Bool** %is_one - %"$is_one_1211" = load %TName_Bool*, %TName_Bool** %is_one - %"$is_one_tag_1212" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_one_1211", i32 0, i32 0 - %"$is_one_tag_1213" = load i8, i8* %"$is_one_tag_1212" - switch i8 %"$is_one_tag_1213", label %"$empty_default_1214" [ - i8 0, label %"$True_1215" - i8 1, label %"$False_1217" + %"$execptr_load_3104" = load i8*, i8** @_execptr + %"$m3_size_3105" = load %Uint32, %Uint32* %m3_size + %"$one_3106" = load %Uint32, %Uint32* %one + %"$eq_call_3107" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_3104", %Uint32 %"$m3_size_3105", %Uint32 %"$one_3106") + store %TName_Bool* %"$eq_call_3107", %TName_Bool** %is_one + %"$gasrem_3108" = load i64, i64* @_gasrem + %"$gascmp_3109" = icmp ugt i64 2, %"$gasrem_3108" + br i1 %"$gascmp_3109", label %"$out_of_gas_3110", label %"$have_gas_3111" + +"$out_of_gas_3110": ; preds = %"$have_gas_3102" + call void @_out_of_gas() + br label %"$have_gas_3111" + +"$have_gas_3111": ; preds = %"$out_of_gas_3110", %"$have_gas_3102" + %"$consume_3112" = sub i64 %"$gasrem_3108", 2 + store i64 %"$consume_3112", i64* @_gasrem + %"$is_one_3114" = load %TName_Bool*, %TName_Bool** %is_one + %"$is_one_tag_3115" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_one_3114", i32 0, i32 0 + %"$is_one_tag_3116" = load i8, i8* %"$is_one_tag_3115" + switch i8 %"$is_one_tag_3116", label %"$empty_default_3117" [ + i8 0, label %"$True_3118" + i8 1, label %"$False_3120" ] -"$True_1215": ; preds = %entry - %"$is_one_1216" = bitcast %TName_Bool* %"$is_one_1211" to %CName_True* - br label %"$matchsucc_1210" +"$True_3118": ; preds = %"$have_gas_3111" + %"$is_one_3119" = bitcast %TName_Bool* %"$is_one_3114" to %CName_True* + br label %"$matchsucc_3113" + +"$False_3120": ; preds = %"$have_gas_3111" + %"$is_one_3121" = bitcast %TName_Bool* %"$is_one_3114" to %CName_False* + %"$gasrem_3122" = load i64, i64* @_gasrem + %"$gascmp_3123" = icmp ugt i64 1, %"$gasrem_3122" + br i1 %"$gascmp_3123", label %"$out_of_gas_3124", label %"$have_gas_3125" + +"$out_of_gas_3124": ; preds = %"$False_3120" + call void @_out_of_gas() + br label %"$have_gas_3125" -"$False_1217": ; preds = %entry - %"$is_one_1218" = bitcast %TName_Bool* %"$is_one_1211" to %CName_False* +"$have_gas_3125": ; preds = %"$out_of_gas_3124", %"$False_3120" + %"$consume_3126" = sub i64 %"$gasrem_3122", 1 + store i64 %"$consume_3126", i64* @_gasrem %err = alloca %String - store %String { i8* getelementptr inbounds ([22 x i8], [22 x i8]* @"$stringlit_1219", i32 0, i32 0), i32 22 }, %String* %err - %"$fail_msg__sender_1220" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1220" - %"$tname_1221" = load %String, %String* %tname - %"$err_1222" = load %String, %String* %err - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1220", %String %"$tname_1221", %String %"$err_1222") - br label %"$matchsucc_1210" - -"$empty_default_1214": ; preds = %entry - br label %"$matchsucc_1210" - -"$matchsucc_1210": ; preds = %"$False_1217", %"$True_1215", %"$empty_default_1214" + %"$gasrem_3127" = load i64, i64* @_gasrem + %"$gascmp_3128" = icmp ugt i64 1, %"$gasrem_3127" + br i1 %"$gascmp_3128", label %"$out_of_gas_3129", label %"$have_gas_3130" + +"$out_of_gas_3129": ; preds = %"$have_gas_3125" + call void @_out_of_gas() + br label %"$have_gas_3130" + +"$have_gas_3130": ; preds = %"$out_of_gas_3129", %"$have_gas_3125" + %"$consume_3131" = sub i64 %"$gasrem_3127", 1 + store i64 %"$consume_3131", i64* @_gasrem + store %String { i8* getelementptr inbounds ([22 x i8], [22 x i8]* @"$stringlit_3132", i32 0, i32 0), i32 22 }, %String* %err + %"$gasrem_3133" = load i64, i64* @_gasrem + %"$gascmp_3134" = icmp ugt i64 1, %"$gasrem_3133" + br i1 %"$gascmp_3134", label %"$out_of_gas_3135", label %"$have_gas_3136" + +"$out_of_gas_3135": ; preds = %"$have_gas_3130" + call void @_out_of_gas() + br label %"$have_gas_3136" + +"$have_gas_3136": ; preds = %"$out_of_gas_3135", %"$have_gas_3130" + %"$consume_3137" = sub i64 %"$gasrem_3133", 1 + store i64 %"$consume_3137", i64* @_gasrem + %"$fail_msg__sender_3138" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_3138" + %"$tname_3139" = load %String, %String* %tname + %"$err_3140" = load %String, %String* %err + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_3138", %String %"$tname_3139", %String %"$err_3140") + br label %"$matchsucc_3113" + +"$empty_default_3117": ; preds = %"$have_gas_3111" + br label %"$matchsucc_3113" + +"$matchsucc_3113": ; preds = %"$have_gas_3136", %"$True_3118", %"$empty_default_3117" + %"$gasrem_3141" = load i64, i64* @_gasrem + %"$gascmp_3142" = icmp ugt i64 1, %"$gasrem_3141" + br i1 %"$gascmp_3142", label %"$out_of_gas_3143", label %"$have_gas_3144" + +"$out_of_gas_3143": ; preds = %"$matchsucc_3113" + call void @_out_of_gas() + br label %"$have_gas_3144" + +"$have_gas_3144": ; preds = %"$out_of_gas_3143", %"$matchsucc_3113" + %"$consume_3145" = sub i64 %"$gasrem_3141", 1 + store i64 %"$consume_3145", i64* @_gasrem %key1a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1223", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_3146" = load i64, i64* @_gasrem + %"$gascmp_3147" = icmp ugt i64 1, %"$gasrem_3146" + br i1 %"$gascmp_3147", label %"$out_of_gas_3148", label %"$have_gas_3149" + +"$out_of_gas_3148": ; preds = %"$have_gas_3144" + call void @_out_of_gas() + br label %"$have_gas_3149" + +"$have_gas_3149": ; preds = %"$out_of_gas_3148", %"$have_gas_3144" + %"$consume_3150" = sub i64 %"$gasrem_3146", 1 + store i64 %"$consume_3150", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3151", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_3152" = load i64, i64* @_gasrem + %"$gascmp_3153" = icmp ugt i64 1, %"$gasrem_3152" + br i1 %"$gascmp_3153", label %"$out_of_gas_3154", label %"$have_gas_3155" + +"$out_of_gas_3154": ; preds = %"$have_gas_3149" + call void @_out_of_gas() + br label %"$have_gas_3155" + +"$have_gas_3155": ; preds = %"$out_of_gas_3154", %"$have_gas_3149" + %"$consume_3156" = sub i64 %"$gasrem_3152", 1 + store i64 %"$consume_3156", i64* @_gasrem %key2a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1224", i32 0, i32 0), i32 5 }, %String* %key2a + %"$gasrem_3157" = load i64, i64* @_gasrem + %"$gascmp_3158" = icmp ugt i64 1, %"$gasrem_3157" + br i1 %"$gascmp_3158", label %"$out_of_gas_3159", label %"$have_gas_3160" + +"$out_of_gas_3159": ; preds = %"$have_gas_3155" + call void @_out_of_gas() + br label %"$have_gas_3160" + +"$have_gas_3160": ; preds = %"$out_of_gas_3159", %"$have_gas_3155" + %"$consume_3161" = sub i64 %"$gasrem_3157", 1 + store i64 %"$consume_3161", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3162", i32 0, i32 0), i32 5 }, %String* %key2a + %"$gasrem_3163" = load i64, i64* @_gasrem + %"$gascmp_3164" = icmp ugt i64 1, %"$gasrem_3163" + br i1 %"$gascmp_3164", label %"$out_of_gas_3165", label %"$have_gas_3166" + +"$out_of_gas_3165": ; preds = %"$have_gas_3160" + call void @_out_of_gas() + br label %"$have_gas_3166" + +"$have_gas_3166": ; preds = %"$out_of_gas_3165", %"$have_gas_3160" + %"$consume_3167" = sub i64 %"$gasrem_3163", 1 + store i64 %"$consume_3167", i64* @_gasrem %m2o = alloca %"TName_Option_Map_(String)_(Map_(String)_(String))"* - %"$execptr_load_1225" = load i8*, i8** @_execptr - %"$m3_1226" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 - %"$$m3_1226_1227" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_1226" to i8* - %"$get_key1a_1228" = alloca %String - %"$key1a_1229" = load %String, %String* %key1a - store %String %"$key1a_1229", %String* %"$get_key1a_1228" - %"$$get_key1a_1228_1230" = bitcast %String* %"$get_key1a_1228" to i8* - %"$get_call_1231" = call i8* @_get(i8* %"$execptr_load_1225", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m3_1226_1227", i8* %"$$get_key1a_1228_1230") - %"$_get_1232" = bitcast i8* %"$get_call_1231" to %"TName_Option_Map_(String)_(Map_(String)_(String))"* - store %"TName_Option_Map_(String)_(Map_(String)_(String))"* %"$_get_1232", %"TName_Option_Map_(String)_(Map_(String)_(String))"** %m2o - %"$m2o_1234" = load %"TName_Option_Map_(String)_(Map_(String)_(String))"*, %"TName_Option_Map_(String)_(Map_(String)_(String))"** %m2o - %"$m2o_tag_1235" = getelementptr inbounds %"TName_Option_Map_(String)_(Map_(String)_(String))", %"TName_Option_Map_(String)_(Map_(String)_(String))"* %"$m2o_1234", i32 0, i32 0 - %"$m2o_tag_1236" = load i8, i8* %"$m2o_tag_1235" - switch i8 %"$m2o_tag_1236", label %"$empty_default_1237" [ - i8 0, label %"$Some_1238" - i8 1, label %"$None_1305" + %"$execptr_load_3168" = load i8*, i8** @_execptr + %"$m3_3169" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$$m3_3169_3170" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_3169" to i8* + %"$get_key1a_3171" = alloca %String + %"$key1a_3172" = load %String, %String* %key1a + store %String %"$key1a_3172", %String* %"$get_key1a_3171" + %"$$get_key1a_3171_3173" = bitcast %String* %"$get_key1a_3171" to i8* + %"$get_call_3174" = call i8* @_get(i8* %"$execptr_load_3168", %_TyDescrTy_Typ* @"$TyDescr_Map_70", i8* %"$$m3_3169_3170", i8* %"$$get_key1a_3171_3173") + %"$_get_3175" = bitcast i8* %"$get_call_3174" to %"TName_Option_Map_(String)_(Map_(String)_(String))"* + store %"TName_Option_Map_(String)_(Map_(String)_(String))"* %"$_get_3175", %"TName_Option_Map_(String)_(Map_(String)_(String))"** %m2o + %"$gasrem_3176" = load i64, i64* @_gasrem + %"$gascmp_3177" = icmp ugt i64 2, %"$gasrem_3176" + br i1 %"$gascmp_3177", label %"$out_of_gas_3178", label %"$have_gas_3179" + +"$out_of_gas_3178": ; preds = %"$have_gas_3166" + call void @_out_of_gas() + br label %"$have_gas_3179" + +"$have_gas_3179": ; preds = %"$out_of_gas_3178", %"$have_gas_3166" + %"$consume_3180" = sub i64 %"$gasrem_3176", 2 + store i64 %"$consume_3180", i64* @_gasrem + %"$m2o_3182" = load %"TName_Option_Map_(String)_(Map_(String)_(String))"*, %"TName_Option_Map_(String)_(Map_(String)_(String))"** %m2o + %"$m2o_tag_3183" = getelementptr inbounds %"TName_Option_Map_(String)_(Map_(String)_(String))", %"TName_Option_Map_(String)_(Map_(String)_(String))"* %"$m2o_3182", i32 0, i32 0 + %"$m2o_tag_3184" = load i8, i8* %"$m2o_tag_3183" + switch i8 %"$m2o_tag_3184", label %"$empty_default_3185" [ + i8 0, label %"$Some_3186" + i8 1, label %"$None_3348" ] -"$Some_1238": ; preds = %"$matchsucc_1210" - %"$m2o_1239" = bitcast %"TName_Option_Map_(String)_(Map_(String)_(String))"* %"$m2o_1234" to %"CName_Some_Map_(String)_(Map_(String)_(String))"* - %"$m2_gep_1240" = getelementptr inbounds %"CName_Some_Map_(String)_(Map_(String)_(String))", %"CName_Some_Map_(String)_(Map_(String)_(String))"* %"$m2o_1239", i32 0, i32 1 - %"$m2_load_1241" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %"$m2_gep_1240" +"$Some_3186": ; preds = %"$have_gas_3179" + %"$m2o_3187" = bitcast %"TName_Option_Map_(String)_(Map_(String)_(String))"* %"$m2o_3182" to %"CName_Some_Map_(String)_(Map_(String)_(String))"* + %"$m2_gep_3188" = getelementptr inbounds %"CName_Some_Map_(String)_(Map_(String)_(String))", %"CName_Some_Map_(String)_(Map_(String)_(String))"* %"$m2o_3187", i32 0, i32 1 + %"$m2_load_3189" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %"$m2_gep_3188" %m2 = alloca %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$m2_load_1241", %"Map_String_Map_(String)_(String)"** %m2 + store %"Map_String_Map_(String)_(String)"* %"$m2_load_3189", %"Map_String_Map_(String)_(String)"** %m2 + %"$gasrem_3190" = load i64, i64* @_gasrem + %"$gascmp_3191" = icmp ugt i64 1, %"$gasrem_3190" + br i1 %"$gascmp_3191", label %"$out_of_gas_3192", label %"$have_gas_3193" + +"$out_of_gas_3192": ; preds = %"$Some_3186" + call void @_out_of_gas() + br label %"$have_gas_3193" + +"$have_gas_3193": ; preds = %"$out_of_gas_3192", %"$Some_3186" + %"$consume_3194" = sub i64 %"$gasrem_3190", 1 + store i64 %"$consume_3194", i64* @_gasrem %m2_size = alloca %Uint32 - %"$m2_1242" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 - %"$$m2_1242_1243" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_1242" to i8* - %"$size_call_1244" = call %Uint32 @_size(i8* %"$$m2_1242_1243") - store %Uint32 %"$size_call_1244", %Uint32* %m2_size + %"$m2_3195" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 + %"$$m2_3195_3196" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_3195" to i8* + %"$size_call_3197" = call %Uint32 @_size(i8* %"$$m2_3195_3196") + store %Uint32 %"$size_call_3197", %Uint32* %m2_size + %"$gasrem_3198" = load i64, i64* @_gasrem + %"$gascmp_3199" = icmp ugt i64 1, %"$gasrem_3198" + br i1 %"$gascmp_3199", label %"$out_of_gas_3200", label %"$have_gas_3201" + +"$out_of_gas_3200": ; preds = %"$have_gas_3193" + call void @_out_of_gas() + br label %"$have_gas_3201" + +"$have_gas_3201": ; preds = %"$out_of_gas_3200", %"$have_gas_3193" + %"$consume_3202" = sub i64 %"$gasrem_3198", 1 + store i64 %"$consume_3202", i64* @_gasrem %is_one_1 = alloca %TName_Bool* - %"$execptr_load_1245" = load i8*, i8** @_execptr - %"$m2_size_1246" = load %Uint32, %Uint32* %m2_size - %"$one_1247" = load %Uint32, %Uint32* %one - %"$eq_call_1248" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_1245", %Uint32 %"$m2_size_1246", %Uint32 %"$one_1247") - store %TName_Bool* %"$eq_call_1248", %TName_Bool** %is_one_1 - %"$is_one_1_1250" = load %TName_Bool*, %TName_Bool** %is_one_1 - %"$is_one_1_tag_1251" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_one_1_1250", i32 0, i32 0 - %"$is_one_1_tag_1252" = load i8, i8* %"$is_one_1_tag_1251" - switch i8 %"$is_one_1_tag_1252", label %"$empty_default_1253" [ - i8 0, label %"$True_1254" - i8 1, label %"$False_1299" + %"$execptr_load_3203" = load i8*, i8** @_execptr + %"$m2_size_3204" = load %Uint32, %Uint32* %m2_size + %"$one_3205" = load %Uint32, %Uint32* %one + %"$eq_call_3206" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_3203", %Uint32 %"$m2_size_3204", %Uint32 %"$one_3205") + store %TName_Bool* %"$eq_call_3206", %TName_Bool** %is_one_1 + %"$gasrem_3207" = load i64, i64* @_gasrem + %"$gascmp_3208" = icmp ugt i64 2, %"$gasrem_3207" + br i1 %"$gascmp_3208", label %"$out_of_gas_3209", label %"$have_gas_3210" + +"$out_of_gas_3209": ; preds = %"$have_gas_3201" + call void @_out_of_gas() + br label %"$have_gas_3210" + +"$have_gas_3210": ; preds = %"$out_of_gas_3209", %"$have_gas_3201" + %"$consume_3211" = sub i64 %"$gasrem_3207", 2 + store i64 %"$consume_3211", i64* @_gasrem + %"$is_one_1_3213" = load %TName_Bool*, %TName_Bool** %is_one_1 + %"$is_one_1_tag_3214" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_one_1_3213", i32 0, i32 0 + %"$is_one_1_tag_3215" = load i8, i8* %"$is_one_1_tag_3214" + switch i8 %"$is_one_1_tag_3215", label %"$empty_default_3216" [ + i8 0, label %"$True_3217" + i8 1, label %"$False_3327" ] -"$True_1254": ; preds = %"$Some_1238" - %"$is_one_1_1255" = bitcast %TName_Bool* %"$is_one_1_1250" to %CName_True* +"$True_3217": ; preds = %"$have_gas_3210" + %"$is_one_1_3218" = bitcast %TName_Bool* %"$is_one_1_3213" to %CName_True* + %"$gasrem_3219" = load i64, i64* @_gasrem + %"$gascmp_3220" = icmp ugt i64 1, %"$gasrem_3219" + br i1 %"$gascmp_3220", label %"$out_of_gas_3221", label %"$have_gas_3222" + +"$out_of_gas_3221": ; preds = %"$True_3217" + call void @_out_of_gas() + br label %"$have_gas_3222" + +"$have_gas_3222": ; preds = %"$out_of_gas_3221", %"$True_3217" + %"$consume_3223" = sub i64 %"$gasrem_3219", 1 + store i64 %"$consume_3223", i64* @_gasrem %m1o = alloca %"TName_Option_Map_(String)_(String)"* - %"$execptr_load_1256" = load i8*, i8** @_execptr - %"$m2_1257" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 - %"$$m2_1257_1258" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_1257" to i8* - %"$get_key2a_1259" = alloca %String - %"$key2a_1260" = load %String, %String* %key2a - store %String %"$key2a_1260", %String* %"$get_key2a_1259" - %"$$get_key2a_1259_1261" = bitcast %String* %"$get_key2a_1259" to i8* - %"$get_call_1262" = call i8* @_get(i8* %"$execptr_load_1256", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m2_1257_1258", i8* %"$$get_key2a_1259_1261") - %"$_get_1263" = bitcast i8* %"$get_call_1262" to %"TName_Option_Map_(String)_(String)"* - store %"TName_Option_Map_(String)_(String)"* %"$_get_1263", %"TName_Option_Map_(String)_(String)"** %m1o - %"$m1o_1265" = load %"TName_Option_Map_(String)_(String)"*, %"TName_Option_Map_(String)_(String)"** %m1o - %"$m1o_tag_1266" = getelementptr inbounds %"TName_Option_Map_(String)_(String)", %"TName_Option_Map_(String)_(String)"* %"$m1o_1265", i32 0, i32 0 - %"$m1o_tag_1267" = load i8, i8* %"$m1o_tag_1266" - switch i8 %"$m1o_tag_1267", label %"$empty_default_1268" [ - i8 0, label %"$Some_1269" - i8 1, label %"$None_1293" + %"$execptr_load_3224" = load i8*, i8** @_execptr + %"$m2_3225" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 + %"$$m2_3225_3226" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_3225" to i8* + %"$get_key2a_3227" = alloca %String + %"$key2a_3228" = load %String, %String* %key2a + store %String %"$key2a_3228", %String* %"$get_key2a_3227" + %"$$get_key2a_3227_3229" = bitcast %String* %"$get_key2a_3227" to i8* + %"$get_call_3230" = call i8* @_get(i8* %"$execptr_load_3224", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m2_3225_3226", i8* %"$$get_key2a_3227_3229") + %"$_get_3231" = bitcast i8* %"$get_call_3230" to %"TName_Option_Map_(String)_(String)"* + store %"TName_Option_Map_(String)_(String)"* %"$_get_3231", %"TName_Option_Map_(String)_(String)"** %m1o + %"$gasrem_3232" = load i64, i64* @_gasrem + %"$gascmp_3233" = icmp ugt i64 2, %"$gasrem_3232" + br i1 %"$gascmp_3233", label %"$out_of_gas_3234", label %"$have_gas_3235" + +"$out_of_gas_3234": ; preds = %"$have_gas_3222" + call void @_out_of_gas() + br label %"$have_gas_3235" + +"$have_gas_3235": ; preds = %"$out_of_gas_3234", %"$have_gas_3222" + %"$consume_3236" = sub i64 %"$gasrem_3232", 2 + store i64 %"$consume_3236", i64* @_gasrem + %"$m1o_3238" = load %"TName_Option_Map_(String)_(String)"*, %"TName_Option_Map_(String)_(String)"** %m1o + %"$m1o_tag_3239" = getelementptr inbounds %"TName_Option_Map_(String)_(String)", %"TName_Option_Map_(String)_(String)"* %"$m1o_3238", i32 0, i32 0 + %"$m1o_tag_3240" = load i8, i8* %"$m1o_tag_3239" + switch i8 %"$m1o_tag_3240", label %"$empty_default_3241" [ + i8 0, label %"$Some_3242" + i8 1, label %"$None_3306" ] -"$Some_1269": ; preds = %"$True_1254" - %"$m1o_1270" = bitcast %"TName_Option_Map_(String)_(String)"* %"$m1o_1265" to %"CName_Some_Map_(String)_(String)"* - %"$m1_gep_1271" = getelementptr inbounds %"CName_Some_Map_(String)_(String)", %"CName_Some_Map_(String)_(String)"* %"$m1o_1270", i32 0, i32 1 - %"$m1_load_1272" = load %Map_String_String*, %Map_String_String** %"$m1_gep_1271" +"$Some_3242": ; preds = %"$have_gas_3235" + %"$m1o_3243" = bitcast %"TName_Option_Map_(String)_(String)"* %"$m1o_3238" to %"CName_Some_Map_(String)_(String)"* + %"$m1_gep_3244" = getelementptr inbounds %"CName_Some_Map_(String)_(String)", %"CName_Some_Map_(String)_(String)"* %"$m1o_3243", i32 0, i32 1 + %"$m1_load_3245" = load %Map_String_String*, %Map_String_String** %"$m1_gep_3244" %m1 = alloca %Map_String_String* - store %Map_String_String* %"$m1_load_1272", %Map_String_String** %m1 + store %Map_String_String* %"$m1_load_3245", %Map_String_String** %m1 + %"$gasrem_3246" = load i64, i64* @_gasrem + %"$gascmp_3247" = icmp ugt i64 1, %"$gasrem_3246" + br i1 %"$gascmp_3247", label %"$out_of_gas_3248", label %"$have_gas_3249" + +"$out_of_gas_3248": ; preds = %"$Some_3242" + call void @_out_of_gas() + br label %"$have_gas_3249" + +"$have_gas_3249": ; preds = %"$out_of_gas_3248", %"$Some_3242" + %"$consume_3250" = sub i64 %"$gasrem_3246", 1 + store i64 %"$consume_3250", i64* @_gasrem %m1_size = alloca %Uint32 - %"$m1_1273" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_1273_1274" = bitcast %Map_String_String* %"$m1_1273" to i8* - %"$size_call_1275" = call %Uint32 @_size(i8* %"$$m1_1273_1274") - store %Uint32 %"$size_call_1275", %Uint32* %m1_size + %"$m1_3251" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_3251_3252" = bitcast %Map_String_String* %"$m1_3251" to i8* + %"$size_call_3253" = call %Uint32 @_size(i8* %"$$m1_3251_3252") + store %Uint32 %"$size_call_3253", %Uint32* %m1_size + %"$gasrem_3254" = load i64, i64* @_gasrem + %"$gascmp_3255" = icmp ugt i64 1, %"$gasrem_3254" + br i1 %"$gascmp_3255", label %"$out_of_gas_3256", label %"$have_gas_3257" + +"$out_of_gas_3256": ; preds = %"$have_gas_3249" + call void @_out_of_gas() + br label %"$have_gas_3257" + +"$have_gas_3257": ; preds = %"$out_of_gas_3256", %"$have_gas_3249" + %"$consume_3258" = sub i64 %"$gasrem_3254", 1 + store i64 %"$consume_3258", i64* @_gasrem %zero = alloca %Uint32 + %"$gasrem_3259" = load i64, i64* @_gasrem + %"$gascmp_3260" = icmp ugt i64 1, %"$gasrem_3259" + br i1 %"$gascmp_3260", label %"$out_of_gas_3261", label %"$have_gas_3262" + +"$out_of_gas_3261": ; preds = %"$have_gas_3257" + call void @_out_of_gas() + br label %"$have_gas_3262" + +"$have_gas_3262": ; preds = %"$out_of_gas_3261", %"$have_gas_3257" + %"$consume_3263" = sub i64 %"$gasrem_3259", 1 + store i64 %"$consume_3263", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %zero - %is_empty = alloca %TName_Bool* - %"$execptr_load_1276" = load i8*, i8** @_execptr - %"$m1_size_1277" = load %Uint32, %Uint32* %m1_size - %"$zero_1278" = load %Uint32, %Uint32* %zero - %"$eq_call_1279" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_1276", %Uint32 %"$m1_size_1277", %Uint32 %"$zero_1278") - store %TName_Bool* %"$eq_call_1279", %TName_Bool** %is_empty - %"$is_empty_1281" = load %TName_Bool*, %TName_Bool** %is_empty - %"$is_empty_tag_1282" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_1281", i32 0, i32 0 - %"$is_empty_tag_1283" = load i8, i8* %"$is_empty_tag_1282" - switch i8 %"$is_empty_tag_1283", label %"$empty_default_1284" [ - i8 0, label %"$True_1285" - i8 1, label %"$False_1287" - ] + %"$gasrem_3264" = load i64, i64* @_gasrem + %"$gascmp_3265" = icmp ugt i64 1, %"$gasrem_3264" + br i1 %"$gascmp_3265", label %"$out_of_gas_3266", label %"$have_gas_3267" -"$True_1285": ; preds = %"$Some_1269" - %"$is_empty_1286" = bitcast %TName_Bool* %"$is_empty_1281" to %CName_True* - br label %"$matchsucc_1280" +"$out_of_gas_3266": ; preds = %"$have_gas_3262" + call void @_out_of_gas() + br label %"$have_gas_3267" -"$False_1287": ; preds = %"$Some_1269" - %"$is_empty_1288" = bitcast %TName_Bool* %"$is_empty_1281" to %CName_False* - %err1 = alloca %String - store %String { i8* getelementptr inbounds ([36 x i8], [36 x i8]* @"$stringlit_1289", i32 0, i32 0), i32 36 }, %String* %err1 - %"$fail_msg__sender_1290" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1290" - %"$tname_1291" = load %String, %String* %tname - %"$err_1292" = load %String, %String* %err1 - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1290", %String %"$tname_1291", %String %"$err_1292") - br label %"$matchsucc_1280" - -"$empty_default_1284": ; preds = %"$Some_1269" - br label %"$matchsucc_1280" - -"$matchsucc_1280": ; preds = %"$False_1287", %"$True_1285", %"$empty_default_1284" - br label %"$matchsucc_1264" +"$have_gas_3267": ; preds = %"$out_of_gas_3266", %"$have_gas_3262" + %"$consume_3268" = sub i64 %"$gasrem_3264", 1 + store i64 %"$consume_3268", i64* @_gasrem + %is_empty = alloca %TName_Bool* + %"$execptr_load_3269" = load i8*, i8** @_execptr + %"$m1_size_3270" = load %Uint32, %Uint32* %m1_size + %"$zero_3271" = load %Uint32, %Uint32* %zero + %"$eq_call_3272" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_3269", %Uint32 %"$m1_size_3270", %Uint32 %"$zero_3271") + store %TName_Bool* %"$eq_call_3272", %TName_Bool** %is_empty + %"$gasrem_3273" = load i64, i64* @_gasrem + %"$gascmp_3274" = icmp ugt i64 2, %"$gasrem_3273" + br i1 %"$gascmp_3274", label %"$out_of_gas_3275", label %"$have_gas_3276" + +"$out_of_gas_3275": ; preds = %"$have_gas_3267" + call void @_out_of_gas() + br label %"$have_gas_3276" + +"$have_gas_3276": ; preds = %"$out_of_gas_3275", %"$have_gas_3267" + %"$consume_3277" = sub i64 %"$gasrem_3273", 2 + store i64 %"$consume_3277", i64* @_gasrem + %"$is_empty_3279" = load %TName_Bool*, %TName_Bool** %is_empty + %"$is_empty_tag_3280" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_3279", i32 0, i32 0 + %"$is_empty_tag_3281" = load i8, i8* %"$is_empty_tag_3280" + switch i8 %"$is_empty_tag_3281", label %"$empty_default_3282" [ + i8 0, label %"$True_3283" + i8 1, label %"$False_3285" + ] -"$None_1293": ; preds = %"$True_1254" - %"$m1o_1294" = bitcast %"TName_Option_Map_(String)_(String)"* %"$m1o_1265" to %"CName_None_Map_(String)_(String)"* - %err2 = alloca %String - store %String { i8* getelementptr inbounds ([19 x i8], [19 x i8]* @"$stringlit_1295", i32 0, i32 0), i32 19 }, %String* %err2 - %"$fail_msg__sender_1296" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1296" - %"$tname_1297" = load %String, %String* %tname - %"$err_1298" = load %String, %String* %err2 - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1296", %String %"$tname_1297", %String %"$err_1298") - br label %"$matchsucc_1264" +"$True_3283": ; preds = %"$have_gas_3276" + %"$is_empty_3284" = bitcast %TName_Bool* %"$is_empty_3279" to %CName_True* + br label %"$matchsucc_3278" -"$empty_default_1268": ; preds = %"$True_1254" - br label %"$matchsucc_1264" +"$False_3285": ; preds = %"$have_gas_3276" + %"$is_empty_3286" = bitcast %TName_Bool* %"$is_empty_3279" to %CName_False* + %"$gasrem_3287" = load i64, i64* @_gasrem + %"$gascmp_3288" = icmp ugt i64 1, %"$gasrem_3287" + br i1 %"$gascmp_3288", label %"$out_of_gas_3289", label %"$have_gas_3290" -"$matchsucc_1264": ; preds = %"$None_1293", %"$matchsucc_1280", %"$empty_default_1268" - br label %"$matchsucc_1249" +"$out_of_gas_3289": ; preds = %"$False_3285" + call void @_out_of_gas() + br label %"$have_gas_3290" -"$False_1299": ; preds = %"$Some_1238" - %"$is_one_1_1300" = bitcast %TName_Bool* %"$is_one_1_1250" to %CName_False* +"$have_gas_3290": ; preds = %"$out_of_gas_3289", %"$False_3285" + %"$consume_3291" = sub i64 %"$gasrem_3287", 1 + store i64 %"$consume_3291", i64* @_gasrem + %err1 = alloca %String + %"$gasrem_3292" = load i64, i64* @_gasrem + %"$gascmp_3293" = icmp ugt i64 1, %"$gasrem_3292" + br i1 %"$gascmp_3293", label %"$out_of_gas_3294", label %"$have_gas_3295" + +"$out_of_gas_3294": ; preds = %"$have_gas_3290" + call void @_out_of_gas() + br label %"$have_gas_3295" + +"$have_gas_3295": ; preds = %"$out_of_gas_3294", %"$have_gas_3290" + %"$consume_3296" = sub i64 %"$gasrem_3292", 1 + store i64 %"$consume_3296", i64* @_gasrem + store %String { i8* getelementptr inbounds ([36 x i8], [36 x i8]* @"$stringlit_3297", i32 0, i32 0), i32 36 }, %String* %err1 + %"$gasrem_3298" = load i64, i64* @_gasrem + %"$gascmp_3299" = icmp ugt i64 1, %"$gasrem_3298" + br i1 %"$gascmp_3299", label %"$out_of_gas_3300", label %"$have_gas_3301" + +"$out_of_gas_3300": ; preds = %"$have_gas_3295" + call void @_out_of_gas() + br label %"$have_gas_3301" + +"$have_gas_3301": ; preds = %"$out_of_gas_3300", %"$have_gas_3295" + %"$consume_3302" = sub i64 %"$gasrem_3298", 1 + store i64 %"$consume_3302", i64* @_gasrem + %"$fail_msg__sender_3303" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_3303" + %"$tname_3304" = load %String, %String* %tname + %"$err_3305" = load %String, %String* %err1 + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_3303", %String %"$tname_3304", %String %"$err_3305") + br label %"$matchsucc_3278" + +"$empty_default_3282": ; preds = %"$have_gas_3276" + br label %"$matchsucc_3278" + +"$matchsucc_3278": ; preds = %"$have_gas_3301", %"$True_3283", %"$empty_default_3282" + br label %"$matchsucc_3237" + +"$None_3306": ; preds = %"$have_gas_3235" + %"$m1o_3307" = bitcast %"TName_Option_Map_(String)_(String)"* %"$m1o_3238" to %"CName_None_Map_(String)_(String)"* + %"$gasrem_3308" = load i64, i64* @_gasrem + %"$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 = %"$None_3306" + call void @_out_of_gas() + br label %"$have_gas_3311" + +"$have_gas_3311": ; preds = %"$out_of_gas_3310", %"$None_3306" + %"$consume_3312" = sub i64 %"$gasrem_3308", 1 + store i64 %"$consume_3312", i64* @_gasrem + %err2 = alloca %String + %"$gasrem_3313" = load i64, i64* @_gasrem + %"$gascmp_3314" = icmp ugt i64 1, %"$gasrem_3313" + br i1 %"$gascmp_3314", label %"$out_of_gas_3315", label %"$have_gas_3316" + +"$out_of_gas_3315": ; preds = %"$have_gas_3311" + call void @_out_of_gas() + br label %"$have_gas_3316" + +"$have_gas_3316": ; preds = %"$out_of_gas_3315", %"$have_gas_3311" + %"$consume_3317" = sub i64 %"$gasrem_3313", 1 + store i64 %"$consume_3317", i64* @_gasrem + store %String { i8* getelementptr inbounds ([19 x i8], [19 x i8]* @"$stringlit_3318", i32 0, i32 0), i32 19 }, %String* %err2 + %"$gasrem_3319" = load i64, i64* @_gasrem + %"$gascmp_3320" = icmp ugt i64 1, %"$gasrem_3319" + br i1 %"$gascmp_3320", label %"$out_of_gas_3321", label %"$have_gas_3322" + +"$out_of_gas_3321": ; preds = %"$have_gas_3316" + call void @_out_of_gas() + br label %"$have_gas_3322" + +"$have_gas_3322": ; preds = %"$out_of_gas_3321", %"$have_gas_3316" + %"$consume_3323" = sub i64 %"$gasrem_3319", 1 + store i64 %"$consume_3323", i64* @_gasrem + %"$fail_msg__sender_3324" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_3324" + %"$tname_3325" = load %String, %String* %tname + %"$err_3326" = load %String, %String* %err2 + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_3324", %String %"$tname_3325", %String %"$err_3326") + br label %"$matchsucc_3237" + +"$empty_default_3241": ; preds = %"$have_gas_3235" + br label %"$matchsucc_3237" + +"$matchsucc_3237": ; preds = %"$have_gas_3322", %"$matchsucc_3278", %"$empty_default_3241" + br label %"$matchsucc_3212" + +"$False_3327": ; preds = %"$have_gas_3210" + %"$is_one_1_3328" = bitcast %TName_Bool* %"$is_one_1_3213" to %CName_False* + %"$gasrem_3329" = load i64, i64* @_gasrem + %"$gascmp_3330" = icmp ugt i64 1, %"$gasrem_3329" + br i1 %"$gascmp_3330", label %"$out_of_gas_3331", label %"$have_gas_3332" + +"$out_of_gas_3331": ; preds = %"$False_3327" + call void @_out_of_gas() + br label %"$have_gas_3332" + +"$have_gas_3332": ; preds = %"$out_of_gas_3331", %"$False_3327" + %"$consume_3333" = sub i64 %"$gasrem_3329", 1 + store i64 %"$consume_3333", i64* @_gasrem %err3 = alloca %String - store %String { i8* getelementptr inbounds ([28 x i8], [28 x i8]* @"$stringlit_1301", i32 0, i32 0), i32 28 }, %String* %err3 - %"$fail_msg__sender_1302" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1302" - %"$tname_1303" = load %String, %String* %tname - %"$err_1304" = load %String, %String* %err3 - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1302", %String %"$tname_1303", %String %"$err_1304") - br label %"$matchsucc_1249" - -"$empty_default_1253": ; preds = %"$Some_1238" - br label %"$matchsucc_1249" - -"$matchsucc_1249": ; preds = %"$False_1299", %"$matchsucc_1264", %"$empty_default_1253" - br label %"$matchsucc_1233" - -"$None_1305": ; preds = %"$matchsucc_1210" - %"$m2o_1306" = bitcast %"TName_Option_Map_(String)_(Map_(String)_(String))"* %"$m2o_1234" to %"CName_None_Map_(String)_(Map_(String)_(String))"* + %"$gasrem_3334" = load i64, i64* @_gasrem + %"$gascmp_3335" = icmp ugt i64 1, %"$gasrem_3334" + br i1 %"$gascmp_3335", label %"$out_of_gas_3336", label %"$have_gas_3337" + +"$out_of_gas_3336": ; preds = %"$have_gas_3332" + call void @_out_of_gas() + br label %"$have_gas_3337" + +"$have_gas_3337": ; preds = %"$out_of_gas_3336", %"$have_gas_3332" + %"$consume_3338" = sub i64 %"$gasrem_3334", 1 + store i64 %"$consume_3338", i64* @_gasrem + store %String { i8* getelementptr inbounds ([28 x i8], [28 x i8]* @"$stringlit_3339", i32 0, i32 0), i32 28 }, %String* %err3 + %"$gasrem_3340" = load i64, i64* @_gasrem + %"$gascmp_3341" = icmp ugt i64 1, %"$gasrem_3340" + br i1 %"$gascmp_3341", label %"$out_of_gas_3342", label %"$have_gas_3343" + +"$out_of_gas_3342": ; preds = %"$have_gas_3337" + call void @_out_of_gas() + br label %"$have_gas_3343" + +"$have_gas_3343": ; preds = %"$out_of_gas_3342", %"$have_gas_3337" + %"$consume_3344" = sub i64 %"$gasrem_3340", 1 + store i64 %"$consume_3344", i64* @_gasrem + %"$fail_msg__sender_3345" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_3345" + %"$tname_3346" = load %String, %String* %tname + %"$err_3347" = load %String, %String* %err3 + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_3345", %String %"$tname_3346", %String %"$err_3347") + br label %"$matchsucc_3212" + +"$empty_default_3216": ; preds = %"$have_gas_3210" + br label %"$matchsucc_3212" + +"$matchsucc_3212": ; preds = %"$have_gas_3343", %"$matchsucc_3237", %"$empty_default_3216" + br label %"$matchsucc_3181" + +"$None_3348": ; preds = %"$have_gas_3179" + %"$m2o_3349" = bitcast %"TName_Option_Map_(String)_(Map_(String)_(String))"* %"$m2o_3182" to %"CName_None_Map_(String)_(Map_(String)_(String))"* + %"$gasrem_3350" = load i64, i64* @_gasrem + %"$gascmp_3351" = icmp ugt i64 1, %"$gasrem_3350" + br i1 %"$gascmp_3351", label %"$out_of_gas_3352", label %"$have_gas_3353" + +"$out_of_gas_3352": ; preds = %"$None_3348" + call void @_out_of_gas() + br label %"$have_gas_3353" + +"$have_gas_3353": ; preds = %"$out_of_gas_3352", %"$None_3348" + %"$consume_3354" = sub i64 %"$gasrem_3350", 1 + store i64 %"$consume_3354", i64* @_gasrem %err4 = alloca %String - store %String { i8* getelementptr inbounds ([19 x i8], [19 x i8]* @"$stringlit_1307", i32 0, i32 0), i32 19 }, %String* %err4 - %"$fail_msg__sender_1308" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1308" - %"$tname_1309" = load %String, %String* %tname - %"$err_1310" = load %String, %String* %err4 - call void @"$fail_msg_200"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1308", %String %"$tname_1309", %String %"$err_1310") - br label %"$matchsucc_1233" - -"$empty_default_1237": ; preds = %"$matchsucc_1210" - br label %"$matchsucc_1233" - -"$matchsucc_1233": ; preds = %"$None_1305", %"$matchsucc_1249", %"$empty_default_1237" + %"$gasrem_3355" = load i64, i64* @_gasrem + %"$gascmp_3356" = icmp ugt i64 1, %"$gasrem_3355" + br i1 %"$gascmp_3356", label %"$out_of_gas_3357", label %"$have_gas_3358" + +"$out_of_gas_3357": ; preds = %"$have_gas_3353" + call void @_out_of_gas() + br label %"$have_gas_3358" + +"$have_gas_3358": ; preds = %"$out_of_gas_3357", %"$have_gas_3353" + %"$consume_3359" = sub i64 %"$gasrem_3355", 1 + store i64 %"$consume_3359", i64* @_gasrem + store %String { i8* getelementptr inbounds ([19 x i8], [19 x i8]* @"$stringlit_3360", i32 0, i32 0), i32 19 }, %String* %err4 + %"$gasrem_3361" = load i64, i64* @_gasrem + %"$gascmp_3362" = icmp ugt i64 1, %"$gasrem_3361" + br i1 %"$gascmp_3362", label %"$out_of_gas_3363", label %"$have_gas_3364" + +"$out_of_gas_3363": ; preds = %"$have_gas_3358" + call void @_out_of_gas() + br label %"$have_gas_3364" + +"$have_gas_3364": ; preds = %"$out_of_gas_3363", %"$have_gas_3358" + %"$consume_3365" = sub i64 %"$gasrem_3361", 1 + store i64 %"$consume_3365", i64* @_gasrem + %"$fail_msg__sender_3366" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_3366" + %"$tname_3367" = load %String, %String* %tname + %"$err_3368" = load %String, %String* %err4 + call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_3366", %String %"$tname_3367", %String %"$err_3368") + br label %"$matchsucc_3181" + +"$empty_default_3185": ; preds = %"$have_gas_3179" + br label %"$matchsucc_3181" + +"$matchsucc_3181": ; preds = %"$have_gas_3364", %"$matchsucc_3212", %"$empty_default_3185" + %"$gasrem_3369" = load i64, i64* @_gasrem + %"$gascmp_3370" = icmp ugt i64 1, %"$gasrem_3369" + br i1 %"$gascmp_3370", label %"$out_of_gas_3371", label %"$have_gas_3372" + +"$out_of_gas_3371": ; preds = %"$matchsucc_3181" + call void @_out_of_gas() + br label %"$have_gas_3372" + +"$have_gas_3372": ; preds = %"$out_of_gas_3371", %"$matchsucc_3181" + %"$consume_3373" = sub i64 %"$gasrem_3369", 1 + store i64 %"$consume_3373", i64* @_gasrem %key1b = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1311", i32 0, i32 0), i32 5 }, %String* %key1b + %"$gasrem_3374" = load i64, i64* @_gasrem + %"$gascmp_3375" = icmp ugt i64 1, %"$gasrem_3374" + br i1 %"$gascmp_3375", label %"$out_of_gas_3376", label %"$have_gas_3377" + +"$out_of_gas_3376": ; preds = %"$have_gas_3372" + call void @_out_of_gas() + br label %"$have_gas_3377" + +"$have_gas_3377": ; preds = %"$out_of_gas_3376", %"$have_gas_3372" + %"$consume_3378" = sub i64 %"$gasrem_3374", 1 + store i64 %"$consume_3378", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3379", i32 0, i32 0), i32 5 }, %String* %key1b + %"$gasrem_3380" = load i64, i64* @_gasrem + %"$gascmp_3381" = icmp ugt i64 1, %"$gasrem_3380" + br i1 %"$gascmp_3381", label %"$out_of_gas_3382", label %"$have_gas_3383" + +"$out_of_gas_3382": ; preds = %"$have_gas_3377" + call void @_out_of_gas() + br label %"$have_gas_3383" + +"$have_gas_3383": ; preds = %"$out_of_gas_3382", %"$have_gas_3377" + %"$consume_3384" = sub i64 %"$gasrem_3380", 1 + store i64 %"$consume_3384", i64* @_gasrem %key2b = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1312", i32 0, i32 0), i32 5 }, %String* %key2b + %"$gasrem_3385" = load i64, i64* @_gasrem + %"$gascmp_3386" = icmp ugt i64 1, %"$gasrem_3385" + br i1 %"$gascmp_3386", label %"$out_of_gas_3387", label %"$have_gas_3388" + +"$out_of_gas_3387": ; preds = %"$have_gas_3383" + call void @_out_of_gas() + br label %"$have_gas_3388" + +"$have_gas_3388": ; preds = %"$out_of_gas_3387", %"$have_gas_3383" + %"$consume_3389" = sub i64 %"$gasrem_3385", 1 + store i64 %"$consume_3389", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3390", i32 0, i32 0), i32 5 }, %String* %key2b + %"$gasrem_3391" = load i64, i64* @_gasrem + %"$gascmp_3392" = icmp ugt i64 1, %"$gasrem_3391" + br i1 %"$gascmp_3392", label %"$out_of_gas_3393", label %"$have_gas_3394" + +"$out_of_gas_3393": ; preds = %"$have_gas_3388" + call void @_out_of_gas() + br label %"$have_gas_3394" + +"$have_gas_3394": ; preds = %"$out_of_gas_3393", %"$have_gas_3388" + %"$consume_3395" = sub i64 %"$gasrem_3391", 1 + store i64 %"$consume_3395", i64* @_gasrem %key1c = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1313", i32 0, i32 0), i32 5 }, %String* %key1c + %"$gasrem_3396" = load i64, i64* @_gasrem + %"$gascmp_3397" = icmp ugt i64 1, %"$gasrem_3396" + br i1 %"$gascmp_3397", label %"$out_of_gas_3398", label %"$have_gas_3399" + +"$out_of_gas_3398": ; preds = %"$have_gas_3394" + call void @_out_of_gas() + br label %"$have_gas_3399" + +"$have_gas_3399": ; preds = %"$out_of_gas_3398", %"$have_gas_3394" + %"$consume_3400" = sub i64 %"$gasrem_3396", 1 + store i64 %"$consume_3400", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3401", i32 0, i32 0), i32 5 }, %String* %key1c + %"$gasrem_3402" = load i64, i64* @_gasrem + %"$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_3399" + call void @_out_of_gas() + br label %"$have_gas_3405" + +"$have_gas_3405": ; preds = %"$out_of_gas_3404", %"$have_gas_3399" + %"$consume_3406" = sub i64 %"$gasrem_3402", 1 + store i64 %"$consume_3406", i64* @_gasrem %key2c = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1314", i32 0, i32 0), i32 5 }, %String* %key2c + %"$gasrem_3407" = load i64, i64* @_gasrem + %"$gascmp_3408" = icmp ugt i64 1, %"$gasrem_3407" + br i1 %"$gascmp_3408", label %"$out_of_gas_3409", label %"$have_gas_3410" + +"$out_of_gas_3409": ; preds = %"$have_gas_3405" + call void @_out_of_gas() + br label %"$have_gas_3410" + +"$have_gas_3410": ; preds = %"$out_of_gas_3409", %"$have_gas_3405" + %"$consume_3411" = sub i64 %"$gasrem_3407", 1 + store i64 %"$consume_3411", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3412", i32 0, i32 0), i32 5 }, %String* %key2c + %"$gasrem_3413" = load i64, i64* @_gasrem + %"$gascmp_3414" = icmp ugt i64 1, %"$gasrem_3413" + br i1 %"$gascmp_3414", label %"$out_of_gas_3415", label %"$have_gas_3416" + +"$out_of_gas_3415": ; preds = %"$have_gas_3410" + call void @_out_of_gas() + br label %"$have_gas_3416" + +"$have_gas_3416": ; preds = %"$out_of_gas_3415", %"$have_gas_3410" + %"$consume_3417" = sub i64 %"$gasrem_3413", 1 + store i64 %"$consume_3417", i64* @_gasrem %key1d = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1315", i32 0, i32 0), i32 5 }, %String* %key1d + %"$gasrem_3418" = load i64, i64* @_gasrem + %"$gascmp_3419" = icmp ugt i64 1, %"$gasrem_3418" + br i1 %"$gascmp_3419", label %"$out_of_gas_3420", label %"$have_gas_3421" + +"$out_of_gas_3420": ; preds = %"$have_gas_3416" + call void @_out_of_gas() + br label %"$have_gas_3421" + +"$have_gas_3421": ; preds = %"$out_of_gas_3420", %"$have_gas_3416" + %"$consume_3422" = sub i64 %"$gasrem_3418", 1 + store i64 %"$consume_3422", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3423", i32 0, i32 0), i32 5 }, %String* %key1d + %"$gasrem_3424" = load i64, i64* @_gasrem + %"$gascmp_3425" = icmp ugt i64 1, %"$gasrem_3424" + br i1 %"$gascmp_3425", label %"$out_of_gas_3426", label %"$have_gas_3427" + +"$out_of_gas_3426": ; preds = %"$have_gas_3421" + call void @_out_of_gas() + br label %"$have_gas_3427" + +"$have_gas_3427": ; preds = %"$out_of_gas_3426", %"$have_gas_3421" + %"$consume_3428" = sub i64 %"$gasrem_3424", 1 + store i64 %"$consume_3428", i64* @_gasrem %key2d = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1316", i32 0, i32 0), i32 5 }, %String* %key2d + %"$gasrem_3429" = load i64, i64* @_gasrem + %"$gascmp_3430" = icmp ugt i64 1, %"$gasrem_3429" + br i1 %"$gascmp_3430", label %"$out_of_gas_3431", label %"$have_gas_3432" + +"$out_of_gas_3431": ; preds = %"$have_gas_3427" + call void @_out_of_gas() + br label %"$have_gas_3432" + +"$have_gas_3432": ; preds = %"$out_of_gas_3431", %"$have_gas_3427" + %"$consume_3433" = sub i64 %"$gasrem_3429", 1 + store i64 %"$consume_3433", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3434", i32 0, i32 0), i32 5 }, %String* %key2d + %"$gasrem_3435" = load i64, i64* @_gasrem + %"$gascmp_3436" = icmp ugt i64 1, %"$gasrem_3435" + br i1 %"$gascmp_3436", label %"$out_of_gas_3437", label %"$have_gas_3438" + +"$out_of_gas_3437": ; preds = %"$have_gas_3432" + call void @_out_of_gas() + br label %"$have_gas_3438" + +"$have_gas_3438": ; preds = %"$out_of_gas_3437", %"$have_gas_3432" + %"$consume_3439" = sub i64 %"$gasrem_3435", 1 + store i64 %"$consume_3439", i64* @_gasrem %v1 = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1317", i32 0, i32 0), i32 3 }, %String* %v1 + %"$gasrem_3440" = load i64, i64* @_gasrem + %"$gascmp_3441" = icmp ugt i64 1, %"$gasrem_3440" + br i1 %"$gascmp_3441", label %"$out_of_gas_3442", label %"$have_gas_3443" + +"$out_of_gas_3442": ; preds = %"$have_gas_3438" + call void @_out_of_gas() + br label %"$have_gas_3443" + +"$have_gas_3443": ; preds = %"$out_of_gas_3442", %"$have_gas_3438" + %"$consume_3444" = sub i64 %"$gasrem_3440", 1 + store i64 %"$consume_3444", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3445", i32 0, i32 0), i32 3 }, %String* %v1 + %"$gasrem_3446" = load i64, i64* @_gasrem + %"$gascmp_3447" = icmp ugt i64 1, %"$gasrem_3446" + br i1 %"$gascmp_3447", label %"$out_of_gas_3448", label %"$have_gas_3449" + +"$out_of_gas_3448": ; preds = %"$have_gas_3443" + call void @_out_of_gas() + br label %"$have_gas_3449" + +"$have_gas_3449": ; preds = %"$out_of_gas_3448", %"$have_gas_3443" + %"$consume_3450" = sub i64 %"$gasrem_3446", 1 + store i64 %"$consume_3450", i64* @_gasrem %v2 = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1318", i32 0, i32 0), i32 3 }, %String* %v2 + %"$gasrem_3451" = load i64, i64* @_gasrem + %"$gascmp_3452" = icmp ugt i64 1, %"$gasrem_3451" + br i1 %"$gascmp_3452", label %"$out_of_gas_3453", label %"$have_gas_3454" + +"$out_of_gas_3453": ; preds = %"$have_gas_3449" + call void @_out_of_gas() + br label %"$have_gas_3454" + +"$have_gas_3454": ; preds = %"$out_of_gas_3453", %"$have_gas_3449" + %"$consume_3455" = sub i64 %"$gasrem_3451", 1 + store i64 %"$consume_3455", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3456", i32 0, i32 0), i32 3 }, %String* %v2 + %"$gasrem_3457" = load i64, i64* @_gasrem + %"$gascmp_3458" = icmp ugt i64 1, %"$gasrem_3457" + br i1 %"$gascmp_3458", label %"$out_of_gas_3459", label %"$have_gas_3460" + +"$out_of_gas_3459": ; preds = %"$have_gas_3454" + call void @_out_of_gas() + br label %"$have_gas_3460" + +"$have_gas_3460": ; preds = %"$out_of_gas_3459", %"$have_gas_3454" + %"$consume_3461" = sub i64 %"$gasrem_3457", 1 + store i64 %"$consume_3461", i64* @_gasrem %v3 = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1319", i32 0, i32 0), i32 3 }, %String* %v3 + %"$gasrem_3462" = load i64, i64* @_gasrem + %"$gascmp_3463" = icmp ugt i64 1, %"$gasrem_3462" + br i1 %"$gascmp_3463", label %"$out_of_gas_3464", label %"$have_gas_3465" + +"$out_of_gas_3464": ; preds = %"$have_gas_3460" + call void @_out_of_gas() + br label %"$have_gas_3465" + +"$have_gas_3465": ; preds = %"$out_of_gas_3464", %"$have_gas_3460" + %"$consume_3466" = sub i64 %"$gasrem_3462", 1 + store i64 %"$consume_3466", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3467", i32 0, i32 0), i32 3 }, %String* %v3 + %"$gasrem_3468" = load i64, i64* @_gasrem + %"$gascmp_3469" = icmp ugt i64 1, %"$gasrem_3468" + br i1 %"$gascmp_3469", label %"$out_of_gas_3470", label %"$have_gas_3471" + +"$out_of_gas_3470": ; preds = %"$have_gas_3465" + call void @_out_of_gas() + br label %"$have_gas_3471" + +"$have_gas_3471": ; preds = %"$out_of_gas_3470", %"$have_gas_3465" + %"$consume_3472" = sub i64 %"$gasrem_3468", 1 + store i64 %"$consume_3472", i64* @_gasrem %v4 = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1320", i32 0, i32 0), i32 3 }, %String* %v4 + %"$gasrem_3473" = load i64, i64* @_gasrem + %"$gascmp_3474" = icmp ugt i64 1, %"$gasrem_3473" + br i1 %"$gascmp_3474", label %"$out_of_gas_3475", label %"$have_gas_3476" + +"$out_of_gas_3475": ; preds = %"$have_gas_3471" + call void @_out_of_gas() + br label %"$have_gas_3476" + +"$have_gas_3476": ; preds = %"$out_of_gas_3475", %"$have_gas_3471" + %"$consume_3477" = sub i64 %"$gasrem_3473", 1 + store i64 %"$consume_3477", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3478", i32 0, i32 0), i32 3 }, %String* %v4 + %"$gasrem_3479" = load i64, i64* @_gasrem + %"$gascmp_3480" = icmp ugt i64 1, %"$gasrem_3479" + br i1 %"$gascmp_3480", label %"$out_of_gas_3481", label %"$have_gas_3482" + +"$out_of_gas_3481": ; preds = %"$have_gas_3476" + call void @_out_of_gas() + br label %"$have_gas_3482" + +"$have_gas_3482": ; preds = %"$out_of_gas_3481", %"$have_gas_3476" + %"$consume_3483" = sub i64 %"$gasrem_3479", 1 + store i64 %"$consume_3483", i64* @_gasrem %m25 = alloca %"Map_String_Map_(String)_(String)"* - %"$execptr_load_1321" = load i8*, i8** @_execptr - %"$_new_empty_map_call_1322" = call i8* @_new_empty_map(i8* %"$execptr_load_1321") - %"$Emp_1323" = bitcast i8* %"$_new_empty_map_call_1322" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$Emp_1323", %"Map_String_Map_(String)_(String)"** %m25 + %"$gasrem_3484" = load i64, i64* @_gasrem + %"$gascmp_3485" = icmp ugt i64 1, %"$gasrem_3484" + br i1 %"$gascmp_3485", label %"$out_of_gas_3486", label %"$have_gas_3487" + +"$out_of_gas_3486": ; preds = %"$have_gas_3482" + call void @_out_of_gas() + br label %"$have_gas_3487" + +"$have_gas_3487": ; preds = %"$out_of_gas_3486", %"$have_gas_3482" + %"$consume_3488" = sub i64 %"$gasrem_3484", 1 + store i64 %"$consume_3488", i64* @_gasrem + %"$execptr_load_3489" = load i8*, i8** @_execptr + %"$_new_empty_map_call_3490" = call i8* @_new_empty_map(i8* %"$execptr_load_3489") + %"$Emp_3491" = bitcast i8* %"$_new_empty_map_call_3490" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$Emp_3491", %"Map_String_Map_(String)_(String)"** %m25 + %"$gasrem_3492" = load i64, i64* @_gasrem + %"$gascmp_3493" = icmp ugt i64 1, %"$gasrem_3492" + br i1 %"$gascmp_3493", label %"$out_of_gas_3494", label %"$have_gas_3495" + +"$out_of_gas_3494": ; preds = %"$have_gas_3487" + call void @_out_of_gas() + br label %"$have_gas_3495" + +"$have_gas_3495": ; preds = %"$out_of_gas_3494", %"$have_gas_3487" + %"$consume_3496" = sub i64 %"$gasrem_3492", 1 + store i64 %"$consume_3496", i64* @_gasrem %m16 = alloca %Map_String_String* - %"$execptr_load_1324" = load i8*, i8** @_execptr - %"$_new_empty_map_call_1325" = call i8* @_new_empty_map(i8* %"$execptr_load_1324") - %"$Emp_1326" = bitcast i8* %"$_new_empty_map_call_1325" to %Map_String_String* - store %Map_String_String* %"$Emp_1326", %Map_String_String** %m16 + %"$gasrem_3497" = load i64, i64* @_gasrem + %"$gascmp_3498" = icmp ugt i64 1, %"$gasrem_3497" + br i1 %"$gascmp_3498", label %"$out_of_gas_3499", label %"$have_gas_3500" + +"$out_of_gas_3499": ; preds = %"$have_gas_3495" + call void @_out_of_gas() + br label %"$have_gas_3500" + +"$have_gas_3500": ; preds = %"$out_of_gas_3499", %"$have_gas_3495" + %"$consume_3501" = sub i64 %"$gasrem_3497", 1 + store i64 %"$consume_3501", i64* @_gasrem + %"$execptr_load_3502" = load i8*, i8** @_execptr + %"$_new_empty_map_call_3503" = call i8* @_new_empty_map(i8* %"$execptr_load_3502") + %"$Emp_3504" = bitcast i8* %"$_new_empty_map_call_3503" to %Map_String_String* + store %Map_String_String* %"$Emp_3504", %Map_String_String** %m16 + %"$gasrem_3505" = load i64, i64* @_gasrem + %"$gascmp_3506" = icmp ugt i64 1, %"$gasrem_3505" + br i1 %"$gascmp_3506", label %"$out_of_gas_3507", label %"$have_gas_3508" + +"$out_of_gas_3507": ; preds = %"$have_gas_3500" + call void @_out_of_gas() + br label %"$have_gas_3508" + +"$have_gas_3508": ; preds = %"$out_of_gas_3507", %"$have_gas_3500" + %"$consume_3509" = sub i64 %"$gasrem_3505", 1 + store i64 %"$consume_3509", i64* @_gasrem %m2_full = alloca %"Map_String_Map_(String)_(String)"* + %"$gasrem_3510" = load i64, i64* @_gasrem + %"$gascmp_3511" = icmp ugt i64 1, %"$gasrem_3510" + br i1 %"$gascmp_3511", label %"$out_of_gas_3512", label %"$have_gas_3513" + +"$out_of_gas_3512": ; preds = %"$have_gas_3508" + call void @_out_of_gas() + br label %"$have_gas_3513" + +"$have_gas_3513": ; preds = %"$out_of_gas_3512", %"$have_gas_3508" + %"$consume_3514" = sub i64 %"$gasrem_3510", 1 + store i64 %"$consume_3514", i64* @_gasrem %m21 = alloca %Map_String_String* - %"$execptr_load_1327" = load i8*, i8** @_execptr - %"$m1_1328" = load %Map_String_String*, %Map_String_String** %m16 - %"$$m1_1328_1329" = bitcast %Map_String_String* %"$m1_1328" to i8* - %"$put_key2a_1330" = alloca %String - %"$key2a_1331" = load %String, %String* %key2a - store %String %"$key2a_1331", %String* %"$put_key2a_1330" - %"$$put_key2a_1330_1332" = bitcast %String* %"$put_key2a_1330" to i8* - %"$put_v1_1333" = alloca %String - %"$v1_1334" = load %String, %String* %v1 - store %String %"$v1_1334", %String* %"$put_v1_1333" - %"$$put_v1_1333_1335" = bitcast %String* %"$put_v1_1333" to i8* - %"$put_call_1336" = call i8* @_put(i8* %"$execptr_load_1327", %_TyDescrTy_Typ* @"$TyDescr_Map_73", i8* %"$$m1_1328_1329", i8* %"$$put_key2a_1330_1332", i8* %"$$put_v1_1333_1335") - %"$_put_1337" = bitcast i8* %"$put_call_1336" to %Map_String_String* - store %Map_String_String* %"$_put_1337", %Map_String_String** %m21 + %"$execptr_load_3515" = load i8*, i8** @_execptr + %"$m1_3516" = load %Map_String_String*, %Map_String_String** %m16 + %"$$m1_3516_3517" = bitcast %Map_String_String* %"$m1_3516" to i8* + %"$put_key2a_3518" = alloca %String + %"$key2a_3519" = load %String, %String* %key2a + store %String %"$key2a_3519", %String* %"$put_key2a_3518" + %"$$put_key2a_3518_3520" = bitcast %String* %"$put_key2a_3518" to i8* + %"$put_v1_3521" = alloca %String + %"$v1_3522" = load %String, %String* %v1 + store %String %"$v1_3522", %String* %"$put_v1_3521" + %"$$put_v1_3521_3523" = bitcast %String* %"$put_v1_3521" to i8* + %"$put_call_3524" = call i8* @_put(i8* %"$execptr_load_3515", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_3516_3517", i8* %"$$put_key2a_3518_3520", i8* %"$$put_v1_3521_3523") + %"$_put_3525" = bitcast i8* %"$put_call_3524" to %Map_String_String* + store %Map_String_String* %"$_put_3525", %Map_String_String** %m21 + %"$gasrem_3526" = load i64, i64* @_gasrem + %"$gascmp_3527" = icmp ugt i64 1, %"$gasrem_3526" + br i1 %"$gascmp_3527", label %"$out_of_gas_3528", label %"$have_gas_3529" + +"$out_of_gas_3528": ; preds = %"$have_gas_3513" + call void @_out_of_gas() + br label %"$have_gas_3529" + +"$have_gas_3529": ; preds = %"$out_of_gas_3528", %"$have_gas_3513" + %"$consume_3530" = sub i64 %"$gasrem_3526", 1 + store i64 %"$consume_3530", i64* @_gasrem %m22 = alloca %Map_String_String* - %"$execptr_load_1338" = load i8*, i8** @_execptr - %"$m1_1339" = load %Map_String_String*, %Map_String_String** %m16 - %"$$m1_1339_1340" = bitcast %Map_String_String* %"$m1_1339" to i8* - %"$put_key2b_1341" = alloca %String - %"$key2b_1342" = load %String, %String* %key2b - store %String %"$key2b_1342", %String* %"$put_key2b_1341" - %"$$put_key2b_1341_1343" = bitcast %String* %"$put_key2b_1341" to i8* - %"$put_v2_1344" = alloca %String - %"$v2_1345" = load %String, %String* %v2 - store %String %"$v2_1345", %String* %"$put_v2_1344" - %"$$put_v2_1344_1346" = bitcast %String* %"$put_v2_1344" to i8* - %"$put_call_1347" = call i8* @_put(i8* %"$execptr_load_1338", %_TyDescrTy_Typ* @"$TyDescr_Map_73", i8* %"$$m1_1339_1340", i8* %"$$put_key2b_1341_1343", i8* %"$$put_v2_1344_1346") - %"$_put_1348" = bitcast i8* %"$put_call_1347" to %Map_String_String* - store %Map_String_String* %"$_put_1348", %Map_String_String** %m22 + %"$execptr_load_3531" = load i8*, i8** @_execptr + %"$m1_3532" = load %Map_String_String*, %Map_String_String** %m16 + %"$$m1_3532_3533" = bitcast %Map_String_String* %"$m1_3532" to i8* + %"$put_key2b_3534" = alloca %String + %"$key2b_3535" = load %String, %String* %key2b + store %String %"$key2b_3535", %String* %"$put_key2b_3534" + %"$$put_key2b_3534_3536" = bitcast %String* %"$put_key2b_3534" to i8* + %"$put_v2_3537" = alloca %String + %"$v2_3538" = load %String, %String* %v2 + store %String %"$v2_3538", %String* %"$put_v2_3537" + %"$$put_v2_3537_3539" = bitcast %String* %"$put_v2_3537" to i8* + %"$put_call_3540" = call i8* @_put(i8* %"$execptr_load_3531", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_3532_3533", i8* %"$$put_key2b_3534_3536", i8* %"$$put_v2_3537_3539") + %"$_put_3541" = bitcast i8* %"$put_call_3540" to %Map_String_String* + store %Map_String_String* %"$_put_3541", %Map_String_String** %m22 + %"$gasrem_3542" = load i64, i64* @_gasrem + %"$gascmp_3543" = icmp ugt i64 1, %"$gasrem_3542" + br i1 %"$gascmp_3543", label %"$out_of_gas_3544", label %"$have_gas_3545" + +"$out_of_gas_3544": ; preds = %"$have_gas_3529" + call void @_out_of_gas() + br label %"$have_gas_3545" + +"$have_gas_3545": ; preds = %"$out_of_gas_3544", %"$have_gas_3529" + %"$consume_3546" = sub i64 %"$gasrem_3542", 1 + store i64 %"$consume_3546", i64* @_gasrem %m23 = alloca %Map_String_String* - %"$execptr_load_1349" = load i8*, i8** @_execptr - %"$m1_1350" = load %Map_String_String*, %Map_String_String** %m16 - %"$$m1_1350_1351" = bitcast %Map_String_String* %"$m1_1350" to i8* - %"$put_key2c_1352" = alloca %String - %"$key2c_1353" = load %String, %String* %key2c - store %String %"$key2c_1353", %String* %"$put_key2c_1352" - %"$$put_key2c_1352_1354" = bitcast %String* %"$put_key2c_1352" to i8* - %"$put_v3_1355" = alloca %String - %"$v3_1356" = load %String, %String* %v3 - store %String %"$v3_1356", %String* %"$put_v3_1355" - %"$$put_v3_1355_1357" = bitcast %String* %"$put_v3_1355" to i8* - %"$put_call_1358" = call i8* @_put(i8* %"$execptr_load_1349", %_TyDescrTy_Typ* @"$TyDescr_Map_73", i8* %"$$m1_1350_1351", i8* %"$$put_key2c_1352_1354", i8* %"$$put_v3_1355_1357") - %"$_put_1359" = bitcast i8* %"$put_call_1358" to %Map_String_String* - store %Map_String_String* %"$_put_1359", %Map_String_String** %m23 + %"$execptr_load_3547" = load i8*, i8** @_execptr + %"$m1_3548" = load %Map_String_String*, %Map_String_String** %m16 + %"$$m1_3548_3549" = bitcast %Map_String_String* %"$m1_3548" to i8* + %"$put_key2c_3550" = alloca %String + %"$key2c_3551" = load %String, %String* %key2c + store %String %"$key2c_3551", %String* %"$put_key2c_3550" + %"$$put_key2c_3550_3552" = bitcast %String* %"$put_key2c_3550" to i8* + %"$put_v3_3553" = alloca %String + %"$v3_3554" = load %String, %String* %v3 + store %String %"$v3_3554", %String* %"$put_v3_3553" + %"$$put_v3_3553_3555" = bitcast %String* %"$put_v3_3553" to i8* + %"$put_call_3556" = call i8* @_put(i8* %"$execptr_load_3547", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_3548_3549", i8* %"$$put_key2c_3550_3552", i8* %"$$put_v3_3553_3555") + %"$_put_3557" = bitcast i8* %"$put_call_3556" to %Map_String_String* + store %Map_String_String* %"$_put_3557", %Map_String_String** %m23 + %"$gasrem_3558" = load i64, i64* @_gasrem + %"$gascmp_3559" = icmp ugt i64 1, %"$gasrem_3558" + br i1 %"$gascmp_3559", label %"$out_of_gas_3560", label %"$have_gas_3561" + +"$out_of_gas_3560": ; preds = %"$have_gas_3545" + call void @_out_of_gas() + br label %"$have_gas_3561" + +"$have_gas_3561": ; preds = %"$out_of_gas_3560", %"$have_gas_3545" + %"$consume_3562" = sub i64 %"$gasrem_3558", 1 + store i64 %"$consume_3562", i64* @_gasrem %m24 = alloca %Map_String_String* - %"$execptr_load_1360" = load i8*, i8** @_execptr - %"$m1_1361" = load %Map_String_String*, %Map_String_String** %m16 - %"$$m1_1361_1362" = bitcast %Map_String_String* %"$m1_1361" to i8* - %"$put_key2d_1363" = alloca %String - %"$key2d_1364" = load %String, %String* %key2d - store %String %"$key2d_1364", %String* %"$put_key2d_1363" - %"$$put_key2d_1363_1365" = bitcast %String* %"$put_key2d_1363" to i8* - %"$put_v4_1366" = alloca %String - %"$v4_1367" = load %String, %String* %v4 - store %String %"$v4_1367", %String* %"$put_v4_1366" - %"$$put_v4_1366_1368" = bitcast %String* %"$put_v4_1366" to i8* - %"$put_call_1369" = call i8* @_put(i8* %"$execptr_load_1360", %_TyDescrTy_Typ* @"$TyDescr_Map_73", i8* %"$$m1_1361_1362", i8* %"$$put_key2d_1363_1365", i8* %"$$put_v4_1366_1368") - %"$_put_1370" = bitcast i8* %"$put_call_1369" to %Map_String_String* - store %Map_String_String* %"$_put_1370", %Map_String_String** %m24 + %"$execptr_load_3563" = load i8*, i8** @_execptr + %"$m1_3564" = load %Map_String_String*, %Map_String_String** %m16 + %"$$m1_3564_3565" = bitcast %Map_String_String* %"$m1_3564" to i8* + %"$put_key2d_3566" = alloca %String + %"$key2d_3567" = load %String, %String* %key2d + store %String %"$key2d_3567", %String* %"$put_key2d_3566" + %"$$put_key2d_3566_3568" = bitcast %String* %"$put_key2d_3566" to i8* + %"$put_v4_3569" = alloca %String + %"$v4_3570" = load %String, %String* %v4 + store %String %"$v4_3570", %String* %"$put_v4_3569" + %"$$put_v4_3569_3571" = bitcast %String* %"$put_v4_3569" to i8* + %"$put_call_3572" = call i8* @_put(i8* %"$execptr_load_3563", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_3564_3565", i8* %"$$put_key2d_3566_3568", i8* %"$$put_v4_3569_3571") + %"$_put_3573" = bitcast i8* %"$put_call_3572" to %Map_String_String* + store %Map_String_String* %"$_put_3573", %Map_String_String** %m24 + %"$gasrem_3574" = load i64, i64* @_gasrem + %"$gascmp_3575" = icmp ugt i64 1, %"$gasrem_3574" + br i1 %"$gascmp_3575", label %"$out_of_gas_3576", label %"$have_gas_3577" + +"$out_of_gas_3576": ; preds = %"$have_gas_3561" + call void @_out_of_gas() + br label %"$have_gas_3577" + +"$have_gas_3577": ; preds = %"$out_of_gas_3576", %"$have_gas_3561" + %"$consume_3578" = sub i64 %"$gasrem_3574", 1 + store i64 %"$consume_3578", i64* @_gasrem %m11 = alloca %"Map_String_Map_(String)_(String)"* - %"$execptr_load_1371" = load i8*, i8** @_execptr - %"$m2_1372" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m25 - %"$$m2_1372_1373" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_1372" to i8* - %"$put_key1a_1374" = alloca %String - %"$key1a_1375" = load %String, %String* %key1a - store %String %"$key1a_1375", %String* %"$put_key1a_1374" - %"$$put_key1a_1374_1376" = bitcast %String* %"$put_key1a_1374" to i8* - %"$m21_1377" = load %Map_String_String*, %Map_String_String** %m21 - %"$$m21_1377_1378" = bitcast %Map_String_String* %"$m21_1377" to i8* - %"$put_call_1379" = call i8* @_put(i8* %"$execptr_load_1371", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m2_1372_1373", i8* %"$$put_key1a_1374_1376", i8* %"$$m21_1377_1378") - %"$_put_1380" = bitcast i8* %"$put_call_1379" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$_put_1380", %"Map_String_Map_(String)_(String)"** %m11 + %"$execptr_load_3579" = load i8*, i8** @_execptr + %"$m2_3580" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m25 + %"$$m2_3580_3581" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_3580" to i8* + %"$put_key1a_3582" = alloca %String + %"$key1a_3583" = load %String, %String* %key1a + store %String %"$key1a_3583", %String* %"$put_key1a_3582" + %"$$put_key1a_3582_3584" = bitcast %String* %"$put_key1a_3582" to i8* + %"$m21_3585" = load %Map_String_String*, %Map_String_String** %m21 + %"$$m21_3585_3586" = bitcast %Map_String_String* %"$m21_3585" to i8* + %"$put_call_3587" = call i8* @_put(i8* %"$execptr_load_3579", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m2_3580_3581", i8* %"$$put_key1a_3582_3584", i8* %"$$m21_3585_3586") + %"$_put_3588" = bitcast i8* %"$put_call_3587" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$_put_3588", %"Map_String_Map_(String)_(String)"** %m11 + %"$gasrem_3589" = load i64, i64* @_gasrem + %"$gascmp_3590" = icmp ugt i64 1, %"$gasrem_3589" + br i1 %"$gascmp_3590", label %"$out_of_gas_3591", label %"$have_gas_3592" + +"$out_of_gas_3591": ; preds = %"$have_gas_3577" + call void @_out_of_gas() + br label %"$have_gas_3592" + +"$have_gas_3592": ; preds = %"$out_of_gas_3591", %"$have_gas_3577" + %"$consume_3593" = sub i64 %"$gasrem_3589", 1 + store i64 %"$consume_3593", i64* @_gasrem %m12 = alloca %"Map_String_Map_(String)_(String)"* - %"$execptr_load_1381" = load i8*, i8** @_execptr - %"$m11_1382" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m11 - %"$$m11_1382_1383" = bitcast %"Map_String_Map_(String)_(String)"* %"$m11_1382" to i8* - %"$put_key1b_1384" = alloca %String - %"$key1b_1385" = load %String, %String* %key1b - store %String %"$key1b_1385", %String* %"$put_key1b_1384" - %"$$put_key1b_1384_1386" = bitcast %String* %"$put_key1b_1384" to i8* - %"$m22_1387" = load %Map_String_String*, %Map_String_String** %m22 - %"$$m22_1387_1388" = bitcast %Map_String_String* %"$m22_1387" to i8* - %"$put_call_1389" = call i8* @_put(i8* %"$execptr_load_1381", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m11_1382_1383", i8* %"$$put_key1b_1384_1386", i8* %"$$m22_1387_1388") - %"$_put_1390" = bitcast i8* %"$put_call_1389" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$_put_1390", %"Map_String_Map_(String)_(String)"** %m12 + %"$execptr_load_3594" = load i8*, i8** @_execptr + %"$m11_3595" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m11 + %"$$m11_3595_3596" = bitcast %"Map_String_Map_(String)_(String)"* %"$m11_3595" to i8* + %"$put_key1b_3597" = alloca %String + %"$key1b_3598" = load %String, %String* %key1b + store %String %"$key1b_3598", %String* %"$put_key1b_3597" + %"$$put_key1b_3597_3599" = bitcast %String* %"$put_key1b_3597" to i8* + %"$m22_3600" = load %Map_String_String*, %Map_String_String** %m22 + %"$$m22_3600_3601" = bitcast %Map_String_String* %"$m22_3600" to i8* + %"$put_call_3602" = call i8* @_put(i8* %"$execptr_load_3594", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m11_3595_3596", i8* %"$$put_key1b_3597_3599", i8* %"$$m22_3600_3601") + %"$_put_3603" = bitcast i8* %"$put_call_3602" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$_put_3603", %"Map_String_Map_(String)_(String)"** %m12 + %"$gasrem_3604" = load i64, i64* @_gasrem + %"$gascmp_3605" = icmp ugt i64 1, %"$gasrem_3604" + br i1 %"$gascmp_3605", label %"$out_of_gas_3606", label %"$have_gas_3607" + +"$out_of_gas_3606": ; preds = %"$have_gas_3592" + call void @_out_of_gas() + br label %"$have_gas_3607" + +"$have_gas_3607": ; preds = %"$out_of_gas_3606", %"$have_gas_3592" + %"$consume_3608" = sub i64 %"$gasrem_3604", 1 + store i64 %"$consume_3608", i64* @_gasrem %m13 = alloca %"Map_String_Map_(String)_(String)"* - %"$execptr_load_1391" = load i8*, i8** @_execptr - %"$m12_1392" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m12 - %"$$m12_1392_1393" = bitcast %"Map_String_Map_(String)_(String)"* %"$m12_1392" to i8* - %"$put_key1c_1394" = alloca %String - %"$key1c_1395" = load %String, %String* %key1c - store %String %"$key1c_1395", %String* %"$put_key1c_1394" - %"$$put_key1c_1394_1396" = bitcast %String* %"$put_key1c_1394" to i8* - %"$m23_1397" = load %Map_String_String*, %Map_String_String** %m23 - %"$$m23_1397_1398" = bitcast %Map_String_String* %"$m23_1397" to i8* - %"$put_call_1399" = call i8* @_put(i8* %"$execptr_load_1391", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m12_1392_1393", i8* %"$$put_key1c_1394_1396", i8* %"$$m23_1397_1398") - %"$_put_1400" = bitcast i8* %"$put_call_1399" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$_put_1400", %"Map_String_Map_(String)_(String)"** %m13 + %"$execptr_load_3609" = load i8*, i8** @_execptr + %"$m12_3610" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m12 + %"$$m12_3610_3611" = bitcast %"Map_String_Map_(String)_(String)"* %"$m12_3610" to i8* + %"$put_key1c_3612" = alloca %String + %"$key1c_3613" = load %String, %String* %key1c + store %String %"$key1c_3613", %String* %"$put_key1c_3612" + %"$$put_key1c_3612_3614" = bitcast %String* %"$put_key1c_3612" to i8* + %"$m23_3615" = load %Map_String_String*, %Map_String_String** %m23 + %"$$m23_3615_3616" = bitcast %Map_String_String* %"$m23_3615" to i8* + %"$put_call_3617" = call i8* @_put(i8* %"$execptr_load_3609", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m12_3610_3611", i8* %"$$put_key1c_3612_3614", i8* %"$$m23_3615_3616") + %"$_put_3618" = bitcast i8* %"$put_call_3617" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$_put_3618", %"Map_String_Map_(String)_(String)"** %m13 + %"$gasrem_3619" = load i64, i64* @_gasrem + %"$gascmp_3620" = icmp ugt i64 1, %"$gasrem_3619" + br i1 %"$gascmp_3620", label %"$out_of_gas_3621", label %"$have_gas_3622" + +"$out_of_gas_3621": ; preds = %"$have_gas_3607" + call void @_out_of_gas() + br label %"$have_gas_3622" + +"$have_gas_3622": ; preds = %"$out_of_gas_3621", %"$have_gas_3607" + %"$consume_3623" = sub i64 %"$gasrem_3619", 1 + store i64 %"$consume_3623", i64* @_gasrem %m14 = alloca %"Map_String_Map_(String)_(String)"* - %"$execptr_load_1401" = load i8*, i8** @_execptr - %"$m13_1402" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m13 - %"$$m13_1402_1403" = bitcast %"Map_String_Map_(String)_(String)"* %"$m13_1402" to i8* - %"$put_key1d_1404" = alloca %String - %"$key1d_1405" = load %String, %String* %key1d - store %String %"$key1d_1405", %String* %"$put_key1d_1404" - %"$$put_key1d_1404_1406" = bitcast %String* %"$put_key1d_1404" to i8* - %"$m24_1407" = load %Map_String_String*, %Map_String_String** %m24 - %"$$m24_1407_1408" = bitcast %Map_String_String* %"$m24_1407" to i8* - %"$put_call_1409" = call i8* @_put(i8* %"$execptr_load_1401", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m13_1402_1403", i8* %"$$put_key1d_1404_1406", i8* %"$$m24_1407_1408") - %"$_put_1410" = bitcast i8* %"$put_call_1409" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$_put_1410", %"Map_String_Map_(String)_(String)"** %m14 - %"$m14_1411" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m14 - store %"Map_String_Map_(String)_(String)"* %"$m14_1411", %"Map_String_Map_(String)_(String)"** %m2_full - %"$execptr_load_1412" = load i8*, i8** @_execptr - %"$m2_full_1414" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2_full - %"$update_value_1415" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_full_1414" to i8* - call void @_update_field(i8* %"$execptr_load_1412", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1413", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i8* %"$update_value_1415") + %"$execptr_load_3624" = load i8*, i8** @_execptr + %"$m13_3625" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m13 + %"$$m13_3625_3626" = bitcast %"Map_String_Map_(String)_(String)"* %"$m13_3625" to i8* + %"$put_key1d_3627" = alloca %String + %"$key1d_3628" = load %String, %String* %key1d + store %String %"$key1d_3628", %String* %"$put_key1d_3627" + %"$$put_key1d_3627_3629" = bitcast %String* %"$put_key1d_3627" to i8* + %"$m24_3630" = load %Map_String_String*, %Map_String_String** %m24 + %"$$m24_3630_3631" = bitcast %Map_String_String* %"$m24_3630" to i8* + %"$put_call_3632" = call i8* @_put(i8* %"$execptr_load_3624", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m13_3625_3626", i8* %"$$put_key1d_3627_3629", i8* %"$$m24_3630_3631") + %"$_put_3633" = bitcast i8* %"$put_call_3632" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$_put_3633", %"Map_String_Map_(String)_(String)"** %m14 + %"$gasrem_3634" = load i64, i64* @_gasrem + %"$gascmp_3635" = icmp ugt i64 1, %"$gasrem_3634" + br i1 %"$gascmp_3635", label %"$out_of_gas_3636", label %"$have_gas_3637" + +"$out_of_gas_3636": ; preds = %"$have_gas_3622" + call void @_out_of_gas() + br label %"$have_gas_3637" + +"$have_gas_3637": ; preds = %"$out_of_gas_3636", %"$have_gas_3622" + %"$consume_3638" = sub i64 %"$gasrem_3634", 1 + store i64 %"$consume_3638", i64* @_gasrem + %"$m14_3639" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m14 + store %"Map_String_Map_(String)_(String)"* %"$m14_3639", %"Map_String_Map_(String)_(String)"** %m2_full + %"$m2_full_3640" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2_full + %"$$m2_full_3640_3641" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_full_3640" to i8* + %"$_literal_cost_call_3642" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m2_full_3640_3641") + %"$gasrem_3643" = load i64, i64* @_gasrem + %"$gascmp_3644" = icmp ugt i64 %"$_literal_cost_call_3642", %"$gasrem_3643" + br i1 %"$gascmp_3644", label %"$out_of_gas_3645", label %"$have_gas_3646" + +"$out_of_gas_3645": ; preds = %"$have_gas_3637" + call void @_out_of_gas() + br label %"$have_gas_3646" + +"$have_gas_3646": ; preds = %"$out_of_gas_3645", %"$have_gas_3637" + %"$consume_3647" = sub i64 %"$gasrem_3643", %"$_literal_cost_call_3642" + store i64 %"$consume_3647", i64* @_gasrem + %"$execptr_load_3648" = load i8*, i8** @_execptr + %"$m2_full_3650" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2_full + %"$update_value_3651" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_full_3650" to i8* + call void @_update_field(i8* %"$execptr_load_3648", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_3649", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 0, i8* null, i8* %"$update_value_3651") ret void } define void @t15(i8* %0) { entry: - %"$_amount_1417" = getelementptr i8, i8* %0, i32 0 - %"$_amount_1418" = bitcast i8* %"$_amount_1417" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_1418" - %"$_sender_1419" = getelementptr i8, i8* %0, i32 16 - %"$_sender_1420" = bitcast i8* %"$_sender_1419" to [20 x i8]* - call void @"$t15_1196"(%Uint128 %_amount, [20 x i8]* %"$_sender_1420") + %"$_amount_3653" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3654" = bitcast i8* %"$_amount_3653" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3654" + %"$_sender_3655" = getelementptr i8, i8* %0, i32 16 + %"$_sender_3656" = bitcast i8* %"$_sender_3655" to [20 x i8]* + call void @"$t15_3052"(%Uint128 %_amount, [20 x i8]* %"$_sender_3656") ret void } -define internal void @"$t16_1421"(%Uint128 %_amount, [20 x i8]* %"$_sender_1422") { +define internal void @"$t16_3657"(%Uint128 %_amount, [20 x i8]* %"$_sender_3658") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_1422" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3658" + %"$gasrem_3659" = load i64, i64* @_gasrem + %"$gascmp_3660" = icmp ugt i64 1, %"$gasrem_3659" + br i1 %"$gascmp_3660", label %"$out_of_gas_3661", label %"$have_gas_3662" + +"$out_of_gas_3661": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3662" + +"$have_gas_3662": ; preds = %"$out_of_gas_3661", %entry + %"$consume_3663" = sub i64 %"$gasrem_3659", 1 + store i64 %"$consume_3663", i64* @_gasrem %tname = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1423", i32 0, i32 0), i32 3 }, %String* %tname + %"$gasrem_3664" = load i64, i64* @_gasrem + %"$gascmp_3665" = icmp ugt i64 1, %"$gasrem_3664" + br i1 %"$gascmp_3665", label %"$out_of_gas_3666", label %"$have_gas_3667" + +"$out_of_gas_3666": ; preds = %"$have_gas_3662" + call void @_out_of_gas() + br label %"$have_gas_3667" + +"$have_gas_3667": ; preds = %"$out_of_gas_3666", %"$have_gas_3662" + %"$consume_3668" = sub i64 %"$gasrem_3664", 1 + store i64 %"$consume_3668", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3669", i32 0, i32 0), i32 3 }, %String* %tname + %"$gasrem_3670" = load i64, i64* @_gasrem + %"$gascmp_3671" = icmp ugt i64 1, %"$gasrem_3670" + br i1 %"$gascmp_3671", label %"$out_of_gas_3672", label %"$have_gas_3673" + +"$out_of_gas_3672": ; preds = %"$have_gas_3667" + call void @_out_of_gas() + br label %"$have_gas_3673" + +"$have_gas_3673": ; preds = %"$out_of_gas_3672", %"$have_gas_3667" + %"$consume_3674" = sub i64 %"$gasrem_3670", 1 + store i64 %"$consume_3674", i64* @_gasrem %key1a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1424", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_3675" = load i64, i64* @_gasrem + %"$gascmp_3676" = icmp ugt i64 1, %"$gasrem_3675" + br i1 %"$gascmp_3676", label %"$out_of_gas_3677", label %"$have_gas_3678" + +"$out_of_gas_3677": ; preds = %"$have_gas_3673" + call void @_out_of_gas() + br label %"$have_gas_3678" + +"$have_gas_3678": ; preds = %"$out_of_gas_3677", %"$have_gas_3673" + %"$consume_3679" = sub i64 %"$gasrem_3675", 1 + store i64 %"$consume_3679", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3680", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_3681" = load i64, i64* @_gasrem + %"$gascmp_3682" = icmp ugt i64 1, %"$gasrem_3681" + br i1 %"$gascmp_3682", label %"$out_of_gas_3683", label %"$have_gas_3684" + +"$out_of_gas_3683": ; preds = %"$have_gas_3678" + call void @_out_of_gas() + br label %"$have_gas_3684" + +"$have_gas_3684": ; preds = %"$out_of_gas_3683", %"$have_gas_3678" + %"$consume_3685" = sub i64 %"$gasrem_3681", 1 + store i64 %"$consume_3685", i64* @_gasrem %key2a = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1425", i32 0, i32 0), i32 5 }, %String* %key2a + %"$gasrem_3686" = load i64, i64* @_gasrem + %"$gascmp_3687" = icmp ugt i64 1, %"$gasrem_3686" + br i1 %"$gascmp_3687", label %"$out_of_gas_3688", label %"$have_gas_3689" + +"$out_of_gas_3688": ; preds = %"$have_gas_3684" + call void @_out_of_gas() + br label %"$have_gas_3689" + +"$have_gas_3689": ; preds = %"$out_of_gas_3688", %"$have_gas_3684" + %"$consume_3690" = sub i64 %"$gasrem_3686", 1 + store i64 %"$consume_3690", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3691", i32 0, i32 0), i32 5 }, %String* %key2a + %"$gasrem_3692" = load i64, i64* @_gasrem + %"$gascmp_3693" = icmp ugt i64 1, %"$gasrem_3692" + br i1 %"$gascmp_3693", label %"$out_of_gas_3694", label %"$have_gas_3695" + +"$out_of_gas_3694": ; preds = %"$have_gas_3689" + call void @_out_of_gas() + br label %"$have_gas_3695" + +"$have_gas_3695": ; preds = %"$out_of_gas_3694", %"$have_gas_3689" + %"$consume_3696" = sub i64 %"$gasrem_3692", 1 + store i64 %"$consume_3696", i64* @_gasrem %key1b = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1426", i32 0, i32 0), i32 5 }, %String* %key1b + %"$gasrem_3697" = load i64, i64* @_gasrem + %"$gascmp_3698" = icmp ugt i64 1, %"$gasrem_3697" + br i1 %"$gascmp_3698", label %"$out_of_gas_3699", label %"$have_gas_3700" + +"$out_of_gas_3699": ; preds = %"$have_gas_3695" + call void @_out_of_gas() + br label %"$have_gas_3700" + +"$have_gas_3700": ; preds = %"$out_of_gas_3699", %"$have_gas_3695" + %"$consume_3701" = sub i64 %"$gasrem_3697", 1 + store i64 %"$consume_3701", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3702", i32 0, i32 0), i32 5 }, %String* %key1b + %"$gasrem_3703" = load i64, i64* @_gasrem + %"$gascmp_3704" = icmp ugt i64 1, %"$gasrem_3703" + br i1 %"$gascmp_3704", label %"$out_of_gas_3705", label %"$have_gas_3706" + +"$out_of_gas_3705": ; preds = %"$have_gas_3700" + call void @_out_of_gas() + br label %"$have_gas_3706" + +"$have_gas_3706": ; preds = %"$out_of_gas_3705", %"$have_gas_3700" + %"$consume_3707" = sub i64 %"$gasrem_3703", 1 + store i64 %"$consume_3707", i64* @_gasrem %key2b = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1427", i32 0, i32 0), i32 5 }, %String* %key2b + %"$gasrem_3708" = load i64, i64* @_gasrem + %"$gascmp_3709" = icmp ugt i64 1, %"$gasrem_3708" + br i1 %"$gascmp_3709", label %"$out_of_gas_3710", label %"$have_gas_3711" + +"$out_of_gas_3710": ; preds = %"$have_gas_3706" + call void @_out_of_gas() + br label %"$have_gas_3711" + +"$have_gas_3711": ; preds = %"$out_of_gas_3710", %"$have_gas_3706" + %"$consume_3712" = sub i64 %"$gasrem_3708", 1 + store i64 %"$consume_3712", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3713", i32 0, i32 0), i32 5 }, %String* %key2b + %"$gasrem_3714" = load i64, i64* @_gasrem + %"$gascmp_3715" = icmp ugt i64 1, %"$gasrem_3714" + br i1 %"$gascmp_3715", label %"$out_of_gas_3716", label %"$have_gas_3717" + +"$out_of_gas_3716": ; preds = %"$have_gas_3711" + call void @_out_of_gas() + br label %"$have_gas_3717" + +"$have_gas_3717": ; preds = %"$out_of_gas_3716", %"$have_gas_3711" + %"$consume_3718" = sub i64 %"$gasrem_3714", 1 + store i64 %"$consume_3718", i64* @_gasrem %key1c = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1428", i32 0, i32 0), i32 5 }, %String* %key1c + %"$gasrem_3719" = load i64, i64* @_gasrem + %"$gascmp_3720" = icmp ugt i64 1, %"$gasrem_3719" + br i1 %"$gascmp_3720", label %"$out_of_gas_3721", label %"$have_gas_3722" + +"$out_of_gas_3721": ; preds = %"$have_gas_3717" + call void @_out_of_gas() + br label %"$have_gas_3722" + +"$have_gas_3722": ; preds = %"$out_of_gas_3721", %"$have_gas_3717" + %"$consume_3723" = sub i64 %"$gasrem_3719", 1 + store i64 %"$consume_3723", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3724", i32 0, i32 0), i32 5 }, %String* %key1c + %"$gasrem_3725" = load i64, i64* @_gasrem + %"$gascmp_3726" = icmp ugt i64 1, %"$gasrem_3725" + br i1 %"$gascmp_3726", label %"$out_of_gas_3727", label %"$have_gas_3728" + +"$out_of_gas_3727": ; preds = %"$have_gas_3722" + call void @_out_of_gas() + br label %"$have_gas_3728" + +"$have_gas_3728": ; preds = %"$out_of_gas_3727", %"$have_gas_3722" + %"$consume_3729" = sub i64 %"$gasrem_3725", 1 + store i64 %"$consume_3729", i64* @_gasrem %key2c = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1429", i32 0, i32 0), i32 5 }, %String* %key2c + %"$gasrem_3730" = load i64, i64* @_gasrem + %"$gascmp_3731" = icmp ugt i64 1, %"$gasrem_3730" + br i1 %"$gascmp_3731", label %"$out_of_gas_3732", label %"$have_gas_3733" + +"$out_of_gas_3732": ; preds = %"$have_gas_3728" + call void @_out_of_gas() + br label %"$have_gas_3733" + +"$have_gas_3733": ; preds = %"$out_of_gas_3732", %"$have_gas_3728" + %"$consume_3734" = sub i64 %"$gasrem_3730", 1 + store i64 %"$consume_3734", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3735", i32 0, i32 0), i32 5 }, %String* %key2c + %"$gasrem_3736" = load i64, i64* @_gasrem + %"$gascmp_3737" = icmp ugt i64 1, %"$gasrem_3736" + br i1 %"$gascmp_3737", label %"$out_of_gas_3738", label %"$have_gas_3739" + +"$out_of_gas_3738": ; preds = %"$have_gas_3733" + call void @_out_of_gas() + br label %"$have_gas_3739" + +"$have_gas_3739": ; preds = %"$out_of_gas_3738", %"$have_gas_3733" + %"$consume_3740" = sub i64 %"$gasrem_3736", 1 + store i64 %"$consume_3740", i64* @_gasrem %key1d = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1430", i32 0, i32 0), i32 5 }, %String* %key1d + %"$gasrem_3741" = load i64, i64* @_gasrem + %"$gascmp_3742" = icmp ugt i64 1, %"$gasrem_3741" + br i1 %"$gascmp_3742", label %"$out_of_gas_3743", label %"$have_gas_3744" + +"$out_of_gas_3743": ; preds = %"$have_gas_3739" + call void @_out_of_gas() + br label %"$have_gas_3744" + +"$have_gas_3744": ; preds = %"$out_of_gas_3743", %"$have_gas_3739" + %"$consume_3745" = sub i64 %"$gasrem_3741", 1 + store i64 %"$consume_3745", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3746", i32 0, i32 0), i32 5 }, %String* %key1d + %"$gasrem_3747" = load i64, i64* @_gasrem + %"$gascmp_3748" = icmp ugt i64 1, %"$gasrem_3747" + br i1 %"$gascmp_3748", label %"$out_of_gas_3749", label %"$have_gas_3750" + +"$out_of_gas_3749": ; preds = %"$have_gas_3744" + call void @_out_of_gas() + br label %"$have_gas_3750" + +"$have_gas_3750": ; preds = %"$out_of_gas_3749", %"$have_gas_3744" + %"$consume_3751" = sub i64 %"$gasrem_3747", 1 + store i64 %"$consume_3751", i64* @_gasrem %key2d = alloca %String - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1431", i32 0, i32 0), i32 5 }, %String* %key2d + %"$gasrem_3752" = load i64, i64* @_gasrem + %"$gascmp_3753" = icmp ugt i64 1, %"$gasrem_3752" + br i1 %"$gascmp_3753", label %"$out_of_gas_3754", label %"$have_gas_3755" + +"$out_of_gas_3754": ; preds = %"$have_gas_3750" + call void @_out_of_gas() + br label %"$have_gas_3755" + +"$have_gas_3755": ; preds = %"$out_of_gas_3754", %"$have_gas_3750" + %"$consume_3756" = sub i64 %"$gasrem_3752", 1 + store i64 %"$consume_3756", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3757", i32 0, i32 0), i32 5 }, %String* %key2d %t1 = alloca %TName_Option_String* - %"$indices_buf_1432_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1432_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1432_salloc_load", i64 32) - %"$indices_buf_1432_salloc" = bitcast i8* %"$indices_buf_1432_salloc_salloc" to [32 x i8]* - %"$indices_buf_1432" = bitcast [32 x i8]* %"$indices_buf_1432_salloc" to i8* - %"$key1a_1433" = load %String, %String* %key1a - %"$indices_gep_1434" = getelementptr i8, i8* %"$indices_buf_1432", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_1434" to %String* - store %String %"$key1a_1433", %String* %indices_cast - %"$key2a_1435" = load %String, %String* %key2a - %"$indices_gep_1436" = getelementptr i8, i8* %"$indices_buf_1432", i32 16 - %indices_cast1 = bitcast i8* %"$indices_gep_1436" to %String* - store %String %"$key2a_1435", %String* %indices_cast1 - %"$execptr_load_1437" = load i8*, i8** @_execptr - %"$t1_1439" = call i8* @_fetch_field(i8* %"$execptr_load_1437", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1438", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 2, i8* %"$indices_buf_1432", i32 1) - %"$t1_1440" = bitcast i8* %"$t1_1439" to %TName_Option_String* - store %TName_Option_String* %"$t1_1440", %TName_Option_String** %t1 + %"$indices_buf_3758_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3758_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3758_salloc_load", i64 32) + %"$indices_buf_3758_salloc" = bitcast i8* %"$indices_buf_3758_salloc_salloc" to [32 x i8]* + %"$indices_buf_3758" = bitcast [32 x i8]* %"$indices_buf_3758_salloc" to i8* + %"$key1a_3759" = load %String, %String* %key1a + %"$indices_gep_3760" = getelementptr i8, i8* %"$indices_buf_3758", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_3760" to %String* + store %String %"$key1a_3759", %String* %indices_cast + %"$key2a_3761" = load %String, %String* %key2a + %"$indices_gep_3762" = getelementptr i8, i8* %"$indices_buf_3758", i32 16 + %indices_cast1 = bitcast i8* %"$indices_gep_3762" to %String* + store %String %"$key2a_3761", %String* %indices_cast1 + %"$execptr_load_3763" = load i8*, i8** @_execptr + %"$t1_3765" = call i8* @_fetch_field(i8* %"$execptr_load_3763", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_3764", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_3758", i32 1) + %"$t1_3766" = bitcast i8* %"$t1_3765" to %TName_Option_String* + store %TName_Option_String* %"$t1_3766", %TName_Option_String** %t1 + %"$t1_3767" = load %TName_Option_String*, %TName_Option_String** %t1 + %"$$t1_3767_3768" = bitcast %TName_Option_String* %"$t1_3767" to i8* + %"$_literal_cost_call_3769" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$t1_3767_3768") + %"$gasadd_3770" = add i64 %"$_literal_cost_call_3769", 0 + %"$gasadd_3771" = add i64 %"$gasadd_3770", 2 + %"$gasrem_3772" = load i64, i64* @_gasrem + %"$gascmp_3773" = icmp ugt i64 %"$gasadd_3771", %"$gasrem_3772" + br i1 %"$gascmp_3773", label %"$out_of_gas_3774", label %"$have_gas_3775" + +"$out_of_gas_3774": ; preds = %"$have_gas_3755" + call void @_out_of_gas() + br label %"$have_gas_3775" + +"$have_gas_3775": ; preds = %"$out_of_gas_3774", %"$have_gas_3755" + %"$consume_3776" = sub i64 %"$gasrem_3772", %"$gasadd_3771" + store i64 %"$consume_3776", i64* @_gasrem %t2 = alloca %TName_Option_String* - %"$indices_buf_1441_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1441_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1441_salloc_load", i64 32) - %"$indices_buf_1441_salloc" = bitcast i8* %"$indices_buf_1441_salloc_salloc" to [32 x i8]* - %"$indices_buf_1441" = bitcast [32 x i8]* %"$indices_buf_1441_salloc" to i8* - %"$key1b_1442" = load %String, %String* %key1b - %"$indices_gep_1443" = getelementptr i8, i8* %"$indices_buf_1441", i32 0 - %indices_cast2 = bitcast i8* %"$indices_gep_1443" to %String* - store %String %"$key1b_1442", %String* %indices_cast2 - %"$key2b_1444" = load %String, %String* %key2b - %"$indices_gep_1445" = getelementptr i8, i8* %"$indices_buf_1441", i32 16 - %indices_cast3 = bitcast i8* %"$indices_gep_1445" to %String* - store %String %"$key2b_1444", %String* %indices_cast3 - %"$execptr_load_1446" = load i8*, i8** @_execptr - %"$t2_1448" = call i8* @_fetch_field(i8* %"$execptr_load_1446", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1447", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 2, i8* %"$indices_buf_1441", i32 1) - %"$t2_1449" = bitcast i8* %"$t2_1448" to %TName_Option_String* - store %TName_Option_String* %"$t2_1449", %TName_Option_String** %t2 + %"$indices_buf_3777_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3777_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3777_salloc_load", i64 32) + %"$indices_buf_3777_salloc" = bitcast i8* %"$indices_buf_3777_salloc_salloc" to [32 x i8]* + %"$indices_buf_3777" = bitcast [32 x i8]* %"$indices_buf_3777_salloc" to i8* + %"$key1b_3778" = load %String, %String* %key1b + %"$indices_gep_3779" = getelementptr i8, i8* %"$indices_buf_3777", i32 0 + %indices_cast2 = bitcast i8* %"$indices_gep_3779" to %String* + store %String %"$key1b_3778", %String* %indices_cast2 + %"$key2b_3780" = load %String, %String* %key2b + %"$indices_gep_3781" = getelementptr i8, i8* %"$indices_buf_3777", i32 16 + %indices_cast3 = bitcast i8* %"$indices_gep_3781" to %String* + store %String %"$key2b_3780", %String* %indices_cast3 + %"$execptr_load_3782" = load i8*, i8** @_execptr + %"$t2_3784" = call i8* @_fetch_field(i8* %"$execptr_load_3782", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_3783", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_3777", i32 1) + %"$t2_3785" = bitcast i8* %"$t2_3784" to %TName_Option_String* + store %TName_Option_String* %"$t2_3785", %TName_Option_String** %t2 + %"$t2_3786" = load %TName_Option_String*, %TName_Option_String** %t2 + %"$$t2_3786_3787" = bitcast %TName_Option_String* %"$t2_3786" to i8* + %"$_literal_cost_call_3788" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$t2_3786_3787") + %"$gasadd_3789" = add i64 %"$_literal_cost_call_3788", 0 + %"$gasadd_3790" = add i64 %"$gasadd_3789", 2 + %"$gasrem_3791" = load i64, i64* @_gasrem + %"$gascmp_3792" = icmp ugt i64 %"$gasadd_3790", %"$gasrem_3791" + br i1 %"$gascmp_3792", label %"$out_of_gas_3793", label %"$have_gas_3794" + +"$out_of_gas_3793": ; preds = %"$have_gas_3775" + call void @_out_of_gas() + br label %"$have_gas_3794" + +"$have_gas_3794": ; preds = %"$out_of_gas_3793", %"$have_gas_3775" + %"$consume_3795" = sub i64 %"$gasrem_3791", %"$gasadd_3790" + store i64 %"$consume_3795", i64* @_gasrem %t3 = alloca %TName_Option_String* - %"$indices_buf_1450_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1450_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1450_salloc_load", i64 32) - %"$indices_buf_1450_salloc" = bitcast i8* %"$indices_buf_1450_salloc_salloc" to [32 x i8]* - %"$indices_buf_1450" = bitcast [32 x i8]* %"$indices_buf_1450_salloc" to i8* - %"$key1c_1451" = load %String, %String* %key1c - %"$indices_gep_1452" = getelementptr i8, i8* %"$indices_buf_1450", i32 0 - %indices_cast4 = bitcast i8* %"$indices_gep_1452" to %String* - store %String %"$key1c_1451", %String* %indices_cast4 - %"$key2c_1453" = load %String, %String* %key2c - %"$indices_gep_1454" = getelementptr i8, i8* %"$indices_buf_1450", i32 16 - %indices_cast5 = bitcast i8* %"$indices_gep_1454" to %String* - store %String %"$key2c_1453", %String* %indices_cast5 - %"$execptr_load_1455" = load i8*, i8** @_execptr - %"$t3_1457" = call i8* @_fetch_field(i8* %"$execptr_load_1455", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1456", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 2, i8* %"$indices_buf_1450", i32 1) - %"$t3_1458" = bitcast i8* %"$t3_1457" to %TName_Option_String* - store %TName_Option_String* %"$t3_1458", %TName_Option_String** %t3 + %"$indices_buf_3796_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3796_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3796_salloc_load", i64 32) + %"$indices_buf_3796_salloc" = bitcast i8* %"$indices_buf_3796_salloc_salloc" to [32 x i8]* + %"$indices_buf_3796" = bitcast [32 x i8]* %"$indices_buf_3796_salloc" to i8* + %"$key1c_3797" = load %String, %String* %key1c + %"$indices_gep_3798" = getelementptr i8, i8* %"$indices_buf_3796", i32 0 + %indices_cast4 = bitcast i8* %"$indices_gep_3798" to %String* + store %String %"$key1c_3797", %String* %indices_cast4 + %"$key2c_3799" = load %String, %String* %key2c + %"$indices_gep_3800" = getelementptr i8, i8* %"$indices_buf_3796", i32 16 + %indices_cast5 = bitcast i8* %"$indices_gep_3800" to %String* + store %String %"$key2c_3799", %String* %indices_cast5 + %"$execptr_load_3801" = load i8*, i8** @_execptr + %"$t3_3803" = call i8* @_fetch_field(i8* %"$execptr_load_3801", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_3802", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_3796", i32 1) + %"$t3_3804" = bitcast i8* %"$t3_3803" to %TName_Option_String* + store %TName_Option_String* %"$t3_3804", %TName_Option_String** %t3 + %"$t3_3805" = load %TName_Option_String*, %TName_Option_String** %t3 + %"$$t3_3805_3806" = bitcast %TName_Option_String* %"$t3_3805" to i8* + %"$_literal_cost_call_3807" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$t3_3805_3806") + %"$gasadd_3808" = add i64 %"$_literal_cost_call_3807", 0 + %"$gasadd_3809" = add i64 %"$gasadd_3808", 2 + %"$gasrem_3810" = load i64, i64* @_gasrem + %"$gascmp_3811" = icmp ugt i64 %"$gasadd_3809", %"$gasrem_3810" + br i1 %"$gascmp_3811", label %"$out_of_gas_3812", label %"$have_gas_3813" + +"$out_of_gas_3812": ; preds = %"$have_gas_3794" + call void @_out_of_gas() + br label %"$have_gas_3813" + +"$have_gas_3813": ; preds = %"$out_of_gas_3812", %"$have_gas_3794" + %"$consume_3814" = sub i64 %"$gasrem_3810", %"$gasadd_3809" + store i64 %"$consume_3814", i64* @_gasrem %t4 = alloca %TName_Option_String* - %"$indices_buf_1459_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1459_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1459_salloc_load", i64 32) - %"$indices_buf_1459_salloc" = bitcast i8* %"$indices_buf_1459_salloc_salloc" to [32 x i8]* - %"$indices_buf_1459" = bitcast [32 x i8]* %"$indices_buf_1459_salloc" to i8* - %"$key1d_1460" = load %String, %String* %key1d - %"$indices_gep_1461" = getelementptr i8, i8* %"$indices_buf_1459", i32 0 - %indices_cast6 = bitcast i8* %"$indices_gep_1461" to %String* - store %String %"$key1d_1460", %String* %indices_cast6 - %"$key2d_1462" = load %String, %String* %key2d - %"$indices_gep_1463" = getelementptr i8, i8* %"$indices_buf_1459", i32 16 - %indices_cast7 = bitcast i8* %"$indices_gep_1463" to %String* - store %String %"$key2d_1462", %String* %indices_cast7 - %"$execptr_load_1464" = load i8*, i8** @_execptr - %"$t4_1466" = call i8* @_fetch_field(i8* %"$execptr_load_1464", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1465", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 2, i8* %"$indices_buf_1459", i32 1) - %"$t4_1467" = bitcast i8* %"$t4_1466" to %TName_Option_String* - store %TName_Option_String* %"$t4_1467", %TName_Option_String** %t4 + %"$indices_buf_3815_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3815_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3815_salloc_load", i64 32) + %"$indices_buf_3815_salloc" = bitcast i8* %"$indices_buf_3815_salloc_salloc" to [32 x i8]* + %"$indices_buf_3815" = bitcast [32 x i8]* %"$indices_buf_3815_salloc" to i8* + %"$key1d_3816" = load %String, %String* %key1d + %"$indices_gep_3817" = getelementptr i8, i8* %"$indices_buf_3815", i32 0 + %indices_cast6 = bitcast i8* %"$indices_gep_3817" to %String* + store %String %"$key1d_3816", %String* %indices_cast6 + %"$key2d_3818" = load %String, %String* %key2d + %"$indices_gep_3819" = getelementptr i8, i8* %"$indices_buf_3815", i32 16 + %indices_cast7 = bitcast i8* %"$indices_gep_3819" to %String* + store %String %"$key2d_3818", %String* %indices_cast7 + %"$execptr_load_3820" = load i8*, i8** @_execptr + %"$t4_3822" = call i8* @_fetch_field(i8* %"$execptr_load_3820", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_3821", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_3815", i32 1) + %"$t4_3823" = bitcast i8* %"$t4_3822" to %TName_Option_String* + store %TName_Option_String* %"$t4_3823", %TName_Option_String** %t4 + %"$t4_3824" = load %TName_Option_String*, %TName_Option_String** %t4 + %"$$t4_3824_3825" = bitcast %TName_Option_String* %"$t4_3824" to i8* + %"$_literal_cost_call_3826" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$t4_3824_3825") + %"$gasadd_3827" = add i64 %"$_literal_cost_call_3826", 0 + %"$gasadd_3828" = add i64 %"$gasadd_3827", 2 + %"$gasrem_3829" = load i64, i64* @_gasrem + %"$gascmp_3830" = icmp ugt i64 %"$gasadd_3828", %"$gasrem_3829" + br i1 %"$gascmp_3830", label %"$out_of_gas_3831", label %"$have_gas_3832" + +"$out_of_gas_3831": ; preds = %"$have_gas_3813" + call void @_out_of_gas() + br label %"$have_gas_3832" + +"$have_gas_3832": ; preds = %"$out_of_gas_3831", %"$have_gas_3813" + %"$consume_3833" = sub i64 %"$gasrem_3829", %"$gasadd_3828" + store i64 %"$consume_3833", i64* @_gasrem + %"$gasrem_3834" = load i64, i64* @_gasrem + %"$gascmp_3835" = icmp ugt i64 1, %"$gasrem_3834" + br i1 %"$gascmp_3835", label %"$out_of_gas_3836", label %"$have_gas_3837" + +"$out_of_gas_3836": ; preds = %"$have_gas_3832" + call void @_out_of_gas() + br label %"$have_gas_3837" + +"$have_gas_3837": ; preds = %"$out_of_gas_3836", %"$have_gas_3832" + %"$consume_3838" = sub i64 %"$gasrem_3834", 1 + store i64 %"$consume_3838", i64* @_gasrem %v1 = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1468", i32 0, i32 0), i32 3 }, %String* %v1 + %"$gasrem_3839" = load i64, i64* @_gasrem + %"$gascmp_3840" = icmp ugt i64 1, %"$gasrem_3839" + br i1 %"$gascmp_3840", label %"$out_of_gas_3841", label %"$have_gas_3842" + +"$out_of_gas_3841": ; preds = %"$have_gas_3837" + call void @_out_of_gas() + br label %"$have_gas_3842" + +"$have_gas_3842": ; preds = %"$out_of_gas_3841", %"$have_gas_3837" + %"$consume_3843" = sub i64 %"$gasrem_3839", 1 + store i64 %"$consume_3843", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3844", i32 0, i32 0), i32 3 }, %String* %v1 + %"$gasrem_3845" = load i64, i64* @_gasrem + %"$gascmp_3846" = icmp ugt i64 1, %"$gasrem_3845" + br i1 %"$gascmp_3846", label %"$out_of_gas_3847", label %"$have_gas_3848" + +"$out_of_gas_3847": ; preds = %"$have_gas_3842" + call void @_out_of_gas() + br label %"$have_gas_3848" + +"$have_gas_3848": ; preds = %"$out_of_gas_3847", %"$have_gas_3842" + %"$consume_3849" = sub i64 %"$gasrem_3845", 1 + store i64 %"$consume_3849", i64* @_gasrem %v2 = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1469", i32 0, i32 0), i32 3 }, %String* %v2 + %"$gasrem_3850" = load i64, i64* @_gasrem + %"$gascmp_3851" = icmp ugt i64 1, %"$gasrem_3850" + br i1 %"$gascmp_3851", label %"$out_of_gas_3852", label %"$have_gas_3853" + +"$out_of_gas_3852": ; preds = %"$have_gas_3848" + call void @_out_of_gas() + br label %"$have_gas_3853" + +"$have_gas_3853": ; preds = %"$out_of_gas_3852", %"$have_gas_3848" + %"$consume_3854" = sub i64 %"$gasrem_3850", 1 + store i64 %"$consume_3854", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3855", i32 0, i32 0), i32 3 }, %String* %v2 + %"$gasrem_3856" = load i64, i64* @_gasrem + %"$gascmp_3857" = icmp ugt i64 1, %"$gasrem_3856" + br i1 %"$gascmp_3857", label %"$out_of_gas_3858", label %"$have_gas_3859" + +"$out_of_gas_3858": ; preds = %"$have_gas_3853" + call void @_out_of_gas() + br label %"$have_gas_3859" + +"$have_gas_3859": ; preds = %"$out_of_gas_3858", %"$have_gas_3853" + %"$consume_3860" = sub i64 %"$gasrem_3856", 1 + store i64 %"$consume_3860", i64* @_gasrem %v3 = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1470", i32 0, i32 0), i32 3 }, %String* %v3 + %"$gasrem_3861" = load i64, i64* @_gasrem + %"$gascmp_3862" = icmp ugt i64 1, %"$gasrem_3861" + br i1 %"$gascmp_3862", label %"$out_of_gas_3863", label %"$have_gas_3864" + +"$out_of_gas_3863": ; preds = %"$have_gas_3859" + call void @_out_of_gas() + br label %"$have_gas_3864" + +"$have_gas_3864": ; preds = %"$out_of_gas_3863", %"$have_gas_3859" + %"$consume_3865" = sub i64 %"$gasrem_3861", 1 + store i64 %"$consume_3865", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3866", i32 0, i32 0), i32 3 }, %String* %v3 + %"$gasrem_3867" = load i64, i64* @_gasrem + %"$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_3864" + call void @_out_of_gas() + br label %"$have_gas_3870" + +"$have_gas_3870": ; preds = %"$out_of_gas_3869", %"$have_gas_3864" + %"$consume_3871" = sub i64 %"$gasrem_3867", 1 + store i64 %"$consume_3871", i64* @_gasrem %v4 = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1471", i32 0, i32 0), i32 3 }, %String* %v4 + %"$gasrem_3872" = load i64, i64* @_gasrem + %"$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 + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3877", i32 0, i32 0), i32 3 }, %String* %v4 + %"$gasrem_3878" = load i64, i64* @_gasrem + %"$gascmp_3879" = icmp ugt i64 1, %"$gasrem_3878" + br i1 %"$gascmp_3879", label %"$out_of_gas_3880", label %"$have_gas_3881" + +"$out_of_gas_3880": ; preds = %"$have_gas_3875" + call void @_out_of_gas() + br label %"$have_gas_3881" + +"$have_gas_3881": ; preds = %"$out_of_gas_3880", %"$have_gas_3875" + %"$consume_3882" = sub i64 %"$gasrem_3878", 1 + store i64 %"$consume_3882", i64* @_gasrem %b1 = alloca %TName_Bool* - %"$t1_1473" = load %TName_Option_String*, %TName_Option_String** %t1 - %"$t1_tag_1474" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$t1_1473", i32 0, i32 0 - %"$t1_tag_1475" = load i8, i8* %"$t1_tag_1474" - switch i8 %"$t1_tag_1475", label %"$empty_default_1476" [ - i8 0, label %"$Some_1477" - i8 1, label %"$None_1485" + %"$gasrem_3883" = load i64, i64* @_gasrem + %"$gascmp_3884" = icmp ugt i64 2, %"$gasrem_3883" + br i1 %"$gascmp_3884", label %"$out_of_gas_3885", label %"$have_gas_3886" + +"$out_of_gas_3885": ; preds = %"$have_gas_3881" + call void @_out_of_gas() + br label %"$have_gas_3886" + +"$have_gas_3886": ; preds = %"$out_of_gas_3885", %"$have_gas_3881" + %"$consume_3887" = sub i64 %"$gasrem_3883", 2 + store i64 %"$consume_3887", i64* @_gasrem + %"$t1_3889" = load %TName_Option_String*, %TName_Option_String** %t1 + %"$t1_tag_3890" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$t1_3889", i32 0, i32 0 + %"$t1_tag_3891" = load i8, i8* %"$t1_tag_3890" + switch i8 %"$t1_tag_3891", label %"$empty_default_3892" [ + i8 0, label %"$Some_3893" + i8 1, label %"$None_3901" ] -"$Some_1477": ; preds = %entry - %"$t1_1478" = bitcast %TName_Option_String* %"$t1_1473" to %CName_Some_String* - %"$t1v_gep_1479" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$t1_1478", i32 0, i32 1 - %"$t1v_load_1480" = load %String, %String* %"$t1v_gep_1479" +"$Some_3893": ; preds = %"$have_gas_3886" + %"$t1_3894" = bitcast %TName_Option_String* %"$t1_3889" to %CName_Some_String* + %"$t1v_gep_3895" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$t1_3894", i32 0, i32 1 + %"$t1v_load_3896" = load %String, %String* %"$t1v_gep_3895" %t1v = alloca %String - store %String %"$t1v_load_1480", %String* %t1v - %"$execptr_load_1481" = load i8*, i8** @_execptr - %"$t1v_1482" = load %String, %String* %t1v - %"$v1_1483" = load %String, %String* %v1 - %"$eq_call_1484" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_1481", %String %"$t1v_1482", %String %"$v1_1483") - store %TName_Bool* %"$eq_call_1484", %TName_Bool** %b1 - br label %"$matchsucc_1472" - -"$None_1485": ; preds = %entry - %"$t1_1486" = bitcast %TName_Option_String* %"$t1_1473" to %CName_None_String* - %"$adtval_1487_load" = load i8*, i8** @_execptr - %"$adtval_1487_salloc" = call i8* @_salloc(i8* %"$adtval_1487_load", i64 1) - %"$adtval_1487" = bitcast i8* %"$adtval_1487_salloc" to %CName_False* - %"$adtgep_1488" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_1487", i32 0, i32 0 - store i8 1, i8* %"$adtgep_1488" - %"$adtptr_1489" = bitcast %CName_False* %"$adtval_1487" to %TName_Bool* - store %TName_Bool* %"$adtptr_1489", %TName_Bool** %b1 - br label %"$matchsucc_1472" - -"$empty_default_1476": ; preds = %entry - br label %"$matchsucc_1472" - -"$matchsucc_1472": ; preds = %"$None_1485", %"$Some_1477", %"$empty_default_1476" + store %String %"$t1v_load_3896", %String* %t1v + %"$execptr_load_3897" = load i8*, i8** @_execptr + %"$t1v_3898" = load %String, %String* %t1v + %"$v1_3899" = load %String, %String* %v1 + %"$eq_call_3900" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_3897", %String %"$t1v_3898", %String %"$v1_3899") + store %TName_Bool* %"$eq_call_3900", %TName_Bool** %b1 + br label %"$matchsucc_3888" + +"$None_3901": ; preds = %"$have_gas_3886" + %"$t1_3902" = bitcast %TName_Option_String* %"$t1_3889" to %CName_None_String* + %"$gasrem_3903" = load i64, i64* @_gasrem + %"$gascmp_3904" = icmp ugt i64 1, %"$gasrem_3903" + br i1 %"$gascmp_3904", label %"$out_of_gas_3905", label %"$have_gas_3906" + +"$out_of_gas_3905": ; preds = %"$None_3901" + call void @_out_of_gas() + br label %"$have_gas_3906" + +"$have_gas_3906": ; preds = %"$out_of_gas_3905", %"$None_3901" + %"$consume_3907" = sub i64 %"$gasrem_3903", 1 + store i64 %"$consume_3907", i64* @_gasrem + %"$adtval_3908_load" = load i8*, i8** @_execptr + %"$adtval_3908_salloc" = call i8* @_salloc(i8* %"$adtval_3908_load", i64 1) + %"$adtval_3908" = bitcast i8* %"$adtval_3908_salloc" to %CName_False* + %"$adtgep_3909" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_3908", i32 0, i32 0 + store i8 1, i8* %"$adtgep_3909" + %"$adtptr_3910" = bitcast %CName_False* %"$adtval_3908" to %TName_Bool* + store %TName_Bool* %"$adtptr_3910", %TName_Bool** %b1 + br label %"$matchsucc_3888" + +"$empty_default_3892": ; preds = %"$have_gas_3886" + br label %"$matchsucc_3888" + +"$matchsucc_3888": ; preds = %"$have_gas_3906", %"$Some_3893", %"$empty_default_3892" + %"$gasrem_3911" = load i64, i64* @_gasrem + %"$gascmp_3912" = icmp ugt i64 1, %"$gasrem_3911" + br i1 %"$gascmp_3912", label %"$out_of_gas_3913", label %"$have_gas_3914" + +"$out_of_gas_3913": ; preds = %"$matchsucc_3888" + call void @_out_of_gas() + br label %"$have_gas_3914" + +"$have_gas_3914": ; preds = %"$out_of_gas_3913", %"$matchsucc_3888" + %"$consume_3915" = sub i64 %"$gasrem_3911", 1 + store i64 %"$consume_3915", i64* @_gasrem %b2 = alloca %TName_Bool* - %"$t2_1491" = load %TName_Option_String*, %TName_Option_String** %t2 - %"$t2_tag_1492" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$t2_1491", i32 0, i32 0 - %"$t2_tag_1493" = load i8, i8* %"$t2_tag_1492" - switch i8 %"$t2_tag_1493", label %"$empty_default_1494" [ - i8 0, label %"$Some_1495" - i8 1, label %"$None_1503" + %"$gasrem_3916" = load i64, i64* @_gasrem + %"$gascmp_3917" = icmp ugt i64 2, %"$gasrem_3916" + br i1 %"$gascmp_3917", label %"$out_of_gas_3918", label %"$have_gas_3919" + +"$out_of_gas_3918": ; preds = %"$have_gas_3914" + call void @_out_of_gas() + br label %"$have_gas_3919" + +"$have_gas_3919": ; preds = %"$out_of_gas_3918", %"$have_gas_3914" + %"$consume_3920" = sub i64 %"$gasrem_3916", 2 + store i64 %"$consume_3920", i64* @_gasrem + %"$t2_3922" = load %TName_Option_String*, %TName_Option_String** %t2 + %"$t2_tag_3923" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$t2_3922", i32 0, i32 0 + %"$t2_tag_3924" = load i8, i8* %"$t2_tag_3923" + switch i8 %"$t2_tag_3924", label %"$empty_default_3925" [ + i8 0, label %"$Some_3926" + i8 1, label %"$None_3934" ] -"$Some_1495": ; preds = %"$matchsucc_1472" - %"$t2_1496" = bitcast %TName_Option_String* %"$t2_1491" to %CName_Some_String* - %"$t2v_gep_1497" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$t2_1496", i32 0, i32 1 - %"$t2v_load_1498" = load %String, %String* %"$t2v_gep_1497" +"$Some_3926": ; preds = %"$have_gas_3919" + %"$t2_3927" = bitcast %TName_Option_String* %"$t2_3922" to %CName_Some_String* + %"$t2v_gep_3928" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$t2_3927", i32 0, i32 1 + %"$t2v_load_3929" = load %String, %String* %"$t2v_gep_3928" %t2v = alloca %String - store %String %"$t2v_load_1498", %String* %t2v - %"$execptr_load_1499" = load i8*, i8** @_execptr - %"$t2v_1500" = load %String, %String* %t2v - %"$v2_1501" = load %String, %String* %v2 - %"$eq_call_1502" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_1499", %String %"$t2v_1500", %String %"$v2_1501") - store %TName_Bool* %"$eq_call_1502", %TName_Bool** %b2 - br label %"$matchsucc_1490" - -"$None_1503": ; preds = %"$matchsucc_1472" - %"$t2_1504" = bitcast %TName_Option_String* %"$t2_1491" to %CName_None_String* - %"$adtval_1505_load" = load i8*, i8** @_execptr - %"$adtval_1505_salloc" = call i8* @_salloc(i8* %"$adtval_1505_load", i64 1) - %"$adtval_1505" = bitcast i8* %"$adtval_1505_salloc" to %CName_False* - %"$adtgep_1506" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_1505", i32 0, i32 0 - store i8 1, i8* %"$adtgep_1506" - %"$adtptr_1507" = bitcast %CName_False* %"$adtval_1505" to %TName_Bool* - store %TName_Bool* %"$adtptr_1507", %TName_Bool** %b2 - br label %"$matchsucc_1490" - -"$empty_default_1494": ; preds = %"$matchsucc_1472" - br label %"$matchsucc_1490" - -"$matchsucc_1490": ; preds = %"$None_1503", %"$Some_1495", %"$empty_default_1494" + store %String %"$t2v_load_3929", %String* %t2v + %"$execptr_load_3930" = load i8*, i8** @_execptr + %"$t2v_3931" = load %String, %String* %t2v + %"$v2_3932" = load %String, %String* %v2 + %"$eq_call_3933" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_3930", %String %"$t2v_3931", %String %"$v2_3932") + store %TName_Bool* %"$eq_call_3933", %TName_Bool** %b2 + br label %"$matchsucc_3921" + +"$None_3934": ; preds = %"$have_gas_3919" + %"$t2_3935" = bitcast %TName_Option_String* %"$t2_3922" to %CName_None_String* + %"$gasrem_3936" = load i64, i64* @_gasrem + %"$gascmp_3937" = icmp ugt i64 1, %"$gasrem_3936" + br i1 %"$gascmp_3937", label %"$out_of_gas_3938", label %"$have_gas_3939" + +"$out_of_gas_3938": ; preds = %"$None_3934" + call void @_out_of_gas() + br label %"$have_gas_3939" + +"$have_gas_3939": ; preds = %"$out_of_gas_3938", %"$None_3934" + %"$consume_3940" = sub i64 %"$gasrem_3936", 1 + store i64 %"$consume_3940", i64* @_gasrem + %"$adtval_3941_load" = load i8*, i8** @_execptr + %"$adtval_3941_salloc" = call i8* @_salloc(i8* %"$adtval_3941_load", i64 1) + %"$adtval_3941" = bitcast i8* %"$adtval_3941_salloc" to %CName_False* + %"$adtgep_3942" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_3941", i32 0, i32 0 + store i8 1, i8* %"$adtgep_3942" + %"$adtptr_3943" = bitcast %CName_False* %"$adtval_3941" to %TName_Bool* + store %TName_Bool* %"$adtptr_3943", %TName_Bool** %b2 + br label %"$matchsucc_3921" + +"$empty_default_3925": ; preds = %"$have_gas_3919" + br label %"$matchsucc_3921" + +"$matchsucc_3921": ; preds = %"$have_gas_3939", %"$Some_3926", %"$empty_default_3925" + %"$gasrem_3944" = load i64, i64* @_gasrem + %"$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 = %"$matchsucc_3921" + call void @_out_of_gas() + br label %"$have_gas_3947" + +"$have_gas_3947": ; preds = %"$out_of_gas_3946", %"$matchsucc_3921" + %"$consume_3948" = sub i64 %"$gasrem_3944", 1 + store i64 %"$consume_3948", i64* @_gasrem %b3 = alloca %TName_Bool* - %"$t3_1509" = load %TName_Option_String*, %TName_Option_String** %t3 - %"$t3_tag_1510" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$t3_1509", i32 0, i32 0 - %"$t3_tag_1511" = load i8, i8* %"$t3_tag_1510" - switch i8 %"$t3_tag_1511", label %"$empty_default_1512" [ - i8 0, label %"$Some_1513" - i8 1, label %"$None_1521" + %"$gasrem_3949" = load i64, i64* @_gasrem + %"$gascmp_3950" = icmp ugt i64 2, %"$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", 2 + store i64 %"$consume_3953", i64* @_gasrem + %"$t3_3955" = load %TName_Option_String*, %TName_Option_String** %t3 + %"$t3_tag_3956" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$t3_3955", i32 0, i32 0 + %"$t3_tag_3957" = load i8, i8* %"$t3_tag_3956" + switch i8 %"$t3_tag_3957", label %"$empty_default_3958" [ + i8 0, label %"$Some_3959" + i8 1, label %"$None_3967" ] -"$Some_1513": ; preds = %"$matchsucc_1490" - %"$t3_1514" = bitcast %TName_Option_String* %"$t3_1509" to %CName_Some_String* - %"$t3v_gep_1515" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$t3_1514", i32 0, i32 1 - %"$t3v_load_1516" = load %String, %String* %"$t3v_gep_1515" +"$Some_3959": ; preds = %"$have_gas_3952" + %"$t3_3960" = bitcast %TName_Option_String* %"$t3_3955" to %CName_Some_String* + %"$t3v_gep_3961" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$t3_3960", i32 0, i32 1 + %"$t3v_load_3962" = load %String, %String* %"$t3v_gep_3961" %t3v = alloca %String - store %String %"$t3v_load_1516", %String* %t3v - %"$execptr_load_1517" = load i8*, i8** @_execptr - %"$t3v_1518" = load %String, %String* %t3v - %"$v3_1519" = load %String, %String* %v3 - %"$eq_call_1520" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_1517", %String %"$t3v_1518", %String %"$v3_1519") - store %TName_Bool* %"$eq_call_1520", %TName_Bool** %b3 - br label %"$matchsucc_1508" - -"$None_1521": ; preds = %"$matchsucc_1490" - %"$t3_1522" = bitcast %TName_Option_String* %"$t3_1509" to %CName_None_String* - %"$adtval_1523_load" = load i8*, i8** @_execptr - %"$adtval_1523_salloc" = call i8* @_salloc(i8* %"$adtval_1523_load", i64 1) - %"$adtval_1523" = bitcast i8* %"$adtval_1523_salloc" to %CName_False* - %"$adtgep_1524" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_1523", i32 0, i32 0 - store i8 1, i8* %"$adtgep_1524" - %"$adtptr_1525" = bitcast %CName_False* %"$adtval_1523" to %TName_Bool* - store %TName_Bool* %"$adtptr_1525", %TName_Bool** %b3 - br label %"$matchsucc_1508" - -"$empty_default_1512": ; preds = %"$matchsucc_1490" - br label %"$matchsucc_1508" - -"$matchsucc_1508": ; preds = %"$None_1521", %"$Some_1513", %"$empty_default_1512" + store %String %"$t3v_load_3962", %String* %t3v + %"$execptr_load_3963" = load i8*, i8** @_execptr + %"$t3v_3964" = load %String, %String* %t3v + %"$v3_3965" = load %String, %String* %v3 + %"$eq_call_3966" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_3963", %String %"$t3v_3964", %String %"$v3_3965") + store %TName_Bool* %"$eq_call_3966", %TName_Bool** %b3 + br label %"$matchsucc_3954" + +"$None_3967": ; preds = %"$have_gas_3952" + %"$t3_3968" = bitcast %TName_Option_String* %"$t3_3955" to %CName_None_String* + %"$gasrem_3969" = load i64, i64* @_gasrem + %"$gascmp_3970" = icmp ugt i64 1, %"$gasrem_3969" + br i1 %"$gascmp_3970", label %"$out_of_gas_3971", label %"$have_gas_3972" + +"$out_of_gas_3971": ; preds = %"$None_3967" + call void @_out_of_gas() + br label %"$have_gas_3972" + +"$have_gas_3972": ; preds = %"$out_of_gas_3971", %"$None_3967" + %"$consume_3973" = sub i64 %"$gasrem_3969", 1 + store i64 %"$consume_3973", i64* @_gasrem + %"$adtval_3974_load" = load i8*, i8** @_execptr + %"$adtval_3974_salloc" = call i8* @_salloc(i8* %"$adtval_3974_load", i64 1) + %"$adtval_3974" = bitcast i8* %"$adtval_3974_salloc" to %CName_False* + %"$adtgep_3975" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_3974", i32 0, i32 0 + store i8 1, i8* %"$adtgep_3975" + %"$adtptr_3976" = bitcast %CName_False* %"$adtval_3974" to %TName_Bool* + store %TName_Bool* %"$adtptr_3976", %TName_Bool** %b3 + br label %"$matchsucc_3954" + +"$empty_default_3958": ; preds = %"$have_gas_3952" + br label %"$matchsucc_3954" + +"$matchsucc_3954": ; preds = %"$have_gas_3972", %"$Some_3959", %"$empty_default_3958" + %"$gasrem_3977" = load i64, i64* @_gasrem + %"$gascmp_3978" = icmp ugt i64 1, %"$gasrem_3977" + br i1 %"$gascmp_3978", label %"$out_of_gas_3979", label %"$have_gas_3980" + +"$out_of_gas_3979": ; preds = %"$matchsucc_3954" + call void @_out_of_gas() + br label %"$have_gas_3980" + +"$have_gas_3980": ; preds = %"$out_of_gas_3979", %"$matchsucc_3954" + %"$consume_3981" = sub i64 %"$gasrem_3977", 1 + store i64 %"$consume_3981", i64* @_gasrem %b4 = alloca %TName_Bool* - %"$t4_1527" = load %TName_Option_String*, %TName_Option_String** %t4 - %"$t4_tag_1528" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$t4_1527", i32 0, i32 0 - %"$t4_tag_1529" = load i8, i8* %"$t4_tag_1528" - switch i8 %"$t4_tag_1529", label %"$empty_default_1530" [ - i8 0, label %"$Some_1531" - i8 1, label %"$None_1539" + %"$gasrem_3982" = load i64, i64* @_gasrem + %"$gascmp_3983" = icmp ugt i64 2, %"$gasrem_3982" + br i1 %"$gascmp_3983", label %"$out_of_gas_3984", label %"$have_gas_3985" + +"$out_of_gas_3984": ; preds = %"$have_gas_3980" + call void @_out_of_gas() + br label %"$have_gas_3985" + +"$have_gas_3985": ; preds = %"$out_of_gas_3984", %"$have_gas_3980" + %"$consume_3986" = sub i64 %"$gasrem_3982", 2 + store i64 %"$consume_3986", i64* @_gasrem + %"$t4_3988" = load %TName_Option_String*, %TName_Option_String** %t4 + %"$t4_tag_3989" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$t4_3988", i32 0, i32 0 + %"$t4_tag_3990" = load i8, i8* %"$t4_tag_3989" + switch i8 %"$t4_tag_3990", label %"$empty_default_3991" [ + i8 0, label %"$Some_3992" + i8 1, label %"$None_4000" ] -"$Some_1531": ; preds = %"$matchsucc_1508" - %"$t4_1532" = bitcast %TName_Option_String* %"$t4_1527" to %CName_Some_String* - %"$t4v_gep_1533" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$t4_1532", i32 0, i32 1 - %"$t4v_load_1534" = load %String, %String* %"$t4v_gep_1533" +"$Some_3992": ; preds = %"$have_gas_3985" + %"$t4_3993" = bitcast %TName_Option_String* %"$t4_3988" to %CName_Some_String* + %"$t4v_gep_3994" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$t4_3993", i32 0, i32 1 + %"$t4v_load_3995" = load %String, %String* %"$t4v_gep_3994" %t4v = alloca %String - store %String %"$t4v_load_1534", %String* %t4v - %"$execptr_load_1535" = load i8*, i8** @_execptr - %"$t4v_1536" = load %String, %String* %t4v - %"$v4_1537" = load %String, %String* %v4 - %"$eq_call_1538" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_1535", %String %"$t4v_1536", %String %"$v4_1537") - store %TName_Bool* %"$eq_call_1538", %TName_Bool** %b4 - br label %"$matchsucc_1526" - -"$None_1539": ; preds = %"$matchsucc_1508" - %"$t4_1540" = bitcast %TName_Option_String* %"$t4_1527" to %CName_None_String* - %"$adtval_1541_load" = load i8*, i8** @_execptr - %"$adtval_1541_salloc" = call i8* @_salloc(i8* %"$adtval_1541_load", i64 1) - %"$adtval_1541" = bitcast i8* %"$adtval_1541_salloc" to %CName_False* - %"$adtgep_1542" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_1541", i32 0, i32 0 - store i8 1, i8* %"$adtgep_1542" - %"$adtptr_1543" = bitcast %CName_False* %"$adtval_1541" to %TName_Bool* - store %TName_Bool* %"$adtptr_1543", %TName_Bool** %b4 - br label %"$matchsucc_1526" - -"$empty_default_1530": ; preds = %"$matchsucc_1508" - br label %"$matchsucc_1526" - -"$matchsucc_1526": ; preds = %"$None_1539", %"$Some_1531", %"$empty_default_1530" + store %String %"$t4v_load_3995", %String* %t4v + %"$execptr_load_3996" = load i8*, i8** @_execptr + %"$t4v_3997" = load %String, %String* %t4v + %"$v4_3998" = load %String, %String* %v4 + %"$eq_call_3999" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_3996", %String %"$t4v_3997", %String %"$v4_3998") + store %TName_Bool* %"$eq_call_3999", %TName_Bool** %b4 + br label %"$matchsucc_3987" + +"$None_4000": ; preds = %"$have_gas_3985" + %"$t4_4001" = bitcast %TName_Option_String* %"$t4_3988" to %CName_None_String* + %"$gasrem_4002" = load i64, i64* @_gasrem + %"$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 = %"$None_4000" + call void @_out_of_gas() + br label %"$have_gas_4005" + +"$have_gas_4005": ; preds = %"$out_of_gas_4004", %"$None_4000" + %"$consume_4006" = sub i64 %"$gasrem_4002", 1 + store i64 %"$consume_4006", i64* @_gasrem + %"$adtval_4007_load" = load i8*, i8** @_execptr + %"$adtval_4007_salloc" = call i8* @_salloc(i8* %"$adtval_4007_load", i64 1) + %"$adtval_4007" = bitcast i8* %"$adtval_4007_salloc" to %CName_False* + %"$adtgep_4008" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_4007", i32 0, i32 0 + store i8 1, i8* %"$adtgep_4008" + %"$adtptr_4009" = bitcast %CName_False* %"$adtval_4007" to %TName_Bool* + store %TName_Bool* %"$adtptr_4009", %TName_Bool** %b4 + br label %"$matchsucc_3987" + +"$empty_default_3991": ; preds = %"$have_gas_3985" + br label %"$matchsucc_3987" + +"$matchsucc_3987": ; preds = %"$have_gas_4005", %"$Some_3992", %"$empty_default_3991" + %"$gasrem_4010" = load i64, i64* @_gasrem + %"$gascmp_4011" = icmp ugt i64 1, %"$gasrem_4010" + br i1 %"$gascmp_4011", label %"$out_of_gas_4012", label %"$have_gas_4013" + +"$out_of_gas_4012": ; preds = %"$matchsucc_3987" + call void @_out_of_gas() + br label %"$have_gas_4013" + +"$have_gas_4013": ; preds = %"$out_of_gas_4012", %"$matchsucc_3987" + %"$consume_4014" = sub i64 %"$gasrem_4010", 1 + store i64 %"$consume_4014", i64* @_gasrem %b = alloca %TName_Bool* + %"$gasrem_4015" = load i64, i64* @_gasrem + %"$gascmp_4016" = icmp ugt i64 1, %"$gasrem_4015" + br i1 %"$gascmp_4016", label %"$out_of_gas_4017", label %"$have_gas_4018" + +"$out_of_gas_4017": ; preds = %"$have_gas_4013" + call void @_out_of_gas() + br label %"$have_gas_4018" + +"$have_gas_4018": ; preds = %"$out_of_gas_4017", %"$have_gas_4013" + %"$consume_4019" = sub i64 %"$gasrem_4015", 1 + store i64 %"$consume_4019", i64* @_gasrem %a1 = alloca %TName_Bool* - %"$andb_17" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$andb_1544" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb - %"$andb_fptr_1545" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_1544", 0 - %"$andb_envptr_1546" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_1544", 1 - %"$b1_1547" = load %TName_Bool*, %TName_Bool** %b1 - %"$andb_call_1548" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_1545"(i8* %"$andb_envptr_1546", %TName_Bool* %"$b1_1547") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_1548", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_17" - %"$andb_18" = alloca %TName_Bool* - %"$$andb_17_1549" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_17" - %"$$andb_17_fptr_1550" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_17_1549", 0 - %"$$andb_17_envptr_1551" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_17_1549", 1 - %"$b2_1552" = load %TName_Bool*, %TName_Bool** %b2 - %"$$andb_17_call_1553" = call %TName_Bool* %"$$andb_17_fptr_1550"(i8* %"$$andb_17_envptr_1551", %TName_Bool* %"$b2_1552") - store %TName_Bool* %"$$andb_17_call_1553", %TName_Bool** %"$andb_18" - %"$$andb_18_1554" = load %TName_Bool*, %TName_Bool** %"$andb_18" - store %TName_Bool* %"$$andb_18_1554", %TName_Bool** %a1 + %"$gasrem_4020" = load i64, i64* @_gasrem + %"$gascmp_4021" = icmp ugt i64 1, %"$gasrem_4020" + br i1 %"$gascmp_4021", label %"$out_of_gas_4022", label %"$have_gas_4023" + +"$out_of_gas_4022": ; preds = %"$have_gas_4018" + call void @_out_of_gas() + br label %"$have_gas_4023" + +"$have_gas_4023": ; preds = %"$out_of_gas_4022", %"$have_gas_4018" + %"$consume_4024" = sub i64 %"$gasrem_4020", 1 + store i64 %"$consume_4024", i64* @_gasrem + %"$andb_16" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$andb_4025" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb + %"$andb_fptr_4026" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_4025", 0 + %"$andb_envptr_4027" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_4025", 1 + %"$b1_4028" = load %TName_Bool*, %TName_Bool** %b1 + %"$andb_call_4029" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_4026"(i8* %"$andb_envptr_4027", %TName_Bool* %"$b1_4028") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_4029", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_16" + %"$andb_17" = alloca %TName_Bool* + %"$$andb_16_4030" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_16" + %"$$andb_16_fptr_4031" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_16_4030", 0 + %"$$andb_16_envptr_4032" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_16_4030", 1 + %"$b2_4033" = load %TName_Bool*, %TName_Bool** %b2 + %"$$andb_16_call_4034" = call %TName_Bool* %"$$andb_16_fptr_4031"(i8* %"$$andb_16_envptr_4032", %TName_Bool* %"$b2_4033") + store %TName_Bool* %"$$andb_16_call_4034", %TName_Bool** %"$andb_17" + %"$$andb_17_4035" = load %TName_Bool*, %TName_Bool** %"$andb_17" + store %TName_Bool* %"$$andb_17_4035", %TName_Bool** %a1 + %"$gasrem_4036" = load i64, i64* @_gasrem + %"$gascmp_4037" = icmp ugt i64 1, %"$gasrem_4036" + br i1 %"$gascmp_4037", label %"$out_of_gas_4038", label %"$have_gas_4039" + +"$out_of_gas_4038": ; preds = %"$have_gas_4023" + call void @_out_of_gas() + br label %"$have_gas_4039" + +"$have_gas_4039": ; preds = %"$out_of_gas_4038", %"$have_gas_4023" + %"$consume_4040" = sub i64 %"$gasrem_4036", 1 + store i64 %"$consume_4040", i64* @_gasrem %a2 = alloca %TName_Bool* - %"$andb_19" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$andb_1555" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb - %"$andb_fptr_1556" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_1555", 0 - %"$andb_envptr_1557" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_1555", 1 - %"$b3_1558" = load %TName_Bool*, %TName_Bool** %b3 - %"$andb_call_1559" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_1556"(i8* %"$andb_envptr_1557", %TName_Bool* %"$b3_1558") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_1559", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_19" - %"$andb_20" = alloca %TName_Bool* - %"$$andb_19_1560" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_19" - %"$$andb_19_fptr_1561" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_19_1560", 0 - %"$$andb_19_envptr_1562" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_19_1560", 1 - %"$b4_1563" = load %TName_Bool*, %TName_Bool** %b4 - %"$$andb_19_call_1564" = call %TName_Bool* %"$$andb_19_fptr_1561"(i8* %"$$andb_19_envptr_1562", %TName_Bool* %"$b4_1563") - store %TName_Bool* %"$$andb_19_call_1564", %TName_Bool** %"$andb_20" - %"$$andb_20_1565" = load %TName_Bool*, %TName_Bool** %"$andb_20" - store %TName_Bool* %"$$andb_20_1565", %TName_Bool** %a2 - %"$andb_21" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$andb_1566" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb - %"$andb_fptr_1567" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_1566", 0 - %"$andb_envptr_1568" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_1566", 1 - %"$a1_1569" = load %TName_Bool*, %TName_Bool** %a1 - %"$andb_call_1570" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_1567"(i8* %"$andb_envptr_1568", %TName_Bool* %"$a1_1569") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_1570", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_21" - %"$andb_22" = alloca %TName_Bool* - %"$$andb_21_1571" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_21" - %"$$andb_21_fptr_1572" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_21_1571", 0 - %"$$andb_21_envptr_1573" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_21_1571", 1 - %"$a2_1574" = load %TName_Bool*, %TName_Bool** %a2 - %"$$andb_21_call_1575" = call %TName_Bool* %"$$andb_21_fptr_1572"(i8* %"$$andb_21_envptr_1573", %TName_Bool* %"$a2_1574") - store %TName_Bool* %"$$andb_21_call_1575", %TName_Bool** %"$andb_22" - %"$$andb_22_1576" = load %TName_Bool*, %TName_Bool** %"$andb_22" - store %TName_Bool* %"$$andb_22_1576", %TName_Bool** %b - %"$b_1578" = load %TName_Bool*, %TName_Bool** %b - %"$b_tag_1579" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b_1578", i32 0, i32 0 - %"$b_tag_1580" = load i8, i8* %"$b_tag_1579" - switch i8 %"$b_tag_1580", label %"$empty_default_1581" [ - i8 0, label %"$True_1582" - i8 1, label %"$False_1584" + %"$gasrem_4041" = load i64, i64* @_gasrem + %"$gascmp_4042" = icmp ugt i64 1, %"$gasrem_4041" + br i1 %"$gascmp_4042", label %"$out_of_gas_4043", label %"$have_gas_4044" + +"$out_of_gas_4043": ; preds = %"$have_gas_4039" + call void @_out_of_gas() + br label %"$have_gas_4044" + +"$have_gas_4044": ; preds = %"$out_of_gas_4043", %"$have_gas_4039" + %"$consume_4045" = sub i64 %"$gasrem_4041", 1 + store i64 %"$consume_4045", i64* @_gasrem + %"$andb_18" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$andb_4046" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb + %"$andb_fptr_4047" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_4046", 0 + %"$andb_envptr_4048" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_4046", 1 + %"$b3_4049" = load %TName_Bool*, %TName_Bool** %b3 + %"$andb_call_4050" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_4047"(i8* %"$andb_envptr_4048", %TName_Bool* %"$b3_4049") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_4050", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_18" + %"$andb_19" = alloca %TName_Bool* + %"$$andb_18_4051" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_18" + %"$$andb_18_fptr_4052" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_18_4051", 0 + %"$$andb_18_envptr_4053" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_18_4051", 1 + %"$b4_4054" = load %TName_Bool*, %TName_Bool** %b4 + %"$$andb_18_call_4055" = call %TName_Bool* %"$$andb_18_fptr_4052"(i8* %"$$andb_18_envptr_4053", %TName_Bool* %"$b4_4054") + store %TName_Bool* %"$$andb_18_call_4055", %TName_Bool** %"$andb_19" + %"$$andb_19_4056" = load %TName_Bool*, %TName_Bool** %"$andb_19" + store %TName_Bool* %"$$andb_19_4056", %TName_Bool** %a2 + %"$gasrem_4057" = load i64, i64* @_gasrem + %"$gascmp_4058" = icmp ugt i64 1, %"$gasrem_4057" + br i1 %"$gascmp_4058", label %"$out_of_gas_4059", label %"$have_gas_4060" + +"$out_of_gas_4059": ; preds = %"$have_gas_4044" + call void @_out_of_gas() + br label %"$have_gas_4060" + +"$have_gas_4060": ; preds = %"$out_of_gas_4059", %"$have_gas_4044" + %"$consume_4061" = sub i64 %"$gasrem_4057", 1 + store i64 %"$consume_4061", i64* @_gasrem + %"$andb_20" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$andb_4062" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb + %"$andb_fptr_4063" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_4062", 0 + %"$andb_envptr_4064" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_4062", 1 + %"$a1_4065" = load %TName_Bool*, %TName_Bool** %a1 + %"$andb_call_4066" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_4063"(i8* %"$andb_envptr_4064", %TName_Bool* %"$a1_4065") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_4066", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_20" + %"$andb_21" = alloca %TName_Bool* + %"$$andb_20_4067" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_20" + %"$$andb_20_fptr_4068" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_20_4067", 0 + %"$$andb_20_envptr_4069" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_20_4067", 1 + %"$a2_4070" = load %TName_Bool*, %TName_Bool** %a2 + %"$$andb_20_call_4071" = call %TName_Bool* %"$$andb_20_fptr_4068"(i8* %"$$andb_20_envptr_4069", %TName_Bool* %"$a2_4070") + store %TName_Bool* %"$$andb_20_call_4071", %TName_Bool** %"$andb_21" + %"$$andb_21_4072" = load %TName_Bool*, %TName_Bool** %"$andb_21" + store %TName_Bool* %"$$andb_21_4072", %TName_Bool** %b + %"$gasrem_4073" = load i64, i64* @_gasrem + %"$gascmp_4074" = icmp ugt i64 2, %"$gasrem_4073" + br i1 %"$gascmp_4074", label %"$out_of_gas_4075", label %"$have_gas_4076" + +"$out_of_gas_4075": ; preds = %"$have_gas_4060" + call void @_out_of_gas() + br label %"$have_gas_4076" + +"$have_gas_4076": ; preds = %"$out_of_gas_4075", %"$have_gas_4060" + %"$consume_4077" = sub i64 %"$gasrem_4073", 2 + store i64 %"$consume_4077", i64* @_gasrem + %"$b_4079" = load %TName_Bool*, %TName_Bool** %b + %"$b_tag_4080" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b_4079", i32 0, i32 0 + %"$b_tag_4081" = load i8, i8* %"$b_tag_4080" + switch i8 %"$b_tag_4081", label %"$empty_default_4082" [ + i8 0, label %"$True_4083" + i8 1, label %"$False_4085" ] -"$True_1582": ; preds = %"$matchsucc_1526" - %"$b_1583" = bitcast %TName_Bool* %"$b_1578" to %CName_True* - br label %"$matchsucc_1577" - -"$False_1584": ; preds = %"$matchsucc_1526" - %"$b_1585" = bitcast %TName_Bool* %"$b_1578" to %CName_False* - %"$fail__sender_1586" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_1586" - %"$tname_1587" = load %String, %String* %tname - call void @"$fail_179"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_1586", %String %"$tname_1587") - br label %"$matchsucc_1577" +"$True_4083": ; preds = %"$have_gas_4076" + %"$b_4084" = bitcast %TName_Bool* %"$b_4079" to %CName_True* + br label %"$matchsucc_4078" + +"$False_4085": ; preds = %"$have_gas_4076" + %"$b_4086" = bitcast %TName_Bool* %"$b_4079" to %CName_False* + %"$gasrem_4087" = load i64, i64* @_gasrem + %"$gascmp_4088" = icmp ugt i64 1, %"$gasrem_4087" + br i1 %"$gascmp_4088", label %"$out_of_gas_4089", label %"$have_gas_4090" + +"$out_of_gas_4089": ; preds = %"$False_4085" + call void @_out_of_gas() + br label %"$have_gas_4090" + +"$have_gas_4090": ; preds = %"$out_of_gas_4089", %"$False_4085" + %"$consume_4091" = sub i64 %"$gasrem_4087", 1 + store i64 %"$consume_4091", i64* @_gasrem + %"$fail__sender_4092" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_4092" + %"$tname_4093" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_4092", %String %"$tname_4093") + br label %"$matchsucc_4078" + +"$empty_default_4082": ; preds = %"$have_gas_4076" + br label %"$matchsucc_4078" + +"$matchsucc_4078": ; preds = %"$have_gas_4090", %"$True_4083", %"$empty_default_4082" + %"$gasrem_4094" = load i64, i64* @_gasrem + %"$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 = %"$matchsucc_4078" + call void @_out_of_gas() + br label %"$have_gas_4097" + +"$have_gas_4097": ; preds = %"$out_of_gas_4096", %"$matchsucc_4078" + %"$consume_4098" = sub i64 %"$gasrem_4094", 1 + store i64 %"$consume_4098", i64* @_gasrem + %m1 = alloca %Map_String_String* + %"$gasrem_4099" = load i64, i64* @_gasrem + %"$gascmp_4100" = icmp ugt i64 1, %"$gasrem_4099" + br i1 %"$gascmp_4100", label %"$out_of_gas_4101", label %"$have_gas_4102" -"$empty_default_1581": ; preds = %"$matchsucc_1526" - br label %"$matchsucc_1577" +"$out_of_gas_4101": ; preds = %"$have_gas_4097" + call void @_out_of_gas() + br label %"$have_gas_4102" -"$matchsucc_1577": ; preds = %"$False_1584", %"$True_1582", %"$empty_default_1581" - %m1 = alloca %Map_String_String* +"$have_gas_4102": ; preds = %"$out_of_gas_4101", %"$have_gas_4097" + %"$consume_4103" = sub i64 %"$gasrem_4099", 1 + store i64 %"$consume_4103", i64* @_gasrem %k = alloca %String - store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_1588", i32 0, i32 0), i32 0 }, %String* %k + %"$gasrem_4104" = load i64, i64* @_gasrem + %"$gascmp_4105" = icmp ugt i64 1, %"$gasrem_4104" + br i1 %"$gascmp_4105", label %"$out_of_gas_4106", label %"$have_gas_4107" + +"$out_of_gas_4106": ; preds = %"$have_gas_4102" + call void @_out_of_gas() + br label %"$have_gas_4107" + +"$have_gas_4107": ; preds = %"$out_of_gas_4106", %"$have_gas_4102" + %"$consume_4108" = sub i64 %"$gasrem_4104", 1 + store i64 %"$consume_4108", i64* @_gasrem + store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_4109", i32 0, i32 0), i32 0 }, %String* %k + %"$gasrem_4110" = load i64, i64* @_gasrem + %"$gascmp_4111" = icmp ugt i64 1, %"$gasrem_4110" + br i1 %"$gascmp_4111", label %"$out_of_gas_4112", label %"$have_gas_4113" + +"$out_of_gas_4112": ; preds = %"$have_gas_4107" + call void @_out_of_gas() + br label %"$have_gas_4113" + +"$have_gas_4113": ; preds = %"$out_of_gas_4112", %"$have_gas_4107" + %"$consume_4114" = sub i64 %"$gasrem_4110", 1 + store i64 %"$consume_4114", i64* @_gasrem %v = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1589", i32 0, i32 0), i32 3 }, %String* %v + %"$gasrem_4115" = load i64, i64* @_gasrem + %"$gascmp_4116" = icmp ugt i64 1, %"$gasrem_4115" + br i1 %"$gascmp_4116", label %"$out_of_gas_4117", label %"$have_gas_4118" + +"$out_of_gas_4117": ; preds = %"$have_gas_4113" + call void @_out_of_gas() + br label %"$have_gas_4118" + +"$have_gas_4118": ; preds = %"$out_of_gas_4117", %"$have_gas_4113" + %"$consume_4119" = sub i64 %"$gasrem_4115", 1 + store i64 %"$consume_4119", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_4120", i32 0, i32 0), i32 3 }, %String* %v + %"$gasrem_4121" = load i64, i64* @_gasrem + %"$gascmp_4122" = icmp ugt i64 1, %"$gasrem_4121" + br i1 %"$gascmp_4122", label %"$out_of_gas_4123", label %"$have_gas_4124" + +"$out_of_gas_4123": ; preds = %"$have_gas_4118" + call void @_out_of_gas() + br label %"$have_gas_4124" + +"$have_gas_4124": ; preds = %"$out_of_gas_4123", %"$have_gas_4118" + %"$consume_4125" = sub i64 %"$gasrem_4121", 1 + store i64 %"$consume_4125", i64* @_gasrem %e = alloca %Map_String_String* - %"$execptr_load_1590" = load i8*, i8** @_execptr - %"$_new_empty_map_call_1591" = call i8* @_new_empty_map(i8* %"$execptr_load_1590") - %"$Emp_1592" = bitcast i8* %"$_new_empty_map_call_1591" to %Map_String_String* - store %Map_String_String* %"$Emp_1592", %Map_String_String** %e - %"$execptr_load_1593" = load i8*, i8** @_execptr - %"$e_1594" = load %Map_String_String*, %Map_String_String** %e - %"$$e_1594_1595" = bitcast %Map_String_String* %"$e_1594" to i8* - %"$put_k_1596" = alloca %String - %"$k_1597" = load %String, %String* %k - store %String %"$k_1597", %String* %"$put_k_1596" - %"$$put_k_1596_1598" = bitcast %String* %"$put_k_1596" to i8* - %"$put_v_1599" = alloca %String - %"$v_1600" = load %String, %String* %v - store %String %"$v_1600", %String* %"$put_v_1599" - %"$$put_v_1599_1601" = bitcast %String* %"$put_v_1599" to i8* - %"$put_call_1602" = call i8* @_put(i8* %"$execptr_load_1593", %_TyDescrTy_Typ* @"$TyDescr_Map_73", i8* %"$$e_1594_1595", i8* %"$$put_k_1596_1598", i8* %"$$put_v_1599_1601") - %"$_put_1603" = bitcast i8* %"$put_call_1602" to %Map_String_String* - store %Map_String_String* %"$_put_1603", %Map_String_String** %m1 - %"$execptr_load_1604" = load i8*, i8** @_execptr - %"$m1_1606" = load %Map_String_String*, %Map_String_String** %m1 - %"$update_value_1607" = bitcast %Map_String_String* %"$m1_1606" to i8* - call void @_update_field(i8* %"$execptr_load_1604", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_1605", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_73", i32 0, i8* null, i8* %"$update_value_1607") + %"$gasrem_4126" = load i64, i64* @_gasrem + %"$gascmp_4127" = icmp ugt i64 1, %"$gasrem_4126" + br i1 %"$gascmp_4127", label %"$out_of_gas_4128", label %"$have_gas_4129" + +"$out_of_gas_4128": ; preds = %"$have_gas_4124" + call void @_out_of_gas() + br label %"$have_gas_4129" + +"$have_gas_4129": ; preds = %"$out_of_gas_4128", %"$have_gas_4124" + %"$consume_4130" = sub i64 %"$gasrem_4126", 1 + store i64 %"$consume_4130", i64* @_gasrem + %"$execptr_load_4131" = load i8*, i8** @_execptr + %"$_new_empty_map_call_4132" = call i8* @_new_empty_map(i8* %"$execptr_load_4131") + %"$Emp_4133" = bitcast i8* %"$_new_empty_map_call_4132" to %Map_String_String* + store %Map_String_String* %"$Emp_4133", %Map_String_String** %e + %"$execptr_load_4134" = load i8*, i8** @_execptr + %"$e_4135" = load %Map_String_String*, %Map_String_String** %e + %"$$e_4135_4136" = bitcast %Map_String_String* %"$e_4135" to i8* + %"$put_k_4137" = alloca %String + %"$k_4138" = load %String, %String* %k + store %String %"$k_4138", %String* %"$put_k_4137" + %"$$put_k_4137_4139" = bitcast %String* %"$put_k_4137" to i8* + %"$put_v_4140" = alloca %String + %"$v_4141" = load %String, %String* %v + store %String %"$v_4141", %String* %"$put_v_4140" + %"$$put_v_4140_4142" = bitcast %String* %"$put_v_4140" to i8* + %"$put_call_4143" = call i8* @_put(i8* %"$execptr_load_4134", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$e_4135_4136", i8* %"$$put_k_4137_4139", i8* %"$$put_v_4140_4142") + %"$_put_4144" = bitcast i8* %"$put_call_4143" to %Map_String_String* + store %Map_String_String* %"$_put_4144", %Map_String_String** %m1 + %"$m1_4145" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_4145_4146" = bitcast %Map_String_String* %"$m1_4145" to i8* + %"$_literal_cost_call_4147" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_4145_4146") + %"$gasrem_4148" = load i64, i64* @_gasrem + %"$gascmp_4149" = icmp ugt i64 %"$_literal_cost_call_4147", %"$gasrem_4148" + br i1 %"$gascmp_4149", label %"$out_of_gas_4150", label %"$have_gas_4151" + +"$out_of_gas_4150": ; preds = %"$have_gas_4129" + call void @_out_of_gas() + br label %"$have_gas_4151" + +"$have_gas_4151": ; preds = %"$out_of_gas_4150", %"$have_gas_4129" + %"$consume_4152" = sub i64 %"$gasrem_4148", %"$_literal_cost_call_4147" + store i64 %"$consume_4152", i64* @_gasrem + %"$execptr_load_4153" = load i8*, i8** @_execptr + %"$m1_4155" = load %Map_String_String*, %Map_String_String** %m1 + %"$update_value_4156" = bitcast %Map_String_String* %"$m1_4155" to i8* + call void @_update_field(i8* %"$execptr_load_4153", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_4154", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i8* %"$update_value_4156") ret void } define void @t16(i8* %0) { entry: - %"$_amount_1609" = getelementptr i8, i8* %0, i32 0 - %"$_amount_1610" = bitcast i8* %"$_amount_1609" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_1610" - %"$_sender_1611" = getelementptr i8, i8* %0, i32 16 - %"$_sender_1612" = bitcast i8* %"$_sender_1611" to [20 x i8]* - call void @"$t16_1421"(%Uint128 %_amount, [20 x i8]* %"$_sender_1612") + %"$_amount_4158" = getelementptr i8, i8* %0, i32 0 + %"$_amount_4159" = bitcast i8* %"$_amount_4158" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_4159" + %"$_sender_4160" = getelementptr i8, i8* %0, i32 16 + %"$_sender_4161" = bitcast i8* %"$_sender_4160" to [20 x i8]* + call void @"$t16_3657"(%Uint128 %_amount, [20 x i8]* %"$_sender_4161") ret void } -define internal void @"$t17_1613"(%Uint128 %_amount, [20 x i8]* %"$_sender_1614") { +define internal void @"$t17_4162"(%Uint128 %_amount, [20 x i8]* %"$_sender_4163") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_1614" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_4163" + %"$gasrem_4164" = load i64, i64* @_gasrem + %"$gascmp_4165" = icmp ugt i64 1, %"$gasrem_4164" + br i1 %"$gascmp_4165", label %"$out_of_gas_4166", label %"$have_gas_4167" + +"$out_of_gas_4166": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_4167" + +"$have_gas_4167": ; preds = %"$out_of_gas_4166", %entry + %"$consume_4168" = sub i64 %"$gasrem_4164", 1 + store i64 %"$consume_4168", i64* @_gasrem %tname = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1615", i32 0, i32 0), i32 3 }, %String* %tname + %"$gasrem_4169" = load i64, i64* @_gasrem + %"$gascmp_4170" = icmp ugt i64 1, %"$gasrem_4169" + br i1 %"$gascmp_4170", label %"$out_of_gas_4171", label %"$have_gas_4172" + +"$out_of_gas_4171": ; preds = %"$have_gas_4167" + call void @_out_of_gas() + br label %"$have_gas_4172" + +"$have_gas_4172": ; preds = %"$out_of_gas_4171", %"$have_gas_4167" + %"$consume_4173" = sub i64 %"$gasrem_4169", 1 + store i64 %"$consume_4173", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_4174", i32 0, i32 0), i32 3 }, %String* %tname + %"$gasrem_4175" = load i64, i64* @_gasrem + %"$gascmp_4176" = icmp ugt i64 1, %"$gasrem_4175" + br i1 %"$gascmp_4176", label %"$out_of_gas_4177", label %"$have_gas_4178" + +"$out_of_gas_4177": ; preds = %"$have_gas_4172" + call void @_out_of_gas() + br label %"$have_gas_4178" + +"$have_gas_4178": ; preds = %"$out_of_gas_4177", %"$have_gas_4172" + %"$consume_4179" = sub i64 %"$gasrem_4175", 1 + store i64 %"$consume_4179", i64* @_gasrem %key = alloca %String - store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_1616", i32 0, i32 0), i32 0 }, %String* %key + %"$gasrem_4180" = load i64, i64* @_gasrem + %"$gascmp_4181" = icmp ugt i64 1, %"$gasrem_4180" + br i1 %"$gascmp_4181", label %"$out_of_gas_4182", label %"$have_gas_4183" + +"$out_of_gas_4182": ; preds = %"$have_gas_4178" + call void @_out_of_gas() + br label %"$have_gas_4183" + +"$have_gas_4183": ; preds = %"$out_of_gas_4182", %"$have_gas_4178" + %"$consume_4184" = sub i64 %"$gasrem_4180", 1 + store i64 %"$consume_4184", i64* @_gasrem + store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_4185", i32 0, i32 0), i32 0 }, %String* %key %found = alloca %TName_Bool* - %"$indices_buf_1617_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1617_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1617_salloc_load", i64 16) - %"$indices_buf_1617_salloc" = bitcast i8* %"$indices_buf_1617_salloc_salloc" to [16 x i8]* - %"$indices_buf_1617" = bitcast [16 x i8]* %"$indices_buf_1617_salloc" to i8* - %"$key_1618" = load %String, %String* %key - %"$indices_gep_1619" = getelementptr i8, i8* %"$indices_buf_1617", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_1619" to %String* - store %String %"$key_1618", %String* %indices_cast - %"$execptr_load_1620" = load i8*, i8** @_execptr - %"$found_1622" = call i8* @_fetch_field(i8* %"$execptr_load_1620", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_1621", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_73", i32 1, i8* %"$indices_buf_1617", i32 0) - %"$found_1623" = bitcast i8* %"$found_1622" to %TName_Bool* - store %TName_Bool* %"$found_1623", %TName_Bool** %found - %"$found_1625" = load %TName_Bool*, %TName_Bool** %found - %"$found_tag_1626" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$found_1625", i32 0, i32 0 - %"$found_tag_1627" = load i8, i8* %"$found_tag_1626" - switch i8 %"$found_tag_1627", label %"$empty_default_1628" [ - i8 0, label %"$True_1629" - i8 1, label %"$False_1631" + %"$indices_buf_4186_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_4186_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4186_salloc_load", i64 16) + %"$indices_buf_4186_salloc" = bitcast i8* %"$indices_buf_4186_salloc_salloc" to [16 x i8]* + %"$indices_buf_4186" = bitcast [16 x i8]* %"$indices_buf_4186_salloc" to i8* + %"$key_4187" = load %String, %String* %key + %"$indices_gep_4188" = getelementptr i8, i8* %"$indices_buf_4186", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_4188" to %String* + store %String %"$key_4187", %String* %indices_cast + %"$execptr_load_4189" = load i8*, i8** @_execptr + %"$found_4191" = call i8* @_fetch_field(i8* %"$execptr_load_4189", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_4190", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_4186", i32 0) + %"$found_4192" = bitcast i8* %"$found_4191" to %TName_Bool* + store %TName_Bool* %"$found_4192", %TName_Bool** %found + %"$found_4193" = load %TName_Bool*, %TName_Bool** %found + %"$$found_4193_4194" = bitcast %TName_Bool* %"$found_4193" to i8* + %"$_literal_cost_call_4195" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_68", i8* %"$$found_4193_4194") + %"$gasadd_4196" = add i64 %"$_literal_cost_call_4195", 0 + %"$gasadd_4197" = add i64 %"$gasadd_4196", 1 + %"$gasrem_4198" = load i64, i64* @_gasrem + %"$gascmp_4199" = icmp ugt i64 %"$gasadd_4197", %"$gasrem_4198" + br i1 %"$gascmp_4199", label %"$out_of_gas_4200", label %"$have_gas_4201" + +"$out_of_gas_4200": ; preds = %"$have_gas_4183" + call void @_out_of_gas() + br label %"$have_gas_4201" + +"$have_gas_4201": ; preds = %"$out_of_gas_4200", %"$have_gas_4183" + %"$consume_4202" = sub i64 %"$gasrem_4198", %"$gasadd_4197" + store i64 %"$consume_4202", i64* @_gasrem + %"$gasrem_4203" = load i64, i64* @_gasrem + %"$gascmp_4204" = icmp ugt i64 2, %"$gasrem_4203" + br i1 %"$gascmp_4204", label %"$out_of_gas_4205", label %"$have_gas_4206" + +"$out_of_gas_4205": ; preds = %"$have_gas_4201" + call void @_out_of_gas() + br label %"$have_gas_4206" + +"$have_gas_4206": ; preds = %"$out_of_gas_4205", %"$have_gas_4201" + %"$consume_4207" = sub i64 %"$gasrem_4203", 2 + store i64 %"$consume_4207", i64* @_gasrem + %"$found_4209" = load %TName_Bool*, %TName_Bool** %found + %"$found_tag_4210" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$found_4209", i32 0, i32 0 + %"$found_tag_4211" = load i8, i8* %"$found_tag_4210" + switch i8 %"$found_tag_4211", label %"$empty_default_4212" [ + i8 0, label %"$True_4213" + i8 1, label %"$False_4215" ] -"$True_1629": ; preds = %entry - %"$found_1630" = bitcast %TName_Bool* %"$found_1625" to %CName_True* - br label %"$matchsucc_1624" - -"$False_1631": ; preds = %entry - %"$found_1632" = bitcast %TName_Bool* %"$found_1625" to %CName_False* - %"$fail__sender_1633" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_1633" - %"$tname_1634" = load %String, %String* %tname - call void @"$fail_179"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_1633", %String %"$tname_1634") - br label %"$matchsucc_1624" - -"$empty_default_1628": ; preds = %entry - br label %"$matchsucc_1624" - -"$matchsucc_1624": ; preds = %"$False_1631", %"$True_1629", %"$empty_default_1628" - %"$indices_buf_1635_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1635_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1635_salloc_load", i64 16) - %"$indices_buf_1635_salloc" = bitcast i8* %"$indices_buf_1635_salloc_salloc" to [16 x i8]* - %"$indices_buf_1635" = bitcast [16 x i8]* %"$indices_buf_1635_salloc" to i8* - %"$key_1636" = load %String, %String* %key - %"$indices_gep_1637" = getelementptr i8, i8* %"$indices_buf_1635", i32 0 - %indices_cast1 = bitcast i8* %"$indices_gep_1637" to %String* - store %String %"$key_1636", %String* %indices_cast1 - %"$execptr_load_1638" = load i8*, i8** @_execptr - call void @_update_field(i8* %"$execptr_load_1638", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_1639", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_73", i32 1, i8* %"$indices_buf_1635", i8* null) +"$True_4213": ; preds = %"$have_gas_4206" + %"$found_4214" = bitcast %TName_Bool* %"$found_4209" to %CName_True* + br label %"$matchsucc_4208" + +"$False_4215": ; preds = %"$have_gas_4206" + %"$found_4216" = bitcast %TName_Bool* %"$found_4209" to %CName_False* + %"$gasrem_4217" = load i64, i64* @_gasrem + %"$gascmp_4218" = icmp ugt i64 1, %"$gasrem_4217" + br i1 %"$gascmp_4218", label %"$out_of_gas_4219", label %"$have_gas_4220" + +"$out_of_gas_4219": ; preds = %"$False_4215" + call void @_out_of_gas() + br label %"$have_gas_4220" + +"$have_gas_4220": ; preds = %"$out_of_gas_4219", %"$False_4215" + %"$consume_4221" = sub i64 %"$gasrem_4217", 1 + store i64 %"$consume_4221", i64* @_gasrem + %"$fail__sender_4222" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_4222" + %"$tname_4223" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_4222", %String %"$tname_4223") + br label %"$matchsucc_4208" + +"$empty_default_4212": ; preds = %"$have_gas_4206" + br label %"$matchsucc_4208" + +"$matchsucc_4208": ; preds = %"$have_gas_4220", %"$True_4213", %"$empty_default_4212" + %"$gasrem_4224" = load i64, i64* @_gasrem + %"$gascmp_4225" = icmp ugt i64 1, %"$gasrem_4224" + br i1 %"$gascmp_4225", label %"$out_of_gas_4226", label %"$have_gas_4227" + +"$out_of_gas_4226": ; preds = %"$matchsucc_4208" + call void @_out_of_gas() + br label %"$have_gas_4227" + +"$have_gas_4227": ; preds = %"$out_of_gas_4226", %"$matchsucc_4208" + %"$consume_4228" = sub i64 %"$gasrem_4224", 1 + store i64 %"$consume_4228", i64* @_gasrem + %"$indices_buf_4229_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_4229_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4229_salloc_load", i64 16) + %"$indices_buf_4229_salloc" = bitcast i8* %"$indices_buf_4229_salloc_salloc" to [16 x i8]* + %"$indices_buf_4229" = bitcast [16 x i8]* %"$indices_buf_4229_salloc" to i8* + %"$key_4230" = load %String, %String* %key + %"$indices_gep_4231" = getelementptr i8, i8* %"$indices_buf_4229", i32 0 + %indices_cast1 = bitcast i8* %"$indices_gep_4231" to %String* + store %String %"$key_4230", %String* %indices_cast1 + %"$execptr_load_4232" = load i8*, i8** @_execptr + call void @_update_field(i8* %"$execptr_load_4232", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_4233", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_4229", i8* null) ret void } define void @t17(i8* %0) { entry: - %"$_amount_1641" = getelementptr i8, i8* %0, i32 0 - %"$_amount_1642" = bitcast i8* %"$_amount_1641" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_1642" - %"$_sender_1643" = getelementptr i8, i8* %0, i32 16 - %"$_sender_1644" = bitcast i8* %"$_sender_1643" to [20 x i8]* - call void @"$t17_1613"(%Uint128 %_amount, [20 x i8]* %"$_sender_1644") + %"$_amount_4235" = getelementptr i8, i8* %0, i32 0 + %"$_amount_4236" = bitcast i8* %"$_amount_4235" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_4236" + %"$_sender_4237" = getelementptr i8, i8* %0, i32 16 + %"$_sender_4238" = bitcast i8* %"$_sender_4237" to [20 x i8]* + call void @"$t17_4162"(%Uint128 %_amount, [20 x i8]* %"$_sender_4238") ret void } -define internal void @"$t18_1645"(%Uint128 %_amount, [20 x i8]* %"$_sender_1646") { +define internal void @"$t18_4239"(%Uint128 %_amount, [20 x i8]* %"$_sender_4240") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_1646" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_4240" + %"$gasrem_4241" = load i64, i64* @_gasrem + %"$gascmp_4242" = icmp ugt i64 1, %"$gasrem_4241" + br i1 %"$gascmp_4242", label %"$out_of_gas_4243", label %"$have_gas_4244" + +"$out_of_gas_4243": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_4244" + +"$have_gas_4244": ; preds = %"$out_of_gas_4243", %entry + %"$consume_4245" = sub i64 %"$gasrem_4241", 1 + store i64 %"$consume_4245", i64* @_gasrem %tname = alloca %String - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1647", i32 0, i32 0), i32 3 }, %String* %tname + %"$gasrem_4246" = load i64, i64* @_gasrem + %"$gascmp_4247" = icmp ugt i64 1, %"$gasrem_4246" + br i1 %"$gascmp_4247", label %"$out_of_gas_4248", label %"$have_gas_4249" + +"$out_of_gas_4248": ; preds = %"$have_gas_4244" + call void @_out_of_gas() + br label %"$have_gas_4249" + +"$have_gas_4249": ; preds = %"$out_of_gas_4248", %"$have_gas_4244" + %"$consume_4250" = sub i64 %"$gasrem_4246", 1 + store i64 %"$consume_4250", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_4251", i32 0, i32 0), i32 3 }, %String* %tname + %"$gasrem_4252" = load i64, i64* @_gasrem + %"$gascmp_4253" = icmp ugt i64 1, %"$gasrem_4252" + br i1 %"$gascmp_4253", label %"$out_of_gas_4254", label %"$have_gas_4255" + +"$out_of_gas_4254": ; preds = %"$have_gas_4249" + call void @_out_of_gas() + br label %"$have_gas_4255" + +"$have_gas_4255": ; preds = %"$out_of_gas_4254", %"$have_gas_4249" + %"$consume_4256" = sub i64 %"$gasrem_4252", 1 + store i64 %"$consume_4256", i64* @_gasrem %key = alloca %String - store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_1648", i32 0, i32 0), i32 0 }, %String* %key + %"$gasrem_4257" = load i64, i64* @_gasrem + %"$gascmp_4258" = icmp ugt i64 1, %"$gasrem_4257" + br i1 %"$gascmp_4258", label %"$out_of_gas_4259", label %"$have_gas_4260" + +"$out_of_gas_4259": ; preds = %"$have_gas_4255" + call void @_out_of_gas() + br label %"$have_gas_4260" + +"$have_gas_4260": ; preds = %"$out_of_gas_4259", %"$have_gas_4255" + %"$consume_4261" = sub i64 %"$gasrem_4257", 1 + store i64 %"$consume_4261", i64* @_gasrem + store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_4262", i32 0, i32 0), i32 0 }, %String* %key %found = alloca %TName_Bool* - %"$indices_buf_1649_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1649_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1649_salloc_load", i64 16) - %"$indices_buf_1649_salloc" = bitcast i8* %"$indices_buf_1649_salloc_salloc" to [16 x i8]* - %"$indices_buf_1649" = bitcast [16 x i8]* %"$indices_buf_1649_salloc" to i8* - %"$key_1650" = load %String, %String* %key - %"$indices_gep_1651" = getelementptr i8, i8* %"$indices_buf_1649", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_1651" to %String* - store %String %"$key_1650", %String* %indices_cast - %"$execptr_load_1652" = load i8*, i8** @_execptr - %"$found_1654" = call i8* @_fetch_field(i8* %"$execptr_load_1652", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_1653", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_73", i32 1, i8* %"$indices_buf_1649", i32 0) - %"$found_1655" = bitcast i8* %"$found_1654" to %TName_Bool* - store %TName_Bool* %"$found_1655", %TName_Bool** %found - %"$found_1657" = load %TName_Bool*, %TName_Bool** %found - %"$found_tag_1658" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$found_1657", i32 0, i32 0 - %"$found_tag_1659" = load i8, i8* %"$found_tag_1658" - switch i8 %"$found_tag_1659", label %"$empty_default_1660" [ - i8 0, label %"$True_1661" - i8 1, label %"$False_1665" + %"$indices_buf_4263_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_4263_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4263_salloc_load", i64 16) + %"$indices_buf_4263_salloc" = bitcast i8* %"$indices_buf_4263_salloc_salloc" to [16 x i8]* + %"$indices_buf_4263" = bitcast [16 x i8]* %"$indices_buf_4263_salloc" to i8* + %"$key_4264" = load %String, %String* %key + %"$indices_gep_4265" = getelementptr i8, i8* %"$indices_buf_4263", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_4265" to %String* + store %String %"$key_4264", %String* %indices_cast + %"$execptr_load_4266" = load i8*, i8** @_execptr + %"$found_4268" = call i8* @_fetch_field(i8* %"$execptr_load_4266", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_4267", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_4263", i32 0) + %"$found_4269" = bitcast i8* %"$found_4268" to %TName_Bool* + store %TName_Bool* %"$found_4269", %TName_Bool** %found + %"$found_4270" = load %TName_Bool*, %TName_Bool** %found + %"$$found_4270_4271" = bitcast %TName_Bool* %"$found_4270" to i8* + %"$_literal_cost_call_4272" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_68", i8* %"$$found_4270_4271") + %"$gasadd_4273" = add i64 %"$_literal_cost_call_4272", 0 + %"$gasadd_4274" = add i64 %"$gasadd_4273", 1 + %"$gasrem_4275" = load i64, i64* @_gasrem + %"$gascmp_4276" = icmp ugt i64 %"$gasadd_4274", %"$gasrem_4275" + br i1 %"$gascmp_4276", label %"$out_of_gas_4277", label %"$have_gas_4278" + +"$out_of_gas_4277": ; preds = %"$have_gas_4260" + call void @_out_of_gas() + br label %"$have_gas_4278" + +"$have_gas_4278": ; preds = %"$out_of_gas_4277", %"$have_gas_4260" + %"$consume_4279" = sub i64 %"$gasrem_4275", %"$gasadd_4274" + store i64 %"$consume_4279", i64* @_gasrem + %"$gasrem_4280" = load i64, i64* @_gasrem + %"$gascmp_4281" = icmp ugt i64 2, %"$gasrem_4280" + br i1 %"$gascmp_4281", label %"$out_of_gas_4282", label %"$have_gas_4283" + +"$out_of_gas_4282": ; preds = %"$have_gas_4278" + call void @_out_of_gas() + br label %"$have_gas_4283" + +"$have_gas_4283": ; preds = %"$out_of_gas_4282", %"$have_gas_4278" + %"$consume_4284" = sub i64 %"$gasrem_4280", 2 + store i64 %"$consume_4284", i64* @_gasrem + %"$found_4286" = load %TName_Bool*, %TName_Bool** %found + %"$found_tag_4287" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$found_4286", i32 0, i32 0 + %"$found_tag_4288" = load i8, i8* %"$found_tag_4287" + switch i8 %"$found_tag_4288", label %"$empty_default_4289" [ + i8 0, label %"$True_4290" + i8 1, label %"$False_4299" ] -"$True_1661": ; preds = %entry - %"$found_1662" = bitcast %TName_Bool* %"$found_1657" to %CName_True* - %"$fail__sender_1663" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_1663" - %"$tname_1664" = load %String, %String* %tname - call void @"$fail_179"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_1663", %String %"$tname_1664") - br label %"$matchsucc_1656" - -"$False_1665": ; preds = %entry - %"$found_1666" = bitcast %TName_Bool* %"$found_1657" to %CName_False* - br label %"$matchsucc_1656" - -"$empty_default_1660": ; preds = %entry - br label %"$matchsucc_1656" - -"$matchsucc_1656": ; preds = %"$False_1665", %"$True_1661", %"$empty_default_1660" +"$True_4290": ; preds = %"$have_gas_4283" + %"$found_4291" = bitcast %TName_Bool* %"$found_4286" to %CName_True* + %"$gasrem_4292" = load i64, i64* @_gasrem + %"$gascmp_4293" = icmp ugt i64 1, %"$gasrem_4292" + br i1 %"$gascmp_4293", label %"$out_of_gas_4294", label %"$have_gas_4295" + +"$out_of_gas_4294": ; preds = %"$True_4290" + call void @_out_of_gas() + br label %"$have_gas_4295" + +"$have_gas_4295": ; preds = %"$out_of_gas_4294", %"$True_4290" + %"$consume_4296" = sub i64 %"$gasrem_4292", 1 + store i64 %"$consume_4296", i64* @_gasrem + %"$fail__sender_4297" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_4297" + %"$tname_4298" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_4297", %String %"$tname_4298") + br label %"$matchsucc_4285" + +"$False_4299": ; preds = %"$have_gas_4283" + %"$found_4300" = bitcast %TName_Bool* %"$found_4286" to %CName_False* + br label %"$matchsucc_4285" + +"$empty_default_4289": ; preds = %"$have_gas_4283" + br label %"$matchsucc_4285" + +"$matchsucc_4285": ; preds = %"$False_4299", %"$have_gas_4295", %"$empty_default_4289" ret void } define void @t18(i8* %0) { entry: - %"$_amount_1668" = getelementptr i8, i8* %0, i32 0 - %"$_amount_1669" = bitcast i8* %"$_amount_1668" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_1669" - %"$_sender_1670" = getelementptr i8, i8* %0, i32 16 - %"$_sender_1671" = bitcast i8* %"$_sender_1670" to [20 x i8]* - call void @"$t18_1645"(%Uint128 %_amount, [20 x i8]* %"$_sender_1671") + %"$_amount_4302" = getelementptr i8, i8* %0, i32 0 + %"$_amount_4303" = bitcast i8* %"$_amount_4302" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_4303" + %"$_sender_4304" = getelementptr i8, i8* %0, i32 16 + %"$_sender_4305" = bitcast i8* %"$_sender_4304" to [20 x i8]* + call void @"$t18_4239"(%Uint128 %_amount, [20 x i8]* %"$_sender_4305") ret void } diff --git a/testsuite/contr/map_corners_test.output.json b/testsuite/contr/map_corners_test.output.json index 07164781..358bf5fe 100644 --- a/testsuite/contr/map_corners_test.output.json +++ b/testsuite/contr/map_corners_test.output.json @@ -1,7 +1,7 @@ { "_accepted" : "false", "events" : [], - "gas_remaining" : "10000000", + "gas_remaining" : "9999992", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/map_corners_test.output_1.json b/testsuite/contr/map_corners_test.output_1.json new file mode 100644 index 00000000..4235793b --- /dev/null +++ b/testsuite/contr/map_corners_test.output_1.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999950", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/map_corners_test.output_10.json b/testsuite/contr/map_corners_test.output_10.json new file mode 100644 index 00000000..5d8fb0a1 --- /dev/null +++ b/testsuite/contr/map_corners_test.output_10.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999946", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/map_corners_test.output_11.json b/testsuite/contr/map_corners_test.output_11.json new file mode 100644 index 00000000..ec0f7b26 --- /dev/null +++ b/testsuite/contr/map_corners_test.output_11.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999989", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/map_corners_test.output_12.json b/testsuite/contr/map_corners_test.output_12.json new file mode 100644 index 00000000..44e24bfd --- /dev/null +++ b/testsuite/contr/map_corners_test.output_12.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999986", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/map_corners_test.output_13.json b/testsuite/contr/map_corners_test.output_13.json new file mode 100644 index 00000000..54059129 --- /dev/null +++ b/testsuite/contr/map_corners_test.output_13.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999936", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/map_corners_test.output_14.json b/testsuite/contr/map_corners_test.output_14.json new file mode 100644 index 00000000..81653e9c --- /dev/null +++ b/testsuite/contr/map_corners_test.output_14.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999949", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/map_corners_test.output_15.json b/testsuite/contr/map_corners_test.output_15.json new file mode 100644 index 00000000..ed46e799 --- /dev/null +++ b/testsuite/contr/map_corners_test.output_15.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999657", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/map_corners_test.output_16.json b/testsuite/contr/map_corners_test.output_16.json new file mode 100644 index 00000000..a1853909 --- /dev/null +++ b/testsuite/contr/map_corners_test.output_16.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999806", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/map_corners_test.output_17.json b/testsuite/contr/map_corners_test.output_17.json new file mode 100644 index 00000000..6e9bf416 --- /dev/null +++ b/testsuite/contr/map_corners_test.output_17.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999991", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/map_corners_test.output_18.json b/testsuite/contr/map_corners_test.output_18.json new file mode 100644 index 00000000..358bf5fe --- /dev/null +++ b/testsuite/contr/map_corners_test.output_18.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999992", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/map_corners_test.output_2.json b/testsuite/contr/map_corners_test.output_2.json new file mode 100644 index 00000000..a8ea292f --- /dev/null +++ b/testsuite/contr/map_corners_test.output_2.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999947", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/map_corners_test.output_3.json b/testsuite/contr/map_corners_test.output_3.json new file mode 100644 index 00000000..92758b4f --- /dev/null +++ b/testsuite/contr/map_corners_test.output_3.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999961", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/map_corners_test.output_4.json b/testsuite/contr/map_corners_test.output_4.json new file mode 100644 index 00000000..c7611697 --- /dev/null +++ b/testsuite/contr/map_corners_test.output_4.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999964", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/map_corners_test.output_5.json b/testsuite/contr/map_corners_test.output_5.json new file mode 100644 index 00000000..fcbec716 --- /dev/null +++ b/testsuite/contr/map_corners_test.output_5.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999869", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/map_corners_test.output_6.json b/testsuite/contr/map_corners_test.output_6.json new file mode 100644 index 00000000..ecf1315b --- /dev/null +++ b/testsuite/contr/map_corners_test.output_6.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999897", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/map_corners_test.output_7.json b/testsuite/contr/map_corners_test.output_7.json new file mode 100644 index 00000000..33acb846 --- /dev/null +++ b/testsuite/contr/map_corners_test.output_7.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999915", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/map_corners_test.output_8.json b/testsuite/contr/map_corners_test.output_8.json new file mode 100644 index 00000000..060ef5ed --- /dev/null +++ b/testsuite/contr/map_corners_test.output_8.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999929", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/map_corners_test.output_9.json b/testsuite/contr/map_corners_test.output_9.json new file mode 100644 index 00000000..5d8fb0a1 --- /dev/null +++ b/testsuite/contr/map_corners_test.output_9.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999946", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/match_assign.ll b/testsuite/contr/match_assign.ll index 85131ef4..e57dd1d8 100644 --- a/testsuite/contr/match_assign.ll +++ b/testsuite/contr/match_assign.ll @@ -67,9 +67,9 @@ target triple = "x86_64-pc-linux-gnu" @"$TyDescr_ADT_Bool_49" = unnamed_addr constant [4 x i8] c"Bool" @_scilla_version = global %Uint32 zeroinitializer @_this_address = global [20 x i8] zeroinitializer -@"$stringlit_53" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_58" = unnamed_addr constant [4 x i8] c"test" -@"$stringlit_61" = unnamed_addr constant [7 x i8] c"message" +@"$stringlit_63" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_68" = unnamed_addr constant [4 x i8] c"test" +@"$stringlit_71" = unnamed_addr constant [7 x i8] c"message" @_tydescr_table = constant [16 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Event_26", %_TyDescrTy_Typ* @"$TyDescr_Int64_8", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_36", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_32", %_TyDescrTy_Typ* @"$TyDescr_Uint256_18", %_TyDescrTy_Typ* @"$TyDescr_Uint32_6", %_TyDescrTy_Typ* @"$TyDescr_Uint64_10", %_TyDescrTy_Typ* @"$TyDescr_Bnum_22", %_TyDescrTy_Typ* @"$TyDescr_Uint128_14", %_TyDescrTy_Typ* @"$TyDescr_Exception_28", %_TyDescrTy_Typ* @"$TyDescr_String_20", %_TyDescrTy_Typ* @"$TyDescr_Int256_16", %_TyDescrTy_Typ* @"$TyDescr_Int128_12", %_TyDescrTy_Typ* @"$TyDescr_Bystr_30", %_TyDescrTy_Typ* @"$TyDescr_Message_24", %_TyDescrTy_Typ* @"$TyDescr_Int32_4"] @_tydescr_table_length = constant i32 16 @@ -86,120 +86,324 @@ entry: define internal void @"$create_event_50"(%Uint128 %_amount, [20 x i8]* %"$_sender_51", %Int32 %m) { entry: %_sender = load [20 x i8], [20 x i8]* %"$_sender_51" + %"$gasrem_52" = load i64, i64* @_gasrem + %"$gascmp_53" = icmp ugt i64 1, %"$gasrem_52" + br i1 %"$gascmp_53", label %"$out_of_gas_54", label %"$have_gas_55" + +"$out_of_gas_54": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_55" + +"$have_gas_55": ; preds = %"$out_of_gas_54", %entry + %"$consume_56" = sub i64 %"$gasrem_52", 1 + store i64 %"$consume_56", i64* @_gasrem %e = alloca i8* - %"$msgobj_52_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_52_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_52_salloc_load", i64 69) - %"$msgobj_52_salloc" = bitcast i8* %"$msgobj_52_salloc_salloc" to [69 x i8]* - %"$msgobj_52" = bitcast [69 x i8]* %"$msgobj_52_salloc" to i8* - store i8 2, i8* %"$msgobj_52" - %"$msgobj_fname_54" = getelementptr i8, i8* %"$msgobj_52", i32 1 - %"$msgobj_fname_55" = bitcast i8* %"$msgobj_fname_54" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_53", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_55" - %"$msgobj_td_56" = getelementptr i8, i8* %"$msgobj_52", i32 17 - %"$msgobj_td_57" = bitcast i8* %"$msgobj_td_56" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_20", %_TyDescrTy_Typ** %"$msgobj_td_57" - %"$msgobj_v_59" = getelementptr i8, i8* %"$msgobj_52", i32 25 - %"$msgobj_v_60" = bitcast i8* %"$msgobj_v_59" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_58", i32 0, i32 0), i32 4 }, %String* %"$msgobj_v_60" - %"$msgobj_fname_62" = getelementptr i8, i8* %"$msgobj_52", i32 41 - %"$msgobj_fname_63" = bitcast i8* %"$msgobj_fname_62" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_61", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_63" - %"$msgobj_td_64" = getelementptr i8, i8* %"$msgobj_52", i32 57 - %"$msgobj_td_65" = bitcast i8* %"$msgobj_td_64" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Int32_4", %_TyDescrTy_Typ** %"$msgobj_td_65" - %"$msgobj_v_66" = getelementptr i8, i8* %"$msgobj_52", i32 65 - %"$msgobj_v_67" = bitcast i8* %"$msgobj_v_66" to %Int32* - store %Int32 %m, %Int32* %"$msgobj_v_67" - store i8* %"$msgobj_52", i8** %e - %"$execptr_load_69" = load i8*, i8** @_execptr - %"$e_70" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_69", %_TyDescrTy_Typ* @"$TyDescr_Event_26", i8* %"$e_70") + %"$gasrem_57" = load i64, i64* @_gasrem + %"$gascmp_58" = icmp ugt i64 1, %"$gasrem_57" + br i1 %"$gascmp_58", label %"$out_of_gas_59", label %"$have_gas_60" + +"$out_of_gas_59": ; preds = %"$have_gas_55" + call void @_out_of_gas() + br label %"$have_gas_60" + +"$have_gas_60": ; preds = %"$out_of_gas_59", %"$have_gas_55" + %"$consume_61" = sub i64 %"$gasrem_57", 1 + store i64 %"$consume_61", i64* @_gasrem + %"$msgobj_62_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_62_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_62_salloc_load", i64 69) + %"$msgobj_62_salloc" = bitcast i8* %"$msgobj_62_salloc_salloc" to [69 x i8]* + %"$msgobj_62" = bitcast [69 x i8]* %"$msgobj_62_salloc" to i8* + store i8 2, i8* %"$msgobj_62" + %"$msgobj_fname_64" = getelementptr i8, i8* %"$msgobj_62", i32 1 + %"$msgobj_fname_65" = bitcast i8* %"$msgobj_fname_64" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_63", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_65" + %"$msgobj_td_66" = getelementptr i8, i8* %"$msgobj_62", i32 17 + %"$msgobj_td_67" = bitcast i8* %"$msgobj_td_66" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_20", %_TyDescrTy_Typ** %"$msgobj_td_67" + %"$msgobj_v_69" = getelementptr i8, i8* %"$msgobj_62", i32 25 + %"$msgobj_v_70" = bitcast i8* %"$msgobj_v_69" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_68", i32 0, i32 0), i32 4 }, %String* %"$msgobj_v_70" + %"$msgobj_fname_72" = getelementptr i8, i8* %"$msgobj_62", i32 41 + %"$msgobj_fname_73" = bitcast i8* %"$msgobj_fname_72" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_71", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_73" + %"$msgobj_td_74" = getelementptr i8, i8* %"$msgobj_62", i32 57 + %"$msgobj_td_75" = bitcast i8* %"$msgobj_td_74" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Int32_4", %_TyDescrTy_Typ** %"$msgobj_td_75" + %"$msgobj_v_76" = getelementptr i8, i8* %"$msgobj_62", i32 65 + %"$msgobj_v_77" = bitcast i8* %"$msgobj_v_76" to %Int32* + store %Int32 %m, %Int32* %"$msgobj_v_77" + store i8* %"$msgobj_62", i8** %e + %"$e_79" = load i8*, i8** %e + %"$_literal_cost_call_81" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_26", i8* %"$e_79") + %"$gasrem_82" = load i64, i64* @_gasrem + %"$gascmp_83" = icmp ugt i64 %"$_literal_cost_call_81", %"$gasrem_82" + br i1 %"$gascmp_83", label %"$out_of_gas_84", label %"$have_gas_85" + +"$out_of_gas_84": ; preds = %"$have_gas_60" + call void @_out_of_gas() + br label %"$have_gas_85" + +"$have_gas_85": ; preds = %"$out_of_gas_84", %"$have_gas_60" + %"$consume_86" = sub i64 %"$gasrem_82", %"$_literal_cost_call_81" + store i64 %"$consume_86", i64* @_gasrem + %"$execptr_load_87" = load i8*, i8** @_execptr + %"$e_88" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_87", %_TyDescrTy_Typ* @"$TyDescr_Event_26", i8* %"$e_88") ret void } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + declare void @_event(i8*, %_TyDescrTy_Typ*, i8*) -define internal void @"$t1_71"(%Uint128 %_amount, [20 x i8]* %"$_sender_72", %TName_Bool* %c) { +define internal void @"$t1_89"(%Uint128 %_amount, [20 x i8]* %"$_sender_90", %TName_Bool* %c) { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_72" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_90" + %"$gasrem_91" = load i64, i64* @_gasrem + %"$gascmp_92" = icmp ugt i64 1, %"$gasrem_91" + br i1 %"$gascmp_92", label %"$out_of_gas_93", label %"$have_gas_94" + +"$out_of_gas_93": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_94" + +"$have_gas_94": ; preds = %"$out_of_gas_93", %entry + %"$consume_95" = sub i64 %"$gasrem_91", 1 + store i64 %"$consume_95", i64* @_gasrem %x = alloca %Int32 - %"$c_tag_74" = getelementptr inbounds %TName_Bool, %TName_Bool* %c, i32 0, i32 0 - %"$c_tag_75" = load i8, i8* %"$c_tag_74" - switch i8 %"$c_tag_75", label %"$empty_default_76" [ - i8 0, label %"$True_77" - i8 1, label %"$False_79" + %"$gasrem_96" = load i64, i64* @_gasrem + %"$gascmp_97" = icmp ugt i64 2, %"$gasrem_96" + br i1 %"$gascmp_97", label %"$out_of_gas_98", label %"$have_gas_99" + +"$out_of_gas_98": ; preds = %"$have_gas_94" + call void @_out_of_gas() + br label %"$have_gas_99" + +"$have_gas_99": ; preds = %"$out_of_gas_98", %"$have_gas_94" + %"$consume_100" = sub i64 %"$gasrem_96", 2 + store i64 %"$consume_100", i64* @_gasrem + %"$c_tag_102" = getelementptr inbounds %TName_Bool, %TName_Bool* %c, i32 0, i32 0 + %"$c_tag_103" = load i8, i8* %"$c_tag_102" + switch i8 %"$c_tag_103", label %"$empty_default_104" [ + i8 0, label %"$True_105" + i8 1, label %"$False_112" ] -"$True_77": ; preds = %entry - %"$c_78" = bitcast %TName_Bool* %c to %CName_True* +"$True_105": ; preds = %"$have_gas_99" + %"$c_106" = bitcast %TName_Bool* %c to %CName_True* + %"$gasrem_107" = load i64, i64* @_gasrem + %"$gascmp_108" = icmp ugt i64 1, %"$gasrem_107" + br i1 %"$gascmp_108", label %"$out_of_gas_109", label %"$have_gas_110" + +"$out_of_gas_109": ; preds = %"$True_105" + call void @_out_of_gas() + br label %"$have_gas_110" + +"$have_gas_110": ; preds = %"$out_of_gas_109", %"$True_105" + %"$consume_111" = sub i64 %"$gasrem_107", 1 + store i64 %"$consume_111", i64* @_gasrem store %Int32 { i32 11 }, %Int32* %x - br label %"$matchsucc_73" + br label %"$matchsucc_101" + +"$False_112": ; preds = %"$have_gas_99" + %"$c_113" = bitcast %TName_Bool* %c to %CName_False* + %"$gasrem_114" = load i64, i64* @_gasrem + %"$gascmp_115" = icmp ugt i64 1, %"$gasrem_114" + br i1 %"$gascmp_115", label %"$out_of_gas_116", label %"$have_gas_117" + +"$out_of_gas_116": ; preds = %"$False_112" + call void @_out_of_gas() + br label %"$have_gas_117" -"$False_79": ; preds = %entry - %"$c_80" = bitcast %TName_Bool* %c to %CName_False* +"$have_gas_117": ; preds = %"$out_of_gas_116", %"$False_112" + %"$consume_118" = sub i64 %"$gasrem_114", 1 + store i64 %"$consume_118", i64* @_gasrem store %Int32 { i32 41 }, %Int32* %x - br label %"$matchsucc_73" + br label %"$matchsucc_101" -"$empty_default_76": ; preds = %entry - br label %"$matchsucc_73" +"$empty_default_104": ; preds = %"$have_gas_99" + br label %"$matchsucc_101" -"$matchsucc_73": ; preds = %"$False_79", %"$True_77", %"$empty_default_76" - %"$create_event__sender_81" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_81" - %"$x_82" = load %Int32, %Int32* %x - call void @"$create_event_50"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_81", %Int32 %"$x_82") +"$matchsucc_101": ; preds = %"$have_gas_117", %"$have_gas_110", %"$empty_default_104" + %"$gasrem_119" = load i64, i64* @_gasrem + %"$gascmp_120" = icmp ugt i64 1, %"$gasrem_119" + br i1 %"$gascmp_120", label %"$out_of_gas_121", label %"$have_gas_122" + +"$out_of_gas_121": ; preds = %"$matchsucc_101" + call void @_out_of_gas() + br label %"$have_gas_122" + +"$have_gas_122": ; preds = %"$out_of_gas_121", %"$matchsucc_101" + %"$consume_123" = sub i64 %"$gasrem_119", 1 + store i64 %"$consume_123", i64* @_gasrem + %"$create_event__sender_124" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_124" + %"$x_125" = load %Int32, %Int32* %x + call void @"$create_event_50"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_124", %Int32 %"$x_125") + %"$gasrem_126" = load i64, i64* @_gasrem + %"$gascmp_127" = icmp ugt i64 1, %"$gasrem_126" + br i1 %"$gascmp_127", label %"$out_of_gas_128", label %"$have_gas_129" + +"$out_of_gas_128": ; preds = %"$have_gas_122" + call void @_out_of_gas() + br label %"$have_gas_129" + +"$have_gas_129": ; preds = %"$out_of_gas_128", %"$have_gas_122" + %"$consume_130" = sub i64 %"$gasrem_126", 1 + store i64 %"$consume_130", i64* @_gasrem %y = alloca %Int32 + %"$gasrem_131" = load i64, i64* @_gasrem + %"$gascmp_132" = icmp ugt i64 1, %"$gasrem_131" + br i1 %"$gascmp_132", label %"$out_of_gas_133", label %"$have_gas_134" + +"$out_of_gas_133": ; preds = %"$have_gas_129" + call void @_out_of_gas() + br label %"$have_gas_134" + +"$have_gas_134": ; preds = %"$out_of_gas_133", %"$have_gas_129" + %"$consume_135" = sub i64 %"$gasrem_131", 1 + store i64 %"$consume_135", i64* @_gasrem store %Int32 { i32 31 }, %Int32* %y - %"$c_tag_84" = getelementptr inbounds %TName_Bool, %TName_Bool* %c, i32 0, i32 0 - %"$c_tag_85" = load i8, i8* %"$c_tag_84" - switch i8 %"$c_tag_85", label %"$empty_default_86" [ - i8 0, label %"$True_87" - i8 1, label %"$False_91" + %"$gasrem_136" = load i64, i64* @_gasrem + %"$gascmp_137" = icmp ugt i64 2, %"$gasrem_136" + br i1 %"$gascmp_137", label %"$out_of_gas_138", label %"$have_gas_139" + +"$out_of_gas_138": ; preds = %"$have_gas_134" + call void @_out_of_gas() + br label %"$have_gas_139" + +"$have_gas_139": ; preds = %"$out_of_gas_138", %"$have_gas_134" + %"$consume_140" = sub i64 %"$gasrem_136", 2 + store i64 %"$consume_140", i64* @_gasrem + %"$c_tag_142" = getelementptr inbounds %TName_Bool, %TName_Bool* %c, i32 0, i32 0 + %"$c_tag_143" = load i8, i8* %"$c_tag_142" + switch i8 %"$c_tag_143", label %"$empty_default_144" [ + i8 0, label %"$True_145" + i8 1, label %"$False_164" ] -"$True_87": ; preds = %"$matchsucc_73" - %"$c_88" = bitcast %TName_Bool* %c to %CName_True* +"$True_145": ; preds = %"$have_gas_139" + %"$c_146" = bitcast %TName_Bool* %c to %CName_True* + %"$gasrem_147" = load i64, i64* @_gasrem + %"$gascmp_148" = icmp ugt i64 1, %"$gasrem_147" + br i1 %"$gascmp_148", label %"$out_of_gas_149", label %"$have_gas_150" + +"$out_of_gas_149": ; preds = %"$True_145" + call void @_out_of_gas() + br label %"$have_gas_150" + +"$have_gas_150": ; preds = %"$out_of_gas_149", %"$True_145" + %"$consume_151" = sub i64 %"$gasrem_147", 1 + store i64 %"$consume_151", i64* @_gasrem %"$y_0" = alloca %Int32 + %"$gasrem_152" = load i64, i64* @_gasrem + %"$gascmp_153" = icmp ugt i64 1, %"$gasrem_152" + br i1 %"$gascmp_153", label %"$out_of_gas_154", label %"$have_gas_155" + +"$out_of_gas_154": ; preds = %"$have_gas_150" + call void @_out_of_gas() + br label %"$have_gas_155" + +"$have_gas_155": ; preds = %"$out_of_gas_154", %"$have_gas_150" + %"$consume_156" = sub i64 %"$gasrem_152", 1 + store i64 %"$consume_156", i64* @_gasrem store %Int32 { i32 101 }, %Int32* %"$y_0" - %"$create_event__sender_89" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_89" - %"$$y_0_90" = load %Int32, %Int32* %"$y_0" - call void @"$create_event_50"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_89", %Int32 %"$$y_0_90") - br label %"$matchsucc_83" - -"$False_91": ; preds = %"$matchsucc_73" - %"$c_92" = bitcast %TName_Bool* %c to %CName_False* + %"$gasrem_157" = load i64, i64* @_gasrem + %"$gascmp_158" = icmp ugt i64 1, %"$gasrem_157" + br i1 %"$gascmp_158", label %"$out_of_gas_159", label %"$have_gas_160" + +"$out_of_gas_159": ; preds = %"$have_gas_155" + call void @_out_of_gas() + br label %"$have_gas_160" + +"$have_gas_160": ; preds = %"$out_of_gas_159", %"$have_gas_155" + %"$consume_161" = sub i64 %"$gasrem_157", 1 + store i64 %"$consume_161", i64* @_gasrem + %"$create_event__sender_162" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_162" + %"$$y_0_163" = load %Int32, %Int32* %"$y_0" + call void @"$create_event_50"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_162", %Int32 %"$$y_0_163") + br label %"$matchsucc_141" + +"$False_164": ; preds = %"$have_gas_139" + %"$c_165" = bitcast %TName_Bool* %c to %CName_False* + %"$gasrem_166" = load i64, i64* @_gasrem + %"$gascmp_167" = icmp ugt i64 1, %"$gasrem_166" + br i1 %"$gascmp_167", label %"$out_of_gas_168", label %"$have_gas_169" + +"$out_of_gas_168": ; preds = %"$False_164" + call void @_out_of_gas() + br label %"$have_gas_169" + +"$have_gas_169": ; preds = %"$out_of_gas_168", %"$False_164" + %"$consume_170" = sub i64 %"$gasrem_166", 1 + store i64 %"$consume_170", i64* @_gasrem %"$y_1" = alloca %Int32 + %"$gasrem_171" = load i64, i64* @_gasrem + %"$gascmp_172" = icmp ugt i64 1, %"$gasrem_171" + br i1 %"$gascmp_172", label %"$out_of_gas_173", label %"$have_gas_174" + +"$out_of_gas_173": ; preds = %"$have_gas_169" + call void @_out_of_gas() + br label %"$have_gas_174" + +"$have_gas_174": ; preds = %"$out_of_gas_173", %"$have_gas_169" + %"$consume_175" = sub i64 %"$gasrem_171", 1 + store i64 %"$consume_175", i64* @_gasrem store %Int32 { i32 102 }, %Int32* %"$y_1" - %"$create_event__sender_93" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_93" - %"$$y_1_94" = load %Int32, %Int32* %"$y_1" - call void @"$create_event_50"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_93", %Int32 %"$$y_1_94") - br label %"$matchsucc_83" - -"$empty_default_86": ; preds = %"$matchsucc_73" - br label %"$matchsucc_83" - -"$matchsucc_83": ; preds = %"$False_91", %"$True_87", %"$empty_default_86" - %"$create_event__sender_95" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_95" - %"$y_96" = load %Int32, %Int32* %y - call void @"$create_event_50"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_95", %Int32 %"$y_96") + %"$gasrem_176" = load i64, i64* @_gasrem + %"$gascmp_177" = icmp ugt i64 1, %"$gasrem_176" + br i1 %"$gascmp_177", label %"$out_of_gas_178", label %"$have_gas_179" + +"$out_of_gas_178": ; preds = %"$have_gas_174" + call void @_out_of_gas() + br label %"$have_gas_179" + +"$have_gas_179": ; preds = %"$out_of_gas_178", %"$have_gas_174" + %"$consume_180" = sub i64 %"$gasrem_176", 1 + store i64 %"$consume_180", i64* @_gasrem + %"$create_event__sender_181" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_181" + %"$$y_1_182" = load %Int32, %Int32* %"$y_1" + call void @"$create_event_50"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_181", %Int32 %"$$y_1_182") + br label %"$matchsucc_141" + +"$empty_default_144": ; preds = %"$have_gas_139" + br label %"$matchsucc_141" + +"$matchsucc_141": ; preds = %"$have_gas_179", %"$have_gas_160", %"$empty_default_144" + %"$gasrem_183" = load i64, i64* @_gasrem + %"$gascmp_184" = icmp ugt i64 1, %"$gasrem_183" + br i1 %"$gascmp_184", label %"$out_of_gas_185", label %"$have_gas_186" + +"$out_of_gas_185": ; preds = %"$matchsucc_141" + call void @_out_of_gas() + br label %"$have_gas_186" + +"$have_gas_186": ; preds = %"$out_of_gas_185", %"$matchsucc_141" + %"$consume_187" = sub i64 %"$gasrem_183", 1 + store i64 %"$consume_187", i64* @_gasrem + %"$create_event__sender_188" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_188" + %"$y_189" = load %Int32, %Int32* %y + call void @"$create_event_50"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_188", %Int32 %"$y_189") ret void } define void @t1(i8* %0) { entry: - %"$_amount_98" = getelementptr i8, i8* %0, i32 0 - %"$_amount_99" = bitcast i8* %"$_amount_98" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_99" - %"$_sender_100" = getelementptr i8, i8* %0, i32 16 - %"$_sender_101" = bitcast i8* %"$_sender_100" to [20 x i8]* - %"$c_102" = getelementptr i8, i8* %0, i32 36 - %"$c_103" = bitcast i8* %"$c_102" to %TName_Bool** - %c = load %TName_Bool*, %TName_Bool** %"$c_103" - call void @"$t1_71"(%Uint128 %_amount, [20 x i8]* %"$_sender_101", %TName_Bool* %c) + %"$_amount_191" = getelementptr i8, i8* %0, i32 0 + %"$_amount_192" = bitcast i8* %"$_amount_191" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_192" + %"$_sender_193" = getelementptr i8, i8* %0, i32 16 + %"$_sender_194" = bitcast i8* %"$_sender_193" to [20 x i8]* + %"$c_195" = getelementptr i8, i8* %0, i32 36 + %"$c_196" = bitcast i8* %"$c_195" to %TName_Bool** + %c = load %TName_Bool*, %TName_Bool** %"$c_196" + call void @"$t1_89"(%Uint128 %_amount, [20 x i8]* %"$_sender_194", %TName_Bool* %c) ret void } diff --git a/testsuite/contr/match_assign.output_t1_false.json b/testsuite/contr/match_assign.output_t1_false.json index 299b03fc..5445ac01 100644 --- a/testsuite/contr/match_assign.output_t1_false.json +++ b/testsuite/contr/match_assign.output_t1_false.json @@ -32,7 +32,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999789", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/match_assign.output_t1_true.json b/testsuite/contr/match_assign.output_t1_true.json index 498a809d..3c6ac95b 100644 --- a/testsuite/contr/match_assign.output_t1_true.json +++ b/testsuite/contr/match_assign.output_t1_true.json @@ -32,7 +32,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999789", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/match_assign2.ll b/testsuite/contr/match_assign2.ll index 15b9f8b9..d187d55a 100644 --- a/testsuite/contr/match_assign2.ll +++ b/testsuite/contr/match_assign2.ll @@ -79,9 +79,9 @@ target triple = "x86_64-pc-linux-gnu" @"$TyDescr_ADT_Pair_58" = unnamed_addr constant [4 x i8] c"Pair" @_scilla_version = global %Uint32 zeroinitializer @_this_address = global [20 x i8] zeroinitializer -@"$stringlit_62" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_67" = unnamed_addr constant [4 x i8] c"test" -@"$stringlit_70" = unnamed_addr constant [7 x i8] c"message" +@"$stringlit_72" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_77" = unnamed_addr constant [4 x i8] c"test" +@"$stringlit_80" = unnamed_addr constant [7 x i8] c"message" @_tydescr_table = constant [17 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Event_25", %_TyDescrTy_Typ* @"$TyDescr_Int64_7", %_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_List_(Int32)_Int32_36", %_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_Int256_15", %_TyDescrTy_Typ* @"$TyDescr_Int128_11", %_TyDescrTy_Typ* @"$TyDescr_Bystr_29", %_TyDescrTy_Typ* @"$TyDescr_Message_23", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Int32_35", %_TyDescrTy_Typ* @"$TyDescr_Int32_3"] @_tydescr_table_length = constant i32 17 @@ -98,89 +98,183 @@ entry: define internal void @"$create_event_59"(%Uint128 %_amount, [20 x i8]* %"$_sender_60", %Int32 %m) { entry: %_sender = load [20 x i8], [20 x i8]* %"$_sender_60" + %"$gasrem_61" = load i64, i64* @_gasrem + %"$gascmp_62" = icmp ugt i64 1, %"$gasrem_61" + br i1 %"$gascmp_62", label %"$out_of_gas_63", label %"$have_gas_64" + +"$out_of_gas_63": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_64" + +"$have_gas_64": ; preds = %"$out_of_gas_63", %entry + %"$consume_65" = sub i64 %"$gasrem_61", 1 + store i64 %"$consume_65", i64* @_gasrem %e = alloca i8* - %"$msgobj_61_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_61_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_61_salloc_load", i64 69) - %"$msgobj_61_salloc" = bitcast i8* %"$msgobj_61_salloc_salloc" to [69 x i8]* - %"$msgobj_61" = bitcast [69 x i8]* %"$msgobj_61_salloc" to i8* - store i8 2, i8* %"$msgobj_61" - %"$msgobj_fname_63" = getelementptr i8, i8* %"$msgobj_61", i32 1 - %"$msgobj_fname_64" = bitcast i8* %"$msgobj_fname_63" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_62", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_64" - %"$msgobj_td_65" = getelementptr i8, i8* %"$msgobj_61", i32 17 - %"$msgobj_td_66" = bitcast i8* %"$msgobj_td_65" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_19", %_TyDescrTy_Typ** %"$msgobj_td_66" - %"$msgobj_v_68" = getelementptr i8, i8* %"$msgobj_61", i32 25 - %"$msgobj_v_69" = bitcast i8* %"$msgobj_v_68" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_67", i32 0, i32 0), i32 4 }, %String* %"$msgobj_v_69" - %"$msgobj_fname_71" = getelementptr i8, i8* %"$msgobj_61", i32 41 - %"$msgobj_fname_72" = bitcast i8* %"$msgobj_fname_71" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_70", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_72" - %"$msgobj_td_73" = getelementptr i8, i8* %"$msgobj_61", i32 57 - %"$msgobj_td_74" = bitcast i8* %"$msgobj_td_73" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Int32_3", %_TyDescrTy_Typ** %"$msgobj_td_74" - %"$msgobj_v_75" = getelementptr i8, i8* %"$msgobj_61", i32 65 - %"$msgobj_v_76" = bitcast i8* %"$msgobj_v_75" to %Int32* - store %Int32 %m, %Int32* %"$msgobj_v_76" - store i8* %"$msgobj_61", i8** %e - %"$execptr_load_78" = load i8*, i8** @_execptr - %"$e_79" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_78", %_TyDescrTy_Typ* @"$TyDescr_Event_25", i8* %"$e_79") + %"$gasrem_66" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_64" + call void @_out_of_gas() + br label %"$have_gas_69" + +"$have_gas_69": ; preds = %"$out_of_gas_68", %"$have_gas_64" + %"$consume_70" = sub i64 %"$gasrem_66", 1 + store i64 %"$consume_70", i64* @_gasrem + %"$msgobj_71_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_71_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_71_salloc_load", i64 69) + %"$msgobj_71_salloc" = bitcast i8* %"$msgobj_71_salloc_salloc" to [69 x i8]* + %"$msgobj_71" = bitcast [69 x i8]* %"$msgobj_71_salloc" to i8* + store i8 2, i8* %"$msgobj_71" + %"$msgobj_fname_73" = getelementptr i8, i8* %"$msgobj_71", i32 1 + %"$msgobj_fname_74" = bitcast i8* %"$msgobj_fname_73" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_72", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_74" + %"$msgobj_td_75" = getelementptr i8, i8* %"$msgobj_71", i32 17 + %"$msgobj_td_76" = bitcast i8* %"$msgobj_td_75" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_19", %_TyDescrTy_Typ** %"$msgobj_td_76" + %"$msgobj_v_78" = getelementptr i8, i8* %"$msgobj_71", i32 25 + %"$msgobj_v_79" = bitcast i8* %"$msgobj_v_78" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_77", i32 0, i32 0), i32 4 }, %String* %"$msgobj_v_79" + %"$msgobj_fname_81" = getelementptr i8, i8* %"$msgobj_71", i32 41 + %"$msgobj_fname_82" = bitcast i8* %"$msgobj_fname_81" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_80", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_82" + %"$msgobj_td_83" = getelementptr i8, i8* %"$msgobj_71", i32 57 + %"$msgobj_td_84" = bitcast i8* %"$msgobj_td_83" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Int32_3", %_TyDescrTy_Typ** %"$msgobj_td_84" + %"$msgobj_v_85" = getelementptr i8, i8* %"$msgobj_71", i32 65 + %"$msgobj_v_86" = bitcast i8* %"$msgobj_v_85" to %Int32* + store %Int32 %m, %Int32* %"$msgobj_v_86" + store i8* %"$msgobj_71", i8** %e + %"$e_88" = load i8*, i8** %e + %"$_literal_cost_call_90" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_25", i8* %"$e_88") + %"$gasrem_91" = load i64, i64* @_gasrem + %"$gascmp_92" = icmp ugt i64 %"$_literal_cost_call_90", %"$gasrem_91" + br i1 %"$gascmp_92", label %"$out_of_gas_93", label %"$have_gas_94" + +"$out_of_gas_93": ; preds = %"$have_gas_69" + call void @_out_of_gas() + br label %"$have_gas_94" + +"$have_gas_94": ; preds = %"$out_of_gas_93", %"$have_gas_69" + %"$consume_95" = sub i64 %"$gasrem_91", %"$_literal_cost_call_90" + store i64 %"$consume_95", i64* @_gasrem + %"$execptr_load_96" = load i8*, i8** @_execptr + %"$e_97" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_96", %_TyDescrTy_Typ* @"$TyDescr_Event_25", i8* %"$e_97") ret void } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + declare void @_event(i8*, %_TyDescrTy_Typ*, i8*) -define internal void @"$t1_80"(%Uint128 %_amount, [20 x i8]* %"$_sender_81", %"TName_Pair_List_(Int32)_Int32"* %p) { +define internal void @"$t1_98"(%Uint128 %_amount, [20 x i8]* %"$_sender_99", %"TName_Pair_List_(Int32)_Int32"* %p) { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_81" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_99" + %"$gasrem_100" = load i64, i64* @_gasrem + %"$gascmp_101" = icmp ugt i64 1, %"$gasrem_100" + br i1 %"$gascmp_101", label %"$out_of_gas_102", label %"$have_gas_103" + +"$out_of_gas_102": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_103" + +"$have_gas_103": ; preds = %"$out_of_gas_102", %entry + %"$consume_104" = sub i64 %"$gasrem_100", 1 + store i64 %"$consume_104", i64* @_gasrem %a = alloca %Int32 + %"$gasrem_105" = load i64, i64* @_gasrem + %"$gascmp_106" = icmp ugt i64 1, %"$gasrem_105" + br i1 %"$gascmp_106", label %"$out_of_gas_107", label %"$have_gas_108" + +"$out_of_gas_107": ; preds = %"$have_gas_103" + call void @_out_of_gas() + br label %"$have_gas_108" + +"$have_gas_108": ; preds = %"$out_of_gas_107", %"$have_gas_103" + %"$consume_109" = sub i64 %"$gasrem_105", 1 + store i64 %"$consume_109", i64* @_gasrem store %Int32 { i32 31 }, %Int32* %a - %"$p_tag_83" = getelementptr inbounds %"TName_Pair_List_(Int32)_Int32", %"TName_Pair_List_(Int32)_Int32"* %p, i32 0, i32 0 - %"$p_tag_84" = load i8, i8* %"$p_tag_83" - switch i8 %"$p_tag_84", label %"$empty_default_85" [ - i8 0, label %"$Pair_86" + %"$gasrem_110" = load i64, i64* @_gasrem + %"$gascmp_111" = icmp ugt i64 1, %"$gasrem_110" + br i1 %"$gascmp_111", label %"$out_of_gas_112", label %"$have_gas_113" + +"$out_of_gas_112": ; preds = %"$have_gas_108" + call void @_out_of_gas() + br label %"$have_gas_113" + +"$have_gas_113": ; preds = %"$out_of_gas_112", %"$have_gas_108" + %"$consume_114" = sub i64 %"$gasrem_110", 1 + store i64 %"$consume_114", i64* @_gasrem + %"$p_tag_116" = getelementptr inbounds %"TName_Pair_List_(Int32)_Int32", %"TName_Pair_List_(Int32)_Int32"* %p, i32 0, i32 0 + %"$p_tag_117" = load i8, i8* %"$p_tag_116" + switch i8 %"$p_tag_117", label %"$empty_default_118" [ + i8 0, label %"$Pair_119" ] -"$Pair_86": ; preds = %entry - %"$p_87" = bitcast %"TName_Pair_List_(Int32)_Int32"* %p to %"CName_Pair_List_(Int32)_Int32"* - %"$b_gep_88" = getelementptr inbounds %"CName_Pair_List_(Int32)_Int32", %"CName_Pair_List_(Int32)_Int32"* %"$p_87", i32 0, i32 1 - %"$b_load_89" = load %TName_List_Int32*, %TName_List_Int32** %"$b_gep_88" +"$Pair_119": ; preds = %"$have_gas_113" + %"$p_120" = bitcast %"TName_Pair_List_(Int32)_Int32"* %p to %"CName_Pair_List_(Int32)_Int32"* + %"$b_gep_121" = getelementptr inbounds %"CName_Pair_List_(Int32)_Int32", %"CName_Pair_List_(Int32)_Int32"* %"$p_120", i32 0, i32 1 + %"$b_load_122" = load %TName_List_Int32*, %TName_List_Int32** %"$b_gep_121" %b = alloca %TName_List_Int32* - store %TName_List_Int32* %"$b_load_89", %TName_List_Int32** %b - %"$$a_0_gep_90" = getelementptr inbounds %"CName_Pair_List_(Int32)_Int32", %"CName_Pair_List_(Int32)_Int32"* %"$p_87", i32 0, i32 2 - %"$$a_0_load_91" = load %Int32, %Int32* %"$$a_0_gep_90" + store %TName_List_Int32* %"$b_load_122", %TName_List_Int32** %b + %"$$a_0_gep_123" = getelementptr inbounds %"CName_Pair_List_(Int32)_Int32", %"CName_Pair_List_(Int32)_Int32"* %"$p_120", i32 0, i32 2 + %"$$a_0_load_124" = load %Int32, %Int32* %"$$a_0_gep_123" %"$a_0" = alloca %Int32 - store %Int32 %"$$a_0_load_91", %Int32* %"$a_0" - %"$create_event__sender_92" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_92" - %"$$a_0_93" = load %Int32, %Int32* %"$a_0" - call void @"$create_event_59"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_92", %Int32 %"$$a_0_93") - br label %"$matchsucc_82" - -"$empty_default_85": ; preds = %entry - br label %"$matchsucc_82" - -"$matchsucc_82": ; preds = %"$Pair_86", %"$empty_default_85" - %"$create_event__sender_94" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_94" - %"$a_95" = load %Int32, %Int32* %a - call void @"$create_event_59"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_94", %Int32 %"$a_95") + store %Int32 %"$$a_0_load_124", %Int32* %"$a_0" + %"$gasrem_125" = load i64, i64* @_gasrem + %"$gascmp_126" = icmp ugt i64 1, %"$gasrem_125" + br i1 %"$gascmp_126", label %"$out_of_gas_127", label %"$have_gas_128" + +"$out_of_gas_127": ; preds = %"$Pair_119" + call void @_out_of_gas() + br label %"$have_gas_128" + +"$have_gas_128": ; preds = %"$out_of_gas_127", %"$Pair_119" + %"$consume_129" = sub i64 %"$gasrem_125", 1 + store i64 %"$consume_129", i64* @_gasrem + %"$create_event__sender_130" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_130" + %"$$a_0_131" = load %Int32, %Int32* %"$a_0" + call void @"$create_event_59"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_130", %Int32 %"$$a_0_131") + br label %"$matchsucc_115" + +"$empty_default_118": ; preds = %"$have_gas_113" + br label %"$matchsucc_115" + +"$matchsucc_115": ; preds = %"$have_gas_128", %"$empty_default_118" + %"$gasrem_132" = load i64, i64* @_gasrem + %"$gascmp_133" = icmp ugt i64 1, %"$gasrem_132" + br i1 %"$gascmp_133", label %"$out_of_gas_134", label %"$have_gas_135" + +"$out_of_gas_134": ; preds = %"$matchsucc_115" + call void @_out_of_gas() + br label %"$have_gas_135" + +"$have_gas_135": ; preds = %"$out_of_gas_134", %"$matchsucc_115" + %"$consume_136" = sub i64 %"$gasrem_132", 1 + store i64 %"$consume_136", i64* @_gasrem + %"$create_event__sender_137" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_137" + %"$a_138" = load %Int32, %Int32* %a + call void @"$create_event_59"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_137", %Int32 %"$a_138") ret void } define void @t1(i8* %0) { entry: - %"$_amount_97" = getelementptr i8, i8* %0, i32 0 - %"$_amount_98" = bitcast i8* %"$_amount_97" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_98" - %"$_sender_99" = getelementptr i8, i8* %0, i32 16 - %"$_sender_100" = bitcast i8* %"$_sender_99" to [20 x i8]* - %"$p_101" = getelementptr i8, i8* %0, i32 36 - %"$p_102" = bitcast i8* %"$p_101" to %"TName_Pair_List_(Int32)_Int32"** - %p = load %"TName_Pair_List_(Int32)_Int32"*, %"TName_Pair_List_(Int32)_Int32"** %"$p_102" - call void @"$t1_80"(%Uint128 %_amount, [20 x i8]* %"$_sender_100", %"TName_Pair_List_(Int32)_Int32"* %p) + %"$_amount_140" = getelementptr i8, i8* %0, i32 0 + %"$_amount_141" = bitcast i8* %"$_amount_140" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_141" + %"$_sender_142" = getelementptr i8, i8* %0, i32 16 + %"$_sender_143" = bitcast i8* %"$_sender_142" to [20 x i8]* + %"$p_144" = getelementptr i8, i8* %0, i32 36 + %"$p_145" = bitcast i8* %"$p_144" to %"TName_Pair_List_(Int32)_Int32"** + %p = load %"TName_Pair_List_(Int32)_Int32"*, %"TName_Pair_List_(Int32)_Int32"** %"$p_145" + call void @"$t1_98"(%Uint128 %_amount, [20 x i8]* %"$_sender_143", %"TName_Pair_List_(Int32)_Int32"* %p) ret void } diff --git a/testsuite/contr/match_assign2.output_t1.json b/testsuite/contr/match_assign2.output_t1.json index 5773c58f..b99a889b 100644 --- a/testsuite/contr/match_assign2.output_t1.json +++ b/testsuite/contr/match_assign2.output_t1.json @@ -22,7 +22,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999863", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/match_assign3.ll b/testsuite/contr/match_assign3.ll index b1c4c99d..01d2ae8d 100644 --- a/testsuite/contr/match_assign3.ll +++ b/testsuite/contr/match_assign3.ll @@ -67,9 +67,9 @@ target triple = "x86_64-pc-linux-gnu" @"$TyDescr_ADT_Bool_47" = unnamed_addr constant [4 x i8] c"Bool" @_scilla_version = global %Uint32 zeroinitializer @_this_address = global [20 x i8] zeroinitializer -@"$stringlit_51" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_56" = unnamed_addr constant [4 x i8] c"test" -@"$stringlit_59" = unnamed_addr constant [7 x i8] c"message" +@"$stringlit_61" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_66" = unnamed_addr constant [4 x i8] c"test" +@"$stringlit_69" = unnamed_addr constant [7 x i8] c"message" @_tydescr_table = constant [16 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Event_24", %_TyDescrTy_Typ* @"$TyDescr_Int64_6", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_34", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_30", %_TyDescrTy_Typ* @"$TyDescr_Uint256_16", %_TyDescrTy_Typ* @"$TyDescr_Uint32_4", %_TyDescrTy_Typ* @"$TyDescr_Uint64_8", %_TyDescrTy_Typ* @"$TyDescr_Bnum_20", %_TyDescrTy_Typ* @"$TyDescr_Uint128_12", %_TyDescrTy_Typ* @"$TyDescr_Exception_26", %_TyDescrTy_Typ* @"$TyDescr_String_18", %_TyDescrTy_Typ* @"$TyDescr_Int256_14", %_TyDescrTy_Typ* @"$TyDescr_Int128_10", %_TyDescrTy_Typ* @"$TyDescr_Bystr_28", %_TyDescrTy_Typ* @"$TyDescr_Message_22", %_TyDescrTy_Typ* @"$TyDescr_Int32_2"] @_tydescr_table_length = constant i32 16 @@ -86,114 +86,285 @@ entry: define internal void @"$create_event_48"(%Uint128 %_amount, [20 x i8]* %"$_sender_49", %Int32 %m) { entry: %_sender = load [20 x i8], [20 x i8]* %"$_sender_49" + %"$gasrem_50" = load i64, i64* @_gasrem + %"$gascmp_51" = icmp ugt i64 1, %"$gasrem_50" + br i1 %"$gascmp_51", label %"$out_of_gas_52", label %"$have_gas_53" + +"$out_of_gas_52": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_53" + +"$have_gas_53": ; preds = %"$out_of_gas_52", %entry + %"$consume_54" = sub i64 %"$gasrem_50", 1 + store i64 %"$consume_54", i64* @_gasrem %e = alloca i8* - %"$msgobj_50_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_50_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_50_salloc_load", i64 69) - %"$msgobj_50_salloc" = bitcast i8* %"$msgobj_50_salloc_salloc" to [69 x i8]* - %"$msgobj_50" = bitcast [69 x i8]* %"$msgobj_50_salloc" to i8* - store i8 2, i8* %"$msgobj_50" - %"$msgobj_fname_52" = getelementptr i8, i8* %"$msgobj_50", i32 1 - %"$msgobj_fname_53" = bitcast i8* %"$msgobj_fname_52" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_51", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_53" - %"$msgobj_td_54" = getelementptr i8, i8* %"$msgobj_50", i32 17 - %"$msgobj_td_55" = bitcast i8* %"$msgobj_td_54" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_18", %_TyDescrTy_Typ** %"$msgobj_td_55" - %"$msgobj_v_57" = getelementptr i8, i8* %"$msgobj_50", i32 25 - %"$msgobj_v_58" = bitcast i8* %"$msgobj_v_57" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_56", i32 0, i32 0), i32 4 }, %String* %"$msgobj_v_58" - %"$msgobj_fname_60" = getelementptr i8, i8* %"$msgobj_50", i32 41 - %"$msgobj_fname_61" = bitcast i8* %"$msgobj_fname_60" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_59", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_61" - %"$msgobj_td_62" = getelementptr i8, i8* %"$msgobj_50", i32 57 - %"$msgobj_td_63" = bitcast i8* %"$msgobj_td_62" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Int32_2", %_TyDescrTy_Typ** %"$msgobj_td_63" - %"$msgobj_v_64" = getelementptr i8, i8* %"$msgobj_50", i32 65 - %"$msgobj_v_65" = bitcast i8* %"$msgobj_v_64" to %Int32* - store %Int32 %m, %Int32* %"$msgobj_v_65" - store i8* %"$msgobj_50", i8** %e - %"$execptr_load_67" = load i8*, i8** @_execptr - %"$e_68" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_67", %_TyDescrTy_Typ* @"$TyDescr_Event_24", i8* %"$e_68") + %"$gasrem_55" = load i64, i64* @_gasrem + %"$gascmp_56" = icmp ugt i64 1, %"$gasrem_55" + br i1 %"$gascmp_56", label %"$out_of_gas_57", label %"$have_gas_58" + +"$out_of_gas_57": ; preds = %"$have_gas_53" + call void @_out_of_gas() + br label %"$have_gas_58" + +"$have_gas_58": ; preds = %"$out_of_gas_57", %"$have_gas_53" + %"$consume_59" = sub i64 %"$gasrem_55", 1 + store i64 %"$consume_59", i64* @_gasrem + %"$msgobj_60_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_60_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_60_salloc_load", i64 69) + %"$msgobj_60_salloc" = bitcast i8* %"$msgobj_60_salloc_salloc" to [69 x i8]* + %"$msgobj_60" = bitcast [69 x i8]* %"$msgobj_60_salloc" to i8* + store i8 2, i8* %"$msgobj_60" + %"$msgobj_fname_62" = getelementptr i8, i8* %"$msgobj_60", i32 1 + %"$msgobj_fname_63" = bitcast i8* %"$msgobj_fname_62" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_61", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_63" + %"$msgobj_td_64" = getelementptr i8, i8* %"$msgobj_60", i32 17 + %"$msgobj_td_65" = bitcast i8* %"$msgobj_td_64" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_18", %_TyDescrTy_Typ** %"$msgobj_td_65" + %"$msgobj_v_67" = getelementptr i8, i8* %"$msgobj_60", i32 25 + %"$msgobj_v_68" = bitcast i8* %"$msgobj_v_67" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_66", i32 0, i32 0), i32 4 }, %String* %"$msgobj_v_68" + %"$msgobj_fname_70" = getelementptr i8, i8* %"$msgobj_60", i32 41 + %"$msgobj_fname_71" = bitcast i8* %"$msgobj_fname_70" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_69", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_71" + %"$msgobj_td_72" = getelementptr i8, i8* %"$msgobj_60", i32 57 + %"$msgobj_td_73" = bitcast i8* %"$msgobj_td_72" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Int32_2", %_TyDescrTy_Typ** %"$msgobj_td_73" + %"$msgobj_v_74" = getelementptr i8, i8* %"$msgobj_60", i32 65 + %"$msgobj_v_75" = bitcast i8* %"$msgobj_v_74" to %Int32* + store %Int32 %m, %Int32* %"$msgobj_v_75" + store i8* %"$msgobj_60", i8** %e + %"$e_77" = load i8*, i8** %e + %"$_literal_cost_call_79" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_24", i8* %"$e_77") + %"$gasrem_80" = load i64, i64* @_gasrem + %"$gascmp_81" = icmp ugt i64 %"$_literal_cost_call_79", %"$gasrem_80" + br i1 %"$gascmp_81", label %"$out_of_gas_82", label %"$have_gas_83" + +"$out_of_gas_82": ; preds = %"$have_gas_58" + call void @_out_of_gas() + br label %"$have_gas_83" + +"$have_gas_83": ; preds = %"$out_of_gas_82", %"$have_gas_58" + %"$consume_84" = sub i64 %"$gasrem_80", %"$_literal_cost_call_79" + store i64 %"$consume_84", i64* @_gasrem + %"$execptr_load_85" = load i8*, i8** @_execptr + %"$e_86" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_85", %_TyDescrTy_Typ* @"$TyDescr_Event_24", i8* %"$e_86") ret void } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + declare void @_event(i8*, %_TyDescrTy_Typ*, i8*) -define internal void @"$t1_69"(%Uint128 %_amount, [20 x i8]* %"$_sender_70", %TName_Bool* %c) { +define internal void @"$t1_87"(%Uint128 %_amount, [20 x i8]* %"$_sender_88", %TName_Bool* %c) { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_70" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_88" + %"$gasrem_89" = load i64, i64* @_gasrem + %"$gascmp_90" = icmp ugt i64 1, %"$gasrem_89" + br i1 %"$gascmp_90", label %"$out_of_gas_91", label %"$have_gas_92" + +"$out_of_gas_91": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_92" + +"$have_gas_92": ; preds = %"$out_of_gas_91", %entry + %"$consume_93" = sub i64 %"$gasrem_89", 1 + store i64 %"$consume_93", i64* @_gasrem %x = alloca %Int32 - %"$c_tag_72" = getelementptr inbounds %TName_Bool, %TName_Bool* %c, i32 0, i32 0 - %"$c_tag_73" = load i8, i8* %"$c_tag_72" - switch i8 %"$c_tag_73", label %"$empty_default_74" [ - i8 0, label %"$True_75" - i8 1, label %"$False_77" + %"$gasrem_94" = load i64, i64* @_gasrem + %"$gascmp_95" = icmp ugt i64 2, %"$gasrem_94" + br i1 %"$gascmp_95", label %"$out_of_gas_96", label %"$have_gas_97" + +"$out_of_gas_96": ; preds = %"$have_gas_92" + call void @_out_of_gas() + br label %"$have_gas_97" + +"$have_gas_97": ; preds = %"$out_of_gas_96", %"$have_gas_92" + %"$consume_98" = sub i64 %"$gasrem_94", 2 + store i64 %"$consume_98", i64* @_gasrem + %"$c_tag_100" = getelementptr inbounds %TName_Bool, %TName_Bool* %c, i32 0, i32 0 + %"$c_tag_101" = load i8, i8* %"$c_tag_100" + switch i8 %"$c_tag_101", label %"$empty_default_102" [ + i8 0, label %"$True_103" + i8 1, label %"$False_110" ] -"$True_75": ; preds = %entry - %"$c_76" = bitcast %TName_Bool* %c to %CName_True* +"$True_103": ; preds = %"$have_gas_97" + %"$c_104" = bitcast %TName_Bool* %c to %CName_True* + %"$gasrem_105" = load i64, i64* @_gasrem + %"$gascmp_106" = icmp ugt i64 1, %"$gasrem_105" + br i1 %"$gascmp_106", label %"$out_of_gas_107", label %"$have_gas_108" + +"$out_of_gas_107": ; preds = %"$True_103" + call void @_out_of_gas() + br label %"$have_gas_108" + +"$have_gas_108": ; preds = %"$out_of_gas_107", %"$True_103" + %"$consume_109" = sub i64 %"$gasrem_105", 1 + store i64 %"$consume_109", i64* @_gasrem store %Int32 { i32 11 }, %Int32* %x - br label %"$matchsucc_71" + br label %"$matchsucc_99" -"$False_77": ; preds = %entry - %"$c_78" = bitcast %TName_Bool* %c to %CName_False* +"$False_110": ; preds = %"$have_gas_97" + %"$c_111" = bitcast %TName_Bool* %c to %CName_False* + %"$gasrem_112" = load i64, i64* @_gasrem + %"$gascmp_113" = icmp ugt i64 1, %"$gasrem_112" + br i1 %"$gascmp_113", label %"$out_of_gas_114", label %"$have_gas_115" + +"$out_of_gas_114": ; preds = %"$False_110" + call void @_out_of_gas() + br label %"$have_gas_115" + +"$have_gas_115": ; preds = %"$out_of_gas_114", %"$False_110" + %"$consume_116" = sub i64 %"$gasrem_112", 1 + store i64 %"$consume_116", i64* @_gasrem store %Int32 { i32 41 }, %Int32* %x - br label %"$matchsucc_71" - -"$empty_default_74": ; preds = %entry - br label %"$matchsucc_71" - -"$matchsucc_71": ; preds = %"$False_77", %"$True_75", %"$empty_default_74" - %"$create_event__sender_79" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_79" - %"$x_80" = load %Int32, %Int32* %x - call void @"$create_event_48"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_79", %Int32 %"$x_80") - %"$c_tag_82" = getelementptr inbounds %TName_Bool, %TName_Bool* %c, i32 0, i32 0 - %"$c_tag_83" = load i8, i8* %"$c_tag_82" - switch i8 %"$c_tag_83", label %"$empty_default_84" [ - i8 0, label %"$True_85" - i8 1, label %"$False_89" + br label %"$matchsucc_99" + +"$empty_default_102": ; preds = %"$have_gas_97" + br label %"$matchsucc_99" + +"$matchsucc_99": ; preds = %"$have_gas_115", %"$have_gas_108", %"$empty_default_102" + %"$gasrem_117" = load i64, i64* @_gasrem + %"$gascmp_118" = icmp ugt i64 1, %"$gasrem_117" + br i1 %"$gascmp_118", label %"$out_of_gas_119", label %"$have_gas_120" + +"$out_of_gas_119": ; preds = %"$matchsucc_99" + call void @_out_of_gas() + br label %"$have_gas_120" + +"$have_gas_120": ; preds = %"$out_of_gas_119", %"$matchsucc_99" + %"$consume_121" = sub i64 %"$gasrem_117", 1 + store i64 %"$consume_121", i64* @_gasrem + %"$create_event__sender_122" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_122" + %"$x_123" = load %Int32, %Int32* %x + call void @"$create_event_48"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_122", %Int32 %"$x_123") + %"$gasrem_124" = load i64, i64* @_gasrem + %"$gascmp_125" = icmp ugt i64 2, %"$gasrem_124" + br i1 %"$gascmp_125", label %"$out_of_gas_126", label %"$have_gas_127" + +"$out_of_gas_126": ; preds = %"$have_gas_120" + call void @_out_of_gas() + br label %"$have_gas_127" + +"$have_gas_127": ; preds = %"$out_of_gas_126", %"$have_gas_120" + %"$consume_128" = sub i64 %"$gasrem_124", 2 + store i64 %"$consume_128", i64* @_gasrem + %"$c_tag_130" = getelementptr inbounds %TName_Bool, %TName_Bool* %c, i32 0, i32 0 + %"$c_tag_131" = load i8, i8* %"$c_tag_130" + switch i8 %"$c_tag_131", label %"$empty_default_132" [ + i8 0, label %"$True_133" + i8 1, label %"$False_152" ] -"$True_85": ; preds = %"$matchsucc_71" - %"$c_86" = bitcast %TName_Bool* %c to %CName_True* +"$True_133": ; preds = %"$have_gas_127" + %"$c_134" = bitcast %TName_Bool* %c to %CName_True* + %"$gasrem_135" = load i64, i64* @_gasrem + %"$gascmp_136" = icmp ugt i64 1, %"$gasrem_135" + br i1 %"$gascmp_136", label %"$out_of_gas_137", label %"$have_gas_138" + +"$out_of_gas_137": ; preds = %"$True_133" + call void @_out_of_gas() + br label %"$have_gas_138" + +"$have_gas_138": ; preds = %"$out_of_gas_137", %"$True_133" + %"$consume_139" = sub i64 %"$gasrem_135", 1 + store i64 %"$consume_139", i64* @_gasrem %y = alloca %Int32 + %"$gasrem_140" = load i64, i64* @_gasrem + %"$gascmp_141" = icmp ugt i64 1, %"$gasrem_140" + br i1 %"$gascmp_141", label %"$out_of_gas_142", label %"$have_gas_143" + +"$out_of_gas_142": ; preds = %"$have_gas_138" + call void @_out_of_gas() + br label %"$have_gas_143" + +"$have_gas_143": ; preds = %"$out_of_gas_142", %"$have_gas_138" + %"$consume_144" = sub i64 %"$gasrem_140", 1 + store i64 %"$consume_144", i64* @_gasrem store %Int32 { i32 101 }, %Int32* %y - %"$create_event__sender_87" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_87" - %"$y_88" = load %Int32, %Int32* %y - call void @"$create_event_48"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_87", %Int32 %"$y_88") - br label %"$matchsucc_81" - -"$False_89": ; preds = %"$matchsucc_71" - %"$c_90" = bitcast %TName_Bool* %c to %CName_False* + %"$gasrem_145" = load i64, i64* @_gasrem + %"$gascmp_146" = icmp ugt i64 1, %"$gasrem_145" + br i1 %"$gascmp_146", label %"$out_of_gas_147", label %"$have_gas_148" + +"$out_of_gas_147": ; preds = %"$have_gas_143" + call void @_out_of_gas() + br label %"$have_gas_148" + +"$have_gas_148": ; preds = %"$out_of_gas_147", %"$have_gas_143" + %"$consume_149" = sub i64 %"$gasrem_145", 1 + store i64 %"$consume_149", i64* @_gasrem + %"$create_event__sender_150" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_150" + %"$y_151" = load %Int32, %Int32* %y + call void @"$create_event_48"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_150", %Int32 %"$y_151") + br label %"$matchsucc_129" + +"$False_152": ; preds = %"$have_gas_127" + %"$c_153" = bitcast %TName_Bool* %c to %CName_False* + %"$gasrem_154" = load i64, i64* @_gasrem + %"$gascmp_155" = icmp ugt i64 1, %"$gasrem_154" + br i1 %"$gascmp_155", label %"$out_of_gas_156", label %"$have_gas_157" + +"$out_of_gas_156": ; preds = %"$False_152" + call void @_out_of_gas() + br label %"$have_gas_157" + +"$have_gas_157": ; preds = %"$out_of_gas_156", %"$False_152" + %"$consume_158" = sub i64 %"$gasrem_154", 1 + store i64 %"$consume_158", i64* @_gasrem %y1 = alloca %Int32 + %"$gasrem_159" = load i64, i64* @_gasrem + %"$gascmp_160" = icmp ugt i64 1, %"$gasrem_159" + br i1 %"$gascmp_160", label %"$out_of_gas_161", label %"$have_gas_162" + +"$out_of_gas_161": ; preds = %"$have_gas_157" + call void @_out_of_gas() + br label %"$have_gas_162" + +"$have_gas_162": ; preds = %"$out_of_gas_161", %"$have_gas_157" + %"$consume_163" = sub i64 %"$gasrem_159", 1 + store i64 %"$consume_163", i64* @_gasrem store %Int32 { i32 102 }, %Int32* %y1 - %"$create_event__sender_91" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_91" - %"$y_92" = load %Int32, %Int32* %y1 - call void @"$create_event_48"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_91", %Int32 %"$y_92") - br label %"$matchsucc_81" + %"$gasrem_164" = load i64, i64* @_gasrem + %"$gascmp_165" = icmp ugt i64 1, %"$gasrem_164" + br i1 %"$gascmp_165", label %"$out_of_gas_166", label %"$have_gas_167" + +"$out_of_gas_166": ; preds = %"$have_gas_162" + call void @_out_of_gas() + br label %"$have_gas_167" + +"$have_gas_167": ; preds = %"$out_of_gas_166", %"$have_gas_162" + %"$consume_168" = sub i64 %"$gasrem_164", 1 + store i64 %"$consume_168", i64* @_gasrem + %"$create_event__sender_169" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_169" + %"$y_170" = load %Int32, %Int32* %y1 + call void @"$create_event_48"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_169", %Int32 %"$y_170") + br label %"$matchsucc_129" -"$empty_default_84": ; preds = %"$matchsucc_71" - br label %"$matchsucc_81" +"$empty_default_132": ; preds = %"$have_gas_127" + br label %"$matchsucc_129" -"$matchsucc_81": ; preds = %"$False_89", %"$True_85", %"$empty_default_84" +"$matchsucc_129": ; preds = %"$have_gas_167", %"$have_gas_148", %"$empty_default_132" ret void } define void @t1(i8* %0) { entry: - %"$_amount_94" = getelementptr i8, i8* %0, i32 0 - %"$_amount_95" = bitcast i8* %"$_amount_94" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_95" - %"$_sender_96" = getelementptr i8, i8* %0, i32 16 - %"$_sender_97" = bitcast i8* %"$_sender_96" to [20 x i8]* - %"$c_98" = getelementptr i8, i8* %0, i32 36 - %"$c_99" = bitcast i8* %"$c_98" to %TName_Bool** - %c = load %TName_Bool*, %TName_Bool** %"$c_99" - call void @"$t1_69"(%Uint128 %_amount, [20 x i8]* %"$_sender_97", %TName_Bool* %c) + %"$_amount_172" = getelementptr i8, i8* %0, i32 0 + %"$_amount_173" = bitcast i8* %"$_amount_172" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_173" + %"$_sender_174" = getelementptr i8, i8* %0, i32 16 + %"$_sender_175" = bitcast i8* %"$_sender_174" to [20 x i8]* + %"$c_176" = getelementptr i8, i8* %0, i32 36 + %"$c_177" = bitcast i8* %"$c_176" to %TName_Bool** + %c = load %TName_Bool*, %TName_Bool** %"$c_177" + call void @"$t1_87"(%Uint128 %_amount, [20 x i8]* %"$_sender_175", %TName_Bool* %c) ret void } diff --git a/testsuite/contr/match_assign3.output_t1_false.json b/testsuite/contr/match_assign3.output_t1_false.json index 8ae99643..65d66e7e 100644 --- a/testsuite/contr/match_assign3.output_t1_false.json +++ b/testsuite/contr/match_assign3.output_t1_false.json @@ -22,7 +22,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999858", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/match_assign3.output_t1_true.json b/testsuite/contr/match_assign3.output_t1_true.json index ca96b451..809bf0f1 100644 --- a/testsuite/contr/match_assign3.output_t1_true.json +++ b/testsuite/contr/match_assign3.output_t1_true.json @@ -22,7 +22,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999858", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/name_clash1.ll b/testsuite/contr/name_clash1.ll index f6b04637..8b568ca7 100644 --- a/testsuite/contr/name_clash1.ll +++ b/testsuite/contr/name_clash1.ll @@ -83,11 +83,11 @@ target triple = "x86_64-pc-linux-gnu" @"$TyDescr_ADT_Bool_66" = unnamed_addr constant [4 x i8] c"Bool" @_scilla_version = global %Uint32 zeroinitializer @_this_address = global [20 x i8] zeroinitializer -@"$x_68" = unnamed_addr constant [2 x i8] c"x\00" -@"$stringlit_75" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_80" = unnamed_addr constant [4 x i8] c"test" -@"$stringlit_83" = unnamed_addr constant [7 x i8] c"message" -@"$x_96" = unnamed_addr constant [2 x i8] c"x\00" +@"$x_73" = unnamed_addr constant [2 x i8] c"x\00" +@"$stringlit_90" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_95" = unnamed_addr constant [4 x i8] c"test" +@"$stringlit_98" = unnamed_addr constant [7 x i8] c"message" +@"$x_119" = unnamed_addr constant [2 x i8] c"x\00" @_tydescr_table = constant [17 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Event_30", %_TyDescrTy_Typ* @"$TyDescr_Int64_12", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_41", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_36", %_TyDescrTy_Typ* @"$TyDescr_Uint256_22", %_TyDescrTy_Typ* @"$TyDescr_Uint32_10", %_TyDescrTy_Typ* @"$TyDescr_Uint64_14", %_TyDescrTy_Typ* @"$TyDescr_Bnum_26", %_TyDescrTy_Typ* @"$TyDescr_Uint128_18", %_TyDescrTy_Typ* @"$TyDescr_Exception_32", %_TyDescrTy_Typ* @"$TyDescr_String_24", %_TyDescrTy_Typ* @"$TyDescr_Int256_20", %_TyDescrTy_Typ* @"$TyDescr_Int128_16", %_TyDescrTy_Typ* @"$TyDescr_Bystr_34", %_TyDescrTy_Typ* @"$TyDescr_Message_28", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Int32_40", %_TyDescrTy_Typ* @"$TyDescr_Int32_8"] @_tydescr_table_length = constant i32 17 @@ -99,109 +99,253 @@ entry: define void @_init_state() { entry: %"$x_5" = alloca %Int32 + %"$gasrem_67" = load i64, i64* @_gasrem + %"$gascmp_68" = icmp ugt i64 1, %"$gasrem_67" + br i1 %"$gascmp_68", label %"$out_of_gas_69", label %"$have_gas_70" + +"$out_of_gas_69": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_70" + +"$have_gas_70": ; preds = %"$out_of_gas_69", %entry + %"$consume_71" = sub i64 %"$gasrem_67", 1 + store i64 %"$consume_71", i64* @_gasrem store %Int32 { i32 1 }, %Int32* %"$x_5" - %"$execptr_load_67" = load i8*, i8** @_execptr - %"$$x_5_69" = load %Int32, %Int32* %"$x_5" - %"$update_value_70" = alloca %Int32 - store %Int32 %"$$x_5_69", %Int32* %"$update_value_70" - %"$update_value_71" = bitcast %Int32* %"$update_value_70" to i8* - call void @_update_field(i8* %"$execptr_load_67", i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$x_68", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Int32_8", i32 0, i8* null, i8* %"$update_value_71") + %"$execptr_load_72" = load i8*, i8** @_execptr + %"$$x_5_74" = load %Int32, %Int32* %"$x_5" + %"$update_value_75" = alloca %Int32 + store %Int32 %"$$x_5_74", %Int32* %"$update_value_75" + %"$update_value_76" = bitcast %Int32* %"$update_value_75" to i8* + call void @_update_field(i8* %"$execptr_load_72", i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$x_73", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Int32_8", i32 0, i8* null, i8* %"$update_value_76") ret void } +declare void @_out_of_gas() + declare void @_update_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i8*) -define internal void @"$create_event_72"(%Uint128 %_amount, [20 x i8]* %"$_sender_73", %Int32 %m) { +define internal void @"$create_event_77"(%Uint128 %_amount, [20 x i8]* %"$_sender_78", %Int32 %m) { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_73" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_78" + %"$gasrem_79" = load i64, i64* @_gasrem + %"$gascmp_80" = icmp ugt i64 1, %"$gasrem_79" + br i1 %"$gascmp_80", label %"$out_of_gas_81", label %"$have_gas_82" + +"$out_of_gas_81": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_82" + +"$have_gas_82": ; preds = %"$out_of_gas_81", %entry + %"$consume_83" = sub i64 %"$gasrem_79", 1 + store i64 %"$consume_83", i64* @_gasrem %e = alloca i8* - %"$msgobj_74_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_74_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_74_salloc_load", i64 69) - %"$msgobj_74_salloc" = bitcast i8* %"$msgobj_74_salloc_salloc" to [69 x i8]* - %"$msgobj_74" = bitcast [69 x i8]* %"$msgobj_74_salloc" to i8* - store i8 2, i8* %"$msgobj_74" - %"$msgobj_fname_76" = getelementptr i8, i8* %"$msgobj_74", i32 1 - %"$msgobj_fname_77" = bitcast i8* %"$msgobj_fname_76" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_75", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_77" - %"$msgobj_td_78" = getelementptr i8, i8* %"$msgobj_74", i32 17 - %"$msgobj_td_79" = bitcast i8* %"$msgobj_td_78" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_24", %_TyDescrTy_Typ** %"$msgobj_td_79" - %"$msgobj_v_81" = getelementptr i8, i8* %"$msgobj_74", i32 25 - %"$msgobj_v_82" = bitcast i8* %"$msgobj_v_81" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_80", i32 0, i32 0), i32 4 }, %String* %"$msgobj_v_82" - %"$msgobj_fname_84" = getelementptr i8, i8* %"$msgobj_74", i32 41 - %"$msgobj_fname_85" = bitcast i8* %"$msgobj_fname_84" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_83", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_85" - %"$msgobj_td_86" = getelementptr i8, i8* %"$msgobj_74", i32 57 - %"$msgobj_td_87" = bitcast i8* %"$msgobj_td_86" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Int32_8", %_TyDescrTy_Typ** %"$msgobj_td_87" - %"$msgobj_v_88" = getelementptr i8, i8* %"$msgobj_74", i32 65 - %"$msgobj_v_89" = bitcast i8* %"$msgobj_v_88" to %Int32* - store %Int32 %m, %Int32* %"$msgobj_v_89" - store i8* %"$msgobj_74", i8** %e - %"$execptr_load_91" = load i8*, i8** @_execptr - %"$e_92" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_91", %_TyDescrTy_Typ* @"$TyDescr_Event_30", i8* %"$e_92") + %"$gasrem_84" = load i64, i64* @_gasrem + %"$gascmp_85" = icmp ugt i64 1, %"$gasrem_84" + br i1 %"$gascmp_85", label %"$out_of_gas_86", label %"$have_gas_87" + +"$out_of_gas_86": ; preds = %"$have_gas_82" + call void @_out_of_gas() + br label %"$have_gas_87" + +"$have_gas_87": ; preds = %"$out_of_gas_86", %"$have_gas_82" + %"$consume_88" = sub i64 %"$gasrem_84", 1 + store i64 %"$consume_88", i64* @_gasrem + %"$msgobj_89_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_89_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_89_salloc_load", i64 69) + %"$msgobj_89_salloc" = bitcast i8* %"$msgobj_89_salloc_salloc" to [69 x i8]* + %"$msgobj_89" = bitcast [69 x i8]* %"$msgobj_89_salloc" to i8* + store i8 2, i8* %"$msgobj_89" + %"$msgobj_fname_91" = getelementptr i8, i8* %"$msgobj_89", i32 1 + %"$msgobj_fname_92" = bitcast i8* %"$msgobj_fname_91" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_90", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_92" + %"$msgobj_td_93" = getelementptr i8, i8* %"$msgobj_89", i32 17 + %"$msgobj_td_94" = bitcast i8* %"$msgobj_td_93" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_24", %_TyDescrTy_Typ** %"$msgobj_td_94" + %"$msgobj_v_96" = getelementptr i8, i8* %"$msgobj_89", i32 25 + %"$msgobj_v_97" = bitcast i8* %"$msgobj_v_96" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_95", i32 0, i32 0), i32 4 }, %String* %"$msgobj_v_97" + %"$msgobj_fname_99" = getelementptr i8, i8* %"$msgobj_89", i32 41 + %"$msgobj_fname_100" = bitcast i8* %"$msgobj_fname_99" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_98", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_100" + %"$msgobj_td_101" = getelementptr i8, i8* %"$msgobj_89", i32 57 + %"$msgobj_td_102" = bitcast i8* %"$msgobj_td_101" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Int32_8", %_TyDescrTy_Typ** %"$msgobj_td_102" + %"$msgobj_v_103" = getelementptr i8, i8* %"$msgobj_89", i32 65 + %"$msgobj_v_104" = bitcast i8* %"$msgobj_v_103" to %Int32* + store %Int32 %m, %Int32* %"$msgobj_v_104" + store i8* %"$msgobj_89", i8** %e + %"$e_106" = load i8*, i8** %e + %"$_literal_cost_call_108" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_30", i8* %"$e_106") + %"$gasrem_109" = load i64, i64* @_gasrem + %"$gascmp_110" = icmp ugt i64 %"$_literal_cost_call_108", %"$gasrem_109" + br i1 %"$gascmp_110", label %"$out_of_gas_111", label %"$have_gas_112" + +"$out_of_gas_111": ; preds = %"$have_gas_87" + call void @_out_of_gas() + br label %"$have_gas_112" + +"$have_gas_112": ; preds = %"$out_of_gas_111", %"$have_gas_87" + %"$consume_113" = sub i64 %"$gasrem_109", %"$_literal_cost_call_108" + store i64 %"$consume_113", i64* @_gasrem + %"$execptr_load_114" = load i8*, i8** @_execptr + %"$e_115" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_114", %_TyDescrTy_Typ* @"$TyDescr_Event_30", i8* %"$e_115") ret void } declare i8* @_salloc(i8*, i64) +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + declare void @_event(i8*, %_TyDescrTy_Typ*, i8*) -define internal void @"$t1_93"(%Uint128 %_amount, [20 x i8]* %"$_sender_94", %TName_Bool* %c) { +define internal void @"$t1_116"(%Uint128 %_amount, [20 x i8]* %"$_sender_117", %TName_Bool* %c) { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_94" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_117" %"$x_0" = alloca %Int32 - %"$execptr_load_95" = load i8*, i8** @_execptr - %"$$x_0_97" = call i8* @_fetch_field(i8* %"$execptr_load_95", i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$x_96", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Int32_8", i32 0, i8* null, i32 1) - %"$$x_0_98" = bitcast i8* %"$$x_0_97" to %Int32* - %"$$x_0_99" = load %Int32, %Int32* %"$$x_0_98" - store %Int32 %"$$x_0_99", %Int32* %"$x_0" + %"$execptr_load_118" = load i8*, i8** @_execptr + %"$$x_0_120" = call i8* @_fetch_field(i8* %"$execptr_load_118", i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$x_119", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Int32_8", i32 0, i8* null, i32 1) + %"$$x_0_121" = bitcast i8* %"$$x_0_120" to %Int32* + %"$$x_0_122" = load %Int32, %Int32* %"$$x_0_121" + store %Int32 %"$$x_0_122", %Int32* %"$x_0" + %"$_literal_cost_$x_0_123" = alloca %Int32 + %"$$x_0_124" = load %Int32, %Int32* %"$x_0" + store %Int32 %"$$x_0_124", %Int32* %"$_literal_cost_$x_0_123" + %"$$_literal_cost_$x_0_123_125" = bitcast %Int32* %"$_literal_cost_$x_0_123" to i8* + %"$_literal_cost_call_126" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Int32_8", i8* %"$$_literal_cost_$x_0_123_125") + %"$gasadd_127" = add i64 %"$_literal_cost_call_126", 0 + %"$gasrem_128" = load i64, i64* @_gasrem + %"$gascmp_129" = icmp ugt i64 %"$gasadd_127", %"$gasrem_128" + br i1 %"$gascmp_129", label %"$out_of_gas_130", label %"$have_gas_131" + +"$out_of_gas_130": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_131" + +"$have_gas_131": ; preds = %"$out_of_gas_130", %entry + %"$consume_132" = sub i64 %"$gasrem_128", %"$gasadd_127" + store i64 %"$consume_132", i64* @_gasrem + %"$gasrem_133" = load i64, i64* @_gasrem + %"$gascmp_134" = icmp ugt i64 1, %"$gasrem_133" + br i1 %"$gascmp_134", label %"$out_of_gas_135", label %"$have_gas_136" + +"$out_of_gas_135": ; preds = %"$have_gas_131" + call void @_out_of_gas() + br label %"$have_gas_136" + +"$have_gas_136": ; preds = %"$out_of_gas_135", %"$have_gas_131" + %"$consume_137" = sub i64 %"$gasrem_133", 1 + store i64 %"$consume_137", i64* @_gasrem %"$x_1" = alloca %TName_List_Int32* - %"$adtval_100_load" = load i8*, i8** @_execptr - %"$adtval_100_salloc" = call i8* @_salloc(i8* %"$adtval_100_load", i64 1) - %"$adtval_100" = bitcast i8* %"$adtval_100_salloc" to %CName_Nil_Int32* - %"$adtgep_101" = getelementptr inbounds %CName_Nil_Int32, %CName_Nil_Int32* %"$adtval_100", i32 0, i32 0 - store i8 1, i8* %"$adtgep_101" - %"$adtptr_102" = bitcast %CName_Nil_Int32* %"$adtval_100" to %TName_List_Int32* - store %TName_List_Int32* %"$adtptr_102", %TName_List_Int32** %"$x_1" + %"$gasrem_138" = load i64, i64* @_gasrem + %"$gascmp_139" = icmp ugt i64 1, %"$gasrem_138" + br i1 %"$gascmp_139", label %"$out_of_gas_140", label %"$have_gas_141" + +"$out_of_gas_140": ; preds = %"$have_gas_136" + call void @_out_of_gas() + br label %"$have_gas_141" + +"$have_gas_141": ; preds = %"$out_of_gas_140", %"$have_gas_136" + %"$consume_142" = sub i64 %"$gasrem_138", 1 + store i64 %"$consume_142", i64* @_gasrem + %"$adtval_143_load" = load i8*, i8** @_execptr + %"$adtval_143_salloc" = call i8* @_salloc(i8* %"$adtval_143_load", i64 1) + %"$adtval_143" = bitcast i8* %"$adtval_143_salloc" to %CName_Nil_Int32* + %"$adtgep_144" = getelementptr inbounds %CName_Nil_Int32, %CName_Nil_Int32* %"$adtval_143", i32 0, i32 0 + store i8 1, i8* %"$adtgep_144" + %"$adtptr_145" = bitcast %CName_Nil_Int32* %"$adtval_143" to %TName_List_Int32* + store %TName_List_Int32* %"$adtptr_145", %TName_List_Int32** %"$x_1" + %"$gasrem_146" = load i64, i64* @_gasrem + %"$gascmp_147" = icmp ugt i64 1, %"$gasrem_146" + br i1 %"$gascmp_147", label %"$out_of_gas_148", label %"$have_gas_149" + +"$out_of_gas_148": ; preds = %"$have_gas_141" + call void @_out_of_gas() + br label %"$have_gas_149" + +"$have_gas_149": ; preds = %"$out_of_gas_148", %"$have_gas_141" + %"$consume_150" = sub i64 %"$gasrem_146", 1 + store i64 %"$consume_150", i64* @_gasrem %"$x_3" = alloca %Int32 - %"$$x_1_104" = load %TName_List_Int32*, %TName_List_Int32** %"$x_1" - %"$$x_1_tag_105" = getelementptr inbounds %TName_List_Int32, %TName_List_Int32* %"$$x_1_104", i32 0, i32 0 - %"$$x_1_tag_106" = load i8, i8* %"$$x_1_tag_105" - switch i8 %"$$x_1_tag_106", label %"$empty_default_107" [ - i8 0, label %"$Cons_108" - i8 1, label %"$Nil_115" + %"$gasrem_151" = load i64, i64* @_gasrem + %"$gascmp_152" = icmp ugt i64 2, %"$gasrem_151" + br i1 %"$gascmp_152", label %"$out_of_gas_153", label %"$have_gas_154" + +"$out_of_gas_153": ; preds = %"$have_gas_149" + call void @_out_of_gas() + br label %"$have_gas_154" + +"$have_gas_154": ; preds = %"$out_of_gas_153", %"$have_gas_149" + %"$consume_155" = sub i64 %"$gasrem_151", 2 + store i64 %"$consume_155", i64* @_gasrem + %"$$x_1_157" = load %TName_List_Int32*, %TName_List_Int32** %"$x_1" + %"$$x_1_tag_158" = getelementptr inbounds %TName_List_Int32, %TName_List_Int32* %"$$x_1_157", i32 0, i32 0 + %"$$x_1_tag_159" = load i8, i8* %"$$x_1_tag_158" + switch i8 %"$$x_1_tag_159", label %"$empty_default_160" [ + i8 0, label %"$Cons_161" + i8 1, label %"$Nil_173" ] -"$Cons_108": ; preds = %entry - %"$$x_1_109" = bitcast %TName_List_Int32* %"$$x_1_104" to %CName_Cons_Int32* - %"$$x_2_gep_110" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$$x_1_109", i32 0, i32 1 - %"$$x_2_load_111" = load %Int32, %Int32* %"$$x_2_gep_110" +"$Cons_161": ; preds = %"$have_gas_154" + %"$$x_1_162" = bitcast %TName_List_Int32* %"$$x_1_157" to %CName_Cons_Int32* + %"$$x_2_gep_163" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$$x_1_162", i32 0, i32 1 + %"$$x_2_load_164" = load %Int32, %Int32* %"$$x_2_gep_163" %"$x_2" = alloca %Int32 - store %Int32 %"$$x_2_load_111", %Int32* %"$x_2" - %"$$$x_1_4_gep_112" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$$x_1_109", i32 0, i32 2 - %"$$$x_1_4_load_113" = load %TName_List_Int32*, %TName_List_Int32** %"$$$x_1_4_gep_112" + store %Int32 %"$$x_2_load_164", %Int32* %"$x_2" + %"$$$x_1_4_gep_165" = getelementptr inbounds %CName_Cons_Int32, %CName_Cons_Int32* %"$$x_1_162", i32 0, i32 2 + %"$$$x_1_4_load_166" = load %TName_List_Int32*, %TName_List_Int32** %"$$$x_1_4_gep_165" %"$$x_1_4" = alloca %TName_List_Int32* - store %TName_List_Int32* %"$$$x_1_4_load_113", %TName_List_Int32** %"$$x_1_4" - %"$$x_2_114" = load %Int32, %Int32* %"$x_2" - store %Int32 %"$$x_2_114", %Int32* %"$x_3" - br label %"$matchsucc_103" + store %TName_List_Int32* %"$$$x_1_4_load_166", %TName_List_Int32** %"$$x_1_4" + %"$gasrem_167" = load i64, i64* @_gasrem + %"$gascmp_168" = icmp ugt i64 1, %"$gasrem_167" + br i1 %"$gascmp_168", label %"$out_of_gas_169", label %"$have_gas_170" -"$Nil_115": ; preds = %entry - %"$$x_1_116" = bitcast %TName_List_Int32* %"$$x_1_104" to %CName_Nil_Int32* +"$out_of_gas_169": ; preds = %"$Cons_161" + call void @_out_of_gas() + br label %"$have_gas_170" + +"$have_gas_170": ; preds = %"$out_of_gas_169", %"$Cons_161" + %"$consume_171" = sub i64 %"$gasrem_167", 1 + store i64 %"$consume_171", i64* @_gasrem + %"$$x_2_172" = load %Int32, %Int32* %"$x_2" + store %Int32 %"$$x_2_172", %Int32* %"$x_3" + br label %"$matchsucc_156" + +"$Nil_173": ; preds = %"$have_gas_154" + %"$$x_1_174" = bitcast %TName_List_Int32* %"$$x_1_157" to %CName_Nil_Int32* + %"$gasrem_175" = load i64, i64* @_gasrem + %"$gascmp_176" = icmp ugt i64 1, %"$gasrem_175" + br i1 %"$gascmp_176", label %"$out_of_gas_177", label %"$have_gas_178" + +"$out_of_gas_177": ; preds = %"$Nil_173" + call void @_out_of_gas() + br label %"$have_gas_178" + +"$have_gas_178": ; preds = %"$out_of_gas_177", %"$Nil_173" + %"$consume_179" = sub i64 %"$gasrem_175", 1 + store i64 %"$consume_179", i64* @_gasrem store %Int32 { i32 2 }, %Int32* %"$x_3" - br label %"$matchsucc_103" + br label %"$matchsucc_156" + +"$empty_default_160": ; preds = %"$have_gas_154" + br label %"$matchsucc_156" + +"$matchsucc_156": ; preds = %"$have_gas_178", %"$have_gas_170", %"$empty_default_160" + %"$gasrem_180" = load i64, i64* @_gasrem + %"$gascmp_181" = icmp ugt i64 1, %"$gasrem_180" + br i1 %"$gascmp_181", label %"$out_of_gas_182", label %"$have_gas_183" -"$empty_default_107": ; preds = %entry - br label %"$matchsucc_103" +"$out_of_gas_182": ; preds = %"$matchsucc_156" + call void @_out_of_gas() + br label %"$have_gas_183" -"$matchsucc_103": ; preds = %"$Nil_115", %"$Cons_108", %"$empty_default_107" - %"$create_event__sender_117" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_117" - %"$$x_3_118" = load %Int32, %Int32* %"$x_3" - call void @"$create_event_72"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_117", %Int32 %"$$x_3_118") +"$have_gas_183": ; preds = %"$out_of_gas_182", %"$matchsucc_156" + %"$consume_184" = sub i64 %"$gasrem_180", 1 + store i64 %"$consume_184", i64* @_gasrem + %"$create_event__sender_185" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_185" + %"$$x_3_186" = load %Int32, %Int32* %"$x_3" + call void @"$create_event_77"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_185", %Int32 %"$$x_3_186") ret void } @@ -209,14 +353,14 @@ declare i8* @_fetch_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i32) define void @t1(i8* %0) { entry: - %"$_amount_120" = getelementptr i8, i8* %0, i32 0 - %"$_amount_121" = bitcast i8* %"$_amount_120" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_121" - %"$_sender_122" = getelementptr i8, i8* %0, i32 16 - %"$_sender_123" = bitcast i8* %"$_sender_122" to [20 x i8]* - %"$c_124" = getelementptr i8, i8* %0, i32 36 - %"$c_125" = bitcast i8* %"$c_124" to %TName_Bool** - %c = load %TName_Bool*, %TName_Bool** %"$c_125" - call void @"$t1_93"(%Uint128 %_amount, [20 x i8]* %"$_sender_123", %TName_Bool* %c) + %"$_amount_188" = getelementptr i8, i8* %0, i32 0 + %"$_amount_189" = bitcast i8* %"$_amount_188" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_189" + %"$_sender_190" = getelementptr i8, i8* %0, i32 16 + %"$_sender_191" = bitcast i8* %"$_sender_190" to [20 x i8]* + %"$c_192" = getelementptr i8, i8* %0, i32 36 + %"$c_193" = bitcast i8* %"$c_192" to %TName_Bool** + %c = load %TName_Bool*, %TName_Bool** %"$c_193" + call void @"$t1_116"(%Uint128 %_amount, [20 x i8]* %"$_sender_191", %TName_Bool* %c) ret void } diff --git a/testsuite/contr/name_clash1.output_t1_false.json b/testsuite/contr/name_clash1.output_t1_false.json index e618fd53..66748225 100644 --- a/testsuite/contr/name_clash1.output_t1_false.json +++ b/testsuite/contr/name_clash1.output_t1_false.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999923", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/name_clash1.output_t1_true.json b/testsuite/contr/name_clash1.output_t1_true.json index e618fd53..66748225 100644 --- a/testsuite/contr/name_clash1.output_t1_true.json +++ b/testsuite/contr/name_clash1.output_t1_true.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999923", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/name_clash2.ll b/testsuite/contr/name_clash2.ll index 4b462652..353b0dbd 100644 --- a/testsuite/contr/name_clash2.ll +++ b/testsuite/contr/name_clash2.ll @@ -67,11 +67,11 @@ target triple = "x86_64-pc-linux-gnu" @"$TyDescr_ADT_Bool_50" = unnamed_addr constant [4 x i8] c"Bool" @_scilla_version = global %Uint32 zeroinitializer @_this_address = global [20 x i8] zeroinitializer -@"$x_52" = unnamed_addr constant [2 x i8] c"x\00" -@"$stringlit_59" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_64" = unnamed_addr constant [4 x i8] c"test" -@"$stringlit_67" = unnamed_addr constant [7 x i8] c"message" -@"$x_80" = unnamed_addr constant [2 x i8] c"x\00" +@"$x_57" = unnamed_addr constant [2 x i8] c"x\00" +@"$stringlit_74" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_79" = unnamed_addr constant [4 x i8] c"test" +@"$stringlit_82" = unnamed_addr constant [7 x i8] c"message" +@"$x_103" = unnamed_addr constant [2 x i8] c"x\00" @_tydescr_table = constant [16 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Event_27", %_TyDescrTy_Typ* @"$TyDescr_Int64_9", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_37", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_33", %_TyDescrTy_Typ* @"$TyDescr_Uint256_19", %_TyDescrTy_Typ* @"$TyDescr_Uint32_7", %_TyDescrTy_Typ* @"$TyDescr_Uint64_11", %_TyDescrTy_Typ* @"$TyDescr_Bnum_23", %_TyDescrTy_Typ* @"$TyDescr_Uint128_15", %_TyDescrTy_Typ* @"$TyDescr_Exception_29", %_TyDescrTy_Typ* @"$TyDescr_String_21", %_TyDescrTy_Typ* @"$TyDescr_Int256_17", %_TyDescrTy_Typ* @"$TyDescr_Int128_13", %_TyDescrTy_Typ* @"$TyDescr_Bystr_31", %_TyDescrTy_Typ* @"$TyDescr_Message_25", %_TyDescrTy_Typ* @"$TyDescr_Int32_5"] @_tydescr_table_length = constant i32 16 @@ -83,79 +83,212 @@ entry: define void @_init_state() { entry: %"$x_2" = alloca %Int32 + %"$gasrem_51" = load i64, i64* @_gasrem + %"$gascmp_52" = icmp ugt i64 1, %"$gasrem_51" + br i1 %"$gascmp_52", label %"$out_of_gas_53", label %"$have_gas_54" + +"$out_of_gas_53": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_54" + +"$have_gas_54": ; preds = %"$out_of_gas_53", %entry + %"$consume_55" = sub i64 %"$gasrem_51", 1 + store i64 %"$consume_55", i64* @_gasrem store %Int32 { i32 1 }, %Int32* %"$x_2" - %"$execptr_load_51" = load i8*, i8** @_execptr - %"$$x_2_53" = load %Int32, %Int32* %"$x_2" - %"$update_value_54" = alloca %Int32 - store %Int32 %"$$x_2_53", %Int32* %"$update_value_54" - %"$update_value_55" = bitcast %Int32* %"$update_value_54" to i8* - call void @_update_field(i8* %"$execptr_load_51", i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$x_52", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Int32_5", i32 0, i8* null, i8* %"$update_value_55") + %"$execptr_load_56" = load i8*, i8** @_execptr + %"$$x_2_58" = load %Int32, %Int32* %"$x_2" + %"$update_value_59" = alloca %Int32 + store %Int32 %"$$x_2_58", %Int32* %"$update_value_59" + %"$update_value_60" = bitcast %Int32* %"$update_value_59" to i8* + call void @_update_field(i8* %"$execptr_load_56", i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$x_57", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Int32_5", i32 0, i8* null, i8* %"$update_value_60") ret void } +declare void @_out_of_gas() + declare void @_update_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i8*) -define internal void @"$create_event_56"(%Uint128 %_amount, [20 x i8]* %"$_sender_57", %Int32 %m) { +define internal void @"$create_event_61"(%Uint128 %_amount, [20 x i8]* %"$_sender_62", %Int32 %m) { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_57" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_62" + %"$gasrem_63" = load i64, i64* @_gasrem + %"$gascmp_64" = icmp ugt i64 1, %"$gasrem_63" + br i1 %"$gascmp_64", label %"$out_of_gas_65", label %"$have_gas_66" + +"$out_of_gas_65": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_66" + +"$have_gas_66": ; preds = %"$out_of_gas_65", %entry + %"$consume_67" = sub i64 %"$gasrem_63", 1 + store i64 %"$consume_67", i64* @_gasrem %e = alloca i8* - %"$msgobj_58_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_58_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_58_salloc_load", i64 69) - %"$msgobj_58_salloc" = bitcast i8* %"$msgobj_58_salloc_salloc" to [69 x i8]* - %"$msgobj_58" = bitcast [69 x i8]* %"$msgobj_58_salloc" to i8* - store i8 2, i8* %"$msgobj_58" - %"$msgobj_fname_60" = getelementptr i8, i8* %"$msgobj_58", i32 1 - %"$msgobj_fname_61" = bitcast i8* %"$msgobj_fname_60" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_59", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_61" - %"$msgobj_td_62" = getelementptr i8, i8* %"$msgobj_58", i32 17 - %"$msgobj_td_63" = bitcast i8* %"$msgobj_td_62" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_21", %_TyDescrTy_Typ** %"$msgobj_td_63" - %"$msgobj_v_65" = getelementptr i8, i8* %"$msgobj_58", i32 25 - %"$msgobj_v_66" = bitcast i8* %"$msgobj_v_65" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_64", i32 0, i32 0), i32 4 }, %String* %"$msgobj_v_66" - %"$msgobj_fname_68" = getelementptr i8, i8* %"$msgobj_58", i32 41 - %"$msgobj_fname_69" = bitcast i8* %"$msgobj_fname_68" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_67", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_69" - %"$msgobj_td_70" = getelementptr i8, i8* %"$msgobj_58", i32 57 - %"$msgobj_td_71" = bitcast i8* %"$msgobj_td_70" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Int32_5", %_TyDescrTy_Typ** %"$msgobj_td_71" - %"$msgobj_v_72" = getelementptr i8, i8* %"$msgobj_58", i32 65 - %"$msgobj_v_73" = bitcast i8* %"$msgobj_v_72" to %Int32* - store %Int32 %m, %Int32* %"$msgobj_v_73" - store i8* %"$msgobj_58", i8** %e - %"$execptr_load_75" = load i8*, i8** @_execptr - %"$e_76" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_75", %_TyDescrTy_Typ* @"$TyDescr_Event_27", i8* %"$e_76") + %"$gasrem_68" = load i64, i64* @_gasrem + %"$gascmp_69" = icmp ugt i64 1, %"$gasrem_68" + br i1 %"$gascmp_69", label %"$out_of_gas_70", label %"$have_gas_71" + +"$out_of_gas_70": ; preds = %"$have_gas_66" + call void @_out_of_gas() + br label %"$have_gas_71" + +"$have_gas_71": ; preds = %"$out_of_gas_70", %"$have_gas_66" + %"$consume_72" = sub i64 %"$gasrem_68", 1 + store i64 %"$consume_72", i64* @_gasrem + %"$msgobj_73_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_73_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_73_salloc_load", i64 69) + %"$msgobj_73_salloc" = bitcast i8* %"$msgobj_73_salloc_salloc" to [69 x i8]* + %"$msgobj_73" = bitcast [69 x i8]* %"$msgobj_73_salloc" to i8* + store i8 2, i8* %"$msgobj_73" + %"$msgobj_fname_75" = getelementptr i8, i8* %"$msgobj_73", i32 1 + %"$msgobj_fname_76" = bitcast i8* %"$msgobj_fname_75" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_74", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_76" + %"$msgobj_td_77" = getelementptr i8, i8* %"$msgobj_73", i32 17 + %"$msgobj_td_78" = bitcast i8* %"$msgobj_td_77" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_21", %_TyDescrTy_Typ** %"$msgobj_td_78" + %"$msgobj_v_80" = getelementptr i8, i8* %"$msgobj_73", i32 25 + %"$msgobj_v_81" = bitcast i8* %"$msgobj_v_80" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_79", i32 0, i32 0), i32 4 }, %String* %"$msgobj_v_81" + %"$msgobj_fname_83" = getelementptr i8, i8* %"$msgobj_73", i32 41 + %"$msgobj_fname_84" = bitcast i8* %"$msgobj_fname_83" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_82", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_84" + %"$msgobj_td_85" = getelementptr i8, i8* %"$msgobj_73", i32 57 + %"$msgobj_td_86" = bitcast i8* %"$msgobj_td_85" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Int32_5", %_TyDescrTy_Typ** %"$msgobj_td_86" + %"$msgobj_v_87" = getelementptr i8, i8* %"$msgobj_73", i32 65 + %"$msgobj_v_88" = bitcast i8* %"$msgobj_v_87" to %Int32* + store %Int32 %m, %Int32* %"$msgobj_v_88" + store i8* %"$msgobj_73", i8** %e + %"$e_90" = load i8*, i8** %e + %"$_literal_cost_call_92" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_27", i8* %"$e_90") + %"$gasrem_93" = load i64, i64* @_gasrem + %"$gascmp_94" = icmp ugt i64 %"$_literal_cost_call_92", %"$gasrem_93" + br i1 %"$gascmp_94", label %"$out_of_gas_95", label %"$have_gas_96" + +"$out_of_gas_95": ; preds = %"$have_gas_71" + call void @_out_of_gas() + br label %"$have_gas_96" + +"$have_gas_96": ; preds = %"$out_of_gas_95", %"$have_gas_71" + %"$consume_97" = sub i64 %"$gasrem_93", %"$_literal_cost_call_92" + store i64 %"$consume_97", i64* @_gasrem + %"$execptr_load_98" = load i8*, i8** @_execptr + %"$e_99" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_98", %_TyDescrTy_Typ* @"$TyDescr_Event_27", i8* %"$e_99") ret void } declare i8* @_salloc(i8*, i64) +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + declare void @_event(i8*, %_TyDescrTy_Typ*, i8*) -define internal void @"$t1_77"(%Uint128 %_amount, [20 x i8]* %"$_sender_78", %TName_Bool* %c) { +define internal void @"$t1_100"(%Uint128 %_amount, [20 x i8]* %"$_sender_101", %TName_Bool* %c) { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_78" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_101" %"$x_0" = alloca %Int32 - %"$execptr_load_79" = load i8*, i8** @_execptr - %"$$x_0_81" = call i8* @_fetch_field(i8* %"$execptr_load_79", i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$x_80", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Int32_5", i32 0, i8* null, i32 1) - %"$$x_0_82" = bitcast i8* %"$$x_0_81" to %Int32* - %"$$x_0_83" = load %Int32, %Int32* %"$$x_0_82" - store %Int32 %"$$x_0_83", %Int32* %"$x_0" + %"$execptr_load_102" = load i8*, i8** @_execptr + %"$$x_0_104" = call i8* @_fetch_field(i8* %"$execptr_load_102", i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$x_103", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Int32_5", i32 0, i8* null, i32 1) + %"$$x_0_105" = bitcast i8* %"$$x_0_104" to %Int32* + %"$$x_0_106" = load %Int32, %Int32* %"$$x_0_105" + store %Int32 %"$$x_0_106", %Int32* %"$x_0" + %"$_literal_cost_$x_0_107" = alloca %Int32 + %"$$x_0_108" = load %Int32, %Int32* %"$x_0" + store %Int32 %"$$x_0_108", %Int32* %"$_literal_cost_$x_0_107" + %"$$_literal_cost_$x_0_107_109" = bitcast %Int32* %"$_literal_cost_$x_0_107" to i8* + %"$_literal_cost_call_110" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Int32_5", i8* %"$$_literal_cost_$x_0_107_109") + %"$gasadd_111" = add i64 %"$_literal_cost_call_110", 0 + %"$gasrem_112" = load i64, i64* @_gasrem + %"$gascmp_113" = icmp ugt i64 %"$gasadd_111", %"$gasrem_112" + br i1 %"$gascmp_113", label %"$out_of_gas_114", label %"$have_gas_115" + +"$out_of_gas_114": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_115" + +"$have_gas_115": ; preds = %"$out_of_gas_114", %entry + %"$consume_116" = sub i64 %"$gasrem_112", %"$gasadd_111" + store i64 %"$consume_116", i64* @_gasrem + %"$gasrem_117" = load i64, i64* @_gasrem + %"$gascmp_118" = icmp ugt i64 1, %"$gasrem_117" + br i1 %"$gascmp_118", label %"$out_of_gas_119", label %"$have_gas_120" + +"$out_of_gas_119": ; preds = %"$have_gas_115" + call void @_out_of_gas() + br label %"$have_gas_120" + +"$have_gas_120": ; preds = %"$out_of_gas_119", %"$have_gas_115" + %"$consume_121" = sub i64 %"$gasrem_117", 1 + store i64 %"$consume_121", i64* @_gasrem %y = alloca %Int32 + %"$gasrem_122" = load i64, i64* @_gasrem + %"$gascmp_123" = icmp ugt i64 1, %"$gasrem_122" + br i1 %"$gascmp_123", label %"$out_of_gas_124", label %"$have_gas_125" + +"$out_of_gas_124": ; preds = %"$have_gas_120" + call void @_out_of_gas() + br label %"$have_gas_125" + +"$have_gas_125": ; preds = %"$out_of_gas_124", %"$have_gas_120" + %"$consume_126" = sub i64 %"$gasrem_122", 1 + store i64 %"$consume_126", i64* @_gasrem %"$x_1" = alloca %Int32 + %"$gasrem_127" = load i64, i64* @_gasrem + %"$gascmp_128" = icmp ugt i64 1, %"$gasrem_127" + br i1 %"$gascmp_128", label %"$out_of_gas_129", label %"$have_gas_130" + +"$out_of_gas_129": ; preds = %"$have_gas_125" + call void @_out_of_gas() + br label %"$have_gas_130" + +"$have_gas_130": ; preds = %"$out_of_gas_129", %"$have_gas_125" + %"$consume_131" = sub i64 %"$gasrem_127", 1 + store i64 %"$consume_131", i64* @_gasrem store %Int32 zeroinitializer, %Int32* %"$x_1" - %"$$x_1_84" = load %Int32, %Int32* %"$x_1" - store %Int32 %"$$x_1_84", %Int32* %y + %"$gasrem_132" = load i64, i64* @_gasrem + %"$gascmp_133" = icmp ugt i64 1, %"$gasrem_132" + br i1 %"$gascmp_133", label %"$out_of_gas_134", label %"$have_gas_135" + +"$out_of_gas_134": ; preds = %"$have_gas_130" + call void @_out_of_gas() + br label %"$have_gas_135" + +"$have_gas_135": ; preds = %"$out_of_gas_134", %"$have_gas_130" + %"$consume_136" = sub i64 %"$gasrem_132", 1 + store i64 %"$consume_136", i64* @_gasrem + %"$$x_1_137" = load %Int32, %Int32* %"$x_1" + store %Int32 %"$$x_1_137", %Int32* %y + %"$gasrem_138" = load i64, i64* @_gasrem + %"$gascmp_139" = icmp ugt i64 1, %"$gasrem_138" + br i1 %"$gascmp_139", label %"$out_of_gas_140", label %"$have_gas_141" + +"$out_of_gas_140": ; preds = %"$have_gas_135" + call void @_out_of_gas() + br label %"$have_gas_141" + +"$have_gas_141": ; preds = %"$out_of_gas_140", %"$have_gas_135" + %"$consume_142" = sub i64 %"$gasrem_138", 1 + store i64 %"$consume_142", i64* @_gasrem %z = alloca %Int32 - %"$$x_0_85" = load %Int32, %Int32* %"$x_0" - %"$y_86" = load %Int32, %Int32* %y - %"$add_call_87" = call %Int32 @_add_Int32(%Int32 %"$$x_0_85", %Int32 %"$y_86") - store %Int32 %"$add_call_87", %Int32* %z - %"$create_event__sender_88" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_88" - %"$z_89" = load %Int32, %Int32* %z - call void @"$create_event_56"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_88", %Int32 %"$z_89") + %"$$x_0_143" = load %Int32, %Int32* %"$x_0" + %"$y_144" = load %Int32, %Int32* %y + %"$add_call_145" = call %Int32 @_add_Int32(%Int32 %"$$x_0_143", %Int32 %"$y_144") + store %Int32 %"$add_call_145", %Int32* %z + %"$gasrem_146" = load i64, i64* @_gasrem + %"$gascmp_147" = icmp ugt i64 1, %"$gasrem_146" + br i1 %"$gascmp_147", label %"$out_of_gas_148", label %"$have_gas_149" + +"$out_of_gas_148": ; preds = %"$have_gas_141" + call void @_out_of_gas() + br label %"$have_gas_149" + +"$have_gas_149": ; preds = %"$out_of_gas_148", %"$have_gas_141" + %"$consume_150" = sub i64 %"$gasrem_146", 1 + store i64 %"$consume_150", i64* @_gasrem + %"$create_event__sender_151" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_151" + %"$z_152" = load %Int32, %Int32* %z + call void @"$create_event_61"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_151", %Int32 %"$z_152") ret void } @@ -165,14 +298,14 @@ declare %Int32 @_add_Int32(%Int32, %Int32) define void @t1(i8* %0) { entry: - %"$_amount_91" = getelementptr i8, i8* %0, i32 0 - %"$_amount_92" = bitcast i8* %"$_amount_91" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_92" - %"$_sender_93" = getelementptr i8, i8* %0, i32 16 - %"$_sender_94" = bitcast i8* %"$_sender_93" to [20 x i8]* - %"$c_95" = getelementptr i8, i8* %0, i32 36 - %"$c_96" = bitcast i8* %"$c_95" to %TName_Bool** - %c = load %TName_Bool*, %TName_Bool** %"$c_96" - call void @"$t1_77"(%Uint128 %_amount, [20 x i8]* %"$_sender_94", %TName_Bool* %c) + %"$_amount_154" = getelementptr i8, i8* %0, i32 0 + %"$_amount_155" = bitcast i8* %"$_amount_154" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_155" + %"$_sender_156" = getelementptr i8, i8* %0, i32 16 + %"$_sender_157" = bitcast i8* %"$_sender_156" to [20 x i8]* + %"$c_158" = getelementptr i8, i8* %0, i32 36 + %"$c_159" = bitcast i8* %"$c_158" to %TName_Bool** + %c = load %TName_Bool*, %TName_Bool** %"$c_159" + call void @"$t1_100"(%Uint128 %_amount, [20 x i8]* %"$_sender_157", %TName_Bool* %c) ret void } diff --git a/testsuite/contr/name_clash2.output_t1_false.json b/testsuite/contr/name_clash2.output_t1_false.json index 35121a52..86bf656c 100644 --- a/testsuite/contr/name_clash2.output_t1_false.json +++ b/testsuite/contr/name_clash2.output_t1_false.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999924", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/name_clash2.output_t1_true.json b/testsuite/contr/name_clash2.output_t1_true.json index 35121a52..86bf656c 100644 --- a/testsuite/contr/name_clash2.output_t1_true.json +++ b/testsuite/contr/name_clash2.output_t1_true.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999924", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/pm-empty.ll b/testsuite/contr/pm-empty.ll index 3cc83248..c074432a 100644 --- a/testsuite/contr/pm-empty.ll +++ b/testsuite/contr/pm-empty.ll @@ -67,9 +67,9 @@ target triple = "x86_64-pc-linux-gnu" @"$TyDescr_ADT_Bool_47" = unnamed_addr constant [4 x i8] c"Bool" @_scilla_version = global %Uint32 zeroinitializer @_this_address = global [20 x i8] zeroinitializer -@"$stringlit_51" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_56" = unnamed_addr constant [4 x i8] c"test" -@"$stringlit_59" = unnamed_addr constant [7 x i8] c"message" +@"$stringlit_61" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_66" = unnamed_addr constant [4 x i8] c"test" +@"$stringlit_69" = unnamed_addr constant [7 x i8] c"message" @_tydescr_table = constant [16 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Event_24", %_TyDescrTy_Typ* @"$TyDescr_Int64_6", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_34", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_30", %_TyDescrTy_Typ* @"$TyDescr_Uint256_16", %_TyDescrTy_Typ* @"$TyDescr_Uint32_4", %_TyDescrTy_Typ* @"$TyDescr_Uint64_8", %_TyDescrTy_Typ* @"$TyDescr_Bnum_20", %_TyDescrTy_Typ* @"$TyDescr_Uint128_12", %_TyDescrTy_Typ* @"$TyDescr_Exception_26", %_TyDescrTy_Typ* @"$TyDescr_String_18", %_TyDescrTy_Typ* @"$TyDescr_Int256_14", %_TyDescrTy_Typ* @"$TyDescr_Int128_10", %_TyDescrTy_Typ* @"$TyDescr_Bystr_28", %_TyDescrTy_Typ* @"$TyDescr_Message_22", %_TyDescrTy_Typ* @"$TyDescr_Int32_2"] @_tydescr_table_length = constant i32 16 @@ -86,82 +86,165 @@ entry: define internal void @"$create_event_48"(%Uint128 %_amount, [20 x i8]* %"$_sender_49", %Int32 %m) { entry: %_sender = load [20 x i8], [20 x i8]* %"$_sender_49" + %"$gasrem_50" = load i64, i64* @_gasrem + %"$gascmp_51" = icmp ugt i64 1, %"$gasrem_50" + br i1 %"$gascmp_51", label %"$out_of_gas_52", label %"$have_gas_53" + +"$out_of_gas_52": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_53" + +"$have_gas_53": ; preds = %"$out_of_gas_52", %entry + %"$consume_54" = sub i64 %"$gasrem_50", 1 + store i64 %"$consume_54", i64* @_gasrem %e = alloca i8* - %"$msgobj_50_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_50_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_50_salloc_load", i64 69) - %"$msgobj_50_salloc" = bitcast i8* %"$msgobj_50_salloc_salloc" to [69 x i8]* - %"$msgobj_50" = bitcast [69 x i8]* %"$msgobj_50_salloc" to i8* - store i8 2, i8* %"$msgobj_50" - %"$msgobj_fname_52" = getelementptr i8, i8* %"$msgobj_50", i32 1 - %"$msgobj_fname_53" = bitcast i8* %"$msgobj_fname_52" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_51", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_53" - %"$msgobj_td_54" = getelementptr i8, i8* %"$msgobj_50", i32 17 - %"$msgobj_td_55" = bitcast i8* %"$msgobj_td_54" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_18", %_TyDescrTy_Typ** %"$msgobj_td_55" - %"$msgobj_v_57" = getelementptr i8, i8* %"$msgobj_50", i32 25 - %"$msgobj_v_58" = bitcast i8* %"$msgobj_v_57" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_56", i32 0, i32 0), i32 4 }, %String* %"$msgobj_v_58" - %"$msgobj_fname_60" = getelementptr i8, i8* %"$msgobj_50", i32 41 - %"$msgobj_fname_61" = bitcast i8* %"$msgobj_fname_60" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_59", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_61" - %"$msgobj_td_62" = getelementptr i8, i8* %"$msgobj_50", i32 57 - %"$msgobj_td_63" = bitcast i8* %"$msgobj_td_62" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Int32_2", %_TyDescrTy_Typ** %"$msgobj_td_63" - %"$msgobj_v_64" = getelementptr i8, i8* %"$msgobj_50", i32 65 - %"$msgobj_v_65" = bitcast i8* %"$msgobj_v_64" to %Int32* - store %Int32 %m, %Int32* %"$msgobj_v_65" - store i8* %"$msgobj_50", i8** %e - %"$execptr_load_67" = load i8*, i8** @_execptr - %"$e_68" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_67", %_TyDescrTy_Typ* @"$TyDescr_Event_24", i8* %"$e_68") + %"$gasrem_55" = load i64, i64* @_gasrem + %"$gascmp_56" = icmp ugt i64 1, %"$gasrem_55" + br i1 %"$gascmp_56", label %"$out_of_gas_57", label %"$have_gas_58" + +"$out_of_gas_57": ; preds = %"$have_gas_53" + call void @_out_of_gas() + br label %"$have_gas_58" + +"$have_gas_58": ; preds = %"$out_of_gas_57", %"$have_gas_53" + %"$consume_59" = sub i64 %"$gasrem_55", 1 + store i64 %"$consume_59", i64* @_gasrem + %"$msgobj_60_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_60_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_60_salloc_load", i64 69) + %"$msgobj_60_salloc" = bitcast i8* %"$msgobj_60_salloc_salloc" to [69 x i8]* + %"$msgobj_60" = bitcast [69 x i8]* %"$msgobj_60_salloc" to i8* + store i8 2, i8* %"$msgobj_60" + %"$msgobj_fname_62" = getelementptr i8, i8* %"$msgobj_60", i32 1 + %"$msgobj_fname_63" = bitcast i8* %"$msgobj_fname_62" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_61", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_63" + %"$msgobj_td_64" = getelementptr i8, i8* %"$msgobj_60", i32 17 + %"$msgobj_td_65" = bitcast i8* %"$msgobj_td_64" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_18", %_TyDescrTy_Typ** %"$msgobj_td_65" + %"$msgobj_v_67" = getelementptr i8, i8* %"$msgobj_60", i32 25 + %"$msgobj_v_68" = bitcast i8* %"$msgobj_v_67" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_66", i32 0, i32 0), i32 4 }, %String* %"$msgobj_v_68" + %"$msgobj_fname_70" = getelementptr i8, i8* %"$msgobj_60", i32 41 + %"$msgobj_fname_71" = bitcast i8* %"$msgobj_fname_70" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_69", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_71" + %"$msgobj_td_72" = getelementptr i8, i8* %"$msgobj_60", i32 57 + %"$msgobj_td_73" = bitcast i8* %"$msgobj_td_72" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Int32_2", %_TyDescrTy_Typ** %"$msgobj_td_73" + %"$msgobj_v_74" = getelementptr i8, i8* %"$msgobj_60", i32 65 + %"$msgobj_v_75" = bitcast i8* %"$msgobj_v_74" to %Int32* + store %Int32 %m, %Int32* %"$msgobj_v_75" + store i8* %"$msgobj_60", i8** %e + %"$e_77" = load i8*, i8** %e + %"$_literal_cost_call_79" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_24", i8* %"$e_77") + %"$gasrem_80" = load i64, i64* @_gasrem + %"$gascmp_81" = icmp ugt i64 %"$_literal_cost_call_79", %"$gasrem_80" + br i1 %"$gascmp_81", label %"$out_of_gas_82", label %"$have_gas_83" + +"$out_of_gas_82": ; preds = %"$have_gas_58" + call void @_out_of_gas() + br label %"$have_gas_83" + +"$have_gas_83": ; preds = %"$out_of_gas_82", %"$have_gas_58" + %"$consume_84" = sub i64 %"$gasrem_80", %"$_literal_cost_call_79" + store i64 %"$consume_84", i64* @_gasrem + %"$execptr_load_85" = load i8*, i8** @_execptr + %"$e_86" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_85", %_TyDescrTy_Typ* @"$TyDescr_Event_24", i8* %"$e_86") ret void } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + declare void @_event(i8*, %_TyDescrTy_Typ*, i8*) -define internal void @"$t1_69"(%Uint128 %_amount, [20 x i8]* %"$_sender_70", %TName_Bool* %c) { +define internal void @"$t1_87"(%Uint128 %_amount, [20 x i8]* %"$_sender_88", %TName_Bool* %c) { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_70" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_88" + %"$gasrem_89" = load i64, i64* @_gasrem + %"$gascmp_90" = icmp ugt i64 1, %"$gasrem_89" + br i1 %"$gascmp_90", label %"$out_of_gas_91", label %"$have_gas_92" + +"$out_of_gas_91": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_92" + +"$have_gas_92": ; preds = %"$out_of_gas_91", %entry + %"$consume_93" = sub i64 %"$gasrem_89", 1 + store i64 %"$consume_93", i64* @_gasrem %x = alloca %Int32 + %"$gasrem_94" = load i64, i64* @_gasrem + %"$gascmp_95" = icmp ugt i64 1, %"$gasrem_94" + br i1 %"$gascmp_95", label %"$out_of_gas_96", label %"$have_gas_97" + +"$out_of_gas_96": ; preds = %"$have_gas_92" + call void @_out_of_gas() + br label %"$have_gas_97" + +"$have_gas_97": ; preds = %"$out_of_gas_96", %"$have_gas_92" + %"$consume_98" = sub i64 %"$gasrem_94", 1 + store i64 %"$consume_98", i64* @_gasrem store %Int32 { i32 42 }, %Int32* %x - %"$c_tag_72" = getelementptr inbounds %TName_Bool, %TName_Bool* %c, i32 0, i32 0 - %"$c_tag_73" = load i8, i8* %"$c_tag_72" - switch i8 %"$c_tag_73", label %"$empty_default_74" [ - i8 0, label %"$True_75" - i8 1, label %"$False_77" + %"$gasrem_99" = load i64, i64* @_gasrem + %"$gascmp_100" = icmp ugt i64 2, %"$gasrem_99" + br i1 %"$gascmp_100", label %"$out_of_gas_101", label %"$have_gas_102" + +"$out_of_gas_101": ; preds = %"$have_gas_97" + call void @_out_of_gas() + br label %"$have_gas_102" + +"$have_gas_102": ; preds = %"$out_of_gas_101", %"$have_gas_97" + %"$consume_103" = sub i64 %"$gasrem_99", 2 + store i64 %"$consume_103", i64* @_gasrem + %"$c_tag_105" = getelementptr inbounds %TName_Bool, %TName_Bool* %c, i32 0, i32 0 + %"$c_tag_106" = load i8, i8* %"$c_tag_105" + switch i8 %"$c_tag_106", label %"$empty_default_107" [ + i8 0, label %"$True_108" + i8 1, label %"$False_110" ] -"$True_75": ; preds = %entry - %"$c_76" = bitcast %TName_Bool* %c to %CName_True* - br label %"$matchsucc_71" +"$True_108": ; preds = %"$have_gas_102" + %"$c_109" = bitcast %TName_Bool* %c to %CName_True* + br label %"$matchsucc_104" + +"$False_110": ; preds = %"$have_gas_102" + %"$c_111" = bitcast %TName_Bool* %c to %CName_False* + %"$gasrem_112" = load i64, i64* @_gasrem + %"$gascmp_113" = icmp ugt i64 1, %"$gasrem_112" + br i1 %"$gascmp_113", label %"$out_of_gas_114", label %"$have_gas_115" + +"$out_of_gas_114": ; preds = %"$False_110" + call void @_out_of_gas() + br label %"$have_gas_115" -"$False_77": ; preds = %entry - %"$c_78" = bitcast %TName_Bool* %c to %CName_False* - %"$create_event__sender_79" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_79" - %"$x_80" = load %Int32, %Int32* %x - call void @"$create_event_48"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_79", %Int32 %"$x_80") - br label %"$matchsucc_71" +"$have_gas_115": ; preds = %"$out_of_gas_114", %"$False_110" + %"$consume_116" = sub i64 %"$gasrem_112", 1 + store i64 %"$consume_116", i64* @_gasrem + %"$create_event__sender_117" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$create_event__sender_117" + %"$x_118" = load %Int32, %Int32* %x + call void @"$create_event_48"(%Uint128 %_amount, [20 x i8]* %"$create_event__sender_117", %Int32 %"$x_118") + br label %"$matchsucc_104" -"$empty_default_74": ; preds = %entry - br label %"$matchsucc_71" +"$empty_default_107": ; preds = %"$have_gas_102" + br label %"$matchsucc_104" -"$matchsucc_71": ; preds = %"$False_77", %"$True_75", %"$empty_default_74" +"$matchsucc_104": ; preds = %"$have_gas_115", %"$True_108", %"$empty_default_107" ret void } define void @t1(i8* %0) { entry: - %"$_amount_82" = getelementptr i8, i8* %0, i32 0 - %"$_amount_83" = bitcast i8* %"$_amount_82" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_83" - %"$_sender_84" = getelementptr i8, i8* %0, i32 16 - %"$_sender_85" = bitcast i8* %"$_sender_84" to [20 x i8]* - %"$c_86" = getelementptr i8, i8* %0, i32 36 - %"$c_87" = bitcast i8* %"$c_86" to %TName_Bool** - %c = load %TName_Bool*, %TName_Bool** %"$c_87" - call void @"$t1_69"(%Uint128 %_amount, [20 x i8]* %"$_sender_85", %TName_Bool* %c) + %"$_amount_120" = getelementptr i8, i8* %0, i32 0 + %"$_amount_121" = bitcast i8* %"$_amount_120" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_121" + %"$_sender_122" = getelementptr i8, i8* %0, i32 16 + %"$_sender_123" = bitcast i8* %"$_sender_122" to [20 x i8]* + %"$c_124" = getelementptr i8, i8* %0, i32 36 + %"$c_125" = bitcast i8* %"$c_124" to %TName_Bool** + %c = load %TName_Bool*, %TName_Bool** %"$c_125" + call void @"$t1_87"(%Uint128 %_amount, [20 x i8]* %"$_sender_123", %TName_Bool* %c) ret void } diff --git a/testsuite/contr/pm-empty.output_t1_false.json b/testsuite/contr/pm-empty.output_t1_false.json index aeaf7862..bf3a889d 100644 --- a/testsuite/contr/pm-empty.output_t1_false.json +++ b/testsuite/contr/pm-empty.output_t1_false.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999929", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/pm-empty.output_t1_true.json b/testsuite/contr/pm-empty.output_t1_true.json index 07164781..e3b82a2a 100644 --- a/testsuite/contr/pm-empty.output_t1_true.json +++ b/testsuite/contr/pm-empty.output_t1_true.json @@ -1,7 +1,7 @@ { "_accepted" : "false", "events" : [], - "gas_remaining" : "10000000", + "gas_remaining" : "9999996", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/send.ll b/testsuite/contr/send.ll index 7769a6b2..a52b9eaa 100644 --- a/testsuite/contr/send.ll +++ b/testsuite/contr/send.ll @@ -68,52 +68,98 @@ target triple = "x86_64-pc-linux-gnu" @one_msg = global { %TName_List_Message* (i8*, i8*)*, i8* } zeroinitializer @_scilla_version = global %Uint32 zeroinitializer @_this_address = global [20 x i8] zeroinitializer -@"$stringlit_69" = unnamed_addr constant [4 x i8] c"_tag" -@"$stringlit_74" = unnamed_addr constant [0 x i8] zeroinitializer -@"$stringlit_77" = unnamed_addr constant [10 x i8] c"_recipient" -@"$stringlit_84" = unnamed_addr constant [7 x i8] c"_amount" -@"$stringlit_108" = unnamed_addr constant [4 x i8] c"_tag" -@"$stringlit_113" = unnamed_addr constant [0 x i8] zeroinitializer -@"$stringlit_116" = unnamed_addr constant [10 x i8] c"_recipient" -@"$stringlit_123" = unnamed_addr constant [7 x i8] c"_amount" -@"$stringlit_132" = unnamed_addr constant [4 x i8] c"_tag" -@"$stringlit_137" = unnamed_addr constant [3 x i8] c"foo" -@"$stringlit_140" = unnamed_addr constant [10 x i8] c"_recipient" -@"$stringlit_147" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_99" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_104" = unnamed_addr constant [0 x i8] zeroinitializer +@"$stringlit_107" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_114" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_166" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_171" = unnamed_addr constant [0 x i8] zeroinitializer +@"$stringlit_174" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_181" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_200" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_205" = unnamed_addr constant [3 x i8] c"foo" +@"$stringlit_208" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_215" = unnamed_addr constant [7 x i8] c"_amount" @_tydescr_table = constant [16 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_38", %_TyDescrTy_Typ* @"$TyDescr_Event_28", %_TyDescrTy_Typ* @"$TyDescr_Int64_10", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_34", %_TyDescrTy_Typ* @"$TyDescr_Uint256_20", %_TyDescrTy_Typ* @"$TyDescr_Uint32_8", %_TyDescrTy_Typ* @"$TyDescr_Uint64_12", %_TyDescrTy_Typ* @"$TyDescr_Bnum_24", %_TyDescrTy_Typ* @"$TyDescr_Uint128_16", %_TyDescrTy_Typ* @"$TyDescr_Exception_30", %_TyDescrTy_Typ* @"$TyDescr_String_22", %_TyDescrTy_Typ* @"$TyDescr_Int256_18", %_TyDescrTy_Typ* @"$TyDescr_Int128_14", %_TyDescrTy_Typ* @"$TyDescr_Bystr_32", %_TyDescrTy_Typ* @"$TyDescr_Message_26", %_TyDescrTy_Typ* @"$TyDescr_Int32_6"] @_tydescr_table_length = constant i32 16 define internal %TName_List_Message* @"$fundef_2"(%"$$fundef_2_env_52"* %0, i8* %1) { entry: %"$retval_3" = alloca %TName_List_Message* + %"$gasrem_53" = load i64, i64* @_gasrem + %"$gascmp_54" = icmp ugt i64 1, %"$gasrem_53" + br i1 %"$gascmp_54", label %"$out_of_gas_55", label %"$have_gas_56" + +"$out_of_gas_55": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_56" + +"$have_gas_56": ; preds = %"$out_of_gas_55", %entry + %"$consume_57" = sub i64 %"$gasrem_53", 1 + store i64 %"$consume_57", i64* @_gasrem %nil_msg = alloca %TName_List_Message* - %"$adtval_53_load" = load i8*, i8** @_execptr - %"$adtval_53_salloc" = call i8* @_salloc(i8* %"$adtval_53_load", i64 1) - %"$adtval_53" = bitcast i8* %"$adtval_53_salloc" to %CName_Nil_Message* - %"$adtgep_54" = getelementptr inbounds %CName_Nil_Message, %CName_Nil_Message* %"$adtval_53", i32 0, i32 0 - store i8 1, i8* %"$adtgep_54" - %"$adtptr_55" = bitcast %CName_Nil_Message* %"$adtval_53" to %TName_List_Message* - store %TName_List_Message* %"$adtptr_55", %TName_List_Message** %nil_msg - %"$nil_msg_56" = load %TName_List_Message*, %TName_List_Message** %nil_msg - %"$adtval_57_load" = load i8*, i8** @_execptr - %"$adtval_57_salloc" = call i8* @_salloc(i8* %"$adtval_57_load", i64 17) - %"$adtval_57" = bitcast i8* %"$adtval_57_salloc" to %CName_Cons_Message* - %"$adtgep_58" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_57", i32 0, i32 0 - store i8 0, i8* %"$adtgep_58" - %"$adtgep_59" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_57", i32 0, i32 1 - store i8* %1, i8** %"$adtgep_59" - %"$adtgep_60" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_57", i32 0, i32 2 - store %TName_List_Message* %"$nil_msg_56", %TName_List_Message** %"$adtgep_60" - %"$adtptr_61" = bitcast %CName_Cons_Message* %"$adtval_57" to %TName_List_Message* - store %TName_List_Message* %"$adtptr_61", %TName_List_Message** %"$retval_3" - %"$$retval_3_62" = load %TName_List_Message*, %TName_List_Message** %"$retval_3" - ret %TName_List_Message* %"$$retval_3_62" + %"$gasrem_58" = load i64, i64* @_gasrem + %"$gascmp_59" = icmp ugt i64 1, %"$gasrem_58" + br i1 %"$gascmp_59", label %"$out_of_gas_60", label %"$have_gas_61" + +"$out_of_gas_60": ; preds = %"$have_gas_56" + call void @_out_of_gas() + br label %"$have_gas_61" + +"$have_gas_61": ; preds = %"$out_of_gas_60", %"$have_gas_56" + %"$consume_62" = sub i64 %"$gasrem_58", 1 + store i64 %"$consume_62", i64* @_gasrem + %"$adtval_63_load" = load i8*, i8** @_execptr + %"$adtval_63_salloc" = call i8* @_salloc(i8* %"$adtval_63_load", i64 1) + %"$adtval_63" = bitcast i8* %"$adtval_63_salloc" to %CName_Nil_Message* + %"$adtgep_64" = getelementptr inbounds %CName_Nil_Message, %CName_Nil_Message* %"$adtval_63", i32 0, i32 0 + store i8 1, i8* %"$adtgep_64" + %"$adtptr_65" = bitcast %CName_Nil_Message* %"$adtval_63" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_65", %TName_List_Message** %nil_msg + %"$gasrem_66" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_61" + call void @_out_of_gas() + br label %"$have_gas_69" + +"$have_gas_69": ; preds = %"$out_of_gas_68", %"$have_gas_61" + %"$consume_70" = sub i64 %"$gasrem_66", 1 + store i64 %"$consume_70", i64* @_gasrem + %"$nil_msg_71" = load %TName_List_Message*, %TName_List_Message** %nil_msg + %"$adtval_72_load" = load i8*, i8** @_execptr + %"$adtval_72_salloc" = call i8* @_salloc(i8* %"$adtval_72_load", i64 17) + %"$adtval_72" = bitcast i8* %"$adtval_72_salloc" to %CName_Cons_Message* + %"$adtgep_73" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_72", i32 0, i32 0 + store i8 0, i8* %"$adtgep_73" + %"$adtgep_74" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_72", i32 0, i32 1 + store i8* %1, i8** %"$adtgep_74" + %"$adtgep_75" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_72", i32 0, i32 2 + store %TName_List_Message* %"$nil_msg_71", %TName_List_Message** %"$adtgep_75" + %"$adtptr_76" = bitcast %CName_Cons_Message* %"$adtval_72" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_76", %TName_List_Message** %"$retval_3" + %"$$retval_3_77" = load %TName_List_Message*, %TName_List_Message** %"$retval_3" + ret %TName_List_Message* %"$$retval_3_77" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) define void @_init_libs() { entry: + %"$gasrem_78" = load i64, i64* @_gasrem + %"$gascmp_79" = icmp ugt i64 1, %"$gasrem_78" + br i1 %"$gascmp_79", label %"$out_of_gas_80", label %"$have_gas_81" + +"$out_of_gas_80": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_81" + +"$have_gas_81": ; preds = %"$out_of_gas_80", %entry + %"$consume_82" = sub i64 %"$gasrem_78", 1 + store i64 %"$consume_82", i64* @_gasrem store { %TName_List_Message* (i8*, i8*)*, i8* } { %TName_List_Message* (i8*, i8*)* bitcast (%TName_List_Message* (%"$$fundef_2_env_52"*, i8*)* @"$fundef_2" to %TName_List_Message* (i8*, i8*)*), i8* null }, { %TName_List_Message* (i8*, i8*)*, i8* }* @one_msg ret void } @@ -123,180 +169,342 @@ entry: ret void } -define internal void @"$SendMsg_66"(%Uint128 %_amount, [20 x i8]* %"$_sender_67") { +define internal void @"$SendMsg_86"(%Uint128 %_amount, [20 x i8]* %"$_sender_87") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_67" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_87" + %"$gasrem_88" = load i64, i64* @_gasrem + %"$gascmp_89" = icmp ugt i64 1, %"$gasrem_88" + br i1 %"$gascmp_89", label %"$out_of_gas_90", label %"$have_gas_91" + +"$out_of_gas_90": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_91" + +"$have_gas_91": ; preds = %"$out_of_gas_90", %entry + %"$consume_92" = sub i64 %"$gasrem_88", 1 + store i64 %"$consume_92", i64* @_gasrem %msg1 = alloca i8* - %"$msgobj_68_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_68_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_68_salloc_load", i64 125) - %"$msgobj_68_salloc" = bitcast i8* %"$msgobj_68_salloc_salloc" to [125 x i8]* - %"$msgobj_68" = bitcast [125 x i8]* %"$msgobj_68_salloc" to i8* - store i8 3, i8* %"$msgobj_68" - %"$msgobj_fname_70" = getelementptr i8, i8* %"$msgobj_68", i32 1 - %"$msgobj_fname_71" = bitcast i8* %"$msgobj_fname_70" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_69", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_71" - %"$msgobj_td_72" = getelementptr i8, i8* %"$msgobj_68", i32 17 - %"$msgobj_td_73" = bitcast i8* %"$msgobj_td_72" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_22", %_TyDescrTy_Typ** %"$msgobj_td_73" - %"$msgobj_v_75" = getelementptr i8, i8* %"$msgobj_68", i32 25 - %"$msgobj_v_76" = bitcast i8* %"$msgobj_v_75" to %String* - store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_74", i32 0, i32 0), i32 0 }, %String* %"$msgobj_v_76" - %"$msgobj_fname_78" = getelementptr i8, i8* %"$msgobj_68", i32 41 - %"$msgobj_fname_79" = bitcast i8* %"$msgobj_fname_78" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_77", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_79" - %"$msgobj_td_80" = getelementptr i8, i8* %"$msgobj_68", i32 57 - %"$msgobj_td_81" = bitcast i8* %"$msgobj_td_80" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_34", %_TyDescrTy_Typ** %"$msgobj_td_81" - %"$msgobj_v_82" = getelementptr i8, i8* %"$msgobj_68", i32 65 - %"$msgobj_v_83" = bitcast i8* %"$msgobj_v_82" to [20 x i8]* - store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_83" - %"$msgobj_fname_85" = getelementptr i8, i8* %"$msgobj_68", i32 85 - %"$msgobj_fname_86" = bitcast i8* %"$msgobj_fname_85" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_84", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_86" - %"$msgobj_td_87" = getelementptr i8, i8* %"$msgobj_68", i32 101 - %"$msgobj_td_88" = bitcast i8* %"$msgobj_td_87" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Uint128_16", %_TyDescrTy_Typ** %"$msgobj_td_88" - %"$msgobj_v_89" = getelementptr i8, i8* %"$msgobj_68", i32 109 - %"$msgobj_v_90" = bitcast i8* %"$msgobj_v_89" to %Uint128* - store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_90" - store i8* %"$msgobj_68", i8** %msg1 + %"$gasrem_93" = load i64, i64* @_gasrem + %"$gascmp_94" = icmp ugt i64 1, %"$gasrem_93" + br i1 %"$gascmp_94", label %"$out_of_gas_95", label %"$have_gas_96" + +"$out_of_gas_95": ; preds = %"$have_gas_91" + call void @_out_of_gas() + br label %"$have_gas_96" + +"$have_gas_96": ; preds = %"$out_of_gas_95", %"$have_gas_91" + %"$consume_97" = sub i64 %"$gasrem_93", 1 + store i64 %"$consume_97", i64* @_gasrem + %"$msgobj_98_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_98_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_98_salloc_load", i64 125) + %"$msgobj_98_salloc" = bitcast i8* %"$msgobj_98_salloc_salloc" to [125 x i8]* + %"$msgobj_98" = bitcast [125 x i8]* %"$msgobj_98_salloc" to i8* + store i8 3, i8* %"$msgobj_98" + %"$msgobj_fname_100" = getelementptr i8, i8* %"$msgobj_98", i32 1 + %"$msgobj_fname_101" = bitcast i8* %"$msgobj_fname_100" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_99", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_101" + %"$msgobj_td_102" = getelementptr i8, i8* %"$msgobj_98", i32 17 + %"$msgobj_td_103" = bitcast i8* %"$msgobj_td_102" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_22", %_TyDescrTy_Typ** %"$msgobj_td_103" + %"$msgobj_v_105" = getelementptr i8, i8* %"$msgobj_98", i32 25 + %"$msgobj_v_106" = bitcast i8* %"$msgobj_v_105" to %String* + store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_104", i32 0, i32 0), i32 0 }, %String* %"$msgobj_v_106" + %"$msgobj_fname_108" = getelementptr i8, i8* %"$msgobj_98", i32 41 + %"$msgobj_fname_109" = bitcast i8* %"$msgobj_fname_108" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_107", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_109" + %"$msgobj_td_110" = getelementptr i8, i8* %"$msgobj_98", i32 57 + %"$msgobj_td_111" = bitcast i8* %"$msgobj_td_110" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_34", %_TyDescrTy_Typ** %"$msgobj_td_111" + %"$msgobj_v_112" = getelementptr i8, i8* %"$msgobj_98", i32 65 + %"$msgobj_v_113" = bitcast i8* %"$msgobj_v_112" to [20 x i8]* + store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_113" + %"$msgobj_fname_115" = getelementptr i8, i8* %"$msgobj_98", i32 85 + %"$msgobj_fname_116" = bitcast i8* %"$msgobj_fname_115" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_114", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_116" + %"$msgobj_td_117" = getelementptr i8, i8* %"$msgobj_98", i32 101 + %"$msgobj_td_118" = bitcast i8* %"$msgobj_td_117" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_16", %_TyDescrTy_Typ** %"$msgobj_td_118" + %"$msgobj_v_119" = getelementptr i8, i8* %"$msgobj_98", i32 109 + %"$msgobj_v_120" = bitcast i8* %"$msgobj_v_119" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_120" + store i8* %"$msgobj_98", i8** %msg1 + %"$gasrem_122" = load i64, i64* @_gasrem + %"$gascmp_123" = icmp ugt i64 1, %"$gasrem_122" + br i1 %"$gascmp_123", label %"$out_of_gas_124", label %"$have_gas_125" + +"$out_of_gas_124": ; preds = %"$have_gas_96" + call void @_out_of_gas() + br label %"$have_gas_125" + +"$have_gas_125": ; preds = %"$out_of_gas_124", %"$have_gas_96" + %"$consume_126" = sub i64 %"$gasrem_122", 1 + store i64 %"$consume_126", i64* @_gasrem %msgs1 = alloca %TName_List_Message* + %"$gasrem_127" = load i64, i64* @_gasrem + %"$gascmp_128" = icmp ugt i64 1, %"$gasrem_127" + br i1 %"$gascmp_128", label %"$out_of_gas_129", label %"$have_gas_130" + +"$out_of_gas_129": ; preds = %"$have_gas_125" + call void @_out_of_gas() + br label %"$have_gas_130" + +"$have_gas_130": ; preds = %"$out_of_gas_129", %"$have_gas_125" + %"$consume_131" = sub i64 %"$gasrem_127", 1 + store i64 %"$consume_131", i64* @_gasrem %"$one_msg_0" = alloca %TName_List_Message* - %"$one_msg_92" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @one_msg - %"$one_msg_fptr_93" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_92", 0 - %"$one_msg_envptr_94" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_92", 1 - %"$msg1_95" = load i8*, i8** %msg1 - %"$one_msg_call_96" = call %TName_List_Message* %"$one_msg_fptr_93"(i8* %"$one_msg_envptr_94", i8* %"$msg1_95") - store %TName_List_Message* %"$one_msg_call_96", %TName_List_Message** %"$one_msg_0" - %"$$one_msg_0_97" = load %TName_List_Message*, %TName_List_Message** %"$one_msg_0" - store %TName_List_Message* %"$$one_msg_0_97", %TName_List_Message** %msgs1 - %"$execptr_load_98" = load i8*, i8** @_execptr - %"$msgs1_99" = load %TName_List_Message*, %TName_List_Message** %msgs1 - call void @_send(i8* %"$execptr_load_98", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_38", %TName_List_Message* %"$msgs1_99") + %"$one_msg_132" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @one_msg + %"$one_msg_fptr_133" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_132", 0 + %"$one_msg_envptr_134" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_132", 1 + %"$msg1_135" = load i8*, i8** %msg1 + %"$one_msg_call_136" = call %TName_List_Message* %"$one_msg_fptr_133"(i8* %"$one_msg_envptr_134", i8* %"$msg1_135") + store %TName_List_Message* %"$one_msg_call_136", %TName_List_Message** %"$one_msg_0" + %"$$one_msg_0_137" = load %TName_List_Message*, %TName_List_Message** %"$one_msg_0" + store %TName_List_Message* %"$$one_msg_0_137", %TName_List_Message** %msgs1 + %"$msgs1_138" = load %TName_List_Message*, %TName_List_Message** %msgs1 + %"$$msgs1_138_139" = bitcast %TName_List_Message* %"$msgs1_138" to i8* + %"$_literal_cost_call_140" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_38", i8* %"$$msgs1_138_139") + %"$gasrem_141" = load i64, i64* @_gasrem + %"$gascmp_142" = icmp ugt i64 %"$_literal_cost_call_140", %"$gasrem_141" + br i1 %"$gascmp_142", label %"$out_of_gas_143", label %"$have_gas_144" + +"$out_of_gas_143": ; preds = %"$have_gas_130" + call void @_out_of_gas() + br label %"$have_gas_144" + +"$have_gas_144": ; preds = %"$out_of_gas_143", %"$have_gas_130" + %"$consume_145" = sub i64 %"$gasrem_141", %"$_literal_cost_call_140" + store i64 %"$consume_145", i64* @_gasrem + %"$execptr_load_146" = load i8*, i8** @_execptr + %"$msgs1_147" = load %TName_List_Message*, %TName_List_Message** %msgs1 + call void @_send(i8* %"$execptr_load_146", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_38", %TName_List_Message* %"$msgs1_147") ret void } +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + declare void @_send(i8*, %_TyDescrTy_Typ*, %TName_List_Message*) define void @SendMsg(i8* %0) { entry: - %"$_amount_101" = getelementptr i8, i8* %0, i32 0 - %"$_amount_102" = bitcast i8* %"$_amount_101" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_102" - %"$_sender_103" = getelementptr i8, i8* %0, i32 16 - %"$_sender_104" = bitcast i8* %"$_sender_103" to [20 x i8]* - call void @"$SendMsg_66"(%Uint128 %_amount, [20 x i8]* %"$_sender_104") + %"$_amount_149" = getelementptr i8, i8* %0, i32 0 + %"$_amount_150" = bitcast i8* %"$_amount_149" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_150" + %"$_sender_151" = getelementptr i8, i8* %0, i32 16 + %"$_sender_152" = bitcast i8* %"$_sender_151" to [20 x i8]* + call void @"$SendMsg_86"(%Uint128 %_amount, [20 x i8]* %"$_sender_152") ret void } -define internal void @"$SendMsg2_105"(%Uint128 %_amount, [20 x i8]* %"$_sender_106") { +define internal void @"$SendMsg2_153"(%Uint128 %_amount, [20 x i8]* %"$_sender_154") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_106" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_154" + %"$gasrem_155" = load i64, i64* @_gasrem + %"$gascmp_156" = icmp ugt i64 1, %"$gasrem_155" + br i1 %"$gascmp_156", label %"$out_of_gas_157", label %"$have_gas_158" + +"$out_of_gas_157": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_158" + +"$have_gas_158": ; preds = %"$out_of_gas_157", %entry + %"$consume_159" = sub i64 %"$gasrem_155", 1 + store i64 %"$consume_159", i64* @_gasrem %msg1 = alloca i8* - %"$msgobj_107_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_107_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_107_salloc_load", i64 125) - %"$msgobj_107_salloc" = bitcast i8* %"$msgobj_107_salloc_salloc" to [125 x i8]* - %"$msgobj_107" = bitcast [125 x i8]* %"$msgobj_107_salloc" to i8* - store i8 3, i8* %"$msgobj_107" - %"$msgobj_fname_109" = getelementptr i8, i8* %"$msgobj_107", i32 1 - %"$msgobj_fname_110" = bitcast i8* %"$msgobj_fname_109" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_108", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_110" - %"$msgobj_td_111" = getelementptr i8, i8* %"$msgobj_107", i32 17 - %"$msgobj_td_112" = bitcast i8* %"$msgobj_td_111" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_22", %_TyDescrTy_Typ** %"$msgobj_td_112" - %"$msgobj_v_114" = getelementptr i8, i8* %"$msgobj_107", i32 25 - %"$msgobj_v_115" = bitcast i8* %"$msgobj_v_114" to %String* - store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_113", i32 0, i32 0), i32 0 }, %String* %"$msgobj_v_115" - %"$msgobj_fname_117" = getelementptr i8, i8* %"$msgobj_107", i32 41 - %"$msgobj_fname_118" = bitcast i8* %"$msgobj_fname_117" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_116", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_118" - %"$msgobj_td_119" = getelementptr i8, i8* %"$msgobj_107", i32 57 - %"$msgobj_td_120" = bitcast i8* %"$msgobj_td_119" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_34", %_TyDescrTy_Typ** %"$msgobj_td_120" - %"$msgobj_v_121" = getelementptr i8, i8* %"$msgobj_107", i32 65 - %"$msgobj_v_122" = bitcast i8* %"$msgobj_v_121" to [20 x i8]* - store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_122" - %"$msgobj_fname_124" = getelementptr i8, i8* %"$msgobj_107", i32 85 - %"$msgobj_fname_125" = bitcast i8* %"$msgobj_fname_124" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_123", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_125" - %"$msgobj_td_126" = getelementptr i8, i8* %"$msgobj_107", i32 101 - %"$msgobj_td_127" = bitcast i8* %"$msgobj_td_126" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Uint128_16", %_TyDescrTy_Typ** %"$msgobj_td_127" - %"$msgobj_v_128" = getelementptr i8, i8* %"$msgobj_107", i32 109 - %"$msgobj_v_129" = bitcast i8* %"$msgobj_v_128" to %Uint128* - store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_129" - store i8* %"$msgobj_107", i8** %msg1 + %"$gasrem_160" = load i64, i64* @_gasrem + %"$gascmp_161" = icmp ugt i64 1, %"$gasrem_160" + br i1 %"$gascmp_161", label %"$out_of_gas_162", label %"$have_gas_163" + +"$out_of_gas_162": ; preds = %"$have_gas_158" + call void @_out_of_gas() + br label %"$have_gas_163" + +"$have_gas_163": ; preds = %"$out_of_gas_162", %"$have_gas_158" + %"$consume_164" = sub i64 %"$gasrem_160", 1 + store i64 %"$consume_164", i64* @_gasrem + %"$msgobj_165_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_165_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_165_salloc_load", i64 125) + %"$msgobj_165_salloc" = bitcast i8* %"$msgobj_165_salloc_salloc" to [125 x i8]* + %"$msgobj_165" = bitcast [125 x i8]* %"$msgobj_165_salloc" to i8* + store i8 3, i8* %"$msgobj_165" + %"$msgobj_fname_167" = getelementptr i8, i8* %"$msgobj_165", i32 1 + %"$msgobj_fname_168" = bitcast i8* %"$msgobj_fname_167" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_166", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_168" + %"$msgobj_td_169" = getelementptr i8, i8* %"$msgobj_165", i32 17 + %"$msgobj_td_170" = bitcast i8* %"$msgobj_td_169" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_22", %_TyDescrTy_Typ** %"$msgobj_td_170" + %"$msgobj_v_172" = getelementptr i8, i8* %"$msgobj_165", i32 25 + %"$msgobj_v_173" = bitcast i8* %"$msgobj_v_172" to %String* + store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_171", i32 0, i32 0), i32 0 }, %String* %"$msgobj_v_173" + %"$msgobj_fname_175" = getelementptr i8, i8* %"$msgobj_165", i32 41 + %"$msgobj_fname_176" = bitcast i8* %"$msgobj_fname_175" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_174", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_176" + %"$msgobj_td_177" = getelementptr i8, i8* %"$msgobj_165", i32 57 + %"$msgobj_td_178" = bitcast i8* %"$msgobj_td_177" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_34", %_TyDescrTy_Typ** %"$msgobj_td_178" + %"$msgobj_v_179" = getelementptr i8, i8* %"$msgobj_165", i32 65 + %"$msgobj_v_180" = bitcast i8* %"$msgobj_v_179" to [20 x i8]* + store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_180" + %"$msgobj_fname_182" = getelementptr i8, i8* %"$msgobj_165", i32 85 + %"$msgobj_fname_183" = bitcast i8* %"$msgobj_fname_182" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_181", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_183" + %"$msgobj_td_184" = getelementptr i8, i8* %"$msgobj_165", i32 101 + %"$msgobj_td_185" = bitcast i8* %"$msgobj_td_184" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_16", %_TyDescrTy_Typ** %"$msgobj_td_185" + %"$msgobj_v_186" = getelementptr i8, i8* %"$msgobj_165", i32 109 + %"$msgobj_v_187" = bitcast i8* %"$msgobj_v_186" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_187" + store i8* %"$msgobj_165", i8** %msg1 + %"$gasrem_189" = load i64, i64* @_gasrem + %"$gascmp_190" = icmp ugt i64 1, %"$gasrem_189" + br i1 %"$gascmp_190", label %"$out_of_gas_191", label %"$have_gas_192" + +"$out_of_gas_191": ; preds = %"$have_gas_163" + call void @_out_of_gas() + br label %"$have_gas_192" + +"$have_gas_192": ; preds = %"$out_of_gas_191", %"$have_gas_163" + %"$consume_193" = sub i64 %"$gasrem_189", 1 + store i64 %"$consume_193", i64* @_gasrem %msg2 = alloca i8* - %"$msgobj_131_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_131_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_131_salloc_load", i64 125) - %"$msgobj_131_salloc" = bitcast i8* %"$msgobj_131_salloc_salloc" to [125 x i8]* - %"$msgobj_131" = bitcast [125 x i8]* %"$msgobj_131_salloc" to i8* - store i8 3, i8* %"$msgobj_131" - %"$msgobj_fname_133" = getelementptr i8, i8* %"$msgobj_131", i32 1 - %"$msgobj_fname_134" = bitcast i8* %"$msgobj_fname_133" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_132", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_134" - %"$msgobj_td_135" = getelementptr i8, i8* %"$msgobj_131", i32 17 - %"$msgobj_td_136" = bitcast i8* %"$msgobj_td_135" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_22", %_TyDescrTy_Typ** %"$msgobj_td_136" - %"$msgobj_v_138" = getelementptr i8, i8* %"$msgobj_131", i32 25 - %"$msgobj_v_139" = bitcast i8* %"$msgobj_v_138" to %String* - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_137", i32 0, i32 0), i32 3 }, %String* %"$msgobj_v_139" - %"$msgobj_fname_141" = getelementptr i8, i8* %"$msgobj_131", i32 41 - %"$msgobj_fname_142" = bitcast i8* %"$msgobj_fname_141" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_140", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_142" - %"$msgobj_td_143" = getelementptr i8, i8* %"$msgobj_131", i32 57 - %"$msgobj_td_144" = bitcast i8* %"$msgobj_td_143" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_34", %_TyDescrTy_Typ** %"$msgobj_td_144" - %"$msgobj_v_145" = getelementptr i8, i8* %"$msgobj_131", i32 65 - %"$msgobj_v_146" = bitcast i8* %"$msgobj_v_145" to [20 x i8]* - store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_146" - %"$msgobj_fname_148" = getelementptr i8, i8* %"$msgobj_131", i32 85 - %"$msgobj_fname_149" = bitcast i8* %"$msgobj_fname_148" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_147", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_149" - %"$msgobj_td_150" = getelementptr i8, i8* %"$msgobj_131", i32 101 - %"$msgobj_td_151" = bitcast i8* %"$msgobj_td_150" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Uint128_16", %_TyDescrTy_Typ** %"$msgobj_td_151" - %"$msgobj_v_152" = getelementptr i8, i8* %"$msgobj_131", i32 109 - %"$msgobj_v_153" = bitcast i8* %"$msgobj_v_152" to %Uint128* - store %Uint128 { i128 100 }, %Uint128* %"$msgobj_v_153" - store i8* %"$msgobj_131", i8** %msg2 + %"$gasrem_194" = load i64, i64* @_gasrem + %"$gascmp_195" = icmp ugt i64 1, %"$gasrem_194" + br i1 %"$gascmp_195", label %"$out_of_gas_196", label %"$have_gas_197" + +"$out_of_gas_196": ; preds = %"$have_gas_192" + call void @_out_of_gas() + br label %"$have_gas_197" + +"$have_gas_197": ; preds = %"$out_of_gas_196", %"$have_gas_192" + %"$consume_198" = sub i64 %"$gasrem_194", 1 + store i64 %"$consume_198", i64* @_gasrem + %"$msgobj_199_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_199_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_199_salloc_load", i64 125) + %"$msgobj_199_salloc" = bitcast i8* %"$msgobj_199_salloc_salloc" to [125 x i8]* + %"$msgobj_199" = bitcast [125 x i8]* %"$msgobj_199_salloc" to i8* + store i8 3, i8* %"$msgobj_199" + %"$msgobj_fname_201" = getelementptr i8, i8* %"$msgobj_199", i32 1 + %"$msgobj_fname_202" = bitcast i8* %"$msgobj_fname_201" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_200", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_202" + %"$msgobj_td_203" = getelementptr i8, i8* %"$msgobj_199", i32 17 + %"$msgobj_td_204" = bitcast i8* %"$msgobj_td_203" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_22", %_TyDescrTy_Typ** %"$msgobj_td_204" + %"$msgobj_v_206" = getelementptr i8, i8* %"$msgobj_199", i32 25 + %"$msgobj_v_207" = bitcast i8* %"$msgobj_v_206" to %String* + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_205", i32 0, i32 0), i32 3 }, %String* %"$msgobj_v_207" + %"$msgobj_fname_209" = getelementptr i8, i8* %"$msgobj_199", i32 41 + %"$msgobj_fname_210" = bitcast i8* %"$msgobj_fname_209" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_208", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_210" + %"$msgobj_td_211" = getelementptr i8, i8* %"$msgobj_199", i32 57 + %"$msgobj_td_212" = bitcast i8* %"$msgobj_td_211" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_34", %_TyDescrTy_Typ** %"$msgobj_td_212" + %"$msgobj_v_213" = getelementptr i8, i8* %"$msgobj_199", i32 65 + %"$msgobj_v_214" = bitcast i8* %"$msgobj_v_213" to [20 x i8]* + store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_214" + %"$msgobj_fname_216" = getelementptr i8, i8* %"$msgobj_199", i32 85 + %"$msgobj_fname_217" = bitcast i8* %"$msgobj_fname_216" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_215", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_217" + %"$msgobj_td_218" = getelementptr i8, i8* %"$msgobj_199", i32 101 + %"$msgobj_td_219" = bitcast i8* %"$msgobj_td_218" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_16", %_TyDescrTy_Typ** %"$msgobj_td_219" + %"$msgobj_v_220" = getelementptr i8, i8* %"$msgobj_199", i32 109 + %"$msgobj_v_221" = bitcast i8* %"$msgobj_v_220" to %Uint128* + store %Uint128 { i128 100 }, %Uint128* %"$msgobj_v_221" + store i8* %"$msgobj_199", i8** %msg2 + %"$gasrem_223" = load i64, i64* @_gasrem + %"$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_197" + call void @_out_of_gas() + br label %"$have_gas_226" + +"$have_gas_226": ; preds = %"$out_of_gas_225", %"$have_gas_197" + %"$consume_227" = sub i64 %"$gasrem_223", 1 + store i64 %"$consume_227", i64* @_gasrem %msgs1 = alloca %TName_List_Message* + %"$gasrem_228" = load i64, i64* @_gasrem + %"$gascmp_229" = icmp ugt i64 1, %"$gasrem_228" + br i1 %"$gascmp_229", label %"$out_of_gas_230", label %"$have_gas_231" + +"$out_of_gas_230": ; preds = %"$have_gas_226" + call void @_out_of_gas() + br label %"$have_gas_231" + +"$have_gas_231": ; preds = %"$out_of_gas_230", %"$have_gas_226" + %"$consume_232" = sub i64 %"$gasrem_228", 1 + store i64 %"$consume_232", i64* @_gasrem %"$one_msg_1" = alloca %TName_List_Message* - %"$one_msg_155" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @one_msg - %"$one_msg_fptr_156" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_155", 0 - %"$one_msg_envptr_157" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_155", 1 - %"$msg1_158" = load i8*, i8** %msg1 - %"$one_msg_call_159" = call %TName_List_Message* %"$one_msg_fptr_156"(i8* %"$one_msg_envptr_157", i8* %"$msg1_158") - store %TName_List_Message* %"$one_msg_call_159", %TName_List_Message** %"$one_msg_1" - %"$$one_msg_1_160" = load %TName_List_Message*, %TName_List_Message** %"$one_msg_1" - store %TName_List_Message* %"$$one_msg_1_160", %TName_List_Message** %msgs1 + %"$one_msg_233" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @one_msg + %"$one_msg_fptr_234" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_233", 0 + %"$one_msg_envptr_235" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$one_msg_233", 1 + %"$msg1_236" = load i8*, i8** %msg1 + %"$one_msg_call_237" = call %TName_List_Message* %"$one_msg_fptr_234"(i8* %"$one_msg_envptr_235", i8* %"$msg1_236") + store %TName_List_Message* %"$one_msg_call_237", %TName_List_Message** %"$one_msg_1" + %"$$one_msg_1_238" = load %TName_List_Message*, %TName_List_Message** %"$one_msg_1" + store %TName_List_Message* %"$$one_msg_1_238", %TName_List_Message** %msgs1 + %"$gasrem_239" = load i64, i64* @_gasrem + %"$gascmp_240" = icmp ugt i64 1, %"$gasrem_239" + br i1 %"$gascmp_240", label %"$out_of_gas_241", label %"$have_gas_242" + +"$out_of_gas_241": ; preds = %"$have_gas_231" + call void @_out_of_gas() + br label %"$have_gas_242" + +"$have_gas_242": ; preds = %"$out_of_gas_241", %"$have_gas_231" + %"$consume_243" = sub i64 %"$gasrem_239", 1 + store i64 %"$consume_243", i64* @_gasrem %msgs2 = alloca %TName_List_Message* - %"$msg2_161" = load i8*, i8** %msg2 - %"$msgs1_162" = load %TName_List_Message*, %TName_List_Message** %msgs1 - %"$adtval_163_load" = load i8*, i8** @_execptr - %"$adtval_163_salloc" = call i8* @_salloc(i8* %"$adtval_163_load", i64 17) - %"$adtval_163" = bitcast i8* %"$adtval_163_salloc" to %CName_Cons_Message* - %"$adtgep_164" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_163", i32 0, i32 0 - store i8 0, i8* %"$adtgep_164" - %"$adtgep_165" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_163", i32 0, i32 1 - store i8* %"$msg2_161", i8** %"$adtgep_165" - %"$adtgep_166" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_163", i32 0, i32 2 - store %TName_List_Message* %"$msgs1_162", %TName_List_Message** %"$adtgep_166" - %"$adtptr_167" = bitcast %CName_Cons_Message* %"$adtval_163" to %TName_List_Message* - store %TName_List_Message* %"$adtptr_167", %TName_List_Message** %msgs2 - %"$execptr_load_168" = load i8*, i8** @_execptr - %"$msgs2_169" = load %TName_List_Message*, %TName_List_Message** %msgs2 - call void @_send(i8* %"$execptr_load_168", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_38", %TName_List_Message* %"$msgs2_169") + %"$gasrem_244" = load i64, i64* @_gasrem + %"$gascmp_245" = icmp ugt i64 1, %"$gasrem_244" + br i1 %"$gascmp_245", label %"$out_of_gas_246", label %"$have_gas_247" + +"$out_of_gas_246": ; preds = %"$have_gas_242" + call void @_out_of_gas() + br label %"$have_gas_247" + +"$have_gas_247": ; preds = %"$out_of_gas_246", %"$have_gas_242" + %"$consume_248" = sub i64 %"$gasrem_244", 1 + store i64 %"$consume_248", i64* @_gasrem + %"$msg2_249" = load i8*, i8** %msg2 + %"$msgs1_250" = load %TName_List_Message*, %TName_List_Message** %msgs1 + %"$adtval_251_load" = load i8*, i8** @_execptr + %"$adtval_251_salloc" = call i8* @_salloc(i8* %"$adtval_251_load", i64 17) + %"$adtval_251" = bitcast i8* %"$adtval_251_salloc" to %CName_Cons_Message* + %"$adtgep_252" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_251", i32 0, i32 0 + store i8 0, i8* %"$adtgep_252" + %"$adtgep_253" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_251", i32 0, i32 1 + store i8* %"$msg2_249", i8** %"$adtgep_253" + %"$adtgep_254" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_251", i32 0, i32 2 + store %TName_List_Message* %"$msgs1_250", %TName_List_Message** %"$adtgep_254" + %"$adtptr_255" = bitcast %CName_Cons_Message* %"$adtval_251" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_255", %TName_List_Message** %msgs2 + %"$msgs2_256" = load %TName_List_Message*, %TName_List_Message** %msgs2 + %"$$msgs2_256_257" = bitcast %TName_List_Message* %"$msgs2_256" to i8* + %"$_literal_cost_call_258" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_38", i8* %"$$msgs2_256_257") + %"$gasrem_259" = load i64, i64* @_gasrem + %"$gascmp_260" = icmp ugt i64 %"$_literal_cost_call_258", %"$gasrem_259" + br i1 %"$gascmp_260", label %"$out_of_gas_261", label %"$have_gas_262" + +"$out_of_gas_261": ; preds = %"$have_gas_247" + call void @_out_of_gas() + br label %"$have_gas_262" + +"$have_gas_262": ; preds = %"$out_of_gas_261", %"$have_gas_247" + %"$consume_263" = sub i64 %"$gasrem_259", %"$_literal_cost_call_258" + store i64 %"$consume_263", i64* @_gasrem + %"$execptr_load_264" = load i8*, i8** @_execptr + %"$msgs2_265" = load %TName_List_Message*, %TName_List_Message** %msgs2 + call void @_send(i8* %"$execptr_load_264", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_38", %TName_List_Message* %"$msgs2_265") ret void } define void @SendMsg2(i8* %0) { entry: - %"$_amount_171" = getelementptr i8, i8* %0, i32 0 - %"$_amount_172" = bitcast i8* %"$_amount_171" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_172" - %"$_sender_173" = getelementptr i8, i8* %0, i32 16 - %"$_sender_174" = bitcast i8* %"$_sender_173" to [20 x i8]* - call void @"$SendMsg2_105"(%Uint128 %_amount, [20 x i8]* %"$_sender_174") + %"$_amount_267" = getelementptr i8, i8* %0, i32 0 + %"$_amount_268" = bitcast i8* %"$_amount_267" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_268" + %"$_sender_269" = getelementptr i8, i8* %0, i32 16 + %"$_sender_270" = bitcast i8* %"$_sender_269" to [20 x i8]* + call void @"$SendMsg2_153"(%Uint128 %_amount, [20 x i8]* %"$_sender_270") ret void } diff --git a/testsuite/contr/send.output_SendMsg.json b/testsuite/contr/send.output_SendMsg.json index a06d5267..b443a504 100644 --- a/testsuite/contr/send.output_SendMsg.json +++ b/testsuite/contr/send.output_SendMsg.json @@ -1,7 +1,7 @@ { "_accepted" : "false", "events" : [], - "gas_remaining" : "10000000", + "gas_remaining" : "9999876", "messages" : [ { "_amount" : "0", diff --git a/testsuite/contr/send.output_SendMsg2.json b/testsuite/contr/send.output_SendMsg2.json index 96355468..c3a44575 100644 --- a/testsuite/contr/send.output_SendMsg2.json +++ b/testsuite/contr/send.output_SendMsg2.json @@ -1,7 +1,7 @@ { "_accepted" : "false", "events" : [], - "gas_remaining" : "10000000", + "gas_remaining" : "9999756", "messages" : [ { "_amount" : "100", diff --git a/testsuite/contr/simple-map.init_output.json b/testsuite/contr/simple-map.init_output.json new file mode 100644 index 00000000..f5874919 --- /dev/null +++ b/testsuite/contr/simple-map.init_output.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999997", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/simple-map.ll b/testsuite/contr/simple-map.ll index 8044c121..1df40a5c 100644 --- a/testsuite/contr/simple-map.ll +++ b/testsuite/contr/simple-map.ll @@ -73,13 +73,13 @@ target triple = "x86_64-pc-linux-gnu" @inc = global { %Int32 (i8*, %Int32)*, i8* } zeroinitializer @_scilla_version = global %Uint32 zeroinitializer @_this_address = global [20 x i8] zeroinitializer -@"$access_count_70" = unnamed_addr constant [13 x i8] c"access_count\00" -@"$access_count_78" = unnamed_addr constant [13 x i8] c"access_count\00" -@"$access_count_99" = unnamed_addr constant [13 x i8] c"access_count\00" -@"$access_count_108" = unnamed_addr constant [13 x i8] c"access_count\00" -@"$access_count_122" = unnamed_addr constant [13 x i8] c"access_count\00" -@"$access_count_139" = unnamed_addr constant [13 x i8] c"access_count\00" -@"$access_count_148" = unnamed_addr constant [13 x i8] c"access_count\00" +@"$access_count_85" = unnamed_addr constant [13 x i8] c"access_count\00" +@"$access_count_93" = unnamed_addr constant [13 x i8] c"access_count\00" +@"$access_count_149" = unnamed_addr constant [13 x i8] c"access_count\00" +@"$access_count_168" = unnamed_addr constant [13 x i8] c"access_count\00" +@"$access_count_182" = unnamed_addr constant [13 x i8] c"access_count\00" +@"$access_count_229" = unnamed_addr constant [13 x i8] c"access_count\00" +@"$access_count_247" = unnamed_addr constant [13 x i8] c"access_count\00" @_tydescr_table = constant [17 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Event_28", %_TyDescrTy_Typ* @"$TyDescr_Int64_10", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_34", %_TyDescrTy_Typ* @"$TyDescr_Uint256_20", %_TyDescrTy_Typ* @"$TyDescr_Uint32_8", %_TyDescrTy_Typ* @"$TyDescr_Uint64_12", %_TyDescrTy_Typ* @"$TyDescr_Bnum_24", %_TyDescrTy_Typ* @"$TyDescr_Uint128_16", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Int32_38", %_TyDescrTy_Typ* @"$TyDescr_Exception_30", %_TyDescrTy_Typ* @"$TyDescr_String_22", %_TyDescrTy_Typ* @"$TyDescr_Int256_18", %_TyDescrTy_Typ* @"$TyDescr_Int128_14", %_TyDescrTy_Typ* @"$TyDescr_Bystr_32", %_TyDescrTy_Typ* @"$TyDescr_Message_26", %_TyDescrTy_Typ* @"$TyDescr_Map_40", %_TyDescrTy_Typ* @"$TyDescr_Int32_6"] @_tydescr_table_length = constant i32 17 @@ -101,32 +101,67 @@ declare %Int32 @_add_Int32(%Int32, %Int32) define void @_init_libs() { entry: + %"$gasrem_60" = load i64, i64* @_gasrem + %"$gascmp_61" = icmp ugt i64 1, %"$gasrem_60" + br i1 %"$gascmp_61", label %"$out_of_gas_62", label %"$have_gas_63" + +"$out_of_gas_62": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_63" + +"$have_gas_63": ; preds = %"$out_of_gas_62", %entry + %"$consume_64" = sub i64 %"$gasrem_60", 1 + store i64 %"$consume_64", i64* @_gasrem store %Int32 { i32 1 }, %Int32* @one - %"$$fundef_1_envp_60_load" = load i8*, i8** @_execptr - %"$$fundef_1_envp_60_salloc" = call i8* @_salloc(i8* %"$$fundef_1_envp_60_load", i64 4) - %"$$fundef_1_envp_60" = bitcast i8* %"$$fundef_1_envp_60_salloc" to %"$$fundef_1_env_54"* - %"$$fundef_1_env_voidp_62" = bitcast %"$$fundef_1_env_54"* %"$$fundef_1_envp_60" to i8* - %"$$fundef_1_cloval_63" = insertvalue { %Int32 (i8*, %Int32)*, i8* } { %Int32 (i8*, %Int32)* bitcast (%Int32 (%"$$fundef_1_env_54"*, %Int32)* @"$fundef_1" to %Int32 (i8*, %Int32)*), i8* undef }, i8* %"$$fundef_1_env_voidp_62", 1 - %"$$fundef_1_env_one_64" = getelementptr inbounds %"$$fundef_1_env_54", %"$$fundef_1_env_54"* %"$$fundef_1_envp_60", i32 0, i32 0 - %"$one_65" = load %Int32, %Int32* @one - store %Int32 %"$one_65", %Int32* %"$$fundef_1_env_one_64" - store { %Int32 (i8*, %Int32)*, i8* } %"$$fundef_1_cloval_63", { %Int32 (i8*, %Int32)*, i8* }* @inc + %"$gasrem_65" = load i64, i64* @_gasrem + %"$gascmp_66" = icmp ugt i64 1, %"$gasrem_65" + br i1 %"$gascmp_66", label %"$out_of_gas_67", label %"$have_gas_68" + +"$out_of_gas_67": ; preds = %"$have_gas_63" + call void @_out_of_gas() + br label %"$have_gas_68" + +"$have_gas_68": ; preds = %"$out_of_gas_67", %"$have_gas_63" + %"$consume_69" = sub i64 %"$gasrem_65", 1 + store i64 %"$consume_69", i64* @_gasrem + %"$$fundef_1_envp_70_load" = load i8*, i8** @_execptr + %"$$fundef_1_envp_70_salloc" = call i8* @_salloc(i8* %"$$fundef_1_envp_70_load", i64 4) + %"$$fundef_1_envp_70" = bitcast i8* %"$$fundef_1_envp_70_salloc" to %"$$fundef_1_env_54"* + %"$$fundef_1_env_voidp_72" = bitcast %"$$fundef_1_env_54"* %"$$fundef_1_envp_70" to i8* + %"$$fundef_1_cloval_73" = insertvalue { %Int32 (i8*, %Int32)*, i8* } { %Int32 (i8*, %Int32)* bitcast (%Int32 (%"$$fundef_1_env_54"*, %Int32)* @"$fundef_1" to %Int32 (i8*, %Int32)*), i8* undef }, i8* %"$$fundef_1_env_voidp_72", 1 + %"$$fundef_1_env_one_74" = getelementptr inbounds %"$$fundef_1_env_54", %"$$fundef_1_env_54"* %"$$fundef_1_envp_70", i32 0, i32 0 + %"$one_75" = load %Int32, %Int32* @one + store %Int32 %"$one_75", %Int32* %"$$fundef_1_env_one_74" + store { %Int32 (i8*, %Int32)*, i8* } %"$$fundef_1_cloval_73", { %Int32 (i8*, %Int32)*, i8* }* @inc ret void } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) define void @_init_state() { entry: %"$access_count_3" = alloca %Map_ByStr20_Int32* - %"$execptr_load_66" = load i8*, i8** @_execptr - %"$_new_empty_map_call_67" = call i8* @_new_empty_map(i8* %"$execptr_load_66") - %"$Emp_68" = bitcast i8* %"$_new_empty_map_call_67" to %Map_ByStr20_Int32* - store %Map_ByStr20_Int32* %"$Emp_68", %Map_ByStr20_Int32** %"$access_count_3" - %"$execptr_load_69" = load i8*, i8** @_execptr - %"$$access_count_3_71" = load %Map_ByStr20_Int32*, %Map_ByStr20_Int32** %"$access_count_3" - %"$update_value_72" = bitcast %Map_ByStr20_Int32* %"$$access_count_3_71" to i8* - call void @_update_field(i8* %"$execptr_load_69", i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$access_count_70", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_40", i32 0, i8* null, i8* %"$update_value_72") + %"$gasrem_76" = load i64, i64* @_gasrem + %"$gascmp_77" = icmp ugt i64 1, %"$gasrem_76" + br i1 %"$gascmp_77", label %"$out_of_gas_78", label %"$have_gas_79" + +"$out_of_gas_78": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_79" + +"$have_gas_79": ; preds = %"$out_of_gas_78", %entry + %"$consume_80" = sub i64 %"$gasrem_76", 1 + store i64 %"$consume_80", i64* @_gasrem + %"$execptr_load_81" = load i8*, i8** @_execptr + %"$_new_empty_map_call_82" = call i8* @_new_empty_map(i8* %"$execptr_load_81") + %"$Emp_83" = bitcast i8* %"$_new_empty_map_call_82" to %Map_ByStr20_Int32* + store %Map_ByStr20_Int32* %"$Emp_83", %Map_ByStr20_Int32** %"$access_count_3" + %"$execptr_load_84" = load i8*, i8** @_execptr + %"$$access_count_3_86" = load %Map_ByStr20_Int32*, %Map_ByStr20_Int32** %"$access_count_3" + %"$update_value_87" = bitcast %Map_ByStr20_Int32* %"$$access_count_3_86" to i8* + call void @_update_field(i8* %"$execptr_load_84", i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$access_count_85", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_40", i32 0, i8* null, i8* %"$update_value_87") ret void } @@ -134,211 +169,389 @@ declare i8* @_new_empty_map(i8*) declare void @_update_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i8*) -define internal void @"$Increment_73"(%Uint128 %_amount, [20 x i8]* %"$_sender_74") { +define internal void @"$Increment_88"(%Uint128 %_amount, [20 x i8]* %"$_sender_89") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_74" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_89" %cur = alloca %TName_Option_Int32* - %"$indices_buf_75_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_75_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_75_salloc_load", i64 20) - %"$indices_buf_75_salloc" = bitcast i8* %"$indices_buf_75_salloc_salloc" to [20 x i8]* - %"$indices_buf_75" = bitcast [20 x i8]* %"$indices_buf_75_salloc" to i8* - %"$indices_gep_76" = getelementptr i8, i8* %"$indices_buf_75", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_76" to [20 x i8]* + %"$indices_buf_90_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_90_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_90_salloc_load", i64 20) + %"$indices_buf_90_salloc" = bitcast i8* %"$indices_buf_90_salloc_salloc" to [20 x i8]* + %"$indices_buf_90" = bitcast [20 x i8]* %"$indices_buf_90_salloc" to i8* + %"$indices_gep_91" = getelementptr i8, i8* %"$indices_buf_90", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_91" to [20 x i8]* store [20 x i8] %_sender, [20 x i8]* %indices_cast - %"$execptr_load_77" = load i8*, i8** @_execptr - %"$cur_79" = call i8* @_fetch_field(i8* %"$execptr_load_77", i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$access_count_78", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_40", i32 1, i8* %"$indices_buf_75", i32 1) - %"$cur_80" = bitcast i8* %"$cur_79" to %TName_Option_Int32* - store %TName_Option_Int32* %"$cur_80", %TName_Option_Int32** %cur - %"$cur_82" = load %TName_Option_Int32*, %TName_Option_Int32** %cur - %"$cur_tag_83" = getelementptr inbounds %TName_Option_Int32, %TName_Option_Int32* %"$cur_82", i32 0, i32 0 - %"$cur_tag_84" = load i8, i8* %"$cur_tag_83" - switch i8 %"$cur_tag_84", label %"$empty_default_85" [ - i8 0, label %"$Some_86" - i8 1, label %"$None_103" + %"$execptr_load_92" = load i8*, i8** @_execptr + %"$cur_94" = call i8* @_fetch_field(i8* %"$execptr_load_92", i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$access_count_93", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_40", i32 1, i8* %"$indices_buf_90", i32 1) + %"$cur_95" = bitcast i8* %"$cur_94" to %TName_Option_Int32* + store %TName_Option_Int32* %"$cur_95", %TName_Option_Int32** %cur + %"$cur_96" = load %TName_Option_Int32*, %TName_Option_Int32** %cur + %"$$cur_96_97" = bitcast %TName_Option_Int32* %"$cur_96" to i8* + %"$_literal_cost_call_98" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Int32_38", i8* %"$$cur_96_97") + %"$gasadd_99" = add i64 %"$_literal_cost_call_98", 0 + %"$gasadd_100" = add i64 %"$gasadd_99", 1 + %"$gasrem_101" = load i64, i64* @_gasrem + %"$gascmp_102" = icmp ugt i64 %"$gasadd_100", %"$gasrem_101" + br i1 %"$gascmp_102", label %"$out_of_gas_103", label %"$have_gas_104" + +"$out_of_gas_103": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_104" + +"$have_gas_104": ; preds = %"$out_of_gas_103", %entry + %"$consume_105" = sub i64 %"$gasrem_101", %"$gasadd_100" + store i64 %"$consume_105", i64* @_gasrem + %"$gasrem_106" = load i64, i64* @_gasrem + %"$gascmp_107" = icmp ugt i64 2, %"$gasrem_106" + br i1 %"$gascmp_107", label %"$out_of_gas_108", label %"$have_gas_109" + +"$out_of_gas_108": ; preds = %"$have_gas_104" + call void @_out_of_gas() + br label %"$have_gas_109" + +"$have_gas_109": ; preds = %"$out_of_gas_108", %"$have_gas_104" + %"$consume_110" = sub i64 %"$gasrem_106", 2 + store i64 %"$consume_110", i64* @_gasrem + %"$cur_112" = load %TName_Option_Int32*, %TName_Option_Int32** %cur + %"$cur_tag_113" = getelementptr inbounds %TName_Option_Int32, %TName_Option_Int32* %"$cur_112", i32 0, i32 0 + %"$cur_tag_114" = load i8, i8* %"$cur_tag_113" + switch i8 %"$cur_tag_114", label %"$empty_default_115" [ + i8 0, label %"$Some_116" + i8 1, label %"$None_153" ] -"$Some_86": ; preds = %entry - %"$cur_87" = bitcast %TName_Option_Int32* %"$cur_82" to %CName_Some_Int32* - %"$i_gep_88" = getelementptr inbounds %CName_Some_Int32, %CName_Some_Int32* %"$cur_87", i32 0, i32 1 - %"$i_load_89" = load %Int32, %Int32* %"$i_gep_88" +"$Some_116": ; preds = %"$have_gas_109" + %"$cur_117" = bitcast %TName_Option_Int32* %"$cur_112" to %CName_Some_Int32* + %"$i_gep_118" = getelementptr inbounds %CName_Some_Int32, %CName_Some_Int32* %"$cur_117", i32 0, i32 1 + %"$i_load_119" = load %Int32, %Int32* %"$i_gep_118" %i = alloca %Int32 - store %Int32 %"$i_load_89", %Int32* %i + store %Int32 %"$i_load_119", %Int32* %i + %"$gasrem_120" = load i64, i64* @_gasrem + %"$gascmp_121" = icmp ugt i64 1, %"$gasrem_120" + br i1 %"$gascmp_121", label %"$out_of_gas_122", label %"$have_gas_123" + +"$out_of_gas_122": ; preds = %"$Some_116" + call void @_out_of_gas() + br label %"$have_gas_123" + +"$have_gas_123": ; preds = %"$out_of_gas_122", %"$Some_116" + %"$consume_124" = sub i64 %"$gasrem_120", 1 + store i64 %"$consume_124", i64* @_gasrem %j = alloca %Int32 + %"$gasrem_125" = load i64, i64* @_gasrem + %"$gascmp_126" = icmp ugt i64 1, %"$gasrem_125" + br i1 %"$gascmp_126", label %"$out_of_gas_127", label %"$have_gas_128" + +"$out_of_gas_127": ; preds = %"$have_gas_123" + call void @_out_of_gas() + br label %"$have_gas_128" + +"$have_gas_128": ; preds = %"$out_of_gas_127", %"$have_gas_123" + %"$consume_129" = sub i64 %"$gasrem_125", 1 + store i64 %"$consume_129", i64* @_gasrem %"$inc_0" = alloca %Int32 - %"$inc_90" = load { %Int32 (i8*, %Int32)*, i8* }, { %Int32 (i8*, %Int32)*, i8* }* @inc - %"$inc_fptr_91" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$inc_90", 0 - %"$inc_envptr_92" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$inc_90", 1 - %"$i_93" = load %Int32, %Int32* %i - %"$inc_call_94" = call %Int32 %"$inc_fptr_91"(i8* %"$inc_envptr_92", %Int32 %"$i_93") - store %Int32 %"$inc_call_94", %Int32* %"$inc_0" - %"$$inc_0_95" = load %Int32, %Int32* %"$inc_0" - store %Int32 %"$$inc_0_95", %Int32* %j - %"$indices_buf_96_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_96_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_96_salloc_load", i64 20) - %"$indices_buf_96_salloc" = bitcast i8* %"$indices_buf_96_salloc_salloc" to [20 x i8]* - %"$indices_buf_96" = bitcast [20 x i8]* %"$indices_buf_96_salloc" to i8* - %"$indices_gep_97" = getelementptr i8, i8* %"$indices_buf_96", i32 0 - %indices_cast1 = bitcast i8* %"$indices_gep_97" to [20 x i8]* + %"$inc_130" = load { %Int32 (i8*, %Int32)*, i8* }, { %Int32 (i8*, %Int32)*, i8* }* @inc + %"$inc_fptr_131" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$inc_130", 0 + %"$inc_envptr_132" = extractvalue { %Int32 (i8*, %Int32)*, i8* } %"$inc_130", 1 + %"$i_133" = load %Int32, %Int32* %i + %"$inc_call_134" = call %Int32 %"$inc_fptr_131"(i8* %"$inc_envptr_132", %Int32 %"$i_133") + store %Int32 %"$inc_call_134", %Int32* %"$inc_0" + %"$$inc_0_135" = load %Int32, %Int32* %"$inc_0" + store %Int32 %"$$inc_0_135", %Int32* %j + %"$_literal_cost_j_136" = alloca %Int32 + %"$j_137" = load %Int32, %Int32* %j + store %Int32 %"$j_137", %Int32* %"$_literal_cost_j_136" + %"$$_literal_cost_j_136_138" = bitcast %Int32* %"$_literal_cost_j_136" to i8* + %"$_literal_cost_call_139" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Int32_6", i8* %"$$_literal_cost_j_136_138") + %"$gasadd_140" = add i64 %"$_literal_cost_call_139", 1 + %"$gasrem_141" = load i64, i64* @_gasrem + %"$gascmp_142" = icmp ugt i64 %"$gasadd_140", %"$gasrem_141" + br i1 %"$gascmp_142", label %"$out_of_gas_143", label %"$have_gas_144" + +"$out_of_gas_143": ; preds = %"$have_gas_128" + call void @_out_of_gas() + br label %"$have_gas_144" + +"$have_gas_144": ; preds = %"$out_of_gas_143", %"$have_gas_128" + %"$consume_145" = sub i64 %"$gasrem_141", %"$gasadd_140" + store i64 %"$consume_145", i64* @_gasrem + %"$indices_buf_146_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_146_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_146_salloc_load", i64 20) + %"$indices_buf_146_salloc" = bitcast i8* %"$indices_buf_146_salloc_salloc" to [20 x i8]* + %"$indices_buf_146" = bitcast [20 x i8]* %"$indices_buf_146_salloc" to i8* + %"$indices_gep_147" = getelementptr i8, i8* %"$indices_buf_146", i32 0 + %indices_cast1 = bitcast i8* %"$indices_gep_147" to [20 x i8]* store [20 x i8] %_sender, [20 x i8]* %indices_cast1 - %"$execptr_load_98" = load i8*, i8** @_execptr - %"$j_100" = load %Int32, %Int32* %j - %"$update_value_101" = alloca %Int32 - store %Int32 %"$j_100", %Int32* %"$update_value_101" - %"$update_value_102" = bitcast %Int32* %"$update_value_101" to i8* - call void @_update_field(i8* %"$execptr_load_98", i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$access_count_99", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_40", i32 1, i8* %"$indices_buf_96", i8* %"$update_value_102") - br label %"$matchsucc_81" - -"$None_103": ; preds = %entry - %"$cur_104" = bitcast %TName_Option_Int32* %"$cur_82" to %CName_None_Int32* - %"$indices_buf_105_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_105_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_105_salloc_load", i64 20) - %"$indices_buf_105_salloc" = bitcast i8* %"$indices_buf_105_salloc_salloc" to [20 x i8]* - %"$indices_buf_105" = bitcast [20 x i8]* %"$indices_buf_105_salloc" to i8* - %"$indices_gep_106" = getelementptr i8, i8* %"$indices_buf_105", i32 0 - %indices_cast2 = bitcast i8* %"$indices_gep_106" to [20 x i8]* + %"$execptr_load_148" = load i8*, i8** @_execptr + %"$j_150" = load %Int32, %Int32* %j + %"$update_value_151" = alloca %Int32 + store %Int32 %"$j_150", %Int32* %"$update_value_151" + %"$update_value_152" = bitcast %Int32* %"$update_value_151" to i8* + call void @_update_field(i8* %"$execptr_load_148", i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$access_count_149", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_40", i32 1, i8* %"$indices_buf_146", i8* %"$update_value_152") + br label %"$matchsucc_111" + +"$None_153": ; preds = %"$have_gas_109" + %"$cur_154" = bitcast %TName_Option_Int32* %"$cur_112" to %CName_None_Int32* + %"$_literal_cost_one_155" = alloca %Int32 + %"$one_156" = load %Int32, %Int32* @one + store %Int32 %"$one_156", %Int32* %"$_literal_cost_one_155" + %"$$_literal_cost_one_155_157" = bitcast %Int32* %"$_literal_cost_one_155" to i8* + %"$_literal_cost_call_158" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Int32_6", i8* %"$$_literal_cost_one_155_157") + %"$gasadd_159" = add i64 %"$_literal_cost_call_158", 1 + %"$gasrem_160" = load i64, i64* @_gasrem + %"$gascmp_161" = icmp ugt i64 %"$gasadd_159", %"$gasrem_160" + br i1 %"$gascmp_161", label %"$out_of_gas_162", label %"$have_gas_163" + +"$out_of_gas_162": ; preds = %"$None_153" + call void @_out_of_gas() + br label %"$have_gas_163" + +"$have_gas_163": ; preds = %"$out_of_gas_162", %"$None_153" + %"$consume_164" = sub i64 %"$gasrem_160", %"$gasadd_159" + store i64 %"$consume_164", i64* @_gasrem + %"$indices_buf_165_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_165_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_165_salloc_load", i64 20) + %"$indices_buf_165_salloc" = bitcast i8* %"$indices_buf_165_salloc_salloc" to [20 x i8]* + %"$indices_buf_165" = bitcast [20 x i8]* %"$indices_buf_165_salloc" to i8* + %"$indices_gep_166" = getelementptr i8, i8* %"$indices_buf_165", i32 0 + %indices_cast2 = bitcast i8* %"$indices_gep_166" to [20 x i8]* store [20 x i8] %_sender, [20 x i8]* %indices_cast2 - %"$execptr_load_107" = load i8*, i8** @_execptr - %"$one_109" = load %Int32, %Int32* @one - %"$update_value_110" = alloca %Int32 - store %Int32 %"$one_109", %Int32* %"$update_value_110" - %"$update_value_111" = bitcast %Int32* %"$update_value_110" to i8* - call void @_update_field(i8* %"$execptr_load_107", i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$access_count_108", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_40", i32 1, i8* %"$indices_buf_105", i8* %"$update_value_111") - br label %"$matchsucc_81" - -"$empty_default_85": ; preds = %entry - br label %"$matchsucc_81" - -"$matchsucc_81": ; preds = %"$None_103", %"$Some_86", %"$empty_default_85" + %"$execptr_load_167" = load i8*, i8** @_execptr + %"$one_169" = load %Int32, %Int32* @one + %"$update_value_170" = alloca %Int32 + store %Int32 %"$one_169", %Int32* %"$update_value_170" + %"$update_value_171" = bitcast %Int32* %"$update_value_170" to i8* + call void @_update_field(i8* %"$execptr_load_167", i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$access_count_168", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_40", i32 1, i8* %"$indices_buf_165", i8* %"$update_value_171") + br label %"$matchsucc_111" + +"$empty_default_115": ; preds = %"$have_gas_109" + br label %"$matchsucc_111" + +"$matchsucc_111": ; preds = %"$have_gas_163", %"$have_gas_144", %"$empty_default_115" ret void } declare i8* @_fetch_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i32) +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + define void @Increment(i8* %0) { entry: - %"$_amount_113" = getelementptr i8, i8* %0, i32 0 - %"$_amount_114" = bitcast i8* %"$_amount_113" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_114" - %"$_sender_115" = getelementptr i8, i8* %0, i32 16 - %"$_sender_116" = bitcast i8* %"$_sender_115" to [20 x i8]* - call void @"$Increment_73"(%Uint128 %_amount, [20 x i8]* %"$_sender_116") + %"$_amount_173" = getelementptr i8, i8* %0, i32 0 + %"$_amount_174" = bitcast i8* %"$_amount_173" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_174" + %"$_sender_175" = getelementptr i8, i8* %0, i32 16 + %"$_sender_176" = bitcast i8* %"$_sender_175" to [20 x i8]* + call void @"$Increment_88"(%Uint128 %_amount, [20 x i8]* %"$_sender_176") ret void } -define internal void @"$IncrementN_117"(%Uint128 %_amount, [20 x i8]* %"$_sender_118", %Int32 %n) { +define internal void @"$IncrementN_177"(%Uint128 %_amount, [20 x i8]* %"$_sender_178", %Int32 %n) { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_118" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_178" %cur = alloca %TName_Option_Int32* - %"$indices_buf_119_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_119_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_119_salloc_load", i64 20) - %"$indices_buf_119_salloc" = bitcast i8* %"$indices_buf_119_salloc_salloc" to [20 x i8]* - %"$indices_buf_119" = bitcast [20 x i8]* %"$indices_buf_119_salloc" to i8* - %"$indices_gep_120" = getelementptr i8, i8* %"$indices_buf_119", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_120" to [20 x i8]* + %"$indices_buf_179_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_179_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_179_salloc_load", i64 20) + %"$indices_buf_179_salloc" = bitcast i8* %"$indices_buf_179_salloc_salloc" to [20 x i8]* + %"$indices_buf_179" = bitcast [20 x i8]* %"$indices_buf_179_salloc" to i8* + %"$indices_gep_180" = getelementptr i8, i8* %"$indices_buf_179", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_180" to [20 x i8]* store [20 x i8] %_sender, [20 x i8]* %indices_cast - %"$execptr_load_121" = load i8*, i8** @_execptr - %"$cur_123" = call i8* @_fetch_field(i8* %"$execptr_load_121", i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$access_count_122", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_40", i32 1, i8* %"$indices_buf_119", i32 1) - %"$cur_124" = bitcast i8* %"$cur_123" to %TName_Option_Int32* - store %TName_Option_Int32* %"$cur_124", %TName_Option_Int32** %cur - %"$cur_126" = load %TName_Option_Int32*, %TName_Option_Int32** %cur - %"$cur_tag_127" = getelementptr inbounds %TName_Option_Int32, %TName_Option_Int32* %"$cur_126", i32 0, i32 0 - %"$cur_tag_128" = load i8, i8* %"$cur_tag_127" - switch i8 %"$cur_tag_128", label %"$empty_default_129" [ - i8 0, label %"$Some_130" - i8 1, label %"$None_143" + %"$execptr_load_181" = load i8*, i8** @_execptr + %"$cur_183" = call i8* @_fetch_field(i8* %"$execptr_load_181", i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$access_count_182", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_40", i32 1, i8* %"$indices_buf_179", i32 1) + %"$cur_184" = bitcast i8* %"$cur_183" to %TName_Option_Int32* + store %TName_Option_Int32* %"$cur_184", %TName_Option_Int32** %cur + %"$cur_185" = load %TName_Option_Int32*, %TName_Option_Int32** %cur + %"$$cur_185_186" = bitcast %TName_Option_Int32* %"$cur_185" to i8* + %"$_literal_cost_call_187" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Int32_38", i8* %"$$cur_185_186") + %"$gasadd_188" = add i64 %"$_literal_cost_call_187", 0 + %"$gasadd_189" = add i64 %"$gasadd_188", 1 + %"$gasrem_190" = load i64, i64* @_gasrem + %"$gascmp_191" = icmp ugt i64 %"$gasadd_189", %"$gasrem_190" + br i1 %"$gascmp_191", label %"$out_of_gas_192", label %"$have_gas_193" + +"$out_of_gas_192": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_193" + +"$have_gas_193": ; preds = %"$out_of_gas_192", %entry + %"$consume_194" = sub i64 %"$gasrem_190", %"$gasadd_189" + store i64 %"$consume_194", i64* @_gasrem + %"$gasrem_195" = load i64, i64* @_gasrem + %"$gascmp_196" = icmp ugt i64 2, %"$gasrem_195" + br i1 %"$gascmp_196", label %"$out_of_gas_197", label %"$have_gas_198" + +"$out_of_gas_197": ; preds = %"$have_gas_193" + call void @_out_of_gas() + br label %"$have_gas_198" + +"$have_gas_198": ; preds = %"$out_of_gas_197", %"$have_gas_193" + %"$consume_199" = sub i64 %"$gasrem_195", 2 + store i64 %"$consume_199", i64* @_gasrem + %"$cur_201" = load %TName_Option_Int32*, %TName_Option_Int32** %cur + %"$cur_tag_202" = getelementptr inbounds %TName_Option_Int32, %TName_Option_Int32* %"$cur_201", i32 0, i32 0 + %"$cur_tag_203" = load i8, i8* %"$cur_tag_202" + switch i8 %"$cur_tag_203", label %"$empty_default_204" [ + i8 0, label %"$Some_205" + i8 1, label %"$None_233" ] -"$Some_130": ; preds = %entry - %"$cur_131" = bitcast %TName_Option_Int32* %"$cur_126" to %CName_Some_Int32* - %"$i_gep_132" = getelementptr inbounds %CName_Some_Int32, %CName_Some_Int32* %"$cur_131", i32 0, i32 1 - %"$i_load_133" = load %Int32, %Int32* %"$i_gep_132" +"$Some_205": ; preds = %"$have_gas_198" + %"$cur_206" = bitcast %TName_Option_Int32* %"$cur_201" to %CName_Some_Int32* + %"$i_gep_207" = getelementptr inbounds %CName_Some_Int32, %CName_Some_Int32* %"$cur_206", i32 0, i32 1 + %"$i_load_208" = load %Int32, %Int32* %"$i_gep_207" %i = alloca %Int32 - store %Int32 %"$i_load_133", %Int32* %i + store %Int32 %"$i_load_208", %Int32* %i + %"$gasrem_209" = load i64, i64* @_gasrem + %"$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 = %"$Some_205" + call void @_out_of_gas() + br label %"$have_gas_212" + +"$have_gas_212": ; preds = %"$out_of_gas_211", %"$Some_205" + %"$consume_213" = sub i64 %"$gasrem_209", 1 + store i64 %"$consume_213", i64* @_gasrem %j = alloca %Int32 - %"$i_134" = load %Int32, %Int32* %i - %"$add_call_135" = call %Int32 @_add_Int32(%Int32 %"$i_134", %Int32 %n) - store %Int32 %"$add_call_135", %Int32* %j - %"$indices_buf_136_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_136_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_136_salloc_load", i64 20) - %"$indices_buf_136_salloc" = bitcast i8* %"$indices_buf_136_salloc_salloc" to [20 x i8]* - %"$indices_buf_136" = bitcast [20 x i8]* %"$indices_buf_136_salloc" to i8* - %"$indices_gep_137" = getelementptr i8, i8* %"$indices_buf_136", i32 0 - %indices_cast1 = bitcast i8* %"$indices_gep_137" to [20 x i8]* + %"$i_214" = load %Int32, %Int32* %i + %"$add_call_215" = call %Int32 @_add_Int32(%Int32 %"$i_214", %Int32 %n) + store %Int32 %"$add_call_215", %Int32* %j + %"$_literal_cost_j_216" = alloca %Int32 + %"$j_217" = load %Int32, %Int32* %j + store %Int32 %"$j_217", %Int32* %"$_literal_cost_j_216" + %"$$_literal_cost_j_216_218" = bitcast %Int32* %"$_literal_cost_j_216" to i8* + %"$_literal_cost_call_219" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Int32_6", i8* %"$$_literal_cost_j_216_218") + %"$gasadd_220" = add i64 %"$_literal_cost_call_219", 1 + %"$gasrem_221" = load i64, i64* @_gasrem + %"$gascmp_222" = icmp ugt i64 %"$gasadd_220", %"$gasrem_221" + br i1 %"$gascmp_222", label %"$out_of_gas_223", label %"$have_gas_224" + +"$out_of_gas_223": ; preds = %"$have_gas_212" + call void @_out_of_gas() + br label %"$have_gas_224" + +"$have_gas_224": ; preds = %"$out_of_gas_223", %"$have_gas_212" + %"$consume_225" = sub i64 %"$gasrem_221", %"$gasadd_220" + store i64 %"$consume_225", i64* @_gasrem + %"$indices_buf_226_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_226_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_226_salloc_load", i64 20) + %"$indices_buf_226_salloc" = bitcast i8* %"$indices_buf_226_salloc_salloc" to [20 x i8]* + %"$indices_buf_226" = bitcast [20 x i8]* %"$indices_buf_226_salloc" to i8* + %"$indices_gep_227" = getelementptr i8, i8* %"$indices_buf_226", i32 0 + %indices_cast1 = bitcast i8* %"$indices_gep_227" to [20 x i8]* store [20 x i8] %_sender, [20 x i8]* %indices_cast1 - %"$execptr_load_138" = load i8*, i8** @_execptr - %"$j_140" = load %Int32, %Int32* %j - %"$update_value_141" = alloca %Int32 - store %Int32 %"$j_140", %Int32* %"$update_value_141" - %"$update_value_142" = bitcast %Int32* %"$update_value_141" to i8* - call void @_update_field(i8* %"$execptr_load_138", i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$access_count_139", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_40", i32 1, i8* %"$indices_buf_136", i8* %"$update_value_142") - br label %"$matchsucc_125" - -"$None_143": ; preds = %entry - %"$cur_144" = bitcast %TName_Option_Int32* %"$cur_126" to %CName_None_Int32* - %"$indices_buf_145_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_145_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_145_salloc_load", i64 20) - %"$indices_buf_145_salloc" = bitcast i8* %"$indices_buf_145_salloc_salloc" to [20 x i8]* - %"$indices_buf_145" = bitcast [20 x i8]* %"$indices_buf_145_salloc" to i8* - %"$indices_gep_146" = getelementptr i8, i8* %"$indices_buf_145", i32 0 - %indices_cast2 = bitcast i8* %"$indices_gep_146" to [20 x i8]* + %"$execptr_load_228" = load i8*, i8** @_execptr + %"$j_230" = load %Int32, %Int32* %j + %"$update_value_231" = alloca %Int32 + store %Int32 %"$j_230", %Int32* %"$update_value_231" + %"$update_value_232" = bitcast %Int32* %"$update_value_231" to i8* + call void @_update_field(i8* %"$execptr_load_228", i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$access_count_229", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_40", i32 1, i8* %"$indices_buf_226", i8* %"$update_value_232") + br label %"$matchsucc_200" + +"$None_233": ; preds = %"$have_gas_198" + %"$cur_234" = bitcast %TName_Option_Int32* %"$cur_201" to %CName_None_Int32* + %"$_literal_cost_n_235" = alloca %Int32 + store %Int32 %n, %Int32* %"$_literal_cost_n_235" + %"$$_literal_cost_n_235_236" = bitcast %Int32* %"$_literal_cost_n_235" to i8* + %"$_literal_cost_call_237" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Int32_6", i8* %"$$_literal_cost_n_235_236") + %"$gasadd_238" = add i64 %"$_literal_cost_call_237", 1 + %"$gasrem_239" = load i64, i64* @_gasrem + %"$gascmp_240" = icmp ugt i64 %"$gasadd_238", %"$gasrem_239" + br i1 %"$gascmp_240", label %"$out_of_gas_241", label %"$have_gas_242" + +"$out_of_gas_241": ; preds = %"$None_233" + call void @_out_of_gas() + br label %"$have_gas_242" + +"$have_gas_242": ; preds = %"$out_of_gas_241", %"$None_233" + %"$consume_243" = sub i64 %"$gasrem_239", %"$gasadd_238" + store i64 %"$consume_243", i64* @_gasrem + %"$indices_buf_244_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_244_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_244_salloc_load", i64 20) + %"$indices_buf_244_salloc" = bitcast i8* %"$indices_buf_244_salloc_salloc" to [20 x i8]* + %"$indices_buf_244" = bitcast [20 x i8]* %"$indices_buf_244_salloc" to i8* + %"$indices_gep_245" = getelementptr i8, i8* %"$indices_buf_244", i32 0 + %indices_cast2 = bitcast i8* %"$indices_gep_245" to [20 x i8]* store [20 x i8] %_sender, [20 x i8]* %indices_cast2 - %"$execptr_load_147" = load i8*, i8** @_execptr - %"$update_value_149" = alloca %Int32 - store %Int32 %n, %Int32* %"$update_value_149" - %"$update_value_150" = bitcast %Int32* %"$update_value_149" to i8* - call void @_update_field(i8* %"$execptr_load_147", i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$access_count_148", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_40", i32 1, i8* %"$indices_buf_145", i8* %"$update_value_150") - br label %"$matchsucc_125" + %"$execptr_load_246" = load i8*, i8** @_execptr + %"$update_value_248" = alloca %Int32 + store %Int32 %n, %Int32* %"$update_value_248" + %"$update_value_249" = bitcast %Int32* %"$update_value_248" to i8* + call void @_update_field(i8* %"$execptr_load_246", i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$access_count_247", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_40", i32 1, i8* %"$indices_buf_244", i8* %"$update_value_249") + br label %"$matchsucc_200" -"$empty_default_129": ; preds = %entry - br label %"$matchsucc_125" +"$empty_default_204": ; preds = %"$have_gas_198" + br label %"$matchsucc_200" -"$matchsucc_125": ; preds = %"$None_143", %"$Some_130", %"$empty_default_129" +"$matchsucc_200": ; preds = %"$have_gas_242", %"$have_gas_224", %"$empty_default_204" ret void } -define internal void @"$IncrementNOpt_151"(%Uint128 %_amount, [20 x i8]* %"$_sender_152", %TName_Option_Int32* %nopt) { +define internal void @"$IncrementNOpt_250"(%Uint128 %_amount, [20 x i8]* %"$_sender_251", %TName_Option_Int32* %nopt) { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_152" - %"$nopt_tag_154" = getelementptr inbounds %TName_Option_Int32, %TName_Option_Int32* %nopt, i32 0, i32 0 - %"$nopt_tag_155" = load i8, i8* %"$nopt_tag_154" - switch i8 %"$nopt_tag_155", label %"$empty_default_156" [ - i8 0, label %"$Some_157" - i8 1, label %"$None_163" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_251" + %"$gasrem_252" = load i64, i64* @_gasrem + %"$gascmp_253" = icmp ugt i64 2, %"$gasrem_252" + br i1 %"$gascmp_253", label %"$out_of_gas_254", label %"$have_gas_255" + +"$out_of_gas_254": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_255" + +"$have_gas_255": ; preds = %"$out_of_gas_254", %entry + %"$consume_256" = sub i64 %"$gasrem_252", 2 + store i64 %"$consume_256", i64* @_gasrem + %"$nopt_tag_258" = getelementptr inbounds %TName_Option_Int32, %TName_Option_Int32* %nopt, i32 0, i32 0 + %"$nopt_tag_259" = load i8, i8* %"$nopt_tag_258" + switch i8 %"$nopt_tag_259", label %"$empty_default_260" [ + i8 0, label %"$Some_261" + i8 1, label %"$None_272" ] -"$Some_157": ; preds = %entry - %"$nopt_158" = bitcast %TName_Option_Int32* %nopt to %CName_Some_Int32* - %"$n_gep_159" = getelementptr inbounds %CName_Some_Int32, %CName_Some_Int32* %"$nopt_158", i32 0, i32 1 - %"$n_load_160" = load %Int32, %Int32* %"$n_gep_159" +"$Some_261": ; preds = %"$have_gas_255" + %"$nopt_262" = bitcast %TName_Option_Int32* %nopt to %CName_Some_Int32* + %"$n_gep_263" = getelementptr inbounds %CName_Some_Int32, %CName_Some_Int32* %"$nopt_262", i32 0, i32 1 + %"$n_load_264" = load %Int32, %Int32* %"$n_gep_263" %n = alloca %Int32 - store %Int32 %"$n_load_160", %Int32* %n - %"$IncrementN__sender_161" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$IncrementN__sender_161" - %"$n_162" = load %Int32, %Int32* %n - call void @"$IncrementN_117"(%Uint128 %_amount, [20 x i8]* %"$IncrementN__sender_161", %Int32 %"$n_162") - br label %"$matchsucc_153" + store %Int32 %"$n_load_264", %Int32* %n + %"$gasrem_265" = load i64, i64* @_gasrem + %"$gascmp_266" = icmp ugt i64 1, %"$gasrem_265" + br i1 %"$gascmp_266", label %"$out_of_gas_267", label %"$have_gas_268" + +"$out_of_gas_267": ; preds = %"$Some_261" + call void @_out_of_gas() + br label %"$have_gas_268" + +"$have_gas_268": ; preds = %"$out_of_gas_267", %"$Some_261" + %"$consume_269" = sub i64 %"$gasrem_265", 1 + store i64 %"$consume_269", i64* @_gasrem + %"$IncrementN__sender_270" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$IncrementN__sender_270" + %"$n_271" = load %Int32, %Int32* %n + call void @"$IncrementN_177"(%Uint128 %_amount, [20 x i8]* %"$IncrementN__sender_270", %Int32 %"$n_271") + br label %"$matchsucc_257" -"$None_163": ; preds = %entry - %"$nopt_164" = bitcast %TName_Option_Int32* %nopt to %CName_None_Int32* - br label %"$matchsucc_153" +"$None_272": ; preds = %"$have_gas_255" + %"$nopt_273" = bitcast %TName_Option_Int32* %nopt to %CName_None_Int32* + br label %"$matchsucc_257" -"$empty_default_156": ; preds = %entry - br label %"$matchsucc_153" +"$empty_default_260": ; preds = %"$have_gas_255" + br label %"$matchsucc_257" -"$matchsucc_153": ; preds = %"$None_163", %"$Some_157", %"$empty_default_156" +"$matchsucc_257": ; preds = %"$None_272", %"$have_gas_268", %"$empty_default_260" ret void } define void @IncrementNOpt(i8* %0) { entry: - %"$_amount_166" = getelementptr i8, i8* %0, i32 0 - %"$_amount_167" = bitcast i8* %"$_amount_166" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_167" - %"$_sender_168" = getelementptr i8, i8* %0, i32 16 - %"$_sender_169" = bitcast i8* %"$_sender_168" to [20 x i8]* - %"$nopt_170" = getelementptr i8, i8* %0, i32 36 - %"$nopt_171" = bitcast i8* %"$nopt_170" to %TName_Option_Int32** - %nopt = load %TName_Option_Int32*, %TName_Option_Int32** %"$nopt_171" - call void @"$IncrementNOpt_151"(%Uint128 %_amount, [20 x i8]* %"$_sender_169", %TName_Option_Int32* %nopt) + %"$_amount_275" = getelementptr i8, i8* %0, i32 0 + %"$_amount_276" = bitcast i8* %"$_amount_275" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_276" + %"$_sender_277" = getelementptr i8, i8* %0, i32 16 + %"$_sender_278" = bitcast i8* %"$_sender_277" to [20 x i8]* + %"$nopt_279" = getelementptr i8, i8* %0, i32 36 + %"$nopt_280" = bitcast i8* %"$nopt_279" to %TName_Option_Int32** + %nopt = load %TName_Option_Int32*, %TName_Option_Int32** %"$nopt_280" + call void @"$IncrementNOpt_250"(%Uint128 %_amount, [20 x i8]* %"$_sender_278", %TName_Option_Int32* %nopt) ret void } diff --git a/testsuite/contr/simple-map.output.json b/testsuite/contr/simple-map.output.json index 07164781..3cffb122 100644 --- a/testsuite/contr/simple-map.output.json +++ b/testsuite/contr/simple-map.output.json @@ -1,7 +1,7 @@ { "_accepted" : "false", "events" : [], - "gas_remaining" : "10000000", + "gas_remaining" : "9999982", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/simple-map.output_00_0.json b/testsuite/contr/simple-map.output_00_0.json new file mode 100644 index 00000000..3f098596 --- /dev/null +++ b/testsuite/contr/simple-map.output_00_0.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999990", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/simple-map.output_00_1.json b/testsuite/contr/simple-map.output_00_1.json new file mode 100644 index 00000000..5e8d3f06 --- /dev/null +++ b/testsuite/contr/simple-map.output_00_1.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999987", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/simple-map.output_01_0.json b/testsuite/contr/simple-map.output_01_0.json new file mode 100644 index 00000000..a1908c72 --- /dev/null +++ b/testsuite/contr/simple-map.output_01_0.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999984", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/simple-map.output_01_1.json b/testsuite/contr/simple-map.output_01_1.json new file mode 100644 index 00000000..3cffb122 --- /dev/null +++ b/testsuite/contr/simple-map.output_01_1.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999982", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/throw.ll b/testsuite/contr/throw.ll index db8ee768..7516126c 100644 --- a/testsuite/contr/throw.ll +++ b/testsuite/contr/throw.ll @@ -46,8 +46,8 @@ target triple = "x86_64-pc-linux-gnu" @"$TyDescr_Bystr20_30" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_0"* @"$TyDescr_Bystr20_Prim_29" to i8*) } @_scilla_version = global %Uint32 zeroinitializer @_this_address = global [20 x i8] zeroinitializer -@"$stringlit_46" = unnamed_addr constant [10 x i8] c"_exception" -@"$stringlit_51" = unnamed_addr constant [3 x i8] c"Foo" +@"$stringlit_56" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_61" = unnamed_addr constant [3 x i8] c"Foo" @_tydescr_table = constant [15 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Event_24", %_TyDescrTy_Typ* @"$TyDescr_Int64_6", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_30", %_TyDescrTy_Typ* @"$TyDescr_Uint256_16", %_TyDescrTy_Typ* @"$TyDescr_Uint32_4", %_TyDescrTy_Typ* @"$TyDescr_Uint64_8", %_TyDescrTy_Typ* @"$TyDescr_Bnum_20", %_TyDescrTy_Typ* @"$TyDescr_Uint128_12", %_TyDescrTy_Typ* @"$TyDescr_Exception_26", %_TyDescrTy_Typ* @"$TyDescr_String_18", %_TyDescrTy_Typ* @"$TyDescr_Int256_14", %_TyDescrTy_Typ* @"$TyDescr_Int128_10", %_TyDescrTy_Typ* @"$TyDescr_Bystr_28", %_TyDescrTy_Typ* @"$TyDescr_Message_22", %_TyDescrTy_Typ* @"$TyDescr_Int32_2"] @_tydescr_table_length = constant i32 15 @@ -85,37 +85,61 @@ entry: define internal void @"$ThrowObj_43"(%Uint128 %_amount, [20 x i8]* %"$_sender_44") { entry: %_sender = load [20 x i8], [20 x i8]* %"$_sender_44" + %"$gasrem_45" = load i64, i64* @_gasrem + %"$gascmp_46" = icmp ugt i64 1, %"$gasrem_45" + br i1 %"$gascmp_46", label %"$out_of_gas_47", label %"$have_gas_48" + +"$out_of_gas_47": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_48" + +"$have_gas_48": ; preds = %"$out_of_gas_47", %entry + %"$consume_49" = sub i64 %"$gasrem_45", 1 + store i64 %"$consume_49", i64* @_gasrem %t = alloca i8* - %"$msgobj_45_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_45_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_45_salloc_load", i64 41) - %"$msgobj_45_salloc" = bitcast i8* %"$msgobj_45_salloc_salloc" to [41 x i8]* - %"$msgobj_45" = bitcast [41 x i8]* %"$msgobj_45_salloc" to i8* - store i8 1, i8* %"$msgobj_45" - %"$msgobj_fname_47" = getelementptr i8, i8* %"$msgobj_45", i32 1 - %"$msgobj_fname_48" = bitcast i8* %"$msgobj_fname_47" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_46", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_48" - %"$msgobj_td_49" = getelementptr i8, i8* %"$msgobj_45", i32 17 - %"$msgobj_td_50" = bitcast i8* %"$msgobj_td_49" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_18", %_TyDescrTy_Typ** %"$msgobj_td_50" - %"$msgobj_v_52" = getelementptr i8, i8* %"$msgobj_45", i32 25 - %"$msgobj_v_53" = bitcast i8* %"$msgobj_v_52" to %String* - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_51", i32 0, i32 0), i32 3 }, %String* %"$msgobj_v_53" - store i8* %"$msgobj_45", i8** %t - %"$execptr_load_55" = load i8*, i8** @_execptr - %"$t_56" = load i8*, i8** %t - call void @_throw(i8* %"$execptr_load_55", %_TyDescrTy_Typ* @"$TyDescr_Exception_26", i8* %"$t_56") + %"$gasrem_50" = load i64, i64* @_gasrem + %"$gascmp_51" = icmp ugt i64 1, %"$gasrem_50" + br i1 %"$gascmp_51", label %"$out_of_gas_52", label %"$have_gas_53" + +"$out_of_gas_52": ; preds = %"$have_gas_48" + call void @_out_of_gas() + br label %"$have_gas_53" + +"$have_gas_53": ; preds = %"$out_of_gas_52", %"$have_gas_48" + %"$consume_54" = sub i64 %"$gasrem_50", 1 + store i64 %"$consume_54", i64* @_gasrem + %"$msgobj_55_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_55_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_55_salloc_load", i64 41) + %"$msgobj_55_salloc" = bitcast i8* %"$msgobj_55_salloc_salloc" to [41 x i8]* + %"$msgobj_55" = bitcast [41 x i8]* %"$msgobj_55_salloc" to i8* + store i8 1, i8* %"$msgobj_55" + %"$msgobj_fname_57" = getelementptr i8, i8* %"$msgobj_55", i32 1 + %"$msgobj_fname_58" = bitcast i8* %"$msgobj_fname_57" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_56", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_58" + %"$msgobj_td_59" = getelementptr i8, i8* %"$msgobj_55", i32 17 + %"$msgobj_td_60" = bitcast i8* %"$msgobj_td_59" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_18", %_TyDescrTy_Typ** %"$msgobj_td_60" + %"$msgobj_v_62" = getelementptr i8, i8* %"$msgobj_55", i32 25 + %"$msgobj_v_63" = bitcast i8* %"$msgobj_v_62" to %String* + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_61", i32 0, i32 0), i32 3 }, %String* %"$msgobj_v_63" + store i8* %"$msgobj_55", i8** %t + %"$execptr_load_65" = load i8*, i8** @_execptr + %"$t_66" = load i8*, i8** %t + call void @_throw(i8* %"$execptr_load_65", %_TyDescrTy_Typ* @"$TyDescr_Exception_26", i8* %"$t_66") ret void } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) define void @ThrowObj(i8* %0) { entry: - %"$_amount_58" = getelementptr i8, i8* %0, i32 0 - %"$_amount_59" = bitcast i8* %"$_amount_58" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_59" - %"$_sender_60" = getelementptr i8, i8* %0, i32 16 - %"$_sender_61" = bitcast i8* %"$_sender_60" to [20 x i8]* - call void @"$ThrowObj_43"(%Uint128 %_amount, [20 x i8]* %"$_sender_61") + %"$_amount_68" = getelementptr i8, i8* %0, i32 0 + %"$_amount_69" = bitcast i8* %"$_amount_68" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_69" + %"$_sender_70" = getelementptr i8, i8* %0, i32 16 + %"$_sender_71" = bitcast i8* %"$_sender_70" to [20 x i8]* + call void @"$ThrowObj_43"(%Uint128 %_amount, [20 x i8]* %"$_sender_71") ret void } diff --git a/testsuite/contr/ud-proxy.ll b/testsuite/contr/ud-proxy.ll index 21de4369..b0f1f0ab 100644 --- a/testsuite/contr/ud-proxy.ll +++ b/testsuite/contr/ud-proxy.ll @@ -103,94 +103,116 @@ target triple = "x86_64-pc-linux-gnu" @"$TyDescr_List_ADTTyp_m_specls_83" = unnamed_addr constant [1 x %"$TyDescrTy_ADTTyp_Specl_41"*] [%"$TyDescrTy_ADTTyp_Specl_41"* @"$TyDescr_List_Message_ADTTyp_Specl_82"] @"$TyDescr_ADT_List_84" = unnamed_addr constant [4 x i8] c"List" @"$TyDescr_MapTyp_85" = unnamed_addr constant %"$TyDescr_MapTyp_47" { %_TyDescrTy_Typ* @"$TyDescr_Bystr20_40", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_45" } -@"$stringlit_107" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_112" = unnamed_addr constant [8 x i8] c"AdminSet" -@"$stringlit_115" = unnamed_addr constant [7 x i8] c"address" -@"$stringlit_123" = unnamed_addr constant [10 x i8] c"isApproved" +@"$stringlit_122" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_127" = unnamed_addr constant [8 x i8] c"AdminSet" +@"$stringlit_130" = unnamed_addr constant [7 x i8] c"address" +@"$stringlit_138" = unnamed_addr constant [10 x i8] c"isApproved" @true = global %TName_Bool* null @nilMessage = global %TName_List_Message* null @oneMsg = global { %TName_List_Message* (i8*, i8*)*, i8* } zeroinitializer @eAdminSet = global { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } zeroinitializer @eError = global i8* null -@"$stringlit_148" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_153" = unnamed_addr constant [5 x i8] c"Error" +@"$stringlit_188" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_193" = unnamed_addr constant [5 x i8] c"Error" @_scilla_version = global %Uint32 zeroinitializer @_this_address = global [20 x i8] zeroinitializer @initialAdmin = global [20 x i8] zeroinitializer @registry = global [20 x i8] zeroinitializer -@"$admins_171" = unnamed_addr constant [7 x i8] c"admins\00" -@"$admins_180" = unnamed_addr constant [7 x i8] c"admins\00" -@"$admins_208" = unnamed_addr constant [7 x i8] c"admins\00" -@"$admins_242" = unnamed_addr constant [7 x i8] c"admins\00" -@"$stringlit_268" = unnamed_addr constant [4 x i8] c"_tag" -@"$stringlit_273" = unnamed_addr constant [6 x i8] c"bestow" -@"$stringlit_276" = unnamed_addr constant [10 x i8] c"_recipient" -@"$stringlit_284" = unnamed_addr constant [7 x i8] c"_amount" -@"$stringlit_291" = unnamed_addr constant [5 x i8] c"label" -@"$stringlit_298" = unnamed_addr constant [5 x i8] c"owner" -@"$stringlit_305" = unnamed_addr constant [8 x i8] c"resolver" +@"$admins_221" = unnamed_addr constant [7 x i8] c"admins\00" +@"$admins_230" = unnamed_addr constant [7 x i8] c"admins\00" +@"$admins_301" = unnamed_addr constant [7 x i8] c"admins\00" +@"$admins_361" = unnamed_addr constant [7 x i8] c"admins\00" +@"$stringlit_437" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_442" = unnamed_addr constant [6 x i8] c"bestow" +@"$stringlit_445" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_453" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_460" = unnamed_addr constant [5 x i8] c"label" +@"$stringlit_467" = unnamed_addr constant [5 x i8] c"owner" +@"$stringlit_474" = unnamed_addr constant [8 x i8] c"resolver" @_tydescr_table = constant [19 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_46", %_TyDescrTy_Typ* @"$TyDescr_Event_34", %_TyDescrTy_Typ* @"$TyDescr_Int64_16", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_45", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_40", %_TyDescrTy_Typ* @"$TyDescr_Uint256_26", %_TyDescrTy_Typ* @"$TyDescr_Uint32_14", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Bool_44", %_TyDescrTy_Typ* @"$TyDescr_Uint64_18", %_TyDescrTy_Typ* @"$TyDescr_Bnum_30", %_TyDescrTy_Typ* @"$TyDescr_Uint128_22", %_TyDescrTy_Typ* @"$TyDescr_Map_48", %_TyDescrTy_Typ* @"$TyDescr_Exception_36", %_TyDescrTy_Typ* @"$TyDescr_String_28", %_TyDescrTy_Typ* @"$TyDescr_Int256_24", %_TyDescrTy_Typ* @"$TyDescr_Int128_20", %_TyDescrTy_Typ* @"$TyDescr_Bystr_38", %_TyDescrTy_Typ* @"$TyDescr_Message_32", %_TyDescrTy_Typ* @"$TyDescr_Int32_12"] @_tydescr_table_length = constant i32 19 define internal i8* @"$fundef_5"(%"$$fundef_5_env_86"* %0, %TName_Bool* %1) { entry: - %"$$fundef_5_env_address_104" = getelementptr inbounds %"$$fundef_5_env_86", %"$$fundef_5_env_86"* %0, i32 0, i32 0 - %"$address_envload_105" = load [20 x i8], [20 x i8]* %"$$fundef_5_env_address_104" + %"$$fundef_5_env_address_114" = getelementptr inbounds %"$$fundef_5_env_86", %"$$fundef_5_env_86"* %0, i32 0, i32 0 + %"$address_envload_115" = load [20 x i8], [20 x i8]* %"$$fundef_5_env_address_114" %address = alloca [20 x i8] - store [20 x i8] %"$address_envload_105", [20 x i8]* %address + store [20 x i8] %"$address_envload_115", [20 x i8]* %address %"$retval_6" = alloca i8* - %"$msgobj_106_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_106_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_106_salloc_load", i64 117) - %"$msgobj_106_salloc" = bitcast i8* %"$msgobj_106_salloc_salloc" to [117 x i8]* - %"$msgobj_106" = bitcast [117 x i8]* %"$msgobj_106_salloc" to i8* - store i8 3, i8* %"$msgobj_106" - %"$msgobj_fname_108" = getelementptr i8, i8* %"$msgobj_106", i32 1 - %"$msgobj_fname_109" = bitcast i8* %"$msgobj_fname_108" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_107", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_109" - %"$msgobj_td_110" = getelementptr i8, i8* %"$msgobj_106", i32 17 - %"$msgobj_td_111" = bitcast i8* %"$msgobj_td_110" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_28", %_TyDescrTy_Typ** %"$msgobj_td_111" - %"$msgobj_v_113" = getelementptr i8, i8* %"$msgobj_106", i32 25 - %"$msgobj_v_114" = bitcast i8* %"$msgobj_v_113" to %String* - store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_112", i32 0, i32 0), i32 8 }, %String* %"$msgobj_v_114" - %"$msgobj_fname_116" = getelementptr i8, i8* %"$msgobj_106", i32 41 - %"$msgobj_fname_117" = bitcast i8* %"$msgobj_fname_116" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_115", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_117" - %"$msgobj_td_118" = getelementptr i8, i8* %"$msgobj_106", i32 57 - %"$msgobj_td_119" = bitcast i8* %"$msgobj_td_118" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_40", %_TyDescrTy_Typ** %"$msgobj_td_119" - %"$address_120" = load [20 x i8], [20 x i8]* %address - %"$msgobj_v_121" = getelementptr i8, i8* %"$msgobj_106", i32 65 - %"$msgobj_v_122" = bitcast i8* %"$msgobj_v_121" to [20 x i8]* - store [20 x i8] %"$address_120", [20 x i8]* %"$msgobj_v_122" - %"$msgobj_fname_124" = getelementptr i8, i8* %"$msgobj_106", i32 85 - %"$msgobj_fname_125" = bitcast i8* %"$msgobj_fname_124" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_123", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_125" - %"$msgobj_td_126" = getelementptr i8, i8* %"$msgobj_106", i32 101 - %"$msgobj_td_127" = bitcast i8* %"$msgobj_td_126" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_45", %_TyDescrTy_Typ** %"$msgobj_td_127" - %"$msgobj_v_128" = getelementptr i8, i8* %"$msgobj_106", i32 109 - %"$msgobj_v_129" = bitcast i8* %"$msgobj_v_128" to %TName_Bool** - store %TName_Bool* %1, %TName_Bool** %"$msgobj_v_129" - store i8* %"$msgobj_106", i8** %"$retval_6" - %"$$retval_6_131" = load i8*, i8** %"$retval_6" - ret i8* %"$$retval_6_131" + %"$gasrem_116" = load i64, i64* @_gasrem + %"$gascmp_117" = icmp ugt i64 1, %"$gasrem_116" + br i1 %"$gascmp_117", label %"$out_of_gas_118", label %"$have_gas_119" + +"$out_of_gas_118": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_119" + +"$have_gas_119": ; preds = %"$out_of_gas_118", %entry + %"$consume_120" = sub i64 %"$gasrem_116", 1 + store i64 %"$consume_120", i64* @_gasrem + %"$msgobj_121_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_121_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_121_salloc_load", i64 117) + %"$msgobj_121_salloc" = bitcast i8* %"$msgobj_121_salloc_salloc" to [117 x i8]* + %"$msgobj_121" = bitcast [117 x i8]* %"$msgobj_121_salloc" to i8* + store i8 3, i8* %"$msgobj_121" + %"$msgobj_fname_123" = getelementptr i8, i8* %"$msgobj_121", i32 1 + %"$msgobj_fname_124" = bitcast i8* %"$msgobj_fname_123" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_122", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_124" + %"$msgobj_td_125" = getelementptr i8, i8* %"$msgobj_121", i32 17 + %"$msgobj_td_126" = bitcast i8* %"$msgobj_td_125" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_28", %_TyDescrTy_Typ** %"$msgobj_td_126" + %"$msgobj_v_128" = getelementptr i8, i8* %"$msgobj_121", i32 25 + %"$msgobj_v_129" = bitcast i8* %"$msgobj_v_128" to %String* + store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_127", i32 0, i32 0), i32 8 }, %String* %"$msgobj_v_129" + %"$msgobj_fname_131" = getelementptr i8, i8* %"$msgobj_121", i32 41 + %"$msgobj_fname_132" = bitcast i8* %"$msgobj_fname_131" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_130", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_132" + %"$msgobj_td_133" = getelementptr i8, i8* %"$msgobj_121", i32 57 + %"$msgobj_td_134" = bitcast i8* %"$msgobj_td_133" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_40", %_TyDescrTy_Typ** %"$msgobj_td_134" + %"$address_135" = load [20 x i8], [20 x i8]* %address + %"$msgobj_v_136" = getelementptr i8, i8* %"$msgobj_121", i32 65 + %"$msgobj_v_137" = bitcast i8* %"$msgobj_v_136" to [20 x i8]* + store [20 x i8] %"$address_135", [20 x i8]* %"$msgobj_v_137" + %"$msgobj_fname_139" = getelementptr i8, i8* %"$msgobj_121", i32 85 + %"$msgobj_fname_140" = bitcast i8* %"$msgobj_fname_139" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_138", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_140" + %"$msgobj_td_141" = getelementptr i8, i8* %"$msgobj_121", i32 101 + %"$msgobj_td_142" = bitcast i8* %"$msgobj_td_141" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_45", %_TyDescrTy_Typ** %"$msgobj_td_142" + %"$msgobj_v_143" = getelementptr i8, i8* %"$msgobj_121", i32 109 + %"$msgobj_v_144" = bitcast i8* %"$msgobj_v_143" to %TName_Bool** + store %TName_Bool* %1, %TName_Bool** %"$msgobj_v_144" + store i8* %"$msgobj_121", i8** %"$retval_6" + %"$$retval_6_146" = load i8*, i8** %"$retval_6" + ret i8* %"$$retval_6_146" } define internal { i8* (i8*, %TName_Bool*)*, i8* } @"$fundef_3"(%"$$fundef_3_env_87"* %0, [20 x i8]* %1) { entry: %address = load [20 x i8], [20 x i8]* %1 %"$retval_4" = alloca { i8* (i8*, %TName_Bool*)*, i8* } - %"$$fundef_5_envp_98_load" = load i8*, i8** @_execptr - %"$$fundef_5_envp_98_salloc" = call i8* @_salloc(i8* %"$$fundef_5_envp_98_load", i64 20) - %"$$fundef_5_envp_98" = bitcast i8* %"$$fundef_5_envp_98_salloc" to %"$$fundef_5_env_86"* - %"$$fundef_5_env_voidp_100" = bitcast %"$$fundef_5_env_86"* %"$$fundef_5_envp_98" to i8* - %"$$fundef_5_cloval_101" = insertvalue { i8* (i8*, %TName_Bool*)*, i8* } { i8* (i8*, %TName_Bool*)* bitcast (i8* (%"$$fundef_5_env_86"*, %TName_Bool*)* @"$fundef_5" to i8* (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_5_env_voidp_100", 1 - %"$$fundef_5_env_address_102" = getelementptr inbounds %"$$fundef_5_env_86", %"$$fundef_5_env_86"* %"$$fundef_5_envp_98", i32 0, i32 0 - store [20 x i8] %address, [20 x i8]* %"$$fundef_5_env_address_102" - store { i8* (i8*, %TName_Bool*)*, i8* } %"$$fundef_5_cloval_101", { i8* (i8*, %TName_Bool*)*, i8* }* %"$retval_4" - %"$$retval_4_103" = load { i8* (i8*, %TName_Bool*)*, i8* }, { i8* (i8*, %TName_Bool*)*, i8* }* %"$retval_4" - ret { i8* (i8*, %TName_Bool*)*, i8* } %"$$retval_4_103" + %"$gasrem_103" = load i64, i64* @_gasrem + %"$gascmp_104" = icmp ugt i64 1, %"$gasrem_103" + br i1 %"$gascmp_104", label %"$out_of_gas_105", label %"$have_gas_106" + +"$out_of_gas_105": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_106" + +"$have_gas_106": ; preds = %"$out_of_gas_105", %entry + %"$consume_107" = sub i64 %"$gasrem_103", 1 + store i64 %"$consume_107", i64* @_gasrem + %"$$fundef_5_envp_108_load" = load i8*, i8** @_execptr + %"$$fundef_5_envp_108_salloc" = call i8* @_salloc(i8* %"$$fundef_5_envp_108_load", i64 20) + %"$$fundef_5_envp_108" = bitcast i8* %"$$fundef_5_envp_108_salloc" to %"$$fundef_5_env_86"* + %"$$fundef_5_env_voidp_110" = bitcast %"$$fundef_5_env_86"* %"$$fundef_5_envp_108" to i8* + %"$$fundef_5_cloval_111" = insertvalue { i8* (i8*, %TName_Bool*)*, i8* } { i8* (i8*, %TName_Bool*)* bitcast (i8* (%"$$fundef_5_env_86"*, %TName_Bool*)* @"$fundef_5" to i8* (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_5_env_voidp_110", 1 + %"$$fundef_5_env_address_112" = getelementptr inbounds %"$$fundef_5_env_86", %"$$fundef_5_env_86"* %"$$fundef_5_envp_108", i32 0, i32 0 + store [20 x i8] %address, [20 x i8]* %"$$fundef_5_env_address_112" + store { i8* (i8*, %TName_Bool*)*, i8* } %"$$fundef_5_cloval_111", { i8* (i8*, %TName_Bool*)*, i8* }* %"$retval_4" + %"$$retval_4_113" = load { i8* (i8*, %TName_Bool*)*, i8* }, { i8* (i8*, %TName_Bool*)*, i8* }* %"$retval_4" + ret { i8* (i8*, %TName_Bool*)*, i8* } %"$$retval_4_113" } define internal %TName_List_Message* @"$fundef_7"(%"$$fundef_7_env_88"* %0, i8* %1) { @@ -200,92 +222,182 @@ entry: %nilMessage = alloca %TName_List_Message* store %TName_List_Message* %"$nilMessage_envload_90", %TName_List_Message** %nilMessage %"$retval_8" = alloca %TName_List_Message* - %"$nilMessage_91" = load %TName_List_Message*, %TName_List_Message** %nilMessage - %"$adtval_92_load" = load i8*, i8** @_execptr - %"$adtval_92_salloc" = call i8* @_salloc(i8* %"$adtval_92_load", i64 17) - %"$adtval_92" = bitcast i8* %"$adtval_92_salloc" to %CName_Cons_Message* - %"$adtgep_93" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_92", i32 0, i32 0 - store i8 0, i8* %"$adtgep_93" - %"$adtgep_94" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_92", i32 0, i32 1 - store i8* %1, i8** %"$adtgep_94" - %"$adtgep_95" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_92", i32 0, i32 2 - store %TName_List_Message* %"$nilMessage_91", %TName_List_Message** %"$adtgep_95" - %"$adtptr_96" = bitcast %CName_Cons_Message* %"$adtval_92" to %TName_List_Message* - store %TName_List_Message* %"$adtptr_96", %TName_List_Message** %"$retval_8" - %"$$retval_8_97" = load %TName_List_Message*, %TName_List_Message** %"$retval_8" - ret %TName_List_Message* %"$$retval_8_97" + %"$gasrem_91" = load i64, i64* @_gasrem + %"$gascmp_92" = icmp ugt i64 1, %"$gasrem_91" + br i1 %"$gascmp_92", label %"$out_of_gas_93", label %"$have_gas_94" + +"$out_of_gas_93": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_94" + +"$have_gas_94": ; preds = %"$out_of_gas_93", %entry + %"$consume_95" = sub i64 %"$gasrem_91", 1 + store i64 %"$consume_95", i64* @_gasrem + %"$nilMessage_96" = load %TName_List_Message*, %TName_List_Message** %nilMessage + %"$adtval_97_load" = load i8*, i8** @_execptr + %"$adtval_97_salloc" = call i8* @_salloc(i8* %"$adtval_97_load", i64 17) + %"$adtval_97" = bitcast i8* %"$adtval_97_salloc" to %CName_Cons_Message* + %"$adtgep_98" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_97", i32 0, i32 0 + store i8 0, i8* %"$adtgep_98" + %"$adtgep_99" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_97", i32 0, i32 1 + store i8* %1, i8** %"$adtgep_99" + %"$adtgep_100" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_97", i32 0, i32 2 + store %TName_List_Message* %"$nilMessage_96", %TName_List_Message** %"$adtgep_100" + %"$adtptr_101" = bitcast %CName_Cons_Message* %"$adtval_97" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_101", %TName_List_Message** %"$retval_8" + %"$$retval_8_102" = load %TName_List_Message*, %TName_List_Message** %"$retval_8" + ret %TName_List_Message* %"$$retval_8_102" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) define void @_init_libs() { entry: - %"$adtval_132_load" = load i8*, i8** @_execptr - %"$adtval_132_salloc" = call i8* @_salloc(i8* %"$adtval_132_load", i64 1) - %"$adtval_132" = bitcast i8* %"$adtval_132_salloc" to %CName_True* - %"$adtgep_133" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_132", i32 0, i32 0 - store i8 0, i8* %"$adtgep_133" - %"$adtptr_134" = bitcast %CName_True* %"$adtval_132" to %TName_Bool* - store %TName_Bool* %"$adtptr_134", %TName_Bool** @true - %"$adtval_135_load" = load i8*, i8** @_execptr - %"$adtval_135_salloc" = call i8* @_salloc(i8* %"$adtval_135_load", i64 1) - %"$adtval_135" = bitcast i8* %"$adtval_135_salloc" to %CName_Nil_Message* - %"$adtgep_136" = getelementptr inbounds %CName_Nil_Message, %CName_Nil_Message* %"$adtval_135", i32 0, i32 0 - store i8 1, i8* %"$adtgep_136" - %"$adtptr_137" = bitcast %CName_Nil_Message* %"$adtval_135" to %TName_List_Message* - store %TName_List_Message* %"$adtptr_137", %TName_List_Message** @nilMessage - %"$$fundef_7_envp_138_load" = load i8*, i8** @_execptr - %"$$fundef_7_envp_138_salloc" = call i8* @_salloc(i8* %"$$fundef_7_envp_138_load", i64 8) - %"$$fundef_7_envp_138" = bitcast i8* %"$$fundef_7_envp_138_salloc" to %"$$fundef_7_env_88"* - %"$$fundef_7_env_voidp_140" = bitcast %"$$fundef_7_env_88"* %"$$fundef_7_envp_138" to i8* - %"$$fundef_7_cloval_141" = insertvalue { %TName_List_Message* (i8*, i8*)*, i8* } { %TName_List_Message* (i8*, i8*)* bitcast (%TName_List_Message* (%"$$fundef_7_env_88"*, i8*)* @"$fundef_7" to %TName_List_Message* (i8*, i8*)*), i8* undef }, i8* %"$$fundef_7_env_voidp_140", 1 - %"$$fundef_7_env_nilMessage_142" = getelementptr inbounds %"$$fundef_7_env_88", %"$$fundef_7_env_88"* %"$$fundef_7_envp_138", i32 0, i32 0 - %"$nilMessage_143" = load %TName_List_Message*, %TName_List_Message** @nilMessage - store %TName_List_Message* %"$nilMessage_143", %TName_List_Message** %"$$fundef_7_env_nilMessage_142" - store { %TName_List_Message* (i8*, i8*)*, i8* } %"$$fundef_7_cloval_141", { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg + %"$gasrem_147" = load i64, i64* @_gasrem + %"$gascmp_148" = icmp ugt i64 1, %"$gasrem_147" + br i1 %"$gascmp_148", label %"$out_of_gas_149", label %"$have_gas_150" + +"$out_of_gas_149": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_150" + +"$have_gas_150": ; preds = %"$out_of_gas_149", %entry + %"$consume_151" = sub i64 %"$gasrem_147", 1 + store i64 %"$consume_151", i64* @_gasrem + %"$adtval_152_load" = load i8*, i8** @_execptr + %"$adtval_152_salloc" = call i8* @_salloc(i8* %"$adtval_152_load", i64 1) + %"$adtval_152" = bitcast i8* %"$adtval_152_salloc" to %CName_True* + %"$adtgep_153" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_152", i32 0, i32 0 + store i8 0, i8* %"$adtgep_153" + %"$adtptr_154" = bitcast %CName_True* %"$adtval_152" to %TName_Bool* + store %TName_Bool* %"$adtptr_154", %TName_Bool** @true + %"$gasrem_155" = load i64, i64* @_gasrem + %"$gascmp_156" = icmp ugt i64 1, %"$gasrem_155" + br i1 %"$gascmp_156", label %"$out_of_gas_157", label %"$have_gas_158" + +"$out_of_gas_157": ; preds = %"$have_gas_150" + call void @_out_of_gas() + br label %"$have_gas_158" + +"$have_gas_158": ; preds = %"$out_of_gas_157", %"$have_gas_150" + %"$consume_159" = sub i64 %"$gasrem_155", 1 + store i64 %"$consume_159", i64* @_gasrem + %"$adtval_160_load" = load i8*, i8** @_execptr + %"$adtval_160_salloc" = call i8* @_salloc(i8* %"$adtval_160_load", i64 1) + %"$adtval_160" = bitcast i8* %"$adtval_160_salloc" to %CName_Nil_Message* + %"$adtgep_161" = getelementptr inbounds %CName_Nil_Message, %CName_Nil_Message* %"$adtval_160", i32 0, i32 0 + store i8 1, i8* %"$adtgep_161" + %"$adtptr_162" = bitcast %CName_Nil_Message* %"$adtval_160" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_162", %TName_List_Message** @nilMessage + %"$gasrem_163" = load i64, i64* @_gasrem + %"$gascmp_164" = icmp ugt i64 1, %"$gasrem_163" + br i1 %"$gascmp_164", label %"$out_of_gas_165", label %"$have_gas_166" + +"$out_of_gas_165": ; preds = %"$have_gas_158" + call void @_out_of_gas() + br label %"$have_gas_166" + +"$have_gas_166": ; preds = %"$out_of_gas_165", %"$have_gas_158" + %"$consume_167" = sub i64 %"$gasrem_163", 1 + store i64 %"$consume_167", i64* @_gasrem + %"$$fundef_7_envp_168_load" = load i8*, i8** @_execptr + %"$$fundef_7_envp_168_salloc" = call i8* @_salloc(i8* %"$$fundef_7_envp_168_load", i64 8) + %"$$fundef_7_envp_168" = bitcast i8* %"$$fundef_7_envp_168_salloc" to %"$$fundef_7_env_88"* + %"$$fundef_7_env_voidp_170" = bitcast %"$$fundef_7_env_88"* %"$$fundef_7_envp_168" to i8* + %"$$fundef_7_cloval_171" = insertvalue { %TName_List_Message* (i8*, i8*)*, i8* } { %TName_List_Message* (i8*, i8*)* bitcast (%TName_List_Message* (%"$$fundef_7_env_88"*, i8*)* @"$fundef_7" to %TName_List_Message* (i8*, i8*)*), i8* undef }, i8* %"$$fundef_7_env_voidp_170", 1 + %"$$fundef_7_env_nilMessage_172" = getelementptr inbounds %"$$fundef_7_env_88", %"$$fundef_7_env_88"* %"$$fundef_7_envp_168", i32 0, i32 0 + %"$nilMessage_173" = load %TName_List_Message*, %TName_List_Message** @nilMessage + store %TName_List_Message* %"$nilMessage_173", %TName_List_Message** %"$$fundef_7_env_nilMessage_172" + store { %TName_List_Message* (i8*, i8*)*, i8* } %"$$fundef_7_cloval_171", { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg + %"$gasrem_174" = load i64, i64* @_gasrem + %"$gascmp_175" = icmp ugt i64 1, %"$gasrem_174" + br i1 %"$gascmp_175", label %"$out_of_gas_176", label %"$have_gas_177" + +"$out_of_gas_176": ; preds = %"$have_gas_166" + call void @_out_of_gas() + br label %"$have_gas_177" + +"$have_gas_177": ; preds = %"$out_of_gas_176", %"$have_gas_166" + %"$consume_178" = sub i64 %"$gasrem_174", 1 + store i64 %"$consume_178", i64* @_gasrem store { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ i8* (i8*, %TName_Bool*)*, i8* } (%"$$fundef_3_env_87"*, [20 x i8]*)* @"$fundef_3" to { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*), i8* null }, { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @eAdminSet - %"$msgobj_147_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_147_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_147_salloc_load", i64 41) - %"$msgobj_147_salloc" = bitcast i8* %"$msgobj_147_salloc_salloc" to [41 x i8]* - %"$msgobj_147" = bitcast [41 x i8]* %"$msgobj_147_salloc" to i8* - store i8 1, i8* %"$msgobj_147" - %"$msgobj_fname_149" = getelementptr i8, i8* %"$msgobj_147", i32 1 - %"$msgobj_fname_150" = bitcast i8* %"$msgobj_fname_149" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_148", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_150" - %"$msgobj_td_151" = getelementptr i8, i8* %"$msgobj_147", i32 17 - %"$msgobj_td_152" = bitcast i8* %"$msgobj_td_151" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_28", %_TyDescrTy_Typ** %"$msgobj_td_152" - %"$msgobj_v_154" = getelementptr i8, i8* %"$msgobj_147", i32 25 - %"$msgobj_v_155" = bitcast i8* %"$msgobj_v_154" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_153", i32 0, i32 0), i32 5 }, %String* %"$msgobj_v_155" - store i8* %"$msgobj_147", i8** @eError + %"$gasrem_182" = load i64, i64* @_gasrem + %"$gascmp_183" = icmp ugt i64 1, %"$gasrem_182" + br i1 %"$gascmp_183", label %"$out_of_gas_184", label %"$have_gas_185" + +"$out_of_gas_184": ; preds = %"$have_gas_177" + call void @_out_of_gas() + br label %"$have_gas_185" + +"$have_gas_185": ; preds = %"$out_of_gas_184", %"$have_gas_177" + %"$consume_186" = sub i64 %"$gasrem_182", 1 + store i64 %"$consume_186", i64* @_gasrem + %"$msgobj_187_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_187_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_187_salloc_load", i64 41) + %"$msgobj_187_salloc" = bitcast i8* %"$msgobj_187_salloc_salloc" to [41 x i8]* + %"$msgobj_187" = bitcast [41 x i8]* %"$msgobj_187_salloc" to i8* + store i8 1, i8* %"$msgobj_187" + %"$msgobj_fname_189" = getelementptr i8, i8* %"$msgobj_187", i32 1 + %"$msgobj_fname_190" = bitcast i8* %"$msgobj_fname_189" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_188", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_190" + %"$msgobj_td_191" = getelementptr i8, i8* %"$msgobj_187", i32 17 + %"$msgobj_td_192" = bitcast i8* %"$msgobj_td_191" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_28", %_TyDescrTy_Typ** %"$msgobj_td_192" + %"$msgobj_v_194" = getelementptr i8, i8* %"$msgobj_187", i32 25 + %"$msgobj_v_195" = bitcast i8* %"$msgobj_v_194" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_193", i32 0, i32 0), i32 5 }, %String* %"$msgobj_v_195" + store i8* %"$msgobj_187", i8** @eError ret void } define void @_init_state() { entry: %"$admins_9" = alloca %Map_ByStr20_Bool* + %"$gasrem_197" = load i64, i64* @_gasrem + %"$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 %empty = alloca %Map_ByStr20_Bool* - %"$execptr_load_157" = load i8*, i8** @_execptr - %"$_new_empty_map_call_158" = call i8* @_new_empty_map(i8* %"$execptr_load_157") - %"$Emp_159" = bitcast i8* %"$_new_empty_map_call_158" to %Map_ByStr20_Bool* - store %Map_ByStr20_Bool* %"$Emp_159", %Map_ByStr20_Bool** %empty - %"$execptr_load_160" = load i8*, i8** @_execptr - %"$empty_161" = load %Map_ByStr20_Bool*, %Map_ByStr20_Bool** %empty - %"$$empty_161_162" = bitcast %Map_ByStr20_Bool* %"$empty_161" to i8* - %"$put_initialAdmin_163" = alloca [20 x i8] - %"$initialAdmin_164" = load [20 x i8], [20 x i8]* @initialAdmin - store [20 x i8] %"$initialAdmin_164", [20 x i8]* %"$put_initialAdmin_163" - %"$$put_initialAdmin_163_165" = bitcast [20 x i8]* %"$put_initialAdmin_163" to i8* - %"$true_166" = load %TName_Bool*, %TName_Bool** @true - %"$$true_166_167" = bitcast %TName_Bool* %"$true_166" to i8* - %"$put_call_168" = call i8* @_put(i8* %"$execptr_load_160", %_TyDescrTy_Typ* @"$TyDescr_Map_48", i8* %"$$empty_161_162", i8* %"$$put_initialAdmin_163_165", i8* %"$$true_166_167") - %"$_put_169" = bitcast i8* %"$put_call_168" to %Map_ByStr20_Bool* - store %Map_ByStr20_Bool* %"$_put_169", %Map_ByStr20_Bool** %"$admins_9" - %"$execptr_load_170" = load i8*, i8** @_execptr - %"$$admins_9_172" = load %Map_ByStr20_Bool*, %Map_ByStr20_Bool** %"$admins_9" - %"$update_value_173" = bitcast %Map_ByStr20_Bool* %"$$admins_9_172" to i8* - call void @_update_field(i8* %"$execptr_load_170", i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$admins_171", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_48", i32 0, i8* null, i8* %"$update_value_173") + %"$gasrem_202" = load i64, i64* @_gasrem + %"$gascmp_203" = icmp ugt i64 1, %"$gasrem_202" + br i1 %"$gascmp_203", label %"$out_of_gas_204", label %"$have_gas_205" + +"$out_of_gas_204": ; preds = %"$have_gas_200" + call void @_out_of_gas() + br label %"$have_gas_205" + +"$have_gas_205": ; preds = %"$out_of_gas_204", %"$have_gas_200" + %"$consume_206" = sub i64 %"$gasrem_202", 1 + store i64 %"$consume_206", i64* @_gasrem + %"$execptr_load_207" = load i8*, i8** @_execptr + %"$_new_empty_map_call_208" = call i8* @_new_empty_map(i8* %"$execptr_load_207") + %"$Emp_209" = bitcast i8* %"$_new_empty_map_call_208" to %Map_ByStr20_Bool* + store %Map_ByStr20_Bool* %"$Emp_209", %Map_ByStr20_Bool** %empty + %"$execptr_load_210" = load i8*, i8** @_execptr + %"$empty_211" = load %Map_ByStr20_Bool*, %Map_ByStr20_Bool** %empty + %"$$empty_211_212" = bitcast %Map_ByStr20_Bool* %"$empty_211" to i8* + %"$put_initialAdmin_213" = alloca [20 x i8] + %"$initialAdmin_214" = load [20 x i8], [20 x i8]* @initialAdmin + store [20 x i8] %"$initialAdmin_214", [20 x i8]* %"$put_initialAdmin_213" + %"$$put_initialAdmin_213_215" = bitcast [20 x i8]* %"$put_initialAdmin_213" to i8* + %"$true_216" = load %TName_Bool*, %TName_Bool** @true + %"$$true_216_217" = bitcast %TName_Bool* %"$true_216" to i8* + %"$put_call_218" = call i8* @_put(i8* %"$execptr_load_210", %_TyDescrTy_Typ* @"$TyDescr_Map_48", i8* %"$$empty_211_212", i8* %"$$put_initialAdmin_213_215", i8* %"$$true_216_217") + %"$_put_219" = bitcast i8* %"$put_call_218" to %Map_ByStr20_Bool* + store %Map_ByStr20_Bool* %"$_put_219", %Map_ByStr20_Bool** %"$admins_9" + %"$execptr_load_220" = load i8*, i8** @_execptr + %"$$admins_9_222" = load %Map_ByStr20_Bool*, %Map_ByStr20_Bool** %"$admins_9" + %"$update_value_223" = bitcast %Map_ByStr20_Bool* %"$$admins_9_222" to i8* + call void @_update_field(i8* %"$execptr_load_220", i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$admins_221", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_48", i32 0, i8* null, i8* %"$update_value_223") ret void } @@ -295,281 +407,558 @@ declare i8* @_put(i8*, %_TyDescrTy_Typ*, i8*, i8*, i8*) declare void @_update_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i8*) -define internal void @"$setAdmin_174"(%Uint128 %_amount, [20 x i8]* %"$_sender_175", [20 x i8]* %"$address_176", %TName_Bool* %isApproved) { +define internal void @"$setAdmin_224"(%Uint128 %_amount, [20 x i8]* %"$_sender_225", [20 x i8]* %"$address_226", %TName_Bool* %isApproved) { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_175" - %address = load [20 x i8], [20 x i8]* %"$address_176" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_225" + %address = load [20 x i8], [20 x i8]* %"$address_226" %maybeAdmin = alloca %TName_Option_Bool* - %"$indices_buf_177_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_177_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_177_salloc_load", i64 20) - %"$indices_buf_177_salloc" = bitcast i8* %"$indices_buf_177_salloc_salloc" to [20 x i8]* - %"$indices_buf_177" = bitcast [20 x i8]* %"$indices_buf_177_salloc" to i8* - %"$indices_gep_178" = getelementptr i8, i8* %"$indices_buf_177", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_178" to [20 x i8]* + %"$indices_buf_227_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_227_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_227_salloc_load", i64 20) + %"$indices_buf_227_salloc" = bitcast i8* %"$indices_buf_227_salloc_salloc" to [20 x i8]* + %"$indices_buf_227" = bitcast [20 x i8]* %"$indices_buf_227_salloc" to i8* + %"$indices_gep_228" = getelementptr i8, i8* %"$indices_buf_227", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_228" to [20 x i8]* store [20 x i8] %_sender, [20 x i8]* %indices_cast - %"$execptr_load_179" = load i8*, i8** @_execptr - %"$maybeAdmin_181" = call i8* @_fetch_field(i8* %"$execptr_load_179", i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$admins_180", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_48", i32 1, i8* %"$indices_buf_177", i32 1) - %"$maybeAdmin_182" = bitcast i8* %"$maybeAdmin_181" to %TName_Option_Bool* - store %TName_Option_Bool* %"$maybeAdmin_182", %TName_Option_Bool** %maybeAdmin + %"$execptr_load_229" = load i8*, i8** @_execptr + %"$maybeAdmin_231" = call i8* @_fetch_field(i8* %"$execptr_load_229", i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$admins_230", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_48", i32 1, i8* %"$indices_buf_227", i32 1) + %"$maybeAdmin_232" = bitcast i8* %"$maybeAdmin_231" to %TName_Option_Bool* + store %TName_Option_Bool* %"$maybeAdmin_232", %TName_Option_Bool** %maybeAdmin + %"$maybeAdmin_233" = load %TName_Option_Bool*, %TName_Option_Bool** %maybeAdmin + %"$$maybeAdmin_233_234" = bitcast %TName_Option_Bool* %"$maybeAdmin_233" to i8* + %"$_literal_cost_call_235" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Bool_44", i8* %"$$maybeAdmin_233_234") + %"$gasadd_236" = add i64 %"$_literal_cost_call_235", 0 + %"$gasadd_237" = add i64 %"$gasadd_236", 1 + %"$gasrem_238" = load i64, i64* @_gasrem + %"$gascmp_239" = icmp ugt i64 %"$gasadd_237", %"$gasrem_238" + br i1 %"$gascmp_239", label %"$out_of_gas_240", label %"$have_gas_241" + +"$out_of_gas_240": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_241" + +"$have_gas_241": ; preds = %"$out_of_gas_240", %entry + %"$consume_242" = sub i64 %"$gasrem_238", %"$gasadd_237" + store i64 %"$consume_242", i64* @_gasrem + %"$gasrem_243" = load i64, i64* @_gasrem + %"$gascmp_244" = icmp ugt i64 1, %"$gasrem_243" + br i1 %"$gascmp_244", label %"$out_of_gas_245", label %"$have_gas_246" + +"$out_of_gas_245": ; preds = %"$have_gas_241" + call void @_out_of_gas() + br label %"$have_gas_246" + +"$have_gas_246": ; preds = %"$out_of_gas_245", %"$have_gas_241" + %"$consume_247" = sub i64 %"$gasrem_243", 1 + store i64 %"$consume_247", i64* @_gasrem %isSenderAdmin = alloca %TName_Bool* - %"$maybeAdmin_184" = load %TName_Option_Bool*, %TName_Option_Bool** %maybeAdmin - %"$maybeAdmin_tag_185" = getelementptr inbounds %TName_Option_Bool, %TName_Option_Bool* %"$maybeAdmin_184", i32 0, i32 0 - %"$maybeAdmin_tag_186" = load i8, i8* %"$maybeAdmin_tag_185" - switch i8 %"$maybeAdmin_tag_186", label %"$empty_default_187" [ - i8 0, label %"$Some_188" - i8 1, label %"$None_193" + %"$gasrem_248" = load i64, i64* @_gasrem + %"$gascmp_249" = icmp ugt i64 2, %"$gasrem_248" + br i1 %"$gascmp_249", label %"$out_of_gas_250", label %"$have_gas_251" + +"$out_of_gas_250": ; preds = %"$have_gas_246" + call void @_out_of_gas() + br label %"$have_gas_251" + +"$have_gas_251": ; preds = %"$out_of_gas_250", %"$have_gas_246" + %"$consume_252" = sub i64 %"$gasrem_248", 2 + store i64 %"$consume_252", i64* @_gasrem + %"$maybeAdmin_254" = load %TName_Option_Bool*, %TName_Option_Bool** %maybeAdmin + %"$maybeAdmin_tag_255" = getelementptr inbounds %TName_Option_Bool, %TName_Option_Bool* %"$maybeAdmin_254", i32 0, i32 0 + %"$maybeAdmin_tag_256" = load i8, i8* %"$maybeAdmin_tag_255" + switch i8 %"$maybeAdmin_tag_256", label %"$empty_default_257" [ + i8 0, label %"$Some_258" + i8 1, label %"$None_268" ] -"$Some_188": ; preds = %entry - %"$maybeAdmin_189" = bitcast %TName_Option_Bool* %"$maybeAdmin_184" to %CName_Some_Bool* - %"$approval_gep_190" = getelementptr inbounds %CName_Some_Bool, %CName_Some_Bool* %"$maybeAdmin_189", i32 0, i32 1 - %"$approval_load_191" = load %TName_Bool*, %TName_Bool** %"$approval_gep_190" +"$Some_258": ; preds = %"$have_gas_251" + %"$maybeAdmin_259" = bitcast %TName_Option_Bool* %"$maybeAdmin_254" to %CName_Some_Bool* + %"$approval_gep_260" = getelementptr inbounds %CName_Some_Bool, %CName_Some_Bool* %"$maybeAdmin_259", i32 0, i32 1 + %"$approval_load_261" = load %TName_Bool*, %TName_Bool** %"$approval_gep_260" %approval = alloca %TName_Bool* - store %TName_Bool* %"$approval_load_191", %TName_Bool** %approval - %"$approval_192" = load %TName_Bool*, %TName_Bool** %approval - store %TName_Bool* %"$approval_192", %TName_Bool** %isSenderAdmin - br label %"$matchsucc_183" - -"$None_193": ; preds = %entry - %"$maybeAdmin_194" = bitcast %TName_Option_Bool* %"$maybeAdmin_184" to %CName_None_Bool* - %"$adtval_195_load" = load i8*, i8** @_execptr - %"$adtval_195_salloc" = call i8* @_salloc(i8* %"$adtval_195_load", i64 1) - %"$adtval_195" = bitcast i8* %"$adtval_195_salloc" to %CName_False* - %"$adtgep_196" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_195", i32 0, i32 0 - store i8 1, i8* %"$adtgep_196" - %"$adtptr_197" = bitcast %CName_False* %"$adtval_195" to %TName_Bool* - store %TName_Bool* %"$adtptr_197", %TName_Bool** %isSenderAdmin - br label %"$matchsucc_183" - -"$empty_default_187": ; preds = %entry - br label %"$matchsucc_183" - -"$matchsucc_183": ; preds = %"$None_193", %"$Some_188", %"$empty_default_187" - %"$isSenderAdmin_199" = load %TName_Bool*, %TName_Bool** %isSenderAdmin - %"$isSenderAdmin_tag_200" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isSenderAdmin_199", i32 0, i32 0 - %"$isSenderAdmin_tag_201" = load i8, i8* %"$isSenderAdmin_tag_200" - switch i8 %"$isSenderAdmin_tag_201", label %"$empty_default_202" [ - i8 0, label %"$True_203" - i8 1, label %"$False_222" + store %TName_Bool* %"$approval_load_261", %TName_Bool** %approval + %"$gasrem_262" = load i64, i64* @_gasrem + %"$gascmp_263" = icmp ugt i64 1, %"$gasrem_262" + br i1 %"$gascmp_263", label %"$out_of_gas_264", label %"$have_gas_265" + +"$out_of_gas_264": ; preds = %"$Some_258" + call void @_out_of_gas() + br label %"$have_gas_265" + +"$have_gas_265": ; preds = %"$out_of_gas_264", %"$Some_258" + %"$consume_266" = sub i64 %"$gasrem_262", 1 + store i64 %"$consume_266", i64* @_gasrem + %"$approval_267" = load %TName_Bool*, %TName_Bool** %approval + store %TName_Bool* %"$approval_267", %TName_Bool** %isSenderAdmin + br label %"$matchsucc_253" + +"$None_268": ; preds = %"$have_gas_251" + %"$maybeAdmin_269" = bitcast %TName_Option_Bool* %"$maybeAdmin_254" to %CName_None_Bool* + %"$gasrem_270" = load i64, i64* @_gasrem + %"$gascmp_271" = icmp ugt i64 1, %"$gasrem_270" + br i1 %"$gascmp_271", label %"$out_of_gas_272", label %"$have_gas_273" + +"$out_of_gas_272": ; preds = %"$None_268" + call void @_out_of_gas() + br label %"$have_gas_273" + +"$have_gas_273": ; preds = %"$out_of_gas_272", %"$None_268" + %"$consume_274" = sub i64 %"$gasrem_270", 1 + store i64 %"$consume_274", i64* @_gasrem + %"$adtval_275_load" = load i8*, i8** @_execptr + %"$adtval_275_salloc" = call i8* @_salloc(i8* %"$adtval_275_load", i64 1) + %"$adtval_275" = bitcast i8* %"$adtval_275_salloc" to %CName_False* + %"$adtgep_276" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_275", i32 0, i32 0 + store i8 1, i8* %"$adtgep_276" + %"$adtptr_277" = bitcast %CName_False* %"$adtval_275" to %TName_Bool* + store %TName_Bool* %"$adtptr_277", %TName_Bool** %isSenderAdmin + br label %"$matchsucc_253" + +"$empty_default_257": ; preds = %"$have_gas_251" + br label %"$matchsucc_253" + +"$matchsucc_253": ; preds = %"$have_gas_273", %"$have_gas_265", %"$empty_default_257" + %"$gasrem_278" = load i64, i64* @_gasrem + %"$gascmp_279" = icmp ugt i64 2, %"$gasrem_278" + br i1 %"$gascmp_279", label %"$out_of_gas_280", label %"$have_gas_281" + +"$out_of_gas_280": ; preds = %"$matchsucc_253" + call void @_out_of_gas() + br label %"$have_gas_281" + +"$have_gas_281": ; preds = %"$out_of_gas_280", %"$matchsucc_253" + %"$consume_282" = sub i64 %"$gasrem_278", 2 + store i64 %"$consume_282", i64* @_gasrem + %"$isSenderAdmin_284" = load %TName_Bool*, %TName_Bool** %isSenderAdmin + %"$isSenderAdmin_tag_285" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isSenderAdmin_284", i32 0, i32 0 + %"$isSenderAdmin_tag_286" = load i8, i8* %"$isSenderAdmin_tag_285" + switch i8 %"$isSenderAdmin_tag_286", label %"$empty_default_287" [ + i8 0, label %"$True_288" + i8 1, label %"$False_333" ] -"$True_203": ; preds = %"$matchsucc_183" - %"$isSenderAdmin_204" = bitcast %TName_Bool* %"$isSenderAdmin_199" to %CName_True* - %"$indices_buf_205_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_205_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_205_salloc_load", i64 20) - %"$indices_buf_205_salloc" = bitcast i8* %"$indices_buf_205_salloc_salloc" to [20 x i8]* - %"$indices_buf_205" = bitcast [20 x i8]* %"$indices_buf_205_salloc" to i8* - %"$indices_gep_206" = getelementptr i8, i8* %"$indices_buf_205", i32 0 - %indices_cast1 = bitcast i8* %"$indices_gep_206" to [20 x i8]* +"$True_288": ; preds = %"$have_gas_281" + %"$isSenderAdmin_289" = bitcast %TName_Bool* %"$isSenderAdmin_284" to %CName_True* + %"$isApproved_290" = bitcast %TName_Bool* %isApproved to i8* + %"$_literal_cost_call_291" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_45", i8* %"$isApproved_290") + %"$gasadd_292" = add i64 %"$_literal_cost_call_291", 1 + %"$gasrem_293" = load i64, i64* @_gasrem + %"$gascmp_294" = icmp ugt i64 %"$gasadd_292", %"$gasrem_293" + br i1 %"$gascmp_294", label %"$out_of_gas_295", label %"$have_gas_296" + +"$out_of_gas_295": ; preds = %"$True_288" + call void @_out_of_gas() + br label %"$have_gas_296" + +"$have_gas_296": ; preds = %"$out_of_gas_295", %"$True_288" + %"$consume_297" = sub i64 %"$gasrem_293", %"$gasadd_292" + store i64 %"$consume_297", i64* @_gasrem + %"$indices_buf_298_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_298_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_298_salloc_load", i64 20) + %"$indices_buf_298_salloc" = bitcast i8* %"$indices_buf_298_salloc_salloc" to [20 x i8]* + %"$indices_buf_298" = bitcast [20 x i8]* %"$indices_buf_298_salloc" to i8* + %"$indices_gep_299" = getelementptr i8, i8* %"$indices_buf_298", i32 0 + %indices_cast1 = bitcast i8* %"$indices_gep_299" to [20 x i8]* store [20 x i8] %address, [20 x i8]* %indices_cast1 - %"$execptr_load_207" = load i8*, i8** @_execptr - %"$update_value_209" = bitcast %TName_Bool* %isApproved to i8* - call void @_update_field(i8* %"$execptr_load_207", i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$admins_208", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_48", i32 1, i8* %"$indices_buf_205", i8* %"$update_value_209") + %"$execptr_load_300" = load i8*, i8** @_execptr + %"$update_value_302" = bitcast %TName_Bool* %isApproved to i8* + call void @_update_field(i8* %"$execptr_load_300", i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$admins_301", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_48", i32 1, i8* %"$indices_buf_298", i8* %"$update_value_302") + %"$gasrem_303" = load i64, i64* @_gasrem + %"$gascmp_304" = icmp ugt i64 1, %"$gasrem_303" + br i1 %"$gascmp_304", label %"$out_of_gas_305", label %"$have_gas_306" + +"$out_of_gas_305": ; preds = %"$have_gas_296" + call void @_out_of_gas() + br label %"$have_gas_306" + +"$have_gas_306": ; preds = %"$out_of_gas_305", %"$have_gas_296" + %"$consume_307" = sub i64 %"$gasrem_303", 1 + store i64 %"$consume_307", i64* @_gasrem %e = alloca i8* - %"$eAdminSet_0" = alloca { i8* (i8*, %TName_Bool*)*, i8* } - %"$eAdminSet_210" = load { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @eAdminSet - %"$eAdminSet_fptr_211" = extractvalue { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eAdminSet_210", 0 - %"$eAdminSet_envptr_212" = extractvalue { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eAdminSet_210", 1 - %"$eAdminSet_address_213" = alloca [20 x i8] - store [20 x i8] %address, [20 x i8]* %"$eAdminSet_address_213" - %"$eAdminSet_call_214" = call { i8* (i8*, %TName_Bool*)*, i8* } %"$eAdminSet_fptr_211"(i8* %"$eAdminSet_envptr_212", [20 x i8]* %"$eAdminSet_address_213") - store { i8* (i8*, %TName_Bool*)*, i8* } %"$eAdminSet_call_214", { i8* (i8*, %TName_Bool*)*, i8* }* %"$eAdminSet_0" - %"$eAdminSet_1" = alloca i8* - %"$$eAdminSet_0_215" = load { i8* (i8*, %TName_Bool*)*, i8* }, { i8* (i8*, %TName_Bool*)*, i8* }* %"$eAdminSet_0" - %"$$eAdminSet_0_fptr_216" = extractvalue { i8* (i8*, %TName_Bool*)*, i8* } %"$$eAdminSet_0_215", 0 - %"$$eAdminSet_0_envptr_217" = extractvalue { i8* (i8*, %TName_Bool*)*, i8* } %"$$eAdminSet_0_215", 1 - %"$$eAdminSet_0_call_218" = call i8* %"$$eAdminSet_0_fptr_216"(i8* %"$$eAdminSet_0_envptr_217", %TName_Bool* %isApproved) - store i8* %"$$eAdminSet_0_call_218", i8** %"$eAdminSet_1" - %"$$eAdminSet_1_219" = load i8*, i8** %"$eAdminSet_1" - store i8* %"$$eAdminSet_1_219", i8** %e - %"$execptr_load_220" = load i8*, i8** @_execptr - %"$e_221" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_220", %_TyDescrTy_Typ* @"$TyDescr_Event_34", i8* %"$e_221") - br label %"$matchsucc_198" - -"$False_222": ; preds = %"$matchsucc_183" - %"$isSenderAdmin_223" = bitcast %TName_Bool* %"$isSenderAdmin_199" to %CName_False* - %"$execptr_load_224" = load i8*, i8** @_execptr - %"$eError_225" = load i8*, i8** @eError - call void @_event(i8* %"$execptr_load_224", %_TyDescrTy_Typ* @"$TyDescr_Event_34", i8* %"$eError_225") - br label %"$matchsucc_198" + %"$gasrem_308" = load i64, i64* @_gasrem + %"$gascmp_309" = icmp ugt i64 1, %"$gasrem_308" + br i1 %"$gascmp_309", label %"$out_of_gas_310", label %"$have_gas_311" -"$empty_default_202": ; preds = %"$matchsucc_183" - br label %"$matchsucc_198" +"$out_of_gas_310": ; preds = %"$have_gas_306" + call void @_out_of_gas() + br label %"$have_gas_311" -"$matchsucc_198": ; preds = %"$False_222", %"$True_203", %"$empty_default_202" +"$have_gas_311": ; preds = %"$out_of_gas_310", %"$have_gas_306" + %"$consume_312" = sub i64 %"$gasrem_308", 1 + store i64 %"$consume_312", i64* @_gasrem + %"$eAdminSet_0" = alloca { i8* (i8*, %TName_Bool*)*, i8* } + %"$eAdminSet_313" = load { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @eAdminSet + %"$eAdminSet_fptr_314" = extractvalue { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eAdminSet_313", 0 + %"$eAdminSet_envptr_315" = extractvalue { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eAdminSet_313", 1 + %"$eAdminSet_address_316" = alloca [20 x i8] + store [20 x i8] %address, [20 x i8]* %"$eAdminSet_address_316" + %"$eAdminSet_call_317" = call { i8* (i8*, %TName_Bool*)*, i8* } %"$eAdminSet_fptr_314"(i8* %"$eAdminSet_envptr_315", [20 x i8]* %"$eAdminSet_address_316") + store { i8* (i8*, %TName_Bool*)*, i8* } %"$eAdminSet_call_317", { i8* (i8*, %TName_Bool*)*, i8* }* %"$eAdminSet_0" + %"$eAdminSet_1" = alloca i8* + %"$$eAdminSet_0_318" = load { i8* (i8*, %TName_Bool*)*, i8* }, { i8* (i8*, %TName_Bool*)*, i8* }* %"$eAdminSet_0" + %"$$eAdminSet_0_fptr_319" = extractvalue { i8* (i8*, %TName_Bool*)*, i8* } %"$$eAdminSet_0_318", 0 + %"$$eAdminSet_0_envptr_320" = extractvalue { i8* (i8*, %TName_Bool*)*, i8* } %"$$eAdminSet_0_318", 1 + %"$$eAdminSet_0_call_321" = call i8* %"$$eAdminSet_0_fptr_319"(i8* %"$$eAdminSet_0_envptr_320", %TName_Bool* %isApproved) + store i8* %"$$eAdminSet_0_call_321", i8** %"$eAdminSet_1" + %"$$eAdminSet_1_322" = load i8*, i8** %"$eAdminSet_1" + store i8* %"$$eAdminSet_1_322", i8** %e + %"$e_323" = load i8*, i8** %e + %"$_literal_cost_call_325" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_34", i8* %"$e_323") + %"$gasrem_326" = load i64, i64* @_gasrem + %"$gascmp_327" = icmp ugt i64 %"$_literal_cost_call_325", %"$gasrem_326" + br i1 %"$gascmp_327", label %"$out_of_gas_328", label %"$have_gas_329" + +"$out_of_gas_328": ; preds = %"$have_gas_311" + call void @_out_of_gas() + br label %"$have_gas_329" + +"$have_gas_329": ; preds = %"$out_of_gas_328", %"$have_gas_311" + %"$consume_330" = sub i64 %"$gasrem_326", %"$_literal_cost_call_325" + store i64 %"$consume_330", i64* @_gasrem + %"$execptr_load_331" = load i8*, i8** @_execptr + %"$e_332" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_331", %_TyDescrTy_Typ* @"$TyDescr_Event_34", i8* %"$e_332") + br label %"$matchsucc_283" + +"$False_333": ; preds = %"$have_gas_281" + %"$isSenderAdmin_334" = bitcast %TName_Bool* %"$isSenderAdmin_284" to %CName_False* + %"$eError_335" = load i8*, i8** @eError + %"$_literal_cost_call_337" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_34", i8* %"$eError_335") + %"$gasrem_338" = load i64, i64* @_gasrem + %"$gascmp_339" = icmp ugt i64 %"$_literal_cost_call_337", %"$gasrem_338" + br i1 %"$gascmp_339", label %"$out_of_gas_340", label %"$have_gas_341" + +"$out_of_gas_340": ; preds = %"$False_333" + call void @_out_of_gas() + br label %"$have_gas_341" + +"$have_gas_341": ; preds = %"$out_of_gas_340", %"$False_333" + %"$consume_342" = sub i64 %"$gasrem_338", %"$_literal_cost_call_337" + store i64 %"$consume_342", i64* @_gasrem + %"$execptr_load_343" = load i8*, i8** @_execptr + %"$eError_344" = load i8*, i8** @eError + call void @_event(i8* %"$execptr_load_343", %_TyDescrTy_Typ* @"$TyDescr_Event_34", i8* %"$eError_344") + br label %"$matchsucc_283" + +"$empty_default_287": ; preds = %"$have_gas_281" + br label %"$matchsucc_283" + +"$matchsucc_283": ; preds = %"$have_gas_341", %"$have_gas_329", %"$empty_default_287" ret void } declare i8* @_fetch_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i32) +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + declare void @_event(i8*, %_TyDescrTy_Typ*, i8*) define void @setAdmin(i8* %0) { entry: - %"$_amount_227" = getelementptr i8, i8* %0, i32 0 - %"$_amount_228" = bitcast i8* %"$_amount_227" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_228" - %"$_sender_229" = getelementptr i8, i8* %0, i32 16 - %"$_sender_230" = bitcast i8* %"$_sender_229" to [20 x i8]* - %"$address_231" = getelementptr i8, i8* %0, i32 36 - %"$address_232" = bitcast i8* %"$address_231" to [20 x i8]* - %"$isApproved_233" = getelementptr i8, i8* %0, i32 56 - %"$isApproved_234" = bitcast i8* %"$isApproved_233" to %TName_Bool** - %isApproved = load %TName_Bool*, %TName_Bool** %"$isApproved_234" - call void @"$setAdmin_174"(%Uint128 %_amount, [20 x i8]* %"$_sender_230", [20 x i8]* %"$address_232", %TName_Bool* %isApproved) + %"$_amount_346" = getelementptr i8, i8* %0, i32 0 + %"$_amount_347" = bitcast i8* %"$_amount_346" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_347" + %"$_sender_348" = getelementptr i8, i8* %0, i32 16 + %"$_sender_349" = bitcast i8* %"$_sender_348" to [20 x i8]* + %"$address_350" = getelementptr i8, i8* %0, i32 36 + %"$address_351" = bitcast i8* %"$address_350" to [20 x i8]* + %"$isApproved_352" = getelementptr i8, i8* %0, i32 56 + %"$isApproved_353" = bitcast i8* %"$isApproved_352" to %TName_Bool** + %isApproved = load %TName_Bool*, %TName_Bool** %"$isApproved_353" + call void @"$setAdmin_224"(%Uint128 %_amount, [20 x i8]* %"$_sender_349", [20 x i8]* %"$address_351", %TName_Bool* %isApproved) ret void } -define internal void @"$bestow_235"(%Uint128 %_amount, [20 x i8]* %"$_sender_236", %String %label, [20 x i8]* %"$owner_237", [20 x i8]* %"$resolver_238") { +define internal void @"$bestow_354"(%Uint128 %_amount, [20 x i8]* %"$_sender_355", %String %label, [20 x i8]* %"$owner_356", [20 x i8]* %"$resolver_357") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_236" - %owner = load [20 x i8], [20 x i8]* %"$owner_237" - %resolver = load [20 x i8], [20 x i8]* %"$resolver_238" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_355" + %owner = load [20 x i8], [20 x i8]* %"$owner_356" + %resolver = load [20 x i8], [20 x i8]* %"$resolver_357" %maybeAdmin = alloca %TName_Option_Bool* - %"$indices_buf_239_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_239_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_239_salloc_load", i64 20) - %"$indices_buf_239_salloc" = bitcast i8* %"$indices_buf_239_salloc_salloc" to [20 x i8]* - %"$indices_buf_239" = bitcast [20 x i8]* %"$indices_buf_239_salloc" to i8* - %"$indices_gep_240" = getelementptr i8, i8* %"$indices_buf_239", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_240" to [20 x i8]* + %"$indices_buf_358_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_358_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_358_salloc_load", i64 20) + %"$indices_buf_358_salloc" = bitcast i8* %"$indices_buf_358_salloc_salloc" to [20 x i8]* + %"$indices_buf_358" = bitcast [20 x i8]* %"$indices_buf_358_salloc" to i8* + %"$indices_gep_359" = getelementptr i8, i8* %"$indices_buf_358", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_359" to [20 x i8]* store [20 x i8] %_sender, [20 x i8]* %indices_cast - %"$execptr_load_241" = load i8*, i8** @_execptr - %"$maybeAdmin_243" = call i8* @_fetch_field(i8* %"$execptr_load_241", i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$admins_242", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_48", i32 1, i8* %"$indices_buf_239", i32 1) - %"$maybeAdmin_244" = bitcast i8* %"$maybeAdmin_243" to %TName_Option_Bool* - store %TName_Option_Bool* %"$maybeAdmin_244", %TName_Option_Bool** %maybeAdmin + %"$execptr_load_360" = load i8*, i8** @_execptr + %"$maybeAdmin_362" = call i8* @_fetch_field(i8* %"$execptr_load_360", i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$admins_361", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_48", i32 1, i8* %"$indices_buf_358", i32 1) + %"$maybeAdmin_363" = bitcast i8* %"$maybeAdmin_362" to %TName_Option_Bool* + store %TName_Option_Bool* %"$maybeAdmin_363", %TName_Option_Bool** %maybeAdmin + %"$maybeAdmin_364" = load %TName_Option_Bool*, %TName_Option_Bool** %maybeAdmin + %"$$maybeAdmin_364_365" = bitcast %TName_Option_Bool* %"$maybeAdmin_364" to i8* + %"$_literal_cost_call_366" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Bool_44", i8* %"$$maybeAdmin_364_365") + %"$gasadd_367" = add i64 %"$_literal_cost_call_366", 0 + %"$gasadd_368" = add i64 %"$gasadd_367", 1 + %"$gasrem_369" = load i64, i64* @_gasrem + %"$gascmp_370" = icmp ugt i64 %"$gasadd_368", %"$gasrem_369" + br i1 %"$gascmp_370", label %"$out_of_gas_371", label %"$have_gas_372" + +"$out_of_gas_371": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_372" + +"$have_gas_372": ; preds = %"$out_of_gas_371", %entry + %"$consume_373" = sub i64 %"$gasrem_369", %"$gasadd_368" + store i64 %"$consume_373", i64* @_gasrem + %"$gasrem_374" = load i64, i64* @_gasrem + %"$gascmp_375" = icmp ugt i64 1, %"$gasrem_374" + br i1 %"$gascmp_375", label %"$out_of_gas_376", label %"$have_gas_377" + +"$out_of_gas_376": ; preds = %"$have_gas_372" + call void @_out_of_gas() + br label %"$have_gas_377" + +"$have_gas_377": ; preds = %"$out_of_gas_376", %"$have_gas_372" + %"$consume_378" = sub i64 %"$gasrem_374", 1 + store i64 %"$consume_378", i64* @_gasrem %isSenderAdmin = alloca %TName_Bool* - %"$maybeAdmin_246" = load %TName_Option_Bool*, %TName_Option_Bool** %maybeAdmin - %"$maybeAdmin_tag_247" = getelementptr inbounds %TName_Option_Bool, %TName_Option_Bool* %"$maybeAdmin_246", i32 0, i32 0 - %"$maybeAdmin_tag_248" = load i8, i8* %"$maybeAdmin_tag_247" - switch i8 %"$maybeAdmin_tag_248", label %"$empty_default_249" [ - i8 0, label %"$Some_250" - i8 1, label %"$None_255" + %"$gasrem_379" = load i64, i64* @_gasrem + %"$gascmp_380" = icmp ugt i64 2, %"$gasrem_379" + br i1 %"$gascmp_380", label %"$out_of_gas_381", label %"$have_gas_382" + +"$out_of_gas_381": ; preds = %"$have_gas_377" + call void @_out_of_gas() + br label %"$have_gas_382" + +"$have_gas_382": ; preds = %"$out_of_gas_381", %"$have_gas_377" + %"$consume_383" = sub i64 %"$gasrem_379", 2 + store i64 %"$consume_383", i64* @_gasrem + %"$maybeAdmin_385" = load %TName_Option_Bool*, %TName_Option_Bool** %maybeAdmin + %"$maybeAdmin_tag_386" = getelementptr inbounds %TName_Option_Bool, %TName_Option_Bool* %"$maybeAdmin_385", i32 0, i32 0 + %"$maybeAdmin_tag_387" = load i8, i8* %"$maybeAdmin_tag_386" + switch i8 %"$maybeAdmin_tag_387", label %"$empty_default_388" [ + i8 0, label %"$Some_389" + i8 1, label %"$None_399" ] -"$Some_250": ; preds = %entry - %"$maybeAdmin_251" = bitcast %TName_Option_Bool* %"$maybeAdmin_246" to %CName_Some_Bool* - %"$isAdmin_gep_252" = getelementptr inbounds %CName_Some_Bool, %CName_Some_Bool* %"$maybeAdmin_251", i32 0, i32 1 - %"$isAdmin_load_253" = load %TName_Bool*, %TName_Bool** %"$isAdmin_gep_252" +"$Some_389": ; preds = %"$have_gas_382" + %"$maybeAdmin_390" = bitcast %TName_Option_Bool* %"$maybeAdmin_385" to %CName_Some_Bool* + %"$isAdmin_gep_391" = getelementptr inbounds %CName_Some_Bool, %CName_Some_Bool* %"$maybeAdmin_390", i32 0, i32 1 + %"$isAdmin_load_392" = load %TName_Bool*, %TName_Bool** %"$isAdmin_gep_391" %isAdmin = alloca %TName_Bool* - store %TName_Bool* %"$isAdmin_load_253", %TName_Bool** %isAdmin - %"$isAdmin_254" = load %TName_Bool*, %TName_Bool** %isAdmin - store %TName_Bool* %"$isAdmin_254", %TName_Bool** %isSenderAdmin - br label %"$matchsucc_245" - -"$None_255": ; preds = %entry - %"$maybeAdmin_256" = bitcast %TName_Option_Bool* %"$maybeAdmin_246" to %CName_None_Bool* - %"$adtval_257_load" = load i8*, i8** @_execptr - %"$adtval_257_salloc" = call i8* @_salloc(i8* %"$adtval_257_load", i64 1) - %"$adtval_257" = bitcast i8* %"$adtval_257_salloc" to %CName_False* - %"$adtgep_258" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_257", i32 0, i32 0 - store i8 1, i8* %"$adtgep_258" - %"$adtptr_259" = bitcast %CName_False* %"$adtval_257" to %TName_Bool* - store %TName_Bool* %"$adtptr_259", %TName_Bool** %isSenderAdmin - br label %"$matchsucc_245" - -"$empty_default_249": ; preds = %entry - br label %"$matchsucc_245" - -"$matchsucc_245": ; preds = %"$None_255", %"$Some_250", %"$empty_default_249" - %"$isSenderAdmin_261" = load %TName_Bool*, %TName_Bool** %isSenderAdmin - %"$isSenderAdmin_tag_262" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isSenderAdmin_261", i32 0, i32 0 - %"$isSenderAdmin_tag_263" = load i8, i8* %"$isSenderAdmin_tag_262" - switch i8 %"$isSenderAdmin_tag_263", label %"$empty_default_264" [ - i8 0, label %"$True_265" - i8 1, label %"$False_321" + store %TName_Bool* %"$isAdmin_load_392", %TName_Bool** %isAdmin + %"$gasrem_393" = load i64, i64* @_gasrem + %"$gascmp_394" = icmp ugt i64 1, %"$gasrem_393" + br i1 %"$gascmp_394", label %"$out_of_gas_395", label %"$have_gas_396" + +"$out_of_gas_395": ; preds = %"$Some_389" + call void @_out_of_gas() + br label %"$have_gas_396" + +"$have_gas_396": ; preds = %"$out_of_gas_395", %"$Some_389" + %"$consume_397" = sub i64 %"$gasrem_393", 1 + store i64 %"$consume_397", i64* @_gasrem + %"$isAdmin_398" = load %TName_Bool*, %TName_Bool** %isAdmin + store %TName_Bool* %"$isAdmin_398", %TName_Bool** %isSenderAdmin + br label %"$matchsucc_384" + +"$None_399": ; preds = %"$have_gas_382" + %"$maybeAdmin_400" = bitcast %TName_Option_Bool* %"$maybeAdmin_385" to %CName_None_Bool* + %"$gasrem_401" = load i64, i64* @_gasrem + %"$gascmp_402" = icmp ugt i64 1, %"$gasrem_401" + br i1 %"$gascmp_402", label %"$out_of_gas_403", label %"$have_gas_404" + +"$out_of_gas_403": ; preds = %"$None_399" + call void @_out_of_gas() + br label %"$have_gas_404" + +"$have_gas_404": ; preds = %"$out_of_gas_403", %"$None_399" + %"$consume_405" = sub i64 %"$gasrem_401", 1 + store i64 %"$consume_405", i64* @_gasrem + %"$adtval_406_load" = load i8*, i8** @_execptr + %"$adtval_406_salloc" = call i8* @_salloc(i8* %"$adtval_406_load", i64 1) + %"$adtval_406" = bitcast i8* %"$adtval_406_salloc" to %CName_False* + %"$adtgep_407" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_406", i32 0, i32 0 + store i8 1, i8* %"$adtgep_407" + %"$adtptr_408" = bitcast %CName_False* %"$adtval_406" to %TName_Bool* + store %TName_Bool* %"$adtptr_408", %TName_Bool** %isSenderAdmin + br label %"$matchsucc_384" + +"$empty_default_388": ; preds = %"$have_gas_382" + br label %"$matchsucc_384" + +"$matchsucc_384": ; preds = %"$have_gas_404", %"$have_gas_396", %"$empty_default_388" + %"$gasrem_409" = load i64, i64* @_gasrem + %"$gascmp_410" = icmp ugt i64 2, %"$gasrem_409" + br i1 %"$gascmp_410", label %"$out_of_gas_411", label %"$have_gas_412" + +"$out_of_gas_411": ; preds = %"$matchsucc_384" + call void @_out_of_gas() + br label %"$have_gas_412" + +"$have_gas_412": ; preds = %"$out_of_gas_411", %"$matchsucc_384" + %"$consume_413" = sub i64 %"$gasrem_409", 2 + store i64 %"$consume_413", i64* @_gasrem + %"$isSenderAdmin_415" = load %TName_Bool*, %TName_Bool** %isSenderAdmin + %"$isSenderAdmin_tag_416" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isSenderAdmin_415", i32 0, i32 0 + %"$isSenderAdmin_tag_417" = load i8, i8* %"$isSenderAdmin_tag_416" + switch i8 %"$isSenderAdmin_tag_417", label %"$empty_default_418" [ + i8 0, label %"$True_419" + i8 1, label %"$False_503" ] -"$True_265": ; preds = %"$matchsucc_245" - %"$isSenderAdmin_266" = bitcast %TName_Bool* %"$isSenderAdmin_261" to %CName_True* +"$True_419": ; preds = %"$have_gas_412" + %"$isSenderAdmin_420" = bitcast %TName_Bool* %"$isSenderAdmin_415" to %CName_True* + %"$gasrem_421" = load i64, i64* @_gasrem + %"$gascmp_422" = icmp ugt i64 1, %"$gasrem_421" + br i1 %"$gascmp_422", label %"$out_of_gas_423", label %"$have_gas_424" + +"$out_of_gas_423": ; preds = %"$True_419" + call void @_out_of_gas() + br label %"$have_gas_424" + +"$have_gas_424": ; preds = %"$out_of_gas_423", %"$True_419" + %"$consume_425" = sub i64 %"$gasrem_421", 1 + store i64 %"$consume_425", i64* @_gasrem %msgs = alloca %TName_List_Message* + %"$gasrem_426" = load i64, i64* @_gasrem + %"$gascmp_427" = icmp ugt i64 1, %"$gasrem_426" + br i1 %"$gascmp_427", label %"$out_of_gas_428", label %"$have_gas_429" + +"$out_of_gas_428": ; preds = %"$have_gas_424" + call void @_out_of_gas() + br label %"$have_gas_429" + +"$have_gas_429": ; preds = %"$out_of_gas_428", %"$have_gas_424" + %"$consume_430" = sub i64 %"$gasrem_426", 1 + store i64 %"$consume_430", i64* @_gasrem %m = alloca i8* - %"$msgobj_267_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_267_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_267_salloc_load", i64 253) - %"$msgobj_267_salloc" = bitcast i8* %"$msgobj_267_salloc_salloc" to [253 x i8]* - %"$msgobj_267" = bitcast [253 x i8]* %"$msgobj_267_salloc" to i8* - store i8 6, i8* %"$msgobj_267" - %"$msgobj_fname_269" = getelementptr i8, i8* %"$msgobj_267", i32 1 - %"$msgobj_fname_270" = bitcast i8* %"$msgobj_fname_269" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_268", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_270" - %"$msgobj_td_271" = getelementptr i8, i8* %"$msgobj_267", i32 17 - %"$msgobj_td_272" = bitcast i8* %"$msgobj_td_271" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_28", %_TyDescrTy_Typ** %"$msgobj_td_272" - %"$msgobj_v_274" = getelementptr i8, i8* %"$msgobj_267", i32 25 - %"$msgobj_v_275" = bitcast i8* %"$msgobj_v_274" to %String* - store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_273", i32 0, i32 0), i32 6 }, %String* %"$msgobj_v_275" - %"$msgobj_fname_277" = getelementptr i8, i8* %"$msgobj_267", i32 41 - %"$msgobj_fname_278" = bitcast i8* %"$msgobj_fname_277" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_276", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_278" - %"$msgobj_td_279" = getelementptr i8, i8* %"$msgobj_267", i32 57 - %"$msgobj_td_280" = bitcast i8* %"$msgobj_td_279" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_40", %_TyDescrTy_Typ** %"$msgobj_td_280" - %"$registry_281" = load [20 x i8], [20 x i8]* @registry - %"$msgobj_v_282" = getelementptr i8, i8* %"$msgobj_267", i32 65 - %"$msgobj_v_283" = bitcast i8* %"$msgobj_v_282" to [20 x i8]* - store [20 x i8] %"$registry_281", [20 x i8]* %"$msgobj_v_283" - %"$msgobj_fname_285" = getelementptr i8, i8* %"$msgobj_267", i32 85 - %"$msgobj_fname_286" = bitcast i8* %"$msgobj_fname_285" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_284", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_286" - %"$msgobj_td_287" = getelementptr i8, i8* %"$msgobj_267", i32 101 - %"$msgobj_td_288" = bitcast i8* %"$msgobj_td_287" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Uint128_22", %_TyDescrTy_Typ** %"$msgobj_td_288" - %"$msgobj_v_289" = getelementptr i8, i8* %"$msgobj_267", i32 109 - %"$msgobj_v_290" = bitcast i8* %"$msgobj_v_289" to %Uint128* - store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_290" - %"$msgobj_fname_292" = getelementptr i8, i8* %"$msgobj_267", i32 125 - %"$msgobj_fname_293" = bitcast i8* %"$msgobj_fname_292" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_291", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_293" - %"$msgobj_td_294" = getelementptr i8, i8* %"$msgobj_267", i32 141 - %"$msgobj_td_295" = bitcast i8* %"$msgobj_td_294" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_28", %_TyDescrTy_Typ** %"$msgobj_td_295" - %"$msgobj_v_296" = getelementptr i8, i8* %"$msgobj_267", i32 149 - %"$msgobj_v_297" = bitcast i8* %"$msgobj_v_296" to %String* - store %String %label, %String* %"$msgobj_v_297" - %"$msgobj_fname_299" = getelementptr i8, i8* %"$msgobj_267", i32 165 - %"$msgobj_fname_300" = bitcast i8* %"$msgobj_fname_299" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_298", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_300" - %"$msgobj_td_301" = getelementptr i8, i8* %"$msgobj_267", i32 181 - %"$msgobj_td_302" = bitcast i8* %"$msgobj_td_301" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_40", %_TyDescrTy_Typ** %"$msgobj_td_302" - %"$msgobj_v_303" = getelementptr i8, i8* %"$msgobj_267", i32 189 - %"$msgobj_v_304" = bitcast i8* %"$msgobj_v_303" to [20 x i8]* - store [20 x i8] %owner, [20 x i8]* %"$msgobj_v_304" - %"$msgobj_fname_306" = getelementptr i8, i8* %"$msgobj_267", i32 209 - %"$msgobj_fname_307" = bitcast i8* %"$msgobj_fname_306" to %String* - store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_305", i32 0, i32 0), i32 8 }, %String* %"$msgobj_fname_307" - %"$msgobj_td_308" = getelementptr i8, i8* %"$msgobj_267", i32 225 - %"$msgobj_td_309" = bitcast i8* %"$msgobj_td_308" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_40", %_TyDescrTy_Typ** %"$msgobj_td_309" - %"$msgobj_v_310" = getelementptr i8, i8* %"$msgobj_267", i32 233 - %"$msgobj_v_311" = bitcast i8* %"$msgobj_v_310" to [20 x i8]* - store [20 x i8] %resolver, [20 x i8]* %"$msgobj_v_311" - store i8* %"$msgobj_267", i8** %m + %"$gasrem_431" = load i64, i64* @_gasrem + %"$gascmp_432" = icmp ugt i64 1, %"$gasrem_431" + br i1 %"$gascmp_432", label %"$out_of_gas_433", label %"$have_gas_434" + +"$out_of_gas_433": ; preds = %"$have_gas_429" + call void @_out_of_gas() + br label %"$have_gas_434" + +"$have_gas_434": ; preds = %"$out_of_gas_433", %"$have_gas_429" + %"$consume_435" = sub i64 %"$gasrem_431", 1 + store i64 %"$consume_435", i64* @_gasrem + %"$msgobj_436_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_436_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_436_salloc_load", i64 253) + %"$msgobj_436_salloc" = bitcast i8* %"$msgobj_436_salloc_salloc" to [253 x i8]* + %"$msgobj_436" = bitcast [253 x i8]* %"$msgobj_436_salloc" to i8* + store i8 6, i8* %"$msgobj_436" + %"$msgobj_fname_438" = getelementptr i8, i8* %"$msgobj_436", i32 1 + %"$msgobj_fname_439" = bitcast i8* %"$msgobj_fname_438" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_437", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_439" + %"$msgobj_td_440" = getelementptr i8, i8* %"$msgobj_436", i32 17 + %"$msgobj_td_441" = bitcast i8* %"$msgobj_td_440" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_28", %_TyDescrTy_Typ** %"$msgobj_td_441" + %"$msgobj_v_443" = getelementptr i8, i8* %"$msgobj_436", i32 25 + %"$msgobj_v_444" = bitcast i8* %"$msgobj_v_443" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_442", i32 0, i32 0), i32 6 }, %String* %"$msgobj_v_444" + %"$msgobj_fname_446" = getelementptr i8, i8* %"$msgobj_436", i32 41 + %"$msgobj_fname_447" = bitcast i8* %"$msgobj_fname_446" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_445", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_447" + %"$msgobj_td_448" = getelementptr i8, i8* %"$msgobj_436", i32 57 + %"$msgobj_td_449" = bitcast i8* %"$msgobj_td_448" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_40", %_TyDescrTy_Typ** %"$msgobj_td_449" + %"$registry_450" = load [20 x i8], [20 x i8]* @registry + %"$msgobj_v_451" = getelementptr i8, i8* %"$msgobj_436", i32 65 + %"$msgobj_v_452" = bitcast i8* %"$msgobj_v_451" to [20 x i8]* + store [20 x i8] %"$registry_450", [20 x i8]* %"$msgobj_v_452" + %"$msgobj_fname_454" = getelementptr i8, i8* %"$msgobj_436", i32 85 + %"$msgobj_fname_455" = bitcast i8* %"$msgobj_fname_454" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_453", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_455" + %"$msgobj_td_456" = getelementptr i8, i8* %"$msgobj_436", i32 101 + %"$msgobj_td_457" = bitcast i8* %"$msgobj_td_456" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_22", %_TyDescrTy_Typ** %"$msgobj_td_457" + %"$msgobj_v_458" = getelementptr i8, i8* %"$msgobj_436", i32 109 + %"$msgobj_v_459" = bitcast i8* %"$msgobj_v_458" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_459" + %"$msgobj_fname_461" = getelementptr i8, i8* %"$msgobj_436", i32 125 + %"$msgobj_fname_462" = bitcast i8* %"$msgobj_fname_461" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_460", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_462" + %"$msgobj_td_463" = getelementptr i8, i8* %"$msgobj_436", i32 141 + %"$msgobj_td_464" = bitcast i8* %"$msgobj_td_463" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_28", %_TyDescrTy_Typ** %"$msgobj_td_464" + %"$msgobj_v_465" = getelementptr i8, i8* %"$msgobj_436", i32 149 + %"$msgobj_v_466" = bitcast i8* %"$msgobj_v_465" to %String* + store %String %label, %String* %"$msgobj_v_466" + %"$msgobj_fname_468" = getelementptr i8, i8* %"$msgobj_436", i32 165 + %"$msgobj_fname_469" = bitcast i8* %"$msgobj_fname_468" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_467", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_469" + %"$msgobj_td_470" = getelementptr i8, i8* %"$msgobj_436", i32 181 + %"$msgobj_td_471" = bitcast i8* %"$msgobj_td_470" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_40", %_TyDescrTy_Typ** %"$msgobj_td_471" + %"$msgobj_v_472" = getelementptr i8, i8* %"$msgobj_436", i32 189 + %"$msgobj_v_473" = bitcast i8* %"$msgobj_v_472" to [20 x i8]* + store [20 x i8] %owner, [20 x i8]* %"$msgobj_v_473" + %"$msgobj_fname_475" = getelementptr i8, i8* %"$msgobj_436", i32 209 + %"$msgobj_fname_476" = bitcast i8* %"$msgobj_fname_475" to %String* + store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_474", i32 0, i32 0), i32 8 }, %String* %"$msgobj_fname_476" + %"$msgobj_td_477" = getelementptr i8, i8* %"$msgobj_436", i32 225 + %"$msgobj_td_478" = bitcast i8* %"$msgobj_td_477" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_40", %_TyDescrTy_Typ** %"$msgobj_td_478" + %"$msgobj_v_479" = getelementptr i8, i8* %"$msgobj_436", i32 233 + %"$msgobj_v_480" = bitcast i8* %"$msgobj_v_479" to [20 x i8]* + store [20 x i8] %resolver, [20 x i8]* %"$msgobj_v_480" + store i8* %"$msgobj_436", i8** %m + %"$gasrem_482" = load i64, i64* @_gasrem + %"$gascmp_483" = icmp ugt i64 1, %"$gasrem_482" + br i1 %"$gascmp_483", label %"$out_of_gas_484", label %"$have_gas_485" + +"$out_of_gas_484": ; preds = %"$have_gas_434" + call void @_out_of_gas() + br label %"$have_gas_485" + +"$have_gas_485": ; preds = %"$out_of_gas_484", %"$have_gas_434" + %"$consume_486" = sub i64 %"$gasrem_482", 1 + store i64 %"$consume_486", i64* @_gasrem %"$oneMsg_2" = alloca %TName_List_Message* - %"$oneMsg_313" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg - %"$oneMsg_fptr_314" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_313", 0 - %"$oneMsg_envptr_315" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_313", 1 - %"$m_316" = load i8*, i8** %m - %"$oneMsg_call_317" = call %TName_List_Message* %"$oneMsg_fptr_314"(i8* %"$oneMsg_envptr_315", i8* %"$m_316") - store %TName_List_Message* %"$oneMsg_call_317", %TName_List_Message** %"$oneMsg_2" - %"$$oneMsg_2_318" = load %TName_List_Message*, %TName_List_Message** %"$oneMsg_2" - store %TName_List_Message* %"$$oneMsg_2_318", %TName_List_Message** %msgs - %"$execptr_load_319" = load i8*, i8** @_execptr - %"$msgs_320" = load %TName_List_Message*, %TName_List_Message** %msgs - call void @_send(i8* %"$execptr_load_319", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_46", %TName_List_Message* %"$msgs_320") - br label %"$matchsucc_260" - -"$False_321": ; preds = %"$matchsucc_245" - %"$isSenderAdmin_322" = bitcast %TName_Bool* %"$isSenderAdmin_261" to %CName_False* - %"$execptr_load_323" = load i8*, i8** @_execptr - %"$eError_324" = load i8*, i8** @eError - call void @_event(i8* %"$execptr_load_323", %_TyDescrTy_Typ* @"$TyDescr_Event_34", i8* %"$eError_324") - br label %"$matchsucc_260" - -"$empty_default_264": ; preds = %"$matchsucc_245" - br label %"$matchsucc_260" - -"$matchsucc_260": ; preds = %"$False_321", %"$True_265", %"$empty_default_264" + %"$oneMsg_487" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg + %"$oneMsg_fptr_488" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_487", 0 + %"$oneMsg_envptr_489" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_487", 1 + %"$m_490" = load i8*, i8** %m + %"$oneMsg_call_491" = call %TName_List_Message* %"$oneMsg_fptr_488"(i8* %"$oneMsg_envptr_489", i8* %"$m_490") + store %TName_List_Message* %"$oneMsg_call_491", %TName_List_Message** %"$oneMsg_2" + %"$$oneMsg_2_492" = load %TName_List_Message*, %TName_List_Message** %"$oneMsg_2" + store %TName_List_Message* %"$$oneMsg_2_492", %TName_List_Message** %msgs + %"$msgs_493" = load %TName_List_Message*, %TName_List_Message** %msgs + %"$$msgs_493_494" = bitcast %TName_List_Message* %"$msgs_493" to i8* + %"$_literal_cost_call_495" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_46", i8* %"$$msgs_493_494") + %"$gasrem_496" = load i64, i64* @_gasrem + %"$gascmp_497" = icmp ugt i64 %"$_literal_cost_call_495", %"$gasrem_496" + br i1 %"$gascmp_497", label %"$out_of_gas_498", label %"$have_gas_499" + +"$out_of_gas_498": ; preds = %"$have_gas_485" + call void @_out_of_gas() + br label %"$have_gas_499" + +"$have_gas_499": ; preds = %"$out_of_gas_498", %"$have_gas_485" + %"$consume_500" = sub i64 %"$gasrem_496", %"$_literal_cost_call_495" + store i64 %"$consume_500", i64* @_gasrem + %"$execptr_load_501" = load i8*, i8** @_execptr + %"$msgs_502" = load %TName_List_Message*, %TName_List_Message** %msgs + call void @_send(i8* %"$execptr_load_501", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_46", %TName_List_Message* %"$msgs_502") + br label %"$matchsucc_414" + +"$False_503": ; preds = %"$have_gas_412" + %"$isSenderAdmin_504" = bitcast %TName_Bool* %"$isSenderAdmin_415" to %CName_False* + %"$eError_505" = load i8*, i8** @eError + %"$_literal_cost_call_507" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_34", i8* %"$eError_505") + %"$gasrem_508" = load i64, i64* @_gasrem + %"$gascmp_509" = icmp ugt i64 %"$_literal_cost_call_507", %"$gasrem_508" + br i1 %"$gascmp_509", label %"$out_of_gas_510", label %"$have_gas_511" + +"$out_of_gas_510": ; preds = %"$False_503" + call void @_out_of_gas() + br label %"$have_gas_511" + +"$have_gas_511": ; preds = %"$out_of_gas_510", %"$False_503" + %"$consume_512" = sub i64 %"$gasrem_508", %"$_literal_cost_call_507" + store i64 %"$consume_512", i64* @_gasrem + %"$execptr_load_513" = load i8*, i8** @_execptr + %"$eError_514" = load i8*, i8** @eError + call void @_event(i8* %"$execptr_load_513", %_TyDescrTy_Typ* @"$TyDescr_Event_34", i8* %"$eError_514") + br label %"$matchsucc_414" + +"$empty_default_418": ; preds = %"$have_gas_412" + br label %"$matchsucc_414" + +"$matchsucc_414": ; preds = %"$have_gas_511", %"$have_gas_499", %"$empty_default_418" ret void } @@ -577,18 +966,18 @@ declare void @_send(i8*, %_TyDescrTy_Typ*, %TName_List_Message*) define void @bestow(i8* %0) { entry: - %"$_amount_326" = getelementptr i8, i8* %0, i32 0 - %"$_amount_327" = bitcast i8* %"$_amount_326" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_327" - %"$_sender_328" = getelementptr i8, i8* %0, i32 16 - %"$_sender_329" = bitcast i8* %"$_sender_328" to [20 x i8]* - %"$label_330" = getelementptr i8, i8* %0, i32 36 - %"$label_331" = bitcast i8* %"$label_330" to %String* - %label = load %String, %String* %"$label_331" - %"$owner_332" = getelementptr i8, i8* %0, i32 52 - %"$owner_333" = bitcast i8* %"$owner_332" to [20 x i8]* - %"$resolver_334" = getelementptr i8, i8* %0, i32 72 - %"$resolver_335" = bitcast i8* %"$resolver_334" to [20 x i8]* - call void @"$bestow_235"(%Uint128 %_amount, [20 x i8]* %"$_sender_329", %String %label, [20 x i8]* %"$owner_333", [20 x i8]* %"$resolver_335") + %"$_amount_516" = getelementptr i8, i8* %0, i32 0 + %"$_amount_517" = bitcast i8* %"$_amount_516" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_517" + %"$_sender_518" = getelementptr i8, i8* %0, i32 16 + %"$_sender_519" = bitcast i8* %"$_sender_518" to [20 x i8]* + %"$label_520" = getelementptr i8, i8* %0, i32 36 + %"$label_521" = bitcast i8* %"$label_520" to %String* + %label = load %String, %String* %"$label_521" + %"$owner_522" = getelementptr i8, i8* %0, i32 52 + %"$owner_523" = bitcast i8* %"$owner_522" to [20 x i8]* + %"$resolver_524" = getelementptr i8, i8* %0, i32 72 + %"$resolver_525" = bitcast i8* %"$resolver_524" to [20 x i8]* + call void @"$bestow_354"(%Uint128 %_amount, [20 x i8]* %"$_sender_519", %String %label, [20 x i8]* %"$owner_523", [20 x i8]* %"$resolver_525") ret void } diff --git a/testsuite/contr/ud-proxy.output_bestow.json b/testsuite/contr/ud-proxy.output_bestow.json index 4d768158..1a1533a0 100644 --- a/testsuite/contr/ud-proxy.output_bestow.json +++ b/testsuite/contr/ud-proxy.output_bestow.json @@ -1,7 +1,7 @@ { "_accepted" : "false", "events" : [], - "gas_remaining" : "10000000", + "gas_remaining" : "9999747", "messages" : [ { "_amount" : "0", diff --git a/testsuite/contr/ud-registry.init_output.json b/testsuite/contr/ud-registry.init_output.json new file mode 100644 index 00000000..c7611697 --- /dev/null +++ b/testsuite/contr/ud-registry.init_output.json @@ -0,0 +1,7 @@ +{ + "_accepted" : "false", + "events" : [], + "gas_remaining" : "9999964", + "messages" : [], + "scilla_major_version" : "0" +} diff --git a/testsuite/contr/ud-registry.ll b/testsuite/contr/ud-registry.ll index 0b2e3abe..668db69f 100644 --- a/testsuite/contr/ud-registry.ll +++ b/testsuite/contr/ud-registry.ll @@ -6,13 +6,13 @@ source_filename = "Registry" 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-pc-linux-gnu" -%"$TyDescrTy_PrimTyp_277" = type { i32, i32 } +%"$TyDescrTy_PrimTyp_274" = type { i32, i32 } %_TyDescrTy_Typ = type { i32, i8* } -%"$TyDescrTy_ADTTyp_313" = type { %TyDescrString, i32, i32, i32, %"$TyDescrTy_ADTTyp_Specl_312"** } +%"$TyDescrTy_ADTTyp_310" = type { %TyDescrString, i32, i32, i32, %"$TyDescrTy_ADTTyp_Specl_309"** } %TyDescrString = type { i8*, i32 } -%"$TyDescrTy_ADTTyp_Specl_312" = type { %_TyDescrTy_Typ**, %"$TyDescrTy_ADTTyp_Constr_314"**, %"$TyDescrTy_ADTTyp_313"* } -%"$TyDescrTy_ADTTyp_Constr_314" = type { %TyDescrString, i32, %_TyDescrTy_Typ** } -%"$TyDescr_MapTyp_322" = type { %_TyDescrTy_Typ*, %_TyDescrTy_Typ* } +%"$TyDescrTy_ADTTyp_Specl_309" = type { %_TyDescrTy_Typ**, %"$TyDescrTy_ADTTyp_Constr_311"**, %"$TyDescrTy_ADTTyp_310"* } +%"$TyDescrTy_ADTTyp_Constr_311" = type { %TyDescrString, i32, %_TyDescrTy_Typ** } +%"$TyDescr_MapTyp_319" = type { %_TyDescrTy_Typ*, %_TyDescrTy_Typ* } %TName_Bool = type { i8, %CName_True*, %CName_False* } %CName_True = type <{ i8 }> %CName_False = type <{ i8 }> @@ -35,69 +35,69 @@ target triple = "x86_64-pc-linux-gnu" %CName_Some_ByStr20 = type <{ i8, [20 x i8] }> %CName_None_ByStr20 = type <{ i8 }> %Uint32 = type { i32 } -%"$$fundef_214_env_401" = type { { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, %TName_Option_ByStr20*, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, [20 x i8], [20 x i8] } -%"$$fundef_212_env_402" = type { { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, [20 x i8], [20 x i8] } -%"$$fundef_210_env_403" = type { { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, [20 x i8] } -%"$$fundef_208_env_404" = type { { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } } -%"$$fundef_218_env_405" = type { [32 x i8] } -%"$$fundef_216_env_406" = type {} -%"$$fundef_220_env_407" = type { [20 x i8] } -%"$$fundef_222_env_408" = type {} -%"$$fundef_228_env_409" = type { [32 x i8], [20 x i8] } -%"$$fundef_226_env_410" = type { [32 x i8] } -%"$$fundef_224_env_411" = type {} -%"$$fundef_232_env_412" = type { [32 x i8] } -%"$$fundef_230_env_413" = type {} -%"$$fundef_234_env_414" = type {} -%"$$fundef_236_env_415" = type {} -%"$$fundef_242_env_416" = type { [20 x i8], [20 x i8] } -%"$$fundef_240_env_417" = type { [20 x i8] } -%"$$fundef_238_env_418" = type {} -%"$$fundef_246_env_419" = type { [20 x i8] } -%"$$fundef_244_env_420" = type {} -%"$$fundef_250_env_421" = type { %TName_Bool* } -%"$$fundef_248_env_422" = type {} -%"$$fundef_256_env_423" = type { [20 x i8], { %TName_Bool* (i8*, %TName_Bool*)*, i8* } } -%"$$fundef_254_env_424" = type { %TName_List_ByStr20*, { i8*, i8* }*, { %TName_Bool* (i8*, %TName_Bool*)*, i8* } } -%"$$fundef_252_env_425" = type { { i8*, i8* }*, { %TName_Bool* (i8*, %TName_Bool*)*, i8* } } -%"$$fundef_260_env_426" = type { %TName_List_ByStr20*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* } } -%"$$fundef_258_env_427" = type { { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* } } -%"$$fundef_264_env_428" = type { { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, %TName_List_ByStr20*, { i8*, i8* }* } -%"$$fundef_262_env_429" = type { { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { i8*, i8* }* } -%"$$fundef_268_env_430" = type { [20 x i8] } -%"$$fundef_266_env_431" = type {} -%"$$fundef_270_env_432" = type { %TName_List_Message* } -%"$$fundef_182_env_433" = type { { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { i8*, i8* }* } -%"$$fundef_180_env_434" = type { { i8*, i8* }* } -%"$$fundef_178_env_435" = type { { i8*, i8* }* } -%"$$fundef_188_env_436" = type { { i8*, i8* }*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* } } -%"$$fundef_186_env_437" = type { { i8*, i8* }* } -%"$$fundef_184_env_438" = type { { i8*, i8* }* } -%"$$fundef_198_env_439" = type { %TName_Option_ByStr20*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, [20 x i8] } -%"$$fundef_196_env_440" = type { %TName_Option_ByStr20*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* } } -%"$$fundef_194_env_441" = type { %TName_Option_ByStr20*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* } } -%"$$fundef_192_env_442" = type { { i8*, i8* }* } -%"$$fundef_190_env_443" = type { { i8*, i8* }* } -%"$$fundef_206_env_444" = type { { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, [20 x i8] } -%"$$fundef_204_env_445" = type { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } } -%"$$fundef_202_env_446" = type { { i8*, i8* }* } -%"$$fundef_200_env_447" = type { { i8*, i8* }* } -%"$$fundef_168_env_448" = type {} -%"$$fundef_172_env_449" = type { %TName_Bool* } -%"$$fundef_170_env_450" = type {} -%"$$fundef_176_env_451" = type { %TName_Bool* } -%"$$fundef_174_env_452" = type {} -%"$$fundef_156_env_453" = type { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, %TName_List_ByStr20* } -%"$$fundef_154_env_454" = type { { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, %TName_Option_ByStr20* } -%"$$fundef_152_env_455" = type { { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } } -%"$$fundef_150_env_456" = type {} -%"$$fundef_148_env_457" = type {} -%"$$fundef_146_env_458" = type {} -%"$$fundef_166_env_459" = type { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, %TName_List_ByStr20* } -%"$$fundef_164_env_460" = type { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } } -%"$$fundef_162_env_461" = type {} -%"$$fundef_160_env_462" = type {} -%"$$fundef_158_env_463" = type {} +%"$$fundef_211_env_398" = type { { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, %TName_Option_ByStr20*, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, [20 x i8], [20 x i8] } +%"$$fundef_209_env_399" = type { { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, [20 x i8], [20 x i8] } +%"$$fundef_207_env_400" = type { { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, [20 x i8] } +%"$$fundef_205_env_401" = type { { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } } +%"$$fundef_215_env_402" = type { [32 x i8] } +%"$$fundef_213_env_403" = type {} +%"$$fundef_217_env_404" = type { [20 x i8] } +%"$$fundef_219_env_405" = type {} +%"$$fundef_225_env_406" = type { [32 x i8], [20 x i8] } +%"$$fundef_223_env_407" = type { [32 x i8] } +%"$$fundef_221_env_408" = type {} +%"$$fundef_229_env_409" = type { [32 x i8] } +%"$$fundef_227_env_410" = type {} +%"$$fundef_231_env_411" = type {} +%"$$fundef_233_env_412" = type {} +%"$$fundef_239_env_413" = type { [20 x i8], [20 x i8] } +%"$$fundef_237_env_414" = type { [20 x i8] } +%"$$fundef_235_env_415" = type {} +%"$$fundef_243_env_416" = type { [20 x i8] } +%"$$fundef_241_env_417" = type {} +%"$$fundef_247_env_418" = type { %TName_Bool* } +%"$$fundef_245_env_419" = type {} +%"$$fundef_253_env_420" = type { [20 x i8], { %TName_Bool* (i8*, %TName_Bool*)*, i8* } } +%"$$fundef_251_env_421" = type { %TName_List_ByStr20*, { i8*, i8* }*, { %TName_Bool* (i8*, %TName_Bool*)*, i8* } } +%"$$fundef_249_env_422" = type { { i8*, i8* }*, { %TName_Bool* (i8*, %TName_Bool*)*, i8* } } +%"$$fundef_257_env_423" = type { %TName_List_ByStr20*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* } } +%"$$fundef_255_env_424" = type { { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* } } +%"$$fundef_261_env_425" = type { { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, %TName_List_ByStr20*, { i8*, i8* }* } +%"$$fundef_259_env_426" = type { { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { i8*, i8* }* } +%"$$fundef_265_env_427" = type { [20 x i8] } +%"$$fundef_263_env_428" = type {} +%"$$fundef_267_env_429" = type { %TName_List_Message* } +%"$$fundef_179_env_430" = type { { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { i8*, i8* }* } +%"$$fundef_177_env_431" = type { { i8*, i8* }* } +%"$$fundef_175_env_432" = type { { i8*, i8* }* } +%"$$fundef_185_env_433" = type { { i8*, i8* }*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* } } +%"$$fundef_183_env_434" = type { { i8*, i8* }* } +%"$$fundef_181_env_435" = type { { i8*, i8* }* } +%"$$fundef_195_env_436" = type { %TName_Option_ByStr20*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, [20 x i8] } +%"$$fundef_193_env_437" = type { %TName_Option_ByStr20*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* } } +%"$$fundef_191_env_438" = type { %TName_Option_ByStr20*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* } } +%"$$fundef_189_env_439" = type { { i8*, i8* }* } +%"$$fundef_187_env_440" = type { { i8*, i8* }* } +%"$$fundef_203_env_441" = type { { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, [20 x i8] } +%"$$fundef_201_env_442" = type { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } } +%"$$fundef_199_env_443" = type { { i8*, i8* }* } +%"$$fundef_197_env_444" = type { { i8*, i8* }* } +%"$$fundef_165_env_445" = type {} +%"$$fundef_169_env_446" = type { %TName_Bool* } +%"$$fundef_167_env_447" = type {} +%"$$fundef_173_env_448" = type { %TName_Bool* } +%"$$fundef_171_env_449" = type {} +%"$$fundef_153_env_450" = type { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, %TName_List_ByStr20* } +%"$$fundef_151_env_451" = type { { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, %TName_Option_ByStr20* } +%"$$fundef_149_env_452" = type { { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } } +%"$$fundef_147_env_453" = type {} +%"$$fundef_145_env_454" = type {} +%"$$fundef_143_env_455" = type {} +%"$$fundef_163_env_456" = type { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, %TName_List_ByStr20* } +%"$$fundef_161_env_457" = type { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } } +%"$$fundef_159_env_458" = type {} +%"$$fundef_157_env_459" = type {} +%"$$fundef_155_env_460" = type {} %Map_ByStr32_Record = type { [32 x i8], %TName_Record* } %Map_ByStr32_ByStr20 = type { [32 x i8], [20 x i8] } %"Map_ByStr20_List_(ByStr20)" = type { [20 x i8], %TName_List_ByStr20* } @@ -105,152 +105,152 @@ target triple = "x86_64-pc-linux-gnu" @_execptr = global i8* null @_gasrem = global i64 0 -@"$TyDescr_Int32_Prim_278" = global %"$TyDescrTy_PrimTyp_277" zeroinitializer -@"$TyDescr_Int32_279" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_277"* @"$TyDescr_Int32_Prim_278" to i8*) } -@"$TyDescr_Uint32_Prim_280" = global %"$TyDescrTy_PrimTyp_277" { i32 1, i32 0 } -@"$TyDescr_Uint32_281" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_277"* @"$TyDescr_Uint32_Prim_280" to i8*) } -@"$TyDescr_Int64_Prim_282" = global %"$TyDescrTy_PrimTyp_277" { i32 0, i32 1 } -@"$TyDescr_Int64_283" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_277"* @"$TyDescr_Int64_Prim_282" to i8*) } -@"$TyDescr_Uint64_Prim_284" = global %"$TyDescrTy_PrimTyp_277" { i32 1, i32 1 } -@"$TyDescr_Uint64_285" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_277"* @"$TyDescr_Uint64_Prim_284" to i8*) } -@"$TyDescr_Int128_Prim_286" = global %"$TyDescrTy_PrimTyp_277" { i32 0, i32 2 } -@"$TyDescr_Int128_287" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_277"* @"$TyDescr_Int128_Prim_286" to i8*) } -@"$TyDescr_Uint128_Prim_288" = global %"$TyDescrTy_PrimTyp_277" { i32 1, i32 2 } -@"$TyDescr_Uint128_289" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_277"* @"$TyDescr_Uint128_Prim_288" to i8*) } -@"$TyDescr_Int256_Prim_290" = global %"$TyDescrTy_PrimTyp_277" { i32 0, i32 3 } -@"$TyDescr_Int256_291" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_277"* @"$TyDescr_Int256_Prim_290" to i8*) } -@"$TyDescr_Uint256_Prim_292" = global %"$TyDescrTy_PrimTyp_277" { i32 1, i32 3 } -@"$TyDescr_Uint256_293" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_277"* @"$TyDescr_Uint256_Prim_292" to i8*) } -@"$TyDescr_String_Prim_294" = global %"$TyDescrTy_PrimTyp_277" { i32 2, i32 0 } -@"$TyDescr_String_295" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_277"* @"$TyDescr_String_Prim_294" to i8*) } -@"$TyDescr_Bnum_Prim_296" = global %"$TyDescrTy_PrimTyp_277" { i32 3, i32 0 } -@"$TyDescr_Bnum_297" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_277"* @"$TyDescr_Bnum_Prim_296" to i8*) } -@"$TyDescr_Message_Prim_298" = global %"$TyDescrTy_PrimTyp_277" { i32 4, i32 0 } -@"$TyDescr_Message_299" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_277"* @"$TyDescr_Message_Prim_298" to i8*) } -@"$TyDescr_Event_Prim_300" = global %"$TyDescrTy_PrimTyp_277" { i32 5, i32 0 } -@"$TyDescr_Event_301" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_277"* @"$TyDescr_Event_Prim_300" to i8*) } -@"$TyDescr_Exception_Prim_302" = global %"$TyDescrTy_PrimTyp_277" { i32 6, i32 0 } -@"$TyDescr_Exception_303" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_277"* @"$TyDescr_Exception_Prim_302" to i8*) } -@"$TyDescr_Bystr_Prim_304" = global %"$TyDescrTy_PrimTyp_277" { i32 7, i32 0 } -@"$TyDescr_Bystr_305" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_277"* @"$TyDescr_Bystr_Prim_304" to i8*) } -@"$TyDescr_Bystr64_Prim_306" = global %"$TyDescrTy_PrimTyp_277" { i32 8, i32 64 } -@"$TyDescr_Bystr64_307" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_277"* @"$TyDescr_Bystr64_Prim_306" to i8*) } -@"$TyDescr_Bystr32_Prim_308" = global %"$TyDescrTy_PrimTyp_277" { i32 8, i32 32 } -@"$TyDescr_Bystr32_309" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_277"* @"$TyDescr_Bystr32_Prim_308" to i8*) } -@"$TyDescr_Bystr20_Prim_310" = global %"$TyDescrTy_PrimTyp_277" { i32 8, i32 20 } -@"$TyDescr_Bystr20_311" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_277"* @"$TyDescr_Bystr20_Prim_310" to i8*) } -@"$TyDescr_ADT_Option_List_(ByStr20)_315" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_312"* @"$TyDescr_Option_List_(ByStr20)_ADTTyp_Specl_335" to i8*) } -@"$TyDescr_ADT_Option_Record_316" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_312"* @"$TyDescr_Option_Record_ADTTyp_Specl_344" to i8*) } -@"$TyDescr_ADT_Option_ByStr20_317" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_312"* @"$TyDescr_Option_ByStr20_ADTTyp_Specl_353" to i8*) } -@"$TyDescr_ADT_Record_318" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_312"* @"$TyDescr_Record_ADTTyp_Specl_362" to i8*) } -@"$TyDescr_ADT_List_Message_319" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_312"* @"$TyDescr_List_Message_ADTTyp_Specl_374" to i8*) } -@"$TyDescr_ADT_List_ByStr20_320" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_312"* @"$TyDescr_List_ByStr20_ADTTyp_Specl_383" to i8*) } -@"$TyDescr_ADT_Bool_321" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_312"* @"$TyDescr_Bool_ADTTyp_Specl_395" to i8*) } -@"$TyDescr_Map_323" = unnamed_addr constant %_TyDescrTy_Typ { i32 2, i8* bitcast (%"$TyDescr_MapTyp_322"* @"$TyDescr_MapTyp_398" to i8*) } -@"$TyDescr_Map_324" = unnamed_addr constant %_TyDescrTy_Typ { i32 2, i8* bitcast (%"$TyDescr_MapTyp_322"* @"$TyDescr_MapTyp_399" to i8*) } -@"$TyDescr_Map_325" = unnamed_addr constant %_TyDescrTy_Typ { i32 2, i8* bitcast (%"$TyDescr_MapTyp_322"* @"$TyDescr_MapTyp_400" to i8*) } -@"$TyDescr_Option_ADTTyp_326" = unnamed_addr constant %"$TyDescrTy_ADTTyp_313" { %TyDescrString { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$TyDescr_ADT_Option_355", i32 0, i32 0), i32 6 }, i32 1, i32 2, i32 3, %"$TyDescrTy_ADTTyp_Specl_312"** getelementptr inbounds ([3 x %"$TyDescrTy_ADTTyp_Specl_312"*], [3 x %"$TyDescrTy_ADTTyp_Specl_312"*]* @"$TyDescr_Option_ADTTyp_m_specls_354", i32 0, i32 0) } -@"$TyDescr_Option_Some_List_(ByStr20)_Constr_m_args_327" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_320"] -@"$TyDescr_ADT_Some_328" = unnamed_addr constant [4 x i8] c"Some" -@"$TyDescr_Option_Some_List_(ByStr20)_ADTTyp_Constr_329" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_314" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Some_328", i32 0, i32 0), i32 4 }, i32 1, %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_Some_List_(ByStr20)_Constr_m_args_327", i32 0, i32 0) } -@"$TyDescr_Option_None_List_(ByStr20)_Constr_m_args_330" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer -@"$TyDescr_ADT_None_331" = unnamed_addr constant [4 x i8] c"None" -@"$TyDescr_Option_None_List_(ByStr20)_ADTTyp_Constr_332" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_314" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_None_331", i32 0, i32 0), i32 4 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_None_List_(ByStr20)_Constr_m_args_330", i32 0, i32 0) } -@"$TyDescr_Option_List_(ByStr20)_ADTTyp_Specl_m_constrs_333" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_314"*] [%"$TyDescrTy_ADTTyp_Constr_314"* @"$TyDescr_Option_Some_List_(ByStr20)_ADTTyp_Constr_329", %"$TyDescrTy_ADTTyp_Constr_314"* @"$TyDescr_Option_None_List_(ByStr20)_ADTTyp_Constr_332"] -@"$TyDescr_Option_List_(ByStr20)_ADTTyp_Specl_m_TArgs_334" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_320"] -@"$TyDescr_Option_List_(ByStr20)_ADTTyp_Specl_335" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_312" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_List_(ByStr20)_ADTTyp_Specl_m_TArgs_334", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_314"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_314"*], [2 x %"$TyDescrTy_ADTTyp_Constr_314"*]* @"$TyDescr_Option_List_(ByStr20)_ADTTyp_Specl_m_constrs_333", i32 0, i32 0), %"$TyDescrTy_ADTTyp_313"* @"$TyDescr_Option_ADTTyp_326" } -@"$TyDescr_Option_Some_Record_Constr_m_args_336" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_ADT_Record_318"] -@"$TyDescr_ADT_Some_337" = unnamed_addr constant [4 x i8] c"Some" -@"$TyDescr_Option_Some_Record_ADTTyp_Constr_338" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_314" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Some_337", i32 0, i32 0), i32 4 }, i32 1, %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_Some_Record_Constr_m_args_336", i32 0, i32 0) } -@"$TyDescr_Option_None_Record_Constr_m_args_339" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer -@"$TyDescr_ADT_None_340" = unnamed_addr constant [4 x i8] c"None" -@"$TyDescr_Option_None_Record_ADTTyp_Constr_341" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_314" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_None_340", i32 0, i32 0), i32 4 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_None_Record_Constr_m_args_339", i32 0, i32 0) } -@"$TyDescr_Option_Record_ADTTyp_Specl_m_constrs_342" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_314"*] [%"$TyDescrTy_ADTTyp_Constr_314"* @"$TyDescr_Option_Some_Record_ADTTyp_Constr_338", %"$TyDescrTy_ADTTyp_Constr_314"* @"$TyDescr_Option_None_Record_ADTTyp_Constr_341"] -@"$TyDescr_Option_Record_ADTTyp_Specl_m_TArgs_343" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_ADT_Record_318"] -@"$TyDescr_Option_Record_ADTTyp_Specl_344" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_312" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_Record_ADTTyp_Specl_m_TArgs_343", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_314"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_314"*], [2 x %"$TyDescrTy_ADTTyp_Constr_314"*]* @"$TyDescr_Option_Record_ADTTyp_Specl_m_constrs_342", i32 0, i32 0), %"$TyDescrTy_ADTTyp_313"* @"$TyDescr_Option_ADTTyp_326" } -@"$TyDescr_Option_Some_ByStr20_Constr_m_args_345" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Bystr20_311"] -@"$TyDescr_ADT_Some_346" = unnamed_addr constant [4 x i8] c"Some" -@"$TyDescr_Option_Some_ByStr20_ADTTyp_Constr_347" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_314" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Some_346", i32 0, i32 0), i32 4 }, i32 1, %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_Some_ByStr20_Constr_m_args_345", i32 0, i32 0) } -@"$TyDescr_Option_None_ByStr20_Constr_m_args_348" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer -@"$TyDescr_ADT_None_349" = unnamed_addr constant [4 x i8] c"None" -@"$TyDescr_Option_None_ByStr20_ADTTyp_Constr_350" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_314" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_None_349", i32 0, i32 0), i32 4 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_None_ByStr20_Constr_m_args_348", i32 0, i32 0) } -@"$TyDescr_Option_ByStr20_ADTTyp_Specl_m_constrs_351" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_314"*] [%"$TyDescrTy_ADTTyp_Constr_314"* @"$TyDescr_Option_Some_ByStr20_ADTTyp_Constr_347", %"$TyDescrTy_ADTTyp_Constr_314"* @"$TyDescr_Option_None_ByStr20_ADTTyp_Constr_350"] -@"$TyDescr_Option_ByStr20_ADTTyp_Specl_m_TArgs_352" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Bystr20_311"] -@"$TyDescr_Option_ByStr20_ADTTyp_Specl_353" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_312" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_ByStr20_ADTTyp_Specl_m_TArgs_352", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_314"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_314"*], [2 x %"$TyDescrTy_ADTTyp_Constr_314"*]* @"$TyDescr_Option_ByStr20_ADTTyp_Specl_m_constrs_351", i32 0, i32 0), %"$TyDescrTy_ADTTyp_313"* @"$TyDescr_Option_ADTTyp_326" } -@"$TyDescr_Option_ADTTyp_m_specls_354" = unnamed_addr constant [3 x %"$TyDescrTy_ADTTyp_Specl_312"*] [%"$TyDescrTy_ADTTyp_Specl_312"* @"$TyDescr_Option_List_(ByStr20)_ADTTyp_Specl_335", %"$TyDescrTy_ADTTyp_Specl_312"* @"$TyDescr_Option_Record_ADTTyp_Specl_344", %"$TyDescrTy_ADTTyp_Specl_312"* @"$TyDescr_Option_ByStr20_ADTTyp_Specl_353"] -@"$TyDescr_ADT_Option_355" = unnamed_addr constant [6 x i8] c"Option" -@"$TyDescr_Record_ADTTyp_356" = unnamed_addr constant %"$TyDescrTy_ADTTyp_313" { %TyDescrString { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$TyDescr_ADT_Record_364", i32 0, i32 0), i32 6 }, i32 0, i32 1, i32 1, %"$TyDescrTy_ADTTyp_Specl_312"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Specl_312"*], [1 x %"$TyDescrTy_ADTTyp_Specl_312"*]* @"$TyDescr_Record_ADTTyp_m_specls_363", i32 0, i32 0) } -@"$TyDescr_Record_Record_Constr_m_args_357" = unnamed_addr constant [2 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311"] -@"$TyDescr_ADT_Record_358" = unnamed_addr constant [6 x i8] c"Record" -@"$TyDescr_Record_Record_ADTTyp_Constr_359" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_314" { %TyDescrString { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$TyDescr_ADT_Record_358", i32 0, i32 0), i32 6 }, i32 2, %_TyDescrTy_Typ** getelementptr inbounds ([2 x %_TyDescrTy_Typ*], [2 x %_TyDescrTy_Typ*]* @"$TyDescr_Record_Record_Constr_m_args_357", i32 0, i32 0) } -@"$TyDescr_Record_ADTTyp_Specl_m_constrs_360" = unnamed_addr constant [1 x %"$TyDescrTy_ADTTyp_Constr_314"*] [%"$TyDescrTy_ADTTyp_Constr_314"* @"$TyDescr_Record_Record_ADTTyp_Constr_359"] -@"$TyDescr_Record_ADTTyp_Specl_m_TArgs_361" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer -@"$TyDescr_Record_ADTTyp_Specl_362" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_312" { %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Record_ADTTyp_Specl_m_TArgs_361", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_314"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Constr_314"*], [1 x %"$TyDescrTy_ADTTyp_Constr_314"*]* @"$TyDescr_Record_ADTTyp_Specl_m_constrs_360", i32 0, i32 0), %"$TyDescrTy_ADTTyp_313"* @"$TyDescr_Record_ADTTyp_356" } -@"$TyDescr_Record_ADTTyp_m_specls_363" = unnamed_addr constant [1 x %"$TyDescrTy_ADTTyp_Specl_312"*] [%"$TyDescrTy_ADTTyp_Specl_312"* @"$TyDescr_Record_ADTTyp_Specl_362"] -@"$TyDescr_ADT_Record_364" = unnamed_addr constant [6 x i8] c"Record" -@"$TyDescr_List_ADTTyp_365" = unnamed_addr constant %"$TyDescrTy_ADTTyp_313" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_List_385", i32 0, i32 0), i32 4 }, i32 1, i32 2, i32 2, %"$TyDescrTy_ADTTyp_Specl_312"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Specl_312"*], [2 x %"$TyDescrTy_ADTTyp_Specl_312"*]* @"$TyDescr_List_ADTTyp_m_specls_384", i32 0, i32 0) } -@"$TyDescr_List_Cons_Message_Constr_m_args_366" = unnamed_addr constant [2 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Message_299", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_319"] -@"$TyDescr_ADT_Cons_367" = unnamed_addr constant [4 x i8] c"Cons" -@"$TyDescr_List_Cons_Message_ADTTyp_Constr_368" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_314" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Cons_367", 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_366", i32 0, i32 0) } -@"$TyDescr_List_Nil_Message_Constr_m_args_369" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer -@"$TyDescr_ADT_Nil_370" = unnamed_addr constant [3 x i8] c"Nil" -@"$TyDescr_List_Nil_Message_ADTTyp_Constr_371" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_314" { %TyDescrString { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$TyDescr_ADT_Nil_370", 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_369", i32 0, i32 0) } -@"$TyDescr_List_Message_ADTTyp_Specl_m_constrs_372" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_314"*] [%"$TyDescrTy_ADTTyp_Constr_314"* @"$TyDescr_List_Cons_Message_ADTTyp_Constr_368", %"$TyDescrTy_ADTTyp_Constr_314"* @"$TyDescr_List_Nil_Message_ADTTyp_Constr_371"] -@"$TyDescr_List_Message_ADTTyp_Specl_m_TArgs_373" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Message_299"] -@"$TyDescr_List_Message_ADTTyp_Specl_374" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_312" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Message_ADTTyp_Specl_m_TArgs_373", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_314"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_314"*], [2 x %"$TyDescrTy_ADTTyp_Constr_314"*]* @"$TyDescr_List_Message_ADTTyp_Specl_m_constrs_372", i32 0, i32 0), %"$TyDescrTy_ADTTyp_313"* @"$TyDescr_List_ADTTyp_365" } -@"$TyDescr_List_Cons_ByStr20_Constr_m_args_375" = unnamed_addr constant [2 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_320"] -@"$TyDescr_ADT_Cons_376" = unnamed_addr constant [4 x i8] c"Cons" -@"$TyDescr_List_Cons_ByStr20_ADTTyp_Constr_377" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_314" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Cons_376", i32 0, i32 0), i32 4 }, i32 2, %_TyDescrTy_Typ** getelementptr inbounds ([2 x %_TyDescrTy_Typ*], [2 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Cons_ByStr20_Constr_m_args_375", i32 0, i32 0) } -@"$TyDescr_List_Nil_ByStr20_Constr_m_args_378" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer -@"$TyDescr_ADT_Nil_379" = unnamed_addr constant [3 x i8] c"Nil" -@"$TyDescr_List_Nil_ByStr20_ADTTyp_Constr_380" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_314" { %TyDescrString { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$TyDescr_ADT_Nil_379", i32 0, i32 0), i32 3 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Nil_ByStr20_Constr_m_args_378", i32 0, i32 0) } -@"$TyDescr_List_ByStr20_ADTTyp_Specl_m_constrs_381" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_314"*] [%"$TyDescrTy_ADTTyp_Constr_314"* @"$TyDescr_List_Cons_ByStr20_ADTTyp_Constr_377", %"$TyDescrTy_ADTTyp_Constr_314"* @"$TyDescr_List_Nil_ByStr20_ADTTyp_Constr_380"] -@"$TyDescr_List_ByStr20_ADTTyp_Specl_m_TArgs_382" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Bystr20_311"] -@"$TyDescr_List_ByStr20_ADTTyp_Specl_383" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_312" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_List_ByStr20_ADTTyp_Specl_m_TArgs_382", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_314"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_314"*], [2 x %"$TyDescrTy_ADTTyp_Constr_314"*]* @"$TyDescr_List_ByStr20_ADTTyp_Specl_m_constrs_381", i32 0, i32 0), %"$TyDescrTy_ADTTyp_313"* @"$TyDescr_List_ADTTyp_365" } -@"$TyDescr_List_ADTTyp_m_specls_384" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Specl_312"*] [%"$TyDescrTy_ADTTyp_Specl_312"* @"$TyDescr_List_Message_ADTTyp_Specl_374", %"$TyDescrTy_ADTTyp_Specl_312"* @"$TyDescr_List_ByStr20_ADTTyp_Specl_383"] -@"$TyDescr_ADT_List_385" = unnamed_addr constant [4 x i8] c"List" -@"$TyDescr_Bool_ADTTyp_386" = unnamed_addr constant %"$TyDescrTy_ADTTyp_313" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Bool_397", i32 0, i32 0), i32 4 }, i32 0, i32 2, i32 1, %"$TyDescrTy_ADTTyp_Specl_312"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Specl_312"*], [1 x %"$TyDescrTy_ADTTyp_Specl_312"*]* @"$TyDescr_Bool_ADTTyp_m_specls_396", i32 0, i32 0) } -@"$TyDescr_Bool_True_Constr_m_args_387" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer -@"$TyDescr_ADT_True_388" = unnamed_addr constant [4 x i8] c"True" -@"$TyDescr_Bool_True_ADTTyp_Constr_389" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_314" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_True_388", 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_387", i32 0, i32 0) } -@"$TyDescr_Bool_False_Constr_m_args_390" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer -@"$TyDescr_ADT_False_391" = unnamed_addr constant [5 x i8] c"False" -@"$TyDescr_Bool_False_ADTTyp_Constr_392" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_314" { %TyDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$TyDescr_ADT_False_391", 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_390", i32 0, i32 0) } -@"$TyDescr_Bool_ADTTyp_Specl_m_constrs_393" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_314"*] [%"$TyDescrTy_ADTTyp_Constr_314"* @"$TyDescr_Bool_True_ADTTyp_Constr_389", %"$TyDescrTy_ADTTyp_Constr_314"* @"$TyDescr_Bool_False_ADTTyp_Constr_392"] -@"$TyDescr_Bool_ADTTyp_Specl_m_TArgs_394" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer -@"$TyDescr_Bool_ADTTyp_Specl_395" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_312" { %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Bool_ADTTyp_Specl_m_TArgs_394", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_314"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_314"*], [2 x %"$TyDescrTy_ADTTyp_Constr_314"*]* @"$TyDescr_Bool_ADTTyp_Specl_m_constrs_393", i32 0, i32 0), %"$TyDescrTy_ADTTyp_313"* @"$TyDescr_Bool_ADTTyp_386" } -@"$TyDescr_Bool_ADTTyp_m_specls_396" = unnamed_addr constant [1 x %"$TyDescrTy_ADTTyp_Specl_312"*] [%"$TyDescrTy_ADTTyp_Specl_312"* @"$TyDescr_Bool_ADTTyp_Specl_395"] -@"$TyDescr_ADT_Bool_397" = unnamed_addr constant [4 x i8] c"Bool" -@"$TyDescr_MapTyp_398" = unnamed_addr constant %"$TyDescr_MapTyp_322" { %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_320" } -@"$TyDescr_MapTyp_399" = unnamed_addr constant %"$TyDescr_MapTyp_322" { %_TyDescrTy_Typ* @"$TyDescr_Bystr32_309", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311" } -@"$TyDescr_MapTyp_400" = unnamed_addr constant %"$TyDescr_MapTyp_322" { %_TyDescrTy_Typ* @"$TyDescr_Bystr32_309", %_TyDescrTy_Typ* @"$TyDescr_ADT_Record_318" } -@"$stringlit_1206" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_1211" = unnamed_addr constant [8 x i8] c"AdminSet" -@"$stringlit_1214" = unnamed_addr constant [7 x i8] c"address" -@"$stringlit_1222" = unnamed_addr constant [10 x i8] c"isApproved" -@"$stringlit_1252" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_1257" = unnamed_addr constant [11 x i8] c"ApprovedFor" -@"$stringlit_1260" = unnamed_addr constant [4 x i8] c"user" -@"$stringlit_1268" = unnamed_addr constant [8 x i8] c"operator" -@"$stringlit_1276" = unnamed_addr constant [10 x i8] c"isApproved" -@"$stringlit_1286" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_1291" = unnamed_addr constant [8 x i8] c"Approved" -@"$stringlit_1294" = unnamed_addr constant [7 x i8] c"address" -@"$stringlit_1304" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_1309" = unnamed_addr constant [12 x i8] c"NewRegistrar" -@"$stringlit_1312" = unnamed_addr constant [7 x i8] c"address" -@"$stringlit_1330" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_1335" = unnamed_addr constant [9 x i8] c"NewDomain" -@"$stringlit_1338" = unnamed_addr constant [6 x i8] c"parent" -@"$stringlit_1346" = unnamed_addr constant [5 x i8] c"label" -@"$stringlit_1376" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_1381" = unnamed_addr constant [10 x i8] c"Configured" -@"$stringlit_1384" = unnamed_addr constant [4 x i8] c"node" -@"$stringlit_1392" = unnamed_addr constant [5 x i8] c"owner" -@"$stringlit_1400" = unnamed_addr constant [8 x i8] c"resolver" -@"$stringlit_1410" = unnamed_addr constant [10 x i8] c"_eventname" -@"$stringlit_1415" = unnamed_addr constant [5 x i8] c"Error" -@"$stringlit_1418" = unnamed_addr constant [3 x i8] c"msg" +@"$TyDescr_Int32_Prim_275" = global %"$TyDescrTy_PrimTyp_274" zeroinitializer +@"$TyDescr_Int32_276" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_274"* @"$TyDescr_Int32_Prim_275" to i8*) } +@"$TyDescr_Uint32_Prim_277" = global %"$TyDescrTy_PrimTyp_274" { i32 1, i32 0 } +@"$TyDescr_Uint32_278" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_274"* @"$TyDescr_Uint32_Prim_277" to i8*) } +@"$TyDescr_Int64_Prim_279" = global %"$TyDescrTy_PrimTyp_274" { i32 0, i32 1 } +@"$TyDescr_Int64_280" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_274"* @"$TyDescr_Int64_Prim_279" to i8*) } +@"$TyDescr_Uint64_Prim_281" = global %"$TyDescrTy_PrimTyp_274" { i32 1, i32 1 } +@"$TyDescr_Uint64_282" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_274"* @"$TyDescr_Uint64_Prim_281" to i8*) } +@"$TyDescr_Int128_Prim_283" = global %"$TyDescrTy_PrimTyp_274" { i32 0, i32 2 } +@"$TyDescr_Int128_284" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_274"* @"$TyDescr_Int128_Prim_283" to i8*) } +@"$TyDescr_Uint128_Prim_285" = global %"$TyDescrTy_PrimTyp_274" { i32 1, i32 2 } +@"$TyDescr_Uint128_286" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_274"* @"$TyDescr_Uint128_Prim_285" to i8*) } +@"$TyDescr_Int256_Prim_287" = global %"$TyDescrTy_PrimTyp_274" { i32 0, i32 3 } +@"$TyDescr_Int256_288" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_274"* @"$TyDescr_Int256_Prim_287" to i8*) } +@"$TyDescr_Uint256_Prim_289" = global %"$TyDescrTy_PrimTyp_274" { i32 1, i32 3 } +@"$TyDescr_Uint256_290" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_274"* @"$TyDescr_Uint256_Prim_289" to i8*) } +@"$TyDescr_String_Prim_291" = global %"$TyDescrTy_PrimTyp_274" { i32 2, i32 0 } +@"$TyDescr_String_292" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_274"* @"$TyDescr_String_Prim_291" to i8*) } +@"$TyDescr_Bnum_Prim_293" = global %"$TyDescrTy_PrimTyp_274" { i32 3, i32 0 } +@"$TyDescr_Bnum_294" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_274"* @"$TyDescr_Bnum_Prim_293" to i8*) } +@"$TyDescr_Message_Prim_295" = global %"$TyDescrTy_PrimTyp_274" { i32 4, i32 0 } +@"$TyDescr_Message_296" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_274"* @"$TyDescr_Message_Prim_295" to i8*) } +@"$TyDescr_Event_Prim_297" = global %"$TyDescrTy_PrimTyp_274" { i32 5, i32 0 } +@"$TyDescr_Event_298" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_274"* @"$TyDescr_Event_Prim_297" to i8*) } +@"$TyDescr_Exception_Prim_299" = global %"$TyDescrTy_PrimTyp_274" { i32 6, i32 0 } +@"$TyDescr_Exception_300" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_274"* @"$TyDescr_Exception_Prim_299" to i8*) } +@"$TyDescr_Bystr_Prim_301" = global %"$TyDescrTy_PrimTyp_274" { i32 7, i32 0 } +@"$TyDescr_Bystr_302" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_274"* @"$TyDescr_Bystr_Prim_301" to i8*) } +@"$TyDescr_Bystr64_Prim_303" = global %"$TyDescrTy_PrimTyp_274" { i32 8, i32 64 } +@"$TyDescr_Bystr64_304" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_274"* @"$TyDescr_Bystr64_Prim_303" to i8*) } +@"$TyDescr_Bystr32_Prim_305" = global %"$TyDescrTy_PrimTyp_274" { i32 8, i32 32 } +@"$TyDescr_Bystr32_306" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_274"* @"$TyDescr_Bystr32_Prim_305" to i8*) } +@"$TyDescr_Bystr20_Prim_307" = global %"$TyDescrTy_PrimTyp_274" { i32 8, i32 20 } +@"$TyDescr_Bystr20_308" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_274"* @"$TyDescr_Bystr20_Prim_307" to i8*) } +@"$TyDescr_ADT_Option_List_(ByStr20)_312" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_309"* @"$TyDescr_Option_List_(ByStr20)_ADTTyp_Specl_332" to i8*) } +@"$TyDescr_ADT_Option_Record_313" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_309"* @"$TyDescr_Option_Record_ADTTyp_Specl_341" to i8*) } +@"$TyDescr_ADT_Option_ByStr20_314" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_309"* @"$TyDescr_Option_ByStr20_ADTTyp_Specl_350" to i8*) } +@"$TyDescr_ADT_Record_315" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_309"* @"$TyDescr_Record_ADTTyp_Specl_359" to i8*) } +@"$TyDescr_ADT_List_Message_316" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_309"* @"$TyDescr_List_Message_ADTTyp_Specl_371" to i8*) } +@"$TyDescr_ADT_List_ByStr20_317" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_309"* @"$TyDescr_List_ByStr20_ADTTyp_Specl_380" to i8*) } +@"$TyDescr_ADT_Bool_318" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_309"* @"$TyDescr_Bool_ADTTyp_Specl_392" to i8*) } +@"$TyDescr_Map_320" = unnamed_addr constant %_TyDescrTy_Typ { i32 2, i8* bitcast (%"$TyDescr_MapTyp_319"* @"$TyDescr_MapTyp_395" to i8*) } +@"$TyDescr_Map_321" = unnamed_addr constant %_TyDescrTy_Typ { i32 2, i8* bitcast (%"$TyDescr_MapTyp_319"* @"$TyDescr_MapTyp_396" to i8*) } +@"$TyDescr_Map_322" = unnamed_addr constant %_TyDescrTy_Typ { i32 2, i8* bitcast (%"$TyDescr_MapTyp_319"* @"$TyDescr_MapTyp_397" to i8*) } +@"$TyDescr_Option_ADTTyp_323" = unnamed_addr constant %"$TyDescrTy_ADTTyp_310" { %TyDescrString { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$TyDescr_ADT_Option_352", i32 0, i32 0), i32 6 }, i32 1, i32 2, i32 3, %"$TyDescrTy_ADTTyp_Specl_309"** getelementptr inbounds ([3 x %"$TyDescrTy_ADTTyp_Specl_309"*], [3 x %"$TyDescrTy_ADTTyp_Specl_309"*]* @"$TyDescr_Option_ADTTyp_m_specls_351", i32 0, i32 0) } +@"$TyDescr_Option_Some_List_(ByStr20)_Constr_m_args_324" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_317"] +@"$TyDescr_ADT_Some_325" = unnamed_addr constant [4 x i8] c"Some" +@"$TyDescr_Option_Some_List_(ByStr20)_ADTTyp_Constr_326" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_311" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Some_325", i32 0, i32 0), i32 4 }, i32 1, %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_Some_List_(ByStr20)_Constr_m_args_324", i32 0, i32 0) } +@"$TyDescr_Option_None_List_(ByStr20)_Constr_m_args_327" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_None_328" = unnamed_addr constant [4 x i8] c"None" +@"$TyDescr_Option_None_List_(ByStr20)_ADTTyp_Constr_329" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_311" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_None_328", i32 0, i32 0), i32 4 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_None_List_(ByStr20)_Constr_m_args_327", i32 0, i32 0) } +@"$TyDescr_Option_List_(ByStr20)_ADTTyp_Specl_m_constrs_330" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_311"*] [%"$TyDescrTy_ADTTyp_Constr_311"* @"$TyDescr_Option_Some_List_(ByStr20)_ADTTyp_Constr_326", %"$TyDescrTy_ADTTyp_Constr_311"* @"$TyDescr_Option_None_List_(ByStr20)_ADTTyp_Constr_329"] +@"$TyDescr_Option_List_(ByStr20)_ADTTyp_Specl_m_TArgs_331" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_317"] +@"$TyDescr_Option_List_(ByStr20)_ADTTyp_Specl_332" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_309" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_List_(ByStr20)_ADTTyp_Specl_m_TArgs_331", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_311"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_311"*], [2 x %"$TyDescrTy_ADTTyp_Constr_311"*]* @"$TyDescr_Option_List_(ByStr20)_ADTTyp_Specl_m_constrs_330", i32 0, i32 0), %"$TyDescrTy_ADTTyp_310"* @"$TyDescr_Option_ADTTyp_323" } +@"$TyDescr_Option_Some_Record_Constr_m_args_333" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_ADT_Record_315"] +@"$TyDescr_ADT_Some_334" = unnamed_addr constant [4 x i8] c"Some" +@"$TyDescr_Option_Some_Record_ADTTyp_Constr_335" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_311" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Some_334", i32 0, i32 0), i32 4 }, i32 1, %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_Some_Record_Constr_m_args_333", i32 0, i32 0) } +@"$TyDescr_Option_None_Record_Constr_m_args_336" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_None_337" = unnamed_addr constant [4 x i8] c"None" +@"$TyDescr_Option_None_Record_ADTTyp_Constr_338" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_311" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_None_337", i32 0, i32 0), i32 4 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_None_Record_Constr_m_args_336", i32 0, i32 0) } +@"$TyDescr_Option_Record_ADTTyp_Specl_m_constrs_339" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_311"*] [%"$TyDescrTy_ADTTyp_Constr_311"* @"$TyDescr_Option_Some_Record_ADTTyp_Constr_335", %"$TyDescrTy_ADTTyp_Constr_311"* @"$TyDescr_Option_None_Record_ADTTyp_Constr_338"] +@"$TyDescr_Option_Record_ADTTyp_Specl_m_TArgs_340" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_ADT_Record_315"] +@"$TyDescr_Option_Record_ADTTyp_Specl_341" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_309" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_Record_ADTTyp_Specl_m_TArgs_340", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_311"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_311"*], [2 x %"$TyDescrTy_ADTTyp_Constr_311"*]* @"$TyDescr_Option_Record_ADTTyp_Specl_m_constrs_339", i32 0, i32 0), %"$TyDescrTy_ADTTyp_310"* @"$TyDescr_Option_ADTTyp_323" } +@"$TyDescr_Option_Some_ByStr20_Constr_m_args_342" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Bystr20_308"] +@"$TyDescr_ADT_Some_343" = unnamed_addr constant [4 x i8] c"Some" +@"$TyDescr_Option_Some_ByStr20_ADTTyp_Constr_344" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_311" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Some_343", i32 0, i32 0), i32 4 }, i32 1, %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_Some_ByStr20_Constr_m_args_342", i32 0, i32 0) } +@"$TyDescr_Option_None_ByStr20_Constr_m_args_345" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_None_346" = unnamed_addr constant [4 x i8] c"None" +@"$TyDescr_Option_None_ByStr20_ADTTyp_Constr_347" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_311" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_None_346", i32 0, i32 0), i32 4 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_None_ByStr20_Constr_m_args_345", i32 0, i32 0) } +@"$TyDescr_Option_ByStr20_ADTTyp_Specl_m_constrs_348" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_311"*] [%"$TyDescrTy_ADTTyp_Constr_311"* @"$TyDescr_Option_Some_ByStr20_ADTTyp_Constr_344", %"$TyDescrTy_ADTTyp_Constr_311"* @"$TyDescr_Option_None_ByStr20_ADTTyp_Constr_347"] +@"$TyDescr_Option_ByStr20_ADTTyp_Specl_m_TArgs_349" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Bystr20_308"] +@"$TyDescr_Option_ByStr20_ADTTyp_Specl_350" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_309" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_ByStr20_ADTTyp_Specl_m_TArgs_349", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_311"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_311"*], [2 x %"$TyDescrTy_ADTTyp_Constr_311"*]* @"$TyDescr_Option_ByStr20_ADTTyp_Specl_m_constrs_348", i32 0, i32 0), %"$TyDescrTy_ADTTyp_310"* @"$TyDescr_Option_ADTTyp_323" } +@"$TyDescr_Option_ADTTyp_m_specls_351" = unnamed_addr constant [3 x %"$TyDescrTy_ADTTyp_Specl_309"*] [%"$TyDescrTy_ADTTyp_Specl_309"* @"$TyDescr_Option_List_(ByStr20)_ADTTyp_Specl_332", %"$TyDescrTy_ADTTyp_Specl_309"* @"$TyDescr_Option_Record_ADTTyp_Specl_341", %"$TyDescrTy_ADTTyp_Specl_309"* @"$TyDescr_Option_ByStr20_ADTTyp_Specl_350"] +@"$TyDescr_ADT_Option_352" = unnamed_addr constant [6 x i8] c"Option" +@"$TyDescr_Record_ADTTyp_353" = unnamed_addr constant %"$TyDescrTy_ADTTyp_310" { %TyDescrString { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$TyDescr_ADT_Record_361", i32 0, i32 0), i32 6 }, i32 0, i32 1, i32 1, %"$TyDescrTy_ADTTyp_Specl_309"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Specl_309"*], [1 x %"$TyDescrTy_ADTTyp_Specl_309"*]* @"$TyDescr_Record_ADTTyp_m_specls_360", i32 0, i32 0) } +@"$TyDescr_Record_Record_Constr_m_args_354" = unnamed_addr constant [2 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308"] +@"$TyDescr_ADT_Record_355" = unnamed_addr constant [6 x i8] c"Record" +@"$TyDescr_Record_Record_ADTTyp_Constr_356" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_311" { %TyDescrString { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$TyDescr_ADT_Record_355", i32 0, i32 0), i32 6 }, i32 2, %_TyDescrTy_Typ** getelementptr inbounds ([2 x %_TyDescrTy_Typ*], [2 x %_TyDescrTy_Typ*]* @"$TyDescr_Record_Record_Constr_m_args_354", i32 0, i32 0) } +@"$TyDescr_Record_ADTTyp_Specl_m_constrs_357" = unnamed_addr constant [1 x %"$TyDescrTy_ADTTyp_Constr_311"*] [%"$TyDescrTy_ADTTyp_Constr_311"* @"$TyDescr_Record_Record_ADTTyp_Constr_356"] +@"$TyDescr_Record_ADTTyp_Specl_m_TArgs_358" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_Record_ADTTyp_Specl_359" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_309" { %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Record_ADTTyp_Specl_m_TArgs_358", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_311"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Constr_311"*], [1 x %"$TyDescrTy_ADTTyp_Constr_311"*]* @"$TyDescr_Record_ADTTyp_Specl_m_constrs_357", i32 0, i32 0), %"$TyDescrTy_ADTTyp_310"* @"$TyDescr_Record_ADTTyp_353" } +@"$TyDescr_Record_ADTTyp_m_specls_360" = unnamed_addr constant [1 x %"$TyDescrTy_ADTTyp_Specl_309"*] [%"$TyDescrTy_ADTTyp_Specl_309"* @"$TyDescr_Record_ADTTyp_Specl_359"] +@"$TyDescr_ADT_Record_361" = unnamed_addr constant [6 x i8] c"Record" +@"$TyDescr_List_ADTTyp_362" = unnamed_addr constant %"$TyDescrTy_ADTTyp_310" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_List_382", i32 0, i32 0), i32 4 }, i32 1, i32 2, i32 2, %"$TyDescrTy_ADTTyp_Specl_309"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Specl_309"*], [2 x %"$TyDescrTy_ADTTyp_Specl_309"*]* @"$TyDescr_List_ADTTyp_m_specls_381", i32 0, i32 0) } +@"$TyDescr_List_Cons_Message_Constr_m_args_363" = unnamed_addr constant [2 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Message_296", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_316"] +@"$TyDescr_ADT_Cons_364" = unnamed_addr constant [4 x i8] c"Cons" +@"$TyDescr_List_Cons_Message_ADTTyp_Constr_365" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_311" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Cons_364", 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_363", i32 0, i32 0) } +@"$TyDescr_List_Nil_Message_Constr_m_args_366" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_Nil_367" = unnamed_addr constant [3 x i8] c"Nil" +@"$TyDescr_List_Nil_Message_ADTTyp_Constr_368" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_311" { %TyDescrString { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$TyDescr_ADT_Nil_367", 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_366", i32 0, i32 0) } +@"$TyDescr_List_Message_ADTTyp_Specl_m_constrs_369" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_311"*] [%"$TyDescrTy_ADTTyp_Constr_311"* @"$TyDescr_List_Cons_Message_ADTTyp_Constr_365", %"$TyDescrTy_ADTTyp_Constr_311"* @"$TyDescr_List_Nil_Message_ADTTyp_Constr_368"] +@"$TyDescr_List_Message_ADTTyp_Specl_m_TArgs_370" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Message_296"] +@"$TyDescr_List_Message_ADTTyp_Specl_371" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_309" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Message_ADTTyp_Specl_m_TArgs_370", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_311"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_311"*], [2 x %"$TyDescrTy_ADTTyp_Constr_311"*]* @"$TyDescr_List_Message_ADTTyp_Specl_m_constrs_369", i32 0, i32 0), %"$TyDescrTy_ADTTyp_310"* @"$TyDescr_List_ADTTyp_362" } +@"$TyDescr_List_Cons_ByStr20_Constr_m_args_372" = unnamed_addr constant [2 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_317"] +@"$TyDescr_ADT_Cons_373" = unnamed_addr constant [4 x i8] c"Cons" +@"$TyDescr_List_Cons_ByStr20_ADTTyp_Constr_374" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_311" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Cons_373", i32 0, i32 0), i32 4 }, i32 2, %_TyDescrTy_Typ** getelementptr inbounds ([2 x %_TyDescrTy_Typ*], [2 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Cons_ByStr20_Constr_m_args_372", i32 0, i32 0) } +@"$TyDescr_List_Nil_ByStr20_Constr_m_args_375" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_Nil_376" = unnamed_addr constant [3 x i8] c"Nil" +@"$TyDescr_List_Nil_ByStr20_ADTTyp_Constr_377" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_311" { %TyDescrString { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$TyDescr_ADT_Nil_376", i32 0, i32 0), i32 3 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Nil_ByStr20_Constr_m_args_375", i32 0, i32 0) } +@"$TyDescr_List_ByStr20_ADTTyp_Specl_m_constrs_378" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_311"*] [%"$TyDescrTy_ADTTyp_Constr_311"* @"$TyDescr_List_Cons_ByStr20_ADTTyp_Constr_374", %"$TyDescrTy_ADTTyp_Constr_311"* @"$TyDescr_List_Nil_ByStr20_ADTTyp_Constr_377"] +@"$TyDescr_List_ByStr20_ADTTyp_Specl_m_TArgs_379" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Bystr20_308"] +@"$TyDescr_List_ByStr20_ADTTyp_Specl_380" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_309" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_List_ByStr20_ADTTyp_Specl_m_TArgs_379", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_311"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_311"*], [2 x %"$TyDescrTy_ADTTyp_Constr_311"*]* @"$TyDescr_List_ByStr20_ADTTyp_Specl_m_constrs_378", i32 0, i32 0), %"$TyDescrTy_ADTTyp_310"* @"$TyDescr_List_ADTTyp_362" } +@"$TyDescr_List_ADTTyp_m_specls_381" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Specl_309"*] [%"$TyDescrTy_ADTTyp_Specl_309"* @"$TyDescr_List_Message_ADTTyp_Specl_371", %"$TyDescrTy_ADTTyp_Specl_309"* @"$TyDescr_List_ByStr20_ADTTyp_Specl_380"] +@"$TyDescr_ADT_List_382" = unnamed_addr constant [4 x i8] c"List" +@"$TyDescr_Bool_ADTTyp_383" = unnamed_addr constant %"$TyDescrTy_ADTTyp_310" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Bool_394", i32 0, i32 0), i32 4 }, i32 0, i32 2, i32 1, %"$TyDescrTy_ADTTyp_Specl_309"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Specl_309"*], [1 x %"$TyDescrTy_ADTTyp_Specl_309"*]* @"$TyDescr_Bool_ADTTyp_m_specls_393", i32 0, i32 0) } +@"$TyDescr_Bool_True_Constr_m_args_384" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_True_385" = unnamed_addr constant [4 x i8] c"True" +@"$TyDescr_Bool_True_ADTTyp_Constr_386" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_311" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_True_385", 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_384", i32 0, i32 0) } +@"$TyDescr_Bool_False_Constr_m_args_387" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_False_388" = unnamed_addr constant [5 x i8] c"False" +@"$TyDescr_Bool_False_ADTTyp_Constr_389" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_311" { %TyDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$TyDescr_ADT_False_388", 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_387", i32 0, i32 0) } +@"$TyDescr_Bool_ADTTyp_Specl_m_constrs_390" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_311"*] [%"$TyDescrTy_ADTTyp_Constr_311"* @"$TyDescr_Bool_True_ADTTyp_Constr_386", %"$TyDescrTy_ADTTyp_Constr_311"* @"$TyDescr_Bool_False_ADTTyp_Constr_389"] +@"$TyDescr_Bool_ADTTyp_Specl_m_TArgs_391" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_Bool_ADTTyp_Specl_392" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_309" { %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Bool_ADTTyp_Specl_m_TArgs_391", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_311"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_311"*], [2 x %"$TyDescrTy_ADTTyp_Constr_311"*]* @"$TyDescr_Bool_ADTTyp_Specl_m_constrs_390", i32 0, i32 0), %"$TyDescrTy_ADTTyp_310"* @"$TyDescr_Bool_ADTTyp_383" } +@"$TyDescr_Bool_ADTTyp_m_specls_393" = unnamed_addr constant [1 x %"$TyDescrTy_ADTTyp_Specl_309"*] [%"$TyDescrTy_ADTTyp_Specl_309"* @"$TyDescr_Bool_ADTTyp_Specl_392"] +@"$TyDescr_ADT_Bool_394" = unnamed_addr constant [4 x i8] c"Bool" +@"$TyDescr_MapTyp_395" = unnamed_addr constant %"$TyDescr_MapTyp_319" { %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_317" } +@"$TyDescr_MapTyp_396" = unnamed_addr constant %"$TyDescr_MapTyp_319" { %_TyDescrTy_Typ* @"$TyDescr_Bystr32_306", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308" } +@"$TyDescr_MapTyp_397" = unnamed_addr constant %"$TyDescr_MapTyp_319" { %_TyDescrTy_Typ* @"$TyDescr_Bystr32_306", %_TyDescrTy_Typ* @"$TyDescr_ADT_Record_315" } +@"$stringlit_1728" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_1733" = unnamed_addr constant [8 x i8] c"AdminSet" +@"$stringlit_1736" = unnamed_addr constant [7 x i8] c"address" +@"$stringlit_1744" = unnamed_addr constant [10 x i8] c"isApproved" +@"$stringlit_1789" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_1794" = unnamed_addr constant [11 x i8] c"ApprovedFor" +@"$stringlit_1797" = unnamed_addr constant [4 x i8] c"user" +@"$stringlit_1805" = unnamed_addr constant [8 x i8] c"operator" +@"$stringlit_1813" = unnamed_addr constant [10 x i8] c"isApproved" +@"$stringlit_1828" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_1833" = unnamed_addr constant [8 x i8] c"Approved" +@"$stringlit_1836" = unnamed_addr constant [7 x i8] c"address" +@"$stringlit_1851" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_1856" = unnamed_addr constant [12 x i8] c"NewRegistrar" +@"$stringlit_1859" = unnamed_addr constant [7 x i8] c"address" +@"$stringlit_1887" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_1892" = unnamed_addr constant [9 x i8] c"NewDomain" +@"$stringlit_1895" = unnamed_addr constant [6 x i8] c"parent" +@"$stringlit_1903" = unnamed_addr constant [5 x i8] c"label" +@"$stringlit_1948" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_1953" = unnamed_addr constant [10 x i8] c"Configured" +@"$stringlit_1956" = unnamed_addr constant [4 x i8] c"node" +@"$stringlit_1964" = unnamed_addr constant [5 x i8] c"owner" +@"$stringlit_1972" = unnamed_addr constant [8 x i8] c"resolver" +@"$stringlit_1987" = unnamed_addr constant [10 x i8] c"_eventname" +@"$stringlit_1992" = unnamed_addr constant [5 x i8] c"Error" +@"$stringlit_1995" = unnamed_addr constant [3 x i8] c"msg" @list_foldr = global { i8*, i8* }* null @list_foldk = global { i8*, i8* }* null @andb = global { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } zeroinitializer @@ -283,2435 +283,3944 @@ target triple = "x86_64-pc-linux-gnu" @_this_address = global [20 x i8] zeroinitializer @initialOwner = global [20 x i8] zeroinitializer @rootNode = global [32 x i8] zeroinitializer -@"$records_1783" = unnamed_addr constant [8 x i8] c"records\00" -@"$registrar_1788" = unnamed_addr constant [10 x i8] c"registrar\00" -@"$approvals_1796" = unnamed_addr constant [10 x i8] c"approvals\00" -@"$operators_1803" = unnamed_addr constant [10 x i8] c"operators\00" -@"$admins_1814" = unnamed_addr constant [7 x i8] c"admins\00" -@"$admins_1821" = unnamed_addr constant [7 x i8] c"admins\00" -@"$admins_1896" = unnamed_addr constant [7 x i8] c"admins\00" -@"$stringlit_1913" = unnamed_addr constant [26 x i8] c"Sender not root node owner" -@"$records_1938" = unnamed_addr constant [8 x i8] c"records\00" -@"$approvals_1965" = unnamed_addr constant [10 x i8] c"approvals\00" -@"$approvals_2004" = unnamed_addr constant [10 x i8] c"approvals\00" -@"$stringlit_2017" = unnamed_addr constant [21 x i8] c"Sender not node owner" -@"$operators_2041" = unnamed_addr constant [10 x i8] c"operators\00" -@"$operators_2113" = unnamed_addr constant [10 x i8] c"operators\00" -@"$records_2150" = unnamed_addr constant [8 x i8] c"records\00" -@"$approvals_2156" = unnamed_addr constant [10 x i8] c"approvals\00" -@"$operators_2170" = unnamed_addr constant [10 x i8] c"operators\00" -@"$records_2210" = unnamed_addr constant [8 x i8] c"records\00" -@"$stringlit_2232" = unnamed_addr constant [4 x i8] c"_tag" -@"$stringlit_2237" = unnamed_addr constant [18 x i8] c"onConfigureSuccess" -@"$stringlit_2240" = unnamed_addr constant [4 x i8] c"node" -@"$stringlit_2247" = unnamed_addr constant [5 x i8] c"owner" -@"$stringlit_2254" = unnamed_addr constant [7 x i8] c"_amount" -@"$stringlit_2261" = unnamed_addr constant [10 x i8] c"_recipient" -@"$stringlit_2279" = unnamed_addr constant [43 x i8] c"Sender not node owner, approved or operator" -@"$stringlit_2289" = unnamed_addr constant [4 x i8] c"_tag" -@"$stringlit_2294" = unnamed_addr constant [18 x i8] c"onConfigureFailure" -@"$stringlit_2297" = unnamed_addr constant [4 x i8] c"node" -@"$stringlit_2304" = unnamed_addr constant [5 x i8] c"owner" -@"$stringlit_2312" = unnamed_addr constant [7 x i8] c"_amount" -@"$stringlit_2319" = unnamed_addr constant [10 x i8] c"_recipient" -@"$records_2353" = unnamed_addr constant [8 x i8] c"records\00" -@"$approvals_2359" = unnamed_addr constant [10 x i8] c"approvals\00" -@"$operators_2373" = unnamed_addr constant [10 x i8] c"operators\00" -@"$records_2414" = unnamed_addr constant [8 x i8] c"records\00" -@"$stringlit_2438" = unnamed_addr constant [43 x i8] c"Sender not node owner, approved or operator" -@"$records_2463" = unnamed_addr constant [8 x i8] c"records\00" -@"$approvals_2469" = unnamed_addr constant [10 x i8] c"approvals\00" -@"$operators_2483" = unnamed_addr constant [10 x i8] c"operators\00" -@"$approvals_2518" = unnamed_addr constant [10 x i8] c"approvals\00" -@"$records_2528" = unnamed_addr constant [8 x i8] c"records\00" -@"$stringlit_2551" = unnamed_addr constant [4 x i8] c"_tag" -@"$stringlit_2556" = unnamed_addr constant [17 x i8] c"onTransferSuccess" -@"$stringlit_2559" = unnamed_addr constant [4 x i8] c"node" -@"$stringlit_2566" = unnamed_addr constant [5 x i8] c"owner" -@"$stringlit_2573" = unnamed_addr constant [7 x i8] c"_amount" -@"$stringlit_2580" = unnamed_addr constant [10 x i8] c"_recipient" -@"$stringlit_2598" = unnamed_addr constant [43 x i8] c"Sender not node owner, approved or operator" -@"$stringlit_2608" = unnamed_addr constant [4 x i8] c"_tag" -@"$stringlit_2613" = unnamed_addr constant [17 x i8] c"onTransferFailure" -@"$stringlit_2616" = unnamed_addr constant [4 x i8] c"node" -@"$stringlit_2623" = unnamed_addr constant [5 x i8] c"owner" -@"$stringlit_2630" = unnamed_addr constant [7 x i8] c"_amount" -@"$stringlit_2637" = unnamed_addr constant [10 x i8] c"_recipient" -@"$records_2669" = unnamed_addr constant [8 x i8] c"records\00" -@"$approvals_2675" = unnamed_addr constant [10 x i8] c"approvals\00" -@"$operators_2689" = unnamed_addr constant [10 x i8] c"operators\00" -@"$records_2736" = unnamed_addr constant [8 x i8] c"records\00" -@"$approvals_2762" = unnamed_addr constant [10 x i8] c"approvals\00" -@"$records_2773" = unnamed_addr constant [8 x i8] c"records\00" -@"$stringlit_2797" = unnamed_addr constant [4 x i8] c"_tag" -@"$stringlit_2802" = unnamed_addr constant [15 x i8] c"onAssignSuccess" -@"$stringlit_2805" = unnamed_addr constant [6 x i8] c"parent" -@"$stringlit_2812" = unnamed_addr constant [5 x i8] c"label" -@"$stringlit_2819" = unnamed_addr constant [5 x i8] c"owner" -@"$stringlit_2826" = unnamed_addr constant [7 x i8] c"_amount" -@"$stringlit_2833" = unnamed_addr constant [10 x i8] c"_recipient" -@"$stringlit_2851" = unnamed_addr constant [45 x i8] c"Sender not parent owner, approved or operator" -@"$stringlit_2861" = unnamed_addr constant [4 x i8] c"_tag" -@"$stringlit_2866" = unnamed_addr constant [15 x i8] c"onAssignFailure" -@"$stringlit_2869" = unnamed_addr constant [6 x i8] c"parent" -@"$stringlit_2876" = unnamed_addr constant [5 x i8] c"label" -@"$stringlit_2883" = unnamed_addr constant [5 x i8] c"owner" -@"$stringlit_2891" = unnamed_addr constant [7 x i8] c"_amount" -@"$stringlit_2898" = unnamed_addr constant [10 x i8] c"_recipient" -@"$admins_2930" = unnamed_addr constant [7 x i8] c"admins\00" -@"$records_2949" = unnamed_addr constant [8 x i8] c"records\00" -@"$records_2956" = unnamed_addr constant [8 x i8] c"records\00" -@"$registrar_2960" = unnamed_addr constant [10 x i8] c"registrar\00" -@"$records_3085" = unnamed_addr constant [8 x i8] c"records\00" -@"$stringlit_3109" = unnamed_addr constant [12 x i8] c"Sender admin" -@"$admins_3133" = unnamed_addr constant [7 x i8] c"admins\00" -@"$registrar_3163" = unnamed_addr constant [10 x i8] c"registrar\00" -@"$records_3191" = unnamed_addr constant [8 x i8] c"records\00" -@"$approvals_3198" = unnamed_addr constant [10 x i8] c"approvals\00" -@"$registrar_3222" = unnamed_addr constant [10 x i8] c"registrar\00" -@"$stringlit_3262" = unnamed_addr constant [4 x i8] c"_tag" -@"$stringlit_3267" = unnamed_addr constant [8 x i8] c"register" -@"$stringlit_3270" = unnamed_addr constant [7 x i8] c"_amount" -@"$stringlit_3277" = unnamed_addr constant [10 x i8] c"_recipient" -@"$stringlit_3285" = unnamed_addr constant [6 x i8] c"origin" -@"$stringlit_3292" = unnamed_addr constant [4 x i8] c"node" -@"$stringlit_3300" = unnamed_addr constant [6 x i8] c"parent" -@"$stringlit_3307" = unnamed_addr constant [5 x i8] c"label" -@"$records_3340" = unnamed_addr constant [8 x i8] c"records\00" -@_tydescr_table = constant [27 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_319", %_TyDescrTy_Typ* @"$TyDescr_Event_301", %_TyDescrTy_Typ* @"$TyDescr_Int64_283", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_321", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_ByStr20_317", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ* @"$TyDescr_Uint256_293", %_TyDescrTy_Typ* @"$TyDescr_Uint32_281", %_TyDescrTy_Typ* @"$TyDescr_Bystr64_307", %_TyDescrTy_Typ* @"$TyDescr_Uint64_285", %_TyDescrTy_Typ* @"$TyDescr_Bnum_297", %_TyDescrTy_Typ* @"$TyDescr_Uint128_289", %_TyDescrTy_Typ* @"$TyDescr_Map_325", %_TyDescrTy_Typ* @"$TyDescr_Exception_303", %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_320", %_TyDescrTy_Typ* @"$TyDescr_ADT_Record_318", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_List_(ByStr20)_315", %_TyDescrTy_Typ* @"$TyDescr_Bystr32_309", %_TyDescrTy_Typ* @"$TyDescr_Int256_291", %_TyDescrTy_Typ* @"$TyDescr_Int128_287", %_TyDescrTy_Typ* @"$TyDescr_Map_323", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Record_316", %_TyDescrTy_Typ* @"$TyDescr_Bystr_305", %_TyDescrTy_Typ* @"$TyDescr_Message_299", %_TyDescrTy_Typ* @"$TyDescr_Map_324", %_TyDescrTy_Typ* @"$TyDescr_Int32_279"] +@"$records_2625" = unnamed_addr constant [8 x i8] c"records\00" +@"$registrar_2635" = unnamed_addr constant [10 x i8] c"registrar\00" +@"$approvals_2648" = unnamed_addr constant [10 x i8] c"approvals\00" +@"$operators_2660" = unnamed_addr constant [10 x i8] c"operators\00" +@"$admins_2676" = unnamed_addr constant [7 x i8] c"admins\00" +@"$admins_2683" = unnamed_addr constant [7 x i8] c"admins\00" +@"$admins_2835" = unnamed_addr constant [7 x i8] c"admins\00" +@"$stringlit_2885" = unnamed_addr constant [26 x i8] c"Sender not root node owner" +@"$records_2923" = unnamed_addr constant [8 x i8] c"records\00" +@"$approvals_2980" = unnamed_addr constant [10 x i8] c"approvals\00" +@"$approvals_3078" = unnamed_addr constant [10 x i8] c"approvals\00" +@"$stringlit_3124" = unnamed_addr constant [21 x i8] c"Sender not node owner" +@"$operators_3161" = unnamed_addr constant [10 x i8] c"operators\00" +@"$operators_3317" = unnamed_addr constant [10 x i8] c"operators\00" +@"$records_3372" = unnamed_addr constant [8 x i8] c"records\00" +@"$approvals_3388" = unnamed_addr constant [10 x i8] c"approvals\00" +@"$operators_3422" = unnamed_addr constant [10 x i8] c"operators\00" +@"$records_3506" = unnamed_addr constant [8 x i8] c"records\00" +@"$stringlit_3561" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3566" = unnamed_addr constant [18 x i8] c"onConfigureSuccess" +@"$stringlit_3569" = unnamed_addr constant [4 x i8] c"node" +@"$stringlit_3576" = unnamed_addr constant [5 x i8] c"owner" +@"$stringlit_3583" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_3590" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3636" = unnamed_addr constant [43 x i8] c"Sender not node owner, approved or operator" +@"$stringlit_3674" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3679" = unnamed_addr constant [18 x i8] c"onConfigureFailure" +@"$stringlit_3682" = unnamed_addr constant [4 x i8] c"node" +@"$stringlit_3689" = unnamed_addr constant [5 x i8] c"owner" +@"$stringlit_3697" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_3704" = unnamed_addr constant [10 x i8] c"_recipient" +@"$records_3751" = unnamed_addr constant [8 x i8] c"records\00" +@"$approvals_3767" = unnamed_addr constant [10 x i8] c"approvals\00" +@"$operators_3801" = unnamed_addr constant [10 x i8] c"operators\00" +@"$records_3886" = unnamed_addr constant [8 x i8] c"records\00" +@"$stringlit_3943" = unnamed_addr constant [43 x i8] c"Sender not node owner, approved or operator" +@"$records_3981" = unnamed_addr constant [8 x i8] c"records\00" +@"$approvals_3997" = unnamed_addr constant [10 x i8] c"approvals\00" +@"$operators_4031" = unnamed_addr constant [10 x i8] c"operators\00" +@"$approvals_4096" = unnamed_addr constant [10 x i8] c"approvals\00" +@"$records_4125" = unnamed_addr constant [8 x i8] c"records\00" +@"$stringlit_4181" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_4186" = unnamed_addr constant [17 x i8] c"onTransferSuccess" +@"$stringlit_4189" = unnamed_addr constant [4 x i8] c"node" +@"$stringlit_4196" = unnamed_addr constant [5 x i8] c"owner" +@"$stringlit_4203" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_4210" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_4256" = unnamed_addr constant [43 x i8] c"Sender not node owner, approved or operator" +@"$stringlit_4294" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_4299" = unnamed_addr constant [17 x i8] c"onTransferFailure" +@"$stringlit_4302" = unnamed_addr constant [4 x i8] c"node" +@"$stringlit_4309" = unnamed_addr constant [5 x i8] c"owner" +@"$stringlit_4316" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_4323" = unnamed_addr constant [10 x i8] c"_recipient" +@"$records_4368" = unnamed_addr constant [8 x i8] c"records\00" +@"$approvals_4384" = unnamed_addr constant [10 x i8] c"approvals\00" +@"$operators_4418" = unnamed_addr constant [10 x i8] c"operators\00" +@"$records_4500" = unnamed_addr constant [8 x i8] c"records\00" +@"$approvals_4564" = unnamed_addr constant [10 x i8] c"approvals\00" +@"$records_4594" = unnamed_addr constant [8 x i8] c"records\00" +@"$stringlit_4651" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_4656" = unnamed_addr constant [15 x i8] c"onAssignSuccess" +@"$stringlit_4659" = unnamed_addr constant [6 x i8] c"parent" +@"$stringlit_4666" = unnamed_addr constant [5 x i8] c"label" +@"$stringlit_4673" = unnamed_addr constant [5 x i8] c"owner" +@"$stringlit_4680" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_4687" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_4733" = unnamed_addr constant [45 x i8] c"Sender not parent owner, approved or operator" +@"$stringlit_4771" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_4776" = unnamed_addr constant [15 x i8] c"onAssignFailure" +@"$stringlit_4779" = unnamed_addr constant [6 x i8] c"parent" +@"$stringlit_4786" = unnamed_addr constant [5 x i8] c"label" +@"$stringlit_4793" = unnamed_addr constant [5 x i8] c"owner" +@"$stringlit_4801" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_4808" = unnamed_addr constant [10 x i8] c"_recipient" +@"$admins_4853" = unnamed_addr constant [7 x i8] c"admins\00" +@"$records_4891" = unnamed_addr constant [8 x i8] c"records\00" +@"$records_4908" = unnamed_addr constant [8 x i8] c"records\00" +@"$registrar_4922" = unnamed_addr constant [10 x i8] c"registrar\00" +@"$records_5179" = unnamed_addr constant [8 x i8] c"records\00" +@"$stringlit_5236" = unnamed_addr constant [12 x i8] c"Sender admin" +@"$admins_5273" = unnamed_addr constant [7 x i8] c"admins\00" +@"$registrar_5353" = unnamed_addr constant [10 x i8] c"registrar\00" +@"$records_5391" = unnamed_addr constant [8 x i8] c"records\00" +@"$approvals_5408" = unnamed_addr constant [10 x i8] c"approvals\00" +@"$registrar_5472" = unnamed_addr constant [10 x i8] c"registrar\00" +@"$stringlit_5567" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_5572" = unnamed_addr constant [8 x i8] c"register" +@"$stringlit_5575" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_5582" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_5590" = unnamed_addr constant [6 x i8] c"origin" +@"$stringlit_5597" = unnamed_addr constant [4 x i8] c"node" +@"$stringlit_5605" = unnamed_addr constant [6 x i8] c"parent" +@"$stringlit_5612" = unnamed_addr constant [5 x i8] c"label" +@"$records_5658" = unnamed_addr constant [8 x i8] c"records\00" +@_tydescr_table = constant [27 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_316", %_TyDescrTy_Typ* @"$TyDescr_Event_298", %_TyDescrTy_Typ* @"$TyDescr_Int64_280", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_318", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_ByStr20_314", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ* @"$TyDescr_Uint256_290", %_TyDescrTy_Typ* @"$TyDescr_Uint32_278", %_TyDescrTy_Typ* @"$TyDescr_Bystr64_304", %_TyDescrTy_Typ* @"$TyDescr_Uint64_282", %_TyDescrTy_Typ* @"$TyDescr_Bnum_294", %_TyDescrTy_Typ* @"$TyDescr_Uint128_286", %_TyDescrTy_Typ* @"$TyDescr_Map_322", %_TyDescrTy_Typ* @"$TyDescr_Exception_300", %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_317", %_TyDescrTy_Typ* @"$TyDescr_ADT_Record_315", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_List_(ByStr20)_312", %_TyDescrTy_Typ* @"$TyDescr_Bystr32_306", %_TyDescrTy_Typ* @"$TyDescr_Int256_288", %_TyDescrTy_Typ* @"$TyDescr_Int128_284", %_TyDescrTy_Typ* @"$TyDescr_Map_320", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Record_313", %_TyDescrTy_Typ* @"$TyDescr_Bystr_302", %_TyDescrTy_Typ* @"$TyDescr_Message_296", %_TyDescrTy_Typ* @"$TyDescr_Map_321", %_TyDescrTy_Typ* @"$TyDescr_Int32_276"] @_tydescr_table_length = constant i32 27 -define internal %TName_Bool* @"$fundef_214"(%"$$fundef_214_env_401"* %0, %"TName_Option_List_(ByStr20)"* %1) { +define internal %TName_Bool* @"$fundef_211"(%"$$fundef_211_env_398"* %0, %"TName_Option_List_(ByStr20)"* %1) { entry: - %"$$fundef_214_env_listByStr20Contains_1537" = getelementptr inbounds %"$$fundef_214_env_401", %"$$fundef_214_env_401"* %0, i32 0, i32 0 - %"$listByStr20Contains_envload_1538" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_214_env_listByStr20Contains_1537" + %"$$fundef_211_env_listByStr20Contains_2164" = getelementptr inbounds %"$$fundef_211_env_398", %"$$fundef_211_env_398"* %0, i32 0, i32 0 + %"$listByStr20Contains_envload_2165" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_211_env_listByStr20Contains_2164" %listByStr20Contains = alloca { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_envload_1538", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains - %"$$fundef_214_env_maybeApproved_1539" = getelementptr inbounds %"$$fundef_214_env_401", %"$$fundef_214_env_401"* %0, i32 0, i32 1 - %"$maybeApproved_envload_1540" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$$fundef_214_env_maybeApproved_1539" + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_envload_2165", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains + %"$$fundef_211_env_maybeApproved_2166" = getelementptr inbounds %"$$fundef_211_env_398", %"$$fundef_211_env_398"* %0, i32 0, i32 1 + %"$maybeApproved_envload_2167" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$$fundef_211_env_maybeApproved_2166" %maybeApproved = alloca %TName_Option_ByStr20* - store %TName_Option_ByStr20* %"$maybeApproved_envload_1540", %TName_Option_ByStr20** %maybeApproved - %"$$fundef_214_env_orb_1541" = getelementptr inbounds %"$$fundef_214_env_401", %"$$fundef_214_env_401"* %0, i32 0, i32 2 - %"$orb_envload_1542" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %"$$fundef_214_env_orb_1541" + store %TName_Option_ByStr20* %"$maybeApproved_envload_2167", %TName_Option_ByStr20** %maybeApproved + %"$$fundef_211_env_orb_2168" = getelementptr inbounds %"$$fundef_211_env_398", %"$$fundef_211_env_398"* %0, i32 0, i32 2 + %"$orb_envload_2169" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %"$$fundef_211_env_orb_2168" %orb = alloca { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } - store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_envload_1542", { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %orb - %"$$fundef_214_env_recordOwner_1543" = getelementptr inbounds %"$$fundef_214_env_401", %"$$fundef_214_env_401"* %0, i32 0, i32 3 - %"$recordOwner_envload_1544" = load [20 x i8], [20 x i8]* %"$$fundef_214_env_recordOwner_1543" + store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_envload_2169", { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %orb + %"$$fundef_211_env_recordOwner_2170" = getelementptr inbounds %"$$fundef_211_env_398", %"$$fundef_211_env_398"* %0, i32 0, i32 3 + %"$recordOwner_envload_2171" = load [20 x i8], [20 x i8]* %"$$fundef_211_env_recordOwner_2170" %recordOwner = alloca [20 x i8] - store [20 x i8] %"$recordOwner_envload_1544", [20 x i8]* %recordOwner - %"$$fundef_214_env_sender_1545" = getelementptr inbounds %"$$fundef_214_env_401", %"$$fundef_214_env_401"* %0, i32 0, i32 4 - %"$sender_envload_1546" = load [20 x i8], [20 x i8]* %"$$fundef_214_env_sender_1545" + store [20 x i8] %"$recordOwner_envload_2171", [20 x i8]* %recordOwner + %"$$fundef_211_env_sender_2172" = getelementptr inbounds %"$$fundef_211_env_398", %"$$fundef_211_env_398"* %0, i32 0, i32 4 + %"$sender_envload_2173" = load [20 x i8], [20 x i8]* %"$$fundef_211_env_sender_2172" %sender = alloca [20 x i8] - store [20 x i8] %"$sender_envload_1546", [20 x i8]* %sender - %"$retval_215" = alloca %TName_Bool* + store [20 x i8] %"$sender_envload_2173", [20 x i8]* %sender + %"$retval_212" = alloca %TName_Bool* + %"$gasrem_2174" = load i64, i64* @_gasrem + %"$gascmp_2175" = icmp ugt i64 1, %"$gasrem_2174" + br i1 %"$gascmp_2175", label %"$out_of_gas_2176", label %"$have_gas_2177" + +"$out_of_gas_2176": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2177" + +"$have_gas_2177": ; preds = %"$out_of_gas_2176", %entry + %"$consume_2178" = sub i64 %"$gasrem_2174", 1 + store i64 %"$consume_2178", i64* @_gasrem %isOwner = alloca %TName_Bool* - %"$execptr_load_1547" = load i8*, i8** @_execptr - %"$eq_sender_1548" = alloca [20 x i8] - %"$sender_1549" = load [20 x i8], [20 x i8]* %sender - store [20 x i8] %"$sender_1549", [20 x i8]* %"$eq_sender_1548" - %"$$eq_sender_1548_1550" = bitcast [20 x i8]* %"$eq_sender_1548" to i8* - %"$eq_recordOwner_1551" = alloca [20 x i8] - %"$recordOwner_1552" = load [20 x i8], [20 x i8]* %recordOwner - store [20 x i8] %"$recordOwner_1552", [20 x i8]* %"$eq_recordOwner_1551" - %"$$eq_recordOwner_1551_1553" = bitcast [20 x i8]* %"$eq_recordOwner_1551" to i8* - %"$eq_call_1554" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_1547", i32 20, i8* %"$$eq_sender_1548_1550", i8* %"$$eq_recordOwner_1551_1553") - store %TName_Bool* %"$eq_call_1554", %TName_Bool** %isOwner + %"$execptr_load_2179" = load i8*, i8** @_execptr + %"$eq_sender_2180" = alloca [20 x i8] + %"$sender_2181" = load [20 x i8], [20 x i8]* %sender + store [20 x i8] %"$sender_2181", [20 x i8]* %"$eq_sender_2180" + %"$$eq_sender_2180_2182" = bitcast [20 x i8]* %"$eq_sender_2180" to i8* + %"$eq_recordOwner_2183" = alloca [20 x i8] + %"$recordOwner_2184" = load [20 x i8], [20 x i8]* %recordOwner + store [20 x i8] %"$recordOwner_2184", [20 x i8]* %"$eq_recordOwner_2183" + %"$$eq_recordOwner_2183_2185" = bitcast [20 x i8]* %"$eq_recordOwner_2183" to i8* + %"$eq_call_2186" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_2179", i32 20, i8* %"$$eq_sender_2180_2182", i8* %"$$eq_recordOwner_2183_2185") + store %TName_Bool* %"$eq_call_2186", %TName_Bool** %isOwner + %"$gasrem_2187" = load i64, i64* @_gasrem + %"$gascmp_2188" = icmp ugt i64 1, %"$gasrem_2187" + br i1 %"$gascmp_2188", label %"$out_of_gas_2189", label %"$have_gas_2190" + +"$out_of_gas_2189": ; preds = %"$have_gas_2177" + call void @_out_of_gas() + br label %"$have_gas_2190" + +"$have_gas_2190": ; preds = %"$out_of_gas_2189", %"$have_gas_2177" + %"$consume_2191" = sub i64 %"$gasrem_2187", 1 + store i64 %"$consume_2191", i64* @_gasrem %isApproved = alloca %TName_Bool* - %"$maybeApproved_1556" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved - %"$maybeApproved_tag_1557" = getelementptr inbounds %TName_Option_ByStr20, %TName_Option_ByStr20* %"$maybeApproved_1556", i32 0, i32 0 - %"$maybeApproved_tag_1558" = load i8, i8* %"$maybeApproved_tag_1557" - switch i8 %"$maybeApproved_tag_1558", label %"$empty_default_1559" [ - i8 1, label %"$None_1560" - i8 0, label %"$Some_1565" + %"$gasrem_2192" = load i64, i64* @_gasrem + %"$gascmp_2193" = icmp ugt i64 2, %"$gasrem_2192" + br i1 %"$gascmp_2193", label %"$out_of_gas_2194", label %"$have_gas_2195" + +"$out_of_gas_2194": ; preds = %"$have_gas_2190" + call void @_out_of_gas() + br label %"$have_gas_2195" + +"$have_gas_2195": ; preds = %"$out_of_gas_2194", %"$have_gas_2190" + %"$consume_2196" = sub i64 %"$gasrem_2192", 2 + store i64 %"$consume_2196", i64* @_gasrem + %"$maybeApproved_2198" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved + %"$maybeApproved_tag_2199" = getelementptr inbounds %TName_Option_ByStr20, %TName_Option_ByStr20* %"$maybeApproved_2198", i32 0, i32 0 + %"$maybeApproved_tag_2200" = load i8, i8* %"$maybeApproved_tag_2199" + switch i8 %"$maybeApproved_tag_2200", label %"$empty_default_2201" [ + i8 1, label %"$None_2202" + i8 0, label %"$Some_2212" ] -"$None_1560": ; preds = %entry - %"$maybeApproved_1561" = bitcast %TName_Option_ByStr20* %"$maybeApproved_1556" to %CName_None_ByStr20* - %"$adtval_1562_load" = load i8*, i8** @_execptr - %"$adtval_1562_salloc" = call i8* @_salloc(i8* %"$adtval_1562_load", i64 1) - %"$adtval_1562" = bitcast i8* %"$adtval_1562_salloc" to %CName_False* - %"$adtgep_1563" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_1562", i32 0, i32 0 - store i8 1, i8* %"$adtgep_1563" - %"$adtptr_1564" = bitcast %CName_False* %"$adtval_1562" to %TName_Bool* - store %TName_Bool* %"$adtptr_1564", %TName_Bool** %isApproved - br label %"$matchsucc_1555" - -"$Some_1565": ; preds = %entry - %"$maybeApproved_1566" = bitcast %TName_Option_ByStr20* %"$maybeApproved_1556" to %CName_Some_ByStr20* - %"$approved_gep_1567" = getelementptr inbounds %CName_Some_ByStr20, %CName_Some_ByStr20* %"$maybeApproved_1566", i32 0, i32 1 - %"$approved_load_1568" = load [20 x i8], [20 x i8]* %"$approved_gep_1567" +"$None_2202": ; preds = %"$have_gas_2195" + %"$maybeApproved_2203" = bitcast %TName_Option_ByStr20* %"$maybeApproved_2198" to %CName_None_ByStr20* + %"$gasrem_2204" = load i64, i64* @_gasrem + %"$gascmp_2205" = icmp ugt i64 1, %"$gasrem_2204" + br i1 %"$gascmp_2205", label %"$out_of_gas_2206", label %"$have_gas_2207" + +"$out_of_gas_2206": ; preds = %"$None_2202" + call void @_out_of_gas() + br label %"$have_gas_2207" + +"$have_gas_2207": ; preds = %"$out_of_gas_2206", %"$None_2202" + %"$consume_2208" = sub i64 %"$gasrem_2204", 1 + store i64 %"$consume_2208", i64* @_gasrem + %"$adtval_2209_load" = load i8*, i8** @_execptr + %"$adtval_2209_salloc" = call i8* @_salloc(i8* %"$adtval_2209_load", i64 1) + %"$adtval_2209" = bitcast i8* %"$adtval_2209_salloc" to %CName_False* + %"$adtgep_2210" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_2209", i32 0, i32 0 + store i8 1, i8* %"$adtgep_2210" + %"$adtptr_2211" = bitcast %CName_False* %"$adtval_2209" to %TName_Bool* + store %TName_Bool* %"$adtptr_2211", %TName_Bool** %isApproved + br label %"$matchsucc_2197" + +"$Some_2212": ; preds = %"$have_gas_2195" + %"$maybeApproved_2213" = bitcast %TName_Option_ByStr20* %"$maybeApproved_2198" to %CName_Some_ByStr20* + %"$approved_gep_2214" = getelementptr inbounds %CName_Some_ByStr20, %CName_Some_ByStr20* %"$maybeApproved_2213", i32 0, i32 1 + %"$approved_load_2215" = load [20 x i8], [20 x i8]* %"$approved_gep_2214" %approved = alloca [20 x i8] - store [20 x i8] %"$approved_load_1568", [20 x i8]* %approved - %"$execptr_load_1569" = load i8*, i8** @_execptr - %"$eq_sender_1570" = alloca [20 x i8] - %"$sender_1571" = load [20 x i8], [20 x i8]* %sender - store [20 x i8] %"$sender_1571", [20 x i8]* %"$eq_sender_1570" - %"$$eq_sender_1570_1572" = bitcast [20 x i8]* %"$eq_sender_1570" to i8* - %"$eq_approved_1573" = alloca [20 x i8] - %"$approved_1574" = load [20 x i8], [20 x i8]* %approved - store [20 x i8] %"$approved_1574", [20 x i8]* %"$eq_approved_1573" - %"$$eq_approved_1573_1575" = bitcast [20 x i8]* %"$eq_approved_1573" to i8* - %"$eq_call_1576" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_1569", i32 20, i8* %"$$eq_sender_1570_1572", i8* %"$$eq_approved_1573_1575") - store %TName_Bool* %"$eq_call_1576", %TName_Bool** %isApproved - br label %"$matchsucc_1555" - -"$empty_default_1559": ; preds = %entry - br label %"$matchsucc_1555" - -"$matchsucc_1555": ; preds = %"$Some_1565", %"$None_1560", %"$empty_default_1559" + store [20 x i8] %"$approved_load_2215", [20 x i8]* %approved + %"$execptr_load_2216" = load i8*, i8** @_execptr + %"$eq_sender_2217" = alloca [20 x i8] + %"$sender_2218" = load [20 x i8], [20 x i8]* %sender + store [20 x i8] %"$sender_2218", [20 x i8]* %"$eq_sender_2217" + %"$$eq_sender_2217_2219" = bitcast [20 x i8]* %"$eq_sender_2217" to i8* + %"$eq_approved_2220" = alloca [20 x i8] + %"$approved_2221" = load [20 x i8], [20 x i8]* %approved + store [20 x i8] %"$approved_2221", [20 x i8]* %"$eq_approved_2220" + %"$$eq_approved_2220_2222" = bitcast [20 x i8]* %"$eq_approved_2220" to i8* + %"$eq_call_2223" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_2216", i32 20, i8* %"$$eq_sender_2217_2219", i8* %"$$eq_approved_2220_2222") + store %TName_Bool* %"$eq_call_2223", %TName_Bool** %isApproved + br label %"$matchsucc_2197" + +"$empty_default_2201": ; preds = %"$have_gas_2195" + br label %"$matchsucc_2197" + +"$matchsucc_2197": ; preds = %"$Some_2212", %"$have_gas_2207", %"$empty_default_2201" + %"$gasrem_2224" = load i64, i64* @_gasrem + %"$gascmp_2225" = icmp ugt i64 1, %"$gasrem_2224" + br i1 %"$gascmp_2225", label %"$out_of_gas_2226", label %"$have_gas_2227" + +"$out_of_gas_2226": ; preds = %"$matchsucc_2197" + call void @_out_of_gas() + br label %"$have_gas_2227" + +"$have_gas_2227": ; preds = %"$out_of_gas_2226", %"$matchsucc_2197" + %"$consume_2228" = sub i64 %"$gasrem_2224", 1 + store i64 %"$consume_2228", i64* @_gasrem %isOperator = alloca %TName_Bool* - %"$maybeOperators_tag_1578" = getelementptr inbounds %"TName_Option_List_(ByStr20)", %"TName_Option_List_(ByStr20)"* %1, i32 0, i32 0 - %"$maybeOperators_tag_1579" = load i8, i8* %"$maybeOperators_tag_1578" - switch i8 %"$maybeOperators_tag_1579", label %"$empty_default_1580" [ - i8 1, label %"$None_1581" - i8 0, label %"$Some_1586" + %"$gasrem_2229" = load i64, i64* @_gasrem + %"$gascmp_2230" = icmp ugt i64 2, %"$gasrem_2229" + br i1 %"$gascmp_2230", label %"$out_of_gas_2231", label %"$have_gas_2232" + +"$out_of_gas_2231": ; preds = %"$have_gas_2227" + call void @_out_of_gas() + br label %"$have_gas_2232" + +"$have_gas_2232": ; preds = %"$out_of_gas_2231", %"$have_gas_2227" + %"$consume_2233" = sub i64 %"$gasrem_2229", 2 + store i64 %"$consume_2233", i64* @_gasrem + %"$maybeOperators_tag_2235" = getelementptr inbounds %"TName_Option_List_(ByStr20)", %"TName_Option_List_(ByStr20)"* %1, i32 0, i32 0 + %"$maybeOperators_tag_2236" = load i8, i8* %"$maybeOperators_tag_2235" + switch i8 %"$maybeOperators_tag_2236", label %"$empty_default_2237" [ + i8 1, label %"$None_2238" + i8 0, label %"$Some_2248" ] -"$None_1581": ; preds = %"$matchsucc_1555" - %"$maybeOperators_1582" = bitcast %"TName_Option_List_(ByStr20)"* %1 to %"CName_None_List_(ByStr20)"* - %"$adtval_1583_load" = load i8*, i8** @_execptr - %"$adtval_1583_salloc" = call i8* @_salloc(i8* %"$adtval_1583_load", i64 1) - %"$adtval_1583" = bitcast i8* %"$adtval_1583_salloc" to %CName_False* - %"$adtgep_1584" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_1583", i32 0, i32 0 - store i8 1, i8* %"$adtgep_1584" - %"$adtptr_1585" = bitcast %CName_False* %"$adtval_1583" to %TName_Bool* - store %TName_Bool* %"$adtptr_1585", %TName_Bool** %isOperator - br label %"$matchsucc_1577" - -"$Some_1586": ; preds = %"$matchsucc_1555" - %"$maybeOperators_1587" = bitcast %"TName_Option_List_(ByStr20)"* %1 to %"CName_Some_List_(ByStr20)"* - %"$operators_gep_1588" = getelementptr inbounds %"CName_Some_List_(ByStr20)", %"CName_Some_List_(ByStr20)"* %"$maybeOperators_1587", i32 0, i32 1 - %"$operators_load_1589" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$operators_gep_1588" +"$None_2238": ; preds = %"$have_gas_2232" + %"$maybeOperators_2239" = bitcast %"TName_Option_List_(ByStr20)"* %1 to %"CName_None_List_(ByStr20)"* + %"$gasrem_2240" = load i64, i64* @_gasrem + %"$gascmp_2241" = icmp ugt i64 1, %"$gasrem_2240" + br i1 %"$gascmp_2241", label %"$out_of_gas_2242", label %"$have_gas_2243" + +"$out_of_gas_2242": ; preds = %"$None_2238" + call void @_out_of_gas() + br label %"$have_gas_2243" + +"$have_gas_2243": ; preds = %"$out_of_gas_2242", %"$None_2238" + %"$consume_2244" = sub i64 %"$gasrem_2240", 1 + store i64 %"$consume_2244", i64* @_gasrem + %"$adtval_2245_load" = load i8*, i8** @_execptr + %"$adtval_2245_salloc" = call i8* @_salloc(i8* %"$adtval_2245_load", i64 1) + %"$adtval_2245" = bitcast i8* %"$adtval_2245_salloc" to %CName_False* + %"$adtgep_2246" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_2245", i32 0, i32 0 + store i8 1, i8* %"$adtgep_2246" + %"$adtptr_2247" = bitcast %CName_False* %"$adtval_2245" to %TName_Bool* + store %TName_Bool* %"$adtptr_2247", %TName_Bool** %isOperator + br label %"$matchsucc_2234" + +"$Some_2248": ; preds = %"$have_gas_2232" + %"$maybeOperators_2249" = bitcast %"TName_Option_List_(ByStr20)"* %1 to %"CName_Some_List_(ByStr20)"* + %"$operators_gep_2250" = getelementptr inbounds %"CName_Some_List_(ByStr20)", %"CName_Some_List_(ByStr20)"* %"$maybeOperators_2249", i32 0, i32 1 + %"$operators_load_2251" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$operators_gep_2250" %operators = alloca %TName_List_ByStr20* - store %TName_List_ByStr20* %"$operators_load_1589", %TName_List_ByStr20** %operators - %"$listByStr20Contains_39" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - %"$listByStr20Contains_1590" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains - %"$listByStr20Contains_fptr_1591" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_1590", 0 - %"$listByStr20Contains_envptr_1592" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_1590", 1 - %"$operators_1593" = load %TName_List_ByStr20*, %TName_List_ByStr20** %operators - %"$listByStr20Contains_call_1594" = call { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_fptr_1591"(i8* %"$listByStr20Contains_envptr_1592", %TName_List_ByStr20* %"$operators_1593") - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_call_1594", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_39" - %"$listByStr20Contains_40" = alloca %TName_Bool* - %"$$listByStr20Contains_39_1595" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_39" - %"$$listByStr20Contains_39_fptr_1596" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_39_1595", 0 - %"$$listByStr20Contains_39_envptr_1597" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_39_1595", 1 - %"$$listByStr20Contains_39_sender_1598" = alloca [20 x i8] - %"$sender_1599" = load [20 x i8], [20 x i8]* %sender - store [20 x i8] %"$sender_1599", [20 x i8]* %"$$listByStr20Contains_39_sender_1598" - %"$$listByStr20Contains_39_call_1600" = call %TName_Bool* %"$$listByStr20Contains_39_fptr_1596"(i8* %"$$listByStr20Contains_39_envptr_1597", [20 x i8]* %"$$listByStr20Contains_39_sender_1598") - store %TName_Bool* %"$$listByStr20Contains_39_call_1600", %TName_Bool** %"$listByStr20Contains_40" - %"$$listByStr20Contains_40_1601" = load %TName_Bool*, %TName_Bool** %"$listByStr20Contains_40" - store %TName_Bool* %"$$listByStr20Contains_40_1601", %TName_Bool** %isOperator - br label %"$matchsucc_1577" - -"$empty_default_1580": ; preds = %"$matchsucc_1555" - br label %"$matchsucc_1577" - -"$matchsucc_1577": ; preds = %"$Some_1586", %"$None_1581", %"$empty_default_1580" + store %TName_List_ByStr20* %"$operators_load_2251", %TName_List_ByStr20** %operators + %"$gasrem_2252" = load i64, i64* @_gasrem + %"$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 = %"$Some_2248" + call void @_out_of_gas() + br label %"$have_gas_2255" + +"$have_gas_2255": ; preds = %"$out_of_gas_2254", %"$Some_2248" + %"$consume_2256" = sub i64 %"$gasrem_2252", 1 + store i64 %"$consume_2256", i64* @_gasrem + %"$listByStr20Contains_36" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } + %"$listByStr20Contains_2257" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains + %"$listByStr20Contains_fptr_2258" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_2257", 0 + %"$listByStr20Contains_envptr_2259" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_2257", 1 + %"$operators_2260" = load %TName_List_ByStr20*, %TName_List_ByStr20** %operators + %"$listByStr20Contains_call_2261" = call { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_fptr_2258"(i8* %"$listByStr20Contains_envptr_2259", %TName_List_ByStr20* %"$operators_2260") + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_call_2261", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_36" + %"$listByStr20Contains_37" = alloca %TName_Bool* + %"$$listByStr20Contains_36_2262" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_36" + %"$$listByStr20Contains_36_fptr_2263" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_36_2262", 0 + %"$$listByStr20Contains_36_envptr_2264" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_36_2262", 1 + %"$$listByStr20Contains_36_sender_2265" = alloca [20 x i8] + %"$sender_2266" = load [20 x i8], [20 x i8]* %sender + store [20 x i8] %"$sender_2266", [20 x i8]* %"$$listByStr20Contains_36_sender_2265" + %"$$listByStr20Contains_36_call_2267" = call %TName_Bool* %"$$listByStr20Contains_36_fptr_2263"(i8* %"$$listByStr20Contains_36_envptr_2264", [20 x i8]* %"$$listByStr20Contains_36_sender_2265") + store %TName_Bool* %"$$listByStr20Contains_36_call_2267", %TName_Bool** %"$listByStr20Contains_37" + %"$$listByStr20Contains_37_2268" = load %TName_Bool*, %TName_Bool** %"$listByStr20Contains_37" + store %TName_Bool* %"$$listByStr20Contains_37_2268", %TName_Bool** %isOperator + br label %"$matchsucc_2234" + +"$empty_default_2237": ; preds = %"$have_gas_2232" + br label %"$matchsucc_2234" + +"$matchsucc_2234": ; preds = %"$have_gas_2255", %"$have_gas_2243", %"$empty_default_2237" + %"$gasrem_2269" = load i64, i64* @_gasrem + %"$gascmp_2270" = icmp ugt i64 1, %"$gasrem_2269" + br i1 %"$gascmp_2270", label %"$out_of_gas_2271", label %"$have_gas_2272" + +"$out_of_gas_2271": ; preds = %"$matchsucc_2234" + call void @_out_of_gas() + br label %"$have_gas_2272" + +"$have_gas_2272": ; preds = %"$out_of_gas_2271", %"$matchsucc_2234" + %"$consume_2273" = sub i64 %"$gasrem_2269", 1 + store i64 %"$consume_2273", i64* @_gasrem %b1 = alloca %TName_Bool* - %"$orb_41" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$orb_1602" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %orb - %"$orb_fptr_1603" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_1602", 0 - %"$orb_envptr_1604" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_1602", 1 - %"$isOwner_1605" = load %TName_Bool*, %TName_Bool** %isOwner - %"$orb_call_1606" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_fptr_1603"(i8* %"$orb_envptr_1604", %TName_Bool* %"$isOwner_1605") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_call_1606", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_41" - %"$orb_42" = alloca %TName_Bool* - %"$$orb_41_1607" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_41" - %"$$orb_41_fptr_1608" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_41_1607", 0 - %"$$orb_41_envptr_1609" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_41_1607", 1 - %"$isApproved_1610" = load %TName_Bool*, %TName_Bool** %isApproved - %"$$orb_41_call_1611" = call %TName_Bool* %"$$orb_41_fptr_1608"(i8* %"$$orb_41_envptr_1609", %TName_Bool* %"$isApproved_1610") - store %TName_Bool* %"$$orb_41_call_1611", %TName_Bool** %"$orb_42" - %"$$orb_42_1612" = load %TName_Bool*, %TName_Bool** %"$orb_42" - store %TName_Bool* %"$$orb_42_1612", %TName_Bool** %b1 - %"$orb_43" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$orb_1613" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %orb - %"$orb_fptr_1614" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_1613", 0 - %"$orb_envptr_1615" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_1613", 1 - %"$b1_1616" = load %TName_Bool*, %TName_Bool** %b1 - %"$orb_call_1617" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_fptr_1614"(i8* %"$orb_envptr_1615", %TName_Bool* %"$b1_1616") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_call_1617", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_43" - %"$orb_44" = alloca %TName_Bool* - %"$$orb_43_1618" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_43" - %"$$orb_43_fptr_1619" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_43_1618", 0 - %"$$orb_43_envptr_1620" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_43_1618", 1 - %"$isOperator_1621" = load %TName_Bool*, %TName_Bool** %isOperator - %"$$orb_43_call_1622" = call %TName_Bool* %"$$orb_43_fptr_1619"(i8* %"$$orb_43_envptr_1620", %TName_Bool* %"$isOperator_1621") - store %TName_Bool* %"$$orb_43_call_1622", %TName_Bool** %"$orb_44" - %"$$orb_44_1623" = load %TName_Bool*, %TName_Bool** %"$orb_44" - store %TName_Bool* %"$$orb_44_1623", %TName_Bool** %"$retval_215" - %"$$retval_215_1624" = load %TName_Bool*, %TName_Bool** %"$retval_215" - ret %TName_Bool* %"$$retval_215_1624" + %"$gasrem_2274" = load i64, i64* @_gasrem + %"$gascmp_2275" = icmp ugt i64 1, %"$gasrem_2274" + br i1 %"$gascmp_2275", label %"$out_of_gas_2276", label %"$have_gas_2277" + +"$out_of_gas_2276": ; preds = %"$have_gas_2272" + call void @_out_of_gas() + br label %"$have_gas_2277" + +"$have_gas_2277": ; preds = %"$out_of_gas_2276", %"$have_gas_2272" + %"$consume_2278" = sub i64 %"$gasrem_2274", 1 + store i64 %"$consume_2278", i64* @_gasrem + %"$orb_38" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$orb_2279" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %orb + %"$orb_fptr_2280" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_2279", 0 + %"$orb_envptr_2281" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_2279", 1 + %"$isOwner_2282" = load %TName_Bool*, %TName_Bool** %isOwner + %"$orb_call_2283" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_fptr_2280"(i8* %"$orb_envptr_2281", %TName_Bool* %"$isOwner_2282") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_call_2283", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_38" + %"$orb_39" = alloca %TName_Bool* + %"$$orb_38_2284" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_38" + %"$$orb_38_fptr_2285" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_38_2284", 0 + %"$$orb_38_envptr_2286" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_38_2284", 1 + %"$isApproved_2287" = load %TName_Bool*, %TName_Bool** %isApproved + %"$$orb_38_call_2288" = call %TName_Bool* %"$$orb_38_fptr_2285"(i8* %"$$orb_38_envptr_2286", %TName_Bool* %"$isApproved_2287") + store %TName_Bool* %"$$orb_38_call_2288", %TName_Bool** %"$orb_39" + %"$$orb_39_2289" = load %TName_Bool*, %TName_Bool** %"$orb_39" + store %TName_Bool* %"$$orb_39_2289", %TName_Bool** %b1 + %"$gasrem_2290" = load i64, i64* @_gasrem + %"$gascmp_2291" = icmp ugt i64 1, %"$gasrem_2290" + br i1 %"$gascmp_2291", label %"$out_of_gas_2292", label %"$have_gas_2293" + +"$out_of_gas_2292": ; preds = %"$have_gas_2277" + call void @_out_of_gas() + br label %"$have_gas_2293" + +"$have_gas_2293": ; preds = %"$out_of_gas_2292", %"$have_gas_2277" + %"$consume_2294" = sub i64 %"$gasrem_2290", 1 + store i64 %"$consume_2294", i64* @_gasrem + %"$orb_40" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$orb_2295" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %orb + %"$orb_fptr_2296" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_2295", 0 + %"$orb_envptr_2297" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_2295", 1 + %"$b1_2298" = load %TName_Bool*, %TName_Bool** %b1 + %"$orb_call_2299" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_fptr_2296"(i8* %"$orb_envptr_2297", %TName_Bool* %"$b1_2298") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_call_2299", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_40" + %"$orb_41" = alloca %TName_Bool* + %"$$orb_40_2300" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_40" + %"$$orb_40_fptr_2301" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_40_2300", 0 + %"$$orb_40_envptr_2302" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_40_2300", 1 + %"$isOperator_2303" = load %TName_Bool*, %TName_Bool** %isOperator + %"$$orb_40_call_2304" = call %TName_Bool* %"$$orb_40_fptr_2301"(i8* %"$$orb_40_envptr_2302", %TName_Bool* %"$isOperator_2303") + store %TName_Bool* %"$$orb_40_call_2304", %TName_Bool** %"$orb_41" + %"$$orb_41_2305" = load %TName_Bool*, %TName_Bool** %"$orb_41" + store %TName_Bool* %"$$orb_41_2305", %TName_Bool** %"$retval_212" + %"$$retval_212_2306" = load %TName_Bool*, %TName_Bool** %"$retval_212" + ret %TName_Bool* %"$$retval_212_2306" } -define internal { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } @"$fundef_212"(%"$$fundef_212_env_402"* %0, %TName_Option_ByStr20* %1) { +define internal { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } @"$fundef_209"(%"$$fundef_209_env_399"* %0, %TName_Option_ByStr20* %1) { entry: - %"$$fundef_212_env_listByStr20Contains_1515" = getelementptr inbounds %"$$fundef_212_env_402", %"$$fundef_212_env_402"* %0, i32 0, i32 0 - %"$listByStr20Contains_envload_1516" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_212_env_listByStr20Contains_1515" + %"$$fundef_209_env_listByStr20Contains_2137" = getelementptr inbounds %"$$fundef_209_env_399", %"$$fundef_209_env_399"* %0, i32 0, i32 0 + %"$listByStr20Contains_envload_2138" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_209_env_listByStr20Contains_2137" %listByStr20Contains = alloca { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_envload_1516", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains - %"$$fundef_212_env_orb_1517" = getelementptr inbounds %"$$fundef_212_env_402", %"$$fundef_212_env_402"* %0, i32 0, i32 1 - %"$orb_envload_1518" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %"$$fundef_212_env_orb_1517" + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_envload_2138", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains + %"$$fundef_209_env_orb_2139" = getelementptr inbounds %"$$fundef_209_env_399", %"$$fundef_209_env_399"* %0, i32 0, i32 1 + %"$orb_envload_2140" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %"$$fundef_209_env_orb_2139" %orb = alloca { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } - store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_envload_1518", { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %orb - %"$$fundef_212_env_recordOwner_1519" = getelementptr inbounds %"$$fundef_212_env_402", %"$$fundef_212_env_402"* %0, i32 0, i32 2 - %"$recordOwner_envload_1520" = load [20 x i8], [20 x i8]* %"$$fundef_212_env_recordOwner_1519" + store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_envload_2140", { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %orb + %"$$fundef_209_env_recordOwner_2141" = getelementptr inbounds %"$$fundef_209_env_399", %"$$fundef_209_env_399"* %0, i32 0, i32 2 + %"$recordOwner_envload_2142" = load [20 x i8], [20 x i8]* %"$$fundef_209_env_recordOwner_2141" %recordOwner = alloca [20 x i8] - store [20 x i8] %"$recordOwner_envload_1520", [20 x i8]* %recordOwner - %"$$fundef_212_env_sender_1521" = getelementptr inbounds %"$$fundef_212_env_402", %"$$fundef_212_env_402"* %0, i32 0, i32 3 - %"$sender_envload_1522" = load [20 x i8], [20 x i8]* %"$$fundef_212_env_sender_1521" + store [20 x i8] %"$recordOwner_envload_2142", [20 x i8]* %recordOwner + %"$$fundef_209_env_sender_2143" = getelementptr inbounds %"$$fundef_209_env_399", %"$$fundef_209_env_399"* %0, i32 0, i32 3 + %"$sender_envload_2144" = load [20 x i8], [20 x i8]* %"$$fundef_209_env_sender_2143" %sender = alloca [20 x i8] - store [20 x i8] %"$sender_envload_1522", [20 x i8]* %sender - %"$retval_213" = alloca { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } - %"$$fundef_214_envp_1523_load" = load i8*, i8** @_execptr - %"$$fundef_214_envp_1523_salloc" = call i8* @_salloc(i8* %"$$fundef_214_envp_1523_load", i64 80) - %"$$fundef_214_envp_1523" = bitcast i8* %"$$fundef_214_envp_1523_salloc" to %"$$fundef_214_env_401"* - %"$$fundef_214_env_voidp_1525" = bitcast %"$$fundef_214_env_401"* %"$$fundef_214_envp_1523" to i8* - %"$$fundef_214_cloval_1526" = insertvalue { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)* bitcast (%TName_Bool* (%"$$fundef_214_env_401"*, %"TName_Option_List_(ByStr20)"*)* @"$fundef_214" to %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*), i8* undef }, i8* %"$$fundef_214_env_voidp_1525", 1 - %"$$fundef_214_env_listByStr20Contains_1527" = getelementptr inbounds %"$$fundef_214_env_401", %"$$fundef_214_env_401"* %"$$fundef_214_envp_1523", i32 0, i32 0 - %"$listByStr20Contains_1528" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_1528", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_214_env_listByStr20Contains_1527" - %"$$fundef_214_env_maybeApproved_1529" = getelementptr inbounds %"$$fundef_214_env_401", %"$$fundef_214_env_401"* %"$$fundef_214_envp_1523", i32 0, i32 1 - store %TName_Option_ByStr20* %1, %TName_Option_ByStr20** %"$$fundef_214_env_maybeApproved_1529" - %"$$fundef_214_env_orb_1530" = getelementptr inbounds %"$$fundef_214_env_401", %"$$fundef_214_env_401"* %"$$fundef_214_envp_1523", i32 0, i32 2 - %"$orb_1531" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %orb - store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_1531", { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %"$$fundef_214_env_orb_1530" - %"$$fundef_214_env_recordOwner_1532" = getelementptr inbounds %"$$fundef_214_env_401", %"$$fundef_214_env_401"* %"$$fundef_214_envp_1523", i32 0, i32 3 - %"$recordOwner_1533" = load [20 x i8], [20 x i8]* %recordOwner - store [20 x i8] %"$recordOwner_1533", [20 x i8]* %"$$fundef_214_env_recordOwner_1532" - %"$$fundef_214_env_sender_1534" = getelementptr inbounds %"$$fundef_214_env_401", %"$$fundef_214_env_401"* %"$$fundef_214_envp_1523", i32 0, i32 4 - %"$sender_1535" = load [20 x i8], [20 x i8]* %sender - store [20 x i8] %"$sender_1535", [20 x i8]* %"$$fundef_214_env_sender_1534" - store { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$fundef_214_cloval_1526", { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$retval_213" - %"$$retval_213_1536" = load { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }, { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$retval_213" - ret { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$retval_213_1536" + store [20 x i8] %"$sender_envload_2144", [20 x i8]* %sender + %"$retval_210" = alloca { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } + %"$gasrem_2145" = load i64, i64* @_gasrem + %"$gascmp_2146" = icmp ugt i64 1, %"$gasrem_2145" + br i1 %"$gascmp_2146", label %"$out_of_gas_2147", label %"$have_gas_2148" + +"$out_of_gas_2147": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2148" + +"$have_gas_2148": ; preds = %"$out_of_gas_2147", %entry + %"$consume_2149" = sub i64 %"$gasrem_2145", 1 + store i64 %"$consume_2149", i64* @_gasrem + %"$$fundef_211_envp_2150_load" = load i8*, i8** @_execptr + %"$$fundef_211_envp_2150_salloc" = call i8* @_salloc(i8* %"$$fundef_211_envp_2150_load", i64 80) + %"$$fundef_211_envp_2150" = bitcast i8* %"$$fundef_211_envp_2150_salloc" to %"$$fundef_211_env_398"* + %"$$fundef_211_env_voidp_2152" = bitcast %"$$fundef_211_env_398"* %"$$fundef_211_envp_2150" to i8* + %"$$fundef_211_cloval_2153" = insertvalue { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)* bitcast (%TName_Bool* (%"$$fundef_211_env_398"*, %"TName_Option_List_(ByStr20)"*)* @"$fundef_211" to %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*), i8* undef }, i8* %"$$fundef_211_env_voidp_2152", 1 + %"$$fundef_211_env_listByStr20Contains_2154" = getelementptr inbounds %"$$fundef_211_env_398", %"$$fundef_211_env_398"* %"$$fundef_211_envp_2150", i32 0, i32 0 + %"$listByStr20Contains_2155" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_2155", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_211_env_listByStr20Contains_2154" + %"$$fundef_211_env_maybeApproved_2156" = getelementptr inbounds %"$$fundef_211_env_398", %"$$fundef_211_env_398"* %"$$fundef_211_envp_2150", i32 0, i32 1 + store %TName_Option_ByStr20* %1, %TName_Option_ByStr20** %"$$fundef_211_env_maybeApproved_2156" + %"$$fundef_211_env_orb_2157" = getelementptr inbounds %"$$fundef_211_env_398", %"$$fundef_211_env_398"* %"$$fundef_211_envp_2150", i32 0, i32 2 + %"$orb_2158" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %orb + store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_2158", { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %"$$fundef_211_env_orb_2157" + %"$$fundef_211_env_recordOwner_2159" = getelementptr inbounds %"$$fundef_211_env_398", %"$$fundef_211_env_398"* %"$$fundef_211_envp_2150", i32 0, i32 3 + %"$recordOwner_2160" = load [20 x i8], [20 x i8]* %recordOwner + store [20 x i8] %"$recordOwner_2160", [20 x i8]* %"$$fundef_211_env_recordOwner_2159" + %"$$fundef_211_env_sender_2161" = getelementptr inbounds %"$$fundef_211_env_398", %"$$fundef_211_env_398"* %"$$fundef_211_envp_2150", i32 0, i32 4 + %"$sender_2162" = load [20 x i8], [20 x i8]* %sender + store [20 x i8] %"$sender_2162", [20 x i8]* %"$$fundef_211_env_sender_2161" + store { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$fundef_211_cloval_2153", { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$retval_210" + %"$$retval_210_2163" = load { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }, { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$retval_210" + ret { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$retval_210_2163" } -define internal { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } @"$fundef_210"(%"$$fundef_210_env_403"* %0, [20 x i8]* %1) { +define internal { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } @"$fundef_207"(%"$$fundef_207_env_400"* %0, [20 x i8]* %1) { entry: %recordOwner = load [20 x i8], [20 x i8]* %1 - %"$$fundef_210_env_listByStr20Contains_1497" = getelementptr inbounds %"$$fundef_210_env_403", %"$$fundef_210_env_403"* %0, i32 0, i32 0 - %"$listByStr20Contains_envload_1498" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_210_env_listByStr20Contains_1497" + %"$$fundef_207_env_listByStr20Contains_2114" = getelementptr inbounds %"$$fundef_207_env_400", %"$$fundef_207_env_400"* %0, i32 0, i32 0 + %"$listByStr20Contains_envload_2115" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_207_env_listByStr20Contains_2114" %listByStr20Contains = alloca { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_envload_1498", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains - %"$$fundef_210_env_orb_1499" = getelementptr inbounds %"$$fundef_210_env_403", %"$$fundef_210_env_403"* %0, i32 0, i32 1 - %"$orb_envload_1500" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %"$$fundef_210_env_orb_1499" + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_envload_2115", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains + %"$$fundef_207_env_orb_2116" = getelementptr inbounds %"$$fundef_207_env_400", %"$$fundef_207_env_400"* %0, i32 0, i32 1 + %"$orb_envload_2117" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %"$$fundef_207_env_orb_2116" %orb = alloca { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } - store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_envload_1500", { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %orb - %"$$fundef_210_env_sender_1501" = getelementptr inbounds %"$$fundef_210_env_403", %"$$fundef_210_env_403"* %0, i32 0, i32 2 - %"$sender_envload_1502" = load [20 x i8], [20 x i8]* %"$$fundef_210_env_sender_1501" + store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_envload_2117", { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %orb + %"$$fundef_207_env_sender_2118" = getelementptr inbounds %"$$fundef_207_env_400", %"$$fundef_207_env_400"* %0, i32 0, i32 2 + %"$sender_envload_2119" = load [20 x i8], [20 x i8]* %"$$fundef_207_env_sender_2118" %sender = alloca [20 x i8] - store [20 x i8] %"$sender_envload_1502", [20 x i8]* %sender - %"$retval_211" = alloca { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } - %"$$fundef_212_envp_1503_load" = load i8*, i8** @_execptr - %"$$fundef_212_envp_1503_salloc" = call i8* @_salloc(i8* %"$$fundef_212_envp_1503_load", i64 72) - %"$$fundef_212_envp_1503" = bitcast i8* %"$$fundef_212_envp_1503_salloc" to %"$$fundef_212_env_402"* - %"$$fundef_212_env_voidp_1505" = bitcast %"$$fundef_212_env_402"* %"$$fundef_212_envp_1503" to i8* - %"$$fundef_212_cloval_1506" = insertvalue { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)* bitcast ({ %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (%"$$fundef_212_env_402"*, %TName_Option_ByStr20*)* @"$fundef_212" to { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*), i8* undef }, i8* %"$$fundef_212_env_voidp_1505", 1 - %"$$fundef_212_env_listByStr20Contains_1507" = getelementptr inbounds %"$$fundef_212_env_402", %"$$fundef_212_env_402"* %"$$fundef_212_envp_1503", i32 0, i32 0 - %"$listByStr20Contains_1508" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_1508", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_212_env_listByStr20Contains_1507" - %"$$fundef_212_env_orb_1509" = getelementptr inbounds %"$$fundef_212_env_402", %"$$fundef_212_env_402"* %"$$fundef_212_envp_1503", i32 0, i32 1 - %"$orb_1510" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %orb - store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_1510", { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %"$$fundef_212_env_orb_1509" - %"$$fundef_212_env_recordOwner_1511" = getelementptr inbounds %"$$fundef_212_env_402", %"$$fundef_212_env_402"* %"$$fundef_212_envp_1503", i32 0, i32 2 - store [20 x i8] %recordOwner, [20 x i8]* %"$$fundef_212_env_recordOwner_1511" - %"$$fundef_212_env_sender_1512" = getelementptr inbounds %"$$fundef_212_env_402", %"$$fundef_212_env_402"* %"$$fundef_212_envp_1503", i32 0, i32 3 - %"$sender_1513" = load [20 x i8], [20 x i8]* %sender - store [20 x i8] %"$sender_1513", [20 x i8]* %"$$fundef_212_env_sender_1512" - store { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$fundef_212_cloval_1506", { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$retval_211" - %"$$retval_211_1514" = load { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$retval_211" - ret { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$retval_211_1514" + store [20 x i8] %"$sender_envload_2119", [20 x i8]* %sender + %"$retval_208" = alloca { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } + %"$gasrem_2120" = load i64, i64* @_gasrem + %"$gascmp_2121" = icmp ugt i64 1, %"$gasrem_2120" + br i1 %"$gascmp_2121", label %"$out_of_gas_2122", label %"$have_gas_2123" + +"$out_of_gas_2122": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2123" + +"$have_gas_2123": ; preds = %"$out_of_gas_2122", %entry + %"$consume_2124" = sub i64 %"$gasrem_2120", 1 + store i64 %"$consume_2124", i64* @_gasrem + %"$$fundef_209_envp_2125_load" = load i8*, i8** @_execptr + %"$$fundef_209_envp_2125_salloc" = call i8* @_salloc(i8* %"$$fundef_209_envp_2125_load", i64 72) + %"$$fundef_209_envp_2125" = bitcast i8* %"$$fundef_209_envp_2125_salloc" to %"$$fundef_209_env_399"* + %"$$fundef_209_env_voidp_2127" = bitcast %"$$fundef_209_env_399"* %"$$fundef_209_envp_2125" to i8* + %"$$fundef_209_cloval_2128" = insertvalue { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)* bitcast ({ %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (%"$$fundef_209_env_399"*, %TName_Option_ByStr20*)* @"$fundef_209" to { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*), i8* undef }, i8* %"$$fundef_209_env_voidp_2127", 1 + %"$$fundef_209_env_listByStr20Contains_2129" = getelementptr inbounds %"$$fundef_209_env_399", %"$$fundef_209_env_399"* %"$$fundef_209_envp_2125", i32 0, i32 0 + %"$listByStr20Contains_2130" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_2130", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_209_env_listByStr20Contains_2129" + %"$$fundef_209_env_orb_2131" = getelementptr inbounds %"$$fundef_209_env_399", %"$$fundef_209_env_399"* %"$$fundef_209_envp_2125", i32 0, i32 1 + %"$orb_2132" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %orb + store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_2132", { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %"$$fundef_209_env_orb_2131" + %"$$fundef_209_env_recordOwner_2133" = getelementptr inbounds %"$$fundef_209_env_399", %"$$fundef_209_env_399"* %"$$fundef_209_envp_2125", i32 0, i32 2 + store [20 x i8] %recordOwner, [20 x i8]* %"$$fundef_209_env_recordOwner_2133" + %"$$fundef_209_env_sender_2134" = getelementptr inbounds %"$$fundef_209_env_399", %"$$fundef_209_env_399"* %"$$fundef_209_envp_2125", i32 0, i32 3 + %"$sender_2135" = load [20 x i8], [20 x i8]* %sender + store [20 x i8] %"$sender_2135", [20 x i8]* %"$$fundef_209_env_sender_2134" + store { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$fundef_209_cloval_2128", { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$retval_208" + %"$$retval_208_2136" = load { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$retval_208" + ret { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$retval_208_2136" } -define internal { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } @"$fundef_208"(%"$$fundef_208_env_404"* %0, [20 x i8]* %1) { +define internal { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } @"$fundef_205"(%"$$fundef_205_env_401"* %0, [20 x i8]* %1) { entry: %sender = load [20 x i8], [20 x i8]* %1 - %"$$fundef_208_env_listByStr20Contains_1483" = getelementptr inbounds %"$$fundef_208_env_404", %"$$fundef_208_env_404"* %0, i32 0, i32 0 - %"$listByStr20Contains_envload_1484" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_208_env_listByStr20Contains_1483" + %"$$fundef_205_env_listByStr20Contains_2095" = getelementptr inbounds %"$$fundef_205_env_401", %"$$fundef_205_env_401"* %0, i32 0, i32 0 + %"$listByStr20Contains_envload_2096" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_205_env_listByStr20Contains_2095" %listByStr20Contains = alloca { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_envload_1484", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains - %"$$fundef_208_env_orb_1485" = getelementptr inbounds %"$$fundef_208_env_404", %"$$fundef_208_env_404"* %0, i32 0, i32 1 - %"$orb_envload_1486" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %"$$fundef_208_env_orb_1485" + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_envload_2096", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains + %"$$fundef_205_env_orb_2097" = getelementptr inbounds %"$$fundef_205_env_401", %"$$fundef_205_env_401"* %0, i32 0, i32 1 + %"$orb_envload_2098" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %"$$fundef_205_env_orb_2097" %orb = alloca { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } - store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_envload_1486", { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %orb - %"$retval_209" = alloca { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$$fundef_210_envp_1487_load" = load i8*, i8** @_execptr - %"$$fundef_210_envp_1487_salloc" = call i8* @_salloc(i8* %"$$fundef_210_envp_1487_load", i64 56) - %"$$fundef_210_envp_1487" = bitcast i8* %"$$fundef_210_envp_1487_salloc" to %"$$fundef_210_env_403"* - %"$$fundef_210_env_voidp_1489" = bitcast %"$$fundef_210_env_403"* %"$$fundef_210_envp_1487" to i8* - %"$$fundef_210_cloval_1490" = insertvalue { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (%"$$fundef_210_env_403"*, [20 x i8]*)* @"$fundef_210" to { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_210_env_voidp_1489", 1 - %"$$fundef_210_env_listByStr20Contains_1491" = getelementptr inbounds %"$$fundef_210_env_403", %"$$fundef_210_env_403"* %"$$fundef_210_envp_1487", i32 0, i32 0 - %"$listByStr20Contains_1492" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_1492", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_210_env_listByStr20Contains_1491" - %"$$fundef_210_env_orb_1493" = getelementptr inbounds %"$$fundef_210_env_403", %"$$fundef_210_env_403"* %"$$fundef_210_envp_1487", i32 0, i32 1 - %"$orb_1494" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %orb - store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_1494", { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %"$$fundef_210_env_orb_1493" - %"$$fundef_210_env_sender_1495" = getelementptr inbounds %"$$fundef_210_env_403", %"$$fundef_210_env_403"* %"$$fundef_210_envp_1487", i32 0, i32 2 - store [20 x i8] %sender, [20 x i8]* %"$$fundef_210_env_sender_1495" - store { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$fundef_210_cloval_1490", { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_209" - %"$$retval_209_1496" = load { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_209" - ret { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$retval_209_1496" + store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_envload_2098", { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %orb + %"$retval_206" = alloca { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } + %"$gasrem_2099" = load i64, i64* @_gasrem + %"$gascmp_2100" = icmp ugt i64 1, %"$gasrem_2099" + br i1 %"$gascmp_2100", label %"$out_of_gas_2101", label %"$have_gas_2102" + +"$out_of_gas_2101": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2102" + +"$have_gas_2102": ; preds = %"$out_of_gas_2101", %entry + %"$consume_2103" = sub i64 %"$gasrem_2099", 1 + store i64 %"$consume_2103", i64* @_gasrem + %"$$fundef_207_envp_2104_load" = load i8*, i8** @_execptr + %"$$fundef_207_envp_2104_salloc" = call i8* @_salloc(i8* %"$$fundef_207_envp_2104_load", i64 56) + %"$$fundef_207_envp_2104" = bitcast i8* %"$$fundef_207_envp_2104_salloc" to %"$$fundef_207_env_400"* + %"$$fundef_207_env_voidp_2106" = bitcast %"$$fundef_207_env_400"* %"$$fundef_207_envp_2104" to i8* + %"$$fundef_207_cloval_2107" = insertvalue { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (%"$$fundef_207_env_400"*, [20 x i8]*)* @"$fundef_207" to { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_207_env_voidp_2106", 1 + %"$$fundef_207_env_listByStr20Contains_2108" = getelementptr inbounds %"$$fundef_207_env_400", %"$$fundef_207_env_400"* %"$$fundef_207_envp_2104", i32 0, i32 0 + %"$listByStr20Contains_2109" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_2109", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_207_env_listByStr20Contains_2108" + %"$$fundef_207_env_orb_2110" = getelementptr inbounds %"$$fundef_207_env_400", %"$$fundef_207_env_400"* %"$$fundef_207_envp_2104", i32 0, i32 1 + %"$orb_2111" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %orb + store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_2111", { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %"$$fundef_207_env_orb_2110" + %"$$fundef_207_env_sender_2112" = getelementptr inbounds %"$$fundef_207_env_400", %"$$fundef_207_env_400"* %"$$fundef_207_envp_2104", i32 0, i32 2 + store [20 x i8] %sender, [20 x i8]* %"$$fundef_207_env_sender_2112" + store { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$fundef_207_cloval_2107", { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_206" + %"$$retval_206_2113" = load { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_206" + ret { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$retval_206_2113" } -define internal void @"$fundef_218"(%"$$fundef_218_env_405"* %0, [32 x i8]* %1, %String %2) { +define internal void @"$fundef_215"(%"$$fundef_215_env_402"* %0, [32 x i8]* %1, %String %2) { entry: - %"$$fundef_218_env_parent_1459" = getelementptr inbounds %"$$fundef_218_env_405", %"$$fundef_218_env_405"* %0, i32 0, i32 0 - %"$parent_envload_1460" = load [32 x i8], [32 x i8]* %"$$fundef_218_env_parent_1459" + %"$$fundef_215_env_parent_2061" = getelementptr inbounds %"$$fundef_215_env_402", %"$$fundef_215_env_402"* %0, i32 0, i32 0 + %"$parent_envload_2062" = load [32 x i8], [32 x i8]* %"$$fundef_215_env_parent_2061" %parent = alloca [32 x i8] - store [32 x i8] %"$parent_envload_1460", [32 x i8]* %parent - %"$retval_219" = alloca [32 x i8] + store [32 x i8] %"$parent_envload_2062", [32 x i8]* %parent + %"$retval_216" = alloca [32 x i8] + %"$gasrem_2063" = load i64, i64* @_gasrem + %"$gascmp_2064" = icmp ugt i64 1, %"$gasrem_2063" + br i1 %"$gascmp_2064", label %"$out_of_gas_2065", label %"$have_gas_2066" + +"$out_of_gas_2065": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2066" + +"$have_gas_2066": ; preds = %"$out_of_gas_2065", %entry + %"$consume_2067" = sub i64 %"$gasrem_2063", 1 + store i64 %"$consume_2067", i64* @_gasrem %labelHash = alloca [32 x i8] - %"$execptr_load_1461" = load i8*, i8** @_execptr - %"$sha256hash_label_1462" = alloca %String - store %String %2, %String* %"$sha256hash_label_1462" - %"$$sha256hash_label_1462_1463" = bitcast %String* %"$sha256hash_label_1462" to i8* - %"$sha256hash_call_1464" = call [32 x i8]* @_sha256hash(i8* %"$execptr_load_1461", %_TyDescrTy_Typ* @"$TyDescr_String_295", i8* %"$$sha256hash_label_1462_1463") - %"$sha256hash_1465" = load [32 x i8], [32 x i8]* %"$sha256hash_call_1464" - store [32 x i8] %"$sha256hash_1465", [32 x i8]* %labelHash + %"$execptr_load_2068" = load i8*, i8** @_execptr + %"$sha256hash_label_2069" = alloca %String + store %String %2, %String* %"$sha256hash_label_2069" + %"$$sha256hash_label_2069_2070" = bitcast %String* %"$sha256hash_label_2069" to i8* + %"$sha256hash_call_2071" = call [32 x i8]* @_sha256hash(i8* %"$execptr_load_2068", %_TyDescrTy_Typ* @"$TyDescr_String_292", i8* %"$$sha256hash_label_2069_2070") + %"$sha256hash_2072" = load [32 x i8], [32 x i8]* %"$sha256hash_call_2071" + store [32 x i8] %"$sha256hash_2072", [32 x i8]* %labelHash + %"$gasrem_2073" = load i64, i64* @_gasrem + %"$gascmp_2074" = icmp ugt i64 1, %"$gasrem_2073" + br i1 %"$gascmp_2074", label %"$out_of_gas_2075", label %"$have_gas_2076" + +"$out_of_gas_2075": ; preds = %"$have_gas_2066" + call void @_out_of_gas() + br label %"$have_gas_2076" + +"$have_gas_2076": ; preds = %"$out_of_gas_2075", %"$have_gas_2066" + %"$consume_2077" = sub i64 %"$gasrem_2073", 1 + store i64 %"$consume_2077", i64* @_gasrem %nodeInput = alloca [64 x i8] - %"$execptr_load_1466" = load i8*, i8** @_execptr - %"$concat_parent_1467" = alloca [32 x i8] - %"$parent_1468" = load [32 x i8], [32 x i8]* %parent - store [32 x i8] %"$parent_1468", [32 x i8]* %"$concat_parent_1467" - %"$$concat_parent_1467_1469" = bitcast [32 x i8]* %"$concat_parent_1467" to i8* - %"$concat_labelHash_1470" = alloca [32 x i8] - %"$labelHash_1471" = load [32 x i8], [32 x i8]* %labelHash - store [32 x i8] %"$labelHash_1471", [32 x i8]* %"$concat_labelHash_1470" - %"$$concat_labelHash_1470_1472" = bitcast [32 x i8]* %"$concat_labelHash_1470" to i8* - %"$concat_call_1473" = call i8* @_concat_ByStrX(i8* %"$execptr_load_1466", i32 32, i8* %"$$concat_parent_1467_1469", i32 32, i8* %"$$concat_labelHash_1470_1472") - %"$concat_1474" = bitcast i8* %"$concat_call_1473" to [64 x i8]* - %"$concat_1475" = load [64 x i8], [64 x i8]* %"$concat_1474" - store [64 x i8] %"$concat_1475", [64 x i8]* %nodeInput - %"$execptr_load_1476" = load i8*, i8** @_execptr - %"$sha256hash_nodeInput_1477" = alloca [64 x i8] - %"$nodeInput_1478" = load [64 x i8], [64 x i8]* %nodeInput - store [64 x i8] %"$nodeInput_1478", [64 x i8]* %"$sha256hash_nodeInput_1477" - %"$$sha256hash_nodeInput_1477_1479" = bitcast [64 x i8]* %"$sha256hash_nodeInput_1477" to i8* - %"$sha256hash_call_1480" = call [32 x i8]* @_sha256hash(i8* %"$execptr_load_1476", %_TyDescrTy_Typ* @"$TyDescr_Bystr64_307", i8* %"$$sha256hash_nodeInput_1477_1479") - %"$sha256hash_1481" = load [32 x i8], [32 x i8]* %"$sha256hash_call_1480" - store [32 x i8] %"$sha256hash_1481", [32 x i8]* %"$retval_219" - %"$$retval_219_1482" = load [32 x i8], [32 x i8]* %"$retval_219" - store [32 x i8] %"$$retval_219_1482", [32 x i8]* %1 + %"$execptr_load_2078" = load i8*, i8** @_execptr + %"$concat_parent_2079" = alloca [32 x i8] + %"$parent_2080" = load [32 x i8], [32 x i8]* %parent + store [32 x i8] %"$parent_2080", [32 x i8]* %"$concat_parent_2079" + %"$$concat_parent_2079_2081" = bitcast [32 x i8]* %"$concat_parent_2079" to i8* + %"$concat_labelHash_2082" = alloca [32 x i8] + %"$labelHash_2083" = load [32 x i8], [32 x i8]* %labelHash + store [32 x i8] %"$labelHash_2083", [32 x i8]* %"$concat_labelHash_2082" + %"$$concat_labelHash_2082_2084" = bitcast [32 x i8]* %"$concat_labelHash_2082" to i8* + %"$concat_call_2085" = call i8* @_concat_ByStrX(i8* %"$execptr_load_2078", i32 32, i8* %"$$concat_parent_2079_2081", i32 32, i8* %"$$concat_labelHash_2082_2084") + %"$concat_2086" = bitcast i8* %"$concat_call_2085" to [64 x i8]* + %"$concat_2087" = load [64 x i8], [64 x i8]* %"$concat_2086" + store [64 x i8] %"$concat_2087", [64 x i8]* %nodeInput + %"$execptr_load_2088" = load i8*, i8** @_execptr + %"$sha256hash_nodeInput_2089" = alloca [64 x i8] + %"$nodeInput_2090" = load [64 x i8], [64 x i8]* %nodeInput + store [64 x i8] %"$nodeInput_2090", [64 x i8]* %"$sha256hash_nodeInput_2089" + %"$$sha256hash_nodeInput_2089_2091" = bitcast [64 x i8]* %"$sha256hash_nodeInput_2089" to i8* + %"$sha256hash_call_2092" = call [32 x i8]* @_sha256hash(i8* %"$execptr_load_2088", %_TyDescrTy_Typ* @"$TyDescr_Bystr64_304", i8* %"$$sha256hash_nodeInput_2089_2091") + %"$sha256hash_2093" = load [32 x i8], [32 x i8]* %"$sha256hash_call_2092" + store [32 x i8] %"$sha256hash_2093", [32 x i8]* %"$retval_216" + %"$$retval_216_2094" = load [32 x i8], [32 x i8]* %"$retval_216" + store [32 x i8] %"$$retval_216_2094", [32 x i8]* %1 ret void } -define internal { void (i8*, [32 x i8]*, %String)*, i8* } @"$fundef_216"(%"$$fundef_216_env_406"* %0, [32 x i8]* %1) { +define internal { void (i8*, [32 x i8]*, %String)*, i8* } @"$fundef_213"(%"$$fundef_213_env_403"* %0, [32 x i8]* %1) { entry: %parent = load [32 x i8], [32 x i8]* %1 - %"$retval_217" = alloca { void (i8*, [32 x i8]*, %String)*, i8* } - %"$$fundef_218_envp_1453_load" = load i8*, i8** @_execptr - %"$$fundef_218_envp_1453_salloc" = call i8* @_salloc(i8* %"$$fundef_218_envp_1453_load", i64 32) - %"$$fundef_218_envp_1453" = bitcast i8* %"$$fundef_218_envp_1453_salloc" to %"$$fundef_218_env_405"* - %"$$fundef_218_env_voidp_1455" = bitcast %"$$fundef_218_env_405"* %"$$fundef_218_envp_1453" to i8* - %"$$fundef_218_cloval_1456" = insertvalue { void (i8*, [32 x i8]*, %String)*, i8* } { void (i8*, [32 x i8]*, %String)* bitcast (void (%"$$fundef_218_env_405"*, [32 x i8]*, %String)* @"$fundef_218" to void (i8*, [32 x i8]*, %String)*), i8* undef }, i8* %"$$fundef_218_env_voidp_1455", 1 - %"$$fundef_218_env_parent_1457" = getelementptr inbounds %"$$fundef_218_env_405", %"$$fundef_218_env_405"* %"$$fundef_218_envp_1453", i32 0, i32 0 - store [32 x i8] %parent, [32 x i8]* %"$$fundef_218_env_parent_1457" - store { void (i8*, [32 x i8]*, %String)*, i8* } %"$$fundef_218_cloval_1456", { void (i8*, [32 x i8]*, %String)*, i8* }* %"$retval_217" - %"$$retval_217_1458" = load { void (i8*, [32 x i8]*, %String)*, i8* }, { void (i8*, [32 x i8]*, %String)*, i8* }* %"$retval_217" - ret { void (i8*, [32 x i8]*, %String)*, i8* } %"$$retval_217_1458" + %"$retval_214" = alloca { void (i8*, [32 x i8]*, %String)*, i8* } + %"$gasrem_2050" = load i64, i64* @_gasrem + %"$gascmp_2051" = icmp ugt i64 1, %"$gasrem_2050" + br i1 %"$gascmp_2051", label %"$out_of_gas_2052", label %"$have_gas_2053" + +"$out_of_gas_2052": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2053" + +"$have_gas_2053": ; preds = %"$out_of_gas_2052", %entry + %"$consume_2054" = sub i64 %"$gasrem_2050", 1 + store i64 %"$consume_2054", i64* @_gasrem + %"$$fundef_215_envp_2055_load" = load i8*, i8** @_execptr + %"$$fundef_215_envp_2055_salloc" = call i8* @_salloc(i8* %"$$fundef_215_envp_2055_load", i64 32) + %"$$fundef_215_envp_2055" = bitcast i8* %"$$fundef_215_envp_2055_salloc" to %"$$fundef_215_env_402"* + %"$$fundef_215_env_voidp_2057" = bitcast %"$$fundef_215_env_402"* %"$$fundef_215_envp_2055" to i8* + %"$$fundef_215_cloval_2058" = insertvalue { void (i8*, [32 x i8]*, %String)*, i8* } { void (i8*, [32 x i8]*, %String)* bitcast (void (%"$$fundef_215_env_402"*, [32 x i8]*, %String)* @"$fundef_215" to void (i8*, [32 x i8]*, %String)*), i8* undef }, i8* %"$$fundef_215_env_voidp_2057", 1 + %"$$fundef_215_env_parent_2059" = getelementptr inbounds %"$$fundef_215_env_402", %"$$fundef_215_env_402"* %"$$fundef_215_envp_2055", i32 0, i32 0 + store [32 x i8] %parent, [32 x i8]* %"$$fundef_215_env_parent_2059" + store { void (i8*, [32 x i8]*, %String)*, i8* } %"$$fundef_215_cloval_2058", { void (i8*, [32 x i8]*, %String)*, i8* }* %"$retval_214" + %"$$retval_214_2060" = load { void (i8*, [32 x i8]*, %String)*, i8* }, { void (i8*, [32 x i8]*, %String)*, i8* }* %"$retval_214" + ret { void (i8*, [32 x i8]*, %String)*, i8* } %"$$retval_214_2060" } -define internal void @"$fundef_220"(%"$$fundef_220_env_407"* %0, [20 x i8]* %1, %TName_Option_Record* %2) { +define internal void @"$fundef_217"(%"$$fundef_217_env_404"* %0, [20 x i8]* %1, %TName_Option_Record* %2) { entry: - %"$$fundef_220_env_zeroByStr20_1427" = getelementptr inbounds %"$$fundef_220_env_407", %"$$fundef_220_env_407"* %0, i32 0, i32 0 - %"$zeroByStr20_envload_1428" = load [20 x i8], [20 x i8]* %"$$fundef_220_env_zeroByStr20_1427" + %"$$fundef_217_env_zeroByStr20_2004" = getelementptr inbounds %"$$fundef_217_env_404", %"$$fundef_217_env_404"* %0, i32 0, i32 0 + %"$zeroByStr20_envload_2005" = load [20 x i8], [20 x i8]* %"$$fundef_217_env_zeroByStr20_2004" %zeroByStr20 = alloca [20 x i8] - store [20 x i8] %"$zeroByStr20_envload_1428", [20 x i8]* %zeroByStr20 - %"$retval_221" = alloca [20 x i8] - %"$maybeRecord_tag_1430" = getelementptr inbounds %TName_Option_Record, %TName_Option_Record* %2, i32 0, i32 0 - %"$maybeRecord_tag_1431" = load i8, i8* %"$maybeRecord_tag_1430" - switch i8 %"$maybeRecord_tag_1431", label %"$empty_default_1432" [ - i8 1, label %"$None_1433" - i8 0, label %"$Some_1436" + store [20 x i8] %"$zeroByStr20_envload_2005", [20 x i8]* %zeroByStr20 + %"$retval_218" = alloca [20 x i8] + %"$gasrem_2006" = load i64, i64* @_gasrem + %"$gascmp_2007" = icmp ugt i64 2, %"$gasrem_2006" + br i1 %"$gascmp_2007", label %"$out_of_gas_2008", label %"$have_gas_2009" + +"$out_of_gas_2008": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2009" + +"$have_gas_2009": ; preds = %"$out_of_gas_2008", %entry + %"$consume_2010" = sub i64 %"$gasrem_2006", 2 + store i64 %"$consume_2010", i64* @_gasrem + %"$maybeRecord_tag_2012" = getelementptr inbounds %TName_Option_Record, %TName_Option_Record* %2, i32 0, i32 0 + %"$maybeRecord_tag_2013" = load i8, i8* %"$maybeRecord_tag_2012" + switch i8 %"$maybeRecord_tag_2013", label %"$empty_default_2014" [ + i8 1, label %"$None_2015" + i8 0, label %"$Some_2023" ] -"$None_1433": ; preds = %entry - %"$maybeRecord_1434" = bitcast %TName_Option_Record* %2 to %CName_None_Record* - %"$zeroByStr20_1435" = load [20 x i8], [20 x i8]* %zeroByStr20 - store [20 x i8] %"$zeroByStr20_1435", [20 x i8]* %"$retval_221" - br label %"$matchsucc_1429" - -"$Some_1436": ; preds = %entry - %"$maybeRecord_1437" = bitcast %TName_Option_Record* %2 to %CName_Some_Record* - %"$record_gep_1438" = getelementptr inbounds %CName_Some_Record, %CName_Some_Record* %"$maybeRecord_1437", i32 0, i32 1 - %"$record_load_1439" = load %TName_Record*, %TName_Record** %"$record_gep_1438" +"$None_2015": ; preds = %"$have_gas_2009" + %"$maybeRecord_2016" = bitcast %TName_Option_Record* %2 to %CName_None_Record* + %"$gasrem_2017" = load i64, i64* @_gasrem + %"$gascmp_2018" = icmp ugt i64 1, %"$gasrem_2017" + br i1 %"$gascmp_2018", label %"$out_of_gas_2019", label %"$have_gas_2020" + +"$out_of_gas_2019": ; preds = %"$None_2015" + call void @_out_of_gas() + br label %"$have_gas_2020" + +"$have_gas_2020": ; preds = %"$out_of_gas_2019", %"$None_2015" + %"$consume_2021" = sub i64 %"$gasrem_2017", 1 + store i64 %"$consume_2021", i64* @_gasrem + %"$zeroByStr20_2022" = load [20 x i8], [20 x i8]* %zeroByStr20 + store [20 x i8] %"$zeroByStr20_2022", [20 x i8]* %"$retval_218" + br label %"$matchsucc_2011" + +"$Some_2023": ; preds = %"$have_gas_2009" + %"$maybeRecord_2024" = bitcast %TName_Option_Record* %2 to %CName_Some_Record* + %"$record_gep_2025" = getelementptr inbounds %CName_Some_Record, %CName_Some_Record* %"$maybeRecord_2024", i32 0, i32 1 + %"$record_load_2026" = load %TName_Record*, %TName_Record** %"$record_gep_2025" %record = alloca %TName_Record* - store %TName_Record* %"$record_load_1439", %TName_Record** %record - %"$record_1441" = load %TName_Record*, %TName_Record** %record - %"$record_tag_1442" = getelementptr inbounds %TName_Record, %TName_Record* %"$record_1441", i32 0, i32 0 - %"$record_tag_1443" = load i8, i8* %"$record_tag_1442" - switch i8 %"$record_tag_1443", label %"$empty_default_1444" [ - i8 0, label %"$Record_1445" + store %TName_Record* %"$record_load_2026", %TName_Record** %record + %"$gasrem_2027" = load i64, i64* @_gasrem + %"$gascmp_2028" = icmp ugt i64 1, %"$gasrem_2027" + br i1 %"$gascmp_2028", label %"$out_of_gas_2029", label %"$have_gas_2030" + +"$out_of_gas_2029": ; preds = %"$Some_2023" + call void @_out_of_gas() + br label %"$have_gas_2030" + +"$have_gas_2030": ; preds = %"$out_of_gas_2029", %"$Some_2023" + %"$consume_2031" = sub i64 %"$gasrem_2027", 1 + store i64 %"$consume_2031", i64* @_gasrem + %"$record_2033" = load %TName_Record*, %TName_Record** %record + %"$record_tag_2034" = getelementptr inbounds %TName_Record, %TName_Record* %"$record_2033", i32 0, i32 0 + %"$record_tag_2035" = load i8, i8* %"$record_tag_2034" + switch i8 %"$record_tag_2035", label %"$empty_default_2036" [ + i8 0, label %"$Record_2037" ] -"$Record_1445": ; preds = %"$Some_1436" - %"$record_1446" = bitcast %TName_Record* %"$record_1441" to %CName_Record* - %"$owner_gep_1447" = getelementptr inbounds %CName_Record, %CName_Record* %"$record_1446", i32 0, i32 1 - %"$owner_load_1448" = load [20 x i8], [20 x i8]* %"$owner_gep_1447" +"$Record_2037": ; preds = %"$have_gas_2030" + %"$record_2038" = bitcast %TName_Record* %"$record_2033" to %CName_Record* + %"$owner_gep_2039" = getelementptr inbounds %CName_Record, %CName_Record* %"$record_2038", i32 0, i32 1 + %"$owner_load_2040" = load [20 x i8], [20 x i8]* %"$owner_gep_2039" %owner = alloca [20 x i8] - store [20 x i8] %"$owner_load_1448", [20 x i8]* %owner - %"$resolver_gep_1449" = getelementptr inbounds %CName_Record, %CName_Record* %"$record_1446", i32 0, i32 2 - %"$resolver_load_1450" = load [20 x i8], [20 x i8]* %"$resolver_gep_1449" + store [20 x i8] %"$owner_load_2040", [20 x i8]* %owner + %"$resolver_gep_2041" = getelementptr inbounds %CName_Record, %CName_Record* %"$record_2038", i32 0, i32 2 + %"$resolver_load_2042" = load [20 x i8], [20 x i8]* %"$resolver_gep_2041" %resolver = alloca [20 x i8] - store [20 x i8] %"$resolver_load_1450", [20 x i8]* %resolver - %"$owner_1451" = load [20 x i8], [20 x i8]* %owner - store [20 x i8] %"$owner_1451", [20 x i8]* %"$retval_221" - br label %"$matchsucc_1440" - -"$empty_default_1444": ; preds = %"$Some_1436" - br label %"$matchsucc_1440" - -"$matchsucc_1440": ; preds = %"$Record_1445", %"$empty_default_1444" - br label %"$matchsucc_1429" - -"$empty_default_1432": ; preds = %entry - br label %"$matchsucc_1429" - -"$matchsucc_1429": ; preds = %"$matchsucc_1440", %"$None_1433", %"$empty_default_1432" - %"$$retval_221_1452" = load [20 x i8], [20 x i8]* %"$retval_221" - store [20 x i8] %"$$retval_221_1452", [20 x i8]* %1 + store [20 x i8] %"$resolver_load_2042", [20 x i8]* %resolver + %"$gasrem_2043" = load i64, i64* @_gasrem + %"$gascmp_2044" = icmp ugt i64 1, %"$gasrem_2043" + br i1 %"$gascmp_2044", label %"$out_of_gas_2045", label %"$have_gas_2046" + +"$out_of_gas_2045": ; preds = %"$Record_2037" + call void @_out_of_gas() + br label %"$have_gas_2046" + +"$have_gas_2046": ; preds = %"$out_of_gas_2045", %"$Record_2037" + %"$consume_2047" = sub i64 %"$gasrem_2043", 1 + store i64 %"$consume_2047", i64* @_gasrem + %"$owner_2048" = load [20 x i8], [20 x i8]* %owner + store [20 x i8] %"$owner_2048", [20 x i8]* %"$retval_218" + br label %"$matchsucc_2032" + +"$empty_default_2036": ; preds = %"$have_gas_2030" + br label %"$matchsucc_2032" + +"$matchsucc_2032": ; preds = %"$have_gas_2046", %"$empty_default_2036" + br label %"$matchsucc_2011" + +"$empty_default_2014": ; preds = %"$have_gas_2009" + br label %"$matchsucc_2011" + +"$matchsucc_2011": ; preds = %"$matchsucc_2032", %"$have_gas_2020", %"$empty_default_2014" + %"$$retval_218_2049" = load [20 x i8], [20 x i8]* %"$retval_218" + store [20 x i8] %"$$retval_218_2049", [20 x i8]* %1 ret void } -define internal i8* @"$fundef_222"(%"$$fundef_222_env_408"* %0, %String %1) { +define internal i8* @"$fundef_219"(%"$$fundef_219_env_405"* %0, %String %1) { entry: - %"$retval_223" = alloca i8* - %"$msgobj_1409_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_1409_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1409_salloc_load", i64 81) - %"$msgobj_1409_salloc" = bitcast i8* %"$msgobj_1409_salloc_salloc" to [81 x i8]* - %"$msgobj_1409" = bitcast [81 x i8]* %"$msgobj_1409_salloc" to i8* - store i8 2, i8* %"$msgobj_1409" - %"$msgobj_fname_1411" = getelementptr i8, i8* %"$msgobj_1409", i32 1 - %"$msgobj_fname_1412" = bitcast i8* %"$msgobj_fname_1411" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1410", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1412" - %"$msgobj_td_1413" = getelementptr i8, i8* %"$msgobj_1409", i32 17 - %"$msgobj_td_1414" = bitcast i8* %"$msgobj_td_1413" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_1414" - %"$msgobj_v_1416" = getelementptr i8, i8* %"$msgobj_1409", i32 25 - %"$msgobj_v_1417" = bitcast i8* %"$msgobj_v_1416" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1415", i32 0, i32 0), i32 5 }, %String* %"$msgobj_v_1417" - %"$msgobj_fname_1419" = getelementptr i8, i8* %"$msgobj_1409", i32 41 - %"$msgobj_fname_1420" = bitcast i8* %"$msgobj_fname_1419" to %String* - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1418", i32 0, i32 0), i32 3 }, %String* %"$msgobj_fname_1420" - %"$msgobj_td_1421" = getelementptr i8, i8* %"$msgobj_1409", i32 57 - %"$msgobj_td_1422" = bitcast i8* %"$msgobj_td_1421" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_1422" - %"$msgobj_v_1423" = getelementptr i8, i8* %"$msgobj_1409", i32 65 - %"$msgobj_v_1424" = bitcast i8* %"$msgobj_v_1423" to %String* - store %String %1, %String* %"$msgobj_v_1424" - store i8* %"$msgobj_1409", i8** %"$retval_223" - %"$$retval_223_1426" = load i8*, i8** %"$retval_223" - ret i8* %"$$retval_223_1426" + %"$retval_220" = alloca i8* + %"$gasrem_1981" = load i64, i64* @_gasrem + %"$gascmp_1982" = icmp ugt i64 1, %"$gasrem_1981" + br i1 %"$gascmp_1982", label %"$out_of_gas_1983", label %"$have_gas_1984" + +"$out_of_gas_1983": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1984" + +"$have_gas_1984": ; preds = %"$out_of_gas_1983", %entry + %"$consume_1985" = sub i64 %"$gasrem_1981", 1 + store i64 %"$consume_1985", i64* @_gasrem + %"$msgobj_1986_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_1986_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1986_salloc_load", i64 81) + %"$msgobj_1986_salloc" = bitcast i8* %"$msgobj_1986_salloc_salloc" to [81 x i8]* + %"$msgobj_1986" = bitcast [81 x i8]* %"$msgobj_1986_salloc" to i8* + store i8 2, i8* %"$msgobj_1986" + %"$msgobj_fname_1988" = getelementptr i8, i8* %"$msgobj_1986", i32 1 + %"$msgobj_fname_1989" = bitcast i8* %"$msgobj_fname_1988" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1987", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1989" + %"$msgobj_td_1990" = getelementptr i8, i8* %"$msgobj_1986", i32 17 + %"$msgobj_td_1991" = bitcast i8* %"$msgobj_td_1990" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_1991" + %"$msgobj_v_1993" = getelementptr i8, i8* %"$msgobj_1986", i32 25 + %"$msgobj_v_1994" = bitcast i8* %"$msgobj_v_1993" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1992", i32 0, i32 0), i32 5 }, %String* %"$msgobj_v_1994" + %"$msgobj_fname_1996" = getelementptr i8, i8* %"$msgobj_1986", i32 41 + %"$msgobj_fname_1997" = bitcast i8* %"$msgobj_fname_1996" to %String* + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1995", i32 0, i32 0), i32 3 }, %String* %"$msgobj_fname_1997" + %"$msgobj_td_1998" = getelementptr i8, i8* %"$msgobj_1986", i32 57 + %"$msgobj_td_1999" = bitcast i8* %"$msgobj_td_1998" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_1999" + %"$msgobj_v_2000" = getelementptr i8, i8* %"$msgobj_1986", i32 65 + %"$msgobj_v_2001" = bitcast i8* %"$msgobj_v_2000" to %String* + store %String %1, %String* %"$msgobj_v_2001" + store i8* %"$msgobj_1986", i8** %"$retval_220" + %"$$retval_220_2003" = load i8*, i8** %"$retval_220" + ret i8* %"$$retval_220_2003" } -define internal i8* @"$fundef_228"(%"$$fundef_228_env_409"* %0, [20 x i8]* %1) { +define internal i8* @"$fundef_225"(%"$$fundef_225_env_406"* %0, [20 x i8]* %1) { entry: %resolver = load [20 x i8], [20 x i8]* %1 - %"$$fundef_228_env_node_1371" = getelementptr inbounds %"$$fundef_228_env_409", %"$$fundef_228_env_409"* %0, i32 0, i32 0 - %"$node_envload_1372" = load [32 x i8], [32 x i8]* %"$$fundef_228_env_node_1371" + %"$$fundef_225_env_node_1938" = getelementptr inbounds %"$$fundef_225_env_406", %"$$fundef_225_env_406"* %0, i32 0, i32 0 + %"$node_envload_1939" = load [32 x i8], [32 x i8]* %"$$fundef_225_env_node_1938" %node = alloca [32 x i8] - store [32 x i8] %"$node_envload_1372", [32 x i8]* %node - %"$$fundef_228_env_owner_1373" = getelementptr inbounds %"$$fundef_228_env_409", %"$$fundef_228_env_409"* %0, i32 0, i32 1 - %"$owner_envload_1374" = load [20 x i8], [20 x i8]* %"$$fundef_228_env_owner_1373" + store [32 x i8] %"$node_envload_1939", [32 x i8]* %node + %"$$fundef_225_env_owner_1940" = getelementptr inbounds %"$$fundef_225_env_406", %"$$fundef_225_env_406"* %0, i32 0, i32 1 + %"$owner_envload_1941" = load [20 x i8], [20 x i8]* %"$$fundef_225_env_owner_1940" %owner = alloca [20 x i8] - store [20 x i8] %"$owner_envload_1374", [20 x i8]* %owner - %"$retval_229" = alloca i8* - %"$msgobj_1375_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_1375_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1375_salloc_load", i64 185) - %"$msgobj_1375_salloc" = bitcast i8* %"$msgobj_1375_salloc_salloc" to [185 x i8]* - %"$msgobj_1375" = bitcast [185 x i8]* %"$msgobj_1375_salloc" to i8* - store i8 4, i8* %"$msgobj_1375" - %"$msgobj_fname_1377" = getelementptr i8, i8* %"$msgobj_1375", i32 1 - %"$msgobj_fname_1378" = bitcast i8* %"$msgobj_fname_1377" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1376", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1378" - %"$msgobj_td_1379" = getelementptr i8, i8* %"$msgobj_1375", i32 17 - %"$msgobj_td_1380" = bitcast i8* %"$msgobj_td_1379" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_1380" - %"$msgobj_v_1382" = getelementptr i8, i8* %"$msgobj_1375", i32 25 - %"$msgobj_v_1383" = bitcast i8* %"$msgobj_v_1382" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1381", i32 0, i32 0), i32 10 }, %String* %"$msgobj_v_1383" - %"$msgobj_fname_1385" = getelementptr i8, i8* %"$msgobj_1375", i32 41 - %"$msgobj_fname_1386" = bitcast i8* %"$msgobj_fname_1385" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1384", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1386" - %"$msgobj_td_1387" = getelementptr i8, i8* %"$msgobj_1375", i32 57 - %"$msgobj_td_1388" = bitcast i8* %"$msgobj_td_1387" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_309", %_TyDescrTy_Typ** %"$msgobj_td_1388" - %"$node_1389" = load [32 x i8], [32 x i8]* %node - %"$msgobj_v_1390" = getelementptr i8, i8* %"$msgobj_1375", i32 65 - %"$msgobj_v_1391" = bitcast i8* %"$msgobj_v_1390" to [32 x i8]* - store [32 x i8] %"$node_1389", [32 x i8]* %"$msgobj_v_1391" - %"$msgobj_fname_1393" = getelementptr i8, i8* %"$msgobj_1375", i32 97 - %"$msgobj_fname_1394" = bitcast i8* %"$msgobj_fname_1393" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1392", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_1394" - %"$msgobj_td_1395" = getelementptr i8, i8* %"$msgobj_1375", i32 113 - %"$msgobj_td_1396" = bitcast i8* %"$msgobj_td_1395" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_1396" - %"$owner_1397" = load [20 x i8], [20 x i8]* %owner - %"$msgobj_v_1398" = getelementptr i8, i8* %"$msgobj_1375", i32 121 - %"$msgobj_v_1399" = bitcast i8* %"$msgobj_v_1398" to [20 x i8]* - store [20 x i8] %"$owner_1397", [20 x i8]* %"$msgobj_v_1399" - %"$msgobj_fname_1401" = getelementptr i8, i8* %"$msgobj_1375", i32 141 - %"$msgobj_fname_1402" = bitcast i8* %"$msgobj_fname_1401" to %String* - store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_1400", i32 0, i32 0), i32 8 }, %String* %"$msgobj_fname_1402" - %"$msgobj_td_1403" = getelementptr i8, i8* %"$msgobj_1375", i32 157 - %"$msgobj_td_1404" = bitcast i8* %"$msgobj_td_1403" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_1404" - %"$msgobj_v_1405" = getelementptr i8, i8* %"$msgobj_1375", i32 165 - %"$msgobj_v_1406" = bitcast i8* %"$msgobj_v_1405" to [20 x i8]* - store [20 x i8] %resolver, [20 x i8]* %"$msgobj_v_1406" - store i8* %"$msgobj_1375", i8** %"$retval_229" - %"$$retval_229_1408" = load i8*, i8** %"$retval_229" - ret i8* %"$$retval_229_1408" + store [20 x i8] %"$owner_envload_1941", [20 x i8]* %owner + %"$retval_226" = alloca i8* + %"$gasrem_1942" = load i64, i64* @_gasrem + %"$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 = %entry + call void @_out_of_gas() + br label %"$have_gas_1945" + +"$have_gas_1945": ; preds = %"$out_of_gas_1944", %entry + %"$consume_1946" = sub i64 %"$gasrem_1942", 1 + store i64 %"$consume_1946", i64* @_gasrem + %"$msgobj_1947_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_1947_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1947_salloc_load", i64 185) + %"$msgobj_1947_salloc" = bitcast i8* %"$msgobj_1947_salloc_salloc" to [185 x i8]* + %"$msgobj_1947" = bitcast [185 x i8]* %"$msgobj_1947_salloc" to i8* + store i8 4, i8* %"$msgobj_1947" + %"$msgobj_fname_1949" = getelementptr i8, i8* %"$msgobj_1947", i32 1 + %"$msgobj_fname_1950" = bitcast i8* %"$msgobj_fname_1949" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1948", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1950" + %"$msgobj_td_1951" = getelementptr i8, i8* %"$msgobj_1947", i32 17 + %"$msgobj_td_1952" = bitcast i8* %"$msgobj_td_1951" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_1952" + %"$msgobj_v_1954" = getelementptr i8, i8* %"$msgobj_1947", i32 25 + %"$msgobj_v_1955" = bitcast i8* %"$msgobj_v_1954" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1953", i32 0, i32 0), i32 10 }, %String* %"$msgobj_v_1955" + %"$msgobj_fname_1957" = getelementptr i8, i8* %"$msgobj_1947", i32 41 + %"$msgobj_fname_1958" = bitcast i8* %"$msgobj_fname_1957" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1956", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1958" + %"$msgobj_td_1959" = getelementptr i8, i8* %"$msgobj_1947", i32 57 + %"$msgobj_td_1960" = bitcast i8* %"$msgobj_td_1959" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_306", %_TyDescrTy_Typ** %"$msgobj_td_1960" + %"$node_1961" = load [32 x i8], [32 x i8]* %node + %"$msgobj_v_1962" = getelementptr i8, i8* %"$msgobj_1947", i32 65 + %"$msgobj_v_1963" = bitcast i8* %"$msgobj_v_1962" to [32 x i8]* + store [32 x i8] %"$node_1961", [32 x i8]* %"$msgobj_v_1963" + %"$msgobj_fname_1965" = getelementptr i8, i8* %"$msgobj_1947", i32 97 + %"$msgobj_fname_1966" = bitcast i8* %"$msgobj_fname_1965" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1964", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_1966" + %"$msgobj_td_1967" = getelementptr i8, i8* %"$msgobj_1947", i32 113 + %"$msgobj_td_1968" = bitcast i8* %"$msgobj_td_1967" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_1968" + %"$owner_1969" = load [20 x i8], [20 x i8]* %owner + %"$msgobj_v_1970" = getelementptr i8, i8* %"$msgobj_1947", i32 121 + %"$msgobj_v_1971" = bitcast i8* %"$msgobj_v_1970" to [20 x i8]* + store [20 x i8] %"$owner_1969", [20 x i8]* %"$msgobj_v_1971" + %"$msgobj_fname_1973" = getelementptr i8, i8* %"$msgobj_1947", i32 141 + %"$msgobj_fname_1974" = bitcast i8* %"$msgobj_fname_1973" to %String* + store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_1972", i32 0, i32 0), i32 8 }, %String* %"$msgobj_fname_1974" + %"$msgobj_td_1975" = getelementptr i8, i8* %"$msgobj_1947", i32 157 + %"$msgobj_td_1976" = bitcast i8* %"$msgobj_td_1975" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_1976" + %"$msgobj_v_1977" = getelementptr i8, i8* %"$msgobj_1947", i32 165 + %"$msgobj_v_1978" = bitcast i8* %"$msgobj_v_1977" to [20 x i8]* + store [20 x i8] %resolver, [20 x i8]* %"$msgobj_v_1978" + store i8* %"$msgobj_1947", i8** %"$retval_226" + %"$$retval_226_1980" = load i8*, i8** %"$retval_226" + ret i8* %"$$retval_226_1980" } -define internal { i8* (i8*, [20 x i8]*)*, i8* } @"$fundef_226"(%"$$fundef_226_env_410"* %0, [20 x i8]* %1) { +define internal { i8* (i8*, [20 x i8]*)*, i8* } @"$fundef_223"(%"$$fundef_223_env_407"* %0, [20 x i8]* %1) { entry: %owner = load [20 x i8], [20 x i8]* %1 - %"$$fundef_226_env_node_1361" = getelementptr inbounds %"$$fundef_226_env_410", %"$$fundef_226_env_410"* %0, i32 0, i32 0 - %"$node_envload_1362" = load [32 x i8], [32 x i8]* %"$$fundef_226_env_node_1361" + %"$$fundef_223_env_node_1923" = getelementptr inbounds %"$$fundef_223_env_407", %"$$fundef_223_env_407"* %0, i32 0, i32 0 + %"$node_envload_1924" = load [32 x i8], [32 x i8]* %"$$fundef_223_env_node_1923" %node = alloca [32 x i8] - store [32 x i8] %"$node_envload_1362", [32 x i8]* %node - %"$retval_227" = alloca { i8* (i8*, [20 x i8]*)*, i8* } - %"$$fundef_228_envp_1363_load" = load i8*, i8** @_execptr - %"$$fundef_228_envp_1363_salloc" = call i8* @_salloc(i8* %"$$fundef_228_envp_1363_load", i64 52) - %"$$fundef_228_envp_1363" = bitcast i8* %"$$fundef_228_envp_1363_salloc" to %"$$fundef_228_env_409"* - %"$$fundef_228_env_voidp_1365" = bitcast %"$$fundef_228_env_409"* %"$$fundef_228_envp_1363" to i8* - %"$$fundef_228_cloval_1366" = insertvalue { i8* (i8*, [20 x i8]*)*, i8* } { i8* (i8*, [20 x i8]*)* bitcast (i8* (%"$$fundef_228_env_409"*, [20 x i8]*)* @"$fundef_228" to i8* (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_228_env_voidp_1365", 1 - %"$$fundef_228_env_node_1367" = getelementptr inbounds %"$$fundef_228_env_409", %"$$fundef_228_env_409"* %"$$fundef_228_envp_1363", i32 0, i32 0 - %"$node_1368" = load [32 x i8], [32 x i8]* %node - store [32 x i8] %"$node_1368", [32 x i8]* %"$$fundef_228_env_node_1367" - %"$$fundef_228_env_owner_1369" = getelementptr inbounds %"$$fundef_228_env_409", %"$$fundef_228_env_409"* %"$$fundef_228_envp_1363", i32 0, i32 1 - store [20 x i8] %owner, [20 x i8]* %"$$fundef_228_env_owner_1369" - store { i8* (i8*, [20 x i8]*)*, i8* } %"$$fundef_228_cloval_1366", { i8* (i8*, [20 x i8]*)*, i8* }* %"$retval_227" - %"$$retval_227_1370" = load { i8* (i8*, [20 x i8]*)*, i8* }, { i8* (i8*, [20 x i8]*)*, i8* }* %"$retval_227" - ret { i8* (i8*, [20 x i8]*)*, i8* } %"$$retval_227_1370" + store [32 x i8] %"$node_envload_1924", [32 x i8]* %node + %"$retval_224" = alloca { i8* (i8*, [20 x i8]*)*, i8* } + %"$gasrem_1925" = load i64, i64* @_gasrem + %"$gascmp_1926" = icmp ugt i64 1, %"$gasrem_1925" + br i1 %"$gascmp_1926", label %"$out_of_gas_1927", label %"$have_gas_1928" + +"$out_of_gas_1927": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1928" + +"$have_gas_1928": ; preds = %"$out_of_gas_1927", %entry + %"$consume_1929" = sub i64 %"$gasrem_1925", 1 + store i64 %"$consume_1929", i64* @_gasrem + %"$$fundef_225_envp_1930_load" = load i8*, i8** @_execptr + %"$$fundef_225_envp_1930_salloc" = call i8* @_salloc(i8* %"$$fundef_225_envp_1930_load", i64 52) + %"$$fundef_225_envp_1930" = bitcast i8* %"$$fundef_225_envp_1930_salloc" to %"$$fundef_225_env_406"* + %"$$fundef_225_env_voidp_1932" = bitcast %"$$fundef_225_env_406"* %"$$fundef_225_envp_1930" to i8* + %"$$fundef_225_cloval_1933" = insertvalue { i8* (i8*, [20 x i8]*)*, i8* } { i8* (i8*, [20 x i8]*)* bitcast (i8* (%"$$fundef_225_env_406"*, [20 x i8]*)* @"$fundef_225" to i8* (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_225_env_voidp_1932", 1 + %"$$fundef_225_env_node_1934" = getelementptr inbounds %"$$fundef_225_env_406", %"$$fundef_225_env_406"* %"$$fundef_225_envp_1930", i32 0, i32 0 + %"$node_1935" = load [32 x i8], [32 x i8]* %node + store [32 x i8] %"$node_1935", [32 x i8]* %"$$fundef_225_env_node_1934" + %"$$fundef_225_env_owner_1936" = getelementptr inbounds %"$$fundef_225_env_406", %"$$fundef_225_env_406"* %"$$fundef_225_envp_1930", i32 0, i32 1 + store [20 x i8] %owner, [20 x i8]* %"$$fundef_225_env_owner_1936" + store { i8* (i8*, [20 x i8]*)*, i8* } %"$$fundef_225_cloval_1933", { i8* (i8*, [20 x i8]*)*, i8* }* %"$retval_224" + %"$$retval_224_1937" = load { i8* (i8*, [20 x i8]*)*, i8* }, { i8* (i8*, [20 x i8]*)*, i8* }* %"$retval_224" + ret { i8* (i8*, [20 x i8]*)*, i8* } %"$$retval_224_1937" } -define internal { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } @"$fundef_224"(%"$$fundef_224_env_411"* %0, [32 x i8]* %1) { +define internal { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } @"$fundef_221"(%"$$fundef_221_env_408"* %0, [32 x i8]* %1) { entry: %node = load [32 x i8], [32 x i8]* %1 - %"$retval_225" = alloca { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$$fundef_226_envp_1355_load" = load i8*, i8** @_execptr - %"$$fundef_226_envp_1355_salloc" = call i8* @_salloc(i8* %"$$fundef_226_envp_1355_load", i64 32) - %"$$fundef_226_envp_1355" = bitcast i8* %"$$fundef_226_envp_1355_salloc" to %"$$fundef_226_env_410"* - %"$$fundef_226_env_voidp_1357" = bitcast %"$$fundef_226_env_410"* %"$$fundef_226_envp_1355" to i8* - %"$$fundef_226_cloval_1358" = insertvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ i8* (i8*, [20 x i8]*)*, i8* } (%"$$fundef_226_env_410"*, [20 x i8]*)* @"$fundef_226" to { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_226_env_voidp_1357", 1 - %"$$fundef_226_env_node_1359" = getelementptr inbounds %"$$fundef_226_env_410", %"$$fundef_226_env_410"* %"$$fundef_226_envp_1355", i32 0, i32 0 - store [32 x i8] %node, [32 x i8]* %"$$fundef_226_env_node_1359" - store { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$fundef_226_cloval_1358", { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_225" - %"$$retval_225_1360" = load { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_225" - ret { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$retval_225_1360" + %"$retval_222" = alloca { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } + %"$gasrem_1912" = load i64, i64* @_gasrem + %"$gascmp_1913" = icmp ugt i64 1, %"$gasrem_1912" + br i1 %"$gascmp_1913", label %"$out_of_gas_1914", label %"$have_gas_1915" + +"$out_of_gas_1914": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1915" + +"$have_gas_1915": ; preds = %"$out_of_gas_1914", %entry + %"$consume_1916" = sub i64 %"$gasrem_1912", 1 + store i64 %"$consume_1916", i64* @_gasrem + %"$$fundef_223_envp_1917_load" = load i8*, i8** @_execptr + %"$$fundef_223_envp_1917_salloc" = call i8* @_salloc(i8* %"$$fundef_223_envp_1917_load", i64 32) + %"$$fundef_223_envp_1917" = bitcast i8* %"$$fundef_223_envp_1917_salloc" to %"$$fundef_223_env_407"* + %"$$fundef_223_env_voidp_1919" = bitcast %"$$fundef_223_env_407"* %"$$fundef_223_envp_1917" to i8* + %"$$fundef_223_cloval_1920" = insertvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ i8* (i8*, [20 x i8]*)*, i8* } (%"$$fundef_223_env_407"*, [20 x i8]*)* @"$fundef_223" to { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_223_env_voidp_1919", 1 + %"$$fundef_223_env_node_1921" = getelementptr inbounds %"$$fundef_223_env_407", %"$$fundef_223_env_407"* %"$$fundef_223_envp_1917", i32 0, i32 0 + store [32 x i8] %node, [32 x i8]* %"$$fundef_223_env_node_1921" + store { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$fundef_223_cloval_1920", { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_222" + %"$$retval_222_1922" = load { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_222" + ret { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$retval_222_1922" } -define internal i8* @"$fundef_232"(%"$$fundef_232_env_412"* %0, %String %1) { +define internal i8* @"$fundef_229"(%"$$fundef_229_env_409"* %0, %String %1) { entry: - %"$$fundef_232_env_parent_1327" = getelementptr inbounds %"$$fundef_232_env_412", %"$$fundef_232_env_412"* %0, i32 0, i32 0 - %"$parent_envload_1328" = load [32 x i8], [32 x i8]* %"$$fundef_232_env_parent_1327" + %"$$fundef_229_env_parent_1879" = getelementptr inbounds %"$$fundef_229_env_409", %"$$fundef_229_env_409"* %0, i32 0, i32 0 + %"$parent_envload_1880" = load [32 x i8], [32 x i8]* %"$$fundef_229_env_parent_1879" %parent = alloca [32 x i8] - store [32 x i8] %"$parent_envload_1328", [32 x i8]* %parent - %"$retval_233" = alloca i8* - %"$msgobj_1329_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_1329_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1329_salloc_load", i64 137) - %"$msgobj_1329_salloc" = bitcast i8* %"$msgobj_1329_salloc_salloc" to [137 x i8]* - %"$msgobj_1329" = bitcast [137 x i8]* %"$msgobj_1329_salloc" to i8* - store i8 3, i8* %"$msgobj_1329" - %"$msgobj_fname_1331" = getelementptr i8, i8* %"$msgobj_1329", i32 1 - %"$msgobj_fname_1332" = bitcast i8* %"$msgobj_fname_1331" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1330", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1332" - %"$msgobj_td_1333" = getelementptr i8, i8* %"$msgobj_1329", i32 17 - %"$msgobj_td_1334" = bitcast i8* %"$msgobj_td_1333" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_1334" - %"$msgobj_v_1336" = getelementptr i8, i8* %"$msgobj_1329", i32 25 - %"$msgobj_v_1337" = bitcast i8* %"$msgobj_v_1336" to %String* - store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_1335", i32 0, i32 0), i32 9 }, %String* %"$msgobj_v_1337" - %"$msgobj_fname_1339" = getelementptr i8, i8* %"$msgobj_1329", i32 41 - %"$msgobj_fname_1340" = bitcast i8* %"$msgobj_fname_1339" to %String* - store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_1338", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_1340" - %"$msgobj_td_1341" = getelementptr i8, i8* %"$msgobj_1329", i32 57 - %"$msgobj_td_1342" = bitcast i8* %"$msgobj_td_1341" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_309", %_TyDescrTy_Typ** %"$msgobj_td_1342" - %"$parent_1343" = load [32 x i8], [32 x i8]* %parent - %"$msgobj_v_1344" = getelementptr i8, i8* %"$msgobj_1329", i32 65 - %"$msgobj_v_1345" = bitcast i8* %"$msgobj_v_1344" to [32 x i8]* - store [32 x i8] %"$parent_1343", [32 x i8]* %"$msgobj_v_1345" - %"$msgobj_fname_1347" = getelementptr i8, i8* %"$msgobj_1329", i32 97 - %"$msgobj_fname_1348" = bitcast i8* %"$msgobj_fname_1347" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1346", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_1348" - %"$msgobj_td_1349" = getelementptr i8, i8* %"$msgobj_1329", i32 113 - %"$msgobj_td_1350" = bitcast i8* %"$msgobj_td_1349" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_1350" - %"$msgobj_v_1351" = getelementptr i8, i8* %"$msgobj_1329", i32 121 - %"$msgobj_v_1352" = bitcast i8* %"$msgobj_v_1351" to %String* - store %String %1, %String* %"$msgobj_v_1352" - store i8* %"$msgobj_1329", i8** %"$retval_233" - %"$$retval_233_1354" = load i8*, i8** %"$retval_233" - ret i8* %"$$retval_233_1354" + store [32 x i8] %"$parent_envload_1880", [32 x i8]* %parent + %"$retval_230" = alloca i8* + %"$gasrem_1881" = load i64, i64* @_gasrem + %"$gascmp_1882" = icmp ugt i64 1, %"$gasrem_1881" + br i1 %"$gascmp_1882", label %"$out_of_gas_1883", label %"$have_gas_1884" + +"$out_of_gas_1883": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1884" + +"$have_gas_1884": ; preds = %"$out_of_gas_1883", %entry + %"$consume_1885" = sub i64 %"$gasrem_1881", 1 + store i64 %"$consume_1885", i64* @_gasrem + %"$msgobj_1886_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_1886_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1886_salloc_load", i64 137) + %"$msgobj_1886_salloc" = bitcast i8* %"$msgobj_1886_salloc_salloc" to [137 x i8]* + %"$msgobj_1886" = bitcast [137 x i8]* %"$msgobj_1886_salloc" to i8* + store i8 3, i8* %"$msgobj_1886" + %"$msgobj_fname_1888" = getelementptr i8, i8* %"$msgobj_1886", i32 1 + %"$msgobj_fname_1889" = bitcast i8* %"$msgobj_fname_1888" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1887", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1889" + %"$msgobj_td_1890" = getelementptr i8, i8* %"$msgobj_1886", i32 17 + %"$msgobj_td_1891" = bitcast i8* %"$msgobj_td_1890" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_1891" + %"$msgobj_v_1893" = getelementptr i8, i8* %"$msgobj_1886", i32 25 + %"$msgobj_v_1894" = bitcast i8* %"$msgobj_v_1893" to %String* + store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_1892", i32 0, i32 0), i32 9 }, %String* %"$msgobj_v_1894" + %"$msgobj_fname_1896" = getelementptr i8, i8* %"$msgobj_1886", i32 41 + %"$msgobj_fname_1897" = bitcast i8* %"$msgobj_fname_1896" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_1895", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_1897" + %"$msgobj_td_1898" = getelementptr i8, i8* %"$msgobj_1886", i32 57 + %"$msgobj_td_1899" = bitcast i8* %"$msgobj_td_1898" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_306", %_TyDescrTy_Typ** %"$msgobj_td_1899" + %"$parent_1900" = load [32 x i8], [32 x i8]* %parent + %"$msgobj_v_1901" = getelementptr i8, i8* %"$msgobj_1886", i32 65 + %"$msgobj_v_1902" = bitcast i8* %"$msgobj_v_1901" to [32 x i8]* + store [32 x i8] %"$parent_1900", [32 x i8]* %"$msgobj_v_1902" + %"$msgobj_fname_1904" = getelementptr i8, i8* %"$msgobj_1886", i32 97 + %"$msgobj_fname_1905" = bitcast i8* %"$msgobj_fname_1904" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1903", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_1905" + %"$msgobj_td_1906" = getelementptr i8, i8* %"$msgobj_1886", i32 113 + %"$msgobj_td_1907" = bitcast i8* %"$msgobj_td_1906" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_1907" + %"$msgobj_v_1908" = getelementptr i8, i8* %"$msgobj_1886", i32 121 + %"$msgobj_v_1909" = bitcast i8* %"$msgobj_v_1908" to %String* + store %String %1, %String* %"$msgobj_v_1909" + store i8* %"$msgobj_1886", i8** %"$retval_230" + %"$$retval_230_1911" = load i8*, i8** %"$retval_230" + ret i8* %"$$retval_230_1911" } -define internal { i8* (i8*, %String)*, i8* } @"$fundef_230"(%"$$fundef_230_env_413"* %0, [32 x i8]* %1) { +define internal { i8* (i8*, %String)*, i8* } @"$fundef_227"(%"$$fundef_227_env_410"* %0, [32 x i8]* %1) { entry: %parent = load [32 x i8], [32 x i8]* %1 - %"$retval_231" = alloca { i8* (i8*, %String)*, i8* } - %"$$fundef_232_envp_1321_load" = load i8*, i8** @_execptr - %"$$fundef_232_envp_1321_salloc" = call i8* @_salloc(i8* %"$$fundef_232_envp_1321_load", i64 32) - %"$$fundef_232_envp_1321" = bitcast i8* %"$$fundef_232_envp_1321_salloc" to %"$$fundef_232_env_412"* - %"$$fundef_232_env_voidp_1323" = bitcast %"$$fundef_232_env_412"* %"$$fundef_232_envp_1321" to i8* - %"$$fundef_232_cloval_1324" = insertvalue { i8* (i8*, %String)*, i8* } { i8* (i8*, %String)* bitcast (i8* (%"$$fundef_232_env_412"*, %String)* @"$fundef_232" to i8* (i8*, %String)*), i8* undef }, i8* %"$$fundef_232_env_voidp_1323", 1 - %"$$fundef_232_env_parent_1325" = getelementptr inbounds %"$$fundef_232_env_412", %"$$fundef_232_env_412"* %"$$fundef_232_envp_1321", i32 0, i32 0 - store [32 x i8] %parent, [32 x i8]* %"$$fundef_232_env_parent_1325" - store { i8* (i8*, %String)*, i8* } %"$$fundef_232_cloval_1324", { i8* (i8*, %String)*, i8* }* %"$retval_231" - %"$$retval_231_1326" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* %"$retval_231" - ret { i8* (i8*, %String)*, i8* } %"$$retval_231_1326" + %"$retval_228" = alloca { i8* (i8*, %String)*, i8* } + %"$gasrem_1868" = load i64, i64* @_gasrem + %"$gascmp_1869" = icmp ugt i64 1, %"$gasrem_1868" + br i1 %"$gascmp_1869", label %"$out_of_gas_1870", label %"$have_gas_1871" + +"$out_of_gas_1870": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1871" + +"$have_gas_1871": ; preds = %"$out_of_gas_1870", %entry + %"$consume_1872" = sub i64 %"$gasrem_1868", 1 + store i64 %"$consume_1872", i64* @_gasrem + %"$$fundef_229_envp_1873_load" = load i8*, i8** @_execptr + %"$$fundef_229_envp_1873_salloc" = call i8* @_salloc(i8* %"$$fundef_229_envp_1873_load", i64 32) + %"$$fundef_229_envp_1873" = bitcast i8* %"$$fundef_229_envp_1873_salloc" to %"$$fundef_229_env_409"* + %"$$fundef_229_env_voidp_1875" = bitcast %"$$fundef_229_env_409"* %"$$fundef_229_envp_1873" to i8* + %"$$fundef_229_cloval_1876" = insertvalue { i8* (i8*, %String)*, i8* } { i8* (i8*, %String)* bitcast (i8* (%"$$fundef_229_env_409"*, %String)* @"$fundef_229" to i8* (i8*, %String)*), i8* undef }, i8* %"$$fundef_229_env_voidp_1875", 1 + %"$$fundef_229_env_parent_1877" = getelementptr inbounds %"$$fundef_229_env_409", %"$$fundef_229_env_409"* %"$$fundef_229_envp_1873", i32 0, i32 0 + store [32 x i8] %parent, [32 x i8]* %"$$fundef_229_env_parent_1877" + store { i8* (i8*, %String)*, i8* } %"$$fundef_229_cloval_1876", { i8* (i8*, %String)*, i8* }* %"$retval_228" + %"$$retval_228_1878" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* %"$retval_228" + ret { i8* (i8*, %String)*, i8* } %"$$retval_228_1878" } -define internal i8* @"$fundef_234"(%"$$fundef_234_env_414"* %0, [20 x i8]* %1) { +define internal i8* @"$fundef_231"(%"$$fundef_231_env_411"* %0, [20 x i8]* %1) { entry: %address = load [20 x i8], [20 x i8]* %1 - %"$retval_235" = alloca i8* - %"$msgobj_1303_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_1303_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1303_salloc_load", i64 85) - %"$msgobj_1303_salloc" = bitcast i8* %"$msgobj_1303_salloc_salloc" to [85 x i8]* - %"$msgobj_1303" = bitcast [85 x i8]* %"$msgobj_1303_salloc" to i8* - store i8 2, i8* %"$msgobj_1303" - %"$msgobj_fname_1305" = getelementptr i8, i8* %"$msgobj_1303", i32 1 - %"$msgobj_fname_1306" = bitcast i8* %"$msgobj_fname_1305" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1304", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1306" - %"$msgobj_td_1307" = getelementptr i8, i8* %"$msgobj_1303", i32 17 - %"$msgobj_td_1308" = bitcast i8* %"$msgobj_td_1307" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_1308" - %"$msgobj_v_1310" = getelementptr i8, i8* %"$msgobj_1303", i32 25 - %"$msgobj_v_1311" = bitcast i8* %"$msgobj_v_1310" to %String* - store %String { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$stringlit_1309", i32 0, i32 0), i32 12 }, %String* %"$msgobj_v_1311" - %"$msgobj_fname_1313" = getelementptr i8, i8* %"$msgobj_1303", i32 41 - %"$msgobj_fname_1314" = bitcast i8* %"$msgobj_fname_1313" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1312", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1314" - %"$msgobj_td_1315" = getelementptr i8, i8* %"$msgobj_1303", i32 57 - %"$msgobj_td_1316" = bitcast i8* %"$msgobj_td_1315" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_1316" - %"$msgobj_v_1317" = getelementptr i8, i8* %"$msgobj_1303", i32 65 - %"$msgobj_v_1318" = bitcast i8* %"$msgobj_v_1317" to [20 x i8]* - store [20 x i8] %address, [20 x i8]* %"$msgobj_v_1318" - store i8* %"$msgobj_1303", i8** %"$retval_235" - %"$$retval_235_1320" = load i8*, i8** %"$retval_235" - ret i8* %"$$retval_235_1320" + %"$retval_232" = alloca i8* + %"$gasrem_1845" = load i64, i64* @_gasrem + %"$gascmp_1846" = icmp ugt i64 1, %"$gasrem_1845" + br i1 %"$gascmp_1846", label %"$out_of_gas_1847", label %"$have_gas_1848" + +"$out_of_gas_1847": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1848" + +"$have_gas_1848": ; preds = %"$out_of_gas_1847", %entry + %"$consume_1849" = sub i64 %"$gasrem_1845", 1 + store i64 %"$consume_1849", i64* @_gasrem + %"$msgobj_1850_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_1850_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1850_salloc_load", i64 85) + %"$msgobj_1850_salloc" = bitcast i8* %"$msgobj_1850_salloc_salloc" to [85 x i8]* + %"$msgobj_1850" = bitcast [85 x i8]* %"$msgobj_1850_salloc" to i8* + store i8 2, i8* %"$msgobj_1850" + %"$msgobj_fname_1852" = getelementptr i8, i8* %"$msgobj_1850", i32 1 + %"$msgobj_fname_1853" = bitcast i8* %"$msgobj_fname_1852" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1851", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1853" + %"$msgobj_td_1854" = getelementptr i8, i8* %"$msgobj_1850", i32 17 + %"$msgobj_td_1855" = bitcast i8* %"$msgobj_td_1854" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_1855" + %"$msgobj_v_1857" = getelementptr i8, i8* %"$msgobj_1850", i32 25 + %"$msgobj_v_1858" = bitcast i8* %"$msgobj_v_1857" to %String* + store %String { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$stringlit_1856", i32 0, i32 0), i32 12 }, %String* %"$msgobj_v_1858" + %"$msgobj_fname_1860" = getelementptr i8, i8* %"$msgobj_1850", i32 41 + %"$msgobj_fname_1861" = bitcast i8* %"$msgobj_fname_1860" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1859", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1861" + %"$msgobj_td_1862" = getelementptr i8, i8* %"$msgobj_1850", i32 57 + %"$msgobj_td_1863" = bitcast i8* %"$msgobj_td_1862" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_1863" + %"$msgobj_v_1864" = getelementptr i8, i8* %"$msgobj_1850", i32 65 + %"$msgobj_v_1865" = bitcast i8* %"$msgobj_v_1864" to [20 x i8]* + store [20 x i8] %address, [20 x i8]* %"$msgobj_v_1865" + store i8* %"$msgobj_1850", i8** %"$retval_232" + %"$$retval_232_1867" = load i8*, i8** %"$retval_232" + ret i8* %"$$retval_232_1867" } -define internal i8* @"$fundef_236"(%"$$fundef_236_env_415"* %0, [20 x i8]* %1) { +define internal i8* @"$fundef_233"(%"$$fundef_233_env_412"* %0, [20 x i8]* %1) { entry: %address = load [20 x i8], [20 x i8]* %1 - %"$retval_237" = alloca i8* - %"$msgobj_1285_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_1285_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1285_salloc_load", i64 85) - %"$msgobj_1285_salloc" = bitcast i8* %"$msgobj_1285_salloc_salloc" to [85 x i8]* - %"$msgobj_1285" = bitcast [85 x i8]* %"$msgobj_1285_salloc" to i8* - store i8 2, i8* %"$msgobj_1285" - %"$msgobj_fname_1287" = getelementptr i8, i8* %"$msgobj_1285", i32 1 - %"$msgobj_fname_1288" = bitcast i8* %"$msgobj_fname_1287" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1286", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1288" - %"$msgobj_td_1289" = getelementptr i8, i8* %"$msgobj_1285", i32 17 - %"$msgobj_td_1290" = bitcast i8* %"$msgobj_td_1289" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_1290" - %"$msgobj_v_1292" = getelementptr i8, i8* %"$msgobj_1285", i32 25 - %"$msgobj_v_1293" = bitcast i8* %"$msgobj_v_1292" to %String* - store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_1291", i32 0, i32 0), i32 8 }, %String* %"$msgobj_v_1293" - %"$msgobj_fname_1295" = getelementptr i8, i8* %"$msgobj_1285", i32 41 - %"$msgobj_fname_1296" = bitcast i8* %"$msgobj_fname_1295" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1294", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1296" - %"$msgobj_td_1297" = getelementptr i8, i8* %"$msgobj_1285", i32 57 - %"$msgobj_td_1298" = bitcast i8* %"$msgobj_td_1297" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_1298" - %"$msgobj_v_1299" = getelementptr i8, i8* %"$msgobj_1285", i32 65 - %"$msgobj_v_1300" = bitcast i8* %"$msgobj_v_1299" to [20 x i8]* - store [20 x i8] %address, [20 x i8]* %"$msgobj_v_1300" - store i8* %"$msgobj_1285", i8** %"$retval_237" - %"$$retval_237_1302" = load i8*, i8** %"$retval_237" - ret i8* %"$$retval_237_1302" + %"$retval_234" = alloca i8* + %"$gasrem_1822" = load i64, i64* @_gasrem + %"$gascmp_1823" = icmp ugt i64 1, %"$gasrem_1822" + br i1 %"$gascmp_1823", label %"$out_of_gas_1824", label %"$have_gas_1825" + +"$out_of_gas_1824": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1825" + +"$have_gas_1825": ; preds = %"$out_of_gas_1824", %entry + %"$consume_1826" = sub i64 %"$gasrem_1822", 1 + store i64 %"$consume_1826", i64* @_gasrem + %"$msgobj_1827_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_1827_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1827_salloc_load", i64 85) + %"$msgobj_1827_salloc" = bitcast i8* %"$msgobj_1827_salloc_salloc" to [85 x i8]* + %"$msgobj_1827" = bitcast [85 x i8]* %"$msgobj_1827_salloc" to i8* + store i8 2, i8* %"$msgobj_1827" + %"$msgobj_fname_1829" = getelementptr i8, i8* %"$msgobj_1827", i32 1 + %"$msgobj_fname_1830" = bitcast i8* %"$msgobj_fname_1829" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1828", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1830" + %"$msgobj_td_1831" = getelementptr i8, i8* %"$msgobj_1827", i32 17 + %"$msgobj_td_1832" = bitcast i8* %"$msgobj_td_1831" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_1832" + %"$msgobj_v_1834" = getelementptr i8, i8* %"$msgobj_1827", i32 25 + %"$msgobj_v_1835" = bitcast i8* %"$msgobj_v_1834" to %String* + store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_1833", i32 0, i32 0), i32 8 }, %String* %"$msgobj_v_1835" + %"$msgobj_fname_1837" = getelementptr i8, i8* %"$msgobj_1827", i32 41 + %"$msgobj_fname_1838" = bitcast i8* %"$msgobj_fname_1837" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1836", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1838" + %"$msgobj_td_1839" = getelementptr i8, i8* %"$msgobj_1827", i32 57 + %"$msgobj_td_1840" = bitcast i8* %"$msgobj_td_1839" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_1840" + %"$msgobj_v_1841" = getelementptr i8, i8* %"$msgobj_1827", i32 65 + %"$msgobj_v_1842" = bitcast i8* %"$msgobj_v_1841" to [20 x i8]* + store [20 x i8] %address, [20 x i8]* %"$msgobj_v_1842" + store i8* %"$msgobj_1827", i8** %"$retval_234" + %"$$retval_234_1844" = load i8*, i8** %"$retval_234" + ret i8* %"$$retval_234_1844" } -define internal i8* @"$fundef_242"(%"$$fundef_242_env_416"* %0, %TName_Bool* %1) { +define internal i8* @"$fundef_239"(%"$$fundef_239_env_413"* %0, %TName_Bool* %1) { entry: - %"$$fundef_242_env_operator_1247" = getelementptr inbounds %"$$fundef_242_env_416", %"$$fundef_242_env_416"* %0, i32 0, i32 0 - %"$operator_envload_1248" = load [20 x i8], [20 x i8]* %"$$fundef_242_env_operator_1247" + %"$$fundef_239_env_operator_1779" = getelementptr inbounds %"$$fundef_239_env_413", %"$$fundef_239_env_413"* %0, i32 0, i32 0 + %"$operator_envload_1780" = load [20 x i8], [20 x i8]* %"$$fundef_239_env_operator_1779" %operator = alloca [20 x i8] - store [20 x i8] %"$operator_envload_1248", [20 x i8]* %operator - %"$$fundef_242_env_user_1249" = getelementptr inbounds %"$$fundef_242_env_416", %"$$fundef_242_env_416"* %0, i32 0, i32 1 - %"$user_envload_1250" = load [20 x i8], [20 x i8]* %"$$fundef_242_env_user_1249" + store [20 x i8] %"$operator_envload_1780", [20 x i8]* %operator + %"$$fundef_239_env_user_1781" = getelementptr inbounds %"$$fundef_239_env_413", %"$$fundef_239_env_413"* %0, i32 0, i32 1 + %"$user_envload_1782" = load [20 x i8], [20 x i8]* %"$$fundef_239_env_user_1781" %user = alloca [20 x i8] - store [20 x i8] %"$user_envload_1250", [20 x i8]* %user - %"$retval_243" = alloca i8* - %"$msgobj_1251_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_1251_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1251_salloc_load", i64 161) - %"$msgobj_1251_salloc" = bitcast i8* %"$msgobj_1251_salloc_salloc" to [161 x i8]* - %"$msgobj_1251" = bitcast [161 x i8]* %"$msgobj_1251_salloc" to i8* - store i8 4, i8* %"$msgobj_1251" - %"$msgobj_fname_1253" = getelementptr i8, i8* %"$msgobj_1251", i32 1 - %"$msgobj_fname_1254" = bitcast i8* %"$msgobj_fname_1253" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1252", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1254" - %"$msgobj_td_1255" = getelementptr i8, i8* %"$msgobj_1251", i32 17 - %"$msgobj_td_1256" = bitcast i8* %"$msgobj_td_1255" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_1256" - %"$msgobj_v_1258" = getelementptr i8, i8* %"$msgobj_1251", i32 25 - %"$msgobj_v_1259" = bitcast i8* %"$msgobj_v_1258" to %String* - store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_1257", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_1259" - %"$msgobj_fname_1261" = getelementptr i8, i8* %"$msgobj_1251", i32 41 - %"$msgobj_fname_1262" = bitcast i8* %"$msgobj_fname_1261" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1260", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1262" - %"$msgobj_td_1263" = getelementptr i8, i8* %"$msgobj_1251", i32 57 - %"$msgobj_td_1264" = bitcast i8* %"$msgobj_td_1263" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_1264" - %"$user_1265" = load [20 x i8], [20 x i8]* %user - %"$msgobj_v_1266" = getelementptr i8, i8* %"$msgobj_1251", i32 65 - %"$msgobj_v_1267" = bitcast i8* %"$msgobj_v_1266" to [20 x i8]* - store [20 x i8] %"$user_1265", [20 x i8]* %"$msgobj_v_1267" - %"$msgobj_fname_1269" = getelementptr i8, i8* %"$msgobj_1251", i32 85 - %"$msgobj_fname_1270" = bitcast i8* %"$msgobj_fname_1269" to %String* - store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_1268", i32 0, i32 0), i32 8 }, %String* %"$msgobj_fname_1270" - %"$msgobj_td_1271" = getelementptr i8, i8* %"$msgobj_1251", i32 101 - %"$msgobj_td_1272" = bitcast i8* %"$msgobj_td_1271" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_1272" - %"$operator_1273" = load [20 x i8], [20 x i8]* %operator - %"$msgobj_v_1274" = getelementptr i8, i8* %"$msgobj_1251", i32 109 - %"$msgobj_v_1275" = bitcast i8* %"$msgobj_v_1274" to [20 x i8]* - store [20 x i8] %"$operator_1273", [20 x i8]* %"$msgobj_v_1275" - %"$msgobj_fname_1277" = getelementptr i8, i8* %"$msgobj_1251", i32 129 - %"$msgobj_fname_1278" = bitcast i8* %"$msgobj_fname_1277" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1276", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1278" - %"$msgobj_td_1279" = getelementptr i8, i8* %"$msgobj_1251", i32 145 - %"$msgobj_td_1280" = bitcast i8* %"$msgobj_td_1279" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_321", %_TyDescrTy_Typ** %"$msgobj_td_1280" - %"$msgobj_v_1281" = getelementptr i8, i8* %"$msgobj_1251", i32 153 - %"$msgobj_v_1282" = bitcast i8* %"$msgobj_v_1281" to %TName_Bool** - store %TName_Bool* %1, %TName_Bool** %"$msgobj_v_1282" - store i8* %"$msgobj_1251", i8** %"$retval_243" - %"$$retval_243_1284" = load i8*, i8** %"$retval_243" - ret i8* %"$$retval_243_1284" + store [20 x i8] %"$user_envload_1782", [20 x i8]* %user + %"$retval_240" = alloca i8* + %"$gasrem_1783" = load i64, i64* @_gasrem + %"$gascmp_1784" = icmp ugt i64 1, %"$gasrem_1783" + br i1 %"$gascmp_1784", label %"$out_of_gas_1785", label %"$have_gas_1786" + +"$out_of_gas_1785": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1786" + +"$have_gas_1786": ; preds = %"$out_of_gas_1785", %entry + %"$consume_1787" = sub i64 %"$gasrem_1783", 1 + store i64 %"$consume_1787", i64* @_gasrem + %"$msgobj_1788_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_1788_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1788_salloc_load", i64 161) + %"$msgobj_1788_salloc" = bitcast i8* %"$msgobj_1788_salloc_salloc" to [161 x i8]* + %"$msgobj_1788" = bitcast [161 x i8]* %"$msgobj_1788_salloc" to i8* + store i8 4, i8* %"$msgobj_1788" + %"$msgobj_fname_1790" = getelementptr i8, i8* %"$msgobj_1788", i32 1 + %"$msgobj_fname_1791" = bitcast i8* %"$msgobj_fname_1790" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1789", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1791" + %"$msgobj_td_1792" = getelementptr i8, i8* %"$msgobj_1788", i32 17 + %"$msgobj_td_1793" = bitcast i8* %"$msgobj_td_1792" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_1793" + %"$msgobj_v_1795" = getelementptr i8, i8* %"$msgobj_1788", i32 25 + %"$msgobj_v_1796" = bitcast i8* %"$msgobj_v_1795" to %String* + store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_1794", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_1796" + %"$msgobj_fname_1798" = getelementptr i8, i8* %"$msgobj_1788", i32 41 + %"$msgobj_fname_1799" = bitcast i8* %"$msgobj_fname_1798" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1797", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1799" + %"$msgobj_td_1800" = getelementptr i8, i8* %"$msgobj_1788", i32 57 + %"$msgobj_td_1801" = bitcast i8* %"$msgobj_td_1800" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_1801" + %"$user_1802" = load [20 x i8], [20 x i8]* %user + %"$msgobj_v_1803" = getelementptr i8, i8* %"$msgobj_1788", i32 65 + %"$msgobj_v_1804" = bitcast i8* %"$msgobj_v_1803" to [20 x i8]* + store [20 x i8] %"$user_1802", [20 x i8]* %"$msgobj_v_1804" + %"$msgobj_fname_1806" = getelementptr i8, i8* %"$msgobj_1788", i32 85 + %"$msgobj_fname_1807" = bitcast i8* %"$msgobj_fname_1806" to %String* + store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_1805", i32 0, i32 0), i32 8 }, %String* %"$msgobj_fname_1807" + %"$msgobj_td_1808" = getelementptr i8, i8* %"$msgobj_1788", i32 101 + %"$msgobj_td_1809" = bitcast i8* %"$msgobj_td_1808" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_1809" + %"$operator_1810" = load [20 x i8], [20 x i8]* %operator + %"$msgobj_v_1811" = getelementptr i8, i8* %"$msgobj_1788", i32 109 + %"$msgobj_v_1812" = bitcast i8* %"$msgobj_v_1811" to [20 x i8]* + store [20 x i8] %"$operator_1810", [20 x i8]* %"$msgobj_v_1812" + %"$msgobj_fname_1814" = getelementptr i8, i8* %"$msgobj_1788", i32 129 + %"$msgobj_fname_1815" = bitcast i8* %"$msgobj_fname_1814" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1813", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1815" + %"$msgobj_td_1816" = getelementptr i8, i8* %"$msgobj_1788", i32 145 + %"$msgobj_td_1817" = bitcast i8* %"$msgobj_td_1816" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_318", %_TyDescrTy_Typ** %"$msgobj_td_1817" + %"$msgobj_v_1818" = getelementptr i8, i8* %"$msgobj_1788", i32 153 + %"$msgobj_v_1819" = bitcast i8* %"$msgobj_v_1818" to %TName_Bool** + store %TName_Bool* %1, %TName_Bool** %"$msgobj_v_1819" + store i8* %"$msgobj_1788", i8** %"$retval_240" + %"$$retval_240_1821" = load i8*, i8** %"$retval_240" + ret i8* %"$$retval_240_1821" } -define internal { i8* (i8*, %TName_Bool*)*, i8* } @"$fundef_240"(%"$$fundef_240_env_417"* %0, [20 x i8]* %1) { +define internal { i8* (i8*, %TName_Bool*)*, i8* } @"$fundef_237"(%"$$fundef_237_env_414"* %0, [20 x i8]* %1) { entry: %operator = load [20 x i8], [20 x i8]* %1 - %"$$fundef_240_env_user_1237" = getelementptr inbounds %"$$fundef_240_env_417", %"$$fundef_240_env_417"* %0, i32 0, i32 0 - %"$user_envload_1238" = load [20 x i8], [20 x i8]* %"$$fundef_240_env_user_1237" + %"$$fundef_237_env_user_1764" = getelementptr inbounds %"$$fundef_237_env_414", %"$$fundef_237_env_414"* %0, i32 0, i32 0 + %"$user_envload_1765" = load [20 x i8], [20 x i8]* %"$$fundef_237_env_user_1764" %user = alloca [20 x i8] - store [20 x i8] %"$user_envload_1238", [20 x i8]* %user - %"$retval_241" = alloca { i8* (i8*, %TName_Bool*)*, i8* } - %"$$fundef_242_envp_1239_load" = load i8*, i8** @_execptr - %"$$fundef_242_envp_1239_salloc" = call i8* @_salloc(i8* %"$$fundef_242_envp_1239_load", i64 40) - %"$$fundef_242_envp_1239" = bitcast i8* %"$$fundef_242_envp_1239_salloc" to %"$$fundef_242_env_416"* - %"$$fundef_242_env_voidp_1241" = bitcast %"$$fundef_242_env_416"* %"$$fundef_242_envp_1239" to i8* - %"$$fundef_242_cloval_1242" = insertvalue { i8* (i8*, %TName_Bool*)*, i8* } { i8* (i8*, %TName_Bool*)* bitcast (i8* (%"$$fundef_242_env_416"*, %TName_Bool*)* @"$fundef_242" to i8* (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_242_env_voidp_1241", 1 - %"$$fundef_242_env_operator_1243" = getelementptr inbounds %"$$fundef_242_env_416", %"$$fundef_242_env_416"* %"$$fundef_242_envp_1239", i32 0, i32 0 - store [20 x i8] %operator, [20 x i8]* %"$$fundef_242_env_operator_1243" - %"$$fundef_242_env_user_1244" = getelementptr inbounds %"$$fundef_242_env_416", %"$$fundef_242_env_416"* %"$$fundef_242_envp_1239", i32 0, i32 1 - %"$user_1245" = load [20 x i8], [20 x i8]* %user - store [20 x i8] %"$user_1245", [20 x i8]* %"$$fundef_242_env_user_1244" - store { i8* (i8*, %TName_Bool*)*, i8* } %"$$fundef_242_cloval_1242", { i8* (i8*, %TName_Bool*)*, i8* }* %"$retval_241" - %"$$retval_241_1246" = load { i8* (i8*, %TName_Bool*)*, i8* }, { i8* (i8*, %TName_Bool*)*, i8* }* %"$retval_241" - ret { i8* (i8*, %TName_Bool*)*, i8* } %"$$retval_241_1246" + store [20 x i8] %"$user_envload_1765", [20 x i8]* %user + %"$retval_238" = alloca { i8* (i8*, %TName_Bool*)*, i8* } + %"$gasrem_1766" = load i64, i64* @_gasrem + %"$gascmp_1767" = icmp ugt i64 1, %"$gasrem_1766" + br i1 %"$gascmp_1767", label %"$out_of_gas_1768", label %"$have_gas_1769" + +"$out_of_gas_1768": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1769" + +"$have_gas_1769": ; preds = %"$out_of_gas_1768", %entry + %"$consume_1770" = sub i64 %"$gasrem_1766", 1 + store i64 %"$consume_1770", i64* @_gasrem + %"$$fundef_239_envp_1771_load" = load i8*, i8** @_execptr + %"$$fundef_239_envp_1771_salloc" = call i8* @_salloc(i8* %"$$fundef_239_envp_1771_load", i64 40) + %"$$fundef_239_envp_1771" = bitcast i8* %"$$fundef_239_envp_1771_salloc" to %"$$fundef_239_env_413"* + %"$$fundef_239_env_voidp_1773" = bitcast %"$$fundef_239_env_413"* %"$$fundef_239_envp_1771" to i8* + %"$$fundef_239_cloval_1774" = insertvalue { i8* (i8*, %TName_Bool*)*, i8* } { i8* (i8*, %TName_Bool*)* bitcast (i8* (%"$$fundef_239_env_413"*, %TName_Bool*)* @"$fundef_239" to i8* (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_239_env_voidp_1773", 1 + %"$$fundef_239_env_operator_1775" = getelementptr inbounds %"$$fundef_239_env_413", %"$$fundef_239_env_413"* %"$$fundef_239_envp_1771", i32 0, i32 0 + store [20 x i8] %operator, [20 x i8]* %"$$fundef_239_env_operator_1775" + %"$$fundef_239_env_user_1776" = getelementptr inbounds %"$$fundef_239_env_413", %"$$fundef_239_env_413"* %"$$fundef_239_envp_1771", i32 0, i32 1 + %"$user_1777" = load [20 x i8], [20 x i8]* %user + store [20 x i8] %"$user_1777", [20 x i8]* %"$$fundef_239_env_user_1776" + store { i8* (i8*, %TName_Bool*)*, i8* } %"$$fundef_239_cloval_1774", { i8* (i8*, %TName_Bool*)*, i8* }* %"$retval_238" + %"$$retval_238_1778" = load { i8* (i8*, %TName_Bool*)*, i8* }, { i8* (i8*, %TName_Bool*)*, i8* }* %"$retval_238" + ret { i8* (i8*, %TName_Bool*)*, i8* } %"$$retval_238_1778" } -define internal { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } @"$fundef_238"(%"$$fundef_238_env_418"* %0, [20 x i8]* %1) { +define internal { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } @"$fundef_235"(%"$$fundef_235_env_415"* %0, [20 x i8]* %1) { entry: %user = load [20 x i8], [20 x i8]* %1 - %"$retval_239" = alloca { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$$fundef_240_envp_1231_load" = load i8*, i8** @_execptr - %"$$fundef_240_envp_1231_salloc" = call i8* @_salloc(i8* %"$$fundef_240_envp_1231_load", i64 20) - %"$$fundef_240_envp_1231" = bitcast i8* %"$$fundef_240_envp_1231_salloc" to %"$$fundef_240_env_417"* - %"$$fundef_240_env_voidp_1233" = bitcast %"$$fundef_240_env_417"* %"$$fundef_240_envp_1231" to i8* - %"$$fundef_240_cloval_1234" = insertvalue { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ i8* (i8*, %TName_Bool*)*, i8* } (%"$$fundef_240_env_417"*, [20 x i8]*)* @"$fundef_240" to { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_240_env_voidp_1233", 1 - %"$$fundef_240_env_user_1235" = getelementptr inbounds %"$$fundef_240_env_417", %"$$fundef_240_env_417"* %"$$fundef_240_envp_1231", i32 0, i32 0 - store [20 x i8] %user, [20 x i8]* %"$$fundef_240_env_user_1235" - store { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$fundef_240_cloval_1234", { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_239" - %"$$retval_239_1236" = load { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_239" - ret { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$retval_239_1236" + %"$retval_236" = alloca { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } + %"$gasrem_1753" = load i64, i64* @_gasrem + %"$gascmp_1754" = icmp ugt i64 1, %"$gasrem_1753" + br i1 %"$gascmp_1754", label %"$out_of_gas_1755", label %"$have_gas_1756" + +"$out_of_gas_1755": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1756" + +"$have_gas_1756": ; preds = %"$out_of_gas_1755", %entry + %"$consume_1757" = sub i64 %"$gasrem_1753", 1 + store i64 %"$consume_1757", i64* @_gasrem + %"$$fundef_237_envp_1758_load" = load i8*, i8** @_execptr + %"$$fundef_237_envp_1758_salloc" = call i8* @_salloc(i8* %"$$fundef_237_envp_1758_load", i64 20) + %"$$fundef_237_envp_1758" = bitcast i8* %"$$fundef_237_envp_1758_salloc" to %"$$fundef_237_env_414"* + %"$$fundef_237_env_voidp_1760" = bitcast %"$$fundef_237_env_414"* %"$$fundef_237_envp_1758" to i8* + %"$$fundef_237_cloval_1761" = insertvalue { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ i8* (i8*, %TName_Bool*)*, i8* } (%"$$fundef_237_env_414"*, [20 x i8]*)* @"$fundef_237" to { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_237_env_voidp_1760", 1 + %"$$fundef_237_env_user_1762" = getelementptr inbounds %"$$fundef_237_env_414", %"$$fundef_237_env_414"* %"$$fundef_237_envp_1758", i32 0, i32 0 + store [20 x i8] %user, [20 x i8]* %"$$fundef_237_env_user_1762" + store { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$fundef_237_cloval_1761", { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_236" + %"$$retval_236_1763" = load { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_236" + ret { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$retval_236_1763" } -define internal i8* @"$fundef_246"(%"$$fundef_246_env_419"* %0, %TName_Bool* %1) { +define internal i8* @"$fundef_243"(%"$$fundef_243_env_416"* %0, %TName_Bool* %1) { entry: - %"$$fundef_246_env_address_1203" = getelementptr inbounds %"$$fundef_246_env_419", %"$$fundef_246_env_419"* %0, i32 0, i32 0 - %"$address_envload_1204" = load [20 x i8], [20 x i8]* %"$$fundef_246_env_address_1203" + %"$$fundef_243_env_address_1720" = getelementptr inbounds %"$$fundef_243_env_416", %"$$fundef_243_env_416"* %0, i32 0, i32 0 + %"$address_envload_1721" = load [20 x i8], [20 x i8]* %"$$fundef_243_env_address_1720" %address = alloca [20 x i8] - store [20 x i8] %"$address_envload_1204", [20 x i8]* %address - %"$retval_247" = alloca i8* - %"$msgobj_1205_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_1205_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1205_salloc_load", i64 117) - %"$msgobj_1205_salloc" = bitcast i8* %"$msgobj_1205_salloc_salloc" to [117 x i8]* - %"$msgobj_1205" = bitcast [117 x i8]* %"$msgobj_1205_salloc" to i8* - store i8 3, i8* %"$msgobj_1205" - %"$msgobj_fname_1207" = getelementptr i8, i8* %"$msgobj_1205", i32 1 - %"$msgobj_fname_1208" = bitcast i8* %"$msgobj_fname_1207" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1206", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1208" - %"$msgobj_td_1209" = getelementptr i8, i8* %"$msgobj_1205", i32 17 - %"$msgobj_td_1210" = bitcast i8* %"$msgobj_td_1209" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_1210" - %"$msgobj_v_1212" = getelementptr i8, i8* %"$msgobj_1205", i32 25 - %"$msgobj_v_1213" = bitcast i8* %"$msgobj_v_1212" to %String* - store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_1211", i32 0, i32 0), i32 8 }, %String* %"$msgobj_v_1213" - %"$msgobj_fname_1215" = getelementptr i8, i8* %"$msgobj_1205", i32 41 - %"$msgobj_fname_1216" = bitcast i8* %"$msgobj_fname_1215" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1214", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1216" - %"$msgobj_td_1217" = getelementptr i8, i8* %"$msgobj_1205", i32 57 - %"$msgobj_td_1218" = bitcast i8* %"$msgobj_td_1217" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_1218" - %"$address_1219" = load [20 x i8], [20 x i8]* %address - %"$msgobj_v_1220" = getelementptr i8, i8* %"$msgobj_1205", i32 65 - %"$msgobj_v_1221" = bitcast i8* %"$msgobj_v_1220" to [20 x i8]* - store [20 x i8] %"$address_1219", [20 x i8]* %"$msgobj_v_1221" - %"$msgobj_fname_1223" = getelementptr i8, i8* %"$msgobj_1205", i32 85 - %"$msgobj_fname_1224" = bitcast i8* %"$msgobj_fname_1223" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1222", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1224" - %"$msgobj_td_1225" = getelementptr i8, i8* %"$msgobj_1205", i32 101 - %"$msgobj_td_1226" = bitcast i8* %"$msgobj_td_1225" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_321", %_TyDescrTy_Typ** %"$msgobj_td_1226" - %"$msgobj_v_1227" = getelementptr i8, i8* %"$msgobj_1205", i32 109 - %"$msgobj_v_1228" = bitcast i8* %"$msgobj_v_1227" to %TName_Bool** - store %TName_Bool* %1, %TName_Bool** %"$msgobj_v_1228" - store i8* %"$msgobj_1205", i8** %"$retval_247" - %"$$retval_247_1230" = load i8*, i8** %"$retval_247" - ret i8* %"$$retval_247_1230" + store [20 x i8] %"$address_envload_1721", [20 x i8]* %address + %"$retval_244" = alloca i8* + %"$gasrem_1722" = load i64, i64* @_gasrem + %"$gascmp_1723" = icmp ugt i64 1, %"$gasrem_1722" + br i1 %"$gascmp_1723", label %"$out_of_gas_1724", label %"$have_gas_1725" + +"$out_of_gas_1724": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1725" + +"$have_gas_1725": ; preds = %"$out_of_gas_1724", %entry + %"$consume_1726" = sub i64 %"$gasrem_1722", 1 + store i64 %"$consume_1726", i64* @_gasrem + %"$msgobj_1727_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_1727_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1727_salloc_load", i64 117) + %"$msgobj_1727_salloc" = bitcast i8* %"$msgobj_1727_salloc_salloc" to [117 x i8]* + %"$msgobj_1727" = bitcast [117 x i8]* %"$msgobj_1727_salloc" to i8* + store i8 3, i8* %"$msgobj_1727" + %"$msgobj_fname_1729" = getelementptr i8, i8* %"$msgobj_1727", i32 1 + %"$msgobj_fname_1730" = bitcast i8* %"$msgobj_fname_1729" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1728", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1730" + %"$msgobj_td_1731" = getelementptr i8, i8* %"$msgobj_1727", i32 17 + %"$msgobj_td_1732" = bitcast i8* %"$msgobj_td_1731" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_1732" + %"$msgobj_v_1734" = getelementptr i8, i8* %"$msgobj_1727", i32 25 + %"$msgobj_v_1735" = bitcast i8* %"$msgobj_v_1734" to %String* + store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_1733", i32 0, i32 0), i32 8 }, %String* %"$msgobj_v_1735" + %"$msgobj_fname_1737" = getelementptr i8, i8* %"$msgobj_1727", i32 41 + %"$msgobj_fname_1738" = bitcast i8* %"$msgobj_fname_1737" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1736", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1738" + %"$msgobj_td_1739" = getelementptr i8, i8* %"$msgobj_1727", i32 57 + %"$msgobj_td_1740" = bitcast i8* %"$msgobj_td_1739" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_1740" + %"$address_1741" = load [20 x i8], [20 x i8]* %address + %"$msgobj_v_1742" = getelementptr i8, i8* %"$msgobj_1727", i32 65 + %"$msgobj_v_1743" = bitcast i8* %"$msgobj_v_1742" to [20 x i8]* + store [20 x i8] %"$address_1741", [20 x i8]* %"$msgobj_v_1743" + %"$msgobj_fname_1745" = getelementptr i8, i8* %"$msgobj_1727", i32 85 + %"$msgobj_fname_1746" = bitcast i8* %"$msgobj_fname_1745" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1744", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1746" + %"$msgobj_td_1747" = getelementptr i8, i8* %"$msgobj_1727", i32 101 + %"$msgobj_td_1748" = bitcast i8* %"$msgobj_td_1747" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_318", %_TyDescrTy_Typ** %"$msgobj_td_1748" + %"$msgobj_v_1749" = getelementptr i8, i8* %"$msgobj_1727", i32 109 + %"$msgobj_v_1750" = bitcast i8* %"$msgobj_v_1749" to %TName_Bool** + store %TName_Bool* %1, %TName_Bool** %"$msgobj_v_1750" + store i8* %"$msgobj_1727", i8** %"$retval_244" + %"$$retval_244_1752" = load i8*, i8** %"$retval_244" + ret i8* %"$$retval_244_1752" } -define internal { i8* (i8*, %TName_Bool*)*, i8* } @"$fundef_244"(%"$$fundef_244_env_420"* %0, [20 x i8]* %1) { +define internal { i8* (i8*, %TName_Bool*)*, i8* } @"$fundef_241"(%"$$fundef_241_env_417"* %0, [20 x i8]* %1) { entry: %address = load [20 x i8], [20 x i8]* %1 - %"$retval_245" = alloca { i8* (i8*, %TName_Bool*)*, i8* } - %"$$fundef_246_envp_1197_load" = load i8*, i8** @_execptr - %"$$fundef_246_envp_1197_salloc" = call i8* @_salloc(i8* %"$$fundef_246_envp_1197_load", i64 20) - %"$$fundef_246_envp_1197" = bitcast i8* %"$$fundef_246_envp_1197_salloc" to %"$$fundef_246_env_419"* - %"$$fundef_246_env_voidp_1199" = bitcast %"$$fundef_246_env_419"* %"$$fundef_246_envp_1197" to i8* - %"$$fundef_246_cloval_1200" = insertvalue { i8* (i8*, %TName_Bool*)*, i8* } { i8* (i8*, %TName_Bool*)* bitcast (i8* (%"$$fundef_246_env_419"*, %TName_Bool*)* @"$fundef_246" to i8* (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_246_env_voidp_1199", 1 - %"$$fundef_246_env_address_1201" = getelementptr inbounds %"$$fundef_246_env_419", %"$$fundef_246_env_419"* %"$$fundef_246_envp_1197", i32 0, i32 0 - store [20 x i8] %address, [20 x i8]* %"$$fundef_246_env_address_1201" - store { i8* (i8*, %TName_Bool*)*, i8* } %"$$fundef_246_cloval_1200", { i8* (i8*, %TName_Bool*)*, i8* }* %"$retval_245" - %"$$retval_245_1202" = load { i8* (i8*, %TName_Bool*)*, i8* }, { i8* (i8*, %TName_Bool*)*, i8* }* %"$retval_245" - ret { i8* (i8*, %TName_Bool*)*, i8* } %"$$retval_245_1202" + %"$retval_242" = alloca { i8* (i8*, %TName_Bool*)*, i8* } + %"$gasrem_1709" = load i64, i64* @_gasrem + %"$gascmp_1710" = icmp ugt i64 1, %"$gasrem_1709" + br i1 %"$gascmp_1710", label %"$out_of_gas_1711", label %"$have_gas_1712" + +"$out_of_gas_1711": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1712" + +"$have_gas_1712": ; preds = %"$out_of_gas_1711", %entry + %"$consume_1713" = sub i64 %"$gasrem_1709", 1 + store i64 %"$consume_1713", i64* @_gasrem + %"$$fundef_243_envp_1714_load" = load i8*, i8** @_execptr + %"$$fundef_243_envp_1714_salloc" = call i8* @_salloc(i8* %"$$fundef_243_envp_1714_load", i64 20) + %"$$fundef_243_envp_1714" = bitcast i8* %"$$fundef_243_envp_1714_salloc" to %"$$fundef_243_env_416"* + %"$$fundef_243_env_voidp_1716" = bitcast %"$$fundef_243_env_416"* %"$$fundef_243_envp_1714" to i8* + %"$$fundef_243_cloval_1717" = insertvalue { i8* (i8*, %TName_Bool*)*, i8* } { i8* (i8*, %TName_Bool*)* bitcast (i8* (%"$$fundef_243_env_416"*, %TName_Bool*)* @"$fundef_243" to i8* (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_243_env_voidp_1716", 1 + %"$$fundef_243_env_address_1718" = getelementptr inbounds %"$$fundef_243_env_416", %"$$fundef_243_env_416"* %"$$fundef_243_envp_1714", i32 0, i32 0 + store [20 x i8] %address, [20 x i8]* %"$$fundef_243_env_address_1718" + store { i8* (i8*, %TName_Bool*)*, i8* } %"$$fundef_243_cloval_1717", { i8* (i8*, %TName_Bool*)*, i8* }* %"$retval_242" + %"$$retval_242_1719" = load { i8* (i8*, %TName_Bool*)*, i8* }, { i8* (i8*, %TName_Bool*)*, i8* }* %"$retval_242" + ret { i8* (i8*, %TName_Bool*)*, i8* } %"$$retval_242_1719" } -define internal %TName_Bool* @"$fundef_250"(%"$$fundef_250_env_421"* %0, %TName_Bool* %1) { +define internal %TName_Bool* @"$fundef_247"(%"$$fundef_247_env_418"* %0, %TName_Bool* %1) { entry: - %"$$fundef_250_env_b1_1157" = getelementptr inbounds %"$$fundef_250_env_421", %"$$fundef_250_env_421"* %0, i32 0, i32 0 - %"$b1_envload_1158" = load %TName_Bool*, %TName_Bool** %"$$fundef_250_env_b1_1157" + %"$$fundef_247_env_b1_1634" = getelementptr inbounds %"$$fundef_247_env_418", %"$$fundef_247_env_418"* %0, i32 0, i32 0 + %"$b1_envload_1635" = load %TName_Bool*, %TName_Bool** %"$$fundef_247_env_b1_1634" %b1 = alloca %TName_Bool* - store %TName_Bool* %"$b1_envload_1158", %TName_Bool** %b1 - %"$retval_251" = alloca %TName_Bool* - %"$b1_1160" = load %TName_Bool*, %TName_Bool** %b1 - %"$b1_tag_1161" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b1_1160", i32 0, i32 0 - %"$b1_tag_1162" = load i8, i8* %"$b1_tag_1161" - switch i8 %"$b1_tag_1162", label %"$empty_default_1163" [ - i8 0, label %"$True_1164" - i8 1, label %"$False_1180" + store %TName_Bool* %"$b1_envload_1635", %TName_Bool** %b1 + %"$retval_248" = alloca %TName_Bool* + %"$gasrem_1636" = load i64, i64* @_gasrem + %"$gascmp_1637" = icmp ugt i64 2, %"$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", 2 + store i64 %"$consume_1640", i64* @_gasrem + %"$b1_1642" = load %TName_Bool*, %TName_Bool** %b1 + %"$b1_tag_1643" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b1_1642", i32 0, i32 0 + %"$b1_tag_1644" = load i8, i8* %"$b1_tag_1643" + switch i8 %"$b1_tag_1644", label %"$empty_default_1645" [ + i8 0, label %"$True_1646" + i8 1, label %"$False_1677" ] -"$True_1164": ; preds = %entry - %"$b1_1165" = bitcast %TName_Bool* %"$b1_1160" to %CName_True* - %"$b2_tag_1167" = getelementptr inbounds %TName_Bool, %TName_Bool* %1, i32 0, i32 0 - %"$b2_tag_1168" = load i8, i8* %"$b2_tag_1167" - switch i8 %"$b2_tag_1168", label %"$empty_default_1169" [ - i8 0, label %"$True_1170" - i8 1, label %"$False_1175" +"$True_1646": ; preds = %"$have_gas_1639" + %"$b1_1647" = bitcast %TName_Bool* %"$b1_1642" to %CName_True* + %"$gasrem_1648" = load i64, i64* @_gasrem + %"$gascmp_1649" = icmp ugt i64 2, %"$gasrem_1648" + br i1 %"$gascmp_1649", label %"$out_of_gas_1650", label %"$have_gas_1651" + +"$out_of_gas_1650": ; preds = %"$True_1646" + call void @_out_of_gas() + br label %"$have_gas_1651" + +"$have_gas_1651": ; preds = %"$out_of_gas_1650", %"$True_1646" + %"$consume_1652" = sub i64 %"$gasrem_1648", 2 + store i64 %"$consume_1652", i64* @_gasrem + %"$b2_tag_1654" = getelementptr inbounds %TName_Bool, %TName_Bool* %1, i32 0, i32 0 + %"$b2_tag_1655" = load i8, i8* %"$b2_tag_1654" + switch i8 %"$b2_tag_1655", label %"$empty_default_1656" [ + i8 0, label %"$True_1657" + i8 1, label %"$False_1667" ] -"$True_1170": ; preds = %"$True_1164" - %"$b2_1171" = bitcast %TName_Bool* %1 to %CName_True* - %"$adtval_1172_load" = load i8*, i8** @_execptr - %"$adtval_1172_salloc" = call i8* @_salloc(i8* %"$adtval_1172_load", i64 1) - %"$adtval_1172" = bitcast i8* %"$adtval_1172_salloc" to %CName_True* - %"$adtgep_1173" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_1172", i32 0, i32 0 - store i8 0, i8* %"$adtgep_1173" - %"$adtptr_1174" = bitcast %CName_True* %"$adtval_1172" to %TName_Bool* - store %TName_Bool* %"$adtptr_1174", %TName_Bool** %"$retval_251" - br label %"$matchsucc_1166" - -"$False_1175": ; preds = %"$True_1164" - %"$b2_1176" = bitcast %TName_Bool* %1 to %CName_False* - %"$adtval_1177_load" = load i8*, i8** @_execptr - %"$adtval_1177_salloc" = call i8* @_salloc(i8* %"$adtval_1177_load", i64 1) - %"$adtval_1177" = bitcast i8* %"$adtval_1177_salloc" to %CName_False* - %"$adtgep_1178" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_1177", i32 0, i32 0 - store i8 1, i8* %"$adtgep_1178" - %"$adtptr_1179" = bitcast %CName_False* %"$adtval_1177" to %TName_Bool* - store %TName_Bool* %"$adtptr_1179", %TName_Bool** %"$retval_251" - br label %"$matchsucc_1166" - -"$empty_default_1169": ; preds = %"$True_1164" - br label %"$matchsucc_1166" - -"$matchsucc_1166": ; preds = %"$False_1175", %"$True_1170", %"$empty_default_1169" - br label %"$matchsucc_1159" - -"$False_1180": ; preds = %entry - %"$b1_1181" = bitcast %TName_Bool* %"$b1_1160" to %CName_False* - %"$b2_tag_1183" = getelementptr inbounds %TName_Bool, %TName_Bool* %1, i32 0, i32 0 - %"$b2_tag_1184" = load i8, i8* %"$b2_tag_1183" - switch i8 %"$b2_tag_1184", label %"$empty_default_1185" [ - i8 0, label %"$True_1186" - i8 1, label %"$False_1191" +"$True_1657": ; preds = %"$have_gas_1651" + %"$b2_1658" = bitcast %TName_Bool* %1 to %CName_True* + %"$gasrem_1659" = load i64, i64* @_gasrem + %"$gascmp_1660" = icmp ugt i64 1, %"$gasrem_1659" + br i1 %"$gascmp_1660", label %"$out_of_gas_1661", label %"$have_gas_1662" + +"$out_of_gas_1661": ; preds = %"$True_1657" + call void @_out_of_gas() + br label %"$have_gas_1662" + +"$have_gas_1662": ; preds = %"$out_of_gas_1661", %"$True_1657" + %"$consume_1663" = sub i64 %"$gasrem_1659", 1 + store i64 %"$consume_1663", i64* @_gasrem + %"$adtval_1664_load" = load i8*, i8** @_execptr + %"$adtval_1664_salloc" = call i8* @_salloc(i8* %"$adtval_1664_load", i64 1) + %"$adtval_1664" = bitcast i8* %"$adtval_1664_salloc" to %CName_True* + %"$adtgep_1665" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_1664", i32 0, i32 0 + store i8 0, i8* %"$adtgep_1665" + %"$adtptr_1666" = bitcast %CName_True* %"$adtval_1664" to %TName_Bool* + store %TName_Bool* %"$adtptr_1666", %TName_Bool** %"$retval_248" + br label %"$matchsucc_1653" + +"$False_1667": ; preds = %"$have_gas_1651" + %"$b2_1668" = bitcast %TName_Bool* %1 to %CName_False* + %"$gasrem_1669" = load i64, i64* @_gasrem + %"$gascmp_1670" = icmp ugt i64 1, %"$gasrem_1669" + br i1 %"$gascmp_1670", label %"$out_of_gas_1671", label %"$have_gas_1672" + +"$out_of_gas_1671": ; preds = %"$False_1667" + call void @_out_of_gas() + br label %"$have_gas_1672" + +"$have_gas_1672": ; preds = %"$out_of_gas_1671", %"$False_1667" + %"$consume_1673" = sub i64 %"$gasrem_1669", 1 + store i64 %"$consume_1673", i64* @_gasrem + %"$adtval_1674_load" = load i8*, i8** @_execptr + %"$adtval_1674_salloc" = call i8* @_salloc(i8* %"$adtval_1674_load", i64 1) + %"$adtval_1674" = bitcast i8* %"$adtval_1674_salloc" to %CName_False* + %"$adtgep_1675" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_1674", i32 0, i32 0 + store i8 1, i8* %"$adtgep_1675" + %"$adtptr_1676" = bitcast %CName_False* %"$adtval_1674" to %TName_Bool* + store %TName_Bool* %"$adtptr_1676", %TName_Bool** %"$retval_248" + br label %"$matchsucc_1653" + +"$empty_default_1656": ; preds = %"$have_gas_1651" + br label %"$matchsucc_1653" + +"$matchsucc_1653": ; preds = %"$have_gas_1672", %"$have_gas_1662", %"$empty_default_1656" + br label %"$matchsucc_1641" + +"$False_1677": ; preds = %"$have_gas_1639" + %"$b1_1678" = bitcast %TName_Bool* %"$b1_1642" to %CName_False* + %"$gasrem_1679" = load i64, i64* @_gasrem + %"$gascmp_1680" = icmp ugt i64 2, %"$gasrem_1679" + br i1 %"$gascmp_1680", label %"$out_of_gas_1681", label %"$have_gas_1682" + +"$out_of_gas_1681": ; preds = %"$False_1677" + call void @_out_of_gas() + br label %"$have_gas_1682" + +"$have_gas_1682": ; preds = %"$out_of_gas_1681", %"$False_1677" + %"$consume_1683" = sub i64 %"$gasrem_1679", 2 + store i64 %"$consume_1683", i64* @_gasrem + %"$b2_tag_1685" = getelementptr inbounds %TName_Bool, %TName_Bool* %1, i32 0, i32 0 + %"$b2_tag_1686" = load i8, i8* %"$b2_tag_1685" + switch i8 %"$b2_tag_1686", label %"$empty_default_1687" [ + i8 0, label %"$True_1688" + i8 1, label %"$False_1698" ] -"$True_1186": ; preds = %"$False_1180" - %"$b2_1187" = bitcast %TName_Bool* %1 to %CName_True* - %"$adtval_1188_load" = load i8*, i8** @_execptr - %"$adtval_1188_salloc" = call i8* @_salloc(i8* %"$adtval_1188_load", i64 1) - %"$adtval_1188" = bitcast i8* %"$adtval_1188_salloc" to %CName_False* - %"$adtgep_1189" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_1188", i32 0, i32 0 - store i8 1, i8* %"$adtgep_1189" - %"$adtptr_1190" = bitcast %CName_False* %"$adtval_1188" to %TName_Bool* - store %TName_Bool* %"$adtptr_1190", %TName_Bool** %"$retval_251" - br label %"$matchsucc_1182" - -"$False_1191": ; preds = %"$False_1180" - %"$b2_1192" = bitcast %TName_Bool* %1 to %CName_False* - %"$adtval_1193_load" = load i8*, i8** @_execptr - %"$adtval_1193_salloc" = call i8* @_salloc(i8* %"$adtval_1193_load", i64 1) - %"$adtval_1193" = bitcast i8* %"$adtval_1193_salloc" to %CName_True* - %"$adtgep_1194" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_1193", i32 0, i32 0 - store i8 0, i8* %"$adtgep_1194" - %"$adtptr_1195" = bitcast %CName_True* %"$adtval_1193" to %TName_Bool* - store %TName_Bool* %"$adtptr_1195", %TName_Bool** %"$retval_251" - br label %"$matchsucc_1182" - -"$empty_default_1185": ; preds = %"$False_1180" - br label %"$matchsucc_1182" - -"$matchsucc_1182": ; preds = %"$False_1191", %"$True_1186", %"$empty_default_1185" - br label %"$matchsucc_1159" - -"$empty_default_1163": ; preds = %entry - br label %"$matchsucc_1159" - -"$matchsucc_1159": ; preds = %"$matchsucc_1182", %"$matchsucc_1166", %"$empty_default_1163" - %"$$retval_251_1196" = load %TName_Bool*, %TName_Bool** %"$retval_251" - ret %TName_Bool* %"$$retval_251_1196" +"$True_1688": ; preds = %"$have_gas_1682" + %"$b2_1689" = bitcast %TName_Bool* %1 to %CName_True* + %"$gasrem_1690" = load i64, i64* @_gasrem + %"$gascmp_1691" = icmp ugt i64 1, %"$gasrem_1690" + br i1 %"$gascmp_1691", label %"$out_of_gas_1692", label %"$have_gas_1693" + +"$out_of_gas_1692": ; preds = %"$True_1688" + call void @_out_of_gas() + br label %"$have_gas_1693" + +"$have_gas_1693": ; preds = %"$out_of_gas_1692", %"$True_1688" + %"$consume_1694" = sub i64 %"$gasrem_1690", 1 + store i64 %"$consume_1694", i64* @_gasrem + %"$adtval_1695_load" = load i8*, i8** @_execptr + %"$adtval_1695_salloc" = call i8* @_salloc(i8* %"$adtval_1695_load", i64 1) + %"$adtval_1695" = bitcast i8* %"$adtval_1695_salloc" to %CName_False* + %"$adtgep_1696" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_1695", i32 0, i32 0 + store i8 1, i8* %"$adtgep_1696" + %"$adtptr_1697" = bitcast %CName_False* %"$adtval_1695" to %TName_Bool* + store %TName_Bool* %"$adtptr_1697", %TName_Bool** %"$retval_248" + br label %"$matchsucc_1684" + +"$False_1698": ; preds = %"$have_gas_1682" + %"$b2_1699" = bitcast %TName_Bool* %1 to %CName_False* + %"$gasrem_1700" = load i64, i64* @_gasrem + %"$gascmp_1701" = icmp ugt i64 1, %"$gasrem_1700" + br i1 %"$gascmp_1701", label %"$out_of_gas_1702", label %"$have_gas_1703" + +"$out_of_gas_1702": ; preds = %"$False_1698" + call void @_out_of_gas() + br label %"$have_gas_1703" + +"$have_gas_1703": ; preds = %"$out_of_gas_1702", %"$False_1698" + %"$consume_1704" = sub i64 %"$gasrem_1700", 1 + store i64 %"$consume_1704", i64* @_gasrem + %"$adtval_1705_load" = load i8*, i8** @_execptr + %"$adtval_1705_salloc" = call i8* @_salloc(i8* %"$adtval_1705_load", i64 1) + %"$adtval_1705" = bitcast i8* %"$adtval_1705_salloc" to %CName_True* + %"$adtgep_1706" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_1705", i32 0, i32 0 + store i8 0, i8* %"$adtgep_1706" + %"$adtptr_1707" = bitcast %CName_True* %"$adtval_1705" to %TName_Bool* + store %TName_Bool* %"$adtptr_1707", %TName_Bool** %"$retval_248" + br label %"$matchsucc_1684" + +"$empty_default_1687": ; preds = %"$have_gas_1682" + br label %"$matchsucc_1684" + +"$matchsucc_1684": ; preds = %"$have_gas_1703", %"$have_gas_1693", %"$empty_default_1687" + br label %"$matchsucc_1641" + +"$empty_default_1645": ; preds = %"$have_gas_1639" + br label %"$matchsucc_1641" + +"$matchsucc_1641": ; preds = %"$matchsucc_1684", %"$matchsucc_1653", %"$empty_default_1645" + %"$$retval_248_1708" = load %TName_Bool*, %TName_Bool** %"$retval_248" + ret %TName_Bool* %"$$retval_248_1708" } -define internal { %TName_Bool* (i8*, %TName_Bool*)*, i8* } @"$fundef_248"(%"$$fundef_248_env_422"* %0, %TName_Bool* %1) { +define internal { %TName_Bool* (i8*, %TName_Bool*)*, i8* } @"$fundef_245"(%"$$fundef_245_env_419"* %0, %TName_Bool* %1) { entry: - %"$retval_249" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$$fundef_250_envp_1151_load" = load i8*, i8** @_execptr - %"$$fundef_250_envp_1151_salloc" = call i8* @_salloc(i8* %"$$fundef_250_envp_1151_load", i64 8) - %"$$fundef_250_envp_1151" = bitcast i8* %"$$fundef_250_envp_1151_salloc" to %"$$fundef_250_env_421"* - %"$$fundef_250_env_voidp_1153" = bitcast %"$$fundef_250_env_421"* %"$$fundef_250_envp_1151" to i8* - %"$$fundef_250_cloval_1154" = insertvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } { %TName_Bool* (i8*, %TName_Bool*)* bitcast (%TName_Bool* (%"$$fundef_250_env_421"*, %TName_Bool*)* @"$fundef_250" to %TName_Bool* (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_250_env_voidp_1153", 1 - %"$$fundef_250_env_b1_1155" = getelementptr inbounds %"$$fundef_250_env_421", %"$$fundef_250_env_421"* %"$$fundef_250_envp_1151", i32 0, i32 0 - store %TName_Bool* %1, %TName_Bool** %"$$fundef_250_env_b1_1155" - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$fundef_250_cloval_1154", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_249" - %"$$retval_249_1156" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_249" - ret { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$retval_249_1156" + %"$retval_246" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$gasrem_1623" = load i64, i64* @_gasrem + %"$gascmp_1624" = icmp ugt i64 1, %"$gasrem_1623" + br i1 %"$gascmp_1624", label %"$out_of_gas_1625", label %"$have_gas_1626" + +"$out_of_gas_1625": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1626" + +"$have_gas_1626": ; preds = %"$out_of_gas_1625", %entry + %"$consume_1627" = sub i64 %"$gasrem_1623", 1 + store i64 %"$consume_1627", i64* @_gasrem + %"$$fundef_247_envp_1628_load" = load i8*, i8** @_execptr + %"$$fundef_247_envp_1628_salloc" = call i8* @_salloc(i8* %"$$fundef_247_envp_1628_load", i64 8) + %"$$fundef_247_envp_1628" = bitcast i8* %"$$fundef_247_envp_1628_salloc" to %"$$fundef_247_env_418"* + %"$$fundef_247_env_voidp_1630" = bitcast %"$$fundef_247_env_418"* %"$$fundef_247_envp_1628" to i8* + %"$$fundef_247_cloval_1631" = insertvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } { %TName_Bool* (i8*, %TName_Bool*)* bitcast (%TName_Bool* (%"$$fundef_247_env_418"*, %TName_Bool*)* @"$fundef_247" to %TName_Bool* (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_247_env_voidp_1630", 1 + %"$$fundef_247_env_b1_1632" = getelementptr inbounds %"$$fundef_247_env_418", %"$$fundef_247_env_418"* %"$$fundef_247_envp_1628", i32 0, i32 0 + store %TName_Bool* %1, %TName_Bool** %"$$fundef_247_env_b1_1632" + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$fundef_247_cloval_1631", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_246" + %"$$retval_246_1633" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_246" + ret { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$retval_246_1633" } -define internal %TName_Bool* @"$fundef_256"(%"$$fundef_256_env_423"* %0, [20 x i8]* %1) { +define internal %TName_Bool* @"$fundef_253"(%"$$fundef_253_env_420"* %0, [20 x i8]* %1) { entry: %v = load [20 x i8], [20 x i8]* %1 - %"$$fundef_256_env_bs_1133" = getelementptr inbounds %"$$fundef_256_env_423", %"$$fundef_256_env_423"* %0, i32 0, i32 0 - %"$bs_envload_1134" = load [20 x i8], [20 x i8]* %"$$fundef_256_env_bs_1133" + %"$$fundef_253_env_bs_1595" = getelementptr inbounds %"$$fundef_253_env_420", %"$$fundef_253_env_420"* %0, i32 0, i32 0 + %"$bs_envload_1596" = load [20 x i8], [20 x i8]* %"$$fundef_253_env_bs_1595" %bs = alloca [20 x i8] - store [20 x i8] %"$bs_envload_1134", [20 x i8]* %bs - %"$$fundef_256_env_negb_1135" = getelementptr inbounds %"$$fundef_256_env_423", %"$$fundef_256_env_423"* %0, i32 0, i32 1 - %"$negb_envload_1136" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_256_env_negb_1135" + store [20 x i8] %"$bs_envload_1596", [20 x i8]* %bs + %"$$fundef_253_env_negb_1597" = getelementptr inbounds %"$$fundef_253_env_420", %"$$fundef_253_env_420"* %0, i32 0, i32 1 + %"$negb_envload_1598" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_253_env_negb_1597" %negb = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_envload_1136", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb - %"$retval_257" = alloca %TName_Bool* + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_envload_1598", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb + %"$retval_254" = alloca %TName_Bool* + %"$gasrem_1599" = load i64, i64* @_gasrem + %"$gascmp_1600" = icmp ugt i64 1, %"$gasrem_1599" + br i1 %"$gascmp_1600", label %"$out_of_gas_1601", label %"$have_gas_1602" + +"$out_of_gas_1601": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1602" + +"$have_gas_1602": ; preds = %"$out_of_gas_1601", %entry + %"$consume_1603" = sub i64 %"$gasrem_1599", 1 + store i64 %"$consume_1603", i64* @_gasrem %b = alloca %TName_Bool* - %"$execptr_load_1137" = load i8*, i8** @_execptr - %"$eq_v_1138" = alloca [20 x i8] - store [20 x i8] %v, [20 x i8]* %"$eq_v_1138" - %"$$eq_v_1138_1139" = bitcast [20 x i8]* %"$eq_v_1138" to i8* - %"$eq_bs_1140" = alloca [20 x i8] - %"$bs_1141" = load [20 x i8], [20 x i8]* %bs - store [20 x i8] %"$bs_1141", [20 x i8]* %"$eq_bs_1140" - %"$$eq_bs_1140_1142" = bitcast [20 x i8]* %"$eq_bs_1140" to i8* - %"$eq_call_1143" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_1137", i32 20, i8* %"$$eq_v_1138_1139", i8* %"$$eq_bs_1140_1142") - store %TName_Bool* %"$eq_call_1143", %TName_Bool** %b - %"$negb_36" = alloca %TName_Bool* - %"$negb_1144" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb - %"$negb_fptr_1145" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_1144", 0 - %"$negb_envptr_1146" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_1144", 1 - %"$b_1147" = load %TName_Bool*, %TName_Bool** %b - %"$negb_call_1148" = call %TName_Bool* %"$negb_fptr_1145"(i8* %"$negb_envptr_1146", %TName_Bool* %"$b_1147") - store %TName_Bool* %"$negb_call_1148", %TName_Bool** %"$negb_36" - %"$$negb_36_1149" = load %TName_Bool*, %TName_Bool** %"$negb_36" - store %TName_Bool* %"$$negb_36_1149", %TName_Bool** %"$retval_257" - %"$$retval_257_1150" = load %TName_Bool*, %TName_Bool** %"$retval_257" - ret %TName_Bool* %"$$retval_257_1150" + %"$execptr_load_1604" = load i8*, i8** @_execptr + %"$eq_v_1605" = alloca [20 x i8] + store [20 x i8] %v, [20 x i8]* %"$eq_v_1605" + %"$$eq_v_1605_1606" = bitcast [20 x i8]* %"$eq_v_1605" to i8* + %"$eq_bs_1607" = alloca [20 x i8] + %"$bs_1608" = load [20 x i8], [20 x i8]* %bs + store [20 x i8] %"$bs_1608", [20 x i8]* %"$eq_bs_1607" + %"$$eq_bs_1607_1609" = bitcast [20 x i8]* %"$eq_bs_1607" to i8* + %"$eq_call_1610" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_1604", i32 20, i8* %"$$eq_v_1605_1606", i8* %"$$eq_bs_1607_1609") + store %TName_Bool* %"$eq_call_1610", %TName_Bool** %b + %"$gasrem_1611" = load i64, i64* @_gasrem + %"$gascmp_1612" = icmp ugt i64 1, %"$gasrem_1611" + br i1 %"$gascmp_1612", label %"$out_of_gas_1613", label %"$have_gas_1614" + +"$out_of_gas_1613": ; preds = %"$have_gas_1602" + call void @_out_of_gas() + br label %"$have_gas_1614" + +"$have_gas_1614": ; preds = %"$out_of_gas_1613", %"$have_gas_1602" + %"$consume_1615" = sub i64 %"$gasrem_1611", 1 + store i64 %"$consume_1615", i64* @_gasrem + %"$negb_33" = alloca %TName_Bool* + %"$negb_1616" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb + %"$negb_fptr_1617" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_1616", 0 + %"$negb_envptr_1618" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_1616", 1 + %"$b_1619" = load %TName_Bool*, %TName_Bool** %b + %"$negb_call_1620" = call %TName_Bool* %"$negb_fptr_1617"(i8* %"$negb_envptr_1618", %TName_Bool* %"$b_1619") + store %TName_Bool* %"$negb_call_1620", %TName_Bool** %"$negb_33" + %"$$negb_33_1621" = load %TName_Bool*, %TName_Bool** %"$negb_33" + store %TName_Bool* %"$$negb_33_1621", %TName_Bool** %"$retval_254" + %"$$retval_254_1622" = load %TName_Bool*, %TName_Bool** %"$retval_254" + ret %TName_Bool* %"$$retval_254_1622" } -define internal %TName_List_ByStr20* @"$fundef_254"(%"$$fundef_254_env_424"* %0, [20 x i8]* %1) { +define internal %TName_List_ByStr20* @"$fundef_251"(%"$$fundef_251_env_421"* %0, [20 x i8]* %1) { entry: %bs = load [20 x i8], [20 x i8]* %1 - %"$$fundef_254_env_list_1101" = getelementptr inbounds %"$$fundef_254_env_424", %"$$fundef_254_env_424"* %0, i32 0, i32 0 - %"$list_envload_1102" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$$fundef_254_env_list_1101" + %"$$fundef_251_env_list_1538" = getelementptr inbounds %"$$fundef_251_env_421", %"$$fundef_251_env_421"* %0, i32 0, i32 0 + %"$list_envload_1539" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$$fundef_251_env_list_1538" %list = alloca %TName_List_ByStr20* - store %TName_List_ByStr20* %"$list_envload_1102", %TName_List_ByStr20** %list - %"$$fundef_254_env_list_filter_1103" = getelementptr inbounds %"$$fundef_254_env_424", %"$$fundef_254_env_424"* %0, i32 0, i32 1 - %"$list_filter_envload_1104" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_254_env_list_filter_1103" + store %TName_List_ByStr20* %"$list_envload_1539", %TName_List_ByStr20** %list + %"$$fundef_251_env_list_filter_1540" = getelementptr inbounds %"$$fundef_251_env_421", %"$$fundef_251_env_421"* %0, i32 0, i32 1 + %"$list_filter_envload_1541" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_251_env_list_filter_1540" %list_filter = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_filter_envload_1104", { i8*, i8* }** %list_filter - %"$$fundef_254_env_negb_1105" = getelementptr inbounds %"$$fundef_254_env_424", %"$$fundef_254_env_424"* %0, i32 0, i32 2 - %"$negb_envload_1106" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_254_env_negb_1105" + store { i8*, i8* }* %"$list_filter_envload_1541", { i8*, i8* }** %list_filter + %"$$fundef_251_env_negb_1542" = getelementptr inbounds %"$$fundef_251_env_421", %"$$fundef_251_env_421"* %0, i32 0, i32 2 + %"$negb_envload_1543" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_251_env_negb_1542" %negb = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_envload_1106", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb - %"$retval_255" = alloca %TName_List_ByStr20* + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_envload_1543", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb + %"$retval_252" = alloca %TName_List_ByStr20* + %"$gasrem_1544" = load i64, i64* @_gasrem + %"$gascmp_1545" = icmp ugt i64 1, %"$gasrem_1544" + br i1 %"$gascmp_1545", label %"$out_of_gas_1546", label %"$have_gas_1547" + +"$out_of_gas_1546": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1547" + +"$have_gas_1547": ; preds = %"$out_of_gas_1546", %entry + %"$consume_1548" = sub i64 %"$gasrem_1544", 1 + store i64 %"$consume_1548", i64* @_gasrem %listByStr20Filter = alloca { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } - %"$list_filter_1107" = load { i8*, i8* }*, { i8*, i8* }** %list_filter - %"$list_filter_1108" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_filter_1107", i32 0 - %"$list_filter_1109" = bitcast { i8*, i8* }* %"$list_filter_1108" to { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* - %"$list_filter_1110" = load { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }, { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_filter_1109" - %"$list_filter_fptr_1111" = extractvalue { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_filter_1110", 0 - %"$list_filter_envptr_1112" = extractvalue { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_filter_1110", 1 - %"$list_filter_call_1113" = call { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_filter_fptr_1111"(i8* %"$list_filter_envptr_1112") - store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_filter_call_1113", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %listByStr20Filter + %"$gasrem_1549" = load i64, i64* @_gasrem + %"$gascmp_1550" = icmp ugt i64 1, %"$gasrem_1549" + br i1 %"$gascmp_1550", label %"$out_of_gas_1551", label %"$have_gas_1552" + +"$out_of_gas_1551": ; preds = %"$have_gas_1547" + call void @_out_of_gas() + br label %"$have_gas_1552" + +"$have_gas_1552": ; preds = %"$out_of_gas_1551", %"$have_gas_1547" + %"$consume_1553" = sub i64 %"$gasrem_1549", 1 + store i64 %"$consume_1553", i64* @_gasrem + %"$list_filter_1554" = load { i8*, i8* }*, { i8*, i8* }** %list_filter + %"$list_filter_1555" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_filter_1554", i32 0 + %"$list_filter_1556" = bitcast { i8*, i8* }* %"$list_filter_1555" to { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* + %"$list_filter_1557" = load { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }, { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_filter_1556" + %"$list_filter_fptr_1558" = extractvalue { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_filter_1557", 0 + %"$list_filter_envptr_1559" = extractvalue { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_filter_1557", 1 + %"$list_filter_call_1560" = call { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_filter_fptr_1558"(i8* %"$list_filter_envptr_1559") + store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_filter_call_1560", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %listByStr20Filter + %"$gasrem_1561" = load i64, i64* @_gasrem + %"$gascmp_1562" = icmp ugt i64 1, %"$gasrem_1561" + br i1 %"$gascmp_1562", label %"$out_of_gas_1563", label %"$have_gas_1564" + +"$out_of_gas_1563": ; preds = %"$have_gas_1552" + call void @_out_of_gas() + br label %"$have_gas_1564" + +"$have_gas_1564": ; preds = %"$out_of_gas_1563", %"$have_gas_1552" + %"$consume_1565" = sub i64 %"$gasrem_1561", 1 + store i64 %"$consume_1565", i64* @_gasrem %fn = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - %"$$fundef_256_envp_1114_load" = load i8*, i8** @_execptr - %"$$fundef_256_envp_1114_salloc" = call i8* @_salloc(i8* %"$$fundef_256_envp_1114_load", i64 40) - %"$$fundef_256_envp_1114" = bitcast i8* %"$$fundef_256_envp_1114_salloc" to %"$$fundef_256_env_423"* - %"$$fundef_256_env_voidp_1116" = bitcast %"$$fundef_256_env_423"* %"$$fundef_256_envp_1114" to i8* - %"$$fundef_256_cloval_1117" = insertvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } { %TName_Bool* (i8*, [20 x i8]*)* bitcast (%TName_Bool* (%"$$fundef_256_env_423"*, [20 x i8]*)* @"$fundef_256" to %TName_Bool* (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_256_env_voidp_1116", 1 - %"$$fundef_256_env_bs_1118" = getelementptr inbounds %"$$fundef_256_env_423", %"$$fundef_256_env_423"* %"$$fundef_256_envp_1114", i32 0, i32 0 - store [20 x i8] %bs, [20 x i8]* %"$$fundef_256_env_bs_1118" - %"$$fundef_256_env_negb_1119" = getelementptr inbounds %"$$fundef_256_env_423", %"$$fundef_256_env_423"* %"$$fundef_256_envp_1114", i32 0, i32 1 - %"$negb_1120" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_1120", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_256_env_negb_1119" - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$fundef_256_cloval_1117", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %fn - %"$listByStr20Filter_37" = alloca { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } - %"$listByStr20Filter_1121" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %listByStr20Filter - %"$listByStr20Filter_fptr_1122" = extractvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$listByStr20Filter_1121", 0 - %"$listByStr20Filter_envptr_1123" = extractvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$listByStr20Filter_1121", 1 - %"$fn_1124" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %fn - %"$listByStr20Filter_call_1125" = call { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Filter_fptr_1122"(i8* %"$listByStr20Filter_envptr_1123", { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$fn_1124") - store { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Filter_call_1125", { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$listByStr20Filter_37" - %"$listByStr20Filter_38" = alloca %TName_List_ByStr20* - %"$$listByStr20Filter_37_1126" = load { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$listByStr20Filter_37" - %"$$listByStr20Filter_37_fptr_1127" = extractvalue { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$listByStr20Filter_37_1126", 0 - %"$$listByStr20Filter_37_envptr_1128" = extractvalue { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$listByStr20Filter_37_1126", 1 - %"$list_1129" = load %TName_List_ByStr20*, %TName_List_ByStr20** %list - %"$$listByStr20Filter_37_call_1130" = call %TName_List_ByStr20* %"$$listByStr20Filter_37_fptr_1127"(i8* %"$$listByStr20Filter_37_envptr_1128", %TName_List_ByStr20* %"$list_1129") - store %TName_List_ByStr20* %"$$listByStr20Filter_37_call_1130", %TName_List_ByStr20** %"$listByStr20Filter_38" - %"$$listByStr20Filter_38_1131" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$listByStr20Filter_38" - store %TName_List_ByStr20* %"$$listByStr20Filter_38_1131", %TName_List_ByStr20** %"$retval_255" - %"$$retval_255_1132" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$retval_255" - ret %TName_List_ByStr20* %"$$retval_255_1132" + %"$gasrem_1566" = load i64, i64* @_gasrem + %"$gascmp_1567" = icmp ugt i64 1, %"$gasrem_1566" + br i1 %"$gascmp_1567", label %"$out_of_gas_1568", label %"$have_gas_1569" + +"$out_of_gas_1568": ; preds = %"$have_gas_1564" + call void @_out_of_gas() + br label %"$have_gas_1569" + +"$have_gas_1569": ; preds = %"$out_of_gas_1568", %"$have_gas_1564" + %"$consume_1570" = sub i64 %"$gasrem_1566", 1 + store i64 %"$consume_1570", i64* @_gasrem + %"$$fundef_253_envp_1571_load" = load i8*, i8** @_execptr + %"$$fundef_253_envp_1571_salloc" = call i8* @_salloc(i8* %"$$fundef_253_envp_1571_load", i64 40) + %"$$fundef_253_envp_1571" = bitcast i8* %"$$fundef_253_envp_1571_salloc" to %"$$fundef_253_env_420"* + %"$$fundef_253_env_voidp_1573" = bitcast %"$$fundef_253_env_420"* %"$$fundef_253_envp_1571" to i8* + %"$$fundef_253_cloval_1574" = insertvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } { %TName_Bool* (i8*, [20 x i8]*)* bitcast (%TName_Bool* (%"$$fundef_253_env_420"*, [20 x i8]*)* @"$fundef_253" to %TName_Bool* (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_253_env_voidp_1573", 1 + %"$$fundef_253_env_bs_1575" = getelementptr inbounds %"$$fundef_253_env_420", %"$$fundef_253_env_420"* %"$$fundef_253_envp_1571", i32 0, i32 0 + store [20 x i8] %bs, [20 x i8]* %"$$fundef_253_env_bs_1575" + %"$$fundef_253_env_negb_1576" = getelementptr inbounds %"$$fundef_253_env_420", %"$$fundef_253_env_420"* %"$$fundef_253_envp_1571", i32 0, i32 1 + %"$negb_1577" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_1577", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_253_env_negb_1576" + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$fundef_253_cloval_1574", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %fn + %"$gasrem_1578" = load i64, i64* @_gasrem + %"$gascmp_1579" = icmp ugt i64 1, %"$gasrem_1578" + br i1 %"$gascmp_1579", label %"$out_of_gas_1580", label %"$have_gas_1581" + +"$out_of_gas_1580": ; preds = %"$have_gas_1569" + call void @_out_of_gas() + br label %"$have_gas_1581" + +"$have_gas_1581": ; preds = %"$out_of_gas_1580", %"$have_gas_1569" + %"$consume_1582" = sub i64 %"$gasrem_1578", 1 + store i64 %"$consume_1582", i64* @_gasrem + %"$listByStr20Filter_34" = alloca { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } + %"$listByStr20Filter_1583" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %listByStr20Filter + %"$listByStr20Filter_fptr_1584" = extractvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$listByStr20Filter_1583", 0 + %"$listByStr20Filter_envptr_1585" = extractvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$listByStr20Filter_1583", 1 + %"$fn_1586" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %fn + %"$listByStr20Filter_call_1587" = call { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Filter_fptr_1584"(i8* %"$listByStr20Filter_envptr_1585", { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$fn_1586") + store { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Filter_call_1587", { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$listByStr20Filter_34" + %"$listByStr20Filter_35" = alloca %TName_List_ByStr20* + %"$$listByStr20Filter_34_1588" = load { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$listByStr20Filter_34" + %"$$listByStr20Filter_34_fptr_1589" = extractvalue { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$listByStr20Filter_34_1588", 0 + %"$$listByStr20Filter_34_envptr_1590" = extractvalue { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$listByStr20Filter_34_1588", 1 + %"$list_1591" = load %TName_List_ByStr20*, %TName_List_ByStr20** %list + %"$$listByStr20Filter_34_call_1592" = call %TName_List_ByStr20* %"$$listByStr20Filter_34_fptr_1589"(i8* %"$$listByStr20Filter_34_envptr_1590", %TName_List_ByStr20* %"$list_1591") + store %TName_List_ByStr20* %"$$listByStr20Filter_34_call_1592", %TName_List_ByStr20** %"$listByStr20Filter_35" + %"$$listByStr20Filter_35_1593" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$listByStr20Filter_35" + store %TName_List_ByStr20* %"$$listByStr20Filter_35_1593", %TName_List_ByStr20** %"$retval_252" + %"$$retval_252_1594" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$retval_252" + ret %TName_List_ByStr20* %"$$retval_252_1594" } -define internal { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } @"$fundef_252"(%"$$fundef_252_env_425"* %0, %TName_List_ByStr20* %1) { +define internal { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } @"$fundef_249"(%"$$fundef_249_env_422"* %0, %TName_List_ByStr20* %1) { entry: - %"$$fundef_252_env_list_filter_1087" = getelementptr inbounds %"$$fundef_252_env_425", %"$$fundef_252_env_425"* %0, i32 0, i32 0 - %"$list_filter_envload_1088" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_252_env_list_filter_1087" + %"$$fundef_249_env_list_filter_1519" = getelementptr inbounds %"$$fundef_249_env_422", %"$$fundef_249_env_422"* %0, i32 0, i32 0 + %"$list_filter_envload_1520" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_249_env_list_filter_1519" %list_filter = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_filter_envload_1088", { i8*, i8* }** %list_filter - %"$$fundef_252_env_negb_1089" = getelementptr inbounds %"$$fundef_252_env_425", %"$$fundef_252_env_425"* %0, i32 0, i32 1 - %"$negb_envload_1090" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_252_env_negb_1089" + store { i8*, i8* }* %"$list_filter_envload_1520", { i8*, i8* }** %list_filter + %"$$fundef_249_env_negb_1521" = getelementptr inbounds %"$$fundef_249_env_422", %"$$fundef_249_env_422"* %0, i32 0, i32 1 + %"$negb_envload_1522" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_249_env_negb_1521" %negb = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_envload_1090", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb - %"$retval_253" = alloca { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } - %"$$fundef_254_envp_1091_load" = load i8*, i8** @_execptr - %"$$fundef_254_envp_1091_salloc" = call i8* @_salloc(i8* %"$$fundef_254_envp_1091_load", i64 32) - %"$$fundef_254_envp_1091" = bitcast i8* %"$$fundef_254_envp_1091_salloc" to %"$$fundef_254_env_424"* - %"$$fundef_254_env_voidp_1093" = bitcast %"$$fundef_254_env_424"* %"$$fundef_254_envp_1091" to i8* - %"$$fundef_254_cloval_1094" = insertvalue { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } { %TName_List_ByStr20* (i8*, [20 x i8]*)* bitcast (%TName_List_ByStr20* (%"$$fundef_254_env_424"*, [20 x i8]*)* @"$fundef_254" to %TName_List_ByStr20* (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_254_env_voidp_1093", 1 - %"$$fundef_254_env_list_1095" = getelementptr inbounds %"$$fundef_254_env_424", %"$$fundef_254_env_424"* %"$$fundef_254_envp_1091", i32 0, i32 0 - store %TName_List_ByStr20* %1, %TName_List_ByStr20** %"$$fundef_254_env_list_1095" - %"$$fundef_254_env_list_filter_1096" = getelementptr inbounds %"$$fundef_254_env_424", %"$$fundef_254_env_424"* %"$$fundef_254_envp_1091", i32 0, i32 1 - %"$list_filter_1097" = load { i8*, i8* }*, { i8*, i8* }** %list_filter - store { i8*, i8* }* %"$list_filter_1097", { i8*, i8* }** %"$$fundef_254_env_list_filter_1096" - %"$$fundef_254_env_negb_1098" = getelementptr inbounds %"$$fundef_254_env_424", %"$$fundef_254_env_424"* %"$$fundef_254_envp_1091", i32 0, i32 2 - %"$negb_1099" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_1099", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_254_env_negb_1098" - store { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$fundef_254_cloval_1094", { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$retval_253" - %"$$retval_253_1100" = load { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* }, { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$retval_253" - ret { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$retval_253_1100" + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_envload_1522", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb + %"$retval_250" = alloca { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } + %"$gasrem_1523" = load i64, i64* @_gasrem + %"$gascmp_1524" = icmp ugt i64 1, %"$gasrem_1523" + br i1 %"$gascmp_1524", label %"$out_of_gas_1525", label %"$have_gas_1526" + +"$out_of_gas_1525": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1526" + +"$have_gas_1526": ; preds = %"$out_of_gas_1525", %entry + %"$consume_1527" = sub i64 %"$gasrem_1523", 1 + store i64 %"$consume_1527", i64* @_gasrem + %"$$fundef_251_envp_1528_load" = load i8*, i8** @_execptr + %"$$fundef_251_envp_1528_salloc" = call i8* @_salloc(i8* %"$$fundef_251_envp_1528_load", i64 32) + %"$$fundef_251_envp_1528" = bitcast i8* %"$$fundef_251_envp_1528_salloc" to %"$$fundef_251_env_421"* + %"$$fundef_251_env_voidp_1530" = bitcast %"$$fundef_251_env_421"* %"$$fundef_251_envp_1528" to i8* + %"$$fundef_251_cloval_1531" = insertvalue { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } { %TName_List_ByStr20* (i8*, [20 x i8]*)* bitcast (%TName_List_ByStr20* (%"$$fundef_251_env_421"*, [20 x i8]*)* @"$fundef_251" to %TName_List_ByStr20* (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_251_env_voidp_1530", 1 + %"$$fundef_251_env_list_1532" = getelementptr inbounds %"$$fundef_251_env_421", %"$$fundef_251_env_421"* %"$$fundef_251_envp_1528", i32 0, i32 0 + store %TName_List_ByStr20* %1, %TName_List_ByStr20** %"$$fundef_251_env_list_1532" + %"$$fundef_251_env_list_filter_1533" = getelementptr inbounds %"$$fundef_251_env_421", %"$$fundef_251_env_421"* %"$$fundef_251_envp_1528", i32 0, i32 1 + %"$list_filter_1534" = load { i8*, i8* }*, { i8*, i8* }** %list_filter + store { i8*, i8* }* %"$list_filter_1534", { i8*, i8* }** %"$$fundef_251_env_list_filter_1533" + %"$$fundef_251_env_negb_1535" = getelementptr inbounds %"$$fundef_251_env_421", %"$$fundef_251_env_421"* %"$$fundef_251_envp_1528", i32 0, i32 2 + %"$negb_1536" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_1536", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_251_env_negb_1535" + store { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$fundef_251_cloval_1531", { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$retval_250" + %"$$retval_250_1537" = load { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* }, { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$retval_250" + ret { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$retval_250_1537" } -define internal %TName_Bool* @"$fundef_260"(%"$$fundef_260_env_426"* %0, [20 x i8]* %1) { +define internal %TName_Bool* @"$fundef_257"(%"$$fundef_257_env_423"* %0, [20 x i8]* %1) { entry: %bs = load [20 x i8], [20 x i8]* %1 - %"$$fundef_260_env_list_1063" = getelementptr inbounds %"$$fundef_260_env_426", %"$$fundef_260_env_426"* %0, i32 0, i32 0 - %"$list_envload_1064" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$$fundef_260_env_list_1063" + %"$$fundef_257_env_list_1480" = getelementptr inbounds %"$$fundef_257_env_423", %"$$fundef_257_env_423"* %0, i32 0, i32 0 + %"$list_envload_1481" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$$fundef_257_env_list_1480" %list = alloca %TName_List_ByStr20* - store %TName_List_ByStr20* %"$list_envload_1064", %TName_List_ByStr20** %list - %"$$fundef_260_env_listByStr20Contains_1065" = getelementptr inbounds %"$$fundef_260_env_426", %"$$fundef_260_env_426"* %0, i32 0, i32 1 - %"$listByStr20Contains_envload_1066" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_260_env_listByStr20Contains_1065" + store %TName_List_ByStr20* %"$list_envload_1481", %TName_List_ByStr20** %list + %"$$fundef_257_env_listByStr20Contains_1482" = getelementptr inbounds %"$$fundef_257_env_423", %"$$fundef_257_env_423"* %0, i32 0, i32 1 + %"$listByStr20Contains_envload_1483" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_257_env_listByStr20Contains_1482" %listByStr20Contains = alloca { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_envload_1066", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains - %"$$fundef_260_env_negb_1067" = getelementptr inbounds %"$$fundef_260_env_426", %"$$fundef_260_env_426"* %0, i32 0, i32 2 - %"$negb_envload_1068" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_260_env_negb_1067" + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_envload_1483", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains + %"$$fundef_257_env_negb_1484" = getelementptr inbounds %"$$fundef_257_env_423", %"$$fundef_257_env_423"* %0, i32 0, i32 2 + %"$negb_envload_1485" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_257_env_negb_1484" %negb = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_envload_1068", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb - %"$retval_261" = alloca %TName_Bool* + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_envload_1485", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb + %"$retval_258" = alloca %TName_Bool* + %"$gasrem_1486" = load i64, i64* @_gasrem + %"$gascmp_1487" = icmp ugt i64 1, %"$gasrem_1486" + br i1 %"$gascmp_1487", label %"$out_of_gas_1488", label %"$have_gas_1489" + +"$out_of_gas_1488": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1489" + +"$have_gas_1489": ; preds = %"$out_of_gas_1488", %entry + %"$consume_1490" = sub i64 %"$gasrem_1486", 1 + store i64 %"$consume_1490", i64* @_gasrem %b = alloca %TName_Bool* - %"$listByStr20Contains_33" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - %"$listByStr20Contains_1069" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains - %"$listByStr20Contains_fptr_1070" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_1069", 0 - %"$listByStr20Contains_envptr_1071" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_1069", 1 - %"$list_1072" = load %TName_List_ByStr20*, %TName_List_ByStr20** %list - %"$listByStr20Contains_call_1073" = call { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_fptr_1070"(i8* %"$listByStr20Contains_envptr_1071", %TName_List_ByStr20* %"$list_1072") - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_call_1073", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_33" - %"$listByStr20Contains_34" = alloca %TName_Bool* - %"$$listByStr20Contains_33_1074" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_33" - %"$$listByStr20Contains_33_fptr_1075" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_33_1074", 0 - %"$$listByStr20Contains_33_envptr_1076" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_33_1074", 1 - %"$$listByStr20Contains_33_bs_1077" = alloca [20 x i8] - store [20 x i8] %bs, [20 x i8]* %"$$listByStr20Contains_33_bs_1077" - %"$$listByStr20Contains_33_call_1078" = call %TName_Bool* %"$$listByStr20Contains_33_fptr_1075"(i8* %"$$listByStr20Contains_33_envptr_1076", [20 x i8]* %"$$listByStr20Contains_33_bs_1077") - store %TName_Bool* %"$$listByStr20Contains_33_call_1078", %TName_Bool** %"$listByStr20Contains_34" - %"$$listByStr20Contains_34_1079" = load %TName_Bool*, %TName_Bool** %"$listByStr20Contains_34" - store %TName_Bool* %"$$listByStr20Contains_34_1079", %TName_Bool** %b - %"$negb_35" = alloca %TName_Bool* - %"$negb_1080" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb - %"$negb_fptr_1081" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_1080", 0 - %"$negb_envptr_1082" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_1080", 1 - %"$b_1083" = load %TName_Bool*, %TName_Bool** %b - %"$negb_call_1084" = call %TName_Bool* %"$negb_fptr_1081"(i8* %"$negb_envptr_1082", %TName_Bool* %"$b_1083") - store %TName_Bool* %"$negb_call_1084", %TName_Bool** %"$negb_35" - %"$$negb_35_1085" = load %TName_Bool*, %TName_Bool** %"$negb_35" - store %TName_Bool* %"$$negb_35_1085", %TName_Bool** %"$retval_261" - %"$$retval_261_1086" = load %TName_Bool*, %TName_Bool** %"$retval_261" - ret %TName_Bool* %"$$retval_261_1086" + %"$gasrem_1491" = load i64, i64* @_gasrem + %"$gascmp_1492" = icmp ugt i64 1, %"$gasrem_1491" + br i1 %"$gascmp_1492", label %"$out_of_gas_1493", label %"$have_gas_1494" + +"$out_of_gas_1493": ; preds = %"$have_gas_1489" + call void @_out_of_gas() + br label %"$have_gas_1494" + +"$have_gas_1494": ; preds = %"$out_of_gas_1493", %"$have_gas_1489" + %"$consume_1495" = sub i64 %"$gasrem_1491", 1 + store i64 %"$consume_1495", i64* @_gasrem + %"$listByStr20Contains_30" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } + %"$listByStr20Contains_1496" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains + %"$listByStr20Contains_fptr_1497" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_1496", 0 + %"$listByStr20Contains_envptr_1498" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_1496", 1 + %"$list_1499" = load %TName_List_ByStr20*, %TName_List_ByStr20** %list + %"$listByStr20Contains_call_1500" = call { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_fptr_1497"(i8* %"$listByStr20Contains_envptr_1498", %TName_List_ByStr20* %"$list_1499") + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_call_1500", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_30" + %"$listByStr20Contains_31" = alloca %TName_Bool* + %"$$listByStr20Contains_30_1501" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_30" + %"$$listByStr20Contains_30_fptr_1502" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_30_1501", 0 + %"$$listByStr20Contains_30_envptr_1503" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_30_1501", 1 + %"$$listByStr20Contains_30_bs_1504" = alloca [20 x i8] + store [20 x i8] %bs, [20 x i8]* %"$$listByStr20Contains_30_bs_1504" + %"$$listByStr20Contains_30_call_1505" = call %TName_Bool* %"$$listByStr20Contains_30_fptr_1502"(i8* %"$$listByStr20Contains_30_envptr_1503", [20 x i8]* %"$$listByStr20Contains_30_bs_1504") + store %TName_Bool* %"$$listByStr20Contains_30_call_1505", %TName_Bool** %"$listByStr20Contains_31" + %"$$listByStr20Contains_31_1506" = load %TName_Bool*, %TName_Bool** %"$listByStr20Contains_31" + store %TName_Bool* %"$$listByStr20Contains_31_1506", %TName_Bool** %b + %"$gasrem_1507" = load i64, i64* @_gasrem + %"$gascmp_1508" = icmp ugt i64 1, %"$gasrem_1507" + br i1 %"$gascmp_1508", label %"$out_of_gas_1509", label %"$have_gas_1510" + +"$out_of_gas_1509": ; preds = %"$have_gas_1494" + call void @_out_of_gas() + br label %"$have_gas_1510" + +"$have_gas_1510": ; preds = %"$out_of_gas_1509", %"$have_gas_1494" + %"$consume_1511" = sub i64 %"$gasrem_1507", 1 + store i64 %"$consume_1511", i64* @_gasrem + %"$negb_32" = alloca %TName_Bool* + %"$negb_1512" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb + %"$negb_fptr_1513" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_1512", 0 + %"$negb_envptr_1514" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_1512", 1 + %"$b_1515" = load %TName_Bool*, %TName_Bool** %b + %"$negb_call_1516" = call %TName_Bool* %"$negb_fptr_1513"(i8* %"$negb_envptr_1514", %TName_Bool* %"$b_1515") + store %TName_Bool* %"$negb_call_1516", %TName_Bool** %"$negb_32" + %"$$negb_32_1517" = load %TName_Bool*, %TName_Bool** %"$negb_32" + store %TName_Bool* %"$$negb_32_1517", %TName_Bool** %"$retval_258" + %"$$retval_258_1518" = load %TName_Bool*, %TName_Bool** %"$retval_258" + ret %TName_Bool* %"$$retval_258_1518" } -define internal { %TName_Bool* (i8*, [20 x i8]*)*, i8* } @"$fundef_258"(%"$$fundef_258_env_427"* %0, %TName_List_ByStr20* %1) { +define internal { %TName_Bool* (i8*, [20 x i8]*)*, i8* } @"$fundef_255"(%"$$fundef_255_env_424"* %0, %TName_List_ByStr20* %1) { entry: - %"$$fundef_258_env_listByStr20Contains_1049" = getelementptr inbounds %"$$fundef_258_env_427", %"$$fundef_258_env_427"* %0, i32 0, i32 0 - %"$listByStr20Contains_envload_1050" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_258_env_listByStr20Contains_1049" + %"$$fundef_255_env_listByStr20Contains_1461" = getelementptr inbounds %"$$fundef_255_env_424", %"$$fundef_255_env_424"* %0, i32 0, i32 0 + %"$listByStr20Contains_envload_1462" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_255_env_listByStr20Contains_1461" %listByStr20Contains = alloca { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_envload_1050", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains - %"$$fundef_258_env_negb_1051" = getelementptr inbounds %"$$fundef_258_env_427", %"$$fundef_258_env_427"* %0, i32 0, i32 1 - %"$negb_envload_1052" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_258_env_negb_1051" + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_envload_1462", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains + %"$$fundef_255_env_negb_1463" = getelementptr inbounds %"$$fundef_255_env_424", %"$$fundef_255_env_424"* %0, i32 0, i32 1 + %"$negb_envload_1464" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_255_env_negb_1463" %negb = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_envload_1052", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb - %"$retval_259" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - %"$$fundef_260_envp_1053_load" = load i8*, i8** @_execptr - %"$$fundef_260_envp_1053_salloc" = call i8* @_salloc(i8* %"$$fundef_260_envp_1053_load", i64 40) - %"$$fundef_260_envp_1053" = bitcast i8* %"$$fundef_260_envp_1053_salloc" to %"$$fundef_260_env_426"* - %"$$fundef_260_env_voidp_1055" = bitcast %"$$fundef_260_env_426"* %"$$fundef_260_envp_1053" to i8* - %"$$fundef_260_cloval_1056" = insertvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } { %TName_Bool* (i8*, [20 x i8]*)* bitcast (%TName_Bool* (%"$$fundef_260_env_426"*, [20 x i8]*)* @"$fundef_260" to %TName_Bool* (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_260_env_voidp_1055", 1 - %"$$fundef_260_env_list_1057" = getelementptr inbounds %"$$fundef_260_env_426", %"$$fundef_260_env_426"* %"$$fundef_260_envp_1053", i32 0, i32 0 - store %TName_List_ByStr20* %1, %TName_List_ByStr20** %"$$fundef_260_env_list_1057" - %"$$fundef_260_env_listByStr20Contains_1058" = getelementptr inbounds %"$$fundef_260_env_426", %"$$fundef_260_env_426"* %"$$fundef_260_envp_1053", i32 0, i32 1 - %"$listByStr20Contains_1059" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_1059", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_260_env_listByStr20Contains_1058" - %"$$fundef_260_env_negb_1060" = getelementptr inbounds %"$$fundef_260_env_426", %"$$fundef_260_env_426"* %"$$fundef_260_envp_1053", i32 0, i32 2 - %"$negb_1061" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_1061", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_260_env_negb_1060" - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$fundef_260_cloval_1056", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$retval_259" - %"$$retval_259_1062" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$retval_259" - ret { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$retval_259_1062" + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_envload_1464", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb + %"$retval_256" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } + %"$gasrem_1465" = load i64, i64* @_gasrem + %"$gascmp_1466" = icmp ugt i64 1, %"$gasrem_1465" + br i1 %"$gascmp_1466", label %"$out_of_gas_1467", label %"$have_gas_1468" + +"$out_of_gas_1467": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1468" + +"$have_gas_1468": ; preds = %"$out_of_gas_1467", %entry + %"$consume_1469" = sub i64 %"$gasrem_1465", 1 + store i64 %"$consume_1469", i64* @_gasrem + %"$$fundef_257_envp_1470_load" = load i8*, i8** @_execptr + %"$$fundef_257_envp_1470_salloc" = call i8* @_salloc(i8* %"$$fundef_257_envp_1470_load", i64 40) + %"$$fundef_257_envp_1470" = bitcast i8* %"$$fundef_257_envp_1470_salloc" to %"$$fundef_257_env_423"* + %"$$fundef_257_env_voidp_1472" = bitcast %"$$fundef_257_env_423"* %"$$fundef_257_envp_1470" to i8* + %"$$fundef_257_cloval_1473" = insertvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } { %TName_Bool* (i8*, [20 x i8]*)* bitcast (%TName_Bool* (%"$$fundef_257_env_423"*, [20 x i8]*)* @"$fundef_257" to %TName_Bool* (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_257_env_voidp_1472", 1 + %"$$fundef_257_env_list_1474" = getelementptr inbounds %"$$fundef_257_env_423", %"$$fundef_257_env_423"* %"$$fundef_257_envp_1470", i32 0, i32 0 + store %TName_List_ByStr20* %1, %TName_List_ByStr20** %"$$fundef_257_env_list_1474" + %"$$fundef_257_env_listByStr20Contains_1475" = getelementptr inbounds %"$$fundef_257_env_423", %"$$fundef_257_env_423"* %"$$fundef_257_envp_1470", i32 0, i32 1 + %"$listByStr20Contains_1476" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %listByStr20Contains + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_1476", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_257_env_listByStr20Contains_1475" + %"$$fundef_257_env_negb_1477" = getelementptr inbounds %"$$fundef_257_env_423", %"$$fundef_257_env_423"* %"$$fundef_257_envp_1470", i32 0, i32 2 + %"$negb_1478" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %negb + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_1478", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_257_env_negb_1477" + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$fundef_257_cloval_1473", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$retval_256" + %"$$retval_256_1479" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$retval_256" + ret { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$retval_256_1479" } -define internal %TName_Bool* @"$fundef_264"(%"$$fundef_264_env_428"* %0, [20 x i8]* %1) { +define internal %TName_Bool* @"$fundef_261"(%"$$fundef_261_env_425"* %0, [20 x i8]* %1) { entry: %bs = load [20 x i8], [20 x i8]* %1 - %"$$fundef_264_env_eqByStr20_1019" = getelementptr inbounds %"$$fundef_264_env_428", %"$$fundef_264_env_428"* %0, i32 0, i32 0 - %"$eqByStr20_envload_1020" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_264_env_eqByStr20_1019" + %"$$fundef_261_env_eqByStr20_1416" = getelementptr inbounds %"$$fundef_261_env_425", %"$$fundef_261_env_425"* %0, i32 0, i32 0 + %"$eqByStr20_envload_1417" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_261_env_eqByStr20_1416" %eqByStr20 = alloca { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eqByStr20_envload_1020", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %eqByStr20 - %"$$fundef_264_env_list_1021" = getelementptr inbounds %"$$fundef_264_env_428", %"$$fundef_264_env_428"* %0, i32 0, i32 1 - %"$list_envload_1022" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$$fundef_264_env_list_1021" + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eqByStr20_envload_1417", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %eqByStr20 + %"$$fundef_261_env_list_1418" = getelementptr inbounds %"$$fundef_261_env_425", %"$$fundef_261_env_425"* %0, i32 0, i32 1 + %"$list_envload_1419" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$$fundef_261_env_list_1418" %list = alloca %TName_List_ByStr20* - store %TName_List_ByStr20* %"$list_envload_1022", %TName_List_ByStr20** %list - %"$$fundef_264_env_list_mem_1023" = getelementptr inbounds %"$$fundef_264_env_428", %"$$fundef_264_env_428"* %0, i32 0, i32 2 - %"$list_mem_envload_1024" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_264_env_list_mem_1023" + store %TName_List_ByStr20* %"$list_envload_1419", %TName_List_ByStr20** %list + %"$$fundef_261_env_list_mem_1420" = getelementptr inbounds %"$$fundef_261_env_425", %"$$fundef_261_env_425"* %0, i32 0, i32 2 + %"$list_mem_envload_1421" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_261_env_list_mem_1420" %list_mem = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_mem_envload_1024", { i8*, i8* }** %list_mem - %"$retval_265" = alloca %TName_Bool* + store { i8*, i8* }* %"$list_mem_envload_1421", { i8*, i8* }** %list_mem + %"$retval_262" = alloca %TName_Bool* + %"$gasrem_1422" = load i64, i64* @_gasrem + %"$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 = %entry + call void @_out_of_gas() + br label %"$have_gas_1425" + +"$have_gas_1425": ; preds = %"$out_of_gas_1424", %entry + %"$consume_1426" = sub i64 %"$gasrem_1422", 1 + store i64 %"$consume_1426", i64* @_gasrem %listMemByStr20 = alloca { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } - %"$list_mem_1025" = load { i8*, i8* }*, { i8*, i8* }** %list_mem - %"$list_mem_1026" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_mem_1025", i32 0 - %"$list_mem_1027" = bitcast { i8*, i8* }* %"$list_mem_1026" to { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* - %"$list_mem_1028" = load { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_mem_1027" - %"$list_mem_fptr_1029" = extractvalue { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_mem_1028", 0 - %"$list_mem_envptr_1030" = extractvalue { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_mem_1028", 1 - %"$list_mem_call_1031" = call { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_mem_fptr_1029"(i8* %"$list_mem_envptr_1030") - store { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_mem_call_1031", { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }* %listMemByStr20 - %"$listMemByStr20_30" = alloca { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$listMemByStr20_1032" = load { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }, { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }* %listMemByStr20 - %"$listMemByStr20_fptr_1033" = extractvalue { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$listMemByStr20_1032", 0 - %"$listMemByStr20_envptr_1034" = extractvalue { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$listMemByStr20_1032", 1 - %"$eqByStr20_1035" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %eqByStr20 - %"$listMemByStr20_call_1036" = call { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$listMemByStr20_fptr_1033"(i8* %"$listMemByStr20_envptr_1034", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eqByStr20_1035") - store { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$listMemByStr20_call_1036", { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$listMemByStr20_30" - %"$listMemByStr20_31" = alloca { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } - %"$$listMemByStr20_30_1037" = load { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$listMemByStr20_30" - %"$$listMemByStr20_30_fptr_1038" = extractvalue { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$listMemByStr20_30_1037", 0 - %"$$listMemByStr20_30_envptr_1039" = extractvalue { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$listMemByStr20_30_1037", 1 - %"$$listMemByStr20_30_bs_1040" = alloca [20 x i8] - store [20 x i8] %bs, [20 x i8]* %"$$listMemByStr20_30_bs_1040" - %"$$listMemByStr20_30_call_1041" = call { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$$listMemByStr20_30_fptr_1038"(i8* %"$$listMemByStr20_30_envptr_1039", [20 x i8]* %"$$listMemByStr20_30_bs_1040") - store { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$$listMemByStr20_30_call_1041", { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }* %"$listMemByStr20_31" - %"$listMemByStr20_32" = alloca %TName_Bool* - %"$$listMemByStr20_31_1042" = load { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }* %"$listMemByStr20_31" - %"$$listMemByStr20_31_fptr_1043" = extractvalue { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$$listMemByStr20_31_1042", 0 - %"$$listMemByStr20_31_envptr_1044" = extractvalue { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$$listMemByStr20_31_1042", 1 - %"$list_1045" = load %TName_List_ByStr20*, %TName_List_ByStr20** %list - %"$$listMemByStr20_31_call_1046" = call %TName_Bool* %"$$listMemByStr20_31_fptr_1043"(i8* %"$$listMemByStr20_31_envptr_1044", %TName_List_ByStr20* %"$list_1045") - store %TName_Bool* %"$$listMemByStr20_31_call_1046", %TName_Bool** %"$listMemByStr20_32" - %"$$listMemByStr20_32_1047" = load %TName_Bool*, %TName_Bool** %"$listMemByStr20_32" - store %TName_Bool* %"$$listMemByStr20_32_1047", %TName_Bool** %"$retval_265" - %"$$retval_265_1048" = load %TName_Bool*, %TName_Bool** %"$retval_265" - ret %TName_Bool* %"$$retval_265_1048" + %"$gasrem_1427" = load i64, i64* @_gasrem + %"$gascmp_1428" = icmp ugt i64 1, %"$gasrem_1427" + br i1 %"$gascmp_1428", label %"$out_of_gas_1429", label %"$have_gas_1430" + +"$out_of_gas_1429": ; preds = %"$have_gas_1425" + call void @_out_of_gas() + br label %"$have_gas_1430" + +"$have_gas_1430": ; preds = %"$out_of_gas_1429", %"$have_gas_1425" + %"$consume_1431" = sub i64 %"$gasrem_1427", 1 + store i64 %"$consume_1431", i64* @_gasrem + %"$list_mem_1432" = load { i8*, i8* }*, { i8*, i8* }** %list_mem + %"$list_mem_1433" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_mem_1432", i32 0 + %"$list_mem_1434" = bitcast { i8*, i8* }* %"$list_mem_1433" to { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* + %"$list_mem_1435" = load { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_mem_1434" + %"$list_mem_fptr_1436" = extractvalue { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_mem_1435", 0 + %"$list_mem_envptr_1437" = extractvalue { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_mem_1435", 1 + %"$list_mem_call_1438" = call { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_mem_fptr_1436"(i8* %"$list_mem_envptr_1437") + store { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_mem_call_1438", { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }* %listMemByStr20 + %"$gasrem_1439" = load i64, i64* @_gasrem + %"$gascmp_1440" = icmp ugt i64 1, %"$gasrem_1439" + br i1 %"$gascmp_1440", label %"$out_of_gas_1441", label %"$have_gas_1442" + +"$out_of_gas_1441": ; preds = %"$have_gas_1430" + call void @_out_of_gas() + br label %"$have_gas_1442" + +"$have_gas_1442": ; preds = %"$out_of_gas_1441", %"$have_gas_1430" + %"$consume_1443" = sub i64 %"$gasrem_1439", 1 + store i64 %"$consume_1443", i64* @_gasrem + %"$listMemByStr20_27" = alloca { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } + %"$listMemByStr20_1444" = load { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }, { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }* %listMemByStr20 + %"$listMemByStr20_fptr_1445" = extractvalue { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$listMemByStr20_1444", 0 + %"$listMemByStr20_envptr_1446" = extractvalue { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$listMemByStr20_1444", 1 + %"$eqByStr20_1447" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %eqByStr20 + %"$listMemByStr20_call_1448" = call { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$listMemByStr20_fptr_1445"(i8* %"$listMemByStr20_envptr_1446", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eqByStr20_1447") + store { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$listMemByStr20_call_1448", { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$listMemByStr20_27" + %"$listMemByStr20_28" = alloca { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } + %"$$listMemByStr20_27_1449" = load { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$listMemByStr20_27" + %"$$listMemByStr20_27_fptr_1450" = extractvalue { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$listMemByStr20_27_1449", 0 + %"$$listMemByStr20_27_envptr_1451" = extractvalue { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$listMemByStr20_27_1449", 1 + %"$$listMemByStr20_27_bs_1452" = alloca [20 x i8] + store [20 x i8] %bs, [20 x i8]* %"$$listMemByStr20_27_bs_1452" + %"$$listMemByStr20_27_call_1453" = call { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$$listMemByStr20_27_fptr_1450"(i8* %"$$listMemByStr20_27_envptr_1451", [20 x i8]* %"$$listMemByStr20_27_bs_1452") + store { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$$listMemByStr20_27_call_1453", { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }* %"$listMemByStr20_28" + %"$listMemByStr20_29" = alloca %TName_Bool* + %"$$listMemByStr20_28_1454" = load { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }* %"$listMemByStr20_28" + %"$$listMemByStr20_28_fptr_1455" = extractvalue { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$$listMemByStr20_28_1454", 0 + %"$$listMemByStr20_28_envptr_1456" = extractvalue { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$$listMemByStr20_28_1454", 1 + %"$list_1457" = load %TName_List_ByStr20*, %TName_List_ByStr20** %list + %"$$listMemByStr20_28_call_1458" = call %TName_Bool* %"$$listMemByStr20_28_fptr_1455"(i8* %"$$listMemByStr20_28_envptr_1456", %TName_List_ByStr20* %"$list_1457") + store %TName_Bool* %"$$listMemByStr20_28_call_1458", %TName_Bool** %"$listMemByStr20_29" + %"$$listMemByStr20_29_1459" = load %TName_Bool*, %TName_Bool** %"$listMemByStr20_29" + store %TName_Bool* %"$$listMemByStr20_29_1459", %TName_Bool** %"$retval_262" + %"$$retval_262_1460" = load %TName_Bool*, %TName_Bool** %"$retval_262" + ret %TName_Bool* %"$$retval_262_1460" } -define internal { %TName_Bool* (i8*, [20 x i8]*)*, i8* } @"$fundef_262"(%"$$fundef_262_env_429"* %0, %TName_List_ByStr20* %1) { +define internal { %TName_Bool* (i8*, [20 x i8]*)*, i8* } @"$fundef_259"(%"$$fundef_259_env_426"* %0, %TName_List_ByStr20* %1) { entry: - %"$$fundef_262_env_eqByStr20_1005" = getelementptr inbounds %"$$fundef_262_env_429", %"$$fundef_262_env_429"* %0, i32 0, i32 0 - %"$eqByStr20_envload_1006" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_262_env_eqByStr20_1005" + %"$$fundef_259_env_eqByStr20_1397" = getelementptr inbounds %"$$fundef_259_env_426", %"$$fundef_259_env_426"* %0, i32 0, i32 0 + %"$eqByStr20_envload_1398" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_259_env_eqByStr20_1397" %eqByStr20 = alloca { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eqByStr20_envload_1006", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %eqByStr20 - %"$$fundef_262_env_list_mem_1007" = getelementptr inbounds %"$$fundef_262_env_429", %"$$fundef_262_env_429"* %0, i32 0, i32 1 - %"$list_mem_envload_1008" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_262_env_list_mem_1007" + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eqByStr20_envload_1398", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %eqByStr20 + %"$$fundef_259_env_list_mem_1399" = getelementptr inbounds %"$$fundef_259_env_426", %"$$fundef_259_env_426"* %0, i32 0, i32 1 + %"$list_mem_envload_1400" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_259_env_list_mem_1399" %list_mem = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_mem_envload_1008", { i8*, i8* }** %list_mem - %"$retval_263" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - %"$$fundef_264_envp_1009_load" = load i8*, i8** @_execptr - %"$$fundef_264_envp_1009_salloc" = call i8* @_salloc(i8* %"$$fundef_264_envp_1009_load", i64 32) - %"$$fundef_264_envp_1009" = bitcast i8* %"$$fundef_264_envp_1009_salloc" to %"$$fundef_264_env_428"* - %"$$fundef_264_env_voidp_1011" = bitcast %"$$fundef_264_env_428"* %"$$fundef_264_envp_1009" to i8* - %"$$fundef_264_cloval_1012" = insertvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } { %TName_Bool* (i8*, [20 x i8]*)* bitcast (%TName_Bool* (%"$$fundef_264_env_428"*, [20 x i8]*)* @"$fundef_264" to %TName_Bool* (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_264_env_voidp_1011", 1 - %"$$fundef_264_env_eqByStr20_1013" = getelementptr inbounds %"$$fundef_264_env_428", %"$$fundef_264_env_428"* %"$$fundef_264_envp_1009", i32 0, i32 0 - %"$eqByStr20_1014" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %eqByStr20 - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eqByStr20_1014", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_264_env_eqByStr20_1013" - %"$$fundef_264_env_list_1015" = getelementptr inbounds %"$$fundef_264_env_428", %"$$fundef_264_env_428"* %"$$fundef_264_envp_1009", i32 0, i32 1 - store %TName_List_ByStr20* %1, %TName_List_ByStr20** %"$$fundef_264_env_list_1015" - %"$$fundef_264_env_list_mem_1016" = getelementptr inbounds %"$$fundef_264_env_428", %"$$fundef_264_env_428"* %"$$fundef_264_envp_1009", i32 0, i32 2 - %"$list_mem_1017" = load { i8*, i8* }*, { i8*, i8* }** %list_mem - store { i8*, i8* }* %"$list_mem_1017", { i8*, i8* }** %"$$fundef_264_env_list_mem_1016" - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$fundef_264_cloval_1012", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$retval_263" - %"$$retval_263_1018" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$retval_263" - ret { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$retval_263_1018" + store { i8*, i8* }* %"$list_mem_envload_1400", { i8*, i8* }** %list_mem + %"$retval_260" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } + %"$gasrem_1401" = load i64, i64* @_gasrem + %"$gascmp_1402" = icmp ugt i64 1, %"$gasrem_1401" + br i1 %"$gascmp_1402", label %"$out_of_gas_1403", label %"$have_gas_1404" + +"$out_of_gas_1403": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1404" + +"$have_gas_1404": ; preds = %"$out_of_gas_1403", %entry + %"$consume_1405" = sub i64 %"$gasrem_1401", 1 + store i64 %"$consume_1405", i64* @_gasrem + %"$$fundef_261_envp_1406_load" = load i8*, i8** @_execptr + %"$$fundef_261_envp_1406_salloc" = call i8* @_salloc(i8* %"$$fundef_261_envp_1406_load", i64 32) + %"$$fundef_261_envp_1406" = bitcast i8* %"$$fundef_261_envp_1406_salloc" to %"$$fundef_261_env_425"* + %"$$fundef_261_env_voidp_1408" = bitcast %"$$fundef_261_env_425"* %"$$fundef_261_envp_1406" to i8* + %"$$fundef_261_cloval_1409" = insertvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } { %TName_Bool* (i8*, [20 x i8]*)* bitcast (%TName_Bool* (%"$$fundef_261_env_425"*, [20 x i8]*)* @"$fundef_261" to %TName_Bool* (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_261_env_voidp_1408", 1 + %"$$fundef_261_env_eqByStr20_1410" = getelementptr inbounds %"$$fundef_261_env_425", %"$$fundef_261_env_425"* %"$$fundef_261_envp_1406", i32 0, i32 0 + %"$eqByStr20_1411" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %eqByStr20 + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eqByStr20_1411", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_261_env_eqByStr20_1410" + %"$$fundef_261_env_list_1412" = getelementptr inbounds %"$$fundef_261_env_425", %"$$fundef_261_env_425"* %"$$fundef_261_envp_1406", i32 0, i32 1 + store %TName_List_ByStr20* %1, %TName_List_ByStr20** %"$$fundef_261_env_list_1412" + %"$$fundef_261_env_list_mem_1413" = getelementptr inbounds %"$$fundef_261_env_425", %"$$fundef_261_env_425"* %"$$fundef_261_envp_1406", i32 0, i32 2 + %"$list_mem_1414" = load { i8*, i8* }*, { i8*, i8* }** %list_mem + store { i8*, i8* }* %"$list_mem_1414", { i8*, i8* }** %"$$fundef_261_env_list_mem_1413" + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$fundef_261_cloval_1409", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$retval_260" + %"$$retval_260_1415" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$retval_260" + ret { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$retval_260_1415" } -define internal %TName_Bool* @"$fundef_268"(%"$$fundef_268_env_430"* %0, [20 x i8]* %1) { +define internal %TName_Bool* @"$fundef_265"(%"$$fundef_265_env_427"* %0, [20 x i8]* %1) { entry: %bs2 = load [20 x i8], [20 x i8]* %1 - %"$$fundef_268_env_bs1_995" = getelementptr inbounds %"$$fundef_268_env_430", %"$$fundef_268_env_430"* %0, i32 0, i32 0 - %"$bs1_envload_996" = load [20 x i8], [20 x i8]* %"$$fundef_268_env_bs1_995" + %"$$fundef_265_env_bs1_1387" = getelementptr inbounds %"$$fundef_265_env_427", %"$$fundef_265_env_427"* %0, i32 0, i32 0 + %"$bs1_envload_1388" = load [20 x i8], [20 x i8]* %"$$fundef_265_env_bs1_1387" %bs1 = alloca [20 x i8] - store [20 x i8] %"$bs1_envload_996", [20 x i8]* %bs1 - %"$retval_269" = alloca %TName_Bool* - %"$execptr_load_997" = load i8*, i8** @_execptr - %"$eq_bs1_998" = alloca [20 x i8] - %"$bs1_999" = load [20 x i8], [20 x i8]* %bs1 - store [20 x i8] %"$bs1_999", [20 x i8]* %"$eq_bs1_998" - %"$$eq_bs1_998_1000" = bitcast [20 x i8]* %"$eq_bs1_998" to i8* - %"$eq_bs2_1001" = alloca [20 x i8] - store [20 x i8] %bs2, [20 x i8]* %"$eq_bs2_1001" - %"$$eq_bs2_1001_1002" = bitcast [20 x i8]* %"$eq_bs2_1001" to i8* - %"$eq_call_1003" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_997", i32 20, i8* %"$$eq_bs1_998_1000", i8* %"$$eq_bs2_1001_1002") - store %TName_Bool* %"$eq_call_1003", %TName_Bool** %"$retval_269" - %"$$retval_269_1004" = load %TName_Bool*, %TName_Bool** %"$retval_269" - ret %TName_Bool* %"$$retval_269_1004" + store [20 x i8] %"$bs1_envload_1388", [20 x i8]* %bs1 + %"$retval_266" = alloca %TName_Bool* + %"$execptr_load_1389" = load i8*, i8** @_execptr + %"$eq_bs1_1390" = alloca [20 x i8] + %"$bs1_1391" = load [20 x i8], [20 x i8]* %bs1 + store [20 x i8] %"$bs1_1391", [20 x i8]* %"$eq_bs1_1390" + %"$$eq_bs1_1390_1392" = bitcast [20 x i8]* %"$eq_bs1_1390" to i8* + %"$eq_bs2_1393" = alloca [20 x i8] + store [20 x i8] %bs2, [20 x i8]* %"$eq_bs2_1393" + %"$$eq_bs2_1393_1394" = bitcast [20 x i8]* %"$eq_bs2_1393" to i8* + %"$eq_call_1395" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_1389", i32 20, i8* %"$$eq_bs1_1390_1392", i8* %"$$eq_bs2_1393_1394") + store %TName_Bool* %"$eq_call_1395", %TName_Bool** %"$retval_266" + %"$$retval_266_1396" = load %TName_Bool*, %TName_Bool** %"$retval_266" + ret %TName_Bool* %"$$retval_266_1396" } -define internal { %TName_Bool* (i8*, [20 x i8]*)*, i8* } @"$fundef_266"(%"$$fundef_266_env_431"* %0, [20 x i8]* %1) { +define internal { %TName_Bool* (i8*, [20 x i8]*)*, i8* } @"$fundef_263"(%"$$fundef_263_env_428"* %0, [20 x i8]* %1) { entry: %bs1 = load [20 x i8], [20 x i8]* %1 - %"$retval_267" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - %"$$fundef_268_envp_989_load" = load i8*, i8** @_execptr - %"$$fundef_268_envp_989_salloc" = call i8* @_salloc(i8* %"$$fundef_268_envp_989_load", i64 20) - %"$$fundef_268_envp_989" = bitcast i8* %"$$fundef_268_envp_989_salloc" to %"$$fundef_268_env_430"* - %"$$fundef_268_env_voidp_991" = bitcast %"$$fundef_268_env_430"* %"$$fundef_268_envp_989" to i8* - %"$$fundef_268_cloval_992" = insertvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } { %TName_Bool* (i8*, [20 x i8]*)* bitcast (%TName_Bool* (%"$$fundef_268_env_430"*, [20 x i8]*)* @"$fundef_268" to %TName_Bool* (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_268_env_voidp_991", 1 - %"$$fundef_268_env_bs1_993" = getelementptr inbounds %"$$fundef_268_env_430", %"$$fundef_268_env_430"* %"$$fundef_268_envp_989", i32 0, i32 0 - store [20 x i8] %bs1, [20 x i8]* %"$$fundef_268_env_bs1_993" - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$fundef_268_cloval_992", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$retval_267" - %"$$retval_267_994" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$retval_267" - ret { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$retval_267_994" + %"$retval_264" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } + %"$gasrem_1376" = load i64, i64* @_gasrem + %"$gascmp_1377" = icmp ugt i64 1, %"$gasrem_1376" + br i1 %"$gascmp_1377", label %"$out_of_gas_1378", label %"$have_gas_1379" + +"$out_of_gas_1378": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1379" + +"$have_gas_1379": ; preds = %"$out_of_gas_1378", %entry + %"$consume_1380" = sub i64 %"$gasrem_1376", 1 + store i64 %"$consume_1380", i64* @_gasrem + %"$$fundef_265_envp_1381_load" = load i8*, i8** @_execptr + %"$$fundef_265_envp_1381_salloc" = call i8* @_salloc(i8* %"$$fundef_265_envp_1381_load", i64 20) + %"$$fundef_265_envp_1381" = bitcast i8* %"$$fundef_265_envp_1381_salloc" to %"$$fundef_265_env_427"* + %"$$fundef_265_env_voidp_1383" = bitcast %"$$fundef_265_env_427"* %"$$fundef_265_envp_1381" to i8* + %"$$fundef_265_cloval_1384" = insertvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } { %TName_Bool* (i8*, [20 x i8]*)* bitcast (%TName_Bool* (%"$$fundef_265_env_427"*, [20 x i8]*)* @"$fundef_265" to %TName_Bool* (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_265_env_voidp_1383", 1 + %"$$fundef_265_env_bs1_1385" = getelementptr inbounds %"$$fundef_265_env_427", %"$$fundef_265_env_427"* %"$$fundef_265_envp_1381", i32 0, i32 0 + store [20 x i8] %bs1, [20 x i8]* %"$$fundef_265_env_bs1_1385" + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$fundef_265_cloval_1384", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$retval_264" + %"$$retval_264_1386" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$retval_264" + ret { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$retval_264_1386" } -define internal %TName_List_Message* @"$fundef_270"(%"$$fundef_270_env_432"* %0, i8* %1) { +define internal %TName_List_Message* @"$fundef_267"(%"$$fundef_267_env_429"* %0, i8* %1) { entry: - %"$$fundef_270_env_nilMessage_980" = getelementptr inbounds %"$$fundef_270_env_432", %"$$fundef_270_env_432"* %0, i32 0, i32 0 - %"$nilMessage_envload_981" = load %TName_List_Message*, %TName_List_Message** %"$$fundef_270_env_nilMessage_980" + %"$$fundef_267_env_nilMessage_1362" = getelementptr inbounds %"$$fundef_267_env_429", %"$$fundef_267_env_429"* %0, i32 0, i32 0 + %"$nilMessage_envload_1363" = load %TName_List_Message*, %TName_List_Message** %"$$fundef_267_env_nilMessage_1362" %nilMessage = alloca %TName_List_Message* - store %TName_List_Message* %"$nilMessage_envload_981", %TName_List_Message** %nilMessage - %"$retval_271" = alloca %TName_List_Message* - %"$nilMessage_982" = load %TName_List_Message*, %TName_List_Message** %nilMessage - %"$adtval_983_load" = load i8*, i8** @_execptr - %"$adtval_983_salloc" = call i8* @_salloc(i8* %"$adtval_983_load", i64 17) - %"$adtval_983" = bitcast i8* %"$adtval_983_salloc" to %CName_Cons_Message* - %"$adtgep_984" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_983", i32 0, i32 0 - store i8 0, i8* %"$adtgep_984" - %"$adtgep_985" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_983", i32 0, i32 1 - store i8* %1, i8** %"$adtgep_985" - %"$adtgep_986" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_983", i32 0, i32 2 - store %TName_List_Message* %"$nilMessage_982", %TName_List_Message** %"$adtgep_986" - %"$adtptr_987" = bitcast %CName_Cons_Message* %"$adtval_983" to %TName_List_Message* - store %TName_List_Message* %"$adtptr_987", %TName_List_Message** %"$retval_271" - %"$$retval_271_988" = load %TName_List_Message*, %TName_List_Message** %"$retval_271" - ret %TName_List_Message* %"$$retval_271_988" + store %TName_List_Message* %"$nilMessage_envload_1363", %TName_List_Message** %nilMessage + %"$retval_268" = alloca %TName_List_Message* + %"$gasrem_1364" = load i64, i64* @_gasrem + %"$gascmp_1365" = icmp ugt i64 1, %"$gasrem_1364" + br i1 %"$gascmp_1365", label %"$out_of_gas_1366", label %"$have_gas_1367" + +"$out_of_gas_1366": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1367" + +"$have_gas_1367": ; preds = %"$out_of_gas_1366", %entry + %"$consume_1368" = sub i64 %"$gasrem_1364", 1 + store i64 %"$consume_1368", i64* @_gasrem + %"$nilMessage_1369" = load %TName_List_Message*, %TName_List_Message** %nilMessage + %"$adtval_1370_load" = load i8*, i8** @_execptr + %"$adtval_1370_salloc" = call i8* @_salloc(i8* %"$adtval_1370_load", i64 17) + %"$adtval_1370" = bitcast i8* %"$adtval_1370_salloc" to %CName_Cons_Message* + %"$adtgep_1371" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_1370", i32 0, i32 0 + store i8 0, i8* %"$adtgep_1371" + %"$adtgep_1372" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_1370", i32 0, i32 1 + store i8* %1, i8** %"$adtgep_1372" + %"$adtgep_1373" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_1370", i32 0, i32 2 + store %TName_List_Message* %"$nilMessage_1369", %TName_List_Message** %"$adtgep_1373" + %"$adtptr_1374" = bitcast %CName_Cons_Message* %"$adtval_1370" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_1374", %TName_List_Message** %"$retval_268" + %"$$retval_268_1375" = load %TName_List_Message*, %TName_List_Message** %"$retval_268" + ret %TName_List_Message* %"$$retval_268_1375" } -define internal { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_182"(%"$$fundef_182_env_433"* %0, [20 x i8]* %1) { +define internal { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_179"(%"$$fundef_179_env_430"* %0, [20 x i8]* %1) { entry: %m = load [20 x i8], [20 x i8]* %1 - %"$$fundef_182_env_f_956" = getelementptr inbounds %"$$fundef_182_env_433", %"$$fundef_182_env_433"* %0, i32 0, i32 0 - %"$f_envload_957" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_182_env_f_956" + %"$$fundef_179_env_f_1313" = getelementptr inbounds %"$$fundef_179_env_430", %"$$fundef_179_env_430"* %0, i32 0, i32 0 + %"$f_envload_1314" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_179_env_f_1313" %f = alloca { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_envload_957", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %f - %"$$fundef_182_env_list_exists_958" = getelementptr inbounds %"$$fundef_182_env_433", %"$$fundef_182_env_433"* %0, i32 0, i32 1 - %"$list_exists_envload_959" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_182_env_list_exists_958" + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_envload_1314", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %f + %"$$fundef_179_env_list_exists_1315" = getelementptr inbounds %"$$fundef_179_env_430", %"$$fundef_179_env_430"* %0, i32 0, i32 1 + %"$list_exists_envload_1316" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_179_env_list_exists_1315" %list_exists = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_exists_envload_959", { i8*, i8* }** %list_exists - %"$retval_183" = alloca { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } + store { i8*, i8* }* %"$list_exists_envload_1316", { i8*, i8* }** %list_exists + %"$retval_180" = alloca { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } + %"$gasrem_1317" = load i64, i64* @_gasrem + %"$gascmp_1318" = icmp ugt i64 1, %"$gasrem_1317" + br i1 %"$gascmp_1318", label %"$out_of_gas_1319", label %"$have_gas_1320" + +"$out_of_gas_1319": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1320" + +"$have_gas_1320": ; preds = %"$out_of_gas_1319", %entry + %"$consume_1321" = sub i64 %"$gasrem_1317", 1 + store i64 %"$consume_1321", i64* @_gasrem %ex_pred = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - %"$f_28" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - %"$f_960" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %f - %"$f_fptr_961" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_960", 0 - %"$f_envptr_962" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_960", 1 - %"$f_m_963" = alloca [20 x i8] - store [20 x i8] %m, [20 x i8]* %"$f_m_963" - %"$f_call_964" = call { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$f_fptr_961"(i8* %"$f_envptr_962", [20 x i8]* %"$f_m_963") - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$f_call_964", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$f_28" - %"$$f_28_965" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$f_28" - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$f_28_965", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %ex_pred + %"$gasrem_1322" = load i64, i64* @_gasrem + %"$gascmp_1323" = icmp ugt i64 1, %"$gasrem_1322" + br i1 %"$gascmp_1323", label %"$out_of_gas_1324", label %"$have_gas_1325" + +"$out_of_gas_1324": ; preds = %"$have_gas_1320" + call void @_out_of_gas() + br label %"$have_gas_1325" + +"$have_gas_1325": ; preds = %"$out_of_gas_1324", %"$have_gas_1320" + %"$consume_1326" = sub i64 %"$gasrem_1322", 1 + store i64 %"$consume_1326", i64* @_gasrem + %"$f_25" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } + %"$f_1327" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %f + %"$f_fptr_1328" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_1327", 0 + %"$f_envptr_1329" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_1327", 1 + %"$f_m_1330" = alloca [20 x i8] + store [20 x i8] %m, [20 x i8]* %"$f_m_1330" + %"$f_call_1331" = call { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$f_fptr_1328"(i8* %"$f_envptr_1329", [20 x i8]* %"$f_m_1330") + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$f_call_1331", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$f_25" + %"$$f_25_1332" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$f_25" + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$f_25_1332", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %ex_pred + %"$gasrem_1333" = load i64, i64* @_gasrem + %"$gascmp_1334" = icmp ugt i64 1, %"$gasrem_1333" + br i1 %"$gascmp_1334", label %"$out_of_gas_1335", label %"$have_gas_1336" + +"$out_of_gas_1335": ; preds = %"$have_gas_1325" + call void @_out_of_gas() + br label %"$have_gas_1336" + +"$have_gas_1336": ; preds = %"$out_of_gas_1335", %"$have_gas_1325" + %"$consume_1337" = sub i64 %"$gasrem_1333", 1 + store i64 %"$consume_1337", i64* @_gasrem %ex = alloca { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } - %"$list_exists_966" = load { i8*, i8* }*, { i8*, i8* }** %list_exists - %"$list_exists_967" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_exists_966", i32 0 - %"$list_exists_968" = bitcast { i8*, i8* }* %"$list_exists_967" to { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* - %"$list_exists_969" = load { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }, { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_exists_968" - %"$list_exists_fptr_970" = extractvalue { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_exists_969", 0 - %"$list_exists_envptr_971" = extractvalue { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_exists_969", 1 - %"$list_exists_call_972" = call { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_exists_fptr_970"(i8* %"$list_exists_envptr_971") - store { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_exists_call_972", { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %ex - %"$ex_29" = alloca { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } - %"$ex_973" = load { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }, { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %ex - %"$ex_fptr_974" = extractvalue { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$ex_973", 0 - %"$ex_envptr_975" = extractvalue { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$ex_973", 1 - %"$ex_pred_976" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %ex_pred - %"$ex_call_977" = call { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$ex_fptr_974"(i8* %"$ex_envptr_975", { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$ex_pred_976") - store { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$ex_call_977", { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }* %"$ex_29" - %"$$ex_29_978" = load { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }* %"$ex_29" - store { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$$ex_29_978", { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_183" - %"$$retval_183_979" = load { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_183" - ret { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_183_979" + %"$gasrem_1338" = load i64, i64* @_gasrem + %"$gascmp_1339" = icmp ugt i64 1, %"$gasrem_1338" + br i1 %"$gascmp_1339", label %"$out_of_gas_1340", label %"$have_gas_1341" + +"$out_of_gas_1340": ; preds = %"$have_gas_1336" + call void @_out_of_gas() + br label %"$have_gas_1341" + +"$have_gas_1341": ; preds = %"$out_of_gas_1340", %"$have_gas_1336" + %"$consume_1342" = sub i64 %"$gasrem_1338", 1 + store i64 %"$consume_1342", i64* @_gasrem + %"$list_exists_1343" = load { i8*, i8* }*, { i8*, i8* }** %list_exists + %"$list_exists_1344" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_exists_1343", i32 0 + %"$list_exists_1345" = bitcast { i8*, i8* }* %"$list_exists_1344" to { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* + %"$list_exists_1346" = load { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }, { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_exists_1345" + %"$list_exists_fptr_1347" = extractvalue { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_exists_1346", 0 + %"$list_exists_envptr_1348" = extractvalue { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_exists_1346", 1 + %"$list_exists_call_1349" = call { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_exists_fptr_1347"(i8* %"$list_exists_envptr_1348") + store { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_exists_call_1349", { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %ex + %"$gasrem_1350" = load i64, i64* @_gasrem + %"$gascmp_1351" = icmp ugt i64 1, %"$gasrem_1350" + br i1 %"$gascmp_1351", label %"$out_of_gas_1352", label %"$have_gas_1353" + +"$out_of_gas_1352": ; preds = %"$have_gas_1341" + call void @_out_of_gas() + br label %"$have_gas_1353" + +"$have_gas_1353": ; preds = %"$out_of_gas_1352", %"$have_gas_1341" + %"$consume_1354" = sub i64 %"$gasrem_1350", 1 + store i64 %"$consume_1354", i64* @_gasrem + %"$ex_26" = alloca { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } + %"$ex_1355" = load { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }, { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %ex + %"$ex_fptr_1356" = extractvalue { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$ex_1355", 0 + %"$ex_envptr_1357" = extractvalue { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$ex_1355", 1 + %"$ex_pred_1358" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %ex_pred + %"$ex_call_1359" = call { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$ex_fptr_1356"(i8* %"$ex_envptr_1357", { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$ex_pred_1358") + store { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$ex_call_1359", { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }* %"$ex_26" + %"$$ex_26_1360" = load { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }* %"$ex_26" + store { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$$ex_26_1360", { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_180" + %"$$retval_180_1361" = load { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_180" + ret { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_180_1361" } -define internal { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } @"$fundef_180"(%"$$fundef_180_env_434"* %0, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %1) { +define internal { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } @"$fundef_177"(%"$$fundef_177_env_431"* %0, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %1) { entry: - %"$$fundef_180_env_list_exists_946" = getelementptr inbounds %"$$fundef_180_env_434", %"$$fundef_180_env_434"* %0, i32 0, i32 0 - %"$list_exists_envload_947" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_180_env_list_exists_946" + %"$$fundef_177_env_list_exists_1298" = getelementptr inbounds %"$$fundef_177_env_431", %"$$fundef_177_env_431"* %0, i32 0, i32 0 + %"$list_exists_envload_1299" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_177_env_list_exists_1298" %list_exists = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_exists_envload_947", { i8*, i8* }** %list_exists - %"$retval_181" = alloca { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$$fundef_182_envp_948_load" = load i8*, i8** @_execptr - %"$$fundef_182_envp_948_salloc" = call i8* @_salloc(i8* %"$$fundef_182_envp_948_load", i64 24) - %"$$fundef_182_envp_948" = bitcast i8* %"$$fundef_182_envp_948_salloc" to %"$$fundef_182_env_433"* - %"$$fundef_182_env_voidp_950" = bitcast %"$$fundef_182_env_433"* %"$$fundef_182_envp_948" to i8* - %"$$fundef_182_cloval_951" = insertvalue { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_182_env_433"*, [20 x i8]*)* @"$fundef_182" to { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_182_env_voidp_950", 1 - %"$$fundef_182_env_f_952" = getelementptr inbounds %"$$fundef_182_env_433", %"$$fundef_182_env_433"* %"$$fundef_182_envp_948", i32 0, i32 0 - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %1, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_182_env_f_952" - %"$$fundef_182_env_list_exists_953" = getelementptr inbounds %"$$fundef_182_env_433", %"$$fundef_182_env_433"* %"$$fundef_182_envp_948", i32 0, i32 1 - %"$list_exists_954" = load { i8*, i8* }*, { i8*, i8* }** %list_exists - store { i8*, i8* }* %"$list_exists_954", { i8*, i8* }** %"$$fundef_182_env_list_exists_953" - store { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$fundef_182_cloval_951", { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_181" - %"$$retval_181_955" = load { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_181" - ret { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$retval_181_955" + store { i8*, i8* }* %"$list_exists_envload_1299", { i8*, i8* }** %list_exists + %"$retval_178" = alloca { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } + %"$gasrem_1300" = load i64, i64* @_gasrem + %"$gascmp_1301" = icmp ugt i64 1, %"$gasrem_1300" + br i1 %"$gascmp_1301", label %"$out_of_gas_1302", label %"$have_gas_1303" + +"$out_of_gas_1302": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1303" + +"$have_gas_1303": ; preds = %"$out_of_gas_1302", %entry + %"$consume_1304" = sub i64 %"$gasrem_1300", 1 + store i64 %"$consume_1304", i64* @_gasrem + %"$$fundef_179_envp_1305_load" = load i8*, i8** @_execptr + %"$$fundef_179_envp_1305_salloc" = call i8* @_salloc(i8* %"$$fundef_179_envp_1305_load", i64 24) + %"$$fundef_179_envp_1305" = bitcast i8* %"$$fundef_179_envp_1305_salloc" to %"$$fundef_179_env_430"* + %"$$fundef_179_env_voidp_1307" = bitcast %"$$fundef_179_env_430"* %"$$fundef_179_envp_1305" to i8* + %"$$fundef_179_cloval_1308" = insertvalue { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_179_env_430"*, [20 x i8]*)* @"$fundef_179" to { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_179_env_voidp_1307", 1 + %"$$fundef_179_env_f_1309" = getelementptr inbounds %"$$fundef_179_env_430", %"$$fundef_179_env_430"* %"$$fundef_179_envp_1305", i32 0, i32 0 + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %1, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_179_env_f_1309" + %"$$fundef_179_env_list_exists_1310" = getelementptr inbounds %"$$fundef_179_env_430", %"$$fundef_179_env_430"* %"$$fundef_179_envp_1305", i32 0, i32 1 + %"$list_exists_1311" = load { i8*, i8* }*, { i8*, i8* }** %list_exists + store { i8*, i8* }* %"$list_exists_1311", { i8*, i8* }** %"$$fundef_179_env_list_exists_1310" + store { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$fundef_179_cloval_1308", { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_178" + %"$$retval_178_1312" = load { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_178" + ret { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$retval_178_1312" } -define internal { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } @"$fundef_178"(%"$$fundef_178_env_435"* %0) { +define internal { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } @"$fundef_175"(%"$$fundef_175_env_432"* %0) { entry: - %"$$fundef_178_env_list_exists_937" = getelementptr inbounds %"$$fundef_178_env_435", %"$$fundef_178_env_435"* %0, i32 0, i32 0 - %"$list_exists_envload_938" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_178_env_list_exists_937" + %"$$fundef_175_env_list_exists_1284" = getelementptr inbounds %"$$fundef_175_env_432", %"$$fundef_175_env_432"* %0, i32 0, i32 0 + %"$list_exists_envload_1285" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_175_env_list_exists_1284" %list_exists = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_exists_envload_938", { i8*, i8* }** %list_exists - %"$retval_179" = alloca { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } - %"$$fundef_180_envp_939_load" = load i8*, i8** @_execptr - %"$$fundef_180_envp_939_salloc" = call i8* @_salloc(i8* %"$$fundef_180_envp_939_load", i64 8) - %"$$fundef_180_envp_939" = bitcast i8* %"$$fundef_180_envp_939_salloc" to %"$$fundef_180_env_434"* - %"$$fundef_180_env_voidp_941" = bitcast %"$$fundef_180_env_434"* %"$$fundef_180_envp_939" to i8* - %"$$fundef_180_cloval_942" = insertvalue { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })* bitcast ({ { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (%"$$fundef_180_env_434"*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })* @"$fundef_180" to { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*), i8* undef }, i8* %"$$fundef_180_env_voidp_941", 1 - %"$$fundef_180_env_list_exists_943" = getelementptr inbounds %"$$fundef_180_env_434", %"$$fundef_180_env_434"* %"$$fundef_180_envp_939", i32 0, i32 0 - %"$list_exists_944" = load { i8*, i8* }*, { i8*, i8* }** %list_exists - store { i8*, i8* }* %"$list_exists_944", { i8*, i8* }** %"$$fundef_180_env_list_exists_943" - store { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$$fundef_180_cloval_942", { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_179" - %"$$retval_179_945" = load { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }, { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_179" - ret { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$$retval_179_945" + store { i8*, i8* }* %"$list_exists_envload_1285", { i8*, i8* }** %list_exists + %"$retval_176" = alloca { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } + %"$gasrem_1286" = load i64, i64* @_gasrem + %"$gascmp_1287" = icmp ugt i64 1, %"$gasrem_1286" + br i1 %"$gascmp_1287", label %"$out_of_gas_1288", label %"$have_gas_1289" + +"$out_of_gas_1288": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1289" + +"$have_gas_1289": ; preds = %"$out_of_gas_1288", %entry + %"$consume_1290" = sub i64 %"$gasrem_1286", 1 + store i64 %"$consume_1290", i64* @_gasrem + %"$$fundef_177_envp_1291_load" = load i8*, i8** @_execptr + %"$$fundef_177_envp_1291_salloc" = call i8* @_salloc(i8* %"$$fundef_177_envp_1291_load", i64 8) + %"$$fundef_177_envp_1291" = bitcast i8* %"$$fundef_177_envp_1291_salloc" to %"$$fundef_177_env_431"* + %"$$fundef_177_env_voidp_1293" = bitcast %"$$fundef_177_env_431"* %"$$fundef_177_envp_1291" to i8* + %"$$fundef_177_cloval_1294" = insertvalue { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })* bitcast ({ { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (%"$$fundef_177_env_431"*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })* @"$fundef_177" to { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*), i8* undef }, i8* %"$$fundef_177_env_voidp_1293", 1 + %"$$fundef_177_env_list_exists_1295" = getelementptr inbounds %"$$fundef_177_env_431", %"$$fundef_177_env_431"* %"$$fundef_177_envp_1291", i32 0, i32 0 + %"$list_exists_1296" = load { i8*, i8* }*, { i8*, i8* }** %list_exists + store { i8*, i8* }* %"$list_exists_1296", { i8*, i8* }** %"$$fundef_177_env_list_exists_1295" + store { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$$fundef_177_cloval_1294", { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_176" + %"$$retval_176_1297" = load { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }, { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_176" + ret { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$$retval_176_1297" } -define internal %TName_Bool* @"$fundef_188"(%"$$fundef_188_env_436"* %0, %TName_List_ByStr20* %1) { +define internal %TName_Bool* @"$fundef_185"(%"$$fundef_185_env_433"* %0, %TName_List_ByStr20* %1) { entry: - %"$$fundef_188_env_list_find_898" = getelementptr inbounds %"$$fundef_188_env_436", %"$$fundef_188_env_436"* %0, i32 0, i32 0 - %"$list_find_envload_899" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_188_env_list_find_898" + %"$$fundef_185_env_list_find_1210" = getelementptr inbounds %"$$fundef_185_env_433", %"$$fundef_185_env_433"* %0, i32 0, i32 0 + %"$list_find_envload_1211" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_185_env_list_find_1210" %list_find = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_find_envload_899", { i8*, i8* }** %list_find - %"$$fundef_188_env_p_900" = getelementptr inbounds %"$$fundef_188_env_436", %"$$fundef_188_env_436"* %0, i32 0, i32 1 - %"$p_envload_901" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_188_env_p_900" + store { i8*, i8* }* %"$list_find_envload_1211", { i8*, i8* }** %list_find + %"$$fundef_185_env_p_1212" = getelementptr inbounds %"$$fundef_185_env_433", %"$$fundef_185_env_433"* %0, i32 0, i32 1 + %"$p_envload_1213" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_185_env_p_1212" %p = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$p_envload_901", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %p - %"$retval_189" = alloca %TName_Bool* + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$p_envload_1213", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %p + %"$retval_186" = alloca %TName_Bool* + %"$gasrem_1214" = load i64, i64* @_gasrem + %"$gascmp_1215" = icmp ugt i64 1, %"$gasrem_1214" + br i1 %"$gascmp_1215", label %"$out_of_gas_1216", label %"$have_gas_1217" + +"$out_of_gas_1216": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1217" + +"$have_gas_1217": ; preds = %"$out_of_gas_1216", %entry + %"$consume_1218" = sub i64 %"$gasrem_1214", 1 + store i64 %"$consume_1218", i64* @_gasrem %find = alloca { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } - %"$list_find_902" = load { i8*, i8* }*, { i8*, i8* }** %list_find - %"$list_find_903" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_find_902", i32 0 - %"$list_find_904" = bitcast { i8*, i8* }* %"$list_find_903" to { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* - %"$list_find_905" = load { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }, { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_find_904" - %"$list_find_fptr_906" = extractvalue { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_find_905", 0 - %"$list_find_envptr_907" = extractvalue { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_find_905", 1 - %"$list_find_call_908" = call { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_find_fptr_906"(i8* %"$list_find_envptr_907") - store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_find_call_908", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %find + %"$gasrem_1219" = load i64, i64* @_gasrem + %"$gascmp_1220" = icmp ugt i64 1, %"$gasrem_1219" + br i1 %"$gascmp_1220", label %"$out_of_gas_1221", label %"$have_gas_1222" + +"$out_of_gas_1221": ; preds = %"$have_gas_1217" + call void @_out_of_gas() + br label %"$have_gas_1222" + +"$have_gas_1222": ; preds = %"$out_of_gas_1221", %"$have_gas_1217" + %"$consume_1223" = sub i64 %"$gasrem_1219", 1 + store i64 %"$consume_1223", i64* @_gasrem + %"$list_find_1224" = load { i8*, i8* }*, { i8*, i8* }** %list_find + %"$list_find_1225" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_find_1224", i32 0 + %"$list_find_1226" = bitcast { i8*, i8* }* %"$list_find_1225" to { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* + %"$list_find_1227" = load { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }, { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_find_1226" + %"$list_find_fptr_1228" = extractvalue { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_find_1227", 0 + %"$list_find_envptr_1229" = extractvalue { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_find_1227", 1 + %"$list_find_call_1230" = call { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_find_fptr_1228"(i8* %"$list_find_envptr_1229") + store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_find_call_1230", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %find + %"$gasrem_1231" = load i64, i64* @_gasrem + %"$gascmp_1232" = icmp ugt i64 1, %"$gasrem_1231" + br i1 %"$gascmp_1232", label %"$out_of_gas_1233", label %"$have_gas_1234" + +"$out_of_gas_1233": ; preds = %"$have_gas_1222" + call void @_out_of_gas() + br label %"$have_gas_1234" + +"$have_gas_1234": ; preds = %"$out_of_gas_1233", %"$have_gas_1222" + %"$consume_1235" = sub i64 %"$gasrem_1231", 1 + store i64 %"$consume_1235", i64* @_gasrem %search = alloca %TName_Option_ByStr20* - %"$find_26" = alloca { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } - %"$find_909" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %find - %"$find_fptr_910" = extractvalue { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$find_909", 0 - %"$find_envptr_911" = extractvalue { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$find_909", 1 - %"$p_912" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %p - %"$find_call_913" = call { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$find_fptr_910"(i8* %"$find_envptr_911", { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$p_912") - store { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$find_call_913", { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$find_26" - %"$find_27" = alloca %TName_Option_ByStr20* - %"$$find_26_914" = load { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$find_26" - %"$$find_26_fptr_915" = extractvalue { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$find_26_914", 0 - %"$$find_26_envptr_916" = extractvalue { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$find_26_914", 1 - %"$$find_26_call_917" = call %TName_Option_ByStr20* %"$$find_26_fptr_915"(i8* %"$$find_26_envptr_916", %TName_List_ByStr20* %1) - store %TName_Option_ByStr20* %"$$find_26_call_917", %TName_Option_ByStr20** %"$find_27" - %"$$find_27_918" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$find_27" - store %TName_Option_ByStr20* %"$$find_27_918", %TName_Option_ByStr20** %search - %"$search_920" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %search - %"$search_tag_921" = getelementptr inbounds %TName_Option_ByStr20, %TName_Option_ByStr20* %"$search_920", i32 0, i32 0 - %"$search_tag_922" = load i8, i8* %"$search_tag_921" - switch i8 %"$search_tag_922", label %"$empty_default_923" [ - i8 0, label %"$Some_924" - i8 1, label %"$None_931" + %"$gasrem_1236" = load i64, i64* @_gasrem + %"$gascmp_1237" = icmp ugt i64 1, %"$gasrem_1236" + br i1 %"$gascmp_1237", label %"$out_of_gas_1238", label %"$have_gas_1239" + +"$out_of_gas_1238": ; preds = %"$have_gas_1234" + call void @_out_of_gas() + br label %"$have_gas_1239" + +"$have_gas_1239": ; preds = %"$out_of_gas_1238", %"$have_gas_1234" + %"$consume_1240" = sub i64 %"$gasrem_1236", 1 + store i64 %"$consume_1240", i64* @_gasrem + %"$find_23" = alloca { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } + %"$find_1241" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %find + %"$find_fptr_1242" = extractvalue { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$find_1241", 0 + %"$find_envptr_1243" = extractvalue { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$find_1241", 1 + %"$p_1244" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %p + %"$find_call_1245" = call { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$find_fptr_1242"(i8* %"$find_envptr_1243", { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$p_1244") + store { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$find_call_1245", { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$find_23" + %"$find_24" = alloca %TName_Option_ByStr20* + %"$$find_23_1246" = load { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$find_23" + %"$$find_23_fptr_1247" = extractvalue { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$find_23_1246", 0 + %"$$find_23_envptr_1248" = extractvalue { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$find_23_1246", 1 + %"$$find_23_call_1249" = call %TName_Option_ByStr20* %"$$find_23_fptr_1247"(i8* %"$$find_23_envptr_1248", %TName_List_ByStr20* %1) + store %TName_Option_ByStr20* %"$$find_23_call_1249", %TName_Option_ByStr20** %"$find_24" + %"$$find_24_1250" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$find_24" + store %TName_Option_ByStr20* %"$$find_24_1250", %TName_Option_ByStr20** %search + %"$gasrem_1251" = load i64, i64* @_gasrem + %"$gascmp_1252" = icmp ugt i64 2, %"$gasrem_1251" + br i1 %"$gascmp_1252", label %"$out_of_gas_1253", label %"$have_gas_1254" + +"$out_of_gas_1253": ; preds = %"$have_gas_1239" + call void @_out_of_gas() + br label %"$have_gas_1254" + +"$have_gas_1254": ; preds = %"$out_of_gas_1253", %"$have_gas_1239" + %"$consume_1255" = sub i64 %"$gasrem_1251", 2 + store i64 %"$consume_1255", i64* @_gasrem + %"$search_1257" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %search + %"$search_tag_1258" = getelementptr inbounds %TName_Option_ByStr20, %TName_Option_ByStr20* %"$search_1257", i32 0, i32 0 + %"$search_tag_1259" = load i8, i8* %"$search_tag_1258" + switch i8 %"$search_tag_1259", label %"$empty_default_1260" [ + i8 0, label %"$Some_1261" + i8 1, label %"$None_1273" ] -"$Some_924": ; preds = %entry - %"$search_925" = bitcast %TName_Option_ByStr20* %"$search_920" to %CName_Some_ByStr20* - %"$$search_3_gep_926" = getelementptr inbounds %CName_Some_ByStr20, %CName_Some_ByStr20* %"$search_925", i32 0, i32 1 - %"$$search_3_load_927" = load [20 x i8], [20 x i8]* %"$$search_3_gep_926" - %"$search_3" = alloca [20 x i8] - store [20 x i8] %"$$search_3_load_927", [20 x i8]* %"$search_3" - %"$adtval_928_load" = load i8*, i8** @_execptr - %"$adtval_928_salloc" = call i8* @_salloc(i8* %"$adtval_928_load", i64 1) - %"$adtval_928" = bitcast i8* %"$adtval_928_salloc" to %CName_True* - %"$adtgep_929" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_928", i32 0, i32 0 - store i8 0, i8* %"$adtgep_929" - %"$adtptr_930" = bitcast %CName_True* %"$adtval_928" to %TName_Bool* - store %TName_Bool* %"$adtptr_930", %TName_Bool** %"$retval_189" - br label %"$matchsucc_919" - -"$None_931": ; preds = %entry - %"$search_932" = bitcast %TName_Option_ByStr20* %"$search_920" to %CName_None_ByStr20* - %"$adtval_933_load" = load i8*, i8** @_execptr - %"$adtval_933_salloc" = call i8* @_salloc(i8* %"$adtval_933_load", i64 1) - %"$adtval_933" = bitcast i8* %"$adtval_933_salloc" to %CName_False* - %"$adtgep_934" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_933", i32 0, i32 0 - store i8 1, i8* %"$adtgep_934" - %"$adtptr_935" = bitcast %CName_False* %"$adtval_933" to %TName_Bool* - store %TName_Bool* %"$adtptr_935", %TName_Bool** %"$retval_189" - br label %"$matchsucc_919" - -"$empty_default_923": ; preds = %entry - br label %"$matchsucc_919" - -"$matchsucc_919": ; preds = %"$None_931", %"$Some_924", %"$empty_default_923" - %"$$retval_189_936" = load %TName_Bool*, %TName_Bool** %"$retval_189" - ret %TName_Bool* %"$$retval_189_936" +"$Some_1261": ; preds = %"$have_gas_1254" + %"$search_1262" = bitcast %TName_Option_ByStr20* %"$search_1257" to %CName_Some_ByStr20* + %"$$search_0_gep_1263" = getelementptr inbounds %CName_Some_ByStr20, %CName_Some_ByStr20* %"$search_1262", i32 0, i32 1 + %"$$search_0_load_1264" = load [20 x i8], [20 x i8]* %"$$search_0_gep_1263" + %"$search_0" = alloca [20 x i8] + store [20 x i8] %"$$search_0_load_1264", [20 x i8]* %"$search_0" + %"$gasrem_1265" = load i64, i64* @_gasrem + %"$gascmp_1266" = icmp ugt i64 1, %"$gasrem_1265" + br i1 %"$gascmp_1266", label %"$out_of_gas_1267", label %"$have_gas_1268" + +"$out_of_gas_1267": ; preds = %"$Some_1261" + call void @_out_of_gas() + br label %"$have_gas_1268" + +"$have_gas_1268": ; preds = %"$out_of_gas_1267", %"$Some_1261" + %"$consume_1269" = sub i64 %"$gasrem_1265", 1 + store i64 %"$consume_1269", i64* @_gasrem + %"$adtval_1270_load" = load i8*, i8** @_execptr + %"$adtval_1270_salloc" = call i8* @_salloc(i8* %"$adtval_1270_load", i64 1) + %"$adtval_1270" = bitcast i8* %"$adtval_1270_salloc" to %CName_True* + %"$adtgep_1271" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_1270", i32 0, i32 0 + store i8 0, i8* %"$adtgep_1271" + %"$adtptr_1272" = bitcast %CName_True* %"$adtval_1270" to %TName_Bool* + store %TName_Bool* %"$adtptr_1272", %TName_Bool** %"$retval_186" + br label %"$matchsucc_1256" + +"$None_1273": ; preds = %"$have_gas_1254" + %"$search_1274" = bitcast %TName_Option_ByStr20* %"$search_1257" to %CName_None_ByStr20* + %"$gasrem_1275" = load i64, i64* @_gasrem + %"$gascmp_1276" = icmp ugt i64 1, %"$gasrem_1275" + br i1 %"$gascmp_1276", label %"$out_of_gas_1277", label %"$have_gas_1278" + +"$out_of_gas_1277": ; preds = %"$None_1273" + call void @_out_of_gas() + br label %"$have_gas_1278" + +"$have_gas_1278": ; preds = %"$out_of_gas_1277", %"$None_1273" + %"$consume_1279" = sub i64 %"$gasrem_1275", 1 + store i64 %"$consume_1279", i64* @_gasrem + %"$adtval_1280_load" = load i8*, i8** @_execptr + %"$adtval_1280_salloc" = call i8* @_salloc(i8* %"$adtval_1280_load", i64 1) + %"$adtval_1280" = bitcast i8* %"$adtval_1280_salloc" to %CName_False* + %"$adtgep_1281" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_1280", i32 0, i32 0 + store i8 1, i8* %"$adtgep_1281" + %"$adtptr_1282" = bitcast %CName_False* %"$adtval_1280" to %TName_Bool* + store %TName_Bool* %"$adtptr_1282", %TName_Bool** %"$retval_186" + br label %"$matchsucc_1256" + +"$empty_default_1260": ; preds = %"$have_gas_1254" + br label %"$matchsucc_1256" + +"$matchsucc_1256": ; preds = %"$have_gas_1278", %"$have_gas_1268", %"$empty_default_1260" + %"$$retval_186_1283" = load %TName_Bool*, %TName_Bool** %"$retval_186" + ret %TName_Bool* %"$$retval_186_1283" } -define internal { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_186"(%"$$fundef_186_env_437"* %0, { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %1) { +define internal { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_183"(%"$$fundef_183_env_434"* %0, { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %1) { entry: - %"$$fundef_186_env_list_find_888" = getelementptr inbounds %"$$fundef_186_env_437", %"$$fundef_186_env_437"* %0, i32 0, i32 0 - %"$list_find_envload_889" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_186_env_list_find_888" + %"$$fundef_183_env_list_find_1195" = getelementptr inbounds %"$$fundef_183_env_434", %"$$fundef_183_env_434"* %0, i32 0, i32 0 + %"$list_find_envload_1196" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_183_env_list_find_1195" %list_find = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_find_envload_889", { i8*, i8* }** %list_find - %"$retval_187" = alloca { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } - %"$$fundef_188_envp_890_load" = load i8*, i8** @_execptr - %"$$fundef_188_envp_890_salloc" = call i8* @_salloc(i8* %"$$fundef_188_envp_890_load", i64 24) - %"$$fundef_188_envp_890" = bitcast i8* %"$$fundef_188_envp_890_salloc" to %"$$fundef_188_env_436"* - %"$$fundef_188_env_voidp_892" = bitcast %"$$fundef_188_env_436"* %"$$fundef_188_envp_890" to i8* - %"$$fundef_188_cloval_893" = insertvalue { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } { %TName_Bool* (i8*, %TName_List_ByStr20*)* bitcast (%TName_Bool* (%"$$fundef_188_env_436"*, %TName_List_ByStr20*)* @"$fundef_188" to %TName_Bool* (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_188_env_voidp_892", 1 - %"$$fundef_188_env_list_find_894" = getelementptr inbounds %"$$fundef_188_env_436", %"$$fundef_188_env_436"* %"$$fundef_188_envp_890", i32 0, i32 0 - %"$list_find_895" = load { i8*, i8* }*, { i8*, i8* }** %list_find - store { i8*, i8* }* %"$list_find_895", { i8*, i8* }** %"$$fundef_188_env_list_find_894" - %"$$fundef_188_env_p_896" = getelementptr inbounds %"$$fundef_188_env_436", %"$$fundef_188_env_436"* %"$$fundef_188_envp_890", i32 0, i32 1 - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %1, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_188_env_p_896" - store { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_188_cloval_893", { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_187" - %"$$retval_187_897" = load { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_187" - ret { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_187_897" + store { i8*, i8* }* %"$list_find_envload_1196", { i8*, i8* }** %list_find + %"$retval_184" = alloca { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } + %"$gasrem_1197" = load i64, i64* @_gasrem + %"$gascmp_1198" = icmp ugt i64 1, %"$gasrem_1197" + br i1 %"$gascmp_1198", label %"$out_of_gas_1199", label %"$have_gas_1200" + +"$out_of_gas_1199": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1200" + +"$have_gas_1200": ; preds = %"$out_of_gas_1199", %entry + %"$consume_1201" = sub i64 %"$gasrem_1197", 1 + store i64 %"$consume_1201", i64* @_gasrem + %"$$fundef_185_envp_1202_load" = load i8*, i8** @_execptr + %"$$fundef_185_envp_1202_salloc" = call i8* @_salloc(i8* %"$$fundef_185_envp_1202_load", i64 24) + %"$$fundef_185_envp_1202" = bitcast i8* %"$$fundef_185_envp_1202_salloc" to %"$$fundef_185_env_433"* + %"$$fundef_185_env_voidp_1204" = bitcast %"$$fundef_185_env_433"* %"$$fundef_185_envp_1202" to i8* + %"$$fundef_185_cloval_1205" = insertvalue { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } { %TName_Bool* (i8*, %TName_List_ByStr20*)* bitcast (%TName_Bool* (%"$$fundef_185_env_433"*, %TName_List_ByStr20*)* @"$fundef_185" to %TName_Bool* (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_185_env_voidp_1204", 1 + %"$$fundef_185_env_list_find_1206" = getelementptr inbounds %"$$fundef_185_env_433", %"$$fundef_185_env_433"* %"$$fundef_185_envp_1202", i32 0, i32 0 + %"$list_find_1207" = load { i8*, i8* }*, { i8*, i8* }** %list_find + store { i8*, i8* }* %"$list_find_1207", { i8*, i8* }** %"$$fundef_185_env_list_find_1206" + %"$$fundef_185_env_p_1208" = getelementptr inbounds %"$$fundef_185_env_433", %"$$fundef_185_env_433"* %"$$fundef_185_envp_1202", i32 0, i32 1 + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %1, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_185_env_p_1208" + store { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_185_cloval_1205", { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_184" + %"$$retval_184_1209" = load { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_184" + ret { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_184_1209" } -define internal { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } @"$fundef_184"(%"$$fundef_184_env_438"* %0) { +define internal { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } @"$fundef_181"(%"$$fundef_181_env_435"* %0) { entry: - %"$$fundef_184_env_list_find_879" = getelementptr inbounds %"$$fundef_184_env_438", %"$$fundef_184_env_438"* %0, i32 0, i32 0 - %"$list_find_envload_880" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_184_env_list_find_879" + %"$$fundef_181_env_list_find_1181" = getelementptr inbounds %"$$fundef_181_env_435", %"$$fundef_181_env_435"* %0, i32 0, i32 0 + %"$list_find_envload_1182" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_181_env_list_find_1181" %list_find = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_find_envload_880", { i8*, i8* }** %list_find - %"$retval_185" = alloca { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } - %"$$fundef_186_envp_881_load" = load i8*, i8** @_execptr - %"$$fundef_186_envp_881_salloc" = call i8* @_salloc(i8* %"$$fundef_186_envp_881_load", i64 8) - %"$$fundef_186_envp_881" = bitcast i8* %"$$fundef_186_envp_881_salloc" to %"$$fundef_186_env_437"* - %"$$fundef_186_env_voidp_883" = bitcast %"$$fundef_186_env_437"* %"$$fundef_186_envp_881" to i8* - %"$$fundef_186_cloval_884" = insertvalue { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })* bitcast ({ %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_186_env_437"*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })* @"$fundef_186" to { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*), i8* undef }, i8* %"$$fundef_186_env_voidp_883", 1 - %"$$fundef_186_env_list_find_885" = getelementptr inbounds %"$$fundef_186_env_437", %"$$fundef_186_env_437"* %"$$fundef_186_envp_881", i32 0, i32 0 - %"$list_find_886" = load { i8*, i8* }*, { i8*, i8* }** %list_find - store { i8*, i8* }* %"$list_find_886", { i8*, i8* }** %"$$fundef_186_env_list_find_885" - store { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$$fundef_186_cloval_884", { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_185" - %"$$retval_185_887" = load { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }, { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_185" - ret { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$$retval_185_887" + store { i8*, i8* }* %"$list_find_envload_1182", { i8*, i8* }** %list_find + %"$retval_182" = alloca { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } + %"$gasrem_1183" = load i64, i64* @_gasrem + %"$gascmp_1184" = icmp ugt i64 1, %"$gasrem_1183" + br i1 %"$gascmp_1184", label %"$out_of_gas_1185", label %"$have_gas_1186" + +"$out_of_gas_1185": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1186" + +"$have_gas_1186": ; preds = %"$out_of_gas_1185", %entry + %"$consume_1187" = sub i64 %"$gasrem_1183", 1 + store i64 %"$consume_1187", i64* @_gasrem + %"$$fundef_183_envp_1188_load" = load i8*, i8** @_execptr + %"$$fundef_183_envp_1188_salloc" = call i8* @_salloc(i8* %"$$fundef_183_envp_1188_load", i64 8) + %"$$fundef_183_envp_1188" = bitcast i8* %"$$fundef_183_envp_1188_salloc" to %"$$fundef_183_env_434"* + %"$$fundef_183_env_voidp_1190" = bitcast %"$$fundef_183_env_434"* %"$$fundef_183_envp_1188" to i8* + %"$$fundef_183_cloval_1191" = insertvalue { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })* bitcast ({ %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_183_env_434"*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })* @"$fundef_183" to { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*), i8* undef }, i8* %"$$fundef_183_env_voidp_1190", 1 + %"$$fundef_183_env_list_find_1192" = getelementptr inbounds %"$$fundef_183_env_434", %"$$fundef_183_env_434"* %"$$fundef_183_envp_1188", i32 0, i32 0 + %"$list_find_1193" = load { i8*, i8* }*, { i8*, i8* }** %list_find + store { i8*, i8* }* %"$list_find_1193", { i8*, i8* }** %"$$fundef_183_env_list_find_1192" + store { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$$fundef_183_cloval_1191", { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_182" + %"$$retval_182_1194" = load { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }, { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_182" + ret { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$$retval_182_1194" } -define internal %TName_Option_ByStr20* @"$fundef_198"(%"$$fundef_198_env_439"* %0, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* } %1) { +define internal %TName_Option_ByStr20* @"$fundef_195"(%"$$fundef_195_env_436"* %0, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* } %1) { entry: - %"$$fundef_198_env_init_846" = getelementptr inbounds %"$$fundef_198_env_439", %"$$fundef_198_env_439"* %0, i32 0, i32 0 - %"$init_envload_847" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$$fundef_198_env_init_846" + %"$$fundef_195_env_init_1123" = getelementptr inbounds %"$$fundef_195_env_436", %"$$fundef_195_env_436"* %0, i32 0, i32 0 + %"$init_envload_1124" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$$fundef_195_env_init_1123" %init = alloca %TName_Option_ByStr20* - store %TName_Option_ByStr20* %"$init_envload_847", %TName_Option_ByStr20** %init - %"$$fundef_198_env_p_848" = getelementptr inbounds %"$$fundef_198_env_439", %"$$fundef_198_env_439"* %0, i32 0, i32 1 - %"$p_envload_849" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_198_env_p_848" + store %TName_Option_ByStr20* %"$init_envload_1124", %TName_Option_ByStr20** %init + %"$$fundef_195_env_p_1125" = getelementptr inbounds %"$$fundef_195_env_436", %"$$fundef_195_env_436"* %0, i32 0, i32 1 + %"$p_envload_1126" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_195_env_p_1125" %p = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$p_envload_849", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %p - %"$$fundef_198_env_x_850" = getelementptr inbounds %"$$fundef_198_env_439", %"$$fundef_198_env_439"* %0, i32 0, i32 2 - %"$x_envload_851" = load [20 x i8], [20 x i8]* %"$$fundef_198_env_x_850" + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$p_envload_1126", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %p + %"$$fundef_195_env_x_1127" = getelementptr inbounds %"$$fundef_195_env_436", %"$$fundef_195_env_436"* %0, i32 0, i32 2 + %"$x_envload_1128" = load [20 x i8], [20 x i8]* %"$$fundef_195_env_x_1127" %x = alloca [20 x i8] - store [20 x i8] %"$x_envload_851", [20 x i8]* %x - %"$retval_199" = alloca %TName_Option_ByStr20* + store [20 x i8] %"$x_envload_1128", [20 x i8]* %x + %"$retval_196" = alloca %TName_Option_ByStr20* + %"$gasrem_1129" = load i64, i64* @_gasrem + %"$gascmp_1130" = icmp ugt i64 1, %"$gasrem_1129" + br i1 %"$gascmp_1130", label %"$out_of_gas_1131", label %"$have_gas_1132" + +"$out_of_gas_1131": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1132" + +"$have_gas_1132": ; preds = %"$out_of_gas_1131", %entry + %"$consume_1133" = sub i64 %"$gasrem_1129", 1 + store i64 %"$consume_1133", i64* @_gasrem %p_x = alloca %TName_Bool* - %"$p_22" = alloca %TName_Bool* - %"$p_852" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %p - %"$p_fptr_853" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$p_852", 0 - %"$p_envptr_854" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$p_852", 1 - %"$p_x_855" = alloca [20 x i8] - %"$x_856" = load [20 x i8], [20 x i8]* %x - store [20 x i8] %"$x_856", [20 x i8]* %"$p_x_855" - %"$p_call_857" = call %TName_Bool* %"$p_fptr_853"(i8* %"$p_envptr_854", [20 x i8]* %"$p_x_855") - store %TName_Bool* %"$p_call_857", %TName_Bool** %"$p_22" - %"$$p_22_858" = load %TName_Bool*, %TName_Bool** %"$p_22" - store %TName_Bool* %"$$p_22_858", %TName_Bool** %p_x - %"$p_x_860" = load %TName_Bool*, %TName_Bool** %p_x - %"$p_x_tag_861" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$p_x_860", i32 0, i32 0 - %"$p_x_tag_862" = load i8, i8* %"$p_x_tag_861" - switch i8 %"$p_x_tag_862", label %"$empty_default_863" [ - i8 0, label %"$True_864" - i8 1, label %"$False_871" + %"$gasrem_1134" = load i64, i64* @_gasrem + %"$gascmp_1135" = icmp ugt i64 1, %"$gasrem_1134" + br i1 %"$gascmp_1135", label %"$out_of_gas_1136", label %"$have_gas_1137" + +"$out_of_gas_1136": ; preds = %"$have_gas_1132" + call void @_out_of_gas() + br label %"$have_gas_1137" + +"$have_gas_1137": ; preds = %"$out_of_gas_1136", %"$have_gas_1132" + %"$consume_1138" = sub i64 %"$gasrem_1134", 1 + store i64 %"$consume_1138", i64* @_gasrem + %"$p_19" = alloca %TName_Bool* + %"$p_1139" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %p + %"$p_fptr_1140" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$p_1139", 0 + %"$p_envptr_1141" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$p_1139", 1 + %"$p_x_1142" = alloca [20 x i8] + %"$x_1143" = load [20 x i8], [20 x i8]* %x + store [20 x i8] %"$x_1143", [20 x i8]* %"$p_x_1142" + %"$p_call_1144" = call %TName_Bool* %"$p_fptr_1140"(i8* %"$p_envptr_1141", [20 x i8]* %"$p_x_1142") + store %TName_Bool* %"$p_call_1144", %TName_Bool** %"$p_19" + %"$$p_19_1145" = load %TName_Bool*, %TName_Bool** %"$p_19" + store %TName_Bool* %"$$p_19_1145", %TName_Bool** %p_x + %"$gasrem_1146" = load i64, i64* @_gasrem + %"$gascmp_1147" = icmp ugt i64 2, %"$gasrem_1146" + br i1 %"$gascmp_1147", label %"$out_of_gas_1148", label %"$have_gas_1149" + +"$out_of_gas_1148": ; preds = %"$have_gas_1137" + call void @_out_of_gas() + br label %"$have_gas_1149" + +"$have_gas_1149": ; preds = %"$out_of_gas_1148", %"$have_gas_1137" + %"$consume_1150" = sub i64 %"$gasrem_1146", 2 + store i64 %"$consume_1150", i64* @_gasrem + %"$p_x_1152" = load %TName_Bool*, %TName_Bool** %p_x + %"$p_x_tag_1153" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$p_x_1152", i32 0, i32 0 + %"$p_x_tag_1154" = load i8, i8* %"$p_x_tag_1153" + switch i8 %"$p_x_tag_1154", label %"$empty_default_1155" [ + i8 0, label %"$True_1156" + i8 1, label %"$False_1168" ] -"$True_864": ; preds = %entry - %"$p_x_865" = bitcast %TName_Bool* %"$p_x_860" to %CName_True* - %"$x_866" = load [20 x i8], [20 x i8]* %x - %"$adtval_867_load" = load i8*, i8** @_execptr - %"$adtval_867_salloc" = call i8* @_salloc(i8* %"$adtval_867_load", i64 21) - %"$adtval_867" = bitcast i8* %"$adtval_867_salloc" to %CName_Some_ByStr20* - %"$adtgep_868" = getelementptr inbounds %CName_Some_ByStr20, %CName_Some_ByStr20* %"$adtval_867", i32 0, i32 0 - store i8 0, i8* %"$adtgep_868" - %"$adtgep_869" = getelementptr inbounds %CName_Some_ByStr20, %CName_Some_ByStr20* %"$adtval_867", i32 0, i32 1 - store [20 x i8] %"$x_866", [20 x i8]* %"$adtgep_869" - %"$adtptr_870" = bitcast %CName_Some_ByStr20* %"$adtval_867" to %TName_Option_ByStr20* - store %TName_Option_ByStr20* %"$adtptr_870", %TName_Option_ByStr20** %"$retval_199" - br label %"$matchsucc_859" - -"$False_871": ; preds = %entry - %"$p_x_872" = bitcast %TName_Bool* %"$p_x_860" to %CName_False* - %"$recurse_23" = alloca %TName_Option_ByStr20* - %"$recurse_fptr_873" = extractvalue { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* } %1, 0 - %"$recurse_envptr_874" = extractvalue { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* } %1, 1 - %"$init_875" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %init - %"$recurse_call_876" = call %TName_Option_ByStr20* %"$recurse_fptr_873"(i8* %"$recurse_envptr_874", %TName_Option_ByStr20* %"$init_875") - store %TName_Option_ByStr20* %"$recurse_call_876", %TName_Option_ByStr20** %"$recurse_23" - %"$$recurse_23_877" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$recurse_23" - store %TName_Option_ByStr20* %"$$recurse_23_877", %TName_Option_ByStr20** %"$retval_199" - br label %"$matchsucc_859" - -"$empty_default_863": ; preds = %entry - br label %"$matchsucc_859" - -"$matchsucc_859": ; preds = %"$False_871", %"$True_864", %"$empty_default_863" - %"$$retval_199_878" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$retval_199" - ret %TName_Option_ByStr20* %"$$retval_199_878" +"$True_1156": ; preds = %"$have_gas_1149" + %"$p_x_1157" = bitcast %TName_Bool* %"$p_x_1152" to %CName_True* + %"$gasrem_1158" = load i64, i64* @_gasrem + %"$gascmp_1159" = icmp ugt i64 1, %"$gasrem_1158" + br i1 %"$gascmp_1159", label %"$out_of_gas_1160", label %"$have_gas_1161" + +"$out_of_gas_1160": ; preds = %"$True_1156" + call void @_out_of_gas() + br label %"$have_gas_1161" + +"$have_gas_1161": ; preds = %"$out_of_gas_1160", %"$True_1156" + %"$consume_1162" = sub i64 %"$gasrem_1158", 1 + store i64 %"$consume_1162", i64* @_gasrem + %"$x_1163" = load [20 x i8], [20 x i8]* %x + %"$adtval_1164_load" = load i8*, i8** @_execptr + %"$adtval_1164_salloc" = call i8* @_salloc(i8* %"$adtval_1164_load", i64 21) + %"$adtval_1164" = bitcast i8* %"$adtval_1164_salloc" to %CName_Some_ByStr20* + %"$adtgep_1165" = getelementptr inbounds %CName_Some_ByStr20, %CName_Some_ByStr20* %"$adtval_1164", i32 0, i32 0 + store i8 0, i8* %"$adtgep_1165" + %"$adtgep_1166" = getelementptr inbounds %CName_Some_ByStr20, %CName_Some_ByStr20* %"$adtval_1164", i32 0, i32 1 + store [20 x i8] %"$x_1163", [20 x i8]* %"$adtgep_1166" + %"$adtptr_1167" = bitcast %CName_Some_ByStr20* %"$adtval_1164" to %TName_Option_ByStr20* + store %TName_Option_ByStr20* %"$adtptr_1167", %TName_Option_ByStr20** %"$retval_196" + br label %"$matchsucc_1151" + +"$False_1168": ; preds = %"$have_gas_1149" + %"$p_x_1169" = bitcast %TName_Bool* %"$p_x_1152" to %CName_False* + %"$gasrem_1170" = load i64, i64* @_gasrem + %"$gascmp_1171" = icmp ugt i64 1, %"$gasrem_1170" + br i1 %"$gascmp_1171", label %"$out_of_gas_1172", label %"$have_gas_1173" + +"$out_of_gas_1172": ; preds = %"$False_1168" + call void @_out_of_gas() + br label %"$have_gas_1173" + +"$have_gas_1173": ; preds = %"$out_of_gas_1172", %"$False_1168" + %"$consume_1174" = sub i64 %"$gasrem_1170", 1 + store i64 %"$consume_1174", i64* @_gasrem + %"$recurse_20" = alloca %TName_Option_ByStr20* + %"$recurse_fptr_1175" = extractvalue { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* } %1, 0 + %"$recurse_envptr_1176" = extractvalue { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* } %1, 1 + %"$init_1177" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %init + %"$recurse_call_1178" = call %TName_Option_ByStr20* %"$recurse_fptr_1175"(i8* %"$recurse_envptr_1176", %TName_Option_ByStr20* %"$init_1177") + store %TName_Option_ByStr20* %"$recurse_call_1178", %TName_Option_ByStr20** %"$recurse_20" + %"$$recurse_20_1179" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$recurse_20" + store %TName_Option_ByStr20* %"$$recurse_20_1179", %TName_Option_ByStr20** %"$retval_196" + br label %"$matchsucc_1151" + +"$empty_default_1155": ; preds = %"$have_gas_1149" + br label %"$matchsucc_1151" + +"$matchsucc_1151": ; preds = %"$have_gas_1173", %"$have_gas_1161", %"$empty_default_1155" + %"$$retval_196_1180" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$retval_196" + ret %TName_Option_ByStr20* %"$$retval_196_1180" } -define internal { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } @"$fundef_196"(%"$$fundef_196_env_440"* %0, [20 x i8]* %1) { +define internal { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } @"$fundef_193"(%"$$fundef_193_env_437"* %0, [20 x i8]* %1) { entry: %x = load [20 x i8], [20 x i8]* %1 - %"$$fundef_196_env_init_832" = getelementptr inbounds %"$$fundef_196_env_440", %"$$fundef_196_env_440"* %0, i32 0, i32 0 - %"$init_envload_833" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$$fundef_196_env_init_832" + %"$$fundef_193_env_init_1104" = getelementptr inbounds %"$$fundef_193_env_437", %"$$fundef_193_env_437"* %0, i32 0, i32 0 + %"$init_envload_1105" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$$fundef_193_env_init_1104" %init = alloca %TName_Option_ByStr20* - store %TName_Option_ByStr20* %"$init_envload_833", %TName_Option_ByStr20** %init - %"$$fundef_196_env_p_834" = getelementptr inbounds %"$$fundef_196_env_440", %"$$fundef_196_env_440"* %0, i32 0, i32 1 - %"$p_envload_835" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_196_env_p_834" + store %TName_Option_ByStr20* %"$init_envload_1105", %TName_Option_ByStr20** %init + %"$$fundef_193_env_p_1106" = getelementptr inbounds %"$$fundef_193_env_437", %"$$fundef_193_env_437"* %0, i32 0, i32 1 + %"$p_envload_1107" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_193_env_p_1106" %p = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$p_envload_835", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %p - %"$retval_197" = alloca { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } - %"$$fundef_198_envp_836_load" = load i8*, i8** @_execptr - %"$$fundef_198_envp_836_salloc" = call i8* @_salloc(i8* %"$$fundef_198_envp_836_load", i64 48) - %"$$fundef_198_envp_836" = bitcast i8* %"$$fundef_198_envp_836_salloc" to %"$$fundef_198_env_439"* - %"$$fundef_198_env_voidp_838" = bitcast %"$$fundef_198_env_439"* %"$$fundef_198_envp_836" to i8* - %"$$fundef_198_cloval_839" = insertvalue { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })* bitcast (%TName_Option_ByStr20* (%"$$fundef_198_env_439"*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })* @"$fundef_198" to %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*), i8* undef }, i8* %"$$fundef_198_env_voidp_838", 1 - %"$$fundef_198_env_init_840" = getelementptr inbounds %"$$fundef_198_env_439", %"$$fundef_198_env_439"* %"$$fundef_198_envp_836", i32 0, i32 0 - %"$init_841" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %init - store %TName_Option_ByStr20* %"$init_841", %TName_Option_ByStr20** %"$$fundef_198_env_init_840" - %"$$fundef_198_env_p_842" = getelementptr inbounds %"$$fundef_198_env_439", %"$$fundef_198_env_439"* %"$$fundef_198_envp_836", i32 0, i32 1 - %"$p_843" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %p - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$p_843", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_198_env_p_842" - %"$$fundef_198_env_x_844" = getelementptr inbounds %"$$fundef_198_env_439", %"$$fundef_198_env_439"* %"$$fundef_198_envp_836", i32 0, i32 2 - store [20 x i8] %x, [20 x i8]* %"$$fundef_198_env_x_844" - store { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$$fundef_198_cloval_839", { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }* %"$retval_197" - %"$$retval_197_845" = load { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }, { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }* %"$retval_197" - ret { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$$retval_197_845" + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$p_envload_1107", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %p + %"$retval_194" = alloca { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } + %"$gasrem_1108" = load i64, i64* @_gasrem + %"$gascmp_1109" = icmp ugt i64 1, %"$gasrem_1108" + br i1 %"$gascmp_1109", label %"$out_of_gas_1110", label %"$have_gas_1111" + +"$out_of_gas_1110": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1111" + +"$have_gas_1111": ; preds = %"$out_of_gas_1110", %entry + %"$consume_1112" = sub i64 %"$gasrem_1108", 1 + store i64 %"$consume_1112", i64* @_gasrem + %"$$fundef_195_envp_1113_load" = load i8*, i8** @_execptr + %"$$fundef_195_envp_1113_salloc" = call i8* @_salloc(i8* %"$$fundef_195_envp_1113_load", i64 48) + %"$$fundef_195_envp_1113" = bitcast i8* %"$$fundef_195_envp_1113_salloc" to %"$$fundef_195_env_436"* + %"$$fundef_195_env_voidp_1115" = bitcast %"$$fundef_195_env_436"* %"$$fundef_195_envp_1113" to i8* + %"$$fundef_195_cloval_1116" = insertvalue { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })* bitcast (%TName_Option_ByStr20* (%"$$fundef_195_env_436"*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })* @"$fundef_195" to %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*), i8* undef }, i8* %"$$fundef_195_env_voidp_1115", 1 + %"$$fundef_195_env_init_1117" = getelementptr inbounds %"$$fundef_195_env_436", %"$$fundef_195_env_436"* %"$$fundef_195_envp_1113", i32 0, i32 0 + %"$init_1118" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %init + store %TName_Option_ByStr20* %"$init_1118", %TName_Option_ByStr20** %"$$fundef_195_env_init_1117" + %"$$fundef_195_env_p_1119" = getelementptr inbounds %"$$fundef_195_env_436", %"$$fundef_195_env_436"* %"$$fundef_195_envp_1113", i32 0, i32 1 + %"$p_1120" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %p + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$p_1120", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_195_env_p_1119" + %"$$fundef_195_env_x_1121" = getelementptr inbounds %"$$fundef_195_env_436", %"$$fundef_195_env_436"* %"$$fundef_195_envp_1113", i32 0, i32 2 + store [20 x i8] %x, [20 x i8]* %"$$fundef_195_env_x_1121" + store { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$$fundef_195_cloval_1116", { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }* %"$retval_194" + %"$$retval_194_1122" = load { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }, { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }* %"$retval_194" + ret { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$$retval_194_1122" } -define internal { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } @"$fundef_194"(%"$$fundef_194_env_441"* %0, %TName_Option_ByStr20* %1) { +define internal { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } @"$fundef_191"(%"$$fundef_191_env_438"* %0, %TName_Option_ByStr20* %1) { entry: - %"$$fundef_194_env_init_819" = getelementptr inbounds %"$$fundef_194_env_441", %"$$fundef_194_env_441"* %0, i32 0, i32 0 - %"$init_envload_820" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$$fundef_194_env_init_819" + %"$$fundef_191_env_init_1086" = getelementptr inbounds %"$$fundef_191_env_438", %"$$fundef_191_env_438"* %0, i32 0, i32 0 + %"$init_envload_1087" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$$fundef_191_env_init_1086" %init = alloca %TName_Option_ByStr20* - store %TName_Option_ByStr20* %"$init_envload_820", %TName_Option_ByStr20** %init - %"$$fundef_194_env_p_821" = getelementptr inbounds %"$$fundef_194_env_441", %"$$fundef_194_env_441"* %0, i32 0, i32 1 - %"$p_envload_822" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_194_env_p_821" + store %TName_Option_ByStr20* %"$init_envload_1087", %TName_Option_ByStr20** %init + %"$$fundef_191_env_p_1088" = getelementptr inbounds %"$$fundef_191_env_438", %"$$fundef_191_env_438"* %0, i32 0, i32 1 + %"$p_envload_1089" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_191_env_p_1088" %p = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$p_envload_822", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %p - %"$retval_195" = alloca { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$$fundef_196_envp_823_load" = load i8*, i8** @_execptr - %"$$fundef_196_envp_823_salloc" = call i8* @_salloc(i8* %"$$fundef_196_envp_823_load", i64 24) - %"$$fundef_196_envp_823" = bitcast i8* %"$$fundef_196_envp_823_salloc" to %"$$fundef_196_env_440"* - %"$$fundef_196_env_voidp_825" = bitcast %"$$fundef_196_env_440"* %"$$fundef_196_envp_823" to i8* - %"$$fundef_196_cloval_826" = insertvalue { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)* bitcast ({ %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (%"$$fundef_196_env_440"*, [20 x i8]*)* @"$fundef_196" to { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_196_env_voidp_825", 1 - %"$$fundef_196_env_init_827" = getelementptr inbounds %"$$fundef_196_env_440", %"$$fundef_196_env_440"* %"$$fundef_196_envp_823", i32 0, i32 0 - %"$init_828" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %init - store %TName_Option_ByStr20* %"$init_828", %TName_Option_ByStr20** %"$$fundef_196_env_init_827" - %"$$fundef_196_env_p_829" = getelementptr inbounds %"$$fundef_196_env_440", %"$$fundef_196_env_440"* %"$$fundef_196_envp_823", i32 0, i32 1 - %"$p_830" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %p - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$p_830", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_196_env_p_829" - store { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$fundef_196_cloval_826", { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_195" - %"$$retval_195_831" = load { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_195" - ret { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$retval_195_831" + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$p_envload_1089", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %p + %"$retval_192" = alloca { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } + %"$gasrem_1090" = load i64, i64* @_gasrem + %"$gascmp_1091" = icmp ugt i64 1, %"$gasrem_1090" + br i1 %"$gascmp_1091", label %"$out_of_gas_1092", label %"$have_gas_1093" + +"$out_of_gas_1092": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1093" + +"$have_gas_1093": ; preds = %"$out_of_gas_1092", %entry + %"$consume_1094" = sub i64 %"$gasrem_1090", 1 + store i64 %"$consume_1094", i64* @_gasrem + %"$$fundef_193_envp_1095_load" = load i8*, i8** @_execptr + %"$$fundef_193_envp_1095_salloc" = call i8* @_salloc(i8* %"$$fundef_193_envp_1095_load", i64 24) + %"$$fundef_193_envp_1095" = bitcast i8* %"$$fundef_193_envp_1095_salloc" to %"$$fundef_193_env_437"* + %"$$fundef_193_env_voidp_1097" = bitcast %"$$fundef_193_env_437"* %"$$fundef_193_envp_1095" to i8* + %"$$fundef_193_cloval_1098" = insertvalue { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)* bitcast ({ %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (%"$$fundef_193_env_437"*, [20 x i8]*)* @"$fundef_193" to { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_193_env_voidp_1097", 1 + %"$$fundef_193_env_init_1099" = getelementptr inbounds %"$$fundef_193_env_437", %"$$fundef_193_env_437"* %"$$fundef_193_envp_1095", i32 0, i32 0 + %"$init_1100" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %init + store %TName_Option_ByStr20* %"$init_1100", %TName_Option_ByStr20** %"$$fundef_193_env_init_1099" + %"$$fundef_193_env_p_1101" = getelementptr inbounds %"$$fundef_193_env_437", %"$$fundef_193_env_437"* %"$$fundef_193_envp_1095", i32 0, i32 1 + %"$p_1102" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %p + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$p_1102", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_193_env_p_1101" + store { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$fundef_193_cloval_1098", { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_192" + %"$$retval_192_1103" = load { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$retval_192" + ret { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$retval_192_1103" } -define internal { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_192"(%"$$fundef_192_env_442"* %0, { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %1) { +define internal { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_189"(%"$$fundef_189_env_439"* %0, { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %1) { entry: - %"$$fundef_192_env_list_foldk_782" = getelementptr inbounds %"$$fundef_192_env_442", %"$$fundef_192_env_442"* %0, i32 0, i32 0 - %"$list_foldk_envload_783" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_192_env_list_foldk_782" + %"$$fundef_189_env_list_foldk_1014" = getelementptr inbounds %"$$fundef_189_env_439", %"$$fundef_189_env_439"* %0, i32 0, i32 0 + %"$list_foldk_envload_1015" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_189_env_list_foldk_1014" %list_foldk = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_foldk_envload_783", { i8*, i8* }** %list_foldk - %"$retval_193" = alloca { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } + store { i8*, i8* }* %"$list_foldk_envload_1015", { i8*, i8* }** %list_foldk + %"$retval_190" = alloca { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } + %"$gasrem_1016" = load i64, i64* @_gasrem + %"$gascmp_1017" = icmp ugt i64 1, %"$gasrem_1016" + br i1 %"$gascmp_1017", label %"$out_of_gas_1018", label %"$have_gas_1019" + +"$out_of_gas_1018": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1019" + +"$have_gas_1019": ; preds = %"$out_of_gas_1018", %entry + %"$consume_1020" = sub i64 %"$gasrem_1016", 1 + store i64 %"$consume_1020", i64* @_gasrem %foldk = alloca { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } - %"$list_foldk_784" = load { i8*, i8* }*, { i8*, i8* }** %list_foldk - %"$list_foldk_785" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldk_784", i32 0 - %"$list_foldk_786" = bitcast { i8*, i8* }* %"$list_foldk_785" to { { i8*, i8* }* (i8*)*, i8* }* - %"$list_foldk_787" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$list_foldk_786" - %"$list_foldk_fptr_788" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldk_787", 0 - %"$list_foldk_envptr_789" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldk_787", 1 - %"$list_foldk_call_790" = call { i8*, i8* }* %"$list_foldk_fptr_788"(i8* %"$list_foldk_envptr_789") - %"$list_foldk_791" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldk_call_790", i32 2 - %"$list_foldk_792" = bitcast { i8*, i8* }* %"$list_foldk_791" to { { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)*, i8* }* - %"$list_foldk_793" = load { { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_foldk_792" - %"$list_foldk_fptr_794" = extractvalue { { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldk_793", 0 - %"$list_foldk_envptr_795" = extractvalue { { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldk_793", 1 - %"$list_foldk_call_796" = call { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$list_foldk_fptr_794"(i8* %"$list_foldk_envptr_795") - store { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$list_foldk_call_796", { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }* %foldk + %"$gasrem_1021" = load i64, i64* @_gasrem + %"$gascmp_1022" = icmp ugt i64 1, %"$gasrem_1021" + br i1 %"$gascmp_1022", label %"$out_of_gas_1023", label %"$have_gas_1024" + +"$out_of_gas_1023": ; preds = %"$have_gas_1019" + call void @_out_of_gas() + br label %"$have_gas_1024" + +"$have_gas_1024": ; preds = %"$out_of_gas_1023", %"$have_gas_1019" + %"$consume_1025" = sub i64 %"$gasrem_1021", 1 + store i64 %"$consume_1025", i64* @_gasrem + %"$list_foldk_1026" = load { i8*, i8* }*, { i8*, i8* }** %list_foldk + %"$list_foldk_1027" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldk_1026", i32 0 + %"$list_foldk_1028" = bitcast { i8*, i8* }* %"$list_foldk_1027" to { { i8*, i8* }* (i8*)*, i8* }* + %"$list_foldk_1029" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$list_foldk_1028" + %"$list_foldk_fptr_1030" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldk_1029", 0 + %"$list_foldk_envptr_1031" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldk_1029", 1 + %"$list_foldk_call_1032" = call { i8*, i8* }* %"$list_foldk_fptr_1030"(i8* %"$list_foldk_envptr_1031") + %"$list_foldk_1033" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldk_call_1032", i32 2 + %"$list_foldk_1034" = bitcast { i8*, i8* }* %"$list_foldk_1033" to { { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)*, i8* }* + %"$list_foldk_1035" = load { { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_foldk_1034" + %"$list_foldk_fptr_1036" = extractvalue { { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldk_1035", 0 + %"$list_foldk_envptr_1037" = extractvalue { { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldk_1035", 1 + %"$list_foldk_call_1038" = call { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$list_foldk_fptr_1036"(i8* %"$list_foldk_envptr_1037") + store { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$list_foldk_call_1038", { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }* %foldk + %"$gasrem_1039" = load i64, i64* @_gasrem + %"$gascmp_1040" = icmp ugt i64 1, %"$gasrem_1039" + br i1 %"$gascmp_1040", label %"$out_of_gas_1041", label %"$have_gas_1042" + +"$out_of_gas_1041": ; preds = %"$have_gas_1024" + call void @_out_of_gas() + br label %"$have_gas_1042" + +"$have_gas_1042": ; preds = %"$out_of_gas_1041", %"$have_gas_1024" + %"$consume_1043" = sub i64 %"$gasrem_1039", 1 + store i64 %"$consume_1043", i64* @_gasrem %init = alloca %TName_Option_ByStr20* - %"$adtval_797_load" = load i8*, i8** @_execptr - %"$adtval_797_salloc" = call i8* @_salloc(i8* %"$adtval_797_load", i64 1) - %"$adtval_797" = bitcast i8* %"$adtval_797_salloc" to %CName_None_ByStr20* - %"$adtgep_798" = getelementptr inbounds %CName_None_ByStr20, %CName_None_ByStr20* %"$adtval_797", i32 0, i32 0 - store i8 1, i8* %"$adtgep_798" - %"$adtptr_799" = bitcast %CName_None_ByStr20* %"$adtval_797" to %TName_Option_ByStr20* - store %TName_Option_ByStr20* %"$adtptr_799", %TName_Option_ByStr20** %init + %"$gasrem_1044" = load i64, i64* @_gasrem + %"$gascmp_1045" = icmp ugt i64 1, %"$gasrem_1044" + br i1 %"$gascmp_1045", label %"$out_of_gas_1046", label %"$have_gas_1047" + +"$out_of_gas_1046": ; preds = %"$have_gas_1042" + call void @_out_of_gas() + br label %"$have_gas_1047" + +"$have_gas_1047": ; preds = %"$out_of_gas_1046", %"$have_gas_1042" + %"$consume_1048" = sub i64 %"$gasrem_1044", 1 + store i64 %"$consume_1048", i64* @_gasrem + %"$adtval_1049_load" = load i8*, i8** @_execptr + %"$adtval_1049_salloc" = call i8* @_salloc(i8* %"$adtval_1049_load", i64 1) + %"$adtval_1049" = bitcast i8* %"$adtval_1049_salloc" to %CName_None_ByStr20* + %"$adtgep_1050" = getelementptr inbounds %CName_None_ByStr20, %CName_None_ByStr20* %"$adtval_1049", i32 0, i32 0 + store i8 1, i8* %"$adtgep_1050" + %"$adtptr_1051" = bitcast %CName_None_ByStr20* %"$adtval_1049" to %TName_Option_ByStr20* + store %TName_Option_ByStr20* %"$adtptr_1051", %TName_Option_ByStr20** %init + %"$gasrem_1052" = load i64, i64* @_gasrem + %"$gascmp_1053" = icmp ugt i64 1, %"$gasrem_1052" + br i1 %"$gascmp_1053", label %"$out_of_gas_1054", label %"$have_gas_1055" + +"$out_of_gas_1054": ; preds = %"$have_gas_1047" + call void @_out_of_gas() + br label %"$have_gas_1055" + +"$have_gas_1055": ; preds = %"$out_of_gas_1054", %"$have_gas_1047" + %"$consume_1056" = sub i64 %"$gasrem_1052", 1 + store i64 %"$consume_1056", i64* @_gasrem %predicate_step = alloca { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } - %"$$fundef_194_envp_800_load" = load i8*, i8** @_execptr - %"$$fundef_194_envp_800_salloc" = call i8* @_salloc(i8* %"$$fundef_194_envp_800_load", i64 24) - %"$$fundef_194_envp_800" = bitcast i8* %"$$fundef_194_envp_800_salloc" to %"$$fundef_194_env_441"* - %"$$fundef_194_env_voidp_802" = bitcast %"$$fundef_194_env_441"* %"$$fundef_194_envp_800" to i8* - %"$$fundef_194_cloval_803" = insertvalue { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)* bitcast ({ { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (%"$$fundef_194_env_441"*, %TName_Option_ByStr20*)* @"$fundef_194" to { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*), i8* undef }, i8* %"$$fundef_194_env_voidp_802", 1 - %"$$fundef_194_env_init_804" = getelementptr inbounds %"$$fundef_194_env_441", %"$$fundef_194_env_441"* %"$$fundef_194_envp_800", i32 0, i32 0 - %"$init_805" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %init - store %TName_Option_ByStr20* %"$init_805", %TName_Option_ByStr20** %"$$fundef_194_env_init_804" - %"$$fundef_194_env_p_806" = getelementptr inbounds %"$$fundef_194_env_441", %"$$fundef_194_env_441"* %"$$fundef_194_envp_800", i32 0, i32 1 - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %1, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_194_env_p_806" - store { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$fundef_194_cloval_803", { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %predicate_step - %"$foldk_24" = alloca { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } - %"$foldk_807" = load { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }, { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }* %foldk - %"$foldk_fptr_808" = extractvalue { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$foldk_807", 0 - %"$foldk_envptr_809" = extractvalue { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$foldk_807", 1 - %"$predicate_step_810" = load { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %predicate_step - %"$foldk_call_811" = call { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$foldk_fptr_808"(i8* %"$foldk_envptr_809", { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$predicate_step_810") - store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$foldk_call_811", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$foldk_24" - %"$foldk_25" = alloca { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } - %"$$foldk_24_812" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$foldk_24" - %"$$foldk_24_fptr_813" = extractvalue { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$foldk_24_812", 0 - %"$$foldk_24_envptr_814" = extractvalue { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$foldk_24_812", 1 - %"$init_815" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %init - %"$$foldk_24_call_816" = call { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldk_24_fptr_813"(i8* %"$$foldk_24_envptr_814", %TName_Option_ByStr20* %"$init_815") - store { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldk_24_call_816", { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$foldk_25" - %"$$foldk_25_817" = load { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$foldk_25" - store { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldk_25_817", { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_193" - %"$$retval_193_818" = load { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_193" - ret { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_193_818" + %"$gasrem_1057" = load i64, i64* @_gasrem + %"$gascmp_1058" = icmp ugt i64 1, %"$gasrem_1057" + br i1 %"$gascmp_1058", label %"$out_of_gas_1059", label %"$have_gas_1060" + +"$out_of_gas_1059": ; preds = %"$have_gas_1055" + call void @_out_of_gas() + br label %"$have_gas_1060" + +"$have_gas_1060": ; preds = %"$out_of_gas_1059", %"$have_gas_1055" + %"$consume_1061" = sub i64 %"$gasrem_1057", 1 + store i64 %"$consume_1061", i64* @_gasrem + %"$$fundef_191_envp_1062_load" = load i8*, i8** @_execptr + %"$$fundef_191_envp_1062_salloc" = call i8* @_salloc(i8* %"$$fundef_191_envp_1062_load", i64 24) + %"$$fundef_191_envp_1062" = bitcast i8* %"$$fundef_191_envp_1062_salloc" to %"$$fundef_191_env_438"* + %"$$fundef_191_env_voidp_1064" = bitcast %"$$fundef_191_env_438"* %"$$fundef_191_envp_1062" to i8* + %"$$fundef_191_cloval_1065" = insertvalue { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)* bitcast ({ { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (%"$$fundef_191_env_438"*, %TName_Option_ByStr20*)* @"$fundef_191" to { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*), i8* undef }, i8* %"$$fundef_191_env_voidp_1064", 1 + %"$$fundef_191_env_init_1066" = getelementptr inbounds %"$$fundef_191_env_438", %"$$fundef_191_env_438"* %"$$fundef_191_envp_1062", i32 0, i32 0 + %"$init_1067" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %init + store %TName_Option_ByStr20* %"$init_1067", %TName_Option_ByStr20** %"$$fundef_191_env_init_1066" + %"$$fundef_191_env_p_1068" = getelementptr inbounds %"$$fundef_191_env_438", %"$$fundef_191_env_438"* %"$$fundef_191_envp_1062", i32 0, i32 1 + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %1, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_191_env_p_1068" + store { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$fundef_191_cloval_1065", { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %predicate_step + %"$gasrem_1069" = load i64, i64* @_gasrem + %"$gascmp_1070" = icmp ugt i64 1, %"$gasrem_1069" + br i1 %"$gascmp_1070", label %"$out_of_gas_1071", label %"$have_gas_1072" + +"$out_of_gas_1071": ; preds = %"$have_gas_1060" + call void @_out_of_gas() + br label %"$have_gas_1072" + +"$have_gas_1072": ; preds = %"$out_of_gas_1071", %"$have_gas_1060" + %"$consume_1073" = sub i64 %"$gasrem_1069", 1 + store i64 %"$consume_1073", i64* @_gasrem + %"$foldk_21" = alloca { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } + %"$foldk_1074" = load { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }, { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }* %foldk + %"$foldk_fptr_1075" = extractvalue { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$foldk_1074", 0 + %"$foldk_envptr_1076" = extractvalue { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$foldk_1074", 1 + %"$predicate_step_1077" = load { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %predicate_step + %"$foldk_call_1078" = call { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$foldk_fptr_1075"(i8* %"$foldk_envptr_1076", { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$predicate_step_1077") + store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$foldk_call_1078", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$foldk_21" + %"$foldk_22" = alloca { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } + %"$$foldk_21_1079" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$foldk_21" + %"$$foldk_21_fptr_1080" = extractvalue { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$foldk_21_1079", 0 + %"$$foldk_21_envptr_1081" = extractvalue { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$foldk_21_1079", 1 + %"$init_1082" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %init + %"$$foldk_21_call_1083" = call { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldk_21_fptr_1080"(i8* %"$$foldk_21_envptr_1081", %TName_Option_ByStr20* %"$init_1082") + store { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldk_21_call_1083", { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$foldk_22" + %"$$foldk_22_1084" = load { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$foldk_22" + store { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldk_22_1084", { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_190" + %"$$retval_190_1085" = load { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_190" + ret { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_190_1085" } -define internal { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } @"$fundef_190"(%"$$fundef_190_env_443"* %0) { +define internal { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } @"$fundef_187"(%"$$fundef_187_env_440"* %0) { entry: - %"$$fundef_190_env_list_foldk_773" = getelementptr inbounds %"$$fundef_190_env_443", %"$$fundef_190_env_443"* %0, i32 0, i32 0 - %"$list_foldk_envload_774" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_190_env_list_foldk_773" + %"$$fundef_187_env_list_foldk_1000" = getelementptr inbounds %"$$fundef_187_env_440", %"$$fundef_187_env_440"* %0, i32 0, i32 0 + %"$list_foldk_envload_1001" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_187_env_list_foldk_1000" %list_foldk = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_foldk_envload_774", { i8*, i8* }** %list_foldk - %"$retval_191" = alloca { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } - %"$$fundef_192_envp_775_load" = load i8*, i8** @_execptr - %"$$fundef_192_envp_775_salloc" = call i8* @_salloc(i8* %"$$fundef_192_envp_775_load", i64 8) - %"$$fundef_192_envp_775" = bitcast i8* %"$$fundef_192_envp_775_salloc" to %"$$fundef_192_env_442"* - %"$$fundef_192_env_voidp_777" = bitcast %"$$fundef_192_env_442"* %"$$fundef_192_envp_775" to i8* - %"$$fundef_192_cloval_778" = insertvalue { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })* bitcast ({ %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_192_env_442"*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })* @"$fundef_192" to { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*), i8* undef }, i8* %"$$fundef_192_env_voidp_777", 1 - %"$$fundef_192_env_list_foldk_779" = getelementptr inbounds %"$$fundef_192_env_442", %"$$fundef_192_env_442"* %"$$fundef_192_envp_775", i32 0, i32 0 - %"$list_foldk_780" = load { i8*, i8* }*, { i8*, i8* }** %list_foldk - store { i8*, i8* }* %"$list_foldk_780", { i8*, i8* }** %"$$fundef_192_env_list_foldk_779" - store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$$fundef_192_cloval_778", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_191" - %"$$retval_191_781" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_191" - ret { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$$retval_191_781" + store { i8*, i8* }* %"$list_foldk_envload_1001", { i8*, i8* }** %list_foldk + %"$retval_188" = alloca { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } + %"$gasrem_1002" = load i64, i64* @_gasrem + %"$gascmp_1003" = icmp ugt i64 1, %"$gasrem_1002" + br i1 %"$gascmp_1003", label %"$out_of_gas_1004", label %"$have_gas_1005" + +"$out_of_gas_1004": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1005" + +"$have_gas_1005": ; preds = %"$out_of_gas_1004", %entry + %"$consume_1006" = sub i64 %"$gasrem_1002", 1 + store i64 %"$consume_1006", i64* @_gasrem + %"$$fundef_189_envp_1007_load" = load i8*, i8** @_execptr + %"$$fundef_189_envp_1007_salloc" = call i8* @_salloc(i8* %"$$fundef_189_envp_1007_load", i64 8) + %"$$fundef_189_envp_1007" = bitcast i8* %"$$fundef_189_envp_1007_salloc" to %"$$fundef_189_env_439"* + %"$$fundef_189_env_voidp_1009" = bitcast %"$$fundef_189_env_439"* %"$$fundef_189_envp_1007" to i8* + %"$$fundef_189_cloval_1010" = insertvalue { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })* bitcast ({ %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_189_env_439"*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })* @"$fundef_189" to { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*), i8* undef }, i8* %"$$fundef_189_env_voidp_1009", 1 + %"$$fundef_189_env_list_foldk_1011" = getelementptr inbounds %"$$fundef_189_env_439", %"$$fundef_189_env_439"* %"$$fundef_189_envp_1007", i32 0, i32 0 + %"$list_foldk_1012" = load { i8*, i8* }*, { i8*, i8* }** %list_foldk + store { i8*, i8* }* %"$list_foldk_1012", { i8*, i8* }** %"$$fundef_189_env_list_foldk_1011" + store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$$fundef_189_cloval_1010", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_188" + %"$$retval_188_1013" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_188" + ret { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$$retval_188_1013" } -define internal %TName_List_ByStr20* @"$fundef_206"(%"$$fundef_206_env_444"* %0, %TName_List_ByStr20* %1) { +define internal %TName_List_ByStr20* @"$fundef_203"(%"$$fundef_203_env_441"* %0, %TName_List_ByStr20* %1) { entry: - %"$$fundef_206_env_f_746" = getelementptr inbounds %"$$fundef_206_env_444", %"$$fundef_206_env_444"* %0, i32 0, i32 0 - %"$f_envload_747" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_206_env_f_746" + %"$$fundef_203_env_f_948" = getelementptr inbounds %"$$fundef_203_env_441", %"$$fundef_203_env_441"* %0, i32 0, i32 0 + %"$f_envload_949" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_203_env_f_948" %f = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$f_envload_747", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %f - %"$$fundef_206_env_h_748" = getelementptr inbounds %"$$fundef_206_env_444", %"$$fundef_206_env_444"* %0, i32 0, i32 1 - %"$h_envload_749" = load [20 x i8], [20 x i8]* %"$$fundef_206_env_h_748" + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$f_envload_949", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %f + %"$$fundef_203_env_h_950" = getelementptr inbounds %"$$fundef_203_env_441", %"$$fundef_203_env_441"* %0, i32 0, i32 1 + %"$h_envload_951" = load [20 x i8], [20 x i8]* %"$$fundef_203_env_h_950" %h = alloca [20 x i8] - store [20 x i8] %"$h_envload_749", [20 x i8]* %h - %"$retval_207" = alloca %TName_List_ByStr20* + store [20 x i8] %"$h_envload_951", [20 x i8]* %h + %"$retval_204" = alloca %TName_List_ByStr20* + %"$gasrem_952" = load i64, i64* @_gasrem + %"$gascmp_953" = icmp ugt i64 1, %"$gasrem_952" + br i1 %"$gascmp_953", label %"$out_of_gas_954", label %"$have_gas_955" + +"$out_of_gas_954": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_955" + +"$have_gas_955": ; preds = %"$out_of_gas_954", %entry + %"$consume_956" = sub i64 %"$gasrem_952", 1 + store i64 %"$consume_956", i64* @_gasrem %h1 = alloca %TName_Bool* - %"$f_19" = alloca %TName_Bool* - %"$f_750" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %f - %"$f_fptr_751" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$f_750", 0 - %"$f_envptr_752" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$f_750", 1 - %"$f_h_753" = alloca [20 x i8] - %"$h_754" = load [20 x i8], [20 x i8]* %h - store [20 x i8] %"$h_754", [20 x i8]* %"$f_h_753" - %"$f_call_755" = call %TName_Bool* %"$f_fptr_751"(i8* %"$f_envptr_752", [20 x i8]* %"$f_h_753") - store %TName_Bool* %"$f_call_755", %TName_Bool** %"$f_19" - %"$$f_19_756" = load %TName_Bool*, %TName_Bool** %"$f_19" - store %TName_Bool* %"$$f_19_756", %TName_Bool** %h1 - %"$h1_758" = load %TName_Bool*, %TName_Bool** %h1 - %"$h1_tag_759" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$h1_758", i32 0, i32 0 - %"$h1_tag_760" = load i8, i8* %"$h1_tag_759" - switch i8 %"$h1_tag_760", label %"$empty_default_761" [ - i8 0, label %"$True_762" - i8 1, label %"$False_770" + %"$gasrem_957" = load i64, i64* @_gasrem + %"$gascmp_958" = icmp ugt i64 1, %"$gasrem_957" + br i1 %"$gascmp_958", label %"$out_of_gas_959", label %"$have_gas_960" + +"$out_of_gas_959": ; preds = %"$have_gas_955" + call void @_out_of_gas() + br label %"$have_gas_960" + +"$have_gas_960": ; preds = %"$out_of_gas_959", %"$have_gas_955" + %"$consume_961" = sub i64 %"$gasrem_957", 1 + store i64 %"$consume_961", i64* @_gasrem + %"$f_16" = alloca %TName_Bool* + %"$f_962" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %f + %"$f_fptr_963" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$f_962", 0 + %"$f_envptr_964" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$f_962", 1 + %"$f_h_965" = alloca [20 x i8] + %"$h_966" = load [20 x i8], [20 x i8]* %h + store [20 x i8] %"$h_966", [20 x i8]* %"$f_h_965" + %"$f_call_967" = call %TName_Bool* %"$f_fptr_963"(i8* %"$f_envptr_964", [20 x i8]* %"$f_h_965") + store %TName_Bool* %"$f_call_967", %TName_Bool** %"$f_16" + %"$$f_16_968" = load %TName_Bool*, %TName_Bool** %"$f_16" + store %TName_Bool* %"$$f_16_968", %TName_Bool** %h1 + %"$gasrem_969" = load i64, i64* @_gasrem + %"$gascmp_970" = icmp ugt i64 2, %"$gasrem_969" + br i1 %"$gascmp_970", label %"$out_of_gas_971", label %"$have_gas_972" + +"$out_of_gas_971": ; preds = %"$have_gas_960" + call void @_out_of_gas() + br label %"$have_gas_972" + +"$have_gas_972": ; preds = %"$out_of_gas_971", %"$have_gas_960" + %"$consume_973" = sub i64 %"$gasrem_969", 2 + store i64 %"$consume_973", i64* @_gasrem + %"$h1_975" = load %TName_Bool*, %TName_Bool** %h1 + %"$h1_tag_976" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$h1_975", i32 0, i32 0 + %"$h1_tag_977" = load i8, i8* %"$h1_tag_976" + switch i8 %"$h1_tag_977", label %"$empty_default_978" [ + i8 0, label %"$True_979" + i8 1, label %"$False_992" ] -"$True_762": ; preds = %entry - %"$h1_763" = bitcast %TName_Bool* %"$h1_758" to %CName_True* - %"$h_764" = load [20 x i8], [20 x i8]* %h - %"$adtval_765_load" = load i8*, i8** @_execptr - %"$adtval_765_salloc" = call i8* @_salloc(i8* %"$adtval_765_load", i64 29) - %"$adtval_765" = bitcast i8* %"$adtval_765_salloc" to %CName_Cons_ByStr20* - %"$adtgep_766" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_765", i32 0, i32 0 - store i8 0, i8* %"$adtgep_766" - %"$adtgep_767" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_765", i32 0, i32 1 - store [20 x i8] %"$h_764", [20 x i8]* %"$adtgep_767" - %"$adtgep_768" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_765", i32 0, i32 2 - store %TName_List_ByStr20* %1, %TName_List_ByStr20** %"$adtgep_768" - %"$adtptr_769" = bitcast %CName_Cons_ByStr20* %"$adtval_765" to %TName_List_ByStr20* - store %TName_List_ByStr20* %"$adtptr_769", %TName_List_ByStr20** %"$retval_207" - br label %"$matchsucc_757" - -"$False_770": ; preds = %entry - %"$h1_771" = bitcast %TName_Bool* %"$h1_758" to %CName_False* - store %TName_List_ByStr20* %1, %TName_List_ByStr20** %"$retval_207" - br label %"$matchsucc_757" - -"$empty_default_761": ; preds = %entry - br label %"$matchsucc_757" - -"$matchsucc_757": ; preds = %"$False_770", %"$True_762", %"$empty_default_761" - %"$$retval_207_772" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$retval_207" - ret %TName_List_ByStr20* %"$$retval_207_772" +"$True_979": ; preds = %"$have_gas_972" + %"$h1_980" = bitcast %TName_Bool* %"$h1_975" to %CName_True* + %"$gasrem_981" = load i64, i64* @_gasrem + %"$gascmp_982" = icmp ugt i64 1, %"$gasrem_981" + br i1 %"$gascmp_982", label %"$out_of_gas_983", label %"$have_gas_984" + +"$out_of_gas_983": ; preds = %"$True_979" + call void @_out_of_gas() + br label %"$have_gas_984" + +"$have_gas_984": ; preds = %"$out_of_gas_983", %"$True_979" + %"$consume_985" = sub i64 %"$gasrem_981", 1 + store i64 %"$consume_985", i64* @_gasrem + %"$h_986" = load [20 x i8], [20 x i8]* %h + %"$adtval_987_load" = load i8*, i8** @_execptr + %"$adtval_987_salloc" = call i8* @_salloc(i8* %"$adtval_987_load", i64 29) + %"$adtval_987" = bitcast i8* %"$adtval_987_salloc" to %CName_Cons_ByStr20* + %"$adtgep_988" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_987", i32 0, i32 0 + store i8 0, i8* %"$adtgep_988" + %"$adtgep_989" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_987", i32 0, i32 1 + store [20 x i8] %"$h_986", [20 x i8]* %"$adtgep_989" + %"$adtgep_990" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_987", i32 0, i32 2 + store %TName_List_ByStr20* %1, %TName_List_ByStr20** %"$adtgep_990" + %"$adtptr_991" = bitcast %CName_Cons_ByStr20* %"$adtval_987" to %TName_List_ByStr20* + store %TName_List_ByStr20* %"$adtptr_991", %TName_List_ByStr20** %"$retval_204" + br label %"$matchsucc_974" + +"$False_992": ; preds = %"$have_gas_972" + %"$h1_993" = bitcast %TName_Bool* %"$h1_975" to %CName_False* + %"$gasrem_994" = load i64, i64* @_gasrem + %"$gascmp_995" = icmp ugt i64 1, %"$gasrem_994" + br i1 %"$gascmp_995", label %"$out_of_gas_996", label %"$have_gas_997" + +"$out_of_gas_996": ; preds = %"$False_992" + call void @_out_of_gas() + br label %"$have_gas_997" + +"$have_gas_997": ; preds = %"$out_of_gas_996", %"$False_992" + %"$consume_998" = sub i64 %"$gasrem_994", 1 + store i64 %"$consume_998", i64* @_gasrem + store %TName_List_ByStr20* %1, %TName_List_ByStr20** %"$retval_204" + br label %"$matchsucc_974" + +"$empty_default_978": ; preds = %"$have_gas_972" + br label %"$matchsucc_974" + +"$matchsucc_974": ; preds = %"$have_gas_997", %"$have_gas_984", %"$empty_default_978" + %"$$retval_204_999" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$retval_204" + ret %TName_List_ByStr20* %"$$retval_204_999" } -define internal { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_204"(%"$$fundef_204_env_445"* %0, [20 x i8]* %1) { +define internal { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_201"(%"$$fundef_201_env_442"* %0, [20 x i8]* %1) { entry: %h = load [20 x i8], [20 x i8]* %1 - %"$$fundef_204_env_f_736" = getelementptr inbounds %"$$fundef_204_env_445", %"$$fundef_204_env_445"* %0, i32 0, i32 0 - %"$f_envload_737" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_204_env_f_736" + %"$$fundef_201_env_f_933" = getelementptr inbounds %"$$fundef_201_env_442", %"$$fundef_201_env_442"* %0, i32 0, i32 0 + %"$f_envload_934" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_201_env_f_933" %f = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$f_envload_737", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %f - %"$retval_205" = alloca { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } - %"$$fundef_206_envp_738_load" = load i8*, i8** @_execptr - %"$$fundef_206_envp_738_salloc" = call i8* @_salloc(i8* %"$$fundef_206_envp_738_load", i64 40) - %"$$fundef_206_envp_738" = bitcast i8* %"$$fundef_206_envp_738_salloc" to %"$$fundef_206_env_444"* - %"$$fundef_206_env_voidp_740" = bitcast %"$$fundef_206_env_444"* %"$$fundef_206_envp_738" to i8* - %"$$fundef_206_cloval_741" = insertvalue { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)* bitcast (%TName_List_ByStr20* (%"$$fundef_206_env_444"*, %TName_List_ByStr20*)* @"$fundef_206" to %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_206_env_voidp_740", 1 - %"$$fundef_206_env_f_742" = getelementptr inbounds %"$$fundef_206_env_444", %"$$fundef_206_env_444"* %"$$fundef_206_envp_738", i32 0, i32 0 - %"$f_743" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %f - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$f_743", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_206_env_f_742" - %"$$fundef_206_env_h_744" = getelementptr inbounds %"$$fundef_206_env_444", %"$$fundef_206_env_444"* %"$$fundef_206_envp_738", i32 0, i32 1 - store [20 x i8] %h, [20 x i8]* %"$$fundef_206_env_h_744" - store { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_206_cloval_741", { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_205" - %"$$retval_205_745" = load { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_205" - ret { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_205_745" + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$f_envload_934", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %f + %"$retval_202" = alloca { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } + %"$gasrem_935" = load i64, i64* @_gasrem + %"$gascmp_936" = icmp ugt i64 1, %"$gasrem_935" + br i1 %"$gascmp_936", label %"$out_of_gas_937", label %"$have_gas_938" + +"$out_of_gas_937": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_938" + +"$have_gas_938": ; preds = %"$out_of_gas_937", %entry + %"$consume_939" = sub i64 %"$gasrem_935", 1 + store i64 %"$consume_939", i64* @_gasrem + %"$$fundef_203_envp_940_load" = load i8*, i8** @_execptr + %"$$fundef_203_envp_940_salloc" = call i8* @_salloc(i8* %"$$fundef_203_envp_940_load", i64 40) + %"$$fundef_203_envp_940" = bitcast i8* %"$$fundef_203_envp_940_salloc" to %"$$fundef_203_env_441"* + %"$$fundef_203_env_voidp_942" = bitcast %"$$fundef_203_env_441"* %"$$fundef_203_envp_940" to i8* + %"$$fundef_203_cloval_943" = insertvalue { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)* bitcast (%TName_List_ByStr20* (%"$$fundef_203_env_441"*, %TName_List_ByStr20*)* @"$fundef_203" to %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_203_env_voidp_942", 1 + %"$$fundef_203_env_f_944" = getelementptr inbounds %"$$fundef_203_env_441", %"$$fundef_203_env_441"* %"$$fundef_203_envp_940", i32 0, i32 0 + %"$f_945" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %f + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$f_945", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_203_env_f_944" + %"$$fundef_203_env_h_946" = getelementptr inbounds %"$$fundef_203_env_441", %"$$fundef_203_env_441"* %"$$fundef_203_envp_940", i32 0, i32 1 + store [20 x i8] %h, [20 x i8]* %"$$fundef_203_env_h_946" + store { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_203_cloval_943", { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_202" + %"$$retval_202_947" = load { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_202" + ret { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_202_947" } -define internal { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_202"(%"$$fundef_202_env_446"* %0, { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %1) { +define internal { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_199"(%"$$fundef_199_env_443"* %0, { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %1) { entry: - %"$$fundef_202_env_list_foldr_701" = getelementptr inbounds %"$$fundef_202_env_446", %"$$fundef_202_env_446"* %0, i32 0, i32 0 - %"$list_foldr_envload_702" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_202_env_list_foldr_701" + %"$$fundef_199_env_list_foldr_863" = getelementptr inbounds %"$$fundef_199_env_443", %"$$fundef_199_env_443"* %0, i32 0, i32 0 + %"$list_foldr_envload_864" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_199_env_list_foldr_863" %list_foldr = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_foldr_envload_702", { i8*, i8* }** %list_foldr - %"$retval_203" = alloca { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } + store { i8*, i8* }* %"$list_foldr_envload_864", { i8*, i8* }** %list_foldr + %"$retval_200" = alloca { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } + %"$gasrem_865" = load i64, i64* @_gasrem + %"$gascmp_866" = icmp ugt i64 1, %"$gasrem_865" + br i1 %"$gascmp_866", label %"$out_of_gas_867", label %"$have_gas_868" + +"$out_of_gas_867": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_868" + +"$have_gas_868": ; preds = %"$out_of_gas_867", %entry + %"$consume_869" = sub i64 %"$gasrem_865", 1 + store i64 %"$consume_869", i64* @_gasrem %foldr = alloca { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } - %"$list_foldr_703" = load { i8*, i8* }*, { i8*, i8* }** %list_foldr - %"$list_foldr_704" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldr_703", i32 0 - %"$list_foldr_705" = bitcast { i8*, i8* }* %"$list_foldr_704" to { { i8*, i8* }* (i8*)*, i8* }* - %"$list_foldr_706" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$list_foldr_705" - %"$list_foldr_fptr_707" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldr_706", 0 - %"$list_foldr_envptr_708" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldr_706", 1 - %"$list_foldr_call_709" = call { i8*, i8* }* %"$list_foldr_fptr_707"(i8* %"$list_foldr_envptr_708") - %"$list_foldr_710" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldr_call_709", i32 1 - %"$list_foldr_711" = bitcast { i8*, i8* }* %"$list_foldr_710" to { { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* - %"$list_foldr_712" = load { { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_foldr_711" - %"$list_foldr_fptr_713" = extractvalue { { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldr_712", 0 - %"$list_foldr_envptr_714" = extractvalue { { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldr_712", 1 - %"$list_foldr_call_715" = call { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_foldr_fptr_713"(i8* %"$list_foldr_envptr_714") - store { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_foldr_call_715", { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }* %foldr + %"$gasrem_870" = load i64, i64* @_gasrem + %"$gascmp_871" = icmp ugt i64 1, %"$gasrem_870" + br i1 %"$gascmp_871", label %"$out_of_gas_872", label %"$have_gas_873" + +"$out_of_gas_872": ; preds = %"$have_gas_868" + call void @_out_of_gas() + br label %"$have_gas_873" + +"$have_gas_873": ; preds = %"$out_of_gas_872", %"$have_gas_868" + %"$consume_874" = sub i64 %"$gasrem_870", 1 + store i64 %"$consume_874", i64* @_gasrem + %"$list_foldr_875" = load { i8*, i8* }*, { i8*, i8* }** %list_foldr + %"$list_foldr_876" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldr_875", i32 0 + %"$list_foldr_877" = bitcast { i8*, i8* }* %"$list_foldr_876" to { { i8*, i8* }* (i8*)*, i8* }* + %"$list_foldr_878" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$list_foldr_877" + %"$list_foldr_fptr_879" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldr_878", 0 + %"$list_foldr_envptr_880" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldr_878", 1 + %"$list_foldr_call_881" = call { i8*, i8* }* %"$list_foldr_fptr_879"(i8* %"$list_foldr_envptr_880") + %"$list_foldr_882" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldr_call_881", i32 1 + %"$list_foldr_883" = bitcast { i8*, i8* }* %"$list_foldr_882" to { { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* + %"$list_foldr_884" = load { { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_foldr_883" + %"$list_foldr_fptr_885" = extractvalue { { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldr_884", 0 + %"$list_foldr_envptr_886" = extractvalue { { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldr_884", 1 + %"$list_foldr_call_887" = call { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_foldr_fptr_885"(i8* %"$list_foldr_envptr_886") + store { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$list_foldr_call_887", { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }* %foldr + %"$gasrem_888" = load i64, i64* @_gasrem + %"$gascmp_889" = icmp ugt i64 1, %"$gasrem_888" + br i1 %"$gascmp_889", label %"$out_of_gas_890", label %"$have_gas_891" + +"$out_of_gas_890": ; preds = %"$have_gas_873" + call void @_out_of_gas() + br label %"$have_gas_891" + +"$have_gas_891": ; preds = %"$out_of_gas_890", %"$have_gas_873" + %"$consume_892" = sub i64 %"$gasrem_888", 1 + store i64 %"$consume_892", i64* @_gasrem %iter = alloca { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$$fundef_204_envp_716_load" = load i8*, i8** @_execptr - %"$$fundef_204_envp_716_salloc" = call i8* @_salloc(i8* %"$$fundef_204_envp_716_load", i64 16) - %"$$fundef_204_envp_716" = bitcast i8* %"$$fundef_204_envp_716_salloc" to %"$$fundef_204_env_445"* - %"$$fundef_204_env_voidp_718" = bitcast %"$$fundef_204_env_445"* %"$$fundef_204_envp_716" to i8* - %"$$fundef_204_cloval_719" = insertvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_204_env_445"*, [20 x i8]*)* @"$fundef_204" to { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_204_env_voidp_718", 1 - %"$$fundef_204_env_f_720" = getelementptr inbounds %"$$fundef_204_env_445", %"$$fundef_204_env_445"* %"$$fundef_204_envp_716", i32 0, i32 0 - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %1, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_204_env_f_720" - store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$fundef_204_cloval_719", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %iter + %"$gasrem_893" = load i64, i64* @_gasrem + %"$gascmp_894" = icmp ugt i64 1, %"$gasrem_893" + br i1 %"$gascmp_894", label %"$out_of_gas_895", label %"$have_gas_896" + +"$out_of_gas_895": ; preds = %"$have_gas_891" + call void @_out_of_gas() + br label %"$have_gas_896" + +"$have_gas_896": ; preds = %"$out_of_gas_895", %"$have_gas_891" + %"$consume_897" = sub i64 %"$gasrem_893", 1 + store i64 %"$consume_897", i64* @_gasrem + %"$$fundef_201_envp_898_load" = load i8*, i8** @_execptr + %"$$fundef_201_envp_898_salloc" = call i8* @_salloc(i8* %"$$fundef_201_envp_898_load", i64 16) + %"$$fundef_201_envp_898" = bitcast i8* %"$$fundef_201_envp_898_salloc" to %"$$fundef_201_env_442"* + %"$$fundef_201_env_voidp_900" = bitcast %"$$fundef_201_env_442"* %"$$fundef_201_envp_898" to i8* + %"$$fundef_201_cloval_901" = insertvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_201_env_442"*, [20 x i8]*)* @"$fundef_201" to { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_201_env_voidp_900", 1 + %"$$fundef_201_env_f_902" = getelementptr inbounds %"$$fundef_201_env_442", %"$$fundef_201_env_442"* %"$$fundef_201_envp_898", i32 0, i32 0 + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %1, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$$fundef_201_env_f_902" + store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$fundef_201_cloval_901", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %iter + %"$gasrem_903" = load i64, i64* @_gasrem + %"$gascmp_904" = icmp ugt i64 1, %"$gasrem_903" + br i1 %"$gascmp_904", label %"$out_of_gas_905", label %"$have_gas_906" + +"$out_of_gas_905": ; preds = %"$have_gas_896" + call void @_out_of_gas() + br label %"$have_gas_906" + +"$have_gas_906": ; preds = %"$out_of_gas_905", %"$have_gas_896" + %"$consume_907" = sub i64 %"$gasrem_903", 1 + store i64 %"$consume_907", i64* @_gasrem %init = alloca %TName_List_ByStr20* - %"$adtval_721_load" = load i8*, i8** @_execptr - %"$adtval_721_salloc" = call i8* @_salloc(i8* %"$adtval_721_load", i64 1) - %"$adtval_721" = bitcast i8* %"$adtval_721_salloc" to %CName_Nil_ByStr20* - %"$adtgep_722" = getelementptr inbounds %CName_Nil_ByStr20, %CName_Nil_ByStr20* %"$adtval_721", i32 0, i32 0 - store i8 1, i8* %"$adtgep_722" - %"$adtptr_723" = bitcast %CName_Nil_ByStr20* %"$adtval_721" to %TName_List_ByStr20* - store %TName_List_ByStr20* %"$adtptr_723", %TName_List_ByStr20** %init - %"$foldr_20" = alloca { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } - %"$foldr_724" = load { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }, { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }* %foldr - %"$foldr_fptr_725" = extractvalue { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$foldr_724", 0 - %"$foldr_envptr_726" = extractvalue { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$foldr_724", 1 - %"$iter_727" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %iter - %"$foldr_call_728" = call { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$foldr_fptr_725"(i8* %"$foldr_envptr_726", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$iter_727") - store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$foldr_call_728", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$foldr_20" - %"$foldr_21" = alloca { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } - %"$$foldr_20_729" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$foldr_20" - %"$$foldr_20_fptr_730" = extractvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldr_20_729", 0 - %"$$foldr_20_envptr_731" = extractvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldr_20_729", 1 - %"$init_732" = load %TName_List_ByStr20*, %TName_List_ByStr20** %init - %"$$foldr_20_call_733" = call { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldr_20_fptr_730"(i8* %"$$foldr_20_envptr_731", %TName_List_ByStr20* %"$init_732") - store { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldr_20_call_733", { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$foldr_21" - %"$$foldr_21_734" = load { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$foldr_21" - store { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldr_21_734", { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_203" - %"$$retval_203_735" = load { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_203" - ret { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_203_735" + %"$gasrem_908" = load i64, i64* @_gasrem + %"$gascmp_909" = icmp ugt i64 1, %"$gasrem_908" + br i1 %"$gascmp_909", label %"$out_of_gas_910", label %"$have_gas_911" + +"$out_of_gas_910": ; preds = %"$have_gas_906" + call void @_out_of_gas() + br label %"$have_gas_911" + +"$have_gas_911": ; preds = %"$out_of_gas_910", %"$have_gas_906" + %"$consume_912" = sub i64 %"$gasrem_908", 1 + store i64 %"$consume_912", i64* @_gasrem + %"$adtval_913_load" = load i8*, i8** @_execptr + %"$adtval_913_salloc" = call i8* @_salloc(i8* %"$adtval_913_load", i64 1) + %"$adtval_913" = bitcast i8* %"$adtval_913_salloc" to %CName_Nil_ByStr20* + %"$adtgep_914" = getelementptr inbounds %CName_Nil_ByStr20, %CName_Nil_ByStr20* %"$adtval_913", i32 0, i32 0 + store i8 1, i8* %"$adtgep_914" + %"$adtptr_915" = bitcast %CName_Nil_ByStr20* %"$adtval_913" to %TName_List_ByStr20* + store %TName_List_ByStr20* %"$adtptr_915", %TName_List_ByStr20** %init + %"$gasrem_916" = load i64, i64* @_gasrem + %"$gascmp_917" = icmp ugt i64 1, %"$gasrem_916" + br i1 %"$gascmp_917", label %"$out_of_gas_918", label %"$have_gas_919" + +"$out_of_gas_918": ; preds = %"$have_gas_911" + call void @_out_of_gas() + br label %"$have_gas_919" + +"$have_gas_919": ; preds = %"$out_of_gas_918", %"$have_gas_911" + %"$consume_920" = sub i64 %"$gasrem_916", 1 + store i64 %"$consume_920", i64* @_gasrem + %"$foldr_17" = alloca { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } + %"$foldr_921" = load { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }, { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }* %foldr + %"$foldr_fptr_922" = extractvalue { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$foldr_921", 0 + %"$foldr_envptr_923" = extractvalue { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$foldr_921", 1 + %"$iter_924" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %iter + %"$foldr_call_925" = call { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$foldr_fptr_922"(i8* %"$foldr_envptr_923", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$iter_924") + store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$foldr_call_925", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$foldr_17" + %"$foldr_18" = alloca { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } + %"$$foldr_17_926" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$foldr_17" + %"$$foldr_17_fptr_927" = extractvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldr_17_926", 0 + %"$$foldr_17_envptr_928" = extractvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldr_17_926", 1 + %"$init_929" = load %TName_List_ByStr20*, %TName_List_ByStr20** %init + %"$$foldr_17_call_930" = call { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldr_17_fptr_927"(i8* %"$$foldr_17_envptr_928", %TName_List_ByStr20* %"$init_929") + store { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldr_17_call_930", { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$foldr_18" + %"$$foldr_18_931" = load { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$foldr_18" + store { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$foldr_18_931", { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_200" + %"$$retval_200_932" = load { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_200" + ret { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_200_932" } -define internal { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } @"$fundef_200"(%"$$fundef_200_env_447"* %0) { +define internal { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } @"$fundef_197"(%"$$fundef_197_env_444"* %0) { entry: - %"$$fundef_200_env_list_foldr_692" = getelementptr inbounds %"$$fundef_200_env_447", %"$$fundef_200_env_447"* %0, i32 0, i32 0 - %"$list_foldr_envload_693" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_200_env_list_foldr_692" + %"$$fundef_197_env_list_foldr_849" = getelementptr inbounds %"$$fundef_197_env_444", %"$$fundef_197_env_444"* %0, i32 0, i32 0 + %"$list_foldr_envload_850" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_197_env_list_foldr_849" %list_foldr = alloca { i8*, i8* }* - store { i8*, i8* }* %"$list_foldr_envload_693", { i8*, i8* }** %list_foldr - %"$retval_201" = alloca { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } - %"$$fundef_202_envp_694_load" = load i8*, i8** @_execptr - %"$$fundef_202_envp_694_salloc" = call i8* @_salloc(i8* %"$$fundef_202_envp_694_load", i64 8) - %"$$fundef_202_envp_694" = bitcast i8* %"$$fundef_202_envp_694_salloc" to %"$$fundef_202_env_446"* - %"$$fundef_202_env_voidp_696" = bitcast %"$$fundef_202_env_446"* %"$$fundef_202_envp_694" to i8* - %"$$fundef_202_cloval_697" = insertvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })* bitcast ({ %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_202_env_446"*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })* @"$fundef_202" to { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*), i8* undef }, i8* %"$$fundef_202_env_voidp_696", 1 - %"$$fundef_202_env_list_foldr_698" = getelementptr inbounds %"$$fundef_202_env_446", %"$$fundef_202_env_446"* %"$$fundef_202_envp_694", i32 0, i32 0 - %"$list_foldr_699" = load { i8*, i8* }*, { i8*, i8* }** %list_foldr - store { i8*, i8* }* %"$list_foldr_699", { i8*, i8* }** %"$$fundef_202_env_list_foldr_698" - store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$$fundef_202_cloval_697", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_201" - %"$$retval_201_700" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_201" - ret { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$$retval_201_700" + store { i8*, i8* }* %"$list_foldr_envload_850", { i8*, i8* }** %list_foldr + %"$retval_198" = alloca { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } + %"$gasrem_851" = load i64, i64* @_gasrem + %"$gascmp_852" = icmp ugt i64 1, %"$gasrem_851" + br i1 %"$gascmp_852", label %"$out_of_gas_853", label %"$have_gas_854" + +"$out_of_gas_853": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_854" + +"$have_gas_854": ; preds = %"$out_of_gas_853", %entry + %"$consume_855" = sub i64 %"$gasrem_851", 1 + store i64 %"$consume_855", i64* @_gasrem + %"$$fundef_199_envp_856_load" = load i8*, i8** @_execptr + %"$$fundef_199_envp_856_salloc" = call i8* @_salloc(i8* %"$$fundef_199_envp_856_load", i64 8) + %"$$fundef_199_envp_856" = bitcast i8* %"$$fundef_199_envp_856_salloc" to %"$$fundef_199_env_443"* + %"$$fundef_199_env_voidp_858" = bitcast %"$$fundef_199_env_443"* %"$$fundef_199_envp_856" to i8* + %"$$fundef_199_cloval_859" = insertvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })* bitcast ({ %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_199_env_443"*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })* @"$fundef_199" to { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*), i8* undef }, i8* %"$$fundef_199_env_voidp_858", 1 + %"$$fundef_199_env_list_foldr_860" = getelementptr inbounds %"$$fundef_199_env_443", %"$$fundef_199_env_443"* %"$$fundef_199_envp_856", i32 0, i32 0 + %"$list_foldr_861" = load { i8*, i8* }*, { i8*, i8* }** %list_foldr + store { i8*, i8* }* %"$list_foldr_861", { i8*, i8* }** %"$$fundef_199_env_list_foldr_860" + store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$$fundef_199_cloval_859", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_198" + %"$$retval_198_862" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_198" + ret { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } %"$$retval_198_862" } -define internal %TName_Bool* @"$fundef_168"(%"$$fundef_168_env_448"* %0, %TName_Bool* %1) { +define internal %TName_Bool* @"$fundef_165"(%"$$fundef_165_env_445"* %0, %TName_Bool* %1) { entry: - %"$retval_169" = alloca %TName_Bool* - %"$b_tag_678" = getelementptr inbounds %TName_Bool, %TName_Bool* %1, i32 0, i32 0 - %"$b_tag_679" = load i8, i8* %"$b_tag_678" - switch i8 %"$b_tag_679", label %"$empty_default_680" [ - i8 0, label %"$True_681" - i8 1, label %"$False_686" + %"$retval_166" = alloca %TName_Bool* + %"$gasrem_819" = load i64, i64* @_gasrem + %"$gascmp_820" = icmp ugt i64 2, %"$gasrem_819" + br i1 %"$gascmp_820", label %"$out_of_gas_821", label %"$have_gas_822" + +"$out_of_gas_821": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_822" + +"$have_gas_822": ; preds = %"$out_of_gas_821", %entry + %"$consume_823" = sub i64 %"$gasrem_819", 2 + store i64 %"$consume_823", i64* @_gasrem + %"$b_tag_825" = getelementptr inbounds %TName_Bool, %TName_Bool* %1, i32 0, i32 0 + %"$b_tag_826" = load i8, i8* %"$b_tag_825" + switch i8 %"$b_tag_826", label %"$empty_default_827" [ + i8 0, label %"$True_828" + i8 1, label %"$False_838" ] -"$True_681": ; preds = %entry - %"$b_682" = bitcast %TName_Bool* %1 to %CName_True* - %"$adtval_683_load" = load i8*, i8** @_execptr - %"$adtval_683_salloc" = call i8* @_salloc(i8* %"$adtval_683_load", i64 1) - %"$adtval_683" = bitcast i8* %"$adtval_683_salloc" to %CName_False* - %"$adtgep_684" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_683", i32 0, i32 0 - store i8 1, i8* %"$adtgep_684" - %"$adtptr_685" = bitcast %CName_False* %"$adtval_683" to %TName_Bool* - store %TName_Bool* %"$adtptr_685", %TName_Bool** %"$retval_169" - br label %"$matchsucc_677" - -"$False_686": ; preds = %entry - %"$b_687" = bitcast %TName_Bool* %1 to %CName_False* - %"$adtval_688_load" = load i8*, i8** @_execptr - %"$adtval_688_salloc" = call i8* @_salloc(i8* %"$adtval_688_load", i64 1) - %"$adtval_688" = bitcast i8* %"$adtval_688_salloc" to %CName_True* - %"$adtgep_689" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_688", i32 0, i32 0 - store i8 0, i8* %"$adtgep_689" - %"$adtptr_690" = bitcast %CName_True* %"$adtval_688" to %TName_Bool* - store %TName_Bool* %"$adtptr_690", %TName_Bool** %"$retval_169" - br label %"$matchsucc_677" - -"$empty_default_680": ; preds = %entry - br label %"$matchsucc_677" - -"$matchsucc_677": ; preds = %"$False_686", %"$True_681", %"$empty_default_680" - %"$$retval_169_691" = load %TName_Bool*, %TName_Bool** %"$retval_169" - ret %TName_Bool* %"$$retval_169_691" +"$True_828": ; preds = %"$have_gas_822" + %"$b_829" = bitcast %TName_Bool* %1 to %CName_True* + %"$gasrem_830" = load i64, i64* @_gasrem + %"$gascmp_831" = icmp ugt i64 1, %"$gasrem_830" + br i1 %"$gascmp_831", label %"$out_of_gas_832", label %"$have_gas_833" + +"$out_of_gas_832": ; preds = %"$True_828" + call void @_out_of_gas() + br label %"$have_gas_833" + +"$have_gas_833": ; preds = %"$out_of_gas_832", %"$True_828" + %"$consume_834" = sub i64 %"$gasrem_830", 1 + store i64 %"$consume_834", i64* @_gasrem + %"$adtval_835_load" = load i8*, i8** @_execptr + %"$adtval_835_salloc" = call i8* @_salloc(i8* %"$adtval_835_load", i64 1) + %"$adtval_835" = bitcast i8* %"$adtval_835_salloc" to %CName_False* + %"$adtgep_836" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_835", i32 0, i32 0 + store i8 1, i8* %"$adtgep_836" + %"$adtptr_837" = bitcast %CName_False* %"$adtval_835" to %TName_Bool* + store %TName_Bool* %"$adtptr_837", %TName_Bool** %"$retval_166" + br label %"$matchsucc_824" + +"$False_838": ; preds = %"$have_gas_822" + %"$b_839" = bitcast %TName_Bool* %1 to %CName_False* + %"$gasrem_840" = load i64, i64* @_gasrem + %"$gascmp_841" = icmp ugt i64 1, %"$gasrem_840" + br i1 %"$gascmp_841", label %"$out_of_gas_842", label %"$have_gas_843" + +"$out_of_gas_842": ; preds = %"$False_838" + call void @_out_of_gas() + br label %"$have_gas_843" + +"$have_gas_843": ; preds = %"$out_of_gas_842", %"$False_838" + %"$consume_844" = sub i64 %"$gasrem_840", 1 + store i64 %"$consume_844", i64* @_gasrem + %"$adtval_845_load" = load i8*, i8** @_execptr + %"$adtval_845_salloc" = call i8* @_salloc(i8* %"$adtval_845_load", i64 1) + %"$adtval_845" = bitcast i8* %"$adtval_845_salloc" to %CName_True* + %"$adtgep_846" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_845", i32 0, i32 0 + store i8 0, i8* %"$adtgep_846" + %"$adtptr_847" = bitcast %CName_True* %"$adtval_845" to %TName_Bool* + store %TName_Bool* %"$adtptr_847", %TName_Bool** %"$retval_166" + br label %"$matchsucc_824" + +"$empty_default_827": ; preds = %"$have_gas_822" + br label %"$matchsucc_824" + +"$matchsucc_824": ; preds = %"$have_gas_843", %"$have_gas_833", %"$empty_default_827" + %"$$retval_166_848" = load %TName_Bool*, %TName_Bool** %"$retval_166" + ret %TName_Bool* %"$$retval_166_848" } -define internal %TName_Bool* @"$fundef_172"(%"$$fundef_172_env_449"* %0, %TName_Bool* %1) { +define internal %TName_Bool* @"$fundef_169"(%"$$fundef_169_env_446"* %0, %TName_Bool* %1) { entry: - %"$$fundef_172_env_b_662" = getelementptr inbounds %"$$fundef_172_env_449", %"$$fundef_172_env_449"* %0, i32 0, i32 0 - %"$b_envload_663" = load %TName_Bool*, %TName_Bool** %"$$fundef_172_env_b_662" + %"$$fundef_169_env_b_789" = getelementptr inbounds %"$$fundef_169_env_446", %"$$fundef_169_env_446"* %0, i32 0, i32 0 + %"$b_envload_790" = load %TName_Bool*, %TName_Bool** %"$$fundef_169_env_b_789" %b = alloca %TName_Bool* - store %TName_Bool* %"$b_envload_663", %TName_Bool** %b - %"$retval_173" = alloca %TName_Bool* - %"$b_665" = load %TName_Bool*, %TName_Bool** %b - %"$b_tag_666" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b_665", i32 0, i32 0 - %"$b_tag_667" = load i8, i8* %"$b_tag_666" - switch i8 %"$b_tag_667", label %"$empty_default_668" [ - i8 0, label %"$True_669" - i8 1, label %"$False_674" + store %TName_Bool* %"$b_envload_790", %TName_Bool** %b + %"$retval_170" = alloca %TName_Bool* + %"$gasrem_791" = load i64, i64* @_gasrem + %"$gascmp_792" = icmp ugt i64 2, %"$gasrem_791" + br i1 %"$gascmp_792", label %"$out_of_gas_793", label %"$have_gas_794" + +"$out_of_gas_793": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_794" + +"$have_gas_794": ; preds = %"$out_of_gas_793", %entry + %"$consume_795" = sub i64 %"$gasrem_791", 2 + store i64 %"$consume_795", i64* @_gasrem + %"$b_797" = load %TName_Bool*, %TName_Bool** %b + %"$b_tag_798" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b_797", i32 0, i32 0 + %"$b_tag_799" = load i8, i8* %"$b_tag_798" + switch i8 %"$b_tag_799", label %"$empty_default_800" [ + i8 0, label %"$True_801" + i8 1, label %"$False_811" ] -"$True_669": ; preds = %entry - %"$b_670" = bitcast %TName_Bool* %"$b_665" to %CName_True* - %"$adtval_671_load" = load i8*, i8** @_execptr - %"$adtval_671_salloc" = call i8* @_salloc(i8* %"$adtval_671_load", i64 1) - %"$adtval_671" = bitcast i8* %"$adtval_671_salloc" to %CName_True* - %"$adtgep_672" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_671", i32 0, i32 0 - store i8 0, i8* %"$adtgep_672" - %"$adtptr_673" = bitcast %CName_True* %"$adtval_671" to %TName_Bool* - store %TName_Bool* %"$adtptr_673", %TName_Bool** %"$retval_173" - br label %"$matchsucc_664" - -"$False_674": ; preds = %entry - %"$b_675" = bitcast %TName_Bool* %"$b_665" to %CName_False* - store %TName_Bool* %1, %TName_Bool** %"$retval_173" - br label %"$matchsucc_664" - -"$empty_default_668": ; preds = %entry - br label %"$matchsucc_664" - -"$matchsucc_664": ; preds = %"$False_674", %"$True_669", %"$empty_default_668" - %"$$retval_173_676" = load %TName_Bool*, %TName_Bool** %"$retval_173" - ret %TName_Bool* %"$$retval_173_676" +"$True_801": ; preds = %"$have_gas_794" + %"$b_802" = bitcast %TName_Bool* %"$b_797" to %CName_True* + %"$gasrem_803" = load i64, i64* @_gasrem + %"$gascmp_804" = icmp ugt i64 1, %"$gasrem_803" + br i1 %"$gascmp_804", label %"$out_of_gas_805", label %"$have_gas_806" + +"$out_of_gas_805": ; preds = %"$True_801" + call void @_out_of_gas() + br label %"$have_gas_806" + +"$have_gas_806": ; preds = %"$out_of_gas_805", %"$True_801" + %"$consume_807" = sub i64 %"$gasrem_803", 1 + store i64 %"$consume_807", i64* @_gasrem + %"$adtval_808_load" = load i8*, i8** @_execptr + %"$adtval_808_salloc" = call i8* @_salloc(i8* %"$adtval_808_load", i64 1) + %"$adtval_808" = bitcast i8* %"$adtval_808_salloc" to %CName_True* + %"$adtgep_809" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_808", i32 0, i32 0 + store i8 0, i8* %"$adtgep_809" + %"$adtptr_810" = bitcast %CName_True* %"$adtval_808" to %TName_Bool* + store %TName_Bool* %"$adtptr_810", %TName_Bool** %"$retval_170" + br label %"$matchsucc_796" + +"$False_811": ; preds = %"$have_gas_794" + %"$b_812" = bitcast %TName_Bool* %"$b_797" to %CName_False* + %"$gasrem_813" = load i64, i64* @_gasrem + %"$gascmp_814" = icmp ugt i64 1, %"$gasrem_813" + br i1 %"$gascmp_814", label %"$out_of_gas_815", label %"$have_gas_816" + +"$out_of_gas_815": ; preds = %"$False_811" + call void @_out_of_gas() + br label %"$have_gas_816" + +"$have_gas_816": ; preds = %"$out_of_gas_815", %"$False_811" + %"$consume_817" = sub i64 %"$gasrem_813", 1 + store i64 %"$consume_817", i64* @_gasrem + store %TName_Bool* %1, %TName_Bool** %"$retval_170" + br label %"$matchsucc_796" + +"$empty_default_800": ; preds = %"$have_gas_794" + br label %"$matchsucc_796" + +"$matchsucc_796": ; preds = %"$have_gas_816", %"$have_gas_806", %"$empty_default_800" + %"$$retval_170_818" = load %TName_Bool*, %TName_Bool** %"$retval_170" + ret %TName_Bool* %"$$retval_170_818" } -define internal { %TName_Bool* (i8*, %TName_Bool*)*, i8* } @"$fundef_170"(%"$$fundef_170_env_450"* %0, %TName_Bool* %1) { +define internal { %TName_Bool* (i8*, %TName_Bool*)*, i8* } @"$fundef_167"(%"$$fundef_167_env_447"* %0, %TName_Bool* %1) { entry: - %"$retval_171" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$$fundef_172_envp_656_load" = load i8*, i8** @_execptr - %"$$fundef_172_envp_656_salloc" = call i8* @_salloc(i8* %"$$fundef_172_envp_656_load", i64 8) - %"$$fundef_172_envp_656" = bitcast i8* %"$$fundef_172_envp_656_salloc" to %"$$fundef_172_env_449"* - %"$$fundef_172_env_voidp_658" = bitcast %"$$fundef_172_env_449"* %"$$fundef_172_envp_656" to i8* - %"$$fundef_172_cloval_659" = insertvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } { %TName_Bool* (i8*, %TName_Bool*)* bitcast (%TName_Bool* (%"$$fundef_172_env_449"*, %TName_Bool*)* @"$fundef_172" to %TName_Bool* (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_172_env_voidp_658", 1 - %"$$fundef_172_env_b_660" = getelementptr inbounds %"$$fundef_172_env_449", %"$$fundef_172_env_449"* %"$$fundef_172_envp_656", i32 0, i32 0 - store %TName_Bool* %1, %TName_Bool** %"$$fundef_172_env_b_660" - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$fundef_172_cloval_659", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_171" - %"$$retval_171_661" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_171" - ret { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$retval_171_661" + %"$retval_168" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$gasrem_778" = load i64, i64* @_gasrem + %"$gascmp_779" = icmp ugt i64 1, %"$gasrem_778" + br i1 %"$gascmp_779", label %"$out_of_gas_780", label %"$have_gas_781" + +"$out_of_gas_780": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_781" + +"$have_gas_781": ; preds = %"$out_of_gas_780", %entry + %"$consume_782" = sub i64 %"$gasrem_778", 1 + store i64 %"$consume_782", i64* @_gasrem + %"$$fundef_169_envp_783_load" = load i8*, i8** @_execptr + %"$$fundef_169_envp_783_salloc" = call i8* @_salloc(i8* %"$$fundef_169_envp_783_load", i64 8) + %"$$fundef_169_envp_783" = bitcast i8* %"$$fundef_169_envp_783_salloc" to %"$$fundef_169_env_446"* + %"$$fundef_169_env_voidp_785" = bitcast %"$$fundef_169_env_446"* %"$$fundef_169_envp_783" to i8* + %"$$fundef_169_cloval_786" = insertvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } { %TName_Bool* (i8*, %TName_Bool*)* bitcast (%TName_Bool* (%"$$fundef_169_env_446"*, %TName_Bool*)* @"$fundef_169" to %TName_Bool* (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_169_env_voidp_785", 1 + %"$$fundef_169_env_b_787" = getelementptr inbounds %"$$fundef_169_env_446", %"$$fundef_169_env_446"* %"$$fundef_169_envp_783", i32 0, i32 0 + store %TName_Bool* %1, %TName_Bool** %"$$fundef_169_env_b_787" + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$fundef_169_cloval_786", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_168" + %"$$retval_168_788" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_168" + ret { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$retval_168_788" } -define internal %TName_Bool* @"$fundef_176"(%"$$fundef_176_env_451"* %0, %TName_Bool* %1) { +define internal %TName_Bool* @"$fundef_173"(%"$$fundef_173_env_448"* %0, %TName_Bool* %1) { entry: - %"$$fundef_176_env_b_641" = getelementptr inbounds %"$$fundef_176_env_451", %"$$fundef_176_env_451"* %0, i32 0, i32 0 - %"$b_envload_642" = load %TName_Bool*, %TName_Bool** %"$$fundef_176_env_b_641" + %"$$fundef_173_env_b_748" = getelementptr inbounds %"$$fundef_173_env_448", %"$$fundef_173_env_448"* %0, i32 0, i32 0 + %"$b_envload_749" = load %TName_Bool*, %TName_Bool** %"$$fundef_173_env_b_748" %b = alloca %TName_Bool* - store %TName_Bool* %"$b_envload_642", %TName_Bool** %b - %"$retval_177" = alloca %TName_Bool* - %"$b_644" = load %TName_Bool*, %TName_Bool** %b - %"$b_tag_645" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b_644", i32 0, i32 0 - %"$b_tag_646" = load i8, i8* %"$b_tag_645" - switch i8 %"$b_tag_646", label %"$empty_default_647" [ - i8 1, label %"$False_648" - i8 0, label %"$True_653" + store %TName_Bool* %"$b_envload_749", %TName_Bool** %b + %"$retval_174" = alloca %TName_Bool* + %"$gasrem_750" = load i64, i64* @_gasrem + %"$gascmp_751" = icmp ugt i64 2, %"$gasrem_750" + br i1 %"$gascmp_751", label %"$out_of_gas_752", label %"$have_gas_753" + +"$out_of_gas_752": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_753" + +"$have_gas_753": ; preds = %"$out_of_gas_752", %entry + %"$consume_754" = sub i64 %"$gasrem_750", 2 + store i64 %"$consume_754", i64* @_gasrem + %"$b_756" = load %TName_Bool*, %TName_Bool** %b + %"$b_tag_757" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b_756", i32 0, i32 0 + %"$b_tag_758" = load i8, i8* %"$b_tag_757" + switch i8 %"$b_tag_758", label %"$empty_default_759" [ + i8 1, label %"$False_760" + i8 0, label %"$True_770" ] -"$False_648": ; preds = %entry - %"$b_649" = bitcast %TName_Bool* %"$b_644" to %CName_False* - %"$adtval_650_load" = load i8*, i8** @_execptr - %"$adtval_650_salloc" = call i8* @_salloc(i8* %"$adtval_650_load", i64 1) - %"$adtval_650" = bitcast i8* %"$adtval_650_salloc" to %CName_False* - %"$adtgep_651" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_650", i32 0, i32 0 - store i8 1, i8* %"$adtgep_651" - %"$adtptr_652" = bitcast %CName_False* %"$adtval_650" to %TName_Bool* - store %TName_Bool* %"$adtptr_652", %TName_Bool** %"$retval_177" - br label %"$matchsucc_643" - -"$True_653": ; preds = %entry - %"$b_654" = bitcast %TName_Bool* %"$b_644" to %CName_True* - store %TName_Bool* %1, %TName_Bool** %"$retval_177" - br label %"$matchsucc_643" - -"$empty_default_647": ; preds = %entry - br label %"$matchsucc_643" - -"$matchsucc_643": ; preds = %"$True_653", %"$False_648", %"$empty_default_647" - %"$$retval_177_655" = load %TName_Bool*, %TName_Bool** %"$retval_177" - ret %TName_Bool* %"$$retval_177_655" +"$False_760": ; preds = %"$have_gas_753" + %"$b_761" = bitcast %TName_Bool* %"$b_756" to %CName_False* + %"$gasrem_762" = load i64, i64* @_gasrem + %"$gascmp_763" = icmp ugt i64 1, %"$gasrem_762" + br i1 %"$gascmp_763", label %"$out_of_gas_764", label %"$have_gas_765" + +"$out_of_gas_764": ; preds = %"$False_760" + call void @_out_of_gas() + br label %"$have_gas_765" + +"$have_gas_765": ; preds = %"$out_of_gas_764", %"$False_760" + %"$consume_766" = sub i64 %"$gasrem_762", 1 + store i64 %"$consume_766", i64* @_gasrem + %"$adtval_767_load" = load i8*, i8** @_execptr + %"$adtval_767_salloc" = call i8* @_salloc(i8* %"$adtval_767_load", i64 1) + %"$adtval_767" = bitcast i8* %"$adtval_767_salloc" to %CName_False* + %"$adtgep_768" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_767", i32 0, i32 0 + store i8 1, i8* %"$adtgep_768" + %"$adtptr_769" = bitcast %CName_False* %"$adtval_767" to %TName_Bool* + store %TName_Bool* %"$adtptr_769", %TName_Bool** %"$retval_174" + br label %"$matchsucc_755" + +"$True_770": ; preds = %"$have_gas_753" + %"$b_771" = bitcast %TName_Bool* %"$b_756" to %CName_True* + %"$gasrem_772" = load i64, i64* @_gasrem + %"$gascmp_773" = icmp ugt i64 1, %"$gasrem_772" + br i1 %"$gascmp_773", label %"$out_of_gas_774", label %"$have_gas_775" + +"$out_of_gas_774": ; preds = %"$True_770" + call void @_out_of_gas() + br label %"$have_gas_775" + +"$have_gas_775": ; preds = %"$out_of_gas_774", %"$True_770" + %"$consume_776" = sub i64 %"$gasrem_772", 1 + store i64 %"$consume_776", i64* @_gasrem + store %TName_Bool* %1, %TName_Bool** %"$retval_174" + br label %"$matchsucc_755" + +"$empty_default_759": ; preds = %"$have_gas_753" + br label %"$matchsucc_755" + +"$matchsucc_755": ; preds = %"$have_gas_775", %"$have_gas_765", %"$empty_default_759" + %"$$retval_174_777" = load %TName_Bool*, %TName_Bool** %"$retval_174" + ret %TName_Bool* %"$$retval_174_777" } -define internal { %TName_Bool* (i8*, %TName_Bool*)*, i8* } @"$fundef_174"(%"$$fundef_174_env_452"* %0, %TName_Bool* %1) { +define internal { %TName_Bool* (i8*, %TName_Bool*)*, i8* } @"$fundef_171"(%"$$fundef_171_env_449"* %0, %TName_Bool* %1) { entry: - %"$retval_175" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$$fundef_176_envp_635_load" = load i8*, i8** @_execptr - %"$$fundef_176_envp_635_salloc" = call i8* @_salloc(i8* %"$$fundef_176_envp_635_load", i64 8) - %"$$fundef_176_envp_635" = bitcast i8* %"$$fundef_176_envp_635_salloc" to %"$$fundef_176_env_451"* - %"$$fundef_176_env_voidp_637" = bitcast %"$$fundef_176_env_451"* %"$$fundef_176_envp_635" to i8* - %"$$fundef_176_cloval_638" = insertvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } { %TName_Bool* (i8*, %TName_Bool*)* bitcast (%TName_Bool* (%"$$fundef_176_env_451"*, %TName_Bool*)* @"$fundef_176" to %TName_Bool* (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_176_env_voidp_637", 1 - %"$$fundef_176_env_b_639" = getelementptr inbounds %"$$fundef_176_env_451", %"$$fundef_176_env_451"* %"$$fundef_176_envp_635", i32 0, i32 0 - store %TName_Bool* %1, %TName_Bool** %"$$fundef_176_env_b_639" - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$fundef_176_cloval_638", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_175" - %"$$retval_175_640" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_175" - ret { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$retval_175_640" + %"$retval_172" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$gasrem_737" = load i64, i64* @_gasrem + %"$gascmp_738" = icmp ugt i64 1, %"$gasrem_737" + br i1 %"$gascmp_738", label %"$out_of_gas_739", label %"$have_gas_740" + +"$out_of_gas_739": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_740" + +"$have_gas_740": ; preds = %"$out_of_gas_739", %entry + %"$consume_741" = sub i64 %"$gasrem_737", 1 + store i64 %"$consume_741", i64* @_gasrem + %"$$fundef_173_envp_742_load" = load i8*, i8** @_execptr + %"$$fundef_173_envp_742_salloc" = call i8* @_salloc(i8* %"$$fundef_173_envp_742_load", i64 8) + %"$$fundef_173_envp_742" = bitcast i8* %"$$fundef_173_envp_742_salloc" to %"$$fundef_173_env_448"* + %"$$fundef_173_env_voidp_744" = bitcast %"$$fundef_173_env_448"* %"$$fundef_173_envp_742" to i8* + %"$$fundef_173_cloval_745" = insertvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } { %TName_Bool* (i8*, %TName_Bool*)* bitcast (%TName_Bool* (%"$$fundef_173_env_448"*, %TName_Bool*)* @"$fundef_173" to %TName_Bool* (i8*, %TName_Bool*)*), i8* undef }, i8* %"$$fundef_173_env_voidp_744", 1 + %"$$fundef_173_env_b_746" = getelementptr inbounds %"$$fundef_173_env_448", %"$$fundef_173_env_448"* %"$$fundef_173_envp_742", i32 0, i32 0 + store %TName_Bool* %1, %TName_Bool** %"$$fundef_173_env_b_746" + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$fundef_173_cloval_745", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_172" + %"$$retval_172_747" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$retval_172" + ret { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$retval_172_747" } -define internal %TName_Option_ByStr20* @"$fundef_156"(%"$$fundef_156_env_453"* %0, %TName_Option_ByStr20* %1) { +define internal %TName_Option_ByStr20* @"$fundef_153"(%"$$fundef_153_env_450"* %0, %TName_Option_ByStr20* %1) { entry: - %"$$fundef_156_env_g_620" = getelementptr inbounds %"$$fundef_156_env_453", %"$$fundef_156_env_453"* %0, i32 0, i32 0 - %"$g_envload_621" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_156_env_g_620" + %"$$fundef_153_env_g_717" = getelementptr inbounds %"$$fundef_153_env_450", %"$$fundef_153_env_450"* %0, i32 0, i32 0 + %"$g_envload_718" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_153_env_g_717" %g = alloca { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } - store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$g_envload_621", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %g - %"$$fundef_156_env_t_622" = getelementptr inbounds %"$$fundef_156_env_453", %"$$fundef_156_env_453"* %0, i32 0, i32 1 - %"$t_envload_623" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$$fundef_156_env_t_622" + store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$g_envload_718", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %g + %"$$fundef_153_env_t_719" = getelementptr inbounds %"$$fundef_153_env_450", %"$$fundef_153_env_450"* %0, i32 0, i32 1 + %"$t_envload_720" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$$fundef_153_env_t_719" %t = alloca %TName_List_ByStr20* - store %TName_List_ByStr20* %"$t_envload_623", %TName_List_ByStr20** %t - %"$retval_157" = alloca %TName_Option_ByStr20* - %"$g_14" = alloca { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } - %"$g_624" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %g - %"$g_fptr_625" = extractvalue { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$g_624", 0 - %"$g_envptr_626" = extractvalue { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$g_624", 1 - %"$g_call_627" = call { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$g_fptr_625"(i8* %"$g_envptr_626", %TName_Option_ByStr20* %1) - store { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$g_call_627", { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$g_14" - %"$g_15" = alloca %TName_Option_ByStr20* - %"$$g_14_628" = load { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$g_14" - %"$$g_14_fptr_629" = extractvalue { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$g_14_628", 0 - %"$$g_14_envptr_630" = extractvalue { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$g_14_628", 1 - %"$t_631" = load %TName_List_ByStr20*, %TName_List_ByStr20** %t - %"$$g_14_call_632" = call %TName_Option_ByStr20* %"$$g_14_fptr_629"(i8* %"$$g_14_envptr_630", %TName_List_ByStr20* %"$t_631") - store %TName_Option_ByStr20* %"$$g_14_call_632", %TName_Option_ByStr20** %"$g_15" - %"$$g_15_633" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$g_15" - store %TName_Option_ByStr20* %"$$g_15_633", %TName_Option_ByStr20** %"$retval_157" - %"$$retval_157_634" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$retval_157" - ret %TName_Option_ByStr20* %"$$retval_157_634" + store %TName_List_ByStr20* %"$t_envload_720", %TName_List_ByStr20** %t + %"$retval_154" = alloca %TName_Option_ByStr20* + %"$gasrem_721" = load i64, i64* @_gasrem + %"$gascmp_722" = icmp ugt i64 1, %"$gasrem_721" + br i1 %"$gascmp_722", label %"$out_of_gas_723", label %"$have_gas_724" + +"$out_of_gas_723": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_724" + +"$have_gas_724": ; preds = %"$out_of_gas_723", %entry + %"$consume_725" = sub i64 %"$gasrem_721", 1 + store i64 %"$consume_725", i64* @_gasrem + %"$g_11" = alloca { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } + %"$g_726" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %g + %"$g_fptr_727" = extractvalue { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$g_726", 0 + %"$g_envptr_728" = extractvalue { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$g_726", 1 + %"$g_call_729" = call { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$g_fptr_727"(i8* %"$g_envptr_728", %TName_Option_ByStr20* %1) + store { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$g_call_729", { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$g_11" + %"$g_12" = alloca %TName_Option_ByStr20* + %"$$g_11_730" = load { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$g_11" + %"$$g_11_fptr_731" = extractvalue { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$g_11_730", 0 + %"$$g_11_envptr_732" = extractvalue { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$g_11_730", 1 + %"$t_733" = load %TName_List_ByStr20*, %TName_List_ByStr20** %t + %"$$g_11_call_734" = call %TName_Option_ByStr20* %"$$g_11_fptr_731"(i8* %"$$g_11_envptr_732", %TName_List_ByStr20* %"$t_733") + store %TName_Option_ByStr20* %"$$g_11_call_734", %TName_Option_ByStr20** %"$g_12" + %"$$g_12_735" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$g_12" + store %TName_Option_ByStr20* %"$$g_12_735", %TName_Option_ByStr20** %"$retval_154" + %"$$retval_154_736" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$retval_154" + ret %TName_Option_ByStr20* %"$$retval_154_736" } -define internal %TName_Option_ByStr20* @"$fundef_154"(%"$$fundef_154_env_454"* %0, %TName_List_ByStr20* %1) { +define internal %TName_Option_ByStr20* @"$fundef_151"(%"$$fundef_151_env_451"* %0, %TName_List_ByStr20* %1) { entry: - %"$$fundef_154_env_f_575" = getelementptr inbounds %"$$fundef_154_env_454", %"$$fundef_154_env_454"* %0, i32 0, i32 0 - %"$f_envload_576" = load { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_154_env_f_575" + %"$$fundef_151_env_f_647" = getelementptr inbounds %"$$fundef_151_env_451", %"$$fundef_151_env_451"* %0, i32 0, i32 0 + %"$f_envload_648" = load { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_151_env_f_647" %f = alloca { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } - store { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$f_envload_576", { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %f - %"$$fundef_154_env_g_577" = getelementptr inbounds %"$$fundef_154_env_454", %"$$fundef_154_env_454"* %0, i32 0, i32 1 - %"$g_envload_578" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_154_env_g_577" + store { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$f_envload_648", { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %f + %"$$fundef_151_env_g_649" = getelementptr inbounds %"$$fundef_151_env_451", %"$$fundef_151_env_451"* %0, i32 0, i32 1 + %"$g_envload_650" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_151_env_g_649" %g = alloca { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } - store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$g_envload_578", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %g - %"$$fundef_154_env_z_579" = getelementptr inbounds %"$$fundef_154_env_454", %"$$fundef_154_env_454"* %0, i32 0, i32 2 - %"$z_envload_580" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$$fundef_154_env_z_579" + store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$g_envload_650", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %g + %"$$fundef_151_env_z_651" = getelementptr inbounds %"$$fundef_151_env_451", %"$$fundef_151_env_451"* %0, i32 0, i32 2 + %"$z_envload_652" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$$fundef_151_env_z_651" %z = alloca %TName_Option_ByStr20* - store %TName_Option_ByStr20* %"$z_envload_580", %TName_Option_ByStr20** %z - %"$retval_155" = alloca %TName_Option_ByStr20* - %"$l_tag_582" = getelementptr inbounds %TName_List_ByStr20, %TName_List_ByStr20* %1, i32 0, i32 0 - %"$l_tag_583" = load i8, i8* %"$l_tag_582" - switch i8 %"$l_tag_583", label %"$empty_default_584" [ - i8 0, label %"$Cons_585" - i8 1, label %"$Nil_616" + store %TName_Option_ByStr20* %"$z_envload_652", %TName_Option_ByStr20** %z + %"$retval_152" = alloca %TName_Option_ByStr20* + %"$gasrem_653" = load i64, i64* @_gasrem + %"$gascmp_654" = icmp ugt i64 2, %"$gasrem_653" + br i1 %"$gascmp_654", label %"$out_of_gas_655", label %"$have_gas_656" + +"$out_of_gas_655": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_656" + +"$have_gas_656": ; preds = %"$out_of_gas_655", %entry + %"$consume_657" = sub i64 %"$gasrem_653", 2 + store i64 %"$consume_657", i64* @_gasrem + %"$l_tag_659" = getelementptr inbounds %TName_List_ByStr20, %TName_List_ByStr20* %1, i32 0, i32 0 + %"$l_tag_660" = load i8, i8* %"$l_tag_659" + switch i8 %"$l_tag_660", label %"$empty_default_661" [ + i8 0, label %"$Cons_662" + i8 1, label %"$Nil_708" ] -"$Cons_585": ; preds = %entry - %"$l_586" = bitcast %TName_List_ByStr20* %1 to %CName_Cons_ByStr20* - %"$h_gep_587" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$l_586", i32 0, i32 1 - %"$h_load_588" = load [20 x i8], [20 x i8]* %"$h_gep_587" +"$Cons_662": ; preds = %"$have_gas_656" + %"$l_663" = bitcast %TName_List_ByStr20* %1 to %CName_Cons_ByStr20* + %"$h_gep_664" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$l_663", i32 0, i32 1 + %"$h_load_665" = load [20 x i8], [20 x i8]* %"$h_gep_664" %h = alloca [20 x i8] - store [20 x i8] %"$h_load_588", [20 x i8]* %h - %"$t_gep_589" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$l_586", i32 0, i32 2 - %"$t_load_590" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$t_gep_589" + store [20 x i8] %"$h_load_665", [20 x i8]* %h + %"$t_gep_666" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$l_663", i32 0, i32 2 + %"$t_load_667" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$t_gep_666" %t = alloca %TName_List_ByStr20* - store %TName_List_ByStr20* %"$t_load_590", %TName_List_ByStr20** %t + store %TName_List_ByStr20* %"$t_load_667", %TName_List_ByStr20** %t + %"$gasrem_668" = load i64, i64* @_gasrem + %"$gascmp_669" = icmp ugt i64 1, %"$gasrem_668" + br i1 %"$gascmp_669", label %"$out_of_gas_670", label %"$have_gas_671" + +"$out_of_gas_670": ; preds = %"$Cons_662" + call void @_out_of_gas() + br label %"$have_gas_671" + +"$have_gas_671": ; preds = %"$out_of_gas_670", %"$Cons_662" + %"$consume_672" = sub i64 %"$gasrem_668", 1 + store i64 %"$consume_672", i64* @_gasrem %partial = alloca { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* } - %"$$fundef_156_envp_591_load" = load i8*, i8** @_execptr - %"$$fundef_156_envp_591_salloc" = call i8* @_salloc(i8* %"$$fundef_156_envp_591_load", i64 24) - %"$$fundef_156_envp_591" = bitcast i8* %"$$fundef_156_envp_591_salloc" to %"$$fundef_156_env_453"* - %"$$fundef_156_env_voidp_593" = bitcast %"$$fundef_156_env_453"* %"$$fundef_156_envp_591" to i8* - %"$$fundef_156_cloval_594" = insertvalue { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* } { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)* bitcast (%TName_Option_ByStr20* (%"$$fundef_156_env_453"*, %TName_Option_ByStr20*)* @"$fundef_156" to %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*), i8* undef }, i8* %"$$fundef_156_env_voidp_593", 1 - %"$$fundef_156_env_g_595" = getelementptr inbounds %"$$fundef_156_env_453", %"$$fundef_156_env_453"* %"$$fundef_156_envp_591", i32 0, i32 0 - %"$g_596" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %g - store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$g_596", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_156_env_g_595" - %"$$fundef_156_env_t_597" = getelementptr inbounds %"$$fundef_156_env_453", %"$$fundef_156_env_453"* %"$$fundef_156_envp_591", i32 0, i32 1 - %"$t_598" = load %TName_List_ByStr20*, %TName_List_ByStr20** %t - store %TName_List_ByStr20* %"$t_598", %TName_List_ByStr20** %"$$fundef_156_env_t_597" - store { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* } %"$$fundef_156_cloval_594", { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* }* %partial - %"$f_16" = alloca { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$f_599" = load { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %f - %"$f_fptr_600" = extractvalue { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$f_599", 0 - %"$f_envptr_601" = extractvalue { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$f_599", 1 - %"$z_602" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %z - %"$f_call_603" = call { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_fptr_600"(i8* %"$f_envptr_601", %TName_Option_ByStr20* %"$z_602") - store { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_call_603", { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$f_16" - %"$f_17" = alloca { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } - %"$$f_16_604" = load { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$f_16" - %"$$f_16_fptr_605" = extractvalue { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$f_16_604", 0 - %"$$f_16_envptr_606" = extractvalue { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$f_16_604", 1 - %"$$f_16_h_607" = alloca [20 x i8] - %"$h_608" = load [20 x i8], [20 x i8]* %h - store [20 x i8] %"$h_608", [20 x i8]* %"$$f_16_h_607" - %"$$f_16_call_609" = call { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$$f_16_fptr_605"(i8* %"$$f_16_envptr_606", [20 x i8]* %"$$f_16_h_607") - store { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$$f_16_call_609", { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }* %"$f_17" - %"$f_18" = alloca %TName_Option_ByStr20* - %"$$f_17_610" = load { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }, { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }* %"$f_17" - %"$$f_17_fptr_611" = extractvalue { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$$f_17_610", 0 - %"$$f_17_envptr_612" = extractvalue { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$$f_17_610", 1 - %"$partial_613" = load { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* }, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* }* %partial - %"$$f_17_call_614" = call %TName_Option_ByStr20* %"$$f_17_fptr_611"(i8* %"$$f_17_envptr_612", { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* } %"$partial_613") - store %TName_Option_ByStr20* %"$$f_17_call_614", %TName_Option_ByStr20** %"$f_18" - %"$$f_18_615" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$f_18" - store %TName_Option_ByStr20* %"$$f_18_615", %TName_Option_ByStr20** %"$retval_155" - br label %"$matchsucc_581" - -"$Nil_616": ; preds = %entry - %"$l_617" = bitcast %TName_List_ByStr20* %1 to %CName_Nil_ByStr20* - %"$z_618" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %z - store %TName_Option_ByStr20* %"$z_618", %TName_Option_ByStr20** %"$retval_155" - br label %"$matchsucc_581" - -"$empty_default_584": ; preds = %entry - br label %"$matchsucc_581" - -"$matchsucc_581": ; preds = %"$Nil_616", %"$Cons_585", %"$empty_default_584" - %"$$retval_155_619" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$retval_155" - ret %TName_Option_ByStr20* %"$$retval_155_619" + %"$gasrem_673" = load i64, i64* @_gasrem + %"$gascmp_674" = icmp ugt i64 1, %"$gasrem_673" + br i1 %"$gascmp_674", label %"$out_of_gas_675", label %"$have_gas_676" + +"$out_of_gas_675": ; preds = %"$have_gas_671" + call void @_out_of_gas() + br label %"$have_gas_676" + +"$have_gas_676": ; preds = %"$out_of_gas_675", %"$have_gas_671" + %"$consume_677" = sub i64 %"$gasrem_673", 1 + store i64 %"$consume_677", i64* @_gasrem + %"$$fundef_153_envp_678_load" = load i8*, i8** @_execptr + %"$$fundef_153_envp_678_salloc" = call i8* @_salloc(i8* %"$$fundef_153_envp_678_load", i64 24) + %"$$fundef_153_envp_678" = bitcast i8* %"$$fundef_153_envp_678_salloc" to %"$$fundef_153_env_450"* + %"$$fundef_153_env_voidp_680" = bitcast %"$$fundef_153_env_450"* %"$$fundef_153_envp_678" to i8* + %"$$fundef_153_cloval_681" = insertvalue { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* } { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)* bitcast (%TName_Option_ByStr20* (%"$$fundef_153_env_450"*, %TName_Option_ByStr20*)* @"$fundef_153" to %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*), i8* undef }, i8* %"$$fundef_153_env_voidp_680", 1 + %"$$fundef_153_env_g_682" = getelementptr inbounds %"$$fundef_153_env_450", %"$$fundef_153_env_450"* %"$$fundef_153_envp_678", i32 0, i32 0 + %"$g_683" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %g + store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$g_683", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_153_env_g_682" + %"$$fundef_153_env_t_684" = getelementptr inbounds %"$$fundef_153_env_450", %"$$fundef_153_env_450"* %"$$fundef_153_envp_678", i32 0, i32 1 + %"$t_685" = load %TName_List_ByStr20*, %TName_List_ByStr20** %t + store %TName_List_ByStr20* %"$t_685", %TName_List_ByStr20** %"$$fundef_153_env_t_684" + store { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* } %"$$fundef_153_cloval_681", { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* }* %partial + %"$gasrem_686" = load i64, i64* @_gasrem + %"$gascmp_687" = icmp ugt i64 1, %"$gasrem_686" + br i1 %"$gascmp_687", label %"$out_of_gas_688", label %"$have_gas_689" + +"$out_of_gas_688": ; preds = %"$have_gas_676" + call void @_out_of_gas() + br label %"$have_gas_689" + +"$have_gas_689": ; preds = %"$out_of_gas_688", %"$have_gas_676" + %"$consume_690" = sub i64 %"$gasrem_686", 1 + store i64 %"$consume_690", i64* @_gasrem + %"$f_13" = alloca { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } + %"$f_691" = load { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %f + %"$f_fptr_692" = extractvalue { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$f_691", 0 + %"$f_envptr_693" = extractvalue { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$f_691", 1 + %"$z_694" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %z + %"$f_call_695" = call { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_fptr_692"(i8* %"$f_envptr_693", %TName_Option_ByStr20* %"$z_694") + store { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_call_695", { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$f_13" + %"$f_14" = alloca { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } + %"$$f_13_696" = load { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$f_13" + %"$$f_13_fptr_697" = extractvalue { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$f_13_696", 0 + %"$$f_13_envptr_698" = extractvalue { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$f_13_696", 1 + %"$$f_13_h_699" = alloca [20 x i8] + %"$h_700" = load [20 x i8], [20 x i8]* %h + store [20 x i8] %"$h_700", [20 x i8]* %"$$f_13_h_699" + %"$$f_13_call_701" = call { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$$f_13_fptr_697"(i8* %"$$f_13_envptr_698", [20 x i8]* %"$$f_13_h_699") + store { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$$f_13_call_701", { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }* %"$f_14" + %"$f_15" = alloca %TName_Option_ByStr20* + %"$$f_14_702" = load { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }, { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }* %"$f_14" + %"$$f_14_fptr_703" = extractvalue { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$$f_14_702", 0 + %"$$f_14_envptr_704" = extractvalue { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$$f_14_702", 1 + %"$partial_705" = load { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* }, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* }* %partial + %"$$f_14_call_706" = call %TName_Option_ByStr20* %"$$f_14_fptr_703"(i8* %"$$f_14_envptr_704", { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* } %"$partial_705") + store %TName_Option_ByStr20* %"$$f_14_call_706", %TName_Option_ByStr20** %"$f_15" + %"$$f_15_707" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$f_15" + store %TName_Option_ByStr20* %"$$f_15_707", %TName_Option_ByStr20** %"$retval_152" + br label %"$matchsucc_658" + +"$Nil_708": ; preds = %"$have_gas_656" + %"$l_709" = bitcast %TName_List_ByStr20* %1 to %CName_Nil_ByStr20* + %"$gasrem_710" = load i64, i64* @_gasrem + %"$gascmp_711" = icmp ugt i64 1, %"$gasrem_710" + br i1 %"$gascmp_711", label %"$out_of_gas_712", label %"$have_gas_713" + +"$out_of_gas_712": ; preds = %"$Nil_708" + call void @_out_of_gas() + br label %"$have_gas_713" + +"$have_gas_713": ; preds = %"$out_of_gas_712", %"$Nil_708" + %"$consume_714" = sub i64 %"$gasrem_710", 1 + store i64 %"$consume_714", i64* @_gasrem + %"$z_715" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %z + store %TName_Option_ByStr20* %"$z_715", %TName_Option_ByStr20** %"$retval_152" + br label %"$matchsucc_658" + +"$empty_default_661": ; preds = %"$have_gas_656" + br label %"$matchsucc_658" + +"$matchsucc_658": ; preds = %"$have_gas_713", %"$have_gas_689", %"$empty_default_661" + %"$$retval_152_716" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %"$retval_152" + ret %TName_Option_ByStr20* %"$$retval_152_716" } -define internal { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_152"(%"$$fundef_152_env_455"* %0, %TName_Option_ByStr20* %1) { +define internal { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_149"(%"$$fundef_149_env_452"* %0, %TName_Option_ByStr20* %1) { entry: - %"$$fundef_152_env_f_561" = getelementptr inbounds %"$$fundef_152_env_455", %"$$fundef_152_env_455"* %0, i32 0, i32 0 - %"$f_envload_562" = load { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_152_env_f_561" + %"$$fundef_149_env_f_628" = getelementptr inbounds %"$$fundef_149_env_452", %"$$fundef_149_env_452"* %0, i32 0, i32 0 + %"$f_envload_629" = load { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_149_env_f_628" %f = alloca { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } - store { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$f_envload_562", { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %f - %"$$fundef_152_env_g_563" = getelementptr inbounds %"$$fundef_152_env_455", %"$$fundef_152_env_455"* %0, i32 0, i32 1 - %"$g_envload_564" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_152_env_g_563" + store { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$f_envload_629", { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %f + %"$$fundef_149_env_g_630" = getelementptr inbounds %"$$fundef_149_env_452", %"$$fundef_149_env_452"* %0, i32 0, i32 1 + %"$g_envload_631" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_149_env_g_630" %g = alloca { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } - store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$g_envload_564", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %g - %"$retval_153" = alloca { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } - %"$$fundef_154_envp_565_load" = load i8*, i8** @_execptr - %"$$fundef_154_envp_565_salloc" = call i8* @_salloc(i8* %"$$fundef_154_envp_565_load", i64 40) - %"$$fundef_154_envp_565" = bitcast i8* %"$$fundef_154_envp_565_salloc" to %"$$fundef_154_env_454"* - %"$$fundef_154_env_voidp_567" = bitcast %"$$fundef_154_env_454"* %"$$fundef_154_envp_565" to i8* - %"$$fundef_154_cloval_568" = insertvalue { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)* bitcast (%TName_Option_ByStr20* (%"$$fundef_154_env_454"*, %TName_List_ByStr20*)* @"$fundef_154" to %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_154_env_voidp_567", 1 - %"$$fundef_154_env_f_569" = getelementptr inbounds %"$$fundef_154_env_454", %"$$fundef_154_env_454"* %"$$fundef_154_envp_565", i32 0, i32 0 - %"$f_570" = load { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %f - store { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$f_570", { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_154_env_f_569" - %"$$fundef_154_env_g_571" = getelementptr inbounds %"$$fundef_154_env_454", %"$$fundef_154_env_454"* %"$$fundef_154_envp_565", i32 0, i32 1 - %"$g_572" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %g - store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$g_572", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_154_env_g_571" - %"$$fundef_154_env_z_573" = getelementptr inbounds %"$$fundef_154_env_454", %"$$fundef_154_env_454"* %"$$fundef_154_envp_565", i32 0, i32 2 - store %TName_Option_ByStr20* %1, %TName_Option_ByStr20** %"$$fundef_154_env_z_573" - store { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_154_cloval_568", { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_153" - %"$$retval_153_574" = load { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_153" - ret { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_153_574" + store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$g_envload_631", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %g + %"$retval_150" = alloca { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } + %"$gasrem_632" = load i64, i64* @_gasrem + %"$gascmp_633" = icmp ugt i64 1, %"$gasrem_632" + br i1 %"$gascmp_633", label %"$out_of_gas_634", label %"$have_gas_635" + +"$out_of_gas_634": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_635" + +"$have_gas_635": ; preds = %"$out_of_gas_634", %entry + %"$consume_636" = sub i64 %"$gasrem_632", 1 + store i64 %"$consume_636", i64* @_gasrem + %"$$fundef_151_envp_637_load" = load i8*, i8** @_execptr + %"$$fundef_151_envp_637_salloc" = call i8* @_salloc(i8* %"$$fundef_151_envp_637_load", i64 40) + %"$$fundef_151_envp_637" = bitcast i8* %"$$fundef_151_envp_637_salloc" to %"$$fundef_151_env_451"* + %"$$fundef_151_env_voidp_639" = bitcast %"$$fundef_151_env_451"* %"$$fundef_151_envp_637" to i8* + %"$$fundef_151_cloval_640" = insertvalue { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)* bitcast (%TName_Option_ByStr20* (%"$$fundef_151_env_451"*, %TName_List_ByStr20*)* @"$fundef_151" to %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_151_env_voidp_639", 1 + %"$$fundef_151_env_f_641" = getelementptr inbounds %"$$fundef_151_env_451", %"$$fundef_151_env_451"* %"$$fundef_151_envp_637", i32 0, i32 0 + %"$f_642" = load { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %f + store { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$f_642", { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_151_env_f_641" + %"$$fundef_151_env_g_643" = getelementptr inbounds %"$$fundef_151_env_451", %"$$fundef_151_env_451"* %"$$fundef_151_envp_637", i32 0, i32 1 + %"$g_644" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %g + store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$g_644", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_151_env_g_643" + %"$$fundef_151_env_z_645" = getelementptr inbounds %"$$fundef_151_env_451", %"$$fundef_151_env_451"* %"$$fundef_151_envp_637", i32 0, i32 2 + store %TName_Option_ByStr20* %1, %TName_Option_ByStr20** %"$$fundef_151_env_z_645" + store { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_151_cloval_640", { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_150" + %"$$retval_150_646" = load { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_150" + ret { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_150_646" } -define internal { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } @"$fundef_150"(%"$$fundef_150_env_456"* %0, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %1) { +define internal { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } @"$fundef_147"(%"$$fundef_147_env_453"* %0, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %1) { entry: - %"$retval_151" = alloca { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } - %"$$fundef_152_envp_552_load" = load i8*, i8** @_execptr - %"$$fundef_152_envp_552_salloc" = call i8* @_salloc(i8* %"$$fundef_152_envp_552_load", i64 32) - %"$$fundef_152_envp_552" = bitcast i8* %"$$fundef_152_envp_552_salloc" to %"$$fundef_152_env_455"* - %"$$fundef_152_env_voidp_554" = bitcast %"$$fundef_152_env_455"* %"$$fundef_152_envp_552" to i8* - %"$$fundef_152_cloval_555" = insertvalue { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)* bitcast ({ %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_152_env_455"*, %TName_Option_ByStr20*)* @"$fundef_152" to { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*), i8* undef }, i8* %"$$fundef_152_env_voidp_554", 1 + %"$retval_148" = alloca { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } + %"$gasrem_609" = load i64, i64* @_gasrem + %"$gascmp_610" = icmp ugt i64 1, %"$gasrem_609" + br i1 %"$gascmp_610", label %"$out_of_gas_611", label %"$have_gas_612" + +"$out_of_gas_611": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_612" + +"$have_gas_612": ; preds = %"$out_of_gas_611", %entry + %"$consume_613" = sub i64 %"$gasrem_609", 1 + store i64 %"$consume_613", i64* @_gasrem + %"$gasrem_614" = load i64, i64* @_gasrem + %"$gascmp_615" = icmp ugt i64 1, %"$gasrem_614" + br i1 %"$gascmp_615", label %"$out_of_gas_616", label %"$have_gas_617" + +"$out_of_gas_616": ; preds = %"$have_gas_612" + call void @_out_of_gas() + br label %"$have_gas_617" + +"$have_gas_617": ; preds = %"$out_of_gas_616", %"$have_gas_612" + %"$consume_618" = sub i64 %"$gasrem_614", 1 + store i64 %"$consume_618", i64* @_gasrem + %"$$fundef_149_envp_619_load" = load i8*, i8** @_execptr + %"$$fundef_149_envp_619_salloc" = call i8* @_salloc(i8* %"$$fundef_149_envp_619_load", i64 32) + %"$$fundef_149_envp_619" = bitcast i8* %"$$fundef_149_envp_619_salloc" to %"$$fundef_149_env_452"* + %"$$fundef_149_env_voidp_621" = bitcast %"$$fundef_149_env_452"* %"$$fundef_149_envp_619" to i8* + %"$$fundef_149_cloval_622" = insertvalue { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)* bitcast ({ %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_149_env_452"*, %TName_Option_ByStr20*)* @"$fundef_149" to { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*), i8* undef }, i8* %"$$fundef_149_env_voidp_621", 1 %g = alloca { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } - store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$fundef_152_cloval_555", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %g - %"$$fundef_152_env_f_556" = getelementptr inbounds %"$$fundef_152_env_455", %"$$fundef_152_env_455"* %"$$fundef_152_envp_552", i32 0, i32 0 - store { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %1, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_152_env_f_556" - %"$$fundef_152_env_g_557" = getelementptr inbounds %"$$fundef_152_env_455", %"$$fundef_152_env_455"* %"$$fundef_152_envp_552", i32 0, i32 1 - %"$g_558" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %g - store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$g_558", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_152_env_g_557" - %"$g_559" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %g - store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$g_559", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$retval_151" - %"$$retval_151_560" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$retval_151" - ret { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$retval_151_560" + store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$fundef_149_cloval_622", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %g + %"$$fundef_149_env_f_623" = getelementptr inbounds %"$$fundef_149_env_452", %"$$fundef_149_env_452"* %"$$fundef_149_envp_619", i32 0, i32 0 + store { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %1, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_149_env_f_623" + %"$$fundef_149_env_g_624" = getelementptr inbounds %"$$fundef_149_env_452", %"$$fundef_149_env_452"* %"$$fundef_149_envp_619", i32 0, i32 1 + %"$g_625" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %g + store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$g_625", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$$fundef_149_env_g_624" + %"$g_626" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %g + store { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$g_626", { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$retval_148" + %"$$retval_148_627" = load { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$retval_148" + ret { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$retval_148_627" } -define internal { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } @"$fundef_148"(%"$$fundef_148_env_457"* %0) { +define internal { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } @"$fundef_145"(%"$$fundef_145_env_454"* %0) { entry: - %"$retval_149" = alloca { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } - store { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })* bitcast ({ { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (%"$$fundef_150_env_456"*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })* @"$fundef_150" to { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*), i8* null }, { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }* %"$retval_149" - %"$$retval_149_551" = load { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }, { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }* %"$retval_149" - ret { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$$retval_149_551" + %"$retval_146" = alloca { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } + %"$gasrem_600" = load i64, i64* @_gasrem + %"$gascmp_601" = icmp ugt i64 1, %"$gasrem_600" + br i1 %"$gascmp_601", label %"$out_of_gas_602", label %"$have_gas_603" + +"$out_of_gas_602": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_603" + +"$have_gas_603": ; preds = %"$out_of_gas_602", %entry + %"$consume_604" = sub i64 %"$gasrem_600", 1 + store i64 %"$consume_604", i64* @_gasrem + store { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })* bitcast ({ { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (%"$$fundef_147_env_453"*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })* @"$fundef_147" to { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*), i8* null }, { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }* %"$retval_146" + %"$$retval_146_608" = load { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }, { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* }* %"$retval_146" + ret { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } %"$$retval_146_608" } -define internal { i8*, i8* }* @"$fundef_146"(%"$$fundef_146_env_458"* %0) { +define internal { i8*, i8* }* @"$fundef_143"(%"$$fundef_143_env_455"* %0) { entry: - %"$retval_147" = alloca { i8*, i8* }* - %"$dyndisp_table_544_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_544_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_544_salloc_load", i64 48) - %"$dyndisp_table_544_salloc" = bitcast i8* %"$dyndisp_table_544_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_544" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_544_salloc" to { i8*, i8* }* - %"$dyndisp_gep_545" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_544", i32 2 - %"$dyndisp_pcast_546" = bitcast { i8*, i8* }* %"$dyndisp_gep_545" to { { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (%"$$fundef_148_env_457"*)* @"$fundef_148" to { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_546" - store { i8*, i8* }* %"$dyndisp_table_544", { i8*, i8* }** %"$retval_147" - %"$$retval_147_547" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_147" - ret { i8*, i8* }* %"$$retval_147_547" + %"$retval_144" = alloca { i8*, i8* }* + %"$gasrem_588" = load i64, i64* @_gasrem + %"$gascmp_589" = icmp ugt i64 1, %"$gasrem_588" + br i1 %"$gascmp_589", label %"$out_of_gas_590", label %"$have_gas_591" + +"$out_of_gas_590": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_591" + +"$have_gas_591": ; preds = %"$out_of_gas_590", %entry + %"$consume_592" = sub i64 %"$gasrem_588", 1 + store i64 %"$consume_592", i64* @_gasrem + %"$dyndisp_table_596_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_596_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_596_salloc_load", i64 48) + %"$dyndisp_table_596_salloc" = bitcast i8* %"$dyndisp_table_596_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_596" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_596_salloc" to { i8*, i8* }* + %"$dyndisp_gep_597" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_596", i32 2 + %"$dyndisp_pcast_598" = bitcast { i8*, i8* }* %"$dyndisp_gep_597" to { { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (%"$$fundef_145_env_454"*)* @"$fundef_145" to { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, { { { %TName_Option_ByStr20* (i8*, { %TName_Option_ByStr20* (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_598" + store { i8*, i8* }* %"$dyndisp_table_596", { i8*, i8* }** %"$retval_144" + %"$$retval_144_599" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_144" + ret { i8*, i8* }* %"$$retval_144_599" } -define internal %TName_List_ByStr20* @"$fundef_166"(%"$$fundef_166_env_459"* %0, %TName_List_ByStr20* %1) { +define internal %TName_List_ByStr20* @"$fundef_163"(%"$$fundef_163_env_456"* %0, %TName_List_ByStr20* %1) { entry: - %"$$fundef_166_env_f_498" = getelementptr inbounds %"$$fundef_166_env_459", %"$$fundef_166_env_459"* %0, i32 0, i32 0 - %"$f_envload_499" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_166_env_f_498" + %"$$fundef_163_env_f_520" = getelementptr inbounds %"$$fundef_163_env_456", %"$$fundef_163_env_456"* %0, i32 0, i32 0 + %"$f_envload_521" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_163_env_f_520" %f = alloca { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } - store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_envload_499", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %f - %"$$fundef_166_env_g_500" = getelementptr inbounds %"$$fundef_166_env_459", %"$$fundef_166_env_459"* %0, i32 0, i32 1 - %"$g_envload_501" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_166_env_g_500" + store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_envload_521", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %f + %"$$fundef_163_env_g_522" = getelementptr inbounds %"$$fundef_163_env_456", %"$$fundef_163_env_456"* %0, i32 0, i32 1 + %"$g_envload_523" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_163_env_g_522" %g = alloca { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } - store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$g_envload_501", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %g - %"$$fundef_166_env_z_502" = getelementptr inbounds %"$$fundef_166_env_459", %"$$fundef_166_env_459"* %0, i32 0, i32 2 - %"$z_envload_503" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$$fundef_166_env_z_502" + store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$g_envload_523", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %g + %"$$fundef_163_env_z_524" = getelementptr inbounds %"$$fundef_163_env_456", %"$$fundef_163_env_456"* %0, i32 0, i32 2 + %"$z_envload_525" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$$fundef_163_env_z_524" %z = alloca %TName_List_ByStr20* - store %TName_List_ByStr20* %"$z_envload_503", %TName_List_ByStr20** %z - %"$retval_167" = alloca %TName_List_ByStr20* - %"$l_tag_505" = getelementptr inbounds %TName_List_ByStr20, %TName_List_ByStr20* %1, i32 0, i32 0 - %"$l_tag_506" = load i8, i8* %"$l_tag_505" - switch i8 %"$l_tag_506", label %"$empty_default_507" [ - i8 0, label %"$Cons_508" - i8 1, label %"$Nil_537" + store %TName_List_ByStr20* %"$z_envload_525", %TName_List_ByStr20** %z + %"$retval_164" = alloca %TName_List_ByStr20* + %"$gasrem_526" = load i64, i64* @_gasrem + %"$gascmp_527" = icmp ugt i64 2, %"$gasrem_526" + br i1 %"$gascmp_527", label %"$out_of_gas_528", label %"$have_gas_529" + +"$out_of_gas_528": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_529" + +"$have_gas_529": ; preds = %"$out_of_gas_528", %entry + %"$consume_530" = sub i64 %"$gasrem_526", 2 + store i64 %"$consume_530", i64* @_gasrem + %"$l_tag_532" = getelementptr inbounds %TName_List_ByStr20, %TName_List_ByStr20* %1, i32 0, i32 0 + %"$l_tag_533" = load i8, i8* %"$l_tag_532" + switch i8 %"$l_tag_533", label %"$empty_default_534" [ + i8 0, label %"$Cons_535" + i8 1, label %"$Nil_579" ] -"$Cons_508": ; preds = %entry - %"$l_509" = bitcast %TName_List_ByStr20* %1 to %CName_Cons_ByStr20* - %"$h_gep_510" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$l_509", i32 0, i32 1 - %"$h_load_511" = load [20 x i8], [20 x i8]* %"$h_gep_510" +"$Cons_535": ; preds = %"$have_gas_529" + %"$l_536" = bitcast %TName_List_ByStr20* %1 to %CName_Cons_ByStr20* + %"$h_gep_537" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$l_536", i32 0, i32 1 + %"$h_load_538" = load [20 x i8], [20 x i8]* %"$h_gep_537" %h = alloca [20 x i8] - store [20 x i8] %"$h_load_511", [20 x i8]* %h - %"$t_gep_512" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$l_509", i32 0, i32 2 - %"$t_load_513" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$t_gep_512" + store [20 x i8] %"$h_load_538", [20 x i8]* %h + %"$t_gep_539" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$l_536", i32 0, i32 2 + %"$t_load_540" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$t_gep_539" %t = alloca %TName_List_ByStr20* - store %TName_List_ByStr20* %"$t_load_513", %TName_List_ByStr20** %t + store %TName_List_ByStr20* %"$t_load_540", %TName_List_ByStr20** %t + %"$gasrem_541" = load i64, i64* @_gasrem + %"$gascmp_542" = icmp ugt i64 1, %"$gasrem_541" + br i1 %"$gascmp_542", label %"$out_of_gas_543", label %"$have_gas_544" + +"$out_of_gas_543": ; preds = %"$Cons_535" + call void @_out_of_gas() + br label %"$have_gas_544" + +"$have_gas_544": ; preds = %"$out_of_gas_543", %"$Cons_535" + %"$consume_545" = sub i64 %"$gasrem_541", 1 + store i64 %"$consume_545", i64* @_gasrem %res = alloca %TName_List_ByStr20* - %"$g_10" = alloca { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } - %"$g_514" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %g - %"$g_fptr_515" = extractvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$g_514", 0 - %"$g_envptr_516" = extractvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$g_514", 1 - %"$z_517" = load %TName_List_ByStr20*, %TName_List_ByStr20** %z - %"$g_call_518" = call { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$g_fptr_515"(i8* %"$g_envptr_516", %TName_List_ByStr20* %"$z_517") - store { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$g_call_518", { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$g_10" - %"$g_11" = alloca %TName_List_ByStr20* - %"$$g_10_519" = load { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$g_10" - %"$$g_10_fptr_520" = extractvalue { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$g_10_519", 0 - %"$$g_10_envptr_521" = extractvalue { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$g_10_519", 1 - %"$t_522" = load %TName_List_ByStr20*, %TName_List_ByStr20** %t - %"$$g_10_call_523" = call %TName_List_ByStr20* %"$$g_10_fptr_520"(i8* %"$$g_10_envptr_521", %TName_List_ByStr20* %"$t_522") - store %TName_List_ByStr20* %"$$g_10_call_523", %TName_List_ByStr20** %"$g_11" - %"$$g_11_524" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$g_11" - store %TName_List_ByStr20* %"$$g_11_524", %TName_List_ByStr20** %res - %"$f_12" = alloca { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } - %"$f_525" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %f - %"$f_fptr_526" = extractvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_525", 0 - %"$f_envptr_527" = extractvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_525", 1 - %"$f_h_528" = alloca [20 x i8] - %"$h_529" = load [20 x i8], [20 x i8]* %h - store [20 x i8] %"$h_529", [20 x i8]* %"$f_h_528" - %"$f_call_530" = call { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$f_fptr_526"(i8* %"$f_envptr_527", [20 x i8]* %"$f_h_528") - store { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$f_call_530", { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$f_12" - %"$f_13" = alloca %TName_List_ByStr20* - %"$$f_12_531" = load { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$f_12" - %"$$f_12_fptr_532" = extractvalue { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$f_12_531", 0 - %"$$f_12_envptr_533" = extractvalue { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$f_12_531", 1 - %"$res_534" = load %TName_List_ByStr20*, %TName_List_ByStr20** %res - %"$$f_12_call_535" = call %TName_List_ByStr20* %"$$f_12_fptr_532"(i8* %"$$f_12_envptr_533", %TName_List_ByStr20* %"$res_534") - store %TName_List_ByStr20* %"$$f_12_call_535", %TName_List_ByStr20** %"$f_13" - %"$$f_13_536" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$f_13" - store %TName_List_ByStr20* %"$$f_13_536", %TName_List_ByStr20** %"$retval_167" - br label %"$matchsucc_504" - -"$Nil_537": ; preds = %entry - %"$l_538" = bitcast %TName_List_ByStr20* %1 to %CName_Nil_ByStr20* - %"$z_539" = load %TName_List_ByStr20*, %TName_List_ByStr20** %z - store %TName_List_ByStr20* %"$z_539", %TName_List_ByStr20** %"$retval_167" - br label %"$matchsucc_504" - -"$empty_default_507": ; preds = %entry - br label %"$matchsucc_504" - -"$matchsucc_504": ; preds = %"$Nil_537", %"$Cons_508", %"$empty_default_507" - %"$$retval_167_540" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$retval_167" - ret %TName_List_ByStr20* %"$$retval_167_540" + %"$gasrem_546" = load i64, i64* @_gasrem + %"$gascmp_547" = icmp ugt i64 1, %"$gasrem_546" + br i1 %"$gascmp_547", label %"$out_of_gas_548", label %"$have_gas_549" + +"$out_of_gas_548": ; preds = %"$have_gas_544" + call void @_out_of_gas() + br label %"$have_gas_549" + +"$have_gas_549": ; preds = %"$out_of_gas_548", %"$have_gas_544" + %"$consume_550" = sub i64 %"$gasrem_546", 1 + store i64 %"$consume_550", i64* @_gasrem + %"$g_7" = alloca { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } + %"$g_551" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %g + %"$g_fptr_552" = extractvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$g_551", 0 + %"$g_envptr_553" = extractvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$g_551", 1 + %"$z_554" = load %TName_List_ByStr20*, %TName_List_ByStr20** %z + %"$g_call_555" = call { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$g_fptr_552"(i8* %"$g_envptr_553", %TName_List_ByStr20* %"$z_554") + store { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$g_call_555", { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$g_7" + %"$g_8" = alloca %TName_List_ByStr20* + %"$$g_7_556" = load { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$g_7" + %"$$g_7_fptr_557" = extractvalue { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$g_7_556", 0 + %"$$g_7_envptr_558" = extractvalue { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$g_7_556", 1 + %"$t_559" = load %TName_List_ByStr20*, %TName_List_ByStr20** %t + %"$$g_7_call_560" = call %TName_List_ByStr20* %"$$g_7_fptr_557"(i8* %"$$g_7_envptr_558", %TName_List_ByStr20* %"$t_559") + store %TName_List_ByStr20* %"$$g_7_call_560", %TName_List_ByStr20** %"$g_8" + %"$$g_8_561" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$g_8" + store %TName_List_ByStr20* %"$$g_8_561", %TName_List_ByStr20** %res + %"$gasrem_562" = load i64, i64* @_gasrem + %"$gascmp_563" = icmp ugt i64 1, %"$gasrem_562" + br i1 %"$gascmp_563", label %"$out_of_gas_564", label %"$have_gas_565" + +"$out_of_gas_564": ; preds = %"$have_gas_549" + call void @_out_of_gas() + br label %"$have_gas_565" + +"$have_gas_565": ; preds = %"$out_of_gas_564", %"$have_gas_549" + %"$consume_566" = sub i64 %"$gasrem_562", 1 + store i64 %"$consume_566", i64* @_gasrem + %"$f_9" = alloca { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } + %"$f_567" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %f + %"$f_fptr_568" = extractvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_567", 0 + %"$f_envptr_569" = extractvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_567", 1 + %"$f_h_570" = alloca [20 x i8] + %"$h_571" = load [20 x i8], [20 x i8]* %h + store [20 x i8] %"$h_571", [20 x i8]* %"$f_h_570" + %"$f_call_572" = call { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$f_fptr_568"(i8* %"$f_envptr_569", [20 x i8]* %"$f_h_570") + store { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$f_call_572", { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$f_9" + %"$f_10" = alloca %TName_List_ByStr20* + %"$$f_9_573" = load { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$f_9" + %"$$f_9_fptr_574" = extractvalue { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$f_9_573", 0 + %"$$f_9_envptr_575" = extractvalue { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$f_9_573", 1 + %"$res_576" = load %TName_List_ByStr20*, %TName_List_ByStr20** %res + %"$$f_9_call_577" = call %TName_List_ByStr20* %"$$f_9_fptr_574"(i8* %"$$f_9_envptr_575", %TName_List_ByStr20* %"$res_576") + store %TName_List_ByStr20* %"$$f_9_call_577", %TName_List_ByStr20** %"$f_10" + %"$$f_10_578" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$f_10" + store %TName_List_ByStr20* %"$$f_10_578", %TName_List_ByStr20** %"$retval_164" + br label %"$matchsucc_531" + +"$Nil_579": ; preds = %"$have_gas_529" + %"$l_580" = bitcast %TName_List_ByStr20* %1 to %CName_Nil_ByStr20* + %"$gasrem_581" = load i64, i64* @_gasrem + %"$gascmp_582" = icmp ugt i64 1, %"$gasrem_581" + br i1 %"$gascmp_582", label %"$out_of_gas_583", label %"$have_gas_584" + +"$out_of_gas_583": ; preds = %"$Nil_579" + call void @_out_of_gas() + br label %"$have_gas_584" + +"$have_gas_584": ; preds = %"$out_of_gas_583", %"$Nil_579" + %"$consume_585" = sub i64 %"$gasrem_581", 1 + store i64 %"$consume_585", i64* @_gasrem + %"$z_586" = load %TName_List_ByStr20*, %TName_List_ByStr20** %z + store %TName_List_ByStr20* %"$z_586", %TName_List_ByStr20** %"$retval_164" + br label %"$matchsucc_531" + +"$empty_default_534": ; preds = %"$have_gas_529" + br label %"$matchsucc_531" + +"$matchsucc_531": ; preds = %"$have_gas_584", %"$have_gas_565", %"$empty_default_534" + %"$$retval_164_587" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$retval_164" + ret %TName_List_ByStr20* %"$$retval_164_587" } -define internal { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_164"(%"$$fundef_164_env_460"* %0, %TName_List_ByStr20* %1) { +define internal { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_161"(%"$$fundef_161_env_457"* %0, %TName_List_ByStr20* %1) { entry: - %"$$fundef_164_env_f_484" = getelementptr inbounds %"$$fundef_164_env_460", %"$$fundef_164_env_460"* %0, i32 0, i32 0 - %"$f_envload_485" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_164_env_f_484" + %"$$fundef_161_env_f_501" = getelementptr inbounds %"$$fundef_161_env_457", %"$$fundef_161_env_457"* %0, i32 0, i32 0 + %"$f_envload_502" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_161_env_f_501" %f = alloca { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } - store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_envload_485", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %f - %"$$fundef_164_env_g_486" = getelementptr inbounds %"$$fundef_164_env_460", %"$$fundef_164_env_460"* %0, i32 0, i32 1 - %"$g_envload_487" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_164_env_g_486" + store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_envload_502", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %f + %"$$fundef_161_env_g_503" = getelementptr inbounds %"$$fundef_161_env_457", %"$$fundef_161_env_457"* %0, i32 0, i32 1 + %"$g_envload_504" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_161_env_g_503" %g = alloca { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } - store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$g_envload_487", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %g - %"$retval_165" = alloca { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } - %"$$fundef_166_envp_488_load" = load i8*, i8** @_execptr - %"$$fundef_166_envp_488_salloc" = call i8* @_salloc(i8* %"$$fundef_166_envp_488_load", i64 40) - %"$$fundef_166_envp_488" = bitcast i8* %"$$fundef_166_envp_488_salloc" to %"$$fundef_166_env_459"* - %"$$fundef_166_env_voidp_490" = bitcast %"$$fundef_166_env_459"* %"$$fundef_166_envp_488" to i8* - %"$$fundef_166_cloval_491" = insertvalue { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)* bitcast (%TName_List_ByStr20* (%"$$fundef_166_env_459"*, %TName_List_ByStr20*)* @"$fundef_166" to %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_166_env_voidp_490", 1 - %"$$fundef_166_env_f_492" = getelementptr inbounds %"$$fundef_166_env_459", %"$$fundef_166_env_459"* %"$$fundef_166_envp_488", i32 0, i32 0 - %"$f_493" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %f - store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_493", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_166_env_f_492" - %"$$fundef_166_env_g_494" = getelementptr inbounds %"$$fundef_166_env_459", %"$$fundef_166_env_459"* %"$$fundef_166_envp_488", i32 0, i32 1 - %"$g_495" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %g - store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$g_495", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_166_env_g_494" - %"$$fundef_166_env_z_496" = getelementptr inbounds %"$$fundef_166_env_459", %"$$fundef_166_env_459"* %"$$fundef_166_envp_488", i32 0, i32 2 - store %TName_List_ByStr20* %1, %TName_List_ByStr20** %"$$fundef_166_env_z_496" - store { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_166_cloval_491", { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_165" - %"$$retval_165_497" = load { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_165" - ret { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_165_497" + store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$g_envload_504", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %g + %"$retval_162" = alloca { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } + %"$gasrem_505" = load i64, i64* @_gasrem + %"$gascmp_506" = icmp ugt i64 1, %"$gasrem_505" + br i1 %"$gascmp_506", label %"$out_of_gas_507", label %"$have_gas_508" + +"$out_of_gas_507": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_508" + +"$have_gas_508": ; preds = %"$out_of_gas_507", %entry + %"$consume_509" = sub i64 %"$gasrem_505", 1 + store i64 %"$consume_509", i64* @_gasrem + %"$$fundef_163_envp_510_load" = load i8*, i8** @_execptr + %"$$fundef_163_envp_510_salloc" = call i8* @_salloc(i8* %"$$fundef_163_envp_510_load", i64 40) + %"$$fundef_163_envp_510" = bitcast i8* %"$$fundef_163_envp_510_salloc" to %"$$fundef_163_env_456"* + %"$$fundef_163_env_voidp_512" = bitcast %"$$fundef_163_env_456"* %"$$fundef_163_envp_510" to i8* + %"$$fundef_163_cloval_513" = insertvalue { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)* bitcast (%TName_List_ByStr20* (%"$$fundef_163_env_456"*, %TName_List_ByStr20*)* @"$fundef_163" to %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_163_env_voidp_512", 1 + %"$$fundef_163_env_f_514" = getelementptr inbounds %"$$fundef_163_env_456", %"$$fundef_163_env_456"* %"$$fundef_163_envp_510", i32 0, i32 0 + %"$f_515" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %f + store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$f_515", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_163_env_f_514" + %"$$fundef_163_env_g_516" = getelementptr inbounds %"$$fundef_163_env_456", %"$$fundef_163_env_456"* %"$$fundef_163_envp_510", i32 0, i32 1 + %"$g_517" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %g + store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$g_517", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_163_env_g_516" + %"$$fundef_163_env_z_518" = getelementptr inbounds %"$$fundef_163_env_456", %"$$fundef_163_env_456"* %"$$fundef_163_envp_510", i32 0, i32 2 + store %TName_List_ByStr20* %1, %TName_List_ByStr20** %"$$fundef_163_env_z_518" + store { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_163_cloval_513", { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_162" + %"$$retval_162_519" = load { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }, { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_162" + ret { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_162_519" } -define internal { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_162"(%"$$fundef_162_env_461"* %0, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %1) { +define internal { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } @"$fundef_159"(%"$$fundef_159_env_458"* %0, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %1) { entry: - %"$retval_163" = alloca { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } - %"$$fundef_164_envp_475_load" = load i8*, i8** @_execptr - %"$$fundef_164_envp_475_salloc" = call i8* @_salloc(i8* %"$$fundef_164_envp_475_load", i64 32) - %"$$fundef_164_envp_475" = bitcast i8* %"$$fundef_164_envp_475_salloc" to %"$$fundef_164_env_460"* - %"$$fundef_164_env_voidp_477" = bitcast %"$$fundef_164_env_460"* %"$$fundef_164_envp_475" to i8* - %"$$fundef_164_cloval_478" = insertvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)* bitcast ({ %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_164_env_460"*, %TName_List_ByStr20*)* @"$fundef_164" to { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_164_env_voidp_477", 1 + %"$retval_160" = alloca { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } + %"$gasrem_482" = load i64, i64* @_gasrem + %"$gascmp_483" = icmp ugt i64 1, %"$gasrem_482" + br i1 %"$gascmp_483", label %"$out_of_gas_484", label %"$have_gas_485" + +"$out_of_gas_484": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_485" + +"$have_gas_485": ; preds = %"$out_of_gas_484", %entry + %"$consume_486" = sub i64 %"$gasrem_482", 1 + store i64 %"$consume_486", i64* @_gasrem + %"$gasrem_487" = load i64, i64* @_gasrem + %"$gascmp_488" = icmp ugt i64 1, %"$gasrem_487" + br i1 %"$gascmp_488", label %"$out_of_gas_489", label %"$have_gas_490" + +"$out_of_gas_489": ; preds = %"$have_gas_485" + call void @_out_of_gas() + br label %"$have_gas_490" + +"$have_gas_490": ; preds = %"$out_of_gas_489", %"$have_gas_485" + %"$consume_491" = sub i64 %"$gasrem_487", 1 + store i64 %"$consume_491", i64* @_gasrem + %"$$fundef_161_envp_492_load" = load i8*, i8** @_execptr + %"$$fundef_161_envp_492_salloc" = call i8* @_salloc(i8* %"$$fundef_161_envp_492_load", i64 32) + %"$$fundef_161_envp_492" = bitcast i8* %"$$fundef_161_envp_492_salloc" to %"$$fundef_161_env_457"* + %"$$fundef_161_env_voidp_494" = bitcast %"$$fundef_161_env_457"* %"$$fundef_161_envp_492" to i8* + %"$$fundef_161_cloval_495" = insertvalue { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)* bitcast ({ %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_161_env_457"*, %TName_List_ByStr20*)* @"$fundef_161" to { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_161_env_voidp_494", 1 %g = alloca { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } - store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_164_cloval_478", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %g - %"$$fundef_164_env_f_479" = getelementptr inbounds %"$$fundef_164_env_460", %"$$fundef_164_env_460"* %"$$fundef_164_envp_475", i32 0, i32 0 - store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %1, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_164_env_f_479" - %"$$fundef_164_env_g_480" = getelementptr inbounds %"$$fundef_164_env_460", %"$$fundef_164_env_460"* %"$$fundef_164_envp_475", i32 0, i32 1 - %"$g_481" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %g - store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$g_481", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_164_env_g_480" - %"$g_482" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %g - store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$g_482", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_163" - %"$$retval_163_483" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_163" - ret { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_163_483" + store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_161_cloval_495", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %g + %"$$fundef_161_env_f_496" = getelementptr inbounds %"$$fundef_161_env_457", %"$$fundef_161_env_457"* %"$$fundef_161_envp_492", i32 0, i32 0 + store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %1, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_161_env_f_496" + %"$$fundef_161_env_g_497" = getelementptr inbounds %"$$fundef_161_env_457", %"$$fundef_161_env_457"* %"$$fundef_161_envp_492", i32 0, i32 1 + %"$g_498" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %g + store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$g_498", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_161_env_g_497" + %"$g_499" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %g + store { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$g_499", { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_160" + %"$$retval_160_500" = load { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$retval_160" + ret { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$$retval_160_500" } -define internal { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } @"$fundef_160"(%"$$fundef_160_env_462"* %0) { +define internal { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } @"$fundef_157"(%"$$fundef_157_env_459"* %0) { entry: - %"$retval_161" = alloca { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } - store { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })* bitcast ({ { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_162_env_461"*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })* @"$fundef_162" to { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*), i8* null }, { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_161" - %"$$retval_161_474" = load { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }, { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_161" - ret { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$$retval_161_474" + %"$retval_158" = alloca { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } + %"$gasrem_473" = load i64, i64* @_gasrem + %"$gascmp_474" = icmp ugt i64 1, %"$gasrem_473" + br i1 %"$gascmp_474", label %"$out_of_gas_475", label %"$have_gas_476" + +"$out_of_gas_475": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_476" + +"$have_gas_476": ; preds = %"$out_of_gas_475", %entry + %"$consume_477" = sub i64 %"$gasrem_473", 1 + store i64 %"$consume_477", i64* @_gasrem + store { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })* bitcast ({ { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (%"$$fundef_159_env_458"*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })* @"$fundef_159" to { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*), i8* null }, { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_158" + %"$$retval_158_481" = load { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }, { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* }* %"$retval_158" + ret { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } %"$$retval_158_481" } -define internal { i8*, i8* }* @"$fundef_158"(%"$$fundef_158_env_463"* %0) { +define internal { i8*, i8* }* @"$fundef_155"(%"$$fundef_155_env_460"* %0) { entry: - %"$retval_159" = alloca { i8*, i8* }* - %"$dyndisp_table_467_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_467_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_467_salloc_load", i64 48) - %"$dyndisp_table_467_salloc" = bitcast i8* %"$dyndisp_table_467_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_467" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_467_salloc" to { i8*, i8* }* - %"$dyndisp_gep_468" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_467", i32 1 - %"$dyndisp_pcast_469" = bitcast { i8*, i8* }* %"$dyndisp_gep_468" to { { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (%"$$fundef_160_env_462"*)* @"$fundef_160" to { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_469" - store { i8*, i8* }* %"$dyndisp_table_467", { i8*, i8* }** %"$retval_159" - %"$$retval_159_470" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_159" - ret { i8*, i8* }* %"$$retval_159_470" + %"$retval_156" = alloca { i8*, i8* }* + %"$gasrem_461" = load i64, i64* @_gasrem + %"$gascmp_462" = icmp ugt i64 1, %"$gasrem_461" + br i1 %"$gascmp_462", label %"$out_of_gas_463", label %"$have_gas_464" + +"$out_of_gas_463": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_464" + +"$have_gas_464": ; preds = %"$out_of_gas_463", %entry + %"$consume_465" = sub i64 %"$gasrem_461", 1 + store i64 %"$consume_465", i64* @_gasrem + %"$dyndisp_table_469_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_469_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_469_salloc_load", i64 48) + %"$dyndisp_table_469_salloc" = bitcast i8* %"$dyndisp_table_469_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_469" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_469_salloc" to { i8*, i8* }* + %"$dyndisp_gep_470" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_469", i32 1 + %"$dyndisp_pcast_471" = bitcast { i8*, i8* }* %"$dyndisp_gep_470" to { { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (%"$$fundef_157_env_459"*)* @"$fundef_157" to { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_471" + store { i8*, i8* }* %"$dyndisp_table_469", { i8*, i8* }** %"$retval_156" + %"$$retval_156_472" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_156" + ret { i8*, i8* }* %"$$retval_156_472" } +declare void @_out_of_gas() + declare i8* @_salloc(i8*, i64) declare %TName_Bool* @_eq_ByStrX(i8*, i32, i8*, i8*) @@ -2722,266 +4231,662 @@ declare i8* @_concat_ByStrX(i8*, i32, i8*, i32, i8*) define void @_init_libs() { entry: - %"$dyndisp_table_1628_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_1628_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_1628_salloc_load", i64 48) - %"$dyndisp_table_1628_salloc" = bitcast i8* %"$dyndisp_table_1628_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_1628" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_1628_salloc" to { i8*, i8* }* - %"$dyndisp_gep_1629" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_1628", i32 0 - %"$dyndisp_pcast_1630" = bitcast { i8*, i8* }* %"$dyndisp_gep_1629" to { { i8*, i8* }* (i8*)*, i8* }* - store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_158_env_463"*)* @"$fundef_158" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_1630" - store { i8*, i8* }* %"$dyndisp_table_1628", { i8*, i8* }** @list_foldr - %"$dyndisp_table_1634_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_1634_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_1634_salloc_load", i64 48) - %"$dyndisp_table_1634_salloc" = bitcast i8* %"$dyndisp_table_1634_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_1634" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_1634_salloc" to { i8*, i8* }* - %"$dyndisp_gep_1635" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_1634", i32 0 - %"$dyndisp_pcast_1636" = bitcast { i8*, i8* }* %"$dyndisp_gep_1635" to { { i8*, i8* }* (i8*)*, i8* }* - store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_146_env_458"*)* @"$fundef_146" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_1636" - store { i8*, i8* }* %"$dyndisp_table_1634", { i8*, i8* }** @list_foldk - store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)* bitcast ({ %TName_Bool* (i8*, %TName_Bool*)*, i8* } (%"$$fundef_174_env_452"*, %TName_Bool*)* @"$fundef_174" to { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*), i8* null }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb - store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)* bitcast ({ %TName_Bool* (i8*, %TName_Bool*)*, i8* } (%"$$fundef_170_env_450"*, %TName_Bool*)* @"$fundef_170" to { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*), i8* null }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @orb - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } { %TName_Bool* (i8*, %TName_Bool*)* bitcast (%TName_Bool* (%"$$fundef_168_env_448"*, %TName_Bool*)* @"$fundef_168" to %TName_Bool* (i8*, %TName_Bool*)*), i8* null }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* @negb - %"$$fundef_200_envp_1646_load" = load i8*, i8** @_execptr - %"$$fundef_200_envp_1646_salloc" = call i8* @_salloc(i8* %"$$fundef_200_envp_1646_load", i64 8) - %"$$fundef_200_envp_1646" = bitcast i8* %"$$fundef_200_envp_1646_salloc" to %"$$fundef_200_env_447"* - %"$$fundef_200_env_voidp_1648" = bitcast %"$$fundef_200_env_447"* %"$$fundef_200_envp_1646" to i8* - %"$$fundef_200_cloval_1649" = insertvalue { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)* bitcast ({ { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (%"$$fundef_200_env_447"*)* @"$fundef_200" to { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_200_env_voidp_1648", 1 - %"$$fundef_200_env_list_foldr_1650" = getelementptr inbounds %"$$fundef_200_env_447", %"$$fundef_200_env_447"* %"$$fundef_200_envp_1646", i32 0, i32 0 - %"$list_foldr_1651" = load { i8*, i8* }*, { i8*, i8* }** @list_foldr - store { i8*, i8* }* %"$list_foldr_1651", { i8*, i8* }** %"$$fundef_200_env_list_foldr_1650" - %"$dyndisp_table_1652_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_1652_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_1652_salloc_load", i64 48) - %"$dyndisp_table_1652_salloc" = bitcast i8* %"$dyndisp_table_1652_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_1652" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_1652_salloc" to { i8*, i8* }* - %"$dyndisp_gep_1653" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_1652", i32 0 - %"$dyndisp_pcast_1654" = bitcast { i8*, i8* }* %"$dyndisp_gep_1653" to { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_200_cloval_1649", { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_1654" - store { i8*, i8* }* %"$dyndisp_table_1652", { i8*, i8* }** @list_filter - %"$$fundef_190_envp_1655_load" = load i8*, i8** @_execptr - %"$$fundef_190_envp_1655_salloc" = call i8* @_salloc(i8* %"$$fundef_190_envp_1655_load", i64 8) - %"$$fundef_190_envp_1655" = bitcast i8* %"$$fundef_190_envp_1655_salloc" to %"$$fundef_190_env_443"* - %"$$fundef_190_env_voidp_1657" = bitcast %"$$fundef_190_env_443"* %"$$fundef_190_envp_1655" to i8* - %"$$fundef_190_cloval_1658" = insertvalue { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)* bitcast ({ { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (%"$$fundef_190_env_443"*)* @"$fundef_190" to { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_190_env_voidp_1657", 1 - %"$$fundef_190_env_list_foldk_1659" = getelementptr inbounds %"$$fundef_190_env_443", %"$$fundef_190_env_443"* %"$$fundef_190_envp_1655", i32 0, i32 0 - %"$list_foldk_1660" = load { i8*, i8* }*, { i8*, i8* }** @list_foldk - store { i8*, i8* }* %"$list_foldk_1660", { i8*, i8* }** %"$$fundef_190_env_list_foldk_1659" - %"$dyndisp_table_1661_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_1661_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_1661_salloc_load", i64 48) - %"$dyndisp_table_1661_salloc" = bitcast i8* %"$dyndisp_table_1661_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_1661" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_1661_salloc" to { i8*, i8* }* - %"$dyndisp_gep_1662" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_1661", i32 0 - %"$dyndisp_pcast_1663" = bitcast { i8*, i8* }* %"$dyndisp_gep_1662" to { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_190_cloval_1658", { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_1663" - store { i8*, i8* }* %"$dyndisp_table_1661", { i8*, i8* }** @list_find - %"$$fundef_184_envp_1664_load" = load i8*, i8** @_execptr - %"$$fundef_184_envp_1664_salloc" = call i8* @_salloc(i8* %"$$fundef_184_envp_1664_load", i64 8) - %"$$fundef_184_envp_1664" = bitcast i8* %"$$fundef_184_envp_1664_salloc" to %"$$fundef_184_env_438"* - %"$$fundef_184_env_voidp_1666" = bitcast %"$$fundef_184_env_438"* %"$$fundef_184_envp_1664" to i8* - %"$$fundef_184_cloval_1667" = insertvalue { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)* bitcast ({ { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (%"$$fundef_184_env_438"*)* @"$fundef_184" to { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_184_env_voidp_1666", 1 - %"$$fundef_184_env_list_find_1668" = getelementptr inbounds %"$$fundef_184_env_438", %"$$fundef_184_env_438"* %"$$fundef_184_envp_1664", i32 0, i32 0 - %"$list_find_1669" = load { i8*, i8* }*, { i8*, i8* }** @list_find - store { i8*, i8* }* %"$list_find_1669", { i8*, i8* }** %"$$fundef_184_env_list_find_1668" - %"$dyndisp_table_1670_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_1670_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_1670_salloc_load", i64 48) - %"$dyndisp_table_1670_salloc" = bitcast i8* %"$dyndisp_table_1670_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_1670" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_1670_salloc" to { i8*, i8* }* - %"$dyndisp_gep_1671" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_1670", i32 0 - %"$dyndisp_pcast_1672" = bitcast { i8*, i8* }* %"$dyndisp_gep_1671" to { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_184_cloval_1667", { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_1672" - store { i8*, i8* }* %"$dyndisp_table_1670", { i8*, i8* }** @list_exists - %"$$fundef_178_envp_1673_load" = load i8*, i8** @_execptr - %"$$fundef_178_envp_1673_salloc" = call i8* @_salloc(i8* %"$$fundef_178_envp_1673_load", i64 8) - %"$$fundef_178_envp_1673" = bitcast i8* %"$$fundef_178_envp_1673_salloc" to %"$$fundef_178_env_435"* - %"$$fundef_178_env_voidp_1675" = bitcast %"$$fundef_178_env_435"* %"$$fundef_178_envp_1673" to i8* - %"$$fundef_178_cloval_1676" = insertvalue { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (%"$$fundef_178_env_435"*)* @"$fundef_178" to { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_178_env_voidp_1675", 1 - %"$$fundef_178_env_list_exists_1677" = getelementptr inbounds %"$$fundef_178_env_435", %"$$fundef_178_env_435"* %"$$fundef_178_envp_1673", i32 0, i32 0 - %"$list_exists_1678" = load { i8*, i8* }*, { i8*, i8* }** @list_exists - store { i8*, i8* }* %"$list_exists_1678", { i8*, i8* }** %"$$fundef_178_env_list_exists_1677" - %"$dyndisp_table_1679_salloc_load" = load i8*, i8** @_execptr - %"$dyndisp_table_1679_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_1679_salloc_load", i64 48) - %"$dyndisp_table_1679_salloc" = bitcast i8* %"$dyndisp_table_1679_salloc_salloc" to [3 x { i8*, i8* }]* - %"$dyndisp_table_1679" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_1679_salloc" to { i8*, i8* }* - %"$dyndisp_gep_1680" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_1679", i32 0 - %"$dyndisp_pcast_1681" = bitcast { i8*, i8* }* %"$dyndisp_gep_1680" to { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* - store { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_178_cloval_1676", { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_1681" - store { i8*, i8* }* %"$dyndisp_table_1679", { i8*, i8* }** @list_mem + %"$gasrem_2307" = load i64, i64* @_gasrem + %"$gascmp_2308" = icmp ugt i64 1, %"$gasrem_2307" + br i1 %"$gascmp_2308", label %"$out_of_gas_2309", label %"$have_gas_2310" + +"$out_of_gas_2309": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2310" + +"$have_gas_2310": ; preds = %"$out_of_gas_2309", %entry + %"$consume_2311" = sub i64 %"$gasrem_2307", 1 + store i64 %"$consume_2311", i64* @_gasrem + %"$dyndisp_table_2315_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_2315_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_2315_salloc_load", i64 48) + %"$dyndisp_table_2315_salloc" = bitcast i8* %"$dyndisp_table_2315_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_2315" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_2315_salloc" to { i8*, i8* }* + %"$dyndisp_gep_2316" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_2315", i32 0 + %"$dyndisp_pcast_2317" = bitcast { i8*, i8* }* %"$dyndisp_gep_2316" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_155_env_460"*)* @"$fundef_155" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_2317" + store { i8*, i8* }* %"$dyndisp_table_2315", { i8*, i8* }** @list_foldr + %"$gasrem_2318" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_2310" + call void @_out_of_gas() + br label %"$have_gas_2321" + +"$have_gas_2321": ; preds = %"$out_of_gas_2320", %"$have_gas_2310" + %"$consume_2322" = sub i64 %"$gasrem_2318", 1 + store i64 %"$consume_2322", i64* @_gasrem + %"$dyndisp_table_2326_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_2326_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_2326_salloc_load", i64 48) + %"$dyndisp_table_2326_salloc" = bitcast i8* %"$dyndisp_table_2326_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_2326" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_2326_salloc" to { i8*, i8* }* + %"$dyndisp_gep_2327" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_2326", i32 0 + %"$dyndisp_pcast_2328" = bitcast { i8*, i8* }* %"$dyndisp_gep_2327" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_143_env_455"*)* @"$fundef_143" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_2328" + store { i8*, i8* }* %"$dyndisp_table_2326", { i8*, i8* }** @list_foldk + %"$gasrem_2329" = load i64, i64* @_gasrem + %"$gascmp_2330" = icmp ugt i64 1, %"$gasrem_2329" + br i1 %"$gascmp_2330", label %"$out_of_gas_2331", label %"$have_gas_2332" + +"$out_of_gas_2331": ; preds = %"$have_gas_2321" + call void @_out_of_gas() + br label %"$have_gas_2332" + +"$have_gas_2332": ; preds = %"$out_of_gas_2331", %"$have_gas_2321" + %"$consume_2333" = sub i64 %"$gasrem_2329", 1 + store i64 %"$consume_2333", i64* @_gasrem + store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)* bitcast ({ %TName_Bool* (i8*, %TName_Bool*)*, i8* } (%"$$fundef_171_env_449"*, %TName_Bool*)* @"$fundef_171" to { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*), i8* null }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb + %"$gasrem_2337" = load i64, i64* @_gasrem + %"$gascmp_2338" = icmp ugt i64 1, %"$gasrem_2337" + br i1 %"$gascmp_2338", label %"$out_of_gas_2339", label %"$have_gas_2340" + +"$out_of_gas_2339": ; preds = %"$have_gas_2332" + call void @_out_of_gas() + br label %"$have_gas_2340" + +"$have_gas_2340": ; preds = %"$out_of_gas_2339", %"$have_gas_2332" + %"$consume_2341" = sub i64 %"$gasrem_2337", 1 + store i64 %"$consume_2341", i64* @_gasrem + store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)* bitcast ({ %TName_Bool* (i8*, %TName_Bool*)*, i8* } (%"$$fundef_167_env_447"*, %TName_Bool*)* @"$fundef_167" to { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*), i8* null }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @orb + %"$gasrem_2345" = load i64, i64* @_gasrem + %"$gascmp_2346" = icmp ugt i64 1, %"$gasrem_2345" + br i1 %"$gascmp_2346", label %"$out_of_gas_2347", label %"$have_gas_2348" + +"$out_of_gas_2347": ; preds = %"$have_gas_2340" + call void @_out_of_gas() + br label %"$have_gas_2348" + +"$have_gas_2348": ; preds = %"$out_of_gas_2347", %"$have_gas_2340" + %"$consume_2349" = sub i64 %"$gasrem_2345", 1 + store i64 %"$consume_2349", i64* @_gasrem + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } { %TName_Bool* (i8*, %TName_Bool*)* bitcast (%TName_Bool* (%"$$fundef_165_env_445"*, %TName_Bool*)* @"$fundef_165" to %TName_Bool* (i8*, %TName_Bool*)*), i8* null }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* @negb + %"$gasrem_2353" = load i64, i64* @_gasrem + %"$gascmp_2354" = icmp ugt i64 1, %"$gasrem_2353" + br i1 %"$gascmp_2354", label %"$out_of_gas_2355", label %"$have_gas_2356" + +"$out_of_gas_2355": ; preds = %"$have_gas_2348" + call void @_out_of_gas() + br label %"$have_gas_2356" + +"$have_gas_2356": ; preds = %"$out_of_gas_2355", %"$have_gas_2348" + %"$consume_2357" = sub i64 %"$gasrem_2353", 1 + store i64 %"$consume_2357", i64* @_gasrem + %"$$fundef_197_envp_2358_load" = load i8*, i8** @_execptr + %"$$fundef_197_envp_2358_salloc" = call i8* @_salloc(i8* %"$$fundef_197_envp_2358_load", i64 8) + %"$$fundef_197_envp_2358" = bitcast i8* %"$$fundef_197_envp_2358_salloc" to %"$$fundef_197_env_444"* + %"$$fundef_197_env_voidp_2360" = bitcast %"$$fundef_197_env_444"* %"$$fundef_197_envp_2358" to i8* + %"$$fundef_197_cloval_2361" = insertvalue { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)* bitcast ({ { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (%"$$fundef_197_env_444"*)* @"$fundef_197" to { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_197_env_voidp_2360", 1 + %"$$fundef_197_env_list_foldr_2362" = getelementptr inbounds %"$$fundef_197_env_444", %"$$fundef_197_env_444"* %"$$fundef_197_envp_2358", i32 0, i32 0 + %"$list_foldr_2363" = load { i8*, i8* }*, { i8*, i8* }** @list_foldr + store { i8*, i8* }* %"$list_foldr_2363", { i8*, i8* }** %"$$fundef_197_env_list_foldr_2362" + %"$dyndisp_table_2364_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_2364_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_2364_salloc_load", i64 48) + %"$dyndisp_table_2364_salloc" = bitcast i8* %"$dyndisp_table_2364_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_2364" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_2364_salloc" to { i8*, i8* }* + %"$dyndisp_gep_2365" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_2364", i32 0 + %"$dyndisp_pcast_2366" = bitcast { i8*, i8* }* %"$dyndisp_gep_2365" to { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_197_cloval_2361", { { { %TName_List_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_2366" + store { i8*, i8* }* %"$dyndisp_table_2364", { i8*, i8* }** @list_filter + %"$gasrem_2367" = load i64, i64* @_gasrem + %"$gascmp_2368" = icmp ugt i64 1, %"$gasrem_2367" + br i1 %"$gascmp_2368", label %"$out_of_gas_2369", label %"$have_gas_2370" + +"$out_of_gas_2369": ; preds = %"$have_gas_2356" + call void @_out_of_gas() + br label %"$have_gas_2370" + +"$have_gas_2370": ; preds = %"$out_of_gas_2369", %"$have_gas_2356" + %"$consume_2371" = sub i64 %"$gasrem_2367", 1 + store i64 %"$consume_2371", i64* @_gasrem + %"$$fundef_187_envp_2372_load" = load i8*, i8** @_execptr + %"$$fundef_187_envp_2372_salloc" = call i8* @_salloc(i8* %"$$fundef_187_envp_2372_load", i64 8) + %"$$fundef_187_envp_2372" = bitcast i8* %"$$fundef_187_envp_2372_salloc" to %"$$fundef_187_env_440"* + %"$$fundef_187_env_voidp_2374" = bitcast %"$$fundef_187_env_440"* %"$$fundef_187_envp_2372" to i8* + %"$$fundef_187_cloval_2375" = insertvalue { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)* bitcast ({ { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (%"$$fundef_187_env_440"*)* @"$fundef_187" to { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_187_env_voidp_2374", 1 + %"$$fundef_187_env_list_foldk_2376" = getelementptr inbounds %"$$fundef_187_env_440", %"$$fundef_187_env_440"* %"$$fundef_187_envp_2372", i32 0, i32 0 + %"$list_foldk_2377" = load { i8*, i8* }*, { i8*, i8* }** @list_foldk + store { i8*, i8* }* %"$list_foldk_2377", { i8*, i8* }** %"$$fundef_187_env_list_foldk_2376" + %"$dyndisp_table_2378_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_2378_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_2378_salloc_load", i64 48) + %"$dyndisp_table_2378_salloc" = bitcast i8* %"$dyndisp_table_2378_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_2378" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_2378_salloc" to { i8*, i8* }* + %"$dyndisp_gep_2379" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_2378", i32 0 + %"$dyndisp_pcast_2380" = bitcast { i8*, i8* }* %"$dyndisp_gep_2379" to { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_187_cloval_2375", { { { %TName_Option_ByStr20* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_2380" + store { i8*, i8* }* %"$dyndisp_table_2378", { i8*, i8* }** @list_find + %"$gasrem_2381" = load i64, i64* @_gasrem + %"$gascmp_2382" = icmp ugt i64 1, %"$gasrem_2381" + br i1 %"$gascmp_2382", label %"$out_of_gas_2383", label %"$have_gas_2384" + +"$out_of_gas_2383": ; preds = %"$have_gas_2370" + call void @_out_of_gas() + br label %"$have_gas_2384" + +"$have_gas_2384": ; preds = %"$out_of_gas_2383", %"$have_gas_2370" + %"$consume_2385" = sub i64 %"$gasrem_2381", 1 + store i64 %"$consume_2385", i64* @_gasrem + %"$$fundef_181_envp_2386_load" = load i8*, i8** @_execptr + %"$$fundef_181_envp_2386_salloc" = call i8* @_salloc(i8* %"$$fundef_181_envp_2386_load", i64 8) + %"$$fundef_181_envp_2386" = bitcast i8* %"$$fundef_181_envp_2386_salloc" to %"$$fundef_181_env_435"* + %"$$fundef_181_env_voidp_2388" = bitcast %"$$fundef_181_env_435"* %"$$fundef_181_envp_2386" to i8* + %"$$fundef_181_cloval_2389" = insertvalue { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)* bitcast ({ { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (%"$$fundef_181_env_435"*)* @"$fundef_181" to { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_181_env_voidp_2388", 1 + %"$$fundef_181_env_list_find_2390" = getelementptr inbounds %"$$fundef_181_env_435", %"$$fundef_181_env_435"* %"$$fundef_181_envp_2386", i32 0, i32 0 + %"$list_find_2391" = load { i8*, i8* }*, { i8*, i8* }** @list_find + store { i8*, i8* }* %"$list_find_2391", { i8*, i8* }** %"$$fundef_181_env_list_find_2390" + %"$dyndisp_table_2392_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_2392_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_2392_salloc_load", i64 48) + %"$dyndisp_table_2392_salloc" = bitcast i8* %"$dyndisp_table_2392_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_2392" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_2392_salloc" to { i8*, i8* }* + %"$dyndisp_gep_2393" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_2392", i32 0 + %"$dyndisp_pcast_2394" = bitcast { i8*, i8* }* %"$dyndisp_gep_2393" to { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_181_cloval_2389", { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, { %TName_Bool* (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_2394" + store { i8*, i8* }* %"$dyndisp_table_2392", { i8*, i8* }** @list_exists + %"$gasrem_2395" = load i64, i64* @_gasrem + %"$gascmp_2396" = icmp ugt i64 1, %"$gasrem_2395" + br i1 %"$gascmp_2396", label %"$out_of_gas_2397", label %"$have_gas_2398" + +"$out_of_gas_2397": ; preds = %"$have_gas_2384" + call void @_out_of_gas() + br label %"$have_gas_2398" + +"$have_gas_2398": ; preds = %"$out_of_gas_2397", %"$have_gas_2384" + %"$consume_2399" = sub i64 %"$gasrem_2395", 1 + store i64 %"$consume_2399", i64* @_gasrem + %"$$fundef_175_envp_2400_load" = load i8*, i8** @_execptr + %"$$fundef_175_envp_2400_salloc" = call i8* @_salloc(i8* %"$$fundef_175_envp_2400_load", i64 8) + %"$$fundef_175_envp_2400" = bitcast i8* %"$$fundef_175_envp_2400_salloc" to %"$$fundef_175_env_432"* + %"$$fundef_175_env_voidp_2402" = bitcast %"$$fundef_175_env_432"* %"$$fundef_175_envp_2400" to i8* + %"$$fundef_175_cloval_2403" = insertvalue { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (%"$$fundef_175_env_432"*)* @"$fundef_175" to { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_175_env_voidp_2402", 1 + %"$$fundef_175_env_list_exists_2404" = getelementptr inbounds %"$$fundef_175_env_432", %"$$fundef_175_env_432"* %"$$fundef_175_envp_2400", i32 0, i32 0 + %"$list_exists_2405" = load { i8*, i8* }*, { i8*, i8* }** @list_exists + store { i8*, i8* }* %"$list_exists_2405", { i8*, i8* }** %"$$fundef_175_env_list_exists_2404" + %"$dyndisp_table_2406_salloc_load" = load i8*, i8** @_execptr + %"$dyndisp_table_2406_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_2406_salloc_load", i64 48) + %"$dyndisp_table_2406_salloc" = bitcast i8* %"$dyndisp_table_2406_salloc_salloc" to [3 x { i8*, i8* }]* + %"$dyndisp_table_2406" = bitcast [3 x { i8*, i8* }]* %"$dyndisp_table_2406_salloc" to { i8*, i8* }* + %"$dyndisp_gep_2407" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_2406", i32 0 + %"$dyndisp_pcast_2408" = bitcast { i8*, i8* }* %"$dyndisp_gep_2407" to { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_175_cloval_2403", { { { { %TName_Bool* (i8*, %TName_List_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_2408" + store { i8*, i8* }* %"$dyndisp_table_2406", { i8*, i8* }** @list_mem + %"$gasrem_2409" = load i64, i64* @_gasrem + %"$gascmp_2410" = icmp ugt i64 1, %"$gasrem_2409" + br i1 %"$gascmp_2410", label %"$out_of_gas_2411", label %"$have_gas_2412" + +"$out_of_gas_2411": ; preds = %"$have_gas_2398" + call void @_out_of_gas() + br label %"$have_gas_2412" + +"$have_gas_2412": ; preds = %"$out_of_gas_2411", %"$have_gas_2398" + %"$consume_2413" = sub i64 %"$gasrem_2409", 1 + store i64 %"$consume_2413", i64* @_gasrem store [20 x i8] zeroinitializer, [20 x i8]* @zeroByStr20 - %"$adtval_1682_load" = load i8*, i8** @_execptr - %"$adtval_1682_salloc" = call i8* @_salloc(i8* %"$adtval_1682_load", i64 1) - %"$adtval_1682" = bitcast i8* %"$adtval_1682_salloc" to %CName_Nil_ByStr20* - %"$adtgep_1683" = getelementptr inbounds %CName_Nil_ByStr20, %CName_Nil_ByStr20* %"$adtval_1682", i32 0, i32 0 - store i8 1, i8* %"$adtgep_1683" - %"$adtptr_1684" = bitcast %CName_Nil_ByStr20* %"$adtval_1682" to %TName_List_ByStr20* - store %TName_List_ByStr20* %"$adtptr_1684", %TName_List_ByStr20** @nilByStr20 - %"$adtval_1685_load" = load i8*, i8** @_execptr - %"$adtval_1685_salloc" = call i8* @_salloc(i8* %"$adtval_1685_load", i64 1) - %"$adtval_1685" = bitcast i8* %"$adtval_1685_salloc" to %CName_Nil_Message* - %"$adtgep_1686" = getelementptr inbounds %CName_Nil_Message, %CName_Nil_Message* %"$adtval_1685", i32 0, i32 0 - store i8 1, i8* %"$adtgep_1686" - %"$adtptr_1687" = bitcast %CName_Nil_Message* %"$adtval_1685" to %TName_List_Message* - store %TName_List_Message* %"$adtptr_1687", %TName_List_Message** @nilMessage - %"$$fundef_270_envp_1688_load" = load i8*, i8** @_execptr - %"$$fundef_270_envp_1688_salloc" = call i8* @_salloc(i8* %"$$fundef_270_envp_1688_load", i64 8) - %"$$fundef_270_envp_1688" = bitcast i8* %"$$fundef_270_envp_1688_salloc" to %"$$fundef_270_env_432"* - %"$$fundef_270_env_voidp_1690" = bitcast %"$$fundef_270_env_432"* %"$$fundef_270_envp_1688" to i8* - %"$$fundef_270_cloval_1691" = insertvalue { %TName_List_Message* (i8*, i8*)*, i8* } { %TName_List_Message* (i8*, i8*)* bitcast (%TName_List_Message* (%"$$fundef_270_env_432"*, i8*)* @"$fundef_270" to %TName_List_Message* (i8*, i8*)*), i8* undef }, i8* %"$$fundef_270_env_voidp_1690", 1 - %"$$fundef_270_env_nilMessage_1692" = getelementptr inbounds %"$$fundef_270_env_432", %"$$fundef_270_env_432"* %"$$fundef_270_envp_1688", i32 0, i32 0 - %"$nilMessage_1693" = load %TName_List_Message*, %TName_List_Message** @nilMessage - store %TName_List_Message* %"$nilMessage_1693", %TName_List_Message** %"$$fundef_270_env_nilMessage_1692" - store { %TName_List_Message* (i8*, i8*)*, i8* } %"$$fundef_270_cloval_1691", { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ %TName_Bool* (i8*, [20 x i8]*)*, i8* } (%"$$fundef_266_env_431"*, [20 x i8]*)* @"$fundef_266" to { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*), i8* null }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @eqByStr20 - %"$$fundef_262_envp_1697_load" = load i8*, i8** @_execptr - %"$$fundef_262_envp_1697_salloc" = call i8* @_salloc(i8* %"$$fundef_262_envp_1697_load", i64 24) - %"$$fundef_262_envp_1697" = bitcast i8* %"$$fundef_262_envp_1697_salloc" to %"$$fundef_262_env_429"* - %"$$fundef_262_env_voidp_1699" = bitcast %"$$fundef_262_env_429"* %"$$fundef_262_envp_1697" to i8* - %"$$fundef_262_cloval_1700" = insertvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)* bitcast ({ %TName_Bool* (i8*, [20 x i8]*)*, i8* } (%"$$fundef_262_env_429"*, %TName_List_ByStr20*)* @"$fundef_262" to { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_262_env_voidp_1699", 1 - %"$$fundef_262_env_eqByStr20_1701" = getelementptr inbounds %"$$fundef_262_env_429", %"$$fundef_262_env_429"* %"$$fundef_262_envp_1697", i32 0, i32 0 - %"$eqByStr20_1702" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @eqByStr20 - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eqByStr20_1702", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_262_env_eqByStr20_1701" - %"$$fundef_262_env_list_mem_1703" = getelementptr inbounds %"$$fundef_262_env_429", %"$$fundef_262_env_429"* %"$$fundef_262_envp_1697", i32 0, i32 1 - %"$list_mem_1704" = load { i8*, i8* }*, { i8*, i8* }** @list_mem - store { i8*, i8* }* %"$list_mem_1704", { i8*, i8* }** %"$$fundef_262_env_list_mem_1703" - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_262_cloval_1700", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20Contains - %"$$fundef_258_envp_1705_load" = load i8*, i8** @_execptr - %"$$fundef_258_envp_1705_salloc" = call i8* @_salloc(i8* %"$$fundef_258_envp_1705_load", i64 32) - %"$$fundef_258_envp_1705" = bitcast i8* %"$$fundef_258_envp_1705_salloc" to %"$$fundef_258_env_427"* - %"$$fundef_258_env_voidp_1707" = bitcast %"$$fundef_258_env_427"* %"$$fundef_258_envp_1705" to i8* - %"$$fundef_258_cloval_1708" = insertvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)* bitcast ({ %TName_Bool* (i8*, [20 x i8]*)*, i8* } (%"$$fundef_258_env_427"*, %TName_List_ByStr20*)* @"$fundef_258" to { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_258_env_voidp_1707", 1 - %"$$fundef_258_env_listByStr20Contains_1709" = getelementptr inbounds %"$$fundef_258_env_427", %"$$fundef_258_env_427"* %"$$fundef_258_envp_1705", i32 0, i32 0 - %"$listByStr20Contains_1710" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20Contains - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_1710", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_258_env_listByStr20Contains_1709" - %"$$fundef_258_env_negb_1711" = getelementptr inbounds %"$$fundef_258_env_427", %"$$fundef_258_env_427"* %"$$fundef_258_envp_1705", i32 0, i32 1 - %"$negb_1712" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* @negb - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_1712", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_258_env_negb_1711" - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_258_cloval_1708", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20Excludes - %"$$fundef_252_envp_1713_load" = load i8*, i8** @_execptr - %"$$fundef_252_envp_1713_salloc" = call i8* @_salloc(i8* %"$$fundef_252_envp_1713_load", i64 24) - %"$$fundef_252_envp_1713" = bitcast i8* %"$$fundef_252_envp_1713_salloc" to %"$$fundef_252_env_425"* - %"$$fundef_252_env_voidp_1715" = bitcast %"$$fundef_252_env_425"* %"$$fundef_252_envp_1713" to i8* - %"$$fundef_252_cloval_1716" = insertvalue { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)* bitcast ({ %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (%"$$fundef_252_env_425"*, %TName_List_ByStr20*)* @"$fundef_252" to { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_252_env_voidp_1715", 1 - %"$$fundef_252_env_list_filter_1717" = getelementptr inbounds %"$$fundef_252_env_425", %"$$fundef_252_env_425"* %"$$fundef_252_envp_1713", i32 0, i32 0 - %"$list_filter_1718" = load { i8*, i8* }*, { i8*, i8* }** @list_filter - store { i8*, i8* }* %"$list_filter_1718", { i8*, i8* }** %"$$fundef_252_env_list_filter_1717" - %"$$fundef_252_env_negb_1719" = getelementptr inbounds %"$$fundef_252_env_425", %"$$fundef_252_env_425"* %"$$fundef_252_envp_1713", i32 0, i32 1 - %"$negb_1720" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* @negb - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_1720", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_252_env_negb_1719" - store { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_252_cloval_1716", { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20FilterOut - store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)* bitcast ({ %TName_Bool* (i8*, %TName_Bool*)*, i8* } (%"$$fundef_248_env_422"*, %TName_Bool*)* @"$fundef_248" to { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*), i8* null }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @xandb - store { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ i8* (i8*, %TName_Bool*)*, i8* } (%"$$fundef_244_env_420"*, [20 x i8]*)* @"$fundef_244" to { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*), i8* null }, { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @eAdminSet - store { { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } (%"$$fundef_238_env_418"*, [20 x i8]*)* @"$fundef_238" to { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*), i8* null }, { { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @eApprovedFor - store { i8* (i8*, [20 x i8]*)*, i8* } { i8* (i8*, [20 x i8]*)* bitcast (i8* (%"$$fundef_236_env_415"*, [20 x i8]*)* @"$fundef_236" to i8* (i8*, [20 x i8]*)*), i8* null }, { i8* (i8*, [20 x i8]*)*, i8* }* @eApproved - store { i8* (i8*, [20 x i8]*)*, i8* } { i8* (i8*, [20 x i8]*)* bitcast (i8* (%"$$fundef_234_env_414"*, [20 x i8]*)* @"$fundef_234" to i8* (i8*, [20 x i8]*)*), i8* null }, { i8* (i8*, [20 x i8]*)*, i8* }* @eNewRegistrar - store { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)* bitcast ({ i8* (i8*, %String)*, i8* } (%"$$fundef_230_env_413"*, [32 x i8]*)* @"$fundef_230" to { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*), i8* null }, { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eNewDomain - store { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)* bitcast ({ { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (%"$$fundef_224_env_411"*, [32 x i8]*)* @"$fundef_224" to { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*), i8* null }, { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eConfigured - store { i8* (i8*, %String)*, i8* } { i8* (i8*, %String)* bitcast (i8* (%"$$fundef_222_env_408"*, %String)* @"$fundef_222" to i8* (i8*, %String)*), i8* null }, { i8* (i8*, %String)*, i8* }* @eError - %"$$fundef_220_envp_1745_load" = load i8*, i8** @_execptr - %"$$fundef_220_envp_1745_salloc" = call i8* @_salloc(i8* %"$$fundef_220_envp_1745_load", i64 20) - %"$$fundef_220_envp_1745" = bitcast i8* %"$$fundef_220_envp_1745_salloc" to %"$$fundef_220_env_407"* - %"$$fundef_220_env_voidp_1747" = bitcast %"$$fundef_220_env_407"* %"$$fundef_220_envp_1745" to i8* - %"$$fundef_220_cloval_1748" = insertvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } { void (i8*, [20 x i8]*, %TName_Option_Record*)* bitcast (void (%"$$fundef_220_env_407"*, [20 x i8]*, %TName_Option_Record*)* @"$fundef_220" to void (i8*, [20 x i8]*, %TName_Option_Record*)*), i8* undef }, i8* %"$$fundef_220_env_voidp_1747", 1 - %"$$fundef_220_env_zeroByStr20_1749" = getelementptr inbounds %"$$fundef_220_env_407", %"$$fundef_220_env_407"* %"$$fundef_220_envp_1745", i32 0, i32 0 - %"$zeroByStr20_1750" = load [20 x i8], [20 x i8]* @zeroByStr20 - store [20 x i8] %"$zeroByStr20_1750", [20 x i8]* %"$$fundef_220_env_zeroByStr20_1749" - store { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$$fundef_220_cloval_1748", { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }* @recordMemberOwner - store { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)* bitcast ({ void (i8*, [32 x i8]*, %String)*, i8* } (%"$$fundef_216_env_406"*, [32 x i8]*)* @"$fundef_216" to { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*), i8* null }, { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }* @parentLabelToNode - %"$$fundef_208_envp_1754_load" = load i8*, i8** @_execptr - %"$$fundef_208_envp_1754_salloc" = call i8* @_salloc(i8* %"$$fundef_208_envp_1754_load", i64 32) - %"$$fundef_208_envp_1754" = bitcast i8* %"$$fundef_208_envp_1754_salloc" to %"$$fundef_208_env_404"* - %"$$fundef_208_env_voidp_1756" = bitcast %"$$fundef_208_env_404"* %"$$fundef_208_envp_1754" to i8* - %"$$fundef_208_cloval_1757" = insertvalue { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (%"$$fundef_208_env_404"*, [20 x i8]*)* @"$fundef_208" to { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_208_env_voidp_1756", 1 - %"$$fundef_208_env_listByStr20Contains_1758" = getelementptr inbounds %"$$fundef_208_env_404", %"$$fundef_208_env_404"* %"$$fundef_208_envp_1754", i32 0, i32 0 - %"$listByStr20Contains_1759" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20Contains - store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_1759", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_208_env_listByStr20Contains_1758" - %"$$fundef_208_env_orb_1760" = getelementptr inbounds %"$$fundef_208_env_404", %"$$fundef_208_env_404"* %"$$fundef_208_envp_1754", i32 0, i32 1 - %"$orb_1761" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @orb - store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_1761", { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %"$$fundef_208_env_orb_1760" - store { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$fundef_208_cloval_1757", { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @getIsOAO + %"$gasrem_2414" = load i64, i64* @_gasrem + %"$gascmp_2415" = icmp ugt i64 1, %"$gasrem_2414" + br i1 %"$gascmp_2415", label %"$out_of_gas_2416", label %"$have_gas_2417" + +"$out_of_gas_2416": ; preds = %"$have_gas_2412" + call void @_out_of_gas() + br label %"$have_gas_2417" + +"$have_gas_2417": ; preds = %"$out_of_gas_2416", %"$have_gas_2412" + %"$consume_2418" = sub i64 %"$gasrem_2414", 1 + store i64 %"$consume_2418", i64* @_gasrem + %"$adtval_2419_load" = load i8*, i8** @_execptr + %"$adtval_2419_salloc" = call i8* @_salloc(i8* %"$adtval_2419_load", i64 1) + %"$adtval_2419" = bitcast i8* %"$adtval_2419_salloc" to %CName_Nil_ByStr20* + %"$adtgep_2420" = getelementptr inbounds %CName_Nil_ByStr20, %CName_Nil_ByStr20* %"$adtval_2419", i32 0, i32 0 + store i8 1, i8* %"$adtgep_2420" + %"$adtptr_2421" = bitcast %CName_Nil_ByStr20* %"$adtval_2419" to %TName_List_ByStr20* + store %TName_List_ByStr20* %"$adtptr_2421", %TName_List_ByStr20** @nilByStr20 + %"$gasrem_2422" = load i64, i64* @_gasrem + %"$gascmp_2423" = icmp ugt i64 1, %"$gasrem_2422" + br i1 %"$gascmp_2423", label %"$out_of_gas_2424", label %"$have_gas_2425" + +"$out_of_gas_2424": ; preds = %"$have_gas_2417" + call void @_out_of_gas() + br label %"$have_gas_2425" + +"$have_gas_2425": ; preds = %"$out_of_gas_2424", %"$have_gas_2417" + %"$consume_2426" = sub i64 %"$gasrem_2422", 1 + store i64 %"$consume_2426", i64* @_gasrem + %"$adtval_2427_load" = load i8*, i8** @_execptr + %"$adtval_2427_salloc" = call i8* @_salloc(i8* %"$adtval_2427_load", i64 1) + %"$adtval_2427" = bitcast i8* %"$adtval_2427_salloc" to %CName_Nil_Message* + %"$adtgep_2428" = getelementptr inbounds %CName_Nil_Message, %CName_Nil_Message* %"$adtval_2427", i32 0, i32 0 + store i8 1, i8* %"$adtgep_2428" + %"$adtptr_2429" = bitcast %CName_Nil_Message* %"$adtval_2427" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_2429", %TName_List_Message** @nilMessage + %"$gasrem_2430" = load i64, i64* @_gasrem + %"$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_2425" + call void @_out_of_gas() + br label %"$have_gas_2433" + +"$have_gas_2433": ; preds = %"$out_of_gas_2432", %"$have_gas_2425" + %"$consume_2434" = sub i64 %"$gasrem_2430", 1 + store i64 %"$consume_2434", i64* @_gasrem + %"$$fundef_267_envp_2435_load" = load i8*, i8** @_execptr + %"$$fundef_267_envp_2435_salloc" = call i8* @_salloc(i8* %"$$fundef_267_envp_2435_load", i64 8) + %"$$fundef_267_envp_2435" = bitcast i8* %"$$fundef_267_envp_2435_salloc" to %"$$fundef_267_env_429"* + %"$$fundef_267_env_voidp_2437" = bitcast %"$$fundef_267_env_429"* %"$$fundef_267_envp_2435" to i8* + %"$$fundef_267_cloval_2438" = insertvalue { %TName_List_Message* (i8*, i8*)*, i8* } { %TName_List_Message* (i8*, i8*)* bitcast (%TName_List_Message* (%"$$fundef_267_env_429"*, i8*)* @"$fundef_267" to %TName_List_Message* (i8*, i8*)*), i8* undef }, i8* %"$$fundef_267_env_voidp_2437", 1 + %"$$fundef_267_env_nilMessage_2439" = getelementptr inbounds %"$$fundef_267_env_429", %"$$fundef_267_env_429"* %"$$fundef_267_envp_2435", i32 0, i32 0 + %"$nilMessage_2440" = load %TName_List_Message*, %TName_List_Message** @nilMessage + store %TName_List_Message* %"$nilMessage_2440", %TName_List_Message** %"$$fundef_267_env_nilMessage_2439" + store { %TName_List_Message* (i8*, i8*)*, i8* } %"$$fundef_267_cloval_2438", { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg + %"$gasrem_2441" = load i64, i64* @_gasrem + %"$gascmp_2442" = icmp ugt i64 1, %"$gasrem_2441" + br i1 %"$gascmp_2442", label %"$out_of_gas_2443", label %"$have_gas_2444" + +"$out_of_gas_2443": ; preds = %"$have_gas_2433" + call void @_out_of_gas() + br label %"$have_gas_2444" + +"$have_gas_2444": ; preds = %"$out_of_gas_2443", %"$have_gas_2433" + %"$consume_2445" = sub i64 %"$gasrem_2441", 1 + store i64 %"$consume_2445", i64* @_gasrem + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ %TName_Bool* (i8*, [20 x i8]*)*, i8* } (%"$$fundef_263_env_428"*, [20 x i8]*)* @"$fundef_263" to { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*), i8* null }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @eqByStr20 + %"$gasrem_2449" = load i64, i64* @_gasrem + %"$gascmp_2450" = icmp ugt i64 1, %"$gasrem_2449" + br i1 %"$gascmp_2450", label %"$out_of_gas_2451", label %"$have_gas_2452" + +"$out_of_gas_2451": ; preds = %"$have_gas_2444" + call void @_out_of_gas() + br label %"$have_gas_2452" + +"$have_gas_2452": ; preds = %"$out_of_gas_2451", %"$have_gas_2444" + %"$consume_2453" = sub i64 %"$gasrem_2449", 1 + store i64 %"$consume_2453", i64* @_gasrem + %"$$fundef_259_envp_2454_load" = load i8*, i8** @_execptr + %"$$fundef_259_envp_2454_salloc" = call i8* @_salloc(i8* %"$$fundef_259_envp_2454_load", i64 24) + %"$$fundef_259_envp_2454" = bitcast i8* %"$$fundef_259_envp_2454_salloc" to %"$$fundef_259_env_426"* + %"$$fundef_259_env_voidp_2456" = bitcast %"$$fundef_259_env_426"* %"$$fundef_259_envp_2454" to i8* + %"$$fundef_259_cloval_2457" = insertvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)* bitcast ({ %TName_Bool* (i8*, [20 x i8]*)*, i8* } (%"$$fundef_259_env_426"*, %TName_List_ByStr20*)* @"$fundef_259" to { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_259_env_voidp_2456", 1 + %"$$fundef_259_env_eqByStr20_2458" = getelementptr inbounds %"$$fundef_259_env_426", %"$$fundef_259_env_426"* %"$$fundef_259_envp_2454", i32 0, i32 0 + %"$eqByStr20_2459" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @eqByStr20 + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eqByStr20_2459", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$$fundef_259_env_eqByStr20_2458" + %"$$fundef_259_env_list_mem_2460" = getelementptr inbounds %"$$fundef_259_env_426", %"$$fundef_259_env_426"* %"$$fundef_259_envp_2454", i32 0, i32 1 + %"$list_mem_2461" = load { i8*, i8* }*, { i8*, i8* }** @list_mem + store { i8*, i8* }* %"$list_mem_2461", { i8*, i8* }** %"$$fundef_259_env_list_mem_2460" + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_259_cloval_2457", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20Contains + %"$gasrem_2462" = load i64, i64* @_gasrem + %"$gascmp_2463" = icmp ugt i64 1, %"$gasrem_2462" + br i1 %"$gascmp_2463", label %"$out_of_gas_2464", label %"$have_gas_2465" + +"$out_of_gas_2464": ; preds = %"$have_gas_2452" + call void @_out_of_gas() + br label %"$have_gas_2465" + +"$have_gas_2465": ; preds = %"$out_of_gas_2464", %"$have_gas_2452" + %"$consume_2466" = sub i64 %"$gasrem_2462", 1 + store i64 %"$consume_2466", i64* @_gasrem + %"$$fundef_255_envp_2467_load" = load i8*, i8** @_execptr + %"$$fundef_255_envp_2467_salloc" = call i8* @_salloc(i8* %"$$fundef_255_envp_2467_load", i64 32) + %"$$fundef_255_envp_2467" = bitcast i8* %"$$fundef_255_envp_2467_salloc" to %"$$fundef_255_env_424"* + %"$$fundef_255_env_voidp_2469" = bitcast %"$$fundef_255_env_424"* %"$$fundef_255_envp_2467" to i8* + %"$$fundef_255_cloval_2470" = insertvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)* bitcast ({ %TName_Bool* (i8*, [20 x i8]*)*, i8* } (%"$$fundef_255_env_424"*, %TName_List_ByStr20*)* @"$fundef_255" to { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_255_env_voidp_2469", 1 + %"$$fundef_255_env_listByStr20Contains_2471" = getelementptr inbounds %"$$fundef_255_env_424", %"$$fundef_255_env_424"* %"$$fundef_255_envp_2467", i32 0, i32 0 + %"$listByStr20Contains_2472" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20Contains + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_2472", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_255_env_listByStr20Contains_2471" + %"$$fundef_255_env_negb_2473" = getelementptr inbounds %"$$fundef_255_env_424", %"$$fundef_255_env_424"* %"$$fundef_255_envp_2467", i32 0, i32 1 + %"$negb_2474" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* @negb + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_2474", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_255_env_negb_2473" + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_255_cloval_2470", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20Excludes + %"$gasrem_2475" = load i64, i64* @_gasrem + %"$gascmp_2476" = icmp ugt i64 1, %"$gasrem_2475" + br i1 %"$gascmp_2476", label %"$out_of_gas_2477", label %"$have_gas_2478" + +"$out_of_gas_2477": ; preds = %"$have_gas_2465" + call void @_out_of_gas() + br label %"$have_gas_2478" + +"$have_gas_2478": ; preds = %"$out_of_gas_2477", %"$have_gas_2465" + %"$consume_2479" = sub i64 %"$gasrem_2475", 1 + store i64 %"$consume_2479", i64* @_gasrem + %"$$fundef_249_envp_2480_load" = load i8*, i8** @_execptr + %"$$fundef_249_envp_2480_salloc" = call i8* @_salloc(i8* %"$$fundef_249_envp_2480_load", i64 24) + %"$$fundef_249_envp_2480" = bitcast i8* %"$$fundef_249_envp_2480_salloc" to %"$$fundef_249_env_422"* + %"$$fundef_249_env_voidp_2482" = bitcast %"$$fundef_249_env_422"* %"$$fundef_249_envp_2480" to i8* + %"$$fundef_249_cloval_2483" = insertvalue { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)* bitcast ({ %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (%"$$fundef_249_env_422"*, %TName_List_ByStr20*)* @"$fundef_249" to { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*), i8* undef }, i8* %"$$fundef_249_env_voidp_2482", 1 + %"$$fundef_249_env_list_filter_2484" = getelementptr inbounds %"$$fundef_249_env_422", %"$$fundef_249_env_422"* %"$$fundef_249_envp_2480", i32 0, i32 0 + %"$list_filter_2485" = load { i8*, i8* }*, { i8*, i8* }** @list_filter + store { i8*, i8* }* %"$list_filter_2485", { i8*, i8* }** %"$$fundef_249_env_list_filter_2484" + %"$$fundef_249_env_negb_2486" = getelementptr inbounds %"$$fundef_249_env_422", %"$$fundef_249_env_422"* %"$$fundef_249_envp_2480", i32 0, i32 1 + %"$negb_2487" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* @negb + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_2487", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$$fundef_249_env_negb_2486" + store { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$$fundef_249_cloval_2483", { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20FilterOut + %"$gasrem_2488" = load i64, i64* @_gasrem + %"$gascmp_2489" = icmp ugt i64 1, %"$gasrem_2488" + br i1 %"$gascmp_2489", label %"$out_of_gas_2490", label %"$have_gas_2491" + +"$out_of_gas_2490": ; preds = %"$have_gas_2478" + call void @_out_of_gas() + br label %"$have_gas_2491" + +"$have_gas_2491": ; preds = %"$out_of_gas_2490", %"$have_gas_2478" + %"$consume_2492" = sub i64 %"$gasrem_2488", 1 + store i64 %"$consume_2492", i64* @_gasrem + store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)* bitcast ({ %TName_Bool* (i8*, %TName_Bool*)*, i8* } (%"$$fundef_245_env_419"*, %TName_Bool*)* @"$fundef_245" to { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*), i8* null }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @xandb + %"$gasrem_2496" = load i64, i64* @_gasrem + %"$gascmp_2497" = icmp ugt i64 1, %"$gasrem_2496" + br i1 %"$gascmp_2497", label %"$out_of_gas_2498", label %"$have_gas_2499" + +"$out_of_gas_2498": ; preds = %"$have_gas_2491" + call void @_out_of_gas() + br label %"$have_gas_2499" + +"$have_gas_2499": ; preds = %"$out_of_gas_2498", %"$have_gas_2491" + %"$consume_2500" = sub i64 %"$gasrem_2496", 1 + store i64 %"$consume_2500", i64* @_gasrem + store { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ i8* (i8*, %TName_Bool*)*, i8* } (%"$$fundef_241_env_417"*, [20 x i8]*)* @"$fundef_241" to { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*), i8* null }, { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @eAdminSet + %"$gasrem_2504" = load i64, i64* @_gasrem + %"$gascmp_2505" = icmp ugt i64 1, %"$gasrem_2504" + br i1 %"$gascmp_2505", label %"$out_of_gas_2506", label %"$have_gas_2507" + +"$out_of_gas_2506": ; preds = %"$have_gas_2499" + call void @_out_of_gas() + br label %"$have_gas_2507" + +"$have_gas_2507": ; preds = %"$out_of_gas_2506", %"$have_gas_2499" + %"$consume_2508" = sub i64 %"$gasrem_2504", 1 + store i64 %"$consume_2508", i64* @_gasrem + store { { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } (%"$$fundef_235_env_415"*, [20 x i8]*)* @"$fundef_235" to { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*), i8* null }, { { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @eApprovedFor + %"$gasrem_2512" = load i64, i64* @_gasrem + %"$gascmp_2513" = icmp ugt i64 1, %"$gasrem_2512" + br i1 %"$gascmp_2513", label %"$out_of_gas_2514", label %"$have_gas_2515" + +"$out_of_gas_2514": ; preds = %"$have_gas_2507" + call void @_out_of_gas() + br label %"$have_gas_2515" + +"$have_gas_2515": ; preds = %"$out_of_gas_2514", %"$have_gas_2507" + %"$consume_2516" = sub i64 %"$gasrem_2512", 1 + store i64 %"$consume_2516", i64* @_gasrem + store { i8* (i8*, [20 x i8]*)*, i8* } { i8* (i8*, [20 x i8]*)* bitcast (i8* (%"$$fundef_233_env_412"*, [20 x i8]*)* @"$fundef_233" to i8* (i8*, [20 x i8]*)*), i8* null }, { i8* (i8*, [20 x i8]*)*, i8* }* @eApproved + %"$gasrem_2520" = load i64, i64* @_gasrem + %"$gascmp_2521" = icmp ugt i64 1, %"$gasrem_2520" + br i1 %"$gascmp_2521", label %"$out_of_gas_2522", label %"$have_gas_2523" + +"$out_of_gas_2522": ; preds = %"$have_gas_2515" + call void @_out_of_gas() + br label %"$have_gas_2523" + +"$have_gas_2523": ; preds = %"$out_of_gas_2522", %"$have_gas_2515" + %"$consume_2524" = sub i64 %"$gasrem_2520", 1 + store i64 %"$consume_2524", i64* @_gasrem + store { i8* (i8*, [20 x i8]*)*, i8* } { i8* (i8*, [20 x i8]*)* bitcast (i8* (%"$$fundef_231_env_411"*, [20 x i8]*)* @"$fundef_231" to i8* (i8*, [20 x i8]*)*), i8* null }, { i8* (i8*, [20 x i8]*)*, i8* }* @eNewRegistrar + %"$gasrem_2528" = load i64, i64* @_gasrem + %"$gascmp_2529" = icmp ugt i64 1, %"$gasrem_2528" + br i1 %"$gascmp_2529", label %"$out_of_gas_2530", label %"$have_gas_2531" + +"$out_of_gas_2530": ; preds = %"$have_gas_2523" + call void @_out_of_gas() + br label %"$have_gas_2531" + +"$have_gas_2531": ; preds = %"$out_of_gas_2530", %"$have_gas_2523" + %"$consume_2532" = sub i64 %"$gasrem_2528", 1 + store i64 %"$consume_2532", i64* @_gasrem + store { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)* bitcast ({ i8* (i8*, %String)*, i8* } (%"$$fundef_227_env_410"*, [32 x i8]*)* @"$fundef_227" to { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*), i8* null }, { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eNewDomain + %"$gasrem_2536" = load i64, i64* @_gasrem + %"$gascmp_2537" = icmp ugt i64 1, %"$gasrem_2536" + br i1 %"$gascmp_2537", label %"$out_of_gas_2538", label %"$have_gas_2539" + +"$out_of_gas_2538": ; preds = %"$have_gas_2531" + call void @_out_of_gas() + br label %"$have_gas_2539" + +"$have_gas_2539": ; preds = %"$out_of_gas_2538", %"$have_gas_2531" + %"$consume_2540" = sub i64 %"$gasrem_2536", 1 + store i64 %"$consume_2540", i64* @_gasrem + store { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)* bitcast ({ { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (%"$$fundef_221_env_408"*, [32 x i8]*)* @"$fundef_221" to { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*), i8* null }, { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eConfigured + %"$gasrem_2544" = load i64, i64* @_gasrem + %"$gascmp_2545" = icmp ugt i64 1, %"$gasrem_2544" + br i1 %"$gascmp_2545", label %"$out_of_gas_2546", label %"$have_gas_2547" + +"$out_of_gas_2546": ; preds = %"$have_gas_2539" + call void @_out_of_gas() + br label %"$have_gas_2547" + +"$have_gas_2547": ; preds = %"$out_of_gas_2546", %"$have_gas_2539" + %"$consume_2548" = sub i64 %"$gasrem_2544", 1 + store i64 %"$consume_2548", i64* @_gasrem + store { i8* (i8*, %String)*, i8* } { i8* (i8*, %String)* bitcast (i8* (%"$$fundef_219_env_405"*, %String)* @"$fundef_219" to i8* (i8*, %String)*), i8* null }, { i8* (i8*, %String)*, i8* }* @eError + %"$gasrem_2552" = load i64, i64* @_gasrem + %"$gascmp_2553" = icmp ugt i64 1, %"$gasrem_2552" + br i1 %"$gascmp_2553", label %"$out_of_gas_2554", label %"$have_gas_2555" + +"$out_of_gas_2554": ; preds = %"$have_gas_2547" + call void @_out_of_gas() + br label %"$have_gas_2555" + +"$have_gas_2555": ; preds = %"$out_of_gas_2554", %"$have_gas_2547" + %"$consume_2556" = sub i64 %"$gasrem_2552", 1 + store i64 %"$consume_2556", i64* @_gasrem + %"$$fundef_217_envp_2557_load" = load i8*, i8** @_execptr + %"$$fundef_217_envp_2557_salloc" = call i8* @_salloc(i8* %"$$fundef_217_envp_2557_load", i64 20) + %"$$fundef_217_envp_2557" = bitcast i8* %"$$fundef_217_envp_2557_salloc" to %"$$fundef_217_env_404"* + %"$$fundef_217_env_voidp_2559" = bitcast %"$$fundef_217_env_404"* %"$$fundef_217_envp_2557" to i8* + %"$$fundef_217_cloval_2560" = insertvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } { void (i8*, [20 x i8]*, %TName_Option_Record*)* bitcast (void (%"$$fundef_217_env_404"*, [20 x i8]*, %TName_Option_Record*)* @"$fundef_217" to void (i8*, [20 x i8]*, %TName_Option_Record*)*), i8* undef }, i8* %"$$fundef_217_env_voidp_2559", 1 + %"$$fundef_217_env_zeroByStr20_2561" = getelementptr inbounds %"$$fundef_217_env_404", %"$$fundef_217_env_404"* %"$$fundef_217_envp_2557", i32 0, i32 0 + %"$zeroByStr20_2562" = load [20 x i8], [20 x i8]* @zeroByStr20 + store [20 x i8] %"$zeroByStr20_2562", [20 x i8]* %"$$fundef_217_env_zeroByStr20_2561" + store { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$$fundef_217_cloval_2560", { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }* @recordMemberOwner + %"$gasrem_2563" = load i64, i64* @_gasrem + %"$gascmp_2564" = icmp ugt i64 1, %"$gasrem_2563" + br i1 %"$gascmp_2564", label %"$out_of_gas_2565", label %"$have_gas_2566" + +"$out_of_gas_2565": ; preds = %"$have_gas_2555" + call void @_out_of_gas() + br label %"$have_gas_2566" + +"$have_gas_2566": ; preds = %"$out_of_gas_2565", %"$have_gas_2555" + %"$consume_2567" = sub i64 %"$gasrem_2563", 1 + store i64 %"$consume_2567", i64* @_gasrem + store { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)* bitcast ({ void (i8*, [32 x i8]*, %String)*, i8* } (%"$$fundef_213_env_403"*, [32 x i8]*)* @"$fundef_213" to { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*), i8* null }, { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }* @parentLabelToNode + %"$gasrem_2571" = load i64, i64* @_gasrem + %"$gascmp_2572" = icmp ugt i64 1, %"$gasrem_2571" + br i1 %"$gascmp_2572", label %"$out_of_gas_2573", label %"$have_gas_2574" + +"$out_of_gas_2573": ; preds = %"$have_gas_2566" + call void @_out_of_gas() + br label %"$have_gas_2574" + +"$have_gas_2574": ; preds = %"$out_of_gas_2573", %"$have_gas_2566" + %"$consume_2575" = sub i64 %"$gasrem_2571", 1 + store i64 %"$consume_2575", i64* @_gasrem + %"$$fundef_205_envp_2576_load" = load i8*, i8** @_execptr + %"$$fundef_205_envp_2576_salloc" = call i8* @_salloc(i8* %"$$fundef_205_envp_2576_load", i64 32) + %"$$fundef_205_envp_2576" = bitcast i8* %"$$fundef_205_envp_2576_salloc" to %"$$fundef_205_env_401"* + %"$$fundef_205_env_voidp_2578" = bitcast %"$$fundef_205_env_401"* %"$$fundef_205_envp_2576" to i8* + %"$$fundef_205_cloval_2579" = insertvalue { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)* bitcast ({ { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (%"$$fundef_205_env_401"*, [20 x i8]*)* @"$fundef_205" to { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*), i8* undef }, i8* %"$$fundef_205_env_voidp_2578", 1 + %"$$fundef_205_env_listByStr20Contains_2580" = getelementptr inbounds %"$$fundef_205_env_401", %"$$fundef_205_env_401"* %"$$fundef_205_envp_2576", i32 0, i32 0 + %"$listByStr20Contains_2581" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20Contains + store { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_2581", { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* %"$$fundef_205_env_listByStr20Contains_2580" + %"$$fundef_205_env_orb_2582" = getelementptr inbounds %"$$fundef_205_env_401", %"$$fundef_205_env_401"* %"$$fundef_205_envp_2576", i32 0, i32 1 + %"$orb_2583" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @orb + store { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_2583", { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* %"$$fundef_205_env_orb_2582" + store { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$fundef_205_cloval_2579", { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @getIsOAO ret void } define void @_init_state() { entry: - %"$records_272" = alloca %Map_ByStr32_Record* + %"$records_269" = alloca %Map_ByStr32_Record* + %"$gasrem_2584" = load i64, i64* @_gasrem + %"$gascmp_2585" = icmp ugt i64 1, %"$gasrem_2584" + br i1 %"$gascmp_2585", label %"$out_of_gas_2586", label %"$have_gas_2587" + +"$out_of_gas_2586": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2587" + +"$have_gas_2587": ; preds = %"$out_of_gas_2586", %entry + %"$consume_2588" = sub i64 %"$gasrem_2584", 1 + store i64 %"$consume_2588", i64* @_gasrem %empty = alloca %Map_ByStr32_Record* - %"$execptr_load_1762" = load i8*, i8** @_execptr - %"$_new_empty_map_call_1763" = call i8* @_new_empty_map(i8* %"$execptr_load_1762") - %"$Emp_1764" = bitcast i8* %"$_new_empty_map_call_1763" to %Map_ByStr32_Record* - store %Map_ByStr32_Record* %"$Emp_1764", %Map_ByStr32_Record** %empty + %"$gasrem_2589" = load i64, i64* @_gasrem + %"$gascmp_2590" = icmp ugt i64 1, %"$gasrem_2589" + br i1 %"$gascmp_2590", label %"$out_of_gas_2591", label %"$have_gas_2592" + +"$out_of_gas_2591": ; preds = %"$have_gas_2587" + call void @_out_of_gas() + br label %"$have_gas_2592" + +"$have_gas_2592": ; preds = %"$out_of_gas_2591", %"$have_gas_2587" + %"$consume_2593" = sub i64 %"$gasrem_2589", 1 + store i64 %"$consume_2593", i64* @_gasrem + %"$execptr_load_2594" = load i8*, i8** @_execptr + %"$_new_empty_map_call_2595" = call i8* @_new_empty_map(i8* %"$execptr_load_2594") + %"$Emp_2596" = bitcast i8* %"$_new_empty_map_call_2595" to %Map_ByStr32_Record* + store %Map_ByStr32_Record* %"$Emp_2596", %Map_ByStr32_Record** %empty + %"$gasrem_2597" = load i64, i64* @_gasrem + %"$gascmp_2598" = icmp ugt i64 1, %"$gasrem_2597" + br i1 %"$gascmp_2598", label %"$out_of_gas_2599", label %"$have_gas_2600" + +"$out_of_gas_2599": ; preds = %"$have_gas_2592" + call void @_out_of_gas() + br label %"$have_gas_2600" + +"$have_gas_2600": ; preds = %"$out_of_gas_2599", %"$have_gas_2592" + %"$consume_2601" = sub i64 %"$gasrem_2597", 1 + store i64 %"$consume_2601", i64* @_gasrem %rootRecord = alloca %TName_Record* - %"$initialOwner_1765" = load [20 x i8], [20 x i8]* @initialOwner - %"$zeroByStr20_1766" = load [20 x i8], [20 x i8]* @zeroByStr20 - %"$adtval_1767_load" = load i8*, i8** @_execptr - %"$adtval_1767_salloc" = call i8* @_salloc(i8* %"$adtval_1767_load", i64 41) - %"$adtval_1767" = bitcast i8* %"$adtval_1767_salloc" to %CName_Record* - %"$adtgep_1768" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_1767", i32 0, i32 0 - store i8 0, i8* %"$adtgep_1768" - %"$adtgep_1769" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_1767", i32 0, i32 1 - store [20 x i8] %"$initialOwner_1765", [20 x i8]* %"$adtgep_1769" - %"$adtgep_1770" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_1767", i32 0, i32 2 - store [20 x i8] %"$zeroByStr20_1766", [20 x i8]* %"$adtgep_1770" - %"$adtptr_1771" = bitcast %CName_Record* %"$adtval_1767" to %TName_Record* - store %TName_Record* %"$adtptr_1771", %TName_Record** %rootRecord - %"$execptr_load_1772" = load i8*, i8** @_execptr - %"$empty_1773" = load %Map_ByStr32_Record*, %Map_ByStr32_Record** %empty - %"$$empty_1773_1774" = bitcast %Map_ByStr32_Record* %"$empty_1773" to i8* - %"$put_rootNode_1775" = alloca [32 x i8] - %"$rootNode_1776" = load [32 x i8], [32 x i8]* @rootNode - store [32 x i8] %"$rootNode_1776", [32 x i8]* %"$put_rootNode_1775" - %"$$put_rootNode_1775_1777" = bitcast [32 x i8]* %"$put_rootNode_1775" to i8* - %"$rootRecord_1778" = load %TName_Record*, %TName_Record** %rootRecord - %"$$rootRecord_1778_1779" = bitcast %TName_Record* %"$rootRecord_1778" to i8* - %"$put_call_1780" = call i8* @_put(i8* %"$execptr_load_1772", %_TyDescrTy_Typ* @"$TyDescr_Map_325", i8* %"$$empty_1773_1774", i8* %"$$put_rootNode_1775_1777", i8* %"$$rootRecord_1778_1779") - %"$_put_1781" = bitcast i8* %"$put_call_1780" to %Map_ByStr32_Record* - store %Map_ByStr32_Record* %"$_put_1781", %Map_ByStr32_Record** %"$records_272" - %"$execptr_load_1782" = load i8*, i8** @_execptr - %"$$records_272_1784" = load %Map_ByStr32_Record*, %Map_ByStr32_Record** %"$records_272" - %"$update_value_1785" = bitcast %Map_ByStr32_Record* %"$$records_272_1784" to i8* - call void @_update_field(i8* %"$execptr_load_1782", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_1783", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_325", i32 0, i8* null, i8* %"$update_value_1785") - %"$registrar_273" = alloca [20 x i8] - %"$zeroByStr20_1786" = load [20 x i8], [20 x i8]* @zeroByStr20 - store [20 x i8] %"$zeroByStr20_1786", [20 x i8]* %"$registrar_273" - %"$execptr_load_1787" = load i8*, i8** @_execptr - %"$$registrar_273_1789" = load [20 x i8], [20 x i8]* %"$registrar_273" - %"$update_value_1790" = alloca [20 x i8] - store [20 x i8] %"$$registrar_273_1789", [20 x i8]* %"$update_value_1790" - %"$update_value_1791" = bitcast [20 x i8]* %"$update_value_1790" to i8* - call void @_update_field(i8* %"$execptr_load_1787", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$registrar_1788", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", i32 0, i8* null, i8* %"$update_value_1791") - %"$approvals_274" = alloca %Map_ByStr32_ByStr20* - %"$execptr_load_1792" = load i8*, i8** @_execptr - %"$_new_empty_map_call_1793" = call i8* @_new_empty_map(i8* %"$execptr_load_1792") - %"$Emp_1794" = bitcast i8* %"$_new_empty_map_call_1793" to %Map_ByStr32_ByStr20* - store %Map_ByStr32_ByStr20* %"$Emp_1794", %Map_ByStr32_ByStr20** %"$approvals_274" - %"$execptr_load_1795" = load i8*, i8** @_execptr - %"$$approvals_274_1797" = load %Map_ByStr32_ByStr20*, %Map_ByStr32_ByStr20** %"$approvals_274" - %"$update_value_1798" = bitcast %Map_ByStr32_ByStr20* %"$$approvals_274_1797" to i8* - call void @_update_field(i8* %"$execptr_load_1795", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_1796", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_324", i32 0, i8* null, i8* %"$update_value_1798") - %"$operators_275" = alloca %"Map_ByStr20_List_(ByStr20)"* - %"$execptr_load_1799" = load i8*, i8** @_execptr - %"$_new_empty_map_call_1800" = call i8* @_new_empty_map(i8* %"$execptr_load_1799") - %"$Emp_1801" = bitcast i8* %"$_new_empty_map_call_1800" to %"Map_ByStr20_List_(ByStr20)"* - store %"Map_ByStr20_List_(ByStr20)"* %"$Emp_1801", %"Map_ByStr20_List_(ByStr20)"** %"$operators_275" - %"$execptr_load_1802" = load i8*, i8** @_execptr - %"$$operators_275_1804" = load %"Map_ByStr20_List_(ByStr20)"*, %"Map_ByStr20_List_(ByStr20)"** %"$operators_275" - %"$update_value_1805" = bitcast %"Map_ByStr20_List_(ByStr20)"* %"$$operators_275_1804" to i8* - call void @_update_field(i8* %"$execptr_load_1802", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$operators_1803", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_323", i32 0, i8* null, i8* %"$update_value_1805") - %"$admins_276" = alloca %TName_List_ByStr20* - %"$initialOwner_1806" = load [20 x i8], [20 x i8]* @initialOwner - %"$nilByStr20_1807" = load %TName_List_ByStr20*, %TName_List_ByStr20** @nilByStr20 - %"$adtval_1808_load" = load i8*, i8** @_execptr - %"$adtval_1808_salloc" = call i8* @_salloc(i8* %"$adtval_1808_load", i64 29) - %"$adtval_1808" = bitcast i8* %"$adtval_1808_salloc" to %CName_Cons_ByStr20* - %"$adtgep_1809" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_1808", i32 0, i32 0 - store i8 0, i8* %"$adtgep_1809" - %"$adtgep_1810" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_1808", i32 0, i32 1 - store [20 x i8] %"$initialOwner_1806", [20 x i8]* %"$adtgep_1810" - %"$adtgep_1811" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_1808", i32 0, i32 2 - store %TName_List_ByStr20* %"$nilByStr20_1807", %TName_List_ByStr20** %"$adtgep_1811" - %"$adtptr_1812" = bitcast %CName_Cons_ByStr20* %"$adtval_1808" to %TName_List_ByStr20* - store %TName_List_ByStr20* %"$adtptr_1812", %TName_List_ByStr20** %"$admins_276" - %"$execptr_load_1813" = load i8*, i8** @_execptr - %"$$admins_276_1815" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$admins_276" - %"$update_value_1816" = bitcast %TName_List_ByStr20* %"$$admins_276_1815" to i8* - call void @_update_field(i8* %"$execptr_load_1813", i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$admins_1814", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_320", i32 0, i8* null, i8* %"$update_value_1816") + %"$gasrem_2602" = load i64, i64* @_gasrem + %"$gascmp_2603" = icmp ugt i64 1, %"$gasrem_2602" + br i1 %"$gascmp_2603", label %"$out_of_gas_2604", label %"$have_gas_2605" + +"$out_of_gas_2604": ; preds = %"$have_gas_2600" + call void @_out_of_gas() + br label %"$have_gas_2605" + +"$have_gas_2605": ; preds = %"$out_of_gas_2604", %"$have_gas_2600" + %"$consume_2606" = sub i64 %"$gasrem_2602", 1 + store i64 %"$consume_2606", i64* @_gasrem + %"$initialOwner_2607" = load [20 x i8], [20 x i8]* @initialOwner + %"$zeroByStr20_2608" = load [20 x i8], [20 x i8]* @zeroByStr20 + %"$adtval_2609_load" = load i8*, i8** @_execptr + %"$adtval_2609_salloc" = call i8* @_salloc(i8* %"$adtval_2609_load", i64 41) + %"$adtval_2609" = bitcast i8* %"$adtval_2609_salloc" to %CName_Record* + %"$adtgep_2610" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_2609", i32 0, i32 0 + store i8 0, i8* %"$adtgep_2610" + %"$adtgep_2611" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_2609", i32 0, i32 1 + store [20 x i8] %"$initialOwner_2607", [20 x i8]* %"$adtgep_2611" + %"$adtgep_2612" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_2609", i32 0, i32 2 + store [20 x i8] %"$zeroByStr20_2608", [20 x i8]* %"$adtgep_2612" + %"$adtptr_2613" = bitcast %CName_Record* %"$adtval_2609" to %TName_Record* + store %TName_Record* %"$adtptr_2613", %TName_Record** %rootRecord + %"$execptr_load_2614" = load i8*, i8** @_execptr + %"$empty_2615" = load %Map_ByStr32_Record*, %Map_ByStr32_Record** %empty + %"$$empty_2615_2616" = bitcast %Map_ByStr32_Record* %"$empty_2615" to i8* + %"$put_rootNode_2617" = alloca [32 x i8] + %"$rootNode_2618" = load [32 x i8], [32 x i8]* @rootNode + store [32 x i8] %"$rootNode_2618", [32 x i8]* %"$put_rootNode_2617" + %"$$put_rootNode_2617_2619" = bitcast [32 x i8]* %"$put_rootNode_2617" to i8* + %"$rootRecord_2620" = load %TName_Record*, %TName_Record** %rootRecord + %"$$rootRecord_2620_2621" = bitcast %TName_Record* %"$rootRecord_2620" to i8* + %"$put_call_2622" = call i8* @_put(i8* %"$execptr_load_2614", %_TyDescrTy_Typ* @"$TyDescr_Map_322", i8* %"$$empty_2615_2616", i8* %"$$put_rootNode_2617_2619", i8* %"$$rootRecord_2620_2621") + %"$_put_2623" = bitcast i8* %"$put_call_2622" to %Map_ByStr32_Record* + store %Map_ByStr32_Record* %"$_put_2623", %Map_ByStr32_Record** %"$records_269" + %"$execptr_load_2624" = load i8*, i8** @_execptr + %"$$records_269_2626" = load %Map_ByStr32_Record*, %Map_ByStr32_Record** %"$records_269" + %"$update_value_2627" = bitcast %Map_ByStr32_Record* %"$$records_269_2626" to i8* + call void @_update_field(i8* %"$execptr_load_2624", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_2625", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_322", i32 0, i8* null, i8* %"$update_value_2627") + %"$registrar_270" = alloca [20 x i8] + %"$gasrem_2628" = load i64, i64* @_gasrem + %"$gascmp_2629" = icmp ugt i64 1, %"$gasrem_2628" + br i1 %"$gascmp_2629", label %"$out_of_gas_2630", label %"$have_gas_2631" + +"$out_of_gas_2630": ; preds = %"$have_gas_2605" + call void @_out_of_gas() + br label %"$have_gas_2631" + +"$have_gas_2631": ; preds = %"$out_of_gas_2630", %"$have_gas_2605" + %"$consume_2632" = sub i64 %"$gasrem_2628", 1 + store i64 %"$consume_2632", i64* @_gasrem + %"$zeroByStr20_2633" = load [20 x i8], [20 x i8]* @zeroByStr20 + store [20 x i8] %"$zeroByStr20_2633", [20 x i8]* %"$registrar_270" + %"$execptr_load_2634" = load i8*, i8** @_execptr + %"$$registrar_270_2636" = load [20 x i8], [20 x i8]* %"$registrar_270" + %"$update_value_2637" = alloca [20 x i8] + store [20 x i8] %"$$registrar_270_2636", [20 x i8]* %"$update_value_2637" + %"$update_value_2638" = bitcast [20 x i8]* %"$update_value_2637" to i8* + call void @_update_field(i8* %"$execptr_load_2634", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$registrar_2635", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", i32 0, i8* null, i8* %"$update_value_2638") + %"$approvals_271" = alloca %Map_ByStr32_ByStr20* + %"$gasrem_2639" = load i64, i64* @_gasrem + %"$gascmp_2640" = icmp ugt i64 1, %"$gasrem_2639" + br i1 %"$gascmp_2640", label %"$out_of_gas_2641", label %"$have_gas_2642" + +"$out_of_gas_2641": ; preds = %"$have_gas_2631" + call void @_out_of_gas() + br label %"$have_gas_2642" + +"$have_gas_2642": ; preds = %"$out_of_gas_2641", %"$have_gas_2631" + %"$consume_2643" = sub i64 %"$gasrem_2639", 1 + store i64 %"$consume_2643", i64* @_gasrem + %"$execptr_load_2644" = load i8*, i8** @_execptr + %"$_new_empty_map_call_2645" = call i8* @_new_empty_map(i8* %"$execptr_load_2644") + %"$Emp_2646" = bitcast i8* %"$_new_empty_map_call_2645" to %Map_ByStr32_ByStr20* + store %Map_ByStr32_ByStr20* %"$Emp_2646", %Map_ByStr32_ByStr20** %"$approvals_271" + %"$execptr_load_2647" = load i8*, i8** @_execptr + %"$$approvals_271_2649" = load %Map_ByStr32_ByStr20*, %Map_ByStr32_ByStr20** %"$approvals_271" + %"$update_value_2650" = bitcast %Map_ByStr32_ByStr20* %"$$approvals_271_2649" to i8* + call void @_update_field(i8* %"$execptr_load_2647", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_2648", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_321", i32 0, i8* null, i8* %"$update_value_2650") + %"$operators_272" = alloca %"Map_ByStr20_List_(ByStr20)"* + %"$gasrem_2651" = load i64, i64* @_gasrem + %"$gascmp_2652" = icmp ugt i64 1, %"$gasrem_2651" + br i1 %"$gascmp_2652", label %"$out_of_gas_2653", label %"$have_gas_2654" + +"$out_of_gas_2653": ; preds = %"$have_gas_2642" + call void @_out_of_gas() + br label %"$have_gas_2654" + +"$have_gas_2654": ; preds = %"$out_of_gas_2653", %"$have_gas_2642" + %"$consume_2655" = sub i64 %"$gasrem_2651", 1 + store i64 %"$consume_2655", i64* @_gasrem + %"$execptr_load_2656" = load i8*, i8** @_execptr + %"$_new_empty_map_call_2657" = call i8* @_new_empty_map(i8* %"$execptr_load_2656") + %"$Emp_2658" = bitcast i8* %"$_new_empty_map_call_2657" to %"Map_ByStr20_List_(ByStr20)"* + store %"Map_ByStr20_List_(ByStr20)"* %"$Emp_2658", %"Map_ByStr20_List_(ByStr20)"** %"$operators_272" + %"$execptr_load_2659" = load i8*, i8** @_execptr + %"$$operators_272_2661" = load %"Map_ByStr20_List_(ByStr20)"*, %"Map_ByStr20_List_(ByStr20)"** %"$operators_272" + %"$update_value_2662" = bitcast %"Map_ByStr20_List_(ByStr20)"* %"$$operators_272_2661" to i8* + call void @_update_field(i8* %"$execptr_load_2659", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$operators_2660", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_320", i32 0, i8* null, i8* %"$update_value_2662") + %"$admins_273" = alloca %TName_List_ByStr20* + %"$gasrem_2663" = load i64, i64* @_gasrem + %"$gascmp_2664" = icmp ugt i64 1, %"$gasrem_2663" + br i1 %"$gascmp_2664", label %"$out_of_gas_2665", label %"$have_gas_2666" + +"$out_of_gas_2665": ; preds = %"$have_gas_2654" + call void @_out_of_gas() + br label %"$have_gas_2666" + +"$have_gas_2666": ; preds = %"$out_of_gas_2665", %"$have_gas_2654" + %"$consume_2667" = sub i64 %"$gasrem_2663", 1 + store i64 %"$consume_2667", i64* @_gasrem + %"$initialOwner_2668" = load [20 x i8], [20 x i8]* @initialOwner + %"$nilByStr20_2669" = load %TName_List_ByStr20*, %TName_List_ByStr20** @nilByStr20 + %"$adtval_2670_load" = load i8*, i8** @_execptr + %"$adtval_2670_salloc" = call i8* @_salloc(i8* %"$adtval_2670_load", i64 29) + %"$adtval_2670" = bitcast i8* %"$adtval_2670_salloc" to %CName_Cons_ByStr20* + %"$adtgep_2671" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_2670", i32 0, i32 0 + store i8 0, i8* %"$adtgep_2671" + %"$adtgep_2672" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_2670", i32 0, i32 1 + store [20 x i8] %"$initialOwner_2668", [20 x i8]* %"$adtgep_2672" + %"$adtgep_2673" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_2670", i32 0, i32 2 + store %TName_List_ByStr20* %"$nilByStr20_2669", %TName_List_ByStr20** %"$adtgep_2673" + %"$adtptr_2674" = bitcast %CName_Cons_ByStr20* %"$adtval_2670" to %TName_List_ByStr20* + store %TName_List_ByStr20* %"$adtptr_2674", %TName_List_ByStr20** %"$admins_273" + %"$execptr_load_2675" = load i8*, i8** @_execptr + %"$$admins_273_2677" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$admins_273" + %"$update_value_2678" = bitcast %TName_List_ByStr20* %"$$admins_273_2677" to i8* + call void @_update_field(i8* %"$execptr_load_2675", i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$admins_2676", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_317", i32 0, i8* null, i8* %"$update_value_2678") ret void } @@ -2991,927 +4896,2011 @@ declare i8* @_put(i8*, %_TyDescrTy_Typ*, i8*, i8*, i8*) declare void @_update_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i8*) -define internal void @"$setAdmin_1817"(%Uint128 %_amount, [20 x i8]* %"$_sender_1818", [20 x i8]* %"$address_1819", %TName_Bool* %isApproved) { +define internal void @"$setAdmin_2679"(%Uint128 %_amount, [20 x i8]* %"$_sender_2680", [20 x i8]* %"$address_2681", %TName_Bool* %isApproved) { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_1818" - %address = load [20 x i8], [20 x i8]* %"$address_1819" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2680" + %address = load [20 x i8], [20 x i8]* %"$address_2681" %currentAdmins = alloca %TName_List_ByStr20* - %"$execptr_load_1820" = load i8*, i8** @_execptr - %"$currentAdmins_1822" = call i8* @_fetch_field(i8* %"$execptr_load_1820", i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$admins_1821", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_320", i32 0, i8* null, i32 1) - %"$currentAdmins_1823" = bitcast i8* %"$currentAdmins_1822" to %TName_List_ByStr20* - store %TName_List_ByStr20* %"$currentAdmins_1823", %TName_List_ByStr20** %currentAdmins + %"$execptr_load_2682" = load i8*, i8** @_execptr + %"$currentAdmins_2684" = call i8* @_fetch_field(i8* %"$execptr_load_2682", i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$admins_2683", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_317", i32 0, i8* null, i32 1) + %"$currentAdmins_2685" = bitcast i8* %"$currentAdmins_2684" to %TName_List_ByStr20* + store %TName_List_ByStr20* %"$currentAdmins_2685", %TName_List_ByStr20** %currentAdmins + %"$currentAdmins_2686" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentAdmins + %"$$currentAdmins_2686_2687" = bitcast %TName_List_ByStr20* %"$currentAdmins_2686" to i8* + %"$_literal_cost_call_2688" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_317", i8* %"$$currentAdmins_2686_2687") + %"$gasadd_2689" = add i64 %"$_literal_cost_call_2688", 0 + %"$gasrem_2690" = load i64, i64* @_gasrem + %"$gascmp_2691" = icmp ugt i64 %"$gasadd_2689", %"$gasrem_2690" + br i1 %"$gascmp_2691", label %"$out_of_gas_2692", label %"$have_gas_2693" + +"$out_of_gas_2692": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2693" + +"$have_gas_2693": ; preds = %"$out_of_gas_2692", %entry + %"$consume_2694" = sub i64 %"$gasrem_2690", %"$gasadd_2689" + store i64 %"$consume_2694", i64* @_gasrem + %"$gasrem_2695" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_2693" + call void @_out_of_gas() + br label %"$have_gas_2698" + +"$have_gas_2698": ; preds = %"$out_of_gas_2697", %"$have_gas_2693" + %"$consume_2699" = sub i64 %"$gasrem_2695", 1 + store i64 %"$consume_2699", i64* @_gasrem %isSenderAdmin = alloca %TName_Bool* - %"$listByStr20Contains_54" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - %"$listByStr20Contains_1824" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20Contains - %"$listByStr20Contains_fptr_1825" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_1824", 0 - %"$listByStr20Contains_envptr_1826" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_1824", 1 - %"$currentAdmins_1827" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentAdmins - %"$listByStr20Contains_call_1828" = call { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_fptr_1825"(i8* %"$listByStr20Contains_envptr_1826", %TName_List_ByStr20* %"$currentAdmins_1827") - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_call_1828", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_54" - %"$listByStr20Contains_55" = alloca %TName_Bool* - %"$$listByStr20Contains_54_1829" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_54" - %"$$listByStr20Contains_54_fptr_1830" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_54_1829", 0 - %"$$listByStr20Contains_54_envptr_1831" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_54_1829", 1 - %"$$listByStr20Contains_54__sender_1832" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$$listByStr20Contains_54__sender_1832" - %"$$listByStr20Contains_54_call_1833" = call %TName_Bool* %"$$listByStr20Contains_54_fptr_1830"(i8* %"$$listByStr20Contains_54_envptr_1831", [20 x i8]* %"$$listByStr20Contains_54__sender_1832") - store %TName_Bool* %"$$listByStr20Contains_54_call_1833", %TName_Bool** %"$listByStr20Contains_55" - %"$$listByStr20Contains_55_1834" = load %TName_Bool*, %TName_Bool** %"$listByStr20Contains_55" - store %TName_Bool* %"$$listByStr20Contains_55_1834", %TName_Bool** %isSenderAdmin - %"$isSenderAdmin_1836" = load %TName_Bool*, %TName_Bool** %isSenderAdmin - %"$isSenderAdmin_tag_1837" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isSenderAdmin_1836", i32 0, i32 0 - %"$isSenderAdmin_tag_1838" = load i8, i8* %"$isSenderAdmin_tag_1837" - switch i8 %"$isSenderAdmin_tag_1838", label %"$empty_default_1839" [ - i8 0, label %"$True_1840" - i8 1, label %"$False_1911" + %"$gasrem_2700" = load i64, i64* @_gasrem + %"$gascmp_2701" = icmp ugt i64 1, %"$gasrem_2700" + br i1 %"$gascmp_2701", label %"$out_of_gas_2702", label %"$have_gas_2703" + +"$out_of_gas_2702": ; preds = %"$have_gas_2698" + call void @_out_of_gas() + br label %"$have_gas_2703" + +"$have_gas_2703": ; preds = %"$out_of_gas_2702", %"$have_gas_2698" + %"$consume_2704" = sub i64 %"$gasrem_2700", 1 + store i64 %"$consume_2704", i64* @_gasrem + %"$listByStr20Contains_51" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } + %"$listByStr20Contains_2705" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20Contains + %"$listByStr20Contains_fptr_2706" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_2705", 0 + %"$listByStr20Contains_envptr_2707" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_2705", 1 + %"$currentAdmins_2708" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentAdmins + %"$listByStr20Contains_call_2709" = call { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_fptr_2706"(i8* %"$listByStr20Contains_envptr_2707", %TName_List_ByStr20* %"$currentAdmins_2708") + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_call_2709", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_51" + %"$listByStr20Contains_52" = alloca %TName_Bool* + %"$$listByStr20Contains_51_2710" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_51" + %"$$listByStr20Contains_51_fptr_2711" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_51_2710", 0 + %"$$listByStr20Contains_51_envptr_2712" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_51_2710", 1 + %"$$listByStr20Contains_51__sender_2713" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$$listByStr20Contains_51__sender_2713" + %"$$listByStr20Contains_51_call_2714" = call %TName_Bool* %"$$listByStr20Contains_51_fptr_2711"(i8* %"$$listByStr20Contains_51_envptr_2712", [20 x i8]* %"$$listByStr20Contains_51__sender_2713") + store %TName_Bool* %"$$listByStr20Contains_51_call_2714", %TName_Bool** %"$listByStr20Contains_52" + %"$$listByStr20Contains_52_2715" = load %TName_Bool*, %TName_Bool** %"$listByStr20Contains_52" + store %TName_Bool* %"$$listByStr20Contains_52_2715", %TName_Bool** %isSenderAdmin + %"$gasrem_2716" = load i64, i64* @_gasrem + %"$gascmp_2717" = icmp ugt i64 2, %"$gasrem_2716" + br i1 %"$gascmp_2717", label %"$out_of_gas_2718", label %"$have_gas_2719" + +"$out_of_gas_2718": ; preds = %"$have_gas_2703" + call void @_out_of_gas() + br label %"$have_gas_2719" + +"$have_gas_2719": ; preds = %"$out_of_gas_2718", %"$have_gas_2703" + %"$consume_2720" = sub i64 %"$gasrem_2716", 2 + store i64 %"$consume_2720", i64* @_gasrem + %"$isSenderAdmin_2722" = load %TName_Bool*, %TName_Bool** %isSenderAdmin + %"$isSenderAdmin_tag_2723" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isSenderAdmin_2722", i32 0, i32 0 + %"$isSenderAdmin_tag_2724" = load i8, i8* %"$isSenderAdmin_tag_2723" + switch i8 %"$isSenderAdmin_tag_2724", label %"$empty_default_2725" [ + i8 0, label %"$True_2726" + i8 1, label %"$False_2868" ] -"$True_1840": ; preds = %entry - %"$isSenderAdmin_1841" = bitcast %TName_Bool* %"$isSenderAdmin_1836" to %CName_True* +"$True_2726": ; preds = %"$have_gas_2719" + %"$isSenderAdmin_2727" = bitcast %TName_Bool* %"$isSenderAdmin_2722" to %CName_True* + %"$gasrem_2728" = load i64, i64* @_gasrem + %"$gascmp_2729" = icmp ugt i64 1, %"$gasrem_2728" + br i1 %"$gascmp_2729", label %"$out_of_gas_2730", label %"$have_gas_2731" + +"$out_of_gas_2730": ; preds = %"$True_2726" + call void @_out_of_gas() + br label %"$have_gas_2731" + +"$have_gas_2731": ; preds = %"$out_of_gas_2730", %"$True_2726" + %"$consume_2732" = sub i64 %"$gasrem_2728", 1 + store i64 %"$consume_2732", i64* @_gasrem %needsToChange = alloca %TName_Bool* + %"$gasrem_2733" = load i64, i64* @_gasrem + %"$gascmp_2734" = icmp ugt i64 1, %"$gasrem_2733" + br i1 %"$gascmp_2734", label %"$out_of_gas_2735", label %"$have_gas_2736" + +"$out_of_gas_2735": ; preds = %"$have_gas_2731" + call void @_out_of_gas() + br label %"$have_gas_2736" + +"$have_gas_2736": ; preds = %"$out_of_gas_2735", %"$have_gas_2731" + %"$consume_2737" = sub i64 %"$gasrem_2733", 1 + store i64 %"$consume_2737", i64* @_gasrem %b = alloca %TName_Bool* - %"$listByStr20Excludes_49" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - %"$listByStr20Excludes_1842" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20Excludes - %"$listByStr20Excludes_fptr_1843" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Excludes_1842", 0 - %"$listByStr20Excludes_envptr_1844" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Excludes_1842", 1 - %"$currentAdmins_1845" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentAdmins - %"$listByStr20Excludes_call_1846" = call { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Excludes_fptr_1843"(i8* %"$listByStr20Excludes_envptr_1844", %TName_List_ByStr20* %"$currentAdmins_1845") - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Excludes_call_1846", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Excludes_49" - %"$listByStr20Excludes_50" = alloca %TName_Bool* - %"$$listByStr20Excludes_49_1847" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Excludes_49" - %"$$listByStr20Excludes_49_fptr_1848" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Excludes_49_1847", 0 - %"$$listByStr20Excludes_49_envptr_1849" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Excludes_49_1847", 1 - %"$$listByStr20Excludes_49_address_1850" = alloca [20 x i8] - store [20 x i8] %address, [20 x i8]* %"$$listByStr20Excludes_49_address_1850" - %"$$listByStr20Excludes_49_call_1851" = call %TName_Bool* %"$$listByStr20Excludes_49_fptr_1848"(i8* %"$$listByStr20Excludes_49_envptr_1849", [20 x i8]* %"$$listByStr20Excludes_49_address_1850") - store %TName_Bool* %"$$listByStr20Excludes_49_call_1851", %TName_Bool** %"$listByStr20Excludes_50" - %"$$listByStr20Excludes_50_1852" = load %TName_Bool*, %TName_Bool** %"$listByStr20Excludes_50" - store %TName_Bool* %"$$listByStr20Excludes_50_1852", %TName_Bool** %b - %"$xandb_51" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$xandb_1853" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @xandb - %"$xandb_fptr_1854" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$xandb_1853", 0 - %"$xandb_envptr_1855" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$xandb_1853", 1 - %"$b_1856" = load %TName_Bool*, %TName_Bool** %b - %"$xandb_call_1857" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$xandb_fptr_1854"(i8* %"$xandb_envptr_1855", %TName_Bool* %"$b_1856") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$xandb_call_1857", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$xandb_51" - %"$xandb_52" = alloca %TName_Bool* - %"$$xandb_51_1858" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$xandb_51" - %"$$xandb_51_fptr_1859" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$xandb_51_1858", 0 - %"$$xandb_51_envptr_1860" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$xandb_51_1858", 1 - %"$$xandb_51_call_1861" = call %TName_Bool* %"$$xandb_51_fptr_1859"(i8* %"$$xandb_51_envptr_1860", %TName_Bool* %isApproved) - store %TName_Bool* %"$$xandb_51_call_1861", %TName_Bool** %"$xandb_52" - %"$$xandb_52_1862" = load %TName_Bool*, %TName_Bool** %"$xandb_52" - store %TName_Bool* %"$$xandb_52_1862", %TName_Bool** %needsToChange - %"$needsToChange_1864" = load %TName_Bool*, %TName_Bool** %needsToChange - %"$needsToChange_tag_1865" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$needsToChange_1864", i32 0, i32 0 - %"$needsToChange_tag_1866" = load i8, i8* %"$needsToChange_tag_1865" - switch i8 %"$needsToChange_tag_1866", label %"$default_1867" [ - i8 0, label %"$True_1868" + %"$gasrem_2738" = load i64, i64* @_gasrem + %"$gascmp_2739" = icmp ugt i64 1, %"$gasrem_2738" + br i1 %"$gascmp_2739", label %"$out_of_gas_2740", label %"$have_gas_2741" + +"$out_of_gas_2740": ; preds = %"$have_gas_2736" + call void @_out_of_gas() + br label %"$have_gas_2741" + +"$have_gas_2741": ; preds = %"$out_of_gas_2740", %"$have_gas_2736" + %"$consume_2742" = sub i64 %"$gasrem_2738", 1 + store i64 %"$consume_2742", i64* @_gasrem + %"$listByStr20Excludes_46" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } + %"$listByStr20Excludes_2743" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20Excludes + %"$listByStr20Excludes_fptr_2744" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Excludes_2743", 0 + %"$listByStr20Excludes_envptr_2745" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Excludes_2743", 1 + %"$currentAdmins_2746" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentAdmins + %"$listByStr20Excludes_call_2747" = call { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Excludes_fptr_2744"(i8* %"$listByStr20Excludes_envptr_2745", %TName_List_ByStr20* %"$currentAdmins_2746") + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Excludes_call_2747", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Excludes_46" + %"$listByStr20Excludes_47" = alloca %TName_Bool* + %"$$listByStr20Excludes_46_2748" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Excludes_46" + %"$$listByStr20Excludes_46_fptr_2749" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Excludes_46_2748", 0 + %"$$listByStr20Excludes_46_envptr_2750" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Excludes_46_2748", 1 + %"$$listByStr20Excludes_46_address_2751" = alloca [20 x i8] + store [20 x i8] %address, [20 x i8]* %"$$listByStr20Excludes_46_address_2751" + %"$$listByStr20Excludes_46_call_2752" = call %TName_Bool* %"$$listByStr20Excludes_46_fptr_2749"(i8* %"$$listByStr20Excludes_46_envptr_2750", [20 x i8]* %"$$listByStr20Excludes_46_address_2751") + store %TName_Bool* %"$$listByStr20Excludes_46_call_2752", %TName_Bool** %"$listByStr20Excludes_47" + %"$$listByStr20Excludes_47_2753" = load %TName_Bool*, %TName_Bool** %"$listByStr20Excludes_47" + store %TName_Bool* %"$$listByStr20Excludes_47_2753", %TName_Bool** %b + %"$gasrem_2754" = load i64, i64* @_gasrem + %"$gascmp_2755" = icmp ugt i64 1, %"$gasrem_2754" + br i1 %"$gascmp_2755", label %"$out_of_gas_2756", label %"$have_gas_2757" + +"$out_of_gas_2756": ; preds = %"$have_gas_2741" + call void @_out_of_gas() + br label %"$have_gas_2757" + +"$have_gas_2757": ; preds = %"$out_of_gas_2756", %"$have_gas_2741" + %"$consume_2758" = sub i64 %"$gasrem_2754", 1 + store i64 %"$consume_2758", i64* @_gasrem + %"$xandb_48" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$xandb_2759" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @xandb + %"$xandb_fptr_2760" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$xandb_2759", 0 + %"$xandb_envptr_2761" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$xandb_2759", 1 + %"$b_2762" = load %TName_Bool*, %TName_Bool** %b + %"$xandb_call_2763" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$xandb_fptr_2760"(i8* %"$xandb_envptr_2761", %TName_Bool* %"$b_2762") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$xandb_call_2763", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$xandb_48" + %"$xandb_49" = alloca %TName_Bool* + %"$$xandb_48_2764" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$xandb_48" + %"$$xandb_48_fptr_2765" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$xandb_48_2764", 0 + %"$$xandb_48_envptr_2766" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$xandb_48_2764", 1 + %"$$xandb_48_call_2767" = call %TName_Bool* %"$$xandb_48_fptr_2765"(i8* %"$$xandb_48_envptr_2766", %TName_Bool* %isApproved) + store %TName_Bool* %"$$xandb_48_call_2767", %TName_Bool** %"$xandb_49" + %"$$xandb_49_2768" = load %TName_Bool*, %TName_Bool** %"$xandb_49" + store %TName_Bool* %"$$xandb_49_2768", %TName_Bool** %needsToChange + %"$gasrem_2769" = load i64, i64* @_gasrem + %"$gascmp_2770" = icmp ugt i64 2, %"$gasrem_2769" + br i1 %"$gascmp_2770", label %"$out_of_gas_2771", label %"$have_gas_2772" + +"$out_of_gas_2771": ; preds = %"$have_gas_2757" + call void @_out_of_gas() + br label %"$have_gas_2772" + +"$have_gas_2772": ; preds = %"$out_of_gas_2771", %"$have_gas_2757" + %"$consume_2773" = sub i64 %"$gasrem_2769", 2 + store i64 %"$consume_2773", i64* @_gasrem + %"$needsToChange_2775" = load %TName_Bool*, %TName_Bool** %needsToChange + %"$needsToChange_tag_2776" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$needsToChange_2775", i32 0, i32 0 + %"$needsToChange_tag_2777" = load i8, i8* %"$needsToChange_tag_2776" + switch i8 %"$needsToChange_tag_2777", label %"$default_2778" [ + i8 0, label %"$True_2779" ] -"$True_1868": ; preds = %"$True_1840" - %"$needsToChange_1869" = bitcast %TName_Bool* %"$needsToChange_1864" to %CName_True* +"$True_2779": ; preds = %"$have_gas_2772" + %"$needsToChange_2780" = bitcast %TName_Bool* %"$needsToChange_2775" to %CName_True* + %"$gasrem_2781" = load i64, i64* @_gasrem + %"$gascmp_2782" = icmp ugt i64 1, %"$gasrem_2781" + br i1 %"$gascmp_2782", label %"$out_of_gas_2783", label %"$have_gas_2784" + +"$out_of_gas_2783": ; preds = %"$True_2779" + call void @_out_of_gas() + br label %"$have_gas_2784" + +"$have_gas_2784": ; preds = %"$out_of_gas_2783", %"$True_2779" + %"$consume_2785" = sub i64 %"$gasrem_2781", 1 + store i64 %"$consume_2785", i64* @_gasrem %newAdmins = alloca %TName_List_ByStr20* - %"$isApproved_tag_1871" = getelementptr inbounds %TName_Bool, %TName_Bool* %isApproved, i32 0, i32 0 - %"$isApproved_tag_1872" = load i8, i8* %"$isApproved_tag_1871" - switch i8 %"$isApproved_tag_1872", label %"$empty_default_1873" [ - i8 0, label %"$True_1874" - i8 1, label %"$False_1882" + %"$gasrem_2786" = load i64, i64* @_gasrem + %"$gascmp_2787" = icmp ugt i64 2, %"$gasrem_2786" + br i1 %"$gascmp_2787", label %"$out_of_gas_2788", label %"$have_gas_2789" + +"$out_of_gas_2788": ; preds = %"$have_gas_2784" + call void @_out_of_gas() + br label %"$have_gas_2789" + +"$have_gas_2789": ; preds = %"$out_of_gas_2788", %"$have_gas_2784" + %"$consume_2790" = sub i64 %"$gasrem_2786", 2 + store i64 %"$consume_2790", i64* @_gasrem + %"$isApproved_tag_2792" = getelementptr inbounds %TName_Bool, %TName_Bool* %isApproved, i32 0, i32 0 + %"$isApproved_tag_2793" = load i8, i8* %"$isApproved_tag_2792" + switch i8 %"$isApproved_tag_2793", label %"$empty_default_2794" [ + i8 0, label %"$True_2795" + i8 1, label %"$False_2808" ] -"$True_1874": ; preds = %"$True_1868" - %"$isApproved_1875" = bitcast %TName_Bool* %isApproved to %CName_True* - %"$currentAdmins_1876" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentAdmins - %"$adtval_1877_load" = load i8*, i8** @_execptr - %"$adtval_1877_salloc" = call i8* @_salloc(i8* %"$adtval_1877_load", i64 29) - %"$adtval_1877" = bitcast i8* %"$adtval_1877_salloc" to %CName_Cons_ByStr20* - %"$adtgep_1878" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_1877", i32 0, i32 0 - store i8 0, i8* %"$adtgep_1878" - %"$adtgep_1879" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_1877", i32 0, i32 1 - store [20 x i8] %address, [20 x i8]* %"$adtgep_1879" - %"$adtgep_1880" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_1877", i32 0, i32 2 - store %TName_List_ByStr20* %"$currentAdmins_1876", %TName_List_ByStr20** %"$adtgep_1880" - %"$adtptr_1881" = bitcast %CName_Cons_ByStr20* %"$adtval_1877" to %TName_List_ByStr20* - store %TName_List_ByStr20* %"$adtptr_1881", %TName_List_ByStr20** %newAdmins - br label %"$matchsucc_1870" - -"$False_1882": ; preds = %"$True_1868" - %"$isApproved_1883" = bitcast %TName_Bool* %isApproved to %CName_False* - %"$listByStr20FilterOut_47" = alloca { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } - %"$listByStr20FilterOut_1884" = load { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20FilterOut - %"$listByStr20FilterOut_fptr_1885" = extractvalue { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20FilterOut_1884", 0 - %"$listByStr20FilterOut_envptr_1886" = extractvalue { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20FilterOut_1884", 1 - %"$currentAdmins_1887" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentAdmins - %"$listByStr20FilterOut_call_1888" = call { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$listByStr20FilterOut_fptr_1885"(i8* %"$listByStr20FilterOut_envptr_1886", %TName_List_ByStr20* %"$currentAdmins_1887") - store { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$listByStr20FilterOut_call_1888", { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20FilterOut_47" - %"$listByStr20FilterOut_48" = alloca %TName_List_ByStr20* - %"$$listByStr20FilterOut_47_1889" = load { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* }, { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20FilterOut_47" - %"$$listByStr20FilterOut_47_fptr_1890" = extractvalue { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20FilterOut_47_1889", 0 - %"$$listByStr20FilterOut_47_envptr_1891" = extractvalue { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20FilterOut_47_1889", 1 - %"$$listByStr20FilterOut_47_address_1892" = alloca [20 x i8] - store [20 x i8] %address, [20 x i8]* %"$$listByStr20FilterOut_47_address_1892" - %"$$listByStr20FilterOut_47_call_1893" = call %TName_List_ByStr20* %"$$listByStr20FilterOut_47_fptr_1890"(i8* %"$$listByStr20FilterOut_47_envptr_1891", [20 x i8]* %"$$listByStr20FilterOut_47_address_1892") - store %TName_List_ByStr20* %"$$listByStr20FilterOut_47_call_1893", %TName_List_ByStr20** %"$listByStr20FilterOut_48" - %"$$listByStr20FilterOut_48_1894" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$listByStr20FilterOut_48" - store %TName_List_ByStr20* %"$$listByStr20FilterOut_48_1894", %TName_List_ByStr20** %newAdmins - br label %"$matchsucc_1870" - -"$empty_default_1873": ; preds = %"$True_1868" - br label %"$matchsucc_1870" - -"$matchsucc_1870": ; preds = %"$False_1882", %"$True_1874", %"$empty_default_1873" - %"$execptr_load_1895" = load i8*, i8** @_execptr - %"$newAdmins_1897" = load %TName_List_ByStr20*, %TName_List_ByStr20** %newAdmins - %"$update_value_1898" = bitcast %TName_List_ByStr20* %"$newAdmins_1897" to i8* - call void @_update_field(i8* %"$execptr_load_1895", i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$admins_1896", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_320", i32 0, i8* null, i8* %"$update_value_1898") +"$True_2795": ; preds = %"$have_gas_2789" + %"$isApproved_2796" = bitcast %TName_Bool* %isApproved to %CName_True* + %"$gasrem_2797" = load i64, i64* @_gasrem + %"$gascmp_2798" = icmp ugt i64 1, %"$gasrem_2797" + br i1 %"$gascmp_2798", label %"$out_of_gas_2799", label %"$have_gas_2800" + +"$out_of_gas_2799": ; preds = %"$True_2795" + call void @_out_of_gas() + br label %"$have_gas_2800" + +"$have_gas_2800": ; preds = %"$out_of_gas_2799", %"$True_2795" + %"$consume_2801" = sub i64 %"$gasrem_2797", 1 + store i64 %"$consume_2801", i64* @_gasrem + %"$currentAdmins_2802" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentAdmins + %"$adtval_2803_load" = load i8*, i8** @_execptr + %"$adtval_2803_salloc" = call i8* @_salloc(i8* %"$adtval_2803_load", i64 29) + %"$adtval_2803" = bitcast i8* %"$adtval_2803_salloc" to %CName_Cons_ByStr20* + %"$adtgep_2804" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_2803", i32 0, i32 0 + store i8 0, i8* %"$adtgep_2804" + %"$adtgep_2805" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_2803", i32 0, i32 1 + store [20 x i8] %address, [20 x i8]* %"$adtgep_2805" + %"$adtgep_2806" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_2803", i32 0, i32 2 + store %TName_List_ByStr20* %"$currentAdmins_2802", %TName_List_ByStr20** %"$adtgep_2806" + %"$adtptr_2807" = bitcast %CName_Cons_ByStr20* %"$adtval_2803" to %TName_List_ByStr20* + store %TName_List_ByStr20* %"$adtptr_2807", %TName_List_ByStr20** %newAdmins + br label %"$matchsucc_2791" + +"$False_2808": ; preds = %"$have_gas_2789" + %"$isApproved_2809" = bitcast %TName_Bool* %isApproved to %CName_False* + %"$gasrem_2810" = load i64, i64* @_gasrem + %"$gascmp_2811" = icmp ugt i64 1, %"$gasrem_2810" + br i1 %"$gascmp_2811", label %"$out_of_gas_2812", label %"$have_gas_2813" + +"$out_of_gas_2812": ; preds = %"$False_2808" + call void @_out_of_gas() + br label %"$have_gas_2813" + +"$have_gas_2813": ; preds = %"$out_of_gas_2812", %"$False_2808" + %"$consume_2814" = sub i64 %"$gasrem_2810", 1 + store i64 %"$consume_2814", i64* @_gasrem + %"$listByStr20FilterOut_44" = alloca { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } + %"$listByStr20FilterOut_2815" = load { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20FilterOut + %"$listByStr20FilterOut_fptr_2816" = extractvalue { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20FilterOut_2815", 0 + %"$listByStr20FilterOut_envptr_2817" = extractvalue { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20FilterOut_2815", 1 + %"$currentAdmins_2818" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentAdmins + %"$listByStr20FilterOut_call_2819" = call { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$listByStr20FilterOut_fptr_2816"(i8* %"$listByStr20FilterOut_envptr_2817", %TName_List_ByStr20* %"$currentAdmins_2818") + store { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$listByStr20FilterOut_call_2819", { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20FilterOut_44" + %"$listByStr20FilterOut_45" = alloca %TName_List_ByStr20* + %"$$listByStr20FilterOut_44_2820" = load { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* }, { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20FilterOut_44" + %"$$listByStr20FilterOut_44_fptr_2821" = extractvalue { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20FilterOut_44_2820", 0 + %"$$listByStr20FilterOut_44_envptr_2822" = extractvalue { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20FilterOut_44_2820", 1 + %"$$listByStr20FilterOut_44_address_2823" = alloca [20 x i8] + store [20 x i8] %address, [20 x i8]* %"$$listByStr20FilterOut_44_address_2823" + %"$$listByStr20FilterOut_44_call_2824" = call %TName_List_ByStr20* %"$$listByStr20FilterOut_44_fptr_2821"(i8* %"$$listByStr20FilterOut_44_envptr_2822", [20 x i8]* %"$$listByStr20FilterOut_44_address_2823") + store %TName_List_ByStr20* %"$$listByStr20FilterOut_44_call_2824", %TName_List_ByStr20** %"$listByStr20FilterOut_45" + %"$$listByStr20FilterOut_45_2825" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$listByStr20FilterOut_45" + store %TName_List_ByStr20* %"$$listByStr20FilterOut_45_2825", %TName_List_ByStr20** %newAdmins + br label %"$matchsucc_2791" + +"$empty_default_2794": ; preds = %"$have_gas_2789" + br label %"$matchsucc_2791" + +"$matchsucc_2791": ; preds = %"$have_gas_2813", %"$have_gas_2800", %"$empty_default_2794" + %"$newAdmins_2826" = load %TName_List_ByStr20*, %TName_List_ByStr20** %newAdmins + %"$$newAdmins_2826_2827" = bitcast %TName_List_ByStr20* %"$newAdmins_2826" to i8* + %"$_literal_cost_call_2828" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_317", i8* %"$$newAdmins_2826_2827") + %"$gasrem_2829" = load i64, i64* @_gasrem + %"$gascmp_2830" = icmp ugt i64 %"$_literal_cost_call_2828", %"$gasrem_2829" + br i1 %"$gascmp_2830", label %"$out_of_gas_2831", label %"$have_gas_2832" + +"$out_of_gas_2831": ; preds = %"$matchsucc_2791" + call void @_out_of_gas() + br label %"$have_gas_2832" + +"$have_gas_2832": ; preds = %"$out_of_gas_2831", %"$matchsucc_2791" + %"$consume_2833" = sub i64 %"$gasrem_2829", %"$_literal_cost_call_2828" + store i64 %"$consume_2833", i64* @_gasrem + %"$execptr_load_2834" = load i8*, i8** @_execptr + %"$newAdmins_2836" = load %TName_List_ByStr20*, %TName_List_ByStr20** %newAdmins + %"$update_value_2837" = bitcast %TName_List_ByStr20* %"$newAdmins_2836" to i8* + call void @_update_field(i8* %"$execptr_load_2834", i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$admins_2835", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_317", i32 0, i8* null, i8* %"$update_value_2837") + %"$gasrem_2838" = load i64, i64* @_gasrem + %"$gascmp_2839" = icmp ugt i64 1, %"$gasrem_2838" + br i1 %"$gascmp_2839", label %"$out_of_gas_2840", label %"$have_gas_2841" + +"$out_of_gas_2840": ; preds = %"$have_gas_2832" + call void @_out_of_gas() + br label %"$have_gas_2841" + +"$have_gas_2841": ; preds = %"$out_of_gas_2840", %"$have_gas_2832" + %"$consume_2842" = sub i64 %"$gasrem_2838", 1 + store i64 %"$consume_2842", i64* @_gasrem %e = alloca i8* - %"$eAdminSet_45" = alloca { i8* (i8*, %TName_Bool*)*, i8* } - %"$eAdminSet_1899" = load { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @eAdminSet - %"$eAdminSet_fptr_1900" = extractvalue { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eAdminSet_1899", 0 - %"$eAdminSet_envptr_1901" = extractvalue { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eAdminSet_1899", 1 - %"$eAdminSet_address_1902" = alloca [20 x i8] - store [20 x i8] %address, [20 x i8]* %"$eAdminSet_address_1902" - %"$eAdminSet_call_1903" = call { i8* (i8*, %TName_Bool*)*, i8* } %"$eAdminSet_fptr_1900"(i8* %"$eAdminSet_envptr_1901", [20 x i8]* %"$eAdminSet_address_1902") - store { i8* (i8*, %TName_Bool*)*, i8* } %"$eAdminSet_call_1903", { i8* (i8*, %TName_Bool*)*, i8* }* %"$eAdminSet_45" - %"$eAdminSet_46" = alloca i8* - %"$$eAdminSet_45_1904" = load { i8* (i8*, %TName_Bool*)*, i8* }, { i8* (i8*, %TName_Bool*)*, i8* }* %"$eAdminSet_45" - %"$$eAdminSet_45_fptr_1905" = extractvalue { i8* (i8*, %TName_Bool*)*, i8* } %"$$eAdminSet_45_1904", 0 - %"$$eAdminSet_45_envptr_1906" = extractvalue { i8* (i8*, %TName_Bool*)*, i8* } %"$$eAdminSet_45_1904", 1 - %"$$eAdminSet_45_call_1907" = call i8* %"$$eAdminSet_45_fptr_1905"(i8* %"$$eAdminSet_45_envptr_1906", %TName_Bool* %isApproved) - store i8* %"$$eAdminSet_45_call_1907", i8** %"$eAdminSet_46" - %"$$eAdminSet_46_1908" = load i8*, i8** %"$eAdminSet_46" - store i8* %"$$eAdminSet_46_1908", i8** %e - %"$execptr_load_1909" = load i8*, i8** @_execptr - %"$e_1910" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_1909", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_1910") - br label %"$matchsucc_1863" - -"$default_1867": ; preds = %"$True_1840" - br label %"$joinp_4" - -"$joinp_4": ; preds = %"$default_1867" - br label %"$matchsucc_1863" + %"$gasrem_2843" = load i64, i64* @_gasrem + %"$gascmp_2844" = icmp ugt i64 1, %"$gasrem_2843" + br i1 %"$gascmp_2844", label %"$out_of_gas_2845", label %"$have_gas_2846" + +"$out_of_gas_2845": ; preds = %"$have_gas_2841" + call void @_out_of_gas() + br label %"$have_gas_2846" + +"$have_gas_2846": ; preds = %"$out_of_gas_2845", %"$have_gas_2841" + %"$consume_2847" = sub i64 %"$gasrem_2843", 1 + store i64 %"$consume_2847", i64* @_gasrem + %"$eAdminSet_42" = alloca { i8* (i8*, %TName_Bool*)*, i8* } + %"$eAdminSet_2848" = load { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @eAdminSet + %"$eAdminSet_fptr_2849" = extractvalue { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eAdminSet_2848", 0 + %"$eAdminSet_envptr_2850" = extractvalue { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eAdminSet_2848", 1 + %"$eAdminSet_address_2851" = alloca [20 x i8] + store [20 x i8] %address, [20 x i8]* %"$eAdminSet_address_2851" + %"$eAdminSet_call_2852" = call { i8* (i8*, %TName_Bool*)*, i8* } %"$eAdminSet_fptr_2849"(i8* %"$eAdminSet_envptr_2850", [20 x i8]* %"$eAdminSet_address_2851") + store { i8* (i8*, %TName_Bool*)*, i8* } %"$eAdminSet_call_2852", { i8* (i8*, %TName_Bool*)*, i8* }* %"$eAdminSet_42" + %"$eAdminSet_43" = alloca i8* + %"$$eAdminSet_42_2853" = load { i8* (i8*, %TName_Bool*)*, i8* }, { i8* (i8*, %TName_Bool*)*, i8* }* %"$eAdminSet_42" + %"$$eAdminSet_42_fptr_2854" = extractvalue { i8* (i8*, %TName_Bool*)*, i8* } %"$$eAdminSet_42_2853", 0 + %"$$eAdminSet_42_envptr_2855" = extractvalue { i8* (i8*, %TName_Bool*)*, i8* } %"$$eAdminSet_42_2853", 1 + %"$$eAdminSet_42_call_2856" = call i8* %"$$eAdminSet_42_fptr_2854"(i8* %"$$eAdminSet_42_envptr_2855", %TName_Bool* %isApproved) + store i8* %"$$eAdminSet_42_call_2856", i8** %"$eAdminSet_43" + %"$$eAdminSet_43_2857" = load i8*, i8** %"$eAdminSet_43" + store i8* %"$$eAdminSet_43_2857", i8** %e + %"$e_2858" = load i8*, i8** %e + %"$_literal_cost_call_2860" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_2858") + %"$gasrem_2861" = load i64, i64* @_gasrem + %"$gascmp_2862" = icmp ugt i64 %"$_literal_cost_call_2860", %"$gasrem_2861" + br i1 %"$gascmp_2862", label %"$out_of_gas_2863", label %"$have_gas_2864" + +"$out_of_gas_2863": ; preds = %"$have_gas_2846" + call void @_out_of_gas() + br label %"$have_gas_2864" + +"$have_gas_2864": ; preds = %"$out_of_gas_2863", %"$have_gas_2846" + %"$consume_2865" = sub i64 %"$gasrem_2861", %"$_literal_cost_call_2860" + store i64 %"$consume_2865", i64* @_gasrem + %"$execptr_load_2866" = load i8*, i8** @_execptr + %"$e_2867" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_2866", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_2867") + br label %"$matchsucc_2774" + +"$default_2778": ; preds = %"$have_gas_2772" + br label %"$joinp_1" + +"$joinp_1": ; preds = %"$default_2778" + br label %"$matchsucc_2774" + +"$matchsucc_2774": ; preds = %"$have_gas_2864", %"$joinp_1" + br label %"$matchsucc_2721" + +"$False_2868": ; preds = %"$have_gas_2719" + %"$isSenderAdmin_2869" = bitcast %TName_Bool* %"$isSenderAdmin_2722" to %CName_False* + %"$gasrem_2870" = load i64, i64* @_gasrem + %"$gascmp_2871" = icmp ugt i64 1, %"$gasrem_2870" + br i1 %"$gascmp_2871", label %"$out_of_gas_2872", label %"$have_gas_2873" + +"$out_of_gas_2872": ; preds = %"$False_2868" + call void @_out_of_gas() + br label %"$have_gas_2873" + +"$have_gas_2873": ; preds = %"$out_of_gas_2872", %"$False_2868" + %"$consume_2874" = sub i64 %"$gasrem_2870", 1 + store i64 %"$consume_2874", i64* @_gasrem + %e1 = alloca i8* + %"$gasrem_2875" = load i64, i64* @_gasrem + %"$gascmp_2876" = icmp ugt i64 1, %"$gasrem_2875" + br i1 %"$gascmp_2876", label %"$out_of_gas_2877", label %"$have_gas_2878" -"$matchsucc_1863": ; preds = %"$matchsucc_1870", %"$joinp_4" - br label %"$matchsucc_1835" +"$out_of_gas_2877": ; preds = %"$have_gas_2873" + call void @_out_of_gas() + br label %"$have_gas_2878" -"$False_1911": ; preds = %entry - %"$isSenderAdmin_1912" = bitcast %TName_Bool* %"$isSenderAdmin_1836" to %CName_False* - %e1 = alloca i8* +"$have_gas_2878": ; preds = %"$out_of_gas_2877", %"$have_gas_2873" + %"$consume_2879" = sub i64 %"$gasrem_2875", 1 + store i64 %"$consume_2879", i64* @_gasrem %m = alloca %String - store %String { i8* getelementptr inbounds ([26 x i8], [26 x i8]* @"$stringlit_1913", i32 0, i32 0), i32 26 }, %String* %m - %"$eError_53" = alloca i8* - %"$eError_1914" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* @eError - %"$eError_fptr_1915" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_1914", 0 - %"$eError_envptr_1916" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_1914", 1 - %"$m_1917" = load %String, %String* %m - %"$eError_call_1918" = call i8* %"$eError_fptr_1915"(i8* %"$eError_envptr_1916", %String %"$m_1917") - store i8* %"$eError_call_1918", i8** %"$eError_53" - %"$$eError_53_1919" = load i8*, i8** %"$eError_53" - store i8* %"$$eError_53_1919", i8** %e1 - %"$execptr_load_1920" = load i8*, i8** @_execptr - %"$e_1921" = load i8*, i8** %e1 - call void @_event(i8* %"$execptr_load_1920", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_1921") - br label %"$matchsucc_1835" - -"$empty_default_1839": ; preds = %entry - br label %"$matchsucc_1835" - -"$matchsucc_1835": ; preds = %"$False_1911", %"$matchsucc_1863", %"$empty_default_1839" + %"$gasrem_2880" = load i64, i64* @_gasrem + %"$gascmp_2881" = icmp ugt i64 1, %"$gasrem_2880" + br i1 %"$gascmp_2881", label %"$out_of_gas_2882", label %"$have_gas_2883" + +"$out_of_gas_2882": ; preds = %"$have_gas_2878" + call void @_out_of_gas() + br label %"$have_gas_2883" + +"$have_gas_2883": ; preds = %"$out_of_gas_2882", %"$have_gas_2878" + %"$consume_2884" = sub i64 %"$gasrem_2880", 1 + store i64 %"$consume_2884", i64* @_gasrem + store %String { i8* getelementptr inbounds ([26 x i8], [26 x i8]* @"$stringlit_2885", i32 0, i32 0), i32 26 }, %String* %m + %"$gasrem_2886" = load i64, i64* @_gasrem + %"$gascmp_2887" = icmp ugt i64 1, %"$gasrem_2886" + br i1 %"$gascmp_2887", label %"$out_of_gas_2888", label %"$have_gas_2889" + +"$out_of_gas_2888": ; preds = %"$have_gas_2883" + call void @_out_of_gas() + br label %"$have_gas_2889" + +"$have_gas_2889": ; preds = %"$out_of_gas_2888", %"$have_gas_2883" + %"$consume_2890" = sub i64 %"$gasrem_2886", 1 + store i64 %"$consume_2890", i64* @_gasrem + %"$eError_50" = alloca i8* + %"$eError_2891" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* @eError + %"$eError_fptr_2892" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_2891", 0 + %"$eError_envptr_2893" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_2891", 1 + %"$m_2894" = load %String, %String* %m + %"$eError_call_2895" = call i8* %"$eError_fptr_2892"(i8* %"$eError_envptr_2893", %String %"$m_2894") + store i8* %"$eError_call_2895", i8** %"$eError_50" + %"$$eError_50_2896" = load i8*, i8** %"$eError_50" + store i8* %"$$eError_50_2896", i8** %e1 + %"$e_2897" = load i8*, i8** %e1 + %"$_literal_cost_call_2899" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_2897") + %"$gasrem_2900" = load i64, i64* @_gasrem + %"$gascmp_2901" = icmp ugt i64 %"$_literal_cost_call_2899", %"$gasrem_2900" + br i1 %"$gascmp_2901", label %"$out_of_gas_2902", label %"$have_gas_2903" + +"$out_of_gas_2902": ; preds = %"$have_gas_2889" + call void @_out_of_gas() + br label %"$have_gas_2903" + +"$have_gas_2903": ; preds = %"$out_of_gas_2902", %"$have_gas_2889" + %"$consume_2904" = sub i64 %"$gasrem_2900", %"$_literal_cost_call_2899" + store i64 %"$consume_2904", i64* @_gasrem + %"$execptr_load_2905" = load i8*, i8** @_execptr + %"$e_2906" = load i8*, i8** %e1 + call void @_event(i8* %"$execptr_load_2905", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_2906") + br label %"$matchsucc_2721" + +"$empty_default_2725": ; preds = %"$have_gas_2719" + br label %"$matchsucc_2721" + +"$matchsucc_2721": ; preds = %"$have_gas_2903", %"$matchsucc_2774", %"$empty_default_2725" ret void } declare i8* @_fetch_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i32) +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + declare void @_event(i8*, %_TyDescrTy_Typ*, i8*) define void @setAdmin(i8* %0) { entry: - %"$_amount_1923" = getelementptr i8, i8* %0, i32 0 - %"$_amount_1924" = bitcast i8* %"$_amount_1923" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_1924" - %"$_sender_1925" = getelementptr i8, i8* %0, i32 16 - %"$_sender_1926" = bitcast i8* %"$_sender_1925" to [20 x i8]* - %"$address_1927" = getelementptr i8, i8* %0, i32 36 - %"$address_1928" = bitcast i8* %"$address_1927" to [20 x i8]* - %"$isApproved_1929" = getelementptr i8, i8* %0, i32 56 - %"$isApproved_1930" = bitcast i8* %"$isApproved_1929" to %TName_Bool** - %isApproved = load %TName_Bool*, %TName_Bool** %"$isApproved_1930" - call void @"$setAdmin_1817"(%Uint128 %_amount, [20 x i8]* %"$_sender_1926", [20 x i8]* %"$address_1928", %TName_Bool* %isApproved) + %"$_amount_2908" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2909" = bitcast i8* %"$_amount_2908" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2909" + %"$_sender_2910" = getelementptr i8, i8* %0, i32 16 + %"$_sender_2911" = bitcast i8* %"$_sender_2910" to [20 x i8]* + %"$address_2912" = getelementptr i8, i8* %0, i32 36 + %"$address_2913" = bitcast i8* %"$address_2912" to [20 x i8]* + %"$isApproved_2914" = getelementptr i8, i8* %0, i32 56 + %"$isApproved_2915" = bitcast i8* %"$isApproved_2914" to %TName_Bool** + %isApproved = load %TName_Bool*, %TName_Bool** %"$isApproved_2915" + call void @"$setAdmin_2679"(%Uint128 %_amount, [20 x i8]* %"$_sender_2911", [20 x i8]* %"$address_2913", %TName_Bool* %isApproved) ret void } -define internal void @"$approve_1931"(%Uint128 %_amount, [20 x i8]* %"$_sender_1932", [32 x i8]* %"$node_1933", [20 x i8]* %"$address_1934") { +define internal void @"$approve_2916"(%Uint128 %_amount, [20 x i8]* %"$_sender_2917", [32 x i8]* %"$node_2918", [20 x i8]* %"$address_2919") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_1932" - %node = load [32 x i8], [32 x i8]* %"$node_1933" - %address = load [20 x i8], [20 x i8]* %"$address_1934" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2917" + %node = load [32 x i8], [32 x i8]* %"$node_2918" + %address = load [20 x i8], [20 x i8]* %"$address_2919" %maybeRecord = alloca %TName_Option_Record* - %"$indices_buf_1935_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1935_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1935_salloc_load", i64 32) - %"$indices_buf_1935_salloc" = bitcast i8* %"$indices_buf_1935_salloc_salloc" to [32 x i8]* - %"$indices_buf_1935" = bitcast [32 x i8]* %"$indices_buf_1935_salloc" to i8* - %"$indices_gep_1936" = getelementptr i8, i8* %"$indices_buf_1935", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_1936" to [32 x i8]* + %"$indices_buf_2920_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_2920_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2920_salloc_load", i64 32) + %"$indices_buf_2920_salloc" = bitcast i8* %"$indices_buf_2920_salloc_salloc" to [32 x i8]* + %"$indices_buf_2920" = bitcast [32 x i8]* %"$indices_buf_2920_salloc" to i8* + %"$indices_gep_2921" = getelementptr i8, i8* %"$indices_buf_2920", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_2921" to [32 x i8]* store [32 x i8] %node, [32 x i8]* %indices_cast - %"$execptr_load_1937" = load i8*, i8** @_execptr - %"$maybeRecord_1939" = call i8* @_fetch_field(i8* %"$execptr_load_1937", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_1938", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_325", i32 1, i8* %"$indices_buf_1935", i32 1) - %"$maybeRecord_1940" = bitcast i8* %"$maybeRecord_1939" to %TName_Option_Record* - store %TName_Option_Record* %"$maybeRecord_1940", %TName_Option_Record** %maybeRecord + %"$execptr_load_2922" = load i8*, i8** @_execptr + %"$maybeRecord_2924" = call i8* @_fetch_field(i8* %"$execptr_load_2922", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_2923", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_322", i32 1, i8* %"$indices_buf_2920", i32 1) + %"$maybeRecord_2925" = bitcast i8* %"$maybeRecord_2924" to %TName_Option_Record* + store %TName_Option_Record* %"$maybeRecord_2925", %TName_Option_Record** %maybeRecord + %"$maybeRecord_2926" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord + %"$$maybeRecord_2926_2927" = bitcast %TName_Option_Record* %"$maybeRecord_2926" to i8* + %"$_literal_cost_call_2928" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Record_313", i8* %"$$maybeRecord_2926_2927") + %"$gasadd_2929" = add i64 %"$_literal_cost_call_2928", 0 + %"$gasadd_2930" = add i64 %"$gasadd_2929", 1 + %"$gasrem_2931" = load i64, i64* @_gasrem + %"$gascmp_2932" = icmp ugt i64 %"$gasadd_2930", %"$gasrem_2931" + br i1 %"$gascmp_2932", label %"$out_of_gas_2933", label %"$have_gas_2934" + +"$out_of_gas_2933": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2934" + +"$have_gas_2934": ; preds = %"$out_of_gas_2933", %entry + %"$consume_2935" = sub i64 %"$gasrem_2931", %"$gasadd_2930" + store i64 %"$consume_2935", i64* @_gasrem + %"$gasrem_2936" = load i64, i64* @_gasrem + %"$gascmp_2937" = icmp ugt i64 1, %"$gasrem_2936" + br i1 %"$gascmp_2937", label %"$out_of_gas_2938", label %"$have_gas_2939" + +"$out_of_gas_2938": ; preds = %"$have_gas_2934" + call void @_out_of_gas() + br label %"$have_gas_2939" + +"$have_gas_2939": ; preds = %"$out_of_gas_2938", %"$have_gas_2934" + %"$consume_2940" = sub i64 %"$gasrem_2936", 1 + store i64 %"$consume_2940", i64* @_gasrem %recordOwner = alloca [20 x i8] - %"$recordMemberOwner_59" = alloca [20 x i8] - %"$recordMemberOwner_1941" = load { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }, { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }* @recordMemberOwner - %"$recordMemberOwner_fptr_1942" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_1941", 0 - %"$recordMemberOwner_envptr_1943" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_1941", 1 - %"$maybeRecord_1944" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord - %"$recordMemberOwner_retalloca_1945" = alloca [20 x i8] - call void %"$recordMemberOwner_fptr_1942"(i8* %"$recordMemberOwner_envptr_1943", [20 x i8]* %"$recordMemberOwner_retalloca_1945", %TName_Option_Record* %"$maybeRecord_1944") - %"$recordMemberOwner_ret_1946" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_retalloca_1945" - store [20 x i8] %"$recordMemberOwner_ret_1946", [20 x i8]* %"$recordMemberOwner_59" - %"$$recordMemberOwner_59_1947" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_59" - store [20 x i8] %"$$recordMemberOwner_59_1947", [20 x i8]* %recordOwner + %"$gasrem_2941" = load i64, i64* @_gasrem + %"$gascmp_2942" = icmp ugt i64 1, %"$gasrem_2941" + br i1 %"$gascmp_2942", label %"$out_of_gas_2943", label %"$have_gas_2944" + +"$out_of_gas_2943": ; preds = %"$have_gas_2939" + call void @_out_of_gas() + br label %"$have_gas_2944" + +"$have_gas_2944": ; preds = %"$out_of_gas_2943", %"$have_gas_2939" + %"$consume_2945" = sub i64 %"$gasrem_2941", 1 + store i64 %"$consume_2945", i64* @_gasrem + %"$recordMemberOwner_56" = alloca [20 x i8] + %"$recordMemberOwner_2946" = load { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }, { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }* @recordMemberOwner + %"$recordMemberOwner_fptr_2947" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_2946", 0 + %"$recordMemberOwner_envptr_2948" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_2946", 1 + %"$maybeRecord_2949" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord + %"$recordMemberOwner_retalloca_2950" = alloca [20 x i8] + call void %"$recordMemberOwner_fptr_2947"(i8* %"$recordMemberOwner_envptr_2948", [20 x i8]* %"$recordMemberOwner_retalloca_2950", %TName_Option_Record* %"$maybeRecord_2949") + %"$recordMemberOwner_ret_2951" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_retalloca_2950" + store [20 x i8] %"$recordMemberOwner_ret_2951", [20 x i8]* %"$recordMemberOwner_56" + %"$$recordMemberOwner_56_2952" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_56" + store [20 x i8] %"$$recordMemberOwner_56_2952", [20 x i8]* %recordOwner + %"$gasrem_2953" = load i64, i64* @_gasrem + %"$gascmp_2954" = icmp ugt i64 1, %"$gasrem_2953" + br i1 %"$gascmp_2954", label %"$out_of_gas_2955", label %"$have_gas_2956" + +"$out_of_gas_2955": ; preds = %"$have_gas_2944" + call void @_out_of_gas() + br label %"$have_gas_2956" + +"$have_gas_2956": ; preds = %"$out_of_gas_2955", %"$have_gas_2944" + %"$consume_2957" = sub i64 %"$gasrem_2953", 1 + store i64 %"$consume_2957", i64* @_gasrem %isSenderNodeOwner = alloca %TName_Bool* - %"$execptr_load_1948" = load i8*, i8** @_execptr - %"$eq__sender_1949" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$eq__sender_1949" - %"$$eq__sender_1949_1950" = bitcast [20 x i8]* %"$eq__sender_1949" to i8* - %"$eq_recordOwner_1951" = alloca [20 x i8] - %"$recordOwner_1952" = load [20 x i8], [20 x i8]* %recordOwner - store [20 x i8] %"$recordOwner_1952", [20 x i8]* %"$eq_recordOwner_1951" - %"$$eq_recordOwner_1951_1953" = bitcast [20 x i8]* %"$eq_recordOwner_1951" to i8* - %"$eq_call_1954" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_1948", i32 20, i8* %"$$eq__sender_1949_1950", i8* %"$$eq_recordOwner_1951_1953") - store %TName_Bool* %"$eq_call_1954", %TName_Bool** %isSenderNodeOwner - %"$isSenderNodeOwner_1956" = load %TName_Bool*, %TName_Bool** %isSenderNodeOwner - %"$isSenderNodeOwner_tag_1957" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isSenderNodeOwner_1956", i32 0, i32 0 - %"$isSenderNodeOwner_tag_1958" = load i8, i8* %"$isSenderNodeOwner_tag_1957" - switch i8 %"$isSenderNodeOwner_tag_1958", label %"$empty_default_1959" [ - i8 0, label %"$True_1960" - i8 1, label %"$False_2015" + %"$execptr_load_2958" = load i8*, i8** @_execptr + %"$eq__sender_2959" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$eq__sender_2959" + %"$$eq__sender_2959_2960" = bitcast [20 x i8]* %"$eq__sender_2959" to i8* + %"$eq_recordOwner_2961" = alloca [20 x i8] + %"$recordOwner_2962" = load [20 x i8], [20 x i8]* %recordOwner + store [20 x i8] %"$recordOwner_2962", [20 x i8]* %"$eq_recordOwner_2961" + %"$$eq_recordOwner_2961_2963" = bitcast [20 x i8]* %"$eq_recordOwner_2961" to i8* + %"$eq_call_2964" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_2958", i32 20, i8* %"$$eq__sender_2959_2960", i8* %"$$eq_recordOwner_2961_2963") + store %TName_Bool* %"$eq_call_2964", %TName_Bool** %isSenderNodeOwner + %"$gasrem_2965" = load i64, i64* @_gasrem + %"$gascmp_2966" = icmp ugt i64 2, %"$gasrem_2965" + br i1 %"$gascmp_2966", label %"$out_of_gas_2967", label %"$have_gas_2968" + +"$out_of_gas_2967": ; preds = %"$have_gas_2956" + call void @_out_of_gas() + br label %"$have_gas_2968" + +"$have_gas_2968": ; preds = %"$out_of_gas_2967", %"$have_gas_2956" + %"$consume_2969" = sub i64 %"$gasrem_2965", 2 + store i64 %"$consume_2969", i64* @_gasrem + %"$isSenderNodeOwner_2971" = load %TName_Bool*, %TName_Bool** %isSenderNodeOwner + %"$isSenderNodeOwner_tag_2972" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isSenderNodeOwner_2971", i32 0, i32 0 + %"$isSenderNodeOwner_tag_2973" = load i8, i8* %"$isSenderNodeOwner_tag_2972" + switch i8 %"$isSenderNodeOwner_tag_2973", label %"$empty_default_2974" [ + i8 0, label %"$True_2975" + i8 1, label %"$False_3107" ] -"$True_1960": ; preds = %entry - %"$isSenderNodeOwner_1961" = bitcast %TName_Bool* %"$isSenderNodeOwner_1956" to %CName_True* +"$True_2975": ; preds = %"$have_gas_2968" + %"$isSenderNodeOwner_2976" = bitcast %TName_Bool* %"$isSenderNodeOwner_2971" to %CName_True* %maybeApproved = alloca %TName_Option_ByStr20* - %"$indices_buf_1962_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1962_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1962_salloc_load", i64 32) - %"$indices_buf_1962_salloc" = bitcast i8* %"$indices_buf_1962_salloc_salloc" to [32 x i8]* - %"$indices_buf_1962" = bitcast [32 x i8]* %"$indices_buf_1962_salloc" to i8* - %"$indices_gep_1963" = getelementptr i8, i8* %"$indices_buf_1962", i32 0 - %indices_cast1 = bitcast i8* %"$indices_gep_1963" to [32 x i8]* + %"$indices_buf_2977_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_2977_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2977_salloc_load", i64 32) + %"$indices_buf_2977_salloc" = bitcast i8* %"$indices_buf_2977_salloc_salloc" to [32 x i8]* + %"$indices_buf_2977" = bitcast [32 x i8]* %"$indices_buf_2977_salloc" to i8* + %"$indices_gep_2978" = getelementptr i8, i8* %"$indices_buf_2977", i32 0 + %indices_cast1 = bitcast i8* %"$indices_gep_2978" to [32 x i8]* store [32 x i8] %node, [32 x i8]* %indices_cast1 - %"$execptr_load_1964" = load i8*, i8** @_execptr - %"$maybeApproved_1966" = call i8* @_fetch_field(i8* %"$execptr_load_1964", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_1965", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_324", i32 1, i8* %"$indices_buf_1962", i32 1) - %"$maybeApproved_1967" = bitcast i8* %"$maybeApproved_1966" to %TName_Option_ByStr20* - store %TName_Option_ByStr20* %"$maybeApproved_1967", %TName_Option_ByStr20** %maybeApproved + %"$execptr_load_2979" = load i8*, i8** @_execptr + %"$maybeApproved_2981" = call i8* @_fetch_field(i8* %"$execptr_load_2979", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_2980", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_321", i32 1, i8* %"$indices_buf_2977", i32 1) + %"$maybeApproved_2982" = bitcast i8* %"$maybeApproved_2981" to %TName_Option_ByStr20* + store %TName_Option_ByStr20* %"$maybeApproved_2982", %TName_Option_ByStr20** %maybeApproved + %"$maybeApproved_2983" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved + %"$$maybeApproved_2983_2984" = bitcast %TName_Option_ByStr20* %"$maybeApproved_2983" to i8* + %"$_literal_cost_call_2985" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_ByStr20_314", i8* %"$$maybeApproved_2983_2984") + %"$gasadd_2986" = add i64 %"$_literal_cost_call_2985", 0 + %"$gasadd_2987" = add i64 %"$gasadd_2986", 1 + %"$gasrem_2988" = load i64, i64* @_gasrem + %"$gascmp_2989" = icmp ugt i64 %"$gasadd_2987", %"$gasrem_2988" + br i1 %"$gascmp_2989", label %"$out_of_gas_2990", label %"$have_gas_2991" + +"$out_of_gas_2990": ; preds = %"$True_2975" + call void @_out_of_gas() + br label %"$have_gas_2991" + +"$have_gas_2991": ; preds = %"$out_of_gas_2990", %"$True_2975" + %"$consume_2992" = sub i64 %"$gasrem_2988", %"$gasadd_2987" + store i64 %"$consume_2992", i64* @_gasrem + %"$gasrem_2993" = load i64, i64* @_gasrem + %"$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 %currentlyApproved = alloca [20 x i8] - %"$maybeApproved_1969" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved - %"$maybeApproved_tag_1970" = getelementptr inbounds %TName_Option_ByStr20, %TName_Option_ByStr20* %"$maybeApproved_1969", i32 0, i32 0 - %"$maybeApproved_tag_1971" = load i8, i8* %"$maybeApproved_tag_1970" - switch i8 %"$maybeApproved_tag_1971", label %"$empty_default_1972" [ - i8 1, label %"$None_1973" - i8 0, label %"$Some_1976" + %"$gasrem_2998" = load i64, i64* @_gasrem + %"$gascmp_2999" = icmp ugt i64 2, %"$gasrem_2998" + br i1 %"$gascmp_2999", label %"$out_of_gas_3000", label %"$have_gas_3001" + +"$out_of_gas_3000": ; preds = %"$have_gas_2996" + call void @_out_of_gas() + br label %"$have_gas_3001" + +"$have_gas_3001": ; preds = %"$out_of_gas_3000", %"$have_gas_2996" + %"$consume_3002" = sub i64 %"$gasrem_2998", 2 + store i64 %"$consume_3002", i64* @_gasrem + %"$maybeApproved_3004" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved + %"$maybeApproved_tag_3005" = getelementptr inbounds %TName_Option_ByStr20, %TName_Option_ByStr20* %"$maybeApproved_3004", i32 0, i32 0 + %"$maybeApproved_tag_3006" = load i8, i8* %"$maybeApproved_tag_3005" + switch i8 %"$maybeApproved_tag_3006", label %"$empty_default_3007" [ + i8 1, label %"$None_3008" + i8 0, label %"$Some_3016" ] -"$None_1973": ; preds = %"$True_1960" - %"$maybeApproved_1974" = bitcast %TName_Option_ByStr20* %"$maybeApproved_1969" to %CName_None_ByStr20* - %"$zeroByStr20_1975" = load [20 x i8], [20 x i8]* @zeroByStr20 - store [20 x i8] %"$zeroByStr20_1975", [20 x i8]* %currentlyApproved - br label %"$matchsucc_1968" - -"$Some_1976": ; preds = %"$True_1960" - %"$maybeApproved_1977" = bitcast %TName_Option_ByStr20* %"$maybeApproved_1969" to %CName_Some_ByStr20* - %"$approved_gep_1978" = getelementptr inbounds %CName_Some_ByStr20, %CName_Some_ByStr20* %"$maybeApproved_1977", i32 0, i32 1 - %"$approved_load_1979" = load [20 x i8], [20 x i8]* %"$approved_gep_1978" +"$None_3008": ; preds = %"$have_gas_3001" + %"$maybeApproved_3009" = bitcast %TName_Option_ByStr20* %"$maybeApproved_3004" to %CName_None_ByStr20* + %"$gasrem_3010" = load i64, i64* @_gasrem + %"$gascmp_3011" = icmp ugt i64 1, %"$gasrem_3010" + br i1 %"$gascmp_3011", label %"$out_of_gas_3012", label %"$have_gas_3013" + +"$out_of_gas_3012": ; preds = %"$None_3008" + call void @_out_of_gas() + br label %"$have_gas_3013" + +"$have_gas_3013": ; preds = %"$out_of_gas_3012", %"$None_3008" + %"$consume_3014" = sub i64 %"$gasrem_3010", 1 + store i64 %"$consume_3014", i64* @_gasrem + %"$zeroByStr20_3015" = load [20 x i8], [20 x i8]* @zeroByStr20 + store [20 x i8] %"$zeroByStr20_3015", [20 x i8]* %currentlyApproved + br label %"$matchsucc_3003" + +"$Some_3016": ; preds = %"$have_gas_3001" + %"$maybeApproved_3017" = bitcast %TName_Option_ByStr20* %"$maybeApproved_3004" to %CName_Some_ByStr20* + %"$approved_gep_3018" = getelementptr inbounds %CName_Some_ByStr20, %CName_Some_ByStr20* %"$maybeApproved_3017", i32 0, i32 1 + %"$approved_load_3019" = load [20 x i8], [20 x i8]* %"$approved_gep_3018" %approved = alloca [20 x i8] - store [20 x i8] %"$approved_load_1979", [20 x i8]* %approved - %"$approved_1980" = load [20 x i8], [20 x i8]* %approved - store [20 x i8] %"$approved_1980", [20 x i8]* %currentlyApproved - br label %"$matchsucc_1968" + store [20 x i8] %"$approved_load_3019", [20 x i8]* %approved + %"$gasrem_3020" = load i64, i64* @_gasrem + %"$gascmp_3021" = icmp ugt i64 1, %"$gasrem_3020" + br i1 %"$gascmp_3021", label %"$out_of_gas_3022", label %"$have_gas_3023" + +"$out_of_gas_3022": ; preds = %"$Some_3016" + call void @_out_of_gas() + br label %"$have_gas_3023" + +"$have_gas_3023": ; preds = %"$out_of_gas_3022", %"$Some_3016" + %"$consume_3024" = sub i64 %"$gasrem_3020", 1 + store i64 %"$consume_3024", i64* @_gasrem + %"$approved_3025" = load [20 x i8], [20 x i8]* %approved + store [20 x i8] %"$approved_3025", [20 x i8]* %currentlyApproved + br label %"$matchsucc_3003" + +"$empty_default_3007": ; preds = %"$have_gas_3001" + br label %"$matchsucc_3003" + +"$matchsucc_3003": ; preds = %"$have_gas_3023", %"$have_gas_3013", %"$empty_default_3007" + %"$gasrem_3026" = load i64, i64* @_gasrem + %"$gascmp_3027" = icmp ugt i64 1, %"$gasrem_3026" + br i1 %"$gascmp_3027", label %"$out_of_gas_3028", label %"$have_gas_3029" + +"$out_of_gas_3028": ; preds = %"$matchsucc_3003" + call void @_out_of_gas() + br label %"$have_gas_3029" + +"$have_gas_3029": ; preds = %"$out_of_gas_3028", %"$matchsucc_3003" + %"$consume_3030" = sub i64 %"$gasrem_3026", 1 + store i64 %"$consume_3030", i64* @_gasrem + %needsToChange = alloca %TName_Bool* + %"$gasrem_3031" = load i64, i64* @_gasrem + %"$gascmp_3032" = icmp ugt i64 1, %"$gasrem_3031" + br i1 %"$gascmp_3032", label %"$out_of_gas_3033", label %"$have_gas_3034" -"$empty_default_1972": ; preds = %"$True_1960" - br label %"$matchsucc_1968" +"$out_of_gas_3033": ; preds = %"$have_gas_3029" + call void @_out_of_gas() + br label %"$have_gas_3034" -"$matchsucc_1968": ; preds = %"$Some_1976", %"$None_1973", %"$empty_default_1972" - %needsToChange = alloca %TName_Bool* +"$have_gas_3034": ; preds = %"$out_of_gas_3033", %"$have_gas_3029" + %"$consume_3035" = sub i64 %"$gasrem_3031", 1 + store i64 %"$consume_3035", i64* @_gasrem %b = alloca %TName_Bool* - %"$execptr_load_1981" = load i8*, i8** @_execptr - %"$eq_currentlyApproved_1982" = alloca [20 x i8] - %"$currentlyApproved_1983" = load [20 x i8], [20 x i8]* %currentlyApproved - store [20 x i8] %"$currentlyApproved_1983", [20 x i8]* %"$eq_currentlyApproved_1982" - %"$$eq_currentlyApproved_1982_1984" = bitcast [20 x i8]* %"$eq_currentlyApproved_1982" to i8* - %"$eq_address_1985" = alloca [20 x i8] - store [20 x i8] %address, [20 x i8]* %"$eq_address_1985" - %"$$eq_address_1985_1986" = bitcast [20 x i8]* %"$eq_address_1985" to i8* - %"$eq_call_1987" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_1981", i32 20, i8* %"$$eq_currentlyApproved_1982_1984", i8* %"$$eq_address_1985_1986") - store %TName_Bool* %"$eq_call_1987", %TName_Bool** %b - %"$negb_57" = alloca %TName_Bool* - %"$negb_1988" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* @negb - %"$negb_fptr_1989" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_1988", 0 - %"$negb_envptr_1990" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_1988", 1 - %"$b_1991" = load %TName_Bool*, %TName_Bool** %b - %"$negb_call_1992" = call %TName_Bool* %"$negb_fptr_1989"(i8* %"$negb_envptr_1990", %TName_Bool* %"$b_1991") - store %TName_Bool* %"$negb_call_1992", %TName_Bool** %"$negb_57" - %"$$negb_57_1993" = load %TName_Bool*, %TName_Bool** %"$negb_57" - store %TName_Bool* %"$$negb_57_1993", %TName_Bool** %needsToChange - %"$needsToChange_1995" = load %TName_Bool*, %TName_Bool** %needsToChange - %"$needsToChange_tag_1996" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$needsToChange_1995", i32 0, i32 0 - %"$needsToChange_tag_1997" = load i8, i8* %"$needsToChange_tag_1996" - switch i8 %"$needsToChange_tag_1997", label %"$default_1998" [ - i8 0, label %"$True_1999" + %"$execptr_load_3036" = load i8*, i8** @_execptr + %"$eq_currentlyApproved_3037" = alloca [20 x i8] + %"$currentlyApproved_3038" = load [20 x i8], [20 x i8]* %currentlyApproved + store [20 x i8] %"$currentlyApproved_3038", [20 x i8]* %"$eq_currentlyApproved_3037" + %"$$eq_currentlyApproved_3037_3039" = bitcast [20 x i8]* %"$eq_currentlyApproved_3037" to i8* + %"$eq_address_3040" = alloca [20 x i8] + store [20 x i8] %address, [20 x i8]* %"$eq_address_3040" + %"$$eq_address_3040_3041" = bitcast [20 x i8]* %"$eq_address_3040" to i8* + %"$eq_call_3042" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_3036", i32 20, i8* %"$$eq_currentlyApproved_3037_3039", i8* %"$$eq_address_3040_3041") + store %TName_Bool* %"$eq_call_3042", %TName_Bool** %b + %"$gasrem_3043" = load i64, i64* @_gasrem + %"$gascmp_3044" = icmp ugt i64 1, %"$gasrem_3043" + br i1 %"$gascmp_3044", label %"$out_of_gas_3045", label %"$have_gas_3046" + +"$out_of_gas_3045": ; preds = %"$have_gas_3034" + call void @_out_of_gas() + br label %"$have_gas_3046" + +"$have_gas_3046": ; preds = %"$out_of_gas_3045", %"$have_gas_3034" + %"$consume_3047" = sub i64 %"$gasrem_3043", 1 + store i64 %"$consume_3047", i64* @_gasrem + %"$negb_54" = alloca %TName_Bool* + %"$negb_3048" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* @negb + %"$negb_fptr_3049" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_3048", 0 + %"$negb_envptr_3050" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$negb_3048", 1 + %"$b_3051" = load %TName_Bool*, %TName_Bool** %b + %"$negb_call_3052" = call %TName_Bool* %"$negb_fptr_3049"(i8* %"$negb_envptr_3050", %TName_Bool* %"$b_3051") + store %TName_Bool* %"$negb_call_3052", %TName_Bool** %"$negb_54" + %"$$negb_54_3053" = load %TName_Bool*, %TName_Bool** %"$negb_54" + store %TName_Bool* %"$$negb_54_3053", %TName_Bool** %needsToChange + %"$gasrem_3054" = load i64, i64* @_gasrem + %"$gascmp_3055" = icmp ugt i64 2, %"$gasrem_3054" + br i1 %"$gascmp_3055", label %"$out_of_gas_3056", label %"$have_gas_3057" + +"$out_of_gas_3056": ; preds = %"$have_gas_3046" + call void @_out_of_gas() + br label %"$have_gas_3057" + +"$have_gas_3057": ; preds = %"$out_of_gas_3056", %"$have_gas_3046" + %"$consume_3058" = sub i64 %"$gasrem_3054", 2 + store i64 %"$consume_3058", i64* @_gasrem + %"$needsToChange_3060" = load %TName_Bool*, %TName_Bool** %needsToChange + %"$needsToChange_tag_3061" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$needsToChange_3060", i32 0, i32 0 + %"$needsToChange_tag_3062" = load i8, i8* %"$needsToChange_tag_3061" + switch i8 %"$needsToChange_tag_3062", label %"$default_3063" [ + i8 0, label %"$True_3064" ] -"$True_1999": ; preds = %"$matchsucc_1968" - %"$needsToChange_2000" = bitcast %TName_Bool* %"$needsToChange_1995" to %CName_True* - %"$indices_buf_2001_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2001_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2001_salloc_load", i64 32) - %"$indices_buf_2001_salloc" = bitcast i8* %"$indices_buf_2001_salloc_salloc" to [32 x i8]* - %"$indices_buf_2001" = bitcast [32 x i8]* %"$indices_buf_2001_salloc" to i8* - %"$indices_gep_2002" = getelementptr i8, i8* %"$indices_buf_2001", i32 0 - %indices_cast2 = bitcast i8* %"$indices_gep_2002" to [32 x i8]* +"$True_3064": ; preds = %"$have_gas_3057" + %"$needsToChange_3065" = bitcast %TName_Bool* %"$needsToChange_3060" to %CName_True* + %"$_literal_cost_address_3066" = alloca [20 x i8] + store [20 x i8] %address, [20 x i8]* %"$_literal_cost_address_3066" + %"$$_literal_cost_address_3066_3067" = bitcast [20 x i8]* %"$_literal_cost_address_3066" to i8* + %"$_literal_cost_call_3068" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", i8* %"$$_literal_cost_address_3066_3067") + %"$gasadd_3069" = add i64 %"$_literal_cost_call_3068", 1 + %"$gasrem_3070" = load i64, i64* @_gasrem + %"$gascmp_3071" = icmp ugt i64 %"$gasadd_3069", %"$gasrem_3070" + br i1 %"$gascmp_3071", label %"$out_of_gas_3072", label %"$have_gas_3073" + +"$out_of_gas_3072": ; preds = %"$True_3064" + call void @_out_of_gas() + br label %"$have_gas_3073" + +"$have_gas_3073": ; preds = %"$out_of_gas_3072", %"$True_3064" + %"$consume_3074" = sub i64 %"$gasrem_3070", %"$gasadd_3069" + store i64 %"$consume_3074", i64* @_gasrem + %"$indices_buf_3075_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3075_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3075_salloc_load", i64 32) + %"$indices_buf_3075_salloc" = bitcast i8* %"$indices_buf_3075_salloc_salloc" to [32 x i8]* + %"$indices_buf_3075" = bitcast [32 x i8]* %"$indices_buf_3075_salloc" to i8* + %"$indices_gep_3076" = getelementptr i8, i8* %"$indices_buf_3075", i32 0 + %indices_cast2 = bitcast i8* %"$indices_gep_3076" to [32 x i8]* store [32 x i8] %node, [32 x i8]* %indices_cast2 - %"$execptr_load_2003" = load i8*, i8** @_execptr - %"$update_value_2005" = alloca [20 x i8] - store [20 x i8] %address, [20 x i8]* %"$update_value_2005" - %"$update_value_2006" = bitcast [20 x i8]* %"$update_value_2005" to i8* - call void @_update_field(i8* %"$execptr_load_2003", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_2004", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_324", i32 1, i8* %"$indices_buf_2001", i8* %"$update_value_2006") + %"$execptr_load_3077" = load i8*, i8** @_execptr + %"$update_value_3079" = alloca [20 x i8] + store [20 x i8] %address, [20 x i8]* %"$update_value_3079" + %"$update_value_3080" = bitcast [20 x i8]* %"$update_value_3079" to i8* + call void @_update_field(i8* %"$execptr_load_3077", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_3078", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_321", i32 1, i8* %"$indices_buf_3075", i8* %"$update_value_3080") + %"$gasrem_3081" = load i64, i64* @_gasrem + %"$gascmp_3082" = icmp ugt i64 1, %"$gasrem_3081" + br i1 %"$gascmp_3082", label %"$out_of_gas_3083", label %"$have_gas_3084" + +"$out_of_gas_3083": ; preds = %"$have_gas_3073" + call void @_out_of_gas() + br label %"$have_gas_3084" + +"$have_gas_3084": ; preds = %"$out_of_gas_3083", %"$have_gas_3073" + %"$consume_3085" = sub i64 %"$gasrem_3081", 1 + store i64 %"$consume_3085", i64* @_gasrem %e = alloca i8* - %"$eApproved_56" = alloca i8* - %"$eApproved_2007" = load { i8* (i8*, [20 x i8]*)*, i8* }, { i8* (i8*, [20 x i8]*)*, i8* }* @eApproved - %"$eApproved_fptr_2008" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$eApproved_2007", 0 - %"$eApproved_envptr_2009" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$eApproved_2007", 1 - %"$eApproved_address_2010" = alloca [20 x i8] - store [20 x i8] %address, [20 x i8]* %"$eApproved_address_2010" - %"$eApproved_call_2011" = call i8* %"$eApproved_fptr_2008"(i8* %"$eApproved_envptr_2009", [20 x i8]* %"$eApproved_address_2010") - store i8* %"$eApproved_call_2011", i8** %"$eApproved_56" - %"$$eApproved_56_2012" = load i8*, i8** %"$eApproved_56" - store i8* %"$$eApproved_56_2012", i8** %e - %"$execptr_load_2013" = load i8*, i8** @_execptr - %"$e_2014" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_2013", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_2014") - br label %"$matchsucc_1994" - -"$default_1998": ; preds = %"$matchsucc_1968" - br label %"$joinp_5" + %"$gasrem_3086" = load i64, i64* @_gasrem + %"$gascmp_3087" = icmp ugt i64 1, %"$gasrem_3086" + br i1 %"$gascmp_3087", label %"$out_of_gas_3088", label %"$have_gas_3089" + +"$out_of_gas_3088": ; preds = %"$have_gas_3084" + call void @_out_of_gas() + br label %"$have_gas_3089" + +"$have_gas_3089": ; preds = %"$out_of_gas_3088", %"$have_gas_3084" + %"$consume_3090" = sub i64 %"$gasrem_3086", 1 + store i64 %"$consume_3090", i64* @_gasrem + %"$eApproved_53" = alloca i8* + %"$eApproved_3091" = load { i8* (i8*, [20 x i8]*)*, i8* }, { i8* (i8*, [20 x i8]*)*, i8* }* @eApproved + %"$eApproved_fptr_3092" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$eApproved_3091", 0 + %"$eApproved_envptr_3093" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$eApproved_3091", 1 + %"$eApproved_address_3094" = alloca [20 x i8] + store [20 x i8] %address, [20 x i8]* %"$eApproved_address_3094" + %"$eApproved_call_3095" = call i8* %"$eApproved_fptr_3092"(i8* %"$eApproved_envptr_3093", [20 x i8]* %"$eApproved_address_3094") + store i8* %"$eApproved_call_3095", i8** %"$eApproved_53" + %"$$eApproved_53_3096" = load i8*, i8** %"$eApproved_53" + store i8* %"$$eApproved_53_3096", i8** %e + %"$e_3097" = load i8*, i8** %e + %"$_literal_cost_call_3099" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_3097") + %"$gasrem_3100" = load i64, i64* @_gasrem + %"$gascmp_3101" = icmp ugt i64 %"$_literal_cost_call_3099", %"$gasrem_3100" + br i1 %"$gascmp_3101", label %"$out_of_gas_3102", label %"$have_gas_3103" + +"$out_of_gas_3102": ; preds = %"$have_gas_3089" + call void @_out_of_gas() + br label %"$have_gas_3103" + +"$have_gas_3103": ; preds = %"$out_of_gas_3102", %"$have_gas_3089" + %"$consume_3104" = sub i64 %"$gasrem_3100", %"$_literal_cost_call_3099" + store i64 %"$consume_3104", i64* @_gasrem + %"$execptr_load_3105" = load i8*, i8** @_execptr + %"$e_3106" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_3105", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_3106") + br label %"$matchsucc_3059" -"$joinp_5": ; preds = %"$default_1998" - br label %"$matchsucc_1994" +"$default_3063": ; preds = %"$have_gas_3057" + br label %"$joinp_2" -"$matchsucc_1994": ; preds = %"$True_1999", %"$joinp_5" - br label %"$matchsucc_1955" +"$joinp_2": ; preds = %"$default_3063" + br label %"$matchsucc_3059" -"$False_2015": ; preds = %entry - %"$isSenderNodeOwner_2016" = bitcast %TName_Bool* %"$isSenderNodeOwner_1956" to %CName_False* +"$matchsucc_3059": ; preds = %"$have_gas_3103", %"$joinp_2" + br label %"$matchsucc_2970" + +"$False_3107": ; preds = %"$have_gas_2968" + %"$isSenderNodeOwner_3108" = bitcast %TName_Bool* %"$isSenderNodeOwner_2971" to %CName_False* + %"$gasrem_3109" = load i64, i64* @_gasrem + %"$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 = %"$False_3107" + call void @_out_of_gas() + br label %"$have_gas_3112" + +"$have_gas_3112": ; preds = %"$out_of_gas_3111", %"$False_3107" + %"$consume_3113" = sub i64 %"$gasrem_3109", 1 + store i64 %"$consume_3113", i64* @_gasrem %e3 = alloca i8* + %"$gasrem_3114" = load i64, i64* @_gasrem + %"$gascmp_3115" = icmp ugt i64 1, %"$gasrem_3114" + br i1 %"$gascmp_3115", label %"$out_of_gas_3116", label %"$have_gas_3117" + +"$out_of_gas_3116": ; preds = %"$have_gas_3112" + call void @_out_of_gas() + br label %"$have_gas_3117" + +"$have_gas_3117": ; preds = %"$out_of_gas_3116", %"$have_gas_3112" + %"$consume_3118" = sub i64 %"$gasrem_3114", 1 + store i64 %"$consume_3118", i64* @_gasrem %m = alloca %String - store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_2017", i32 0, i32 0), i32 21 }, %String* %m - %"$eError_58" = alloca i8* - %"$eError_2018" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* @eError - %"$eError_fptr_2019" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_2018", 0 - %"$eError_envptr_2020" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_2018", 1 - %"$m_2021" = load %String, %String* %m - %"$eError_call_2022" = call i8* %"$eError_fptr_2019"(i8* %"$eError_envptr_2020", %String %"$m_2021") - store i8* %"$eError_call_2022", i8** %"$eError_58" - %"$$eError_58_2023" = load i8*, i8** %"$eError_58" - store i8* %"$$eError_58_2023", i8** %e3 - %"$execptr_load_2024" = load i8*, i8** @_execptr - %"$e_2025" = load i8*, i8** %e3 - call void @_event(i8* %"$execptr_load_2024", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_2025") - br label %"$matchsucc_1955" - -"$empty_default_1959": ; preds = %entry - br label %"$matchsucc_1955" - -"$matchsucc_1955": ; preds = %"$False_2015", %"$matchsucc_1994", %"$empty_default_1959" + %"$gasrem_3119" = load i64, i64* @_gasrem + %"$gascmp_3120" = icmp ugt i64 1, %"$gasrem_3119" + br i1 %"$gascmp_3120", label %"$out_of_gas_3121", label %"$have_gas_3122" + +"$out_of_gas_3121": ; preds = %"$have_gas_3117" + call void @_out_of_gas() + br label %"$have_gas_3122" + +"$have_gas_3122": ; preds = %"$out_of_gas_3121", %"$have_gas_3117" + %"$consume_3123" = sub i64 %"$gasrem_3119", 1 + store i64 %"$consume_3123", i64* @_gasrem + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_3124", i32 0, i32 0), i32 21 }, %String* %m + %"$gasrem_3125" = load i64, i64* @_gasrem + %"$gascmp_3126" = icmp ugt i64 1, %"$gasrem_3125" + br i1 %"$gascmp_3126", label %"$out_of_gas_3127", label %"$have_gas_3128" + +"$out_of_gas_3127": ; preds = %"$have_gas_3122" + call void @_out_of_gas() + br label %"$have_gas_3128" + +"$have_gas_3128": ; preds = %"$out_of_gas_3127", %"$have_gas_3122" + %"$consume_3129" = sub i64 %"$gasrem_3125", 1 + store i64 %"$consume_3129", i64* @_gasrem + %"$eError_55" = alloca i8* + %"$eError_3130" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* @eError + %"$eError_fptr_3131" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_3130", 0 + %"$eError_envptr_3132" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_3130", 1 + %"$m_3133" = load %String, %String* %m + %"$eError_call_3134" = call i8* %"$eError_fptr_3131"(i8* %"$eError_envptr_3132", %String %"$m_3133") + store i8* %"$eError_call_3134", i8** %"$eError_55" + %"$$eError_55_3135" = load i8*, i8** %"$eError_55" + store i8* %"$$eError_55_3135", i8** %e3 + %"$e_3136" = load i8*, i8** %e3 + %"$_literal_cost_call_3138" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_3136") + %"$gasrem_3139" = load i64, i64* @_gasrem + %"$gascmp_3140" = icmp ugt i64 %"$_literal_cost_call_3138", %"$gasrem_3139" + br i1 %"$gascmp_3140", label %"$out_of_gas_3141", label %"$have_gas_3142" + +"$out_of_gas_3141": ; preds = %"$have_gas_3128" + call void @_out_of_gas() + br label %"$have_gas_3142" + +"$have_gas_3142": ; preds = %"$out_of_gas_3141", %"$have_gas_3128" + %"$consume_3143" = sub i64 %"$gasrem_3139", %"$_literal_cost_call_3138" + store i64 %"$consume_3143", i64* @_gasrem + %"$execptr_load_3144" = load i8*, i8** @_execptr + %"$e_3145" = load i8*, i8** %e3 + call void @_event(i8* %"$execptr_load_3144", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_3145") + br label %"$matchsucc_2970" + +"$empty_default_2974": ; preds = %"$have_gas_2968" + br label %"$matchsucc_2970" + +"$matchsucc_2970": ; preds = %"$have_gas_3142", %"$matchsucc_3059", %"$empty_default_2974" ret void } define void @approve(i8* %0) { entry: - %"$_amount_2027" = getelementptr i8, i8* %0, i32 0 - %"$_amount_2028" = bitcast i8* %"$_amount_2027" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_2028" - %"$_sender_2029" = getelementptr i8, i8* %0, i32 16 - %"$_sender_2030" = bitcast i8* %"$_sender_2029" to [20 x i8]* - %"$node_2031" = getelementptr i8, i8* %0, i32 36 - %"$node_2032" = bitcast i8* %"$node_2031" to [32 x i8]* - %"$address_2033" = getelementptr i8, i8* %0, i32 68 - %"$address_2034" = bitcast i8* %"$address_2033" to [20 x i8]* - call void @"$approve_1931"(%Uint128 %_amount, [20 x i8]* %"$_sender_2030", [32 x i8]* %"$node_2032", [20 x i8]* %"$address_2034") + %"$_amount_3147" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3148" = bitcast i8* %"$_amount_3147" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3148" + %"$_sender_3149" = getelementptr i8, i8* %0, i32 16 + %"$_sender_3150" = bitcast i8* %"$_sender_3149" to [20 x i8]* + %"$node_3151" = getelementptr i8, i8* %0, i32 36 + %"$node_3152" = bitcast i8* %"$node_3151" to [32 x i8]* + %"$address_3153" = getelementptr i8, i8* %0, i32 68 + %"$address_3154" = bitcast i8* %"$address_3153" to [20 x i8]* + call void @"$approve_2916"(%Uint128 %_amount, [20 x i8]* %"$_sender_3150", [32 x i8]* %"$node_3152", [20 x i8]* %"$address_3154") ret void } -define internal void @"$approveFor_2035"(%Uint128 %_amount, [20 x i8]* %"$_sender_2036", [20 x i8]* %"$address_2037", %TName_Bool* %isApproved) { +define internal void @"$approveFor_3155"(%Uint128 %_amount, [20 x i8]* %"$_sender_3156", [20 x i8]* %"$address_3157", %TName_Bool* %isApproved) { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_2036" - %address = load [20 x i8], [20 x i8]* %"$address_2037" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3156" + %address = load [20 x i8], [20 x i8]* %"$address_3157" %maybeOperators = alloca %"TName_Option_List_(ByStr20)"* - %"$indices_buf_2038_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2038_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2038_salloc_load", i64 20) - %"$indices_buf_2038_salloc" = bitcast i8* %"$indices_buf_2038_salloc_salloc" to [20 x i8]* - %"$indices_buf_2038" = bitcast [20 x i8]* %"$indices_buf_2038_salloc" to i8* - %"$indices_gep_2039" = getelementptr i8, i8* %"$indices_buf_2038", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_2039" to [20 x i8]* + %"$indices_buf_3158_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3158_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3158_salloc_load", i64 20) + %"$indices_buf_3158_salloc" = bitcast i8* %"$indices_buf_3158_salloc_salloc" to [20 x i8]* + %"$indices_buf_3158" = bitcast [20 x i8]* %"$indices_buf_3158_salloc" to i8* + %"$indices_gep_3159" = getelementptr i8, i8* %"$indices_buf_3158", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_3159" to [20 x i8]* store [20 x i8] %_sender, [20 x i8]* %indices_cast - %"$execptr_load_2040" = load i8*, i8** @_execptr - %"$maybeOperators_2042" = call i8* @_fetch_field(i8* %"$execptr_load_2040", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$operators_2041", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_323", i32 1, i8* %"$indices_buf_2038", i32 1) - %"$maybeOperators_2043" = bitcast i8* %"$maybeOperators_2042" to %"TName_Option_List_(ByStr20)"* - store %"TName_Option_List_(ByStr20)"* %"$maybeOperators_2043", %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$execptr_load_3160" = load i8*, i8** @_execptr + %"$maybeOperators_3162" = call i8* @_fetch_field(i8* %"$execptr_load_3160", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$operators_3161", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_320", i32 1, i8* %"$indices_buf_3158", i32 1) + %"$maybeOperators_3163" = bitcast i8* %"$maybeOperators_3162" to %"TName_Option_List_(ByStr20)"* + store %"TName_Option_List_(ByStr20)"* %"$maybeOperators_3163", %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$maybeOperators_3164" = load %"TName_Option_List_(ByStr20)"*, %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$$maybeOperators_3164_3165" = bitcast %"TName_Option_List_(ByStr20)"* %"$maybeOperators_3164" to i8* + %"$_literal_cost_call_3166" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_List_(ByStr20)_312", i8* %"$$maybeOperators_3164_3165") + %"$gasadd_3167" = add i64 %"$_literal_cost_call_3166", 0 + %"$gasadd_3168" = add i64 %"$gasadd_3167", 1 + %"$gasrem_3169" = load i64, i64* @_gasrem + %"$gascmp_3170" = icmp ugt i64 %"$gasadd_3168", %"$gasrem_3169" + br i1 %"$gascmp_3170", label %"$out_of_gas_3171", label %"$have_gas_3172" + +"$out_of_gas_3171": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3172" + +"$have_gas_3172": ; preds = %"$out_of_gas_3171", %entry + %"$consume_3173" = sub i64 %"$gasrem_3169", %"$gasadd_3168" + store i64 %"$consume_3173", i64* @_gasrem + %"$gasrem_3174" = load i64, i64* @_gasrem + %"$gascmp_3175" = icmp ugt i64 1, %"$gasrem_3174" + br i1 %"$gascmp_3175", label %"$out_of_gas_3176", label %"$have_gas_3177" + +"$out_of_gas_3176": ; preds = %"$have_gas_3172" + call void @_out_of_gas() + br label %"$have_gas_3177" + +"$have_gas_3177": ; preds = %"$out_of_gas_3176", %"$have_gas_3172" + %"$consume_3178" = sub i64 %"$gasrem_3174", 1 + store i64 %"$consume_3178", i64* @_gasrem %currentOperators = alloca %TName_List_ByStr20* - %"$maybeOperators_2045" = load %"TName_Option_List_(ByStr20)"*, %"TName_Option_List_(ByStr20)"** %maybeOperators - %"$maybeOperators_tag_2046" = getelementptr inbounds %"TName_Option_List_(ByStr20)", %"TName_Option_List_(ByStr20)"* %"$maybeOperators_2045", i32 0, i32 0 - %"$maybeOperators_tag_2047" = load i8, i8* %"$maybeOperators_tag_2046" - switch i8 %"$maybeOperators_tag_2047", label %"$empty_default_2048" [ - i8 1, label %"$None_2049" - i8 0, label %"$Some_2052" + %"$gasrem_3179" = load i64, i64* @_gasrem + %"$gascmp_3180" = icmp ugt i64 2, %"$gasrem_3179" + br i1 %"$gascmp_3180", label %"$out_of_gas_3181", label %"$have_gas_3182" + +"$out_of_gas_3181": ; preds = %"$have_gas_3177" + call void @_out_of_gas() + br label %"$have_gas_3182" + +"$have_gas_3182": ; preds = %"$out_of_gas_3181", %"$have_gas_3177" + %"$consume_3183" = sub i64 %"$gasrem_3179", 2 + store i64 %"$consume_3183", i64* @_gasrem + %"$maybeOperators_3185" = load %"TName_Option_List_(ByStr20)"*, %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$maybeOperators_tag_3186" = getelementptr inbounds %"TName_Option_List_(ByStr20)", %"TName_Option_List_(ByStr20)"* %"$maybeOperators_3185", i32 0, i32 0 + %"$maybeOperators_tag_3187" = load i8, i8* %"$maybeOperators_tag_3186" + switch i8 %"$maybeOperators_tag_3187", label %"$empty_default_3188" [ + i8 1, label %"$None_3189" + i8 0, label %"$Some_3197" ] -"$None_2049": ; preds = %entry - %"$maybeOperators_2050" = bitcast %"TName_Option_List_(ByStr20)"* %"$maybeOperators_2045" to %"CName_None_List_(ByStr20)"* - %"$nilByStr20_2051" = load %TName_List_ByStr20*, %TName_List_ByStr20** @nilByStr20 - store %TName_List_ByStr20* %"$nilByStr20_2051", %TName_List_ByStr20** %currentOperators - br label %"$matchsucc_2044" - -"$Some_2052": ; preds = %entry - %"$maybeOperators_2053" = bitcast %"TName_Option_List_(ByStr20)"* %"$maybeOperators_2045" to %"CName_Some_List_(ByStr20)"* - %"$ops_gep_2054" = getelementptr inbounds %"CName_Some_List_(ByStr20)", %"CName_Some_List_(ByStr20)"* %"$maybeOperators_2053", i32 0, i32 1 - %"$ops_load_2055" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$ops_gep_2054" +"$None_3189": ; preds = %"$have_gas_3182" + %"$maybeOperators_3190" = bitcast %"TName_Option_List_(ByStr20)"* %"$maybeOperators_3185" to %"CName_None_List_(ByStr20)"* + %"$gasrem_3191" = load i64, i64* @_gasrem + %"$gascmp_3192" = icmp ugt i64 1, %"$gasrem_3191" + br i1 %"$gascmp_3192", label %"$out_of_gas_3193", label %"$have_gas_3194" + +"$out_of_gas_3193": ; preds = %"$None_3189" + call void @_out_of_gas() + br label %"$have_gas_3194" + +"$have_gas_3194": ; preds = %"$out_of_gas_3193", %"$None_3189" + %"$consume_3195" = sub i64 %"$gasrem_3191", 1 + store i64 %"$consume_3195", i64* @_gasrem + %"$nilByStr20_3196" = load %TName_List_ByStr20*, %TName_List_ByStr20** @nilByStr20 + store %TName_List_ByStr20* %"$nilByStr20_3196", %TName_List_ByStr20** %currentOperators + br label %"$matchsucc_3184" + +"$Some_3197": ; preds = %"$have_gas_3182" + %"$maybeOperators_3198" = bitcast %"TName_Option_List_(ByStr20)"* %"$maybeOperators_3185" to %"CName_Some_List_(ByStr20)"* + %"$ops_gep_3199" = getelementptr inbounds %"CName_Some_List_(ByStr20)", %"CName_Some_List_(ByStr20)"* %"$maybeOperators_3198", i32 0, i32 1 + %"$ops_load_3200" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$ops_gep_3199" %ops = alloca %TName_List_ByStr20* - store %TName_List_ByStr20* %"$ops_load_2055", %TName_List_ByStr20** %ops - %"$ops_2056" = load %TName_List_ByStr20*, %TName_List_ByStr20** %ops - store %TName_List_ByStr20* %"$ops_2056", %TName_List_ByStr20** %currentOperators - br label %"$matchsucc_2044" + store %TName_List_ByStr20* %"$ops_load_3200", %TName_List_ByStr20** %ops + %"$gasrem_3201" = load i64, i64* @_gasrem + %"$gascmp_3202" = icmp ugt i64 1, %"$gasrem_3201" + br i1 %"$gascmp_3202", label %"$out_of_gas_3203", label %"$have_gas_3204" + +"$out_of_gas_3203": ; preds = %"$Some_3197" + call void @_out_of_gas() + br label %"$have_gas_3204" + +"$have_gas_3204": ; preds = %"$out_of_gas_3203", %"$Some_3197" + %"$consume_3205" = sub i64 %"$gasrem_3201", 1 + store i64 %"$consume_3205", i64* @_gasrem + %"$ops_3206" = load %TName_List_ByStr20*, %TName_List_ByStr20** %ops + store %TName_List_ByStr20* %"$ops_3206", %TName_List_ByStr20** %currentOperators + br label %"$matchsucc_3184" + +"$empty_default_3188": ; preds = %"$have_gas_3182" + br label %"$matchsucc_3184" + +"$matchsucc_3184": ; preds = %"$have_gas_3204", %"$have_gas_3194", %"$empty_default_3188" + %"$gasrem_3207" = load i64, i64* @_gasrem + %"$gascmp_3208" = icmp ugt i64 1, %"$gasrem_3207" + br i1 %"$gascmp_3208", label %"$out_of_gas_3209", label %"$have_gas_3210" + +"$out_of_gas_3209": ; preds = %"$matchsucc_3184" + call void @_out_of_gas() + br label %"$have_gas_3210" + +"$have_gas_3210": ; preds = %"$out_of_gas_3209", %"$matchsucc_3184" + %"$consume_3211" = sub i64 %"$gasrem_3207", 1 + store i64 %"$consume_3211", i64* @_gasrem + %needsToChange = alloca %TName_Bool* + %"$gasrem_3212" = load i64, i64* @_gasrem + %"$gascmp_3213" = icmp ugt i64 1, %"$gasrem_3212" + br i1 %"$gascmp_3213", label %"$out_of_gas_3214", label %"$have_gas_3215" -"$empty_default_2048": ; preds = %entry - br label %"$matchsucc_2044" +"$out_of_gas_3214": ; preds = %"$have_gas_3210" + call void @_out_of_gas() + br label %"$have_gas_3215" -"$matchsucc_2044": ; preds = %"$Some_2052", %"$None_2049", %"$empty_default_2048" - %needsToChange = alloca %TName_Bool* +"$have_gas_3215": ; preds = %"$out_of_gas_3214", %"$have_gas_3210" + %"$consume_3216" = sub i64 %"$gasrem_3212", 1 + store i64 %"$consume_3216", i64* @_gasrem %b = alloca %TName_Bool* - %"$listByStr20Excludes_65" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - %"$listByStr20Excludes_2057" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20Excludes - %"$listByStr20Excludes_fptr_2058" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Excludes_2057", 0 - %"$listByStr20Excludes_envptr_2059" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Excludes_2057", 1 - %"$currentOperators_2060" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentOperators - %"$listByStr20Excludes_call_2061" = call { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Excludes_fptr_2058"(i8* %"$listByStr20Excludes_envptr_2059", %TName_List_ByStr20* %"$currentOperators_2060") - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Excludes_call_2061", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Excludes_65" - %"$listByStr20Excludes_66" = alloca %TName_Bool* - %"$$listByStr20Excludes_65_2062" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Excludes_65" - %"$$listByStr20Excludes_65_fptr_2063" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Excludes_65_2062", 0 - %"$$listByStr20Excludes_65_envptr_2064" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Excludes_65_2062", 1 - %"$$listByStr20Excludes_65_address_2065" = alloca [20 x i8] - store [20 x i8] %address, [20 x i8]* %"$$listByStr20Excludes_65_address_2065" - %"$$listByStr20Excludes_65_call_2066" = call %TName_Bool* %"$$listByStr20Excludes_65_fptr_2063"(i8* %"$$listByStr20Excludes_65_envptr_2064", [20 x i8]* %"$$listByStr20Excludes_65_address_2065") - store %TName_Bool* %"$$listByStr20Excludes_65_call_2066", %TName_Bool** %"$listByStr20Excludes_66" - %"$$listByStr20Excludes_66_2067" = load %TName_Bool*, %TName_Bool** %"$listByStr20Excludes_66" - store %TName_Bool* %"$$listByStr20Excludes_66_2067", %TName_Bool** %b - %"$xandb_67" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$xandb_2068" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @xandb - %"$xandb_fptr_2069" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$xandb_2068", 0 - %"$xandb_envptr_2070" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$xandb_2068", 1 - %"$b_2071" = load %TName_Bool*, %TName_Bool** %b - %"$xandb_call_2072" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$xandb_fptr_2069"(i8* %"$xandb_envptr_2070", %TName_Bool* %"$b_2071") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$xandb_call_2072", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$xandb_67" - %"$xandb_68" = alloca %TName_Bool* - %"$$xandb_67_2073" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$xandb_67" - %"$$xandb_67_fptr_2074" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$xandb_67_2073", 0 - %"$$xandb_67_envptr_2075" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$xandb_67_2073", 1 - %"$$xandb_67_call_2076" = call %TName_Bool* %"$$xandb_67_fptr_2074"(i8* %"$$xandb_67_envptr_2075", %TName_Bool* %isApproved) - store %TName_Bool* %"$$xandb_67_call_2076", %TName_Bool** %"$xandb_68" - %"$$xandb_68_2077" = load %TName_Bool*, %TName_Bool** %"$xandb_68" - store %TName_Bool* %"$$xandb_68_2077", %TName_Bool** %needsToChange - %"$needsToChange_2079" = load %TName_Bool*, %TName_Bool** %needsToChange - %"$needsToChange_tag_2080" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$needsToChange_2079", i32 0, i32 0 - %"$needsToChange_tag_2081" = load i8, i8* %"$needsToChange_tag_2080" - switch i8 %"$needsToChange_tag_2081", label %"$default_2082" [ - i8 0, label %"$True_2083" + %"$gasrem_3217" = load i64, i64* @_gasrem + %"$gascmp_3218" = icmp ugt i64 1, %"$gasrem_3217" + br i1 %"$gascmp_3218", label %"$out_of_gas_3219", label %"$have_gas_3220" + +"$out_of_gas_3219": ; preds = %"$have_gas_3215" + call void @_out_of_gas() + br label %"$have_gas_3220" + +"$have_gas_3220": ; preds = %"$out_of_gas_3219", %"$have_gas_3215" + %"$consume_3221" = sub i64 %"$gasrem_3217", 1 + store i64 %"$consume_3221", i64* @_gasrem + %"$listByStr20Excludes_62" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } + %"$listByStr20Excludes_3222" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20Excludes + %"$listByStr20Excludes_fptr_3223" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Excludes_3222", 0 + %"$listByStr20Excludes_envptr_3224" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Excludes_3222", 1 + %"$currentOperators_3225" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentOperators + %"$listByStr20Excludes_call_3226" = call { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Excludes_fptr_3223"(i8* %"$listByStr20Excludes_envptr_3224", %TName_List_ByStr20* %"$currentOperators_3225") + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Excludes_call_3226", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Excludes_62" + %"$listByStr20Excludes_63" = alloca %TName_Bool* + %"$$listByStr20Excludes_62_3227" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Excludes_62" + %"$$listByStr20Excludes_62_fptr_3228" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Excludes_62_3227", 0 + %"$$listByStr20Excludes_62_envptr_3229" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Excludes_62_3227", 1 + %"$$listByStr20Excludes_62_address_3230" = alloca [20 x i8] + store [20 x i8] %address, [20 x i8]* %"$$listByStr20Excludes_62_address_3230" + %"$$listByStr20Excludes_62_call_3231" = call %TName_Bool* %"$$listByStr20Excludes_62_fptr_3228"(i8* %"$$listByStr20Excludes_62_envptr_3229", [20 x i8]* %"$$listByStr20Excludes_62_address_3230") + store %TName_Bool* %"$$listByStr20Excludes_62_call_3231", %TName_Bool** %"$listByStr20Excludes_63" + %"$$listByStr20Excludes_63_3232" = load %TName_Bool*, %TName_Bool** %"$listByStr20Excludes_63" + store %TName_Bool* %"$$listByStr20Excludes_63_3232", %TName_Bool** %b + %"$gasrem_3233" = load i64, i64* @_gasrem + %"$gascmp_3234" = icmp ugt i64 1, %"$gasrem_3233" + br i1 %"$gascmp_3234", label %"$out_of_gas_3235", label %"$have_gas_3236" + +"$out_of_gas_3235": ; preds = %"$have_gas_3220" + call void @_out_of_gas() + br label %"$have_gas_3236" + +"$have_gas_3236": ; preds = %"$out_of_gas_3235", %"$have_gas_3220" + %"$consume_3237" = sub i64 %"$gasrem_3233", 1 + store i64 %"$consume_3237", i64* @_gasrem + %"$xandb_64" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$xandb_3238" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @xandb + %"$xandb_fptr_3239" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$xandb_3238", 0 + %"$xandb_envptr_3240" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$xandb_3238", 1 + %"$b_3241" = load %TName_Bool*, %TName_Bool** %b + %"$xandb_call_3242" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$xandb_fptr_3239"(i8* %"$xandb_envptr_3240", %TName_Bool* %"$b_3241") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$xandb_call_3242", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$xandb_64" + %"$xandb_65" = alloca %TName_Bool* + %"$$xandb_64_3243" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$xandb_64" + %"$$xandb_64_fptr_3244" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$xandb_64_3243", 0 + %"$$xandb_64_envptr_3245" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$xandb_64_3243", 1 + %"$$xandb_64_call_3246" = call %TName_Bool* %"$$xandb_64_fptr_3244"(i8* %"$$xandb_64_envptr_3245", %TName_Bool* %isApproved) + store %TName_Bool* %"$$xandb_64_call_3246", %TName_Bool** %"$xandb_65" + %"$$xandb_65_3247" = load %TName_Bool*, %TName_Bool** %"$xandb_65" + store %TName_Bool* %"$$xandb_65_3247", %TName_Bool** %needsToChange + %"$gasrem_3248" = load i64, i64* @_gasrem + %"$gascmp_3249" = icmp ugt i64 2, %"$gasrem_3248" + br i1 %"$gascmp_3249", label %"$out_of_gas_3250", label %"$have_gas_3251" + +"$out_of_gas_3250": ; preds = %"$have_gas_3236" + call void @_out_of_gas() + br label %"$have_gas_3251" + +"$have_gas_3251": ; preds = %"$out_of_gas_3250", %"$have_gas_3236" + %"$consume_3252" = sub i64 %"$gasrem_3248", 2 + store i64 %"$consume_3252", i64* @_gasrem + %"$needsToChange_3254" = load %TName_Bool*, %TName_Bool** %needsToChange + %"$needsToChange_tag_3255" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$needsToChange_3254", i32 0, i32 0 + %"$needsToChange_tag_3256" = load i8, i8* %"$needsToChange_tag_3255" + switch i8 %"$needsToChange_tag_3256", label %"$default_3257" [ + i8 0, label %"$True_3258" ] -"$True_2083": ; preds = %"$matchsucc_2044" - %"$needsToChange_2084" = bitcast %TName_Bool* %"$needsToChange_2079" to %CName_True* +"$True_3258": ; preds = %"$have_gas_3251" + %"$needsToChange_3259" = bitcast %TName_Bool* %"$needsToChange_3254" to %CName_True* + %"$gasrem_3260" = load i64, i64* @_gasrem + %"$gascmp_3261" = icmp ugt i64 1, %"$gasrem_3260" + br i1 %"$gascmp_3261", label %"$out_of_gas_3262", label %"$have_gas_3263" + +"$out_of_gas_3262": ; preds = %"$True_3258" + call void @_out_of_gas() + br label %"$have_gas_3263" + +"$have_gas_3263": ; preds = %"$out_of_gas_3262", %"$True_3258" + %"$consume_3264" = sub i64 %"$gasrem_3260", 1 + store i64 %"$consume_3264", i64* @_gasrem %newOperators = alloca %TName_List_ByStr20* - %"$isApproved_tag_2086" = getelementptr inbounds %TName_Bool, %TName_Bool* %isApproved, i32 0, i32 0 - %"$isApproved_tag_2087" = load i8, i8* %"$isApproved_tag_2086" - switch i8 %"$isApproved_tag_2087", label %"$empty_default_2088" [ - i8 0, label %"$True_2089" - i8 1, label %"$False_2097" + %"$gasrem_3265" = load i64, i64* @_gasrem + %"$gascmp_3266" = icmp ugt i64 2, %"$gasrem_3265" + br i1 %"$gascmp_3266", label %"$out_of_gas_3267", label %"$have_gas_3268" + +"$out_of_gas_3267": ; preds = %"$have_gas_3263" + call void @_out_of_gas() + br label %"$have_gas_3268" + +"$have_gas_3268": ; preds = %"$out_of_gas_3267", %"$have_gas_3263" + %"$consume_3269" = sub i64 %"$gasrem_3265", 2 + store i64 %"$consume_3269", i64* @_gasrem + %"$isApproved_tag_3271" = getelementptr inbounds %TName_Bool, %TName_Bool* %isApproved, i32 0, i32 0 + %"$isApproved_tag_3272" = load i8, i8* %"$isApproved_tag_3271" + switch i8 %"$isApproved_tag_3272", label %"$empty_default_3273" [ + i8 0, label %"$True_3274" + i8 1, label %"$False_3287" ] -"$True_2089": ; preds = %"$True_2083" - %"$isApproved_2090" = bitcast %TName_Bool* %isApproved to %CName_True* - %"$currentOperators_2091" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentOperators - %"$adtval_2092_load" = load i8*, i8** @_execptr - %"$adtval_2092_salloc" = call i8* @_salloc(i8* %"$adtval_2092_load", i64 29) - %"$adtval_2092" = bitcast i8* %"$adtval_2092_salloc" to %CName_Cons_ByStr20* - %"$adtgep_2093" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_2092", i32 0, i32 0 - store i8 0, i8* %"$adtgep_2093" - %"$adtgep_2094" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_2092", i32 0, i32 1 - store [20 x i8] %address, [20 x i8]* %"$adtgep_2094" - %"$adtgep_2095" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_2092", i32 0, i32 2 - store %TName_List_ByStr20* %"$currentOperators_2091", %TName_List_ByStr20** %"$adtgep_2095" - %"$adtptr_2096" = bitcast %CName_Cons_ByStr20* %"$adtval_2092" to %TName_List_ByStr20* - store %TName_List_ByStr20* %"$adtptr_2096", %TName_List_ByStr20** %newOperators - br label %"$matchsucc_2085" - -"$False_2097": ; preds = %"$True_2083" - %"$isApproved_2098" = bitcast %TName_Bool* %isApproved to %CName_False* - %"$listByStr20FilterOut_63" = alloca { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } - %"$listByStr20FilterOut_2099" = load { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20FilterOut - %"$listByStr20FilterOut_fptr_2100" = extractvalue { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20FilterOut_2099", 0 - %"$listByStr20FilterOut_envptr_2101" = extractvalue { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20FilterOut_2099", 1 - %"$currentOperators_2102" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentOperators - %"$listByStr20FilterOut_call_2103" = call { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$listByStr20FilterOut_fptr_2100"(i8* %"$listByStr20FilterOut_envptr_2101", %TName_List_ByStr20* %"$currentOperators_2102") - store { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$listByStr20FilterOut_call_2103", { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20FilterOut_63" - %"$listByStr20FilterOut_64" = alloca %TName_List_ByStr20* - %"$$listByStr20FilterOut_63_2104" = load { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* }, { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20FilterOut_63" - %"$$listByStr20FilterOut_63_fptr_2105" = extractvalue { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20FilterOut_63_2104", 0 - %"$$listByStr20FilterOut_63_envptr_2106" = extractvalue { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20FilterOut_63_2104", 1 - %"$$listByStr20FilterOut_63_address_2107" = alloca [20 x i8] - store [20 x i8] %address, [20 x i8]* %"$$listByStr20FilterOut_63_address_2107" - %"$$listByStr20FilterOut_63_call_2108" = call %TName_List_ByStr20* %"$$listByStr20FilterOut_63_fptr_2105"(i8* %"$$listByStr20FilterOut_63_envptr_2106", [20 x i8]* %"$$listByStr20FilterOut_63_address_2107") - store %TName_List_ByStr20* %"$$listByStr20FilterOut_63_call_2108", %TName_List_ByStr20** %"$listByStr20FilterOut_64" - %"$$listByStr20FilterOut_64_2109" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$listByStr20FilterOut_64" - store %TName_List_ByStr20* %"$$listByStr20FilterOut_64_2109", %TName_List_ByStr20** %newOperators - br label %"$matchsucc_2085" - -"$empty_default_2088": ; preds = %"$True_2083" - br label %"$matchsucc_2085" - -"$matchsucc_2085": ; preds = %"$False_2097", %"$True_2089", %"$empty_default_2088" - %"$indices_buf_2110_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2110_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2110_salloc_load", i64 20) - %"$indices_buf_2110_salloc" = bitcast i8* %"$indices_buf_2110_salloc_salloc" to [20 x i8]* - %"$indices_buf_2110" = bitcast [20 x i8]* %"$indices_buf_2110_salloc" to i8* - %"$indices_gep_2111" = getelementptr i8, i8* %"$indices_buf_2110", i32 0 - %indices_cast1 = bitcast i8* %"$indices_gep_2111" to [20 x i8]* +"$True_3274": ; preds = %"$have_gas_3268" + %"$isApproved_3275" = bitcast %TName_Bool* %isApproved to %CName_True* + %"$gasrem_3276" = load i64, i64* @_gasrem + %"$gascmp_3277" = icmp ugt i64 1, %"$gasrem_3276" + br i1 %"$gascmp_3277", label %"$out_of_gas_3278", label %"$have_gas_3279" + +"$out_of_gas_3278": ; preds = %"$True_3274" + call void @_out_of_gas() + br label %"$have_gas_3279" + +"$have_gas_3279": ; preds = %"$out_of_gas_3278", %"$True_3274" + %"$consume_3280" = sub i64 %"$gasrem_3276", 1 + store i64 %"$consume_3280", i64* @_gasrem + %"$currentOperators_3281" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentOperators + %"$adtval_3282_load" = load i8*, i8** @_execptr + %"$adtval_3282_salloc" = call i8* @_salloc(i8* %"$adtval_3282_load", i64 29) + %"$adtval_3282" = bitcast i8* %"$adtval_3282_salloc" to %CName_Cons_ByStr20* + %"$adtgep_3283" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_3282", i32 0, i32 0 + store i8 0, i8* %"$adtgep_3283" + %"$adtgep_3284" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_3282", i32 0, i32 1 + store [20 x i8] %address, [20 x i8]* %"$adtgep_3284" + %"$adtgep_3285" = getelementptr inbounds %CName_Cons_ByStr20, %CName_Cons_ByStr20* %"$adtval_3282", i32 0, i32 2 + store %TName_List_ByStr20* %"$currentOperators_3281", %TName_List_ByStr20** %"$adtgep_3285" + %"$adtptr_3286" = bitcast %CName_Cons_ByStr20* %"$adtval_3282" to %TName_List_ByStr20* + store %TName_List_ByStr20* %"$adtptr_3286", %TName_List_ByStr20** %newOperators + br label %"$matchsucc_3270" + +"$False_3287": ; preds = %"$have_gas_3268" + %"$isApproved_3288" = bitcast %TName_Bool* %isApproved to %CName_False* + %"$gasrem_3289" = load i64, i64* @_gasrem + %"$gascmp_3290" = icmp ugt i64 1, %"$gasrem_3289" + br i1 %"$gascmp_3290", label %"$out_of_gas_3291", label %"$have_gas_3292" + +"$out_of_gas_3291": ; preds = %"$False_3287" + call void @_out_of_gas() + br label %"$have_gas_3292" + +"$have_gas_3292": ; preds = %"$out_of_gas_3291", %"$False_3287" + %"$consume_3293" = sub i64 %"$gasrem_3289", 1 + store i64 %"$consume_3293", i64* @_gasrem + %"$listByStr20FilterOut_60" = alloca { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } + %"$listByStr20FilterOut_3294" = load { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20FilterOut + %"$listByStr20FilterOut_fptr_3295" = extractvalue { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20FilterOut_3294", 0 + %"$listByStr20FilterOut_envptr_3296" = extractvalue { { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20FilterOut_3294", 1 + %"$currentOperators_3297" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentOperators + %"$listByStr20FilterOut_call_3298" = call { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$listByStr20FilterOut_fptr_3295"(i8* %"$listByStr20FilterOut_envptr_3296", %TName_List_ByStr20* %"$currentOperators_3297") + store { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$listByStr20FilterOut_call_3298", { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20FilterOut_60" + %"$listByStr20FilterOut_61" = alloca %TName_List_ByStr20* + %"$$listByStr20FilterOut_60_3299" = load { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* }, { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20FilterOut_60" + %"$$listByStr20FilterOut_60_fptr_3300" = extractvalue { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20FilterOut_60_3299", 0 + %"$$listByStr20FilterOut_60_envptr_3301" = extractvalue { %TName_List_ByStr20* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20FilterOut_60_3299", 1 + %"$$listByStr20FilterOut_60_address_3302" = alloca [20 x i8] + store [20 x i8] %address, [20 x i8]* %"$$listByStr20FilterOut_60_address_3302" + %"$$listByStr20FilterOut_60_call_3303" = call %TName_List_ByStr20* %"$$listByStr20FilterOut_60_fptr_3300"(i8* %"$$listByStr20FilterOut_60_envptr_3301", [20 x i8]* %"$$listByStr20FilterOut_60_address_3302") + store %TName_List_ByStr20* %"$$listByStr20FilterOut_60_call_3303", %TName_List_ByStr20** %"$listByStr20FilterOut_61" + %"$$listByStr20FilterOut_61_3304" = load %TName_List_ByStr20*, %TName_List_ByStr20** %"$listByStr20FilterOut_61" + store %TName_List_ByStr20* %"$$listByStr20FilterOut_61_3304", %TName_List_ByStr20** %newOperators + br label %"$matchsucc_3270" + +"$empty_default_3273": ; preds = %"$have_gas_3268" + br label %"$matchsucc_3270" + +"$matchsucc_3270": ; preds = %"$have_gas_3292", %"$have_gas_3279", %"$empty_default_3273" + %"$newOperators_3305" = load %TName_List_ByStr20*, %TName_List_ByStr20** %newOperators + %"$$newOperators_3305_3306" = bitcast %TName_List_ByStr20* %"$newOperators_3305" to i8* + %"$_literal_cost_call_3307" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_317", i8* %"$$newOperators_3305_3306") + %"$gasadd_3308" = add i64 %"$_literal_cost_call_3307", 1 + %"$gasrem_3309" = load i64, i64* @_gasrem + %"$gascmp_3310" = icmp ugt i64 %"$gasadd_3308", %"$gasrem_3309" + br i1 %"$gascmp_3310", label %"$out_of_gas_3311", label %"$have_gas_3312" + +"$out_of_gas_3311": ; preds = %"$matchsucc_3270" + call void @_out_of_gas() + br label %"$have_gas_3312" + +"$have_gas_3312": ; preds = %"$out_of_gas_3311", %"$matchsucc_3270" + %"$consume_3313" = sub i64 %"$gasrem_3309", %"$gasadd_3308" + store i64 %"$consume_3313", i64* @_gasrem + %"$indices_buf_3314_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3314_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3314_salloc_load", i64 20) + %"$indices_buf_3314_salloc" = bitcast i8* %"$indices_buf_3314_salloc_salloc" to [20 x i8]* + %"$indices_buf_3314" = bitcast [20 x i8]* %"$indices_buf_3314_salloc" to i8* + %"$indices_gep_3315" = getelementptr i8, i8* %"$indices_buf_3314", i32 0 + %indices_cast1 = bitcast i8* %"$indices_gep_3315" to [20 x i8]* store [20 x i8] %_sender, [20 x i8]* %indices_cast1 - %"$execptr_load_2112" = load i8*, i8** @_execptr - %"$newOperators_2114" = load %TName_List_ByStr20*, %TName_List_ByStr20** %newOperators - %"$update_value_2115" = bitcast %TName_List_ByStr20* %"$newOperators_2114" to i8* - call void @_update_field(i8* %"$execptr_load_2112", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$operators_2113", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_323", i32 1, i8* %"$indices_buf_2110", i8* %"$update_value_2115") + %"$execptr_load_3316" = load i8*, i8** @_execptr + %"$newOperators_3318" = load %TName_List_ByStr20*, %TName_List_ByStr20** %newOperators + %"$update_value_3319" = bitcast %TName_List_ByStr20* %"$newOperators_3318" to i8* + call void @_update_field(i8* %"$execptr_load_3316", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$operators_3317", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_320", i32 1, i8* %"$indices_buf_3314", i8* %"$update_value_3319") + %"$gasrem_3320" = load i64, i64* @_gasrem + %"$gascmp_3321" = icmp ugt i64 1, %"$gasrem_3320" + br i1 %"$gascmp_3321", label %"$out_of_gas_3322", label %"$have_gas_3323" + +"$out_of_gas_3322": ; preds = %"$have_gas_3312" + call void @_out_of_gas() + br label %"$have_gas_3323" + +"$have_gas_3323": ; preds = %"$out_of_gas_3322", %"$have_gas_3312" + %"$consume_3324" = sub i64 %"$gasrem_3320", 1 + store i64 %"$consume_3324", i64* @_gasrem %e = alloca i8* - %"$eApprovedFor_60" = alloca { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$eApprovedFor_2116" = load { { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @eApprovedFor - %"$eApprovedFor_fptr_2117" = extractvalue { { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eApprovedFor_2116", 0 - %"$eApprovedFor_envptr_2118" = extractvalue { { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eApprovedFor_2116", 1 - %"$eApprovedFor__sender_2119" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$eApprovedFor__sender_2119" - %"$eApprovedFor_call_2120" = call { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eApprovedFor_fptr_2117"(i8* %"$eApprovedFor_envptr_2118", [20 x i8]* %"$eApprovedFor__sender_2119") - store { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eApprovedFor_call_2120", { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eApprovedFor_60" - %"$eApprovedFor_61" = alloca { i8* (i8*, %TName_Bool*)*, i8* } - %"$$eApprovedFor_60_2121" = load { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eApprovedFor_60" - %"$$eApprovedFor_60_fptr_2122" = extractvalue { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eApprovedFor_60_2121", 0 - %"$$eApprovedFor_60_envptr_2123" = extractvalue { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eApprovedFor_60_2121", 1 - %"$$eApprovedFor_60_address_2124" = alloca [20 x i8] - store [20 x i8] %address, [20 x i8]* %"$$eApprovedFor_60_address_2124" - %"$$eApprovedFor_60_call_2125" = call { i8* (i8*, %TName_Bool*)*, i8* } %"$$eApprovedFor_60_fptr_2122"(i8* %"$$eApprovedFor_60_envptr_2123", [20 x i8]* %"$$eApprovedFor_60_address_2124") - store { i8* (i8*, %TName_Bool*)*, i8* } %"$$eApprovedFor_60_call_2125", { i8* (i8*, %TName_Bool*)*, i8* }* %"$eApprovedFor_61" - %"$eApprovedFor_62" = alloca i8* - %"$$eApprovedFor_61_2126" = load { i8* (i8*, %TName_Bool*)*, i8* }, { i8* (i8*, %TName_Bool*)*, i8* }* %"$eApprovedFor_61" - %"$$eApprovedFor_61_fptr_2127" = extractvalue { i8* (i8*, %TName_Bool*)*, i8* } %"$$eApprovedFor_61_2126", 0 - %"$$eApprovedFor_61_envptr_2128" = extractvalue { i8* (i8*, %TName_Bool*)*, i8* } %"$$eApprovedFor_61_2126", 1 - %"$$eApprovedFor_61_call_2129" = call i8* %"$$eApprovedFor_61_fptr_2127"(i8* %"$$eApprovedFor_61_envptr_2128", %TName_Bool* %isApproved) - store i8* %"$$eApprovedFor_61_call_2129", i8** %"$eApprovedFor_62" - %"$$eApprovedFor_62_2130" = load i8*, i8** %"$eApprovedFor_62" - store i8* %"$$eApprovedFor_62_2130", i8** %e - %"$execptr_load_2131" = load i8*, i8** @_execptr - %"$e_2132" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_2131", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_2132") - br label %"$matchsucc_2078" - -"$default_2082": ; preds = %"$matchsucc_2044" - br label %"$joinp_6" + %"$gasrem_3325" = load i64, i64* @_gasrem + %"$gascmp_3326" = icmp ugt i64 1, %"$gasrem_3325" + br i1 %"$gascmp_3326", label %"$out_of_gas_3327", label %"$have_gas_3328" + +"$out_of_gas_3327": ; preds = %"$have_gas_3323" + call void @_out_of_gas() + br label %"$have_gas_3328" + +"$have_gas_3328": ; preds = %"$out_of_gas_3327", %"$have_gas_3323" + %"$consume_3329" = sub i64 %"$gasrem_3325", 1 + store i64 %"$consume_3329", i64* @_gasrem + %"$eApprovedFor_57" = alloca { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } + %"$eApprovedFor_3330" = load { { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @eApprovedFor + %"$eApprovedFor_fptr_3331" = extractvalue { { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eApprovedFor_3330", 0 + %"$eApprovedFor_envptr_3332" = extractvalue { { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eApprovedFor_3330", 1 + %"$eApprovedFor__sender_3333" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$eApprovedFor__sender_3333" + %"$eApprovedFor_call_3334" = call { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eApprovedFor_fptr_3331"(i8* %"$eApprovedFor_envptr_3332", [20 x i8]* %"$eApprovedFor__sender_3333") + store { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eApprovedFor_call_3334", { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eApprovedFor_57" + %"$eApprovedFor_58" = alloca { i8* (i8*, %TName_Bool*)*, i8* } + %"$$eApprovedFor_57_3335" = load { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eApprovedFor_57" + %"$$eApprovedFor_57_fptr_3336" = extractvalue { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eApprovedFor_57_3335", 0 + %"$$eApprovedFor_57_envptr_3337" = extractvalue { { i8* (i8*, %TName_Bool*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eApprovedFor_57_3335", 1 + %"$$eApprovedFor_57_address_3338" = alloca [20 x i8] + store [20 x i8] %address, [20 x i8]* %"$$eApprovedFor_57_address_3338" + %"$$eApprovedFor_57_call_3339" = call { i8* (i8*, %TName_Bool*)*, i8* } %"$$eApprovedFor_57_fptr_3336"(i8* %"$$eApprovedFor_57_envptr_3337", [20 x i8]* %"$$eApprovedFor_57_address_3338") + store { i8* (i8*, %TName_Bool*)*, i8* } %"$$eApprovedFor_57_call_3339", { i8* (i8*, %TName_Bool*)*, i8* }* %"$eApprovedFor_58" + %"$eApprovedFor_59" = alloca i8* + %"$$eApprovedFor_58_3340" = load { i8* (i8*, %TName_Bool*)*, i8* }, { i8* (i8*, %TName_Bool*)*, i8* }* %"$eApprovedFor_58" + %"$$eApprovedFor_58_fptr_3341" = extractvalue { i8* (i8*, %TName_Bool*)*, i8* } %"$$eApprovedFor_58_3340", 0 + %"$$eApprovedFor_58_envptr_3342" = extractvalue { i8* (i8*, %TName_Bool*)*, i8* } %"$$eApprovedFor_58_3340", 1 + %"$$eApprovedFor_58_call_3343" = call i8* %"$$eApprovedFor_58_fptr_3341"(i8* %"$$eApprovedFor_58_envptr_3342", %TName_Bool* %isApproved) + store i8* %"$$eApprovedFor_58_call_3343", i8** %"$eApprovedFor_59" + %"$$eApprovedFor_59_3344" = load i8*, i8** %"$eApprovedFor_59" + store i8* %"$$eApprovedFor_59_3344", i8** %e + %"$e_3345" = load i8*, i8** %e + %"$_literal_cost_call_3347" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_3345") + %"$gasrem_3348" = load i64, i64* @_gasrem + %"$gascmp_3349" = icmp ugt i64 %"$_literal_cost_call_3347", %"$gasrem_3348" + br i1 %"$gascmp_3349", label %"$out_of_gas_3350", label %"$have_gas_3351" + +"$out_of_gas_3350": ; preds = %"$have_gas_3328" + call void @_out_of_gas() + br label %"$have_gas_3351" + +"$have_gas_3351": ; preds = %"$out_of_gas_3350", %"$have_gas_3328" + %"$consume_3352" = sub i64 %"$gasrem_3348", %"$_literal_cost_call_3347" + store i64 %"$consume_3352", i64* @_gasrem + %"$execptr_load_3353" = load i8*, i8** @_execptr + %"$e_3354" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_3353", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_3354") + br label %"$matchsucc_3253" + +"$default_3257": ; preds = %"$have_gas_3251" + br label %"$joinp_3" -"$joinp_6": ; preds = %"$default_2082" - br label %"$matchsucc_2078" +"$joinp_3": ; preds = %"$default_3257" + br label %"$matchsucc_3253" -"$matchsucc_2078": ; preds = %"$matchsucc_2085", %"$joinp_6" +"$matchsucc_3253": ; preds = %"$have_gas_3351", %"$joinp_3" ret void } define void @approveFor(i8* %0) { entry: - %"$_amount_2134" = getelementptr i8, i8* %0, i32 0 - %"$_amount_2135" = bitcast i8* %"$_amount_2134" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_2135" - %"$_sender_2136" = getelementptr i8, i8* %0, i32 16 - %"$_sender_2137" = bitcast i8* %"$_sender_2136" to [20 x i8]* - %"$address_2138" = getelementptr i8, i8* %0, i32 36 - %"$address_2139" = bitcast i8* %"$address_2138" to [20 x i8]* - %"$isApproved_2140" = getelementptr i8, i8* %0, i32 56 - %"$isApproved_2141" = bitcast i8* %"$isApproved_2140" to %TName_Bool** - %isApproved = load %TName_Bool*, %TName_Bool** %"$isApproved_2141" - call void @"$approveFor_2035"(%Uint128 %_amount, [20 x i8]* %"$_sender_2137", [20 x i8]* %"$address_2139", %TName_Bool* %isApproved) + %"$_amount_3356" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3357" = bitcast i8* %"$_amount_3356" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3357" + %"$_sender_3358" = getelementptr i8, i8* %0, i32 16 + %"$_sender_3359" = bitcast i8* %"$_sender_3358" to [20 x i8]* + %"$address_3360" = getelementptr i8, i8* %0, i32 36 + %"$address_3361" = bitcast i8* %"$address_3360" to [20 x i8]* + %"$isApproved_3362" = getelementptr i8, i8* %0, i32 56 + %"$isApproved_3363" = bitcast i8* %"$isApproved_3362" to %TName_Bool** + %isApproved = load %TName_Bool*, %TName_Bool** %"$isApproved_3363" + call void @"$approveFor_3155"(%Uint128 %_amount, [20 x i8]* %"$_sender_3359", [20 x i8]* %"$address_3361", %TName_Bool* %isApproved) ret void } -define internal void @"$configureNode_2142"(%Uint128 %_amount, [20 x i8]* %"$_sender_2143", [32 x i8]* %"$node_2144", [20 x i8]* %"$owner_2145", [20 x i8]* %"$resolver_2146") { +define internal void @"$configureNode_3364"(%Uint128 %_amount, [20 x i8]* %"$_sender_3365", [32 x i8]* %"$node_3366", [20 x i8]* %"$owner_3367", [20 x i8]* %"$resolver_3368") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_2143" - %node = load [32 x i8], [32 x i8]* %"$node_2144" - %owner = load [20 x i8], [20 x i8]* %"$owner_2145" - %resolver = load [20 x i8], [20 x i8]* %"$resolver_2146" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3365" + %node = load [32 x i8], [32 x i8]* %"$node_3366" + %owner = load [20 x i8], [20 x i8]* %"$owner_3367" + %resolver = load [20 x i8], [20 x i8]* %"$resolver_3368" %maybeRecord = alloca %TName_Option_Record* - %"$indices_buf_2147_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2147_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2147_salloc_load", i64 32) - %"$indices_buf_2147_salloc" = bitcast i8* %"$indices_buf_2147_salloc_salloc" to [32 x i8]* - %"$indices_buf_2147" = bitcast [32 x i8]* %"$indices_buf_2147_salloc" to i8* - %"$indices_gep_2148" = getelementptr i8, i8* %"$indices_buf_2147", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_2148" to [32 x i8]* + %"$indices_buf_3369_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3369_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3369_salloc_load", i64 32) + %"$indices_buf_3369_salloc" = bitcast i8* %"$indices_buf_3369_salloc_salloc" to [32 x i8]* + %"$indices_buf_3369" = bitcast [32 x i8]* %"$indices_buf_3369_salloc" to i8* + %"$indices_gep_3370" = getelementptr i8, i8* %"$indices_buf_3369", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_3370" to [32 x i8]* store [32 x i8] %node, [32 x i8]* %indices_cast - %"$execptr_load_2149" = load i8*, i8** @_execptr - %"$maybeRecord_2151" = call i8* @_fetch_field(i8* %"$execptr_load_2149", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_2150", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_325", i32 1, i8* %"$indices_buf_2147", i32 1) - %"$maybeRecord_2152" = bitcast i8* %"$maybeRecord_2151" to %TName_Option_Record* - store %TName_Option_Record* %"$maybeRecord_2152", %TName_Option_Record** %maybeRecord + %"$execptr_load_3371" = load i8*, i8** @_execptr + %"$maybeRecord_3373" = call i8* @_fetch_field(i8* %"$execptr_load_3371", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_3372", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_322", i32 1, i8* %"$indices_buf_3369", i32 1) + %"$maybeRecord_3374" = bitcast i8* %"$maybeRecord_3373" to %TName_Option_Record* + store %TName_Option_Record* %"$maybeRecord_3374", %TName_Option_Record** %maybeRecord + %"$maybeRecord_3375" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord + %"$$maybeRecord_3375_3376" = bitcast %TName_Option_Record* %"$maybeRecord_3375" to i8* + %"$_literal_cost_call_3377" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Record_313", i8* %"$$maybeRecord_3375_3376") + %"$gasadd_3378" = add i64 %"$_literal_cost_call_3377", 0 + %"$gasadd_3379" = add i64 %"$gasadd_3378", 1 + %"$gasrem_3380" = load i64, i64* @_gasrem + %"$gascmp_3381" = icmp ugt i64 %"$gasadd_3379", %"$gasrem_3380" + br i1 %"$gascmp_3381", label %"$out_of_gas_3382", label %"$have_gas_3383" + +"$out_of_gas_3382": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3383" + +"$have_gas_3383": ; preds = %"$out_of_gas_3382", %entry + %"$consume_3384" = sub i64 %"$gasrem_3380", %"$gasadd_3379" + store i64 %"$consume_3384", i64* @_gasrem %maybeApproved = alloca %TName_Option_ByStr20* - %"$indices_buf_2153_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2153_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2153_salloc_load", i64 32) - %"$indices_buf_2153_salloc" = bitcast i8* %"$indices_buf_2153_salloc_salloc" to [32 x i8]* - %"$indices_buf_2153" = bitcast [32 x i8]* %"$indices_buf_2153_salloc" to i8* - %"$indices_gep_2154" = getelementptr i8, i8* %"$indices_buf_2153", i32 0 - %indices_cast1 = bitcast i8* %"$indices_gep_2154" to [32 x i8]* + %"$indices_buf_3385_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3385_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3385_salloc_load", i64 32) + %"$indices_buf_3385_salloc" = bitcast i8* %"$indices_buf_3385_salloc_salloc" to [32 x i8]* + %"$indices_buf_3385" = bitcast [32 x i8]* %"$indices_buf_3385_salloc" to i8* + %"$indices_gep_3386" = getelementptr i8, i8* %"$indices_buf_3385", i32 0 + %indices_cast1 = bitcast i8* %"$indices_gep_3386" to [32 x i8]* store [32 x i8] %node, [32 x i8]* %indices_cast1 - %"$execptr_load_2155" = load i8*, i8** @_execptr - %"$maybeApproved_2157" = call i8* @_fetch_field(i8* %"$execptr_load_2155", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_2156", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_324", i32 1, i8* %"$indices_buf_2153", i32 1) - %"$maybeApproved_2158" = bitcast i8* %"$maybeApproved_2157" to %TName_Option_ByStr20* - store %TName_Option_ByStr20* %"$maybeApproved_2158", %TName_Option_ByStr20** %maybeApproved + %"$execptr_load_3387" = load i8*, i8** @_execptr + %"$maybeApproved_3389" = call i8* @_fetch_field(i8* %"$execptr_load_3387", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_3388", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_321", i32 1, i8* %"$indices_buf_3385", i32 1) + %"$maybeApproved_3390" = bitcast i8* %"$maybeApproved_3389" to %TName_Option_ByStr20* + store %TName_Option_ByStr20* %"$maybeApproved_3390", %TName_Option_ByStr20** %maybeApproved + %"$maybeApproved_3391" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved + %"$$maybeApproved_3391_3392" = bitcast %TName_Option_ByStr20* %"$maybeApproved_3391" to i8* + %"$_literal_cost_call_3393" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_ByStr20_314", i8* %"$$maybeApproved_3391_3392") + %"$gasadd_3394" = add i64 %"$_literal_cost_call_3393", 0 + %"$gasadd_3395" = add i64 %"$gasadd_3394", 1 + %"$gasrem_3396" = load i64, i64* @_gasrem + %"$gascmp_3397" = icmp ugt i64 %"$gasadd_3395", %"$gasrem_3396" + br i1 %"$gascmp_3397", label %"$out_of_gas_3398", label %"$have_gas_3399" + +"$out_of_gas_3398": ; preds = %"$have_gas_3383" + call void @_out_of_gas() + br label %"$have_gas_3399" + +"$have_gas_3399": ; preds = %"$out_of_gas_3398", %"$have_gas_3383" + %"$consume_3400" = sub i64 %"$gasrem_3396", %"$gasadd_3395" + store i64 %"$consume_3400", i64* @_gasrem + %"$gasrem_3401" = load i64, i64* @_gasrem + %"$gascmp_3402" = icmp ugt i64 1, %"$gasrem_3401" + br i1 %"$gascmp_3402", label %"$out_of_gas_3403", label %"$have_gas_3404" + +"$out_of_gas_3403": ; preds = %"$have_gas_3399" + call void @_out_of_gas() + br label %"$have_gas_3404" + +"$have_gas_3404": ; preds = %"$out_of_gas_3403", %"$have_gas_3399" + %"$consume_3405" = sub i64 %"$gasrem_3401", 1 + store i64 %"$consume_3405", i64* @_gasrem %recordOwner = alloca [20 x i8] - %"$recordMemberOwner_79" = alloca [20 x i8] - %"$recordMemberOwner_2159" = load { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }, { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }* @recordMemberOwner - %"$recordMemberOwner_fptr_2160" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_2159", 0 - %"$recordMemberOwner_envptr_2161" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_2159", 1 - %"$maybeRecord_2162" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord - %"$recordMemberOwner_retalloca_2163" = alloca [20 x i8] - call void %"$recordMemberOwner_fptr_2160"(i8* %"$recordMemberOwner_envptr_2161", [20 x i8]* %"$recordMemberOwner_retalloca_2163", %TName_Option_Record* %"$maybeRecord_2162") - %"$recordMemberOwner_ret_2164" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_retalloca_2163" - store [20 x i8] %"$recordMemberOwner_ret_2164", [20 x i8]* %"$recordMemberOwner_79" - %"$$recordMemberOwner_79_2165" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_79" - store [20 x i8] %"$$recordMemberOwner_79_2165", [20 x i8]* %recordOwner + %"$gasrem_3406" = load i64, i64* @_gasrem + %"$gascmp_3407" = icmp ugt i64 1, %"$gasrem_3406" + br i1 %"$gascmp_3407", label %"$out_of_gas_3408", label %"$have_gas_3409" + +"$out_of_gas_3408": ; preds = %"$have_gas_3404" + call void @_out_of_gas() + br label %"$have_gas_3409" + +"$have_gas_3409": ; preds = %"$out_of_gas_3408", %"$have_gas_3404" + %"$consume_3410" = sub i64 %"$gasrem_3406", 1 + store i64 %"$consume_3410", i64* @_gasrem + %"$recordMemberOwner_76" = alloca [20 x i8] + %"$recordMemberOwner_3411" = load { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }, { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }* @recordMemberOwner + %"$recordMemberOwner_fptr_3412" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_3411", 0 + %"$recordMemberOwner_envptr_3413" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_3411", 1 + %"$maybeRecord_3414" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord + %"$recordMemberOwner_retalloca_3415" = alloca [20 x i8] + call void %"$recordMemberOwner_fptr_3412"(i8* %"$recordMemberOwner_envptr_3413", [20 x i8]* %"$recordMemberOwner_retalloca_3415", %TName_Option_Record* %"$maybeRecord_3414") + %"$recordMemberOwner_ret_3416" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_retalloca_3415" + store [20 x i8] %"$recordMemberOwner_ret_3416", [20 x i8]* %"$recordMemberOwner_76" + %"$$recordMemberOwner_76_3417" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_76" + store [20 x i8] %"$$recordMemberOwner_76_3417", [20 x i8]* %recordOwner %maybeOperators = alloca %"TName_Option_List_(ByStr20)"* - %"$indices_buf_2166_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2166_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2166_salloc_load", i64 20) - %"$indices_buf_2166_salloc" = bitcast i8* %"$indices_buf_2166_salloc_salloc" to [20 x i8]* - %"$indices_buf_2166" = bitcast [20 x i8]* %"$indices_buf_2166_salloc" to i8* - %"$recordOwner_2167" = load [20 x i8], [20 x i8]* %recordOwner - %"$indices_gep_2168" = getelementptr i8, i8* %"$indices_buf_2166", i32 0 - %indices_cast2 = bitcast i8* %"$indices_gep_2168" to [20 x i8]* - store [20 x i8] %"$recordOwner_2167", [20 x i8]* %indices_cast2 - %"$execptr_load_2169" = load i8*, i8** @_execptr - %"$maybeOperators_2171" = call i8* @_fetch_field(i8* %"$execptr_load_2169", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$operators_2170", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_323", i32 1, i8* %"$indices_buf_2166", i32 1) - %"$maybeOperators_2172" = bitcast i8* %"$maybeOperators_2171" to %"TName_Option_List_(ByStr20)"* - store %"TName_Option_List_(ByStr20)"* %"$maybeOperators_2172", %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$indices_buf_3418_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3418_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3418_salloc_load", i64 20) + %"$indices_buf_3418_salloc" = bitcast i8* %"$indices_buf_3418_salloc_salloc" to [20 x i8]* + %"$indices_buf_3418" = bitcast [20 x i8]* %"$indices_buf_3418_salloc" to i8* + %"$recordOwner_3419" = load [20 x i8], [20 x i8]* %recordOwner + %"$indices_gep_3420" = getelementptr i8, i8* %"$indices_buf_3418", i32 0 + %indices_cast2 = bitcast i8* %"$indices_gep_3420" to [20 x i8]* + store [20 x i8] %"$recordOwner_3419", [20 x i8]* %indices_cast2 + %"$execptr_load_3421" = load i8*, i8** @_execptr + %"$maybeOperators_3423" = call i8* @_fetch_field(i8* %"$execptr_load_3421", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$operators_3422", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_320", i32 1, i8* %"$indices_buf_3418", i32 1) + %"$maybeOperators_3424" = bitcast i8* %"$maybeOperators_3423" to %"TName_Option_List_(ByStr20)"* + store %"TName_Option_List_(ByStr20)"* %"$maybeOperators_3424", %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$maybeOperators_3425" = load %"TName_Option_List_(ByStr20)"*, %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$$maybeOperators_3425_3426" = bitcast %"TName_Option_List_(ByStr20)"* %"$maybeOperators_3425" to i8* + %"$_literal_cost_call_3427" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_List_(ByStr20)_312", i8* %"$$maybeOperators_3425_3426") + %"$gasadd_3428" = add i64 %"$_literal_cost_call_3427", 0 + %"$gasadd_3429" = add i64 %"$gasadd_3428", 1 + %"$gasrem_3430" = load i64, i64* @_gasrem + %"$gascmp_3431" = icmp ugt i64 %"$gasadd_3429", %"$gasrem_3430" + br i1 %"$gascmp_3431", label %"$out_of_gas_3432", label %"$have_gas_3433" + +"$out_of_gas_3432": ; preds = %"$have_gas_3409" + call void @_out_of_gas() + br label %"$have_gas_3433" + +"$have_gas_3433": ; preds = %"$out_of_gas_3432", %"$have_gas_3409" + %"$consume_3434" = sub i64 %"$gasrem_3430", %"$gasadd_3429" + store i64 %"$consume_3434", i64* @_gasrem + %"$gasrem_3435" = load i64, i64* @_gasrem + %"$gascmp_3436" = icmp ugt i64 1, %"$gasrem_3435" + br i1 %"$gascmp_3436", label %"$out_of_gas_3437", label %"$have_gas_3438" + +"$out_of_gas_3437": ; preds = %"$have_gas_3433" + call void @_out_of_gas() + br label %"$have_gas_3438" + +"$have_gas_3438": ; preds = %"$out_of_gas_3437", %"$have_gas_3433" + %"$consume_3439" = sub i64 %"$gasrem_3435", 1 + store i64 %"$consume_3439", i64* @_gasrem %isSenderOAO = alloca %TName_Bool* - %"$getIsOAO_75" = alloca { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$getIsOAO_2173" = load { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @getIsOAO - %"$getIsOAO_fptr_2174" = extractvalue { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_2173", 0 - %"$getIsOAO_envptr_2175" = extractvalue { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_2173", 1 - %"$getIsOAO__sender_2176" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$getIsOAO__sender_2176" - %"$getIsOAO_call_2177" = call { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_fptr_2174"(i8* %"$getIsOAO_envptr_2175", [20 x i8]* %"$getIsOAO__sender_2176") - store { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_call_2177", { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$getIsOAO_75" - %"$getIsOAO_76" = alloca { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } - %"$$getIsOAO_75_2178" = load { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$getIsOAO_75" - %"$$getIsOAO_75_fptr_2179" = extractvalue { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$getIsOAO_75_2178", 0 - %"$$getIsOAO_75_envptr_2180" = extractvalue { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$getIsOAO_75_2178", 1 - %"$$getIsOAO_75_recordOwner_2181" = alloca [20 x i8] - %"$recordOwner_2182" = load [20 x i8], [20 x i8]* %recordOwner - store [20 x i8] %"$recordOwner_2182", [20 x i8]* %"$$getIsOAO_75_recordOwner_2181" - %"$$getIsOAO_75_call_2183" = call { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_75_fptr_2179"(i8* %"$$getIsOAO_75_envptr_2180", [20 x i8]* %"$$getIsOAO_75_recordOwner_2181") - store { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_75_call_2183", { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$getIsOAO_76" - %"$getIsOAO_77" = alloca { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } - %"$$getIsOAO_76_2184" = load { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$getIsOAO_76" - %"$$getIsOAO_76_fptr_2185" = extractvalue { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_76_2184", 0 - %"$$getIsOAO_76_envptr_2186" = extractvalue { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_76_2184", 1 - %"$maybeApproved_2187" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved - %"$$getIsOAO_76_call_2188" = call { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_76_fptr_2185"(i8* %"$$getIsOAO_76_envptr_2186", %TName_Option_ByStr20* %"$maybeApproved_2187") - store { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_76_call_2188", { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$getIsOAO_77" - %"$getIsOAO_78" = alloca %TName_Bool* - %"$$getIsOAO_77_2189" = load { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }, { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$getIsOAO_77" - %"$$getIsOAO_77_fptr_2190" = extractvalue { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_77_2189", 0 - %"$$getIsOAO_77_envptr_2191" = extractvalue { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_77_2189", 1 - %"$maybeOperators_2192" = load %"TName_Option_List_(ByStr20)"*, %"TName_Option_List_(ByStr20)"** %maybeOperators - %"$$getIsOAO_77_call_2193" = call %TName_Bool* %"$$getIsOAO_77_fptr_2190"(i8* %"$$getIsOAO_77_envptr_2191", %"TName_Option_List_(ByStr20)"* %"$maybeOperators_2192") - store %TName_Bool* %"$$getIsOAO_77_call_2193", %TName_Bool** %"$getIsOAO_78" - %"$$getIsOAO_78_2194" = load %TName_Bool*, %TName_Bool** %"$getIsOAO_78" - store %TName_Bool* %"$$getIsOAO_78_2194", %TName_Bool** %isSenderOAO - %"$isSenderOAO_2196" = load %TName_Bool*, %TName_Bool** %isSenderOAO - %"$isSenderOAO_tag_2197" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isSenderOAO_2196", i32 0, i32 0 - %"$isSenderOAO_tag_2198" = load i8, i8* %"$isSenderOAO_tag_2197" - switch i8 %"$isSenderOAO_tag_2198", label %"$empty_default_2199" [ - i8 0, label %"$True_2200" - i8 1, label %"$False_2277" + %"$gasrem_3440" = load i64, i64* @_gasrem + %"$gascmp_3441" = icmp ugt i64 1, %"$gasrem_3440" + br i1 %"$gascmp_3441", label %"$out_of_gas_3442", label %"$have_gas_3443" + +"$out_of_gas_3442": ; preds = %"$have_gas_3438" + call void @_out_of_gas() + br label %"$have_gas_3443" + +"$have_gas_3443": ; preds = %"$out_of_gas_3442", %"$have_gas_3438" + %"$consume_3444" = sub i64 %"$gasrem_3440", 1 + store i64 %"$consume_3444", i64* @_gasrem + %"$getIsOAO_72" = alloca { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } + %"$getIsOAO_3445" = load { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @getIsOAO + %"$getIsOAO_fptr_3446" = extractvalue { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_3445", 0 + %"$getIsOAO_envptr_3447" = extractvalue { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_3445", 1 + %"$getIsOAO__sender_3448" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$getIsOAO__sender_3448" + %"$getIsOAO_call_3449" = call { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_fptr_3446"(i8* %"$getIsOAO_envptr_3447", [20 x i8]* %"$getIsOAO__sender_3448") + store { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_call_3449", { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$getIsOAO_72" + %"$getIsOAO_73" = alloca { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } + %"$$getIsOAO_72_3450" = load { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$getIsOAO_72" + %"$$getIsOAO_72_fptr_3451" = extractvalue { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$getIsOAO_72_3450", 0 + %"$$getIsOAO_72_envptr_3452" = extractvalue { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$getIsOAO_72_3450", 1 + %"$$getIsOAO_72_recordOwner_3453" = alloca [20 x i8] + %"$recordOwner_3454" = load [20 x i8], [20 x i8]* %recordOwner + store [20 x i8] %"$recordOwner_3454", [20 x i8]* %"$$getIsOAO_72_recordOwner_3453" + %"$$getIsOAO_72_call_3455" = call { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_72_fptr_3451"(i8* %"$$getIsOAO_72_envptr_3452", [20 x i8]* %"$$getIsOAO_72_recordOwner_3453") + store { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_72_call_3455", { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$getIsOAO_73" + %"$getIsOAO_74" = alloca { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } + %"$$getIsOAO_73_3456" = load { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$getIsOAO_73" + %"$$getIsOAO_73_fptr_3457" = extractvalue { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_73_3456", 0 + %"$$getIsOAO_73_envptr_3458" = extractvalue { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_73_3456", 1 + %"$maybeApproved_3459" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved + %"$$getIsOAO_73_call_3460" = call { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_73_fptr_3457"(i8* %"$$getIsOAO_73_envptr_3458", %TName_Option_ByStr20* %"$maybeApproved_3459") + store { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_73_call_3460", { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$getIsOAO_74" + %"$getIsOAO_75" = alloca %TName_Bool* + %"$$getIsOAO_74_3461" = load { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }, { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$getIsOAO_74" + %"$$getIsOAO_74_fptr_3462" = extractvalue { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_74_3461", 0 + %"$$getIsOAO_74_envptr_3463" = extractvalue { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_74_3461", 1 + %"$maybeOperators_3464" = load %"TName_Option_List_(ByStr20)"*, %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$$getIsOAO_74_call_3465" = call %TName_Bool* %"$$getIsOAO_74_fptr_3462"(i8* %"$$getIsOAO_74_envptr_3463", %"TName_Option_List_(ByStr20)"* %"$maybeOperators_3464") + store %TName_Bool* %"$$getIsOAO_74_call_3465", %TName_Bool** %"$getIsOAO_75" + %"$$getIsOAO_75_3466" = load %TName_Bool*, %TName_Bool** %"$getIsOAO_75" + store %TName_Bool* %"$$getIsOAO_75_3466", %TName_Bool** %isSenderOAO + %"$gasrem_3467" = load i64, i64* @_gasrem + %"$gascmp_3468" = icmp ugt i64 2, %"$gasrem_3467" + br i1 %"$gascmp_3468", label %"$out_of_gas_3469", label %"$have_gas_3470" + +"$out_of_gas_3469": ; preds = %"$have_gas_3443" + call void @_out_of_gas() + br label %"$have_gas_3470" + +"$have_gas_3470": ; preds = %"$out_of_gas_3469", %"$have_gas_3443" + %"$consume_3471" = sub i64 %"$gasrem_3467", 2 + store i64 %"$consume_3471", i64* @_gasrem + %"$isSenderOAO_3473" = load %TName_Bool*, %TName_Bool** %isSenderOAO + %"$isSenderOAO_tag_3474" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isSenderOAO_3473", i32 0, i32 0 + %"$isSenderOAO_tag_3475" = load i8, i8* %"$isSenderOAO_tag_3474" + switch i8 %"$isSenderOAO_tag_3475", label %"$empty_default_3476" [ + i8 0, label %"$True_3477" + i8 1, label %"$False_3619" ] -"$True_2200": ; preds = %entry - %"$isSenderOAO_2201" = bitcast %TName_Bool* %"$isSenderOAO_2196" to %CName_True* +"$True_3477": ; preds = %"$have_gas_3470" + %"$isSenderOAO_3478" = bitcast %TName_Bool* %"$isSenderOAO_3473" to %CName_True* + %"$gasrem_3479" = load i64, i64* @_gasrem + %"$gascmp_3480" = icmp ugt i64 1, %"$gasrem_3479" + br i1 %"$gascmp_3480", label %"$out_of_gas_3481", label %"$have_gas_3482" + +"$out_of_gas_3481": ; preds = %"$True_3477" + call void @_out_of_gas() + br label %"$have_gas_3482" + +"$have_gas_3482": ; preds = %"$out_of_gas_3481", %"$True_3477" + %"$consume_3483" = sub i64 %"$gasrem_3479", 1 + store i64 %"$consume_3483", i64* @_gasrem %newRecord = alloca %TName_Record* - %"$adtval_2202_load" = load i8*, i8** @_execptr - %"$adtval_2202_salloc" = call i8* @_salloc(i8* %"$adtval_2202_load", i64 41) - %"$adtval_2202" = bitcast i8* %"$adtval_2202_salloc" to %CName_Record* - %"$adtgep_2203" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_2202", i32 0, i32 0 - store i8 0, i8* %"$adtgep_2203" - %"$adtgep_2204" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_2202", i32 0, i32 1 - store [20 x i8] %owner, [20 x i8]* %"$adtgep_2204" - %"$adtgep_2205" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_2202", i32 0, i32 2 - store [20 x i8] %resolver, [20 x i8]* %"$adtgep_2205" - %"$adtptr_2206" = bitcast %CName_Record* %"$adtval_2202" to %TName_Record* - store %TName_Record* %"$adtptr_2206", %TName_Record** %newRecord - %"$indices_buf_2207_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2207_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2207_salloc_load", i64 32) - %"$indices_buf_2207_salloc" = bitcast i8* %"$indices_buf_2207_salloc_salloc" to [32 x i8]* - %"$indices_buf_2207" = bitcast [32 x i8]* %"$indices_buf_2207_salloc" to i8* - %"$indices_gep_2208" = getelementptr i8, i8* %"$indices_buf_2207", i32 0 - %indices_cast3 = bitcast i8* %"$indices_gep_2208" to [32 x i8]* + %"$gasrem_3484" = load i64, i64* @_gasrem + %"$gascmp_3485" = icmp ugt i64 1, %"$gasrem_3484" + br i1 %"$gascmp_3485", label %"$out_of_gas_3486", label %"$have_gas_3487" + +"$out_of_gas_3486": ; preds = %"$have_gas_3482" + call void @_out_of_gas() + br label %"$have_gas_3487" + +"$have_gas_3487": ; preds = %"$out_of_gas_3486", %"$have_gas_3482" + %"$consume_3488" = sub i64 %"$gasrem_3484", 1 + store i64 %"$consume_3488", i64* @_gasrem + %"$adtval_3489_load" = load i8*, i8** @_execptr + %"$adtval_3489_salloc" = call i8* @_salloc(i8* %"$adtval_3489_load", i64 41) + %"$adtval_3489" = bitcast i8* %"$adtval_3489_salloc" to %CName_Record* + %"$adtgep_3490" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_3489", i32 0, i32 0 + store i8 0, i8* %"$adtgep_3490" + %"$adtgep_3491" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_3489", i32 0, i32 1 + store [20 x i8] %owner, [20 x i8]* %"$adtgep_3491" + %"$adtgep_3492" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_3489", i32 0, i32 2 + store [20 x i8] %resolver, [20 x i8]* %"$adtgep_3492" + %"$adtptr_3493" = bitcast %CName_Record* %"$adtval_3489" to %TName_Record* + store %TName_Record* %"$adtptr_3493", %TName_Record** %newRecord + %"$newRecord_3494" = load %TName_Record*, %TName_Record** %newRecord + %"$$newRecord_3494_3495" = bitcast %TName_Record* %"$newRecord_3494" to i8* + %"$_literal_cost_call_3496" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Record_315", i8* %"$$newRecord_3494_3495") + %"$gasadd_3497" = add i64 %"$_literal_cost_call_3496", 1 + %"$gasrem_3498" = load i64, i64* @_gasrem + %"$gascmp_3499" = icmp ugt i64 %"$gasadd_3497", %"$gasrem_3498" + br i1 %"$gascmp_3499", label %"$out_of_gas_3500", label %"$have_gas_3501" + +"$out_of_gas_3500": ; preds = %"$have_gas_3487" + call void @_out_of_gas() + br label %"$have_gas_3501" + +"$have_gas_3501": ; preds = %"$out_of_gas_3500", %"$have_gas_3487" + %"$consume_3502" = sub i64 %"$gasrem_3498", %"$gasadd_3497" + store i64 %"$consume_3502", i64* @_gasrem + %"$indices_buf_3503_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3503_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3503_salloc_load", i64 32) + %"$indices_buf_3503_salloc" = bitcast i8* %"$indices_buf_3503_salloc_salloc" to [32 x i8]* + %"$indices_buf_3503" = bitcast [32 x i8]* %"$indices_buf_3503_salloc" to i8* + %"$indices_gep_3504" = getelementptr i8, i8* %"$indices_buf_3503", i32 0 + %indices_cast3 = bitcast i8* %"$indices_gep_3504" to [32 x i8]* store [32 x i8] %node, [32 x i8]* %indices_cast3 - %"$execptr_load_2209" = load i8*, i8** @_execptr - %"$newRecord_2211" = load %TName_Record*, %TName_Record** %newRecord - %"$update_value_2212" = bitcast %TName_Record* %"$newRecord_2211" to i8* - call void @_update_field(i8* %"$execptr_load_2209", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_2210", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_325", i32 1, i8* %"$indices_buf_2207", i8* %"$update_value_2212") + %"$execptr_load_3505" = load i8*, i8** @_execptr + %"$newRecord_3507" = load %TName_Record*, %TName_Record** %newRecord + %"$update_value_3508" = bitcast %TName_Record* %"$newRecord_3507" to i8* + call void @_update_field(i8* %"$execptr_load_3505", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_3506", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_322", i32 1, i8* %"$indices_buf_3503", i8* %"$update_value_3508") + %"$gasrem_3509" = load i64, i64* @_gasrem + %"$gascmp_3510" = icmp ugt i64 1, %"$gasrem_3509" + br i1 %"$gascmp_3510", label %"$out_of_gas_3511", label %"$have_gas_3512" + +"$out_of_gas_3511": ; preds = %"$have_gas_3501" + call void @_out_of_gas() + br label %"$have_gas_3512" + +"$have_gas_3512": ; preds = %"$out_of_gas_3511", %"$have_gas_3501" + %"$consume_3513" = sub i64 %"$gasrem_3509", 1 + store i64 %"$consume_3513", i64* @_gasrem %e = alloca i8* - %"$eConfigured_70" = alloca { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$eConfigured_2213" = load { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eConfigured - %"$eConfigured_fptr_2214" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_2213", 0 - %"$eConfigured_envptr_2215" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_2213", 1 - %"$eConfigured_node_2216" = alloca [32 x i8] - store [32 x i8] %node, [32 x i8]* %"$eConfigured_node_2216" - %"$eConfigured_call_2217" = call { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_fptr_2214"(i8* %"$eConfigured_envptr_2215", [32 x i8]* %"$eConfigured_node_2216") - store { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_call_2217", { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_70" - %"$eConfigured_71" = alloca { i8* (i8*, [20 x i8]*)*, i8* } - %"$$eConfigured_70_2218" = load { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_70" - %"$$eConfigured_70_fptr_2219" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_70_2218", 0 - %"$$eConfigured_70_envptr_2220" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_70_2218", 1 - %"$$eConfigured_70_owner_2221" = alloca [20 x i8] - store [20 x i8] %owner, [20 x i8]* %"$$eConfigured_70_owner_2221" - %"$$eConfigured_70_call_2222" = call { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_70_fptr_2219"(i8* %"$$eConfigured_70_envptr_2220", [20 x i8]* %"$$eConfigured_70_owner_2221") - store { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_70_call_2222", { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_71" - %"$eConfigured_72" = alloca i8* - %"$$eConfigured_71_2223" = load { i8* (i8*, [20 x i8]*)*, i8* }, { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_71" - %"$$eConfigured_71_fptr_2224" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_71_2223", 0 - %"$$eConfigured_71_envptr_2225" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_71_2223", 1 - %"$$eConfigured_71_resolver_2226" = alloca [20 x i8] - store [20 x i8] %resolver, [20 x i8]* %"$$eConfigured_71_resolver_2226" - %"$$eConfigured_71_call_2227" = call i8* %"$$eConfigured_71_fptr_2224"(i8* %"$$eConfigured_71_envptr_2225", [20 x i8]* %"$$eConfigured_71_resolver_2226") - store i8* %"$$eConfigured_71_call_2227", i8** %"$eConfigured_72" - %"$$eConfigured_72_2228" = load i8*, i8** %"$eConfigured_72" - store i8* %"$$eConfigured_72_2228", i8** %e - %"$execptr_load_2229" = load i8*, i8** @_execptr - %"$e_2230" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_2229", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_2230") + %"$gasrem_3514" = load i64, i64* @_gasrem + %"$gascmp_3515" = icmp ugt i64 1, %"$gasrem_3514" + br i1 %"$gascmp_3515", label %"$out_of_gas_3516", label %"$have_gas_3517" + +"$out_of_gas_3516": ; preds = %"$have_gas_3512" + call void @_out_of_gas() + br label %"$have_gas_3517" + +"$have_gas_3517": ; preds = %"$out_of_gas_3516", %"$have_gas_3512" + %"$consume_3518" = sub i64 %"$gasrem_3514", 1 + store i64 %"$consume_3518", i64* @_gasrem + %"$eConfigured_67" = alloca { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } + %"$eConfigured_3519" = load { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eConfigured + %"$eConfigured_fptr_3520" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_3519", 0 + %"$eConfigured_envptr_3521" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_3519", 1 + %"$eConfigured_node_3522" = alloca [32 x i8] + store [32 x i8] %node, [32 x i8]* %"$eConfigured_node_3522" + %"$eConfigured_call_3523" = call { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_fptr_3520"(i8* %"$eConfigured_envptr_3521", [32 x i8]* %"$eConfigured_node_3522") + store { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_call_3523", { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_67" + %"$eConfigured_68" = alloca { i8* (i8*, [20 x i8]*)*, i8* } + %"$$eConfigured_67_3524" = load { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_67" + %"$$eConfigured_67_fptr_3525" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_67_3524", 0 + %"$$eConfigured_67_envptr_3526" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_67_3524", 1 + %"$$eConfigured_67_owner_3527" = alloca [20 x i8] + store [20 x i8] %owner, [20 x i8]* %"$$eConfigured_67_owner_3527" + %"$$eConfigured_67_call_3528" = call { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_67_fptr_3525"(i8* %"$$eConfigured_67_envptr_3526", [20 x i8]* %"$$eConfigured_67_owner_3527") + store { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_67_call_3528", { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_68" + %"$eConfigured_69" = alloca i8* + %"$$eConfigured_68_3529" = load { i8* (i8*, [20 x i8]*)*, i8* }, { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_68" + %"$$eConfigured_68_fptr_3530" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_68_3529", 0 + %"$$eConfigured_68_envptr_3531" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_68_3529", 1 + %"$$eConfigured_68_resolver_3532" = alloca [20 x i8] + store [20 x i8] %resolver, [20 x i8]* %"$$eConfigured_68_resolver_3532" + %"$$eConfigured_68_call_3533" = call i8* %"$$eConfigured_68_fptr_3530"(i8* %"$$eConfigured_68_envptr_3531", [20 x i8]* %"$$eConfigured_68_resolver_3532") + store i8* %"$$eConfigured_68_call_3533", i8** %"$eConfigured_69" + %"$$eConfigured_69_3534" = load i8*, i8** %"$eConfigured_69" + store i8* %"$$eConfigured_69_3534", i8** %e + %"$e_3535" = load i8*, i8** %e + %"$_literal_cost_call_3537" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_3535") + %"$gasrem_3538" = load i64, i64* @_gasrem + %"$gascmp_3539" = icmp ugt i64 %"$_literal_cost_call_3537", %"$gasrem_3538" + br i1 %"$gascmp_3539", label %"$out_of_gas_3540", label %"$have_gas_3541" + +"$out_of_gas_3540": ; preds = %"$have_gas_3517" + call void @_out_of_gas() + br label %"$have_gas_3541" + +"$have_gas_3541": ; preds = %"$out_of_gas_3540", %"$have_gas_3517" + %"$consume_3542" = sub i64 %"$gasrem_3538", %"$_literal_cost_call_3537" + store i64 %"$consume_3542", i64* @_gasrem + %"$execptr_load_3543" = load i8*, i8** @_execptr + %"$e_3544" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_3543", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_3544") + %"$gasrem_3545" = load i64, i64* @_gasrem + %"$gascmp_3546" = icmp ugt i64 1, %"$gasrem_3545" + br i1 %"$gascmp_3546", label %"$out_of_gas_3547", label %"$have_gas_3548" + +"$out_of_gas_3547": ; preds = %"$have_gas_3541" + call void @_out_of_gas() + br label %"$have_gas_3548" + +"$have_gas_3548": ; preds = %"$out_of_gas_3547", %"$have_gas_3541" + %"$consume_3549" = sub i64 %"$gasrem_3545", 1 + store i64 %"$consume_3549", i64* @_gasrem %msgs = alloca %TName_List_Message* + %"$gasrem_3550" = load i64, i64* @_gasrem + %"$gascmp_3551" = icmp ugt i64 1, %"$gasrem_3550" + br i1 %"$gascmp_3551", label %"$out_of_gas_3552", label %"$have_gas_3553" + +"$out_of_gas_3552": ; preds = %"$have_gas_3548" + call void @_out_of_gas() + br label %"$have_gas_3553" + +"$have_gas_3553": ; preds = %"$out_of_gas_3552", %"$have_gas_3548" + %"$consume_3554" = sub i64 %"$gasrem_3550", 1 + store i64 %"$consume_3554", i64* @_gasrem %m = alloca i8* - %"$msgobj_2231_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_2231_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2231_salloc_load", i64 225) - %"$msgobj_2231_salloc" = bitcast i8* %"$msgobj_2231_salloc_salloc" to [225 x i8]* - %"$msgobj_2231" = bitcast [225 x i8]* %"$msgobj_2231_salloc" to i8* - store i8 5, i8* %"$msgobj_2231" - %"$msgobj_fname_2233" = getelementptr i8, i8* %"$msgobj_2231", i32 1 - %"$msgobj_fname_2234" = bitcast i8* %"$msgobj_fname_2233" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2232", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2234" - %"$msgobj_td_2235" = getelementptr i8, i8* %"$msgobj_2231", i32 17 - %"$msgobj_td_2236" = bitcast i8* %"$msgobj_td_2235" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_2236" - %"$msgobj_v_2238" = getelementptr i8, i8* %"$msgobj_2231", i32 25 - %"$msgobj_v_2239" = bitcast i8* %"$msgobj_v_2238" to %String* - store %String { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$stringlit_2237", i32 0, i32 0), i32 18 }, %String* %"$msgobj_v_2239" - %"$msgobj_fname_2241" = getelementptr i8, i8* %"$msgobj_2231", i32 41 - %"$msgobj_fname_2242" = bitcast i8* %"$msgobj_fname_2241" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2240", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2242" - %"$msgobj_td_2243" = getelementptr i8, i8* %"$msgobj_2231", i32 57 - %"$msgobj_td_2244" = bitcast i8* %"$msgobj_td_2243" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_309", %_TyDescrTy_Typ** %"$msgobj_td_2244" - %"$msgobj_v_2245" = getelementptr i8, i8* %"$msgobj_2231", i32 65 - %"$msgobj_v_2246" = bitcast i8* %"$msgobj_v_2245" to [32 x i8]* - store [32 x i8] %node, [32 x i8]* %"$msgobj_v_2246" - %"$msgobj_fname_2248" = getelementptr i8, i8* %"$msgobj_2231", i32 97 - %"$msgobj_fname_2249" = bitcast i8* %"$msgobj_fname_2248" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2247", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_2249" - %"$msgobj_td_2250" = getelementptr i8, i8* %"$msgobj_2231", i32 113 - %"$msgobj_td_2251" = bitcast i8* %"$msgobj_td_2250" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_2251" - %"$msgobj_v_2252" = getelementptr i8, i8* %"$msgobj_2231", i32 121 - %"$msgobj_v_2253" = bitcast i8* %"$msgobj_v_2252" to [20 x i8]* - store [20 x i8] %owner, [20 x i8]* %"$msgobj_v_2253" - %"$msgobj_fname_2255" = getelementptr i8, i8* %"$msgobj_2231", i32 141 - %"$msgobj_fname_2256" = bitcast i8* %"$msgobj_fname_2255" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2254", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2256" - %"$msgobj_td_2257" = getelementptr i8, i8* %"$msgobj_2231", i32 157 - %"$msgobj_td_2258" = bitcast i8* %"$msgobj_td_2257" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Uint128_289", %_TyDescrTy_Typ** %"$msgobj_td_2258" - %"$msgobj_v_2259" = getelementptr i8, i8* %"$msgobj_2231", i32 165 - %"$msgobj_v_2260" = bitcast i8* %"$msgobj_v_2259" to %Uint128* - store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_2260" - %"$msgobj_fname_2262" = getelementptr i8, i8* %"$msgobj_2231", i32 181 - %"$msgobj_fname_2263" = bitcast i8* %"$msgobj_fname_2262" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2261", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2263" - %"$msgobj_td_2264" = getelementptr i8, i8* %"$msgobj_2231", i32 197 - %"$msgobj_td_2265" = bitcast i8* %"$msgobj_td_2264" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_2265" - %"$msgobj_v_2266" = getelementptr i8, i8* %"$msgobj_2231", i32 205 - %"$msgobj_v_2267" = bitcast i8* %"$msgobj_v_2266" to [20 x i8]* - store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_2267" - store i8* %"$msgobj_2231", i8** %m - %"$oneMsg_69" = alloca %TName_List_Message* - %"$oneMsg_2269" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg - %"$oneMsg_fptr_2270" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_2269", 0 - %"$oneMsg_envptr_2271" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_2269", 1 - %"$m_2272" = load i8*, i8** %m - %"$oneMsg_call_2273" = call %TName_List_Message* %"$oneMsg_fptr_2270"(i8* %"$oneMsg_envptr_2271", i8* %"$m_2272") - store %TName_List_Message* %"$oneMsg_call_2273", %TName_List_Message** %"$oneMsg_69" - %"$$oneMsg_69_2274" = load %TName_List_Message*, %TName_List_Message** %"$oneMsg_69" - store %TName_List_Message* %"$$oneMsg_69_2274", %TName_List_Message** %msgs - %"$execptr_load_2275" = load i8*, i8** @_execptr - %"$msgs_2276" = load %TName_List_Message*, %TName_List_Message** %msgs - call void @_send(i8* %"$execptr_load_2275", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_319", %TName_List_Message* %"$msgs_2276") - br label %"$matchsucc_2195" - -"$False_2277": ; preds = %entry - %"$isSenderOAO_2278" = bitcast %TName_Bool* %"$isSenderOAO_2196" to %CName_False* + %"$gasrem_3555" = load i64, i64* @_gasrem + %"$gascmp_3556" = icmp ugt i64 1, %"$gasrem_3555" + br i1 %"$gascmp_3556", label %"$out_of_gas_3557", label %"$have_gas_3558" + +"$out_of_gas_3557": ; preds = %"$have_gas_3553" + call void @_out_of_gas() + br label %"$have_gas_3558" + +"$have_gas_3558": ; preds = %"$out_of_gas_3557", %"$have_gas_3553" + %"$consume_3559" = sub i64 %"$gasrem_3555", 1 + store i64 %"$consume_3559", i64* @_gasrem + %"$msgobj_3560_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_3560_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3560_salloc_load", i64 225) + %"$msgobj_3560_salloc" = bitcast i8* %"$msgobj_3560_salloc_salloc" to [225 x i8]* + %"$msgobj_3560" = bitcast [225 x i8]* %"$msgobj_3560_salloc" to i8* + store i8 5, i8* %"$msgobj_3560" + %"$msgobj_fname_3562" = getelementptr i8, i8* %"$msgobj_3560", i32 1 + %"$msgobj_fname_3563" = bitcast i8* %"$msgobj_fname_3562" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3561", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3563" + %"$msgobj_td_3564" = getelementptr i8, i8* %"$msgobj_3560", i32 17 + %"$msgobj_td_3565" = bitcast i8* %"$msgobj_td_3564" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_3565" + %"$msgobj_v_3567" = getelementptr i8, i8* %"$msgobj_3560", i32 25 + %"$msgobj_v_3568" = bitcast i8* %"$msgobj_v_3567" to %String* + store %String { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$stringlit_3566", i32 0, i32 0), i32 18 }, %String* %"$msgobj_v_3568" + %"$msgobj_fname_3570" = getelementptr i8, i8* %"$msgobj_3560", i32 41 + %"$msgobj_fname_3571" = bitcast i8* %"$msgobj_fname_3570" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3569", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3571" + %"$msgobj_td_3572" = getelementptr i8, i8* %"$msgobj_3560", i32 57 + %"$msgobj_td_3573" = bitcast i8* %"$msgobj_td_3572" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_306", %_TyDescrTy_Typ** %"$msgobj_td_3573" + %"$msgobj_v_3574" = getelementptr i8, i8* %"$msgobj_3560", i32 65 + %"$msgobj_v_3575" = bitcast i8* %"$msgobj_v_3574" to [32 x i8]* + store [32 x i8] %node, [32 x i8]* %"$msgobj_v_3575" + %"$msgobj_fname_3577" = getelementptr i8, i8* %"$msgobj_3560", i32 97 + %"$msgobj_fname_3578" = bitcast i8* %"$msgobj_fname_3577" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3576", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_3578" + %"$msgobj_td_3579" = getelementptr i8, i8* %"$msgobj_3560", i32 113 + %"$msgobj_td_3580" = bitcast i8* %"$msgobj_td_3579" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_3580" + %"$msgobj_v_3581" = getelementptr i8, i8* %"$msgobj_3560", i32 121 + %"$msgobj_v_3582" = bitcast i8* %"$msgobj_v_3581" to [20 x i8]* + store [20 x i8] %owner, [20 x i8]* %"$msgobj_v_3582" + %"$msgobj_fname_3584" = getelementptr i8, i8* %"$msgobj_3560", i32 141 + %"$msgobj_fname_3585" = bitcast i8* %"$msgobj_fname_3584" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3583", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3585" + %"$msgobj_td_3586" = getelementptr i8, i8* %"$msgobj_3560", i32 157 + %"$msgobj_td_3587" = bitcast i8* %"$msgobj_td_3586" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_286", %_TyDescrTy_Typ** %"$msgobj_td_3587" + %"$msgobj_v_3588" = getelementptr i8, i8* %"$msgobj_3560", i32 165 + %"$msgobj_v_3589" = bitcast i8* %"$msgobj_v_3588" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_3589" + %"$msgobj_fname_3591" = getelementptr i8, i8* %"$msgobj_3560", i32 181 + %"$msgobj_fname_3592" = bitcast i8* %"$msgobj_fname_3591" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3590", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3592" + %"$msgobj_td_3593" = getelementptr i8, i8* %"$msgobj_3560", i32 197 + %"$msgobj_td_3594" = bitcast i8* %"$msgobj_td_3593" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_3594" + %"$msgobj_v_3595" = getelementptr i8, i8* %"$msgobj_3560", i32 205 + %"$msgobj_v_3596" = bitcast i8* %"$msgobj_v_3595" to [20 x i8]* + store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_3596" + store i8* %"$msgobj_3560", i8** %m + %"$gasrem_3598" = load i64, i64* @_gasrem + %"$gascmp_3599" = icmp ugt i64 1, %"$gasrem_3598" + br i1 %"$gascmp_3599", label %"$out_of_gas_3600", label %"$have_gas_3601" + +"$out_of_gas_3600": ; preds = %"$have_gas_3558" + call void @_out_of_gas() + br label %"$have_gas_3601" + +"$have_gas_3601": ; preds = %"$out_of_gas_3600", %"$have_gas_3558" + %"$consume_3602" = sub i64 %"$gasrem_3598", 1 + store i64 %"$consume_3602", i64* @_gasrem + %"$oneMsg_66" = alloca %TName_List_Message* + %"$oneMsg_3603" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg + %"$oneMsg_fptr_3604" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_3603", 0 + %"$oneMsg_envptr_3605" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_3603", 1 + %"$m_3606" = load i8*, i8** %m + %"$oneMsg_call_3607" = call %TName_List_Message* %"$oneMsg_fptr_3604"(i8* %"$oneMsg_envptr_3605", i8* %"$m_3606") + store %TName_List_Message* %"$oneMsg_call_3607", %TName_List_Message** %"$oneMsg_66" + %"$$oneMsg_66_3608" = load %TName_List_Message*, %TName_List_Message** %"$oneMsg_66" + store %TName_List_Message* %"$$oneMsg_66_3608", %TName_List_Message** %msgs + %"$msgs_3609" = load %TName_List_Message*, %TName_List_Message** %msgs + %"$$msgs_3609_3610" = bitcast %TName_List_Message* %"$msgs_3609" to i8* + %"$_literal_cost_call_3611" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_316", i8* %"$$msgs_3609_3610") + %"$gasrem_3612" = load i64, i64* @_gasrem + %"$gascmp_3613" = icmp ugt i64 %"$_literal_cost_call_3611", %"$gasrem_3612" + br i1 %"$gascmp_3613", label %"$out_of_gas_3614", label %"$have_gas_3615" + +"$out_of_gas_3614": ; preds = %"$have_gas_3601" + call void @_out_of_gas() + br label %"$have_gas_3615" + +"$have_gas_3615": ; preds = %"$out_of_gas_3614", %"$have_gas_3601" + %"$consume_3616" = sub i64 %"$gasrem_3612", %"$_literal_cost_call_3611" + store i64 %"$consume_3616", i64* @_gasrem + %"$execptr_load_3617" = load i8*, i8** @_execptr + %"$msgs_3618" = load %TName_List_Message*, %TName_List_Message** %msgs + call void @_send(i8* %"$execptr_load_3617", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_316", %TName_List_Message* %"$msgs_3618") + br label %"$matchsucc_3472" + +"$False_3619": ; preds = %"$have_gas_3470" + %"$isSenderOAO_3620" = bitcast %TName_Bool* %"$isSenderOAO_3473" to %CName_False* + %"$gasrem_3621" = load i64, i64* @_gasrem + %"$gascmp_3622" = icmp ugt i64 1, %"$gasrem_3621" + br i1 %"$gascmp_3622", label %"$out_of_gas_3623", label %"$have_gas_3624" + +"$out_of_gas_3623": ; preds = %"$False_3619" + call void @_out_of_gas() + br label %"$have_gas_3624" + +"$have_gas_3624": ; preds = %"$out_of_gas_3623", %"$False_3619" + %"$consume_3625" = sub i64 %"$gasrem_3621", 1 + store i64 %"$consume_3625", i64* @_gasrem %e4 = alloca i8* + %"$gasrem_3626" = load i64, i64* @_gasrem + %"$gascmp_3627" = icmp ugt i64 1, %"$gasrem_3626" + br i1 %"$gascmp_3627", label %"$out_of_gas_3628", label %"$have_gas_3629" + +"$out_of_gas_3628": ; preds = %"$have_gas_3624" + call void @_out_of_gas() + br label %"$have_gas_3629" + +"$have_gas_3629": ; preds = %"$out_of_gas_3628", %"$have_gas_3624" + %"$consume_3630" = sub i64 %"$gasrem_3626", 1 + store i64 %"$consume_3630", i64* @_gasrem %m5 = alloca %String - store %String { i8* getelementptr inbounds ([43 x i8], [43 x i8]* @"$stringlit_2279", i32 0, i32 0), i32 43 }, %String* %m5 - %"$eError_74" = alloca i8* - %"$eError_2280" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* @eError - %"$eError_fptr_2281" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_2280", 0 - %"$eError_envptr_2282" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_2280", 1 - %"$m_2283" = load %String, %String* %m5 - %"$eError_call_2284" = call i8* %"$eError_fptr_2281"(i8* %"$eError_envptr_2282", %String %"$m_2283") - store i8* %"$eError_call_2284", i8** %"$eError_74" - %"$$eError_74_2285" = load i8*, i8** %"$eError_74" - store i8* %"$$eError_74_2285", i8** %e4 - %"$execptr_load_2286" = load i8*, i8** @_execptr - %"$e_2287" = load i8*, i8** %e4 - call void @_event(i8* %"$execptr_load_2286", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_2287") + %"$gasrem_3631" = load i64, i64* @_gasrem + %"$gascmp_3632" = icmp ugt i64 1, %"$gasrem_3631" + br i1 %"$gascmp_3632", label %"$out_of_gas_3633", label %"$have_gas_3634" + +"$out_of_gas_3633": ; preds = %"$have_gas_3629" + call void @_out_of_gas() + br label %"$have_gas_3634" + +"$have_gas_3634": ; preds = %"$out_of_gas_3633", %"$have_gas_3629" + %"$consume_3635" = sub i64 %"$gasrem_3631", 1 + store i64 %"$consume_3635", i64* @_gasrem + store %String { i8* getelementptr inbounds ([43 x i8], [43 x i8]* @"$stringlit_3636", i32 0, i32 0), i32 43 }, %String* %m5 + %"$gasrem_3637" = load i64, i64* @_gasrem + %"$gascmp_3638" = icmp ugt i64 1, %"$gasrem_3637" + br i1 %"$gascmp_3638", label %"$out_of_gas_3639", label %"$have_gas_3640" + +"$out_of_gas_3639": ; preds = %"$have_gas_3634" + call void @_out_of_gas() + br label %"$have_gas_3640" + +"$have_gas_3640": ; preds = %"$out_of_gas_3639", %"$have_gas_3634" + %"$consume_3641" = sub i64 %"$gasrem_3637", 1 + store i64 %"$consume_3641", i64* @_gasrem + %"$eError_71" = alloca i8* + %"$eError_3642" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* @eError + %"$eError_fptr_3643" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_3642", 0 + %"$eError_envptr_3644" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_3642", 1 + %"$m_3645" = load %String, %String* %m5 + %"$eError_call_3646" = call i8* %"$eError_fptr_3643"(i8* %"$eError_envptr_3644", %String %"$m_3645") + store i8* %"$eError_call_3646", i8** %"$eError_71" + %"$$eError_71_3647" = load i8*, i8** %"$eError_71" + store i8* %"$$eError_71_3647", i8** %e4 + %"$e_3648" = load i8*, i8** %e4 + %"$_literal_cost_call_3650" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_3648") + %"$gasrem_3651" = load i64, i64* @_gasrem + %"$gascmp_3652" = icmp ugt i64 %"$_literal_cost_call_3650", %"$gasrem_3651" + br i1 %"$gascmp_3652", label %"$out_of_gas_3653", label %"$have_gas_3654" + +"$out_of_gas_3653": ; preds = %"$have_gas_3640" + call void @_out_of_gas() + br label %"$have_gas_3654" + +"$have_gas_3654": ; preds = %"$out_of_gas_3653", %"$have_gas_3640" + %"$consume_3655" = sub i64 %"$gasrem_3651", %"$_literal_cost_call_3650" + store i64 %"$consume_3655", i64* @_gasrem + %"$execptr_load_3656" = load i8*, i8** @_execptr + %"$e_3657" = load i8*, i8** %e4 + call void @_event(i8* %"$execptr_load_3656", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_3657") + %"$gasrem_3658" = load i64, i64* @_gasrem + %"$gascmp_3659" = icmp ugt i64 1, %"$gasrem_3658" + br i1 %"$gascmp_3659", label %"$out_of_gas_3660", label %"$have_gas_3661" + +"$out_of_gas_3660": ; preds = %"$have_gas_3654" + call void @_out_of_gas() + br label %"$have_gas_3661" + +"$have_gas_3661": ; preds = %"$out_of_gas_3660", %"$have_gas_3654" + %"$consume_3662" = sub i64 %"$gasrem_3658", 1 + store i64 %"$consume_3662", i64* @_gasrem %msgs6 = alloca %TName_List_Message* - %"$m_0" = alloca i8* - %"$msgobj_2288_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_2288_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2288_salloc_load", i64 225) - %"$msgobj_2288_salloc" = bitcast i8* %"$msgobj_2288_salloc_salloc" to [225 x i8]* - %"$msgobj_2288" = bitcast [225 x i8]* %"$msgobj_2288_salloc" to i8* - store i8 5, i8* %"$msgobj_2288" - %"$msgobj_fname_2290" = getelementptr i8, i8* %"$msgobj_2288", i32 1 - %"$msgobj_fname_2291" = bitcast i8* %"$msgobj_fname_2290" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2289", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2291" - %"$msgobj_td_2292" = getelementptr i8, i8* %"$msgobj_2288", i32 17 - %"$msgobj_td_2293" = bitcast i8* %"$msgobj_td_2292" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_2293" - %"$msgobj_v_2295" = getelementptr i8, i8* %"$msgobj_2288", i32 25 - %"$msgobj_v_2296" = bitcast i8* %"$msgobj_v_2295" to %String* - store %String { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$stringlit_2294", i32 0, i32 0), i32 18 }, %String* %"$msgobj_v_2296" - %"$msgobj_fname_2298" = getelementptr i8, i8* %"$msgobj_2288", i32 41 - %"$msgobj_fname_2299" = bitcast i8* %"$msgobj_fname_2298" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2297", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2299" - %"$msgobj_td_2300" = getelementptr i8, i8* %"$msgobj_2288", i32 57 - %"$msgobj_td_2301" = bitcast i8* %"$msgobj_td_2300" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_309", %_TyDescrTy_Typ** %"$msgobj_td_2301" - %"$msgobj_v_2302" = getelementptr i8, i8* %"$msgobj_2288", i32 65 - %"$msgobj_v_2303" = bitcast i8* %"$msgobj_v_2302" to [32 x i8]* - store [32 x i8] %node, [32 x i8]* %"$msgobj_v_2303" - %"$msgobj_fname_2305" = getelementptr i8, i8* %"$msgobj_2288", i32 97 - %"$msgobj_fname_2306" = bitcast i8* %"$msgobj_fname_2305" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2304", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_2306" - %"$msgobj_td_2307" = getelementptr i8, i8* %"$msgobj_2288", i32 113 - %"$msgobj_td_2308" = bitcast i8* %"$msgobj_td_2307" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_2308" - %"$recordOwner_2309" = load [20 x i8], [20 x i8]* %recordOwner - %"$msgobj_v_2310" = getelementptr i8, i8* %"$msgobj_2288", i32 121 - %"$msgobj_v_2311" = bitcast i8* %"$msgobj_v_2310" to [20 x i8]* - store [20 x i8] %"$recordOwner_2309", [20 x i8]* %"$msgobj_v_2311" - %"$msgobj_fname_2313" = getelementptr i8, i8* %"$msgobj_2288", i32 141 - %"$msgobj_fname_2314" = bitcast i8* %"$msgobj_fname_2313" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2312", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2314" - %"$msgobj_td_2315" = getelementptr i8, i8* %"$msgobj_2288", i32 157 - %"$msgobj_td_2316" = bitcast i8* %"$msgobj_td_2315" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Uint128_289", %_TyDescrTy_Typ** %"$msgobj_td_2316" - %"$msgobj_v_2317" = getelementptr i8, i8* %"$msgobj_2288", i32 165 - %"$msgobj_v_2318" = bitcast i8* %"$msgobj_v_2317" to %Uint128* - store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_2318" - %"$msgobj_fname_2320" = getelementptr i8, i8* %"$msgobj_2288", i32 181 - %"$msgobj_fname_2321" = bitcast i8* %"$msgobj_fname_2320" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2319", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2321" - %"$msgobj_td_2322" = getelementptr i8, i8* %"$msgobj_2288", i32 197 - %"$msgobj_td_2323" = bitcast i8* %"$msgobj_td_2322" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_2323" - %"$msgobj_v_2324" = getelementptr i8, i8* %"$msgobj_2288", i32 205 - %"$msgobj_v_2325" = bitcast i8* %"$msgobj_v_2324" to [20 x i8]* - store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_2325" - store i8* %"$msgobj_2288", i8** %"$m_0" - %"$oneMsg_73" = alloca %TName_List_Message* - %"$oneMsg_2327" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg - %"$oneMsg_fptr_2328" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_2327", 0 - %"$oneMsg_envptr_2329" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_2327", 1 - %"$$m_0_2330" = load i8*, i8** %"$m_0" - %"$oneMsg_call_2331" = call %TName_List_Message* %"$oneMsg_fptr_2328"(i8* %"$oneMsg_envptr_2329", i8* %"$$m_0_2330") - store %TName_List_Message* %"$oneMsg_call_2331", %TName_List_Message** %"$oneMsg_73" - %"$$oneMsg_73_2332" = load %TName_List_Message*, %TName_List_Message** %"$oneMsg_73" - store %TName_List_Message* %"$$oneMsg_73_2332", %TName_List_Message** %msgs6 - %"$execptr_load_2333" = load i8*, i8** @_execptr - %"$msgs_2334" = load %TName_List_Message*, %TName_List_Message** %msgs6 - call void @_send(i8* %"$execptr_load_2333", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_319", %TName_List_Message* %"$msgs_2334") - br label %"$matchsucc_2195" - -"$empty_default_2199": ; preds = %entry - br label %"$matchsucc_2195" - -"$matchsucc_2195": ; preds = %"$False_2277", %"$True_2200", %"$empty_default_2199" + %"$gasrem_3663" = load i64, i64* @_gasrem + %"$gascmp_3664" = icmp ugt i64 1, %"$gasrem_3663" + br i1 %"$gascmp_3664", label %"$out_of_gas_3665", label %"$have_gas_3666" + +"$out_of_gas_3665": ; preds = %"$have_gas_3661" + call void @_out_of_gas() + br label %"$have_gas_3666" + +"$have_gas_3666": ; preds = %"$out_of_gas_3665", %"$have_gas_3661" + %"$consume_3667" = sub i64 %"$gasrem_3663", 1 + store i64 %"$consume_3667", i64* @_gasrem + %m7 = alloca i8* + %"$gasrem_3668" = load i64, i64* @_gasrem + %"$gascmp_3669" = icmp ugt i64 1, %"$gasrem_3668" + br i1 %"$gascmp_3669", label %"$out_of_gas_3670", label %"$have_gas_3671" + +"$out_of_gas_3670": ; preds = %"$have_gas_3666" + call void @_out_of_gas() + br label %"$have_gas_3671" + +"$have_gas_3671": ; preds = %"$out_of_gas_3670", %"$have_gas_3666" + %"$consume_3672" = sub i64 %"$gasrem_3668", 1 + store i64 %"$consume_3672", i64* @_gasrem + %"$msgobj_3673_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_3673_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3673_salloc_load", i64 225) + %"$msgobj_3673_salloc" = bitcast i8* %"$msgobj_3673_salloc_salloc" to [225 x i8]* + %"$msgobj_3673" = bitcast [225 x i8]* %"$msgobj_3673_salloc" to i8* + store i8 5, i8* %"$msgobj_3673" + %"$msgobj_fname_3675" = getelementptr i8, i8* %"$msgobj_3673", i32 1 + %"$msgobj_fname_3676" = bitcast i8* %"$msgobj_fname_3675" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3674", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3676" + %"$msgobj_td_3677" = getelementptr i8, i8* %"$msgobj_3673", i32 17 + %"$msgobj_td_3678" = bitcast i8* %"$msgobj_td_3677" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_3678" + %"$msgobj_v_3680" = getelementptr i8, i8* %"$msgobj_3673", i32 25 + %"$msgobj_v_3681" = bitcast i8* %"$msgobj_v_3680" to %String* + store %String { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$stringlit_3679", i32 0, i32 0), i32 18 }, %String* %"$msgobj_v_3681" + %"$msgobj_fname_3683" = getelementptr i8, i8* %"$msgobj_3673", i32 41 + %"$msgobj_fname_3684" = bitcast i8* %"$msgobj_fname_3683" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3682", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3684" + %"$msgobj_td_3685" = getelementptr i8, i8* %"$msgobj_3673", i32 57 + %"$msgobj_td_3686" = bitcast i8* %"$msgobj_td_3685" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_306", %_TyDescrTy_Typ** %"$msgobj_td_3686" + %"$msgobj_v_3687" = getelementptr i8, i8* %"$msgobj_3673", i32 65 + %"$msgobj_v_3688" = bitcast i8* %"$msgobj_v_3687" to [32 x i8]* + store [32 x i8] %node, [32 x i8]* %"$msgobj_v_3688" + %"$msgobj_fname_3690" = getelementptr i8, i8* %"$msgobj_3673", i32 97 + %"$msgobj_fname_3691" = bitcast i8* %"$msgobj_fname_3690" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3689", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_3691" + %"$msgobj_td_3692" = getelementptr i8, i8* %"$msgobj_3673", i32 113 + %"$msgobj_td_3693" = bitcast i8* %"$msgobj_td_3692" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_3693" + %"$recordOwner_3694" = load [20 x i8], [20 x i8]* %recordOwner + %"$msgobj_v_3695" = getelementptr i8, i8* %"$msgobj_3673", i32 121 + %"$msgobj_v_3696" = bitcast i8* %"$msgobj_v_3695" to [20 x i8]* + store [20 x i8] %"$recordOwner_3694", [20 x i8]* %"$msgobj_v_3696" + %"$msgobj_fname_3698" = getelementptr i8, i8* %"$msgobj_3673", i32 141 + %"$msgobj_fname_3699" = bitcast i8* %"$msgobj_fname_3698" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3697", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3699" + %"$msgobj_td_3700" = getelementptr i8, i8* %"$msgobj_3673", i32 157 + %"$msgobj_td_3701" = bitcast i8* %"$msgobj_td_3700" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_286", %_TyDescrTy_Typ** %"$msgobj_td_3701" + %"$msgobj_v_3702" = getelementptr i8, i8* %"$msgobj_3673", i32 165 + %"$msgobj_v_3703" = bitcast i8* %"$msgobj_v_3702" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_3703" + %"$msgobj_fname_3705" = getelementptr i8, i8* %"$msgobj_3673", i32 181 + %"$msgobj_fname_3706" = bitcast i8* %"$msgobj_fname_3705" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3704", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3706" + %"$msgobj_td_3707" = getelementptr i8, i8* %"$msgobj_3673", i32 197 + %"$msgobj_td_3708" = bitcast i8* %"$msgobj_td_3707" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_3708" + %"$msgobj_v_3709" = getelementptr i8, i8* %"$msgobj_3673", i32 205 + %"$msgobj_v_3710" = bitcast i8* %"$msgobj_v_3709" to [20 x i8]* + store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_3710" + store i8* %"$msgobj_3673", i8** %m7 + %"$gasrem_3712" = load i64, i64* @_gasrem + %"$gascmp_3713" = icmp ugt i64 1, %"$gasrem_3712" + br i1 %"$gascmp_3713", label %"$out_of_gas_3714", label %"$have_gas_3715" + +"$out_of_gas_3714": ; preds = %"$have_gas_3671" + call void @_out_of_gas() + br label %"$have_gas_3715" + +"$have_gas_3715": ; preds = %"$out_of_gas_3714", %"$have_gas_3671" + %"$consume_3716" = sub i64 %"$gasrem_3712", 1 + store i64 %"$consume_3716", i64* @_gasrem + %"$oneMsg_70" = alloca %TName_List_Message* + %"$oneMsg_3717" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg + %"$oneMsg_fptr_3718" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_3717", 0 + %"$oneMsg_envptr_3719" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_3717", 1 + %"$m_3720" = load i8*, i8** %m7 + %"$oneMsg_call_3721" = call %TName_List_Message* %"$oneMsg_fptr_3718"(i8* %"$oneMsg_envptr_3719", i8* %"$m_3720") + store %TName_List_Message* %"$oneMsg_call_3721", %TName_List_Message** %"$oneMsg_70" + %"$$oneMsg_70_3722" = load %TName_List_Message*, %TName_List_Message** %"$oneMsg_70" + store %TName_List_Message* %"$$oneMsg_70_3722", %TName_List_Message** %msgs6 + %"$msgs_3723" = load %TName_List_Message*, %TName_List_Message** %msgs6 + %"$$msgs_3723_3724" = bitcast %TName_List_Message* %"$msgs_3723" to i8* + %"$_literal_cost_call_3725" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_316", i8* %"$$msgs_3723_3724") + %"$gasrem_3726" = load i64, i64* @_gasrem + %"$gascmp_3727" = icmp ugt i64 %"$_literal_cost_call_3725", %"$gasrem_3726" + br i1 %"$gascmp_3727", label %"$out_of_gas_3728", label %"$have_gas_3729" + +"$out_of_gas_3728": ; preds = %"$have_gas_3715" + call void @_out_of_gas() + br label %"$have_gas_3729" + +"$have_gas_3729": ; preds = %"$out_of_gas_3728", %"$have_gas_3715" + %"$consume_3730" = sub i64 %"$gasrem_3726", %"$_literal_cost_call_3725" + store i64 %"$consume_3730", i64* @_gasrem + %"$execptr_load_3731" = load i8*, i8** @_execptr + %"$msgs_3732" = load %TName_List_Message*, %TName_List_Message** %msgs6 + call void @_send(i8* %"$execptr_load_3731", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_316", %TName_List_Message* %"$msgs_3732") + br label %"$matchsucc_3472" + +"$empty_default_3476": ; preds = %"$have_gas_3470" + br label %"$matchsucc_3472" + +"$matchsucc_3472": ; preds = %"$have_gas_3729", %"$have_gas_3615", %"$empty_default_3476" ret void } @@ -3919,1651 +6908,3481 @@ declare void @_send(i8*, %_TyDescrTy_Typ*, %TName_List_Message*) define void @configureNode(i8* %0) { entry: - %"$_amount_2336" = getelementptr i8, i8* %0, i32 0 - %"$_amount_2337" = bitcast i8* %"$_amount_2336" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_2337" - %"$_sender_2338" = getelementptr i8, i8* %0, i32 16 - %"$_sender_2339" = bitcast i8* %"$_sender_2338" to [20 x i8]* - %"$node_2340" = getelementptr i8, i8* %0, i32 36 - %"$node_2341" = bitcast i8* %"$node_2340" to [32 x i8]* - %"$owner_2342" = getelementptr i8, i8* %0, i32 68 - %"$owner_2343" = bitcast i8* %"$owner_2342" to [20 x i8]* - %"$resolver_2344" = getelementptr i8, i8* %0, i32 88 - %"$resolver_2345" = bitcast i8* %"$resolver_2344" to [20 x i8]* - call void @"$configureNode_2142"(%Uint128 %_amount, [20 x i8]* %"$_sender_2339", [32 x i8]* %"$node_2341", [20 x i8]* %"$owner_2343", [20 x i8]* %"$resolver_2345") + %"$_amount_3734" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3735" = bitcast i8* %"$_amount_3734" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3735" + %"$_sender_3736" = getelementptr i8, i8* %0, i32 16 + %"$_sender_3737" = bitcast i8* %"$_sender_3736" to [20 x i8]* + %"$node_3738" = getelementptr i8, i8* %0, i32 36 + %"$node_3739" = bitcast i8* %"$node_3738" to [32 x i8]* + %"$owner_3740" = getelementptr i8, i8* %0, i32 68 + %"$owner_3741" = bitcast i8* %"$owner_3740" to [20 x i8]* + %"$resolver_3742" = getelementptr i8, i8* %0, i32 88 + %"$resolver_3743" = bitcast i8* %"$resolver_3742" to [20 x i8]* + call void @"$configureNode_3364"(%Uint128 %_amount, [20 x i8]* %"$_sender_3737", [32 x i8]* %"$node_3739", [20 x i8]* %"$owner_3741", [20 x i8]* %"$resolver_3743") ret void } -define internal void @"$configureResolver_2346"(%Uint128 %_amount, [20 x i8]* %"$_sender_2347", [32 x i8]* %"$node_2348", [20 x i8]* %"$resolver_2349") { +define internal void @"$configureResolver_3744"(%Uint128 %_amount, [20 x i8]* %"$_sender_3745", [32 x i8]* %"$node_3746", [20 x i8]* %"$resolver_3747") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_2347" - %node = load [32 x i8], [32 x i8]* %"$node_2348" - %resolver = load [20 x i8], [20 x i8]* %"$resolver_2349" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3745" + %node = load [32 x i8], [32 x i8]* %"$node_3746" + %resolver = load [20 x i8], [20 x i8]* %"$resolver_3747" %maybeRecord = alloca %TName_Option_Record* - %"$indices_buf_2350_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2350_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2350_salloc_load", i64 32) - %"$indices_buf_2350_salloc" = bitcast i8* %"$indices_buf_2350_salloc_salloc" to [32 x i8]* - %"$indices_buf_2350" = bitcast [32 x i8]* %"$indices_buf_2350_salloc" to i8* - %"$indices_gep_2351" = getelementptr i8, i8* %"$indices_buf_2350", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_2351" to [32 x i8]* + %"$indices_buf_3748_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3748_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3748_salloc_load", i64 32) + %"$indices_buf_3748_salloc" = bitcast i8* %"$indices_buf_3748_salloc_salloc" to [32 x i8]* + %"$indices_buf_3748" = bitcast [32 x i8]* %"$indices_buf_3748_salloc" to i8* + %"$indices_gep_3749" = getelementptr i8, i8* %"$indices_buf_3748", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_3749" to [32 x i8]* store [32 x i8] %node, [32 x i8]* %indices_cast - %"$execptr_load_2352" = load i8*, i8** @_execptr - %"$maybeRecord_2354" = call i8* @_fetch_field(i8* %"$execptr_load_2352", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_2353", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_325", i32 1, i8* %"$indices_buf_2350", i32 1) - %"$maybeRecord_2355" = bitcast i8* %"$maybeRecord_2354" to %TName_Option_Record* - store %TName_Option_Record* %"$maybeRecord_2355", %TName_Option_Record** %maybeRecord + %"$execptr_load_3750" = load i8*, i8** @_execptr + %"$maybeRecord_3752" = call i8* @_fetch_field(i8* %"$execptr_load_3750", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_3751", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_322", i32 1, i8* %"$indices_buf_3748", i32 1) + %"$maybeRecord_3753" = bitcast i8* %"$maybeRecord_3752" to %TName_Option_Record* + store %TName_Option_Record* %"$maybeRecord_3753", %TName_Option_Record** %maybeRecord + %"$maybeRecord_3754" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord + %"$$maybeRecord_3754_3755" = bitcast %TName_Option_Record* %"$maybeRecord_3754" to i8* + %"$_literal_cost_call_3756" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Record_313", i8* %"$$maybeRecord_3754_3755") + %"$gasadd_3757" = add i64 %"$_literal_cost_call_3756", 0 + %"$gasadd_3758" = add i64 %"$gasadd_3757", 1 + %"$gasrem_3759" = load i64, i64* @_gasrem + %"$gascmp_3760" = icmp ugt i64 %"$gasadd_3758", %"$gasrem_3759" + br i1 %"$gascmp_3760", label %"$out_of_gas_3761", label %"$have_gas_3762" + +"$out_of_gas_3761": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3762" + +"$have_gas_3762": ; preds = %"$out_of_gas_3761", %entry + %"$consume_3763" = sub i64 %"$gasrem_3759", %"$gasadd_3758" + store i64 %"$consume_3763", i64* @_gasrem %maybeApproved = alloca %TName_Option_ByStr20* - %"$indices_buf_2356_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2356_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2356_salloc_load", i64 32) - %"$indices_buf_2356_salloc" = bitcast i8* %"$indices_buf_2356_salloc_salloc" to [32 x i8]* - %"$indices_buf_2356" = bitcast [32 x i8]* %"$indices_buf_2356_salloc" to i8* - %"$indices_gep_2357" = getelementptr i8, i8* %"$indices_buf_2356", i32 0 - %indices_cast1 = bitcast i8* %"$indices_gep_2357" to [32 x i8]* + %"$indices_buf_3764_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3764_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3764_salloc_load", i64 32) + %"$indices_buf_3764_salloc" = bitcast i8* %"$indices_buf_3764_salloc_salloc" to [32 x i8]* + %"$indices_buf_3764" = bitcast [32 x i8]* %"$indices_buf_3764_salloc" to i8* + %"$indices_gep_3765" = getelementptr i8, i8* %"$indices_buf_3764", i32 0 + %indices_cast1 = bitcast i8* %"$indices_gep_3765" to [32 x i8]* store [32 x i8] %node, [32 x i8]* %indices_cast1 - %"$execptr_load_2358" = load i8*, i8** @_execptr - %"$maybeApproved_2360" = call i8* @_fetch_field(i8* %"$execptr_load_2358", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_2359", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_324", i32 1, i8* %"$indices_buf_2356", i32 1) - %"$maybeApproved_2361" = bitcast i8* %"$maybeApproved_2360" to %TName_Option_ByStr20* - store %TName_Option_ByStr20* %"$maybeApproved_2361", %TName_Option_ByStr20** %maybeApproved + %"$execptr_load_3766" = load i8*, i8** @_execptr + %"$maybeApproved_3768" = call i8* @_fetch_field(i8* %"$execptr_load_3766", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_3767", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_321", i32 1, i8* %"$indices_buf_3764", i32 1) + %"$maybeApproved_3769" = bitcast i8* %"$maybeApproved_3768" to %TName_Option_ByStr20* + store %TName_Option_ByStr20* %"$maybeApproved_3769", %TName_Option_ByStr20** %maybeApproved + %"$maybeApproved_3770" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved + %"$$maybeApproved_3770_3771" = bitcast %TName_Option_ByStr20* %"$maybeApproved_3770" to i8* + %"$_literal_cost_call_3772" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_ByStr20_314", i8* %"$$maybeApproved_3770_3771") + %"$gasadd_3773" = add i64 %"$_literal_cost_call_3772", 0 + %"$gasadd_3774" = add i64 %"$gasadd_3773", 1 + %"$gasrem_3775" = load i64, i64* @_gasrem + %"$gascmp_3776" = icmp ugt i64 %"$gasadd_3774", %"$gasrem_3775" + br i1 %"$gascmp_3776", label %"$out_of_gas_3777", label %"$have_gas_3778" + +"$out_of_gas_3777": ; preds = %"$have_gas_3762" + call void @_out_of_gas() + br label %"$have_gas_3778" + +"$have_gas_3778": ; preds = %"$out_of_gas_3777", %"$have_gas_3762" + %"$consume_3779" = sub i64 %"$gasrem_3775", %"$gasadd_3774" + store i64 %"$consume_3779", i64* @_gasrem + %"$gasrem_3780" = load i64, i64* @_gasrem + %"$gascmp_3781" = icmp ugt i64 1, %"$gasrem_3780" + br i1 %"$gascmp_3781", label %"$out_of_gas_3782", label %"$have_gas_3783" + +"$out_of_gas_3782": ; preds = %"$have_gas_3778" + call void @_out_of_gas() + br label %"$have_gas_3783" + +"$have_gas_3783": ; preds = %"$out_of_gas_3782", %"$have_gas_3778" + %"$consume_3784" = sub i64 %"$gasrem_3780", 1 + store i64 %"$consume_3784", i64* @_gasrem %recordOwner = alloca [20 x i8] - %"$recordMemberOwner_88" = alloca [20 x i8] - %"$recordMemberOwner_2362" = load { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }, { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }* @recordMemberOwner - %"$recordMemberOwner_fptr_2363" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_2362", 0 - %"$recordMemberOwner_envptr_2364" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_2362", 1 - %"$maybeRecord_2365" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord - %"$recordMemberOwner_retalloca_2366" = alloca [20 x i8] - call void %"$recordMemberOwner_fptr_2363"(i8* %"$recordMemberOwner_envptr_2364", [20 x i8]* %"$recordMemberOwner_retalloca_2366", %TName_Option_Record* %"$maybeRecord_2365") - %"$recordMemberOwner_ret_2367" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_retalloca_2366" - store [20 x i8] %"$recordMemberOwner_ret_2367", [20 x i8]* %"$recordMemberOwner_88" - %"$$recordMemberOwner_88_2368" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_88" - store [20 x i8] %"$$recordMemberOwner_88_2368", [20 x i8]* %recordOwner + %"$gasrem_3785" = load i64, i64* @_gasrem + %"$gascmp_3786" = icmp ugt i64 1, %"$gasrem_3785" + br i1 %"$gascmp_3786", label %"$out_of_gas_3787", label %"$have_gas_3788" + +"$out_of_gas_3787": ; preds = %"$have_gas_3783" + call void @_out_of_gas() + br label %"$have_gas_3788" + +"$have_gas_3788": ; preds = %"$out_of_gas_3787", %"$have_gas_3783" + %"$consume_3789" = sub i64 %"$gasrem_3785", 1 + store i64 %"$consume_3789", i64* @_gasrem + %"$recordMemberOwner_85" = alloca [20 x i8] + %"$recordMemberOwner_3790" = load { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }, { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }* @recordMemberOwner + %"$recordMemberOwner_fptr_3791" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_3790", 0 + %"$recordMemberOwner_envptr_3792" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_3790", 1 + %"$maybeRecord_3793" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord + %"$recordMemberOwner_retalloca_3794" = alloca [20 x i8] + call void %"$recordMemberOwner_fptr_3791"(i8* %"$recordMemberOwner_envptr_3792", [20 x i8]* %"$recordMemberOwner_retalloca_3794", %TName_Option_Record* %"$maybeRecord_3793") + %"$recordMemberOwner_ret_3795" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_retalloca_3794" + store [20 x i8] %"$recordMemberOwner_ret_3795", [20 x i8]* %"$recordMemberOwner_85" + %"$$recordMemberOwner_85_3796" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_85" + store [20 x i8] %"$$recordMemberOwner_85_3796", [20 x i8]* %recordOwner %maybeOperators = alloca %"TName_Option_List_(ByStr20)"* - %"$indices_buf_2369_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2369_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2369_salloc_load", i64 20) - %"$indices_buf_2369_salloc" = bitcast i8* %"$indices_buf_2369_salloc_salloc" to [20 x i8]* - %"$indices_buf_2369" = bitcast [20 x i8]* %"$indices_buf_2369_salloc" to i8* - %"$recordOwner_2370" = load [20 x i8], [20 x i8]* %recordOwner - %"$indices_gep_2371" = getelementptr i8, i8* %"$indices_buf_2369", i32 0 - %indices_cast2 = bitcast i8* %"$indices_gep_2371" to [20 x i8]* - store [20 x i8] %"$recordOwner_2370", [20 x i8]* %indices_cast2 - %"$execptr_load_2372" = load i8*, i8** @_execptr - %"$maybeOperators_2374" = call i8* @_fetch_field(i8* %"$execptr_load_2372", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$operators_2373", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_323", i32 1, i8* %"$indices_buf_2369", i32 1) - %"$maybeOperators_2375" = bitcast i8* %"$maybeOperators_2374" to %"TName_Option_List_(ByStr20)"* - store %"TName_Option_List_(ByStr20)"* %"$maybeOperators_2375", %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$indices_buf_3797_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3797_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3797_salloc_load", i64 20) + %"$indices_buf_3797_salloc" = bitcast i8* %"$indices_buf_3797_salloc_salloc" to [20 x i8]* + %"$indices_buf_3797" = bitcast [20 x i8]* %"$indices_buf_3797_salloc" to i8* + %"$recordOwner_3798" = load [20 x i8], [20 x i8]* %recordOwner + %"$indices_gep_3799" = getelementptr i8, i8* %"$indices_buf_3797", i32 0 + %indices_cast2 = bitcast i8* %"$indices_gep_3799" to [20 x i8]* + store [20 x i8] %"$recordOwner_3798", [20 x i8]* %indices_cast2 + %"$execptr_load_3800" = load i8*, i8** @_execptr + %"$maybeOperators_3802" = call i8* @_fetch_field(i8* %"$execptr_load_3800", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$operators_3801", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_320", i32 1, i8* %"$indices_buf_3797", i32 1) + %"$maybeOperators_3803" = bitcast i8* %"$maybeOperators_3802" to %"TName_Option_List_(ByStr20)"* + store %"TName_Option_List_(ByStr20)"* %"$maybeOperators_3803", %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$maybeOperators_3804" = load %"TName_Option_List_(ByStr20)"*, %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$$maybeOperators_3804_3805" = bitcast %"TName_Option_List_(ByStr20)"* %"$maybeOperators_3804" to i8* + %"$_literal_cost_call_3806" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_List_(ByStr20)_312", i8* %"$$maybeOperators_3804_3805") + %"$gasadd_3807" = add i64 %"$_literal_cost_call_3806", 0 + %"$gasadd_3808" = add i64 %"$gasadd_3807", 1 + %"$gasrem_3809" = load i64, i64* @_gasrem + %"$gascmp_3810" = icmp ugt i64 %"$gasadd_3808", %"$gasrem_3809" + br i1 %"$gascmp_3810", label %"$out_of_gas_3811", label %"$have_gas_3812" + +"$out_of_gas_3811": ; preds = %"$have_gas_3788" + call void @_out_of_gas() + br label %"$have_gas_3812" + +"$have_gas_3812": ; preds = %"$out_of_gas_3811", %"$have_gas_3788" + %"$consume_3813" = sub i64 %"$gasrem_3809", %"$gasadd_3808" + store i64 %"$consume_3813", i64* @_gasrem + %"$gasrem_3814" = load i64, i64* @_gasrem + %"$gascmp_3815" = icmp ugt i64 1, %"$gasrem_3814" + br i1 %"$gascmp_3815", label %"$out_of_gas_3816", label %"$have_gas_3817" + +"$out_of_gas_3816": ; preds = %"$have_gas_3812" + call void @_out_of_gas() + br label %"$have_gas_3817" + +"$have_gas_3817": ; preds = %"$out_of_gas_3816", %"$have_gas_3812" + %"$consume_3818" = sub i64 %"$gasrem_3814", 1 + store i64 %"$consume_3818", i64* @_gasrem %isSenderOAO = alloca %TName_Bool* - %"$getIsOAO_84" = alloca { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$getIsOAO_2376" = load { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @getIsOAO - %"$getIsOAO_fptr_2377" = extractvalue { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_2376", 0 - %"$getIsOAO_envptr_2378" = extractvalue { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_2376", 1 - %"$getIsOAO__sender_2379" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$getIsOAO__sender_2379" - %"$getIsOAO_call_2380" = call { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_fptr_2377"(i8* %"$getIsOAO_envptr_2378", [20 x i8]* %"$getIsOAO__sender_2379") - store { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_call_2380", { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$getIsOAO_84" - %"$getIsOAO_85" = alloca { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } - %"$$getIsOAO_84_2381" = load { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$getIsOAO_84" - %"$$getIsOAO_84_fptr_2382" = extractvalue { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$getIsOAO_84_2381", 0 - %"$$getIsOAO_84_envptr_2383" = extractvalue { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$getIsOAO_84_2381", 1 - %"$$getIsOAO_84_recordOwner_2384" = alloca [20 x i8] - %"$recordOwner_2385" = load [20 x i8], [20 x i8]* %recordOwner - store [20 x i8] %"$recordOwner_2385", [20 x i8]* %"$$getIsOAO_84_recordOwner_2384" - %"$$getIsOAO_84_call_2386" = call { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_84_fptr_2382"(i8* %"$$getIsOAO_84_envptr_2383", [20 x i8]* %"$$getIsOAO_84_recordOwner_2384") - store { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_84_call_2386", { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$getIsOAO_85" - %"$getIsOAO_86" = alloca { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } - %"$$getIsOAO_85_2387" = load { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$getIsOAO_85" - %"$$getIsOAO_85_fptr_2388" = extractvalue { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_85_2387", 0 - %"$$getIsOAO_85_envptr_2389" = extractvalue { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_85_2387", 1 - %"$maybeApproved_2390" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved - %"$$getIsOAO_85_call_2391" = call { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_85_fptr_2388"(i8* %"$$getIsOAO_85_envptr_2389", %TName_Option_ByStr20* %"$maybeApproved_2390") - store { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_85_call_2391", { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$getIsOAO_86" - %"$getIsOAO_87" = alloca %TName_Bool* - %"$$getIsOAO_86_2392" = load { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }, { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$getIsOAO_86" - %"$$getIsOAO_86_fptr_2393" = extractvalue { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_86_2392", 0 - %"$$getIsOAO_86_envptr_2394" = extractvalue { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_86_2392", 1 - %"$maybeOperators_2395" = load %"TName_Option_List_(ByStr20)"*, %"TName_Option_List_(ByStr20)"** %maybeOperators - %"$$getIsOAO_86_call_2396" = call %TName_Bool* %"$$getIsOAO_86_fptr_2393"(i8* %"$$getIsOAO_86_envptr_2394", %"TName_Option_List_(ByStr20)"* %"$maybeOperators_2395") - store %TName_Bool* %"$$getIsOAO_86_call_2396", %TName_Bool** %"$getIsOAO_87" - %"$$getIsOAO_87_2397" = load %TName_Bool*, %TName_Bool** %"$getIsOAO_87" - store %TName_Bool* %"$$getIsOAO_87_2397", %TName_Bool** %isSenderOAO - %"$isSenderOAO_2399" = load %TName_Bool*, %TName_Bool** %isSenderOAO - %"$isSenderOAO_tag_2400" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isSenderOAO_2399", i32 0, i32 0 - %"$isSenderOAO_tag_2401" = load i8, i8* %"$isSenderOAO_tag_2400" - switch i8 %"$isSenderOAO_tag_2401", label %"$empty_default_2402" [ - i8 0, label %"$True_2403" - i8 1, label %"$False_2436" + %"$gasrem_3819" = load i64, i64* @_gasrem + %"$gascmp_3820" = icmp ugt i64 1, %"$gasrem_3819" + br i1 %"$gascmp_3820", label %"$out_of_gas_3821", label %"$have_gas_3822" + +"$out_of_gas_3821": ; preds = %"$have_gas_3817" + call void @_out_of_gas() + br label %"$have_gas_3822" + +"$have_gas_3822": ; preds = %"$out_of_gas_3821", %"$have_gas_3817" + %"$consume_3823" = sub i64 %"$gasrem_3819", 1 + store i64 %"$consume_3823", i64* @_gasrem + %"$getIsOAO_81" = alloca { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } + %"$getIsOAO_3824" = load { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @getIsOAO + %"$getIsOAO_fptr_3825" = extractvalue { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_3824", 0 + %"$getIsOAO_envptr_3826" = extractvalue { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_3824", 1 + %"$getIsOAO__sender_3827" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$getIsOAO__sender_3827" + %"$getIsOAO_call_3828" = call { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_fptr_3825"(i8* %"$getIsOAO_envptr_3826", [20 x i8]* %"$getIsOAO__sender_3827") + store { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_call_3828", { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$getIsOAO_81" + %"$getIsOAO_82" = alloca { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } + %"$$getIsOAO_81_3829" = load { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$getIsOAO_81" + %"$$getIsOAO_81_fptr_3830" = extractvalue { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$getIsOAO_81_3829", 0 + %"$$getIsOAO_81_envptr_3831" = extractvalue { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$getIsOAO_81_3829", 1 + %"$$getIsOAO_81_recordOwner_3832" = alloca [20 x i8] + %"$recordOwner_3833" = load [20 x i8], [20 x i8]* %recordOwner + store [20 x i8] %"$recordOwner_3833", [20 x i8]* %"$$getIsOAO_81_recordOwner_3832" + %"$$getIsOAO_81_call_3834" = call { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_81_fptr_3830"(i8* %"$$getIsOAO_81_envptr_3831", [20 x i8]* %"$$getIsOAO_81_recordOwner_3832") + store { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_81_call_3834", { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$getIsOAO_82" + %"$getIsOAO_83" = alloca { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } + %"$$getIsOAO_82_3835" = load { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$getIsOAO_82" + %"$$getIsOAO_82_fptr_3836" = extractvalue { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_82_3835", 0 + %"$$getIsOAO_82_envptr_3837" = extractvalue { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_82_3835", 1 + %"$maybeApproved_3838" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved + %"$$getIsOAO_82_call_3839" = call { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_82_fptr_3836"(i8* %"$$getIsOAO_82_envptr_3837", %TName_Option_ByStr20* %"$maybeApproved_3838") + store { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_82_call_3839", { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$getIsOAO_83" + %"$getIsOAO_84" = alloca %TName_Bool* + %"$$getIsOAO_83_3840" = load { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }, { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$getIsOAO_83" + %"$$getIsOAO_83_fptr_3841" = extractvalue { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_83_3840", 0 + %"$$getIsOAO_83_envptr_3842" = extractvalue { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_83_3840", 1 + %"$maybeOperators_3843" = load %"TName_Option_List_(ByStr20)"*, %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$$getIsOAO_83_call_3844" = call %TName_Bool* %"$$getIsOAO_83_fptr_3841"(i8* %"$$getIsOAO_83_envptr_3842", %"TName_Option_List_(ByStr20)"* %"$maybeOperators_3843") + store %TName_Bool* %"$$getIsOAO_83_call_3844", %TName_Bool** %"$getIsOAO_84" + %"$$getIsOAO_84_3845" = load %TName_Bool*, %TName_Bool** %"$getIsOAO_84" + store %TName_Bool* %"$$getIsOAO_84_3845", %TName_Bool** %isSenderOAO + %"$gasrem_3846" = load i64, i64* @_gasrem + %"$gascmp_3847" = icmp ugt i64 2, %"$gasrem_3846" + br i1 %"$gascmp_3847", label %"$out_of_gas_3848", label %"$have_gas_3849" + +"$out_of_gas_3848": ; preds = %"$have_gas_3822" + call void @_out_of_gas() + br label %"$have_gas_3849" + +"$have_gas_3849": ; preds = %"$out_of_gas_3848", %"$have_gas_3822" + %"$consume_3850" = sub i64 %"$gasrem_3846", 2 + store i64 %"$consume_3850", i64* @_gasrem + %"$isSenderOAO_3852" = load %TName_Bool*, %TName_Bool** %isSenderOAO + %"$isSenderOAO_tag_3853" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isSenderOAO_3852", i32 0, i32 0 + %"$isSenderOAO_tag_3854" = load i8, i8* %"$isSenderOAO_tag_3853" + switch i8 %"$isSenderOAO_tag_3854", label %"$empty_default_3855" [ + i8 0, label %"$True_3856" + i8 1, label %"$False_3926" ] -"$True_2403": ; preds = %entry - %"$isSenderOAO_2404" = bitcast %TName_Bool* %"$isSenderOAO_2399" to %CName_True* +"$True_3856": ; preds = %"$have_gas_3849" + %"$isSenderOAO_3857" = bitcast %TName_Bool* %"$isSenderOAO_3852" to %CName_True* + %"$gasrem_3858" = load i64, i64* @_gasrem + %"$gascmp_3859" = icmp ugt i64 1, %"$gasrem_3858" + br i1 %"$gascmp_3859", label %"$out_of_gas_3860", label %"$have_gas_3861" + +"$out_of_gas_3860": ; preds = %"$True_3856" + call void @_out_of_gas() + br label %"$have_gas_3861" + +"$have_gas_3861": ; preds = %"$out_of_gas_3860", %"$True_3856" + %"$consume_3862" = sub i64 %"$gasrem_3858", 1 + store i64 %"$consume_3862", i64* @_gasrem %newRecord = alloca %TName_Record* - %"$recordOwner_2405" = load [20 x i8], [20 x i8]* %recordOwner - %"$adtval_2406_load" = load i8*, i8** @_execptr - %"$adtval_2406_salloc" = call i8* @_salloc(i8* %"$adtval_2406_load", i64 41) - %"$adtval_2406" = bitcast i8* %"$adtval_2406_salloc" to %CName_Record* - %"$adtgep_2407" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_2406", i32 0, i32 0 - store i8 0, i8* %"$adtgep_2407" - %"$adtgep_2408" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_2406", i32 0, i32 1 - store [20 x i8] %"$recordOwner_2405", [20 x i8]* %"$adtgep_2408" - %"$adtgep_2409" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_2406", i32 0, i32 2 - store [20 x i8] %resolver, [20 x i8]* %"$adtgep_2409" - %"$adtptr_2410" = bitcast %CName_Record* %"$adtval_2406" to %TName_Record* - store %TName_Record* %"$adtptr_2410", %TName_Record** %newRecord - %"$indices_buf_2411_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2411_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2411_salloc_load", i64 32) - %"$indices_buf_2411_salloc" = bitcast i8* %"$indices_buf_2411_salloc_salloc" to [32 x i8]* - %"$indices_buf_2411" = bitcast [32 x i8]* %"$indices_buf_2411_salloc" to i8* - %"$indices_gep_2412" = getelementptr i8, i8* %"$indices_buf_2411", i32 0 - %indices_cast3 = bitcast i8* %"$indices_gep_2412" to [32 x i8]* + %"$gasrem_3863" = load i64, i64* @_gasrem + %"$gascmp_3864" = icmp ugt i64 1, %"$gasrem_3863" + br i1 %"$gascmp_3864", label %"$out_of_gas_3865", label %"$have_gas_3866" + +"$out_of_gas_3865": ; preds = %"$have_gas_3861" + call void @_out_of_gas() + br label %"$have_gas_3866" + +"$have_gas_3866": ; preds = %"$out_of_gas_3865", %"$have_gas_3861" + %"$consume_3867" = sub i64 %"$gasrem_3863", 1 + store i64 %"$consume_3867", i64* @_gasrem + %"$recordOwner_3868" = load [20 x i8], [20 x i8]* %recordOwner + %"$adtval_3869_load" = load i8*, i8** @_execptr + %"$adtval_3869_salloc" = call i8* @_salloc(i8* %"$adtval_3869_load", i64 41) + %"$adtval_3869" = bitcast i8* %"$adtval_3869_salloc" to %CName_Record* + %"$adtgep_3870" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_3869", i32 0, i32 0 + store i8 0, i8* %"$adtgep_3870" + %"$adtgep_3871" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_3869", i32 0, i32 1 + store [20 x i8] %"$recordOwner_3868", [20 x i8]* %"$adtgep_3871" + %"$adtgep_3872" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_3869", i32 0, i32 2 + store [20 x i8] %resolver, [20 x i8]* %"$adtgep_3872" + %"$adtptr_3873" = bitcast %CName_Record* %"$adtval_3869" to %TName_Record* + store %TName_Record* %"$adtptr_3873", %TName_Record** %newRecord + %"$newRecord_3874" = load %TName_Record*, %TName_Record** %newRecord + %"$$newRecord_3874_3875" = bitcast %TName_Record* %"$newRecord_3874" to i8* + %"$_literal_cost_call_3876" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Record_315", i8* %"$$newRecord_3874_3875") + %"$gasadd_3877" = add i64 %"$_literal_cost_call_3876", 1 + %"$gasrem_3878" = load i64, i64* @_gasrem + %"$gascmp_3879" = icmp ugt i64 %"$gasadd_3877", %"$gasrem_3878" + br i1 %"$gascmp_3879", label %"$out_of_gas_3880", label %"$have_gas_3881" + +"$out_of_gas_3880": ; preds = %"$have_gas_3866" + call void @_out_of_gas() + br label %"$have_gas_3881" + +"$have_gas_3881": ; preds = %"$out_of_gas_3880", %"$have_gas_3866" + %"$consume_3882" = sub i64 %"$gasrem_3878", %"$gasadd_3877" + store i64 %"$consume_3882", i64* @_gasrem + %"$indices_buf_3883_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3883_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3883_salloc_load", i64 32) + %"$indices_buf_3883_salloc" = bitcast i8* %"$indices_buf_3883_salloc_salloc" to [32 x i8]* + %"$indices_buf_3883" = bitcast [32 x i8]* %"$indices_buf_3883_salloc" to i8* + %"$indices_gep_3884" = getelementptr i8, i8* %"$indices_buf_3883", i32 0 + %indices_cast3 = bitcast i8* %"$indices_gep_3884" to [32 x i8]* store [32 x i8] %node, [32 x i8]* %indices_cast3 - %"$execptr_load_2413" = load i8*, i8** @_execptr - %"$newRecord_2415" = load %TName_Record*, %TName_Record** %newRecord - %"$update_value_2416" = bitcast %TName_Record* %"$newRecord_2415" to i8* - call void @_update_field(i8* %"$execptr_load_2413", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_2414", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_325", i32 1, i8* %"$indices_buf_2411", i8* %"$update_value_2416") + %"$execptr_load_3885" = load i8*, i8** @_execptr + %"$newRecord_3887" = load %TName_Record*, %TName_Record** %newRecord + %"$update_value_3888" = bitcast %TName_Record* %"$newRecord_3887" to i8* + call void @_update_field(i8* %"$execptr_load_3885", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_3886", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_322", i32 1, i8* %"$indices_buf_3883", i8* %"$update_value_3888") + %"$gasrem_3889" = load i64, i64* @_gasrem + %"$gascmp_3890" = icmp ugt i64 1, %"$gasrem_3889" + br i1 %"$gascmp_3890", label %"$out_of_gas_3891", label %"$have_gas_3892" + +"$out_of_gas_3891": ; preds = %"$have_gas_3881" + call void @_out_of_gas() + br label %"$have_gas_3892" + +"$have_gas_3892": ; preds = %"$out_of_gas_3891", %"$have_gas_3881" + %"$consume_3893" = sub i64 %"$gasrem_3889", 1 + store i64 %"$consume_3893", i64* @_gasrem %e = alloca i8* - %"$eConfigured_80" = alloca { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$eConfigured_2417" = load { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eConfigured - %"$eConfigured_fptr_2418" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_2417", 0 - %"$eConfigured_envptr_2419" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_2417", 1 - %"$eConfigured_node_2420" = alloca [32 x i8] - store [32 x i8] %node, [32 x i8]* %"$eConfigured_node_2420" - %"$eConfigured_call_2421" = call { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_fptr_2418"(i8* %"$eConfigured_envptr_2419", [32 x i8]* %"$eConfigured_node_2420") - store { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_call_2421", { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_80" - %"$eConfigured_81" = alloca { i8* (i8*, [20 x i8]*)*, i8* } - %"$$eConfigured_80_2422" = load { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_80" - %"$$eConfigured_80_fptr_2423" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_80_2422", 0 - %"$$eConfigured_80_envptr_2424" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_80_2422", 1 - %"$$eConfigured_80_recordOwner_2425" = alloca [20 x i8] - %"$recordOwner_2426" = load [20 x i8], [20 x i8]* %recordOwner - store [20 x i8] %"$recordOwner_2426", [20 x i8]* %"$$eConfigured_80_recordOwner_2425" - %"$$eConfigured_80_call_2427" = call { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_80_fptr_2423"(i8* %"$$eConfigured_80_envptr_2424", [20 x i8]* %"$$eConfigured_80_recordOwner_2425") - store { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_80_call_2427", { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_81" - %"$eConfigured_82" = alloca i8* - %"$$eConfigured_81_2428" = load { i8* (i8*, [20 x i8]*)*, i8* }, { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_81" - %"$$eConfigured_81_fptr_2429" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_81_2428", 0 - %"$$eConfigured_81_envptr_2430" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_81_2428", 1 - %"$$eConfigured_81_resolver_2431" = alloca [20 x i8] - store [20 x i8] %resolver, [20 x i8]* %"$$eConfigured_81_resolver_2431" - %"$$eConfigured_81_call_2432" = call i8* %"$$eConfigured_81_fptr_2429"(i8* %"$$eConfigured_81_envptr_2430", [20 x i8]* %"$$eConfigured_81_resolver_2431") - store i8* %"$$eConfigured_81_call_2432", i8** %"$eConfigured_82" - %"$$eConfigured_82_2433" = load i8*, i8** %"$eConfigured_82" - store i8* %"$$eConfigured_82_2433", i8** %e - %"$execptr_load_2434" = load i8*, i8** @_execptr - %"$e_2435" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_2434", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_2435") - br label %"$matchsucc_2398" - -"$False_2436": ; preds = %entry - %"$isSenderOAO_2437" = bitcast %TName_Bool* %"$isSenderOAO_2399" to %CName_False* + %"$gasrem_3894" = load i64, i64* @_gasrem + %"$gascmp_3895" = icmp ugt i64 1, %"$gasrem_3894" + br i1 %"$gascmp_3895", label %"$out_of_gas_3896", label %"$have_gas_3897" + +"$out_of_gas_3896": ; preds = %"$have_gas_3892" + call void @_out_of_gas() + br label %"$have_gas_3897" + +"$have_gas_3897": ; preds = %"$out_of_gas_3896", %"$have_gas_3892" + %"$consume_3898" = sub i64 %"$gasrem_3894", 1 + store i64 %"$consume_3898", i64* @_gasrem + %"$eConfigured_77" = alloca { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } + %"$eConfigured_3899" = load { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eConfigured + %"$eConfigured_fptr_3900" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_3899", 0 + %"$eConfigured_envptr_3901" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_3899", 1 + %"$eConfigured_node_3902" = alloca [32 x i8] + store [32 x i8] %node, [32 x i8]* %"$eConfigured_node_3902" + %"$eConfigured_call_3903" = call { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_fptr_3900"(i8* %"$eConfigured_envptr_3901", [32 x i8]* %"$eConfigured_node_3902") + store { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_call_3903", { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_77" + %"$eConfigured_78" = alloca { i8* (i8*, [20 x i8]*)*, i8* } + %"$$eConfigured_77_3904" = load { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_77" + %"$$eConfigured_77_fptr_3905" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_77_3904", 0 + %"$$eConfigured_77_envptr_3906" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_77_3904", 1 + %"$$eConfigured_77_recordOwner_3907" = alloca [20 x i8] + %"$recordOwner_3908" = load [20 x i8], [20 x i8]* %recordOwner + store [20 x i8] %"$recordOwner_3908", [20 x i8]* %"$$eConfigured_77_recordOwner_3907" + %"$$eConfigured_77_call_3909" = call { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_77_fptr_3905"(i8* %"$$eConfigured_77_envptr_3906", [20 x i8]* %"$$eConfigured_77_recordOwner_3907") + store { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_77_call_3909", { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_78" + %"$eConfigured_79" = alloca i8* + %"$$eConfigured_78_3910" = load { i8* (i8*, [20 x i8]*)*, i8* }, { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_78" + %"$$eConfigured_78_fptr_3911" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_78_3910", 0 + %"$$eConfigured_78_envptr_3912" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_78_3910", 1 + %"$$eConfigured_78_resolver_3913" = alloca [20 x i8] + store [20 x i8] %resolver, [20 x i8]* %"$$eConfigured_78_resolver_3913" + %"$$eConfigured_78_call_3914" = call i8* %"$$eConfigured_78_fptr_3911"(i8* %"$$eConfigured_78_envptr_3912", [20 x i8]* %"$$eConfigured_78_resolver_3913") + store i8* %"$$eConfigured_78_call_3914", i8** %"$eConfigured_79" + %"$$eConfigured_79_3915" = load i8*, i8** %"$eConfigured_79" + store i8* %"$$eConfigured_79_3915", i8** %e + %"$e_3916" = load i8*, i8** %e + %"$_literal_cost_call_3918" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_3916") + %"$gasrem_3919" = load i64, i64* @_gasrem + %"$gascmp_3920" = icmp ugt i64 %"$_literal_cost_call_3918", %"$gasrem_3919" + br i1 %"$gascmp_3920", label %"$out_of_gas_3921", label %"$have_gas_3922" + +"$out_of_gas_3921": ; preds = %"$have_gas_3897" + call void @_out_of_gas() + br label %"$have_gas_3922" + +"$have_gas_3922": ; preds = %"$out_of_gas_3921", %"$have_gas_3897" + %"$consume_3923" = sub i64 %"$gasrem_3919", %"$_literal_cost_call_3918" + store i64 %"$consume_3923", i64* @_gasrem + %"$execptr_load_3924" = load i8*, i8** @_execptr + %"$e_3925" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_3924", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_3925") + br label %"$matchsucc_3851" + +"$False_3926": ; preds = %"$have_gas_3849" + %"$isSenderOAO_3927" = bitcast %TName_Bool* %"$isSenderOAO_3852" to %CName_False* + %"$gasrem_3928" = load i64, i64* @_gasrem + %"$gascmp_3929" = icmp ugt i64 1, %"$gasrem_3928" + br i1 %"$gascmp_3929", label %"$out_of_gas_3930", label %"$have_gas_3931" + +"$out_of_gas_3930": ; preds = %"$False_3926" + call void @_out_of_gas() + br label %"$have_gas_3931" + +"$have_gas_3931": ; preds = %"$out_of_gas_3930", %"$False_3926" + %"$consume_3932" = sub i64 %"$gasrem_3928", 1 + store i64 %"$consume_3932", i64* @_gasrem %e4 = alloca i8* + %"$gasrem_3933" = load i64, i64* @_gasrem + %"$gascmp_3934" = icmp ugt i64 1, %"$gasrem_3933" + br i1 %"$gascmp_3934", label %"$out_of_gas_3935", label %"$have_gas_3936" + +"$out_of_gas_3935": ; preds = %"$have_gas_3931" + call void @_out_of_gas() + br label %"$have_gas_3936" + +"$have_gas_3936": ; preds = %"$out_of_gas_3935", %"$have_gas_3931" + %"$consume_3937" = sub i64 %"$gasrem_3933", 1 + store i64 %"$consume_3937", i64* @_gasrem %m = alloca %String - store %String { i8* getelementptr inbounds ([43 x i8], [43 x i8]* @"$stringlit_2438", i32 0, i32 0), i32 43 }, %String* %m - %"$eError_83" = alloca i8* - %"$eError_2439" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* @eError - %"$eError_fptr_2440" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_2439", 0 - %"$eError_envptr_2441" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_2439", 1 - %"$m_2442" = load %String, %String* %m - %"$eError_call_2443" = call i8* %"$eError_fptr_2440"(i8* %"$eError_envptr_2441", %String %"$m_2442") - store i8* %"$eError_call_2443", i8** %"$eError_83" - %"$$eError_83_2444" = load i8*, i8** %"$eError_83" - store i8* %"$$eError_83_2444", i8** %e4 - %"$execptr_load_2445" = load i8*, i8** @_execptr - %"$e_2446" = load i8*, i8** %e4 - call void @_event(i8* %"$execptr_load_2445", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_2446") - br label %"$matchsucc_2398" - -"$empty_default_2402": ; preds = %entry - br label %"$matchsucc_2398" - -"$matchsucc_2398": ; preds = %"$False_2436", %"$True_2403", %"$empty_default_2402" + %"$gasrem_3938" = load i64, i64* @_gasrem + %"$gascmp_3939" = icmp ugt i64 1, %"$gasrem_3938" + br i1 %"$gascmp_3939", label %"$out_of_gas_3940", label %"$have_gas_3941" + +"$out_of_gas_3940": ; preds = %"$have_gas_3936" + call void @_out_of_gas() + br label %"$have_gas_3941" + +"$have_gas_3941": ; preds = %"$out_of_gas_3940", %"$have_gas_3936" + %"$consume_3942" = sub i64 %"$gasrem_3938", 1 + store i64 %"$consume_3942", i64* @_gasrem + store %String { i8* getelementptr inbounds ([43 x i8], [43 x i8]* @"$stringlit_3943", i32 0, i32 0), i32 43 }, %String* %m + %"$gasrem_3944" = load i64, i64* @_gasrem + %"$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_3941" + call void @_out_of_gas() + br label %"$have_gas_3947" + +"$have_gas_3947": ; preds = %"$out_of_gas_3946", %"$have_gas_3941" + %"$consume_3948" = sub i64 %"$gasrem_3944", 1 + store i64 %"$consume_3948", i64* @_gasrem + %"$eError_80" = alloca i8* + %"$eError_3949" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* @eError + %"$eError_fptr_3950" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_3949", 0 + %"$eError_envptr_3951" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_3949", 1 + %"$m_3952" = load %String, %String* %m + %"$eError_call_3953" = call i8* %"$eError_fptr_3950"(i8* %"$eError_envptr_3951", %String %"$m_3952") + store i8* %"$eError_call_3953", i8** %"$eError_80" + %"$$eError_80_3954" = load i8*, i8** %"$eError_80" + store i8* %"$$eError_80_3954", i8** %e4 + %"$e_3955" = load i8*, i8** %e4 + %"$_literal_cost_call_3957" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_3955") + %"$gasrem_3958" = load i64, i64* @_gasrem + %"$gascmp_3959" = icmp ugt i64 %"$_literal_cost_call_3957", %"$gasrem_3958" + br i1 %"$gascmp_3959", label %"$out_of_gas_3960", label %"$have_gas_3961" + +"$out_of_gas_3960": ; preds = %"$have_gas_3947" + call void @_out_of_gas() + br label %"$have_gas_3961" + +"$have_gas_3961": ; preds = %"$out_of_gas_3960", %"$have_gas_3947" + %"$consume_3962" = sub i64 %"$gasrem_3958", %"$_literal_cost_call_3957" + store i64 %"$consume_3962", i64* @_gasrem + %"$execptr_load_3963" = load i8*, i8** @_execptr + %"$e_3964" = load i8*, i8** %e4 + call void @_event(i8* %"$execptr_load_3963", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_3964") + br label %"$matchsucc_3851" + +"$empty_default_3855": ; preds = %"$have_gas_3849" + br label %"$matchsucc_3851" + +"$matchsucc_3851": ; preds = %"$have_gas_3961", %"$have_gas_3922", %"$empty_default_3855" ret void } define void @configureResolver(i8* %0) { entry: - %"$_amount_2448" = getelementptr i8, i8* %0, i32 0 - %"$_amount_2449" = bitcast i8* %"$_amount_2448" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_2449" - %"$_sender_2450" = getelementptr i8, i8* %0, i32 16 - %"$_sender_2451" = bitcast i8* %"$_sender_2450" to [20 x i8]* - %"$node_2452" = getelementptr i8, i8* %0, i32 36 - %"$node_2453" = bitcast i8* %"$node_2452" to [32 x i8]* - %"$resolver_2454" = getelementptr i8, i8* %0, i32 68 - %"$resolver_2455" = bitcast i8* %"$resolver_2454" to [20 x i8]* - call void @"$configureResolver_2346"(%Uint128 %_amount, [20 x i8]* %"$_sender_2451", [32 x i8]* %"$node_2453", [20 x i8]* %"$resolver_2455") + %"$_amount_3966" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3967" = bitcast i8* %"$_amount_3966" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3967" + %"$_sender_3968" = getelementptr i8, i8* %0, i32 16 + %"$_sender_3969" = bitcast i8* %"$_sender_3968" to [20 x i8]* + %"$node_3970" = getelementptr i8, i8* %0, i32 36 + %"$node_3971" = bitcast i8* %"$node_3970" to [32 x i8]* + %"$resolver_3972" = getelementptr i8, i8* %0, i32 68 + %"$resolver_3973" = bitcast i8* %"$resolver_3972" to [20 x i8]* + call void @"$configureResolver_3744"(%Uint128 %_amount, [20 x i8]* %"$_sender_3969", [32 x i8]* %"$node_3971", [20 x i8]* %"$resolver_3973") ret void } -define internal void @"$transfer_2456"(%Uint128 %_amount, [20 x i8]* %"$_sender_2457", [32 x i8]* %"$node_2458", [20 x i8]* %"$owner_2459") { +define internal void @"$transfer_3974"(%Uint128 %_amount, [20 x i8]* %"$_sender_3975", [32 x i8]* %"$node_3976", [20 x i8]* %"$owner_3977") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_2457" - %node = load [32 x i8], [32 x i8]* %"$node_2458" - %owner = load [20 x i8], [20 x i8]* %"$owner_2459" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3975" + %node = load [32 x i8], [32 x i8]* %"$node_3976" + %owner = load [20 x i8], [20 x i8]* %"$owner_3977" %maybeRecord = alloca %TName_Option_Record* - %"$indices_buf_2460_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2460_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2460_salloc_load", i64 32) - %"$indices_buf_2460_salloc" = bitcast i8* %"$indices_buf_2460_salloc_salloc" to [32 x i8]* - %"$indices_buf_2460" = bitcast [32 x i8]* %"$indices_buf_2460_salloc" to i8* - %"$indices_gep_2461" = getelementptr i8, i8* %"$indices_buf_2460", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_2461" to [32 x i8]* + %"$indices_buf_3978_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3978_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3978_salloc_load", i64 32) + %"$indices_buf_3978_salloc" = bitcast i8* %"$indices_buf_3978_salloc_salloc" to [32 x i8]* + %"$indices_buf_3978" = bitcast [32 x i8]* %"$indices_buf_3978_salloc" to i8* + %"$indices_gep_3979" = getelementptr i8, i8* %"$indices_buf_3978", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_3979" to [32 x i8]* store [32 x i8] %node, [32 x i8]* %indices_cast - %"$execptr_load_2462" = load i8*, i8** @_execptr - %"$maybeRecord_2464" = call i8* @_fetch_field(i8* %"$execptr_load_2462", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_2463", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_325", i32 1, i8* %"$indices_buf_2460", i32 1) - %"$maybeRecord_2465" = bitcast i8* %"$maybeRecord_2464" to %TName_Option_Record* - store %TName_Option_Record* %"$maybeRecord_2465", %TName_Option_Record** %maybeRecord + %"$execptr_load_3980" = load i8*, i8** @_execptr + %"$maybeRecord_3982" = call i8* @_fetch_field(i8* %"$execptr_load_3980", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_3981", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_322", i32 1, i8* %"$indices_buf_3978", i32 1) + %"$maybeRecord_3983" = bitcast i8* %"$maybeRecord_3982" to %TName_Option_Record* + store %TName_Option_Record* %"$maybeRecord_3983", %TName_Option_Record** %maybeRecord + %"$maybeRecord_3984" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord + %"$$maybeRecord_3984_3985" = bitcast %TName_Option_Record* %"$maybeRecord_3984" to i8* + %"$_literal_cost_call_3986" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Record_313", i8* %"$$maybeRecord_3984_3985") + %"$gasadd_3987" = add i64 %"$_literal_cost_call_3986", 0 + %"$gasadd_3988" = add i64 %"$gasadd_3987", 1 + %"$gasrem_3989" = load i64, i64* @_gasrem + %"$gascmp_3990" = icmp ugt i64 %"$gasadd_3988", %"$gasrem_3989" + br i1 %"$gascmp_3990", label %"$out_of_gas_3991", label %"$have_gas_3992" + +"$out_of_gas_3991": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3992" + +"$have_gas_3992": ; preds = %"$out_of_gas_3991", %entry + %"$consume_3993" = sub i64 %"$gasrem_3989", %"$gasadd_3988" + store i64 %"$consume_3993", i64* @_gasrem %maybeApproved = alloca %TName_Option_ByStr20* - %"$indices_buf_2466_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2466_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2466_salloc_load", i64 32) - %"$indices_buf_2466_salloc" = bitcast i8* %"$indices_buf_2466_salloc_salloc" to [32 x i8]* - %"$indices_buf_2466" = bitcast [32 x i8]* %"$indices_buf_2466_salloc" to i8* - %"$indices_gep_2467" = getelementptr i8, i8* %"$indices_buf_2466", i32 0 - %indices_cast1 = bitcast i8* %"$indices_gep_2467" to [32 x i8]* + %"$indices_buf_3994_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3994_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3994_salloc_load", i64 32) + %"$indices_buf_3994_salloc" = bitcast i8* %"$indices_buf_3994_salloc_salloc" to [32 x i8]* + %"$indices_buf_3994" = bitcast [32 x i8]* %"$indices_buf_3994_salloc" to i8* + %"$indices_gep_3995" = getelementptr i8, i8* %"$indices_buf_3994", i32 0 + %indices_cast1 = bitcast i8* %"$indices_gep_3995" to [32 x i8]* store [32 x i8] %node, [32 x i8]* %indices_cast1 - %"$execptr_load_2468" = load i8*, i8** @_execptr - %"$maybeApproved_2470" = call i8* @_fetch_field(i8* %"$execptr_load_2468", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_2469", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_324", i32 1, i8* %"$indices_buf_2466", i32 1) - %"$maybeApproved_2471" = bitcast i8* %"$maybeApproved_2470" to %TName_Option_ByStr20* - store %TName_Option_ByStr20* %"$maybeApproved_2471", %TName_Option_ByStr20** %maybeApproved + %"$execptr_load_3996" = load i8*, i8** @_execptr + %"$maybeApproved_3998" = call i8* @_fetch_field(i8* %"$execptr_load_3996", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_3997", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_321", i32 1, i8* %"$indices_buf_3994", i32 1) + %"$maybeApproved_3999" = bitcast i8* %"$maybeApproved_3998" to %TName_Option_ByStr20* + store %TName_Option_ByStr20* %"$maybeApproved_3999", %TName_Option_ByStr20** %maybeApproved + %"$maybeApproved_4000" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved + %"$$maybeApproved_4000_4001" = bitcast %TName_Option_ByStr20* %"$maybeApproved_4000" to i8* + %"$_literal_cost_call_4002" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_ByStr20_314", i8* %"$$maybeApproved_4000_4001") + %"$gasadd_4003" = add i64 %"$_literal_cost_call_4002", 0 + %"$gasadd_4004" = add i64 %"$gasadd_4003", 1 + %"$gasrem_4005" = load i64, i64* @_gasrem + %"$gascmp_4006" = icmp ugt i64 %"$gasadd_4004", %"$gasrem_4005" + br i1 %"$gascmp_4006", label %"$out_of_gas_4007", label %"$have_gas_4008" + +"$out_of_gas_4007": ; preds = %"$have_gas_3992" + call void @_out_of_gas() + br label %"$have_gas_4008" + +"$have_gas_4008": ; preds = %"$out_of_gas_4007", %"$have_gas_3992" + %"$consume_4009" = sub i64 %"$gasrem_4005", %"$gasadd_4004" + store i64 %"$consume_4009", i64* @_gasrem + %"$gasrem_4010" = load i64, i64* @_gasrem + %"$gascmp_4011" = icmp ugt i64 1, %"$gasrem_4010" + br i1 %"$gascmp_4011", label %"$out_of_gas_4012", label %"$have_gas_4013" + +"$out_of_gas_4012": ; preds = %"$have_gas_4008" + call void @_out_of_gas() + br label %"$have_gas_4013" + +"$have_gas_4013": ; preds = %"$out_of_gas_4012", %"$have_gas_4008" + %"$consume_4014" = sub i64 %"$gasrem_4010", 1 + store i64 %"$consume_4014", i64* @_gasrem %recordOwner = alloca [20 x i8] - %"$recordMemberOwner_99" = alloca [20 x i8] - %"$recordMemberOwner_2472" = load { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }, { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }* @recordMemberOwner - %"$recordMemberOwner_fptr_2473" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_2472", 0 - %"$recordMemberOwner_envptr_2474" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_2472", 1 - %"$maybeRecord_2475" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord - %"$recordMemberOwner_retalloca_2476" = alloca [20 x i8] - call void %"$recordMemberOwner_fptr_2473"(i8* %"$recordMemberOwner_envptr_2474", [20 x i8]* %"$recordMemberOwner_retalloca_2476", %TName_Option_Record* %"$maybeRecord_2475") - %"$recordMemberOwner_ret_2477" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_retalloca_2476" - store [20 x i8] %"$recordMemberOwner_ret_2477", [20 x i8]* %"$recordMemberOwner_99" - %"$$recordMemberOwner_99_2478" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_99" - store [20 x i8] %"$$recordMemberOwner_99_2478", [20 x i8]* %recordOwner + %"$gasrem_4015" = load i64, i64* @_gasrem + %"$gascmp_4016" = icmp ugt i64 1, %"$gasrem_4015" + br i1 %"$gascmp_4016", label %"$out_of_gas_4017", label %"$have_gas_4018" + +"$out_of_gas_4017": ; preds = %"$have_gas_4013" + call void @_out_of_gas() + br label %"$have_gas_4018" + +"$have_gas_4018": ; preds = %"$out_of_gas_4017", %"$have_gas_4013" + %"$consume_4019" = sub i64 %"$gasrem_4015", 1 + store i64 %"$consume_4019", i64* @_gasrem + %"$recordMemberOwner_96" = alloca [20 x i8] + %"$recordMemberOwner_4020" = load { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }, { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }* @recordMemberOwner + %"$recordMemberOwner_fptr_4021" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_4020", 0 + %"$recordMemberOwner_envptr_4022" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_4020", 1 + %"$maybeRecord_4023" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord + %"$recordMemberOwner_retalloca_4024" = alloca [20 x i8] + call void %"$recordMemberOwner_fptr_4021"(i8* %"$recordMemberOwner_envptr_4022", [20 x i8]* %"$recordMemberOwner_retalloca_4024", %TName_Option_Record* %"$maybeRecord_4023") + %"$recordMemberOwner_ret_4025" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_retalloca_4024" + store [20 x i8] %"$recordMemberOwner_ret_4025", [20 x i8]* %"$recordMemberOwner_96" + %"$$recordMemberOwner_96_4026" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_96" + store [20 x i8] %"$$recordMemberOwner_96_4026", [20 x i8]* %recordOwner %maybeOperators = alloca %"TName_Option_List_(ByStr20)"* - %"$indices_buf_2479_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2479_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2479_salloc_load", i64 20) - %"$indices_buf_2479_salloc" = bitcast i8* %"$indices_buf_2479_salloc_salloc" to [20 x i8]* - %"$indices_buf_2479" = bitcast [20 x i8]* %"$indices_buf_2479_salloc" to i8* - %"$recordOwner_2480" = load [20 x i8], [20 x i8]* %recordOwner - %"$indices_gep_2481" = getelementptr i8, i8* %"$indices_buf_2479", i32 0 - %indices_cast2 = bitcast i8* %"$indices_gep_2481" to [20 x i8]* - store [20 x i8] %"$recordOwner_2480", [20 x i8]* %indices_cast2 - %"$execptr_load_2482" = load i8*, i8** @_execptr - %"$maybeOperators_2484" = call i8* @_fetch_field(i8* %"$execptr_load_2482", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$operators_2483", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_323", i32 1, i8* %"$indices_buf_2479", i32 1) - %"$maybeOperators_2485" = bitcast i8* %"$maybeOperators_2484" to %"TName_Option_List_(ByStr20)"* - store %"TName_Option_List_(ByStr20)"* %"$maybeOperators_2485", %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$indices_buf_4027_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_4027_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4027_salloc_load", i64 20) + %"$indices_buf_4027_salloc" = bitcast i8* %"$indices_buf_4027_salloc_salloc" to [20 x i8]* + %"$indices_buf_4027" = bitcast [20 x i8]* %"$indices_buf_4027_salloc" to i8* + %"$recordOwner_4028" = load [20 x i8], [20 x i8]* %recordOwner + %"$indices_gep_4029" = getelementptr i8, i8* %"$indices_buf_4027", i32 0 + %indices_cast2 = bitcast i8* %"$indices_gep_4029" to [20 x i8]* + store [20 x i8] %"$recordOwner_4028", [20 x i8]* %indices_cast2 + %"$execptr_load_4030" = load i8*, i8** @_execptr + %"$maybeOperators_4032" = call i8* @_fetch_field(i8* %"$execptr_load_4030", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$operators_4031", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_320", i32 1, i8* %"$indices_buf_4027", i32 1) + %"$maybeOperators_4033" = bitcast i8* %"$maybeOperators_4032" to %"TName_Option_List_(ByStr20)"* + store %"TName_Option_List_(ByStr20)"* %"$maybeOperators_4033", %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$maybeOperators_4034" = load %"TName_Option_List_(ByStr20)"*, %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$$maybeOperators_4034_4035" = bitcast %"TName_Option_List_(ByStr20)"* %"$maybeOperators_4034" to i8* + %"$_literal_cost_call_4036" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_List_(ByStr20)_312", i8* %"$$maybeOperators_4034_4035") + %"$gasadd_4037" = add i64 %"$_literal_cost_call_4036", 0 + %"$gasadd_4038" = add i64 %"$gasadd_4037", 1 + %"$gasrem_4039" = load i64, i64* @_gasrem + %"$gascmp_4040" = icmp ugt i64 %"$gasadd_4038", %"$gasrem_4039" + br i1 %"$gascmp_4040", label %"$out_of_gas_4041", label %"$have_gas_4042" + +"$out_of_gas_4041": ; preds = %"$have_gas_4018" + call void @_out_of_gas() + br label %"$have_gas_4042" + +"$have_gas_4042": ; preds = %"$out_of_gas_4041", %"$have_gas_4018" + %"$consume_4043" = sub i64 %"$gasrem_4039", %"$gasadd_4038" + store i64 %"$consume_4043", i64* @_gasrem + %"$gasrem_4044" = load i64, i64* @_gasrem + %"$gascmp_4045" = icmp ugt i64 1, %"$gasrem_4044" + br i1 %"$gascmp_4045", label %"$out_of_gas_4046", label %"$have_gas_4047" + +"$out_of_gas_4046": ; preds = %"$have_gas_4042" + call void @_out_of_gas() + br label %"$have_gas_4047" + +"$have_gas_4047": ; preds = %"$out_of_gas_4046", %"$have_gas_4042" + %"$consume_4048" = sub i64 %"$gasrem_4044", 1 + store i64 %"$consume_4048", i64* @_gasrem %isSenderOAO = alloca %TName_Bool* - %"$getIsOAO_95" = alloca { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$getIsOAO_2486" = load { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @getIsOAO - %"$getIsOAO_fptr_2487" = extractvalue { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_2486", 0 - %"$getIsOAO_envptr_2488" = extractvalue { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_2486", 1 - %"$getIsOAO__sender_2489" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$getIsOAO__sender_2489" - %"$getIsOAO_call_2490" = call { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_fptr_2487"(i8* %"$getIsOAO_envptr_2488", [20 x i8]* %"$getIsOAO__sender_2489") - store { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_call_2490", { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$getIsOAO_95" - %"$getIsOAO_96" = alloca { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } - %"$$getIsOAO_95_2491" = load { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$getIsOAO_95" - %"$$getIsOAO_95_fptr_2492" = extractvalue { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$getIsOAO_95_2491", 0 - %"$$getIsOAO_95_envptr_2493" = extractvalue { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$getIsOAO_95_2491", 1 - %"$$getIsOAO_95_recordOwner_2494" = alloca [20 x i8] - %"$recordOwner_2495" = load [20 x i8], [20 x i8]* %recordOwner - store [20 x i8] %"$recordOwner_2495", [20 x i8]* %"$$getIsOAO_95_recordOwner_2494" - %"$$getIsOAO_95_call_2496" = call { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_95_fptr_2492"(i8* %"$$getIsOAO_95_envptr_2493", [20 x i8]* %"$$getIsOAO_95_recordOwner_2494") - store { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_95_call_2496", { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$getIsOAO_96" - %"$getIsOAO_97" = alloca { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } - %"$$getIsOAO_96_2497" = load { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$getIsOAO_96" - %"$$getIsOAO_96_fptr_2498" = extractvalue { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_96_2497", 0 - %"$$getIsOAO_96_envptr_2499" = extractvalue { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_96_2497", 1 - %"$maybeApproved_2500" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved - %"$$getIsOAO_96_call_2501" = call { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_96_fptr_2498"(i8* %"$$getIsOAO_96_envptr_2499", %TName_Option_ByStr20* %"$maybeApproved_2500") - store { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_96_call_2501", { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$getIsOAO_97" - %"$getIsOAO_98" = alloca %TName_Bool* - %"$$getIsOAO_97_2502" = load { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }, { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$getIsOAO_97" - %"$$getIsOAO_97_fptr_2503" = extractvalue { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_97_2502", 0 - %"$$getIsOAO_97_envptr_2504" = extractvalue { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_97_2502", 1 - %"$maybeOperators_2505" = load %"TName_Option_List_(ByStr20)"*, %"TName_Option_List_(ByStr20)"** %maybeOperators - %"$$getIsOAO_97_call_2506" = call %TName_Bool* %"$$getIsOAO_97_fptr_2503"(i8* %"$$getIsOAO_97_envptr_2504", %"TName_Option_List_(ByStr20)"* %"$maybeOperators_2505") - store %TName_Bool* %"$$getIsOAO_97_call_2506", %TName_Bool** %"$getIsOAO_98" - %"$$getIsOAO_98_2507" = load %TName_Bool*, %TName_Bool** %"$getIsOAO_98" - store %TName_Bool* %"$$getIsOAO_98_2507", %TName_Bool** %isSenderOAO - %"$isSenderOAO_2509" = load %TName_Bool*, %TName_Bool** %isSenderOAO - %"$isSenderOAO_tag_2510" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isSenderOAO_2509", i32 0, i32 0 - %"$isSenderOAO_tag_2511" = load i8, i8* %"$isSenderOAO_tag_2510" - switch i8 %"$isSenderOAO_tag_2511", label %"$empty_default_2512" [ - i8 0, label %"$True_2513" - i8 1, label %"$False_2596" + %"$gasrem_4049" = load i64, i64* @_gasrem + %"$gascmp_4050" = icmp ugt i64 1, %"$gasrem_4049" + br i1 %"$gascmp_4050", label %"$out_of_gas_4051", label %"$have_gas_4052" + +"$out_of_gas_4051": ; preds = %"$have_gas_4047" + call void @_out_of_gas() + br label %"$have_gas_4052" + +"$have_gas_4052": ; preds = %"$out_of_gas_4051", %"$have_gas_4047" + %"$consume_4053" = sub i64 %"$gasrem_4049", 1 + store i64 %"$consume_4053", i64* @_gasrem + %"$getIsOAO_92" = alloca { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } + %"$getIsOAO_4054" = load { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @getIsOAO + %"$getIsOAO_fptr_4055" = extractvalue { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_4054", 0 + %"$getIsOAO_envptr_4056" = extractvalue { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_4054", 1 + %"$getIsOAO__sender_4057" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$getIsOAO__sender_4057" + %"$getIsOAO_call_4058" = call { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_fptr_4055"(i8* %"$getIsOAO_envptr_4056", [20 x i8]* %"$getIsOAO__sender_4057") + store { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_call_4058", { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$getIsOAO_92" + %"$getIsOAO_93" = alloca { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } + %"$$getIsOAO_92_4059" = load { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$getIsOAO_92" + %"$$getIsOAO_92_fptr_4060" = extractvalue { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$getIsOAO_92_4059", 0 + %"$$getIsOAO_92_envptr_4061" = extractvalue { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$getIsOAO_92_4059", 1 + %"$$getIsOAO_92_recordOwner_4062" = alloca [20 x i8] + %"$recordOwner_4063" = load [20 x i8], [20 x i8]* %recordOwner + store [20 x i8] %"$recordOwner_4063", [20 x i8]* %"$$getIsOAO_92_recordOwner_4062" + %"$$getIsOAO_92_call_4064" = call { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_92_fptr_4060"(i8* %"$$getIsOAO_92_envptr_4061", [20 x i8]* %"$$getIsOAO_92_recordOwner_4062") + store { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_92_call_4064", { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$getIsOAO_93" + %"$getIsOAO_94" = alloca { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } + %"$$getIsOAO_93_4065" = load { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$getIsOAO_93" + %"$$getIsOAO_93_fptr_4066" = extractvalue { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_93_4065", 0 + %"$$getIsOAO_93_envptr_4067" = extractvalue { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_93_4065", 1 + %"$maybeApproved_4068" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved + %"$$getIsOAO_93_call_4069" = call { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_93_fptr_4066"(i8* %"$$getIsOAO_93_envptr_4067", %TName_Option_ByStr20* %"$maybeApproved_4068") + store { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_93_call_4069", { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$getIsOAO_94" + %"$getIsOAO_95" = alloca %TName_Bool* + %"$$getIsOAO_94_4070" = load { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }, { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$getIsOAO_94" + %"$$getIsOAO_94_fptr_4071" = extractvalue { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_94_4070", 0 + %"$$getIsOAO_94_envptr_4072" = extractvalue { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_94_4070", 1 + %"$maybeOperators_4073" = load %"TName_Option_List_(ByStr20)"*, %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$$getIsOAO_94_call_4074" = call %TName_Bool* %"$$getIsOAO_94_fptr_4071"(i8* %"$$getIsOAO_94_envptr_4072", %"TName_Option_List_(ByStr20)"* %"$maybeOperators_4073") + store %TName_Bool* %"$$getIsOAO_94_call_4074", %TName_Bool** %"$getIsOAO_95" + %"$$getIsOAO_95_4075" = load %TName_Bool*, %TName_Bool** %"$getIsOAO_95" + store %TName_Bool* %"$$getIsOAO_95_4075", %TName_Bool** %isSenderOAO + %"$gasrem_4076" = load i64, i64* @_gasrem + %"$gascmp_4077" = icmp ugt i64 2, %"$gasrem_4076" + br i1 %"$gascmp_4077", label %"$out_of_gas_4078", label %"$have_gas_4079" + +"$out_of_gas_4078": ; preds = %"$have_gas_4052" + call void @_out_of_gas() + br label %"$have_gas_4079" + +"$have_gas_4079": ; preds = %"$out_of_gas_4078", %"$have_gas_4052" + %"$consume_4080" = sub i64 %"$gasrem_4076", 2 + store i64 %"$consume_4080", i64* @_gasrem + %"$isSenderOAO_4082" = load %TName_Bool*, %TName_Bool** %isSenderOAO + %"$isSenderOAO_tag_4083" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isSenderOAO_4082", i32 0, i32 0 + %"$isSenderOAO_tag_4084" = load i8, i8* %"$isSenderOAO_tag_4083" + switch i8 %"$isSenderOAO_tag_4084", label %"$empty_default_4085" [ + i8 0, label %"$True_4086" + i8 1, label %"$False_4239" ] -"$True_2513": ; preds = %entry - %"$isSenderOAO_2514" = bitcast %TName_Bool* %"$isSenderOAO_2509" to %CName_True* - %"$indices_buf_2515_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2515_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2515_salloc_load", i64 32) - %"$indices_buf_2515_salloc" = bitcast i8* %"$indices_buf_2515_salloc_salloc" to [32 x i8]* - %"$indices_buf_2515" = bitcast [32 x i8]* %"$indices_buf_2515_salloc" to i8* - %"$indices_gep_2516" = getelementptr i8, i8* %"$indices_buf_2515", i32 0 - %indices_cast3 = bitcast i8* %"$indices_gep_2516" to [32 x i8]* +"$True_4086": ; preds = %"$have_gas_4079" + %"$isSenderOAO_4087" = bitcast %TName_Bool* %"$isSenderOAO_4082" to %CName_True* + %"$gasrem_4088" = load i64, i64* @_gasrem + %"$gascmp_4089" = icmp ugt i64 1, %"$gasrem_4088" + br i1 %"$gascmp_4089", label %"$out_of_gas_4090", label %"$have_gas_4091" + +"$out_of_gas_4090": ; preds = %"$True_4086" + call void @_out_of_gas() + br label %"$have_gas_4091" + +"$have_gas_4091": ; preds = %"$out_of_gas_4090", %"$True_4086" + %"$consume_4092" = sub i64 %"$gasrem_4088", 1 + store i64 %"$consume_4092", i64* @_gasrem + %"$indices_buf_4093_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_4093_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4093_salloc_load", i64 32) + %"$indices_buf_4093_salloc" = bitcast i8* %"$indices_buf_4093_salloc_salloc" to [32 x i8]* + %"$indices_buf_4093" = bitcast [32 x i8]* %"$indices_buf_4093_salloc" to i8* + %"$indices_gep_4094" = getelementptr i8, i8* %"$indices_buf_4093", i32 0 + %indices_cast3 = bitcast i8* %"$indices_gep_4094" to [32 x i8]* store [32 x i8] %node, [32 x i8]* %indices_cast3 - %"$execptr_load_2517" = load i8*, i8** @_execptr - call void @_update_field(i8* %"$execptr_load_2517", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_2518", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_324", i32 1, i8* %"$indices_buf_2515", i8* null) + %"$execptr_load_4095" = load i8*, i8** @_execptr + call void @_update_field(i8* %"$execptr_load_4095", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_4096", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_321", i32 1, i8* %"$indices_buf_4093", i8* null) + %"$gasrem_4097" = load i64, i64* @_gasrem + %"$gascmp_4098" = icmp ugt i64 1, %"$gasrem_4097" + br i1 %"$gascmp_4098", label %"$out_of_gas_4099", label %"$have_gas_4100" + +"$out_of_gas_4099": ; preds = %"$have_gas_4091" + call void @_out_of_gas() + br label %"$have_gas_4100" + +"$have_gas_4100": ; preds = %"$out_of_gas_4099", %"$have_gas_4091" + %"$consume_4101" = sub i64 %"$gasrem_4097", 1 + store i64 %"$consume_4101", i64* @_gasrem %newRecord = alloca %TName_Record* - %"$zeroByStr20_2519" = load [20 x i8], [20 x i8]* @zeroByStr20 - %"$adtval_2520_load" = load i8*, i8** @_execptr - %"$adtval_2520_salloc" = call i8* @_salloc(i8* %"$adtval_2520_load", i64 41) - %"$adtval_2520" = bitcast i8* %"$adtval_2520_salloc" to %CName_Record* - %"$adtgep_2521" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_2520", i32 0, i32 0 - store i8 0, i8* %"$adtgep_2521" - %"$adtgep_2522" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_2520", i32 0, i32 1 - store [20 x i8] %owner, [20 x i8]* %"$adtgep_2522" - %"$adtgep_2523" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_2520", i32 0, i32 2 - store [20 x i8] %"$zeroByStr20_2519", [20 x i8]* %"$adtgep_2523" - %"$adtptr_2524" = bitcast %CName_Record* %"$adtval_2520" to %TName_Record* - store %TName_Record* %"$adtptr_2524", %TName_Record** %newRecord - %"$indices_buf_2525_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2525_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2525_salloc_load", i64 32) - %"$indices_buf_2525_salloc" = bitcast i8* %"$indices_buf_2525_salloc_salloc" to [32 x i8]* - %"$indices_buf_2525" = bitcast [32 x i8]* %"$indices_buf_2525_salloc" to i8* - %"$indices_gep_2526" = getelementptr i8, i8* %"$indices_buf_2525", i32 0 - %indices_cast4 = bitcast i8* %"$indices_gep_2526" to [32 x i8]* + %"$gasrem_4102" = load i64, i64* @_gasrem + %"$gascmp_4103" = icmp ugt i64 1, %"$gasrem_4102" + br i1 %"$gascmp_4103", label %"$out_of_gas_4104", label %"$have_gas_4105" + +"$out_of_gas_4104": ; preds = %"$have_gas_4100" + call void @_out_of_gas() + br label %"$have_gas_4105" + +"$have_gas_4105": ; preds = %"$out_of_gas_4104", %"$have_gas_4100" + %"$consume_4106" = sub i64 %"$gasrem_4102", 1 + store i64 %"$consume_4106", i64* @_gasrem + %"$zeroByStr20_4107" = load [20 x i8], [20 x i8]* @zeroByStr20 + %"$adtval_4108_load" = load i8*, i8** @_execptr + %"$adtval_4108_salloc" = call i8* @_salloc(i8* %"$adtval_4108_load", i64 41) + %"$adtval_4108" = bitcast i8* %"$adtval_4108_salloc" to %CName_Record* + %"$adtgep_4109" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_4108", i32 0, i32 0 + store i8 0, i8* %"$adtgep_4109" + %"$adtgep_4110" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_4108", i32 0, i32 1 + store [20 x i8] %owner, [20 x i8]* %"$adtgep_4110" + %"$adtgep_4111" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_4108", i32 0, i32 2 + store [20 x i8] %"$zeroByStr20_4107", [20 x i8]* %"$adtgep_4111" + %"$adtptr_4112" = bitcast %CName_Record* %"$adtval_4108" to %TName_Record* + store %TName_Record* %"$adtptr_4112", %TName_Record** %newRecord + %"$newRecord_4113" = load %TName_Record*, %TName_Record** %newRecord + %"$$newRecord_4113_4114" = bitcast %TName_Record* %"$newRecord_4113" to i8* + %"$_literal_cost_call_4115" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Record_315", i8* %"$$newRecord_4113_4114") + %"$gasadd_4116" = add i64 %"$_literal_cost_call_4115", 1 + %"$gasrem_4117" = load i64, i64* @_gasrem + %"$gascmp_4118" = icmp ugt i64 %"$gasadd_4116", %"$gasrem_4117" + br i1 %"$gascmp_4118", label %"$out_of_gas_4119", label %"$have_gas_4120" + +"$out_of_gas_4119": ; preds = %"$have_gas_4105" + call void @_out_of_gas() + br label %"$have_gas_4120" + +"$have_gas_4120": ; preds = %"$out_of_gas_4119", %"$have_gas_4105" + %"$consume_4121" = sub i64 %"$gasrem_4117", %"$gasadd_4116" + store i64 %"$consume_4121", i64* @_gasrem + %"$indices_buf_4122_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_4122_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4122_salloc_load", i64 32) + %"$indices_buf_4122_salloc" = bitcast i8* %"$indices_buf_4122_salloc_salloc" to [32 x i8]* + %"$indices_buf_4122" = bitcast [32 x i8]* %"$indices_buf_4122_salloc" to i8* + %"$indices_gep_4123" = getelementptr i8, i8* %"$indices_buf_4122", i32 0 + %indices_cast4 = bitcast i8* %"$indices_gep_4123" to [32 x i8]* store [32 x i8] %node, [32 x i8]* %indices_cast4 - %"$execptr_load_2527" = load i8*, i8** @_execptr - %"$newRecord_2529" = load %TName_Record*, %TName_Record** %newRecord - %"$update_value_2530" = bitcast %TName_Record* %"$newRecord_2529" to i8* - call void @_update_field(i8* %"$execptr_load_2527", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_2528", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_325", i32 1, i8* %"$indices_buf_2525", i8* %"$update_value_2530") + %"$execptr_load_4124" = load i8*, i8** @_execptr + %"$newRecord_4126" = load %TName_Record*, %TName_Record** %newRecord + %"$update_value_4127" = bitcast %TName_Record* %"$newRecord_4126" to i8* + call void @_update_field(i8* %"$execptr_load_4124", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_4125", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_322", i32 1, i8* %"$indices_buf_4122", i8* %"$update_value_4127") + %"$gasrem_4128" = load i64, i64* @_gasrem + %"$gascmp_4129" = icmp ugt i64 1, %"$gasrem_4128" + br i1 %"$gascmp_4129", label %"$out_of_gas_4130", label %"$have_gas_4131" + +"$out_of_gas_4130": ; preds = %"$have_gas_4120" + call void @_out_of_gas() + br label %"$have_gas_4131" + +"$have_gas_4131": ; preds = %"$out_of_gas_4130", %"$have_gas_4120" + %"$consume_4132" = sub i64 %"$gasrem_4128", 1 + store i64 %"$consume_4132", i64* @_gasrem %e = alloca i8* - %"$eConfigured_90" = alloca { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$eConfigured_2531" = load { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eConfigured - %"$eConfigured_fptr_2532" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_2531", 0 - %"$eConfigured_envptr_2533" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_2531", 1 - %"$eConfigured_node_2534" = alloca [32 x i8] - store [32 x i8] %node, [32 x i8]* %"$eConfigured_node_2534" - %"$eConfigured_call_2535" = call { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_fptr_2532"(i8* %"$eConfigured_envptr_2533", [32 x i8]* %"$eConfigured_node_2534") - store { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_call_2535", { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_90" - %"$eConfigured_91" = alloca { i8* (i8*, [20 x i8]*)*, i8* } - %"$$eConfigured_90_2536" = load { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_90" - %"$$eConfigured_90_fptr_2537" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_90_2536", 0 - %"$$eConfigured_90_envptr_2538" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_90_2536", 1 - %"$$eConfigured_90_owner_2539" = alloca [20 x i8] - store [20 x i8] %owner, [20 x i8]* %"$$eConfigured_90_owner_2539" - %"$$eConfigured_90_call_2540" = call { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_90_fptr_2537"(i8* %"$$eConfigured_90_envptr_2538", [20 x i8]* %"$$eConfigured_90_owner_2539") - store { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_90_call_2540", { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_91" - %"$eConfigured_92" = alloca i8* - %"$$eConfigured_91_2541" = load { i8* (i8*, [20 x i8]*)*, i8* }, { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_91" - %"$$eConfigured_91_fptr_2542" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_91_2541", 0 - %"$$eConfigured_91_envptr_2543" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_91_2541", 1 - %"$$eConfigured_91_zeroByStr20_2544" = alloca [20 x i8] - %"$zeroByStr20_2545" = load [20 x i8], [20 x i8]* @zeroByStr20 - store [20 x i8] %"$zeroByStr20_2545", [20 x i8]* %"$$eConfigured_91_zeroByStr20_2544" - %"$$eConfigured_91_call_2546" = call i8* %"$$eConfigured_91_fptr_2542"(i8* %"$$eConfigured_91_envptr_2543", [20 x i8]* %"$$eConfigured_91_zeroByStr20_2544") - store i8* %"$$eConfigured_91_call_2546", i8** %"$eConfigured_92" - %"$$eConfigured_92_2547" = load i8*, i8** %"$eConfigured_92" - store i8* %"$$eConfigured_92_2547", i8** %e - %"$execptr_load_2548" = load i8*, i8** @_execptr - %"$e_2549" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_2548", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_2549") + %"$gasrem_4133" = load i64, i64* @_gasrem + %"$gascmp_4134" = icmp ugt i64 1, %"$gasrem_4133" + br i1 %"$gascmp_4134", label %"$out_of_gas_4135", label %"$have_gas_4136" + +"$out_of_gas_4135": ; preds = %"$have_gas_4131" + call void @_out_of_gas() + br label %"$have_gas_4136" + +"$have_gas_4136": ; preds = %"$out_of_gas_4135", %"$have_gas_4131" + %"$consume_4137" = sub i64 %"$gasrem_4133", 1 + store i64 %"$consume_4137", i64* @_gasrem + %"$eConfigured_87" = alloca { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } + %"$eConfigured_4138" = load { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eConfigured + %"$eConfigured_fptr_4139" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_4138", 0 + %"$eConfigured_envptr_4140" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_4138", 1 + %"$eConfigured_node_4141" = alloca [32 x i8] + store [32 x i8] %node, [32 x i8]* %"$eConfigured_node_4141" + %"$eConfigured_call_4142" = call { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_fptr_4139"(i8* %"$eConfigured_envptr_4140", [32 x i8]* %"$eConfigured_node_4141") + store { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_call_4142", { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_87" + %"$eConfigured_88" = alloca { i8* (i8*, [20 x i8]*)*, i8* } + %"$$eConfigured_87_4143" = load { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_87" + %"$$eConfigured_87_fptr_4144" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_87_4143", 0 + %"$$eConfigured_87_envptr_4145" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_87_4143", 1 + %"$$eConfigured_87_owner_4146" = alloca [20 x i8] + store [20 x i8] %owner, [20 x i8]* %"$$eConfigured_87_owner_4146" + %"$$eConfigured_87_call_4147" = call { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_87_fptr_4144"(i8* %"$$eConfigured_87_envptr_4145", [20 x i8]* %"$$eConfigured_87_owner_4146") + store { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_87_call_4147", { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_88" + %"$eConfigured_89" = alloca i8* + %"$$eConfigured_88_4148" = load { i8* (i8*, [20 x i8]*)*, i8* }, { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_88" + %"$$eConfigured_88_fptr_4149" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_88_4148", 0 + %"$$eConfigured_88_envptr_4150" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_88_4148", 1 + %"$$eConfigured_88_zeroByStr20_4151" = alloca [20 x i8] + %"$zeroByStr20_4152" = load [20 x i8], [20 x i8]* @zeroByStr20 + store [20 x i8] %"$zeroByStr20_4152", [20 x i8]* %"$$eConfigured_88_zeroByStr20_4151" + %"$$eConfigured_88_call_4153" = call i8* %"$$eConfigured_88_fptr_4149"(i8* %"$$eConfigured_88_envptr_4150", [20 x i8]* %"$$eConfigured_88_zeroByStr20_4151") + store i8* %"$$eConfigured_88_call_4153", i8** %"$eConfigured_89" + %"$$eConfigured_89_4154" = load i8*, i8** %"$eConfigured_89" + store i8* %"$$eConfigured_89_4154", i8** %e + %"$e_4155" = load i8*, i8** %e + %"$_literal_cost_call_4157" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_4155") + %"$gasrem_4158" = load i64, i64* @_gasrem + %"$gascmp_4159" = icmp ugt i64 %"$_literal_cost_call_4157", %"$gasrem_4158" + br i1 %"$gascmp_4159", label %"$out_of_gas_4160", label %"$have_gas_4161" + +"$out_of_gas_4160": ; preds = %"$have_gas_4136" + call void @_out_of_gas() + br label %"$have_gas_4161" + +"$have_gas_4161": ; preds = %"$out_of_gas_4160", %"$have_gas_4136" + %"$consume_4162" = sub i64 %"$gasrem_4158", %"$_literal_cost_call_4157" + store i64 %"$consume_4162", i64* @_gasrem + %"$execptr_load_4163" = load i8*, i8** @_execptr + %"$e_4164" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_4163", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_4164") + %"$gasrem_4165" = load i64, i64* @_gasrem + %"$gascmp_4166" = icmp ugt i64 1, %"$gasrem_4165" + br i1 %"$gascmp_4166", label %"$out_of_gas_4167", label %"$have_gas_4168" + +"$out_of_gas_4167": ; preds = %"$have_gas_4161" + call void @_out_of_gas() + br label %"$have_gas_4168" + +"$have_gas_4168": ; preds = %"$out_of_gas_4167", %"$have_gas_4161" + %"$consume_4169" = sub i64 %"$gasrem_4165", 1 + store i64 %"$consume_4169", i64* @_gasrem %msgs = alloca %TName_List_Message* - %m = alloca i8* - %"$msgobj_2550_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_2550_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2550_salloc_load", i64 225) - %"$msgobj_2550_salloc" = bitcast i8* %"$msgobj_2550_salloc_salloc" to [225 x i8]* - %"$msgobj_2550" = bitcast [225 x i8]* %"$msgobj_2550_salloc" to i8* - store i8 5, i8* %"$msgobj_2550" - %"$msgobj_fname_2552" = getelementptr i8, i8* %"$msgobj_2550", i32 1 - %"$msgobj_fname_2553" = bitcast i8* %"$msgobj_fname_2552" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2551", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2553" - %"$msgobj_td_2554" = getelementptr i8, i8* %"$msgobj_2550", i32 17 - %"$msgobj_td_2555" = bitcast i8* %"$msgobj_td_2554" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_2555" - %"$msgobj_v_2557" = getelementptr i8, i8* %"$msgobj_2550", i32 25 - %"$msgobj_v_2558" = bitcast i8* %"$msgobj_v_2557" to %String* - store %String { i8* getelementptr inbounds ([17 x i8], [17 x i8]* @"$stringlit_2556", i32 0, i32 0), i32 17 }, %String* %"$msgobj_v_2558" - %"$msgobj_fname_2560" = getelementptr i8, i8* %"$msgobj_2550", i32 41 - %"$msgobj_fname_2561" = bitcast i8* %"$msgobj_fname_2560" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2559", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2561" - %"$msgobj_td_2562" = getelementptr i8, i8* %"$msgobj_2550", i32 57 - %"$msgobj_td_2563" = bitcast i8* %"$msgobj_td_2562" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_309", %_TyDescrTy_Typ** %"$msgobj_td_2563" - %"$msgobj_v_2564" = getelementptr i8, i8* %"$msgobj_2550", i32 65 - %"$msgobj_v_2565" = bitcast i8* %"$msgobj_v_2564" to [32 x i8]* - store [32 x i8] %node, [32 x i8]* %"$msgobj_v_2565" - %"$msgobj_fname_2567" = getelementptr i8, i8* %"$msgobj_2550", i32 97 - %"$msgobj_fname_2568" = bitcast i8* %"$msgobj_fname_2567" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2566", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_2568" - %"$msgobj_td_2569" = getelementptr i8, i8* %"$msgobj_2550", i32 113 - %"$msgobj_td_2570" = bitcast i8* %"$msgobj_td_2569" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_2570" - %"$msgobj_v_2571" = getelementptr i8, i8* %"$msgobj_2550", i32 121 - %"$msgobj_v_2572" = bitcast i8* %"$msgobj_v_2571" to [20 x i8]* - store [20 x i8] %owner, [20 x i8]* %"$msgobj_v_2572" - %"$msgobj_fname_2574" = getelementptr i8, i8* %"$msgobj_2550", i32 141 - %"$msgobj_fname_2575" = bitcast i8* %"$msgobj_fname_2574" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2573", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2575" - %"$msgobj_td_2576" = getelementptr i8, i8* %"$msgobj_2550", i32 157 - %"$msgobj_td_2577" = bitcast i8* %"$msgobj_td_2576" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Uint128_289", %_TyDescrTy_Typ** %"$msgobj_td_2577" - %"$msgobj_v_2578" = getelementptr i8, i8* %"$msgobj_2550", i32 165 - %"$msgobj_v_2579" = bitcast i8* %"$msgobj_v_2578" to %Uint128* - store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_2579" - %"$msgobj_fname_2581" = getelementptr i8, i8* %"$msgobj_2550", i32 181 - %"$msgobj_fname_2582" = bitcast i8* %"$msgobj_fname_2581" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2580", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2582" - %"$msgobj_td_2583" = getelementptr i8, i8* %"$msgobj_2550", i32 197 - %"$msgobj_td_2584" = bitcast i8* %"$msgobj_td_2583" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_2584" - %"$msgobj_v_2585" = getelementptr i8, i8* %"$msgobj_2550", i32 205 - %"$msgobj_v_2586" = bitcast i8* %"$msgobj_v_2585" to [20 x i8]* - store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_2586" - store i8* %"$msgobj_2550", i8** %m - %"$oneMsg_89" = alloca %TName_List_Message* - %"$oneMsg_2588" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg - %"$oneMsg_fptr_2589" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_2588", 0 - %"$oneMsg_envptr_2590" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_2588", 1 - %"$m_2591" = load i8*, i8** %m - %"$oneMsg_call_2592" = call %TName_List_Message* %"$oneMsg_fptr_2589"(i8* %"$oneMsg_envptr_2590", i8* %"$m_2591") - store %TName_List_Message* %"$oneMsg_call_2592", %TName_List_Message** %"$oneMsg_89" - %"$$oneMsg_89_2593" = load %TName_List_Message*, %TName_List_Message** %"$oneMsg_89" - store %TName_List_Message* %"$$oneMsg_89_2593", %TName_List_Message** %msgs - %"$execptr_load_2594" = load i8*, i8** @_execptr - %"$msgs_2595" = load %TName_List_Message*, %TName_List_Message** %msgs - call void @_send(i8* %"$execptr_load_2594", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_319", %TName_List_Message* %"$msgs_2595") - br label %"$matchsucc_2508" + %"$gasrem_4170" = load i64, i64* @_gasrem + %"$gascmp_4171" = icmp ugt i64 1, %"$gasrem_4170" + br i1 %"$gascmp_4171", label %"$out_of_gas_4172", label %"$have_gas_4173" + +"$out_of_gas_4172": ; preds = %"$have_gas_4168" + call void @_out_of_gas() + br label %"$have_gas_4173" -"$False_2596": ; preds = %entry - %"$isSenderOAO_2597" = bitcast %TName_Bool* %"$isSenderOAO_2509" to %CName_False* +"$have_gas_4173": ; preds = %"$out_of_gas_4172", %"$have_gas_4168" + %"$consume_4174" = sub i64 %"$gasrem_4170", 1 + store i64 %"$consume_4174", i64* @_gasrem + %m = alloca i8* + %"$gasrem_4175" = load i64, i64* @_gasrem + %"$gascmp_4176" = icmp ugt i64 1, %"$gasrem_4175" + br i1 %"$gascmp_4176", label %"$out_of_gas_4177", label %"$have_gas_4178" + +"$out_of_gas_4177": ; preds = %"$have_gas_4173" + call void @_out_of_gas() + br label %"$have_gas_4178" + +"$have_gas_4178": ; preds = %"$out_of_gas_4177", %"$have_gas_4173" + %"$consume_4179" = sub i64 %"$gasrem_4175", 1 + store i64 %"$consume_4179", i64* @_gasrem + %"$msgobj_4180_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_4180_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_4180_salloc_load", i64 225) + %"$msgobj_4180_salloc" = bitcast i8* %"$msgobj_4180_salloc_salloc" to [225 x i8]* + %"$msgobj_4180" = bitcast [225 x i8]* %"$msgobj_4180_salloc" to i8* + store i8 5, i8* %"$msgobj_4180" + %"$msgobj_fname_4182" = getelementptr i8, i8* %"$msgobj_4180", i32 1 + %"$msgobj_fname_4183" = bitcast i8* %"$msgobj_fname_4182" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_4181", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_4183" + %"$msgobj_td_4184" = getelementptr i8, i8* %"$msgobj_4180", i32 17 + %"$msgobj_td_4185" = bitcast i8* %"$msgobj_td_4184" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_4185" + %"$msgobj_v_4187" = getelementptr i8, i8* %"$msgobj_4180", i32 25 + %"$msgobj_v_4188" = bitcast i8* %"$msgobj_v_4187" to %String* + store %String { i8* getelementptr inbounds ([17 x i8], [17 x i8]* @"$stringlit_4186", i32 0, i32 0), i32 17 }, %String* %"$msgobj_v_4188" + %"$msgobj_fname_4190" = getelementptr i8, i8* %"$msgobj_4180", i32 41 + %"$msgobj_fname_4191" = bitcast i8* %"$msgobj_fname_4190" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_4189", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_4191" + %"$msgobj_td_4192" = getelementptr i8, i8* %"$msgobj_4180", i32 57 + %"$msgobj_td_4193" = bitcast i8* %"$msgobj_td_4192" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_306", %_TyDescrTy_Typ** %"$msgobj_td_4193" + %"$msgobj_v_4194" = getelementptr i8, i8* %"$msgobj_4180", i32 65 + %"$msgobj_v_4195" = bitcast i8* %"$msgobj_v_4194" to [32 x i8]* + store [32 x i8] %node, [32 x i8]* %"$msgobj_v_4195" + %"$msgobj_fname_4197" = getelementptr i8, i8* %"$msgobj_4180", i32 97 + %"$msgobj_fname_4198" = bitcast i8* %"$msgobj_fname_4197" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_4196", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_4198" + %"$msgobj_td_4199" = getelementptr i8, i8* %"$msgobj_4180", i32 113 + %"$msgobj_td_4200" = bitcast i8* %"$msgobj_td_4199" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_4200" + %"$msgobj_v_4201" = getelementptr i8, i8* %"$msgobj_4180", i32 121 + %"$msgobj_v_4202" = bitcast i8* %"$msgobj_v_4201" to [20 x i8]* + store [20 x i8] %owner, [20 x i8]* %"$msgobj_v_4202" + %"$msgobj_fname_4204" = getelementptr i8, i8* %"$msgobj_4180", i32 141 + %"$msgobj_fname_4205" = bitcast i8* %"$msgobj_fname_4204" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_4203", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_4205" + %"$msgobj_td_4206" = getelementptr i8, i8* %"$msgobj_4180", i32 157 + %"$msgobj_td_4207" = bitcast i8* %"$msgobj_td_4206" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_286", %_TyDescrTy_Typ** %"$msgobj_td_4207" + %"$msgobj_v_4208" = getelementptr i8, i8* %"$msgobj_4180", i32 165 + %"$msgobj_v_4209" = bitcast i8* %"$msgobj_v_4208" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_4209" + %"$msgobj_fname_4211" = getelementptr i8, i8* %"$msgobj_4180", i32 181 + %"$msgobj_fname_4212" = bitcast i8* %"$msgobj_fname_4211" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_4210", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_4212" + %"$msgobj_td_4213" = getelementptr i8, i8* %"$msgobj_4180", i32 197 + %"$msgobj_td_4214" = bitcast i8* %"$msgobj_td_4213" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_4214" + %"$msgobj_v_4215" = getelementptr i8, i8* %"$msgobj_4180", i32 205 + %"$msgobj_v_4216" = bitcast i8* %"$msgobj_v_4215" to [20 x i8]* + store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_4216" + store i8* %"$msgobj_4180", i8** %m + %"$gasrem_4218" = load i64, i64* @_gasrem + %"$gascmp_4219" = icmp ugt i64 1, %"$gasrem_4218" + br i1 %"$gascmp_4219", label %"$out_of_gas_4220", label %"$have_gas_4221" + +"$out_of_gas_4220": ; preds = %"$have_gas_4178" + call void @_out_of_gas() + br label %"$have_gas_4221" + +"$have_gas_4221": ; preds = %"$out_of_gas_4220", %"$have_gas_4178" + %"$consume_4222" = sub i64 %"$gasrem_4218", 1 + store i64 %"$consume_4222", i64* @_gasrem + %"$oneMsg_86" = alloca %TName_List_Message* + %"$oneMsg_4223" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg + %"$oneMsg_fptr_4224" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_4223", 0 + %"$oneMsg_envptr_4225" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_4223", 1 + %"$m_4226" = load i8*, i8** %m + %"$oneMsg_call_4227" = call %TName_List_Message* %"$oneMsg_fptr_4224"(i8* %"$oneMsg_envptr_4225", i8* %"$m_4226") + store %TName_List_Message* %"$oneMsg_call_4227", %TName_List_Message** %"$oneMsg_86" + %"$$oneMsg_86_4228" = load %TName_List_Message*, %TName_List_Message** %"$oneMsg_86" + store %TName_List_Message* %"$$oneMsg_86_4228", %TName_List_Message** %msgs + %"$msgs_4229" = load %TName_List_Message*, %TName_List_Message** %msgs + %"$$msgs_4229_4230" = bitcast %TName_List_Message* %"$msgs_4229" to i8* + %"$_literal_cost_call_4231" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_316", i8* %"$$msgs_4229_4230") + %"$gasrem_4232" = load i64, i64* @_gasrem + %"$gascmp_4233" = icmp ugt i64 %"$_literal_cost_call_4231", %"$gasrem_4232" + br i1 %"$gascmp_4233", label %"$out_of_gas_4234", label %"$have_gas_4235" + +"$out_of_gas_4234": ; preds = %"$have_gas_4221" + call void @_out_of_gas() + br label %"$have_gas_4235" + +"$have_gas_4235": ; preds = %"$out_of_gas_4234", %"$have_gas_4221" + %"$consume_4236" = sub i64 %"$gasrem_4232", %"$_literal_cost_call_4231" + store i64 %"$consume_4236", i64* @_gasrem + %"$execptr_load_4237" = load i8*, i8** @_execptr + %"$msgs_4238" = load %TName_List_Message*, %TName_List_Message** %msgs + call void @_send(i8* %"$execptr_load_4237", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_316", %TName_List_Message* %"$msgs_4238") + br label %"$matchsucc_4081" + +"$False_4239": ; preds = %"$have_gas_4079" + %"$isSenderOAO_4240" = bitcast %TName_Bool* %"$isSenderOAO_4082" to %CName_False* + %"$gasrem_4241" = load i64, i64* @_gasrem + %"$gascmp_4242" = icmp ugt i64 1, %"$gasrem_4241" + br i1 %"$gascmp_4242", label %"$out_of_gas_4243", label %"$have_gas_4244" + +"$out_of_gas_4243": ; preds = %"$False_4239" + call void @_out_of_gas() + br label %"$have_gas_4244" + +"$have_gas_4244": ; preds = %"$out_of_gas_4243", %"$False_4239" + %"$consume_4245" = sub i64 %"$gasrem_4241", 1 + store i64 %"$consume_4245", i64* @_gasrem %e5 = alloca i8* + %"$gasrem_4246" = load i64, i64* @_gasrem + %"$gascmp_4247" = icmp ugt i64 1, %"$gasrem_4246" + br i1 %"$gascmp_4247", label %"$out_of_gas_4248", label %"$have_gas_4249" + +"$out_of_gas_4248": ; preds = %"$have_gas_4244" + call void @_out_of_gas() + br label %"$have_gas_4249" + +"$have_gas_4249": ; preds = %"$out_of_gas_4248", %"$have_gas_4244" + %"$consume_4250" = sub i64 %"$gasrem_4246", 1 + store i64 %"$consume_4250", i64* @_gasrem %m6 = alloca %String - store %String { i8* getelementptr inbounds ([43 x i8], [43 x i8]* @"$stringlit_2598", i32 0, i32 0), i32 43 }, %String* %m6 - %"$eError_94" = alloca i8* - %"$eError_2599" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* @eError - %"$eError_fptr_2600" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_2599", 0 - %"$eError_envptr_2601" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_2599", 1 - %"$m_2602" = load %String, %String* %m6 - %"$eError_call_2603" = call i8* %"$eError_fptr_2600"(i8* %"$eError_envptr_2601", %String %"$m_2602") - store i8* %"$eError_call_2603", i8** %"$eError_94" - %"$$eError_94_2604" = load i8*, i8** %"$eError_94" - store i8* %"$$eError_94_2604", i8** %e5 - %"$execptr_load_2605" = load i8*, i8** @_execptr - %"$e_2606" = load i8*, i8** %e5 - call void @_event(i8* %"$execptr_load_2605", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_2606") + %"$gasrem_4251" = load i64, i64* @_gasrem + %"$gascmp_4252" = icmp ugt i64 1, %"$gasrem_4251" + br i1 %"$gascmp_4252", label %"$out_of_gas_4253", label %"$have_gas_4254" + +"$out_of_gas_4253": ; preds = %"$have_gas_4249" + call void @_out_of_gas() + br label %"$have_gas_4254" + +"$have_gas_4254": ; preds = %"$out_of_gas_4253", %"$have_gas_4249" + %"$consume_4255" = sub i64 %"$gasrem_4251", 1 + store i64 %"$consume_4255", i64* @_gasrem + store %String { i8* getelementptr inbounds ([43 x i8], [43 x i8]* @"$stringlit_4256", i32 0, i32 0), i32 43 }, %String* %m6 + %"$gasrem_4257" = load i64, i64* @_gasrem + %"$gascmp_4258" = icmp ugt i64 1, %"$gasrem_4257" + br i1 %"$gascmp_4258", label %"$out_of_gas_4259", label %"$have_gas_4260" + +"$out_of_gas_4259": ; preds = %"$have_gas_4254" + call void @_out_of_gas() + br label %"$have_gas_4260" + +"$have_gas_4260": ; preds = %"$out_of_gas_4259", %"$have_gas_4254" + %"$consume_4261" = sub i64 %"$gasrem_4257", 1 + store i64 %"$consume_4261", i64* @_gasrem + %"$eError_91" = alloca i8* + %"$eError_4262" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* @eError + %"$eError_fptr_4263" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_4262", 0 + %"$eError_envptr_4264" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_4262", 1 + %"$m_4265" = load %String, %String* %m6 + %"$eError_call_4266" = call i8* %"$eError_fptr_4263"(i8* %"$eError_envptr_4264", %String %"$m_4265") + store i8* %"$eError_call_4266", i8** %"$eError_91" + %"$$eError_91_4267" = load i8*, i8** %"$eError_91" + store i8* %"$$eError_91_4267", i8** %e5 + %"$e_4268" = load i8*, i8** %e5 + %"$_literal_cost_call_4270" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_4268") + %"$gasrem_4271" = load i64, i64* @_gasrem + %"$gascmp_4272" = icmp ugt i64 %"$_literal_cost_call_4270", %"$gasrem_4271" + br i1 %"$gascmp_4272", label %"$out_of_gas_4273", label %"$have_gas_4274" + +"$out_of_gas_4273": ; preds = %"$have_gas_4260" + call void @_out_of_gas() + br label %"$have_gas_4274" + +"$have_gas_4274": ; preds = %"$out_of_gas_4273", %"$have_gas_4260" + %"$consume_4275" = sub i64 %"$gasrem_4271", %"$_literal_cost_call_4270" + store i64 %"$consume_4275", i64* @_gasrem + %"$execptr_load_4276" = load i8*, i8** @_execptr + %"$e_4277" = load i8*, i8** %e5 + call void @_event(i8* %"$execptr_load_4276", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_4277") + %"$gasrem_4278" = load i64, i64* @_gasrem + %"$gascmp_4279" = icmp ugt i64 1, %"$gasrem_4278" + br i1 %"$gascmp_4279", label %"$out_of_gas_4280", label %"$have_gas_4281" + +"$out_of_gas_4280": ; preds = %"$have_gas_4274" + call void @_out_of_gas() + br label %"$have_gas_4281" + +"$have_gas_4281": ; preds = %"$out_of_gas_4280", %"$have_gas_4274" + %"$consume_4282" = sub i64 %"$gasrem_4278", 1 + store i64 %"$consume_4282", i64* @_gasrem %msgs7 = alloca %TName_List_Message* - %"$m_1" = alloca i8* - %"$msgobj_2607_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_2607_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2607_salloc_load", i64 225) - %"$msgobj_2607_salloc" = bitcast i8* %"$msgobj_2607_salloc_salloc" to [225 x i8]* - %"$msgobj_2607" = bitcast [225 x i8]* %"$msgobj_2607_salloc" to i8* - store i8 5, i8* %"$msgobj_2607" - %"$msgobj_fname_2609" = getelementptr i8, i8* %"$msgobj_2607", i32 1 - %"$msgobj_fname_2610" = bitcast i8* %"$msgobj_fname_2609" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2608", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2610" - %"$msgobj_td_2611" = getelementptr i8, i8* %"$msgobj_2607", i32 17 - %"$msgobj_td_2612" = bitcast i8* %"$msgobj_td_2611" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_2612" - %"$msgobj_v_2614" = getelementptr i8, i8* %"$msgobj_2607", i32 25 - %"$msgobj_v_2615" = bitcast i8* %"$msgobj_v_2614" to %String* - store %String { i8* getelementptr inbounds ([17 x i8], [17 x i8]* @"$stringlit_2613", i32 0, i32 0), i32 17 }, %String* %"$msgobj_v_2615" - %"$msgobj_fname_2617" = getelementptr i8, i8* %"$msgobj_2607", i32 41 - %"$msgobj_fname_2618" = bitcast i8* %"$msgobj_fname_2617" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2616", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2618" - %"$msgobj_td_2619" = getelementptr i8, i8* %"$msgobj_2607", i32 57 - %"$msgobj_td_2620" = bitcast i8* %"$msgobj_td_2619" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_309", %_TyDescrTy_Typ** %"$msgobj_td_2620" - %"$msgobj_v_2621" = getelementptr i8, i8* %"$msgobj_2607", i32 65 - %"$msgobj_v_2622" = bitcast i8* %"$msgobj_v_2621" to [32 x i8]* - store [32 x i8] %node, [32 x i8]* %"$msgobj_v_2622" - %"$msgobj_fname_2624" = getelementptr i8, i8* %"$msgobj_2607", i32 97 - %"$msgobj_fname_2625" = bitcast i8* %"$msgobj_fname_2624" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2623", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_2625" - %"$msgobj_td_2626" = getelementptr i8, i8* %"$msgobj_2607", i32 113 - %"$msgobj_td_2627" = bitcast i8* %"$msgobj_td_2626" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_2627" - %"$msgobj_v_2628" = getelementptr i8, i8* %"$msgobj_2607", i32 121 - %"$msgobj_v_2629" = bitcast i8* %"$msgobj_v_2628" to [20 x i8]* - store [20 x i8] %owner, [20 x i8]* %"$msgobj_v_2629" - %"$msgobj_fname_2631" = getelementptr i8, i8* %"$msgobj_2607", i32 141 - %"$msgobj_fname_2632" = bitcast i8* %"$msgobj_fname_2631" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2630", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2632" - %"$msgobj_td_2633" = getelementptr i8, i8* %"$msgobj_2607", i32 157 - %"$msgobj_td_2634" = bitcast i8* %"$msgobj_td_2633" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Uint128_289", %_TyDescrTy_Typ** %"$msgobj_td_2634" - %"$msgobj_v_2635" = getelementptr i8, i8* %"$msgobj_2607", i32 165 - %"$msgobj_v_2636" = bitcast i8* %"$msgobj_v_2635" to %Uint128* - store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_2636" - %"$msgobj_fname_2638" = getelementptr i8, i8* %"$msgobj_2607", i32 181 - %"$msgobj_fname_2639" = bitcast i8* %"$msgobj_fname_2638" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2637", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2639" - %"$msgobj_td_2640" = getelementptr i8, i8* %"$msgobj_2607", i32 197 - %"$msgobj_td_2641" = bitcast i8* %"$msgobj_td_2640" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_2641" - %"$msgobj_v_2642" = getelementptr i8, i8* %"$msgobj_2607", i32 205 - %"$msgobj_v_2643" = bitcast i8* %"$msgobj_v_2642" to [20 x i8]* - store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_2643" - store i8* %"$msgobj_2607", i8** %"$m_1" - %"$oneMsg_93" = alloca %TName_List_Message* - %"$oneMsg_2645" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg - %"$oneMsg_fptr_2646" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_2645", 0 - %"$oneMsg_envptr_2647" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_2645", 1 - %"$$m_1_2648" = load i8*, i8** %"$m_1" - %"$oneMsg_call_2649" = call %TName_List_Message* %"$oneMsg_fptr_2646"(i8* %"$oneMsg_envptr_2647", i8* %"$$m_1_2648") - store %TName_List_Message* %"$oneMsg_call_2649", %TName_List_Message** %"$oneMsg_93" - %"$$oneMsg_93_2650" = load %TName_List_Message*, %TName_List_Message** %"$oneMsg_93" - store %TName_List_Message* %"$$oneMsg_93_2650", %TName_List_Message** %msgs7 - %"$execptr_load_2651" = load i8*, i8** @_execptr - %"$msgs_2652" = load %TName_List_Message*, %TName_List_Message** %msgs7 - call void @_send(i8* %"$execptr_load_2651", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_319", %TName_List_Message* %"$msgs_2652") - br label %"$matchsucc_2508" - -"$empty_default_2512": ; preds = %entry - br label %"$matchsucc_2508" - -"$matchsucc_2508": ; preds = %"$False_2596", %"$True_2513", %"$empty_default_2512" + %"$gasrem_4283" = load i64, i64* @_gasrem + %"$gascmp_4284" = icmp ugt i64 1, %"$gasrem_4283" + br i1 %"$gascmp_4284", label %"$out_of_gas_4285", label %"$have_gas_4286" + +"$out_of_gas_4285": ; preds = %"$have_gas_4281" + call void @_out_of_gas() + br label %"$have_gas_4286" + +"$have_gas_4286": ; preds = %"$out_of_gas_4285", %"$have_gas_4281" + %"$consume_4287" = sub i64 %"$gasrem_4283", 1 + store i64 %"$consume_4287", i64* @_gasrem + %m8 = alloca i8* + %"$gasrem_4288" = load i64, i64* @_gasrem + %"$gascmp_4289" = icmp ugt i64 1, %"$gasrem_4288" + br i1 %"$gascmp_4289", label %"$out_of_gas_4290", label %"$have_gas_4291" + +"$out_of_gas_4290": ; preds = %"$have_gas_4286" + call void @_out_of_gas() + br label %"$have_gas_4291" + +"$have_gas_4291": ; preds = %"$out_of_gas_4290", %"$have_gas_4286" + %"$consume_4292" = sub i64 %"$gasrem_4288", 1 + store i64 %"$consume_4292", i64* @_gasrem + %"$msgobj_4293_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_4293_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_4293_salloc_load", i64 225) + %"$msgobj_4293_salloc" = bitcast i8* %"$msgobj_4293_salloc_salloc" to [225 x i8]* + %"$msgobj_4293" = bitcast [225 x i8]* %"$msgobj_4293_salloc" to i8* + store i8 5, i8* %"$msgobj_4293" + %"$msgobj_fname_4295" = getelementptr i8, i8* %"$msgobj_4293", i32 1 + %"$msgobj_fname_4296" = bitcast i8* %"$msgobj_fname_4295" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_4294", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_4296" + %"$msgobj_td_4297" = getelementptr i8, i8* %"$msgobj_4293", i32 17 + %"$msgobj_td_4298" = bitcast i8* %"$msgobj_td_4297" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_4298" + %"$msgobj_v_4300" = getelementptr i8, i8* %"$msgobj_4293", i32 25 + %"$msgobj_v_4301" = bitcast i8* %"$msgobj_v_4300" to %String* + store %String { i8* getelementptr inbounds ([17 x i8], [17 x i8]* @"$stringlit_4299", i32 0, i32 0), i32 17 }, %String* %"$msgobj_v_4301" + %"$msgobj_fname_4303" = getelementptr i8, i8* %"$msgobj_4293", i32 41 + %"$msgobj_fname_4304" = bitcast i8* %"$msgobj_fname_4303" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_4302", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_4304" + %"$msgobj_td_4305" = getelementptr i8, i8* %"$msgobj_4293", i32 57 + %"$msgobj_td_4306" = bitcast i8* %"$msgobj_td_4305" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_306", %_TyDescrTy_Typ** %"$msgobj_td_4306" + %"$msgobj_v_4307" = getelementptr i8, i8* %"$msgobj_4293", i32 65 + %"$msgobj_v_4308" = bitcast i8* %"$msgobj_v_4307" to [32 x i8]* + store [32 x i8] %node, [32 x i8]* %"$msgobj_v_4308" + %"$msgobj_fname_4310" = getelementptr i8, i8* %"$msgobj_4293", i32 97 + %"$msgobj_fname_4311" = bitcast i8* %"$msgobj_fname_4310" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_4309", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_4311" + %"$msgobj_td_4312" = getelementptr i8, i8* %"$msgobj_4293", i32 113 + %"$msgobj_td_4313" = bitcast i8* %"$msgobj_td_4312" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_4313" + %"$msgobj_v_4314" = getelementptr i8, i8* %"$msgobj_4293", i32 121 + %"$msgobj_v_4315" = bitcast i8* %"$msgobj_v_4314" to [20 x i8]* + store [20 x i8] %owner, [20 x i8]* %"$msgobj_v_4315" + %"$msgobj_fname_4317" = getelementptr i8, i8* %"$msgobj_4293", i32 141 + %"$msgobj_fname_4318" = bitcast i8* %"$msgobj_fname_4317" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_4316", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_4318" + %"$msgobj_td_4319" = getelementptr i8, i8* %"$msgobj_4293", i32 157 + %"$msgobj_td_4320" = bitcast i8* %"$msgobj_td_4319" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_286", %_TyDescrTy_Typ** %"$msgobj_td_4320" + %"$msgobj_v_4321" = getelementptr i8, i8* %"$msgobj_4293", i32 165 + %"$msgobj_v_4322" = bitcast i8* %"$msgobj_v_4321" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_4322" + %"$msgobj_fname_4324" = getelementptr i8, i8* %"$msgobj_4293", i32 181 + %"$msgobj_fname_4325" = bitcast i8* %"$msgobj_fname_4324" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_4323", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_4325" + %"$msgobj_td_4326" = getelementptr i8, i8* %"$msgobj_4293", i32 197 + %"$msgobj_td_4327" = bitcast i8* %"$msgobj_td_4326" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_4327" + %"$msgobj_v_4328" = getelementptr i8, i8* %"$msgobj_4293", i32 205 + %"$msgobj_v_4329" = bitcast i8* %"$msgobj_v_4328" to [20 x i8]* + store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_4329" + store i8* %"$msgobj_4293", i8** %m8 + %"$gasrem_4331" = load i64, i64* @_gasrem + %"$gascmp_4332" = icmp ugt i64 1, %"$gasrem_4331" + br i1 %"$gascmp_4332", label %"$out_of_gas_4333", label %"$have_gas_4334" + +"$out_of_gas_4333": ; preds = %"$have_gas_4291" + call void @_out_of_gas() + br label %"$have_gas_4334" + +"$have_gas_4334": ; preds = %"$out_of_gas_4333", %"$have_gas_4291" + %"$consume_4335" = sub i64 %"$gasrem_4331", 1 + store i64 %"$consume_4335", i64* @_gasrem + %"$oneMsg_90" = alloca %TName_List_Message* + %"$oneMsg_4336" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg + %"$oneMsg_fptr_4337" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_4336", 0 + %"$oneMsg_envptr_4338" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_4336", 1 + %"$m_4339" = load i8*, i8** %m8 + %"$oneMsg_call_4340" = call %TName_List_Message* %"$oneMsg_fptr_4337"(i8* %"$oneMsg_envptr_4338", i8* %"$m_4339") + store %TName_List_Message* %"$oneMsg_call_4340", %TName_List_Message** %"$oneMsg_90" + %"$$oneMsg_90_4341" = load %TName_List_Message*, %TName_List_Message** %"$oneMsg_90" + store %TName_List_Message* %"$$oneMsg_90_4341", %TName_List_Message** %msgs7 + %"$msgs_4342" = load %TName_List_Message*, %TName_List_Message** %msgs7 + %"$$msgs_4342_4343" = bitcast %TName_List_Message* %"$msgs_4342" to i8* + %"$_literal_cost_call_4344" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_316", i8* %"$$msgs_4342_4343") + %"$gasrem_4345" = load i64, i64* @_gasrem + %"$gascmp_4346" = icmp ugt i64 %"$_literal_cost_call_4344", %"$gasrem_4345" + br i1 %"$gascmp_4346", label %"$out_of_gas_4347", label %"$have_gas_4348" + +"$out_of_gas_4347": ; preds = %"$have_gas_4334" + call void @_out_of_gas() + br label %"$have_gas_4348" + +"$have_gas_4348": ; preds = %"$out_of_gas_4347", %"$have_gas_4334" + %"$consume_4349" = sub i64 %"$gasrem_4345", %"$_literal_cost_call_4344" + store i64 %"$consume_4349", i64* @_gasrem + %"$execptr_load_4350" = load i8*, i8** @_execptr + %"$msgs_4351" = load %TName_List_Message*, %TName_List_Message** %msgs7 + call void @_send(i8* %"$execptr_load_4350", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_316", %TName_List_Message* %"$msgs_4351") + br label %"$matchsucc_4081" + +"$empty_default_4085": ; preds = %"$have_gas_4079" + br label %"$matchsucc_4081" + +"$matchsucc_4081": ; preds = %"$have_gas_4348", %"$have_gas_4235", %"$empty_default_4085" ret void } define void @transfer(i8* %0) { entry: - %"$_amount_2654" = getelementptr i8, i8* %0, i32 0 - %"$_amount_2655" = bitcast i8* %"$_amount_2654" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_2655" - %"$_sender_2656" = getelementptr i8, i8* %0, i32 16 - %"$_sender_2657" = bitcast i8* %"$_sender_2656" to [20 x i8]* - %"$node_2658" = getelementptr i8, i8* %0, i32 36 - %"$node_2659" = bitcast i8* %"$node_2658" to [32 x i8]* - %"$owner_2660" = getelementptr i8, i8* %0, i32 68 - %"$owner_2661" = bitcast i8* %"$owner_2660" to [20 x i8]* - call void @"$transfer_2456"(%Uint128 %_amount, [20 x i8]* %"$_sender_2657", [32 x i8]* %"$node_2659", [20 x i8]* %"$owner_2661") + %"$_amount_4353" = getelementptr i8, i8* %0, i32 0 + %"$_amount_4354" = bitcast i8* %"$_amount_4353" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_4354" + %"$_sender_4355" = getelementptr i8, i8* %0, i32 16 + %"$_sender_4356" = bitcast i8* %"$_sender_4355" to [20 x i8]* + %"$node_4357" = getelementptr i8, i8* %0, i32 36 + %"$node_4358" = bitcast i8* %"$node_4357" to [32 x i8]* + %"$owner_4359" = getelementptr i8, i8* %0, i32 68 + %"$owner_4360" = bitcast i8* %"$owner_4359" to [20 x i8]* + call void @"$transfer_3974"(%Uint128 %_amount, [20 x i8]* %"$_sender_4356", [32 x i8]* %"$node_4358", [20 x i8]* %"$owner_4360") ret void } -define internal void @"$assign_2662"(%Uint128 %_amount, [20 x i8]* %"$_sender_2663", [32 x i8]* %"$parent_2664", %String %label, [20 x i8]* %"$owner_2665") { +define internal void @"$assign_4361"(%Uint128 %_amount, [20 x i8]* %"$_sender_4362", [32 x i8]* %"$parent_4363", %String %label, [20 x i8]* %"$owner_4364") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_2663" - %parent = load [32 x i8], [32 x i8]* %"$parent_2664" - %owner = load [20 x i8], [20 x i8]* %"$owner_2665" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_4362" + %parent = load [32 x i8], [32 x i8]* %"$parent_4363" + %owner = load [20 x i8], [20 x i8]* %"$owner_4364" %maybeRecord = alloca %TName_Option_Record* - %"$indices_buf_2666_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2666_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2666_salloc_load", i64 32) - %"$indices_buf_2666_salloc" = bitcast i8* %"$indices_buf_2666_salloc_salloc" to [32 x i8]* - %"$indices_buf_2666" = bitcast [32 x i8]* %"$indices_buf_2666_salloc" to i8* - %"$indices_gep_2667" = getelementptr i8, i8* %"$indices_buf_2666", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_2667" to [32 x i8]* + %"$indices_buf_4365_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_4365_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4365_salloc_load", i64 32) + %"$indices_buf_4365_salloc" = bitcast i8* %"$indices_buf_4365_salloc_salloc" to [32 x i8]* + %"$indices_buf_4365" = bitcast [32 x i8]* %"$indices_buf_4365_salloc" to i8* + %"$indices_gep_4366" = getelementptr i8, i8* %"$indices_buf_4365", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_4366" to [32 x i8]* store [32 x i8] %parent, [32 x i8]* %indices_cast - %"$execptr_load_2668" = load i8*, i8** @_execptr - %"$maybeRecord_2670" = call i8* @_fetch_field(i8* %"$execptr_load_2668", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_2669", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_325", i32 1, i8* %"$indices_buf_2666", i32 1) - %"$maybeRecord_2671" = bitcast i8* %"$maybeRecord_2670" to %TName_Option_Record* - store %TName_Option_Record* %"$maybeRecord_2671", %TName_Option_Record** %maybeRecord + %"$execptr_load_4367" = load i8*, i8** @_execptr + %"$maybeRecord_4369" = call i8* @_fetch_field(i8* %"$execptr_load_4367", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_4368", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_322", i32 1, i8* %"$indices_buf_4365", i32 1) + %"$maybeRecord_4370" = bitcast i8* %"$maybeRecord_4369" to %TName_Option_Record* + store %TName_Option_Record* %"$maybeRecord_4370", %TName_Option_Record** %maybeRecord + %"$maybeRecord_4371" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord + %"$$maybeRecord_4371_4372" = bitcast %TName_Option_Record* %"$maybeRecord_4371" to i8* + %"$_literal_cost_call_4373" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Record_313", i8* %"$$maybeRecord_4371_4372") + %"$gasadd_4374" = add i64 %"$_literal_cost_call_4373", 0 + %"$gasadd_4375" = add i64 %"$gasadd_4374", 1 + %"$gasrem_4376" = load i64, i64* @_gasrem + %"$gascmp_4377" = icmp ugt i64 %"$gasadd_4375", %"$gasrem_4376" + br i1 %"$gascmp_4377", label %"$out_of_gas_4378", label %"$have_gas_4379" + +"$out_of_gas_4378": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_4379" + +"$have_gas_4379": ; preds = %"$out_of_gas_4378", %entry + %"$consume_4380" = sub i64 %"$gasrem_4376", %"$gasadd_4375" + store i64 %"$consume_4380", i64* @_gasrem %maybeApproved = alloca %TName_Option_ByStr20* - %"$indices_buf_2672_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2672_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2672_salloc_load", i64 32) - %"$indices_buf_2672_salloc" = bitcast i8* %"$indices_buf_2672_salloc_salloc" to [32 x i8]* - %"$indices_buf_2672" = bitcast [32 x i8]* %"$indices_buf_2672_salloc" to i8* - %"$indices_gep_2673" = getelementptr i8, i8* %"$indices_buf_2672", i32 0 - %indices_cast1 = bitcast i8* %"$indices_gep_2673" to [32 x i8]* + %"$indices_buf_4381_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_4381_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4381_salloc_load", i64 32) + %"$indices_buf_4381_salloc" = bitcast i8* %"$indices_buf_4381_salloc_salloc" to [32 x i8]* + %"$indices_buf_4381" = bitcast [32 x i8]* %"$indices_buf_4381_salloc" to i8* + %"$indices_gep_4382" = getelementptr i8, i8* %"$indices_buf_4381", i32 0 + %indices_cast1 = bitcast i8* %"$indices_gep_4382" to [32 x i8]* store [32 x i8] %parent, [32 x i8]* %indices_cast1 - %"$execptr_load_2674" = load i8*, i8** @_execptr - %"$maybeApproved_2676" = call i8* @_fetch_field(i8* %"$execptr_load_2674", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_2675", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_324", i32 1, i8* %"$indices_buf_2672", i32 1) - %"$maybeApproved_2677" = bitcast i8* %"$maybeApproved_2676" to %TName_Option_ByStr20* - store %TName_Option_ByStr20* %"$maybeApproved_2677", %TName_Option_ByStr20** %maybeApproved + %"$execptr_load_4383" = load i8*, i8** @_execptr + %"$maybeApproved_4385" = call i8* @_fetch_field(i8* %"$execptr_load_4383", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_4384", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_321", i32 1, i8* %"$indices_buf_4381", i32 1) + %"$maybeApproved_4386" = bitcast i8* %"$maybeApproved_4385" to %TName_Option_ByStr20* + store %TName_Option_ByStr20* %"$maybeApproved_4386", %TName_Option_ByStr20** %maybeApproved + %"$maybeApproved_4387" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved + %"$$maybeApproved_4387_4388" = bitcast %TName_Option_ByStr20* %"$maybeApproved_4387" to i8* + %"$_literal_cost_call_4389" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_ByStr20_314", i8* %"$$maybeApproved_4387_4388") + %"$gasadd_4390" = add i64 %"$_literal_cost_call_4389", 0 + %"$gasadd_4391" = add i64 %"$gasadd_4390", 1 + %"$gasrem_4392" = load i64, i64* @_gasrem + %"$gascmp_4393" = icmp ugt i64 %"$gasadd_4391", %"$gasrem_4392" + br i1 %"$gascmp_4393", label %"$out_of_gas_4394", label %"$have_gas_4395" + +"$out_of_gas_4394": ; preds = %"$have_gas_4379" + call void @_out_of_gas() + br label %"$have_gas_4395" + +"$have_gas_4395": ; preds = %"$out_of_gas_4394", %"$have_gas_4379" + %"$consume_4396" = sub i64 %"$gasrem_4392", %"$gasadd_4391" + store i64 %"$consume_4396", i64* @_gasrem + %"$gasrem_4397" = load i64, i64* @_gasrem + %"$gascmp_4398" = icmp ugt i64 1, %"$gasrem_4397" + br i1 %"$gascmp_4398", label %"$out_of_gas_4399", label %"$have_gas_4400" + +"$out_of_gas_4399": ; preds = %"$have_gas_4395" + call void @_out_of_gas() + br label %"$have_gas_4400" + +"$have_gas_4400": ; preds = %"$out_of_gas_4399", %"$have_gas_4395" + %"$consume_4401" = sub i64 %"$gasrem_4397", 1 + store i64 %"$consume_4401", i64* @_gasrem %recordOwner = alloca [20 x i8] - %"$recordMemberOwner_114" = alloca [20 x i8] - %"$recordMemberOwner_2678" = load { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }, { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }* @recordMemberOwner - %"$recordMemberOwner_fptr_2679" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_2678", 0 - %"$recordMemberOwner_envptr_2680" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_2678", 1 - %"$maybeRecord_2681" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord - %"$recordMemberOwner_retalloca_2682" = alloca [20 x i8] - call void %"$recordMemberOwner_fptr_2679"(i8* %"$recordMemberOwner_envptr_2680", [20 x i8]* %"$recordMemberOwner_retalloca_2682", %TName_Option_Record* %"$maybeRecord_2681") - %"$recordMemberOwner_ret_2683" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_retalloca_2682" - store [20 x i8] %"$recordMemberOwner_ret_2683", [20 x i8]* %"$recordMemberOwner_114" - %"$$recordMemberOwner_114_2684" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_114" - store [20 x i8] %"$$recordMemberOwner_114_2684", [20 x i8]* %recordOwner + %"$gasrem_4402" = load i64, i64* @_gasrem + %"$gascmp_4403" = icmp ugt i64 1, %"$gasrem_4402" + br i1 %"$gascmp_4403", label %"$out_of_gas_4404", label %"$have_gas_4405" + +"$out_of_gas_4404": ; preds = %"$have_gas_4400" + call void @_out_of_gas() + br label %"$have_gas_4405" + +"$have_gas_4405": ; preds = %"$out_of_gas_4404", %"$have_gas_4400" + %"$consume_4406" = sub i64 %"$gasrem_4402", 1 + store i64 %"$consume_4406", i64* @_gasrem + %"$recordMemberOwner_111" = alloca [20 x i8] + %"$recordMemberOwner_4407" = load { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }, { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }* @recordMemberOwner + %"$recordMemberOwner_fptr_4408" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_4407", 0 + %"$recordMemberOwner_envptr_4409" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_4407", 1 + %"$maybeRecord_4410" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord + %"$recordMemberOwner_retalloca_4411" = alloca [20 x i8] + call void %"$recordMemberOwner_fptr_4408"(i8* %"$recordMemberOwner_envptr_4409", [20 x i8]* %"$recordMemberOwner_retalloca_4411", %TName_Option_Record* %"$maybeRecord_4410") + %"$recordMemberOwner_ret_4412" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_retalloca_4411" + store [20 x i8] %"$recordMemberOwner_ret_4412", [20 x i8]* %"$recordMemberOwner_111" + %"$$recordMemberOwner_111_4413" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_111" + store [20 x i8] %"$$recordMemberOwner_111_4413", [20 x i8]* %recordOwner %maybeOperators = alloca %"TName_Option_List_(ByStr20)"* - %"$indices_buf_2685_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2685_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2685_salloc_load", i64 20) - %"$indices_buf_2685_salloc" = bitcast i8* %"$indices_buf_2685_salloc_salloc" to [20 x i8]* - %"$indices_buf_2685" = bitcast [20 x i8]* %"$indices_buf_2685_salloc" to i8* - %"$recordOwner_2686" = load [20 x i8], [20 x i8]* %recordOwner - %"$indices_gep_2687" = getelementptr i8, i8* %"$indices_buf_2685", i32 0 - %indices_cast2 = bitcast i8* %"$indices_gep_2687" to [20 x i8]* - store [20 x i8] %"$recordOwner_2686", [20 x i8]* %indices_cast2 - %"$execptr_load_2688" = load i8*, i8** @_execptr - %"$maybeOperators_2690" = call i8* @_fetch_field(i8* %"$execptr_load_2688", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$operators_2689", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_323", i32 1, i8* %"$indices_buf_2685", i32 1) - %"$maybeOperators_2691" = bitcast i8* %"$maybeOperators_2690" to %"TName_Option_List_(ByStr20)"* - store %"TName_Option_List_(ByStr20)"* %"$maybeOperators_2691", %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$indices_buf_4414_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_4414_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4414_salloc_load", i64 20) + %"$indices_buf_4414_salloc" = bitcast i8* %"$indices_buf_4414_salloc_salloc" to [20 x i8]* + %"$indices_buf_4414" = bitcast [20 x i8]* %"$indices_buf_4414_salloc" to i8* + %"$recordOwner_4415" = load [20 x i8], [20 x i8]* %recordOwner + %"$indices_gep_4416" = getelementptr i8, i8* %"$indices_buf_4414", i32 0 + %indices_cast2 = bitcast i8* %"$indices_gep_4416" to [20 x i8]* + store [20 x i8] %"$recordOwner_4415", [20 x i8]* %indices_cast2 + %"$execptr_load_4417" = load i8*, i8** @_execptr + %"$maybeOperators_4419" = call i8* @_fetch_field(i8* %"$execptr_load_4417", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$operators_4418", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_320", i32 1, i8* %"$indices_buf_4414", i32 1) + %"$maybeOperators_4420" = bitcast i8* %"$maybeOperators_4419" to %"TName_Option_List_(ByStr20)"* + store %"TName_Option_List_(ByStr20)"* %"$maybeOperators_4420", %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$maybeOperators_4421" = load %"TName_Option_List_(ByStr20)"*, %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$$maybeOperators_4421_4422" = bitcast %"TName_Option_List_(ByStr20)"* %"$maybeOperators_4421" to i8* + %"$_literal_cost_call_4423" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_List_(ByStr20)_312", i8* %"$$maybeOperators_4421_4422") + %"$gasadd_4424" = add i64 %"$_literal_cost_call_4423", 0 + %"$gasadd_4425" = add i64 %"$gasadd_4424", 1 + %"$gasrem_4426" = load i64, i64* @_gasrem + %"$gascmp_4427" = icmp ugt i64 %"$gasadd_4425", %"$gasrem_4426" + br i1 %"$gascmp_4427", label %"$out_of_gas_4428", label %"$have_gas_4429" + +"$out_of_gas_4428": ; preds = %"$have_gas_4405" + call void @_out_of_gas() + br label %"$have_gas_4429" + +"$have_gas_4429": ; preds = %"$out_of_gas_4428", %"$have_gas_4405" + %"$consume_4430" = sub i64 %"$gasrem_4426", %"$gasadd_4425" + store i64 %"$consume_4430", i64* @_gasrem + %"$gasrem_4431" = load i64, i64* @_gasrem + %"$gascmp_4432" = icmp ugt i64 1, %"$gasrem_4431" + br i1 %"$gascmp_4432", label %"$out_of_gas_4433", label %"$have_gas_4434" + +"$out_of_gas_4433": ; preds = %"$have_gas_4429" + call void @_out_of_gas() + br label %"$have_gas_4434" + +"$have_gas_4434": ; preds = %"$out_of_gas_4433", %"$have_gas_4429" + %"$consume_4435" = sub i64 %"$gasrem_4431", 1 + store i64 %"$consume_4435", i64* @_gasrem %isSenderOAO = alloca %TName_Bool* - %"$getIsOAO_110" = alloca { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$getIsOAO_2692" = load { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @getIsOAO - %"$getIsOAO_fptr_2693" = extractvalue { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_2692", 0 - %"$getIsOAO_envptr_2694" = extractvalue { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_2692", 1 - %"$getIsOAO__sender_2695" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$getIsOAO__sender_2695" - %"$getIsOAO_call_2696" = call { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_fptr_2693"(i8* %"$getIsOAO_envptr_2694", [20 x i8]* %"$getIsOAO__sender_2695") - store { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_call_2696", { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$getIsOAO_110" - %"$getIsOAO_111" = alloca { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } - %"$$getIsOAO_110_2697" = load { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$getIsOAO_110" - %"$$getIsOAO_110_fptr_2698" = extractvalue { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$getIsOAO_110_2697", 0 - %"$$getIsOAO_110_envptr_2699" = extractvalue { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$getIsOAO_110_2697", 1 - %"$$getIsOAO_110_recordOwner_2700" = alloca [20 x i8] - %"$recordOwner_2701" = load [20 x i8], [20 x i8]* %recordOwner - store [20 x i8] %"$recordOwner_2701", [20 x i8]* %"$$getIsOAO_110_recordOwner_2700" - %"$$getIsOAO_110_call_2702" = call { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_110_fptr_2698"(i8* %"$$getIsOAO_110_envptr_2699", [20 x i8]* %"$$getIsOAO_110_recordOwner_2700") - store { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_110_call_2702", { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$getIsOAO_111" - %"$getIsOAO_112" = alloca { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } - %"$$getIsOAO_111_2703" = load { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$getIsOAO_111" - %"$$getIsOAO_111_fptr_2704" = extractvalue { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_111_2703", 0 - %"$$getIsOAO_111_envptr_2705" = extractvalue { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_111_2703", 1 - %"$maybeApproved_2706" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved - %"$$getIsOAO_111_call_2707" = call { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_111_fptr_2704"(i8* %"$$getIsOAO_111_envptr_2705", %TName_Option_ByStr20* %"$maybeApproved_2706") - store { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_111_call_2707", { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$getIsOAO_112" - %"$getIsOAO_113" = alloca %TName_Bool* - %"$$getIsOAO_112_2708" = load { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }, { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$getIsOAO_112" - %"$$getIsOAO_112_fptr_2709" = extractvalue { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_112_2708", 0 - %"$$getIsOAO_112_envptr_2710" = extractvalue { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_112_2708", 1 - %"$maybeOperators_2711" = load %"TName_Option_List_(ByStr20)"*, %"TName_Option_List_(ByStr20)"** %maybeOperators - %"$$getIsOAO_112_call_2712" = call %TName_Bool* %"$$getIsOAO_112_fptr_2709"(i8* %"$$getIsOAO_112_envptr_2710", %"TName_Option_List_(ByStr20)"* %"$maybeOperators_2711") - store %TName_Bool* %"$$getIsOAO_112_call_2712", %TName_Bool** %"$getIsOAO_113" - %"$$getIsOAO_113_2713" = load %TName_Bool*, %TName_Bool** %"$getIsOAO_113" - store %TName_Bool* %"$$getIsOAO_113_2713", %TName_Bool** %isSenderOAO - %"$isSenderOAO_2715" = load %TName_Bool*, %TName_Bool** %isSenderOAO - %"$isSenderOAO_tag_2716" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isSenderOAO_2715", i32 0, i32 0 - %"$isSenderOAO_tag_2717" = load i8, i8* %"$isSenderOAO_tag_2716" - switch i8 %"$isSenderOAO_tag_2717", label %"$empty_default_2718" [ - i8 0, label %"$True_2719" - i8 1, label %"$False_2849" + %"$gasrem_4436" = load i64, i64* @_gasrem + %"$gascmp_4437" = icmp ugt i64 1, %"$gasrem_4436" + br i1 %"$gascmp_4437", label %"$out_of_gas_4438", label %"$have_gas_4439" + +"$out_of_gas_4438": ; preds = %"$have_gas_4434" + call void @_out_of_gas() + br label %"$have_gas_4439" + +"$have_gas_4439": ; preds = %"$out_of_gas_4438", %"$have_gas_4434" + %"$consume_4440" = sub i64 %"$gasrem_4436", 1 + store i64 %"$consume_4440", i64* @_gasrem + %"$getIsOAO_107" = alloca { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } + %"$getIsOAO_4441" = load { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* @getIsOAO + %"$getIsOAO_fptr_4442" = extractvalue { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_4441", 0 + %"$getIsOAO_envptr_4443" = extractvalue { { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_4441", 1 + %"$getIsOAO__sender_4444" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$getIsOAO__sender_4444" + %"$getIsOAO_call_4445" = call { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_fptr_4442"(i8* %"$getIsOAO_envptr_4443", [20 x i8]* %"$getIsOAO__sender_4444") + store { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$getIsOAO_call_4445", { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$getIsOAO_107" + %"$getIsOAO_108" = alloca { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } + %"$$getIsOAO_107_4446" = load { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$getIsOAO_107" + %"$$getIsOAO_107_fptr_4447" = extractvalue { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$getIsOAO_107_4446", 0 + %"$$getIsOAO_107_envptr_4448" = extractvalue { { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$getIsOAO_107_4446", 1 + %"$$getIsOAO_107_recordOwner_4449" = alloca [20 x i8] + %"$recordOwner_4450" = load [20 x i8], [20 x i8]* %recordOwner + store [20 x i8] %"$recordOwner_4450", [20 x i8]* %"$$getIsOAO_107_recordOwner_4449" + %"$$getIsOAO_107_call_4451" = call { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_107_fptr_4447"(i8* %"$$getIsOAO_107_envptr_4448", [20 x i8]* %"$$getIsOAO_107_recordOwner_4449") + store { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_107_call_4451", { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$getIsOAO_108" + %"$getIsOAO_109" = alloca { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } + %"$$getIsOAO_108_4452" = load { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* }* %"$getIsOAO_108" + %"$$getIsOAO_108_fptr_4453" = extractvalue { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_108_4452", 0 + %"$$getIsOAO_108_envptr_4454" = extractvalue { { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } (i8*, %TName_Option_ByStr20*)*, i8* } %"$$getIsOAO_108_4452", 1 + %"$maybeApproved_4455" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved + %"$$getIsOAO_108_call_4456" = call { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_108_fptr_4453"(i8* %"$$getIsOAO_108_envptr_4454", %TName_Option_ByStr20* %"$maybeApproved_4455") + store { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_108_call_4456", { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$getIsOAO_109" + %"$getIsOAO_110" = alloca %TName_Bool* + %"$$getIsOAO_109_4457" = load { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }, { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* }* %"$getIsOAO_109" + %"$$getIsOAO_109_fptr_4458" = extractvalue { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_109_4457", 0 + %"$$getIsOAO_109_envptr_4459" = extractvalue { %TName_Bool* (i8*, %"TName_Option_List_(ByStr20)"*)*, i8* } %"$$getIsOAO_109_4457", 1 + %"$maybeOperators_4460" = load %"TName_Option_List_(ByStr20)"*, %"TName_Option_List_(ByStr20)"** %maybeOperators + %"$$getIsOAO_109_call_4461" = call %TName_Bool* %"$$getIsOAO_109_fptr_4458"(i8* %"$$getIsOAO_109_envptr_4459", %"TName_Option_List_(ByStr20)"* %"$maybeOperators_4460") + store %TName_Bool* %"$$getIsOAO_109_call_4461", %TName_Bool** %"$getIsOAO_110" + %"$$getIsOAO_110_4462" = load %TName_Bool*, %TName_Bool** %"$getIsOAO_110" + store %TName_Bool* %"$$getIsOAO_110_4462", %TName_Bool** %isSenderOAO + %"$gasrem_4463" = load i64, i64* @_gasrem + %"$gascmp_4464" = icmp ugt i64 2, %"$gasrem_4463" + br i1 %"$gascmp_4464", label %"$out_of_gas_4465", label %"$have_gas_4466" + +"$out_of_gas_4465": ; preds = %"$have_gas_4439" + call void @_out_of_gas() + br label %"$have_gas_4466" + +"$have_gas_4466": ; preds = %"$out_of_gas_4465", %"$have_gas_4439" + %"$consume_4467" = sub i64 %"$gasrem_4463", 2 + store i64 %"$consume_4467", i64* @_gasrem + %"$isSenderOAO_4469" = load %TName_Bool*, %TName_Bool** %isSenderOAO + %"$isSenderOAO_tag_4470" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isSenderOAO_4469", i32 0, i32 0 + %"$isSenderOAO_tag_4471" = load i8, i8* %"$isSenderOAO_tag_4470" + switch i8 %"$isSenderOAO_tag_4471", label %"$empty_default_4472" [ + i8 0, label %"$True_4473" + i8 1, label %"$False_4716" ] -"$True_2719": ; preds = %entry - %"$isSenderOAO_2720" = bitcast %TName_Bool* %"$isSenderOAO_2715" to %CName_True* +"$True_4473": ; preds = %"$have_gas_4466" + %"$isSenderOAO_4474" = bitcast %TName_Bool* %"$isSenderOAO_4469" to %CName_True* + %"$gasrem_4475" = load i64, i64* @_gasrem + %"$gascmp_4476" = icmp ugt i64 1, %"$gasrem_4475" + br i1 %"$gascmp_4476", label %"$out_of_gas_4477", label %"$have_gas_4478" + +"$out_of_gas_4477": ; preds = %"$True_4473" + call void @_out_of_gas() + br label %"$have_gas_4478" + +"$have_gas_4478": ; preds = %"$out_of_gas_4477", %"$True_4473" + %"$consume_4479" = sub i64 %"$gasrem_4475", 1 + store i64 %"$consume_4479", i64* @_gasrem %node = alloca [32 x i8] - %"$parentLabelToNode_106" = alloca { void (i8*, [32 x i8]*, %String)*, i8* } - %"$parentLabelToNode_2721" = load { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }* @parentLabelToNode - %"$parentLabelToNode_fptr_2722" = extractvalue { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$parentLabelToNode_2721", 0 - %"$parentLabelToNode_envptr_2723" = extractvalue { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$parentLabelToNode_2721", 1 - %"$parentLabelToNode_parent_2724" = alloca [32 x i8] - store [32 x i8] %parent, [32 x i8]* %"$parentLabelToNode_parent_2724" - %"$parentLabelToNode_call_2725" = call { void (i8*, [32 x i8]*, %String)*, i8* } %"$parentLabelToNode_fptr_2722"(i8* %"$parentLabelToNode_envptr_2723", [32 x i8]* %"$parentLabelToNode_parent_2724") - store { void (i8*, [32 x i8]*, %String)*, i8* } %"$parentLabelToNode_call_2725", { void (i8*, [32 x i8]*, %String)*, i8* }* %"$parentLabelToNode_106" - %"$parentLabelToNode_107" = alloca [32 x i8] - %"$$parentLabelToNode_106_2726" = load { void (i8*, [32 x i8]*, %String)*, i8* }, { void (i8*, [32 x i8]*, %String)*, i8* }* %"$parentLabelToNode_106" - %"$$parentLabelToNode_106_fptr_2727" = extractvalue { void (i8*, [32 x i8]*, %String)*, i8* } %"$$parentLabelToNode_106_2726", 0 - %"$$parentLabelToNode_106_envptr_2728" = extractvalue { void (i8*, [32 x i8]*, %String)*, i8* } %"$$parentLabelToNode_106_2726", 1 - %"$$parentLabelToNode_106_retalloca_2729" = alloca [32 x i8] - call void %"$$parentLabelToNode_106_fptr_2727"(i8* %"$$parentLabelToNode_106_envptr_2728", [32 x i8]* %"$$parentLabelToNode_106_retalloca_2729", %String %label) - %"$$parentLabelToNode_106_ret_2730" = load [32 x i8], [32 x i8]* %"$$parentLabelToNode_106_retalloca_2729" - store [32 x i8] %"$$parentLabelToNode_106_ret_2730", [32 x i8]* %"$parentLabelToNode_107" - %"$$parentLabelToNode_107_2731" = load [32 x i8], [32 x i8]* %"$parentLabelToNode_107" - store [32 x i8] %"$$parentLabelToNode_107_2731", [32 x i8]* %node + %"$gasrem_4480" = load i64, i64* @_gasrem + %"$gascmp_4481" = icmp ugt i64 1, %"$gasrem_4480" + br i1 %"$gascmp_4481", label %"$out_of_gas_4482", label %"$have_gas_4483" + +"$out_of_gas_4482": ; preds = %"$have_gas_4478" + call void @_out_of_gas() + br label %"$have_gas_4483" + +"$have_gas_4483": ; preds = %"$out_of_gas_4482", %"$have_gas_4478" + %"$consume_4484" = sub i64 %"$gasrem_4480", 1 + store i64 %"$consume_4484", i64* @_gasrem + %"$parentLabelToNode_103" = alloca { void (i8*, [32 x i8]*, %String)*, i8* } + %"$parentLabelToNode_4485" = load { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }* @parentLabelToNode + %"$parentLabelToNode_fptr_4486" = extractvalue { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$parentLabelToNode_4485", 0 + %"$parentLabelToNode_envptr_4487" = extractvalue { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$parentLabelToNode_4485", 1 + %"$parentLabelToNode_parent_4488" = alloca [32 x i8] + store [32 x i8] %parent, [32 x i8]* %"$parentLabelToNode_parent_4488" + %"$parentLabelToNode_call_4489" = call { void (i8*, [32 x i8]*, %String)*, i8* } %"$parentLabelToNode_fptr_4486"(i8* %"$parentLabelToNode_envptr_4487", [32 x i8]* %"$parentLabelToNode_parent_4488") + store { void (i8*, [32 x i8]*, %String)*, i8* } %"$parentLabelToNode_call_4489", { void (i8*, [32 x i8]*, %String)*, i8* }* %"$parentLabelToNode_103" + %"$parentLabelToNode_104" = alloca [32 x i8] + %"$$parentLabelToNode_103_4490" = load { void (i8*, [32 x i8]*, %String)*, i8* }, { void (i8*, [32 x i8]*, %String)*, i8* }* %"$parentLabelToNode_103" + %"$$parentLabelToNode_103_fptr_4491" = extractvalue { void (i8*, [32 x i8]*, %String)*, i8* } %"$$parentLabelToNode_103_4490", 0 + %"$$parentLabelToNode_103_envptr_4492" = extractvalue { void (i8*, [32 x i8]*, %String)*, i8* } %"$$parentLabelToNode_103_4490", 1 + %"$$parentLabelToNode_103_retalloca_4493" = alloca [32 x i8] + call void %"$$parentLabelToNode_103_fptr_4491"(i8* %"$$parentLabelToNode_103_envptr_4492", [32 x i8]* %"$$parentLabelToNode_103_retalloca_4493", %String %label) + %"$$parentLabelToNode_103_ret_4494" = load [32 x i8], [32 x i8]* %"$$parentLabelToNode_103_retalloca_4493" + store [32 x i8] %"$$parentLabelToNode_103_ret_4494", [32 x i8]* %"$parentLabelToNode_104" + %"$$parentLabelToNode_104_4495" = load [32 x i8], [32 x i8]* %"$parentLabelToNode_104" + store [32 x i8] %"$$parentLabelToNode_104_4495", [32 x i8]* %node %recordExists = alloca %TName_Bool* - %"$indices_buf_2732_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2732_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2732_salloc_load", i64 32) - %"$indices_buf_2732_salloc" = bitcast i8* %"$indices_buf_2732_salloc_salloc" to [32 x i8]* - %"$indices_buf_2732" = bitcast [32 x i8]* %"$indices_buf_2732_salloc" to i8* - %"$node_2733" = load [32 x i8], [32 x i8]* %node - %"$indices_gep_2734" = getelementptr i8, i8* %"$indices_buf_2732", i32 0 - %indices_cast3 = bitcast i8* %"$indices_gep_2734" to [32 x i8]* - store [32 x i8] %"$node_2733", [32 x i8]* %indices_cast3 - %"$execptr_load_2735" = load i8*, i8** @_execptr - %"$recordExists_2737" = call i8* @_fetch_field(i8* %"$execptr_load_2735", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_2736", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_325", i32 1, i8* %"$indices_buf_2732", i32 0) - %"$recordExists_2738" = bitcast i8* %"$recordExists_2737" to %TName_Bool* - store %TName_Bool* %"$recordExists_2738", %TName_Bool** %recordExists - %"$recordExists_2740" = load %TName_Bool*, %TName_Bool** %recordExists - %"$recordExists_tag_2741" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$recordExists_2740", i32 0, i32 0 - %"$recordExists_tag_2742" = load i8, i8* %"$recordExists_tag_2741" - switch i8 %"$recordExists_tag_2742", label %"$default_2743" [ - i8 1, label %"$False_2744" + %"$indices_buf_4496_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_4496_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4496_salloc_load", i64 32) + %"$indices_buf_4496_salloc" = bitcast i8* %"$indices_buf_4496_salloc_salloc" to [32 x i8]* + %"$indices_buf_4496" = bitcast [32 x i8]* %"$indices_buf_4496_salloc" to i8* + %"$node_4497" = load [32 x i8], [32 x i8]* %node + %"$indices_gep_4498" = getelementptr i8, i8* %"$indices_buf_4496", i32 0 + %indices_cast3 = bitcast i8* %"$indices_gep_4498" to [32 x i8]* + store [32 x i8] %"$node_4497", [32 x i8]* %indices_cast3 + %"$execptr_load_4499" = load i8*, i8** @_execptr + %"$recordExists_4501" = call i8* @_fetch_field(i8* %"$execptr_load_4499", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_4500", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_322", i32 1, i8* %"$indices_buf_4496", i32 0) + %"$recordExists_4502" = bitcast i8* %"$recordExists_4501" to %TName_Bool* + store %TName_Bool* %"$recordExists_4502", %TName_Bool** %recordExists + %"$recordExists_4503" = load %TName_Bool*, %TName_Bool** %recordExists + %"$$recordExists_4503_4504" = bitcast %TName_Bool* %"$recordExists_4503" to i8* + %"$_literal_cost_call_4505" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_318", i8* %"$$recordExists_4503_4504") + %"$gasadd_4506" = add i64 %"$_literal_cost_call_4505", 0 + %"$gasadd_4507" = add i64 %"$gasadd_4506", 1 + %"$gasrem_4508" = load i64, i64* @_gasrem + %"$gascmp_4509" = icmp ugt i64 %"$gasadd_4507", %"$gasrem_4508" + br i1 %"$gascmp_4509", label %"$out_of_gas_4510", label %"$have_gas_4511" + +"$out_of_gas_4510": ; preds = %"$have_gas_4483" + call void @_out_of_gas() + br label %"$have_gas_4511" + +"$have_gas_4511": ; preds = %"$out_of_gas_4510", %"$have_gas_4483" + %"$consume_4512" = sub i64 %"$gasrem_4508", %"$gasadd_4507" + store i64 %"$consume_4512", i64* @_gasrem + %"$gasrem_4513" = load i64, i64* @_gasrem + %"$gascmp_4514" = icmp ugt i64 2, %"$gasrem_4513" + br i1 %"$gascmp_4514", label %"$out_of_gas_4515", label %"$have_gas_4516" + +"$out_of_gas_4515": ; preds = %"$have_gas_4511" + call void @_out_of_gas() + br label %"$have_gas_4516" + +"$have_gas_4516": ; preds = %"$out_of_gas_4515", %"$have_gas_4511" + %"$consume_4517" = sub i64 %"$gasrem_4513", 2 + store i64 %"$consume_4517", i64* @_gasrem + %"$recordExists_4519" = load %TName_Bool*, %TName_Bool** %recordExists + %"$recordExists_tag_4520" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$recordExists_4519", i32 0, i32 0 + %"$recordExists_tag_4521" = load i8, i8* %"$recordExists_tag_4520" + switch i8 %"$recordExists_tag_4521", label %"$default_4522" [ + i8 1, label %"$False_4523" ] -"$False_2744": ; preds = %"$True_2719" - %"$recordExists_2745" = bitcast %TName_Bool* %"$recordExists_2740" to %CName_False* +"$False_4523": ; preds = %"$have_gas_4516" + %"$recordExists_4524" = bitcast %TName_Bool* %"$recordExists_4519" to %CName_False* + %"$gasrem_4525" = load i64, i64* @_gasrem + %"$gascmp_4526" = icmp ugt i64 1, %"$gasrem_4525" + br i1 %"$gascmp_4526", label %"$out_of_gas_4527", label %"$have_gas_4528" + +"$out_of_gas_4527": ; preds = %"$False_4523" + call void @_out_of_gas() + br label %"$have_gas_4528" + +"$have_gas_4528": ; preds = %"$out_of_gas_4527", %"$False_4523" + %"$consume_4529" = sub i64 %"$gasrem_4525", 1 + store i64 %"$consume_4529", i64* @_gasrem %e = alloca i8* - %"$eNewDomain_104" = alloca { i8* (i8*, %String)*, i8* } - %"$eNewDomain_2746" = load { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eNewDomain - %"$eNewDomain_fptr_2747" = extractvalue { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eNewDomain_2746", 0 - %"$eNewDomain_envptr_2748" = extractvalue { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eNewDomain_2746", 1 - %"$eNewDomain_parent_2749" = alloca [32 x i8] - store [32 x i8] %parent, [32 x i8]* %"$eNewDomain_parent_2749" - %"$eNewDomain_call_2750" = call { i8* (i8*, %String)*, i8* } %"$eNewDomain_fptr_2747"(i8* %"$eNewDomain_envptr_2748", [32 x i8]* %"$eNewDomain_parent_2749") - store { i8* (i8*, %String)*, i8* } %"$eNewDomain_call_2750", { i8* (i8*, %String)*, i8* }* %"$eNewDomain_104" - %"$eNewDomain_105" = alloca i8* - %"$$eNewDomain_104_2751" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* %"$eNewDomain_104" - %"$$eNewDomain_104_fptr_2752" = extractvalue { i8* (i8*, %String)*, i8* } %"$$eNewDomain_104_2751", 0 - %"$$eNewDomain_104_envptr_2753" = extractvalue { i8* (i8*, %String)*, i8* } %"$$eNewDomain_104_2751", 1 - %"$$eNewDomain_104_call_2754" = call i8* %"$$eNewDomain_104_fptr_2752"(i8* %"$$eNewDomain_104_envptr_2753", %String %label) - store i8* %"$$eNewDomain_104_call_2754", i8** %"$eNewDomain_105" - %"$$eNewDomain_105_2755" = load i8*, i8** %"$eNewDomain_105" - store i8* %"$$eNewDomain_105_2755", i8** %e - %"$execptr_load_2756" = load i8*, i8** @_execptr - %"$e_2757" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_2756", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_2757") - br label %"$matchsucc_2739" - -"$default_2743": ; preds = %"$True_2719" - br label %"$joinp_7" - -"$joinp_7": ; preds = %"$default_2743" - br label %"$matchsucc_2739" - -"$matchsucc_2739": ; preds = %"$False_2744", %"$joinp_7" - %"$indices_buf_2758_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2758_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2758_salloc_load", i64 32) - %"$indices_buf_2758_salloc" = bitcast i8* %"$indices_buf_2758_salloc_salloc" to [32 x i8]* - %"$indices_buf_2758" = bitcast [32 x i8]* %"$indices_buf_2758_salloc" to i8* - %"$node_2759" = load [32 x i8], [32 x i8]* %node - %"$indices_gep_2760" = getelementptr i8, i8* %"$indices_buf_2758", i32 0 - %indices_cast4 = bitcast i8* %"$indices_gep_2760" to [32 x i8]* - store [32 x i8] %"$node_2759", [32 x i8]* %indices_cast4 - %"$execptr_load_2761" = load i8*, i8** @_execptr - call void @_update_field(i8* %"$execptr_load_2761", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_2762", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_324", i32 1, i8* %"$indices_buf_2758", i8* null) + %"$gasrem_4530" = load i64, i64* @_gasrem + %"$gascmp_4531" = icmp ugt i64 1, %"$gasrem_4530" + br i1 %"$gascmp_4531", label %"$out_of_gas_4532", label %"$have_gas_4533" + +"$out_of_gas_4532": ; preds = %"$have_gas_4528" + call void @_out_of_gas() + br label %"$have_gas_4533" + +"$have_gas_4533": ; preds = %"$out_of_gas_4532", %"$have_gas_4528" + %"$consume_4534" = sub i64 %"$gasrem_4530", 1 + store i64 %"$consume_4534", i64* @_gasrem + %"$eNewDomain_101" = alloca { i8* (i8*, %String)*, i8* } + %"$eNewDomain_4535" = load { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eNewDomain + %"$eNewDomain_fptr_4536" = extractvalue { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eNewDomain_4535", 0 + %"$eNewDomain_envptr_4537" = extractvalue { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eNewDomain_4535", 1 + %"$eNewDomain_parent_4538" = alloca [32 x i8] + store [32 x i8] %parent, [32 x i8]* %"$eNewDomain_parent_4538" + %"$eNewDomain_call_4539" = call { i8* (i8*, %String)*, i8* } %"$eNewDomain_fptr_4536"(i8* %"$eNewDomain_envptr_4537", [32 x i8]* %"$eNewDomain_parent_4538") + store { i8* (i8*, %String)*, i8* } %"$eNewDomain_call_4539", { i8* (i8*, %String)*, i8* }* %"$eNewDomain_101" + %"$eNewDomain_102" = alloca i8* + %"$$eNewDomain_101_4540" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* %"$eNewDomain_101" + %"$$eNewDomain_101_fptr_4541" = extractvalue { i8* (i8*, %String)*, i8* } %"$$eNewDomain_101_4540", 0 + %"$$eNewDomain_101_envptr_4542" = extractvalue { i8* (i8*, %String)*, i8* } %"$$eNewDomain_101_4540", 1 + %"$$eNewDomain_101_call_4543" = call i8* %"$$eNewDomain_101_fptr_4541"(i8* %"$$eNewDomain_101_envptr_4542", %String %label) + store i8* %"$$eNewDomain_101_call_4543", i8** %"$eNewDomain_102" + %"$$eNewDomain_102_4544" = load i8*, i8** %"$eNewDomain_102" + store i8* %"$$eNewDomain_102_4544", i8** %e + %"$e_4545" = load i8*, i8** %e + %"$_literal_cost_call_4547" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_4545") + %"$gasrem_4548" = load i64, i64* @_gasrem + %"$gascmp_4549" = icmp ugt i64 %"$_literal_cost_call_4547", %"$gasrem_4548" + br i1 %"$gascmp_4549", label %"$out_of_gas_4550", label %"$have_gas_4551" + +"$out_of_gas_4550": ; preds = %"$have_gas_4533" + call void @_out_of_gas() + br label %"$have_gas_4551" + +"$have_gas_4551": ; preds = %"$out_of_gas_4550", %"$have_gas_4533" + %"$consume_4552" = sub i64 %"$gasrem_4548", %"$_literal_cost_call_4547" + store i64 %"$consume_4552", i64* @_gasrem + %"$execptr_load_4553" = load i8*, i8** @_execptr + %"$e_4554" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_4553", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_4554") + br label %"$matchsucc_4518" + +"$default_4522": ; preds = %"$have_gas_4516" + br label %"$joinp_4" + +"$joinp_4": ; preds = %"$default_4522" + br label %"$matchsucc_4518" + +"$matchsucc_4518": ; preds = %"$have_gas_4551", %"$joinp_4" + %"$gasrem_4555" = load i64, i64* @_gasrem + %"$gascmp_4556" = icmp ugt i64 1, %"$gasrem_4555" + br i1 %"$gascmp_4556", label %"$out_of_gas_4557", label %"$have_gas_4558" + +"$out_of_gas_4557": ; preds = %"$matchsucc_4518" + call void @_out_of_gas() + br label %"$have_gas_4558" + +"$have_gas_4558": ; preds = %"$out_of_gas_4557", %"$matchsucc_4518" + %"$consume_4559" = sub i64 %"$gasrem_4555", 1 + store i64 %"$consume_4559", i64* @_gasrem + %"$indices_buf_4560_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_4560_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4560_salloc_load", i64 32) + %"$indices_buf_4560_salloc" = bitcast i8* %"$indices_buf_4560_salloc_salloc" to [32 x i8]* + %"$indices_buf_4560" = bitcast [32 x i8]* %"$indices_buf_4560_salloc" to i8* + %"$node_4561" = load [32 x i8], [32 x i8]* %node + %"$indices_gep_4562" = getelementptr i8, i8* %"$indices_buf_4560", i32 0 + %indices_cast4 = bitcast i8* %"$indices_gep_4562" to [32 x i8]* + store [32 x i8] %"$node_4561", [32 x i8]* %indices_cast4 + %"$execptr_load_4563" = load i8*, i8** @_execptr + call void @_update_field(i8* %"$execptr_load_4563", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_4564", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_321", i32 1, i8* %"$indices_buf_4560", i8* null) + %"$gasrem_4565" = load i64, i64* @_gasrem + %"$gascmp_4566" = icmp ugt i64 1, %"$gasrem_4565" + br i1 %"$gascmp_4566", label %"$out_of_gas_4567", label %"$have_gas_4568" + +"$out_of_gas_4567": ; preds = %"$have_gas_4558" + call void @_out_of_gas() + br label %"$have_gas_4568" + +"$have_gas_4568": ; preds = %"$out_of_gas_4567", %"$have_gas_4558" + %"$consume_4569" = sub i64 %"$gasrem_4565", 1 + store i64 %"$consume_4569", i64* @_gasrem %newRecord = alloca %TName_Record* - %"$zeroByStr20_2763" = load [20 x i8], [20 x i8]* @zeroByStr20 - %"$adtval_2764_load" = load i8*, i8** @_execptr - %"$adtval_2764_salloc" = call i8* @_salloc(i8* %"$adtval_2764_load", i64 41) - %"$adtval_2764" = bitcast i8* %"$adtval_2764_salloc" to %CName_Record* - %"$adtgep_2765" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_2764", i32 0, i32 0 - store i8 0, i8* %"$adtgep_2765" - %"$adtgep_2766" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_2764", i32 0, i32 1 - store [20 x i8] %owner, [20 x i8]* %"$adtgep_2766" - %"$adtgep_2767" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_2764", i32 0, i32 2 - store [20 x i8] %"$zeroByStr20_2763", [20 x i8]* %"$adtgep_2767" - %"$adtptr_2768" = bitcast %CName_Record* %"$adtval_2764" to %TName_Record* - store %TName_Record* %"$adtptr_2768", %TName_Record** %newRecord - %"$indices_buf_2769_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2769_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2769_salloc_load", i64 32) - %"$indices_buf_2769_salloc" = bitcast i8* %"$indices_buf_2769_salloc_salloc" to [32 x i8]* - %"$indices_buf_2769" = bitcast [32 x i8]* %"$indices_buf_2769_salloc" to i8* - %"$node_2770" = load [32 x i8], [32 x i8]* %node - %"$indices_gep_2771" = getelementptr i8, i8* %"$indices_buf_2769", i32 0 - %indices_cast5 = bitcast i8* %"$indices_gep_2771" to [32 x i8]* - store [32 x i8] %"$node_2770", [32 x i8]* %indices_cast5 - %"$execptr_load_2772" = load i8*, i8** @_execptr - %"$newRecord_2774" = load %TName_Record*, %TName_Record** %newRecord - %"$update_value_2775" = bitcast %TName_Record* %"$newRecord_2774" to i8* - call void @_update_field(i8* %"$execptr_load_2772", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_2773", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_325", i32 1, i8* %"$indices_buf_2769", i8* %"$update_value_2775") + %"$gasrem_4570" = load i64, i64* @_gasrem + %"$gascmp_4571" = icmp ugt i64 1, %"$gasrem_4570" + br i1 %"$gascmp_4571", label %"$out_of_gas_4572", label %"$have_gas_4573" + +"$out_of_gas_4572": ; preds = %"$have_gas_4568" + call void @_out_of_gas() + br label %"$have_gas_4573" + +"$have_gas_4573": ; preds = %"$out_of_gas_4572", %"$have_gas_4568" + %"$consume_4574" = sub i64 %"$gasrem_4570", 1 + store i64 %"$consume_4574", i64* @_gasrem + %"$zeroByStr20_4575" = load [20 x i8], [20 x i8]* @zeroByStr20 + %"$adtval_4576_load" = load i8*, i8** @_execptr + %"$adtval_4576_salloc" = call i8* @_salloc(i8* %"$adtval_4576_load", i64 41) + %"$adtval_4576" = bitcast i8* %"$adtval_4576_salloc" to %CName_Record* + %"$adtgep_4577" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_4576", i32 0, i32 0 + store i8 0, i8* %"$adtgep_4577" + %"$adtgep_4578" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_4576", i32 0, i32 1 + store [20 x i8] %owner, [20 x i8]* %"$adtgep_4578" + %"$adtgep_4579" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_4576", i32 0, i32 2 + store [20 x i8] %"$zeroByStr20_4575", [20 x i8]* %"$adtgep_4579" + %"$adtptr_4580" = bitcast %CName_Record* %"$adtval_4576" to %TName_Record* + store %TName_Record* %"$adtptr_4580", %TName_Record** %newRecord + %"$newRecord_4581" = load %TName_Record*, %TName_Record** %newRecord + %"$$newRecord_4581_4582" = bitcast %TName_Record* %"$newRecord_4581" to i8* + %"$_literal_cost_call_4583" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Record_315", i8* %"$$newRecord_4581_4582") + %"$gasadd_4584" = add i64 %"$_literal_cost_call_4583", 1 + %"$gasrem_4585" = load i64, i64* @_gasrem + %"$gascmp_4586" = icmp ugt i64 %"$gasadd_4584", %"$gasrem_4585" + br i1 %"$gascmp_4586", label %"$out_of_gas_4587", label %"$have_gas_4588" + +"$out_of_gas_4587": ; preds = %"$have_gas_4573" + call void @_out_of_gas() + br label %"$have_gas_4588" + +"$have_gas_4588": ; preds = %"$out_of_gas_4587", %"$have_gas_4573" + %"$consume_4589" = sub i64 %"$gasrem_4585", %"$gasadd_4584" + store i64 %"$consume_4589", i64* @_gasrem + %"$indices_buf_4590_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_4590_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4590_salloc_load", i64 32) + %"$indices_buf_4590_salloc" = bitcast i8* %"$indices_buf_4590_salloc_salloc" to [32 x i8]* + %"$indices_buf_4590" = bitcast [32 x i8]* %"$indices_buf_4590_salloc" to i8* + %"$node_4591" = load [32 x i8], [32 x i8]* %node + %"$indices_gep_4592" = getelementptr i8, i8* %"$indices_buf_4590", i32 0 + %indices_cast5 = bitcast i8* %"$indices_gep_4592" to [32 x i8]* + store [32 x i8] %"$node_4591", [32 x i8]* %indices_cast5 + %"$execptr_load_4593" = load i8*, i8** @_execptr + %"$newRecord_4595" = load %TName_Record*, %TName_Record** %newRecord + %"$update_value_4596" = bitcast %TName_Record* %"$newRecord_4595" to i8* + call void @_update_field(i8* %"$execptr_load_4593", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_4594", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_322", i32 1, i8* %"$indices_buf_4590", i8* %"$update_value_4596") + %"$gasrem_4597" = load i64, i64* @_gasrem + %"$gascmp_4598" = icmp ugt i64 1, %"$gasrem_4597" + br i1 %"$gascmp_4598", label %"$out_of_gas_4599", label %"$have_gas_4600" + +"$out_of_gas_4599": ; preds = %"$have_gas_4588" + call void @_out_of_gas() + br label %"$have_gas_4600" + +"$have_gas_4600": ; preds = %"$out_of_gas_4599", %"$have_gas_4588" + %"$consume_4601" = sub i64 %"$gasrem_4597", 1 + store i64 %"$consume_4601", i64* @_gasrem %e6 = alloca i8* - %"$eConfigured_101" = alloca { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$eConfigured_2776" = load { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eConfigured - %"$eConfigured_fptr_2777" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_2776", 0 - %"$eConfigured_envptr_2778" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_2776", 1 - %"$eConfigured_node_2779" = alloca [32 x i8] - %"$node_2780" = load [32 x i8], [32 x i8]* %node - store [32 x i8] %"$node_2780", [32 x i8]* %"$eConfigured_node_2779" - %"$eConfigured_call_2781" = call { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_fptr_2777"(i8* %"$eConfigured_envptr_2778", [32 x i8]* %"$eConfigured_node_2779") - store { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_call_2781", { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_101" - %"$eConfigured_102" = alloca { i8* (i8*, [20 x i8]*)*, i8* } - %"$$eConfigured_101_2782" = load { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_101" - %"$$eConfigured_101_fptr_2783" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_101_2782", 0 - %"$$eConfigured_101_envptr_2784" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_101_2782", 1 - %"$$eConfigured_101_owner_2785" = alloca [20 x i8] - store [20 x i8] %owner, [20 x i8]* %"$$eConfigured_101_owner_2785" - %"$$eConfigured_101_call_2786" = call { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_101_fptr_2783"(i8* %"$$eConfigured_101_envptr_2784", [20 x i8]* %"$$eConfigured_101_owner_2785") - store { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_101_call_2786", { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_102" - %"$eConfigured_103" = alloca i8* - %"$$eConfigured_102_2787" = load { i8* (i8*, [20 x i8]*)*, i8* }, { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_102" - %"$$eConfigured_102_fptr_2788" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_102_2787", 0 - %"$$eConfigured_102_envptr_2789" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_102_2787", 1 - %"$$eConfigured_102_zeroByStr20_2790" = alloca [20 x i8] - %"$zeroByStr20_2791" = load [20 x i8], [20 x i8]* @zeroByStr20 - store [20 x i8] %"$zeroByStr20_2791", [20 x i8]* %"$$eConfigured_102_zeroByStr20_2790" - %"$$eConfigured_102_call_2792" = call i8* %"$$eConfigured_102_fptr_2788"(i8* %"$$eConfigured_102_envptr_2789", [20 x i8]* %"$$eConfigured_102_zeroByStr20_2790") - store i8* %"$$eConfigured_102_call_2792", i8** %"$eConfigured_103" - %"$$eConfigured_103_2793" = load i8*, i8** %"$eConfigured_103" - store i8* %"$$eConfigured_103_2793", i8** %e6 - %"$execptr_load_2794" = load i8*, i8** @_execptr - %"$e_2795" = load i8*, i8** %e6 - call void @_event(i8* %"$execptr_load_2794", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_2795") + %"$gasrem_4602" = load i64, i64* @_gasrem + %"$gascmp_4603" = icmp ugt i64 1, %"$gasrem_4602" + br i1 %"$gascmp_4603", label %"$out_of_gas_4604", label %"$have_gas_4605" + +"$out_of_gas_4604": ; preds = %"$have_gas_4600" + call void @_out_of_gas() + br label %"$have_gas_4605" + +"$have_gas_4605": ; preds = %"$out_of_gas_4604", %"$have_gas_4600" + %"$consume_4606" = sub i64 %"$gasrem_4602", 1 + store i64 %"$consume_4606", i64* @_gasrem + %"$eConfigured_98" = alloca { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } + %"$eConfigured_4607" = load { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eConfigured + %"$eConfigured_fptr_4608" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_4607", 0 + %"$eConfigured_envptr_4609" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_4607", 1 + %"$eConfigured_node_4610" = alloca [32 x i8] + %"$node_4611" = load [32 x i8], [32 x i8]* %node + store [32 x i8] %"$node_4611", [32 x i8]* %"$eConfigured_node_4610" + %"$eConfigured_call_4612" = call { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_fptr_4608"(i8* %"$eConfigured_envptr_4609", [32 x i8]* %"$eConfigured_node_4610") + store { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_call_4612", { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_98" + %"$eConfigured_99" = alloca { i8* (i8*, [20 x i8]*)*, i8* } + %"$$eConfigured_98_4613" = load { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_98" + %"$$eConfigured_98_fptr_4614" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_98_4613", 0 + %"$$eConfigured_98_envptr_4615" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_98_4613", 1 + %"$$eConfigured_98_owner_4616" = alloca [20 x i8] + store [20 x i8] %owner, [20 x i8]* %"$$eConfigured_98_owner_4616" + %"$$eConfigured_98_call_4617" = call { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_98_fptr_4614"(i8* %"$$eConfigured_98_envptr_4615", [20 x i8]* %"$$eConfigured_98_owner_4616") + store { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_98_call_4617", { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_99" + %"$eConfigured_100" = alloca i8* + %"$$eConfigured_99_4618" = load { i8* (i8*, [20 x i8]*)*, i8* }, { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_99" + %"$$eConfigured_99_fptr_4619" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_99_4618", 0 + %"$$eConfigured_99_envptr_4620" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_99_4618", 1 + %"$$eConfigured_99_zeroByStr20_4621" = alloca [20 x i8] + %"$zeroByStr20_4622" = load [20 x i8], [20 x i8]* @zeroByStr20 + store [20 x i8] %"$zeroByStr20_4622", [20 x i8]* %"$$eConfigured_99_zeroByStr20_4621" + %"$$eConfigured_99_call_4623" = call i8* %"$$eConfigured_99_fptr_4619"(i8* %"$$eConfigured_99_envptr_4620", [20 x i8]* %"$$eConfigured_99_zeroByStr20_4621") + store i8* %"$$eConfigured_99_call_4623", i8** %"$eConfigured_100" + %"$$eConfigured_100_4624" = load i8*, i8** %"$eConfigured_100" + store i8* %"$$eConfigured_100_4624", i8** %e6 + %"$e_4625" = load i8*, i8** %e6 + %"$_literal_cost_call_4627" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_4625") + %"$gasrem_4628" = load i64, i64* @_gasrem + %"$gascmp_4629" = icmp ugt i64 %"$_literal_cost_call_4627", %"$gasrem_4628" + br i1 %"$gascmp_4629", label %"$out_of_gas_4630", label %"$have_gas_4631" + +"$out_of_gas_4630": ; preds = %"$have_gas_4605" + call void @_out_of_gas() + br label %"$have_gas_4631" + +"$have_gas_4631": ; preds = %"$out_of_gas_4630", %"$have_gas_4605" + %"$consume_4632" = sub i64 %"$gasrem_4628", %"$_literal_cost_call_4627" + store i64 %"$consume_4632", i64* @_gasrem + %"$execptr_load_4633" = load i8*, i8** @_execptr + %"$e_4634" = load i8*, i8** %e6 + call void @_event(i8* %"$execptr_load_4633", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_4634") + %"$gasrem_4635" = load i64, i64* @_gasrem + %"$gascmp_4636" = icmp ugt i64 1, %"$gasrem_4635" + br i1 %"$gascmp_4636", label %"$out_of_gas_4637", label %"$have_gas_4638" + +"$out_of_gas_4637": ; preds = %"$have_gas_4631" + call void @_out_of_gas() + br label %"$have_gas_4638" + +"$have_gas_4638": ; preds = %"$out_of_gas_4637", %"$have_gas_4631" + %"$consume_4639" = sub i64 %"$gasrem_4635", 1 + store i64 %"$consume_4639", i64* @_gasrem %msgs = alloca %TName_List_Message* + %"$gasrem_4640" = load i64, i64* @_gasrem + %"$gascmp_4641" = icmp ugt i64 1, %"$gasrem_4640" + br i1 %"$gascmp_4641", label %"$out_of_gas_4642", label %"$have_gas_4643" + +"$out_of_gas_4642": ; preds = %"$have_gas_4638" + call void @_out_of_gas() + br label %"$have_gas_4643" + +"$have_gas_4643": ; preds = %"$out_of_gas_4642", %"$have_gas_4638" + %"$consume_4644" = sub i64 %"$gasrem_4640", 1 + store i64 %"$consume_4644", i64* @_gasrem %m = alloca i8* - %"$msgobj_2796_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_2796_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2796_salloc_load", i64 265) - %"$msgobj_2796_salloc" = bitcast i8* %"$msgobj_2796_salloc_salloc" to [265 x i8]* - %"$msgobj_2796" = bitcast [265 x i8]* %"$msgobj_2796_salloc" to i8* - store i8 6, i8* %"$msgobj_2796" - %"$msgobj_fname_2798" = getelementptr i8, i8* %"$msgobj_2796", i32 1 - %"$msgobj_fname_2799" = bitcast i8* %"$msgobj_fname_2798" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2797", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2799" - %"$msgobj_td_2800" = getelementptr i8, i8* %"$msgobj_2796", i32 17 - %"$msgobj_td_2801" = bitcast i8* %"$msgobj_td_2800" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_2801" - %"$msgobj_v_2803" = getelementptr i8, i8* %"$msgobj_2796", i32 25 - %"$msgobj_v_2804" = bitcast i8* %"$msgobj_v_2803" to %String* - store %String { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stringlit_2802", i32 0, i32 0), i32 15 }, %String* %"$msgobj_v_2804" - %"$msgobj_fname_2806" = getelementptr i8, i8* %"$msgobj_2796", i32 41 - %"$msgobj_fname_2807" = bitcast i8* %"$msgobj_fname_2806" to %String* - store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_2805", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_2807" - %"$msgobj_td_2808" = getelementptr i8, i8* %"$msgobj_2796", i32 57 - %"$msgobj_td_2809" = bitcast i8* %"$msgobj_td_2808" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_309", %_TyDescrTy_Typ** %"$msgobj_td_2809" - %"$msgobj_v_2810" = getelementptr i8, i8* %"$msgobj_2796", i32 65 - %"$msgobj_v_2811" = bitcast i8* %"$msgobj_v_2810" to [32 x i8]* - store [32 x i8] %parent, [32 x i8]* %"$msgobj_v_2811" - %"$msgobj_fname_2813" = getelementptr i8, i8* %"$msgobj_2796", i32 97 - %"$msgobj_fname_2814" = bitcast i8* %"$msgobj_fname_2813" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2812", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_2814" - %"$msgobj_td_2815" = getelementptr i8, i8* %"$msgobj_2796", i32 113 - %"$msgobj_td_2816" = bitcast i8* %"$msgobj_td_2815" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_2816" - %"$msgobj_v_2817" = getelementptr i8, i8* %"$msgobj_2796", i32 121 - %"$msgobj_v_2818" = bitcast i8* %"$msgobj_v_2817" to %String* - store %String %label, %String* %"$msgobj_v_2818" - %"$msgobj_fname_2820" = getelementptr i8, i8* %"$msgobj_2796", i32 137 - %"$msgobj_fname_2821" = bitcast i8* %"$msgobj_fname_2820" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2819", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_2821" - %"$msgobj_td_2822" = getelementptr i8, i8* %"$msgobj_2796", i32 153 - %"$msgobj_td_2823" = bitcast i8* %"$msgobj_td_2822" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_2823" - %"$msgobj_v_2824" = getelementptr i8, i8* %"$msgobj_2796", i32 161 - %"$msgobj_v_2825" = bitcast i8* %"$msgobj_v_2824" to [20 x i8]* - store [20 x i8] %owner, [20 x i8]* %"$msgobj_v_2825" - %"$msgobj_fname_2827" = getelementptr i8, i8* %"$msgobj_2796", i32 181 - %"$msgobj_fname_2828" = bitcast i8* %"$msgobj_fname_2827" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2826", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2828" - %"$msgobj_td_2829" = getelementptr i8, i8* %"$msgobj_2796", i32 197 - %"$msgobj_td_2830" = bitcast i8* %"$msgobj_td_2829" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Uint128_289", %_TyDescrTy_Typ** %"$msgobj_td_2830" - %"$msgobj_v_2831" = getelementptr i8, i8* %"$msgobj_2796", i32 205 - %"$msgobj_v_2832" = bitcast i8* %"$msgobj_v_2831" to %Uint128* - store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_2832" - %"$msgobj_fname_2834" = getelementptr i8, i8* %"$msgobj_2796", i32 221 - %"$msgobj_fname_2835" = bitcast i8* %"$msgobj_fname_2834" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2833", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2835" - %"$msgobj_td_2836" = getelementptr i8, i8* %"$msgobj_2796", i32 237 - %"$msgobj_td_2837" = bitcast i8* %"$msgobj_td_2836" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_2837" - %"$msgobj_v_2838" = getelementptr i8, i8* %"$msgobj_2796", i32 245 - %"$msgobj_v_2839" = bitcast i8* %"$msgobj_v_2838" to [20 x i8]* - store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_2839" - store i8* %"$msgobj_2796", i8** %m - %"$oneMsg_100" = alloca %TName_List_Message* - %"$oneMsg_2841" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg - %"$oneMsg_fptr_2842" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_2841", 0 - %"$oneMsg_envptr_2843" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_2841", 1 - %"$m_2844" = load i8*, i8** %m - %"$oneMsg_call_2845" = call %TName_List_Message* %"$oneMsg_fptr_2842"(i8* %"$oneMsg_envptr_2843", i8* %"$m_2844") - store %TName_List_Message* %"$oneMsg_call_2845", %TName_List_Message** %"$oneMsg_100" - %"$$oneMsg_100_2846" = load %TName_List_Message*, %TName_List_Message** %"$oneMsg_100" - store %TName_List_Message* %"$$oneMsg_100_2846", %TName_List_Message** %msgs - %"$execptr_load_2847" = load i8*, i8** @_execptr - %"$msgs_2848" = load %TName_List_Message*, %TName_List_Message** %msgs - call void @_send(i8* %"$execptr_load_2847", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_319", %TName_List_Message* %"$msgs_2848") - br label %"$matchsucc_2714" - -"$False_2849": ; preds = %entry - %"$isSenderOAO_2850" = bitcast %TName_Bool* %"$isSenderOAO_2715" to %CName_False* + %"$gasrem_4645" = load i64, i64* @_gasrem + %"$gascmp_4646" = icmp ugt i64 1, %"$gasrem_4645" + br i1 %"$gascmp_4646", label %"$out_of_gas_4647", label %"$have_gas_4648" + +"$out_of_gas_4647": ; preds = %"$have_gas_4643" + call void @_out_of_gas() + br label %"$have_gas_4648" + +"$have_gas_4648": ; preds = %"$out_of_gas_4647", %"$have_gas_4643" + %"$consume_4649" = sub i64 %"$gasrem_4645", 1 + store i64 %"$consume_4649", i64* @_gasrem + %"$msgobj_4650_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_4650_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_4650_salloc_load", i64 265) + %"$msgobj_4650_salloc" = bitcast i8* %"$msgobj_4650_salloc_salloc" to [265 x i8]* + %"$msgobj_4650" = bitcast [265 x i8]* %"$msgobj_4650_salloc" to i8* + store i8 6, i8* %"$msgobj_4650" + %"$msgobj_fname_4652" = getelementptr i8, i8* %"$msgobj_4650", i32 1 + %"$msgobj_fname_4653" = bitcast i8* %"$msgobj_fname_4652" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_4651", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_4653" + %"$msgobj_td_4654" = getelementptr i8, i8* %"$msgobj_4650", i32 17 + %"$msgobj_td_4655" = bitcast i8* %"$msgobj_td_4654" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_4655" + %"$msgobj_v_4657" = getelementptr i8, i8* %"$msgobj_4650", i32 25 + %"$msgobj_v_4658" = bitcast i8* %"$msgobj_v_4657" to %String* + store %String { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stringlit_4656", i32 0, i32 0), i32 15 }, %String* %"$msgobj_v_4658" + %"$msgobj_fname_4660" = getelementptr i8, i8* %"$msgobj_4650", i32 41 + %"$msgobj_fname_4661" = bitcast i8* %"$msgobj_fname_4660" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_4659", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_4661" + %"$msgobj_td_4662" = getelementptr i8, i8* %"$msgobj_4650", i32 57 + %"$msgobj_td_4663" = bitcast i8* %"$msgobj_td_4662" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_306", %_TyDescrTy_Typ** %"$msgobj_td_4663" + %"$msgobj_v_4664" = getelementptr i8, i8* %"$msgobj_4650", i32 65 + %"$msgobj_v_4665" = bitcast i8* %"$msgobj_v_4664" to [32 x i8]* + store [32 x i8] %parent, [32 x i8]* %"$msgobj_v_4665" + %"$msgobj_fname_4667" = getelementptr i8, i8* %"$msgobj_4650", i32 97 + %"$msgobj_fname_4668" = bitcast i8* %"$msgobj_fname_4667" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_4666", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_4668" + %"$msgobj_td_4669" = getelementptr i8, i8* %"$msgobj_4650", i32 113 + %"$msgobj_td_4670" = bitcast i8* %"$msgobj_td_4669" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_4670" + %"$msgobj_v_4671" = getelementptr i8, i8* %"$msgobj_4650", i32 121 + %"$msgobj_v_4672" = bitcast i8* %"$msgobj_v_4671" to %String* + store %String %label, %String* %"$msgobj_v_4672" + %"$msgobj_fname_4674" = getelementptr i8, i8* %"$msgobj_4650", i32 137 + %"$msgobj_fname_4675" = bitcast i8* %"$msgobj_fname_4674" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_4673", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_4675" + %"$msgobj_td_4676" = getelementptr i8, i8* %"$msgobj_4650", i32 153 + %"$msgobj_td_4677" = bitcast i8* %"$msgobj_td_4676" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_4677" + %"$msgobj_v_4678" = getelementptr i8, i8* %"$msgobj_4650", i32 161 + %"$msgobj_v_4679" = bitcast i8* %"$msgobj_v_4678" to [20 x i8]* + store [20 x i8] %owner, [20 x i8]* %"$msgobj_v_4679" + %"$msgobj_fname_4681" = getelementptr i8, i8* %"$msgobj_4650", i32 181 + %"$msgobj_fname_4682" = bitcast i8* %"$msgobj_fname_4681" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_4680", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_4682" + %"$msgobj_td_4683" = getelementptr i8, i8* %"$msgobj_4650", i32 197 + %"$msgobj_td_4684" = bitcast i8* %"$msgobj_td_4683" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_286", %_TyDescrTy_Typ** %"$msgobj_td_4684" + %"$msgobj_v_4685" = getelementptr i8, i8* %"$msgobj_4650", i32 205 + %"$msgobj_v_4686" = bitcast i8* %"$msgobj_v_4685" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_4686" + %"$msgobj_fname_4688" = getelementptr i8, i8* %"$msgobj_4650", i32 221 + %"$msgobj_fname_4689" = bitcast i8* %"$msgobj_fname_4688" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_4687", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_4689" + %"$msgobj_td_4690" = getelementptr i8, i8* %"$msgobj_4650", i32 237 + %"$msgobj_td_4691" = bitcast i8* %"$msgobj_td_4690" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_4691" + %"$msgobj_v_4692" = getelementptr i8, i8* %"$msgobj_4650", i32 245 + %"$msgobj_v_4693" = bitcast i8* %"$msgobj_v_4692" to [20 x i8]* + store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_4693" + store i8* %"$msgobj_4650", i8** %m + %"$gasrem_4695" = load i64, i64* @_gasrem + %"$gascmp_4696" = icmp ugt i64 1, %"$gasrem_4695" + br i1 %"$gascmp_4696", label %"$out_of_gas_4697", label %"$have_gas_4698" + +"$out_of_gas_4697": ; preds = %"$have_gas_4648" + call void @_out_of_gas() + br label %"$have_gas_4698" + +"$have_gas_4698": ; preds = %"$out_of_gas_4697", %"$have_gas_4648" + %"$consume_4699" = sub i64 %"$gasrem_4695", 1 + store i64 %"$consume_4699", i64* @_gasrem + %"$oneMsg_97" = alloca %TName_List_Message* + %"$oneMsg_4700" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg + %"$oneMsg_fptr_4701" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_4700", 0 + %"$oneMsg_envptr_4702" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_4700", 1 + %"$m_4703" = load i8*, i8** %m + %"$oneMsg_call_4704" = call %TName_List_Message* %"$oneMsg_fptr_4701"(i8* %"$oneMsg_envptr_4702", i8* %"$m_4703") + store %TName_List_Message* %"$oneMsg_call_4704", %TName_List_Message** %"$oneMsg_97" + %"$$oneMsg_97_4705" = load %TName_List_Message*, %TName_List_Message** %"$oneMsg_97" + store %TName_List_Message* %"$$oneMsg_97_4705", %TName_List_Message** %msgs + %"$msgs_4706" = load %TName_List_Message*, %TName_List_Message** %msgs + %"$$msgs_4706_4707" = bitcast %TName_List_Message* %"$msgs_4706" to i8* + %"$_literal_cost_call_4708" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_316", i8* %"$$msgs_4706_4707") + %"$gasrem_4709" = load i64, i64* @_gasrem + %"$gascmp_4710" = icmp ugt i64 %"$_literal_cost_call_4708", %"$gasrem_4709" + br i1 %"$gascmp_4710", label %"$out_of_gas_4711", label %"$have_gas_4712" + +"$out_of_gas_4711": ; preds = %"$have_gas_4698" + call void @_out_of_gas() + br label %"$have_gas_4712" + +"$have_gas_4712": ; preds = %"$out_of_gas_4711", %"$have_gas_4698" + %"$consume_4713" = sub i64 %"$gasrem_4709", %"$_literal_cost_call_4708" + store i64 %"$consume_4713", i64* @_gasrem + %"$execptr_load_4714" = load i8*, i8** @_execptr + %"$msgs_4715" = load %TName_List_Message*, %TName_List_Message** %msgs + call void @_send(i8* %"$execptr_load_4714", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_316", %TName_List_Message* %"$msgs_4715") + br label %"$matchsucc_4468" + +"$False_4716": ; preds = %"$have_gas_4466" + %"$isSenderOAO_4717" = bitcast %TName_Bool* %"$isSenderOAO_4469" to %CName_False* + %"$gasrem_4718" = load i64, i64* @_gasrem + %"$gascmp_4719" = icmp ugt i64 1, %"$gasrem_4718" + br i1 %"$gascmp_4719", label %"$out_of_gas_4720", label %"$have_gas_4721" + +"$out_of_gas_4720": ; preds = %"$False_4716" + call void @_out_of_gas() + br label %"$have_gas_4721" + +"$have_gas_4721": ; preds = %"$out_of_gas_4720", %"$False_4716" + %"$consume_4722" = sub i64 %"$gasrem_4718", 1 + store i64 %"$consume_4722", i64* @_gasrem %e7 = alloca i8* + %"$gasrem_4723" = load i64, i64* @_gasrem + %"$gascmp_4724" = icmp ugt i64 1, %"$gasrem_4723" + br i1 %"$gascmp_4724", label %"$out_of_gas_4725", label %"$have_gas_4726" + +"$out_of_gas_4725": ; preds = %"$have_gas_4721" + call void @_out_of_gas() + br label %"$have_gas_4726" + +"$have_gas_4726": ; preds = %"$out_of_gas_4725", %"$have_gas_4721" + %"$consume_4727" = sub i64 %"$gasrem_4723", 1 + store i64 %"$consume_4727", i64* @_gasrem %m8 = alloca %String - store %String { i8* getelementptr inbounds ([45 x i8], [45 x i8]* @"$stringlit_2851", i32 0, i32 0), i32 45 }, %String* %m8 - %"$eError_109" = alloca i8* - %"$eError_2852" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* @eError - %"$eError_fptr_2853" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_2852", 0 - %"$eError_envptr_2854" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_2852", 1 - %"$m_2855" = load %String, %String* %m8 - %"$eError_call_2856" = call i8* %"$eError_fptr_2853"(i8* %"$eError_envptr_2854", %String %"$m_2855") - store i8* %"$eError_call_2856", i8** %"$eError_109" - %"$$eError_109_2857" = load i8*, i8** %"$eError_109" - store i8* %"$$eError_109_2857", i8** %e7 - %"$execptr_load_2858" = load i8*, i8** @_execptr - %"$e_2859" = load i8*, i8** %e7 - call void @_event(i8* %"$execptr_load_2858", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_2859") + %"$gasrem_4728" = load i64, i64* @_gasrem + %"$gascmp_4729" = icmp ugt i64 1, %"$gasrem_4728" + br i1 %"$gascmp_4729", label %"$out_of_gas_4730", label %"$have_gas_4731" + +"$out_of_gas_4730": ; preds = %"$have_gas_4726" + call void @_out_of_gas() + br label %"$have_gas_4731" + +"$have_gas_4731": ; preds = %"$out_of_gas_4730", %"$have_gas_4726" + %"$consume_4732" = sub i64 %"$gasrem_4728", 1 + store i64 %"$consume_4732", i64* @_gasrem + store %String { i8* getelementptr inbounds ([45 x i8], [45 x i8]* @"$stringlit_4733", i32 0, i32 0), i32 45 }, %String* %m8 + %"$gasrem_4734" = load i64, i64* @_gasrem + %"$gascmp_4735" = icmp ugt i64 1, %"$gasrem_4734" + br i1 %"$gascmp_4735", label %"$out_of_gas_4736", label %"$have_gas_4737" + +"$out_of_gas_4736": ; preds = %"$have_gas_4731" + call void @_out_of_gas() + br label %"$have_gas_4737" + +"$have_gas_4737": ; preds = %"$out_of_gas_4736", %"$have_gas_4731" + %"$consume_4738" = sub i64 %"$gasrem_4734", 1 + store i64 %"$consume_4738", i64* @_gasrem + %"$eError_106" = alloca i8* + %"$eError_4739" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* @eError + %"$eError_fptr_4740" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_4739", 0 + %"$eError_envptr_4741" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_4739", 1 + %"$m_4742" = load %String, %String* %m8 + %"$eError_call_4743" = call i8* %"$eError_fptr_4740"(i8* %"$eError_envptr_4741", %String %"$m_4742") + store i8* %"$eError_call_4743", i8** %"$eError_106" + %"$$eError_106_4744" = load i8*, i8** %"$eError_106" + store i8* %"$$eError_106_4744", i8** %e7 + %"$e_4745" = load i8*, i8** %e7 + %"$_literal_cost_call_4747" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_4745") + %"$gasrem_4748" = load i64, i64* @_gasrem + %"$gascmp_4749" = icmp ugt i64 %"$_literal_cost_call_4747", %"$gasrem_4748" + br i1 %"$gascmp_4749", label %"$out_of_gas_4750", label %"$have_gas_4751" + +"$out_of_gas_4750": ; preds = %"$have_gas_4737" + call void @_out_of_gas() + br label %"$have_gas_4751" + +"$have_gas_4751": ; preds = %"$out_of_gas_4750", %"$have_gas_4737" + %"$consume_4752" = sub i64 %"$gasrem_4748", %"$_literal_cost_call_4747" + store i64 %"$consume_4752", i64* @_gasrem + %"$execptr_load_4753" = load i8*, i8** @_execptr + %"$e_4754" = load i8*, i8** %e7 + call void @_event(i8* %"$execptr_load_4753", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_4754") + %"$gasrem_4755" = load i64, i64* @_gasrem + %"$gascmp_4756" = icmp ugt i64 1, %"$gasrem_4755" + br i1 %"$gascmp_4756", label %"$out_of_gas_4757", label %"$have_gas_4758" + +"$out_of_gas_4757": ; preds = %"$have_gas_4751" + call void @_out_of_gas() + br label %"$have_gas_4758" + +"$have_gas_4758": ; preds = %"$out_of_gas_4757", %"$have_gas_4751" + %"$consume_4759" = sub i64 %"$gasrem_4755", 1 + store i64 %"$consume_4759", i64* @_gasrem %msgs9 = alloca %TName_List_Message* - %"$m_2" = alloca i8* - %"$msgobj_2860_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_2860_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2860_salloc_load", i64 265) - %"$msgobj_2860_salloc" = bitcast i8* %"$msgobj_2860_salloc_salloc" to [265 x i8]* - %"$msgobj_2860" = bitcast [265 x i8]* %"$msgobj_2860_salloc" to i8* - store i8 6, i8* %"$msgobj_2860" - %"$msgobj_fname_2862" = getelementptr i8, i8* %"$msgobj_2860", i32 1 - %"$msgobj_fname_2863" = bitcast i8* %"$msgobj_fname_2862" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2861", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2863" - %"$msgobj_td_2864" = getelementptr i8, i8* %"$msgobj_2860", i32 17 - %"$msgobj_td_2865" = bitcast i8* %"$msgobj_td_2864" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_2865" - %"$msgobj_v_2867" = getelementptr i8, i8* %"$msgobj_2860", i32 25 - %"$msgobj_v_2868" = bitcast i8* %"$msgobj_v_2867" to %String* - store %String { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stringlit_2866", i32 0, i32 0), i32 15 }, %String* %"$msgobj_v_2868" - %"$msgobj_fname_2870" = getelementptr i8, i8* %"$msgobj_2860", i32 41 - %"$msgobj_fname_2871" = bitcast i8* %"$msgobj_fname_2870" to %String* - store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_2869", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_2871" - %"$msgobj_td_2872" = getelementptr i8, i8* %"$msgobj_2860", i32 57 - %"$msgobj_td_2873" = bitcast i8* %"$msgobj_td_2872" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_309", %_TyDescrTy_Typ** %"$msgobj_td_2873" - %"$msgobj_v_2874" = getelementptr i8, i8* %"$msgobj_2860", i32 65 - %"$msgobj_v_2875" = bitcast i8* %"$msgobj_v_2874" to [32 x i8]* - store [32 x i8] %parent, [32 x i8]* %"$msgobj_v_2875" - %"$msgobj_fname_2877" = getelementptr i8, i8* %"$msgobj_2860", i32 97 - %"$msgobj_fname_2878" = bitcast i8* %"$msgobj_fname_2877" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2876", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_2878" - %"$msgobj_td_2879" = getelementptr i8, i8* %"$msgobj_2860", i32 113 - %"$msgobj_td_2880" = bitcast i8* %"$msgobj_td_2879" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_2880" - %"$msgobj_v_2881" = getelementptr i8, i8* %"$msgobj_2860", i32 121 - %"$msgobj_v_2882" = bitcast i8* %"$msgobj_v_2881" to %String* - store %String %label, %String* %"$msgobj_v_2882" - %"$msgobj_fname_2884" = getelementptr i8, i8* %"$msgobj_2860", i32 137 - %"$msgobj_fname_2885" = bitcast i8* %"$msgobj_fname_2884" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2883", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_2885" - %"$msgobj_td_2886" = getelementptr i8, i8* %"$msgobj_2860", i32 153 - %"$msgobj_td_2887" = bitcast i8* %"$msgobj_td_2886" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_2887" - %"$recordOwner_2888" = load [20 x i8], [20 x i8]* %recordOwner - %"$msgobj_v_2889" = getelementptr i8, i8* %"$msgobj_2860", i32 161 - %"$msgobj_v_2890" = bitcast i8* %"$msgobj_v_2889" to [20 x i8]* - store [20 x i8] %"$recordOwner_2888", [20 x i8]* %"$msgobj_v_2890" - %"$msgobj_fname_2892" = getelementptr i8, i8* %"$msgobj_2860", i32 181 - %"$msgobj_fname_2893" = bitcast i8* %"$msgobj_fname_2892" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2891", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2893" - %"$msgobj_td_2894" = getelementptr i8, i8* %"$msgobj_2860", i32 197 - %"$msgobj_td_2895" = bitcast i8* %"$msgobj_td_2894" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Uint128_289", %_TyDescrTy_Typ** %"$msgobj_td_2895" - %"$msgobj_v_2896" = getelementptr i8, i8* %"$msgobj_2860", i32 205 - %"$msgobj_v_2897" = bitcast i8* %"$msgobj_v_2896" to %Uint128* - store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_2897" - %"$msgobj_fname_2899" = getelementptr i8, i8* %"$msgobj_2860", i32 221 - %"$msgobj_fname_2900" = bitcast i8* %"$msgobj_fname_2899" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2898", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2900" - %"$msgobj_td_2901" = getelementptr i8, i8* %"$msgobj_2860", i32 237 - %"$msgobj_td_2902" = bitcast i8* %"$msgobj_td_2901" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_2902" - %"$msgobj_v_2903" = getelementptr i8, i8* %"$msgobj_2860", i32 245 - %"$msgobj_v_2904" = bitcast i8* %"$msgobj_v_2903" to [20 x i8]* - store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_2904" - store i8* %"$msgobj_2860", i8** %"$m_2" - %"$oneMsg_108" = alloca %TName_List_Message* - %"$oneMsg_2906" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg - %"$oneMsg_fptr_2907" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_2906", 0 - %"$oneMsg_envptr_2908" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_2906", 1 - %"$$m_2_2909" = load i8*, i8** %"$m_2" - %"$oneMsg_call_2910" = call %TName_List_Message* %"$oneMsg_fptr_2907"(i8* %"$oneMsg_envptr_2908", i8* %"$$m_2_2909") - store %TName_List_Message* %"$oneMsg_call_2910", %TName_List_Message** %"$oneMsg_108" - %"$$oneMsg_108_2911" = load %TName_List_Message*, %TName_List_Message** %"$oneMsg_108" - store %TName_List_Message* %"$$oneMsg_108_2911", %TName_List_Message** %msgs9 - %"$execptr_load_2912" = load i8*, i8** @_execptr - %"$msgs_2913" = load %TName_List_Message*, %TName_List_Message** %msgs9 - call void @_send(i8* %"$execptr_load_2912", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_319", %TName_List_Message* %"$msgs_2913") - br label %"$matchsucc_2714" - -"$empty_default_2718": ; preds = %entry - br label %"$matchsucc_2714" - -"$matchsucc_2714": ; preds = %"$False_2849", %"$matchsucc_2739", %"$empty_default_2718" + %"$gasrem_4760" = load i64, i64* @_gasrem + %"$gascmp_4761" = icmp ugt i64 1, %"$gasrem_4760" + br i1 %"$gascmp_4761", label %"$out_of_gas_4762", label %"$have_gas_4763" + +"$out_of_gas_4762": ; preds = %"$have_gas_4758" + call void @_out_of_gas() + br label %"$have_gas_4763" + +"$have_gas_4763": ; preds = %"$out_of_gas_4762", %"$have_gas_4758" + %"$consume_4764" = sub i64 %"$gasrem_4760", 1 + store i64 %"$consume_4764", i64* @_gasrem + %m10 = alloca i8* + %"$gasrem_4765" = load i64, i64* @_gasrem + %"$gascmp_4766" = icmp ugt i64 1, %"$gasrem_4765" + br i1 %"$gascmp_4766", label %"$out_of_gas_4767", label %"$have_gas_4768" + +"$out_of_gas_4767": ; preds = %"$have_gas_4763" + call void @_out_of_gas() + br label %"$have_gas_4768" + +"$have_gas_4768": ; preds = %"$out_of_gas_4767", %"$have_gas_4763" + %"$consume_4769" = sub i64 %"$gasrem_4765", 1 + store i64 %"$consume_4769", i64* @_gasrem + %"$msgobj_4770_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_4770_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_4770_salloc_load", i64 265) + %"$msgobj_4770_salloc" = bitcast i8* %"$msgobj_4770_salloc_salloc" to [265 x i8]* + %"$msgobj_4770" = bitcast [265 x i8]* %"$msgobj_4770_salloc" to i8* + store i8 6, i8* %"$msgobj_4770" + %"$msgobj_fname_4772" = getelementptr i8, i8* %"$msgobj_4770", i32 1 + %"$msgobj_fname_4773" = bitcast i8* %"$msgobj_fname_4772" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_4771", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_4773" + %"$msgobj_td_4774" = getelementptr i8, i8* %"$msgobj_4770", i32 17 + %"$msgobj_td_4775" = bitcast i8* %"$msgobj_td_4774" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_4775" + %"$msgobj_v_4777" = getelementptr i8, i8* %"$msgobj_4770", i32 25 + %"$msgobj_v_4778" = bitcast i8* %"$msgobj_v_4777" to %String* + store %String { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stringlit_4776", i32 0, i32 0), i32 15 }, %String* %"$msgobj_v_4778" + %"$msgobj_fname_4780" = getelementptr i8, i8* %"$msgobj_4770", i32 41 + %"$msgobj_fname_4781" = bitcast i8* %"$msgobj_fname_4780" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_4779", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_4781" + %"$msgobj_td_4782" = getelementptr i8, i8* %"$msgobj_4770", i32 57 + %"$msgobj_td_4783" = bitcast i8* %"$msgobj_td_4782" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_306", %_TyDescrTy_Typ** %"$msgobj_td_4783" + %"$msgobj_v_4784" = getelementptr i8, i8* %"$msgobj_4770", i32 65 + %"$msgobj_v_4785" = bitcast i8* %"$msgobj_v_4784" to [32 x i8]* + store [32 x i8] %parent, [32 x i8]* %"$msgobj_v_4785" + %"$msgobj_fname_4787" = getelementptr i8, i8* %"$msgobj_4770", i32 97 + %"$msgobj_fname_4788" = bitcast i8* %"$msgobj_fname_4787" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_4786", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_4788" + %"$msgobj_td_4789" = getelementptr i8, i8* %"$msgobj_4770", i32 113 + %"$msgobj_td_4790" = bitcast i8* %"$msgobj_td_4789" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_4790" + %"$msgobj_v_4791" = getelementptr i8, i8* %"$msgobj_4770", i32 121 + %"$msgobj_v_4792" = bitcast i8* %"$msgobj_v_4791" to %String* + store %String %label, %String* %"$msgobj_v_4792" + %"$msgobj_fname_4794" = getelementptr i8, i8* %"$msgobj_4770", i32 137 + %"$msgobj_fname_4795" = bitcast i8* %"$msgobj_fname_4794" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_4793", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_4795" + %"$msgobj_td_4796" = getelementptr i8, i8* %"$msgobj_4770", i32 153 + %"$msgobj_td_4797" = bitcast i8* %"$msgobj_td_4796" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_4797" + %"$recordOwner_4798" = load [20 x i8], [20 x i8]* %recordOwner + %"$msgobj_v_4799" = getelementptr i8, i8* %"$msgobj_4770", i32 161 + %"$msgobj_v_4800" = bitcast i8* %"$msgobj_v_4799" to [20 x i8]* + store [20 x i8] %"$recordOwner_4798", [20 x i8]* %"$msgobj_v_4800" + %"$msgobj_fname_4802" = getelementptr i8, i8* %"$msgobj_4770", i32 181 + %"$msgobj_fname_4803" = bitcast i8* %"$msgobj_fname_4802" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_4801", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_4803" + %"$msgobj_td_4804" = getelementptr i8, i8* %"$msgobj_4770", i32 197 + %"$msgobj_td_4805" = bitcast i8* %"$msgobj_td_4804" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_286", %_TyDescrTy_Typ** %"$msgobj_td_4805" + %"$msgobj_v_4806" = getelementptr i8, i8* %"$msgobj_4770", i32 205 + %"$msgobj_v_4807" = bitcast i8* %"$msgobj_v_4806" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_4807" + %"$msgobj_fname_4809" = getelementptr i8, i8* %"$msgobj_4770", i32 221 + %"$msgobj_fname_4810" = bitcast i8* %"$msgobj_fname_4809" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_4808", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_4810" + %"$msgobj_td_4811" = getelementptr i8, i8* %"$msgobj_4770", i32 237 + %"$msgobj_td_4812" = bitcast i8* %"$msgobj_td_4811" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_4812" + %"$msgobj_v_4813" = getelementptr i8, i8* %"$msgobj_4770", i32 245 + %"$msgobj_v_4814" = bitcast i8* %"$msgobj_v_4813" to [20 x i8]* + store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_4814" + store i8* %"$msgobj_4770", i8** %m10 + %"$gasrem_4816" = load i64, i64* @_gasrem + %"$gascmp_4817" = icmp ugt i64 1, %"$gasrem_4816" + br i1 %"$gascmp_4817", label %"$out_of_gas_4818", label %"$have_gas_4819" + +"$out_of_gas_4818": ; preds = %"$have_gas_4768" + call void @_out_of_gas() + br label %"$have_gas_4819" + +"$have_gas_4819": ; preds = %"$out_of_gas_4818", %"$have_gas_4768" + %"$consume_4820" = sub i64 %"$gasrem_4816", 1 + store i64 %"$consume_4820", i64* @_gasrem + %"$oneMsg_105" = alloca %TName_List_Message* + %"$oneMsg_4821" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg + %"$oneMsg_fptr_4822" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_4821", 0 + %"$oneMsg_envptr_4823" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_4821", 1 + %"$m_4824" = load i8*, i8** %m10 + %"$oneMsg_call_4825" = call %TName_List_Message* %"$oneMsg_fptr_4822"(i8* %"$oneMsg_envptr_4823", i8* %"$m_4824") + store %TName_List_Message* %"$oneMsg_call_4825", %TName_List_Message** %"$oneMsg_105" + %"$$oneMsg_105_4826" = load %TName_List_Message*, %TName_List_Message** %"$oneMsg_105" + store %TName_List_Message* %"$$oneMsg_105_4826", %TName_List_Message** %msgs9 + %"$msgs_4827" = load %TName_List_Message*, %TName_List_Message** %msgs9 + %"$$msgs_4827_4828" = bitcast %TName_List_Message* %"$msgs_4827" to i8* + %"$_literal_cost_call_4829" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_316", i8* %"$$msgs_4827_4828") + %"$gasrem_4830" = load i64, i64* @_gasrem + %"$gascmp_4831" = icmp ugt i64 %"$_literal_cost_call_4829", %"$gasrem_4830" + br i1 %"$gascmp_4831", label %"$out_of_gas_4832", label %"$have_gas_4833" + +"$out_of_gas_4832": ; preds = %"$have_gas_4819" + call void @_out_of_gas() + br label %"$have_gas_4833" + +"$have_gas_4833": ; preds = %"$out_of_gas_4832", %"$have_gas_4819" + %"$consume_4834" = sub i64 %"$gasrem_4830", %"$_literal_cost_call_4829" + store i64 %"$consume_4834", i64* @_gasrem + %"$execptr_load_4835" = load i8*, i8** @_execptr + %"$msgs_4836" = load %TName_List_Message*, %TName_List_Message** %msgs9 + call void @_send(i8* %"$execptr_load_4835", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_316", %TName_List_Message* %"$msgs_4836") + br label %"$matchsucc_4468" + +"$empty_default_4472": ; preds = %"$have_gas_4466" + br label %"$matchsucc_4468" + +"$matchsucc_4468": ; preds = %"$have_gas_4833", %"$have_gas_4712", %"$empty_default_4472" ret void } define void @assign(i8* %0) { entry: - %"$_amount_2915" = getelementptr i8, i8* %0, i32 0 - %"$_amount_2916" = bitcast i8* %"$_amount_2915" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_2916" - %"$_sender_2917" = getelementptr i8, i8* %0, i32 16 - %"$_sender_2918" = bitcast i8* %"$_sender_2917" to [20 x i8]* - %"$parent_2919" = getelementptr i8, i8* %0, i32 36 - %"$parent_2920" = bitcast i8* %"$parent_2919" to [32 x i8]* - %"$label_2921" = getelementptr i8, i8* %0, i32 68 - %"$label_2922" = bitcast i8* %"$label_2921" to %String* - %label = load %String, %String* %"$label_2922" - %"$owner_2923" = getelementptr i8, i8* %0, i32 84 - %"$owner_2924" = bitcast i8* %"$owner_2923" to [20 x i8]* - call void @"$assign_2662"(%Uint128 %_amount, [20 x i8]* %"$_sender_2918", [32 x i8]* %"$parent_2920", %String %label, [20 x i8]* %"$owner_2924") + %"$_amount_4838" = getelementptr i8, i8* %0, i32 0 + %"$_amount_4839" = bitcast i8* %"$_amount_4838" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_4839" + %"$_sender_4840" = getelementptr i8, i8* %0, i32 16 + %"$_sender_4841" = bitcast i8* %"$_sender_4840" to [20 x i8]* + %"$parent_4842" = getelementptr i8, i8* %0, i32 36 + %"$parent_4843" = bitcast i8* %"$parent_4842" to [32 x i8]* + %"$label_4844" = getelementptr i8, i8* %0, i32 68 + %"$label_4845" = bitcast i8* %"$label_4844" to %String* + %label = load %String, %String* %"$label_4845" + %"$owner_4846" = getelementptr i8, i8* %0, i32 84 + %"$owner_4847" = bitcast i8* %"$owner_4846" to [20 x i8]* + call void @"$assign_4361"(%Uint128 %_amount, [20 x i8]* %"$_sender_4841", [32 x i8]* %"$parent_4843", %String %label, [20 x i8]* %"$owner_4847") ret void } -define internal void @"$bestow_2925"(%Uint128 %_amount, [20 x i8]* %"$_sender_2926", %String %label, [20 x i8]* %"$owner_2927", [20 x i8]* %"$resolver_2928") { +define internal void @"$bestow_4848"(%Uint128 %_amount, [20 x i8]* %"$_sender_4849", %String %label, [20 x i8]* %"$owner_4850", [20 x i8]* %"$resolver_4851") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_2926" - %owner = load [20 x i8], [20 x i8]* %"$owner_2927" - %resolver = load [20 x i8], [20 x i8]* %"$resolver_2928" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_4849" + %owner = load [20 x i8], [20 x i8]* %"$owner_4850" + %resolver = load [20 x i8], [20 x i8]* %"$resolver_4851" %currentAdmins = alloca %TName_List_ByStr20* - %"$execptr_load_2929" = load i8*, i8** @_execptr - %"$currentAdmins_2931" = call i8* @_fetch_field(i8* %"$execptr_load_2929", i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$admins_2930", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_320", i32 0, i8* null, i32 1) - %"$currentAdmins_2932" = bitcast i8* %"$currentAdmins_2931" to %TName_List_ByStr20* - store %TName_List_ByStr20* %"$currentAdmins_2932", %TName_List_ByStr20** %currentAdmins + %"$execptr_load_4852" = load i8*, i8** @_execptr + %"$currentAdmins_4854" = call i8* @_fetch_field(i8* %"$execptr_load_4852", i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$admins_4853", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_317", i32 0, i8* null, i32 1) + %"$currentAdmins_4855" = bitcast i8* %"$currentAdmins_4854" to %TName_List_ByStr20* + store %TName_List_ByStr20* %"$currentAdmins_4855", %TName_List_ByStr20** %currentAdmins + %"$currentAdmins_4856" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentAdmins + %"$$currentAdmins_4856_4857" = bitcast %TName_List_ByStr20* %"$currentAdmins_4856" to i8* + %"$_literal_cost_call_4858" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_317", i8* %"$$currentAdmins_4856_4857") + %"$gasadd_4859" = add i64 %"$_literal_cost_call_4858", 0 + %"$gasrem_4860" = load i64, i64* @_gasrem + %"$gascmp_4861" = icmp ugt i64 %"$gasadd_4859", %"$gasrem_4860" + br i1 %"$gascmp_4861", label %"$out_of_gas_4862", label %"$have_gas_4863" + +"$out_of_gas_4862": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_4863" + +"$have_gas_4863": ; preds = %"$out_of_gas_4862", %entry + %"$consume_4864" = sub i64 %"$gasrem_4860", %"$gasadd_4859" + store i64 %"$consume_4864", i64* @_gasrem + %"$gasrem_4865" = load i64, i64* @_gasrem + %"$gascmp_4866" = icmp ugt i64 1, %"$gasrem_4865" + br i1 %"$gascmp_4866", label %"$out_of_gas_4867", label %"$have_gas_4868" + +"$out_of_gas_4867": ; preds = %"$have_gas_4863" + call void @_out_of_gas() + br label %"$have_gas_4868" + +"$have_gas_4868": ; preds = %"$out_of_gas_4867", %"$have_gas_4863" + %"$consume_4869" = sub i64 %"$gasrem_4865", 1 + store i64 %"$consume_4869", i64* @_gasrem %node = alloca [32 x i8] - %"$parentLabelToNode_132" = alloca { void (i8*, [32 x i8]*, %String)*, i8* } - %"$parentLabelToNode_2933" = load { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }* @parentLabelToNode - %"$parentLabelToNode_fptr_2934" = extractvalue { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$parentLabelToNode_2933", 0 - %"$parentLabelToNode_envptr_2935" = extractvalue { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$parentLabelToNode_2933", 1 - %"$parentLabelToNode_rootNode_2936" = alloca [32 x i8] - %"$rootNode_2937" = load [32 x i8], [32 x i8]* @rootNode - store [32 x i8] %"$rootNode_2937", [32 x i8]* %"$parentLabelToNode_rootNode_2936" - %"$parentLabelToNode_call_2938" = call { void (i8*, [32 x i8]*, %String)*, i8* } %"$parentLabelToNode_fptr_2934"(i8* %"$parentLabelToNode_envptr_2935", [32 x i8]* %"$parentLabelToNode_rootNode_2936") - store { void (i8*, [32 x i8]*, %String)*, i8* } %"$parentLabelToNode_call_2938", { void (i8*, [32 x i8]*, %String)*, i8* }* %"$parentLabelToNode_132" - %"$parentLabelToNode_133" = alloca [32 x i8] - %"$$parentLabelToNode_132_2939" = load { void (i8*, [32 x i8]*, %String)*, i8* }, { void (i8*, [32 x i8]*, %String)*, i8* }* %"$parentLabelToNode_132" - %"$$parentLabelToNode_132_fptr_2940" = extractvalue { void (i8*, [32 x i8]*, %String)*, i8* } %"$$parentLabelToNode_132_2939", 0 - %"$$parentLabelToNode_132_envptr_2941" = extractvalue { void (i8*, [32 x i8]*, %String)*, i8* } %"$$parentLabelToNode_132_2939", 1 - %"$$parentLabelToNode_132_retalloca_2942" = alloca [32 x i8] - call void %"$$parentLabelToNode_132_fptr_2940"(i8* %"$$parentLabelToNode_132_envptr_2941", [32 x i8]* %"$$parentLabelToNode_132_retalloca_2942", %String %label) - %"$$parentLabelToNode_132_ret_2943" = load [32 x i8], [32 x i8]* %"$$parentLabelToNode_132_retalloca_2942" - store [32 x i8] %"$$parentLabelToNode_132_ret_2943", [32 x i8]* %"$parentLabelToNode_133" - %"$$parentLabelToNode_133_2944" = load [32 x i8], [32 x i8]* %"$parentLabelToNode_133" - store [32 x i8] %"$$parentLabelToNode_133_2944", [32 x i8]* %node + %"$gasrem_4870" = load i64, i64* @_gasrem + %"$gascmp_4871" = icmp ugt i64 1, %"$gasrem_4870" + br i1 %"$gascmp_4871", label %"$out_of_gas_4872", label %"$have_gas_4873" + +"$out_of_gas_4872": ; preds = %"$have_gas_4868" + call void @_out_of_gas() + br label %"$have_gas_4873" + +"$have_gas_4873": ; preds = %"$out_of_gas_4872", %"$have_gas_4868" + %"$consume_4874" = sub i64 %"$gasrem_4870", 1 + store i64 %"$consume_4874", i64* @_gasrem + %"$parentLabelToNode_129" = alloca { void (i8*, [32 x i8]*, %String)*, i8* } + %"$parentLabelToNode_4875" = load { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }* @parentLabelToNode + %"$parentLabelToNode_fptr_4876" = extractvalue { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$parentLabelToNode_4875", 0 + %"$parentLabelToNode_envptr_4877" = extractvalue { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$parentLabelToNode_4875", 1 + %"$parentLabelToNode_rootNode_4878" = alloca [32 x i8] + %"$rootNode_4879" = load [32 x i8], [32 x i8]* @rootNode + store [32 x i8] %"$rootNode_4879", [32 x i8]* %"$parentLabelToNode_rootNode_4878" + %"$parentLabelToNode_call_4880" = call { void (i8*, [32 x i8]*, %String)*, i8* } %"$parentLabelToNode_fptr_4876"(i8* %"$parentLabelToNode_envptr_4877", [32 x i8]* %"$parentLabelToNode_rootNode_4878") + store { void (i8*, [32 x i8]*, %String)*, i8* } %"$parentLabelToNode_call_4880", { void (i8*, [32 x i8]*, %String)*, i8* }* %"$parentLabelToNode_129" + %"$parentLabelToNode_130" = alloca [32 x i8] + %"$$parentLabelToNode_129_4881" = load { void (i8*, [32 x i8]*, %String)*, i8* }, { void (i8*, [32 x i8]*, %String)*, i8* }* %"$parentLabelToNode_129" + %"$$parentLabelToNode_129_fptr_4882" = extractvalue { void (i8*, [32 x i8]*, %String)*, i8* } %"$$parentLabelToNode_129_4881", 0 + %"$$parentLabelToNode_129_envptr_4883" = extractvalue { void (i8*, [32 x i8]*, %String)*, i8* } %"$$parentLabelToNode_129_4881", 1 + %"$$parentLabelToNode_129_retalloca_4884" = alloca [32 x i8] + call void %"$$parentLabelToNode_129_fptr_4882"(i8* %"$$parentLabelToNode_129_envptr_4883", [32 x i8]* %"$$parentLabelToNode_129_retalloca_4884", %String %label) + %"$$parentLabelToNode_129_ret_4885" = load [32 x i8], [32 x i8]* %"$$parentLabelToNode_129_retalloca_4884" + store [32 x i8] %"$$parentLabelToNode_129_ret_4885", [32 x i8]* %"$parentLabelToNode_130" + %"$$parentLabelToNode_130_4886" = load [32 x i8], [32 x i8]* %"$parentLabelToNode_130" + store [32 x i8] %"$$parentLabelToNode_130_4886", [32 x i8]* %node %recordExists = alloca %TName_Bool* - %"$indices_buf_2945_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2945_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2945_salloc_load", i64 32) - %"$indices_buf_2945_salloc" = bitcast i8* %"$indices_buf_2945_salloc_salloc" to [32 x i8]* - %"$indices_buf_2945" = bitcast [32 x i8]* %"$indices_buf_2945_salloc" to i8* - %"$node_2946" = load [32 x i8], [32 x i8]* %node - %"$indices_gep_2947" = getelementptr i8, i8* %"$indices_buf_2945", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_2947" to [32 x i8]* - store [32 x i8] %"$node_2946", [32 x i8]* %indices_cast - %"$execptr_load_2948" = load i8*, i8** @_execptr - %"$recordExists_2950" = call i8* @_fetch_field(i8* %"$execptr_load_2948", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_2949", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_325", i32 1, i8* %"$indices_buf_2945", i32 0) - %"$recordExists_2951" = bitcast i8* %"$recordExists_2950" to %TName_Bool* - store %TName_Bool* %"$recordExists_2951", %TName_Bool** %recordExists + %"$indices_buf_4887_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_4887_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4887_salloc_load", i64 32) + %"$indices_buf_4887_salloc" = bitcast i8* %"$indices_buf_4887_salloc_salloc" to [32 x i8]* + %"$indices_buf_4887" = bitcast [32 x i8]* %"$indices_buf_4887_salloc" to i8* + %"$node_4888" = load [32 x i8], [32 x i8]* %node + %"$indices_gep_4889" = getelementptr i8, i8* %"$indices_buf_4887", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_4889" to [32 x i8]* + store [32 x i8] %"$node_4888", [32 x i8]* %indices_cast + %"$execptr_load_4890" = load i8*, i8** @_execptr + %"$recordExists_4892" = call i8* @_fetch_field(i8* %"$execptr_load_4890", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_4891", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_322", i32 1, i8* %"$indices_buf_4887", i32 0) + %"$recordExists_4893" = bitcast i8* %"$recordExists_4892" to %TName_Bool* + store %TName_Bool* %"$recordExists_4893", %TName_Bool** %recordExists + %"$recordExists_4894" = load %TName_Bool*, %TName_Bool** %recordExists + %"$$recordExists_4894_4895" = bitcast %TName_Bool* %"$recordExists_4894" to i8* + %"$_literal_cost_call_4896" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_318", i8* %"$$recordExists_4894_4895") + %"$gasadd_4897" = add i64 %"$_literal_cost_call_4896", 0 + %"$gasadd_4898" = add i64 %"$gasadd_4897", 1 + %"$gasrem_4899" = load i64, i64* @_gasrem + %"$gascmp_4900" = icmp ugt i64 %"$gasadd_4898", %"$gasrem_4899" + br i1 %"$gascmp_4900", label %"$out_of_gas_4901", label %"$have_gas_4902" + +"$out_of_gas_4901": ; preds = %"$have_gas_4873" + call void @_out_of_gas() + br label %"$have_gas_4902" + +"$have_gas_4902": ; preds = %"$out_of_gas_4901", %"$have_gas_4873" + %"$consume_4903" = sub i64 %"$gasrem_4899", %"$gasadd_4898" + store i64 %"$consume_4903", i64* @_gasrem %maybeRecord = alloca %TName_Option_Record* - %"$indices_buf_2952_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2952_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2952_salloc_load", i64 32) - %"$indices_buf_2952_salloc" = bitcast i8* %"$indices_buf_2952_salloc_salloc" to [32 x i8]* - %"$indices_buf_2952" = bitcast [32 x i8]* %"$indices_buf_2952_salloc" to i8* - %"$node_2953" = load [32 x i8], [32 x i8]* %node - %"$indices_gep_2954" = getelementptr i8, i8* %"$indices_buf_2952", i32 0 - %indices_cast1 = bitcast i8* %"$indices_gep_2954" to [32 x i8]* - store [32 x i8] %"$node_2953", [32 x i8]* %indices_cast1 - %"$execptr_load_2955" = load i8*, i8** @_execptr - %"$maybeRecord_2957" = call i8* @_fetch_field(i8* %"$execptr_load_2955", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_2956", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_325", i32 1, i8* %"$indices_buf_2952", i32 1) - %"$maybeRecord_2958" = bitcast i8* %"$maybeRecord_2957" to %TName_Option_Record* - store %TName_Option_Record* %"$maybeRecord_2958", %TName_Option_Record** %maybeRecord + %"$indices_buf_4904_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_4904_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4904_salloc_load", i64 32) + %"$indices_buf_4904_salloc" = bitcast i8* %"$indices_buf_4904_salloc_salloc" to [32 x i8]* + %"$indices_buf_4904" = bitcast [32 x i8]* %"$indices_buf_4904_salloc" to i8* + %"$node_4905" = load [32 x i8], [32 x i8]* %node + %"$indices_gep_4906" = getelementptr i8, i8* %"$indices_buf_4904", i32 0 + %indices_cast1 = bitcast i8* %"$indices_gep_4906" to [32 x i8]* + store [32 x i8] %"$node_4905", [32 x i8]* %indices_cast1 + %"$execptr_load_4907" = load i8*, i8** @_execptr + %"$maybeRecord_4909" = call i8* @_fetch_field(i8* %"$execptr_load_4907", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_4908", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_322", i32 1, i8* %"$indices_buf_4904", i32 1) + %"$maybeRecord_4910" = bitcast i8* %"$maybeRecord_4909" to %TName_Option_Record* + store %TName_Option_Record* %"$maybeRecord_4910", %TName_Option_Record** %maybeRecord + %"$maybeRecord_4911" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord + %"$$maybeRecord_4911_4912" = bitcast %TName_Option_Record* %"$maybeRecord_4911" to i8* + %"$_literal_cost_call_4913" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Record_313", i8* %"$$maybeRecord_4911_4912") + %"$gasadd_4914" = add i64 %"$_literal_cost_call_4913", 0 + %"$gasadd_4915" = add i64 %"$gasadd_4914", 1 + %"$gasrem_4916" = load i64, i64* @_gasrem + %"$gascmp_4917" = icmp ugt i64 %"$gasadd_4915", %"$gasrem_4916" + br i1 %"$gascmp_4917", label %"$out_of_gas_4918", label %"$have_gas_4919" + +"$out_of_gas_4918": ; preds = %"$have_gas_4902" + call void @_out_of_gas() + br label %"$have_gas_4919" + +"$have_gas_4919": ; preds = %"$out_of_gas_4918", %"$have_gas_4902" + %"$consume_4920" = sub i64 %"$gasrem_4916", %"$gasadd_4915" + store i64 %"$consume_4920", i64* @_gasrem %currentRegistrar = alloca [20 x i8] - %"$execptr_load_2959" = load i8*, i8** @_execptr - %"$currentRegistrar_2961" = call i8* @_fetch_field(i8* %"$execptr_load_2959", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$registrar_2960", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", i32 0, i8* null, i32 1) - %"$currentRegistrar_2962" = bitcast i8* %"$currentRegistrar_2961" to [20 x i8]* - %"$currentRegistrar_2963" = load [20 x i8], [20 x i8]* %"$currentRegistrar_2962" - store [20 x i8] %"$currentRegistrar_2963", [20 x i8]* %currentRegistrar + %"$execptr_load_4921" = load i8*, i8** @_execptr + %"$currentRegistrar_4923" = call i8* @_fetch_field(i8* %"$execptr_load_4921", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$registrar_4922", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", i32 0, i8* null, i32 1) + %"$currentRegistrar_4924" = bitcast i8* %"$currentRegistrar_4923" to [20 x i8]* + %"$currentRegistrar_4925" = load [20 x i8], [20 x i8]* %"$currentRegistrar_4924" + store [20 x i8] %"$currentRegistrar_4925", [20 x i8]* %currentRegistrar + %"$_literal_cost_currentRegistrar_4926" = alloca [20 x i8] + %"$currentRegistrar_4927" = load [20 x i8], [20 x i8]* %currentRegistrar + store [20 x i8] %"$currentRegistrar_4927", [20 x i8]* %"$_literal_cost_currentRegistrar_4926" + %"$$_literal_cost_currentRegistrar_4926_4928" = bitcast [20 x i8]* %"$_literal_cost_currentRegistrar_4926" to i8* + %"$_literal_cost_call_4929" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", i8* %"$$_literal_cost_currentRegistrar_4926_4928") + %"$gasadd_4930" = add i64 %"$_literal_cost_call_4929", 0 + %"$gasrem_4931" = load i64, i64* @_gasrem + %"$gascmp_4932" = icmp ugt i64 %"$gasadd_4930", %"$gasrem_4931" + br i1 %"$gascmp_4932", label %"$out_of_gas_4933", label %"$have_gas_4934" + +"$out_of_gas_4933": ; preds = %"$have_gas_4919" + call void @_out_of_gas() + br label %"$have_gas_4934" + +"$have_gas_4934": ; preds = %"$out_of_gas_4933", %"$have_gas_4919" + %"$consume_4935" = sub i64 %"$gasrem_4931", %"$gasadd_4930" + store i64 %"$consume_4935", i64* @_gasrem + %"$gasrem_4936" = load i64, i64* @_gasrem + %"$gascmp_4937" = icmp ugt i64 1, %"$gasrem_4936" + br i1 %"$gascmp_4937", label %"$out_of_gas_4938", label %"$have_gas_4939" + +"$out_of_gas_4938": ; preds = %"$have_gas_4934" + call void @_out_of_gas() + br label %"$have_gas_4939" + +"$have_gas_4939": ; preds = %"$out_of_gas_4938", %"$have_gas_4934" + %"$consume_4940" = sub i64 %"$gasrem_4936", 1 + store i64 %"$consume_4940", i64* @_gasrem %isOk = alloca %TName_Bool* + %"$gasrem_4941" = load i64, i64* @_gasrem + %"$gascmp_4942" = icmp ugt i64 1, %"$gasrem_4941" + br i1 %"$gascmp_4942", label %"$out_of_gas_4943", label %"$have_gas_4944" + +"$out_of_gas_4943": ; preds = %"$have_gas_4939" + call void @_out_of_gas() + br label %"$have_gas_4944" + +"$have_gas_4944": ; preds = %"$out_of_gas_4943", %"$have_gas_4939" + %"$consume_4945" = sub i64 %"$gasrem_4941", 1 + store i64 %"$consume_4945", i64* @_gasrem %isSenderAdmin = alloca %TName_Bool* - %"$listByStr20Contains_121" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - %"$listByStr20Contains_2964" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20Contains - %"$listByStr20Contains_fptr_2965" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_2964", 0 - %"$listByStr20Contains_envptr_2966" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_2964", 1 - %"$currentAdmins_2967" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentAdmins - %"$listByStr20Contains_call_2968" = call { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_fptr_2965"(i8* %"$listByStr20Contains_envptr_2966", %TName_List_ByStr20* %"$currentAdmins_2967") - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_call_2968", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_121" - %"$listByStr20Contains_122" = alloca %TName_Bool* - %"$$listByStr20Contains_121_2969" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_121" - %"$$listByStr20Contains_121_fptr_2970" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_121_2969", 0 - %"$$listByStr20Contains_121_envptr_2971" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_121_2969", 1 - %"$$listByStr20Contains_121__sender_2972" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$$listByStr20Contains_121__sender_2972" - %"$$listByStr20Contains_121_call_2973" = call %TName_Bool* %"$$listByStr20Contains_121_fptr_2970"(i8* %"$$listByStr20Contains_121_envptr_2971", [20 x i8]* %"$$listByStr20Contains_121__sender_2972") - store %TName_Bool* %"$$listByStr20Contains_121_call_2973", %TName_Bool** %"$listByStr20Contains_122" - %"$$listByStr20Contains_122_2974" = load %TName_Bool*, %TName_Bool** %"$listByStr20Contains_122" - store %TName_Bool* %"$$listByStr20Contains_122_2974", %TName_Bool** %isSenderAdmin + %"$gasrem_4946" = load i64, i64* @_gasrem + %"$gascmp_4947" = icmp ugt i64 1, %"$gasrem_4946" + br i1 %"$gascmp_4947", label %"$out_of_gas_4948", label %"$have_gas_4949" + +"$out_of_gas_4948": ; preds = %"$have_gas_4944" + call void @_out_of_gas() + br label %"$have_gas_4949" + +"$have_gas_4949": ; preds = %"$out_of_gas_4948", %"$have_gas_4944" + %"$consume_4950" = sub i64 %"$gasrem_4946", 1 + store i64 %"$consume_4950", i64* @_gasrem + %"$listByStr20Contains_118" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } + %"$listByStr20Contains_4951" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20Contains + %"$listByStr20Contains_fptr_4952" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_4951", 0 + %"$listByStr20Contains_envptr_4953" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_4951", 1 + %"$currentAdmins_4954" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentAdmins + %"$listByStr20Contains_call_4955" = call { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_fptr_4952"(i8* %"$listByStr20Contains_envptr_4953", %TName_List_ByStr20* %"$currentAdmins_4954") + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_call_4955", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_118" + %"$listByStr20Contains_119" = alloca %TName_Bool* + %"$$listByStr20Contains_118_4956" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_118" + %"$$listByStr20Contains_118_fptr_4957" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_118_4956", 0 + %"$$listByStr20Contains_118_envptr_4958" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_118_4956", 1 + %"$$listByStr20Contains_118__sender_4959" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$$listByStr20Contains_118__sender_4959" + %"$$listByStr20Contains_118_call_4960" = call %TName_Bool* %"$$listByStr20Contains_118_fptr_4957"(i8* %"$$listByStr20Contains_118_envptr_4958", [20 x i8]* %"$$listByStr20Contains_118__sender_4959") + store %TName_Bool* %"$$listByStr20Contains_118_call_4960", %TName_Bool** %"$listByStr20Contains_119" + %"$$listByStr20Contains_119_4961" = load %TName_Bool*, %TName_Bool** %"$listByStr20Contains_119" + store %TName_Bool* %"$$listByStr20Contains_119_4961", %TName_Bool** %isSenderAdmin + %"$gasrem_4962" = load i64, i64* @_gasrem + %"$gascmp_4963" = icmp ugt i64 1, %"$gasrem_4962" + br i1 %"$gascmp_4963", label %"$out_of_gas_4964", label %"$have_gas_4965" + +"$out_of_gas_4964": ; preds = %"$have_gas_4949" + call void @_out_of_gas() + br label %"$have_gas_4965" + +"$have_gas_4965": ; preds = %"$out_of_gas_4964", %"$have_gas_4949" + %"$consume_4966" = sub i64 %"$gasrem_4962", 1 + store i64 %"$consume_4966", i64* @_gasrem %isSenderRegistrar = alloca %TName_Bool* - %"$execptr_load_2975" = load i8*, i8** @_execptr - %"$eq_currentRegistrar_2976" = alloca [20 x i8] - %"$currentRegistrar_2977" = load [20 x i8], [20 x i8]* %currentRegistrar - store [20 x i8] %"$currentRegistrar_2977", [20 x i8]* %"$eq_currentRegistrar_2976" - %"$$eq_currentRegistrar_2976_2978" = bitcast [20 x i8]* %"$eq_currentRegistrar_2976" to i8* - %"$eq__sender_2979" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$eq__sender_2979" - %"$$eq__sender_2979_2980" = bitcast [20 x i8]* %"$eq__sender_2979" to i8* - %"$eq_call_2981" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_2975", i32 20, i8* %"$$eq_currentRegistrar_2976_2978", i8* %"$$eq__sender_2979_2980") - store %TName_Bool* %"$eq_call_2981", %TName_Bool** %isSenderRegistrar + %"$execptr_load_4967" = load i8*, i8** @_execptr + %"$eq_currentRegistrar_4968" = alloca [20 x i8] + %"$currentRegistrar_4969" = load [20 x i8], [20 x i8]* %currentRegistrar + store [20 x i8] %"$currentRegistrar_4969", [20 x i8]* %"$eq_currentRegistrar_4968" + %"$$eq_currentRegistrar_4968_4970" = bitcast [20 x i8]* %"$eq_currentRegistrar_4968" to i8* + %"$eq__sender_4971" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$eq__sender_4971" + %"$$eq__sender_4971_4972" = bitcast [20 x i8]* %"$eq__sender_4971" to i8* + %"$eq_call_4973" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_4967", i32 20, i8* %"$$eq_currentRegistrar_4968_4970", i8* %"$$eq__sender_4971_4972") + store %TName_Bool* %"$eq_call_4973", %TName_Bool** %isSenderRegistrar + %"$gasrem_4974" = load i64, i64* @_gasrem + %"$gascmp_4975" = icmp ugt i64 1, %"$gasrem_4974" + br i1 %"$gascmp_4975", label %"$out_of_gas_4976", label %"$have_gas_4977" + +"$out_of_gas_4976": ; preds = %"$have_gas_4965" + call void @_out_of_gas() + br label %"$have_gas_4977" + +"$have_gas_4977": ; preds = %"$out_of_gas_4976", %"$have_gas_4965" + %"$consume_4978" = sub i64 %"$gasrem_4974", 1 + store i64 %"$consume_4978", i64* @_gasrem %isOkSender = alloca %TName_Bool* - %"$orb_123" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$orb_2982" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @orb - %"$orb_fptr_2983" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_2982", 0 - %"$orb_envptr_2984" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_2982", 1 - %"$isSenderRegistrar_2985" = load %TName_Bool*, %TName_Bool** %isSenderRegistrar - %"$orb_call_2986" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_fptr_2983"(i8* %"$orb_envptr_2984", %TName_Bool* %"$isSenderRegistrar_2985") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_call_2986", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_123" - %"$orb_124" = alloca %TName_Bool* - %"$$orb_123_2987" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_123" - %"$$orb_123_fptr_2988" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_123_2987", 0 - %"$$orb_123_envptr_2989" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_123_2987", 1 - %"$isSenderAdmin_2990" = load %TName_Bool*, %TName_Bool** %isSenderAdmin - %"$$orb_123_call_2991" = call %TName_Bool* %"$$orb_123_fptr_2988"(i8* %"$$orb_123_envptr_2989", %TName_Bool* %"$isSenderAdmin_2990") - store %TName_Bool* %"$$orb_123_call_2991", %TName_Bool** %"$orb_124" - %"$$orb_124_2992" = load %TName_Bool*, %TName_Bool** %"$orb_124" - store %TName_Bool* %"$$orb_124_2992", %TName_Bool** %isOkSender + %"$gasrem_4979" = load i64, i64* @_gasrem + %"$gascmp_4980" = icmp ugt i64 1, %"$gasrem_4979" + br i1 %"$gascmp_4980", label %"$out_of_gas_4981", label %"$have_gas_4982" + +"$out_of_gas_4981": ; preds = %"$have_gas_4977" + call void @_out_of_gas() + br label %"$have_gas_4982" + +"$have_gas_4982": ; preds = %"$out_of_gas_4981", %"$have_gas_4977" + %"$consume_4983" = sub i64 %"$gasrem_4979", 1 + store i64 %"$consume_4983", i64* @_gasrem + %"$orb_120" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$orb_4984" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @orb + %"$orb_fptr_4985" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_4984", 0 + %"$orb_envptr_4986" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_4984", 1 + %"$isSenderRegistrar_4987" = load %TName_Bool*, %TName_Bool** %isSenderRegistrar + %"$orb_call_4988" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_fptr_4985"(i8* %"$orb_envptr_4986", %TName_Bool* %"$isSenderRegistrar_4987") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_call_4988", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_120" + %"$orb_121" = alloca %TName_Bool* + %"$$orb_120_4989" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_120" + %"$$orb_120_fptr_4990" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_120_4989", 0 + %"$$orb_120_envptr_4991" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_120_4989", 1 + %"$isSenderAdmin_4992" = load %TName_Bool*, %TName_Bool** %isSenderAdmin + %"$$orb_120_call_4993" = call %TName_Bool* %"$$orb_120_fptr_4990"(i8* %"$$orb_120_envptr_4991", %TName_Bool* %"$isSenderAdmin_4992") + store %TName_Bool* %"$$orb_120_call_4993", %TName_Bool** %"$orb_121" + %"$$orb_121_4994" = load %TName_Bool*, %TName_Bool** %"$orb_121" + store %TName_Bool* %"$$orb_121_4994", %TName_Bool** %isOkSender + %"$gasrem_4995" = load i64, i64* @_gasrem + %"$gascmp_4996" = icmp ugt i64 1, %"$gasrem_4995" + br i1 %"$gascmp_4996", label %"$out_of_gas_4997", label %"$have_gas_4998" + +"$out_of_gas_4997": ; preds = %"$have_gas_4982" + call void @_out_of_gas() + br label %"$have_gas_4998" + +"$have_gas_4998": ; preds = %"$out_of_gas_4997", %"$have_gas_4982" + %"$consume_4999" = sub i64 %"$gasrem_4995", 1 + store i64 %"$consume_4999", i64* @_gasrem %recordOwner = alloca [20 x i8] - %"$recordMemberOwner_125" = alloca [20 x i8] - %"$recordMemberOwner_2993" = load { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }, { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }* @recordMemberOwner - %"$recordMemberOwner_fptr_2994" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_2993", 0 - %"$recordMemberOwner_envptr_2995" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_2993", 1 - %"$maybeRecord_2996" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord - %"$recordMemberOwner_retalloca_2997" = alloca [20 x i8] - call void %"$recordMemberOwner_fptr_2994"(i8* %"$recordMemberOwner_envptr_2995", [20 x i8]* %"$recordMemberOwner_retalloca_2997", %TName_Option_Record* %"$maybeRecord_2996") - %"$recordMemberOwner_ret_2998" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_retalloca_2997" - store [20 x i8] %"$recordMemberOwner_ret_2998", [20 x i8]* %"$recordMemberOwner_125" - %"$$recordMemberOwner_125_2999" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_125" - store [20 x i8] %"$$recordMemberOwner_125_2999", [20 x i8]* %recordOwner + %"$gasrem_5000" = load i64, i64* @_gasrem + %"$gascmp_5001" = icmp ugt i64 1, %"$gasrem_5000" + br i1 %"$gascmp_5001", label %"$out_of_gas_5002", label %"$have_gas_5003" + +"$out_of_gas_5002": ; preds = %"$have_gas_4998" + call void @_out_of_gas() + br label %"$have_gas_5003" + +"$have_gas_5003": ; preds = %"$out_of_gas_5002", %"$have_gas_4998" + %"$consume_5004" = sub i64 %"$gasrem_5000", 1 + store i64 %"$consume_5004", i64* @_gasrem + %"$recordMemberOwner_122" = alloca [20 x i8] + %"$recordMemberOwner_5005" = load { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }, { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }* @recordMemberOwner + %"$recordMemberOwner_fptr_5006" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_5005", 0 + %"$recordMemberOwner_envptr_5007" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_5005", 1 + %"$maybeRecord_5008" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord + %"$recordMemberOwner_retalloca_5009" = alloca [20 x i8] + call void %"$recordMemberOwner_fptr_5006"(i8* %"$recordMemberOwner_envptr_5007", [20 x i8]* %"$recordMemberOwner_retalloca_5009", %TName_Option_Record* %"$maybeRecord_5008") + %"$recordMemberOwner_ret_5010" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_retalloca_5009" + store [20 x i8] %"$recordMemberOwner_ret_5010", [20 x i8]* %"$recordMemberOwner_122" + %"$$recordMemberOwner_122_5011" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_122" + store [20 x i8] %"$$recordMemberOwner_122_5011", [20 x i8]* %recordOwner + %"$gasrem_5012" = load i64, i64* @_gasrem + %"$gascmp_5013" = icmp ugt i64 1, %"$gasrem_5012" + br i1 %"$gascmp_5013", label %"$out_of_gas_5014", label %"$have_gas_5015" + +"$out_of_gas_5014": ; preds = %"$have_gas_5003" + call void @_out_of_gas() + br label %"$have_gas_5015" + +"$have_gas_5015": ; preds = %"$out_of_gas_5014", %"$have_gas_5003" + %"$consume_5016" = sub i64 %"$gasrem_5012", 1 + store i64 %"$consume_5016", i64* @_gasrem %recordIsUnowned = alloca %TName_Bool* - %"$execptr_load_3000" = load i8*, i8** @_execptr - %"$eq_recordOwner_3001" = alloca [20 x i8] - %"$recordOwner_3002" = load [20 x i8], [20 x i8]* %recordOwner - store [20 x i8] %"$recordOwner_3002", [20 x i8]* %"$eq_recordOwner_3001" - %"$$eq_recordOwner_3001_3003" = bitcast [20 x i8]* %"$eq_recordOwner_3001" to i8* - %"$eq_zeroByStr20_3004" = alloca [20 x i8] - %"$zeroByStr20_3005" = load [20 x i8], [20 x i8]* @zeroByStr20 - store [20 x i8] %"$zeroByStr20_3005", [20 x i8]* %"$eq_zeroByStr20_3004" - %"$$eq_zeroByStr20_3004_3006" = bitcast [20 x i8]* %"$eq_zeroByStr20_3004" to i8* - %"$eq_call_3007" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_3000", i32 20, i8* %"$$eq_recordOwner_3001_3003", i8* %"$$eq_zeroByStr20_3004_3006") - store %TName_Bool* %"$eq_call_3007", %TName_Bool** %recordIsUnowned + %"$execptr_load_5017" = load i8*, i8** @_execptr + %"$eq_recordOwner_5018" = alloca [20 x i8] + %"$recordOwner_5019" = load [20 x i8], [20 x i8]* %recordOwner + store [20 x i8] %"$recordOwner_5019", [20 x i8]* %"$eq_recordOwner_5018" + %"$$eq_recordOwner_5018_5020" = bitcast [20 x i8]* %"$eq_recordOwner_5018" to i8* + %"$eq_zeroByStr20_5021" = alloca [20 x i8] + %"$zeroByStr20_5022" = load [20 x i8], [20 x i8]* @zeroByStr20 + store [20 x i8] %"$zeroByStr20_5022", [20 x i8]* %"$eq_zeroByStr20_5021" + %"$$eq_zeroByStr20_5021_5023" = bitcast [20 x i8]* %"$eq_zeroByStr20_5021" to i8* + %"$eq_call_5024" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_5017", i32 20, i8* %"$$eq_recordOwner_5018_5020", i8* %"$$eq_zeroByStr20_5021_5023") + store %TName_Bool* %"$eq_call_5024", %TName_Bool** %recordIsUnowned + %"$gasrem_5025" = load i64, i64* @_gasrem + %"$gascmp_5026" = icmp ugt i64 1, %"$gasrem_5025" + br i1 %"$gascmp_5026", label %"$out_of_gas_5027", label %"$have_gas_5028" + +"$out_of_gas_5027": ; preds = %"$have_gas_5015" + call void @_out_of_gas() + br label %"$have_gas_5028" + +"$have_gas_5028": ; preds = %"$out_of_gas_5027", %"$have_gas_5015" + %"$consume_5029" = sub i64 %"$gasrem_5025", 1 + store i64 %"$consume_5029", i64* @_gasrem %recordIsOwnedByRegistrar = alloca %TName_Bool* - %"$execptr_load_3008" = load i8*, i8** @_execptr - %"$eq_recordOwner_3009" = alloca [20 x i8] - %"$recordOwner_3010" = load [20 x i8], [20 x i8]* %recordOwner - store [20 x i8] %"$recordOwner_3010", [20 x i8]* %"$eq_recordOwner_3009" - %"$$eq_recordOwner_3009_3011" = bitcast [20 x i8]* %"$eq_recordOwner_3009" to i8* - %"$eq_currentRegistrar_3012" = alloca [20 x i8] - %"$currentRegistrar_3013" = load [20 x i8], [20 x i8]* %currentRegistrar - store [20 x i8] %"$currentRegistrar_3013", [20 x i8]* %"$eq_currentRegistrar_3012" - %"$$eq_currentRegistrar_3012_3014" = bitcast [20 x i8]* %"$eq_currentRegistrar_3012" to i8* - %"$eq_call_3015" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_3008", i32 20, i8* %"$$eq_recordOwner_3009_3011", i8* %"$$eq_currentRegistrar_3012_3014") - store %TName_Bool* %"$eq_call_3015", %TName_Bool** %recordIsOwnedByRegistrar + %"$execptr_load_5030" = load i8*, i8** @_execptr + %"$eq_recordOwner_5031" = alloca [20 x i8] + %"$recordOwner_5032" = load [20 x i8], [20 x i8]* %recordOwner + store [20 x i8] %"$recordOwner_5032", [20 x i8]* %"$eq_recordOwner_5031" + %"$$eq_recordOwner_5031_5033" = bitcast [20 x i8]* %"$eq_recordOwner_5031" to i8* + %"$eq_currentRegistrar_5034" = alloca [20 x i8] + %"$currentRegistrar_5035" = load [20 x i8], [20 x i8]* %currentRegistrar + store [20 x i8] %"$currentRegistrar_5035", [20 x i8]* %"$eq_currentRegistrar_5034" + %"$$eq_currentRegistrar_5034_5036" = bitcast [20 x i8]* %"$eq_currentRegistrar_5034" to i8* + %"$eq_call_5037" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_5030", i32 20, i8* %"$$eq_recordOwner_5031_5033", i8* %"$$eq_currentRegistrar_5034_5036") + store %TName_Bool* %"$eq_call_5037", %TName_Bool** %recordIsOwnedByRegistrar + %"$gasrem_5038" = load i64, i64* @_gasrem + %"$gascmp_5039" = icmp ugt i64 1, %"$gasrem_5038" + br i1 %"$gascmp_5039", label %"$out_of_gas_5040", label %"$have_gas_5041" + +"$out_of_gas_5040": ; preds = %"$have_gas_5028" + call void @_out_of_gas() + br label %"$have_gas_5041" + +"$have_gas_5041": ; preds = %"$out_of_gas_5040", %"$have_gas_5028" + %"$consume_5042" = sub i64 %"$gasrem_5038", 1 + store i64 %"$consume_5042", i64* @_gasrem %isRegistrarSenderAndOwned = alloca %TName_Bool* - %"$andb_126" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$andb_3016" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb - %"$andb_fptr_3017" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_3016", 0 - %"$andb_envptr_3018" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_3016", 1 - %"$recordIsOwnedByRegistrar_3019" = load %TName_Bool*, %TName_Bool** %recordIsOwnedByRegistrar - %"$andb_call_3020" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_3017"(i8* %"$andb_envptr_3018", %TName_Bool* %"$recordIsOwnedByRegistrar_3019") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_3020", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_126" - %"$andb_127" = alloca %TName_Bool* - %"$$andb_126_3021" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_126" - %"$$andb_126_fptr_3022" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_126_3021", 0 - %"$$andb_126_envptr_3023" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_126_3021", 1 - %"$isSenderRegistrar_3024" = load %TName_Bool*, %TName_Bool** %isSenderRegistrar - %"$$andb_126_call_3025" = call %TName_Bool* %"$$andb_126_fptr_3022"(i8* %"$$andb_126_envptr_3023", %TName_Bool* %"$isSenderRegistrar_3024") - store %TName_Bool* %"$$andb_126_call_3025", %TName_Bool** %"$andb_127" - %"$$andb_127_3026" = load %TName_Bool*, %TName_Bool** %"$andb_127" - store %TName_Bool* %"$$andb_127_3026", %TName_Bool** %isRegistrarSenderAndOwned + %"$gasrem_5043" = load i64, i64* @_gasrem + %"$gascmp_5044" = icmp ugt i64 1, %"$gasrem_5043" + br i1 %"$gascmp_5044", label %"$out_of_gas_5045", label %"$have_gas_5046" + +"$out_of_gas_5045": ; preds = %"$have_gas_5041" + call void @_out_of_gas() + br label %"$have_gas_5046" + +"$have_gas_5046": ; preds = %"$out_of_gas_5045", %"$have_gas_5041" + %"$consume_5047" = sub i64 %"$gasrem_5043", 1 + store i64 %"$consume_5047", i64* @_gasrem + %"$andb_123" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$andb_5048" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb + %"$andb_fptr_5049" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_5048", 0 + %"$andb_envptr_5050" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_5048", 1 + %"$recordIsOwnedByRegistrar_5051" = load %TName_Bool*, %TName_Bool** %recordIsOwnedByRegistrar + %"$andb_call_5052" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_5049"(i8* %"$andb_envptr_5050", %TName_Bool* %"$recordIsOwnedByRegistrar_5051") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_5052", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_123" + %"$andb_124" = alloca %TName_Bool* + %"$$andb_123_5053" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_123" + %"$$andb_123_fptr_5054" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_123_5053", 0 + %"$$andb_123_envptr_5055" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_123_5053", 1 + %"$isSenderRegistrar_5056" = load %TName_Bool*, %TName_Bool** %isSenderRegistrar + %"$$andb_123_call_5057" = call %TName_Bool* %"$$andb_123_fptr_5054"(i8* %"$$andb_123_envptr_5055", %TName_Bool* %"$isSenderRegistrar_5056") + store %TName_Bool* %"$$andb_123_call_5057", %TName_Bool** %"$andb_124" + %"$$andb_124_5058" = load %TName_Bool*, %TName_Bool** %"$andb_124" + store %TName_Bool* %"$$andb_124_5058", %TName_Bool** %isRegistrarSenderAndOwned + %"$gasrem_5059" = load i64, i64* @_gasrem + %"$gascmp_5060" = icmp ugt i64 1, %"$gasrem_5059" + br i1 %"$gascmp_5060", label %"$out_of_gas_5061", label %"$have_gas_5062" + +"$out_of_gas_5061": ; preds = %"$have_gas_5046" + call void @_out_of_gas() + br label %"$have_gas_5062" + +"$have_gas_5062": ; preds = %"$out_of_gas_5061", %"$have_gas_5046" + %"$consume_5063" = sub i64 %"$gasrem_5059", 1 + store i64 %"$consume_5063", i64* @_gasrem %isOkRecordOwner = alloca %TName_Bool* - %"$orb_128" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$orb_3027" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @orb - %"$orb_fptr_3028" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_3027", 0 - %"$orb_envptr_3029" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_3027", 1 - %"$recordIsUnowned_3030" = load %TName_Bool*, %TName_Bool** %recordIsUnowned - %"$orb_call_3031" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_fptr_3028"(i8* %"$orb_envptr_3029", %TName_Bool* %"$recordIsUnowned_3030") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_call_3031", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_128" - %"$orb_129" = alloca %TName_Bool* - %"$$orb_128_3032" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_128" - %"$$orb_128_fptr_3033" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_128_3032", 0 - %"$$orb_128_envptr_3034" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_128_3032", 1 - %"$isRegistrarSenderAndOwned_3035" = load %TName_Bool*, %TName_Bool** %isRegistrarSenderAndOwned - %"$$orb_128_call_3036" = call %TName_Bool* %"$$orb_128_fptr_3033"(i8* %"$$orb_128_envptr_3034", %TName_Bool* %"$isRegistrarSenderAndOwned_3035") - store %TName_Bool* %"$$orb_128_call_3036", %TName_Bool** %"$orb_129" - %"$$orb_129_3037" = load %TName_Bool*, %TName_Bool** %"$orb_129" - store %TName_Bool* %"$$orb_129_3037", %TName_Bool** %isOkRecordOwner - %"$andb_130" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$andb_3038" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb - %"$andb_fptr_3039" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_3038", 0 - %"$andb_envptr_3040" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_3038", 1 - %"$isOkSender_3041" = load %TName_Bool*, %TName_Bool** %isOkSender - %"$andb_call_3042" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_3039"(i8* %"$andb_envptr_3040", %TName_Bool* %"$isOkSender_3041") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_3042", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_130" - %"$andb_131" = alloca %TName_Bool* - %"$$andb_130_3043" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_130" - %"$$andb_130_fptr_3044" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_130_3043", 0 - %"$$andb_130_envptr_3045" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_130_3043", 1 - %"$isOkRecordOwner_3046" = load %TName_Bool*, %TName_Bool** %isOkRecordOwner - %"$$andb_130_call_3047" = call %TName_Bool* %"$$andb_130_fptr_3044"(i8* %"$$andb_130_envptr_3045", %TName_Bool* %"$isOkRecordOwner_3046") - store %TName_Bool* %"$$andb_130_call_3047", %TName_Bool** %"$andb_131" - %"$$andb_131_3048" = load %TName_Bool*, %TName_Bool** %"$andb_131" - store %TName_Bool* %"$$andb_131_3048", %TName_Bool** %isOk - %"$isOk_3050" = load %TName_Bool*, %TName_Bool** %isOk - %"$isOk_tag_3051" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isOk_3050", i32 0, i32 0 - %"$isOk_tag_3052" = load i8, i8* %"$isOk_tag_3051" - switch i8 %"$isOk_tag_3052", label %"$empty_default_3053" [ - i8 0, label %"$True_3054" - i8 1, label %"$False_3107" + %"$gasrem_5064" = load i64, i64* @_gasrem + %"$gascmp_5065" = icmp ugt i64 1, %"$gasrem_5064" + br i1 %"$gascmp_5065", label %"$out_of_gas_5066", label %"$have_gas_5067" + +"$out_of_gas_5066": ; preds = %"$have_gas_5062" + call void @_out_of_gas() + br label %"$have_gas_5067" + +"$have_gas_5067": ; preds = %"$out_of_gas_5066", %"$have_gas_5062" + %"$consume_5068" = sub i64 %"$gasrem_5064", 1 + store i64 %"$consume_5068", i64* @_gasrem + %"$orb_125" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$orb_5069" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @orb + %"$orb_fptr_5070" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_5069", 0 + %"$orb_envptr_5071" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$orb_5069", 1 + %"$recordIsUnowned_5072" = load %TName_Bool*, %TName_Bool** %recordIsUnowned + %"$orb_call_5073" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_fptr_5070"(i8* %"$orb_envptr_5071", %TName_Bool* %"$recordIsUnowned_5072") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$orb_call_5073", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_125" + %"$orb_126" = alloca %TName_Bool* + %"$$orb_125_5074" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$orb_125" + %"$$orb_125_fptr_5075" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_125_5074", 0 + %"$$orb_125_envptr_5076" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$orb_125_5074", 1 + %"$isRegistrarSenderAndOwned_5077" = load %TName_Bool*, %TName_Bool** %isRegistrarSenderAndOwned + %"$$orb_125_call_5078" = call %TName_Bool* %"$$orb_125_fptr_5075"(i8* %"$$orb_125_envptr_5076", %TName_Bool* %"$isRegistrarSenderAndOwned_5077") + store %TName_Bool* %"$$orb_125_call_5078", %TName_Bool** %"$orb_126" + %"$$orb_126_5079" = load %TName_Bool*, %TName_Bool** %"$orb_126" + store %TName_Bool* %"$$orb_126_5079", %TName_Bool** %isOkRecordOwner + %"$gasrem_5080" = load i64, i64* @_gasrem + %"$gascmp_5081" = icmp ugt i64 1, %"$gasrem_5080" + br i1 %"$gascmp_5081", label %"$out_of_gas_5082", label %"$have_gas_5083" + +"$out_of_gas_5082": ; preds = %"$have_gas_5067" + call void @_out_of_gas() + br label %"$have_gas_5083" + +"$have_gas_5083": ; preds = %"$out_of_gas_5082", %"$have_gas_5067" + %"$consume_5084" = sub i64 %"$gasrem_5080", 1 + store i64 %"$consume_5084", i64* @_gasrem + %"$andb_127" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$andb_5085" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb + %"$andb_fptr_5086" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_5085", 0 + %"$andb_envptr_5087" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_5085", 1 + %"$isOkSender_5088" = load %TName_Bool*, %TName_Bool** %isOkSender + %"$andb_call_5089" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_5086"(i8* %"$andb_envptr_5087", %TName_Bool* %"$isOkSender_5088") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_5089", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_127" + %"$andb_128" = alloca %TName_Bool* + %"$$andb_127_5090" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_127" + %"$$andb_127_fptr_5091" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_127_5090", 0 + %"$$andb_127_envptr_5092" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_127_5090", 1 + %"$isOkRecordOwner_5093" = load %TName_Bool*, %TName_Bool** %isOkRecordOwner + %"$$andb_127_call_5094" = call %TName_Bool* %"$$andb_127_fptr_5091"(i8* %"$$andb_127_envptr_5092", %TName_Bool* %"$isOkRecordOwner_5093") + store %TName_Bool* %"$$andb_127_call_5094", %TName_Bool** %"$andb_128" + %"$$andb_128_5095" = load %TName_Bool*, %TName_Bool** %"$andb_128" + store %TName_Bool* %"$$andb_128_5095", %TName_Bool** %isOk + %"$gasrem_5096" = load i64, i64* @_gasrem + %"$gascmp_5097" = icmp ugt i64 2, %"$gasrem_5096" + br i1 %"$gascmp_5097", label %"$out_of_gas_5098", label %"$have_gas_5099" + +"$out_of_gas_5098": ; preds = %"$have_gas_5083" + call void @_out_of_gas() + br label %"$have_gas_5099" + +"$have_gas_5099": ; preds = %"$out_of_gas_5098", %"$have_gas_5083" + %"$consume_5100" = sub i64 %"$gasrem_5096", 2 + store i64 %"$consume_5100", i64* @_gasrem + %"$isOk_5102" = load %TName_Bool*, %TName_Bool** %isOk + %"$isOk_tag_5103" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isOk_5102", i32 0, i32 0 + %"$isOk_tag_5104" = load i8, i8* %"$isOk_tag_5103" + switch i8 %"$isOk_tag_5104", label %"$empty_default_5105" [ + i8 0, label %"$True_5106" + i8 1, label %"$False_5219" ] -"$True_3054": ; preds = %entry - %"$isOk_3055" = bitcast %TName_Bool* %"$isOk_3050" to %CName_True* - %"$recordExists_3057" = load %TName_Bool*, %TName_Bool** %recordExists - %"$recordExists_tag_3058" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$recordExists_3057", i32 0, i32 0 - %"$recordExists_tag_3059" = load i8, i8* %"$recordExists_tag_3058" - switch i8 %"$recordExists_tag_3059", label %"$default_3060" [ - i8 1, label %"$False_3061" +"$True_5106": ; preds = %"$have_gas_5099" + %"$isOk_5107" = bitcast %TName_Bool* %"$isOk_5102" to %CName_True* + %"$gasrem_5108" = load i64, i64* @_gasrem + %"$gascmp_5109" = icmp ugt i64 2, %"$gasrem_5108" + br i1 %"$gascmp_5109", label %"$out_of_gas_5110", label %"$have_gas_5111" + +"$out_of_gas_5110": ; preds = %"$True_5106" + call void @_out_of_gas() + br label %"$have_gas_5111" + +"$have_gas_5111": ; preds = %"$out_of_gas_5110", %"$True_5106" + %"$consume_5112" = sub i64 %"$gasrem_5108", 2 + store i64 %"$consume_5112", i64* @_gasrem + %"$recordExists_5114" = load %TName_Bool*, %TName_Bool** %recordExists + %"$recordExists_tag_5115" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$recordExists_5114", i32 0, i32 0 + %"$recordExists_tag_5116" = load i8, i8* %"$recordExists_tag_5115" + switch i8 %"$recordExists_tag_5116", label %"$default_5117" [ + i8 1, label %"$False_5118" ] -"$False_3061": ; preds = %"$True_3054" - %"$recordExists_3062" = bitcast %TName_Bool* %"$recordExists_3057" to %CName_False* +"$False_5118": ; preds = %"$have_gas_5111" + %"$recordExists_5119" = bitcast %TName_Bool* %"$recordExists_5114" to %CName_False* + %"$gasrem_5120" = load i64, i64* @_gasrem + %"$gascmp_5121" = icmp ugt i64 1, %"$gasrem_5120" + br i1 %"$gascmp_5121", label %"$out_of_gas_5122", label %"$have_gas_5123" + +"$out_of_gas_5122": ; preds = %"$False_5118" + call void @_out_of_gas() + br label %"$have_gas_5123" + +"$have_gas_5123": ; preds = %"$out_of_gas_5122", %"$False_5118" + %"$consume_5124" = sub i64 %"$gasrem_5120", 1 + store i64 %"$consume_5124", i64* @_gasrem %e = alloca i8* - %"$eNewDomain_118" = alloca { i8* (i8*, %String)*, i8* } - %"$eNewDomain_3063" = load { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eNewDomain - %"$eNewDomain_fptr_3064" = extractvalue { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eNewDomain_3063", 0 - %"$eNewDomain_envptr_3065" = extractvalue { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eNewDomain_3063", 1 - %"$eNewDomain_rootNode_3066" = alloca [32 x i8] - %"$rootNode_3067" = load [32 x i8], [32 x i8]* @rootNode - store [32 x i8] %"$rootNode_3067", [32 x i8]* %"$eNewDomain_rootNode_3066" - %"$eNewDomain_call_3068" = call { i8* (i8*, %String)*, i8* } %"$eNewDomain_fptr_3064"(i8* %"$eNewDomain_envptr_3065", [32 x i8]* %"$eNewDomain_rootNode_3066") - store { i8* (i8*, %String)*, i8* } %"$eNewDomain_call_3068", { i8* (i8*, %String)*, i8* }* %"$eNewDomain_118" - %"$eNewDomain_119" = alloca i8* - %"$$eNewDomain_118_3069" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* %"$eNewDomain_118" - %"$$eNewDomain_118_fptr_3070" = extractvalue { i8* (i8*, %String)*, i8* } %"$$eNewDomain_118_3069", 0 - %"$$eNewDomain_118_envptr_3071" = extractvalue { i8* (i8*, %String)*, i8* } %"$$eNewDomain_118_3069", 1 - %"$$eNewDomain_118_call_3072" = call i8* %"$$eNewDomain_118_fptr_3070"(i8* %"$$eNewDomain_118_envptr_3071", %String %label) - store i8* %"$$eNewDomain_118_call_3072", i8** %"$eNewDomain_119" - %"$$eNewDomain_119_3073" = load i8*, i8** %"$eNewDomain_119" - store i8* %"$$eNewDomain_119_3073", i8** %e - %"$execptr_load_3074" = load i8*, i8** @_execptr - %"$e_3075" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_3074", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_3075") - br label %"$matchsucc_3056" - -"$default_3060": ; preds = %"$True_3054" - br label %"$joinp_8" - -"$joinp_8": ; preds = %"$default_3060" - br label %"$matchsucc_3056" - -"$matchsucc_3056": ; preds = %"$False_3061", %"$joinp_8" + %"$gasrem_5125" = load i64, i64* @_gasrem + %"$gascmp_5126" = icmp ugt i64 1, %"$gasrem_5125" + br i1 %"$gascmp_5126", label %"$out_of_gas_5127", label %"$have_gas_5128" + +"$out_of_gas_5127": ; preds = %"$have_gas_5123" + call void @_out_of_gas() + br label %"$have_gas_5128" + +"$have_gas_5128": ; preds = %"$out_of_gas_5127", %"$have_gas_5123" + %"$consume_5129" = sub i64 %"$gasrem_5125", 1 + store i64 %"$consume_5129", i64* @_gasrem + %"$eNewDomain_115" = alloca { i8* (i8*, %String)*, i8* } + %"$eNewDomain_5130" = load { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eNewDomain + %"$eNewDomain_fptr_5131" = extractvalue { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eNewDomain_5130", 0 + %"$eNewDomain_envptr_5132" = extractvalue { { i8* (i8*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eNewDomain_5130", 1 + %"$eNewDomain_rootNode_5133" = alloca [32 x i8] + %"$rootNode_5134" = load [32 x i8], [32 x i8]* @rootNode + store [32 x i8] %"$rootNode_5134", [32 x i8]* %"$eNewDomain_rootNode_5133" + %"$eNewDomain_call_5135" = call { i8* (i8*, %String)*, i8* } %"$eNewDomain_fptr_5131"(i8* %"$eNewDomain_envptr_5132", [32 x i8]* %"$eNewDomain_rootNode_5133") + store { i8* (i8*, %String)*, i8* } %"$eNewDomain_call_5135", { i8* (i8*, %String)*, i8* }* %"$eNewDomain_115" + %"$eNewDomain_116" = alloca i8* + %"$$eNewDomain_115_5136" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* %"$eNewDomain_115" + %"$$eNewDomain_115_fptr_5137" = extractvalue { i8* (i8*, %String)*, i8* } %"$$eNewDomain_115_5136", 0 + %"$$eNewDomain_115_envptr_5138" = extractvalue { i8* (i8*, %String)*, i8* } %"$$eNewDomain_115_5136", 1 + %"$$eNewDomain_115_call_5139" = call i8* %"$$eNewDomain_115_fptr_5137"(i8* %"$$eNewDomain_115_envptr_5138", %String %label) + store i8* %"$$eNewDomain_115_call_5139", i8** %"$eNewDomain_116" + %"$$eNewDomain_116_5140" = load i8*, i8** %"$eNewDomain_116" + store i8* %"$$eNewDomain_116_5140", i8** %e + %"$e_5141" = load i8*, i8** %e + %"$_literal_cost_call_5143" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_5141") + %"$gasrem_5144" = load i64, i64* @_gasrem + %"$gascmp_5145" = icmp ugt i64 %"$_literal_cost_call_5143", %"$gasrem_5144" + br i1 %"$gascmp_5145", label %"$out_of_gas_5146", label %"$have_gas_5147" + +"$out_of_gas_5146": ; preds = %"$have_gas_5128" + call void @_out_of_gas() + br label %"$have_gas_5147" + +"$have_gas_5147": ; preds = %"$out_of_gas_5146", %"$have_gas_5128" + %"$consume_5148" = sub i64 %"$gasrem_5144", %"$_literal_cost_call_5143" + store i64 %"$consume_5148", i64* @_gasrem + %"$execptr_load_5149" = load i8*, i8** @_execptr + %"$e_5150" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_5149", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_5150") + br label %"$matchsucc_5113" + +"$default_5117": ; preds = %"$have_gas_5111" + br label %"$joinp_5" + +"$joinp_5": ; preds = %"$default_5117" + br label %"$matchsucc_5113" + +"$matchsucc_5113": ; preds = %"$have_gas_5147", %"$joinp_5" + %"$gasrem_5151" = load i64, i64* @_gasrem + %"$gascmp_5152" = icmp ugt i64 1, %"$gasrem_5151" + br i1 %"$gascmp_5152", label %"$out_of_gas_5153", label %"$have_gas_5154" + +"$out_of_gas_5153": ; preds = %"$matchsucc_5113" + call void @_out_of_gas() + br label %"$have_gas_5154" + +"$have_gas_5154": ; preds = %"$out_of_gas_5153", %"$matchsucc_5113" + %"$consume_5155" = sub i64 %"$gasrem_5151", 1 + store i64 %"$consume_5155", i64* @_gasrem %newRecord = alloca %TName_Record* - %"$adtval_3076_load" = load i8*, i8** @_execptr - %"$adtval_3076_salloc" = call i8* @_salloc(i8* %"$adtval_3076_load", i64 41) - %"$adtval_3076" = bitcast i8* %"$adtval_3076_salloc" to %CName_Record* - %"$adtgep_3077" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_3076", i32 0, i32 0 - store i8 0, i8* %"$adtgep_3077" - %"$adtgep_3078" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_3076", i32 0, i32 1 - store [20 x i8] %owner, [20 x i8]* %"$adtgep_3078" - %"$adtgep_3079" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_3076", i32 0, i32 2 - store [20 x i8] %resolver, [20 x i8]* %"$adtgep_3079" - %"$adtptr_3080" = bitcast %CName_Record* %"$adtval_3076" to %TName_Record* - store %TName_Record* %"$adtptr_3080", %TName_Record** %newRecord - %"$indices_buf_3081_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_3081_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3081_salloc_load", i64 32) - %"$indices_buf_3081_salloc" = bitcast i8* %"$indices_buf_3081_salloc_salloc" to [32 x i8]* - %"$indices_buf_3081" = bitcast [32 x i8]* %"$indices_buf_3081_salloc" to i8* - %"$node_3082" = load [32 x i8], [32 x i8]* %node - %"$indices_gep_3083" = getelementptr i8, i8* %"$indices_buf_3081", i32 0 - %indices_cast2 = bitcast i8* %"$indices_gep_3083" to [32 x i8]* - store [32 x i8] %"$node_3082", [32 x i8]* %indices_cast2 - %"$execptr_load_3084" = load i8*, i8** @_execptr - %"$newRecord_3086" = load %TName_Record*, %TName_Record** %newRecord - %"$update_value_3087" = bitcast %TName_Record* %"$newRecord_3086" to i8* - call void @_update_field(i8* %"$execptr_load_3084", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_3085", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_325", i32 1, i8* %"$indices_buf_3081", i8* %"$update_value_3087") + %"$gasrem_5156" = load i64, i64* @_gasrem + %"$gascmp_5157" = icmp ugt i64 1, %"$gasrem_5156" + br i1 %"$gascmp_5157", label %"$out_of_gas_5158", label %"$have_gas_5159" + +"$out_of_gas_5158": ; preds = %"$have_gas_5154" + call void @_out_of_gas() + br label %"$have_gas_5159" + +"$have_gas_5159": ; preds = %"$out_of_gas_5158", %"$have_gas_5154" + %"$consume_5160" = sub i64 %"$gasrem_5156", 1 + store i64 %"$consume_5160", i64* @_gasrem + %"$adtval_5161_load" = load i8*, i8** @_execptr + %"$adtval_5161_salloc" = call i8* @_salloc(i8* %"$adtval_5161_load", i64 41) + %"$adtval_5161" = bitcast i8* %"$adtval_5161_salloc" to %CName_Record* + %"$adtgep_5162" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_5161", i32 0, i32 0 + store i8 0, i8* %"$adtgep_5162" + %"$adtgep_5163" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_5161", i32 0, i32 1 + store [20 x i8] %owner, [20 x i8]* %"$adtgep_5163" + %"$adtgep_5164" = getelementptr inbounds %CName_Record, %CName_Record* %"$adtval_5161", i32 0, i32 2 + store [20 x i8] %resolver, [20 x i8]* %"$adtgep_5164" + %"$adtptr_5165" = bitcast %CName_Record* %"$adtval_5161" to %TName_Record* + store %TName_Record* %"$adtptr_5165", %TName_Record** %newRecord + %"$newRecord_5166" = load %TName_Record*, %TName_Record** %newRecord + %"$$newRecord_5166_5167" = bitcast %TName_Record* %"$newRecord_5166" to i8* + %"$_literal_cost_call_5168" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Record_315", i8* %"$$newRecord_5166_5167") + %"$gasadd_5169" = add i64 %"$_literal_cost_call_5168", 1 + %"$gasrem_5170" = load i64, i64* @_gasrem + %"$gascmp_5171" = icmp ugt i64 %"$gasadd_5169", %"$gasrem_5170" + br i1 %"$gascmp_5171", label %"$out_of_gas_5172", label %"$have_gas_5173" + +"$out_of_gas_5172": ; preds = %"$have_gas_5159" + call void @_out_of_gas() + br label %"$have_gas_5173" + +"$have_gas_5173": ; preds = %"$out_of_gas_5172", %"$have_gas_5159" + %"$consume_5174" = sub i64 %"$gasrem_5170", %"$gasadd_5169" + store i64 %"$consume_5174", i64* @_gasrem + %"$indices_buf_5175_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_5175_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_5175_salloc_load", i64 32) + %"$indices_buf_5175_salloc" = bitcast i8* %"$indices_buf_5175_salloc_salloc" to [32 x i8]* + %"$indices_buf_5175" = bitcast [32 x i8]* %"$indices_buf_5175_salloc" to i8* + %"$node_5176" = load [32 x i8], [32 x i8]* %node + %"$indices_gep_5177" = getelementptr i8, i8* %"$indices_buf_5175", i32 0 + %indices_cast2 = bitcast i8* %"$indices_gep_5177" to [32 x i8]* + store [32 x i8] %"$node_5176", [32 x i8]* %indices_cast2 + %"$execptr_load_5178" = load i8*, i8** @_execptr + %"$newRecord_5180" = load %TName_Record*, %TName_Record** %newRecord + %"$update_value_5181" = bitcast %TName_Record* %"$newRecord_5180" to i8* + call void @_update_field(i8* %"$execptr_load_5178", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_5179", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_322", i32 1, i8* %"$indices_buf_5175", i8* %"$update_value_5181") + %"$gasrem_5182" = load i64, i64* @_gasrem + %"$gascmp_5183" = icmp ugt i64 1, %"$gasrem_5182" + br i1 %"$gascmp_5183", label %"$out_of_gas_5184", label %"$have_gas_5185" + +"$out_of_gas_5184": ; preds = %"$have_gas_5173" + call void @_out_of_gas() + br label %"$have_gas_5185" + +"$have_gas_5185": ; preds = %"$out_of_gas_5184", %"$have_gas_5173" + %"$consume_5186" = sub i64 %"$gasrem_5182", 1 + store i64 %"$consume_5186", i64* @_gasrem %e3 = alloca i8* - %"$eConfigured_115" = alloca { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$eConfigured_3088" = load { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eConfigured - %"$eConfigured_fptr_3089" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_3088", 0 - %"$eConfigured_envptr_3090" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_3088", 1 - %"$eConfigured_node_3091" = alloca [32 x i8] - %"$node_3092" = load [32 x i8], [32 x i8]* %node - store [32 x i8] %"$node_3092", [32 x i8]* %"$eConfigured_node_3091" - %"$eConfigured_call_3093" = call { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_fptr_3089"(i8* %"$eConfigured_envptr_3090", [32 x i8]* %"$eConfigured_node_3091") - store { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_call_3093", { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_115" - %"$eConfigured_116" = alloca { i8* (i8*, [20 x i8]*)*, i8* } - %"$$eConfigured_115_3094" = load { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_115" - %"$$eConfigured_115_fptr_3095" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_115_3094", 0 - %"$$eConfigured_115_envptr_3096" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_115_3094", 1 - %"$$eConfigured_115_owner_3097" = alloca [20 x i8] - store [20 x i8] %owner, [20 x i8]* %"$$eConfigured_115_owner_3097" - %"$$eConfigured_115_call_3098" = call { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_115_fptr_3095"(i8* %"$$eConfigured_115_envptr_3096", [20 x i8]* %"$$eConfigured_115_owner_3097") - store { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_115_call_3098", { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_116" - %"$eConfigured_117" = alloca i8* - %"$$eConfigured_116_3099" = load { i8* (i8*, [20 x i8]*)*, i8* }, { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_116" - %"$$eConfigured_116_fptr_3100" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_116_3099", 0 - %"$$eConfigured_116_envptr_3101" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_116_3099", 1 - %"$$eConfigured_116_resolver_3102" = alloca [20 x i8] - store [20 x i8] %resolver, [20 x i8]* %"$$eConfigured_116_resolver_3102" - %"$$eConfigured_116_call_3103" = call i8* %"$$eConfigured_116_fptr_3100"(i8* %"$$eConfigured_116_envptr_3101", [20 x i8]* %"$$eConfigured_116_resolver_3102") - store i8* %"$$eConfigured_116_call_3103", i8** %"$eConfigured_117" - %"$$eConfigured_117_3104" = load i8*, i8** %"$eConfigured_117" - store i8* %"$$eConfigured_117_3104", i8** %e3 - %"$execptr_load_3105" = load i8*, i8** @_execptr - %"$e_3106" = load i8*, i8** %e3 - call void @_event(i8* %"$execptr_load_3105", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_3106") - br label %"$matchsucc_3049" - -"$False_3107": ; preds = %entry - %"$isOk_3108" = bitcast %TName_Bool* %"$isOk_3050" to %CName_False* + %"$gasrem_5187" = load i64, i64* @_gasrem + %"$gascmp_5188" = icmp ugt i64 1, %"$gasrem_5187" + br i1 %"$gascmp_5188", label %"$out_of_gas_5189", label %"$have_gas_5190" + +"$out_of_gas_5189": ; preds = %"$have_gas_5185" + call void @_out_of_gas() + br label %"$have_gas_5190" + +"$have_gas_5190": ; preds = %"$out_of_gas_5189", %"$have_gas_5185" + %"$consume_5191" = sub i64 %"$gasrem_5187", 1 + store i64 %"$consume_5191", i64* @_gasrem + %"$eConfigured_112" = alloca { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } + %"$eConfigured_5192" = load { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eConfigured + %"$eConfigured_fptr_5193" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_5192", 0 + %"$eConfigured_envptr_5194" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_5192", 1 + %"$eConfigured_node_5195" = alloca [32 x i8] + %"$node_5196" = load [32 x i8], [32 x i8]* %node + store [32 x i8] %"$node_5196", [32 x i8]* %"$eConfigured_node_5195" + %"$eConfigured_call_5197" = call { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_fptr_5193"(i8* %"$eConfigured_envptr_5194", [32 x i8]* %"$eConfigured_node_5195") + store { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_call_5197", { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_112" + %"$eConfigured_113" = alloca { i8* (i8*, [20 x i8]*)*, i8* } + %"$$eConfigured_112_5198" = load { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_112" + %"$$eConfigured_112_fptr_5199" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_112_5198", 0 + %"$$eConfigured_112_envptr_5200" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_112_5198", 1 + %"$$eConfigured_112_owner_5201" = alloca [20 x i8] + store [20 x i8] %owner, [20 x i8]* %"$$eConfigured_112_owner_5201" + %"$$eConfigured_112_call_5202" = call { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_112_fptr_5199"(i8* %"$$eConfigured_112_envptr_5200", [20 x i8]* %"$$eConfigured_112_owner_5201") + store { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_112_call_5202", { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_113" + %"$eConfigured_114" = alloca i8* + %"$$eConfigured_113_5203" = load { i8* (i8*, [20 x i8]*)*, i8* }, { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_113" + %"$$eConfigured_113_fptr_5204" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_113_5203", 0 + %"$$eConfigured_113_envptr_5205" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_113_5203", 1 + %"$$eConfigured_113_resolver_5206" = alloca [20 x i8] + store [20 x i8] %resolver, [20 x i8]* %"$$eConfigured_113_resolver_5206" + %"$$eConfigured_113_call_5207" = call i8* %"$$eConfigured_113_fptr_5204"(i8* %"$$eConfigured_113_envptr_5205", [20 x i8]* %"$$eConfigured_113_resolver_5206") + store i8* %"$$eConfigured_113_call_5207", i8** %"$eConfigured_114" + %"$$eConfigured_114_5208" = load i8*, i8** %"$eConfigured_114" + store i8* %"$$eConfigured_114_5208", i8** %e3 + %"$e_5209" = load i8*, i8** %e3 + %"$_literal_cost_call_5211" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_5209") + %"$gasrem_5212" = load i64, i64* @_gasrem + %"$gascmp_5213" = icmp ugt i64 %"$_literal_cost_call_5211", %"$gasrem_5212" + br i1 %"$gascmp_5213", label %"$out_of_gas_5214", label %"$have_gas_5215" + +"$out_of_gas_5214": ; preds = %"$have_gas_5190" + call void @_out_of_gas() + br label %"$have_gas_5215" + +"$have_gas_5215": ; preds = %"$out_of_gas_5214", %"$have_gas_5190" + %"$consume_5216" = sub i64 %"$gasrem_5212", %"$_literal_cost_call_5211" + store i64 %"$consume_5216", i64* @_gasrem + %"$execptr_load_5217" = load i8*, i8** @_execptr + %"$e_5218" = load i8*, i8** %e3 + call void @_event(i8* %"$execptr_load_5217", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_5218") + br label %"$matchsucc_5101" + +"$False_5219": ; preds = %"$have_gas_5099" + %"$isOk_5220" = bitcast %TName_Bool* %"$isOk_5102" to %CName_False* + %"$gasrem_5221" = load i64, i64* @_gasrem + %"$gascmp_5222" = icmp ugt i64 1, %"$gasrem_5221" + br i1 %"$gascmp_5222", label %"$out_of_gas_5223", label %"$have_gas_5224" + +"$out_of_gas_5223": ; preds = %"$False_5219" + call void @_out_of_gas() + br label %"$have_gas_5224" + +"$have_gas_5224": ; preds = %"$out_of_gas_5223", %"$False_5219" + %"$consume_5225" = sub i64 %"$gasrem_5221", 1 + store i64 %"$consume_5225", i64* @_gasrem %e4 = alloca i8* + %"$gasrem_5226" = load i64, i64* @_gasrem + %"$gascmp_5227" = icmp ugt i64 1, %"$gasrem_5226" + br i1 %"$gascmp_5227", label %"$out_of_gas_5228", label %"$have_gas_5229" + +"$out_of_gas_5228": ; preds = %"$have_gas_5224" + call void @_out_of_gas() + br label %"$have_gas_5229" + +"$have_gas_5229": ; preds = %"$out_of_gas_5228", %"$have_gas_5224" + %"$consume_5230" = sub i64 %"$gasrem_5226", 1 + store i64 %"$consume_5230", i64* @_gasrem %m = alloca %String - store %String { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$stringlit_3109", i32 0, i32 0), i32 12 }, %String* %m - %"$eError_120" = alloca i8* - %"$eError_3110" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* @eError - %"$eError_fptr_3111" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_3110", 0 - %"$eError_envptr_3112" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_3110", 1 - %"$m_3113" = load %String, %String* %m - %"$eError_call_3114" = call i8* %"$eError_fptr_3111"(i8* %"$eError_envptr_3112", %String %"$m_3113") - store i8* %"$eError_call_3114", i8** %"$eError_120" - %"$$eError_120_3115" = load i8*, i8** %"$eError_120" - store i8* %"$$eError_120_3115", i8** %e4 - %"$execptr_load_3116" = load i8*, i8** @_execptr - %"$e_3117" = load i8*, i8** %e4 - call void @_event(i8* %"$execptr_load_3116", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_3117") - br label %"$matchsucc_3049" - -"$empty_default_3053": ; preds = %entry - br label %"$matchsucc_3049" - -"$matchsucc_3049": ; preds = %"$False_3107", %"$matchsucc_3056", %"$empty_default_3053" + %"$gasrem_5231" = load i64, i64* @_gasrem + %"$gascmp_5232" = icmp ugt i64 1, %"$gasrem_5231" + br i1 %"$gascmp_5232", label %"$out_of_gas_5233", label %"$have_gas_5234" + +"$out_of_gas_5233": ; preds = %"$have_gas_5229" + call void @_out_of_gas() + br label %"$have_gas_5234" + +"$have_gas_5234": ; preds = %"$out_of_gas_5233", %"$have_gas_5229" + %"$consume_5235" = sub i64 %"$gasrem_5231", 1 + store i64 %"$consume_5235", i64* @_gasrem + store %String { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$stringlit_5236", i32 0, i32 0), i32 12 }, %String* %m + %"$gasrem_5237" = load i64, i64* @_gasrem + %"$gascmp_5238" = icmp ugt i64 1, %"$gasrem_5237" + br i1 %"$gascmp_5238", label %"$out_of_gas_5239", label %"$have_gas_5240" + +"$out_of_gas_5239": ; preds = %"$have_gas_5234" + call void @_out_of_gas() + br label %"$have_gas_5240" + +"$have_gas_5240": ; preds = %"$out_of_gas_5239", %"$have_gas_5234" + %"$consume_5241" = sub i64 %"$gasrem_5237", 1 + store i64 %"$consume_5241", i64* @_gasrem + %"$eError_117" = alloca i8* + %"$eError_5242" = load { i8* (i8*, %String)*, i8* }, { i8* (i8*, %String)*, i8* }* @eError + %"$eError_fptr_5243" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_5242", 0 + %"$eError_envptr_5244" = extractvalue { i8* (i8*, %String)*, i8* } %"$eError_5242", 1 + %"$m_5245" = load %String, %String* %m + %"$eError_call_5246" = call i8* %"$eError_fptr_5243"(i8* %"$eError_envptr_5244", %String %"$m_5245") + store i8* %"$eError_call_5246", i8** %"$eError_117" + %"$$eError_117_5247" = load i8*, i8** %"$eError_117" + store i8* %"$$eError_117_5247", i8** %e4 + %"$e_5248" = load i8*, i8** %e4 + %"$_literal_cost_call_5250" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_5248") + %"$gasrem_5251" = load i64, i64* @_gasrem + %"$gascmp_5252" = icmp ugt i64 %"$_literal_cost_call_5250", %"$gasrem_5251" + br i1 %"$gascmp_5252", label %"$out_of_gas_5253", label %"$have_gas_5254" + +"$out_of_gas_5253": ; preds = %"$have_gas_5240" + call void @_out_of_gas() + br label %"$have_gas_5254" + +"$have_gas_5254": ; preds = %"$out_of_gas_5253", %"$have_gas_5240" + %"$consume_5255" = sub i64 %"$gasrem_5251", %"$_literal_cost_call_5250" + store i64 %"$consume_5255", i64* @_gasrem + %"$execptr_load_5256" = load i8*, i8** @_execptr + %"$e_5257" = load i8*, i8** %e4 + call void @_event(i8* %"$execptr_load_5256", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_5257") + br label %"$matchsucc_5101" + +"$empty_default_5105": ; preds = %"$have_gas_5099" + br label %"$matchsucc_5101" + +"$matchsucc_5101": ; preds = %"$have_gas_5254", %"$have_gas_5215", %"$empty_default_5105" ret void } define void @bestow(i8* %0) { entry: - %"$_amount_3119" = getelementptr i8, i8* %0, i32 0 - %"$_amount_3120" = bitcast i8* %"$_amount_3119" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_3120" - %"$_sender_3121" = getelementptr i8, i8* %0, i32 16 - %"$_sender_3122" = bitcast i8* %"$_sender_3121" to [20 x i8]* - %"$label_3123" = getelementptr i8, i8* %0, i32 36 - %"$label_3124" = bitcast i8* %"$label_3123" to %String* - %label = load %String, %String* %"$label_3124" - %"$owner_3125" = getelementptr i8, i8* %0, i32 52 - %"$owner_3126" = bitcast i8* %"$owner_3125" to [20 x i8]* - %"$resolver_3127" = getelementptr i8, i8* %0, i32 72 - %"$resolver_3128" = bitcast i8* %"$resolver_3127" to [20 x i8]* - call void @"$bestow_2925"(%Uint128 %_amount, [20 x i8]* %"$_sender_3122", %String %label, [20 x i8]* %"$owner_3126", [20 x i8]* %"$resolver_3128") + %"$_amount_5259" = getelementptr i8, i8* %0, i32 0 + %"$_amount_5260" = bitcast i8* %"$_amount_5259" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_5260" + %"$_sender_5261" = getelementptr i8, i8* %0, i32 16 + %"$_sender_5262" = bitcast i8* %"$_sender_5261" to [20 x i8]* + %"$label_5263" = getelementptr i8, i8* %0, i32 36 + %"$label_5264" = bitcast i8* %"$label_5263" to %String* + %label = load %String, %String* %"$label_5264" + %"$owner_5265" = getelementptr i8, i8* %0, i32 52 + %"$owner_5266" = bitcast i8* %"$owner_5265" to [20 x i8]* + %"$resolver_5267" = getelementptr i8, i8* %0, i32 72 + %"$resolver_5268" = bitcast i8* %"$resolver_5267" to [20 x i8]* + call void @"$bestow_4848"(%Uint128 %_amount, [20 x i8]* %"$_sender_5262", %String %label, [20 x i8]* %"$owner_5266", [20 x i8]* %"$resolver_5268") ret void } -define internal void @"$setRegistrar_3129"(%Uint128 %_amount, [20 x i8]* %"$_sender_3130", [20 x i8]* %"$address_3131") { +define internal void @"$setRegistrar_5269"(%Uint128 %_amount, [20 x i8]* %"$_sender_5270", [20 x i8]* %"$address_5271") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_3130" - %address = load [20 x i8], [20 x i8]* %"$address_3131" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_5270" + %address = load [20 x i8], [20 x i8]* %"$address_5271" %currentAdmins = alloca %TName_List_ByStr20* - %"$execptr_load_3132" = load i8*, i8** @_execptr - %"$currentAdmins_3134" = call i8* @_fetch_field(i8* %"$execptr_load_3132", i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$admins_3133", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_320", i32 0, i8* null, i32 1) - %"$currentAdmins_3135" = bitcast i8* %"$currentAdmins_3134" to %TName_List_ByStr20* - store %TName_List_ByStr20* %"$currentAdmins_3135", %TName_List_ByStr20** %currentAdmins + %"$execptr_load_5272" = load i8*, i8** @_execptr + %"$currentAdmins_5274" = call i8* @_fetch_field(i8* %"$execptr_load_5272", i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$admins_5273", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_317", i32 0, i8* null, i32 1) + %"$currentAdmins_5275" = bitcast i8* %"$currentAdmins_5274" to %TName_List_ByStr20* + store %TName_List_ByStr20* %"$currentAdmins_5275", %TName_List_ByStr20** %currentAdmins + %"$currentAdmins_5276" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentAdmins + %"$$currentAdmins_5276_5277" = bitcast %TName_List_ByStr20* %"$currentAdmins_5276" to i8* + %"$_literal_cost_call_5278" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_317", i8* %"$$currentAdmins_5276_5277") + %"$gasadd_5279" = add i64 %"$_literal_cost_call_5278", 0 + %"$gasrem_5280" = load i64, i64* @_gasrem + %"$gascmp_5281" = icmp ugt i64 %"$gasadd_5279", %"$gasrem_5280" + br i1 %"$gascmp_5281", label %"$out_of_gas_5282", label %"$have_gas_5283" + +"$out_of_gas_5282": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_5283" + +"$have_gas_5283": ; preds = %"$out_of_gas_5282", %entry + %"$consume_5284" = sub i64 %"$gasrem_5280", %"$gasadd_5279" + store i64 %"$consume_5284", i64* @_gasrem + %"$gasrem_5285" = load i64, i64* @_gasrem + %"$gascmp_5286" = icmp ugt i64 1, %"$gasrem_5285" + br i1 %"$gascmp_5286", label %"$out_of_gas_5287", label %"$have_gas_5288" + +"$out_of_gas_5287": ; preds = %"$have_gas_5283" + call void @_out_of_gas() + br label %"$have_gas_5288" + +"$have_gas_5288": ; preds = %"$out_of_gas_5287", %"$have_gas_5283" + %"$consume_5289" = sub i64 %"$gasrem_5285", 1 + store i64 %"$consume_5289", i64* @_gasrem %isOk = alloca %TName_Bool* - %"$listByStr20Contains_135" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } - %"$listByStr20Contains_3136" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20Contains - %"$listByStr20Contains_fptr_3137" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_3136", 0 - %"$listByStr20Contains_envptr_3138" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_3136", 1 - %"$currentAdmins_3139" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentAdmins - %"$listByStr20Contains_call_3140" = call { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_fptr_3137"(i8* %"$listByStr20Contains_envptr_3138", %TName_List_ByStr20* %"$currentAdmins_3139") - store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_call_3140", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_135" - %"$listByStr20Contains_136" = alloca %TName_Bool* - %"$$listByStr20Contains_135_3141" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_135" - %"$$listByStr20Contains_135_fptr_3142" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_135_3141", 0 - %"$$listByStr20Contains_135_envptr_3143" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_135_3141", 1 - %"$$listByStr20Contains_135__sender_3144" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$$listByStr20Contains_135__sender_3144" - %"$$listByStr20Contains_135_call_3145" = call %TName_Bool* %"$$listByStr20Contains_135_fptr_3142"(i8* %"$$listByStr20Contains_135_envptr_3143", [20 x i8]* %"$$listByStr20Contains_135__sender_3144") - store %TName_Bool* %"$$listByStr20Contains_135_call_3145", %TName_Bool** %"$listByStr20Contains_136" - %"$$listByStr20Contains_136_3146" = load %TName_Bool*, %TName_Bool** %"$listByStr20Contains_136" - store %TName_Bool* %"$$listByStr20Contains_136_3146", %TName_Bool** %isOk - %"$isOk_3148" = load %TName_Bool*, %TName_Bool** %isOk - %"$isOk_tag_3149" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isOk_3148", i32 0, i32 0 - %"$isOk_tag_3150" = load i8, i8* %"$isOk_tag_3149" - switch i8 %"$isOk_tag_3150", label %"$default_3151" [ - i8 0, label %"$True_3152" + %"$gasrem_5290" = load i64, i64* @_gasrem + %"$gascmp_5291" = icmp ugt i64 1, %"$gasrem_5290" + br i1 %"$gascmp_5291", label %"$out_of_gas_5292", label %"$have_gas_5293" + +"$out_of_gas_5292": ; preds = %"$have_gas_5288" + call void @_out_of_gas() + br label %"$have_gas_5293" + +"$have_gas_5293": ; preds = %"$out_of_gas_5292", %"$have_gas_5288" + %"$consume_5294" = sub i64 %"$gasrem_5290", 1 + store i64 %"$consume_5294", i64* @_gasrem + %"$listByStr20Contains_132" = alloca { %TName_Bool* (i8*, [20 x i8]*)*, i8* } + %"$listByStr20Contains_5295" = load { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }, { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* }* @listByStr20Contains + %"$listByStr20Contains_fptr_5296" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_5295", 0 + %"$listByStr20Contains_envptr_5297" = extractvalue { { %TName_Bool* (i8*, [20 x i8]*)*, i8* } (i8*, %TName_List_ByStr20*)*, i8* } %"$listByStr20Contains_5295", 1 + %"$currentAdmins_5298" = load %TName_List_ByStr20*, %TName_List_ByStr20** %currentAdmins + %"$listByStr20Contains_call_5299" = call { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_fptr_5296"(i8* %"$listByStr20Contains_envptr_5297", %TName_List_ByStr20* %"$currentAdmins_5298") + store { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$listByStr20Contains_call_5299", { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_132" + %"$listByStr20Contains_133" = alloca %TName_Bool* + %"$$listByStr20Contains_132_5300" = load { %TName_Bool* (i8*, [20 x i8]*)*, i8* }, { %TName_Bool* (i8*, [20 x i8]*)*, i8* }* %"$listByStr20Contains_132" + %"$$listByStr20Contains_132_fptr_5301" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_132_5300", 0 + %"$$listByStr20Contains_132_envptr_5302" = extractvalue { %TName_Bool* (i8*, [20 x i8]*)*, i8* } %"$$listByStr20Contains_132_5300", 1 + %"$$listByStr20Contains_132__sender_5303" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$$listByStr20Contains_132__sender_5303" + %"$$listByStr20Contains_132_call_5304" = call %TName_Bool* %"$$listByStr20Contains_132_fptr_5301"(i8* %"$$listByStr20Contains_132_envptr_5302", [20 x i8]* %"$$listByStr20Contains_132__sender_5303") + store %TName_Bool* %"$$listByStr20Contains_132_call_5304", %TName_Bool** %"$listByStr20Contains_133" + %"$$listByStr20Contains_133_5305" = load %TName_Bool*, %TName_Bool** %"$listByStr20Contains_133" + store %TName_Bool* %"$$listByStr20Contains_133_5305", %TName_Bool** %isOk + %"$gasrem_5306" = load i64, i64* @_gasrem + %"$gascmp_5307" = icmp ugt i64 2, %"$gasrem_5306" + br i1 %"$gascmp_5307", label %"$out_of_gas_5308", label %"$have_gas_5309" + +"$out_of_gas_5308": ; preds = %"$have_gas_5293" + call void @_out_of_gas() + br label %"$have_gas_5309" + +"$have_gas_5309": ; preds = %"$out_of_gas_5308", %"$have_gas_5293" + %"$consume_5310" = sub i64 %"$gasrem_5306", 2 + store i64 %"$consume_5310", i64* @_gasrem + %"$isOk_5312" = load %TName_Bool*, %TName_Bool** %isOk + %"$isOk_tag_5313" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isOk_5312", i32 0, i32 0 + %"$isOk_tag_5314" = load i8, i8* %"$isOk_tag_5313" + switch i8 %"$isOk_tag_5314", label %"$default_5315" [ + i8 0, label %"$True_5316" ] -"$True_3152": ; preds = %entry - %"$isOk_3153" = bitcast %TName_Bool* %"$isOk_3148" to %CName_True* +"$True_5316": ; preds = %"$have_gas_5309" + %"$isOk_5317" = bitcast %TName_Bool* %"$isOk_5312" to %CName_True* + %"$gasrem_5318" = load i64, i64* @_gasrem + %"$gascmp_5319" = icmp ugt i64 1, %"$gasrem_5318" + br i1 %"$gascmp_5319", label %"$out_of_gas_5320", label %"$have_gas_5321" + +"$out_of_gas_5320": ; preds = %"$True_5316" + call void @_out_of_gas() + br label %"$have_gas_5321" + +"$have_gas_5321": ; preds = %"$out_of_gas_5320", %"$True_5316" + %"$consume_5322" = sub i64 %"$gasrem_5318", 1 + store i64 %"$consume_5322", i64* @_gasrem %e = alloca i8* - %"$eNewRegistrar_134" = alloca i8* - %"$eNewRegistrar_3154" = load { i8* (i8*, [20 x i8]*)*, i8* }, { i8* (i8*, [20 x i8]*)*, i8* }* @eNewRegistrar - %"$eNewRegistrar_fptr_3155" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$eNewRegistrar_3154", 0 - %"$eNewRegistrar_envptr_3156" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$eNewRegistrar_3154", 1 - %"$eNewRegistrar_address_3157" = alloca [20 x i8] - store [20 x i8] %address, [20 x i8]* %"$eNewRegistrar_address_3157" - %"$eNewRegistrar_call_3158" = call i8* %"$eNewRegistrar_fptr_3155"(i8* %"$eNewRegistrar_envptr_3156", [20 x i8]* %"$eNewRegistrar_address_3157") - store i8* %"$eNewRegistrar_call_3158", i8** %"$eNewRegistrar_134" - %"$$eNewRegistrar_134_3159" = load i8*, i8** %"$eNewRegistrar_134" - store i8* %"$$eNewRegistrar_134_3159", i8** %e - %"$execptr_load_3160" = load i8*, i8** @_execptr - %"$e_3161" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_3160", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_3161") - %"$execptr_load_3162" = load i8*, i8** @_execptr - %"$update_value_3164" = alloca [20 x i8] - store [20 x i8] %address, [20 x i8]* %"$update_value_3164" - %"$update_value_3165" = bitcast [20 x i8]* %"$update_value_3164" to i8* - call void @_update_field(i8* %"$execptr_load_3162", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$registrar_3163", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", i32 0, i8* null, i8* %"$update_value_3165") - br label %"$matchsucc_3147" - -"$default_3151": ; preds = %entry - br label %"$joinp_9" - -"$joinp_9": ; preds = %"$default_3151" - br label %"$matchsucc_3147" - -"$matchsucc_3147": ; preds = %"$True_3152", %"$joinp_9" + %"$gasrem_5323" = load i64, i64* @_gasrem + %"$gascmp_5324" = icmp ugt i64 1, %"$gasrem_5323" + br i1 %"$gascmp_5324", label %"$out_of_gas_5325", label %"$have_gas_5326" + +"$out_of_gas_5325": ; preds = %"$have_gas_5321" + call void @_out_of_gas() + br label %"$have_gas_5326" + +"$have_gas_5326": ; preds = %"$out_of_gas_5325", %"$have_gas_5321" + %"$consume_5327" = sub i64 %"$gasrem_5323", 1 + store i64 %"$consume_5327", i64* @_gasrem + %"$eNewRegistrar_131" = alloca i8* + %"$eNewRegistrar_5328" = load { i8* (i8*, [20 x i8]*)*, i8* }, { i8* (i8*, [20 x i8]*)*, i8* }* @eNewRegistrar + %"$eNewRegistrar_fptr_5329" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$eNewRegistrar_5328", 0 + %"$eNewRegistrar_envptr_5330" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$eNewRegistrar_5328", 1 + %"$eNewRegistrar_address_5331" = alloca [20 x i8] + store [20 x i8] %address, [20 x i8]* %"$eNewRegistrar_address_5331" + %"$eNewRegistrar_call_5332" = call i8* %"$eNewRegistrar_fptr_5329"(i8* %"$eNewRegistrar_envptr_5330", [20 x i8]* %"$eNewRegistrar_address_5331") + store i8* %"$eNewRegistrar_call_5332", i8** %"$eNewRegistrar_131" + %"$$eNewRegistrar_131_5333" = load i8*, i8** %"$eNewRegistrar_131" + store i8* %"$$eNewRegistrar_131_5333", i8** %e + %"$e_5334" = load i8*, i8** %e + %"$_literal_cost_call_5336" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_5334") + %"$gasrem_5337" = load i64, i64* @_gasrem + %"$gascmp_5338" = icmp ugt i64 %"$_literal_cost_call_5336", %"$gasrem_5337" + br i1 %"$gascmp_5338", label %"$out_of_gas_5339", label %"$have_gas_5340" + +"$out_of_gas_5339": ; preds = %"$have_gas_5326" + call void @_out_of_gas() + br label %"$have_gas_5340" + +"$have_gas_5340": ; preds = %"$out_of_gas_5339", %"$have_gas_5326" + %"$consume_5341" = sub i64 %"$gasrem_5337", %"$_literal_cost_call_5336" + store i64 %"$consume_5341", i64* @_gasrem + %"$execptr_load_5342" = load i8*, i8** @_execptr + %"$e_5343" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_5342", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_5343") + %"$_literal_cost_address_5344" = alloca [20 x i8] + store [20 x i8] %address, [20 x i8]* %"$_literal_cost_address_5344" + %"$$_literal_cost_address_5344_5345" = bitcast [20 x i8]* %"$_literal_cost_address_5344" to i8* + %"$_literal_cost_call_5346" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", i8* %"$$_literal_cost_address_5344_5345") + %"$gasrem_5347" = load i64, i64* @_gasrem + %"$gascmp_5348" = icmp ugt i64 %"$_literal_cost_call_5346", %"$gasrem_5347" + br i1 %"$gascmp_5348", label %"$out_of_gas_5349", label %"$have_gas_5350" + +"$out_of_gas_5349": ; preds = %"$have_gas_5340" + call void @_out_of_gas() + br label %"$have_gas_5350" + +"$have_gas_5350": ; preds = %"$out_of_gas_5349", %"$have_gas_5340" + %"$consume_5351" = sub i64 %"$gasrem_5347", %"$_literal_cost_call_5346" + store i64 %"$consume_5351", i64* @_gasrem + %"$execptr_load_5352" = load i8*, i8** @_execptr + %"$update_value_5354" = alloca [20 x i8] + store [20 x i8] %address, [20 x i8]* %"$update_value_5354" + %"$update_value_5355" = bitcast [20 x i8]* %"$update_value_5354" to i8* + call void @_update_field(i8* %"$execptr_load_5352", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$registrar_5353", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", i32 0, i8* null, i8* %"$update_value_5355") + br label %"$matchsucc_5311" + +"$default_5315": ; preds = %"$have_gas_5309" + br label %"$joinp_6" + +"$joinp_6": ; preds = %"$default_5315" + br label %"$matchsucc_5311" + +"$matchsucc_5311": ; preds = %"$have_gas_5350", %"$joinp_6" ret void } define void @setRegistrar(i8* %0) { entry: - %"$_amount_3167" = getelementptr i8, i8* %0, i32 0 - %"$_amount_3168" = bitcast i8* %"$_amount_3167" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_3168" - %"$_sender_3169" = getelementptr i8, i8* %0, i32 16 - %"$_sender_3170" = bitcast i8* %"$_sender_3169" to [20 x i8]* - %"$address_3171" = getelementptr i8, i8* %0, i32 36 - %"$address_3172" = bitcast i8* %"$address_3171" to [20 x i8]* - call void @"$setRegistrar_3129"(%Uint128 %_amount, [20 x i8]* %"$_sender_3170", [20 x i8]* %"$address_3172") + %"$_amount_5357" = getelementptr i8, i8* %0, i32 0 + %"$_amount_5358" = bitcast i8* %"$_amount_5357" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_5358" + %"$_sender_5359" = getelementptr i8, i8* %0, i32 16 + %"$_sender_5360" = bitcast i8* %"$_sender_5359" to [20 x i8]* + %"$address_5361" = getelementptr i8, i8* %0, i32 36 + %"$address_5362" = bitcast i8* %"$address_5361" to [20 x i8]* + call void @"$setRegistrar_5269"(%Uint128 %_amount, [20 x i8]* %"$_sender_5360", [20 x i8]* %"$address_5362") ret void } -define internal void @"$register_3173"(%Uint128 %_amount, [20 x i8]* %"$_sender_3174", [32 x i8]* %"$parent_3175", %String %label) { +define internal void @"$register_5363"(%Uint128 %_amount, [20 x i8]* %"$_sender_5364", [32 x i8]* %"$parent_5365", %String %label) { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_3174" - %parent = load [32 x i8], [32 x i8]* %"$parent_3175" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_5364" + %parent = load [32 x i8], [32 x i8]* %"$parent_5365" + %"$gasrem_5366" = load i64, i64* @_gasrem + %"$gascmp_5367" = icmp ugt i64 1, %"$gasrem_5366" + br i1 %"$gascmp_5367", label %"$out_of_gas_5368", label %"$have_gas_5369" + +"$out_of_gas_5368": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_5369" + +"$have_gas_5369": ; preds = %"$out_of_gas_5368", %entry + %"$consume_5370" = sub i64 %"$gasrem_5366", 1 + store i64 %"$consume_5370", i64* @_gasrem %node = alloca [32 x i8] - %"$parentLabelToNode_141" = alloca { void (i8*, [32 x i8]*, %String)*, i8* } - %"$parentLabelToNode_3176" = load { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }* @parentLabelToNode - %"$parentLabelToNode_fptr_3177" = extractvalue { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$parentLabelToNode_3176", 0 - %"$parentLabelToNode_envptr_3178" = extractvalue { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$parentLabelToNode_3176", 1 - %"$parentLabelToNode_parent_3179" = alloca [32 x i8] - store [32 x i8] %parent, [32 x i8]* %"$parentLabelToNode_parent_3179" - %"$parentLabelToNode_call_3180" = call { void (i8*, [32 x i8]*, %String)*, i8* } %"$parentLabelToNode_fptr_3177"(i8* %"$parentLabelToNode_envptr_3178", [32 x i8]* %"$parentLabelToNode_parent_3179") - store { void (i8*, [32 x i8]*, %String)*, i8* } %"$parentLabelToNode_call_3180", { void (i8*, [32 x i8]*, %String)*, i8* }* %"$parentLabelToNode_141" - %"$parentLabelToNode_142" = alloca [32 x i8] - %"$$parentLabelToNode_141_3181" = load { void (i8*, [32 x i8]*, %String)*, i8* }, { void (i8*, [32 x i8]*, %String)*, i8* }* %"$parentLabelToNode_141" - %"$$parentLabelToNode_141_fptr_3182" = extractvalue { void (i8*, [32 x i8]*, %String)*, i8* } %"$$parentLabelToNode_141_3181", 0 - %"$$parentLabelToNode_141_envptr_3183" = extractvalue { void (i8*, [32 x i8]*, %String)*, i8* } %"$$parentLabelToNode_141_3181", 1 - %"$$parentLabelToNode_141_retalloca_3184" = alloca [32 x i8] - call void %"$$parentLabelToNode_141_fptr_3182"(i8* %"$$parentLabelToNode_141_envptr_3183", [32 x i8]* %"$$parentLabelToNode_141_retalloca_3184", %String %label) - %"$$parentLabelToNode_141_ret_3185" = load [32 x i8], [32 x i8]* %"$$parentLabelToNode_141_retalloca_3184" - store [32 x i8] %"$$parentLabelToNode_141_ret_3185", [32 x i8]* %"$parentLabelToNode_142" - %"$$parentLabelToNode_142_3186" = load [32 x i8], [32 x i8]* %"$parentLabelToNode_142" - store [32 x i8] %"$$parentLabelToNode_142_3186", [32 x i8]* %node + %"$gasrem_5371" = load i64, i64* @_gasrem + %"$gascmp_5372" = icmp ugt i64 1, %"$gasrem_5371" + br i1 %"$gascmp_5372", label %"$out_of_gas_5373", label %"$have_gas_5374" + +"$out_of_gas_5373": ; preds = %"$have_gas_5369" + call void @_out_of_gas() + br label %"$have_gas_5374" + +"$have_gas_5374": ; preds = %"$out_of_gas_5373", %"$have_gas_5369" + %"$consume_5375" = sub i64 %"$gasrem_5371", 1 + store i64 %"$consume_5375", i64* @_gasrem + %"$parentLabelToNode_138" = alloca { void (i8*, [32 x i8]*, %String)*, i8* } + %"$parentLabelToNode_5376" = load { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* }* @parentLabelToNode + %"$parentLabelToNode_fptr_5377" = extractvalue { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$parentLabelToNode_5376", 0 + %"$parentLabelToNode_envptr_5378" = extractvalue { { void (i8*, [32 x i8]*, %String)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$parentLabelToNode_5376", 1 + %"$parentLabelToNode_parent_5379" = alloca [32 x i8] + store [32 x i8] %parent, [32 x i8]* %"$parentLabelToNode_parent_5379" + %"$parentLabelToNode_call_5380" = call { void (i8*, [32 x i8]*, %String)*, i8* } %"$parentLabelToNode_fptr_5377"(i8* %"$parentLabelToNode_envptr_5378", [32 x i8]* %"$parentLabelToNode_parent_5379") + store { void (i8*, [32 x i8]*, %String)*, i8* } %"$parentLabelToNode_call_5380", { void (i8*, [32 x i8]*, %String)*, i8* }* %"$parentLabelToNode_138" + %"$parentLabelToNode_139" = alloca [32 x i8] + %"$$parentLabelToNode_138_5381" = load { void (i8*, [32 x i8]*, %String)*, i8* }, { void (i8*, [32 x i8]*, %String)*, i8* }* %"$parentLabelToNode_138" + %"$$parentLabelToNode_138_fptr_5382" = extractvalue { void (i8*, [32 x i8]*, %String)*, i8* } %"$$parentLabelToNode_138_5381", 0 + %"$$parentLabelToNode_138_envptr_5383" = extractvalue { void (i8*, [32 x i8]*, %String)*, i8* } %"$$parentLabelToNode_138_5381", 1 + %"$$parentLabelToNode_138_retalloca_5384" = alloca [32 x i8] + call void %"$$parentLabelToNode_138_fptr_5382"(i8* %"$$parentLabelToNode_138_envptr_5383", [32 x i8]* %"$$parentLabelToNode_138_retalloca_5384", %String %label) + %"$$parentLabelToNode_138_ret_5385" = load [32 x i8], [32 x i8]* %"$$parentLabelToNode_138_retalloca_5384" + store [32 x i8] %"$$parentLabelToNode_138_ret_5385", [32 x i8]* %"$parentLabelToNode_139" + %"$$parentLabelToNode_139_5386" = load [32 x i8], [32 x i8]* %"$parentLabelToNode_139" + store [32 x i8] %"$$parentLabelToNode_139_5386", [32 x i8]* %node %maybeRecord = alloca %TName_Option_Record* - %"$indices_buf_3187_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_3187_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3187_salloc_load", i64 32) - %"$indices_buf_3187_salloc" = bitcast i8* %"$indices_buf_3187_salloc_salloc" to [32 x i8]* - %"$indices_buf_3187" = bitcast [32 x i8]* %"$indices_buf_3187_salloc" to i8* - %"$node_3188" = load [32 x i8], [32 x i8]* %node - %"$indices_gep_3189" = getelementptr i8, i8* %"$indices_buf_3187", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_3189" to [32 x i8]* - store [32 x i8] %"$node_3188", [32 x i8]* %indices_cast - %"$execptr_load_3190" = load i8*, i8** @_execptr - %"$maybeRecord_3192" = call i8* @_fetch_field(i8* %"$execptr_load_3190", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_3191", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_325", i32 1, i8* %"$indices_buf_3187", i32 1) - %"$maybeRecord_3193" = bitcast i8* %"$maybeRecord_3192" to %TName_Option_Record* - store %TName_Option_Record* %"$maybeRecord_3193", %TName_Option_Record** %maybeRecord + %"$indices_buf_5387_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_5387_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_5387_salloc_load", i64 32) + %"$indices_buf_5387_salloc" = bitcast i8* %"$indices_buf_5387_salloc_salloc" to [32 x i8]* + %"$indices_buf_5387" = bitcast [32 x i8]* %"$indices_buf_5387_salloc" to i8* + %"$node_5388" = load [32 x i8], [32 x i8]* %node + %"$indices_gep_5389" = getelementptr i8, i8* %"$indices_buf_5387", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_5389" to [32 x i8]* + store [32 x i8] %"$node_5388", [32 x i8]* %indices_cast + %"$execptr_load_5390" = load i8*, i8** @_execptr + %"$maybeRecord_5392" = call i8* @_fetch_field(i8* %"$execptr_load_5390", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_5391", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_322", i32 1, i8* %"$indices_buf_5387", i32 1) + %"$maybeRecord_5393" = bitcast i8* %"$maybeRecord_5392" to %TName_Option_Record* + store %TName_Option_Record* %"$maybeRecord_5393", %TName_Option_Record** %maybeRecord + %"$maybeRecord_5394" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord + %"$$maybeRecord_5394_5395" = bitcast %TName_Option_Record* %"$maybeRecord_5394" to i8* + %"$_literal_cost_call_5396" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Record_313", i8* %"$$maybeRecord_5394_5395") + %"$gasadd_5397" = add i64 %"$_literal_cost_call_5396", 0 + %"$gasadd_5398" = add i64 %"$gasadd_5397", 1 + %"$gasrem_5399" = load i64, i64* @_gasrem + %"$gascmp_5400" = icmp ugt i64 %"$gasadd_5398", %"$gasrem_5399" + br i1 %"$gascmp_5400", label %"$out_of_gas_5401", label %"$have_gas_5402" + +"$out_of_gas_5401": ; preds = %"$have_gas_5374" + call void @_out_of_gas() + br label %"$have_gas_5402" + +"$have_gas_5402": ; preds = %"$out_of_gas_5401", %"$have_gas_5374" + %"$consume_5403" = sub i64 %"$gasrem_5399", %"$gasadd_5398" + store i64 %"$consume_5403", i64* @_gasrem %maybeApproved = alloca %TName_Option_ByStr20* - %"$indices_buf_3194_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_3194_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3194_salloc_load", i64 32) - %"$indices_buf_3194_salloc" = bitcast i8* %"$indices_buf_3194_salloc_salloc" to [32 x i8]* - %"$indices_buf_3194" = bitcast [32 x i8]* %"$indices_buf_3194_salloc" to i8* - %"$node_3195" = load [32 x i8], [32 x i8]* %node - %"$indices_gep_3196" = getelementptr i8, i8* %"$indices_buf_3194", i32 0 - %indices_cast1 = bitcast i8* %"$indices_gep_3196" to [32 x i8]* - store [32 x i8] %"$node_3195", [32 x i8]* %indices_cast1 - %"$execptr_load_3197" = load i8*, i8** @_execptr - %"$maybeApproved_3199" = call i8* @_fetch_field(i8* %"$execptr_load_3197", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_3198", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_324", i32 1, i8* %"$indices_buf_3194", i32 1) - %"$maybeApproved_3200" = bitcast i8* %"$maybeApproved_3199" to %TName_Option_ByStr20* - store %TName_Option_ByStr20* %"$maybeApproved_3200", %TName_Option_ByStr20** %maybeApproved + %"$indices_buf_5404_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_5404_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_5404_salloc_load", i64 32) + %"$indices_buf_5404_salloc" = bitcast i8* %"$indices_buf_5404_salloc_salloc" to [32 x i8]* + %"$indices_buf_5404" = bitcast [32 x i8]* %"$indices_buf_5404_salloc" to i8* + %"$node_5405" = load [32 x i8], [32 x i8]* %node + %"$indices_gep_5406" = getelementptr i8, i8* %"$indices_buf_5404", i32 0 + %indices_cast1 = bitcast i8* %"$indices_gep_5406" to [32 x i8]* + store [32 x i8] %"$node_5405", [32 x i8]* %indices_cast1 + %"$execptr_load_5407" = load i8*, i8** @_execptr + %"$maybeApproved_5409" = call i8* @_fetch_field(i8* %"$execptr_load_5407", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$approvals_5408", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_321", i32 1, i8* %"$indices_buf_5404", i32 1) + %"$maybeApproved_5410" = bitcast i8* %"$maybeApproved_5409" to %TName_Option_ByStr20* + store %TName_Option_ByStr20* %"$maybeApproved_5410", %TName_Option_ByStr20** %maybeApproved + %"$maybeApproved_5411" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved + %"$$maybeApproved_5411_5412" = bitcast %TName_Option_ByStr20* %"$maybeApproved_5411" to i8* + %"$_literal_cost_call_5413" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_ByStr20_314", i8* %"$$maybeApproved_5411_5412") + %"$gasadd_5414" = add i64 %"$_literal_cost_call_5413", 0 + %"$gasadd_5415" = add i64 %"$gasadd_5414", 1 + %"$gasrem_5416" = load i64, i64* @_gasrem + %"$gascmp_5417" = icmp ugt i64 %"$gasadd_5415", %"$gasrem_5416" + br i1 %"$gascmp_5417", label %"$out_of_gas_5418", label %"$have_gas_5419" + +"$out_of_gas_5418": ; preds = %"$have_gas_5402" + call void @_out_of_gas() + br label %"$have_gas_5419" + +"$have_gas_5419": ; preds = %"$out_of_gas_5418", %"$have_gas_5402" + %"$consume_5420" = sub i64 %"$gasrem_5416", %"$gasadd_5415" + store i64 %"$consume_5420", i64* @_gasrem + %"$gasrem_5421" = load i64, i64* @_gasrem + %"$gascmp_5422" = icmp ugt i64 1, %"$gasrem_5421" + br i1 %"$gascmp_5422", label %"$out_of_gas_5423", label %"$have_gas_5424" + +"$out_of_gas_5423": ; preds = %"$have_gas_5419" + call void @_out_of_gas() + br label %"$have_gas_5424" + +"$have_gas_5424": ; preds = %"$out_of_gas_5423", %"$have_gas_5419" + %"$consume_5425" = sub i64 %"$gasrem_5421", 1 + store i64 %"$consume_5425", i64* @_gasrem %recordOwner = alloca [20 x i8] - %"$recordMemberOwner_140" = alloca [20 x i8] - %"$recordMemberOwner_3201" = load { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }, { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }* @recordMemberOwner - %"$recordMemberOwner_fptr_3202" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_3201", 0 - %"$recordMemberOwner_envptr_3203" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_3201", 1 - %"$maybeRecord_3204" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord - %"$recordMemberOwner_retalloca_3205" = alloca [20 x i8] - call void %"$recordMemberOwner_fptr_3202"(i8* %"$recordMemberOwner_envptr_3203", [20 x i8]* %"$recordMemberOwner_retalloca_3205", %TName_Option_Record* %"$maybeRecord_3204") - %"$recordMemberOwner_ret_3206" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_retalloca_3205" - store [20 x i8] %"$recordMemberOwner_ret_3206", [20 x i8]* %"$recordMemberOwner_140" - %"$$recordMemberOwner_140_3207" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_140" - store [20 x i8] %"$$recordMemberOwner_140_3207", [20 x i8]* %recordOwner + %"$gasrem_5426" = load i64, i64* @_gasrem + %"$gascmp_5427" = icmp ugt i64 1, %"$gasrem_5426" + br i1 %"$gascmp_5427", label %"$out_of_gas_5428", label %"$have_gas_5429" + +"$out_of_gas_5428": ; preds = %"$have_gas_5424" + call void @_out_of_gas() + br label %"$have_gas_5429" + +"$have_gas_5429": ; preds = %"$out_of_gas_5428", %"$have_gas_5424" + %"$consume_5430" = sub i64 %"$gasrem_5426", 1 + store i64 %"$consume_5430", i64* @_gasrem + %"$recordMemberOwner_137" = alloca [20 x i8] + %"$recordMemberOwner_5431" = load { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }, { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* }* @recordMemberOwner + %"$recordMemberOwner_fptr_5432" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_5431", 0 + %"$recordMemberOwner_envptr_5433" = extractvalue { void (i8*, [20 x i8]*, %TName_Option_Record*)*, i8* } %"$recordMemberOwner_5431", 1 + %"$maybeRecord_5434" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord + %"$recordMemberOwner_retalloca_5435" = alloca [20 x i8] + call void %"$recordMemberOwner_fptr_5432"(i8* %"$recordMemberOwner_envptr_5433", [20 x i8]* %"$recordMemberOwner_retalloca_5435", %TName_Option_Record* %"$maybeRecord_5434") + %"$recordMemberOwner_ret_5436" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_retalloca_5435" + store [20 x i8] %"$recordMemberOwner_ret_5436", [20 x i8]* %"$recordMemberOwner_137" + %"$$recordMemberOwner_137_5437" = load [20 x i8], [20 x i8]* %"$recordMemberOwner_137" + store [20 x i8] %"$$recordMemberOwner_137_5437", [20 x i8]* %recordOwner + %"$gasrem_5438" = load i64, i64* @_gasrem + %"$gascmp_5439" = icmp ugt i64 1, %"$gasrem_5438" + br i1 %"$gascmp_5439", label %"$out_of_gas_5440", label %"$have_gas_5441" + +"$out_of_gas_5440": ; preds = %"$have_gas_5429" + call void @_out_of_gas() + br label %"$have_gas_5441" + +"$have_gas_5441": ; preds = %"$out_of_gas_5440", %"$have_gas_5429" + %"$consume_5442" = sub i64 %"$gasrem_5438", 1 + store i64 %"$consume_5442", i64* @_gasrem %approved = alloca [20 x i8] - %"$maybeApproved_3209" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved - %"$maybeApproved_tag_3210" = getelementptr inbounds %TName_Option_ByStr20, %TName_Option_ByStr20* %"$maybeApproved_3209", i32 0, i32 0 - %"$maybeApproved_tag_3211" = load i8, i8* %"$maybeApproved_tag_3210" - switch i8 %"$maybeApproved_tag_3211", label %"$empty_default_3212" [ - i8 1, label %"$None_3213" - i8 0, label %"$Some_3216" + %"$gasrem_5443" = load i64, i64* @_gasrem + %"$gascmp_5444" = icmp ugt i64 2, %"$gasrem_5443" + br i1 %"$gascmp_5444", label %"$out_of_gas_5445", label %"$have_gas_5446" + +"$out_of_gas_5445": ; preds = %"$have_gas_5441" + call void @_out_of_gas() + br label %"$have_gas_5446" + +"$have_gas_5446": ; preds = %"$out_of_gas_5445", %"$have_gas_5441" + %"$consume_5447" = sub i64 %"$gasrem_5443", 2 + store i64 %"$consume_5447", i64* @_gasrem + %"$maybeApproved_5449" = load %TName_Option_ByStr20*, %TName_Option_ByStr20** %maybeApproved + %"$maybeApproved_tag_5450" = getelementptr inbounds %TName_Option_ByStr20, %TName_Option_ByStr20* %"$maybeApproved_5449", i32 0, i32 0 + %"$maybeApproved_tag_5451" = load i8, i8* %"$maybeApproved_tag_5450" + switch i8 %"$maybeApproved_tag_5451", label %"$empty_default_5452" [ + i8 1, label %"$None_5453" + i8 0, label %"$Some_5461" ] -"$None_3213": ; preds = %entry - %"$maybeApproved_3214" = bitcast %TName_Option_ByStr20* %"$maybeApproved_3209" to %CName_None_ByStr20* - %"$zeroByStr20_3215" = load [20 x i8], [20 x i8]* @zeroByStr20 - store [20 x i8] %"$zeroByStr20_3215", [20 x i8]* %approved - br label %"$matchsucc_3208" - -"$Some_3216": ; preds = %entry - %"$maybeApproved_3217" = bitcast %TName_Option_ByStr20* %"$maybeApproved_3209" to %CName_Some_ByStr20* - %"$approved_gep_3218" = getelementptr inbounds %CName_Some_ByStr20, %CName_Some_ByStr20* %"$maybeApproved_3217", i32 0, i32 1 - %"$approved_load_3219" = load [20 x i8], [20 x i8]* %"$approved_gep_3218" +"$None_5453": ; preds = %"$have_gas_5446" + %"$maybeApproved_5454" = bitcast %TName_Option_ByStr20* %"$maybeApproved_5449" to %CName_None_ByStr20* + %"$gasrem_5455" = load i64, i64* @_gasrem + %"$gascmp_5456" = icmp ugt i64 1, %"$gasrem_5455" + br i1 %"$gascmp_5456", label %"$out_of_gas_5457", label %"$have_gas_5458" + +"$out_of_gas_5457": ; preds = %"$None_5453" + call void @_out_of_gas() + br label %"$have_gas_5458" + +"$have_gas_5458": ; preds = %"$out_of_gas_5457", %"$None_5453" + %"$consume_5459" = sub i64 %"$gasrem_5455", 1 + store i64 %"$consume_5459", i64* @_gasrem + %"$zeroByStr20_5460" = load [20 x i8], [20 x i8]* @zeroByStr20 + store [20 x i8] %"$zeroByStr20_5460", [20 x i8]* %approved + br label %"$matchsucc_5448" + +"$Some_5461": ; preds = %"$have_gas_5446" + %"$maybeApproved_5462" = bitcast %TName_Option_ByStr20* %"$maybeApproved_5449" to %CName_Some_ByStr20* + %"$approved_gep_5463" = getelementptr inbounds %CName_Some_ByStr20, %CName_Some_ByStr20* %"$maybeApproved_5462", i32 0, i32 1 + %"$approved_load_5464" = load [20 x i8], [20 x i8]* %"$approved_gep_5463" %approved2 = alloca [20 x i8] - store [20 x i8] %"$approved_load_3219", [20 x i8]* %approved2 - %"$approved_3220" = load [20 x i8], [20 x i8]* %approved2 - store [20 x i8] %"$approved_3220", [20 x i8]* %approved2 - br label %"$matchsucc_3208" - -"$empty_default_3212": ; preds = %entry - br label %"$matchsucc_3208" - -"$matchsucc_3208": ; preds = %"$Some_3216", %"$None_3213", %"$empty_default_3212" + store [20 x i8] %"$approved_load_5464", [20 x i8]* %approved2 + %"$gasrem_5465" = load i64, i64* @_gasrem + %"$gascmp_5466" = icmp ugt i64 1, %"$gasrem_5465" + br i1 %"$gascmp_5466", label %"$out_of_gas_5467", label %"$have_gas_5468" + +"$out_of_gas_5467": ; preds = %"$Some_5461" + call void @_out_of_gas() + br label %"$have_gas_5468" + +"$have_gas_5468": ; preds = %"$out_of_gas_5467", %"$Some_5461" + %"$consume_5469" = sub i64 %"$gasrem_5465", 1 + store i64 %"$consume_5469", i64* @_gasrem + %"$approved_5470" = load [20 x i8], [20 x i8]* %approved2 + store [20 x i8] %"$approved_5470", [20 x i8]* %approved2 + br label %"$matchsucc_5448" + +"$empty_default_5452": ; preds = %"$have_gas_5446" + br label %"$matchsucc_5448" + +"$matchsucc_5448": ; preds = %"$have_gas_5468", %"$have_gas_5458", %"$empty_default_5452" %currentRegistrar = alloca [20 x i8] - %"$execptr_load_3221" = load i8*, i8** @_execptr - %"$currentRegistrar_3223" = call i8* @_fetch_field(i8* %"$execptr_load_3221", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$registrar_3222", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", i32 0, i8* null, i32 1) - %"$currentRegistrar_3224" = bitcast i8* %"$currentRegistrar_3223" to [20 x i8]* - %"$currentRegistrar_3225" = load [20 x i8], [20 x i8]* %"$currentRegistrar_3224" - store [20 x i8] %"$currentRegistrar_3225", [20 x i8]* %currentRegistrar + %"$execptr_load_5471" = load i8*, i8** @_execptr + %"$currentRegistrar_5473" = call i8* @_fetch_field(i8* %"$execptr_load_5471", i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$registrar_5472", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", i32 0, i8* null, i32 1) + %"$currentRegistrar_5474" = bitcast i8* %"$currentRegistrar_5473" to [20 x i8]* + %"$currentRegistrar_5475" = load [20 x i8], [20 x i8]* %"$currentRegistrar_5474" + store [20 x i8] %"$currentRegistrar_5475", [20 x i8]* %currentRegistrar + %"$_literal_cost_currentRegistrar_5476" = alloca [20 x i8] + %"$currentRegistrar_5477" = load [20 x i8], [20 x i8]* %currentRegistrar + store [20 x i8] %"$currentRegistrar_5477", [20 x i8]* %"$_literal_cost_currentRegistrar_5476" + %"$$_literal_cost_currentRegistrar_5476_5478" = bitcast [20 x i8]* %"$_literal_cost_currentRegistrar_5476" to i8* + %"$_literal_cost_call_5479" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", i8* %"$$_literal_cost_currentRegistrar_5476_5478") + %"$gasadd_5480" = add i64 %"$_literal_cost_call_5479", 0 + %"$gasrem_5481" = load i64, i64* @_gasrem + %"$gascmp_5482" = icmp ugt i64 %"$gasadd_5480", %"$gasrem_5481" + br i1 %"$gascmp_5482", label %"$out_of_gas_5483", label %"$have_gas_5484" + +"$out_of_gas_5483": ; preds = %"$matchsucc_5448" + call void @_out_of_gas() + br label %"$have_gas_5484" + +"$have_gas_5484": ; preds = %"$out_of_gas_5483", %"$matchsucc_5448" + %"$consume_5485" = sub i64 %"$gasrem_5481", %"$gasadd_5480" + store i64 %"$consume_5485", i64* @_gasrem + %"$gasrem_5486" = load i64, i64* @_gasrem + %"$gascmp_5487" = icmp ugt i64 1, %"$gasrem_5486" + br i1 %"$gascmp_5487", label %"$out_of_gas_5488", label %"$have_gas_5489" + +"$out_of_gas_5488": ; preds = %"$have_gas_5484" + call void @_out_of_gas() + br label %"$have_gas_5489" + +"$have_gas_5489": ; preds = %"$out_of_gas_5488", %"$have_gas_5484" + %"$consume_5490" = sub i64 %"$gasrem_5486", 1 + store i64 %"$consume_5490", i64* @_gasrem %isOk = alloca %TName_Bool* + %"$gasrem_5491" = load i64, i64* @_gasrem + %"$gascmp_5492" = icmp ugt i64 1, %"$gasrem_5491" + br i1 %"$gascmp_5492", label %"$out_of_gas_5493", label %"$have_gas_5494" + +"$out_of_gas_5493": ; preds = %"$have_gas_5489" + call void @_out_of_gas() + br label %"$have_gas_5494" + +"$have_gas_5494": ; preds = %"$out_of_gas_5493", %"$have_gas_5489" + %"$consume_5495" = sub i64 %"$gasrem_5491", 1 + store i64 %"$consume_5495", i64* @_gasrem %isRecordUnowned = alloca %TName_Bool* - %"$execptr_load_3226" = load i8*, i8** @_execptr - %"$eq_recordOwner_3227" = alloca [20 x i8] - %"$recordOwner_3228" = load [20 x i8], [20 x i8]* %recordOwner - store [20 x i8] %"$recordOwner_3228", [20 x i8]* %"$eq_recordOwner_3227" - %"$$eq_recordOwner_3227_3229" = bitcast [20 x i8]* %"$eq_recordOwner_3227" to i8* - %"$eq_zeroByStr20_3230" = alloca [20 x i8] - %"$zeroByStr20_3231" = load [20 x i8], [20 x i8]* @zeroByStr20 - store [20 x i8] %"$zeroByStr20_3231", [20 x i8]* %"$eq_zeroByStr20_3230" - %"$$eq_zeroByStr20_3230_3232" = bitcast [20 x i8]* %"$eq_zeroByStr20_3230" to i8* - %"$eq_call_3233" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_3226", i32 20, i8* %"$$eq_recordOwner_3227_3229", i8* %"$$eq_zeroByStr20_3230_3232") - store %TName_Bool* %"$eq_call_3233", %TName_Bool** %isRecordUnowned + %"$execptr_load_5496" = load i8*, i8** @_execptr + %"$eq_recordOwner_5497" = alloca [20 x i8] + %"$recordOwner_5498" = load [20 x i8], [20 x i8]* %recordOwner + store [20 x i8] %"$recordOwner_5498", [20 x i8]* %"$eq_recordOwner_5497" + %"$$eq_recordOwner_5497_5499" = bitcast [20 x i8]* %"$eq_recordOwner_5497" to i8* + %"$eq_zeroByStr20_5500" = alloca [20 x i8] + %"$zeroByStr20_5501" = load [20 x i8], [20 x i8]* @zeroByStr20 + store [20 x i8] %"$zeroByStr20_5501", [20 x i8]* %"$eq_zeroByStr20_5500" + %"$$eq_zeroByStr20_5500_5502" = bitcast [20 x i8]* %"$eq_zeroByStr20_5500" to i8* + %"$eq_call_5503" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_5496", i32 20, i8* %"$$eq_recordOwner_5497_5499", i8* %"$$eq_zeroByStr20_5500_5502") + store %TName_Bool* %"$eq_call_5503", %TName_Bool** %isRecordUnowned + %"$gasrem_5504" = load i64, i64* @_gasrem + %"$gascmp_5505" = icmp ugt i64 1, %"$gasrem_5504" + br i1 %"$gascmp_5505", label %"$out_of_gas_5506", label %"$have_gas_5507" + +"$out_of_gas_5506": ; preds = %"$have_gas_5494" + call void @_out_of_gas() + br label %"$have_gas_5507" + +"$have_gas_5507": ; preds = %"$out_of_gas_5506", %"$have_gas_5494" + %"$consume_5508" = sub i64 %"$gasrem_5504", 1 + store i64 %"$consume_5508", i64* @_gasrem %isUnapproved = alloca %TName_Bool* - %"$execptr_load_3234" = load i8*, i8** @_execptr - %"$eq_approved_3235" = alloca [20 x i8] - %"$approved_3236" = load [20 x i8], [20 x i8]* %approved - store [20 x i8] %"$approved_3236", [20 x i8]* %"$eq_approved_3235" - %"$$eq_approved_3235_3237" = bitcast [20 x i8]* %"$eq_approved_3235" to i8* - %"$eq_zeroByStr20_3238" = alloca [20 x i8] - %"$zeroByStr20_3239" = load [20 x i8], [20 x i8]* @zeroByStr20 - store [20 x i8] %"$zeroByStr20_3239", [20 x i8]* %"$eq_zeroByStr20_3238" - %"$$eq_zeroByStr20_3238_3240" = bitcast [20 x i8]* %"$eq_zeroByStr20_3238" to i8* - %"$eq_call_3241" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_3234", i32 20, i8* %"$$eq_approved_3235_3237", i8* %"$$eq_zeroByStr20_3238_3240") - store %TName_Bool* %"$eq_call_3241", %TName_Bool** %isUnapproved - %"$andb_138" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$andb_3242" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb - %"$andb_fptr_3243" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_3242", 0 - %"$andb_envptr_3244" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_3242", 1 - %"$isRecordUnowned_3245" = load %TName_Bool*, %TName_Bool** %isRecordUnowned - %"$andb_call_3246" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_3243"(i8* %"$andb_envptr_3244", %TName_Bool* %"$isRecordUnowned_3245") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_3246", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_138" - %"$andb_139" = alloca %TName_Bool* - %"$$andb_138_3247" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_138" - %"$$andb_138_fptr_3248" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_138_3247", 0 - %"$$andb_138_envptr_3249" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_138_3247", 1 - %"$isUnapproved_3250" = load %TName_Bool*, %TName_Bool** %isUnapproved - %"$$andb_138_call_3251" = call %TName_Bool* %"$$andb_138_fptr_3248"(i8* %"$$andb_138_envptr_3249", %TName_Bool* %"$isUnapproved_3250") - store %TName_Bool* %"$$andb_138_call_3251", %TName_Bool** %"$andb_139" - %"$$andb_139_3252" = load %TName_Bool*, %TName_Bool** %"$andb_139" - store %TName_Bool* %"$$andb_139_3252", %TName_Bool** %isOk - %"$isOk_3254" = load %TName_Bool*, %TName_Bool** %isOk - %"$isOk_tag_3255" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isOk_3254", i32 0, i32 0 - %"$isOk_tag_3256" = load i8, i8* %"$isOk_tag_3255" - switch i8 %"$isOk_tag_3256", label %"$empty_default_3257" [ - i8 0, label %"$True_3258" - i8 1, label %"$False_3323" + %"$execptr_load_5509" = load i8*, i8** @_execptr + %"$eq_approved_5510" = alloca [20 x i8] + %"$approved_5511" = load [20 x i8], [20 x i8]* %approved + store [20 x i8] %"$approved_5511", [20 x i8]* %"$eq_approved_5510" + %"$$eq_approved_5510_5512" = bitcast [20 x i8]* %"$eq_approved_5510" to i8* + %"$eq_zeroByStr20_5513" = alloca [20 x i8] + %"$zeroByStr20_5514" = load [20 x i8], [20 x i8]* @zeroByStr20 + store [20 x i8] %"$zeroByStr20_5514", [20 x i8]* %"$eq_zeroByStr20_5513" + %"$$eq_zeroByStr20_5513_5515" = bitcast [20 x i8]* %"$eq_zeroByStr20_5513" to i8* + %"$eq_call_5516" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_5509", i32 20, i8* %"$$eq_approved_5510_5512", i8* %"$$eq_zeroByStr20_5513_5515") + store %TName_Bool* %"$eq_call_5516", %TName_Bool** %isUnapproved + %"$gasrem_5517" = load i64, i64* @_gasrem + %"$gascmp_5518" = icmp ugt i64 1, %"$gasrem_5517" + br i1 %"$gascmp_5518", label %"$out_of_gas_5519", label %"$have_gas_5520" + +"$out_of_gas_5519": ; preds = %"$have_gas_5507" + call void @_out_of_gas() + br label %"$have_gas_5520" + +"$have_gas_5520": ; preds = %"$out_of_gas_5519", %"$have_gas_5507" + %"$consume_5521" = sub i64 %"$gasrem_5517", 1 + store i64 %"$consume_5521", i64* @_gasrem + %"$andb_135" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$andb_5522" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb + %"$andb_fptr_5523" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_5522", 0 + %"$andb_envptr_5524" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_5522", 1 + %"$isRecordUnowned_5525" = load %TName_Bool*, %TName_Bool** %isRecordUnowned + %"$andb_call_5526" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_5523"(i8* %"$andb_envptr_5524", %TName_Bool* %"$isRecordUnowned_5525") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_5526", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_135" + %"$andb_136" = alloca %TName_Bool* + %"$$andb_135_5527" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_135" + %"$$andb_135_fptr_5528" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_135_5527", 0 + %"$$andb_135_envptr_5529" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_135_5527", 1 + %"$isUnapproved_5530" = load %TName_Bool*, %TName_Bool** %isUnapproved + %"$$andb_135_call_5531" = call %TName_Bool* %"$$andb_135_fptr_5528"(i8* %"$$andb_135_envptr_5529", %TName_Bool* %"$isUnapproved_5530") + store %TName_Bool* %"$$andb_135_call_5531", %TName_Bool** %"$andb_136" + %"$$andb_136_5532" = load %TName_Bool*, %TName_Bool** %"$andb_136" + store %TName_Bool* %"$$andb_136_5532", %TName_Bool** %isOk + %"$gasrem_5533" = load i64, i64* @_gasrem + %"$gascmp_5534" = icmp ugt i64 2, %"$gasrem_5533" + br i1 %"$gascmp_5534", label %"$out_of_gas_5535", label %"$have_gas_5536" + +"$out_of_gas_5535": ; preds = %"$have_gas_5520" + call void @_out_of_gas() + br label %"$have_gas_5536" + +"$have_gas_5536": ; preds = %"$out_of_gas_5535", %"$have_gas_5520" + %"$consume_5537" = sub i64 %"$gasrem_5533", 2 + store i64 %"$consume_5537", i64* @_gasrem + %"$isOk_5539" = load %TName_Bool*, %TName_Bool** %isOk + %"$isOk_tag_5540" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isOk_5539", i32 0, i32 0 + %"$isOk_tag_5541" = load i8, i8* %"$isOk_tag_5540" + switch i8 %"$isOk_tag_5541", label %"$empty_default_5542" [ + i8 0, label %"$True_5543" + i8 1, label %"$False_5641" ] -"$True_3258": ; preds = %"$matchsucc_3208" - %"$isOk_3259" = bitcast %TName_Bool* %"$isOk_3254" to %CName_True* - %"$execptr_load_3260" = load i8*, i8** @_execptr - call void @_accept(i8* %"$execptr_load_3260") +"$True_5543": ; preds = %"$have_gas_5536" + %"$isOk_5544" = bitcast %TName_Bool* %"$isOk_5539" to %CName_True* + %"$gasrem_5545" = load i64, i64* @_gasrem + %"$gascmp_5546" = icmp ugt i64 1, %"$gasrem_5545" + br i1 %"$gascmp_5546", label %"$out_of_gas_5547", label %"$have_gas_5548" + +"$out_of_gas_5547": ; preds = %"$True_5543" + call void @_out_of_gas() + br label %"$have_gas_5548" + +"$have_gas_5548": ; preds = %"$out_of_gas_5547", %"$True_5543" + %"$consume_5549" = sub i64 %"$gasrem_5545", 1 + store i64 %"$consume_5549", i64* @_gasrem + %"$execptr_load_5550" = load i8*, i8** @_execptr + call void @_accept(i8* %"$execptr_load_5550") + %"$gasrem_5551" = load i64, i64* @_gasrem + %"$gascmp_5552" = icmp ugt i64 1, %"$gasrem_5551" + br i1 %"$gascmp_5552", label %"$out_of_gas_5553", label %"$have_gas_5554" + +"$out_of_gas_5553": ; preds = %"$have_gas_5548" + call void @_out_of_gas() + br label %"$have_gas_5554" + +"$have_gas_5554": ; preds = %"$out_of_gas_5553", %"$have_gas_5548" + %"$consume_5555" = sub i64 %"$gasrem_5551", 1 + store i64 %"$consume_5555", i64* @_gasrem %msgs = alloca %TName_List_Message* - %m = alloca i8* - %"$msgobj_3261_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_3261_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3261_salloc_load", i64 321) - %"$msgobj_3261_salloc" = bitcast i8* %"$msgobj_3261_salloc_salloc" to [321 x i8]* - %"$msgobj_3261" = bitcast [321 x i8]* %"$msgobj_3261_salloc" to i8* - store i8 7, i8* %"$msgobj_3261" - %"$msgobj_fname_3263" = getelementptr i8, i8* %"$msgobj_3261", i32 1 - %"$msgobj_fname_3264" = bitcast i8* %"$msgobj_fname_3263" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3262", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3264" - %"$msgobj_td_3265" = getelementptr i8, i8* %"$msgobj_3261", i32 17 - %"$msgobj_td_3266" = bitcast i8* %"$msgobj_td_3265" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_3266" - %"$msgobj_v_3268" = getelementptr i8, i8* %"$msgobj_3261", i32 25 - %"$msgobj_v_3269" = bitcast i8* %"$msgobj_v_3268" to %String* - store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_3267", i32 0, i32 0), i32 8 }, %String* %"$msgobj_v_3269" - %"$msgobj_fname_3271" = getelementptr i8, i8* %"$msgobj_3261", i32 41 - %"$msgobj_fname_3272" = bitcast i8* %"$msgobj_fname_3271" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3270", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3272" - %"$msgobj_td_3273" = getelementptr i8, i8* %"$msgobj_3261", i32 57 - %"$msgobj_td_3274" = bitcast i8* %"$msgobj_td_3273" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Uint128_289", %_TyDescrTy_Typ** %"$msgobj_td_3274" - %"$msgobj_v_3275" = getelementptr i8, i8* %"$msgobj_3261", i32 65 - %"$msgobj_v_3276" = bitcast i8* %"$msgobj_v_3275" to %Uint128* - store %Uint128 %_amount, %Uint128* %"$msgobj_v_3276" - %"$msgobj_fname_3278" = getelementptr i8, i8* %"$msgobj_3261", i32 81 - %"$msgobj_fname_3279" = bitcast i8* %"$msgobj_fname_3278" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3277", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3279" - %"$msgobj_td_3280" = getelementptr i8, i8* %"$msgobj_3261", i32 97 - %"$msgobj_td_3281" = bitcast i8* %"$msgobj_td_3280" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_3281" - %"$currentRegistrar_3282" = load [20 x i8], [20 x i8]* %currentRegistrar - %"$msgobj_v_3283" = getelementptr i8, i8* %"$msgobj_3261", i32 105 - %"$msgobj_v_3284" = bitcast i8* %"$msgobj_v_3283" to [20 x i8]* - store [20 x i8] %"$currentRegistrar_3282", [20 x i8]* %"$msgobj_v_3284" - %"$msgobj_fname_3286" = getelementptr i8, i8* %"$msgobj_3261", i32 125 - %"$msgobj_fname_3287" = bitcast i8* %"$msgobj_fname_3286" to %String* - store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_3285", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_3287" - %"$msgobj_td_3288" = getelementptr i8, i8* %"$msgobj_3261", i32 141 - %"$msgobj_td_3289" = bitcast i8* %"$msgobj_td_3288" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_311", %_TyDescrTy_Typ** %"$msgobj_td_3289" - %"$msgobj_v_3290" = getelementptr i8, i8* %"$msgobj_3261", i32 149 - %"$msgobj_v_3291" = bitcast i8* %"$msgobj_v_3290" to [20 x i8]* - store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_3291" - %"$msgobj_fname_3293" = getelementptr i8, i8* %"$msgobj_3261", i32 169 - %"$msgobj_fname_3294" = bitcast i8* %"$msgobj_fname_3293" to %String* - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3292", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3294" - %"$msgobj_td_3295" = getelementptr i8, i8* %"$msgobj_3261", i32 185 - %"$msgobj_td_3296" = bitcast i8* %"$msgobj_td_3295" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_309", %_TyDescrTy_Typ** %"$msgobj_td_3296" - %"$node_3297" = load [32 x i8], [32 x i8]* %node - %"$msgobj_v_3298" = getelementptr i8, i8* %"$msgobj_3261", i32 193 - %"$msgobj_v_3299" = bitcast i8* %"$msgobj_v_3298" to [32 x i8]* - store [32 x i8] %"$node_3297", [32 x i8]* %"$msgobj_v_3299" - %"$msgobj_fname_3301" = getelementptr i8, i8* %"$msgobj_3261", i32 225 - %"$msgobj_fname_3302" = bitcast i8* %"$msgobj_fname_3301" to %String* - store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_3300", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_3302" - %"$msgobj_td_3303" = getelementptr i8, i8* %"$msgobj_3261", i32 241 - %"$msgobj_td_3304" = bitcast i8* %"$msgobj_td_3303" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_309", %_TyDescrTy_Typ** %"$msgobj_td_3304" - %"$msgobj_v_3305" = getelementptr i8, i8* %"$msgobj_3261", i32 249 - %"$msgobj_v_3306" = bitcast i8* %"$msgobj_v_3305" to [32 x i8]* - store [32 x i8] %parent, [32 x i8]* %"$msgobj_v_3306" - %"$msgobj_fname_3308" = getelementptr i8, i8* %"$msgobj_3261", i32 281 - %"$msgobj_fname_3309" = bitcast i8* %"$msgobj_fname_3308" to %String* - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3307", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_3309" - %"$msgobj_td_3310" = getelementptr i8, i8* %"$msgobj_3261", i32 297 - %"$msgobj_td_3311" = bitcast i8* %"$msgobj_td_3310" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_295", %_TyDescrTy_Typ** %"$msgobj_td_3311" - %"$msgobj_v_3312" = getelementptr i8, i8* %"$msgobj_3261", i32 305 - %"$msgobj_v_3313" = bitcast i8* %"$msgobj_v_3312" to %String* - store %String %label, %String* %"$msgobj_v_3313" - store i8* %"$msgobj_3261", i8** %m - %"$oneMsg_137" = alloca %TName_List_Message* - %"$oneMsg_3315" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg - %"$oneMsg_fptr_3316" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_3315", 0 - %"$oneMsg_envptr_3317" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_3315", 1 - %"$m_3318" = load i8*, i8** %m - %"$oneMsg_call_3319" = call %TName_List_Message* %"$oneMsg_fptr_3316"(i8* %"$oneMsg_envptr_3317", i8* %"$m_3318") - store %TName_List_Message* %"$oneMsg_call_3319", %TName_List_Message** %"$oneMsg_137" - %"$$oneMsg_137_3320" = load %TName_List_Message*, %TName_List_Message** %"$oneMsg_137" - store %TName_List_Message* %"$$oneMsg_137_3320", %TName_List_Message** %msgs - %"$execptr_load_3321" = load i8*, i8** @_execptr - %"$msgs_3322" = load %TName_List_Message*, %TName_List_Message** %msgs - call void @_send(i8* %"$execptr_load_3321", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_319", %TName_List_Message* %"$msgs_3322") - br label %"$matchsucc_3253" + %"$gasrem_5556" = load i64, i64* @_gasrem + %"$gascmp_5557" = icmp ugt i64 1, %"$gasrem_5556" + br i1 %"$gascmp_5557", label %"$out_of_gas_5558", label %"$have_gas_5559" -"$False_3323": ; preds = %"$matchsucc_3208" - %"$isOk_3324" = bitcast %TName_Bool* %"$isOk_3254" to %CName_False* - br label %"$matchsucc_3253" - -"$empty_default_3257": ; preds = %"$matchsucc_3208" - br label %"$matchsucc_3253" +"$out_of_gas_5558": ; preds = %"$have_gas_5554" + call void @_out_of_gas() + br label %"$have_gas_5559" -"$matchsucc_3253": ; preds = %"$False_3323", %"$True_3258", %"$empty_default_3257" +"$have_gas_5559": ; preds = %"$out_of_gas_5558", %"$have_gas_5554" + %"$consume_5560" = sub i64 %"$gasrem_5556", 1 + store i64 %"$consume_5560", i64* @_gasrem + %m = alloca i8* + %"$gasrem_5561" = load i64, i64* @_gasrem + %"$gascmp_5562" = icmp ugt i64 1, %"$gasrem_5561" + br i1 %"$gascmp_5562", label %"$out_of_gas_5563", label %"$have_gas_5564" + +"$out_of_gas_5563": ; preds = %"$have_gas_5559" + call void @_out_of_gas() + br label %"$have_gas_5564" + +"$have_gas_5564": ; preds = %"$out_of_gas_5563", %"$have_gas_5559" + %"$consume_5565" = sub i64 %"$gasrem_5561", 1 + store i64 %"$consume_5565", i64* @_gasrem + %"$msgobj_5566_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_5566_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_5566_salloc_load", i64 321) + %"$msgobj_5566_salloc" = bitcast i8* %"$msgobj_5566_salloc_salloc" to [321 x i8]* + %"$msgobj_5566" = bitcast [321 x i8]* %"$msgobj_5566_salloc" to i8* + store i8 7, i8* %"$msgobj_5566" + %"$msgobj_fname_5568" = getelementptr i8, i8* %"$msgobj_5566", i32 1 + %"$msgobj_fname_5569" = bitcast i8* %"$msgobj_fname_5568" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_5567", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_5569" + %"$msgobj_td_5570" = getelementptr i8, i8* %"$msgobj_5566", i32 17 + %"$msgobj_td_5571" = bitcast i8* %"$msgobj_td_5570" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_5571" + %"$msgobj_v_5573" = getelementptr i8, i8* %"$msgobj_5566", i32 25 + %"$msgobj_v_5574" = bitcast i8* %"$msgobj_v_5573" to %String* + store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_5572", i32 0, i32 0), i32 8 }, %String* %"$msgobj_v_5574" + %"$msgobj_fname_5576" = getelementptr i8, i8* %"$msgobj_5566", i32 41 + %"$msgobj_fname_5577" = bitcast i8* %"$msgobj_fname_5576" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_5575", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_5577" + %"$msgobj_td_5578" = getelementptr i8, i8* %"$msgobj_5566", i32 57 + %"$msgobj_td_5579" = bitcast i8* %"$msgobj_td_5578" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_286", %_TyDescrTy_Typ** %"$msgobj_td_5579" + %"$msgobj_v_5580" = getelementptr i8, i8* %"$msgobj_5566", i32 65 + %"$msgobj_v_5581" = bitcast i8* %"$msgobj_v_5580" to %Uint128* + store %Uint128 %_amount, %Uint128* %"$msgobj_v_5581" + %"$msgobj_fname_5583" = getelementptr i8, i8* %"$msgobj_5566", i32 81 + %"$msgobj_fname_5584" = bitcast i8* %"$msgobj_fname_5583" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_5582", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_5584" + %"$msgobj_td_5585" = getelementptr i8, i8* %"$msgobj_5566", i32 97 + %"$msgobj_td_5586" = bitcast i8* %"$msgobj_td_5585" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_5586" + %"$currentRegistrar_5587" = load [20 x i8], [20 x i8]* %currentRegistrar + %"$msgobj_v_5588" = getelementptr i8, i8* %"$msgobj_5566", i32 105 + %"$msgobj_v_5589" = bitcast i8* %"$msgobj_v_5588" to [20 x i8]* + store [20 x i8] %"$currentRegistrar_5587", [20 x i8]* %"$msgobj_v_5589" + %"$msgobj_fname_5591" = getelementptr i8, i8* %"$msgobj_5566", i32 125 + %"$msgobj_fname_5592" = bitcast i8* %"$msgobj_fname_5591" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_5590", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_5592" + %"$msgobj_td_5593" = getelementptr i8, i8* %"$msgobj_5566", i32 141 + %"$msgobj_td_5594" = bitcast i8* %"$msgobj_td_5593" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_308", %_TyDescrTy_Typ** %"$msgobj_td_5594" + %"$msgobj_v_5595" = getelementptr i8, i8* %"$msgobj_5566", i32 149 + %"$msgobj_v_5596" = bitcast i8* %"$msgobj_v_5595" to [20 x i8]* + store [20 x i8] %_sender, [20 x i8]* %"$msgobj_v_5596" + %"$msgobj_fname_5598" = getelementptr i8, i8* %"$msgobj_5566", i32 169 + %"$msgobj_fname_5599" = bitcast i8* %"$msgobj_fname_5598" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_5597", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_5599" + %"$msgobj_td_5600" = getelementptr i8, i8* %"$msgobj_5566", i32 185 + %"$msgobj_td_5601" = bitcast i8* %"$msgobj_td_5600" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_306", %_TyDescrTy_Typ** %"$msgobj_td_5601" + %"$node_5602" = load [32 x i8], [32 x i8]* %node + %"$msgobj_v_5603" = getelementptr i8, i8* %"$msgobj_5566", i32 193 + %"$msgobj_v_5604" = bitcast i8* %"$msgobj_v_5603" to [32 x i8]* + store [32 x i8] %"$node_5602", [32 x i8]* %"$msgobj_v_5604" + %"$msgobj_fname_5606" = getelementptr i8, i8* %"$msgobj_5566", i32 225 + %"$msgobj_fname_5607" = bitcast i8* %"$msgobj_fname_5606" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_5605", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_5607" + %"$msgobj_td_5608" = getelementptr i8, i8* %"$msgobj_5566", i32 241 + %"$msgobj_td_5609" = bitcast i8* %"$msgobj_td_5608" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr32_306", %_TyDescrTy_Typ** %"$msgobj_td_5609" + %"$msgobj_v_5610" = getelementptr i8, i8* %"$msgobj_5566", i32 249 + %"$msgobj_v_5611" = bitcast i8* %"$msgobj_v_5610" to [32 x i8]* + store [32 x i8] %parent, [32 x i8]* %"$msgobj_v_5611" + %"$msgobj_fname_5613" = getelementptr i8, i8* %"$msgobj_5566", i32 281 + %"$msgobj_fname_5614" = bitcast i8* %"$msgobj_fname_5613" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_5612", i32 0, i32 0), i32 5 }, %String* %"$msgobj_fname_5614" + %"$msgobj_td_5615" = getelementptr i8, i8* %"$msgobj_5566", i32 297 + %"$msgobj_td_5616" = bitcast i8* %"$msgobj_td_5615" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_292", %_TyDescrTy_Typ** %"$msgobj_td_5616" + %"$msgobj_v_5617" = getelementptr i8, i8* %"$msgobj_5566", i32 305 + %"$msgobj_v_5618" = bitcast i8* %"$msgobj_v_5617" to %String* + store %String %label, %String* %"$msgobj_v_5618" + store i8* %"$msgobj_5566", i8** %m + %"$gasrem_5620" = load i64, i64* @_gasrem + %"$gascmp_5621" = icmp ugt i64 1, %"$gasrem_5620" + br i1 %"$gascmp_5621", label %"$out_of_gas_5622", label %"$have_gas_5623" + +"$out_of_gas_5622": ; preds = %"$have_gas_5564" + call void @_out_of_gas() + br label %"$have_gas_5623" + +"$have_gas_5623": ; preds = %"$out_of_gas_5622", %"$have_gas_5564" + %"$consume_5624" = sub i64 %"$gasrem_5620", 1 + store i64 %"$consume_5624", i64* @_gasrem + %"$oneMsg_134" = alloca %TName_List_Message* + %"$oneMsg_5625" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @oneMsg + %"$oneMsg_fptr_5626" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_5625", 0 + %"$oneMsg_envptr_5627" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$oneMsg_5625", 1 + %"$m_5628" = load i8*, i8** %m + %"$oneMsg_call_5629" = call %TName_List_Message* %"$oneMsg_fptr_5626"(i8* %"$oneMsg_envptr_5627", i8* %"$m_5628") + store %TName_List_Message* %"$oneMsg_call_5629", %TName_List_Message** %"$oneMsg_134" + %"$$oneMsg_134_5630" = load %TName_List_Message*, %TName_List_Message** %"$oneMsg_134" + store %TName_List_Message* %"$$oneMsg_134_5630", %TName_List_Message** %msgs + %"$msgs_5631" = load %TName_List_Message*, %TName_List_Message** %msgs + %"$$msgs_5631_5632" = bitcast %TName_List_Message* %"$msgs_5631" to i8* + %"$_literal_cost_call_5633" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_316", i8* %"$$msgs_5631_5632") + %"$gasrem_5634" = load i64, i64* @_gasrem + %"$gascmp_5635" = icmp ugt i64 %"$_literal_cost_call_5633", %"$gasrem_5634" + br i1 %"$gascmp_5635", label %"$out_of_gas_5636", label %"$have_gas_5637" + +"$out_of_gas_5636": ; preds = %"$have_gas_5623" + call void @_out_of_gas() + br label %"$have_gas_5637" + +"$have_gas_5637": ; preds = %"$out_of_gas_5636", %"$have_gas_5623" + %"$consume_5638" = sub i64 %"$gasrem_5634", %"$_literal_cost_call_5633" + store i64 %"$consume_5638", i64* @_gasrem + %"$execptr_load_5639" = load i8*, i8** @_execptr + %"$msgs_5640" = load %TName_List_Message*, %TName_List_Message** %msgs + call void @_send(i8* %"$execptr_load_5639", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_316", %TName_List_Message* %"$msgs_5640") + br label %"$matchsucc_5538" + +"$False_5641": ; preds = %"$have_gas_5536" + %"$isOk_5642" = bitcast %TName_Bool* %"$isOk_5539" to %CName_False* + br label %"$matchsucc_5538" + +"$empty_default_5542": ; preds = %"$have_gas_5536" + br label %"$matchsucc_5538" + +"$matchsucc_5538": ; preds = %"$False_5641", %"$have_gas_5637", %"$empty_default_5542" ret void } @@ -5571,158 +10390,253 @@ declare void @_accept(i8*) define void @register(i8* %0) { entry: - %"$_amount_3326" = getelementptr i8, i8* %0, i32 0 - %"$_amount_3327" = bitcast i8* %"$_amount_3326" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_3327" - %"$_sender_3328" = getelementptr i8, i8* %0, i32 16 - %"$_sender_3329" = bitcast i8* %"$_sender_3328" to [20 x i8]* - %"$parent_3330" = getelementptr i8, i8* %0, i32 36 - %"$parent_3331" = bitcast i8* %"$parent_3330" to [32 x i8]* - %"$label_3332" = getelementptr i8, i8* %0, i32 68 - %"$label_3333" = bitcast i8* %"$label_3332" to %String* - %label = load %String, %String* %"$label_3333" - call void @"$register_3173"(%Uint128 %_amount, [20 x i8]* %"$_sender_3329", [32 x i8]* %"$parent_3331", %String %label) + %"$_amount_5644" = getelementptr i8, i8* %0, i32 0 + %"$_amount_5645" = bitcast i8* %"$_amount_5644" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_5645" + %"$_sender_5646" = getelementptr i8, i8* %0, i32 16 + %"$_sender_5647" = bitcast i8* %"$_sender_5646" to [20 x i8]* + %"$parent_5648" = getelementptr i8, i8* %0, i32 36 + %"$parent_5649" = bitcast i8* %"$parent_5648" to [32 x i8]* + %"$label_5650" = getelementptr i8, i8* %0, i32 68 + %"$label_5651" = bitcast i8* %"$label_5650" to %String* + %label = load %String, %String* %"$label_5651" + call void @"$register_5363"(%Uint128 %_amount, [20 x i8]* %"$_sender_5647", [32 x i8]* %"$parent_5649", %String %label) ret void } -define internal void @"$onResolverConfigured_3334"(%Uint128 %_amount, [20 x i8]* %"$_sender_3335", [32 x i8]* %"$node_3336") { +define internal void @"$onResolverConfigured_5652"(%Uint128 %_amount, [20 x i8]* %"$_sender_5653", [32 x i8]* %"$node_5654") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_3335" - %node = load [32 x i8], [32 x i8]* %"$node_3336" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_5653" + %node = load [32 x i8], [32 x i8]* %"$node_5654" %maybeRecord = alloca %TName_Option_Record* - %"$indices_buf_3337_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_3337_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3337_salloc_load", i64 32) - %"$indices_buf_3337_salloc" = bitcast i8* %"$indices_buf_3337_salloc_salloc" to [32 x i8]* - %"$indices_buf_3337" = bitcast [32 x i8]* %"$indices_buf_3337_salloc" to i8* - %"$indices_gep_3338" = getelementptr i8, i8* %"$indices_buf_3337", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_3338" to [32 x i8]* + %"$indices_buf_5655_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_5655_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_5655_salloc_load", i64 32) + %"$indices_buf_5655_salloc" = bitcast i8* %"$indices_buf_5655_salloc_salloc" to [32 x i8]* + %"$indices_buf_5655" = bitcast [32 x i8]* %"$indices_buf_5655_salloc" to i8* + %"$indices_gep_5656" = getelementptr i8, i8* %"$indices_buf_5655", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_5656" to [32 x i8]* store [32 x i8] %node, [32 x i8]* %indices_cast - %"$execptr_load_3339" = load i8*, i8** @_execptr - %"$maybeRecord_3341" = call i8* @_fetch_field(i8* %"$execptr_load_3339", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_3340", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_325", i32 1, i8* %"$indices_buf_3337", i32 1) - %"$maybeRecord_3342" = bitcast i8* %"$maybeRecord_3341" to %TName_Option_Record* - store %TName_Option_Record* %"$maybeRecord_3342", %TName_Option_Record** %maybeRecord - %"$maybeRecord_3344" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord - %"$maybeRecord_tag_3345" = getelementptr inbounds %TName_Option_Record, %TName_Option_Record* %"$maybeRecord_3344", i32 0, i32 0 - %"$maybeRecord_tag_3346" = load i8, i8* %"$maybeRecord_tag_3345" - switch i8 %"$maybeRecord_tag_3346", label %"$empty_default_3347" [ - i8 1, label %"$None_3348" - i8 0, label %"$Some_3350" + %"$execptr_load_5657" = load i8*, i8** @_execptr + %"$maybeRecord_5659" = call i8* @_fetch_field(i8* %"$execptr_load_5657", i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$records_5658", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_322", i32 1, i8* %"$indices_buf_5655", i32 1) + %"$maybeRecord_5660" = bitcast i8* %"$maybeRecord_5659" to %TName_Option_Record* + store %TName_Option_Record* %"$maybeRecord_5660", %TName_Option_Record** %maybeRecord + %"$maybeRecord_5661" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord + %"$$maybeRecord_5661_5662" = bitcast %TName_Option_Record* %"$maybeRecord_5661" to i8* + %"$_literal_cost_call_5663" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Record_313", i8* %"$$maybeRecord_5661_5662") + %"$gasadd_5664" = add i64 %"$_literal_cost_call_5663", 0 + %"$gasadd_5665" = add i64 %"$gasadd_5664", 1 + %"$gasrem_5666" = load i64, i64* @_gasrem + %"$gascmp_5667" = icmp ugt i64 %"$gasadd_5665", %"$gasrem_5666" + br i1 %"$gascmp_5667", label %"$out_of_gas_5668", label %"$have_gas_5669" + +"$out_of_gas_5668": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_5669" + +"$have_gas_5669": ; preds = %"$out_of_gas_5668", %entry + %"$consume_5670" = sub i64 %"$gasrem_5666", %"$gasadd_5665" + store i64 %"$consume_5670", i64* @_gasrem + %"$gasrem_5671" = load i64, i64* @_gasrem + %"$gascmp_5672" = icmp ugt i64 2, %"$gasrem_5671" + br i1 %"$gascmp_5672", label %"$out_of_gas_5673", label %"$have_gas_5674" + +"$out_of_gas_5673": ; preds = %"$have_gas_5669" + call void @_out_of_gas() + br label %"$have_gas_5674" + +"$have_gas_5674": ; preds = %"$out_of_gas_5673", %"$have_gas_5669" + %"$consume_5675" = sub i64 %"$gasrem_5671", 2 + store i64 %"$consume_5675", i64* @_gasrem + %"$maybeRecord_5677" = load %TName_Option_Record*, %TName_Option_Record** %maybeRecord + %"$maybeRecord_tag_5678" = getelementptr inbounds %TName_Option_Record, %TName_Option_Record* %"$maybeRecord_5677", i32 0, i32 0 + %"$maybeRecord_tag_5679" = load i8, i8* %"$maybeRecord_tag_5678" + switch i8 %"$maybeRecord_tag_5679", label %"$empty_default_5680" [ + i8 1, label %"$None_5681" + i8 0, label %"$Some_5683" ] -"$None_3348": ; preds = %entry - %"$maybeRecord_3349" = bitcast %TName_Option_Record* %"$maybeRecord_3344" to %CName_None_Record* - br label %"$matchsucc_3343" +"$None_5681": ; preds = %"$have_gas_5674" + %"$maybeRecord_5682" = bitcast %TName_Option_Record* %"$maybeRecord_5677" to %CName_None_Record* + br label %"$matchsucc_5676" -"$Some_3350": ; preds = %entry - %"$maybeRecord_3351" = bitcast %TName_Option_Record* %"$maybeRecord_3344" to %CName_Some_Record* - %"$record_gep_3352" = getelementptr inbounds %CName_Some_Record, %CName_Some_Record* %"$maybeRecord_3351", i32 0, i32 1 - %"$record_load_3353" = load %TName_Record*, %TName_Record** %"$record_gep_3352" +"$Some_5683": ; preds = %"$have_gas_5674" + %"$maybeRecord_5684" = bitcast %TName_Option_Record* %"$maybeRecord_5677" to %CName_Some_Record* + %"$record_gep_5685" = getelementptr inbounds %CName_Some_Record, %CName_Some_Record* %"$maybeRecord_5684", i32 0, i32 1 + %"$record_load_5686" = load %TName_Record*, %TName_Record** %"$record_gep_5685" %record = alloca %TName_Record* - store %TName_Record* %"$record_load_3353", %TName_Record** %record - %"$record_3355" = load %TName_Record*, %TName_Record** %record - %"$record_tag_3356" = getelementptr inbounds %TName_Record, %TName_Record* %"$record_3355", i32 0, i32 0 - %"$record_tag_3357" = load i8, i8* %"$record_tag_3356" - switch i8 %"$record_tag_3357", label %"$empty_default_3358" [ - i8 0, label %"$Record_3359" + store %TName_Record* %"$record_load_5686", %TName_Record** %record + %"$gasrem_5687" = load i64, i64* @_gasrem + %"$gascmp_5688" = icmp ugt i64 1, %"$gasrem_5687" + br i1 %"$gascmp_5688", label %"$out_of_gas_5689", label %"$have_gas_5690" + +"$out_of_gas_5689": ; preds = %"$Some_5683" + call void @_out_of_gas() + br label %"$have_gas_5690" + +"$have_gas_5690": ; preds = %"$out_of_gas_5689", %"$Some_5683" + %"$consume_5691" = sub i64 %"$gasrem_5687", 1 + store i64 %"$consume_5691", i64* @_gasrem + %"$record_5693" = load %TName_Record*, %TName_Record** %record + %"$record_tag_5694" = getelementptr inbounds %TName_Record, %TName_Record* %"$record_5693", i32 0, i32 0 + %"$record_tag_5695" = load i8, i8* %"$record_tag_5694" + switch i8 %"$record_tag_5695", label %"$empty_default_5696" [ + i8 0, label %"$Record_5697" ] -"$Record_3359": ; preds = %"$Some_3350" - %"$record_3360" = bitcast %TName_Record* %"$record_3355" to %CName_Record* - %"$owner_gep_3361" = getelementptr inbounds %CName_Record, %CName_Record* %"$record_3360", i32 0, i32 1 - %"$owner_load_3362" = load [20 x i8], [20 x i8]* %"$owner_gep_3361" +"$Record_5697": ; preds = %"$have_gas_5690" + %"$record_5698" = bitcast %TName_Record* %"$record_5693" to %CName_Record* + %"$owner_gep_5699" = getelementptr inbounds %CName_Record, %CName_Record* %"$record_5698", i32 0, i32 1 + %"$owner_load_5700" = load [20 x i8], [20 x i8]* %"$owner_gep_5699" %owner = alloca [20 x i8] - store [20 x i8] %"$owner_load_3362", [20 x i8]* %owner - %"$resolver_gep_3363" = getelementptr inbounds %CName_Record, %CName_Record* %"$record_3360", i32 0, i32 2 - %"$resolver_load_3364" = load [20 x i8], [20 x i8]* %"$resolver_gep_3363" + store [20 x i8] %"$owner_load_5700", [20 x i8]* %owner + %"$resolver_gep_5701" = getelementptr inbounds %CName_Record, %CName_Record* %"$record_5698", i32 0, i32 2 + %"$resolver_load_5702" = load [20 x i8], [20 x i8]* %"$resolver_gep_5701" %resolver = alloca [20 x i8] - store [20 x i8] %"$resolver_load_3364", [20 x i8]* %resolver + store [20 x i8] %"$resolver_load_5702", [20 x i8]* %resolver + %"$gasrem_5703" = load i64, i64* @_gasrem + %"$gascmp_5704" = icmp ugt i64 1, %"$gasrem_5703" + br i1 %"$gascmp_5704", label %"$out_of_gas_5705", label %"$have_gas_5706" + +"$out_of_gas_5705": ; preds = %"$Record_5697" + call void @_out_of_gas() + br label %"$have_gas_5706" + +"$have_gas_5706": ; preds = %"$out_of_gas_5705", %"$Record_5697" + %"$consume_5707" = sub i64 %"$gasrem_5703", 1 + store i64 %"$consume_5707", i64* @_gasrem %isOk = alloca %TName_Bool* - %"$execptr_load_3365" = load i8*, i8** @_execptr - %"$eq_resolver_3366" = alloca [20 x i8] - %"$resolver_3367" = load [20 x i8], [20 x i8]* %resolver - store [20 x i8] %"$resolver_3367", [20 x i8]* %"$eq_resolver_3366" - %"$$eq_resolver_3366_3368" = bitcast [20 x i8]* %"$eq_resolver_3366" to i8* - %"$eq__sender_3369" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$eq__sender_3369" - %"$$eq__sender_3369_3370" = bitcast [20 x i8]* %"$eq__sender_3369" to i8* - %"$eq_call_3371" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_3365", i32 20, i8* %"$$eq_resolver_3366_3368", i8* %"$$eq__sender_3369_3370") - store %TName_Bool* %"$eq_call_3371", %TName_Bool** %isOk - %"$isOk_3373" = load %TName_Bool*, %TName_Bool** %isOk - %"$isOk_tag_3374" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isOk_3373", i32 0, i32 0 - %"$isOk_tag_3375" = load i8, i8* %"$isOk_tag_3374" - switch i8 %"$isOk_tag_3375", label %"$empty_default_3376" [ - i8 0, label %"$True_3377" - i8 1, label %"$False_3399" + %"$execptr_load_5708" = load i8*, i8** @_execptr + %"$eq_resolver_5709" = alloca [20 x i8] + %"$resolver_5710" = load [20 x i8], [20 x i8]* %resolver + store [20 x i8] %"$resolver_5710", [20 x i8]* %"$eq_resolver_5709" + %"$$eq_resolver_5709_5711" = bitcast [20 x i8]* %"$eq_resolver_5709" to i8* + %"$eq__sender_5712" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$eq__sender_5712" + %"$$eq__sender_5712_5713" = bitcast [20 x i8]* %"$eq__sender_5712" to i8* + %"$eq_call_5714" = call %TName_Bool* @_eq_ByStrX(i8* %"$execptr_load_5708", i32 20, i8* %"$$eq_resolver_5709_5711", i8* %"$$eq__sender_5712_5713") + store %TName_Bool* %"$eq_call_5714", %TName_Bool** %isOk + %"$gasrem_5715" = load i64, i64* @_gasrem + %"$gascmp_5716" = icmp ugt i64 2, %"$gasrem_5715" + br i1 %"$gascmp_5716", label %"$out_of_gas_5717", label %"$have_gas_5718" + +"$out_of_gas_5717": ; preds = %"$have_gas_5706" + call void @_out_of_gas() + br label %"$have_gas_5718" + +"$have_gas_5718": ; preds = %"$out_of_gas_5717", %"$have_gas_5706" + %"$consume_5719" = sub i64 %"$gasrem_5715", 2 + store i64 %"$consume_5719", i64* @_gasrem + %"$isOk_5721" = load %TName_Bool*, %TName_Bool** %isOk + %"$isOk_tag_5722" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$isOk_5721", i32 0, i32 0 + %"$isOk_tag_5723" = load i8, i8* %"$isOk_tag_5722" + switch i8 %"$isOk_tag_5723", label %"$empty_default_5724" [ + i8 0, label %"$True_5725" + i8 1, label %"$False_5765" ] -"$True_3377": ; preds = %"$Record_3359" - %"$isOk_3378" = bitcast %TName_Bool* %"$isOk_3373" to %CName_True* +"$True_5725": ; preds = %"$have_gas_5718" + %"$isOk_5726" = bitcast %TName_Bool* %"$isOk_5721" to %CName_True* + %"$gasrem_5727" = load i64, i64* @_gasrem + %"$gascmp_5728" = icmp ugt i64 1, %"$gasrem_5727" + br i1 %"$gascmp_5728", label %"$out_of_gas_5729", label %"$have_gas_5730" + +"$out_of_gas_5729": ; preds = %"$True_5725" + call void @_out_of_gas() + br label %"$have_gas_5730" + +"$have_gas_5730": ; preds = %"$out_of_gas_5729", %"$True_5725" + %"$consume_5731" = sub i64 %"$gasrem_5727", 1 + store i64 %"$consume_5731", i64* @_gasrem %e = alloca i8* - %"$eConfigured_143" = alloca { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } - %"$eConfigured_3379" = load { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eConfigured - %"$eConfigured_fptr_3380" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_3379", 0 - %"$eConfigured_envptr_3381" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_3379", 1 - %"$eConfigured_node_3382" = alloca [32 x i8] - store [32 x i8] %node, [32 x i8]* %"$eConfigured_node_3382" - %"$eConfigured_call_3383" = call { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_fptr_3380"(i8* %"$eConfigured_envptr_3381", [32 x i8]* %"$eConfigured_node_3382") - store { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_call_3383", { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_143" - %"$eConfigured_144" = alloca { i8* (i8*, [20 x i8]*)*, i8* } - %"$$eConfigured_143_3384" = load { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_143" - %"$$eConfigured_143_fptr_3385" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_143_3384", 0 - %"$$eConfigured_143_envptr_3386" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_143_3384", 1 - %"$$eConfigured_143_owner_3387" = alloca [20 x i8] - %"$owner_3388" = load [20 x i8], [20 x i8]* %owner - store [20 x i8] %"$owner_3388", [20 x i8]* %"$$eConfigured_143_owner_3387" - %"$$eConfigured_143_call_3389" = call { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_143_fptr_3385"(i8* %"$$eConfigured_143_envptr_3386", [20 x i8]* %"$$eConfigured_143_owner_3387") - store { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_143_call_3389", { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_144" - %"$eConfigured_145" = alloca i8* - %"$$eConfigured_144_3390" = load { i8* (i8*, [20 x i8]*)*, i8* }, { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_144" - %"$$eConfigured_144_fptr_3391" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_144_3390", 0 - %"$$eConfigured_144_envptr_3392" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_144_3390", 1 - %"$$eConfigured_144_resolver_3393" = alloca [20 x i8] - %"$resolver_3394" = load [20 x i8], [20 x i8]* %resolver - store [20 x i8] %"$resolver_3394", [20 x i8]* %"$$eConfigured_144_resolver_3393" - %"$$eConfigured_144_call_3395" = call i8* %"$$eConfigured_144_fptr_3391"(i8* %"$$eConfigured_144_envptr_3392", [20 x i8]* %"$$eConfigured_144_resolver_3393") - store i8* %"$$eConfigured_144_call_3395", i8** %"$eConfigured_145" - %"$$eConfigured_145_3396" = load i8*, i8** %"$eConfigured_145" - store i8* %"$$eConfigured_145_3396", i8** %e - %"$execptr_load_3397" = load i8*, i8** @_execptr - %"$e_3398" = load i8*, i8** %e - call void @_event(i8* %"$execptr_load_3397", %_TyDescrTy_Typ* @"$TyDescr_Event_301", i8* %"$e_3398") - br label %"$matchsucc_3372" - -"$False_3399": ; preds = %"$Record_3359" - %"$isOk_3400" = bitcast %TName_Bool* %"$isOk_3373" to %CName_False* - br label %"$matchsucc_3372" - -"$empty_default_3376": ; preds = %"$Record_3359" - br label %"$matchsucc_3372" - -"$matchsucc_3372": ; preds = %"$False_3399", %"$True_3377", %"$empty_default_3376" - br label %"$matchsucc_3354" - -"$empty_default_3358": ; preds = %"$Some_3350" - br label %"$matchsucc_3354" - -"$matchsucc_3354": ; preds = %"$matchsucc_3372", %"$empty_default_3358" - br label %"$matchsucc_3343" - -"$empty_default_3347": ; preds = %entry - br label %"$matchsucc_3343" - -"$matchsucc_3343": ; preds = %"$matchsucc_3354", %"$None_3348", %"$empty_default_3347" + %"$gasrem_5732" = load i64, i64* @_gasrem + %"$gascmp_5733" = icmp ugt i64 1, %"$gasrem_5732" + br i1 %"$gascmp_5733", label %"$out_of_gas_5734", label %"$have_gas_5735" + +"$out_of_gas_5734": ; preds = %"$have_gas_5730" + call void @_out_of_gas() + br label %"$have_gas_5735" + +"$have_gas_5735": ; preds = %"$out_of_gas_5734", %"$have_gas_5730" + %"$consume_5736" = sub i64 %"$gasrem_5732", 1 + store i64 %"$consume_5736", i64* @_gasrem + %"$eConfigured_140" = alloca { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } + %"$eConfigured_5737" = load { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }, { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* }* @eConfigured + %"$eConfigured_fptr_5738" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_5737", 0 + %"$eConfigured_envptr_5739" = extractvalue { { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } (i8*, [32 x i8]*)*, i8* } %"$eConfigured_5737", 1 + %"$eConfigured_node_5740" = alloca [32 x i8] + store [32 x i8] %node, [32 x i8]* %"$eConfigured_node_5740" + %"$eConfigured_call_5741" = call { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_fptr_5738"(i8* %"$eConfigured_envptr_5739", [32 x i8]* %"$eConfigured_node_5740") + store { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$eConfigured_call_5741", { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_140" + %"$eConfigured_141" = alloca { i8* (i8*, [20 x i8]*)*, i8* } + %"$$eConfigured_140_5742" = load { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }, { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_140" + %"$$eConfigured_140_fptr_5743" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_140_5742", 0 + %"$$eConfigured_140_envptr_5744" = extractvalue { { i8* (i8*, [20 x i8]*)*, i8* } (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_140_5742", 1 + %"$$eConfigured_140_owner_5745" = alloca [20 x i8] + %"$owner_5746" = load [20 x i8], [20 x i8]* %owner + store [20 x i8] %"$owner_5746", [20 x i8]* %"$$eConfigured_140_owner_5745" + %"$$eConfigured_140_call_5747" = call { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_140_fptr_5743"(i8* %"$$eConfigured_140_envptr_5744", [20 x i8]* %"$$eConfigured_140_owner_5745") + store { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_140_call_5747", { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_141" + %"$eConfigured_142" = alloca i8* + %"$$eConfigured_141_5748" = load { i8* (i8*, [20 x i8]*)*, i8* }, { i8* (i8*, [20 x i8]*)*, i8* }* %"$eConfigured_141" + %"$$eConfigured_141_fptr_5749" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_141_5748", 0 + %"$$eConfigured_141_envptr_5750" = extractvalue { i8* (i8*, [20 x i8]*)*, i8* } %"$$eConfigured_141_5748", 1 + %"$$eConfigured_141_resolver_5751" = alloca [20 x i8] + %"$resolver_5752" = load [20 x i8], [20 x i8]* %resolver + store [20 x i8] %"$resolver_5752", [20 x i8]* %"$$eConfigured_141_resolver_5751" + %"$$eConfigured_141_call_5753" = call i8* %"$$eConfigured_141_fptr_5749"(i8* %"$$eConfigured_141_envptr_5750", [20 x i8]* %"$$eConfigured_141_resolver_5751") + store i8* %"$$eConfigured_141_call_5753", i8** %"$eConfigured_142" + %"$$eConfigured_142_5754" = load i8*, i8** %"$eConfigured_142" + store i8* %"$$eConfigured_142_5754", i8** %e + %"$e_5755" = load i8*, i8** %e + %"$_literal_cost_call_5757" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_5755") + %"$gasrem_5758" = load i64, i64* @_gasrem + %"$gascmp_5759" = icmp ugt i64 %"$_literal_cost_call_5757", %"$gasrem_5758" + br i1 %"$gascmp_5759", label %"$out_of_gas_5760", label %"$have_gas_5761" + +"$out_of_gas_5760": ; preds = %"$have_gas_5735" + call void @_out_of_gas() + br label %"$have_gas_5761" + +"$have_gas_5761": ; preds = %"$out_of_gas_5760", %"$have_gas_5735" + %"$consume_5762" = sub i64 %"$gasrem_5758", %"$_literal_cost_call_5757" + store i64 %"$consume_5762", i64* @_gasrem + %"$execptr_load_5763" = load i8*, i8** @_execptr + %"$e_5764" = load i8*, i8** %e + call void @_event(i8* %"$execptr_load_5763", %_TyDescrTy_Typ* @"$TyDescr_Event_298", i8* %"$e_5764") + br label %"$matchsucc_5720" + +"$False_5765": ; preds = %"$have_gas_5718" + %"$isOk_5766" = bitcast %TName_Bool* %"$isOk_5721" to %CName_False* + br label %"$matchsucc_5720" + +"$empty_default_5724": ; preds = %"$have_gas_5718" + br label %"$matchsucc_5720" + +"$matchsucc_5720": ; preds = %"$False_5765", %"$have_gas_5761", %"$empty_default_5724" + br label %"$matchsucc_5692" + +"$empty_default_5696": ; preds = %"$have_gas_5690" + br label %"$matchsucc_5692" + +"$matchsucc_5692": ; preds = %"$matchsucc_5720", %"$empty_default_5696" + br label %"$matchsucc_5676" + +"$empty_default_5680": ; preds = %"$have_gas_5674" + br label %"$matchsucc_5676" + +"$matchsucc_5676": ; preds = %"$matchsucc_5692", %"$None_5681", %"$empty_default_5680" ret void } define void @onResolverConfigured(i8* %0) { entry: - %"$_amount_3402" = getelementptr i8, i8* %0, i32 0 - %"$_amount_3403" = bitcast i8* %"$_amount_3402" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_3403" - %"$_sender_3404" = getelementptr i8, i8* %0, i32 16 - %"$_sender_3405" = bitcast i8* %"$_sender_3404" to [20 x i8]* - %"$node_3406" = getelementptr i8, i8* %0, i32 36 - %"$node_3407" = bitcast i8* %"$node_3406" to [32 x i8]* - call void @"$onResolverConfigured_3334"(%Uint128 %_amount, [20 x i8]* %"$_sender_3405", [32 x i8]* %"$node_3407") + %"$_amount_5768" = getelementptr i8, i8* %0, i32 0 + %"$_amount_5769" = bitcast i8* %"$_amount_5768" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_5769" + %"$_sender_5770" = getelementptr i8, i8* %0, i32 16 + %"$_sender_5771" = bitcast i8* %"$_sender_5770" to [20 x i8]* + %"$node_5772" = getelementptr i8, i8* %0, i32 36 + %"$node_5773" = bitcast i8* %"$node_5772" to [32 x i8]* + call void @"$onResolverConfigured_5652"(%Uint128 %_amount, [20 x i8]* %"$_sender_5771", [32 x i8]* %"$node_5773") ret void } diff --git a/testsuite/contr/ud-registry.output_bestow.json b/testsuite/contr/ud-registry.output_bestow.json index 62fd06bb..458d1537 100644 --- a/testsuite/contr/ud-registry.output_bestow.json +++ b/testsuite/contr/ud-registry.output_bestow.json @@ -37,7 +37,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999465", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/ud-registry.output_setAdmin.json b/testsuite/contr/ud-registry.output_setAdmin.json index 3147af1c..962c68b9 100644 --- a/testsuite/contr/ud-registry.output_setAdmin.json +++ b/testsuite/contr/ud-registry.output_setAdmin.json @@ -21,7 +21,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999684", "messages" : [], "scilla_major_version" : "0" } diff --git a/testsuite/contr/ud-registry.output_setRegistrar.json b/testsuite/contr/ud-registry.output_setRegistrar.json index 921ab285..594003fa 100644 --- a/testsuite/contr/ud-registry.output_setRegistrar.json +++ b/testsuite/contr/ud-registry.output_setRegistrar.json @@ -12,7 +12,7 @@ ] } ], - "gas_remaining" : "10000000", + "gas_remaining" : "9999799", "messages" : [], "scilla_major_version" : "0" } From a39ab815132609982d744605bd10f1697d6035c2 Mon Sep 17 00:00:00 2001 From: Vaivaswatha Nagaraj Date: Mon, 19 Oct 2020 11:43:42 +0530 Subject: [PATCH 3/3] Test input update after update in compiler --- testsuite/contr/map_corners_test.ll | 12996 +++++++++++++------------- testsuite/contr/throw.ll | 130 +- 2 files changed, 6589 insertions(+), 6537 deletions(-) diff --git a/testsuite/contr/map_corners_test.ll b/testsuite/contr/map_corners_test.ll index f7a16aee..d2440325 100644 --- a/testsuite/contr/map_corners_test.ll +++ b/testsuite/contr/map_corners_test.ll @@ -130,180 +130,180 @@ target triple = "x86_64-pc-linux-gnu" @"$stringlit_241" = unnamed_addr constant [10 x i8] c"_exception" @"$stringlit_246" = unnamed_addr constant [11 x i8] c"Test Failed" @"$stringlit_249" = unnamed_addr constant [9 x i8] c"test_name" -@"$stringlit_272" = unnamed_addr constant [10 x i8] c"_exception" -@"$stringlit_277" = unnamed_addr constant [11 x i8] c"Test Failed" -@"$stringlit_280" = unnamed_addr constant [9 x i8] c"test_name" -@"$stringlit_287" = unnamed_addr constant [7 x i8] c"message" -@"$stringlit_309" = unnamed_addr constant [2 x i8] c"t1" -@"$f_s1_311" = unnamed_addr constant [5 x i8] c"f_s1\00" -@"$stringlit_335" = unnamed_addr constant [3 x i8] c"420" -@"$stringlit_376" = unnamed_addr constant [3 x i8] c"421" -@"$f_s1_387" = unnamed_addr constant [5 x i8] c"f_s1\00" -@"$stringlit_408" = unnamed_addr constant [2 x i8] c"t2" -@"$f_s1_410" = unnamed_addr constant [5 x i8] c"f_s1\00" -@"$stringlit_434" = unnamed_addr constant [3 x i8] c"421" -@"$stringlit_475" = unnamed_addr constant [4 x i8] c"key1" -@"$stringlit_486" = unnamed_addr constant [3 x i8] c"420" -@"$f_m1_501" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_522" = unnamed_addr constant [2 x i8] c"t3" -@"$stringlit_533" = unnamed_addr constant [3 x i8] c"420" -@"$stringlit_544" = unnamed_addr constant [4 x i8] c"key1" -@"$f_m1_549" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_607" = unnamed_addr constant [23 x i8] c"Incorrect value for key" -@"$stringlit_637" = unnamed_addr constant [4 x i8] c"key2" -@"$f_m1_642" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_679" = unnamed_addr constant [25 x i8] c"Rogue value found for key" -@"$f_m1_699" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_717" = unnamed_addr constant [2 x i8] c"t4" -@"$stringlit_728" = unnamed_addr constant [4 x i8] c"key1" -@"$f_m1_733" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_777" = unnamed_addr constant [5 x i8] c"key1a" -@"$stringlit_788" = unnamed_addr constant [5 x i8] c"key2a" -@"$stringlit_799" = unnamed_addr constant [3 x i8] c"420" -@"$f_m2_816" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_837" = unnamed_addr constant [2 x i8] c"t5" -@"$stringlit_848" = unnamed_addr constant [3 x i8] c"420" -@"$stringlit_859" = unnamed_addr constant [5 x i8] c"key1a" -@"$stringlit_870" = unnamed_addr constant [5 x i8] c"key2a" -@"$f_m2_877" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_937" = unnamed_addr constant [23 x i8] c"Incorrect value fetched" -@"$stringlit_983" = unnamed_addr constant [5 x i8] c"key2b" -@"$stringlit_994" = unnamed_addr constant [3 x i8] c"840" -@"$stringlit_1021" = unnamed_addr constant [5 x i8] c"key2c" -@"$stringlit_1032" = unnamed_addr constant [3 x i8] c"841" -@"$stringlit_1054" = unnamed_addr constant [5 x i8] c"key1b" -@"$f_m2_1068" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_1088" = unnamed_addr constant [2 x i8] c"t6" -@"$stringlit_1099" = unnamed_addr constant [5 x i8] c"key1a" -@"$stringlit_1110" = unnamed_addr constant [5 x i8] c"key2a" -@"$f_m2_1117" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_1154" = unnamed_addr constant [3 x i8] c"420" -@"$stringlit_1188" = unnamed_addr constant [31 x i8] c"Incorrect value for key1a,key2a" -@"$stringlit_1209" = unnamed_addr constant [21 x i8] c"key1a,key2a not found" -@"$stringlit_1228" = unnamed_addr constant [5 x i8] c"key1b" -@"$stringlit_1239" = unnamed_addr constant [5 x i8] c"key2b" -@"$f_m2_1246" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_1283" = unnamed_addr constant [3 x i8] c"840" -@"$stringlit_1317" = unnamed_addr constant [31 x i8] c"Incorrect value for key1b,key2b" -@"$stringlit_1338" = unnamed_addr constant [21 x i8] c"key1b,key2b not found" -@"$stringlit_1357" = unnamed_addr constant [5 x i8] c"key1b" -@"$stringlit_1368" = unnamed_addr constant [5 x i8] c"key2c" -@"$f_m2_1375" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_1412" = unnamed_addr constant [3 x i8] c"841" -@"$stringlit_1446" = unnamed_addr constant [31 x i8] c"Incorrect value for key1b,key2c" -@"$stringlit_1467" = unnamed_addr constant [21 x i8] c"key1b,key2c not found" -@"$f_m2_1485" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_1503" = unnamed_addr constant [2 x i8] c"t7" -@"$stringlit_1514" = unnamed_addr constant [5 x i8] c"key1a" -@"$stringlit_1525" = unnamed_addr constant [5 x i8] c"key2a" -@"$f_m2_1532" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_1569" = unnamed_addr constant [3 x i8] c"420" -@"$stringlit_1603" = unnamed_addr constant [31 x i8] c"Incorrect value for key1a,key2a" -@"$stringlit_1624" = unnamed_addr constant [21 x i8] c"key1a,key2a not found" -@"$stringlit_1643" = unnamed_addr constant [5 x i8] c"key1b" -@"$f_m2_1648" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_1685" = unnamed_addr constant [36 x i8] c"Fail: deleted value for key1b found!" -@"$stringlit_1706" = unnamed_addr constant [5 x i8] c"key1b" -@"$stringlit_1717" = unnamed_addr constant [5 x i8] c"key2b" -@"$f_m2_1724" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_1761" = unnamed_addr constant [42 x i8] c"Fail: deleted value for key1b,key2b found!" -@"$stringlit_1782" = unnamed_addr constant [5 x i8] c"key1b" -@"$stringlit_1793" = unnamed_addr constant [5 x i8] c"key2d" -@"$f_m2_1800" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_1837" = unnamed_addr constant [42 x i8] c"Fail: deleted value for key1b,key2d found!" -@"$stringlit_1858" = unnamed_addr constant [5 x i8] c"key1b" -@"$stringlit_1869" = unnamed_addr constant [5 x i8] c"key2c" -@"$stringlit_1880" = unnamed_addr constant [3 x i8] c"121" -@"$f_m2_1897" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_1918" = unnamed_addr constant [2 x i8] c"t8" -@"$stringlit_1929" = unnamed_addr constant [5 x i8] c"key1a" -@"$stringlit_1940" = unnamed_addr constant [5 x i8] c"key2a" -@"$f_m2_1947" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_1984" = unnamed_addr constant [3 x i8] c"420" -@"$stringlit_2018" = unnamed_addr constant [31 x i8] c"Incorrect value for key1a,key2a" -@"$stringlit_2039" = unnamed_addr constant [21 x i8] c"key1a,key2a not found" -@"$stringlit_2058" = unnamed_addr constant [5 x i8] c"key1b" -@"$stringlit_2069" = unnamed_addr constant [5 x i8] c"key2c" -@"$f_m2_2076" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_2113" = unnamed_addr constant [3 x i8] c"121" -@"$stringlit_2147" = unnamed_addr constant [31 x i8] c"Incorrect value for key1b,key2c" -@"$stringlit_2168" = unnamed_addr constant [21 x i8] c"key1b,key2c not found" -@"$f_m1_2199" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_2219" = unnamed_addr constant [2 x i8] c"t9" -@"$f_m1_2221" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_2294" = unnamed_addr constant [5 x i8] c"key1a" -@"$stringlit_2305" = unnamed_addr constant [3 x i8] c"420" -@"$f_m1_2331" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_2351" = unnamed_addr constant [3 x i8] c"t10" -@"$stringlit_2362" = unnamed_addr constant [5 x i8] c"key1a" -@"$f_m1_2364" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_2416" = unnamed_addr constant [3 x i8] c"420" -@"$stringlit_2450" = unnamed_addr constant [25 x i8] c"Incorrect value for key1a" -@"$stringlit_2471" = unnamed_addr constant [15 x i8] c"key1a not found" -@"$f_m1_2489" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_2507" = unnamed_addr constant [3 x i8] c"t11" -@"$f_m1_2509" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$f_m2_2594" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_2614" = unnamed_addr constant [3 x i8] c"t12" -@"$f_m2_2616" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_2702" = unnamed_addr constant [5 x i8] c"key1a" -@"$f_m2_2716" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_2736" = unnamed_addr constant [3 x i8] c"t13" -@"$stringlit_2747" = unnamed_addr constant [5 x i8] c"key1a" -@"$f_m2_2752" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_2830" = unnamed_addr constant [29 x i8] c"Submap should have been empty" -@"$stringlit_2876" = unnamed_addr constant [5 x i8] c"key2a" -@"$f_m3_2937" = unnamed_addr constant [5 x i8] c"f_m3\00" -@"$stringlit_2957" = unnamed_addr constant [3 x i8] c"t14" -@"$f_m3_2959" = unnamed_addr constant [5 x i8] c"f_m3\00" -@"$f_m_3044" = unnamed_addr constant [4 x i8] c"f_m\00" -@"$stringlit_3064" = unnamed_addr constant [3 x i8] c"t15" -@"$f_m3_3066" = unnamed_addr constant [5 x i8] c"f_m3\00" -@"$stringlit_3132" = unnamed_addr constant [22 x i8] c"Incorrect size of f_m3" -@"$stringlit_3151" = unnamed_addr constant [5 x i8] c"key1a" -@"$stringlit_3162" = unnamed_addr constant [5 x i8] c"key2a" -@"$stringlit_3297" = unnamed_addr constant [36 x i8] c"Incorrect size of f_m3[key1a][key2a]" -@"$stringlit_3318" = unnamed_addr constant [19 x i8] c"Unexpected empty m1" -@"$stringlit_3339" = unnamed_addr constant [28 x i8] c"Incorrect size of f_m3[key1]" -@"$stringlit_3360" = unnamed_addr constant [19 x i8] c"Unexpected empty m2" -@"$stringlit_3379" = unnamed_addr constant [5 x i8] c"key1b" -@"$stringlit_3390" = unnamed_addr constant [5 x i8] c"key2b" -@"$stringlit_3401" = unnamed_addr constant [5 x i8] c"key1c" -@"$stringlit_3412" = unnamed_addr constant [5 x i8] c"key2c" -@"$stringlit_3423" = unnamed_addr constant [5 x i8] c"key1d" -@"$stringlit_3434" = unnamed_addr constant [5 x i8] c"key2d" -@"$stringlit_3445" = unnamed_addr constant [3 x i8] c"420" -@"$stringlit_3456" = unnamed_addr constant [3 x i8] c"421" -@"$stringlit_3467" = unnamed_addr constant [3 x i8] c"422" -@"$stringlit_3478" = unnamed_addr constant [3 x i8] c"423" -@"$f_m2_3649" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_3669" = unnamed_addr constant [3 x i8] c"t16" -@"$stringlit_3680" = unnamed_addr constant [5 x i8] c"key1a" -@"$stringlit_3691" = unnamed_addr constant [5 x i8] c"key2a" -@"$stringlit_3702" = unnamed_addr constant [5 x i8] c"key1b" -@"$stringlit_3713" = unnamed_addr constant [5 x i8] c"key2b" -@"$stringlit_3724" = unnamed_addr constant [5 x i8] c"key1c" -@"$stringlit_3735" = unnamed_addr constant [5 x i8] c"key2c" -@"$stringlit_3746" = unnamed_addr constant [5 x i8] c"key1d" -@"$stringlit_3757" = unnamed_addr constant [5 x i8] c"key2d" -@"$f_m2_3764" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$f_m2_3783" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$f_m2_3802" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$f_m2_3821" = unnamed_addr constant [5 x i8] c"f_m2\00" -@"$stringlit_3844" = unnamed_addr constant [3 x i8] c"420" -@"$stringlit_3855" = unnamed_addr constant [3 x i8] c"421" -@"$stringlit_3866" = unnamed_addr constant [3 x i8] c"422" -@"$stringlit_3877" = unnamed_addr constant [3 x i8] c"423" -@"$stringlit_4109" = unnamed_addr constant [0 x i8] zeroinitializer -@"$stringlit_4120" = unnamed_addr constant [3 x i8] c"420" -@"$f_m1_4154" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_4174" = unnamed_addr constant [3 x i8] c"t17" -@"$stringlit_4185" = unnamed_addr constant [0 x i8] zeroinitializer -@"$f_m1_4190" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$f_m1_4233" = unnamed_addr constant [5 x i8] c"f_m1\00" -@"$stringlit_4251" = unnamed_addr constant [3 x i8] c"t18" -@"$stringlit_4262" = unnamed_addr constant [0 x i8] zeroinitializer -@"$f_m1_4267" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_280" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_285" = unnamed_addr constant [11 x i8] c"Test Failed" +@"$stringlit_288" = unnamed_addr constant [9 x i8] c"test_name" +@"$stringlit_295" = unnamed_addr constant [7 x i8] c"message" +@"$stringlit_325" = unnamed_addr constant [2 x i8] c"t1" +@"$f_s1_327" = unnamed_addr constant [5 x i8] c"f_s1\00" +@"$stringlit_351" = unnamed_addr constant [3 x i8] c"420" +@"$stringlit_392" = unnamed_addr constant [3 x i8] c"421" +@"$f_s1_403" = unnamed_addr constant [5 x i8] c"f_s1\00" +@"$stringlit_424" = unnamed_addr constant [2 x i8] c"t2" +@"$f_s1_426" = unnamed_addr constant [5 x i8] c"f_s1\00" +@"$stringlit_450" = unnamed_addr constant [3 x i8] c"421" +@"$stringlit_491" = unnamed_addr constant [4 x i8] c"key1" +@"$stringlit_502" = unnamed_addr constant [3 x i8] c"420" +@"$f_m1_517" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_538" = unnamed_addr constant [2 x i8] c"t3" +@"$stringlit_549" = unnamed_addr constant [3 x i8] c"420" +@"$stringlit_560" = unnamed_addr constant [4 x i8] c"key1" +@"$f_m1_565" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_623" = unnamed_addr constant [23 x i8] c"Incorrect value for key" +@"$stringlit_653" = unnamed_addr constant [4 x i8] c"key2" +@"$f_m1_658" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_695" = unnamed_addr constant [25 x i8] c"Rogue value found for key" +@"$f_m1_715" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_733" = unnamed_addr constant [2 x i8] c"t4" +@"$stringlit_744" = unnamed_addr constant [4 x i8] c"key1" +@"$f_m1_749" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_793" = unnamed_addr constant [5 x i8] c"key1a" +@"$stringlit_804" = unnamed_addr constant [5 x i8] c"key2a" +@"$stringlit_815" = unnamed_addr constant [3 x i8] c"420" +@"$f_m2_832" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_853" = unnamed_addr constant [2 x i8] c"t5" +@"$stringlit_864" = unnamed_addr constant [3 x i8] c"420" +@"$stringlit_875" = unnamed_addr constant [5 x i8] c"key1a" +@"$stringlit_886" = unnamed_addr constant [5 x i8] c"key2a" +@"$f_m2_893" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_953" = unnamed_addr constant [23 x i8] c"Incorrect value fetched" +@"$stringlit_999" = unnamed_addr constant [5 x i8] c"key2b" +@"$stringlit_1010" = unnamed_addr constant [3 x i8] c"840" +@"$stringlit_1037" = unnamed_addr constant [5 x i8] c"key2c" +@"$stringlit_1048" = unnamed_addr constant [3 x i8] c"841" +@"$stringlit_1070" = unnamed_addr constant [5 x i8] c"key1b" +@"$f_m2_1084" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1104" = unnamed_addr constant [2 x i8] c"t6" +@"$stringlit_1115" = unnamed_addr constant [5 x i8] c"key1a" +@"$stringlit_1126" = unnamed_addr constant [5 x i8] c"key2a" +@"$f_m2_1133" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1170" = unnamed_addr constant [3 x i8] c"420" +@"$stringlit_1204" = unnamed_addr constant [31 x i8] c"Incorrect value for key1a,key2a" +@"$stringlit_1225" = unnamed_addr constant [21 x i8] c"key1a,key2a not found" +@"$stringlit_1244" = unnamed_addr constant [5 x i8] c"key1b" +@"$stringlit_1255" = unnamed_addr constant [5 x i8] c"key2b" +@"$f_m2_1262" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1299" = unnamed_addr constant [3 x i8] c"840" +@"$stringlit_1333" = unnamed_addr constant [31 x i8] c"Incorrect value for key1b,key2b" +@"$stringlit_1354" = unnamed_addr constant [21 x i8] c"key1b,key2b not found" +@"$stringlit_1373" = unnamed_addr constant [5 x i8] c"key1b" +@"$stringlit_1384" = unnamed_addr constant [5 x i8] c"key2c" +@"$f_m2_1391" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1428" = unnamed_addr constant [3 x i8] c"841" +@"$stringlit_1462" = unnamed_addr constant [31 x i8] c"Incorrect value for key1b,key2c" +@"$stringlit_1483" = unnamed_addr constant [21 x i8] c"key1b,key2c not found" +@"$f_m2_1501" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1519" = unnamed_addr constant [2 x i8] c"t7" +@"$stringlit_1530" = unnamed_addr constant [5 x i8] c"key1a" +@"$stringlit_1541" = unnamed_addr constant [5 x i8] c"key2a" +@"$f_m2_1548" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1585" = unnamed_addr constant [3 x i8] c"420" +@"$stringlit_1619" = unnamed_addr constant [31 x i8] c"Incorrect value for key1a,key2a" +@"$stringlit_1640" = unnamed_addr constant [21 x i8] c"key1a,key2a not found" +@"$stringlit_1659" = unnamed_addr constant [5 x i8] c"key1b" +@"$f_m2_1664" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1701" = unnamed_addr constant [36 x i8] c"Fail: deleted value for key1b found!" +@"$stringlit_1722" = unnamed_addr constant [5 x i8] c"key1b" +@"$stringlit_1733" = unnamed_addr constant [5 x i8] c"key2b" +@"$f_m2_1740" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1777" = unnamed_addr constant [42 x i8] c"Fail: deleted value for key1b,key2b found!" +@"$stringlit_1798" = unnamed_addr constant [5 x i8] c"key1b" +@"$stringlit_1809" = unnamed_addr constant [5 x i8] c"key2d" +@"$f_m2_1816" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1853" = unnamed_addr constant [42 x i8] c"Fail: deleted value for key1b,key2d found!" +@"$stringlit_1874" = unnamed_addr constant [5 x i8] c"key1b" +@"$stringlit_1885" = unnamed_addr constant [5 x i8] c"key2c" +@"$stringlit_1896" = unnamed_addr constant [3 x i8] c"121" +@"$f_m2_1913" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_1934" = unnamed_addr constant [2 x i8] c"t8" +@"$stringlit_1945" = unnamed_addr constant [5 x i8] c"key1a" +@"$stringlit_1956" = unnamed_addr constant [5 x i8] c"key2a" +@"$f_m2_1963" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_2000" = unnamed_addr constant [3 x i8] c"420" +@"$stringlit_2034" = unnamed_addr constant [31 x i8] c"Incorrect value for key1a,key2a" +@"$stringlit_2055" = unnamed_addr constant [21 x i8] c"key1a,key2a not found" +@"$stringlit_2074" = unnamed_addr constant [5 x i8] c"key1b" +@"$stringlit_2085" = unnamed_addr constant [5 x i8] c"key2c" +@"$f_m2_2092" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_2129" = unnamed_addr constant [3 x i8] c"121" +@"$stringlit_2163" = unnamed_addr constant [31 x i8] c"Incorrect value for key1b,key2c" +@"$stringlit_2184" = unnamed_addr constant [21 x i8] c"key1b,key2c not found" +@"$f_m1_2215" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_2235" = unnamed_addr constant [2 x i8] c"t9" +@"$f_m1_2237" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_2310" = unnamed_addr constant [5 x i8] c"key1a" +@"$stringlit_2321" = unnamed_addr constant [3 x i8] c"420" +@"$f_m1_2347" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_2367" = unnamed_addr constant [3 x i8] c"t10" +@"$stringlit_2378" = unnamed_addr constant [5 x i8] c"key1a" +@"$f_m1_2380" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_2432" = unnamed_addr constant [3 x i8] c"420" +@"$stringlit_2466" = unnamed_addr constant [25 x i8] c"Incorrect value for key1a" +@"$stringlit_2487" = unnamed_addr constant [15 x i8] c"key1a not found" +@"$f_m1_2505" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_2523" = unnamed_addr constant [3 x i8] c"t11" +@"$f_m1_2525" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$f_m2_2610" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_2630" = unnamed_addr constant [3 x i8] c"t12" +@"$f_m2_2632" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_2718" = unnamed_addr constant [5 x i8] c"key1a" +@"$f_m2_2732" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_2752" = unnamed_addr constant [3 x i8] c"t13" +@"$stringlit_2763" = unnamed_addr constant [5 x i8] c"key1a" +@"$f_m2_2768" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_2846" = unnamed_addr constant [29 x i8] c"Submap should have been empty" +@"$stringlit_2892" = unnamed_addr constant [5 x i8] c"key2a" +@"$f_m3_2953" = unnamed_addr constant [5 x i8] c"f_m3\00" +@"$stringlit_2973" = unnamed_addr constant [3 x i8] c"t14" +@"$f_m3_2975" = unnamed_addr constant [5 x i8] c"f_m3\00" +@"$f_m_3060" = unnamed_addr constant [4 x i8] c"f_m\00" +@"$stringlit_3080" = unnamed_addr constant [3 x i8] c"t15" +@"$f_m3_3082" = unnamed_addr constant [5 x i8] c"f_m3\00" +@"$stringlit_3148" = unnamed_addr constant [22 x i8] c"Incorrect size of f_m3" +@"$stringlit_3167" = unnamed_addr constant [5 x i8] c"key1a" +@"$stringlit_3178" = unnamed_addr constant [5 x i8] c"key2a" +@"$stringlit_3313" = unnamed_addr constant [36 x i8] c"Incorrect size of f_m3[key1a][key2a]" +@"$stringlit_3334" = unnamed_addr constant [19 x i8] c"Unexpected empty m1" +@"$stringlit_3355" = unnamed_addr constant [28 x i8] c"Incorrect size of f_m3[key1]" +@"$stringlit_3376" = unnamed_addr constant [19 x i8] c"Unexpected empty m2" +@"$stringlit_3395" = unnamed_addr constant [5 x i8] c"key1b" +@"$stringlit_3406" = unnamed_addr constant [5 x i8] c"key2b" +@"$stringlit_3417" = unnamed_addr constant [5 x i8] c"key1c" +@"$stringlit_3428" = unnamed_addr constant [5 x i8] c"key2c" +@"$stringlit_3439" = unnamed_addr constant [5 x i8] c"key1d" +@"$stringlit_3450" = unnamed_addr constant [5 x i8] c"key2d" +@"$stringlit_3461" = unnamed_addr constant [3 x i8] c"420" +@"$stringlit_3472" = unnamed_addr constant [3 x i8] c"421" +@"$stringlit_3483" = unnamed_addr constant [3 x i8] c"422" +@"$stringlit_3494" = unnamed_addr constant [3 x i8] c"423" +@"$f_m2_3665" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_3685" = unnamed_addr constant [3 x i8] c"t16" +@"$stringlit_3696" = unnamed_addr constant [5 x i8] c"key1a" +@"$stringlit_3707" = unnamed_addr constant [5 x i8] c"key2a" +@"$stringlit_3718" = unnamed_addr constant [5 x i8] c"key1b" +@"$stringlit_3729" = unnamed_addr constant [5 x i8] c"key2b" +@"$stringlit_3740" = unnamed_addr constant [5 x i8] c"key1c" +@"$stringlit_3751" = unnamed_addr constant [5 x i8] c"key2c" +@"$stringlit_3762" = unnamed_addr constant [5 x i8] c"key1d" +@"$stringlit_3773" = unnamed_addr constant [5 x i8] c"key2d" +@"$f_m2_3780" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$f_m2_3799" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$f_m2_3818" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$f_m2_3837" = unnamed_addr constant [5 x i8] c"f_m2\00" +@"$stringlit_3860" = unnamed_addr constant [3 x i8] c"420" +@"$stringlit_3871" = unnamed_addr constant [3 x i8] c"421" +@"$stringlit_3882" = unnamed_addr constant [3 x i8] c"422" +@"$stringlit_3893" = unnamed_addr constant [3 x i8] c"423" +@"$stringlit_4125" = unnamed_addr constant [0 x i8] zeroinitializer +@"$stringlit_4136" = unnamed_addr constant [3 x i8] c"420" +@"$f_m1_4170" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_4190" = unnamed_addr constant [3 x i8] c"t17" +@"$stringlit_4201" = unnamed_addr constant [0 x i8] zeroinitializer +@"$f_m1_4206" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$f_m1_4249" = unnamed_addr constant [5 x i8] c"f_m1\00" +@"$stringlit_4267" = unnamed_addr constant [3 x i8] c"t18" +@"$stringlit_4278" = unnamed_addr constant [0 x i8] zeroinitializer +@"$f_m1_4283" = unnamed_addr constant [5 x i8] c"f_m1\00" @_tydescr_table = constant [22 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Map_72", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Map_(String)_(String)_66", %_TyDescrTy_Typ* @"$TyDescr_Event_55", %_TyDescrTy_Typ* @"$TyDescr_Int64_37", %_TyDescrTy_Typ* @"$TyDescr_Map_70", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_68", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_61", %_TyDescrTy_Typ* @"$TyDescr_Uint256_47", %_TyDescrTy_Typ* @"$TyDescr_Uint32_35", %_TyDescrTy_Typ* @"$TyDescr_Map_71", %_TyDescrTy_Typ* @"$TyDescr_Uint64_39", %_TyDescrTy_Typ* @"$TyDescr_Bnum_51", %_TyDescrTy_Typ* @"$TyDescr_Uint128_43", %_TyDescrTy_Typ* @"$TyDescr_Exception_57", %_TyDescrTy_Typ* @"$TyDescr_String_49", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Map_(String)_(Map_(String)_(String))_65", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", %_TyDescrTy_Typ* @"$TyDescr_Int256_45", %_TyDescrTy_Typ* @"$TyDescr_Int128_41", %_TyDescrTy_Typ* @"$TyDescr_Bystr_59", %_TyDescrTy_Typ* @"$TyDescr_Message_53", %_TyDescrTy_Typ* @"$TyDescr_Int32_33"] @_tydescr_table_length = constant i32 22 @@ -584,1660 +584,1686 @@ entry: %"$msgobj_v_255" = bitcast i8* %"$msgobj_v_254" to %String* store %String %tname, %String* %"$msgobj_v_255" store i8* %"$msgobj_240", i8** %e - %"$execptr_load_257" = load i8*, i8** @_execptr - %"$e_258" = load i8*, i8** %e - call void @_throw(i8* %"$execptr_load_257", %_TyDescrTy_Typ* @"$TyDescr_Exception_57", i8* %"$e_258") + %"$e_257" = load i8*, i8** %e + %"$_literal_cost_call_259" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Exception_57", i8* %"$e_257") + %"$gasrem_260" = load i64, i64* @_gasrem + %"$gascmp_261" = icmp ugt i64 %"$_literal_cost_call_259", %"$gasrem_260" + br i1 %"$gascmp_261", label %"$out_of_gas_262", label %"$have_gas_263" + +"$out_of_gas_262": ; preds = %"$have_gas_238" + call void @_out_of_gas() + br label %"$have_gas_263" + +"$have_gas_263": ; preds = %"$out_of_gas_262", %"$have_gas_238" + %"$consume_264" = sub i64 %"$gasrem_260", %"$_literal_cost_call_259" + store i64 %"$consume_264", i64* @_gasrem + %"$execptr_load_265" = load i8*, i8** @_execptr + %"$e_266" = load i8*, i8** %e + call void @_throw(i8* %"$execptr_load_265", %_TyDescrTy_Typ* @"$TyDescr_Exception_57", i8* %"$e_266") ret void } +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + declare void @_throw(i8*, %_TyDescrTy_Typ*, i8*) -define internal void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$_sender_260", %String %tname, %String %msg) { +define internal void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$_sender_268", %String %tname, %String %msg) { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_260" - %"$gasrem_261" = load i64, i64* @_gasrem - %"$gascmp_262" = icmp ugt i64 1, %"$gasrem_261" - br i1 %"$gascmp_262", label %"$out_of_gas_263", label %"$have_gas_264" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_268" + %"$gasrem_269" = load i64, i64* @_gasrem + %"$gascmp_270" = icmp ugt i64 1, %"$gasrem_269" + br i1 %"$gascmp_270", label %"$out_of_gas_271", label %"$have_gas_272" -"$out_of_gas_263": ; preds = %entry +"$out_of_gas_271": ; preds = %entry call void @_out_of_gas() - br label %"$have_gas_264" + br label %"$have_gas_272" -"$have_gas_264": ; preds = %"$out_of_gas_263", %entry - %"$consume_265" = sub i64 %"$gasrem_261", 1 - store i64 %"$consume_265", i64* @_gasrem +"$have_gas_272": ; preds = %"$out_of_gas_271", %entry + %"$consume_273" = sub i64 %"$gasrem_269", 1 + store i64 %"$consume_273", i64* @_gasrem %e = alloca i8* - %"$gasrem_266" = load i64, i64* @_gasrem - %"$gascmp_267" = icmp ugt i64 1, %"$gasrem_266" - br i1 %"$gascmp_267", label %"$out_of_gas_268", label %"$have_gas_269" - -"$out_of_gas_268": ; preds = %"$have_gas_264" - call void @_out_of_gas() - br label %"$have_gas_269" - -"$have_gas_269": ; preds = %"$out_of_gas_268", %"$have_gas_264" - %"$consume_270" = sub i64 %"$gasrem_266", 1 - store i64 %"$consume_270", i64* @_gasrem - %"$msgobj_271_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_271_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_271_salloc_load", i64 121) - %"$msgobj_271_salloc" = bitcast i8* %"$msgobj_271_salloc_salloc" to [121 x i8]* - %"$msgobj_271" = bitcast [121 x i8]* %"$msgobj_271_salloc" to i8* - store i8 3, i8* %"$msgobj_271" - %"$msgobj_fname_273" = getelementptr i8, i8* %"$msgobj_271", i32 1 - %"$msgobj_fname_274" = bitcast i8* %"$msgobj_fname_273" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_272", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_274" - %"$msgobj_td_275" = getelementptr i8, i8* %"$msgobj_271", i32 17 - %"$msgobj_td_276" = bitcast i8* %"$msgobj_td_275" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_49", %_TyDescrTy_Typ** %"$msgobj_td_276" - %"$msgobj_v_278" = getelementptr i8, i8* %"$msgobj_271", i32 25 - %"$msgobj_v_279" = bitcast i8* %"$msgobj_v_278" to %String* - store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_277", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_279" - %"$msgobj_fname_281" = getelementptr i8, i8* %"$msgobj_271", i32 41 + %"$gasrem_274" = load i64, i64* @_gasrem + %"$gascmp_275" = icmp ugt i64 1, %"$gasrem_274" + br i1 %"$gascmp_275", label %"$out_of_gas_276", label %"$have_gas_277" + +"$out_of_gas_276": ; preds = %"$have_gas_272" + call void @_out_of_gas() + br label %"$have_gas_277" + +"$have_gas_277": ; preds = %"$out_of_gas_276", %"$have_gas_272" + %"$consume_278" = sub i64 %"$gasrem_274", 1 + store i64 %"$consume_278", i64* @_gasrem + %"$msgobj_279_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_279_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_279_salloc_load", i64 121) + %"$msgobj_279_salloc" = bitcast i8* %"$msgobj_279_salloc_salloc" to [121 x i8]* + %"$msgobj_279" = bitcast [121 x i8]* %"$msgobj_279_salloc" to i8* + store i8 3, i8* %"$msgobj_279" + %"$msgobj_fname_281" = getelementptr i8, i8* %"$msgobj_279", i32 1 %"$msgobj_fname_282" = bitcast i8* %"$msgobj_fname_281" to %String* - store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_280", i32 0, i32 0), i32 9 }, %String* %"$msgobj_fname_282" - %"$msgobj_td_283" = getelementptr i8, i8* %"$msgobj_271", i32 57 + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_280", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_282" + %"$msgobj_td_283" = getelementptr i8, i8* %"$msgobj_279", i32 17 %"$msgobj_td_284" = bitcast i8* %"$msgobj_td_283" to %_TyDescrTy_Typ** store %_TyDescrTy_Typ* @"$TyDescr_String_49", %_TyDescrTy_Typ** %"$msgobj_td_284" - %"$msgobj_v_285" = getelementptr i8, i8* %"$msgobj_271", i32 65 - %"$msgobj_v_286" = bitcast i8* %"$msgobj_v_285" to %String* - store %String %tname, %String* %"$msgobj_v_286" - %"$msgobj_fname_288" = getelementptr i8, i8* %"$msgobj_271", i32 81 - %"$msgobj_fname_289" = bitcast i8* %"$msgobj_fname_288" to %String* - store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_287", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_289" - %"$msgobj_td_290" = getelementptr i8, i8* %"$msgobj_271", i32 97 - %"$msgobj_td_291" = bitcast i8* %"$msgobj_td_290" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_49", %_TyDescrTy_Typ** %"$msgobj_td_291" - %"$msgobj_v_292" = getelementptr i8, i8* %"$msgobj_271", i32 105 - %"$msgobj_v_293" = bitcast i8* %"$msgobj_v_292" to %String* - store %String %msg, %String* %"$msgobj_v_293" - store i8* %"$msgobj_271", i8** %e - %"$execptr_load_295" = load i8*, i8** @_execptr - %"$e_296" = load i8*, i8** %e - call void @_throw(i8* %"$execptr_load_295", %_TyDescrTy_Typ* @"$TyDescr_Exception_57", i8* %"$e_296") + %"$msgobj_v_286" = getelementptr i8, i8* %"$msgobj_279", i32 25 + %"$msgobj_v_287" = bitcast i8* %"$msgobj_v_286" to %String* + store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_285", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_287" + %"$msgobj_fname_289" = getelementptr i8, i8* %"$msgobj_279", i32 41 + %"$msgobj_fname_290" = bitcast i8* %"$msgobj_fname_289" to %String* + store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_288", i32 0, i32 0), i32 9 }, %String* %"$msgobj_fname_290" + %"$msgobj_td_291" = getelementptr i8, i8* %"$msgobj_279", i32 57 + %"$msgobj_td_292" = bitcast i8* %"$msgobj_td_291" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_49", %_TyDescrTy_Typ** %"$msgobj_td_292" + %"$msgobj_v_293" = getelementptr i8, i8* %"$msgobj_279", i32 65 + %"$msgobj_v_294" = bitcast i8* %"$msgobj_v_293" to %String* + store %String %tname, %String* %"$msgobj_v_294" + %"$msgobj_fname_296" = getelementptr i8, i8* %"$msgobj_279", i32 81 + %"$msgobj_fname_297" = bitcast i8* %"$msgobj_fname_296" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_295", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_297" + %"$msgobj_td_298" = getelementptr i8, i8* %"$msgobj_279", i32 97 + %"$msgobj_td_299" = bitcast i8* %"$msgobj_td_298" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_49", %_TyDescrTy_Typ** %"$msgobj_td_299" + %"$msgobj_v_300" = getelementptr i8, i8* %"$msgobj_279", i32 105 + %"$msgobj_v_301" = bitcast i8* %"$msgobj_v_300" to %String* + store %String %msg, %String* %"$msgobj_v_301" + store i8* %"$msgobj_279", i8** %e + %"$e_303" = load i8*, i8** %e + %"$_literal_cost_call_305" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Exception_57", i8* %"$e_303") + %"$gasrem_306" = load i64, i64* @_gasrem + %"$gascmp_307" = icmp ugt i64 %"$_literal_cost_call_305", %"$gasrem_306" + br i1 %"$gascmp_307", label %"$out_of_gas_308", label %"$have_gas_309" + +"$out_of_gas_308": ; preds = %"$have_gas_277" + call void @_out_of_gas() + br label %"$have_gas_309" + +"$have_gas_309": ; preds = %"$out_of_gas_308", %"$have_gas_277" + %"$consume_310" = sub i64 %"$gasrem_306", %"$_literal_cost_call_305" + store i64 %"$consume_310", i64* @_gasrem + %"$execptr_load_311" = load i8*, i8** @_execptr + %"$e_312" = load i8*, i8** %e + call void @_throw(i8* %"$execptr_load_311", %_TyDescrTy_Typ* @"$TyDescr_Exception_57", i8* %"$e_312") ret void } -define internal void @"$t1_297"(%Uint128 %_amount, [20 x i8]* %"$_sender_298") { +define internal void @"$t1_313"(%Uint128 %_amount, [20 x i8]* %"$_sender_314") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_298" - %"$gasrem_299" = load i64, i64* @_gasrem - %"$gascmp_300" = icmp ugt i64 1, %"$gasrem_299" - br i1 %"$gascmp_300", label %"$out_of_gas_301", label %"$have_gas_302" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_314" + %"$gasrem_315" = load i64, i64* @_gasrem + %"$gascmp_316" = icmp ugt i64 1, %"$gasrem_315" + br i1 %"$gascmp_316", label %"$out_of_gas_317", label %"$have_gas_318" -"$out_of_gas_301": ; preds = %entry +"$out_of_gas_317": ; preds = %entry call void @_out_of_gas() - br label %"$have_gas_302" + br label %"$have_gas_318" -"$have_gas_302": ; preds = %"$out_of_gas_301", %entry - %"$consume_303" = sub i64 %"$gasrem_299", 1 - store i64 %"$consume_303", i64* @_gasrem +"$have_gas_318": ; preds = %"$out_of_gas_317", %entry + %"$consume_319" = sub i64 %"$gasrem_315", 1 + store i64 %"$consume_319", i64* @_gasrem %tname = alloca %String - %"$gasrem_304" = load i64, i64* @_gasrem - %"$gascmp_305" = icmp ugt i64 1, %"$gasrem_304" - br i1 %"$gascmp_305", label %"$out_of_gas_306", label %"$have_gas_307" - -"$out_of_gas_306": ; preds = %"$have_gas_302" - call void @_out_of_gas() - br label %"$have_gas_307" - -"$have_gas_307": ; preds = %"$out_of_gas_306", %"$have_gas_302" - %"$consume_308" = sub i64 %"$gasrem_304", 1 - store i64 %"$consume_308", i64* @_gasrem - store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_309", i32 0, i32 0), i32 2 }, %String* %tname - %f = alloca %String - %"$execptr_load_310" = load i8*, i8** @_execptr - %"$f_312" = call i8* @_fetch_field(i8* %"$execptr_load_310", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_s1_311", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_49", i32 0, i8* null, i32 1) - %"$f_313" = bitcast i8* %"$f_312" to %String* - %"$f_314" = load %String, %String* %"$f_313" - store %String %"$f_314", %String* %f - %"$_literal_cost_f_315" = alloca %String - %"$f_316" = load %String, %String* %f - store %String %"$f_316", %String* %"$_literal_cost_f_315" - %"$$_literal_cost_f_315_317" = bitcast %String* %"$_literal_cost_f_315" to i8* - %"$_literal_cost_call_318" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_49", i8* %"$$_literal_cost_f_315_317") - %"$gasadd_319" = add i64 %"$_literal_cost_call_318", 0 %"$gasrem_320" = load i64, i64* @_gasrem - %"$gascmp_321" = icmp ugt i64 %"$gasadd_319", %"$gasrem_320" + %"$gascmp_321" = icmp ugt i64 1, %"$gasrem_320" br i1 %"$gascmp_321", label %"$out_of_gas_322", label %"$have_gas_323" -"$out_of_gas_322": ; preds = %"$have_gas_307" +"$out_of_gas_322": ; preds = %"$have_gas_318" call void @_out_of_gas() br label %"$have_gas_323" -"$have_gas_323": ; preds = %"$out_of_gas_322", %"$have_gas_307" - %"$consume_324" = sub i64 %"$gasrem_320", %"$gasadd_319" +"$have_gas_323": ; preds = %"$out_of_gas_322", %"$have_gas_318" + %"$consume_324" = sub i64 %"$gasrem_320", 1 store i64 %"$consume_324", i64* @_gasrem - %"$gasrem_325" = load i64, i64* @_gasrem - %"$gascmp_326" = icmp ugt i64 1, %"$gasrem_325" - br i1 %"$gascmp_326", label %"$out_of_gas_327", label %"$have_gas_328" + store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_325", i32 0, i32 0), i32 2 }, %String* %tname + %f = alloca %String + %"$execptr_load_326" = load i8*, i8** @_execptr + %"$f_328" = call i8* @_fetch_field(i8* %"$execptr_load_326", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_s1_327", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_49", i32 0, i8* null, i32 1) + %"$f_329" = bitcast i8* %"$f_328" to %String* + %"$f_330" = load %String, %String* %"$f_329" + store %String %"$f_330", %String* %f + %"$_literal_cost_f_331" = alloca %String + %"$f_332" = load %String, %String* %f + store %String %"$f_332", %String* %"$_literal_cost_f_331" + %"$$_literal_cost_f_331_333" = bitcast %String* %"$_literal_cost_f_331" to i8* + %"$_literal_cost_call_334" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_49", i8* %"$$_literal_cost_f_331_333") + %"$gasadd_335" = add i64 %"$_literal_cost_call_334", 0 + %"$gasrem_336" = load i64, i64* @_gasrem + %"$gascmp_337" = icmp ugt i64 %"$gasadd_335", %"$gasrem_336" + br i1 %"$gascmp_337", label %"$out_of_gas_338", label %"$have_gas_339" -"$out_of_gas_327": ; preds = %"$have_gas_323" +"$out_of_gas_338": ; preds = %"$have_gas_323" call void @_out_of_gas() - br label %"$have_gas_328" + br label %"$have_gas_339" + +"$have_gas_339": ; preds = %"$out_of_gas_338", %"$have_gas_323" + %"$consume_340" = sub i64 %"$gasrem_336", %"$gasadd_335" + store i64 %"$consume_340", i64* @_gasrem + %"$gasrem_341" = load i64, i64* @_gasrem + %"$gascmp_342" = icmp ugt i64 1, %"$gasrem_341" + br i1 %"$gascmp_342", label %"$out_of_gas_343", label %"$have_gas_344" + +"$out_of_gas_343": ; preds = %"$have_gas_339" + call void @_out_of_gas() + br label %"$have_gas_344" -"$have_gas_328": ; preds = %"$out_of_gas_327", %"$have_gas_323" - %"$consume_329" = sub i64 %"$gasrem_325", 1 - store i64 %"$consume_329", i64* @_gasrem +"$have_gas_344": ; preds = %"$out_of_gas_343", %"$have_gas_339" + %"$consume_345" = sub i64 %"$gasrem_341", 1 + store i64 %"$consume_345", i64* @_gasrem %s = alloca %String - %"$gasrem_330" = load i64, i64* @_gasrem - %"$gascmp_331" = icmp ugt i64 1, %"$gasrem_330" - br i1 %"$gascmp_331", label %"$out_of_gas_332", label %"$have_gas_333" + %"$gasrem_346" = load i64, i64* @_gasrem + %"$gascmp_347" = icmp ugt i64 1, %"$gasrem_346" + br i1 %"$gascmp_347", label %"$out_of_gas_348", label %"$have_gas_349" -"$out_of_gas_332": ; preds = %"$have_gas_328" +"$out_of_gas_348": ; preds = %"$have_gas_344" call void @_out_of_gas() - br label %"$have_gas_333" + br label %"$have_gas_349" -"$have_gas_333": ; preds = %"$out_of_gas_332", %"$have_gas_328" - %"$consume_334" = sub i64 %"$gasrem_330", 1 - store i64 %"$consume_334", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_335", i32 0, i32 0), i32 3 }, %String* %s - %"$gasrem_336" = load i64, i64* @_gasrem - %"$gascmp_337" = icmp ugt i64 1, %"$gasrem_336" - br i1 %"$gascmp_337", label %"$out_of_gas_338", label %"$have_gas_339" +"$have_gas_349": ; preds = %"$out_of_gas_348", %"$have_gas_344" + %"$consume_350" = sub i64 %"$gasrem_346", 1 + store i64 %"$consume_350", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_351", i32 0, i32 0), i32 3 }, %String* %s + %"$gasrem_352" = load i64, i64* @_gasrem + %"$gascmp_353" = icmp ugt i64 1, %"$gasrem_352" + br i1 %"$gascmp_353", label %"$out_of_gas_354", label %"$have_gas_355" -"$out_of_gas_338": ; preds = %"$have_gas_333" +"$out_of_gas_354": ; preds = %"$have_gas_349" call void @_out_of_gas() - br label %"$have_gas_339" + br label %"$have_gas_355" -"$have_gas_339": ; preds = %"$out_of_gas_338", %"$have_gas_333" - %"$consume_340" = sub i64 %"$gasrem_336", 1 - store i64 %"$consume_340", i64* @_gasrem +"$have_gas_355": ; preds = %"$out_of_gas_354", %"$have_gas_349" + %"$consume_356" = sub i64 %"$gasrem_352", 1 + store i64 %"$consume_356", i64* @_gasrem %t = alloca %TName_Bool* - %"$execptr_load_341" = load i8*, i8** @_execptr - %"$f_342" = load %String, %String* %f - %"$s_343" = load %String, %String* %s - %"$eq_call_344" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_341", %String %"$f_342", %String %"$s_343") - store %TName_Bool* %"$eq_call_344", %TName_Bool** %t - %"$gasrem_345" = load i64, i64* @_gasrem - %"$gascmp_346" = icmp ugt i64 2, %"$gasrem_345" - br i1 %"$gascmp_346", label %"$out_of_gas_347", label %"$have_gas_348" - -"$out_of_gas_347": ; preds = %"$have_gas_339" - call void @_out_of_gas() - br label %"$have_gas_348" - -"$have_gas_348": ; preds = %"$out_of_gas_347", %"$have_gas_339" - %"$consume_349" = sub i64 %"$gasrem_345", 2 - store i64 %"$consume_349", i64* @_gasrem - %"$t_351" = load %TName_Bool*, %TName_Bool** %t - %"$t_tag_352" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$t_351", i32 0, i32 0 - %"$t_tag_353" = load i8, i8* %"$t_tag_352" - switch i8 %"$t_tag_353", label %"$empty_default_354" [ - i8 1, label %"$False_355" - i8 0, label %"$True_364" + %"$execptr_load_357" = load i8*, i8** @_execptr + %"$f_358" = load %String, %String* %f + %"$s_359" = load %String, %String* %s + %"$eq_call_360" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_357", %String %"$f_358", %String %"$s_359") + store %TName_Bool* %"$eq_call_360", %TName_Bool** %t + %"$gasrem_361" = load i64, i64* @_gasrem + %"$gascmp_362" = icmp ugt i64 2, %"$gasrem_361" + br i1 %"$gascmp_362", label %"$out_of_gas_363", label %"$have_gas_364" + +"$out_of_gas_363": ; preds = %"$have_gas_355" + call void @_out_of_gas() + br label %"$have_gas_364" + +"$have_gas_364": ; preds = %"$out_of_gas_363", %"$have_gas_355" + %"$consume_365" = sub i64 %"$gasrem_361", 2 + store i64 %"$consume_365", i64* @_gasrem + %"$t_367" = load %TName_Bool*, %TName_Bool** %t + %"$t_tag_368" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$t_367", i32 0, i32 0 + %"$t_tag_369" = load i8, i8* %"$t_tag_368" + switch i8 %"$t_tag_369", label %"$empty_default_370" [ + i8 1, label %"$False_371" + i8 0, label %"$True_380" ] -"$False_355": ; preds = %"$have_gas_348" - %"$t_356" = bitcast %TName_Bool* %"$t_351" to %CName_False* - %"$gasrem_357" = load i64, i64* @_gasrem - %"$gascmp_358" = icmp ugt i64 1, %"$gasrem_357" - br i1 %"$gascmp_358", label %"$out_of_gas_359", label %"$have_gas_360" +"$False_371": ; preds = %"$have_gas_364" + %"$t_372" = bitcast %TName_Bool* %"$t_367" to %CName_False* + %"$gasrem_373" = load i64, i64* @_gasrem + %"$gascmp_374" = icmp ugt i64 1, %"$gasrem_373" + br i1 %"$gascmp_374", label %"$out_of_gas_375", label %"$have_gas_376" -"$out_of_gas_359": ; preds = %"$False_355" +"$out_of_gas_375": ; preds = %"$False_371" call void @_out_of_gas() - br label %"$have_gas_360" + br label %"$have_gas_376" -"$have_gas_360": ; preds = %"$out_of_gas_359", %"$False_355" - %"$consume_361" = sub i64 %"$gasrem_357", 1 - store i64 %"$consume_361", i64* @_gasrem - %"$fail__sender_362" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_362" - %"$tname_363" = load %String, %String* %tname - call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_362", %String %"$tname_363") - br label %"$matchsucc_350" +"$have_gas_376": ; preds = %"$out_of_gas_375", %"$False_371" + %"$consume_377" = sub i64 %"$gasrem_373", 1 + store i64 %"$consume_377", i64* @_gasrem + %"$fail__sender_378" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_378" + %"$tname_379" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_378", %String %"$tname_379") + br label %"$matchsucc_366" -"$True_364": ; preds = %"$have_gas_348" - %"$t_365" = bitcast %TName_Bool* %"$t_351" to %CName_True* - br label %"$matchsucc_350" +"$True_380": ; preds = %"$have_gas_364" + %"$t_381" = bitcast %TName_Bool* %"$t_367" to %CName_True* + br label %"$matchsucc_366" -"$empty_default_354": ; preds = %"$have_gas_348" - br label %"$matchsucc_350" +"$empty_default_370": ; preds = %"$have_gas_364" + br label %"$matchsucc_366" -"$matchsucc_350": ; preds = %"$True_364", %"$have_gas_360", %"$empty_default_354" - %"$gasrem_366" = load i64, i64* @_gasrem - %"$gascmp_367" = icmp ugt i64 1, %"$gasrem_366" - br i1 %"$gascmp_367", label %"$out_of_gas_368", label %"$have_gas_369" +"$matchsucc_366": ; preds = %"$True_380", %"$have_gas_376", %"$empty_default_370" + %"$gasrem_382" = load i64, i64* @_gasrem + %"$gascmp_383" = icmp ugt i64 1, %"$gasrem_382" + br i1 %"$gascmp_383", label %"$out_of_gas_384", label %"$have_gas_385" -"$out_of_gas_368": ; preds = %"$matchsucc_350" +"$out_of_gas_384": ; preds = %"$matchsucc_366" call void @_out_of_gas() - br label %"$have_gas_369" + br label %"$have_gas_385" -"$have_gas_369": ; preds = %"$out_of_gas_368", %"$matchsucc_350" - %"$consume_370" = sub i64 %"$gasrem_366", 1 - store i64 %"$consume_370", i64* @_gasrem +"$have_gas_385": ; preds = %"$out_of_gas_384", %"$matchsucc_366" + %"$consume_386" = sub i64 %"$gasrem_382", 1 + store i64 %"$consume_386", i64* @_gasrem %s2 = alloca %String - %"$gasrem_371" = load i64, i64* @_gasrem - %"$gascmp_372" = icmp ugt i64 1, %"$gasrem_371" - br i1 %"$gascmp_372", label %"$out_of_gas_373", label %"$have_gas_374" - -"$out_of_gas_373": ; preds = %"$have_gas_369" - call void @_out_of_gas() - br label %"$have_gas_374" - -"$have_gas_374": ; preds = %"$out_of_gas_373", %"$have_gas_369" - %"$consume_375" = sub i64 %"$gasrem_371", 1 - store i64 %"$consume_375", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_376", i32 0, i32 0), i32 3 }, %String* %s2 - %"$_literal_cost_s2_377" = alloca %String - %"$s2_378" = load %String, %String* %s2 - store %String %"$s2_378", %String* %"$_literal_cost_s2_377" - %"$$_literal_cost_s2_377_379" = bitcast %String* %"$_literal_cost_s2_377" to i8* - %"$_literal_cost_call_380" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_49", i8* %"$$_literal_cost_s2_377_379") - %"$gasrem_381" = load i64, i64* @_gasrem - %"$gascmp_382" = icmp ugt i64 %"$_literal_cost_call_380", %"$gasrem_381" - br i1 %"$gascmp_382", label %"$out_of_gas_383", label %"$have_gas_384" - -"$out_of_gas_383": ; preds = %"$have_gas_374" - call void @_out_of_gas() - br label %"$have_gas_384" - -"$have_gas_384": ; preds = %"$out_of_gas_383", %"$have_gas_374" - %"$consume_385" = sub i64 %"$gasrem_381", %"$_literal_cost_call_380" - store i64 %"$consume_385", i64* @_gasrem - %"$execptr_load_386" = load i8*, i8** @_execptr - %"$s2_388" = load %String, %String* %s2 - %"$update_value_389" = alloca %String - store %String %"$s2_388", %String* %"$update_value_389" - %"$update_value_390" = bitcast %String* %"$update_value_389" to i8* - call void @_update_field(i8* %"$execptr_load_386", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_s1_387", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_49", i32 0, i8* null, i8* %"$update_value_390") + %"$gasrem_387" = load i64, i64* @_gasrem + %"$gascmp_388" = icmp ugt i64 1, %"$gasrem_387" + br i1 %"$gascmp_388", label %"$out_of_gas_389", label %"$have_gas_390" + +"$out_of_gas_389": ; preds = %"$have_gas_385" + call void @_out_of_gas() + br label %"$have_gas_390" + +"$have_gas_390": ; preds = %"$out_of_gas_389", %"$have_gas_385" + %"$consume_391" = sub i64 %"$gasrem_387", 1 + store i64 %"$consume_391", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_392", i32 0, i32 0), i32 3 }, %String* %s2 + %"$_literal_cost_s2_393" = alloca %String + %"$s2_394" = load %String, %String* %s2 + store %String %"$s2_394", %String* %"$_literal_cost_s2_393" + %"$$_literal_cost_s2_393_395" = bitcast %String* %"$_literal_cost_s2_393" to i8* + %"$_literal_cost_call_396" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_49", i8* %"$$_literal_cost_s2_393_395") + %"$gasrem_397" = load i64, i64* @_gasrem + %"$gascmp_398" = icmp ugt i64 %"$_literal_cost_call_396", %"$gasrem_397" + br i1 %"$gascmp_398", label %"$out_of_gas_399", label %"$have_gas_400" + +"$out_of_gas_399": ; preds = %"$have_gas_390" + call void @_out_of_gas() + br label %"$have_gas_400" + +"$have_gas_400": ; preds = %"$out_of_gas_399", %"$have_gas_390" + %"$consume_401" = sub i64 %"$gasrem_397", %"$_literal_cost_call_396" + store i64 %"$consume_401", i64* @_gasrem + %"$execptr_load_402" = load i8*, i8** @_execptr + %"$s2_404" = load %String, %String* %s2 + %"$update_value_405" = alloca %String + store %String %"$s2_404", %String* %"$update_value_405" + %"$update_value_406" = bitcast %String* %"$update_value_405" to i8* + call void @_update_field(i8* %"$execptr_load_402", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_s1_403", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_49", i32 0, i8* null, i8* %"$update_value_406") ret void } declare i8* @_fetch_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i32) -declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) - declare %TName_Bool* @_eq_String(i8*, %String, %String) define void @t1(i8* %0) { entry: - %"$_amount_392" = getelementptr i8, i8* %0, i32 0 - %"$_amount_393" = bitcast i8* %"$_amount_392" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_393" - %"$_sender_394" = getelementptr i8, i8* %0, i32 16 - %"$_sender_395" = bitcast i8* %"$_sender_394" to [20 x i8]* - call void @"$t1_297"(%Uint128 %_amount, [20 x i8]* %"$_sender_395") + %"$_amount_408" = getelementptr i8, i8* %0, i32 0 + %"$_amount_409" = bitcast i8* %"$_amount_408" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_409" + %"$_sender_410" = getelementptr i8, i8* %0, i32 16 + %"$_sender_411" = bitcast i8* %"$_sender_410" to [20 x i8]* + call void @"$t1_313"(%Uint128 %_amount, [20 x i8]* %"$_sender_411") ret void } -define internal void @"$t2_396"(%Uint128 %_amount, [20 x i8]* %"$_sender_397") { +define internal void @"$t2_412"(%Uint128 %_amount, [20 x i8]* %"$_sender_413") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_397" - %"$gasrem_398" = load i64, i64* @_gasrem - %"$gascmp_399" = icmp ugt i64 1, %"$gasrem_398" - br i1 %"$gascmp_399", label %"$out_of_gas_400", label %"$have_gas_401" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_413" + %"$gasrem_414" = load i64, i64* @_gasrem + %"$gascmp_415" = icmp ugt i64 1, %"$gasrem_414" + br i1 %"$gascmp_415", label %"$out_of_gas_416", label %"$have_gas_417" -"$out_of_gas_400": ; preds = %entry +"$out_of_gas_416": ; preds = %entry call void @_out_of_gas() - br label %"$have_gas_401" + br label %"$have_gas_417" -"$have_gas_401": ; preds = %"$out_of_gas_400", %entry - %"$consume_402" = sub i64 %"$gasrem_398", 1 - store i64 %"$consume_402", i64* @_gasrem +"$have_gas_417": ; preds = %"$out_of_gas_416", %entry + %"$consume_418" = sub i64 %"$gasrem_414", 1 + store i64 %"$consume_418", i64* @_gasrem %tname = alloca %String - %"$gasrem_403" = load i64, i64* @_gasrem - %"$gascmp_404" = icmp ugt i64 1, %"$gasrem_403" - br i1 %"$gascmp_404", label %"$out_of_gas_405", label %"$have_gas_406" - -"$out_of_gas_405": ; preds = %"$have_gas_401" - call void @_out_of_gas() - br label %"$have_gas_406" - -"$have_gas_406": ; preds = %"$out_of_gas_405", %"$have_gas_401" - %"$consume_407" = sub i64 %"$gasrem_403", 1 - store i64 %"$consume_407", i64* @_gasrem - store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_408", i32 0, i32 0), i32 2 }, %String* %tname - %f = alloca %String - %"$execptr_load_409" = load i8*, i8** @_execptr - %"$f_411" = call i8* @_fetch_field(i8* %"$execptr_load_409", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_s1_410", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_49", i32 0, i8* null, i32 1) - %"$f_412" = bitcast i8* %"$f_411" to %String* - %"$f_413" = load %String, %String* %"$f_412" - store %String %"$f_413", %String* %f - %"$_literal_cost_f_414" = alloca %String - %"$f_415" = load %String, %String* %f - store %String %"$f_415", %String* %"$_literal_cost_f_414" - %"$$_literal_cost_f_414_416" = bitcast %String* %"$_literal_cost_f_414" to i8* - %"$_literal_cost_call_417" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_49", i8* %"$$_literal_cost_f_414_416") - %"$gasadd_418" = add i64 %"$_literal_cost_call_417", 0 %"$gasrem_419" = load i64, i64* @_gasrem - %"$gascmp_420" = icmp ugt i64 %"$gasadd_418", %"$gasrem_419" + %"$gascmp_420" = icmp ugt i64 1, %"$gasrem_419" br i1 %"$gascmp_420", label %"$out_of_gas_421", label %"$have_gas_422" -"$out_of_gas_421": ; preds = %"$have_gas_406" +"$out_of_gas_421": ; preds = %"$have_gas_417" call void @_out_of_gas() br label %"$have_gas_422" -"$have_gas_422": ; preds = %"$out_of_gas_421", %"$have_gas_406" - %"$consume_423" = sub i64 %"$gasrem_419", %"$gasadd_418" +"$have_gas_422": ; preds = %"$out_of_gas_421", %"$have_gas_417" + %"$consume_423" = sub i64 %"$gasrem_419", 1 store i64 %"$consume_423", i64* @_gasrem - %"$gasrem_424" = load i64, i64* @_gasrem - %"$gascmp_425" = icmp ugt i64 1, %"$gasrem_424" - br i1 %"$gascmp_425", label %"$out_of_gas_426", label %"$have_gas_427" - -"$out_of_gas_426": ; preds = %"$have_gas_422" - call void @_out_of_gas() - br label %"$have_gas_427" - -"$have_gas_427": ; preds = %"$out_of_gas_426", %"$have_gas_422" - %"$consume_428" = sub i64 %"$gasrem_424", 1 - store i64 %"$consume_428", i64* @_gasrem - %s = alloca %String - %"$gasrem_429" = load i64, i64* @_gasrem - %"$gascmp_430" = icmp ugt i64 1, %"$gasrem_429" - br i1 %"$gascmp_430", label %"$out_of_gas_431", label %"$have_gas_432" - -"$out_of_gas_431": ; preds = %"$have_gas_427" - call void @_out_of_gas() - br label %"$have_gas_432" - -"$have_gas_432": ; preds = %"$out_of_gas_431", %"$have_gas_427" - %"$consume_433" = sub i64 %"$gasrem_429", 1 - store i64 %"$consume_433", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_434", i32 0, i32 0), i32 3 }, %String* %s + store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_424", i32 0, i32 0), i32 2 }, %String* %tname + %f = alloca %String + %"$execptr_load_425" = load i8*, i8** @_execptr + %"$f_427" = call i8* @_fetch_field(i8* %"$execptr_load_425", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_s1_426", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_49", i32 0, i8* null, i32 1) + %"$f_428" = bitcast i8* %"$f_427" to %String* + %"$f_429" = load %String, %String* %"$f_428" + store %String %"$f_429", %String* %f + %"$_literal_cost_f_430" = alloca %String + %"$f_431" = load %String, %String* %f + store %String %"$f_431", %String* %"$_literal_cost_f_430" + %"$$_literal_cost_f_430_432" = bitcast %String* %"$_literal_cost_f_430" to i8* + %"$_literal_cost_call_433" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_49", i8* %"$$_literal_cost_f_430_432") + %"$gasadd_434" = add i64 %"$_literal_cost_call_433", 0 %"$gasrem_435" = load i64, i64* @_gasrem - %"$gascmp_436" = icmp ugt i64 1, %"$gasrem_435" + %"$gascmp_436" = icmp ugt i64 %"$gasadd_434", %"$gasrem_435" br i1 %"$gascmp_436", label %"$out_of_gas_437", label %"$have_gas_438" -"$out_of_gas_437": ; preds = %"$have_gas_432" +"$out_of_gas_437": ; preds = %"$have_gas_422" call void @_out_of_gas() br label %"$have_gas_438" -"$have_gas_438": ; preds = %"$out_of_gas_437", %"$have_gas_432" - %"$consume_439" = sub i64 %"$gasrem_435", 1 +"$have_gas_438": ; preds = %"$out_of_gas_437", %"$have_gas_422" + %"$consume_439" = sub i64 %"$gasrem_435", %"$gasadd_434" store i64 %"$consume_439", i64* @_gasrem - %t = alloca %TName_Bool* - %"$execptr_load_440" = load i8*, i8** @_execptr - %"$f_441" = load %String, %String* %f - %"$s_442" = load %String, %String* %s - %"$eq_call_443" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_440", %String %"$f_441", %String %"$s_442") - store %TName_Bool* %"$eq_call_443", %TName_Bool** %t - %"$gasrem_444" = load i64, i64* @_gasrem - %"$gascmp_445" = icmp ugt i64 2, %"$gasrem_444" - br i1 %"$gascmp_445", label %"$out_of_gas_446", label %"$have_gas_447" - -"$out_of_gas_446": ; preds = %"$have_gas_438" - call void @_out_of_gas() - br label %"$have_gas_447" - -"$have_gas_447": ; preds = %"$out_of_gas_446", %"$have_gas_438" - %"$consume_448" = sub i64 %"$gasrem_444", 2 - store i64 %"$consume_448", i64* @_gasrem - %"$t_450" = load %TName_Bool*, %TName_Bool** %t - %"$t_tag_451" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$t_450", i32 0, i32 0 - %"$t_tag_452" = load i8, i8* %"$t_tag_451" - switch i8 %"$t_tag_452", label %"$empty_default_453" [ - i8 1, label %"$False_454" - i8 0, label %"$True_463" - ] + %"$gasrem_440" = load i64, i64* @_gasrem + %"$gascmp_441" = icmp ugt i64 1, %"$gasrem_440" + br i1 %"$gascmp_441", label %"$out_of_gas_442", label %"$have_gas_443" -"$False_454": ; preds = %"$have_gas_447" - %"$t_455" = bitcast %TName_Bool* %"$t_450" to %CName_False* - %"$gasrem_456" = load i64, i64* @_gasrem - %"$gascmp_457" = icmp ugt i64 1, %"$gasrem_456" - br i1 %"$gascmp_457", label %"$out_of_gas_458", label %"$have_gas_459" - -"$out_of_gas_458": ; preds = %"$False_454" +"$out_of_gas_442": ; preds = %"$have_gas_438" call void @_out_of_gas() - br label %"$have_gas_459" - -"$have_gas_459": ; preds = %"$out_of_gas_458", %"$False_454" - %"$consume_460" = sub i64 %"$gasrem_456", 1 - store i64 %"$consume_460", i64* @_gasrem - %"$fail__sender_461" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_461" - %"$tname_462" = load %String, %String* %tname - call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_461", %String %"$tname_462") - br label %"$matchsucc_449" + br label %"$have_gas_443" -"$True_463": ; preds = %"$have_gas_447" - %"$t_464" = bitcast %TName_Bool* %"$t_450" to %CName_True* - br label %"$matchsucc_449" +"$have_gas_443": ; preds = %"$out_of_gas_442", %"$have_gas_438" + %"$consume_444" = sub i64 %"$gasrem_440", 1 + store i64 %"$consume_444", i64* @_gasrem + %s = alloca %String + %"$gasrem_445" = load i64, i64* @_gasrem + %"$gascmp_446" = icmp ugt i64 1, %"$gasrem_445" + br i1 %"$gascmp_446", label %"$out_of_gas_447", label %"$have_gas_448" -"$empty_default_453": ; preds = %"$have_gas_447" - br label %"$matchsucc_449" +"$out_of_gas_447": ; preds = %"$have_gas_443" + call void @_out_of_gas() + br label %"$have_gas_448" -"$matchsucc_449": ; preds = %"$True_463", %"$have_gas_459", %"$empty_default_453" - %"$gasrem_465" = load i64, i64* @_gasrem - %"$gascmp_466" = icmp ugt i64 1, %"$gasrem_465" - br i1 %"$gascmp_466", label %"$out_of_gas_467", label %"$have_gas_468" +"$have_gas_448": ; preds = %"$out_of_gas_447", %"$have_gas_443" + %"$consume_449" = sub i64 %"$gasrem_445", 1 + store i64 %"$consume_449", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_450", i32 0, i32 0), i32 3 }, %String* %s + %"$gasrem_451" = load i64, i64* @_gasrem + %"$gascmp_452" = icmp ugt i64 1, %"$gasrem_451" + br i1 %"$gascmp_452", label %"$out_of_gas_453", label %"$have_gas_454" -"$out_of_gas_467": ; preds = %"$matchsucc_449" +"$out_of_gas_453": ; preds = %"$have_gas_448" call void @_out_of_gas() - br label %"$have_gas_468" + br label %"$have_gas_454" -"$have_gas_468": ; preds = %"$out_of_gas_467", %"$matchsucc_449" - %"$consume_469" = sub i64 %"$gasrem_465", 1 - store i64 %"$consume_469", i64* @_gasrem - %key1 = alloca %String - %"$gasrem_470" = load i64, i64* @_gasrem - %"$gascmp_471" = icmp ugt i64 1, %"$gasrem_470" - br i1 %"$gascmp_471", label %"$out_of_gas_472", label %"$have_gas_473" +"$have_gas_454": ; preds = %"$out_of_gas_453", %"$have_gas_448" + %"$consume_455" = sub i64 %"$gasrem_451", 1 + store i64 %"$consume_455", i64* @_gasrem + %t = alloca %TName_Bool* + %"$execptr_load_456" = load i8*, i8** @_execptr + %"$f_457" = load %String, %String* %f + %"$s_458" = load %String, %String* %s + %"$eq_call_459" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_456", %String %"$f_457", %String %"$s_458") + store %TName_Bool* %"$eq_call_459", %TName_Bool** %t + %"$gasrem_460" = load i64, i64* @_gasrem + %"$gascmp_461" = icmp ugt i64 2, %"$gasrem_460" + br i1 %"$gascmp_461", label %"$out_of_gas_462", label %"$have_gas_463" + +"$out_of_gas_462": ; preds = %"$have_gas_454" + call void @_out_of_gas() + br label %"$have_gas_463" + +"$have_gas_463": ; preds = %"$out_of_gas_462", %"$have_gas_454" + %"$consume_464" = sub i64 %"$gasrem_460", 2 + store i64 %"$consume_464", i64* @_gasrem + %"$t_466" = load %TName_Bool*, %TName_Bool** %t + %"$t_tag_467" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$t_466", i32 0, i32 0 + %"$t_tag_468" = load i8, i8* %"$t_tag_467" + switch i8 %"$t_tag_468", label %"$empty_default_469" [ + i8 1, label %"$False_470" + i8 0, label %"$True_479" + ] -"$out_of_gas_472": ; preds = %"$have_gas_468" +"$False_470": ; preds = %"$have_gas_463" + %"$t_471" = bitcast %TName_Bool* %"$t_466" to %CName_False* + %"$gasrem_472" = load i64, i64* @_gasrem + %"$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 = %"$False_470" call void @_out_of_gas() - br label %"$have_gas_473" + br label %"$have_gas_475" -"$have_gas_473": ; preds = %"$out_of_gas_472", %"$have_gas_468" - %"$consume_474" = sub i64 %"$gasrem_470", 1 - store i64 %"$consume_474", i64* @_gasrem - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_475", i32 0, i32 0), i32 4 }, %String* %key1 - %"$gasrem_476" = load i64, i64* @_gasrem - %"$gascmp_477" = icmp ugt i64 1, %"$gasrem_476" - br i1 %"$gascmp_477", label %"$out_of_gas_478", label %"$have_gas_479" +"$have_gas_475": ; preds = %"$out_of_gas_474", %"$False_470" + %"$consume_476" = sub i64 %"$gasrem_472", 1 + store i64 %"$consume_476", i64* @_gasrem + %"$fail__sender_477" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_477" + %"$tname_478" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_477", %String %"$tname_478") + br label %"$matchsucc_465" -"$out_of_gas_478": ; preds = %"$have_gas_473" - call void @_out_of_gas() - br label %"$have_gas_479" +"$True_479": ; preds = %"$have_gas_463" + %"$t_480" = bitcast %TName_Bool* %"$t_466" to %CName_True* + br label %"$matchsucc_465" -"$have_gas_479": ; preds = %"$out_of_gas_478", %"$have_gas_473" - %"$consume_480" = sub i64 %"$gasrem_476", 1 - store i64 %"$consume_480", i64* @_gasrem - %val1 = alloca %String +"$empty_default_469": ; preds = %"$have_gas_463" + br label %"$matchsucc_465" + +"$matchsucc_465": ; preds = %"$True_479", %"$have_gas_475", %"$empty_default_469" %"$gasrem_481" = load i64, i64* @_gasrem %"$gascmp_482" = icmp ugt i64 1, %"$gasrem_481" br i1 %"$gascmp_482", label %"$out_of_gas_483", label %"$have_gas_484" -"$out_of_gas_483": ; preds = %"$have_gas_479" +"$out_of_gas_483": ; preds = %"$matchsucc_465" call void @_out_of_gas() br label %"$have_gas_484" -"$have_gas_484": ; preds = %"$out_of_gas_483", %"$have_gas_479" +"$have_gas_484": ; preds = %"$out_of_gas_483", %"$matchsucc_465" %"$consume_485" = sub i64 %"$gasrem_481", 1 store i64 %"$consume_485", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_486", i32 0, i32 0), i32 3 }, %String* %val1 - %"$_literal_cost_val1_487" = alloca %String - %"$val1_488" = load %String, %String* %val1 - store %String %"$val1_488", %String* %"$_literal_cost_val1_487" - %"$$_literal_cost_val1_487_489" = bitcast %String* %"$_literal_cost_val1_487" to i8* - %"$_literal_cost_call_490" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_49", i8* %"$$_literal_cost_val1_487_489") - %"$gasadd_491" = add i64 %"$_literal_cost_call_490", 1 + %key1 = alloca %String + %"$gasrem_486" = load i64, i64* @_gasrem + %"$gascmp_487" = icmp ugt i64 1, %"$gasrem_486" + br i1 %"$gascmp_487", label %"$out_of_gas_488", label %"$have_gas_489" + +"$out_of_gas_488": ; preds = %"$have_gas_484" + call void @_out_of_gas() + br label %"$have_gas_489" + +"$have_gas_489": ; preds = %"$out_of_gas_488", %"$have_gas_484" + %"$consume_490" = sub i64 %"$gasrem_486", 1 + store i64 %"$consume_490", i64* @_gasrem + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_491", i32 0, i32 0), i32 4 }, %String* %key1 %"$gasrem_492" = load i64, i64* @_gasrem - %"$gascmp_493" = icmp ugt i64 %"$gasadd_491", %"$gasrem_492" + %"$gascmp_493" = icmp ugt i64 1, %"$gasrem_492" br i1 %"$gascmp_493", label %"$out_of_gas_494", label %"$have_gas_495" -"$out_of_gas_494": ; preds = %"$have_gas_484" +"$out_of_gas_494": ; preds = %"$have_gas_489" call void @_out_of_gas() br label %"$have_gas_495" -"$have_gas_495": ; preds = %"$out_of_gas_494", %"$have_gas_484" - %"$consume_496" = sub i64 %"$gasrem_492", %"$gasadd_491" +"$have_gas_495": ; preds = %"$out_of_gas_494", %"$have_gas_489" + %"$consume_496" = sub i64 %"$gasrem_492", 1 store i64 %"$consume_496", i64* @_gasrem - %"$indices_buf_497_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_497_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_497_salloc_load", i64 16) - %"$indices_buf_497_salloc" = bitcast i8* %"$indices_buf_497_salloc_salloc" to [16 x i8]* - %"$indices_buf_497" = bitcast [16 x i8]* %"$indices_buf_497_salloc" to i8* - %"$key1_498" = load %String, %String* %key1 - %"$indices_gep_499" = getelementptr i8, i8* %"$indices_buf_497", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_499" to %String* - store %String %"$key1_498", %String* %indices_cast - %"$execptr_load_500" = load i8*, i8** @_execptr - %"$val1_502" = load %String, %String* %val1 - %"$update_value_503" = alloca %String - store %String %"$val1_502", %String* %"$update_value_503" - %"$update_value_504" = bitcast %String* %"$update_value_503" to i8* - call void @_update_field(i8* %"$execptr_load_500", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_501", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_497", i8* %"$update_value_504") + %val1 = alloca %String + %"$gasrem_497" = load i64, i64* @_gasrem + %"$gascmp_498" = icmp ugt i64 1, %"$gasrem_497" + br i1 %"$gascmp_498", label %"$out_of_gas_499", label %"$have_gas_500" + +"$out_of_gas_499": ; preds = %"$have_gas_495" + call void @_out_of_gas() + br label %"$have_gas_500" + +"$have_gas_500": ; preds = %"$out_of_gas_499", %"$have_gas_495" + %"$consume_501" = sub i64 %"$gasrem_497", 1 + store i64 %"$consume_501", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_502", i32 0, i32 0), i32 3 }, %String* %val1 + %"$_literal_cost_val1_503" = alloca %String + %"$val1_504" = load %String, %String* %val1 + store %String %"$val1_504", %String* %"$_literal_cost_val1_503" + %"$$_literal_cost_val1_503_505" = bitcast %String* %"$_literal_cost_val1_503" to i8* + %"$_literal_cost_call_506" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_49", i8* %"$$_literal_cost_val1_503_505") + %"$gasadd_507" = add i64 %"$_literal_cost_call_506", 1 + %"$gasrem_508" = load i64, i64* @_gasrem + %"$gascmp_509" = icmp ugt i64 %"$gasadd_507", %"$gasrem_508" + br i1 %"$gascmp_509", label %"$out_of_gas_510", label %"$have_gas_511" + +"$out_of_gas_510": ; preds = %"$have_gas_500" + call void @_out_of_gas() + br label %"$have_gas_511" + +"$have_gas_511": ; preds = %"$out_of_gas_510", %"$have_gas_500" + %"$consume_512" = sub i64 %"$gasrem_508", %"$gasadd_507" + store i64 %"$consume_512", i64* @_gasrem + %"$indices_buf_513_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_513_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_513_salloc_load", i64 16) + %"$indices_buf_513_salloc" = bitcast i8* %"$indices_buf_513_salloc_salloc" to [16 x i8]* + %"$indices_buf_513" = bitcast [16 x i8]* %"$indices_buf_513_salloc" to i8* + %"$key1_514" = load %String, %String* %key1 + %"$indices_gep_515" = getelementptr i8, i8* %"$indices_buf_513", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_515" to %String* + store %String %"$key1_514", %String* %indices_cast + %"$execptr_load_516" = load i8*, i8** @_execptr + %"$val1_518" = load %String, %String* %val1 + %"$update_value_519" = alloca %String + store %String %"$val1_518", %String* %"$update_value_519" + %"$update_value_520" = bitcast %String* %"$update_value_519" to i8* + call void @_update_field(i8* %"$execptr_load_516", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_517", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_513", i8* %"$update_value_520") ret void } define void @t2(i8* %0) { entry: - %"$_amount_506" = getelementptr i8, i8* %0, i32 0 - %"$_amount_507" = bitcast i8* %"$_amount_506" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_507" - %"$_sender_508" = getelementptr i8, i8* %0, i32 16 - %"$_sender_509" = bitcast i8* %"$_sender_508" to [20 x i8]* - call void @"$t2_396"(%Uint128 %_amount, [20 x i8]* %"$_sender_509") + %"$_amount_522" = getelementptr i8, i8* %0, i32 0 + %"$_amount_523" = bitcast i8* %"$_amount_522" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_523" + %"$_sender_524" = getelementptr i8, i8* %0, i32 16 + %"$_sender_525" = bitcast i8* %"$_sender_524" to [20 x i8]* + call void @"$t2_412"(%Uint128 %_amount, [20 x i8]* %"$_sender_525") ret void } -define internal void @"$t3_510"(%Uint128 %_amount, [20 x i8]* %"$_sender_511") { +define internal void @"$t3_526"(%Uint128 %_amount, [20 x i8]* %"$_sender_527") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_511" - %"$gasrem_512" = load i64, i64* @_gasrem - %"$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 = %entry - call void @_out_of_gas() - br label %"$have_gas_515" - -"$have_gas_515": ; preds = %"$out_of_gas_514", %entry - %"$consume_516" = sub i64 %"$gasrem_512", 1 - store i64 %"$consume_516", i64* @_gasrem - %tname = alloca %String - %"$gasrem_517" = load i64, i64* @_gasrem - %"$gascmp_518" = icmp ugt i64 1, %"$gasrem_517" - br i1 %"$gascmp_518", label %"$out_of_gas_519", label %"$have_gas_520" - -"$out_of_gas_519": ; preds = %"$have_gas_515" - call void @_out_of_gas() - br label %"$have_gas_520" - -"$have_gas_520": ; preds = %"$out_of_gas_519", %"$have_gas_515" - %"$consume_521" = sub i64 %"$gasrem_517", 1 - store i64 %"$consume_521", i64* @_gasrem - store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_522", i32 0, i32 0), i32 2 }, %String* %tname - %"$gasrem_523" = load i64, i64* @_gasrem - %"$gascmp_524" = icmp ugt i64 1, %"$gasrem_523" - br i1 %"$gascmp_524", label %"$out_of_gas_525", label %"$have_gas_526" - -"$out_of_gas_525": ; preds = %"$have_gas_520" - call void @_out_of_gas() - br label %"$have_gas_526" - -"$have_gas_526": ; preds = %"$out_of_gas_525", %"$have_gas_520" - %"$consume_527" = sub i64 %"$gasrem_523", 1 - store i64 %"$consume_527", i64* @_gasrem - %s = alloca %String + %_sender = load [20 x i8], [20 x i8]* %"$_sender_527" %"$gasrem_528" = load i64, i64* @_gasrem %"$gascmp_529" = icmp ugt i64 1, %"$gasrem_528" br i1 %"$gascmp_529", label %"$out_of_gas_530", label %"$have_gas_531" -"$out_of_gas_530": ; preds = %"$have_gas_526" +"$out_of_gas_530": ; preds = %entry call void @_out_of_gas() br label %"$have_gas_531" -"$have_gas_531": ; preds = %"$out_of_gas_530", %"$have_gas_526" +"$have_gas_531": ; preds = %"$out_of_gas_530", %entry %"$consume_532" = sub i64 %"$gasrem_528", 1 store i64 %"$consume_532", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_533", i32 0, i32 0), i32 3 }, %String* %s - %"$gasrem_534" = load i64, i64* @_gasrem - %"$gascmp_535" = icmp ugt i64 1, %"$gasrem_534" - br i1 %"$gascmp_535", label %"$out_of_gas_536", label %"$have_gas_537" + %tname = alloca %String + %"$gasrem_533" = load i64, i64* @_gasrem + %"$gascmp_534" = icmp ugt i64 1, %"$gasrem_533" + br i1 %"$gascmp_534", label %"$out_of_gas_535", label %"$have_gas_536" -"$out_of_gas_536": ; preds = %"$have_gas_531" +"$out_of_gas_535": ; preds = %"$have_gas_531" call void @_out_of_gas() - br label %"$have_gas_537" + br label %"$have_gas_536" -"$have_gas_537": ; preds = %"$out_of_gas_536", %"$have_gas_531" - %"$consume_538" = sub i64 %"$gasrem_534", 1 - store i64 %"$consume_538", i64* @_gasrem - %key1 = alloca %String +"$have_gas_536": ; preds = %"$out_of_gas_535", %"$have_gas_531" + %"$consume_537" = sub i64 %"$gasrem_533", 1 + store i64 %"$consume_537", i64* @_gasrem + store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_538", i32 0, i32 0), i32 2 }, %String* %tname %"$gasrem_539" = load i64, i64* @_gasrem %"$gascmp_540" = icmp ugt i64 1, %"$gasrem_539" br i1 %"$gascmp_540", label %"$out_of_gas_541", label %"$have_gas_542" -"$out_of_gas_541": ; preds = %"$have_gas_537" +"$out_of_gas_541": ; preds = %"$have_gas_536" call void @_out_of_gas() br label %"$have_gas_542" -"$have_gas_542": ; preds = %"$out_of_gas_541", %"$have_gas_537" +"$have_gas_542": ; preds = %"$out_of_gas_541", %"$have_gas_536" %"$consume_543" = sub i64 %"$gasrem_539", 1 store i64 %"$consume_543", i64* @_gasrem - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_544", i32 0, i32 0), i32 4 }, %String* %key1 + %s = alloca %String + %"$gasrem_544" = load i64, i64* @_gasrem + %"$gascmp_545" = icmp ugt i64 1, %"$gasrem_544" + br i1 %"$gascmp_545", label %"$out_of_gas_546", label %"$have_gas_547" + +"$out_of_gas_546": ; preds = %"$have_gas_542" + call void @_out_of_gas() + br label %"$have_gas_547" + +"$have_gas_547": ; preds = %"$out_of_gas_546", %"$have_gas_542" + %"$consume_548" = sub i64 %"$gasrem_544", 1 + store i64 %"$consume_548", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_549", i32 0, i32 0), i32 3 }, %String* %s + %"$gasrem_550" = load i64, i64* @_gasrem + %"$gascmp_551" = icmp ugt i64 1, %"$gasrem_550" + br i1 %"$gascmp_551", label %"$out_of_gas_552", label %"$have_gas_553" + +"$out_of_gas_552": ; preds = %"$have_gas_547" + call void @_out_of_gas() + br label %"$have_gas_553" + +"$have_gas_553": ; preds = %"$out_of_gas_552", %"$have_gas_547" + %"$consume_554" = sub i64 %"$gasrem_550", 1 + store i64 %"$consume_554", i64* @_gasrem + %key1 = alloca %String + %"$gasrem_555" = load i64, i64* @_gasrem + %"$gascmp_556" = icmp ugt i64 1, %"$gasrem_555" + br i1 %"$gascmp_556", label %"$out_of_gas_557", label %"$have_gas_558" + +"$out_of_gas_557": ; preds = %"$have_gas_553" + call void @_out_of_gas() + br label %"$have_gas_558" + +"$have_gas_558": ; preds = %"$out_of_gas_557", %"$have_gas_553" + %"$consume_559" = sub i64 %"$gasrem_555", 1 + store i64 %"$consume_559", i64* @_gasrem + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_560", i32 0, i32 0), i32 4 }, %String* %key1 %val1 = alloca %TName_Option_String* - %"$indices_buf_545_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_545_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_545_salloc_load", i64 16) - %"$indices_buf_545_salloc" = bitcast i8* %"$indices_buf_545_salloc_salloc" to [16 x i8]* - %"$indices_buf_545" = bitcast [16 x i8]* %"$indices_buf_545_salloc" to i8* - %"$key1_546" = load %String, %String* %key1 - %"$indices_gep_547" = getelementptr i8, i8* %"$indices_buf_545", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_547" to %String* - store %String %"$key1_546", %String* %indices_cast - %"$execptr_load_548" = load i8*, i8** @_execptr - %"$val1_550" = call i8* @_fetch_field(i8* %"$execptr_load_548", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_549", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_545", i32 1) - %"$val1_551" = bitcast i8* %"$val1_550" to %TName_Option_String* - store %TName_Option_String* %"$val1_551", %TName_Option_String** %val1 - %"$val1_552" = load %TName_Option_String*, %TName_Option_String** %val1 - %"$$val1_552_553" = bitcast %TName_Option_String* %"$val1_552" to i8* - %"$_literal_cost_call_554" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$val1_552_553") - %"$gasadd_555" = add i64 %"$_literal_cost_call_554", 0 - %"$gasadd_556" = add i64 %"$gasadd_555", 1 - %"$gasrem_557" = load i64, i64* @_gasrem - %"$gascmp_558" = icmp ugt i64 %"$gasadd_556", %"$gasrem_557" - br i1 %"$gascmp_558", label %"$out_of_gas_559", label %"$have_gas_560" - -"$out_of_gas_559": ; preds = %"$have_gas_542" - call void @_out_of_gas() - br label %"$have_gas_560" - -"$have_gas_560": ; preds = %"$out_of_gas_559", %"$have_gas_542" - %"$consume_561" = sub i64 %"$gasrem_557", %"$gasadd_556" - store i64 %"$consume_561", i64* @_gasrem - %"$gasrem_562" = load i64, i64* @_gasrem - %"$gascmp_563" = icmp ugt i64 2, %"$gasrem_562" - br i1 %"$gascmp_563", label %"$out_of_gas_564", label %"$have_gas_565" - -"$out_of_gas_564": ; preds = %"$have_gas_560" - call void @_out_of_gas() - br label %"$have_gas_565" - -"$have_gas_565": ; preds = %"$out_of_gas_564", %"$have_gas_560" - %"$consume_566" = sub i64 %"$gasrem_562", 2 - store i64 %"$consume_566", i64* @_gasrem + %"$indices_buf_561_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_561_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_561_salloc_load", i64 16) + %"$indices_buf_561_salloc" = bitcast i8* %"$indices_buf_561_salloc_salloc" to [16 x i8]* + %"$indices_buf_561" = bitcast [16 x i8]* %"$indices_buf_561_salloc" to i8* + %"$key1_562" = load %String, %String* %key1 + %"$indices_gep_563" = getelementptr i8, i8* %"$indices_buf_561", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_563" to %String* + store %String %"$key1_562", %String* %indices_cast + %"$execptr_load_564" = load i8*, i8** @_execptr + %"$val1_566" = call i8* @_fetch_field(i8* %"$execptr_load_564", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_565", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_561", i32 1) + %"$val1_567" = bitcast i8* %"$val1_566" to %TName_Option_String* + store %TName_Option_String* %"$val1_567", %TName_Option_String** %val1 %"$val1_568" = load %TName_Option_String*, %TName_Option_String** %val1 - %"$val1_tag_569" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$val1_568", i32 0, i32 0 - %"$val1_tag_570" = load i8, i8* %"$val1_tag_569" - switch i8 %"$val1_tag_570", label %"$empty_default_571" [ - i8 0, label %"$Some_572" - i8 1, label %"$None_618" + %"$$val1_568_569" = bitcast %TName_Option_String* %"$val1_568" to i8* + %"$_literal_cost_call_570" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$val1_568_569") + %"$gasadd_571" = add i64 %"$_literal_cost_call_570", 0 + %"$gasadd_572" = add i64 %"$gasadd_571", 1 + %"$gasrem_573" = load i64, i64* @_gasrem + %"$gascmp_574" = icmp ugt i64 %"$gasadd_572", %"$gasrem_573" + br i1 %"$gascmp_574", label %"$out_of_gas_575", label %"$have_gas_576" + +"$out_of_gas_575": ; preds = %"$have_gas_558" + call void @_out_of_gas() + br label %"$have_gas_576" + +"$have_gas_576": ; preds = %"$out_of_gas_575", %"$have_gas_558" + %"$consume_577" = sub i64 %"$gasrem_573", %"$gasadd_572" + store i64 %"$consume_577", i64* @_gasrem + %"$gasrem_578" = load i64, i64* @_gasrem + %"$gascmp_579" = icmp ugt i64 2, %"$gasrem_578" + br i1 %"$gascmp_579", label %"$out_of_gas_580", label %"$have_gas_581" + +"$out_of_gas_580": ; preds = %"$have_gas_576" + call void @_out_of_gas() + br label %"$have_gas_581" + +"$have_gas_581": ; preds = %"$out_of_gas_580", %"$have_gas_576" + %"$consume_582" = sub i64 %"$gasrem_578", 2 + store i64 %"$consume_582", i64* @_gasrem + %"$val1_584" = load %TName_Option_String*, %TName_Option_String** %val1 + %"$val1_tag_585" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$val1_584", i32 0, i32 0 + %"$val1_tag_586" = load i8, i8* %"$val1_tag_585" + switch i8 %"$val1_tag_586", label %"$empty_default_587" [ + i8 0, label %"$Some_588" + i8 1, label %"$None_634" ] -"$Some_572": ; preds = %"$have_gas_565" - %"$val1_573" = bitcast %TName_Option_String* %"$val1_568" to %CName_Some_String* - %"$val_gep_574" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$val1_573", i32 0, i32 1 - %"$val_load_575" = load %String, %String* %"$val_gep_574" +"$Some_588": ; preds = %"$have_gas_581" + %"$val1_589" = bitcast %TName_Option_String* %"$val1_584" to %CName_Some_String* + %"$val_gep_590" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$val1_589", i32 0, i32 1 + %"$val_load_591" = load %String, %String* %"$val_gep_590" %val = alloca %String - store %String %"$val_load_575", %String* %val - %"$gasrem_576" = load i64, i64* @_gasrem - %"$gascmp_577" = icmp ugt i64 1, %"$gasrem_576" - br i1 %"$gascmp_577", label %"$out_of_gas_578", label %"$have_gas_579" + store %String %"$val_load_591", %String* %val + %"$gasrem_592" = load i64, i64* @_gasrem + %"$gascmp_593" = icmp ugt i64 1, %"$gasrem_592" + br i1 %"$gascmp_593", label %"$out_of_gas_594", label %"$have_gas_595" -"$out_of_gas_578": ; preds = %"$Some_572" +"$out_of_gas_594": ; preds = %"$Some_588" call void @_out_of_gas() - br label %"$have_gas_579" + br label %"$have_gas_595" -"$have_gas_579": ; preds = %"$out_of_gas_578", %"$Some_572" - %"$consume_580" = sub i64 %"$gasrem_576", 1 - store i64 %"$consume_580", i64* @_gasrem +"$have_gas_595": ; preds = %"$out_of_gas_594", %"$Some_588" + %"$consume_596" = sub i64 %"$gasrem_592", 1 + store i64 %"$consume_596", i64* @_gasrem %t = alloca %TName_Bool* - %"$execptr_load_581" = load i8*, i8** @_execptr - %"$val_582" = load %String, %String* %val - %"$s_583" = load %String, %String* %s - %"$eq_call_584" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_581", %String %"$val_582", %String %"$s_583") - store %TName_Bool* %"$eq_call_584", %TName_Bool** %t - %"$gasrem_585" = load i64, i64* @_gasrem - %"$gascmp_586" = icmp ugt i64 2, %"$gasrem_585" - br i1 %"$gascmp_586", label %"$out_of_gas_587", label %"$have_gas_588" - -"$out_of_gas_587": ; preds = %"$have_gas_579" - call void @_out_of_gas() - br label %"$have_gas_588" - -"$have_gas_588": ; preds = %"$out_of_gas_587", %"$have_gas_579" - %"$consume_589" = sub i64 %"$gasrem_585", 2 - store i64 %"$consume_589", i64* @_gasrem - %"$t_591" = load %TName_Bool*, %TName_Bool** %t - %"$t_tag_592" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$t_591", i32 0, i32 0 - %"$t_tag_593" = load i8, i8* %"$t_tag_592" - switch i8 %"$t_tag_593", label %"$empty_default_594" [ - i8 1, label %"$False_595" - i8 0, label %"$True_616" + %"$execptr_load_597" = load i8*, i8** @_execptr + %"$val_598" = load %String, %String* %val + %"$s_599" = load %String, %String* %s + %"$eq_call_600" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_597", %String %"$val_598", %String %"$s_599") + store %TName_Bool* %"$eq_call_600", %TName_Bool** %t + %"$gasrem_601" = load i64, i64* @_gasrem + %"$gascmp_602" = icmp ugt i64 2, %"$gasrem_601" + br i1 %"$gascmp_602", label %"$out_of_gas_603", label %"$have_gas_604" + +"$out_of_gas_603": ; preds = %"$have_gas_595" + call void @_out_of_gas() + br label %"$have_gas_604" + +"$have_gas_604": ; preds = %"$out_of_gas_603", %"$have_gas_595" + %"$consume_605" = sub i64 %"$gasrem_601", 2 + store i64 %"$consume_605", i64* @_gasrem + %"$t_607" = load %TName_Bool*, %TName_Bool** %t + %"$t_tag_608" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$t_607", i32 0, i32 0 + %"$t_tag_609" = load i8, i8* %"$t_tag_608" + switch i8 %"$t_tag_609", label %"$empty_default_610" [ + i8 1, label %"$False_611" + i8 0, label %"$True_632" ] -"$False_595": ; preds = %"$have_gas_588" - %"$t_596" = bitcast %TName_Bool* %"$t_591" to %CName_False* - %"$gasrem_597" = load i64, i64* @_gasrem - %"$gascmp_598" = icmp ugt i64 1, %"$gasrem_597" - br i1 %"$gascmp_598", label %"$out_of_gas_599", label %"$have_gas_600" +"$False_611": ; preds = %"$have_gas_604" + %"$t_612" = bitcast %TName_Bool* %"$t_607" to %CName_False* + %"$gasrem_613" = load i64, i64* @_gasrem + %"$gascmp_614" = icmp ugt i64 1, %"$gasrem_613" + br i1 %"$gascmp_614", label %"$out_of_gas_615", label %"$have_gas_616" -"$out_of_gas_599": ; preds = %"$False_595" +"$out_of_gas_615": ; preds = %"$False_611" call void @_out_of_gas() - br label %"$have_gas_600" + br label %"$have_gas_616" -"$have_gas_600": ; preds = %"$out_of_gas_599", %"$False_595" - %"$consume_601" = sub i64 %"$gasrem_597", 1 - store i64 %"$consume_601", i64* @_gasrem +"$have_gas_616": ; preds = %"$out_of_gas_615", %"$False_611" + %"$consume_617" = sub i64 %"$gasrem_613", 1 + store i64 %"$consume_617", i64* @_gasrem %m = alloca %String - %"$gasrem_602" = load i64, i64* @_gasrem - %"$gascmp_603" = icmp ugt i64 1, %"$gasrem_602" - br i1 %"$gascmp_603", label %"$out_of_gas_604", label %"$have_gas_605" + %"$gasrem_618" = load i64, i64* @_gasrem + %"$gascmp_619" = icmp ugt i64 1, %"$gasrem_618" + br i1 %"$gascmp_619", label %"$out_of_gas_620", label %"$have_gas_621" -"$out_of_gas_604": ; preds = %"$have_gas_600" +"$out_of_gas_620": ; preds = %"$have_gas_616" call void @_out_of_gas() - br label %"$have_gas_605" + br label %"$have_gas_621" -"$have_gas_605": ; preds = %"$out_of_gas_604", %"$have_gas_600" - %"$consume_606" = sub i64 %"$gasrem_602", 1 - store i64 %"$consume_606", i64* @_gasrem - store %String { i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"$stringlit_607", i32 0, i32 0), i32 23 }, %String* %m - %"$gasrem_608" = load i64, i64* @_gasrem - %"$gascmp_609" = icmp ugt i64 1, %"$gasrem_608" - br i1 %"$gascmp_609", label %"$out_of_gas_610", label %"$have_gas_611" +"$have_gas_621": ; preds = %"$out_of_gas_620", %"$have_gas_616" + %"$consume_622" = sub i64 %"$gasrem_618", 1 + store i64 %"$consume_622", i64* @_gasrem + store %String { i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"$stringlit_623", i32 0, i32 0), i32 23 }, %String* %m + %"$gasrem_624" = load i64, i64* @_gasrem + %"$gascmp_625" = icmp ugt i64 1, %"$gasrem_624" + br i1 %"$gascmp_625", label %"$out_of_gas_626", label %"$have_gas_627" -"$out_of_gas_610": ; preds = %"$have_gas_605" +"$out_of_gas_626": ; preds = %"$have_gas_621" call void @_out_of_gas() - br label %"$have_gas_611" + br label %"$have_gas_627" -"$have_gas_611": ; preds = %"$out_of_gas_610", %"$have_gas_605" - %"$consume_612" = sub i64 %"$gasrem_608", 1 - store i64 %"$consume_612", i64* @_gasrem - %"$fail_msg__sender_613" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_613" - %"$tname_614" = load %String, %String* %tname - %"$m_615" = load %String, %String* %m - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_613", %String %"$tname_614", %String %"$m_615") - br label %"$matchsucc_590" +"$have_gas_627": ; preds = %"$out_of_gas_626", %"$have_gas_621" + %"$consume_628" = sub i64 %"$gasrem_624", 1 + store i64 %"$consume_628", i64* @_gasrem + %"$fail_msg__sender_629" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_629" + %"$tname_630" = load %String, %String* %tname + %"$m_631" = load %String, %String* %m + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_629", %String %"$tname_630", %String %"$m_631") + br label %"$matchsucc_606" -"$True_616": ; preds = %"$have_gas_588" - %"$t_617" = bitcast %TName_Bool* %"$t_591" to %CName_True* - br label %"$matchsucc_590" +"$True_632": ; preds = %"$have_gas_604" + %"$t_633" = bitcast %TName_Bool* %"$t_607" to %CName_True* + br label %"$matchsucc_606" -"$empty_default_594": ; preds = %"$have_gas_588" - br label %"$matchsucc_590" +"$empty_default_610": ; preds = %"$have_gas_604" + br label %"$matchsucc_606" -"$matchsucc_590": ; preds = %"$True_616", %"$have_gas_611", %"$empty_default_594" - br label %"$matchsucc_567" +"$matchsucc_606": ; preds = %"$True_632", %"$have_gas_627", %"$empty_default_610" + br label %"$matchsucc_583" -"$None_618": ; preds = %"$have_gas_565" - %"$val1_619" = bitcast %TName_Option_String* %"$val1_568" to %CName_None_String* - %"$gasrem_620" = load i64, i64* @_gasrem - %"$gascmp_621" = icmp ugt i64 1, %"$gasrem_620" - br i1 %"$gascmp_621", label %"$out_of_gas_622", label %"$have_gas_623" +"$None_634": ; preds = %"$have_gas_581" + %"$val1_635" = bitcast %TName_Option_String* %"$val1_584" to %CName_None_String* + %"$gasrem_636" = load i64, i64* @_gasrem + %"$gascmp_637" = icmp ugt i64 1, %"$gasrem_636" + br i1 %"$gascmp_637", label %"$out_of_gas_638", label %"$have_gas_639" -"$out_of_gas_622": ; preds = %"$None_618" +"$out_of_gas_638": ; preds = %"$None_634" call void @_out_of_gas() - br label %"$have_gas_623" + br label %"$have_gas_639" -"$have_gas_623": ; preds = %"$out_of_gas_622", %"$None_618" - %"$consume_624" = sub i64 %"$gasrem_620", 1 - store i64 %"$consume_624", i64* @_gasrem - %"$fail__sender_625" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_625" - %"$tname_626" = load %String, %String* %tname - call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_625", %String %"$tname_626") - br label %"$matchsucc_567" +"$have_gas_639": ; preds = %"$out_of_gas_638", %"$None_634" + %"$consume_640" = sub i64 %"$gasrem_636", 1 + store i64 %"$consume_640", i64* @_gasrem + %"$fail__sender_641" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_641" + %"$tname_642" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_641", %String %"$tname_642") + br label %"$matchsucc_583" -"$empty_default_571": ; preds = %"$have_gas_565" - br label %"$matchsucc_567" +"$empty_default_587": ; preds = %"$have_gas_581" + br label %"$matchsucc_583" -"$matchsucc_567": ; preds = %"$have_gas_623", %"$matchsucc_590", %"$empty_default_571" - %"$gasrem_627" = load i64, i64* @_gasrem - %"$gascmp_628" = icmp ugt i64 1, %"$gasrem_627" - br i1 %"$gascmp_628", label %"$out_of_gas_629", label %"$have_gas_630" +"$matchsucc_583": ; preds = %"$have_gas_639", %"$matchsucc_606", %"$empty_default_587" + %"$gasrem_643" = load i64, i64* @_gasrem + %"$gascmp_644" = icmp ugt i64 1, %"$gasrem_643" + br i1 %"$gascmp_644", label %"$out_of_gas_645", label %"$have_gas_646" -"$out_of_gas_629": ; preds = %"$matchsucc_567" +"$out_of_gas_645": ; preds = %"$matchsucc_583" call void @_out_of_gas() - br label %"$have_gas_630" + br label %"$have_gas_646" -"$have_gas_630": ; preds = %"$out_of_gas_629", %"$matchsucc_567" - %"$consume_631" = sub i64 %"$gasrem_627", 1 - store i64 %"$consume_631", i64* @_gasrem +"$have_gas_646": ; preds = %"$out_of_gas_645", %"$matchsucc_583" + %"$consume_647" = sub i64 %"$gasrem_643", 1 + store i64 %"$consume_647", i64* @_gasrem %key2 = alloca %String - %"$gasrem_632" = load i64, i64* @_gasrem - %"$gascmp_633" = icmp ugt i64 1, %"$gasrem_632" - br i1 %"$gascmp_633", label %"$out_of_gas_634", label %"$have_gas_635" + %"$gasrem_648" = load i64, i64* @_gasrem + %"$gascmp_649" = icmp ugt i64 1, %"$gasrem_648" + br i1 %"$gascmp_649", label %"$out_of_gas_650", label %"$have_gas_651" -"$out_of_gas_634": ; preds = %"$have_gas_630" +"$out_of_gas_650": ; preds = %"$have_gas_646" call void @_out_of_gas() - br label %"$have_gas_635" + br label %"$have_gas_651" -"$have_gas_635": ; preds = %"$out_of_gas_634", %"$have_gas_630" - %"$consume_636" = sub i64 %"$gasrem_632", 1 - store i64 %"$consume_636", i64* @_gasrem - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_637", i32 0, i32 0), i32 4 }, %String* %key2 +"$have_gas_651": ; preds = %"$out_of_gas_650", %"$have_gas_646" + %"$consume_652" = sub i64 %"$gasrem_648", 1 + store i64 %"$consume_652", i64* @_gasrem + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_653", i32 0, i32 0), i32 4 }, %String* %key2 %val2 = alloca %TName_Option_String* - %"$indices_buf_638_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_638_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_638_salloc_load", i64 16) - %"$indices_buf_638_salloc" = bitcast i8* %"$indices_buf_638_salloc_salloc" to [16 x i8]* - %"$indices_buf_638" = bitcast [16 x i8]* %"$indices_buf_638_salloc" to i8* - %"$key2_639" = load %String, %String* %key2 - %"$indices_gep_640" = getelementptr i8, i8* %"$indices_buf_638", i32 0 - %indices_cast1 = bitcast i8* %"$indices_gep_640" to %String* - store %String %"$key2_639", %String* %indices_cast1 - %"$execptr_load_641" = load i8*, i8** @_execptr - %"$val2_643" = call i8* @_fetch_field(i8* %"$execptr_load_641", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_642", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_638", i32 1) - %"$val2_644" = bitcast i8* %"$val2_643" to %TName_Option_String* - store %TName_Option_String* %"$val2_644", %TName_Option_String** %val2 - %"$val2_645" = load %TName_Option_String*, %TName_Option_String** %val2 - %"$$val2_645_646" = bitcast %TName_Option_String* %"$val2_645" to i8* - %"$_literal_cost_call_647" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$val2_645_646") - %"$gasadd_648" = add i64 %"$_literal_cost_call_647", 0 - %"$gasadd_649" = add i64 %"$gasadd_648", 1 - %"$gasrem_650" = load i64, i64* @_gasrem - %"$gascmp_651" = icmp ugt i64 %"$gasadd_649", %"$gasrem_650" - br i1 %"$gascmp_651", label %"$out_of_gas_652", label %"$have_gas_653" - -"$out_of_gas_652": ; preds = %"$have_gas_635" - call void @_out_of_gas() - br label %"$have_gas_653" - -"$have_gas_653": ; preds = %"$out_of_gas_652", %"$have_gas_635" - %"$consume_654" = sub i64 %"$gasrem_650", %"$gasadd_649" - store i64 %"$consume_654", i64* @_gasrem - %"$gasrem_655" = load i64, i64* @_gasrem - %"$gascmp_656" = icmp ugt i64 2, %"$gasrem_655" - br i1 %"$gascmp_656", label %"$out_of_gas_657", label %"$have_gas_658" - -"$out_of_gas_657": ; preds = %"$have_gas_653" - call void @_out_of_gas() - br label %"$have_gas_658" - -"$have_gas_658": ; preds = %"$out_of_gas_657", %"$have_gas_653" - %"$consume_659" = sub i64 %"$gasrem_655", 2 - store i64 %"$consume_659", i64* @_gasrem + %"$indices_buf_654_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_654_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_654_salloc_load", i64 16) + %"$indices_buf_654_salloc" = bitcast i8* %"$indices_buf_654_salloc_salloc" to [16 x i8]* + %"$indices_buf_654" = bitcast [16 x i8]* %"$indices_buf_654_salloc" to i8* + %"$key2_655" = load %String, %String* %key2 + %"$indices_gep_656" = getelementptr i8, i8* %"$indices_buf_654", i32 0 + %indices_cast1 = bitcast i8* %"$indices_gep_656" to %String* + store %String %"$key2_655", %String* %indices_cast1 + %"$execptr_load_657" = load i8*, i8** @_execptr + %"$val2_659" = call i8* @_fetch_field(i8* %"$execptr_load_657", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_658", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_654", i32 1) + %"$val2_660" = bitcast i8* %"$val2_659" to %TName_Option_String* + store %TName_Option_String* %"$val2_660", %TName_Option_String** %val2 %"$val2_661" = load %TName_Option_String*, %TName_Option_String** %val2 - %"$val2_tag_662" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$val2_661", i32 0, i32 0 - %"$val2_tag_663" = load i8, i8* %"$val2_tag_662" - switch i8 %"$val2_tag_663", label %"$empty_default_664" [ - i8 0, label %"$Some_665" - i8 1, label %"$None_688" + %"$$val2_661_662" = bitcast %TName_Option_String* %"$val2_661" to i8* + %"$_literal_cost_call_663" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$val2_661_662") + %"$gasadd_664" = add i64 %"$_literal_cost_call_663", 0 + %"$gasadd_665" = add i64 %"$gasadd_664", 1 + %"$gasrem_666" = load i64, i64* @_gasrem + %"$gascmp_667" = icmp ugt i64 %"$gasadd_665", %"$gasrem_666" + br i1 %"$gascmp_667", label %"$out_of_gas_668", label %"$have_gas_669" + +"$out_of_gas_668": ; preds = %"$have_gas_651" + call void @_out_of_gas() + br label %"$have_gas_669" + +"$have_gas_669": ; preds = %"$out_of_gas_668", %"$have_gas_651" + %"$consume_670" = sub i64 %"$gasrem_666", %"$gasadd_665" + store i64 %"$consume_670", i64* @_gasrem + %"$gasrem_671" = load i64, i64* @_gasrem + %"$gascmp_672" = icmp ugt i64 2, %"$gasrem_671" + br i1 %"$gascmp_672", label %"$out_of_gas_673", label %"$have_gas_674" + +"$out_of_gas_673": ; preds = %"$have_gas_669" + call void @_out_of_gas() + br label %"$have_gas_674" + +"$have_gas_674": ; preds = %"$out_of_gas_673", %"$have_gas_669" + %"$consume_675" = sub i64 %"$gasrem_671", 2 + store i64 %"$consume_675", i64* @_gasrem + %"$val2_677" = load %TName_Option_String*, %TName_Option_String** %val2 + %"$val2_tag_678" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$val2_677", i32 0, i32 0 + %"$val2_tag_679" = load i8, i8* %"$val2_tag_678" + switch i8 %"$val2_tag_679", label %"$empty_default_680" [ + i8 0, label %"$Some_681" + i8 1, label %"$None_704" ] -"$Some_665": ; preds = %"$have_gas_658" - %"$val2_666" = bitcast %TName_Option_String* %"$val2_661" to %CName_Some_String* - %"$$val2_12_gep_667" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$val2_666", i32 0, i32 1 - %"$$val2_12_load_668" = load %String, %String* %"$$val2_12_gep_667" +"$Some_681": ; preds = %"$have_gas_674" + %"$val2_682" = bitcast %TName_Option_String* %"$val2_677" to %CName_Some_String* + %"$$val2_12_gep_683" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$val2_682", i32 0, i32 1 + %"$$val2_12_load_684" = load %String, %String* %"$$val2_12_gep_683" %"$val2_12" = alloca %String - store %String %"$$val2_12_load_668", %String* %"$val2_12" - %"$gasrem_669" = load i64, i64* @_gasrem - %"$gascmp_670" = icmp ugt i64 1, %"$gasrem_669" - br i1 %"$gascmp_670", label %"$out_of_gas_671", label %"$have_gas_672" + store %String %"$$val2_12_load_684", %String* %"$val2_12" + %"$gasrem_685" = load i64, i64* @_gasrem + %"$gascmp_686" = icmp ugt i64 1, %"$gasrem_685" + br i1 %"$gascmp_686", label %"$out_of_gas_687", label %"$have_gas_688" -"$out_of_gas_671": ; preds = %"$Some_665" +"$out_of_gas_687": ; preds = %"$Some_681" call void @_out_of_gas() - br label %"$have_gas_672" + br label %"$have_gas_688" -"$have_gas_672": ; preds = %"$out_of_gas_671", %"$Some_665" - %"$consume_673" = sub i64 %"$gasrem_669", 1 - store i64 %"$consume_673", i64* @_gasrem +"$have_gas_688": ; preds = %"$out_of_gas_687", %"$Some_681" + %"$consume_689" = sub i64 %"$gasrem_685", 1 + store i64 %"$consume_689", i64* @_gasrem %m2 = alloca %String - %"$gasrem_674" = load i64, i64* @_gasrem - %"$gascmp_675" = icmp ugt i64 1, %"$gasrem_674" - br i1 %"$gascmp_675", label %"$out_of_gas_676", label %"$have_gas_677" - -"$out_of_gas_676": ; preds = %"$have_gas_672" - call void @_out_of_gas() - br label %"$have_gas_677" - -"$have_gas_677": ; preds = %"$out_of_gas_676", %"$have_gas_672" - %"$consume_678" = sub i64 %"$gasrem_674", 1 - store i64 %"$consume_678", i64* @_gasrem - store %String { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @"$stringlit_679", i32 0, i32 0), i32 25 }, %String* %m2 - %"$gasrem_680" = load i64, i64* @_gasrem - %"$gascmp_681" = icmp ugt i64 1, %"$gasrem_680" - br i1 %"$gascmp_681", label %"$out_of_gas_682", label %"$have_gas_683" - -"$out_of_gas_682": ; preds = %"$have_gas_677" - call void @_out_of_gas() - br label %"$have_gas_683" - -"$have_gas_683": ; preds = %"$out_of_gas_682", %"$have_gas_677" - %"$consume_684" = sub i64 %"$gasrem_680", 1 - store i64 %"$consume_684", i64* @_gasrem - %"$fail_msg__sender_685" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_685" - %"$tname_686" = load %String, %String* %tname - %"$m_687" = load %String, %String* %m2 - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_685", %String %"$tname_686", %String %"$m_687") - br label %"$matchsucc_660" - -"$None_688": ; preds = %"$have_gas_658" - %"$val2_689" = bitcast %TName_Option_String* %"$val2_661" to %CName_None_String* - br label %"$matchsucc_660" - -"$empty_default_664": ; preds = %"$have_gas_658" - br label %"$matchsucc_660" - -"$matchsucc_660": ; preds = %"$None_688", %"$have_gas_683", %"$empty_default_664" %"$gasrem_690" = load i64, i64* @_gasrem %"$gascmp_691" = icmp ugt i64 1, %"$gasrem_690" br i1 %"$gascmp_691", label %"$out_of_gas_692", label %"$have_gas_693" -"$out_of_gas_692": ; preds = %"$matchsucc_660" +"$out_of_gas_692": ; preds = %"$have_gas_688" call void @_out_of_gas() br label %"$have_gas_693" -"$have_gas_693": ; preds = %"$out_of_gas_692", %"$matchsucc_660" +"$have_gas_693": ; preds = %"$out_of_gas_692", %"$have_gas_688" %"$consume_694" = sub i64 %"$gasrem_690", 1 store i64 %"$consume_694", i64* @_gasrem - %"$indices_buf_695_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_695_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_695_salloc_load", i64 16) - %"$indices_buf_695_salloc" = bitcast i8* %"$indices_buf_695_salloc_salloc" to [16 x i8]* - %"$indices_buf_695" = bitcast [16 x i8]* %"$indices_buf_695_salloc" to i8* - %"$key1_696" = load %String, %String* %key1 - %"$indices_gep_697" = getelementptr i8, i8* %"$indices_buf_695", i32 0 - %indices_cast3 = bitcast i8* %"$indices_gep_697" to %String* - store %String %"$key1_696", %String* %indices_cast3 - %"$execptr_load_698" = load i8*, i8** @_execptr - call void @_update_field(i8* %"$execptr_load_698", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_699", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_695", i8* null) + store %String { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @"$stringlit_695", i32 0, i32 0), i32 25 }, %String* %m2 + %"$gasrem_696" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_693" + call void @_out_of_gas() + br label %"$have_gas_699" + +"$have_gas_699": ; preds = %"$out_of_gas_698", %"$have_gas_693" + %"$consume_700" = sub i64 %"$gasrem_696", 1 + store i64 %"$consume_700", i64* @_gasrem + %"$fail_msg__sender_701" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_701" + %"$tname_702" = load %String, %String* %tname + %"$m_703" = load %String, %String* %m2 + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_701", %String %"$tname_702", %String %"$m_703") + br label %"$matchsucc_676" + +"$None_704": ; preds = %"$have_gas_674" + %"$val2_705" = bitcast %TName_Option_String* %"$val2_677" to %CName_None_String* + br label %"$matchsucc_676" + +"$empty_default_680": ; preds = %"$have_gas_674" + br label %"$matchsucc_676" + +"$matchsucc_676": ; preds = %"$None_704", %"$have_gas_699", %"$empty_default_680" + %"$gasrem_706" = load i64, i64* @_gasrem + %"$gascmp_707" = icmp ugt i64 1, %"$gasrem_706" + br i1 %"$gascmp_707", label %"$out_of_gas_708", label %"$have_gas_709" + +"$out_of_gas_708": ; preds = %"$matchsucc_676" + call void @_out_of_gas() + br label %"$have_gas_709" + +"$have_gas_709": ; preds = %"$out_of_gas_708", %"$matchsucc_676" + %"$consume_710" = sub i64 %"$gasrem_706", 1 + store i64 %"$consume_710", i64* @_gasrem + %"$indices_buf_711_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_711_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_711_salloc_load", i64 16) + %"$indices_buf_711_salloc" = bitcast i8* %"$indices_buf_711_salloc_salloc" to [16 x i8]* + %"$indices_buf_711" = bitcast [16 x i8]* %"$indices_buf_711_salloc" to i8* + %"$key1_712" = load %String, %String* %key1 + %"$indices_gep_713" = getelementptr i8, i8* %"$indices_buf_711", i32 0 + %indices_cast3 = bitcast i8* %"$indices_gep_713" to %String* + store %String %"$key1_712", %String* %indices_cast3 + %"$execptr_load_714" = load i8*, i8** @_execptr + call void @_update_field(i8* %"$execptr_load_714", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_715", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_711", i8* null) ret void } define void @t3(i8* %0) { entry: - %"$_amount_701" = getelementptr i8, i8* %0, i32 0 - %"$_amount_702" = bitcast i8* %"$_amount_701" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_702" - %"$_sender_703" = getelementptr i8, i8* %0, i32 16 - %"$_sender_704" = bitcast i8* %"$_sender_703" to [20 x i8]* - call void @"$t3_510"(%Uint128 %_amount, [20 x i8]* %"$_sender_704") + %"$_amount_717" = getelementptr i8, i8* %0, i32 0 + %"$_amount_718" = bitcast i8* %"$_amount_717" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_718" + %"$_sender_719" = getelementptr i8, i8* %0, i32 16 + %"$_sender_720" = bitcast i8* %"$_sender_719" to [20 x i8]* + call void @"$t3_526"(%Uint128 %_amount, [20 x i8]* %"$_sender_720") ret void } -define internal void @"$t4_705"(%Uint128 %_amount, [20 x i8]* %"$_sender_706") { +define internal void @"$t4_721"(%Uint128 %_amount, [20 x i8]* %"$_sender_722") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_706" - %"$gasrem_707" = load i64, i64* @_gasrem - %"$gascmp_708" = icmp ugt i64 1, %"$gasrem_707" - br i1 %"$gascmp_708", label %"$out_of_gas_709", label %"$have_gas_710" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_722" + %"$gasrem_723" = load i64, i64* @_gasrem + %"$gascmp_724" = icmp ugt i64 1, %"$gasrem_723" + br i1 %"$gascmp_724", label %"$out_of_gas_725", label %"$have_gas_726" -"$out_of_gas_709": ; preds = %entry +"$out_of_gas_725": ; preds = %entry call void @_out_of_gas() - br label %"$have_gas_710" + br label %"$have_gas_726" -"$have_gas_710": ; preds = %"$out_of_gas_709", %entry - %"$consume_711" = sub i64 %"$gasrem_707", 1 - store i64 %"$consume_711", i64* @_gasrem +"$have_gas_726": ; preds = %"$out_of_gas_725", %entry + %"$consume_727" = sub i64 %"$gasrem_723", 1 + store i64 %"$consume_727", i64* @_gasrem %tname = alloca %String - %"$gasrem_712" = load i64, i64* @_gasrem - %"$gascmp_713" = icmp ugt i64 1, %"$gasrem_712" - br i1 %"$gascmp_713", label %"$out_of_gas_714", label %"$have_gas_715" + %"$gasrem_728" = load i64, i64* @_gasrem + %"$gascmp_729" = icmp ugt i64 1, %"$gasrem_728" + br i1 %"$gascmp_729", label %"$out_of_gas_730", label %"$have_gas_731" -"$out_of_gas_714": ; preds = %"$have_gas_710" +"$out_of_gas_730": ; preds = %"$have_gas_726" call void @_out_of_gas() - br label %"$have_gas_715" + br label %"$have_gas_731" -"$have_gas_715": ; preds = %"$out_of_gas_714", %"$have_gas_710" - %"$consume_716" = sub i64 %"$gasrem_712", 1 - store i64 %"$consume_716", i64* @_gasrem - store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_717", i32 0, i32 0), i32 2 }, %String* %tname - %"$gasrem_718" = load i64, i64* @_gasrem - %"$gascmp_719" = icmp ugt i64 1, %"$gasrem_718" - br i1 %"$gascmp_719", label %"$out_of_gas_720", label %"$have_gas_721" +"$have_gas_731": ; preds = %"$out_of_gas_730", %"$have_gas_726" + %"$consume_732" = sub i64 %"$gasrem_728", 1 + store i64 %"$consume_732", i64* @_gasrem + store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_733", i32 0, i32 0), i32 2 }, %String* %tname + %"$gasrem_734" = load i64, i64* @_gasrem + %"$gascmp_735" = icmp ugt i64 1, %"$gasrem_734" + br i1 %"$gascmp_735", label %"$out_of_gas_736", label %"$have_gas_737" -"$out_of_gas_720": ; preds = %"$have_gas_715" +"$out_of_gas_736": ; preds = %"$have_gas_731" call void @_out_of_gas() - br label %"$have_gas_721" + br label %"$have_gas_737" -"$have_gas_721": ; preds = %"$out_of_gas_720", %"$have_gas_715" - %"$consume_722" = sub i64 %"$gasrem_718", 1 - store i64 %"$consume_722", i64* @_gasrem +"$have_gas_737": ; preds = %"$out_of_gas_736", %"$have_gas_731" + %"$consume_738" = sub i64 %"$gasrem_734", 1 + store i64 %"$consume_738", i64* @_gasrem %key1 = alloca %String - %"$gasrem_723" = load i64, i64* @_gasrem - %"$gascmp_724" = icmp ugt i64 1, %"$gasrem_723" - br i1 %"$gascmp_724", label %"$out_of_gas_725", label %"$have_gas_726" + %"$gasrem_739" = load i64, i64* @_gasrem + %"$gascmp_740" = icmp ugt i64 1, %"$gasrem_739" + br i1 %"$gascmp_740", label %"$out_of_gas_741", label %"$have_gas_742" -"$out_of_gas_725": ; preds = %"$have_gas_721" +"$out_of_gas_741": ; preds = %"$have_gas_737" call void @_out_of_gas() - br label %"$have_gas_726" + br label %"$have_gas_742" -"$have_gas_726": ; preds = %"$out_of_gas_725", %"$have_gas_721" - %"$consume_727" = sub i64 %"$gasrem_723", 1 - store i64 %"$consume_727", i64* @_gasrem - store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_728", i32 0, i32 0), i32 4 }, %String* %key1 +"$have_gas_742": ; preds = %"$out_of_gas_741", %"$have_gas_737" + %"$consume_743" = sub i64 %"$gasrem_739", 1 + store i64 %"$consume_743", i64* @_gasrem + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_744", i32 0, i32 0), i32 4 }, %String* %key1 %key1_found = alloca %TName_Bool* - %"$indices_buf_729_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_729_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_729_salloc_load", i64 16) - %"$indices_buf_729_salloc" = bitcast i8* %"$indices_buf_729_salloc_salloc" to [16 x i8]* - %"$indices_buf_729" = bitcast [16 x i8]* %"$indices_buf_729_salloc" to i8* - %"$key1_730" = load %String, %String* %key1 - %"$indices_gep_731" = getelementptr i8, i8* %"$indices_buf_729", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_731" to %String* - store %String %"$key1_730", %String* %indices_cast - %"$execptr_load_732" = load i8*, i8** @_execptr - %"$key1_found_734" = call i8* @_fetch_field(i8* %"$execptr_load_732", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_733", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_729", i32 0) - %"$key1_found_735" = bitcast i8* %"$key1_found_734" to %TName_Bool* - store %TName_Bool* %"$key1_found_735", %TName_Bool** %key1_found - %"$key1_found_736" = load %TName_Bool*, %TName_Bool** %key1_found - %"$$key1_found_736_737" = bitcast %TName_Bool* %"$key1_found_736" to i8* - %"$_literal_cost_call_738" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_68", i8* %"$$key1_found_736_737") - %"$gasadd_739" = add i64 %"$_literal_cost_call_738", 0 - %"$gasadd_740" = add i64 %"$gasadd_739", 1 - %"$gasrem_741" = load i64, i64* @_gasrem - %"$gascmp_742" = icmp ugt i64 %"$gasadd_740", %"$gasrem_741" - br i1 %"$gascmp_742", label %"$out_of_gas_743", label %"$have_gas_744" - -"$out_of_gas_743": ; preds = %"$have_gas_726" - call void @_out_of_gas() - br label %"$have_gas_744" - -"$have_gas_744": ; preds = %"$out_of_gas_743", %"$have_gas_726" - %"$consume_745" = sub i64 %"$gasrem_741", %"$gasadd_740" - store i64 %"$consume_745", i64* @_gasrem - %"$gasrem_746" = load i64, i64* @_gasrem - %"$gascmp_747" = icmp ugt i64 2, %"$gasrem_746" - br i1 %"$gascmp_747", label %"$out_of_gas_748", label %"$have_gas_749" - -"$out_of_gas_748": ; preds = %"$have_gas_744" - call void @_out_of_gas() - br label %"$have_gas_749" - -"$have_gas_749": ; preds = %"$out_of_gas_748", %"$have_gas_744" - %"$consume_750" = sub i64 %"$gasrem_746", 2 - store i64 %"$consume_750", i64* @_gasrem + %"$indices_buf_745_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_745_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_745_salloc_load", i64 16) + %"$indices_buf_745_salloc" = bitcast i8* %"$indices_buf_745_salloc_salloc" to [16 x i8]* + %"$indices_buf_745" = bitcast [16 x i8]* %"$indices_buf_745_salloc" to i8* + %"$key1_746" = load %String, %String* %key1 + %"$indices_gep_747" = getelementptr i8, i8* %"$indices_buf_745", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_747" to %String* + store %String %"$key1_746", %String* %indices_cast + %"$execptr_load_748" = load i8*, i8** @_execptr + %"$key1_found_750" = call i8* @_fetch_field(i8* %"$execptr_load_748", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_749", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_745", i32 0) + %"$key1_found_751" = bitcast i8* %"$key1_found_750" to %TName_Bool* + store %TName_Bool* %"$key1_found_751", %TName_Bool** %key1_found %"$key1_found_752" = load %TName_Bool*, %TName_Bool** %key1_found - %"$key1_found_tag_753" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$key1_found_752", i32 0, i32 0 - %"$key1_found_tag_754" = load i8, i8* %"$key1_found_tag_753" - switch i8 %"$key1_found_tag_754", label %"$empty_default_755" [ - i8 0, label %"$True_756" - i8 1, label %"$False_765" + %"$$key1_found_752_753" = bitcast %TName_Bool* %"$key1_found_752" to i8* + %"$_literal_cost_call_754" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_68", i8* %"$$key1_found_752_753") + %"$gasadd_755" = add i64 %"$_literal_cost_call_754", 0 + %"$gasadd_756" = add i64 %"$gasadd_755", 1 + %"$gasrem_757" = load i64, i64* @_gasrem + %"$gascmp_758" = icmp ugt i64 %"$gasadd_756", %"$gasrem_757" + br i1 %"$gascmp_758", label %"$out_of_gas_759", label %"$have_gas_760" + +"$out_of_gas_759": ; preds = %"$have_gas_742" + call void @_out_of_gas() + br label %"$have_gas_760" + +"$have_gas_760": ; preds = %"$out_of_gas_759", %"$have_gas_742" + %"$consume_761" = sub i64 %"$gasrem_757", %"$gasadd_756" + store i64 %"$consume_761", i64* @_gasrem + %"$gasrem_762" = load i64, i64* @_gasrem + %"$gascmp_763" = icmp ugt i64 2, %"$gasrem_762" + br i1 %"$gascmp_763", label %"$out_of_gas_764", label %"$have_gas_765" + +"$out_of_gas_764": ; preds = %"$have_gas_760" + call void @_out_of_gas() + br label %"$have_gas_765" + +"$have_gas_765": ; preds = %"$out_of_gas_764", %"$have_gas_760" + %"$consume_766" = sub i64 %"$gasrem_762", 2 + store i64 %"$consume_766", i64* @_gasrem + %"$key1_found_768" = load %TName_Bool*, %TName_Bool** %key1_found + %"$key1_found_tag_769" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$key1_found_768", i32 0, i32 0 + %"$key1_found_tag_770" = load i8, i8* %"$key1_found_tag_769" + switch i8 %"$key1_found_tag_770", label %"$empty_default_771" [ + i8 0, label %"$True_772" + i8 1, label %"$False_781" ] -"$True_756": ; preds = %"$have_gas_749" - %"$key1_found_757" = bitcast %TName_Bool* %"$key1_found_752" to %CName_True* - %"$gasrem_758" = load i64, i64* @_gasrem - %"$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 = %"$True_756" - call void @_out_of_gas() - br label %"$have_gas_761" - -"$have_gas_761": ; preds = %"$out_of_gas_760", %"$True_756" - %"$consume_762" = sub i64 %"$gasrem_758", 1 - store i64 %"$consume_762", i64* @_gasrem - %"$fail__sender_763" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_763" - %"$tname_764" = load %String, %String* %tname - call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_763", %String %"$tname_764") - br label %"$matchsucc_751" +"$True_772": ; preds = %"$have_gas_765" + %"$key1_found_773" = bitcast %TName_Bool* %"$key1_found_768" to %CName_True* + %"$gasrem_774" = load i64, i64* @_gasrem + %"$gascmp_775" = icmp ugt i64 1, %"$gasrem_774" + br i1 %"$gascmp_775", label %"$out_of_gas_776", label %"$have_gas_777" -"$False_765": ; preds = %"$have_gas_749" - %"$key1_found_766" = bitcast %TName_Bool* %"$key1_found_752" to %CName_False* - br label %"$matchsucc_751" - -"$empty_default_755": ; preds = %"$have_gas_749" - br label %"$matchsucc_751" - -"$matchsucc_751": ; preds = %"$False_765", %"$have_gas_761", %"$empty_default_755" - %"$gasrem_767" = load i64, i64* @_gasrem - %"$gascmp_768" = icmp ugt i64 1, %"$gasrem_767" - br i1 %"$gascmp_768", label %"$out_of_gas_769", label %"$have_gas_770" - -"$out_of_gas_769": ; preds = %"$matchsucc_751" +"$out_of_gas_776": ; preds = %"$True_772" call void @_out_of_gas() - br label %"$have_gas_770" + br label %"$have_gas_777" -"$have_gas_770": ; preds = %"$out_of_gas_769", %"$matchsucc_751" - %"$consume_771" = sub i64 %"$gasrem_767", 1 - store i64 %"$consume_771", i64* @_gasrem - %key1a = alloca %String - %"$gasrem_772" = load i64, i64* @_gasrem - %"$gascmp_773" = icmp ugt i64 1, %"$gasrem_772" - br i1 %"$gascmp_773", label %"$out_of_gas_774", label %"$have_gas_775" +"$have_gas_777": ; preds = %"$out_of_gas_776", %"$True_772" + %"$consume_778" = sub i64 %"$gasrem_774", 1 + store i64 %"$consume_778", i64* @_gasrem + %"$fail__sender_779" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_779" + %"$tname_780" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_779", %String %"$tname_780") + br label %"$matchsucc_767" -"$out_of_gas_774": ; preds = %"$have_gas_770" - call void @_out_of_gas() - br label %"$have_gas_775" +"$False_781": ; preds = %"$have_gas_765" + %"$key1_found_782" = bitcast %TName_Bool* %"$key1_found_768" to %CName_False* + br label %"$matchsucc_767" -"$have_gas_775": ; preds = %"$out_of_gas_774", %"$have_gas_770" - %"$consume_776" = sub i64 %"$gasrem_772", 1 - store i64 %"$consume_776", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_777", i32 0, i32 0), i32 5 }, %String* %key1a - %"$gasrem_778" = load i64, i64* @_gasrem - %"$gascmp_779" = icmp ugt i64 1, %"$gasrem_778" - br i1 %"$gascmp_779", label %"$out_of_gas_780", label %"$have_gas_781" +"$empty_default_771": ; preds = %"$have_gas_765" + br label %"$matchsucc_767" -"$out_of_gas_780": ; preds = %"$have_gas_775" - call void @_out_of_gas() - br label %"$have_gas_781" - -"$have_gas_781": ; preds = %"$out_of_gas_780", %"$have_gas_775" - %"$consume_782" = sub i64 %"$gasrem_778", 1 - store i64 %"$consume_782", i64* @_gasrem - %key2a = alloca %String +"$matchsucc_767": ; preds = %"$False_781", %"$have_gas_777", %"$empty_default_771" %"$gasrem_783" = load i64, i64* @_gasrem %"$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_781" +"$out_of_gas_785": ; preds = %"$matchsucc_767" call void @_out_of_gas() br label %"$have_gas_786" -"$have_gas_786": ; preds = %"$out_of_gas_785", %"$have_gas_781" +"$have_gas_786": ; preds = %"$out_of_gas_785", %"$matchsucc_767" %"$consume_787" = sub i64 %"$gasrem_783", 1 store i64 %"$consume_787", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_788", i32 0, i32 0), i32 5 }, %String* %key2a - %"$gasrem_789" = load i64, i64* @_gasrem - %"$gascmp_790" = icmp ugt i64 1, %"$gasrem_789" - br i1 %"$gascmp_790", label %"$out_of_gas_791", label %"$have_gas_792" + %key1a = alloca %String + %"$gasrem_788" = load i64, i64* @_gasrem + %"$gascmp_789" = icmp ugt i64 1, %"$gasrem_788" + br i1 %"$gascmp_789", label %"$out_of_gas_790", label %"$have_gas_791" -"$out_of_gas_791": ; preds = %"$have_gas_786" +"$out_of_gas_790": ; preds = %"$have_gas_786" call void @_out_of_gas() - br label %"$have_gas_792" + br label %"$have_gas_791" -"$have_gas_792": ; preds = %"$out_of_gas_791", %"$have_gas_786" - %"$consume_793" = sub i64 %"$gasrem_789", 1 - store i64 %"$consume_793", i64* @_gasrem - %s = alloca %String +"$have_gas_791": ; preds = %"$out_of_gas_790", %"$have_gas_786" + %"$consume_792" = sub i64 %"$gasrem_788", 1 + store i64 %"$consume_792", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_793", i32 0, i32 0), i32 5 }, %String* %key1a %"$gasrem_794" = load i64, i64* @_gasrem %"$gascmp_795" = icmp ugt i64 1, %"$gasrem_794" br i1 %"$gascmp_795", label %"$out_of_gas_796", label %"$have_gas_797" -"$out_of_gas_796": ; preds = %"$have_gas_792" +"$out_of_gas_796": ; preds = %"$have_gas_791" call void @_out_of_gas() br label %"$have_gas_797" -"$have_gas_797": ; preds = %"$out_of_gas_796", %"$have_gas_792" +"$have_gas_797": ; preds = %"$out_of_gas_796", %"$have_gas_791" %"$consume_798" = sub i64 %"$gasrem_794", 1 store i64 %"$consume_798", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_799", i32 0, i32 0), i32 3 }, %String* %s - %"$_literal_cost_s_800" = alloca %String - %"$s_801" = load %String, %String* %s - store %String %"$s_801", %String* %"$_literal_cost_s_800" - %"$$_literal_cost_s_800_802" = bitcast %String* %"$_literal_cost_s_800" to i8* - %"$_literal_cost_call_803" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_49", i8* %"$$_literal_cost_s_800_802") - %"$gasadd_804" = add i64 %"$_literal_cost_call_803", 2 + %key2a = alloca %String + %"$gasrem_799" = load i64, i64* @_gasrem + %"$gascmp_800" = icmp ugt i64 1, %"$gasrem_799" + br i1 %"$gascmp_800", label %"$out_of_gas_801", label %"$have_gas_802" + +"$out_of_gas_801": ; preds = %"$have_gas_797" + call void @_out_of_gas() + br label %"$have_gas_802" + +"$have_gas_802": ; preds = %"$out_of_gas_801", %"$have_gas_797" + %"$consume_803" = sub i64 %"$gasrem_799", 1 + store i64 %"$consume_803", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_804", i32 0, i32 0), i32 5 }, %String* %key2a %"$gasrem_805" = load i64, i64* @_gasrem - %"$gascmp_806" = icmp ugt i64 %"$gasadd_804", %"$gasrem_805" + %"$gascmp_806" = icmp ugt i64 1, %"$gasrem_805" br i1 %"$gascmp_806", label %"$out_of_gas_807", label %"$have_gas_808" -"$out_of_gas_807": ; preds = %"$have_gas_797" +"$out_of_gas_807": ; preds = %"$have_gas_802" call void @_out_of_gas() br label %"$have_gas_808" -"$have_gas_808": ; preds = %"$out_of_gas_807", %"$have_gas_797" - %"$consume_809" = sub i64 %"$gasrem_805", %"$gasadd_804" +"$have_gas_808": ; preds = %"$out_of_gas_807", %"$have_gas_802" + %"$consume_809" = sub i64 %"$gasrem_805", 1 store i64 %"$consume_809", i64* @_gasrem - %"$indices_buf_810_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_810_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_810_salloc_load", i64 32) - %"$indices_buf_810_salloc" = bitcast i8* %"$indices_buf_810_salloc_salloc" to [32 x i8]* - %"$indices_buf_810" = bitcast [32 x i8]* %"$indices_buf_810_salloc" to i8* - %"$key1a_811" = load %String, %String* %key1a - %"$indices_gep_812" = getelementptr i8, i8* %"$indices_buf_810", i32 0 - %indices_cast1 = bitcast i8* %"$indices_gep_812" to %String* - store %String %"$key1a_811", %String* %indices_cast1 - %"$key2a_813" = load %String, %String* %key2a - %"$indices_gep_814" = getelementptr i8, i8* %"$indices_buf_810", i32 16 - %indices_cast2 = bitcast i8* %"$indices_gep_814" to %String* - store %String %"$key2a_813", %String* %indices_cast2 - %"$execptr_load_815" = load i8*, i8** @_execptr + %s = alloca %String + %"$gasrem_810" = load i64, i64* @_gasrem + %"$gascmp_811" = icmp ugt i64 1, %"$gasrem_810" + br i1 %"$gascmp_811", label %"$out_of_gas_812", label %"$have_gas_813" + +"$out_of_gas_812": ; preds = %"$have_gas_808" + call void @_out_of_gas() + br label %"$have_gas_813" + +"$have_gas_813": ; preds = %"$out_of_gas_812", %"$have_gas_808" + %"$consume_814" = sub i64 %"$gasrem_810", 1 + store i64 %"$consume_814", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_815", i32 0, i32 0), i32 3 }, %String* %s + %"$_literal_cost_s_816" = alloca %String %"$s_817" = load %String, %String* %s - %"$update_value_818" = alloca %String - store %String %"$s_817", %String* %"$update_value_818" - %"$update_value_819" = bitcast %String* %"$update_value_818" to i8* - call void @_update_field(i8* %"$execptr_load_815", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_816", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_810", i8* %"$update_value_819") + store %String %"$s_817", %String* %"$_literal_cost_s_816" + %"$$_literal_cost_s_816_818" = bitcast %String* %"$_literal_cost_s_816" to i8* + %"$_literal_cost_call_819" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_49", i8* %"$$_literal_cost_s_816_818") + %"$gasadd_820" = add i64 %"$_literal_cost_call_819", 2 + %"$gasrem_821" = load i64, i64* @_gasrem + %"$gascmp_822" = icmp ugt i64 %"$gasadd_820", %"$gasrem_821" + br i1 %"$gascmp_822", label %"$out_of_gas_823", label %"$have_gas_824" + +"$out_of_gas_823": ; preds = %"$have_gas_813" + call void @_out_of_gas() + br label %"$have_gas_824" + +"$have_gas_824": ; preds = %"$out_of_gas_823", %"$have_gas_813" + %"$consume_825" = sub i64 %"$gasrem_821", %"$gasadd_820" + store i64 %"$consume_825", i64* @_gasrem + %"$indices_buf_826_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_826_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_826_salloc_load", i64 32) + %"$indices_buf_826_salloc" = bitcast i8* %"$indices_buf_826_salloc_salloc" to [32 x i8]* + %"$indices_buf_826" = bitcast [32 x i8]* %"$indices_buf_826_salloc" to i8* + %"$key1a_827" = load %String, %String* %key1a + %"$indices_gep_828" = getelementptr i8, i8* %"$indices_buf_826", i32 0 + %indices_cast1 = bitcast i8* %"$indices_gep_828" to %String* + store %String %"$key1a_827", %String* %indices_cast1 + %"$key2a_829" = load %String, %String* %key2a + %"$indices_gep_830" = getelementptr i8, i8* %"$indices_buf_826", i32 16 + %indices_cast2 = bitcast i8* %"$indices_gep_830" to %String* + store %String %"$key2a_829", %String* %indices_cast2 + %"$execptr_load_831" = load i8*, i8** @_execptr + %"$s_833" = load %String, %String* %s + %"$update_value_834" = alloca %String + store %String %"$s_833", %String* %"$update_value_834" + %"$update_value_835" = bitcast %String* %"$update_value_834" to i8* + call void @_update_field(i8* %"$execptr_load_831", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_832", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_826", i8* %"$update_value_835") ret void } define void @t4(i8* %0) { entry: - %"$_amount_821" = getelementptr i8, i8* %0, i32 0 - %"$_amount_822" = bitcast i8* %"$_amount_821" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_822" - %"$_sender_823" = getelementptr i8, i8* %0, i32 16 - %"$_sender_824" = bitcast i8* %"$_sender_823" to [20 x i8]* - call void @"$t4_705"(%Uint128 %_amount, [20 x i8]* %"$_sender_824") + %"$_amount_837" = getelementptr i8, i8* %0, i32 0 + %"$_amount_838" = bitcast i8* %"$_amount_837" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_838" + %"$_sender_839" = getelementptr i8, i8* %0, i32 16 + %"$_sender_840" = bitcast i8* %"$_sender_839" to [20 x i8]* + call void @"$t4_721"(%Uint128 %_amount, [20 x i8]* %"$_sender_840") ret void } -define internal void @"$t5_825"(%Uint128 %_amount, [20 x i8]* %"$_sender_826") { +define internal void @"$t5_841"(%Uint128 %_amount, [20 x i8]* %"$_sender_842") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_826" - %"$gasrem_827" = load i64, i64* @_gasrem - %"$gascmp_828" = icmp ugt i64 1, %"$gasrem_827" - br i1 %"$gascmp_828", label %"$out_of_gas_829", label %"$have_gas_830" - -"$out_of_gas_829": ; preds = %entry - call void @_out_of_gas() - br label %"$have_gas_830" - -"$have_gas_830": ; preds = %"$out_of_gas_829", %entry - %"$consume_831" = sub i64 %"$gasrem_827", 1 - store i64 %"$consume_831", i64* @_gasrem - %tname = alloca %String - %"$gasrem_832" = load i64, i64* @_gasrem - %"$gascmp_833" = icmp ugt i64 1, %"$gasrem_832" - br i1 %"$gascmp_833", label %"$out_of_gas_834", label %"$have_gas_835" - -"$out_of_gas_834": ; preds = %"$have_gas_830" - call void @_out_of_gas() - br label %"$have_gas_835" - -"$have_gas_835": ; preds = %"$out_of_gas_834", %"$have_gas_830" - %"$consume_836" = sub i64 %"$gasrem_832", 1 - store i64 %"$consume_836", i64* @_gasrem - store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_837", i32 0, i32 0), i32 2 }, %String* %tname - %"$gasrem_838" = load i64, i64* @_gasrem - %"$gascmp_839" = icmp ugt i64 1, %"$gasrem_838" - br i1 %"$gascmp_839", label %"$out_of_gas_840", label %"$have_gas_841" - -"$out_of_gas_840": ; preds = %"$have_gas_835" - call void @_out_of_gas() - br label %"$have_gas_841" - -"$have_gas_841": ; preds = %"$out_of_gas_840", %"$have_gas_835" - %"$consume_842" = sub i64 %"$gasrem_838", 1 - store i64 %"$consume_842", i64* @_gasrem - %s = alloca %String + %_sender = load [20 x i8], [20 x i8]* %"$_sender_842" %"$gasrem_843" = load i64, i64* @_gasrem %"$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_841" +"$out_of_gas_845": ; preds = %entry call void @_out_of_gas() br label %"$have_gas_846" -"$have_gas_846": ; preds = %"$out_of_gas_845", %"$have_gas_841" +"$have_gas_846": ; preds = %"$out_of_gas_845", %entry %"$consume_847" = sub i64 %"$gasrem_843", 1 store i64 %"$consume_847", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_848", i32 0, i32 0), i32 3 }, %String* %s - %"$gasrem_849" = load i64, i64* @_gasrem - %"$gascmp_850" = icmp ugt i64 1, %"$gasrem_849" - br i1 %"$gascmp_850", label %"$out_of_gas_851", label %"$have_gas_852" + %tname = alloca %String + %"$gasrem_848" = load i64, i64* @_gasrem + %"$gascmp_849" = icmp ugt i64 1, %"$gasrem_848" + br i1 %"$gascmp_849", label %"$out_of_gas_850", label %"$have_gas_851" -"$out_of_gas_851": ; preds = %"$have_gas_846" +"$out_of_gas_850": ; preds = %"$have_gas_846" call void @_out_of_gas() - br label %"$have_gas_852" + br label %"$have_gas_851" -"$have_gas_852": ; preds = %"$out_of_gas_851", %"$have_gas_846" - %"$consume_853" = sub i64 %"$gasrem_849", 1 - store i64 %"$consume_853", i64* @_gasrem - %key1a = alloca %String +"$have_gas_851": ; preds = %"$out_of_gas_850", %"$have_gas_846" + %"$consume_852" = sub i64 %"$gasrem_848", 1 + store i64 %"$consume_852", i64* @_gasrem + store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_853", i32 0, i32 0), i32 2 }, %String* %tname %"$gasrem_854" = load i64, i64* @_gasrem %"$gascmp_855" = icmp ugt i64 1, %"$gasrem_854" br i1 %"$gascmp_855", label %"$out_of_gas_856", label %"$have_gas_857" -"$out_of_gas_856": ; preds = %"$have_gas_852" +"$out_of_gas_856": ; preds = %"$have_gas_851" call void @_out_of_gas() br label %"$have_gas_857" -"$have_gas_857": ; preds = %"$out_of_gas_856", %"$have_gas_852" +"$have_gas_857": ; preds = %"$out_of_gas_856", %"$have_gas_851" %"$consume_858" = sub i64 %"$gasrem_854", 1 store i64 %"$consume_858", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_859", i32 0, i32 0), i32 5 }, %String* %key1a - %"$gasrem_860" = load i64, i64* @_gasrem - %"$gascmp_861" = icmp ugt i64 1, %"$gasrem_860" - br i1 %"$gascmp_861", label %"$out_of_gas_862", label %"$have_gas_863" + %s = alloca %String + %"$gasrem_859" = load i64, i64* @_gasrem + %"$gascmp_860" = icmp ugt i64 1, %"$gasrem_859" + br i1 %"$gascmp_860", label %"$out_of_gas_861", label %"$have_gas_862" -"$out_of_gas_862": ; preds = %"$have_gas_857" +"$out_of_gas_861": ; preds = %"$have_gas_857" call void @_out_of_gas() - br label %"$have_gas_863" + br label %"$have_gas_862" -"$have_gas_863": ; preds = %"$out_of_gas_862", %"$have_gas_857" - %"$consume_864" = sub i64 %"$gasrem_860", 1 - store i64 %"$consume_864", i64* @_gasrem - %key2a = alloca %String +"$have_gas_862": ; preds = %"$out_of_gas_861", %"$have_gas_857" + %"$consume_863" = sub i64 %"$gasrem_859", 1 + store i64 %"$consume_863", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_864", i32 0, i32 0), i32 3 }, %String* %s %"$gasrem_865" = load i64, i64* @_gasrem %"$gascmp_866" = icmp ugt i64 1, %"$gasrem_865" br i1 %"$gascmp_866", label %"$out_of_gas_867", label %"$have_gas_868" -"$out_of_gas_867": ; preds = %"$have_gas_863" +"$out_of_gas_867": ; preds = %"$have_gas_862" call void @_out_of_gas() br label %"$have_gas_868" -"$have_gas_868": ; preds = %"$out_of_gas_867", %"$have_gas_863" +"$have_gas_868": ; preds = %"$out_of_gas_867", %"$have_gas_862" %"$consume_869" = sub i64 %"$gasrem_865", 1 store i64 %"$consume_869", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_870", i32 0, i32 0), i32 5 }, %String* %key2a + %key1a = alloca %String + %"$gasrem_870" = load i64, i64* @_gasrem + %"$gascmp_871" = icmp ugt i64 1, %"$gasrem_870" + br i1 %"$gascmp_871", label %"$out_of_gas_872", label %"$have_gas_873" + +"$out_of_gas_872": ; preds = %"$have_gas_868" + call void @_out_of_gas() + br label %"$have_gas_873" + +"$have_gas_873": ; preds = %"$out_of_gas_872", %"$have_gas_868" + %"$consume_874" = sub i64 %"$gasrem_870", 1 + store i64 %"$consume_874", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_875", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_876" = load i64, i64* @_gasrem + %"$gascmp_877" = icmp ugt i64 1, %"$gasrem_876" + br i1 %"$gascmp_877", label %"$out_of_gas_878", label %"$have_gas_879" + +"$out_of_gas_878": ; preds = %"$have_gas_873" + call void @_out_of_gas() + br label %"$have_gas_879" + +"$have_gas_879": ; preds = %"$out_of_gas_878", %"$have_gas_873" + %"$consume_880" = sub i64 %"$gasrem_876", 1 + store i64 %"$consume_880", i64* @_gasrem + %key2a = alloca %String + %"$gasrem_881" = load i64, i64* @_gasrem + %"$gascmp_882" = icmp ugt i64 1, %"$gasrem_881" + br i1 %"$gascmp_882", label %"$out_of_gas_883", label %"$have_gas_884" + +"$out_of_gas_883": ; preds = %"$have_gas_879" + call void @_out_of_gas() + br label %"$have_gas_884" + +"$have_gas_884": ; preds = %"$out_of_gas_883", %"$have_gas_879" + %"$consume_885" = sub i64 %"$gasrem_881", 1 + store i64 %"$consume_885", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_886", i32 0, i32 0), i32 5 }, %String* %key2a %val = alloca %TName_Option_String* - %"$indices_buf_871_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_871_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_871_salloc_load", i64 32) - %"$indices_buf_871_salloc" = bitcast i8* %"$indices_buf_871_salloc_salloc" to [32 x i8]* - %"$indices_buf_871" = bitcast [32 x i8]* %"$indices_buf_871_salloc" to i8* - %"$key1a_872" = load %String, %String* %key1a - %"$indices_gep_873" = getelementptr i8, i8* %"$indices_buf_871", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_873" to %String* - store %String %"$key1a_872", %String* %indices_cast - %"$key2a_874" = load %String, %String* %key2a - %"$indices_gep_875" = getelementptr i8, i8* %"$indices_buf_871", i32 16 - %indices_cast1 = bitcast i8* %"$indices_gep_875" to %String* - store %String %"$key2a_874", %String* %indices_cast1 - %"$execptr_load_876" = load i8*, i8** @_execptr - %"$val_878" = call i8* @_fetch_field(i8* %"$execptr_load_876", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_877", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_871", i32 1) - %"$val_879" = bitcast i8* %"$val_878" to %TName_Option_String* - store %TName_Option_String* %"$val_879", %TName_Option_String** %val - %"$val_880" = load %TName_Option_String*, %TName_Option_String** %val - %"$$val_880_881" = bitcast %TName_Option_String* %"$val_880" to i8* - %"$_literal_cost_call_882" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$val_880_881") - %"$gasadd_883" = add i64 %"$_literal_cost_call_882", 0 - %"$gasadd_884" = add i64 %"$gasadd_883", 2 - %"$gasrem_885" = load i64, i64* @_gasrem - %"$gascmp_886" = icmp ugt i64 %"$gasadd_884", %"$gasrem_885" - br i1 %"$gascmp_886", label %"$out_of_gas_887", label %"$have_gas_888" - -"$out_of_gas_887": ; preds = %"$have_gas_868" - call void @_out_of_gas() - br label %"$have_gas_888" - -"$have_gas_888": ; preds = %"$out_of_gas_887", %"$have_gas_868" - %"$consume_889" = sub i64 %"$gasrem_885", %"$gasadd_884" - store i64 %"$consume_889", i64* @_gasrem - %"$gasrem_890" = load i64, i64* @_gasrem - %"$gascmp_891" = icmp ugt i64 2, %"$gasrem_890" - br i1 %"$gascmp_891", label %"$out_of_gas_892", label %"$have_gas_893" - -"$out_of_gas_892": ; preds = %"$have_gas_888" - call void @_out_of_gas() - br label %"$have_gas_893" - -"$have_gas_893": ; preds = %"$out_of_gas_892", %"$have_gas_888" - %"$consume_894" = sub i64 %"$gasrem_890", 2 - store i64 %"$consume_894", i64* @_gasrem + %"$indices_buf_887_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_887_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_887_salloc_load", i64 32) + %"$indices_buf_887_salloc" = bitcast i8* %"$indices_buf_887_salloc_salloc" to [32 x i8]* + %"$indices_buf_887" = bitcast [32 x i8]* %"$indices_buf_887_salloc" to i8* + %"$key1a_888" = load %String, %String* %key1a + %"$indices_gep_889" = getelementptr i8, i8* %"$indices_buf_887", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_889" to %String* + store %String %"$key1a_888", %String* %indices_cast + %"$key2a_890" = load %String, %String* %key2a + %"$indices_gep_891" = getelementptr i8, i8* %"$indices_buf_887", i32 16 + %indices_cast1 = bitcast i8* %"$indices_gep_891" to %String* + store %String %"$key2a_890", %String* %indices_cast1 + %"$execptr_load_892" = load i8*, i8** @_execptr + %"$val_894" = call i8* @_fetch_field(i8* %"$execptr_load_892", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_893", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_887", i32 1) + %"$val_895" = bitcast i8* %"$val_894" to %TName_Option_String* + store %TName_Option_String* %"$val_895", %TName_Option_String** %val %"$val_896" = load %TName_Option_String*, %TName_Option_String** %val - %"$val_tag_897" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$val_896", i32 0, i32 0 - %"$val_tag_898" = load i8, i8* %"$val_tag_897" - switch i8 %"$val_tag_898", label %"$empty_default_899" [ - i8 0, label %"$Some_900" - i8 1, label %"$None_946" + %"$$val_896_897" = bitcast %TName_Option_String* %"$val_896" to i8* + %"$_literal_cost_call_898" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$val_896_897") + %"$gasadd_899" = add i64 %"$_literal_cost_call_898", 0 + %"$gasadd_900" = add i64 %"$gasadd_899", 2 + %"$gasrem_901" = load i64, i64* @_gasrem + %"$gascmp_902" = icmp ugt i64 %"$gasadd_900", %"$gasrem_901" + br i1 %"$gascmp_902", label %"$out_of_gas_903", label %"$have_gas_904" + +"$out_of_gas_903": ; preds = %"$have_gas_884" + call void @_out_of_gas() + br label %"$have_gas_904" + +"$have_gas_904": ; preds = %"$out_of_gas_903", %"$have_gas_884" + %"$consume_905" = sub i64 %"$gasrem_901", %"$gasadd_900" + store i64 %"$consume_905", i64* @_gasrem + %"$gasrem_906" = load i64, i64* @_gasrem + %"$gascmp_907" = icmp ugt i64 2, %"$gasrem_906" + br i1 %"$gascmp_907", label %"$out_of_gas_908", label %"$have_gas_909" + +"$out_of_gas_908": ; preds = %"$have_gas_904" + call void @_out_of_gas() + br label %"$have_gas_909" + +"$have_gas_909": ; preds = %"$out_of_gas_908", %"$have_gas_904" + %"$consume_910" = sub i64 %"$gasrem_906", 2 + store i64 %"$consume_910", i64* @_gasrem + %"$val_912" = load %TName_Option_String*, %TName_Option_String** %val + %"$val_tag_913" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$val_912", i32 0, i32 0 + %"$val_tag_914" = load i8, i8* %"$val_tag_913" + switch i8 %"$val_tag_914", label %"$empty_default_915" [ + i8 0, label %"$Some_916" + i8 1, label %"$None_962" ] -"$Some_900": ; preds = %"$have_gas_893" - %"$val_901" = bitcast %TName_Option_String* %"$val_896" to %CName_Some_String* - %"$v_gep_902" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$val_901", i32 0, i32 1 - %"$v_load_903" = load %String, %String* %"$v_gep_902" +"$Some_916": ; preds = %"$have_gas_909" + %"$val_917" = bitcast %TName_Option_String* %"$val_912" to %CName_Some_String* + %"$v_gep_918" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$val_917", i32 0, i32 1 + %"$v_load_919" = load %String, %String* %"$v_gep_918" %v = alloca %String - store %String %"$v_load_903", %String* %v - %"$gasrem_904" = load i64, i64* @_gasrem - %"$gascmp_905" = icmp ugt i64 1, %"$gasrem_904" - br i1 %"$gascmp_905", label %"$out_of_gas_906", label %"$have_gas_907" + store %String %"$v_load_919", %String* %v + %"$gasrem_920" = load i64, i64* @_gasrem + %"$gascmp_921" = icmp ugt i64 1, %"$gasrem_920" + br i1 %"$gascmp_921", label %"$out_of_gas_922", label %"$have_gas_923" -"$out_of_gas_906": ; preds = %"$Some_900" +"$out_of_gas_922": ; preds = %"$Some_916" call void @_out_of_gas() - br label %"$have_gas_907" + br label %"$have_gas_923" -"$have_gas_907": ; preds = %"$out_of_gas_906", %"$Some_900" - %"$consume_908" = sub i64 %"$gasrem_904", 1 - store i64 %"$consume_908", i64* @_gasrem +"$have_gas_923": ; preds = %"$out_of_gas_922", %"$Some_916" + %"$consume_924" = sub i64 %"$gasrem_920", 1 + store i64 %"$consume_924", i64* @_gasrem %t = alloca %TName_Bool* - %"$execptr_load_909" = load i8*, i8** @_execptr - %"$v_910" = load %String, %String* %v - %"$s_911" = load %String, %String* %s - %"$eq_call_912" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_909", %String %"$v_910", %String %"$s_911") - store %TName_Bool* %"$eq_call_912", %TName_Bool** %t - %"$gasrem_913" = load i64, i64* @_gasrem - %"$gascmp_914" = icmp ugt i64 2, %"$gasrem_913" - br i1 %"$gascmp_914", label %"$out_of_gas_915", label %"$have_gas_916" - -"$out_of_gas_915": ; preds = %"$have_gas_907" - call void @_out_of_gas() - br label %"$have_gas_916" - -"$have_gas_916": ; preds = %"$out_of_gas_915", %"$have_gas_907" - %"$consume_917" = sub i64 %"$gasrem_913", 2 - store i64 %"$consume_917", i64* @_gasrem - %"$t_919" = load %TName_Bool*, %TName_Bool** %t - %"$t_tag_920" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$t_919", i32 0, i32 0 - %"$t_tag_921" = load i8, i8* %"$t_tag_920" - switch i8 %"$t_tag_921", label %"$empty_default_922" [ - i8 0, label %"$True_923" - i8 1, label %"$False_925" + %"$execptr_load_925" = load i8*, i8** @_execptr + %"$v_926" = load %String, %String* %v + %"$s_927" = load %String, %String* %s + %"$eq_call_928" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_925", %String %"$v_926", %String %"$s_927") + store %TName_Bool* %"$eq_call_928", %TName_Bool** %t + %"$gasrem_929" = load i64, i64* @_gasrem + %"$gascmp_930" = icmp ugt i64 2, %"$gasrem_929" + br i1 %"$gascmp_930", label %"$out_of_gas_931", label %"$have_gas_932" + +"$out_of_gas_931": ; preds = %"$have_gas_923" + call void @_out_of_gas() + br label %"$have_gas_932" + +"$have_gas_932": ; preds = %"$out_of_gas_931", %"$have_gas_923" + %"$consume_933" = sub i64 %"$gasrem_929", 2 + store i64 %"$consume_933", i64* @_gasrem + %"$t_935" = load %TName_Bool*, %TName_Bool** %t + %"$t_tag_936" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$t_935", i32 0, i32 0 + %"$t_tag_937" = load i8, i8* %"$t_tag_936" + switch i8 %"$t_tag_937", label %"$empty_default_938" [ + i8 0, label %"$True_939" + i8 1, label %"$False_941" ] -"$True_923": ; preds = %"$have_gas_916" - %"$t_924" = bitcast %TName_Bool* %"$t_919" to %CName_True* - br label %"$matchsucc_918" +"$True_939": ; preds = %"$have_gas_932" + %"$t_940" = bitcast %TName_Bool* %"$t_935" to %CName_True* + br label %"$matchsucc_934" -"$False_925": ; preds = %"$have_gas_916" - %"$t_926" = bitcast %TName_Bool* %"$t_919" to %CName_False* - %"$gasrem_927" = load i64, i64* @_gasrem - %"$gascmp_928" = icmp ugt i64 1, %"$gasrem_927" - br i1 %"$gascmp_928", label %"$out_of_gas_929", label %"$have_gas_930" +"$False_941": ; preds = %"$have_gas_932" + %"$t_942" = bitcast %TName_Bool* %"$t_935" to %CName_False* + %"$gasrem_943" = load i64, i64* @_gasrem + %"$gascmp_944" = icmp ugt i64 1, %"$gasrem_943" + br i1 %"$gascmp_944", label %"$out_of_gas_945", label %"$have_gas_946" -"$out_of_gas_929": ; preds = %"$False_925" +"$out_of_gas_945": ; preds = %"$False_941" call void @_out_of_gas() - br label %"$have_gas_930" + br label %"$have_gas_946" -"$have_gas_930": ; preds = %"$out_of_gas_929", %"$False_925" - %"$consume_931" = sub i64 %"$gasrem_927", 1 - store i64 %"$consume_931", i64* @_gasrem +"$have_gas_946": ; preds = %"$out_of_gas_945", %"$False_941" + %"$consume_947" = sub i64 %"$gasrem_943", 1 + store i64 %"$consume_947", i64* @_gasrem %m = alloca %String - %"$gasrem_932" = load i64, i64* @_gasrem - %"$gascmp_933" = icmp ugt i64 1, %"$gasrem_932" - br i1 %"$gascmp_933", label %"$out_of_gas_934", label %"$have_gas_935" - -"$out_of_gas_934": ; preds = %"$have_gas_930" - call void @_out_of_gas() - br label %"$have_gas_935" - -"$have_gas_935": ; preds = %"$out_of_gas_934", %"$have_gas_930" - %"$consume_936" = sub i64 %"$gasrem_932", 1 - store i64 %"$consume_936", i64* @_gasrem - store %String { i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"$stringlit_937", i32 0, i32 0), i32 23 }, %String* %m - %"$gasrem_938" = load i64, i64* @_gasrem - %"$gascmp_939" = icmp ugt i64 1, %"$gasrem_938" - br i1 %"$gascmp_939", label %"$out_of_gas_940", label %"$have_gas_941" - -"$out_of_gas_940": ; preds = %"$have_gas_935" - call void @_out_of_gas() - br label %"$have_gas_941" - -"$have_gas_941": ; preds = %"$out_of_gas_940", %"$have_gas_935" - %"$consume_942" = sub i64 %"$gasrem_938", 1 - store i64 %"$consume_942", i64* @_gasrem - %"$fail_msg__sender_943" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_943" - %"$tname_944" = load %String, %String* %tname - %"$m_945" = load %String, %String* %m - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_943", %String %"$tname_944", %String %"$m_945") - br label %"$matchsucc_918" - -"$empty_default_922": ; preds = %"$have_gas_916" - br label %"$matchsucc_918" - -"$matchsucc_918": ; preds = %"$have_gas_941", %"$True_923", %"$empty_default_922" - br label %"$matchsucc_895" - -"$None_946": ; preds = %"$have_gas_893" - %"$val_947" = bitcast %TName_Option_String* %"$val_896" to %CName_None_String* %"$gasrem_948" = load i64, i64* @_gasrem %"$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 = %"$None_946" +"$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", %"$None_946" +"$have_gas_951": ; preds = %"$out_of_gas_950", %"$have_gas_946" %"$consume_952" = sub i64 %"$gasrem_948", 1 store i64 %"$consume_952", i64* @_gasrem - %"$fail__sender_953" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_953" - %"$tname_954" = load %String, %String* %tname - call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_953", %String %"$tname_954") - br label %"$matchsucc_895" + store %String { i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"$stringlit_953", i32 0, i32 0), i32 23 }, %String* %m + %"$gasrem_954" = load i64, i64* @_gasrem + %"$gascmp_955" = icmp ugt i64 1, %"$gasrem_954" + br i1 %"$gascmp_955", label %"$out_of_gas_956", label %"$have_gas_957" -"$empty_default_899": ; preds = %"$have_gas_893" - br label %"$matchsucc_895" +"$out_of_gas_956": ; preds = %"$have_gas_951" + call void @_out_of_gas() + br label %"$have_gas_957" -"$matchsucc_895": ; preds = %"$have_gas_951", %"$matchsucc_918", %"$empty_default_899" - %"$gasrem_955" = load i64, i64* @_gasrem - %"$gascmp_956" = icmp ugt i64 1, %"$gasrem_955" - br i1 %"$gascmp_956", label %"$out_of_gas_957", label %"$have_gas_958" +"$have_gas_957": ; preds = %"$out_of_gas_956", %"$have_gas_951" + %"$consume_958" = sub i64 %"$gasrem_954", 1 + store i64 %"$consume_958", i64* @_gasrem + %"$fail_msg__sender_959" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_959" + %"$tname_960" = load %String, %String* %tname + %"$m_961" = load %String, %String* %m + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_959", %String %"$tname_960", %String %"$m_961") + br label %"$matchsucc_934" -"$out_of_gas_957": ; preds = %"$matchsucc_895" - call void @_out_of_gas() - br label %"$have_gas_958" +"$empty_default_938": ; preds = %"$have_gas_932" + br label %"$matchsucc_934" -"$have_gas_958": ; preds = %"$out_of_gas_957", %"$matchsucc_895" - %"$consume_959" = sub i64 %"$gasrem_955", 1 - store i64 %"$consume_959", i64* @_gasrem - %l_m2 = alloca %Map_String_String* - %"$gasrem_960" = load i64, i64* @_gasrem - %"$gascmp_961" = icmp ugt i64 1, %"$gasrem_960" - br i1 %"$gascmp_961", label %"$out_of_gas_962", label %"$have_gas_963" +"$matchsucc_934": ; preds = %"$have_gas_957", %"$True_939", %"$empty_default_938" + br label %"$matchsucc_911" -"$out_of_gas_962": ; preds = %"$have_gas_958" +"$None_962": ; preds = %"$have_gas_909" + %"$val_963" = bitcast %TName_Option_String* %"$val_912" to %CName_None_String* + %"$gasrem_964" = load i64, i64* @_gasrem + %"$gascmp_965" = icmp ugt i64 1, %"$gasrem_964" + br i1 %"$gascmp_965", label %"$out_of_gas_966", label %"$have_gas_967" + +"$out_of_gas_966": ; preds = %"$None_962" call void @_out_of_gas() - br label %"$have_gas_963" + br label %"$have_gas_967" -"$have_gas_963": ; preds = %"$out_of_gas_962", %"$have_gas_958" - %"$consume_964" = sub i64 %"$gasrem_960", 1 - store i64 %"$consume_964", i64* @_gasrem - %e = alloca %Map_String_String* - %"$gasrem_965" = load i64, i64* @_gasrem - %"$gascmp_966" = icmp ugt i64 1, %"$gasrem_965" - br i1 %"$gascmp_966", label %"$out_of_gas_967", label %"$have_gas_968" +"$have_gas_967": ; preds = %"$out_of_gas_966", %"$None_962" + %"$consume_968" = sub i64 %"$gasrem_964", 1 + store i64 %"$consume_968", i64* @_gasrem + %"$fail__sender_969" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_969" + %"$tname_970" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_969", %String %"$tname_970") + br label %"$matchsucc_911" -"$out_of_gas_967": ; preds = %"$have_gas_963" - call void @_out_of_gas() - br label %"$have_gas_968" +"$empty_default_915": ; preds = %"$have_gas_909" + br label %"$matchsucc_911" -"$have_gas_968": ; preds = %"$out_of_gas_967", %"$have_gas_963" - %"$consume_969" = sub i64 %"$gasrem_965", 1 - store i64 %"$consume_969", i64* @_gasrem - %"$execptr_load_970" = load i8*, i8** @_execptr - %"$_new_empty_map_call_971" = call i8* @_new_empty_map(i8* %"$execptr_load_970") - %"$Emp_972" = bitcast i8* %"$_new_empty_map_call_971" to %Map_String_String* - store %Map_String_String* %"$Emp_972", %Map_String_String** %e - %"$gasrem_973" = load i64, i64* @_gasrem - %"$gascmp_974" = icmp ugt i64 1, %"$gasrem_973" - br i1 %"$gascmp_974", label %"$out_of_gas_975", label %"$have_gas_976" +"$matchsucc_911": ; preds = %"$have_gas_967", %"$matchsucc_934", %"$empty_default_915" + %"$gasrem_971" = load i64, i64* @_gasrem + %"$gascmp_972" = icmp ugt i64 1, %"$gasrem_971" + br i1 %"$gascmp_972", label %"$out_of_gas_973", label %"$have_gas_974" -"$out_of_gas_975": ; preds = %"$have_gas_968" +"$out_of_gas_973": ; preds = %"$matchsucc_911" call void @_out_of_gas() - br label %"$have_gas_976" + br label %"$have_gas_974" -"$have_gas_976": ; preds = %"$out_of_gas_975", %"$have_gas_968" - %"$consume_977" = sub i64 %"$gasrem_973", 1 - store i64 %"$consume_977", i64* @_gasrem - %key2b = alloca %String - %"$gasrem_978" = load i64, i64* @_gasrem - %"$gascmp_979" = icmp ugt i64 1, %"$gasrem_978" - br i1 %"$gascmp_979", label %"$out_of_gas_980", label %"$have_gas_981" +"$have_gas_974": ; preds = %"$out_of_gas_973", %"$matchsucc_911" + %"$consume_975" = sub i64 %"$gasrem_971", 1 + store i64 %"$consume_975", i64* @_gasrem + %l_m2 = alloca %Map_String_String* + %"$gasrem_976" = load i64, i64* @_gasrem + %"$gascmp_977" = icmp ugt i64 1, %"$gasrem_976" + br i1 %"$gascmp_977", label %"$out_of_gas_978", label %"$have_gas_979" -"$out_of_gas_980": ; preds = %"$have_gas_976" +"$out_of_gas_978": ; preds = %"$have_gas_974" call void @_out_of_gas() - br label %"$have_gas_981" + br label %"$have_gas_979" -"$have_gas_981": ; preds = %"$out_of_gas_980", %"$have_gas_976" - %"$consume_982" = sub i64 %"$gasrem_978", 1 - store i64 %"$consume_982", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_983", i32 0, i32 0), i32 5 }, %String* %key2b - %"$gasrem_984" = load i64, i64* @_gasrem - %"$gascmp_985" = icmp ugt i64 1, %"$gasrem_984" - br i1 %"$gascmp_985", label %"$out_of_gas_986", label %"$have_gas_987" +"$have_gas_979": ; preds = %"$out_of_gas_978", %"$have_gas_974" + %"$consume_980" = sub i64 %"$gasrem_976", 1 + store i64 %"$consume_980", i64* @_gasrem + %e = alloca %Map_String_String* + %"$gasrem_981" = load i64, i64* @_gasrem + %"$gascmp_982" = icmp ugt i64 1, %"$gasrem_981" + br i1 %"$gascmp_982", label %"$out_of_gas_983", label %"$have_gas_984" -"$out_of_gas_986": ; preds = %"$have_gas_981" +"$out_of_gas_983": ; preds = %"$have_gas_979" call void @_out_of_gas() - br label %"$have_gas_987" + br label %"$have_gas_984" -"$have_gas_987": ; preds = %"$out_of_gas_986", %"$have_gas_981" - %"$consume_988" = sub i64 %"$gasrem_984", 1 - store i64 %"$consume_988", i64* @_gasrem - %s1 = alloca %String +"$have_gas_984": ; preds = %"$out_of_gas_983", %"$have_gas_979" + %"$consume_985" = sub i64 %"$gasrem_981", 1 + store i64 %"$consume_985", i64* @_gasrem + %"$execptr_load_986" = load i8*, i8** @_execptr + %"$_new_empty_map_call_987" = call i8* @_new_empty_map(i8* %"$execptr_load_986") + %"$Emp_988" = bitcast i8* %"$_new_empty_map_call_987" to %Map_String_String* + store %Map_String_String* %"$Emp_988", %Map_String_String** %e %"$gasrem_989" = load i64, i64* @_gasrem %"$gascmp_990" = icmp ugt i64 1, %"$gasrem_989" br i1 %"$gascmp_990", label %"$out_of_gas_991", label %"$have_gas_992" -"$out_of_gas_991": ; preds = %"$have_gas_987" +"$out_of_gas_991": ; preds = %"$have_gas_984" call void @_out_of_gas() br label %"$have_gas_992" -"$have_gas_992": ; preds = %"$out_of_gas_991", %"$have_gas_987" +"$have_gas_992": ; preds = %"$out_of_gas_991", %"$have_gas_984" %"$consume_993" = sub i64 %"$gasrem_989", 1 store i64 %"$consume_993", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_994", i32 0, i32 0), i32 3 }, %String* %s1 - %"$gasrem_995" = load i64, i64* @_gasrem - %"$gascmp_996" = icmp ugt i64 1, %"$gasrem_995" - br i1 %"$gascmp_996", label %"$out_of_gas_997", label %"$have_gas_998" + %key2b = alloca %String + %"$gasrem_994" = load i64, i64* @_gasrem + %"$gascmp_995" = icmp ugt i64 1, %"$gasrem_994" + br i1 %"$gascmp_995", label %"$out_of_gas_996", label %"$have_gas_997" -"$out_of_gas_997": ; preds = %"$have_gas_992" +"$out_of_gas_996": ; preds = %"$have_gas_992" call void @_out_of_gas() - br label %"$have_gas_998" + br label %"$have_gas_997" -"$have_gas_998": ; preds = %"$out_of_gas_997", %"$have_gas_992" - %"$consume_999" = sub i64 %"$gasrem_995", 1 - store i64 %"$consume_999", i64* @_gasrem - %m1 = alloca %Map_String_String* - %"$execptr_load_1000" = load i8*, i8** @_execptr - %"$e_1001" = load %Map_String_String*, %Map_String_String** %e - %"$$e_1001_1002" = bitcast %Map_String_String* %"$e_1001" to i8* - %"$put_key2b_1003" = alloca %String - %"$key2b_1004" = load %String, %String* %key2b - store %String %"$key2b_1004", %String* %"$put_key2b_1003" - %"$$put_key2b_1003_1005" = bitcast %String* %"$put_key2b_1003" to i8* - %"$put_s1_1006" = alloca %String - %"$s1_1007" = load %String, %String* %s1 - store %String %"$s1_1007", %String* %"$put_s1_1006" - %"$$put_s1_1006_1008" = bitcast %String* %"$put_s1_1006" to i8* - %"$put_call_1009" = call i8* @_put(i8* %"$execptr_load_1000", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$e_1001_1002", i8* %"$$put_key2b_1003_1005", i8* %"$$put_s1_1006_1008") - %"$_put_1010" = bitcast i8* %"$put_call_1009" to %Map_String_String* - store %Map_String_String* %"$_put_1010", %Map_String_String** %m1 - %"$gasrem_1011" = load i64, i64* @_gasrem - %"$gascmp_1012" = icmp ugt i64 1, %"$gasrem_1011" - br i1 %"$gascmp_1012", label %"$out_of_gas_1013", label %"$have_gas_1014" +"$have_gas_997": ; preds = %"$out_of_gas_996", %"$have_gas_992" + %"$consume_998" = sub i64 %"$gasrem_994", 1 + store i64 %"$consume_998", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_999", i32 0, i32 0), i32 5 }, %String* %key2b + %"$gasrem_1000" = load i64, i64* @_gasrem + %"$gascmp_1001" = icmp ugt i64 1, %"$gasrem_1000" + br i1 %"$gascmp_1001", label %"$out_of_gas_1002", label %"$have_gas_1003" -"$out_of_gas_1013": ; preds = %"$have_gas_998" +"$out_of_gas_1002": ; preds = %"$have_gas_997" call void @_out_of_gas() - br label %"$have_gas_1014" + br label %"$have_gas_1003" -"$have_gas_1014": ; preds = %"$out_of_gas_1013", %"$have_gas_998" - %"$consume_1015" = sub i64 %"$gasrem_1011", 1 - store i64 %"$consume_1015", i64* @_gasrem - %key2c = alloca %String - %"$gasrem_1016" = load i64, i64* @_gasrem - %"$gascmp_1017" = icmp ugt i64 1, %"$gasrem_1016" - br i1 %"$gascmp_1017", label %"$out_of_gas_1018", label %"$have_gas_1019" +"$have_gas_1003": ; preds = %"$out_of_gas_1002", %"$have_gas_997" + %"$consume_1004" = sub i64 %"$gasrem_1000", 1 + store i64 %"$consume_1004", i64* @_gasrem + %s1 = alloca %String + %"$gasrem_1005" = load i64, i64* @_gasrem + %"$gascmp_1006" = icmp ugt i64 1, %"$gasrem_1005" + br i1 %"$gascmp_1006", label %"$out_of_gas_1007", label %"$have_gas_1008" -"$out_of_gas_1018": ; preds = %"$have_gas_1014" +"$out_of_gas_1007": ; preds = %"$have_gas_1003" call void @_out_of_gas() - br label %"$have_gas_1019" + br label %"$have_gas_1008" -"$have_gas_1019": ; preds = %"$out_of_gas_1018", %"$have_gas_1014" - %"$consume_1020" = sub i64 %"$gasrem_1016", 1 - store i64 %"$consume_1020", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1021", i32 0, i32 0), i32 5 }, %String* %key2c - %"$gasrem_1022" = load i64, i64* @_gasrem - %"$gascmp_1023" = icmp ugt i64 1, %"$gasrem_1022" - br i1 %"$gascmp_1023", label %"$out_of_gas_1024", label %"$have_gas_1025" +"$have_gas_1008": ; preds = %"$out_of_gas_1007", %"$have_gas_1003" + %"$consume_1009" = sub i64 %"$gasrem_1005", 1 + store i64 %"$consume_1009", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1010", i32 0, i32 0), i32 3 }, %String* %s1 + %"$gasrem_1011" = load i64, i64* @_gasrem + %"$gascmp_1012" = icmp ugt i64 1, %"$gasrem_1011" + br i1 %"$gascmp_1012", label %"$out_of_gas_1013", label %"$have_gas_1014" -"$out_of_gas_1024": ; preds = %"$have_gas_1019" +"$out_of_gas_1013": ; preds = %"$have_gas_1008" call void @_out_of_gas() - br label %"$have_gas_1025" + br label %"$have_gas_1014" -"$have_gas_1025": ; preds = %"$out_of_gas_1024", %"$have_gas_1019" - %"$consume_1026" = sub i64 %"$gasrem_1022", 1 - store i64 %"$consume_1026", i64* @_gasrem - %s2 = alloca %String +"$have_gas_1014": ; preds = %"$out_of_gas_1013", %"$have_gas_1008" + %"$consume_1015" = sub i64 %"$gasrem_1011", 1 + store i64 %"$consume_1015", i64* @_gasrem + %m1 = alloca %Map_String_String* + %"$execptr_load_1016" = load i8*, i8** @_execptr + %"$e_1017" = load %Map_String_String*, %Map_String_String** %e + %"$$e_1017_1018" = bitcast %Map_String_String* %"$e_1017" to i8* + %"$put_key2b_1019" = alloca %String + %"$key2b_1020" = load %String, %String* %key2b + store %String %"$key2b_1020", %String* %"$put_key2b_1019" + %"$$put_key2b_1019_1021" = bitcast %String* %"$put_key2b_1019" to i8* + %"$put_s1_1022" = alloca %String + %"$s1_1023" = load %String, %String* %s1 + store %String %"$s1_1023", %String* %"$put_s1_1022" + %"$$put_s1_1022_1024" = bitcast %String* %"$put_s1_1022" to i8* + %"$put_call_1025" = call i8* @_put(i8* %"$execptr_load_1016", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$e_1017_1018", i8* %"$$put_key2b_1019_1021", i8* %"$$put_s1_1022_1024") + %"$_put_1026" = bitcast i8* %"$put_call_1025" to %Map_String_String* + store %Map_String_String* %"$_put_1026", %Map_String_String** %m1 %"$gasrem_1027" = load i64, i64* @_gasrem %"$gascmp_1028" = icmp ugt i64 1, %"$gasrem_1027" br i1 %"$gascmp_1028", label %"$out_of_gas_1029", label %"$have_gas_1030" -"$out_of_gas_1029": ; preds = %"$have_gas_1025" +"$out_of_gas_1029": ; preds = %"$have_gas_1014" call void @_out_of_gas() br label %"$have_gas_1030" -"$have_gas_1030": ; preds = %"$out_of_gas_1029", %"$have_gas_1025" +"$have_gas_1030": ; preds = %"$out_of_gas_1029", %"$have_gas_1014" %"$consume_1031" = sub i64 %"$gasrem_1027", 1 store i64 %"$consume_1031", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1032", i32 0, i32 0), i32 3 }, %String* %s2 - %"$execptr_load_1033" = load i8*, i8** @_execptr - %"$m1_1034" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_1034_1035" = bitcast %Map_String_String* %"$m1_1034" to i8* - %"$put_key2c_1036" = alloca %String - %"$key2c_1037" = load %String, %String* %key2c - store %String %"$key2c_1037", %String* %"$put_key2c_1036" - %"$$put_key2c_1036_1038" = bitcast %String* %"$put_key2c_1036" to i8* - %"$put_s2_1039" = alloca %String - %"$s2_1040" = load %String, %String* %s2 - store %String %"$s2_1040", %String* %"$put_s2_1039" - %"$$put_s2_1039_1041" = bitcast %String* %"$put_s2_1039" to i8* - %"$put_call_1042" = call i8* @_put(i8* %"$execptr_load_1033", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_1034_1035", i8* %"$$put_key2c_1036_1038", i8* %"$$put_s2_1039_1041") - %"$_put_1043" = bitcast i8* %"$put_call_1042" to %Map_String_String* - store %Map_String_String* %"$_put_1043", %Map_String_String** %l_m2 - %"$gasrem_1044" = load i64, i64* @_gasrem - %"$gascmp_1045" = icmp ugt i64 1, %"$gasrem_1044" - br i1 %"$gascmp_1045", label %"$out_of_gas_1046", label %"$have_gas_1047" - -"$out_of_gas_1046": ; preds = %"$have_gas_1030" - call void @_out_of_gas() - br label %"$have_gas_1047" - -"$have_gas_1047": ; preds = %"$out_of_gas_1046", %"$have_gas_1030" - %"$consume_1048" = sub i64 %"$gasrem_1044", 1 - store i64 %"$consume_1048", i64* @_gasrem + %key2c = alloca %String + %"$gasrem_1032" = load i64, i64* @_gasrem + %"$gascmp_1033" = icmp ugt i64 1, %"$gasrem_1032" + br i1 %"$gascmp_1033", label %"$out_of_gas_1034", label %"$have_gas_1035" + +"$out_of_gas_1034": ; preds = %"$have_gas_1030" + call void @_out_of_gas() + br label %"$have_gas_1035" + +"$have_gas_1035": ; preds = %"$out_of_gas_1034", %"$have_gas_1030" + %"$consume_1036" = sub i64 %"$gasrem_1032", 1 + store i64 %"$consume_1036", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1037", i32 0, i32 0), i32 5 }, %String* %key2c + %"$gasrem_1038" = load i64, i64* @_gasrem + %"$gascmp_1039" = icmp ugt i64 1, %"$gasrem_1038" + br i1 %"$gascmp_1039", label %"$out_of_gas_1040", label %"$have_gas_1041" + +"$out_of_gas_1040": ; preds = %"$have_gas_1035" + call void @_out_of_gas() + br label %"$have_gas_1041" + +"$have_gas_1041": ; preds = %"$out_of_gas_1040", %"$have_gas_1035" + %"$consume_1042" = sub i64 %"$gasrem_1038", 1 + store i64 %"$consume_1042", i64* @_gasrem + %s2 = alloca %String + %"$gasrem_1043" = load i64, i64* @_gasrem + %"$gascmp_1044" = icmp ugt i64 1, %"$gasrem_1043" + br i1 %"$gascmp_1044", label %"$out_of_gas_1045", label %"$have_gas_1046" + +"$out_of_gas_1045": ; preds = %"$have_gas_1041" + call void @_out_of_gas() + br label %"$have_gas_1046" + +"$have_gas_1046": ; preds = %"$out_of_gas_1045", %"$have_gas_1041" + %"$consume_1047" = sub i64 %"$gasrem_1043", 1 + store i64 %"$consume_1047", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1048", i32 0, i32 0), i32 3 }, %String* %s2 + %"$execptr_load_1049" = load i8*, i8** @_execptr + %"$m1_1050" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_1050_1051" = bitcast %Map_String_String* %"$m1_1050" to i8* + %"$put_key2c_1052" = alloca %String + %"$key2c_1053" = load %String, %String* %key2c + store %String %"$key2c_1053", %String* %"$put_key2c_1052" + %"$$put_key2c_1052_1054" = bitcast %String* %"$put_key2c_1052" to i8* + %"$put_s2_1055" = alloca %String + %"$s2_1056" = load %String, %String* %s2 + store %String %"$s2_1056", %String* %"$put_s2_1055" + %"$$put_s2_1055_1057" = bitcast %String* %"$put_s2_1055" to i8* + %"$put_call_1058" = call i8* @_put(i8* %"$execptr_load_1049", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_1050_1051", i8* %"$$put_key2c_1052_1054", i8* %"$$put_s2_1055_1057") + %"$_put_1059" = bitcast i8* %"$put_call_1058" to %Map_String_String* + store %Map_String_String* %"$_put_1059", %Map_String_String** %l_m2 + %"$gasrem_1060" = load i64, i64* @_gasrem + %"$gascmp_1061" = icmp ugt i64 1, %"$gasrem_1060" + br i1 %"$gascmp_1061", label %"$out_of_gas_1062", label %"$have_gas_1063" + +"$out_of_gas_1062": ; preds = %"$have_gas_1046" + call void @_out_of_gas() + br label %"$have_gas_1063" + +"$have_gas_1063": ; preds = %"$out_of_gas_1062", %"$have_gas_1046" + %"$consume_1064" = sub i64 %"$gasrem_1060", 1 + store i64 %"$consume_1064", i64* @_gasrem %key1b = alloca %String - %"$gasrem_1049" = load i64, i64* @_gasrem - %"$gascmp_1050" = icmp ugt i64 1, %"$gasrem_1049" - br i1 %"$gascmp_1050", label %"$out_of_gas_1051", label %"$have_gas_1052" - -"$out_of_gas_1051": ; preds = %"$have_gas_1047" - call void @_out_of_gas() - br label %"$have_gas_1052" - -"$have_gas_1052": ; preds = %"$out_of_gas_1051", %"$have_gas_1047" - %"$consume_1053" = sub i64 %"$gasrem_1049", 1 - store i64 %"$consume_1053", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1054", i32 0, i32 0), i32 5 }, %String* %key1b - %"$l_m2_1055" = load %Map_String_String*, %Map_String_String** %l_m2 - %"$$l_m2_1055_1056" = bitcast %Map_String_String* %"$l_m2_1055" to i8* - %"$_literal_cost_call_1057" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$l_m2_1055_1056") - %"$gasadd_1058" = add i64 %"$_literal_cost_call_1057", 1 - %"$gasrem_1059" = load i64, i64* @_gasrem - %"$gascmp_1060" = icmp ugt i64 %"$gasadd_1058", %"$gasrem_1059" - br i1 %"$gascmp_1060", label %"$out_of_gas_1061", label %"$have_gas_1062" - -"$out_of_gas_1061": ; preds = %"$have_gas_1052" - call void @_out_of_gas() - br label %"$have_gas_1062" - -"$have_gas_1062": ; preds = %"$out_of_gas_1061", %"$have_gas_1052" - %"$consume_1063" = sub i64 %"$gasrem_1059", %"$gasadd_1058" - store i64 %"$consume_1063", i64* @_gasrem - %"$indices_buf_1064_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1064_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1064_salloc_load", i64 16) - %"$indices_buf_1064_salloc" = bitcast i8* %"$indices_buf_1064_salloc_salloc" to [16 x i8]* - %"$indices_buf_1064" = bitcast [16 x i8]* %"$indices_buf_1064_salloc" to i8* - %"$key1b_1065" = load %String, %String* %key1b - %"$indices_gep_1066" = getelementptr i8, i8* %"$indices_buf_1064", i32 0 - %indices_cast2 = bitcast i8* %"$indices_gep_1066" to %String* - store %String %"$key1b_1065", %String* %indices_cast2 - %"$execptr_load_1067" = load i8*, i8** @_execptr - %"$l_m2_1069" = load %Map_String_String*, %Map_String_String** %l_m2 - %"$update_value_1070" = bitcast %Map_String_String* %"$l_m2_1069" to i8* - call void @_update_field(i8* %"$execptr_load_1067", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1068", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 1, i8* %"$indices_buf_1064", i8* %"$update_value_1070") + %"$gasrem_1065" = load i64, i64* @_gasrem + %"$gascmp_1066" = icmp ugt i64 1, %"$gasrem_1065" + br i1 %"$gascmp_1066", label %"$out_of_gas_1067", label %"$have_gas_1068" + +"$out_of_gas_1067": ; preds = %"$have_gas_1063" + call void @_out_of_gas() + br label %"$have_gas_1068" + +"$have_gas_1068": ; preds = %"$out_of_gas_1067", %"$have_gas_1063" + %"$consume_1069" = sub i64 %"$gasrem_1065", 1 + store i64 %"$consume_1069", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1070", i32 0, i32 0), i32 5 }, %String* %key1b + %"$l_m2_1071" = load %Map_String_String*, %Map_String_String** %l_m2 + %"$$l_m2_1071_1072" = bitcast %Map_String_String* %"$l_m2_1071" to i8* + %"$_literal_cost_call_1073" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$l_m2_1071_1072") + %"$gasadd_1074" = add i64 %"$_literal_cost_call_1073", 1 + %"$gasrem_1075" = load i64, i64* @_gasrem + %"$gascmp_1076" = icmp ugt i64 %"$gasadd_1074", %"$gasrem_1075" + br i1 %"$gascmp_1076", label %"$out_of_gas_1077", label %"$have_gas_1078" + +"$out_of_gas_1077": ; preds = %"$have_gas_1068" + call void @_out_of_gas() + br label %"$have_gas_1078" + +"$have_gas_1078": ; preds = %"$out_of_gas_1077", %"$have_gas_1068" + %"$consume_1079" = sub i64 %"$gasrem_1075", %"$gasadd_1074" + store i64 %"$consume_1079", i64* @_gasrem + %"$indices_buf_1080_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1080_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1080_salloc_load", i64 16) + %"$indices_buf_1080_salloc" = bitcast i8* %"$indices_buf_1080_salloc_salloc" to [16 x i8]* + %"$indices_buf_1080" = bitcast [16 x i8]* %"$indices_buf_1080_salloc" to i8* + %"$key1b_1081" = load %String, %String* %key1b + %"$indices_gep_1082" = getelementptr i8, i8* %"$indices_buf_1080", i32 0 + %indices_cast2 = bitcast i8* %"$indices_gep_1082" to %String* + store %String %"$key1b_1081", %String* %indices_cast2 + %"$execptr_load_1083" = load i8*, i8** @_execptr + %"$l_m2_1085" = load %Map_String_String*, %Map_String_String** %l_m2 + %"$update_value_1086" = bitcast %Map_String_String* %"$l_m2_1085" to i8* + call void @_update_field(i8* %"$execptr_load_1083", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1084", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 1, i8* %"$indices_buf_1080", i8* %"$update_value_1086") ret void } @@ -2245,2604 +2271,2604 @@ declare i8* @_put(i8*, %_TyDescrTy_Typ*, i8*, i8*, i8*) define void @t5(i8* %0) { entry: - %"$_amount_1072" = getelementptr i8, i8* %0, i32 0 - %"$_amount_1073" = bitcast i8* %"$_amount_1072" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_1073" - %"$_sender_1074" = getelementptr i8, i8* %0, i32 16 - %"$_sender_1075" = bitcast i8* %"$_sender_1074" to [20 x i8]* - call void @"$t5_825"(%Uint128 %_amount, [20 x i8]* %"$_sender_1075") + %"$_amount_1088" = getelementptr i8, i8* %0, i32 0 + %"$_amount_1089" = bitcast i8* %"$_amount_1088" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_1089" + %"$_sender_1090" = getelementptr i8, i8* %0, i32 16 + %"$_sender_1091" = bitcast i8* %"$_sender_1090" to [20 x i8]* + call void @"$t5_841"(%Uint128 %_amount, [20 x i8]* %"$_sender_1091") ret void } -define internal void @"$t6_1076"(%Uint128 %_amount, [20 x i8]* %"$_sender_1077") { +define internal void @"$t6_1092"(%Uint128 %_amount, [20 x i8]* %"$_sender_1093") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_1077" - %"$gasrem_1078" = load i64, i64* @_gasrem - %"$gascmp_1079" = icmp ugt i64 1, %"$gasrem_1078" - br i1 %"$gascmp_1079", label %"$out_of_gas_1080", label %"$have_gas_1081" - -"$out_of_gas_1080": ; preds = %entry - call void @_out_of_gas() - br label %"$have_gas_1081" - -"$have_gas_1081": ; preds = %"$out_of_gas_1080", %entry - %"$consume_1082" = sub i64 %"$gasrem_1078", 1 - store i64 %"$consume_1082", i64* @_gasrem - %tname = alloca %String - %"$gasrem_1083" = load i64, i64* @_gasrem - %"$gascmp_1084" = icmp ugt i64 1, %"$gasrem_1083" - br i1 %"$gascmp_1084", label %"$out_of_gas_1085", label %"$have_gas_1086" - -"$out_of_gas_1085": ; preds = %"$have_gas_1081" - call void @_out_of_gas() - br label %"$have_gas_1086" - -"$have_gas_1086": ; preds = %"$out_of_gas_1085", %"$have_gas_1081" - %"$consume_1087" = sub i64 %"$gasrem_1083", 1 - store i64 %"$consume_1087", i64* @_gasrem - store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_1088", i32 0, i32 0), i32 2 }, %String* %tname - %"$gasrem_1089" = load i64, i64* @_gasrem - %"$gascmp_1090" = icmp ugt i64 1, %"$gasrem_1089" - br i1 %"$gascmp_1090", label %"$out_of_gas_1091", label %"$have_gas_1092" - -"$out_of_gas_1091": ; preds = %"$have_gas_1086" - call void @_out_of_gas() - br label %"$have_gas_1092" - -"$have_gas_1092": ; preds = %"$out_of_gas_1091", %"$have_gas_1086" - %"$consume_1093" = sub i64 %"$gasrem_1089", 1 - store i64 %"$consume_1093", i64* @_gasrem - %key1a = alloca %String + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1093" %"$gasrem_1094" = load i64, i64* @_gasrem %"$gascmp_1095" = icmp ugt i64 1, %"$gasrem_1094" br i1 %"$gascmp_1095", label %"$out_of_gas_1096", label %"$have_gas_1097" -"$out_of_gas_1096": ; preds = %"$have_gas_1092" +"$out_of_gas_1096": ; preds = %entry call void @_out_of_gas() br label %"$have_gas_1097" -"$have_gas_1097": ; preds = %"$out_of_gas_1096", %"$have_gas_1092" +"$have_gas_1097": ; preds = %"$out_of_gas_1096", %entry %"$consume_1098" = sub i64 %"$gasrem_1094", 1 store i64 %"$consume_1098", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1099", i32 0, i32 0), i32 5 }, %String* %key1a - %"$gasrem_1100" = load i64, i64* @_gasrem - %"$gascmp_1101" = icmp ugt i64 1, %"$gasrem_1100" - br i1 %"$gascmp_1101", label %"$out_of_gas_1102", label %"$have_gas_1103" + %tname = alloca %String + %"$gasrem_1099" = load i64, i64* @_gasrem + %"$gascmp_1100" = icmp ugt i64 1, %"$gasrem_1099" + br i1 %"$gascmp_1100", label %"$out_of_gas_1101", label %"$have_gas_1102" -"$out_of_gas_1102": ; preds = %"$have_gas_1097" +"$out_of_gas_1101": ; preds = %"$have_gas_1097" call void @_out_of_gas() - br label %"$have_gas_1103" + br label %"$have_gas_1102" -"$have_gas_1103": ; preds = %"$out_of_gas_1102", %"$have_gas_1097" - %"$consume_1104" = sub i64 %"$gasrem_1100", 1 - store i64 %"$consume_1104", i64* @_gasrem - %key2a = alloca %String +"$have_gas_1102": ; preds = %"$out_of_gas_1101", %"$have_gas_1097" + %"$consume_1103" = sub i64 %"$gasrem_1099", 1 + store i64 %"$consume_1103", i64* @_gasrem + store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_1104", i32 0, i32 0), i32 2 }, %String* %tname %"$gasrem_1105" = load i64, i64* @_gasrem %"$gascmp_1106" = icmp ugt i64 1, %"$gasrem_1105" br i1 %"$gascmp_1106", label %"$out_of_gas_1107", label %"$have_gas_1108" -"$out_of_gas_1107": ; preds = %"$have_gas_1103" +"$out_of_gas_1107": ; preds = %"$have_gas_1102" call void @_out_of_gas() br label %"$have_gas_1108" -"$have_gas_1108": ; preds = %"$out_of_gas_1107", %"$have_gas_1103" +"$have_gas_1108": ; preds = %"$out_of_gas_1107", %"$have_gas_1102" %"$consume_1109" = sub i64 %"$gasrem_1105", 1 store i64 %"$consume_1109", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1110", i32 0, i32 0), i32 5 }, %String* %key2a + %key1a = alloca %String + %"$gasrem_1110" = load i64, i64* @_gasrem + %"$gascmp_1111" = icmp ugt i64 1, %"$gasrem_1110" + br i1 %"$gascmp_1111", label %"$out_of_gas_1112", label %"$have_gas_1113" + +"$out_of_gas_1112": ; preds = %"$have_gas_1108" + call void @_out_of_gas() + br label %"$have_gas_1113" + +"$have_gas_1113": ; preds = %"$out_of_gas_1112", %"$have_gas_1108" + %"$consume_1114" = sub i64 %"$gasrem_1110", 1 + store i64 %"$consume_1114", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1115", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_1116" = load i64, i64* @_gasrem + %"$gascmp_1117" = icmp ugt i64 1, %"$gasrem_1116" + br i1 %"$gascmp_1117", label %"$out_of_gas_1118", label %"$have_gas_1119" + +"$out_of_gas_1118": ; preds = %"$have_gas_1113" + call void @_out_of_gas() + br label %"$have_gas_1119" + +"$have_gas_1119": ; preds = %"$out_of_gas_1118", %"$have_gas_1113" + %"$consume_1120" = sub i64 %"$gasrem_1116", 1 + store i64 %"$consume_1120", i64* @_gasrem + %key2a = alloca %String + %"$gasrem_1121" = load i64, i64* @_gasrem + %"$gascmp_1122" = icmp ugt i64 1, %"$gasrem_1121" + br i1 %"$gascmp_1122", label %"$out_of_gas_1123", label %"$have_gas_1124" + +"$out_of_gas_1123": ; preds = %"$have_gas_1119" + call void @_out_of_gas() + br label %"$have_gas_1124" + +"$have_gas_1124": ; preds = %"$out_of_gas_1123", %"$have_gas_1119" + %"$consume_1125" = sub i64 %"$gasrem_1121", 1 + store i64 %"$consume_1125", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1126", i32 0, i32 0), i32 5 }, %String* %key2a %c1 = alloca %TName_Option_String* - %"$indices_buf_1111_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1111_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1111_salloc_load", i64 32) - %"$indices_buf_1111_salloc" = bitcast i8* %"$indices_buf_1111_salloc_salloc" to [32 x i8]* - %"$indices_buf_1111" = bitcast [32 x i8]* %"$indices_buf_1111_salloc" to i8* - %"$key1a_1112" = load %String, %String* %key1a - %"$indices_gep_1113" = getelementptr i8, i8* %"$indices_buf_1111", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_1113" to %String* - store %String %"$key1a_1112", %String* %indices_cast - %"$key2a_1114" = load %String, %String* %key2a - %"$indices_gep_1115" = getelementptr i8, i8* %"$indices_buf_1111", i32 16 - %indices_cast1 = bitcast i8* %"$indices_gep_1115" to %String* - store %String %"$key2a_1114", %String* %indices_cast1 - %"$execptr_load_1116" = load i8*, i8** @_execptr - %"$c1_1118" = call i8* @_fetch_field(i8* %"$execptr_load_1116", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1117", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1111", i32 1) - %"$c1_1119" = bitcast i8* %"$c1_1118" to %TName_Option_String* - store %TName_Option_String* %"$c1_1119", %TName_Option_String** %c1 - %"$c1_1120" = load %TName_Option_String*, %TName_Option_String** %c1 - %"$$c1_1120_1121" = bitcast %TName_Option_String* %"$c1_1120" to i8* - %"$_literal_cost_call_1122" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$c1_1120_1121") - %"$gasadd_1123" = add i64 %"$_literal_cost_call_1122", 0 - %"$gasadd_1124" = add i64 %"$gasadd_1123", 2 - %"$gasrem_1125" = load i64, i64* @_gasrem - %"$gascmp_1126" = icmp ugt i64 %"$gasadd_1124", %"$gasrem_1125" - br i1 %"$gascmp_1126", label %"$out_of_gas_1127", label %"$have_gas_1128" - -"$out_of_gas_1127": ; preds = %"$have_gas_1108" - call void @_out_of_gas() - br label %"$have_gas_1128" - -"$have_gas_1128": ; preds = %"$out_of_gas_1127", %"$have_gas_1108" - %"$consume_1129" = sub i64 %"$gasrem_1125", %"$gasadd_1124" - store i64 %"$consume_1129", i64* @_gasrem - %"$gasrem_1130" = load i64, i64* @_gasrem - %"$gascmp_1131" = icmp ugt i64 2, %"$gasrem_1130" - br i1 %"$gascmp_1131", label %"$out_of_gas_1132", label %"$have_gas_1133" - -"$out_of_gas_1132": ; preds = %"$have_gas_1128" - call void @_out_of_gas() - br label %"$have_gas_1133" - -"$have_gas_1133": ; preds = %"$out_of_gas_1132", %"$have_gas_1128" - %"$consume_1134" = sub i64 %"$gasrem_1130", 2 - store i64 %"$consume_1134", i64* @_gasrem + %"$indices_buf_1127_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1127_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1127_salloc_load", i64 32) + %"$indices_buf_1127_salloc" = bitcast i8* %"$indices_buf_1127_salloc_salloc" to [32 x i8]* + %"$indices_buf_1127" = bitcast [32 x i8]* %"$indices_buf_1127_salloc" to i8* + %"$key1a_1128" = load %String, %String* %key1a + %"$indices_gep_1129" = getelementptr i8, i8* %"$indices_buf_1127", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_1129" to %String* + store %String %"$key1a_1128", %String* %indices_cast + %"$key2a_1130" = load %String, %String* %key2a + %"$indices_gep_1131" = getelementptr i8, i8* %"$indices_buf_1127", i32 16 + %indices_cast1 = bitcast i8* %"$indices_gep_1131" to %String* + store %String %"$key2a_1130", %String* %indices_cast1 + %"$execptr_load_1132" = load i8*, i8** @_execptr + %"$c1_1134" = call i8* @_fetch_field(i8* %"$execptr_load_1132", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1133", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1127", i32 1) + %"$c1_1135" = bitcast i8* %"$c1_1134" to %TName_Option_String* + store %TName_Option_String* %"$c1_1135", %TName_Option_String** %c1 %"$c1_1136" = load %TName_Option_String*, %TName_Option_String** %c1 - %"$c1_tag_1137" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$c1_1136", i32 0, i32 0 - %"$c1_tag_1138" = load i8, i8* %"$c1_tag_1137" - switch i8 %"$c1_tag_1138", label %"$empty_default_1139" [ - i8 0, label %"$Some_1140" - i8 1, label %"$None_1197" + %"$$c1_1136_1137" = bitcast %TName_Option_String* %"$c1_1136" to i8* + %"$_literal_cost_call_1138" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$c1_1136_1137") + %"$gasadd_1139" = add i64 %"$_literal_cost_call_1138", 0 + %"$gasadd_1140" = add i64 %"$gasadd_1139", 2 + %"$gasrem_1141" = load i64, i64* @_gasrem + %"$gascmp_1142" = icmp ugt i64 %"$gasadd_1140", %"$gasrem_1141" + br i1 %"$gascmp_1142", label %"$out_of_gas_1143", label %"$have_gas_1144" + +"$out_of_gas_1143": ; preds = %"$have_gas_1124" + call void @_out_of_gas() + br label %"$have_gas_1144" + +"$have_gas_1144": ; preds = %"$out_of_gas_1143", %"$have_gas_1124" + %"$consume_1145" = sub i64 %"$gasrem_1141", %"$gasadd_1140" + store i64 %"$consume_1145", i64* @_gasrem + %"$gasrem_1146" = load i64, i64* @_gasrem + %"$gascmp_1147" = icmp ugt i64 2, %"$gasrem_1146" + br i1 %"$gascmp_1147", label %"$out_of_gas_1148", label %"$have_gas_1149" + +"$out_of_gas_1148": ; preds = %"$have_gas_1144" + call void @_out_of_gas() + br label %"$have_gas_1149" + +"$have_gas_1149": ; preds = %"$out_of_gas_1148", %"$have_gas_1144" + %"$consume_1150" = sub i64 %"$gasrem_1146", 2 + store i64 %"$consume_1150", i64* @_gasrem + %"$c1_1152" = load %TName_Option_String*, %TName_Option_String** %c1 + %"$c1_tag_1153" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$c1_1152", i32 0, i32 0 + %"$c1_tag_1154" = load i8, i8* %"$c1_tag_1153" + switch i8 %"$c1_tag_1154", label %"$empty_default_1155" [ + i8 0, label %"$Some_1156" + i8 1, label %"$None_1213" ] -"$Some_1140": ; preds = %"$have_gas_1133" - %"$c1_1141" = bitcast %TName_Option_String* %"$c1_1136" to %CName_Some_String* - %"$c_gep_1142" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$c1_1141", i32 0, i32 1 - %"$c_load_1143" = load %String, %String* %"$c_gep_1142" +"$Some_1156": ; preds = %"$have_gas_1149" + %"$c1_1157" = bitcast %TName_Option_String* %"$c1_1152" to %CName_Some_String* + %"$c_gep_1158" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$c1_1157", i32 0, i32 1 + %"$c_load_1159" = load %String, %String* %"$c_gep_1158" %c = alloca %String - store %String %"$c_load_1143", %String* %c - %"$gasrem_1144" = load i64, i64* @_gasrem - %"$gascmp_1145" = icmp ugt i64 1, %"$gasrem_1144" - br i1 %"$gascmp_1145", label %"$out_of_gas_1146", label %"$have_gas_1147" + store %String %"$c_load_1159", %String* %c + %"$gasrem_1160" = load i64, i64* @_gasrem + %"$gascmp_1161" = icmp ugt i64 1, %"$gasrem_1160" + br i1 %"$gascmp_1161", label %"$out_of_gas_1162", label %"$have_gas_1163" -"$out_of_gas_1146": ; preds = %"$Some_1140" +"$out_of_gas_1162": ; preds = %"$Some_1156" call void @_out_of_gas() - br label %"$have_gas_1147" + br label %"$have_gas_1163" -"$have_gas_1147": ; preds = %"$out_of_gas_1146", %"$Some_1140" - %"$consume_1148" = sub i64 %"$gasrem_1144", 1 - store i64 %"$consume_1148", i64* @_gasrem +"$have_gas_1163": ; preds = %"$out_of_gas_1162", %"$Some_1156" + %"$consume_1164" = sub i64 %"$gasrem_1160", 1 + store i64 %"$consume_1164", i64* @_gasrem %v = alloca %String - %"$gasrem_1149" = load i64, i64* @_gasrem - %"$gascmp_1150" = icmp ugt i64 1, %"$gasrem_1149" - br i1 %"$gascmp_1150", label %"$out_of_gas_1151", label %"$have_gas_1152" + %"$gasrem_1165" = load i64, i64* @_gasrem + %"$gascmp_1166" = icmp ugt i64 1, %"$gasrem_1165" + br i1 %"$gascmp_1166", label %"$out_of_gas_1167", label %"$have_gas_1168" -"$out_of_gas_1151": ; preds = %"$have_gas_1147" +"$out_of_gas_1167": ; preds = %"$have_gas_1163" call void @_out_of_gas() - br label %"$have_gas_1152" + br label %"$have_gas_1168" -"$have_gas_1152": ; preds = %"$out_of_gas_1151", %"$have_gas_1147" - %"$consume_1153" = sub i64 %"$gasrem_1149", 1 - store i64 %"$consume_1153", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1154", i32 0, i32 0), i32 3 }, %String* %v - %"$gasrem_1155" = load i64, i64* @_gasrem - %"$gascmp_1156" = icmp ugt i64 1, %"$gasrem_1155" - br i1 %"$gascmp_1156", label %"$out_of_gas_1157", label %"$have_gas_1158" +"$have_gas_1168": ; preds = %"$out_of_gas_1167", %"$have_gas_1163" + %"$consume_1169" = sub i64 %"$gasrem_1165", 1 + store i64 %"$consume_1169", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1170", i32 0, i32 0), i32 3 }, %String* %v + %"$gasrem_1171" = load i64, i64* @_gasrem + %"$gascmp_1172" = icmp ugt i64 1, %"$gasrem_1171" + br i1 %"$gascmp_1172", label %"$out_of_gas_1173", label %"$have_gas_1174" -"$out_of_gas_1157": ; preds = %"$have_gas_1152" +"$out_of_gas_1173": ; preds = %"$have_gas_1168" call void @_out_of_gas() - br label %"$have_gas_1158" + br label %"$have_gas_1174" -"$have_gas_1158": ; preds = %"$out_of_gas_1157", %"$have_gas_1152" - %"$consume_1159" = sub i64 %"$gasrem_1155", 1 - store i64 %"$consume_1159", i64* @_gasrem +"$have_gas_1174": ; preds = %"$out_of_gas_1173", %"$have_gas_1168" + %"$consume_1175" = sub i64 %"$gasrem_1171", 1 + store i64 %"$consume_1175", i64* @_gasrem %eq = alloca %TName_Bool* - %"$execptr_load_1160" = load i8*, i8** @_execptr - %"$c_1161" = load %String, %String* %c - %"$v_1162" = load %String, %String* %v - %"$eq_call_1163" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_1160", %String %"$c_1161", %String %"$v_1162") - store %TName_Bool* %"$eq_call_1163", %TName_Bool** %eq - %"$gasrem_1164" = load i64, i64* @_gasrem - %"$gascmp_1165" = icmp ugt i64 2, %"$gasrem_1164" - br i1 %"$gascmp_1165", label %"$out_of_gas_1166", label %"$have_gas_1167" - -"$out_of_gas_1166": ; preds = %"$have_gas_1158" - call void @_out_of_gas() - br label %"$have_gas_1167" - -"$have_gas_1167": ; preds = %"$out_of_gas_1166", %"$have_gas_1158" - %"$consume_1168" = sub i64 %"$gasrem_1164", 2 - store i64 %"$consume_1168", i64* @_gasrem - %"$eq_1170" = load %TName_Bool*, %TName_Bool** %eq - %"$eq_tag_1171" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_1170", i32 0, i32 0 - %"$eq_tag_1172" = load i8, i8* %"$eq_tag_1171" - switch i8 %"$eq_tag_1172", label %"$empty_default_1173" [ - i8 0, label %"$True_1174" - i8 1, label %"$False_1176" + %"$execptr_load_1176" = load i8*, i8** @_execptr + %"$c_1177" = load %String, %String* %c + %"$v_1178" = load %String, %String* %v + %"$eq_call_1179" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_1176", %String %"$c_1177", %String %"$v_1178") + store %TName_Bool* %"$eq_call_1179", %TName_Bool** %eq + %"$gasrem_1180" = load i64, i64* @_gasrem + %"$gascmp_1181" = icmp ugt i64 2, %"$gasrem_1180" + br i1 %"$gascmp_1181", label %"$out_of_gas_1182", label %"$have_gas_1183" + +"$out_of_gas_1182": ; preds = %"$have_gas_1174" + call void @_out_of_gas() + br label %"$have_gas_1183" + +"$have_gas_1183": ; preds = %"$out_of_gas_1182", %"$have_gas_1174" + %"$consume_1184" = sub i64 %"$gasrem_1180", 2 + store i64 %"$consume_1184", i64* @_gasrem + %"$eq_1186" = load %TName_Bool*, %TName_Bool** %eq + %"$eq_tag_1187" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_1186", i32 0, i32 0 + %"$eq_tag_1188" = load i8, i8* %"$eq_tag_1187" + switch i8 %"$eq_tag_1188", label %"$empty_default_1189" [ + i8 0, label %"$True_1190" + i8 1, label %"$False_1192" ] -"$True_1174": ; preds = %"$have_gas_1167" - %"$eq_1175" = bitcast %TName_Bool* %"$eq_1170" to %CName_True* - br label %"$matchsucc_1169" +"$True_1190": ; preds = %"$have_gas_1183" + %"$eq_1191" = bitcast %TName_Bool* %"$eq_1186" to %CName_True* + br label %"$matchsucc_1185" -"$False_1176": ; preds = %"$have_gas_1167" - %"$eq_1177" = bitcast %TName_Bool* %"$eq_1170" to %CName_False* - %"$gasrem_1178" = load i64, i64* @_gasrem - %"$gascmp_1179" = icmp ugt i64 1, %"$gasrem_1178" - br i1 %"$gascmp_1179", label %"$out_of_gas_1180", label %"$have_gas_1181" +"$False_1192": ; preds = %"$have_gas_1183" + %"$eq_1193" = bitcast %TName_Bool* %"$eq_1186" to %CName_False* + %"$gasrem_1194" = load i64, i64* @_gasrem + %"$gascmp_1195" = icmp ugt i64 1, %"$gasrem_1194" + br i1 %"$gascmp_1195", label %"$out_of_gas_1196", label %"$have_gas_1197" -"$out_of_gas_1180": ; preds = %"$False_1176" +"$out_of_gas_1196": ; preds = %"$False_1192" call void @_out_of_gas() - br label %"$have_gas_1181" + br label %"$have_gas_1197" -"$have_gas_1181": ; preds = %"$out_of_gas_1180", %"$False_1176" - %"$consume_1182" = sub i64 %"$gasrem_1178", 1 - store i64 %"$consume_1182", i64* @_gasrem +"$have_gas_1197": ; preds = %"$out_of_gas_1196", %"$False_1192" + %"$consume_1198" = sub i64 %"$gasrem_1194", 1 + store i64 %"$consume_1198", i64* @_gasrem %m = alloca %String - %"$gasrem_1183" = load i64, i64* @_gasrem - %"$gascmp_1184" = icmp ugt i64 1, %"$gasrem_1183" - br i1 %"$gascmp_1184", label %"$out_of_gas_1185", label %"$have_gas_1186" + %"$gasrem_1199" = load i64, i64* @_gasrem + %"$gascmp_1200" = icmp ugt i64 1, %"$gasrem_1199" + br i1 %"$gascmp_1200", label %"$out_of_gas_1201", label %"$have_gas_1202" -"$out_of_gas_1185": ; preds = %"$have_gas_1181" +"$out_of_gas_1201": ; preds = %"$have_gas_1197" call void @_out_of_gas() - br label %"$have_gas_1186" + br label %"$have_gas_1202" -"$have_gas_1186": ; preds = %"$out_of_gas_1185", %"$have_gas_1181" - %"$consume_1187" = sub i64 %"$gasrem_1183", 1 - store i64 %"$consume_1187", i64* @_gasrem - store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_1188", i32 0, i32 0), i32 31 }, %String* %m - %"$gasrem_1189" = load i64, i64* @_gasrem - %"$gascmp_1190" = icmp ugt i64 1, %"$gasrem_1189" - br i1 %"$gascmp_1190", label %"$out_of_gas_1191", label %"$have_gas_1192" +"$have_gas_1202": ; preds = %"$out_of_gas_1201", %"$have_gas_1197" + %"$consume_1203" = sub i64 %"$gasrem_1199", 1 + store i64 %"$consume_1203", i64* @_gasrem + store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_1204", i32 0, i32 0), i32 31 }, %String* %m + %"$gasrem_1205" = load i64, i64* @_gasrem + %"$gascmp_1206" = icmp ugt i64 1, %"$gasrem_1205" + br i1 %"$gascmp_1206", label %"$out_of_gas_1207", label %"$have_gas_1208" -"$out_of_gas_1191": ; preds = %"$have_gas_1186" +"$out_of_gas_1207": ; preds = %"$have_gas_1202" call void @_out_of_gas() - br label %"$have_gas_1192" + br label %"$have_gas_1208" -"$have_gas_1192": ; preds = %"$out_of_gas_1191", %"$have_gas_1186" - %"$consume_1193" = sub i64 %"$gasrem_1189", 1 - store i64 %"$consume_1193", i64* @_gasrem - %"$fail_msg__sender_1194" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1194" - %"$tname_1195" = load %String, %String* %tname - %"$m_1196" = load %String, %String* %m - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1194", %String %"$tname_1195", %String %"$m_1196") - br label %"$matchsucc_1169" +"$have_gas_1208": ; preds = %"$out_of_gas_1207", %"$have_gas_1202" + %"$consume_1209" = sub i64 %"$gasrem_1205", 1 + store i64 %"$consume_1209", i64* @_gasrem + %"$fail_msg__sender_1210" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1210" + %"$tname_1211" = load %String, %String* %tname + %"$m_1212" = load %String, %String* %m + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1210", %String %"$tname_1211", %String %"$m_1212") + br label %"$matchsucc_1185" -"$empty_default_1173": ; preds = %"$have_gas_1167" - br label %"$matchsucc_1169" +"$empty_default_1189": ; preds = %"$have_gas_1183" + br label %"$matchsucc_1185" -"$matchsucc_1169": ; preds = %"$have_gas_1192", %"$True_1174", %"$empty_default_1173" - br label %"$matchsucc_1135" +"$matchsucc_1185": ; preds = %"$have_gas_1208", %"$True_1190", %"$empty_default_1189" + br label %"$matchsucc_1151" -"$None_1197": ; preds = %"$have_gas_1133" - %"$c1_1198" = bitcast %TName_Option_String* %"$c1_1136" to %CName_None_String* - %"$gasrem_1199" = load i64, i64* @_gasrem - %"$gascmp_1200" = icmp ugt i64 1, %"$gasrem_1199" - br i1 %"$gascmp_1200", label %"$out_of_gas_1201", label %"$have_gas_1202" +"$None_1213": ; preds = %"$have_gas_1149" + %"$c1_1214" = bitcast %TName_Option_String* %"$c1_1152" to %CName_None_String* + %"$gasrem_1215" = load i64, i64* @_gasrem + %"$gascmp_1216" = icmp ugt i64 1, %"$gasrem_1215" + br i1 %"$gascmp_1216", label %"$out_of_gas_1217", label %"$have_gas_1218" -"$out_of_gas_1201": ; preds = %"$None_1197" +"$out_of_gas_1217": ; preds = %"$None_1213" call void @_out_of_gas() - br label %"$have_gas_1202" + br label %"$have_gas_1218" -"$have_gas_1202": ; preds = %"$out_of_gas_1201", %"$None_1197" - %"$consume_1203" = sub i64 %"$gasrem_1199", 1 - store i64 %"$consume_1203", i64* @_gasrem +"$have_gas_1218": ; preds = %"$out_of_gas_1217", %"$None_1213" + %"$consume_1219" = sub i64 %"$gasrem_1215", 1 + store i64 %"$consume_1219", i64* @_gasrem %m2 = alloca %String - %"$gasrem_1204" = load i64, i64* @_gasrem - %"$gascmp_1205" = icmp ugt i64 1, %"$gasrem_1204" - br i1 %"$gascmp_1205", label %"$out_of_gas_1206", label %"$have_gas_1207" + %"$gasrem_1220" = load i64, i64* @_gasrem + %"$gascmp_1221" = icmp ugt i64 1, %"$gasrem_1220" + br i1 %"$gascmp_1221", label %"$out_of_gas_1222", label %"$have_gas_1223" -"$out_of_gas_1206": ; preds = %"$have_gas_1202" +"$out_of_gas_1222": ; preds = %"$have_gas_1218" call void @_out_of_gas() - br label %"$have_gas_1207" + br label %"$have_gas_1223" -"$have_gas_1207": ; preds = %"$out_of_gas_1206", %"$have_gas_1202" - %"$consume_1208" = sub i64 %"$gasrem_1204", 1 - store i64 %"$consume_1208", i64* @_gasrem - store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_1209", i32 0, i32 0), i32 21 }, %String* %m2 - %"$gasrem_1210" = load i64, i64* @_gasrem - %"$gascmp_1211" = icmp ugt i64 1, %"$gasrem_1210" - br i1 %"$gascmp_1211", label %"$out_of_gas_1212", label %"$have_gas_1213" +"$have_gas_1223": ; preds = %"$out_of_gas_1222", %"$have_gas_1218" + %"$consume_1224" = sub i64 %"$gasrem_1220", 1 + store i64 %"$consume_1224", i64* @_gasrem + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_1225", i32 0, i32 0), i32 21 }, %String* %m2 + %"$gasrem_1226" = load i64, i64* @_gasrem + %"$gascmp_1227" = icmp ugt i64 1, %"$gasrem_1226" + br i1 %"$gascmp_1227", label %"$out_of_gas_1228", label %"$have_gas_1229" -"$out_of_gas_1212": ; preds = %"$have_gas_1207" +"$out_of_gas_1228": ; preds = %"$have_gas_1223" call void @_out_of_gas() - br label %"$have_gas_1213" + br label %"$have_gas_1229" -"$have_gas_1213": ; preds = %"$out_of_gas_1212", %"$have_gas_1207" - %"$consume_1214" = sub i64 %"$gasrem_1210", 1 - store i64 %"$consume_1214", i64* @_gasrem - %"$fail_msg__sender_1215" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1215" - %"$tname_1216" = load %String, %String* %tname - %"$m_1217" = load %String, %String* %m2 - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1215", %String %"$tname_1216", %String %"$m_1217") - br label %"$matchsucc_1135" +"$have_gas_1229": ; preds = %"$out_of_gas_1228", %"$have_gas_1223" + %"$consume_1230" = sub i64 %"$gasrem_1226", 1 + store i64 %"$consume_1230", i64* @_gasrem + %"$fail_msg__sender_1231" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1231" + %"$tname_1232" = load %String, %String* %tname + %"$m_1233" = load %String, %String* %m2 + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1231", %String %"$tname_1232", %String %"$m_1233") + br label %"$matchsucc_1151" -"$empty_default_1139": ; preds = %"$have_gas_1133" - br label %"$matchsucc_1135" +"$empty_default_1155": ; preds = %"$have_gas_1149" + br label %"$matchsucc_1151" -"$matchsucc_1135": ; preds = %"$have_gas_1213", %"$matchsucc_1169", %"$empty_default_1139" - %"$gasrem_1218" = load i64, i64* @_gasrem - %"$gascmp_1219" = icmp ugt i64 1, %"$gasrem_1218" - br i1 %"$gascmp_1219", label %"$out_of_gas_1220", label %"$have_gas_1221" +"$matchsucc_1151": ; preds = %"$have_gas_1229", %"$matchsucc_1185", %"$empty_default_1155" + %"$gasrem_1234" = load i64, i64* @_gasrem + %"$gascmp_1235" = icmp ugt i64 1, %"$gasrem_1234" + br i1 %"$gascmp_1235", label %"$out_of_gas_1236", label %"$have_gas_1237" -"$out_of_gas_1220": ; preds = %"$matchsucc_1135" +"$out_of_gas_1236": ; preds = %"$matchsucc_1151" call void @_out_of_gas() - br label %"$have_gas_1221" + br label %"$have_gas_1237" -"$have_gas_1221": ; preds = %"$out_of_gas_1220", %"$matchsucc_1135" - %"$consume_1222" = sub i64 %"$gasrem_1218", 1 - store i64 %"$consume_1222", i64* @_gasrem +"$have_gas_1237": ; preds = %"$out_of_gas_1236", %"$matchsucc_1151" + %"$consume_1238" = sub i64 %"$gasrem_1234", 1 + store i64 %"$consume_1238", i64* @_gasrem %key1b = alloca %String - %"$gasrem_1223" = load i64, i64* @_gasrem - %"$gascmp_1224" = icmp ugt i64 1, %"$gasrem_1223" - br i1 %"$gascmp_1224", label %"$out_of_gas_1225", label %"$have_gas_1226" + %"$gasrem_1239" = load i64, i64* @_gasrem + %"$gascmp_1240" = icmp ugt i64 1, %"$gasrem_1239" + br i1 %"$gascmp_1240", label %"$out_of_gas_1241", label %"$have_gas_1242" -"$out_of_gas_1225": ; preds = %"$have_gas_1221" +"$out_of_gas_1241": ; preds = %"$have_gas_1237" call void @_out_of_gas() - br label %"$have_gas_1226" + br label %"$have_gas_1242" -"$have_gas_1226": ; preds = %"$out_of_gas_1225", %"$have_gas_1221" - %"$consume_1227" = sub i64 %"$gasrem_1223", 1 - store i64 %"$consume_1227", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1228", i32 0, i32 0), i32 5 }, %String* %key1b - %"$gasrem_1229" = load i64, i64* @_gasrem - %"$gascmp_1230" = icmp ugt i64 1, %"$gasrem_1229" - br i1 %"$gascmp_1230", label %"$out_of_gas_1231", label %"$have_gas_1232" +"$have_gas_1242": ; preds = %"$out_of_gas_1241", %"$have_gas_1237" + %"$consume_1243" = sub i64 %"$gasrem_1239", 1 + store i64 %"$consume_1243", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1244", i32 0, i32 0), i32 5 }, %String* %key1b + %"$gasrem_1245" = load i64, i64* @_gasrem + %"$gascmp_1246" = icmp ugt i64 1, %"$gasrem_1245" + br i1 %"$gascmp_1246", label %"$out_of_gas_1247", label %"$have_gas_1248" -"$out_of_gas_1231": ; preds = %"$have_gas_1226" +"$out_of_gas_1247": ; preds = %"$have_gas_1242" call void @_out_of_gas() - br label %"$have_gas_1232" + br label %"$have_gas_1248" -"$have_gas_1232": ; preds = %"$out_of_gas_1231", %"$have_gas_1226" - %"$consume_1233" = sub i64 %"$gasrem_1229", 1 - store i64 %"$consume_1233", i64* @_gasrem +"$have_gas_1248": ; preds = %"$out_of_gas_1247", %"$have_gas_1242" + %"$consume_1249" = sub i64 %"$gasrem_1245", 1 + store i64 %"$consume_1249", i64* @_gasrem %key2b = alloca %String - %"$gasrem_1234" = load i64, i64* @_gasrem - %"$gascmp_1235" = icmp ugt i64 1, %"$gasrem_1234" - br i1 %"$gascmp_1235", label %"$out_of_gas_1236", label %"$have_gas_1237" + %"$gasrem_1250" = load i64, i64* @_gasrem + %"$gascmp_1251" = icmp ugt i64 1, %"$gasrem_1250" + br i1 %"$gascmp_1251", label %"$out_of_gas_1252", label %"$have_gas_1253" -"$out_of_gas_1236": ; preds = %"$have_gas_1232" +"$out_of_gas_1252": ; preds = %"$have_gas_1248" call void @_out_of_gas() - br label %"$have_gas_1237" + br label %"$have_gas_1253" -"$have_gas_1237": ; preds = %"$out_of_gas_1236", %"$have_gas_1232" - %"$consume_1238" = sub i64 %"$gasrem_1234", 1 - store i64 %"$consume_1238", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1239", i32 0, i32 0), i32 5 }, %String* %key2b +"$have_gas_1253": ; preds = %"$out_of_gas_1252", %"$have_gas_1248" + %"$consume_1254" = sub i64 %"$gasrem_1250", 1 + store i64 %"$consume_1254", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1255", i32 0, i32 0), i32 5 }, %String* %key2b %"$c1_0" = alloca %TName_Option_String* - %"$indices_buf_1240_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1240_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1240_salloc_load", i64 32) - %"$indices_buf_1240_salloc" = bitcast i8* %"$indices_buf_1240_salloc_salloc" to [32 x i8]* - %"$indices_buf_1240" = bitcast [32 x i8]* %"$indices_buf_1240_salloc" to i8* - %"$key1b_1241" = load %String, %String* %key1b - %"$indices_gep_1242" = getelementptr i8, i8* %"$indices_buf_1240", i32 0 - %indices_cast3 = bitcast i8* %"$indices_gep_1242" to %String* - store %String %"$key1b_1241", %String* %indices_cast3 - %"$key2b_1243" = load %String, %String* %key2b - %"$indices_gep_1244" = getelementptr i8, i8* %"$indices_buf_1240", i32 16 - %indices_cast4 = bitcast i8* %"$indices_gep_1244" to %String* - store %String %"$key2b_1243", %String* %indices_cast4 - %"$execptr_load_1245" = load i8*, i8** @_execptr - %"$$c1_0_1247" = call i8* @_fetch_field(i8* %"$execptr_load_1245", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1246", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1240", i32 1) - %"$$c1_0_1248" = bitcast i8* %"$$c1_0_1247" to %TName_Option_String* - store %TName_Option_String* %"$$c1_0_1248", %TName_Option_String** %"$c1_0" - %"$$c1_0_1249" = load %TName_Option_String*, %TName_Option_String** %"$c1_0" - %"$$$c1_0_1249_1250" = bitcast %TName_Option_String* %"$$c1_0_1249" to i8* - %"$_literal_cost_call_1251" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$$c1_0_1249_1250") - %"$gasadd_1252" = add i64 %"$_literal_cost_call_1251", 0 - %"$gasadd_1253" = add i64 %"$gasadd_1252", 2 - %"$gasrem_1254" = load i64, i64* @_gasrem - %"$gascmp_1255" = icmp ugt i64 %"$gasadd_1253", %"$gasrem_1254" - br i1 %"$gascmp_1255", label %"$out_of_gas_1256", label %"$have_gas_1257" - -"$out_of_gas_1256": ; preds = %"$have_gas_1237" - call void @_out_of_gas() - br label %"$have_gas_1257" - -"$have_gas_1257": ; preds = %"$out_of_gas_1256", %"$have_gas_1237" - %"$consume_1258" = sub i64 %"$gasrem_1254", %"$gasadd_1253" - store i64 %"$consume_1258", i64* @_gasrem - %"$gasrem_1259" = load i64, i64* @_gasrem - %"$gascmp_1260" = icmp ugt i64 2, %"$gasrem_1259" - br i1 %"$gascmp_1260", label %"$out_of_gas_1261", label %"$have_gas_1262" - -"$out_of_gas_1261": ; preds = %"$have_gas_1257" - call void @_out_of_gas() - br label %"$have_gas_1262" - -"$have_gas_1262": ; preds = %"$out_of_gas_1261", %"$have_gas_1257" - %"$consume_1263" = sub i64 %"$gasrem_1259", 2 - store i64 %"$consume_1263", i64* @_gasrem + %"$indices_buf_1256_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1256_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1256_salloc_load", i64 32) + %"$indices_buf_1256_salloc" = bitcast i8* %"$indices_buf_1256_salloc_salloc" to [32 x i8]* + %"$indices_buf_1256" = bitcast [32 x i8]* %"$indices_buf_1256_salloc" to i8* + %"$key1b_1257" = load %String, %String* %key1b + %"$indices_gep_1258" = getelementptr i8, i8* %"$indices_buf_1256", i32 0 + %indices_cast3 = bitcast i8* %"$indices_gep_1258" to %String* + store %String %"$key1b_1257", %String* %indices_cast3 + %"$key2b_1259" = load %String, %String* %key2b + %"$indices_gep_1260" = getelementptr i8, i8* %"$indices_buf_1256", i32 16 + %indices_cast4 = bitcast i8* %"$indices_gep_1260" to %String* + store %String %"$key2b_1259", %String* %indices_cast4 + %"$execptr_load_1261" = load i8*, i8** @_execptr + %"$$c1_0_1263" = call i8* @_fetch_field(i8* %"$execptr_load_1261", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1262", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1256", i32 1) + %"$$c1_0_1264" = bitcast i8* %"$$c1_0_1263" to %TName_Option_String* + store %TName_Option_String* %"$$c1_0_1264", %TName_Option_String** %"$c1_0" %"$$c1_0_1265" = load %TName_Option_String*, %TName_Option_String** %"$c1_0" - %"$$c1_0_tag_1266" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_0_1265", i32 0, i32 0 - %"$$c1_0_tag_1267" = load i8, i8* %"$$c1_0_tag_1266" - switch i8 %"$$c1_0_tag_1267", label %"$empty_default_1268" [ - i8 0, label %"$Some_1269" - i8 1, label %"$None_1326" + %"$$$c1_0_1265_1266" = bitcast %TName_Option_String* %"$$c1_0_1265" to i8* + %"$_literal_cost_call_1267" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$$c1_0_1265_1266") + %"$gasadd_1268" = add i64 %"$_literal_cost_call_1267", 0 + %"$gasadd_1269" = add i64 %"$gasadd_1268", 2 + %"$gasrem_1270" = load i64, i64* @_gasrem + %"$gascmp_1271" = icmp ugt i64 %"$gasadd_1269", %"$gasrem_1270" + br i1 %"$gascmp_1271", label %"$out_of_gas_1272", label %"$have_gas_1273" + +"$out_of_gas_1272": ; preds = %"$have_gas_1253" + call void @_out_of_gas() + br label %"$have_gas_1273" + +"$have_gas_1273": ; preds = %"$out_of_gas_1272", %"$have_gas_1253" + %"$consume_1274" = sub i64 %"$gasrem_1270", %"$gasadd_1269" + store i64 %"$consume_1274", i64* @_gasrem + %"$gasrem_1275" = load i64, i64* @_gasrem + %"$gascmp_1276" = icmp ugt i64 2, %"$gasrem_1275" + br i1 %"$gascmp_1276", label %"$out_of_gas_1277", label %"$have_gas_1278" + +"$out_of_gas_1277": ; preds = %"$have_gas_1273" + call void @_out_of_gas() + br label %"$have_gas_1278" + +"$have_gas_1278": ; preds = %"$out_of_gas_1277", %"$have_gas_1273" + %"$consume_1279" = sub i64 %"$gasrem_1275", 2 + store i64 %"$consume_1279", i64* @_gasrem + %"$$c1_0_1281" = load %TName_Option_String*, %TName_Option_String** %"$c1_0" + %"$$c1_0_tag_1282" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_0_1281", i32 0, i32 0 + %"$$c1_0_tag_1283" = load i8, i8* %"$$c1_0_tag_1282" + switch i8 %"$$c1_0_tag_1283", label %"$empty_default_1284" [ + i8 0, label %"$Some_1285" + i8 1, label %"$None_1342" ] -"$Some_1269": ; preds = %"$have_gas_1262" - %"$$c1_0_1270" = bitcast %TName_Option_String* %"$$c1_0_1265" to %CName_Some_String* - %"$c_gep_1271" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_0_1270", i32 0, i32 1 - %"$c_load_1272" = load %String, %String* %"$c_gep_1271" +"$Some_1285": ; preds = %"$have_gas_1278" + %"$$c1_0_1286" = bitcast %TName_Option_String* %"$$c1_0_1281" to %CName_Some_String* + %"$c_gep_1287" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_0_1286", i32 0, i32 1 + %"$c_load_1288" = load %String, %String* %"$c_gep_1287" %c5 = alloca %String - store %String %"$c_load_1272", %String* %c5 - %"$gasrem_1273" = load i64, i64* @_gasrem - %"$gascmp_1274" = icmp ugt i64 1, %"$gasrem_1273" - br i1 %"$gascmp_1274", label %"$out_of_gas_1275", label %"$have_gas_1276" + store %String %"$c_load_1288", %String* %c5 + %"$gasrem_1289" = load i64, i64* @_gasrem + %"$gascmp_1290" = icmp ugt i64 1, %"$gasrem_1289" + br i1 %"$gascmp_1290", label %"$out_of_gas_1291", label %"$have_gas_1292" -"$out_of_gas_1275": ; preds = %"$Some_1269" +"$out_of_gas_1291": ; preds = %"$Some_1285" call void @_out_of_gas() - br label %"$have_gas_1276" + br label %"$have_gas_1292" -"$have_gas_1276": ; preds = %"$out_of_gas_1275", %"$Some_1269" - %"$consume_1277" = sub i64 %"$gasrem_1273", 1 - store i64 %"$consume_1277", i64* @_gasrem +"$have_gas_1292": ; preds = %"$out_of_gas_1291", %"$Some_1285" + %"$consume_1293" = sub i64 %"$gasrem_1289", 1 + store i64 %"$consume_1293", i64* @_gasrem %v6 = alloca %String - %"$gasrem_1278" = load i64, i64* @_gasrem - %"$gascmp_1279" = icmp ugt i64 1, %"$gasrem_1278" - br i1 %"$gascmp_1279", label %"$out_of_gas_1280", label %"$have_gas_1281" + %"$gasrem_1294" = load i64, i64* @_gasrem + %"$gascmp_1295" = icmp ugt i64 1, %"$gasrem_1294" + br i1 %"$gascmp_1295", label %"$out_of_gas_1296", label %"$have_gas_1297" -"$out_of_gas_1280": ; preds = %"$have_gas_1276" +"$out_of_gas_1296": ; preds = %"$have_gas_1292" call void @_out_of_gas() - br label %"$have_gas_1281" + br label %"$have_gas_1297" -"$have_gas_1281": ; preds = %"$out_of_gas_1280", %"$have_gas_1276" - %"$consume_1282" = sub i64 %"$gasrem_1278", 1 - store i64 %"$consume_1282", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1283", i32 0, i32 0), i32 3 }, %String* %v6 - %"$gasrem_1284" = load i64, i64* @_gasrem - %"$gascmp_1285" = icmp ugt i64 1, %"$gasrem_1284" - br i1 %"$gascmp_1285", label %"$out_of_gas_1286", label %"$have_gas_1287" +"$have_gas_1297": ; preds = %"$out_of_gas_1296", %"$have_gas_1292" + %"$consume_1298" = sub i64 %"$gasrem_1294", 1 + store i64 %"$consume_1298", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1299", i32 0, i32 0), i32 3 }, %String* %v6 + %"$gasrem_1300" = load i64, i64* @_gasrem + %"$gascmp_1301" = icmp ugt i64 1, %"$gasrem_1300" + br i1 %"$gascmp_1301", label %"$out_of_gas_1302", label %"$have_gas_1303" -"$out_of_gas_1286": ; preds = %"$have_gas_1281" +"$out_of_gas_1302": ; preds = %"$have_gas_1297" call void @_out_of_gas() - br label %"$have_gas_1287" + br label %"$have_gas_1303" -"$have_gas_1287": ; preds = %"$out_of_gas_1286", %"$have_gas_1281" - %"$consume_1288" = sub i64 %"$gasrem_1284", 1 - store i64 %"$consume_1288", i64* @_gasrem +"$have_gas_1303": ; preds = %"$out_of_gas_1302", %"$have_gas_1297" + %"$consume_1304" = sub i64 %"$gasrem_1300", 1 + store i64 %"$consume_1304", i64* @_gasrem %eq7 = alloca %TName_Bool* - %"$execptr_load_1289" = load i8*, i8** @_execptr - %"$c_1290" = load %String, %String* %c5 - %"$v_1291" = load %String, %String* %v6 - %"$eq_call_1292" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_1289", %String %"$c_1290", %String %"$v_1291") - store %TName_Bool* %"$eq_call_1292", %TName_Bool** %eq7 - %"$gasrem_1293" = load i64, i64* @_gasrem - %"$gascmp_1294" = icmp ugt i64 2, %"$gasrem_1293" - br i1 %"$gascmp_1294", label %"$out_of_gas_1295", label %"$have_gas_1296" - -"$out_of_gas_1295": ; preds = %"$have_gas_1287" - call void @_out_of_gas() - br label %"$have_gas_1296" - -"$have_gas_1296": ; preds = %"$out_of_gas_1295", %"$have_gas_1287" - %"$consume_1297" = sub i64 %"$gasrem_1293", 2 - store i64 %"$consume_1297", i64* @_gasrem - %"$eq_1299" = load %TName_Bool*, %TName_Bool** %eq7 - %"$eq_tag_1300" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_1299", i32 0, i32 0 - %"$eq_tag_1301" = load i8, i8* %"$eq_tag_1300" - switch i8 %"$eq_tag_1301", label %"$empty_default_1302" [ - i8 0, label %"$True_1303" - i8 1, label %"$False_1305" + %"$execptr_load_1305" = load i8*, i8** @_execptr + %"$c_1306" = load %String, %String* %c5 + %"$v_1307" = load %String, %String* %v6 + %"$eq_call_1308" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_1305", %String %"$c_1306", %String %"$v_1307") + store %TName_Bool* %"$eq_call_1308", %TName_Bool** %eq7 + %"$gasrem_1309" = load i64, i64* @_gasrem + %"$gascmp_1310" = icmp ugt i64 2, %"$gasrem_1309" + br i1 %"$gascmp_1310", label %"$out_of_gas_1311", label %"$have_gas_1312" + +"$out_of_gas_1311": ; preds = %"$have_gas_1303" + call void @_out_of_gas() + br label %"$have_gas_1312" + +"$have_gas_1312": ; preds = %"$out_of_gas_1311", %"$have_gas_1303" + %"$consume_1313" = sub i64 %"$gasrem_1309", 2 + store i64 %"$consume_1313", i64* @_gasrem + %"$eq_1315" = load %TName_Bool*, %TName_Bool** %eq7 + %"$eq_tag_1316" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_1315", i32 0, i32 0 + %"$eq_tag_1317" = load i8, i8* %"$eq_tag_1316" + switch i8 %"$eq_tag_1317", label %"$empty_default_1318" [ + i8 0, label %"$True_1319" + i8 1, label %"$False_1321" ] -"$True_1303": ; preds = %"$have_gas_1296" - %"$eq_1304" = bitcast %TName_Bool* %"$eq_1299" to %CName_True* - br label %"$matchsucc_1298" +"$True_1319": ; preds = %"$have_gas_1312" + %"$eq_1320" = bitcast %TName_Bool* %"$eq_1315" to %CName_True* + br label %"$matchsucc_1314" -"$False_1305": ; preds = %"$have_gas_1296" - %"$eq_1306" = bitcast %TName_Bool* %"$eq_1299" to %CName_False* - %"$gasrem_1307" = load i64, i64* @_gasrem - %"$gascmp_1308" = icmp ugt i64 1, %"$gasrem_1307" - br i1 %"$gascmp_1308", label %"$out_of_gas_1309", label %"$have_gas_1310" +"$False_1321": ; preds = %"$have_gas_1312" + %"$eq_1322" = bitcast %TName_Bool* %"$eq_1315" to %CName_False* + %"$gasrem_1323" = load i64, i64* @_gasrem + %"$gascmp_1324" = icmp ugt i64 1, %"$gasrem_1323" + br i1 %"$gascmp_1324", label %"$out_of_gas_1325", label %"$have_gas_1326" -"$out_of_gas_1309": ; preds = %"$False_1305" +"$out_of_gas_1325": ; preds = %"$False_1321" call void @_out_of_gas() - br label %"$have_gas_1310" + br label %"$have_gas_1326" -"$have_gas_1310": ; preds = %"$out_of_gas_1309", %"$False_1305" - %"$consume_1311" = sub i64 %"$gasrem_1307", 1 - store i64 %"$consume_1311", i64* @_gasrem +"$have_gas_1326": ; preds = %"$out_of_gas_1325", %"$False_1321" + %"$consume_1327" = sub i64 %"$gasrem_1323", 1 + store i64 %"$consume_1327", i64* @_gasrem %m8 = alloca %String - %"$gasrem_1312" = load i64, i64* @_gasrem - %"$gascmp_1313" = icmp ugt i64 1, %"$gasrem_1312" - br i1 %"$gascmp_1313", label %"$out_of_gas_1314", label %"$have_gas_1315" + %"$gasrem_1328" = load i64, i64* @_gasrem + %"$gascmp_1329" = icmp ugt i64 1, %"$gasrem_1328" + br i1 %"$gascmp_1329", label %"$out_of_gas_1330", label %"$have_gas_1331" -"$out_of_gas_1314": ; preds = %"$have_gas_1310" +"$out_of_gas_1330": ; preds = %"$have_gas_1326" call void @_out_of_gas() - br label %"$have_gas_1315" + br label %"$have_gas_1331" -"$have_gas_1315": ; preds = %"$out_of_gas_1314", %"$have_gas_1310" - %"$consume_1316" = sub i64 %"$gasrem_1312", 1 - store i64 %"$consume_1316", i64* @_gasrem - store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_1317", i32 0, i32 0), i32 31 }, %String* %m8 - %"$gasrem_1318" = load i64, i64* @_gasrem - %"$gascmp_1319" = icmp ugt i64 1, %"$gasrem_1318" - br i1 %"$gascmp_1319", label %"$out_of_gas_1320", label %"$have_gas_1321" +"$have_gas_1331": ; preds = %"$out_of_gas_1330", %"$have_gas_1326" + %"$consume_1332" = sub i64 %"$gasrem_1328", 1 + store i64 %"$consume_1332", i64* @_gasrem + store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_1333", i32 0, i32 0), i32 31 }, %String* %m8 + %"$gasrem_1334" = load i64, i64* @_gasrem + %"$gascmp_1335" = icmp ugt i64 1, %"$gasrem_1334" + br i1 %"$gascmp_1335", label %"$out_of_gas_1336", label %"$have_gas_1337" -"$out_of_gas_1320": ; preds = %"$have_gas_1315" +"$out_of_gas_1336": ; preds = %"$have_gas_1331" call void @_out_of_gas() - br label %"$have_gas_1321" + br label %"$have_gas_1337" -"$have_gas_1321": ; preds = %"$out_of_gas_1320", %"$have_gas_1315" - %"$consume_1322" = sub i64 %"$gasrem_1318", 1 - store i64 %"$consume_1322", i64* @_gasrem - %"$fail_msg__sender_1323" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1323" - %"$tname_1324" = load %String, %String* %tname - %"$m_1325" = load %String, %String* %m8 - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1323", %String %"$tname_1324", %String %"$m_1325") - br label %"$matchsucc_1298" +"$have_gas_1337": ; preds = %"$out_of_gas_1336", %"$have_gas_1331" + %"$consume_1338" = sub i64 %"$gasrem_1334", 1 + store i64 %"$consume_1338", i64* @_gasrem + %"$fail_msg__sender_1339" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1339" + %"$tname_1340" = load %String, %String* %tname + %"$m_1341" = load %String, %String* %m8 + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1339", %String %"$tname_1340", %String %"$m_1341") + br label %"$matchsucc_1314" -"$empty_default_1302": ; preds = %"$have_gas_1296" - br label %"$matchsucc_1298" +"$empty_default_1318": ; preds = %"$have_gas_1312" + br label %"$matchsucc_1314" -"$matchsucc_1298": ; preds = %"$have_gas_1321", %"$True_1303", %"$empty_default_1302" - br label %"$matchsucc_1264" +"$matchsucc_1314": ; preds = %"$have_gas_1337", %"$True_1319", %"$empty_default_1318" + br label %"$matchsucc_1280" -"$None_1326": ; preds = %"$have_gas_1262" - %"$$c1_0_1327" = bitcast %TName_Option_String* %"$$c1_0_1265" to %CName_None_String* - %"$gasrem_1328" = load i64, i64* @_gasrem - %"$gascmp_1329" = icmp ugt i64 1, %"$gasrem_1328" - br i1 %"$gascmp_1329", label %"$out_of_gas_1330", label %"$have_gas_1331" +"$None_1342": ; preds = %"$have_gas_1278" + %"$$c1_0_1343" = bitcast %TName_Option_String* %"$$c1_0_1281" to %CName_None_String* + %"$gasrem_1344" = load i64, i64* @_gasrem + %"$gascmp_1345" = icmp ugt i64 1, %"$gasrem_1344" + br i1 %"$gascmp_1345", label %"$out_of_gas_1346", label %"$have_gas_1347" -"$out_of_gas_1330": ; preds = %"$None_1326" +"$out_of_gas_1346": ; preds = %"$None_1342" call void @_out_of_gas() - br label %"$have_gas_1331" + br label %"$have_gas_1347" -"$have_gas_1331": ; preds = %"$out_of_gas_1330", %"$None_1326" - %"$consume_1332" = sub i64 %"$gasrem_1328", 1 - store i64 %"$consume_1332", i64* @_gasrem +"$have_gas_1347": ; preds = %"$out_of_gas_1346", %"$None_1342" + %"$consume_1348" = sub i64 %"$gasrem_1344", 1 + store i64 %"$consume_1348", i64* @_gasrem %m9 = alloca %String - %"$gasrem_1333" = load i64, i64* @_gasrem - %"$gascmp_1334" = icmp ugt i64 1, %"$gasrem_1333" - br i1 %"$gascmp_1334", label %"$out_of_gas_1335", label %"$have_gas_1336" + %"$gasrem_1349" = load i64, i64* @_gasrem + %"$gascmp_1350" = icmp ugt i64 1, %"$gasrem_1349" + br i1 %"$gascmp_1350", label %"$out_of_gas_1351", label %"$have_gas_1352" -"$out_of_gas_1335": ; preds = %"$have_gas_1331" +"$out_of_gas_1351": ; preds = %"$have_gas_1347" call void @_out_of_gas() - br label %"$have_gas_1336" + br label %"$have_gas_1352" -"$have_gas_1336": ; preds = %"$out_of_gas_1335", %"$have_gas_1331" - %"$consume_1337" = sub i64 %"$gasrem_1333", 1 - store i64 %"$consume_1337", i64* @_gasrem - store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_1338", i32 0, i32 0), i32 21 }, %String* %m9 - %"$gasrem_1339" = load i64, i64* @_gasrem - %"$gascmp_1340" = icmp ugt i64 1, %"$gasrem_1339" - br i1 %"$gascmp_1340", label %"$out_of_gas_1341", label %"$have_gas_1342" +"$have_gas_1352": ; preds = %"$out_of_gas_1351", %"$have_gas_1347" + %"$consume_1353" = sub i64 %"$gasrem_1349", 1 + store i64 %"$consume_1353", i64* @_gasrem + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_1354", i32 0, i32 0), i32 21 }, %String* %m9 + %"$gasrem_1355" = load i64, i64* @_gasrem + %"$gascmp_1356" = icmp ugt i64 1, %"$gasrem_1355" + br i1 %"$gascmp_1356", label %"$out_of_gas_1357", label %"$have_gas_1358" -"$out_of_gas_1341": ; preds = %"$have_gas_1336" +"$out_of_gas_1357": ; preds = %"$have_gas_1352" call void @_out_of_gas() - br label %"$have_gas_1342" + br label %"$have_gas_1358" -"$have_gas_1342": ; preds = %"$out_of_gas_1341", %"$have_gas_1336" - %"$consume_1343" = sub i64 %"$gasrem_1339", 1 - store i64 %"$consume_1343", i64* @_gasrem - %"$fail_msg__sender_1344" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1344" - %"$tname_1345" = load %String, %String* %tname - %"$m_1346" = load %String, %String* %m9 - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1344", %String %"$tname_1345", %String %"$m_1346") - br label %"$matchsucc_1264" +"$have_gas_1358": ; preds = %"$out_of_gas_1357", %"$have_gas_1352" + %"$consume_1359" = sub i64 %"$gasrem_1355", 1 + store i64 %"$consume_1359", i64* @_gasrem + %"$fail_msg__sender_1360" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1360" + %"$tname_1361" = load %String, %String* %tname + %"$m_1362" = load %String, %String* %m9 + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1360", %String %"$tname_1361", %String %"$m_1362") + br label %"$matchsucc_1280" -"$empty_default_1268": ; preds = %"$have_gas_1262" - br label %"$matchsucc_1264" +"$empty_default_1284": ; preds = %"$have_gas_1278" + br label %"$matchsucc_1280" -"$matchsucc_1264": ; preds = %"$have_gas_1342", %"$matchsucc_1298", %"$empty_default_1268" - %"$gasrem_1347" = load i64, i64* @_gasrem - %"$gascmp_1348" = icmp ugt i64 1, %"$gasrem_1347" - br i1 %"$gascmp_1348", label %"$out_of_gas_1349", label %"$have_gas_1350" +"$matchsucc_1280": ; preds = %"$have_gas_1358", %"$matchsucc_1314", %"$empty_default_1284" + %"$gasrem_1363" = load i64, i64* @_gasrem + %"$gascmp_1364" = icmp ugt i64 1, %"$gasrem_1363" + br i1 %"$gascmp_1364", label %"$out_of_gas_1365", label %"$have_gas_1366" -"$out_of_gas_1349": ; preds = %"$matchsucc_1264" +"$out_of_gas_1365": ; preds = %"$matchsucc_1280" call void @_out_of_gas() - br label %"$have_gas_1350" + br label %"$have_gas_1366" -"$have_gas_1350": ; preds = %"$out_of_gas_1349", %"$matchsucc_1264" - %"$consume_1351" = sub i64 %"$gasrem_1347", 1 - store i64 %"$consume_1351", i64* @_gasrem +"$have_gas_1366": ; preds = %"$out_of_gas_1365", %"$matchsucc_1280" + %"$consume_1367" = sub i64 %"$gasrem_1363", 1 + store i64 %"$consume_1367", i64* @_gasrem %"$key1b_1" = alloca %String - %"$gasrem_1352" = load i64, i64* @_gasrem - %"$gascmp_1353" = icmp ugt i64 1, %"$gasrem_1352" - br i1 %"$gascmp_1353", label %"$out_of_gas_1354", label %"$have_gas_1355" + %"$gasrem_1368" = load i64, i64* @_gasrem + %"$gascmp_1369" = icmp ugt i64 1, %"$gasrem_1368" + br i1 %"$gascmp_1369", label %"$out_of_gas_1370", label %"$have_gas_1371" -"$out_of_gas_1354": ; preds = %"$have_gas_1350" +"$out_of_gas_1370": ; preds = %"$have_gas_1366" call void @_out_of_gas() - br label %"$have_gas_1355" + br label %"$have_gas_1371" -"$have_gas_1355": ; preds = %"$out_of_gas_1354", %"$have_gas_1350" - %"$consume_1356" = sub i64 %"$gasrem_1352", 1 - store i64 %"$consume_1356", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1357", i32 0, i32 0), i32 5 }, %String* %"$key1b_1" - %"$gasrem_1358" = load i64, i64* @_gasrem - %"$gascmp_1359" = icmp ugt i64 1, %"$gasrem_1358" - br i1 %"$gascmp_1359", label %"$out_of_gas_1360", label %"$have_gas_1361" +"$have_gas_1371": ; preds = %"$out_of_gas_1370", %"$have_gas_1366" + %"$consume_1372" = sub i64 %"$gasrem_1368", 1 + store i64 %"$consume_1372", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1373", i32 0, i32 0), i32 5 }, %String* %"$key1b_1" + %"$gasrem_1374" = load i64, i64* @_gasrem + %"$gascmp_1375" = icmp ugt i64 1, %"$gasrem_1374" + br i1 %"$gascmp_1375", label %"$out_of_gas_1376", label %"$have_gas_1377" -"$out_of_gas_1360": ; preds = %"$have_gas_1355" +"$out_of_gas_1376": ; preds = %"$have_gas_1371" call void @_out_of_gas() - br label %"$have_gas_1361" + br label %"$have_gas_1377" -"$have_gas_1361": ; preds = %"$out_of_gas_1360", %"$have_gas_1355" - %"$consume_1362" = sub i64 %"$gasrem_1358", 1 - store i64 %"$consume_1362", i64* @_gasrem +"$have_gas_1377": ; preds = %"$out_of_gas_1376", %"$have_gas_1371" + %"$consume_1378" = sub i64 %"$gasrem_1374", 1 + store i64 %"$consume_1378", i64* @_gasrem %key2c = alloca %String - %"$gasrem_1363" = load i64, i64* @_gasrem - %"$gascmp_1364" = icmp ugt i64 1, %"$gasrem_1363" - br i1 %"$gascmp_1364", label %"$out_of_gas_1365", label %"$have_gas_1366" + %"$gasrem_1379" = load i64, i64* @_gasrem + %"$gascmp_1380" = icmp ugt i64 1, %"$gasrem_1379" + br i1 %"$gascmp_1380", label %"$out_of_gas_1381", label %"$have_gas_1382" -"$out_of_gas_1365": ; preds = %"$have_gas_1361" +"$out_of_gas_1381": ; preds = %"$have_gas_1377" call void @_out_of_gas() - br label %"$have_gas_1366" + br label %"$have_gas_1382" -"$have_gas_1366": ; preds = %"$out_of_gas_1365", %"$have_gas_1361" - %"$consume_1367" = sub i64 %"$gasrem_1363", 1 - store i64 %"$consume_1367", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1368", i32 0, i32 0), i32 5 }, %String* %key2c +"$have_gas_1382": ; preds = %"$out_of_gas_1381", %"$have_gas_1377" + %"$consume_1383" = sub i64 %"$gasrem_1379", 1 + store i64 %"$consume_1383", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1384", i32 0, i32 0), i32 5 }, %String* %key2c %"$c1_2" = alloca %TName_Option_String* - %"$indices_buf_1369_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1369_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1369_salloc_load", i64 32) - %"$indices_buf_1369_salloc" = bitcast i8* %"$indices_buf_1369_salloc_salloc" to [32 x i8]* - %"$indices_buf_1369" = bitcast [32 x i8]* %"$indices_buf_1369_salloc" to i8* - %"$$key1b_1_1370" = load %String, %String* %"$key1b_1" - %"$indices_gep_1371" = getelementptr i8, i8* %"$indices_buf_1369", i32 0 - %indices_cast10 = bitcast i8* %"$indices_gep_1371" to %String* - store %String %"$$key1b_1_1370", %String* %indices_cast10 - %"$key2c_1372" = load %String, %String* %key2c - %"$indices_gep_1373" = getelementptr i8, i8* %"$indices_buf_1369", i32 16 - %indices_cast11 = bitcast i8* %"$indices_gep_1373" to %String* - store %String %"$key2c_1372", %String* %indices_cast11 - %"$execptr_load_1374" = load i8*, i8** @_execptr - %"$$c1_2_1376" = call i8* @_fetch_field(i8* %"$execptr_load_1374", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1375", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1369", i32 1) - %"$$c1_2_1377" = bitcast i8* %"$$c1_2_1376" to %TName_Option_String* - store %TName_Option_String* %"$$c1_2_1377", %TName_Option_String** %"$c1_2" - %"$$c1_2_1378" = load %TName_Option_String*, %TName_Option_String** %"$c1_2" - %"$$$c1_2_1378_1379" = bitcast %TName_Option_String* %"$$c1_2_1378" to i8* - %"$_literal_cost_call_1380" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$$c1_2_1378_1379") - %"$gasadd_1381" = add i64 %"$_literal_cost_call_1380", 0 - %"$gasadd_1382" = add i64 %"$gasadd_1381", 2 - %"$gasrem_1383" = load i64, i64* @_gasrem - %"$gascmp_1384" = icmp ugt i64 %"$gasadd_1382", %"$gasrem_1383" - br i1 %"$gascmp_1384", label %"$out_of_gas_1385", label %"$have_gas_1386" - -"$out_of_gas_1385": ; preds = %"$have_gas_1366" - call void @_out_of_gas() - br label %"$have_gas_1386" - -"$have_gas_1386": ; preds = %"$out_of_gas_1385", %"$have_gas_1366" - %"$consume_1387" = sub i64 %"$gasrem_1383", %"$gasadd_1382" - store i64 %"$consume_1387", i64* @_gasrem - %"$gasrem_1388" = load i64, i64* @_gasrem - %"$gascmp_1389" = icmp ugt i64 2, %"$gasrem_1388" - br i1 %"$gascmp_1389", label %"$out_of_gas_1390", label %"$have_gas_1391" - -"$out_of_gas_1390": ; preds = %"$have_gas_1386" - call void @_out_of_gas() - br label %"$have_gas_1391" - -"$have_gas_1391": ; preds = %"$out_of_gas_1390", %"$have_gas_1386" - %"$consume_1392" = sub i64 %"$gasrem_1388", 2 - store i64 %"$consume_1392", i64* @_gasrem + %"$indices_buf_1385_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1385_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1385_salloc_load", i64 32) + %"$indices_buf_1385_salloc" = bitcast i8* %"$indices_buf_1385_salloc_salloc" to [32 x i8]* + %"$indices_buf_1385" = bitcast [32 x i8]* %"$indices_buf_1385_salloc" to i8* + %"$$key1b_1_1386" = load %String, %String* %"$key1b_1" + %"$indices_gep_1387" = getelementptr i8, i8* %"$indices_buf_1385", i32 0 + %indices_cast10 = bitcast i8* %"$indices_gep_1387" to %String* + store %String %"$$key1b_1_1386", %String* %indices_cast10 + %"$key2c_1388" = load %String, %String* %key2c + %"$indices_gep_1389" = getelementptr i8, i8* %"$indices_buf_1385", i32 16 + %indices_cast11 = bitcast i8* %"$indices_gep_1389" to %String* + store %String %"$key2c_1388", %String* %indices_cast11 + %"$execptr_load_1390" = load i8*, i8** @_execptr + %"$$c1_2_1392" = call i8* @_fetch_field(i8* %"$execptr_load_1390", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1391", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1385", i32 1) + %"$$c1_2_1393" = bitcast i8* %"$$c1_2_1392" to %TName_Option_String* + store %TName_Option_String* %"$$c1_2_1393", %TName_Option_String** %"$c1_2" %"$$c1_2_1394" = load %TName_Option_String*, %TName_Option_String** %"$c1_2" - %"$$c1_2_tag_1395" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_2_1394", i32 0, i32 0 - %"$$c1_2_tag_1396" = load i8, i8* %"$$c1_2_tag_1395" - switch i8 %"$$c1_2_tag_1396", label %"$empty_default_1397" [ - i8 0, label %"$Some_1398" - i8 1, label %"$None_1455" + %"$$$c1_2_1394_1395" = bitcast %TName_Option_String* %"$$c1_2_1394" to i8* + %"$_literal_cost_call_1396" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$$c1_2_1394_1395") + %"$gasadd_1397" = add i64 %"$_literal_cost_call_1396", 0 + %"$gasadd_1398" = add i64 %"$gasadd_1397", 2 + %"$gasrem_1399" = load i64, i64* @_gasrem + %"$gascmp_1400" = icmp ugt i64 %"$gasadd_1398", %"$gasrem_1399" + br i1 %"$gascmp_1400", label %"$out_of_gas_1401", label %"$have_gas_1402" + +"$out_of_gas_1401": ; preds = %"$have_gas_1382" + call void @_out_of_gas() + br label %"$have_gas_1402" + +"$have_gas_1402": ; preds = %"$out_of_gas_1401", %"$have_gas_1382" + %"$consume_1403" = sub i64 %"$gasrem_1399", %"$gasadd_1398" + store i64 %"$consume_1403", i64* @_gasrem + %"$gasrem_1404" = load i64, i64* @_gasrem + %"$gascmp_1405" = icmp ugt i64 2, %"$gasrem_1404" + br i1 %"$gascmp_1405", label %"$out_of_gas_1406", label %"$have_gas_1407" + +"$out_of_gas_1406": ; preds = %"$have_gas_1402" + call void @_out_of_gas() + br label %"$have_gas_1407" + +"$have_gas_1407": ; preds = %"$out_of_gas_1406", %"$have_gas_1402" + %"$consume_1408" = sub i64 %"$gasrem_1404", 2 + store i64 %"$consume_1408", i64* @_gasrem + %"$$c1_2_1410" = load %TName_Option_String*, %TName_Option_String** %"$c1_2" + %"$$c1_2_tag_1411" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_2_1410", i32 0, i32 0 + %"$$c1_2_tag_1412" = load i8, i8* %"$$c1_2_tag_1411" + switch i8 %"$$c1_2_tag_1412", label %"$empty_default_1413" [ + i8 0, label %"$Some_1414" + i8 1, label %"$None_1471" ] -"$Some_1398": ; preds = %"$have_gas_1391" - %"$$c1_2_1399" = bitcast %TName_Option_String* %"$$c1_2_1394" to %CName_Some_String* - %"$c_gep_1400" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_2_1399", i32 0, i32 1 - %"$c_load_1401" = load %String, %String* %"$c_gep_1400" +"$Some_1414": ; preds = %"$have_gas_1407" + %"$$c1_2_1415" = bitcast %TName_Option_String* %"$$c1_2_1410" to %CName_Some_String* + %"$c_gep_1416" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_2_1415", i32 0, i32 1 + %"$c_load_1417" = load %String, %String* %"$c_gep_1416" %c12 = alloca %String - store %String %"$c_load_1401", %String* %c12 - %"$gasrem_1402" = load i64, i64* @_gasrem - %"$gascmp_1403" = icmp ugt i64 1, %"$gasrem_1402" - br i1 %"$gascmp_1403", label %"$out_of_gas_1404", label %"$have_gas_1405" + store %String %"$c_load_1417", %String* %c12 + %"$gasrem_1418" = load i64, i64* @_gasrem + %"$gascmp_1419" = icmp ugt i64 1, %"$gasrem_1418" + br i1 %"$gascmp_1419", label %"$out_of_gas_1420", label %"$have_gas_1421" -"$out_of_gas_1404": ; preds = %"$Some_1398" +"$out_of_gas_1420": ; preds = %"$Some_1414" call void @_out_of_gas() - br label %"$have_gas_1405" + br label %"$have_gas_1421" -"$have_gas_1405": ; preds = %"$out_of_gas_1404", %"$Some_1398" - %"$consume_1406" = sub i64 %"$gasrem_1402", 1 - store i64 %"$consume_1406", i64* @_gasrem +"$have_gas_1421": ; preds = %"$out_of_gas_1420", %"$Some_1414" + %"$consume_1422" = sub i64 %"$gasrem_1418", 1 + store i64 %"$consume_1422", i64* @_gasrem %v13 = alloca %String - %"$gasrem_1407" = load i64, i64* @_gasrem - %"$gascmp_1408" = icmp ugt i64 1, %"$gasrem_1407" - br i1 %"$gascmp_1408", label %"$out_of_gas_1409", label %"$have_gas_1410" + %"$gasrem_1423" = load i64, i64* @_gasrem + %"$gascmp_1424" = icmp ugt i64 1, %"$gasrem_1423" + br i1 %"$gascmp_1424", label %"$out_of_gas_1425", label %"$have_gas_1426" -"$out_of_gas_1409": ; preds = %"$have_gas_1405" +"$out_of_gas_1425": ; preds = %"$have_gas_1421" call void @_out_of_gas() - br label %"$have_gas_1410" + br label %"$have_gas_1426" -"$have_gas_1410": ; preds = %"$out_of_gas_1409", %"$have_gas_1405" - %"$consume_1411" = sub i64 %"$gasrem_1407", 1 - store i64 %"$consume_1411", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1412", i32 0, i32 0), i32 3 }, %String* %v13 - %"$gasrem_1413" = load i64, i64* @_gasrem - %"$gascmp_1414" = icmp ugt i64 1, %"$gasrem_1413" - br i1 %"$gascmp_1414", label %"$out_of_gas_1415", label %"$have_gas_1416" +"$have_gas_1426": ; preds = %"$out_of_gas_1425", %"$have_gas_1421" + %"$consume_1427" = sub i64 %"$gasrem_1423", 1 + store i64 %"$consume_1427", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1428", i32 0, i32 0), i32 3 }, %String* %v13 + %"$gasrem_1429" = load i64, i64* @_gasrem + %"$gascmp_1430" = icmp ugt i64 1, %"$gasrem_1429" + br i1 %"$gascmp_1430", label %"$out_of_gas_1431", label %"$have_gas_1432" -"$out_of_gas_1415": ; preds = %"$have_gas_1410" +"$out_of_gas_1431": ; preds = %"$have_gas_1426" call void @_out_of_gas() - br label %"$have_gas_1416" + br label %"$have_gas_1432" -"$have_gas_1416": ; preds = %"$out_of_gas_1415", %"$have_gas_1410" - %"$consume_1417" = sub i64 %"$gasrem_1413", 1 - store i64 %"$consume_1417", i64* @_gasrem +"$have_gas_1432": ; preds = %"$out_of_gas_1431", %"$have_gas_1426" + %"$consume_1433" = sub i64 %"$gasrem_1429", 1 + store i64 %"$consume_1433", i64* @_gasrem %eq14 = alloca %TName_Bool* - %"$execptr_load_1418" = load i8*, i8** @_execptr - %"$c_1419" = load %String, %String* %c12 - %"$v_1420" = load %String, %String* %v13 - %"$eq_call_1421" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_1418", %String %"$c_1419", %String %"$v_1420") - store %TName_Bool* %"$eq_call_1421", %TName_Bool** %eq14 - %"$gasrem_1422" = load i64, i64* @_gasrem - %"$gascmp_1423" = icmp ugt i64 2, %"$gasrem_1422" - br i1 %"$gascmp_1423", label %"$out_of_gas_1424", label %"$have_gas_1425" - -"$out_of_gas_1424": ; preds = %"$have_gas_1416" - call void @_out_of_gas() - br label %"$have_gas_1425" - -"$have_gas_1425": ; preds = %"$out_of_gas_1424", %"$have_gas_1416" - %"$consume_1426" = sub i64 %"$gasrem_1422", 2 - store i64 %"$consume_1426", i64* @_gasrem - %"$eq_1428" = load %TName_Bool*, %TName_Bool** %eq14 - %"$eq_tag_1429" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_1428", i32 0, i32 0 - %"$eq_tag_1430" = load i8, i8* %"$eq_tag_1429" - switch i8 %"$eq_tag_1430", label %"$empty_default_1431" [ - i8 0, label %"$True_1432" - i8 1, label %"$False_1434" + %"$execptr_load_1434" = load i8*, i8** @_execptr + %"$c_1435" = load %String, %String* %c12 + %"$v_1436" = load %String, %String* %v13 + %"$eq_call_1437" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_1434", %String %"$c_1435", %String %"$v_1436") + store %TName_Bool* %"$eq_call_1437", %TName_Bool** %eq14 + %"$gasrem_1438" = load i64, i64* @_gasrem + %"$gascmp_1439" = icmp ugt i64 2, %"$gasrem_1438" + br i1 %"$gascmp_1439", label %"$out_of_gas_1440", label %"$have_gas_1441" + +"$out_of_gas_1440": ; preds = %"$have_gas_1432" + call void @_out_of_gas() + br label %"$have_gas_1441" + +"$have_gas_1441": ; preds = %"$out_of_gas_1440", %"$have_gas_1432" + %"$consume_1442" = sub i64 %"$gasrem_1438", 2 + store i64 %"$consume_1442", i64* @_gasrem + %"$eq_1444" = load %TName_Bool*, %TName_Bool** %eq14 + %"$eq_tag_1445" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_1444", i32 0, i32 0 + %"$eq_tag_1446" = load i8, i8* %"$eq_tag_1445" + switch i8 %"$eq_tag_1446", label %"$empty_default_1447" [ + i8 0, label %"$True_1448" + i8 1, label %"$False_1450" ] -"$True_1432": ; preds = %"$have_gas_1425" - %"$eq_1433" = bitcast %TName_Bool* %"$eq_1428" to %CName_True* - br label %"$matchsucc_1427" +"$True_1448": ; preds = %"$have_gas_1441" + %"$eq_1449" = bitcast %TName_Bool* %"$eq_1444" to %CName_True* + br label %"$matchsucc_1443" -"$False_1434": ; preds = %"$have_gas_1425" - %"$eq_1435" = bitcast %TName_Bool* %"$eq_1428" to %CName_False* - %"$gasrem_1436" = load i64, i64* @_gasrem - %"$gascmp_1437" = icmp ugt i64 1, %"$gasrem_1436" - br i1 %"$gascmp_1437", label %"$out_of_gas_1438", label %"$have_gas_1439" +"$False_1450": ; preds = %"$have_gas_1441" + %"$eq_1451" = bitcast %TName_Bool* %"$eq_1444" to %CName_False* + %"$gasrem_1452" = load i64, i64* @_gasrem + %"$gascmp_1453" = icmp ugt i64 1, %"$gasrem_1452" + br i1 %"$gascmp_1453", label %"$out_of_gas_1454", label %"$have_gas_1455" -"$out_of_gas_1438": ; preds = %"$False_1434" +"$out_of_gas_1454": ; preds = %"$False_1450" call void @_out_of_gas() - br label %"$have_gas_1439" + br label %"$have_gas_1455" -"$have_gas_1439": ; preds = %"$out_of_gas_1438", %"$False_1434" - %"$consume_1440" = sub i64 %"$gasrem_1436", 1 - store i64 %"$consume_1440", i64* @_gasrem +"$have_gas_1455": ; preds = %"$out_of_gas_1454", %"$False_1450" + %"$consume_1456" = sub i64 %"$gasrem_1452", 1 + store i64 %"$consume_1456", i64* @_gasrem %m15 = alloca %String - %"$gasrem_1441" = load i64, i64* @_gasrem - %"$gascmp_1442" = icmp ugt i64 1, %"$gasrem_1441" - br i1 %"$gascmp_1442", label %"$out_of_gas_1443", label %"$have_gas_1444" + %"$gasrem_1457" = load i64, i64* @_gasrem + %"$gascmp_1458" = icmp ugt i64 1, %"$gasrem_1457" + br i1 %"$gascmp_1458", label %"$out_of_gas_1459", label %"$have_gas_1460" -"$out_of_gas_1443": ; preds = %"$have_gas_1439" +"$out_of_gas_1459": ; preds = %"$have_gas_1455" call void @_out_of_gas() - br label %"$have_gas_1444" + br label %"$have_gas_1460" -"$have_gas_1444": ; preds = %"$out_of_gas_1443", %"$have_gas_1439" - %"$consume_1445" = sub i64 %"$gasrem_1441", 1 - store i64 %"$consume_1445", i64* @_gasrem - store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_1446", i32 0, i32 0), i32 31 }, %String* %m15 - %"$gasrem_1447" = load i64, i64* @_gasrem - %"$gascmp_1448" = icmp ugt i64 1, %"$gasrem_1447" - br i1 %"$gascmp_1448", label %"$out_of_gas_1449", label %"$have_gas_1450" +"$have_gas_1460": ; preds = %"$out_of_gas_1459", %"$have_gas_1455" + %"$consume_1461" = sub i64 %"$gasrem_1457", 1 + store i64 %"$consume_1461", i64* @_gasrem + store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_1462", i32 0, i32 0), i32 31 }, %String* %m15 + %"$gasrem_1463" = load i64, i64* @_gasrem + %"$gascmp_1464" = icmp ugt i64 1, %"$gasrem_1463" + br i1 %"$gascmp_1464", label %"$out_of_gas_1465", label %"$have_gas_1466" -"$out_of_gas_1449": ; preds = %"$have_gas_1444" +"$out_of_gas_1465": ; preds = %"$have_gas_1460" call void @_out_of_gas() - br label %"$have_gas_1450" + br label %"$have_gas_1466" -"$have_gas_1450": ; preds = %"$out_of_gas_1449", %"$have_gas_1444" - %"$consume_1451" = sub i64 %"$gasrem_1447", 1 - store i64 %"$consume_1451", i64* @_gasrem - %"$fail_msg__sender_1452" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1452" - %"$tname_1453" = load %String, %String* %tname - %"$m_1454" = load %String, %String* %m15 - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1452", %String %"$tname_1453", %String %"$m_1454") - br label %"$matchsucc_1427" +"$have_gas_1466": ; preds = %"$out_of_gas_1465", %"$have_gas_1460" + %"$consume_1467" = sub i64 %"$gasrem_1463", 1 + store i64 %"$consume_1467", i64* @_gasrem + %"$fail_msg__sender_1468" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1468" + %"$tname_1469" = load %String, %String* %tname + %"$m_1470" = load %String, %String* %m15 + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1468", %String %"$tname_1469", %String %"$m_1470") + br label %"$matchsucc_1443" -"$empty_default_1431": ; preds = %"$have_gas_1425" - br label %"$matchsucc_1427" +"$empty_default_1447": ; preds = %"$have_gas_1441" + br label %"$matchsucc_1443" -"$matchsucc_1427": ; preds = %"$have_gas_1450", %"$True_1432", %"$empty_default_1431" - br label %"$matchsucc_1393" +"$matchsucc_1443": ; preds = %"$have_gas_1466", %"$True_1448", %"$empty_default_1447" + br label %"$matchsucc_1409" -"$None_1455": ; preds = %"$have_gas_1391" - %"$$c1_2_1456" = bitcast %TName_Option_String* %"$$c1_2_1394" to %CName_None_String* - %"$gasrem_1457" = load i64, i64* @_gasrem - %"$gascmp_1458" = icmp ugt i64 1, %"$gasrem_1457" - br i1 %"$gascmp_1458", label %"$out_of_gas_1459", label %"$have_gas_1460" +"$None_1471": ; preds = %"$have_gas_1407" + %"$$c1_2_1472" = bitcast %TName_Option_String* %"$$c1_2_1410" to %CName_None_String* + %"$gasrem_1473" = load i64, i64* @_gasrem + %"$gascmp_1474" = icmp ugt i64 1, %"$gasrem_1473" + br i1 %"$gascmp_1474", label %"$out_of_gas_1475", label %"$have_gas_1476" -"$out_of_gas_1459": ; preds = %"$None_1455" +"$out_of_gas_1475": ; preds = %"$None_1471" call void @_out_of_gas() - br label %"$have_gas_1460" + br label %"$have_gas_1476" -"$have_gas_1460": ; preds = %"$out_of_gas_1459", %"$None_1455" - %"$consume_1461" = sub i64 %"$gasrem_1457", 1 - store i64 %"$consume_1461", i64* @_gasrem +"$have_gas_1476": ; preds = %"$out_of_gas_1475", %"$None_1471" + %"$consume_1477" = sub i64 %"$gasrem_1473", 1 + store i64 %"$consume_1477", i64* @_gasrem %m16 = alloca %String - %"$gasrem_1462" = load i64, i64* @_gasrem - %"$gascmp_1463" = icmp ugt i64 1, %"$gasrem_1462" - br i1 %"$gascmp_1463", label %"$out_of_gas_1464", label %"$have_gas_1465" - -"$out_of_gas_1464": ; preds = %"$have_gas_1460" - call void @_out_of_gas() - br label %"$have_gas_1465" - -"$have_gas_1465": ; preds = %"$out_of_gas_1464", %"$have_gas_1460" - %"$consume_1466" = sub i64 %"$gasrem_1462", 1 - store i64 %"$consume_1466", i64* @_gasrem - store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_1467", i32 0, i32 0), i32 21 }, %String* %m16 - %"$gasrem_1468" = load i64, i64* @_gasrem - %"$gascmp_1469" = icmp ugt i64 1, %"$gasrem_1468" - br i1 %"$gascmp_1469", label %"$out_of_gas_1470", label %"$have_gas_1471" - -"$out_of_gas_1470": ; preds = %"$have_gas_1465" - call void @_out_of_gas() - br label %"$have_gas_1471" - -"$have_gas_1471": ; preds = %"$out_of_gas_1470", %"$have_gas_1465" - %"$consume_1472" = sub i64 %"$gasrem_1468", 1 - store i64 %"$consume_1472", i64* @_gasrem - %"$fail_msg__sender_1473" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1473" - %"$tname_1474" = load %String, %String* %tname - %"$m_1475" = load %String, %String* %m16 - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1473", %String %"$tname_1474", %String %"$m_1475") - br label %"$matchsucc_1393" - -"$empty_default_1397": ; preds = %"$have_gas_1391" - br label %"$matchsucc_1393" - -"$matchsucc_1393": ; preds = %"$have_gas_1471", %"$matchsucc_1427", %"$empty_default_1397" - %"$gasrem_1476" = load i64, i64* @_gasrem - %"$gascmp_1477" = icmp ugt i64 1, %"$gasrem_1476" - br i1 %"$gascmp_1477", label %"$out_of_gas_1478", label %"$have_gas_1479" - -"$out_of_gas_1478": ; preds = %"$matchsucc_1393" - call void @_out_of_gas() - br label %"$have_gas_1479" - -"$have_gas_1479": ; preds = %"$out_of_gas_1478", %"$matchsucc_1393" - %"$consume_1480" = sub i64 %"$gasrem_1476", 1 - store i64 %"$consume_1480", i64* @_gasrem - %"$indices_buf_1481_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1481_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1481_salloc_load", i64 16) - %"$indices_buf_1481_salloc" = bitcast i8* %"$indices_buf_1481_salloc_salloc" to [16 x i8]* - %"$indices_buf_1481" = bitcast [16 x i8]* %"$indices_buf_1481_salloc" to i8* - %"$$key1b_1_1482" = load %String, %String* %"$key1b_1" - %"$indices_gep_1483" = getelementptr i8, i8* %"$indices_buf_1481", i32 0 - %indices_cast17 = bitcast i8* %"$indices_gep_1483" to %String* - store %String %"$$key1b_1_1482", %String* %indices_cast17 - %"$execptr_load_1484" = load i8*, i8** @_execptr - call void @_update_field(i8* %"$execptr_load_1484", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1485", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 1, i8* %"$indices_buf_1481", i8* null) + %"$gasrem_1478" = load i64, i64* @_gasrem + %"$gascmp_1479" = icmp ugt i64 1, %"$gasrem_1478" + br i1 %"$gascmp_1479", label %"$out_of_gas_1480", label %"$have_gas_1481" + +"$out_of_gas_1480": ; preds = %"$have_gas_1476" + call void @_out_of_gas() + br label %"$have_gas_1481" + +"$have_gas_1481": ; preds = %"$out_of_gas_1480", %"$have_gas_1476" + %"$consume_1482" = sub i64 %"$gasrem_1478", 1 + store i64 %"$consume_1482", i64* @_gasrem + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_1483", i32 0, i32 0), i32 21 }, %String* %m16 + %"$gasrem_1484" = load i64, i64* @_gasrem + %"$gascmp_1485" = icmp ugt i64 1, %"$gasrem_1484" + br i1 %"$gascmp_1485", label %"$out_of_gas_1486", label %"$have_gas_1487" + +"$out_of_gas_1486": ; preds = %"$have_gas_1481" + call void @_out_of_gas() + br label %"$have_gas_1487" + +"$have_gas_1487": ; preds = %"$out_of_gas_1486", %"$have_gas_1481" + %"$consume_1488" = sub i64 %"$gasrem_1484", 1 + store i64 %"$consume_1488", i64* @_gasrem + %"$fail_msg__sender_1489" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1489" + %"$tname_1490" = load %String, %String* %tname + %"$m_1491" = load %String, %String* %m16 + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1489", %String %"$tname_1490", %String %"$m_1491") + br label %"$matchsucc_1409" + +"$empty_default_1413": ; preds = %"$have_gas_1407" + br label %"$matchsucc_1409" + +"$matchsucc_1409": ; preds = %"$have_gas_1487", %"$matchsucc_1443", %"$empty_default_1413" + %"$gasrem_1492" = load i64, i64* @_gasrem + %"$gascmp_1493" = icmp ugt i64 1, %"$gasrem_1492" + br i1 %"$gascmp_1493", label %"$out_of_gas_1494", label %"$have_gas_1495" + +"$out_of_gas_1494": ; preds = %"$matchsucc_1409" + call void @_out_of_gas() + br label %"$have_gas_1495" + +"$have_gas_1495": ; preds = %"$out_of_gas_1494", %"$matchsucc_1409" + %"$consume_1496" = sub i64 %"$gasrem_1492", 1 + store i64 %"$consume_1496", i64* @_gasrem + %"$indices_buf_1497_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1497_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1497_salloc_load", i64 16) + %"$indices_buf_1497_salloc" = bitcast i8* %"$indices_buf_1497_salloc_salloc" to [16 x i8]* + %"$indices_buf_1497" = bitcast [16 x i8]* %"$indices_buf_1497_salloc" to i8* + %"$$key1b_1_1498" = load %String, %String* %"$key1b_1" + %"$indices_gep_1499" = getelementptr i8, i8* %"$indices_buf_1497", i32 0 + %indices_cast17 = bitcast i8* %"$indices_gep_1499" to %String* + store %String %"$$key1b_1_1498", %String* %indices_cast17 + %"$execptr_load_1500" = load i8*, i8** @_execptr + call void @_update_field(i8* %"$execptr_load_1500", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1501", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 1, i8* %"$indices_buf_1497", i8* null) ret void } define void @t6(i8* %0) { entry: - %"$_amount_1487" = getelementptr i8, i8* %0, i32 0 - %"$_amount_1488" = bitcast i8* %"$_amount_1487" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_1488" - %"$_sender_1489" = getelementptr i8, i8* %0, i32 16 - %"$_sender_1490" = bitcast i8* %"$_sender_1489" to [20 x i8]* - call void @"$t6_1076"(%Uint128 %_amount, [20 x i8]* %"$_sender_1490") - ret void -} - -define internal void @"$t7_1491"(%Uint128 %_amount, [20 x i8]* %"$_sender_1492") { -entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_1492" - %"$gasrem_1493" = load i64, i64* @_gasrem - %"$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 = %entry - call void @_out_of_gas() - br label %"$have_gas_1496" - -"$have_gas_1496": ; preds = %"$out_of_gas_1495", %entry - %"$consume_1497" = sub i64 %"$gasrem_1493", 1 - store i64 %"$consume_1497", i64* @_gasrem - %tname = alloca %String - %"$gasrem_1498" = load i64, i64* @_gasrem - %"$gascmp_1499" = icmp ugt i64 1, %"$gasrem_1498" - br i1 %"$gascmp_1499", label %"$out_of_gas_1500", label %"$have_gas_1501" - -"$out_of_gas_1500": ; preds = %"$have_gas_1496" - call void @_out_of_gas() - br label %"$have_gas_1501" - -"$have_gas_1501": ; preds = %"$out_of_gas_1500", %"$have_gas_1496" - %"$consume_1502" = sub i64 %"$gasrem_1498", 1 - store i64 %"$consume_1502", i64* @_gasrem - store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_1503", i32 0, i32 0), i32 2 }, %String* %tname - %"$gasrem_1504" = load i64, i64* @_gasrem - %"$gascmp_1505" = icmp ugt i64 1, %"$gasrem_1504" - br i1 %"$gascmp_1505", label %"$out_of_gas_1506", label %"$have_gas_1507" - -"$out_of_gas_1506": ; preds = %"$have_gas_1501" - call void @_out_of_gas() - br label %"$have_gas_1507" + %"$_amount_1503" = getelementptr i8, i8* %0, i32 0 + %"$_amount_1504" = bitcast i8* %"$_amount_1503" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_1504" + %"$_sender_1505" = getelementptr i8, i8* %0, i32 16 + %"$_sender_1506" = bitcast i8* %"$_sender_1505" to [20 x i8]* + call void @"$t6_1092"(%Uint128 %_amount, [20 x i8]* %"$_sender_1506") + ret void +} -"$have_gas_1507": ; preds = %"$out_of_gas_1506", %"$have_gas_1501" - %"$consume_1508" = sub i64 %"$gasrem_1504", 1 - store i64 %"$consume_1508", i64* @_gasrem - %key1a = alloca %String +define internal void @"$t7_1507"(%Uint128 %_amount, [20 x i8]* %"$_sender_1508") { +entry: + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1508" %"$gasrem_1509" = load i64, i64* @_gasrem %"$gascmp_1510" = icmp ugt i64 1, %"$gasrem_1509" br i1 %"$gascmp_1510", label %"$out_of_gas_1511", label %"$have_gas_1512" -"$out_of_gas_1511": ; preds = %"$have_gas_1507" +"$out_of_gas_1511": ; preds = %entry call void @_out_of_gas() br label %"$have_gas_1512" -"$have_gas_1512": ; preds = %"$out_of_gas_1511", %"$have_gas_1507" +"$have_gas_1512": ; preds = %"$out_of_gas_1511", %entry %"$consume_1513" = sub i64 %"$gasrem_1509", 1 store i64 %"$consume_1513", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1514", i32 0, i32 0), i32 5 }, %String* %key1a - %"$gasrem_1515" = load i64, i64* @_gasrem - %"$gascmp_1516" = icmp ugt i64 1, %"$gasrem_1515" - br i1 %"$gascmp_1516", label %"$out_of_gas_1517", label %"$have_gas_1518" + %tname = alloca %String + %"$gasrem_1514" = load i64, i64* @_gasrem + %"$gascmp_1515" = icmp ugt i64 1, %"$gasrem_1514" + br i1 %"$gascmp_1515", label %"$out_of_gas_1516", label %"$have_gas_1517" -"$out_of_gas_1517": ; preds = %"$have_gas_1512" +"$out_of_gas_1516": ; preds = %"$have_gas_1512" call void @_out_of_gas() - br label %"$have_gas_1518" + br label %"$have_gas_1517" -"$have_gas_1518": ; preds = %"$out_of_gas_1517", %"$have_gas_1512" - %"$consume_1519" = sub i64 %"$gasrem_1515", 1 - store i64 %"$consume_1519", i64* @_gasrem - %key2a = alloca %String +"$have_gas_1517": ; preds = %"$out_of_gas_1516", %"$have_gas_1512" + %"$consume_1518" = sub i64 %"$gasrem_1514", 1 + store i64 %"$consume_1518", i64* @_gasrem + store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_1519", i32 0, i32 0), i32 2 }, %String* %tname %"$gasrem_1520" = load i64, i64* @_gasrem %"$gascmp_1521" = icmp ugt i64 1, %"$gasrem_1520" br i1 %"$gascmp_1521", label %"$out_of_gas_1522", label %"$have_gas_1523" -"$out_of_gas_1522": ; preds = %"$have_gas_1518" +"$out_of_gas_1522": ; preds = %"$have_gas_1517" call void @_out_of_gas() br label %"$have_gas_1523" -"$have_gas_1523": ; preds = %"$out_of_gas_1522", %"$have_gas_1518" +"$have_gas_1523": ; preds = %"$out_of_gas_1522", %"$have_gas_1517" %"$consume_1524" = sub i64 %"$gasrem_1520", 1 store i64 %"$consume_1524", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1525", i32 0, i32 0), i32 5 }, %String* %key2a + %key1a = alloca %String + %"$gasrem_1525" = load i64, i64* @_gasrem + %"$gascmp_1526" = icmp ugt i64 1, %"$gasrem_1525" + br i1 %"$gascmp_1526", label %"$out_of_gas_1527", label %"$have_gas_1528" + +"$out_of_gas_1527": ; preds = %"$have_gas_1523" + call void @_out_of_gas() + br label %"$have_gas_1528" + +"$have_gas_1528": ; preds = %"$out_of_gas_1527", %"$have_gas_1523" + %"$consume_1529" = sub i64 %"$gasrem_1525", 1 + store i64 %"$consume_1529", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1530", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_1531" = load i64, i64* @_gasrem + %"$gascmp_1532" = icmp ugt i64 1, %"$gasrem_1531" + br i1 %"$gascmp_1532", label %"$out_of_gas_1533", label %"$have_gas_1534" + +"$out_of_gas_1533": ; preds = %"$have_gas_1528" + call void @_out_of_gas() + br label %"$have_gas_1534" + +"$have_gas_1534": ; preds = %"$out_of_gas_1533", %"$have_gas_1528" + %"$consume_1535" = sub i64 %"$gasrem_1531", 1 + store i64 %"$consume_1535", i64* @_gasrem + %key2a = alloca %String + %"$gasrem_1536" = load i64, i64* @_gasrem + %"$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_1534" + call void @_out_of_gas() + br label %"$have_gas_1539" + +"$have_gas_1539": ; preds = %"$out_of_gas_1538", %"$have_gas_1534" + %"$consume_1540" = sub i64 %"$gasrem_1536", 1 + store i64 %"$consume_1540", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1541", i32 0, i32 0), i32 5 }, %String* %key2a %c1 = alloca %TName_Option_String* - %"$indices_buf_1526_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1526_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1526_salloc_load", i64 32) - %"$indices_buf_1526_salloc" = bitcast i8* %"$indices_buf_1526_salloc_salloc" to [32 x i8]* - %"$indices_buf_1526" = bitcast [32 x i8]* %"$indices_buf_1526_salloc" to i8* - %"$key1a_1527" = load %String, %String* %key1a - %"$indices_gep_1528" = getelementptr i8, i8* %"$indices_buf_1526", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_1528" to %String* - store %String %"$key1a_1527", %String* %indices_cast - %"$key2a_1529" = load %String, %String* %key2a - %"$indices_gep_1530" = getelementptr i8, i8* %"$indices_buf_1526", i32 16 - %indices_cast1 = bitcast i8* %"$indices_gep_1530" to %String* - store %String %"$key2a_1529", %String* %indices_cast1 - %"$execptr_load_1531" = load i8*, i8** @_execptr - %"$c1_1533" = call i8* @_fetch_field(i8* %"$execptr_load_1531", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1532", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1526", i32 1) - %"$c1_1534" = bitcast i8* %"$c1_1533" to %TName_Option_String* - store %TName_Option_String* %"$c1_1534", %TName_Option_String** %c1 - %"$c1_1535" = load %TName_Option_String*, %TName_Option_String** %c1 - %"$$c1_1535_1536" = bitcast %TName_Option_String* %"$c1_1535" to i8* - %"$_literal_cost_call_1537" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$c1_1535_1536") - %"$gasadd_1538" = add i64 %"$_literal_cost_call_1537", 0 - %"$gasadd_1539" = add i64 %"$gasadd_1538", 2 - %"$gasrem_1540" = load i64, i64* @_gasrem - %"$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_1523" - call void @_out_of_gas() - br label %"$have_gas_1543" - -"$have_gas_1543": ; preds = %"$out_of_gas_1542", %"$have_gas_1523" - %"$consume_1544" = sub i64 %"$gasrem_1540", %"$gasadd_1539" - store i64 %"$consume_1544", i64* @_gasrem - %"$gasrem_1545" = load i64, i64* @_gasrem - %"$gascmp_1546" = icmp ugt i64 2, %"$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", 2 - store i64 %"$consume_1549", i64* @_gasrem + %"$indices_buf_1542_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1542_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1542_salloc_load", i64 32) + %"$indices_buf_1542_salloc" = bitcast i8* %"$indices_buf_1542_salloc_salloc" to [32 x i8]* + %"$indices_buf_1542" = bitcast [32 x i8]* %"$indices_buf_1542_salloc" to i8* + %"$key1a_1543" = load %String, %String* %key1a + %"$indices_gep_1544" = getelementptr i8, i8* %"$indices_buf_1542", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_1544" to %String* + store %String %"$key1a_1543", %String* %indices_cast + %"$key2a_1545" = load %String, %String* %key2a + %"$indices_gep_1546" = getelementptr i8, i8* %"$indices_buf_1542", i32 16 + %indices_cast1 = bitcast i8* %"$indices_gep_1546" to %String* + store %String %"$key2a_1545", %String* %indices_cast1 + %"$execptr_load_1547" = load i8*, i8** @_execptr + %"$c1_1549" = call i8* @_fetch_field(i8* %"$execptr_load_1547", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1548", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1542", i32 1) + %"$c1_1550" = bitcast i8* %"$c1_1549" to %TName_Option_String* + store %TName_Option_String* %"$c1_1550", %TName_Option_String** %c1 %"$c1_1551" = load %TName_Option_String*, %TName_Option_String** %c1 - %"$c1_tag_1552" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$c1_1551", i32 0, i32 0 - %"$c1_tag_1553" = load i8, i8* %"$c1_tag_1552" - switch i8 %"$c1_tag_1553", label %"$empty_default_1554" [ - i8 0, label %"$Some_1555" - i8 1, label %"$None_1612" + %"$$c1_1551_1552" = bitcast %TName_Option_String* %"$c1_1551" to i8* + %"$_literal_cost_call_1553" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$c1_1551_1552") + %"$gasadd_1554" = add i64 %"$_literal_cost_call_1553", 0 + %"$gasadd_1555" = add i64 %"$gasadd_1554", 2 + %"$gasrem_1556" = load i64, i64* @_gasrem + %"$gascmp_1557" = icmp ugt i64 %"$gasadd_1555", %"$gasrem_1556" + br i1 %"$gascmp_1557", label %"$out_of_gas_1558", label %"$have_gas_1559" + +"$out_of_gas_1558": ; preds = %"$have_gas_1539" + call void @_out_of_gas() + br label %"$have_gas_1559" + +"$have_gas_1559": ; preds = %"$out_of_gas_1558", %"$have_gas_1539" + %"$consume_1560" = sub i64 %"$gasrem_1556", %"$gasadd_1555" + store i64 %"$consume_1560", i64* @_gasrem + %"$gasrem_1561" = load i64, i64* @_gasrem + %"$gascmp_1562" = icmp ugt i64 2, %"$gasrem_1561" + br i1 %"$gascmp_1562", label %"$out_of_gas_1563", label %"$have_gas_1564" + +"$out_of_gas_1563": ; preds = %"$have_gas_1559" + call void @_out_of_gas() + br label %"$have_gas_1564" + +"$have_gas_1564": ; preds = %"$out_of_gas_1563", %"$have_gas_1559" + %"$consume_1565" = sub i64 %"$gasrem_1561", 2 + store i64 %"$consume_1565", i64* @_gasrem + %"$c1_1567" = load %TName_Option_String*, %TName_Option_String** %c1 + %"$c1_tag_1568" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$c1_1567", i32 0, i32 0 + %"$c1_tag_1569" = load i8, i8* %"$c1_tag_1568" + switch i8 %"$c1_tag_1569", label %"$empty_default_1570" [ + i8 0, label %"$Some_1571" + i8 1, label %"$None_1628" ] -"$Some_1555": ; preds = %"$have_gas_1548" - %"$c1_1556" = bitcast %TName_Option_String* %"$c1_1551" to %CName_Some_String* - %"$c_gep_1557" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$c1_1556", i32 0, i32 1 - %"$c_load_1558" = load %String, %String* %"$c_gep_1557" +"$Some_1571": ; preds = %"$have_gas_1564" + %"$c1_1572" = bitcast %TName_Option_String* %"$c1_1567" to %CName_Some_String* + %"$c_gep_1573" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$c1_1572", i32 0, i32 1 + %"$c_load_1574" = load %String, %String* %"$c_gep_1573" %c = alloca %String - store %String %"$c_load_1558", %String* %c - %"$gasrem_1559" = load i64, i64* @_gasrem - %"$gascmp_1560" = icmp ugt i64 1, %"$gasrem_1559" - br i1 %"$gascmp_1560", label %"$out_of_gas_1561", label %"$have_gas_1562" + store %String %"$c_load_1574", %String* %c + %"$gasrem_1575" = load i64, i64* @_gasrem + %"$gascmp_1576" = icmp ugt i64 1, %"$gasrem_1575" + br i1 %"$gascmp_1576", label %"$out_of_gas_1577", label %"$have_gas_1578" -"$out_of_gas_1561": ; preds = %"$Some_1555" +"$out_of_gas_1577": ; preds = %"$Some_1571" call void @_out_of_gas() - br label %"$have_gas_1562" + br label %"$have_gas_1578" -"$have_gas_1562": ; preds = %"$out_of_gas_1561", %"$Some_1555" - %"$consume_1563" = sub i64 %"$gasrem_1559", 1 - store i64 %"$consume_1563", i64* @_gasrem +"$have_gas_1578": ; preds = %"$out_of_gas_1577", %"$Some_1571" + %"$consume_1579" = sub i64 %"$gasrem_1575", 1 + store i64 %"$consume_1579", i64* @_gasrem %v = alloca %String - %"$gasrem_1564" = load i64, i64* @_gasrem - %"$gascmp_1565" = icmp ugt i64 1, %"$gasrem_1564" - br i1 %"$gascmp_1565", label %"$out_of_gas_1566", label %"$have_gas_1567" + %"$gasrem_1580" = load i64, i64* @_gasrem + %"$gascmp_1581" = icmp ugt i64 1, %"$gasrem_1580" + br i1 %"$gascmp_1581", label %"$out_of_gas_1582", label %"$have_gas_1583" -"$out_of_gas_1566": ; preds = %"$have_gas_1562" +"$out_of_gas_1582": ; preds = %"$have_gas_1578" call void @_out_of_gas() - br label %"$have_gas_1567" + br label %"$have_gas_1583" -"$have_gas_1567": ; preds = %"$out_of_gas_1566", %"$have_gas_1562" - %"$consume_1568" = sub i64 %"$gasrem_1564", 1 - store i64 %"$consume_1568", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1569", i32 0, i32 0), i32 3 }, %String* %v - %"$gasrem_1570" = load i64, i64* @_gasrem - %"$gascmp_1571" = icmp ugt i64 1, %"$gasrem_1570" - br i1 %"$gascmp_1571", label %"$out_of_gas_1572", label %"$have_gas_1573" +"$have_gas_1583": ; preds = %"$out_of_gas_1582", %"$have_gas_1578" + %"$consume_1584" = sub i64 %"$gasrem_1580", 1 + store i64 %"$consume_1584", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1585", i32 0, i32 0), i32 3 }, %String* %v + %"$gasrem_1586" = load i64, i64* @_gasrem + %"$gascmp_1587" = icmp ugt i64 1, %"$gasrem_1586" + br i1 %"$gascmp_1587", label %"$out_of_gas_1588", label %"$have_gas_1589" -"$out_of_gas_1572": ; preds = %"$have_gas_1567" +"$out_of_gas_1588": ; preds = %"$have_gas_1583" call void @_out_of_gas() - br label %"$have_gas_1573" + br label %"$have_gas_1589" -"$have_gas_1573": ; preds = %"$out_of_gas_1572", %"$have_gas_1567" - %"$consume_1574" = sub i64 %"$gasrem_1570", 1 - store i64 %"$consume_1574", i64* @_gasrem +"$have_gas_1589": ; preds = %"$out_of_gas_1588", %"$have_gas_1583" + %"$consume_1590" = sub i64 %"$gasrem_1586", 1 + store i64 %"$consume_1590", i64* @_gasrem %eq = alloca %TName_Bool* - %"$execptr_load_1575" = load i8*, i8** @_execptr - %"$c_1576" = load %String, %String* %c - %"$v_1577" = load %String, %String* %v - %"$eq_call_1578" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_1575", %String %"$c_1576", %String %"$v_1577") - store %TName_Bool* %"$eq_call_1578", %TName_Bool** %eq - %"$gasrem_1579" = load i64, i64* @_gasrem - %"$gascmp_1580" = icmp ugt i64 2, %"$gasrem_1579" - br i1 %"$gascmp_1580", label %"$out_of_gas_1581", label %"$have_gas_1582" - -"$out_of_gas_1581": ; preds = %"$have_gas_1573" - call void @_out_of_gas() - br label %"$have_gas_1582" - -"$have_gas_1582": ; preds = %"$out_of_gas_1581", %"$have_gas_1573" - %"$consume_1583" = sub i64 %"$gasrem_1579", 2 - store i64 %"$consume_1583", i64* @_gasrem - %"$eq_1585" = load %TName_Bool*, %TName_Bool** %eq - %"$eq_tag_1586" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_1585", i32 0, i32 0 - %"$eq_tag_1587" = load i8, i8* %"$eq_tag_1586" - switch i8 %"$eq_tag_1587", label %"$empty_default_1588" [ - i8 0, label %"$True_1589" - i8 1, label %"$False_1591" + %"$execptr_load_1591" = load i8*, i8** @_execptr + %"$c_1592" = load %String, %String* %c + %"$v_1593" = load %String, %String* %v + %"$eq_call_1594" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_1591", %String %"$c_1592", %String %"$v_1593") + store %TName_Bool* %"$eq_call_1594", %TName_Bool** %eq + %"$gasrem_1595" = load i64, i64* @_gasrem + %"$gascmp_1596" = icmp ugt i64 2, %"$gasrem_1595" + br i1 %"$gascmp_1596", label %"$out_of_gas_1597", label %"$have_gas_1598" + +"$out_of_gas_1597": ; preds = %"$have_gas_1589" + call void @_out_of_gas() + br label %"$have_gas_1598" + +"$have_gas_1598": ; preds = %"$out_of_gas_1597", %"$have_gas_1589" + %"$consume_1599" = sub i64 %"$gasrem_1595", 2 + store i64 %"$consume_1599", i64* @_gasrem + %"$eq_1601" = load %TName_Bool*, %TName_Bool** %eq + %"$eq_tag_1602" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_1601", i32 0, i32 0 + %"$eq_tag_1603" = load i8, i8* %"$eq_tag_1602" + switch i8 %"$eq_tag_1603", label %"$empty_default_1604" [ + i8 0, label %"$True_1605" + i8 1, label %"$False_1607" ] -"$True_1589": ; preds = %"$have_gas_1582" - %"$eq_1590" = bitcast %TName_Bool* %"$eq_1585" to %CName_True* - br label %"$matchsucc_1584" +"$True_1605": ; preds = %"$have_gas_1598" + %"$eq_1606" = bitcast %TName_Bool* %"$eq_1601" to %CName_True* + br label %"$matchsucc_1600" -"$False_1591": ; preds = %"$have_gas_1582" - %"$eq_1592" = bitcast %TName_Bool* %"$eq_1585" to %CName_False* - %"$gasrem_1593" = load i64, i64* @_gasrem - %"$gascmp_1594" = icmp ugt i64 1, %"$gasrem_1593" - br i1 %"$gascmp_1594", label %"$out_of_gas_1595", label %"$have_gas_1596" +"$False_1607": ; preds = %"$have_gas_1598" + %"$eq_1608" = bitcast %TName_Bool* %"$eq_1601" to %CName_False* + %"$gasrem_1609" = load i64, i64* @_gasrem + %"$gascmp_1610" = icmp ugt i64 1, %"$gasrem_1609" + br i1 %"$gascmp_1610", label %"$out_of_gas_1611", label %"$have_gas_1612" -"$out_of_gas_1595": ; preds = %"$False_1591" +"$out_of_gas_1611": ; preds = %"$False_1607" call void @_out_of_gas() - br label %"$have_gas_1596" + br label %"$have_gas_1612" -"$have_gas_1596": ; preds = %"$out_of_gas_1595", %"$False_1591" - %"$consume_1597" = sub i64 %"$gasrem_1593", 1 - store i64 %"$consume_1597", i64* @_gasrem +"$have_gas_1612": ; preds = %"$out_of_gas_1611", %"$False_1607" + %"$consume_1613" = sub i64 %"$gasrem_1609", 1 + store i64 %"$consume_1613", i64* @_gasrem %m = alloca %String - %"$gasrem_1598" = load i64, i64* @_gasrem - %"$gascmp_1599" = icmp ugt i64 1, %"$gasrem_1598" - br i1 %"$gascmp_1599", label %"$out_of_gas_1600", label %"$have_gas_1601" + %"$gasrem_1614" = load i64, i64* @_gasrem + %"$gascmp_1615" = icmp ugt i64 1, %"$gasrem_1614" + br i1 %"$gascmp_1615", label %"$out_of_gas_1616", label %"$have_gas_1617" -"$out_of_gas_1600": ; preds = %"$have_gas_1596" +"$out_of_gas_1616": ; preds = %"$have_gas_1612" call void @_out_of_gas() - br label %"$have_gas_1601" + br label %"$have_gas_1617" -"$have_gas_1601": ; preds = %"$out_of_gas_1600", %"$have_gas_1596" - %"$consume_1602" = sub i64 %"$gasrem_1598", 1 - store i64 %"$consume_1602", i64* @_gasrem - store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_1603", i32 0, i32 0), i32 31 }, %String* %m - %"$gasrem_1604" = load i64, i64* @_gasrem - %"$gascmp_1605" = icmp ugt i64 1, %"$gasrem_1604" - br i1 %"$gascmp_1605", label %"$out_of_gas_1606", label %"$have_gas_1607" +"$have_gas_1617": ; preds = %"$out_of_gas_1616", %"$have_gas_1612" + %"$consume_1618" = sub i64 %"$gasrem_1614", 1 + store i64 %"$consume_1618", i64* @_gasrem + store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_1619", i32 0, i32 0), i32 31 }, %String* %m + %"$gasrem_1620" = load i64, i64* @_gasrem + %"$gascmp_1621" = icmp ugt i64 1, %"$gasrem_1620" + br i1 %"$gascmp_1621", label %"$out_of_gas_1622", label %"$have_gas_1623" -"$out_of_gas_1606": ; preds = %"$have_gas_1601" +"$out_of_gas_1622": ; preds = %"$have_gas_1617" call void @_out_of_gas() - br label %"$have_gas_1607" + br label %"$have_gas_1623" -"$have_gas_1607": ; preds = %"$out_of_gas_1606", %"$have_gas_1601" - %"$consume_1608" = sub i64 %"$gasrem_1604", 1 - store i64 %"$consume_1608", i64* @_gasrem - %"$fail_msg__sender_1609" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1609" - %"$tname_1610" = load %String, %String* %tname - %"$m_1611" = load %String, %String* %m - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1609", %String %"$tname_1610", %String %"$m_1611") - br label %"$matchsucc_1584" +"$have_gas_1623": ; preds = %"$out_of_gas_1622", %"$have_gas_1617" + %"$consume_1624" = sub i64 %"$gasrem_1620", 1 + store i64 %"$consume_1624", i64* @_gasrem + %"$fail_msg__sender_1625" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1625" + %"$tname_1626" = load %String, %String* %tname + %"$m_1627" = load %String, %String* %m + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1625", %String %"$tname_1626", %String %"$m_1627") + br label %"$matchsucc_1600" -"$empty_default_1588": ; preds = %"$have_gas_1582" - br label %"$matchsucc_1584" +"$empty_default_1604": ; preds = %"$have_gas_1598" + br label %"$matchsucc_1600" -"$matchsucc_1584": ; preds = %"$have_gas_1607", %"$True_1589", %"$empty_default_1588" - br label %"$matchsucc_1550" +"$matchsucc_1600": ; preds = %"$have_gas_1623", %"$True_1605", %"$empty_default_1604" + br label %"$matchsucc_1566" -"$None_1612": ; preds = %"$have_gas_1548" - %"$c1_1613" = bitcast %TName_Option_String* %"$c1_1551" to %CName_None_String* - %"$gasrem_1614" = load i64, i64* @_gasrem - %"$gascmp_1615" = icmp ugt i64 1, %"$gasrem_1614" - br i1 %"$gascmp_1615", label %"$out_of_gas_1616", label %"$have_gas_1617" +"$None_1628": ; preds = %"$have_gas_1564" + %"$c1_1629" = bitcast %TName_Option_String* %"$c1_1567" to %CName_None_String* + %"$gasrem_1630" = load i64, i64* @_gasrem + %"$gascmp_1631" = icmp ugt i64 1, %"$gasrem_1630" + br i1 %"$gascmp_1631", label %"$out_of_gas_1632", label %"$have_gas_1633" -"$out_of_gas_1616": ; preds = %"$None_1612" +"$out_of_gas_1632": ; preds = %"$None_1628" call void @_out_of_gas() - br label %"$have_gas_1617" + br label %"$have_gas_1633" -"$have_gas_1617": ; preds = %"$out_of_gas_1616", %"$None_1612" - %"$consume_1618" = sub i64 %"$gasrem_1614", 1 - store i64 %"$consume_1618", i64* @_gasrem +"$have_gas_1633": ; preds = %"$out_of_gas_1632", %"$None_1628" + %"$consume_1634" = sub i64 %"$gasrem_1630", 1 + store i64 %"$consume_1634", i64* @_gasrem %m2 = alloca %String - %"$gasrem_1619" = load i64, i64* @_gasrem - %"$gascmp_1620" = icmp ugt i64 1, %"$gasrem_1619" - br i1 %"$gascmp_1620", label %"$out_of_gas_1621", label %"$have_gas_1622" + %"$gasrem_1635" = load i64, i64* @_gasrem + %"$gascmp_1636" = icmp ugt i64 1, %"$gasrem_1635" + br i1 %"$gascmp_1636", label %"$out_of_gas_1637", label %"$have_gas_1638" -"$out_of_gas_1621": ; preds = %"$have_gas_1617" +"$out_of_gas_1637": ; preds = %"$have_gas_1633" call void @_out_of_gas() - br label %"$have_gas_1622" + br label %"$have_gas_1638" -"$have_gas_1622": ; preds = %"$out_of_gas_1621", %"$have_gas_1617" - %"$consume_1623" = sub i64 %"$gasrem_1619", 1 - store i64 %"$consume_1623", i64* @_gasrem - store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_1624", i32 0, i32 0), i32 21 }, %String* %m2 - %"$gasrem_1625" = load i64, i64* @_gasrem - %"$gascmp_1626" = icmp ugt i64 1, %"$gasrem_1625" - br i1 %"$gascmp_1626", label %"$out_of_gas_1627", label %"$have_gas_1628" +"$have_gas_1638": ; preds = %"$out_of_gas_1637", %"$have_gas_1633" + %"$consume_1639" = sub i64 %"$gasrem_1635", 1 + store i64 %"$consume_1639", i64* @_gasrem + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_1640", i32 0, i32 0), i32 21 }, %String* %m2 + %"$gasrem_1641" = load i64, i64* @_gasrem + %"$gascmp_1642" = icmp ugt i64 1, %"$gasrem_1641" + br i1 %"$gascmp_1642", label %"$out_of_gas_1643", label %"$have_gas_1644" -"$out_of_gas_1627": ; preds = %"$have_gas_1622" +"$out_of_gas_1643": ; preds = %"$have_gas_1638" call void @_out_of_gas() - br label %"$have_gas_1628" + br label %"$have_gas_1644" -"$have_gas_1628": ; preds = %"$out_of_gas_1627", %"$have_gas_1622" - %"$consume_1629" = sub i64 %"$gasrem_1625", 1 - store i64 %"$consume_1629", i64* @_gasrem - %"$fail_msg__sender_1630" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1630" - %"$tname_1631" = load %String, %String* %tname - %"$m_1632" = load %String, %String* %m2 - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1630", %String %"$tname_1631", %String %"$m_1632") - br label %"$matchsucc_1550" +"$have_gas_1644": ; preds = %"$out_of_gas_1643", %"$have_gas_1638" + %"$consume_1645" = sub i64 %"$gasrem_1641", 1 + store i64 %"$consume_1645", i64* @_gasrem + %"$fail_msg__sender_1646" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1646" + %"$tname_1647" = load %String, %String* %tname + %"$m_1648" = load %String, %String* %m2 + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1646", %String %"$tname_1647", %String %"$m_1648") + br label %"$matchsucc_1566" -"$empty_default_1554": ; preds = %"$have_gas_1548" - br label %"$matchsucc_1550" +"$empty_default_1570": ; preds = %"$have_gas_1564" + br label %"$matchsucc_1566" -"$matchsucc_1550": ; preds = %"$have_gas_1628", %"$matchsucc_1584", %"$empty_default_1554" - %"$gasrem_1633" = load i64, i64* @_gasrem - %"$gascmp_1634" = icmp ugt i64 1, %"$gasrem_1633" - br i1 %"$gascmp_1634", label %"$out_of_gas_1635", label %"$have_gas_1636" +"$matchsucc_1566": ; preds = %"$have_gas_1644", %"$matchsucc_1600", %"$empty_default_1570" + %"$gasrem_1649" = load i64, i64* @_gasrem + %"$gascmp_1650" = icmp ugt i64 1, %"$gasrem_1649" + br i1 %"$gascmp_1650", label %"$out_of_gas_1651", label %"$have_gas_1652" -"$out_of_gas_1635": ; preds = %"$matchsucc_1550" +"$out_of_gas_1651": ; preds = %"$matchsucc_1566" call void @_out_of_gas() - br label %"$have_gas_1636" + br label %"$have_gas_1652" -"$have_gas_1636": ; preds = %"$out_of_gas_1635", %"$matchsucc_1550" - %"$consume_1637" = sub i64 %"$gasrem_1633", 1 - store i64 %"$consume_1637", i64* @_gasrem +"$have_gas_1652": ; preds = %"$out_of_gas_1651", %"$matchsucc_1566" + %"$consume_1653" = sub i64 %"$gasrem_1649", 1 + store i64 %"$consume_1653", i64* @_gasrem %key1b = alloca %String - %"$gasrem_1638" = load i64, i64* @_gasrem - %"$gascmp_1639" = icmp ugt i64 1, %"$gasrem_1638" - br i1 %"$gascmp_1639", label %"$out_of_gas_1640", label %"$have_gas_1641" + %"$gasrem_1654" = load i64, i64* @_gasrem + %"$gascmp_1655" = icmp ugt i64 1, %"$gasrem_1654" + br i1 %"$gascmp_1655", label %"$out_of_gas_1656", label %"$have_gas_1657" -"$out_of_gas_1640": ; preds = %"$have_gas_1636" +"$out_of_gas_1656": ; preds = %"$have_gas_1652" call void @_out_of_gas() - br label %"$have_gas_1641" + br label %"$have_gas_1657" -"$have_gas_1641": ; preds = %"$out_of_gas_1640", %"$have_gas_1636" - %"$consume_1642" = sub i64 %"$gasrem_1638", 1 - store i64 %"$consume_1642", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1643", i32 0, i32 0), i32 5 }, %String* %key1b +"$have_gas_1657": ; preds = %"$out_of_gas_1656", %"$have_gas_1652" + %"$consume_1658" = sub i64 %"$gasrem_1654", 1 + store i64 %"$consume_1658", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1659", i32 0, i32 0), i32 5 }, %String* %key1b %"$c1_3" = alloca %"TName_Option_Map_(String)_(String)"* - %"$indices_buf_1644_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1644_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1644_salloc_load", i64 16) - %"$indices_buf_1644_salloc" = bitcast i8* %"$indices_buf_1644_salloc_salloc" to [16 x i8]* - %"$indices_buf_1644" = bitcast [16 x i8]* %"$indices_buf_1644_salloc" to i8* - %"$key1b_1645" = load %String, %String* %key1b - %"$indices_gep_1646" = getelementptr i8, i8* %"$indices_buf_1644", i32 0 - %indices_cast3 = bitcast i8* %"$indices_gep_1646" to %String* - store %String %"$key1b_1645", %String* %indices_cast3 - %"$execptr_load_1647" = load i8*, i8** @_execptr - %"$$c1_3_1649" = call i8* @_fetch_field(i8* %"$execptr_load_1647", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1648", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 1, i8* %"$indices_buf_1644", i32 1) - %"$$c1_3_1650" = bitcast i8* %"$$c1_3_1649" to %"TName_Option_Map_(String)_(String)"* - store %"TName_Option_Map_(String)_(String)"* %"$$c1_3_1650", %"TName_Option_Map_(String)_(String)"** %"$c1_3" - %"$$c1_3_1651" = load %"TName_Option_Map_(String)_(String)"*, %"TName_Option_Map_(String)_(String)"** %"$c1_3" - %"$$$c1_3_1651_1652" = bitcast %"TName_Option_Map_(String)_(String)"* %"$$c1_3_1651" to i8* - %"$_literal_cost_call_1653" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Map_(String)_(String)_66", i8* %"$$$c1_3_1651_1652") - %"$gasadd_1654" = add i64 %"$_literal_cost_call_1653", 0 - %"$gasadd_1655" = add i64 %"$gasadd_1654", 1 - %"$gasrem_1656" = load i64, i64* @_gasrem - %"$gascmp_1657" = icmp ugt i64 %"$gasadd_1655", %"$gasrem_1656" - br i1 %"$gascmp_1657", label %"$out_of_gas_1658", label %"$have_gas_1659" - -"$out_of_gas_1658": ; preds = %"$have_gas_1641" - call void @_out_of_gas() - br label %"$have_gas_1659" - -"$have_gas_1659": ; preds = %"$out_of_gas_1658", %"$have_gas_1641" - %"$consume_1660" = sub i64 %"$gasrem_1656", %"$gasadd_1655" - store i64 %"$consume_1660", i64* @_gasrem - %"$gasrem_1661" = load i64, i64* @_gasrem - %"$gascmp_1662" = icmp ugt i64 2, %"$gasrem_1661" - br i1 %"$gascmp_1662", label %"$out_of_gas_1663", label %"$have_gas_1664" - -"$out_of_gas_1663": ; preds = %"$have_gas_1659" - call void @_out_of_gas() - br label %"$have_gas_1664" - -"$have_gas_1664": ; preds = %"$out_of_gas_1663", %"$have_gas_1659" - %"$consume_1665" = sub i64 %"$gasrem_1661", 2 - store i64 %"$consume_1665", i64* @_gasrem + %"$indices_buf_1660_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1660_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1660_salloc_load", i64 16) + %"$indices_buf_1660_salloc" = bitcast i8* %"$indices_buf_1660_salloc_salloc" to [16 x i8]* + %"$indices_buf_1660" = bitcast [16 x i8]* %"$indices_buf_1660_salloc" to i8* + %"$key1b_1661" = load %String, %String* %key1b + %"$indices_gep_1662" = getelementptr i8, i8* %"$indices_buf_1660", i32 0 + %indices_cast3 = bitcast i8* %"$indices_gep_1662" to %String* + store %String %"$key1b_1661", %String* %indices_cast3 + %"$execptr_load_1663" = load i8*, i8** @_execptr + %"$$c1_3_1665" = call i8* @_fetch_field(i8* %"$execptr_load_1663", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1664", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 1, i8* %"$indices_buf_1660", i32 1) + %"$$c1_3_1666" = bitcast i8* %"$$c1_3_1665" to %"TName_Option_Map_(String)_(String)"* + store %"TName_Option_Map_(String)_(String)"* %"$$c1_3_1666", %"TName_Option_Map_(String)_(String)"** %"$c1_3" %"$$c1_3_1667" = load %"TName_Option_Map_(String)_(String)"*, %"TName_Option_Map_(String)_(String)"** %"$c1_3" - %"$$c1_3_tag_1668" = getelementptr inbounds %"TName_Option_Map_(String)_(String)", %"TName_Option_Map_(String)_(String)"* %"$$c1_3_1667", i32 0, i32 0 - %"$$c1_3_tag_1669" = load i8, i8* %"$$c1_3_tag_1668" - switch i8 %"$$c1_3_tag_1669", label %"$empty_default_1670" [ - i8 0, label %"$Some_1671" - i8 1, label %"$None_1694" + %"$$$c1_3_1667_1668" = bitcast %"TName_Option_Map_(String)_(String)"* %"$$c1_3_1667" to i8* + %"$_literal_cost_call_1669" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Map_(String)_(String)_66", i8* %"$$$c1_3_1667_1668") + %"$gasadd_1670" = add i64 %"$_literal_cost_call_1669", 0 + %"$gasadd_1671" = add i64 %"$gasadd_1670", 1 + %"$gasrem_1672" = load i64, i64* @_gasrem + %"$gascmp_1673" = icmp ugt i64 %"$gasadd_1671", %"$gasrem_1672" + br i1 %"$gascmp_1673", label %"$out_of_gas_1674", label %"$have_gas_1675" + +"$out_of_gas_1674": ; preds = %"$have_gas_1657" + call void @_out_of_gas() + br label %"$have_gas_1675" + +"$have_gas_1675": ; preds = %"$out_of_gas_1674", %"$have_gas_1657" + %"$consume_1676" = sub i64 %"$gasrem_1672", %"$gasadd_1671" + store i64 %"$consume_1676", i64* @_gasrem + %"$gasrem_1677" = load i64, i64* @_gasrem + %"$gascmp_1678" = icmp ugt i64 2, %"$gasrem_1677" + br i1 %"$gascmp_1678", label %"$out_of_gas_1679", label %"$have_gas_1680" + +"$out_of_gas_1679": ; preds = %"$have_gas_1675" + call void @_out_of_gas() + br label %"$have_gas_1680" + +"$have_gas_1680": ; preds = %"$out_of_gas_1679", %"$have_gas_1675" + %"$consume_1681" = sub i64 %"$gasrem_1677", 2 + store i64 %"$consume_1681", i64* @_gasrem + %"$$c1_3_1683" = load %"TName_Option_Map_(String)_(String)"*, %"TName_Option_Map_(String)_(String)"** %"$c1_3" + %"$$c1_3_tag_1684" = getelementptr inbounds %"TName_Option_Map_(String)_(String)", %"TName_Option_Map_(String)_(String)"* %"$$c1_3_1683", i32 0, i32 0 + %"$$c1_3_tag_1685" = load i8, i8* %"$$c1_3_tag_1684" + switch i8 %"$$c1_3_tag_1685", label %"$empty_default_1686" [ + i8 0, label %"$Some_1687" + i8 1, label %"$None_1710" ] -"$Some_1671": ; preds = %"$have_gas_1664" - %"$$c1_3_1672" = bitcast %"TName_Option_Map_(String)_(String)"* %"$$c1_3_1667" to %"CName_Some_Map_(String)_(String)"* - %"$$$c1_3_15_gep_1673" = getelementptr inbounds %"CName_Some_Map_(String)_(String)", %"CName_Some_Map_(String)_(String)"* %"$$c1_3_1672", i32 0, i32 1 - %"$$$c1_3_15_load_1674" = load %Map_String_String*, %Map_String_String** %"$$$c1_3_15_gep_1673" +"$Some_1687": ; preds = %"$have_gas_1680" + %"$$c1_3_1688" = bitcast %"TName_Option_Map_(String)_(String)"* %"$$c1_3_1683" to %"CName_Some_Map_(String)_(String)"* + %"$$$c1_3_15_gep_1689" = getelementptr inbounds %"CName_Some_Map_(String)_(String)", %"CName_Some_Map_(String)_(String)"* %"$$c1_3_1688", i32 0, i32 1 + %"$$$c1_3_15_load_1690" = load %Map_String_String*, %Map_String_String** %"$$$c1_3_15_gep_1689" %"$$c1_3_15" = alloca %Map_String_String* - store %Map_String_String* %"$$$c1_3_15_load_1674", %Map_String_String** %"$$c1_3_15" - %"$gasrem_1675" = load i64, i64* @_gasrem - %"$gascmp_1676" = icmp ugt i64 1, %"$gasrem_1675" - br i1 %"$gascmp_1676", label %"$out_of_gas_1677", label %"$have_gas_1678" + store %Map_String_String* %"$$$c1_3_15_load_1690", %Map_String_String** %"$$c1_3_15" + %"$gasrem_1691" = load i64, i64* @_gasrem + %"$gascmp_1692" = icmp ugt i64 1, %"$gasrem_1691" + br i1 %"$gascmp_1692", label %"$out_of_gas_1693", label %"$have_gas_1694" -"$out_of_gas_1677": ; preds = %"$Some_1671" +"$out_of_gas_1693": ; preds = %"$Some_1687" call void @_out_of_gas() - br label %"$have_gas_1678" + br label %"$have_gas_1694" -"$have_gas_1678": ; preds = %"$out_of_gas_1677", %"$Some_1671" - %"$consume_1679" = sub i64 %"$gasrem_1675", 1 - store i64 %"$consume_1679", i64* @_gasrem +"$have_gas_1694": ; preds = %"$out_of_gas_1693", %"$Some_1687" + %"$consume_1695" = sub i64 %"$gasrem_1691", 1 + store i64 %"$consume_1695", i64* @_gasrem %m4 = alloca %String - %"$gasrem_1680" = load i64, i64* @_gasrem - %"$gascmp_1681" = icmp ugt i64 1, %"$gasrem_1680" - br i1 %"$gascmp_1681", label %"$out_of_gas_1682", label %"$have_gas_1683" - -"$out_of_gas_1682": ; preds = %"$have_gas_1678" - call void @_out_of_gas() - br label %"$have_gas_1683" - -"$have_gas_1683": ; preds = %"$out_of_gas_1682", %"$have_gas_1678" - %"$consume_1684" = sub i64 %"$gasrem_1680", 1 - store i64 %"$consume_1684", i64* @_gasrem - store %String { i8* getelementptr inbounds ([36 x i8], [36 x i8]* @"$stringlit_1685", i32 0, i32 0), i32 36 }, %String* %m4 - %"$gasrem_1686" = load i64, i64* @_gasrem - %"$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_1683" - call void @_out_of_gas() - br label %"$have_gas_1689" - -"$have_gas_1689": ; preds = %"$out_of_gas_1688", %"$have_gas_1683" - %"$consume_1690" = sub i64 %"$gasrem_1686", 1 - store i64 %"$consume_1690", i64* @_gasrem - %"$fail_msg__sender_1691" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1691" - %"$tname_1692" = load %String, %String* %tname - %"$m_1693" = load %String, %String* %m4 - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1691", %String %"$tname_1692", %String %"$m_1693") - br label %"$matchsucc_1666" - -"$None_1694": ; preds = %"$have_gas_1664" - %"$$c1_3_1695" = bitcast %"TName_Option_Map_(String)_(String)"* %"$$c1_3_1667" to %"CName_None_Map_(String)_(String)"* - br label %"$matchsucc_1666" - -"$empty_default_1670": ; preds = %"$have_gas_1664" - br label %"$matchsucc_1666" - -"$matchsucc_1666": ; preds = %"$None_1694", %"$have_gas_1689", %"$empty_default_1670" %"$gasrem_1696" = load i64, i64* @_gasrem %"$gascmp_1697" = icmp ugt i64 1, %"$gasrem_1696" br i1 %"$gascmp_1697", label %"$out_of_gas_1698", label %"$have_gas_1699" -"$out_of_gas_1698": ; preds = %"$matchsucc_1666" +"$out_of_gas_1698": ; preds = %"$have_gas_1694" call void @_out_of_gas() br label %"$have_gas_1699" -"$have_gas_1699": ; preds = %"$out_of_gas_1698", %"$matchsucc_1666" +"$have_gas_1699": ; preds = %"$out_of_gas_1698", %"$have_gas_1694" %"$consume_1700" = sub i64 %"$gasrem_1696", 1 store i64 %"$consume_1700", i64* @_gasrem - %"$key1b_4" = alloca %String - %"$gasrem_1701" = load i64, i64* @_gasrem - %"$gascmp_1702" = icmp ugt i64 1, %"$gasrem_1701" - br i1 %"$gascmp_1702", label %"$out_of_gas_1703", label %"$have_gas_1704" + store %String { i8* getelementptr inbounds ([36 x i8], [36 x i8]* @"$stringlit_1701", i32 0, i32 0), i32 36 }, %String* %m4 + %"$gasrem_1702" = load i64, i64* @_gasrem + %"$gascmp_1703" = icmp ugt i64 1, %"$gasrem_1702" + br i1 %"$gascmp_1703", label %"$out_of_gas_1704", label %"$have_gas_1705" -"$out_of_gas_1703": ; preds = %"$have_gas_1699" +"$out_of_gas_1704": ; preds = %"$have_gas_1699" call void @_out_of_gas() - br label %"$have_gas_1704" + br label %"$have_gas_1705" -"$have_gas_1704": ; preds = %"$out_of_gas_1703", %"$have_gas_1699" - %"$consume_1705" = sub i64 %"$gasrem_1701", 1 - store i64 %"$consume_1705", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1706", i32 0, i32 0), i32 5 }, %String* %"$key1b_4" - %"$gasrem_1707" = load i64, i64* @_gasrem - %"$gascmp_1708" = icmp ugt i64 1, %"$gasrem_1707" - br i1 %"$gascmp_1708", label %"$out_of_gas_1709", label %"$have_gas_1710" +"$have_gas_1705": ; preds = %"$out_of_gas_1704", %"$have_gas_1699" + %"$consume_1706" = sub i64 %"$gasrem_1702", 1 + store i64 %"$consume_1706", i64* @_gasrem + %"$fail_msg__sender_1707" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1707" + %"$tname_1708" = load %String, %String* %tname + %"$m_1709" = load %String, %String* %m4 + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1707", %String %"$tname_1708", %String %"$m_1709") + br label %"$matchsucc_1682" -"$out_of_gas_1709": ; preds = %"$have_gas_1704" - call void @_out_of_gas() - br label %"$have_gas_1710" +"$None_1710": ; preds = %"$have_gas_1680" + %"$$c1_3_1711" = bitcast %"TName_Option_Map_(String)_(String)"* %"$$c1_3_1683" to %"CName_None_Map_(String)_(String)"* + br label %"$matchsucc_1682" -"$have_gas_1710": ; preds = %"$out_of_gas_1709", %"$have_gas_1704" - %"$consume_1711" = sub i64 %"$gasrem_1707", 1 - store i64 %"$consume_1711", i64* @_gasrem - %key2b = alloca %String +"$empty_default_1686": ; preds = %"$have_gas_1680" + br label %"$matchsucc_1682" + +"$matchsucc_1682": ; preds = %"$None_1710", %"$have_gas_1705", %"$empty_default_1686" %"$gasrem_1712" = load i64, i64* @_gasrem %"$gascmp_1713" = icmp ugt i64 1, %"$gasrem_1712" br i1 %"$gascmp_1713", label %"$out_of_gas_1714", label %"$have_gas_1715" -"$out_of_gas_1714": ; preds = %"$have_gas_1710" +"$out_of_gas_1714": ; preds = %"$matchsucc_1682" call void @_out_of_gas() br label %"$have_gas_1715" -"$have_gas_1715": ; preds = %"$out_of_gas_1714", %"$have_gas_1710" +"$have_gas_1715": ; preds = %"$out_of_gas_1714", %"$matchsucc_1682" %"$consume_1716" = sub i64 %"$gasrem_1712", 1 store i64 %"$consume_1716", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1717", i32 0, i32 0), i32 5 }, %String* %key2b - %"$c1_5" = alloca %TName_Option_String* - %"$indices_buf_1718_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1718_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1718_salloc_load", i64 32) - %"$indices_buf_1718_salloc" = bitcast i8* %"$indices_buf_1718_salloc_salloc" to [32 x i8]* - %"$indices_buf_1718" = bitcast [32 x i8]* %"$indices_buf_1718_salloc" to i8* - %"$$key1b_4_1719" = load %String, %String* %"$key1b_4" - %"$indices_gep_1720" = getelementptr i8, i8* %"$indices_buf_1718", i32 0 - %indices_cast5 = bitcast i8* %"$indices_gep_1720" to %String* - store %String %"$$key1b_4_1719", %String* %indices_cast5 - %"$key2b_1721" = load %String, %String* %key2b - %"$indices_gep_1722" = getelementptr i8, i8* %"$indices_buf_1718", i32 16 - %indices_cast6 = bitcast i8* %"$indices_gep_1722" to %String* - store %String %"$key2b_1721", %String* %indices_cast6 - %"$execptr_load_1723" = load i8*, i8** @_execptr - %"$$c1_5_1725" = call i8* @_fetch_field(i8* %"$execptr_load_1723", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1724", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1718", i32 1) - %"$$c1_5_1726" = bitcast i8* %"$$c1_5_1725" to %TName_Option_String* - store %TName_Option_String* %"$$c1_5_1726", %TName_Option_String** %"$c1_5" - %"$$c1_5_1727" = load %TName_Option_String*, %TName_Option_String** %"$c1_5" - %"$$$c1_5_1727_1728" = bitcast %TName_Option_String* %"$$c1_5_1727" to i8* - %"$_literal_cost_call_1729" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$$c1_5_1727_1728") - %"$gasadd_1730" = add i64 %"$_literal_cost_call_1729", 0 - %"$gasadd_1731" = add i64 %"$gasadd_1730", 2 - %"$gasrem_1732" = load i64, i64* @_gasrem - %"$gascmp_1733" = icmp ugt i64 %"$gasadd_1731", %"$gasrem_1732" - br i1 %"$gascmp_1733", label %"$out_of_gas_1734", label %"$have_gas_1735" - -"$out_of_gas_1734": ; preds = %"$have_gas_1715" - call void @_out_of_gas() - br label %"$have_gas_1735" - -"$have_gas_1735": ; preds = %"$out_of_gas_1734", %"$have_gas_1715" - %"$consume_1736" = sub i64 %"$gasrem_1732", %"$gasadd_1731" - store i64 %"$consume_1736", i64* @_gasrem - %"$gasrem_1737" = load i64, i64* @_gasrem - %"$gascmp_1738" = icmp ugt i64 2, %"$gasrem_1737" - br i1 %"$gascmp_1738", label %"$out_of_gas_1739", label %"$have_gas_1740" - -"$out_of_gas_1739": ; preds = %"$have_gas_1735" - call void @_out_of_gas() - br label %"$have_gas_1740" - -"$have_gas_1740": ; preds = %"$out_of_gas_1739", %"$have_gas_1735" - %"$consume_1741" = sub i64 %"$gasrem_1737", 2 - store i64 %"$consume_1741", i64* @_gasrem - %"$$c1_5_1743" = load %TName_Option_String*, %TName_Option_String** %"$c1_5" - %"$$c1_5_tag_1744" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_5_1743", i32 0, i32 0 - %"$$c1_5_tag_1745" = load i8, i8* %"$$c1_5_tag_1744" - switch i8 %"$$c1_5_tag_1745", label %"$empty_default_1746" [ - i8 0, label %"$Some_1747" - i8 1, label %"$None_1770" - ] - -"$Some_1747": ; preds = %"$have_gas_1740" - %"$$c1_5_1748" = bitcast %TName_Option_String* %"$$c1_5_1743" to %CName_Some_String* - %"$$$c1_5_14_gep_1749" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_5_1748", i32 0, i32 1 - %"$$$c1_5_14_load_1750" = load %String, %String* %"$$$c1_5_14_gep_1749" - %"$$c1_5_14" = alloca %String - store %String %"$$$c1_5_14_load_1750", %String* %"$$c1_5_14" - %"$gasrem_1751" = load i64, i64* @_gasrem - %"$gascmp_1752" = icmp ugt i64 1, %"$gasrem_1751" - br i1 %"$gascmp_1752", label %"$out_of_gas_1753", label %"$have_gas_1754" + %"$key1b_4" = alloca %String + %"$gasrem_1717" = load i64, i64* @_gasrem + %"$gascmp_1718" = icmp ugt i64 1, %"$gasrem_1717" + br i1 %"$gascmp_1718", label %"$out_of_gas_1719", label %"$have_gas_1720" -"$out_of_gas_1753": ; preds = %"$Some_1747" +"$out_of_gas_1719": ; preds = %"$have_gas_1715" call void @_out_of_gas() - br label %"$have_gas_1754" + br label %"$have_gas_1720" -"$have_gas_1754": ; preds = %"$out_of_gas_1753", %"$Some_1747" - %"$consume_1755" = sub i64 %"$gasrem_1751", 1 - store i64 %"$consume_1755", i64* @_gasrem - %m7 = alloca %String - %"$gasrem_1756" = load i64, i64* @_gasrem - %"$gascmp_1757" = icmp ugt i64 1, %"$gasrem_1756" - br i1 %"$gascmp_1757", label %"$out_of_gas_1758", label %"$have_gas_1759" +"$have_gas_1720": ; preds = %"$out_of_gas_1719", %"$have_gas_1715" + %"$consume_1721" = sub i64 %"$gasrem_1717", 1 + store i64 %"$consume_1721", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1722", i32 0, i32 0), i32 5 }, %String* %"$key1b_4" + %"$gasrem_1723" = load i64, i64* @_gasrem + %"$gascmp_1724" = icmp ugt i64 1, %"$gasrem_1723" + br i1 %"$gascmp_1724", label %"$out_of_gas_1725", label %"$have_gas_1726" -"$out_of_gas_1758": ; preds = %"$have_gas_1754" +"$out_of_gas_1725": ; preds = %"$have_gas_1720" call void @_out_of_gas() - br label %"$have_gas_1759" + br label %"$have_gas_1726" -"$have_gas_1759": ; preds = %"$out_of_gas_1758", %"$have_gas_1754" - %"$consume_1760" = sub i64 %"$gasrem_1756", 1 - store i64 %"$consume_1760", i64* @_gasrem - store %String { i8* getelementptr inbounds ([42 x i8], [42 x i8]* @"$stringlit_1761", i32 0, i32 0), i32 42 }, %String* %m7 - %"$gasrem_1762" = load i64, i64* @_gasrem - %"$gascmp_1763" = icmp ugt i64 1, %"$gasrem_1762" - br i1 %"$gascmp_1763", label %"$out_of_gas_1764", label %"$have_gas_1765" +"$have_gas_1726": ; preds = %"$out_of_gas_1725", %"$have_gas_1720" + %"$consume_1727" = sub i64 %"$gasrem_1723", 1 + store i64 %"$consume_1727", i64* @_gasrem + %key2b = alloca %String + %"$gasrem_1728" = load i64, i64* @_gasrem + %"$gascmp_1729" = icmp ugt i64 1, %"$gasrem_1728" + br i1 %"$gascmp_1729", label %"$out_of_gas_1730", label %"$have_gas_1731" -"$out_of_gas_1764": ; preds = %"$have_gas_1759" +"$out_of_gas_1730": ; preds = %"$have_gas_1726" call void @_out_of_gas() - br label %"$have_gas_1765" + br label %"$have_gas_1731" -"$have_gas_1765": ; preds = %"$out_of_gas_1764", %"$have_gas_1759" - %"$consume_1766" = sub i64 %"$gasrem_1762", 1 - store i64 %"$consume_1766", i64* @_gasrem - %"$fail_msg__sender_1767" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1767" - %"$tname_1768" = load %String, %String* %tname - %"$m_1769" = load %String, %String* %m7 - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1767", %String %"$tname_1768", %String %"$m_1769") - br label %"$matchsucc_1742" +"$have_gas_1731": ; preds = %"$out_of_gas_1730", %"$have_gas_1726" + %"$consume_1732" = sub i64 %"$gasrem_1728", 1 + store i64 %"$consume_1732", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1733", i32 0, i32 0), i32 5 }, %String* %key2b + %"$c1_5" = alloca %TName_Option_String* + %"$indices_buf_1734_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1734_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1734_salloc_load", i64 32) + %"$indices_buf_1734_salloc" = bitcast i8* %"$indices_buf_1734_salloc_salloc" to [32 x i8]* + %"$indices_buf_1734" = bitcast [32 x i8]* %"$indices_buf_1734_salloc" to i8* + %"$$key1b_4_1735" = load %String, %String* %"$key1b_4" + %"$indices_gep_1736" = getelementptr i8, i8* %"$indices_buf_1734", i32 0 + %indices_cast5 = bitcast i8* %"$indices_gep_1736" to %String* + store %String %"$$key1b_4_1735", %String* %indices_cast5 + %"$key2b_1737" = load %String, %String* %key2b + %"$indices_gep_1738" = getelementptr i8, i8* %"$indices_buf_1734", i32 16 + %indices_cast6 = bitcast i8* %"$indices_gep_1738" to %String* + store %String %"$key2b_1737", %String* %indices_cast6 + %"$execptr_load_1739" = load i8*, i8** @_execptr + %"$$c1_5_1741" = call i8* @_fetch_field(i8* %"$execptr_load_1739", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1740", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1734", i32 1) + %"$$c1_5_1742" = bitcast i8* %"$$c1_5_1741" to %TName_Option_String* + store %TName_Option_String* %"$$c1_5_1742", %TName_Option_String** %"$c1_5" + %"$$c1_5_1743" = load %TName_Option_String*, %TName_Option_String** %"$c1_5" + %"$$$c1_5_1743_1744" = bitcast %TName_Option_String* %"$$c1_5_1743" to i8* + %"$_literal_cost_call_1745" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$$c1_5_1743_1744") + %"$gasadd_1746" = add i64 %"$_literal_cost_call_1745", 0 + %"$gasadd_1747" = add i64 %"$gasadd_1746", 2 + %"$gasrem_1748" = load i64, i64* @_gasrem + %"$gascmp_1749" = icmp ugt i64 %"$gasadd_1747", %"$gasrem_1748" + br i1 %"$gascmp_1749", label %"$out_of_gas_1750", label %"$have_gas_1751" + +"$out_of_gas_1750": ; preds = %"$have_gas_1731" + call void @_out_of_gas() + br label %"$have_gas_1751" + +"$have_gas_1751": ; preds = %"$out_of_gas_1750", %"$have_gas_1731" + %"$consume_1752" = sub i64 %"$gasrem_1748", %"$gasadd_1747" + store i64 %"$consume_1752", i64* @_gasrem + %"$gasrem_1753" = load i64, i64* @_gasrem + %"$gascmp_1754" = icmp ugt i64 2, %"$gasrem_1753" + br i1 %"$gascmp_1754", label %"$out_of_gas_1755", label %"$have_gas_1756" + +"$out_of_gas_1755": ; preds = %"$have_gas_1751" + call void @_out_of_gas() + br label %"$have_gas_1756" + +"$have_gas_1756": ; preds = %"$out_of_gas_1755", %"$have_gas_1751" + %"$consume_1757" = sub i64 %"$gasrem_1753", 2 + store i64 %"$consume_1757", i64* @_gasrem + %"$$c1_5_1759" = load %TName_Option_String*, %TName_Option_String** %"$c1_5" + %"$$c1_5_tag_1760" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_5_1759", i32 0, i32 0 + %"$$c1_5_tag_1761" = load i8, i8* %"$$c1_5_tag_1760" + switch i8 %"$$c1_5_tag_1761", label %"$empty_default_1762" [ + i8 0, label %"$Some_1763" + i8 1, label %"$None_1786" + ] -"$None_1770": ; preds = %"$have_gas_1740" - %"$$c1_5_1771" = bitcast %TName_Option_String* %"$$c1_5_1743" to %CName_None_String* - br label %"$matchsucc_1742" +"$Some_1763": ; preds = %"$have_gas_1756" + %"$$c1_5_1764" = bitcast %TName_Option_String* %"$$c1_5_1759" to %CName_Some_String* + %"$$$c1_5_14_gep_1765" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_5_1764", i32 0, i32 1 + %"$$$c1_5_14_load_1766" = load %String, %String* %"$$$c1_5_14_gep_1765" + %"$$c1_5_14" = alloca %String + store %String %"$$$c1_5_14_load_1766", %String* %"$$c1_5_14" + %"$gasrem_1767" = load i64, i64* @_gasrem + %"$gascmp_1768" = icmp ugt i64 1, %"$gasrem_1767" + br i1 %"$gascmp_1768", label %"$out_of_gas_1769", label %"$have_gas_1770" -"$empty_default_1746": ; preds = %"$have_gas_1740" - br label %"$matchsucc_1742" +"$out_of_gas_1769": ; preds = %"$Some_1763" + call void @_out_of_gas() + br label %"$have_gas_1770" -"$matchsucc_1742": ; preds = %"$None_1770", %"$have_gas_1765", %"$empty_default_1746" +"$have_gas_1770": ; preds = %"$out_of_gas_1769", %"$Some_1763" + %"$consume_1771" = sub i64 %"$gasrem_1767", 1 + store i64 %"$consume_1771", i64* @_gasrem + %m7 = alloca %String %"$gasrem_1772" = load i64, i64* @_gasrem %"$gascmp_1773" = icmp ugt i64 1, %"$gasrem_1772" br i1 %"$gascmp_1773", label %"$out_of_gas_1774", label %"$have_gas_1775" -"$out_of_gas_1774": ; preds = %"$matchsucc_1742" +"$out_of_gas_1774": ; preds = %"$have_gas_1770" call void @_out_of_gas() br label %"$have_gas_1775" -"$have_gas_1775": ; preds = %"$out_of_gas_1774", %"$matchsucc_1742" +"$have_gas_1775": ; preds = %"$out_of_gas_1774", %"$have_gas_1770" %"$consume_1776" = sub i64 %"$gasrem_1772", 1 store i64 %"$consume_1776", i64* @_gasrem - %"$key1b_6" = alloca %String - %"$gasrem_1777" = load i64, i64* @_gasrem - %"$gascmp_1778" = icmp ugt i64 1, %"$gasrem_1777" - br i1 %"$gascmp_1778", label %"$out_of_gas_1779", label %"$have_gas_1780" + store %String { i8* getelementptr inbounds ([42 x i8], [42 x i8]* @"$stringlit_1777", i32 0, i32 0), i32 42 }, %String* %m7 + %"$gasrem_1778" = load i64, i64* @_gasrem + %"$gascmp_1779" = icmp ugt i64 1, %"$gasrem_1778" + br i1 %"$gascmp_1779", label %"$out_of_gas_1780", label %"$have_gas_1781" -"$out_of_gas_1779": ; preds = %"$have_gas_1775" +"$out_of_gas_1780": ; preds = %"$have_gas_1775" call void @_out_of_gas() - br label %"$have_gas_1780" + br label %"$have_gas_1781" -"$have_gas_1780": ; preds = %"$out_of_gas_1779", %"$have_gas_1775" - %"$consume_1781" = sub i64 %"$gasrem_1777", 1 - store i64 %"$consume_1781", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1782", i32 0, i32 0), i32 5 }, %String* %"$key1b_6" - %"$gasrem_1783" = load i64, i64* @_gasrem - %"$gascmp_1784" = icmp ugt i64 1, %"$gasrem_1783" - br i1 %"$gascmp_1784", label %"$out_of_gas_1785", label %"$have_gas_1786" +"$have_gas_1781": ; preds = %"$out_of_gas_1780", %"$have_gas_1775" + %"$consume_1782" = sub i64 %"$gasrem_1778", 1 + store i64 %"$consume_1782", i64* @_gasrem + %"$fail_msg__sender_1783" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1783" + %"$tname_1784" = load %String, %String* %tname + %"$m_1785" = load %String, %String* %m7 + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1783", %String %"$tname_1784", %String %"$m_1785") + br label %"$matchsucc_1758" -"$out_of_gas_1785": ; preds = %"$have_gas_1780" - call void @_out_of_gas() - br label %"$have_gas_1786" +"$None_1786": ; preds = %"$have_gas_1756" + %"$$c1_5_1787" = bitcast %TName_Option_String* %"$$c1_5_1759" to %CName_None_String* + br label %"$matchsucc_1758" -"$have_gas_1786": ; preds = %"$out_of_gas_1785", %"$have_gas_1780" - %"$consume_1787" = sub i64 %"$gasrem_1783", 1 - store i64 %"$consume_1787", i64* @_gasrem - %key2d = alloca %String +"$empty_default_1762": ; preds = %"$have_gas_1756" + br label %"$matchsucc_1758" + +"$matchsucc_1758": ; preds = %"$None_1786", %"$have_gas_1781", %"$empty_default_1762" %"$gasrem_1788" = load i64, i64* @_gasrem %"$gascmp_1789" = icmp ugt i64 1, %"$gasrem_1788" br i1 %"$gascmp_1789", label %"$out_of_gas_1790", label %"$have_gas_1791" -"$out_of_gas_1790": ; preds = %"$have_gas_1786" +"$out_of_gas_1790": ; preds = %"$matchsucc_1758" call void @_out_of_gas() br label %"$have_gas_1791" -"$have_gas_1791": ; preds = %"$out_of_gas_1790", %"$have_gas_1786" +"$have_gas_1791": ; preds = %"$out_of_gas_1790", %"$matchsucc_1758" %"$consume_1792" = sub i64 %"$gasrem_1788", 1 store i64 %"$consume_1792", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1793", i32 0, i32 0), i32 5 }, %String* %key2d - %"$c1_7" = alloca %TName_Option_String* - %"$indices_buf_1794_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1794_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1794_salloc_load", i64 32) - %"$indices_buf_1794_salloc" = bitcast i8* %"$indices_buf_1794_salloc_salloc" to [32 x i8]* - %"$indices_buf_1794" = bitcast [32 x i8]* %"$indices_buf_1794_salloc" to i8* - %"$$key1b_6_1795" = load %String, %String* %"$key1b_6" - %"$indices_gep_1796" = getelementptr i8, i8* %"$indices_buf_1794", i32 0 - %indices_cast8 = bitcast i8* %"$indices_gep_1796" to %String* - store %String %"$$key1b_6_1795", %String* %indices_cast8 - %"$key2d_1797" = load %String, %String* %key2d - %"$indices_gep_1798" = getelementptr i8, i8* %"$indices_buf_1794", i32 16 - %indices_cast9 = bitcast i8* %"$indices_gep_1798" to %String* - store %String %"$key2d_1797", %String* %indices_cast9 - %"$execptr_load_1799" = load i8*, i8** @_execptr - %"$$c1_7_1801" = call i8* @_fetch_field(i8* %"$execptr_load_1799", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1800", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1794", i32 1) - %"$$c1_7_1802" = bitcast i8* %"$$c1_7_1801" to %TName_Option_String* - store %TName_Option_String* %"$$c1_7_1802", %TName_Option_String** %"$c1_7" - %"$$c1_7_1803" = load %TName_Option_String*, %TName_Option_String** %"$c1_7" - %"$$$c1_7_1803_1804" = bitcast %TName_Option_String* %"$$c1_7_1803" to i8* - %"$_literal_cost_call_1805" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$$c1_7_1803_1804") - %"$gasadd_1806" = add i64 %"$_literal_cost_call_1805", 0 - %"$gasadd_1807" = add i64 %"$gasadd_1806", 2 - %"$gasrem_1808" = load i64, i64* @_gasrem - %"$gascmp_1809" = icmp ugt i64 %"$gasadd_1807", %"$gasrem_1808" - br i1 %"$gascmp_1809", label %"$out_of_gas_1810", label %"$have_gas_1811" - -"$out_of_gas_1810": ; preds = %"$have_gas_1791" - call void @_out_of_gas() - br label %"$have_gas_1811" - -"$have_gas_1811": ; preds = %"$out_of_gas_1810", %"$have_gas_1791" - %"$consume_1812" = sub i64 %"$gasrem_1808", %"$gasadd_1807" - store i64 %"$consume_1812", i64* @_gasrem - %"$gasrem_1813" = load i64, i64* @_gasrem - %"$gascmp_1814" = icmp ugt i64 2, %"$gasrem_1813" - br i1 %"$gascmp_1814", label %"$out_of_gas_1815", label %"$have_gas_1816" - -"$out_of_gas_1815": ; preds = %"$have_gas_1811" - call void @_out_of_gas() - br label %"$have_gas_1816" - -"$have_gas_1816": ; preds = %"$out_of_gas_1815", %"$have_gas_1811" - %"$consume_1817" = sub i64 %"$gasrem_1813", 2 - store i64 %"$consume_1817", i64* @_gasrem - %"$$c1_7_1819" = load %TName_Option_String*, %TName_Option_String** %"$c1_7" - %"$$c1_7_tag_1820" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_7_1819", i32 0, i32 0 - %"$$c1_7_tag_1821" = load i8, i8* %"$$c1_7_tag_1820" - switch i8 %"$$c1_7_tag_1821", label %"$empty_default_1822" [ - i8 0, label %"$Some_1823" - i8 1, label %"$None_1846" - ] - -"$Some_1823": ; preds = %"$have_gas_1816" - %"$$c1_7_1824" = bitcast %TName_Option_String* %"$$c1_7_1819" to %CName_Some_String* - %"$$$c1_7_13_gep_1825" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_7_1824", i32 0, i32 1 - %"$$$c1_7_13_load_1826" = load %String, %String* %"$$$c1_7_13_gep_1825" - %"$$c1_7_13" = alloca %String - store %String %"$$$c1_7_13_load_1826", %String* %"$$c1_7_13" - %"$gasrem_1827" = load i64, i64* @_gasrem - %"$gascmp_1828" = icmp ugt i64 1, %"$gasrem_1827" - br i1 %"$gascmp_1828", label %"$out_of_gas_1829", label %"$have_gas_1830" + %"$key1b_6" = alloca %String + %"$gasrem_1793" = load i64, i64* @_gasrem + %"$gascmp_1794" = icmp ugt i64 1, %"$gasrem_1793" + br i1 %"$gascmp_1794", label %"$out_of_gas_1795", label %"$have_gas_1796" -"$out_of_gas_1829": ; preds = %"$Some_1823" +"$out_of_gas_1795": ; preds = %"$have_gas_1791" call void @_out_of_gas() - br label %"$have_gas_1830" + br label %"$have_gas_1796" -"$have_gas_1830": ; preds = %"$out_of_gas_1829", %"$Some_1823" - %"$consume_1831" = sub i64 %"$gasrem_1827", 1 - store i64 %"$consume_1831", i64* @_gasrem - %m10 = alloca %String - %"$gasrem_1832" = load i64, i64* @_gasrem - %"$gascmp_1833" = icmp ugt i64 1, %"$gasrem_1832" - br i1 %"$gascmp_1833", label %"$out_of_gas_1834", label %"$have_gas_1835" +"$have_gas_1796": ; preds = %"$out_of_gas_1795", %"$have_gas_1791" + %"$consume_1797" = sub i64 %"$gasrem_1793", 1 + store i64 %"$consume_1797", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1798", i32 0, i32 0), i32 5 }, %String* %"$key1b_6" + %"$gasrem_1799" = load i64, i64* @_gasrem + %"$gascmp_1800" = icmp ugt i64 1, %"$gasrem_1799" + br i1 %"$gascmp_1800", label %"$out_of_gas_1801", label %"$have_gas_1802" -"$out_of_gas_1834": ; preds = %"$have_gas_1830" +"$out_of_gas_1801": ; preds = %"$have_gas_1796" call void @_out_of_gas() - br label %"$have_gas_1835" + br label %"$have_gas_1802" -"$have_gas_1835": ; preds = %"$out_of_gas_1834", %"$have_gas_1830" - %"$consume_1836" = sub i64 %"$gasrem_1832", 1 - store i64 %"$consume_1836", i64* @_gasrem - store %String { i8* getelementptr inbounds ([42 x i8], [42 x i8]* @"$stringlit_1837", i32 0, i32 0), i32 42 }, %String* %m10 - %"$gasrem_1838" = load i64, i64* @_gasrem - %"$gascmp_1839" = icmp ugt i64 1, %"$gasrem_1838" - br i1 %"$gascmp_1839", label %"$out_of_gas_1840", label %"$have_gas_1841" +"$have_gas_1802": ; preds = %"$out_of_gas_1801", %"$have_gas_1796" + %"$consume_1803" = sub i64 %"$gasrem_1799", 1 + store i64 %"$consume_1803", i64* @_gasrem + %key2d = alloca %String + %"$gasrem_1804" = load i64, i64* @_gasrem + %"$gascmp_1805" = icmp ugt i64 1, %"$gasrem_1804" + br i1 %"$gascmp_1805", label %"$out_of_gas_1806", label %"$have_gas_1807" -"$out_of_gas_1840": ; preds = %"$have_gas_1835" +"$out_of_gas_1806": ; preds = %"$have_gas_1802" call void @_out_of_gas() - br label %"$have_gas_1841" + br label %"$have_gas_1807" -"$have_gas_1841": ; preds = %"$out_of_gas_1840", %"$have_gas_1835" - %"$consume_1842" = sub i64 %"$gasrem_1838", 1 - store i64 %"$consume_1842", i64* @_gasrem - %"$fail_msg__sender_1843" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1843" - %"$tname_1844" = load %String, %String* %tname - %"$m_1845" = load %String, %String* %m10 - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1843", %String %"$tname_1844", %String %"$m_1845") - br label %"$matchsucc_1818" +"$have_gas_1807": ; preds = %"$out_of_gas_1806", %"$have_gas_1802" + %"$consume_1808" = sub i64 %"$gasrem_1804", 1 + store i64 %"$consume_1808", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1809", i32 0, i32 0), i32 5 }, %String* %key2d + %"$c1_7" = alloca %TName_Option_String* + %"$indices_buf_1810_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1810_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1810_salloc_load", i64 32) + %"$indices_buf_1810_salloc" = bitcast i8* %"$indices_buf_1810_salloc_salloc" to [32 x i8]* + %"$indices_buf_1810" = bitcast [32 x i8]* %"$indices_buf_1810_salloc" to i8* + %"$$key1b_6_1811" = load %String, %String* %"$key1b_6" + %"$indices_gep_1812" = getelementptr i8, i8* %"$indices_buf_1810", i32 0 + %indices_cast8 = bitcast i8* %"$indices_gep_1812" to %String* + store %String %"$$key1b_6_1811", %String* %indices_cast8 + %"$key2d_1813" = load %String, %String* %key2d + %"$indices_gep_1814" = getelementptr i8, i8* %"$indices_buf_1810", i32 16 + %indices_cast9 = bitcast i8* %"$indices_gep_1814" to %String* + store %String %"$key2d_1813", %String* %indices_cast9 + %"$execptr_load_1815" = load i8*, i8** @_execptr + %"$$c1_7_1817" = call i8* @_fetch_field(i8* %"$execptr_load_1815", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1816", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1810", i32 1) + %"$$c1_7_1818" = bitcast i8* %"$$c1_7_1817" to %TName_Option_String* + store %TName_Option_String* %"$$c1_7_1818", %TName_Option_String** %"$c1_7" + %"$$c1_7_1819" = load %TName_Option_String*, %TName_Option_String** %"$c1_7" + %"$$$c1_7_1819_1820" = bitcast %TName_Option_String* %"$$c1_7_1819" to i8* + %"$_literal_cost_call_1821" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$$c1_7_1819_1820") + %"$gasadd_1822" = add i64 %"$_literal_cost_call_1821", 0 + %"$gasadd_1823" = add i64 %"$gasadd_1822", 2 + %"$gasrem_1824" = load i64, i64* @_gasrem + %"$gascmp_1825" = icmp ugt i64 %"$gasadd_1823", %"$gasrem_1824" + br i1 %"$gascmp_1825", label %"$out_of_gas_1826", label %"$have_gas_1827" + +"$out_of_gas_1826": ; preds = %"$have_gas_1807" + call void @_out_of_gas() + br label %"$have_gas_1827" + +"$have_gas_1827": ; preds = %"$out_of_gas_1826", %"$have_gas_1807" + %"$consume_1828" = sub i64 %"$gasrem_1824", %"$gasadd_1823" + store i64 %"$consume_1828", i64* @_gasrem + %"$gasrem_1829" = load i64, i64* @_gasrem + %"$gascmp_1830" = icmp ugt i64 2, %"$gasrem_1829" + br i1 %"$gascmp_1830", label %"$out_of_gas_1831", label %"$have_gas_1832" + +"$out_of_gas_1831": ; preds = %"$have_gas_1827" + call void @_out_of_gas() + br label %"$have_gas_1832" + +"$have_gas_1832": ; preds = %"$out_of_gas_1831", %"$have_gas_1827" + %"$consume_1833" = sub i64 %"$gasrem_1829", 2 + store i64 %"$consume_1833", i64* @_gasrem + %"$$c1_7_1835" = load %TName_Option_String*, %TName_Option_String** %"$c1_7" + %"$$c1_7_tag_1836" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_7_1835", i32 0, i32 0 + %"$$c1_7_tag_1837" = load i8, i8* %"$$c1_7_tag_1836" + switch i8 %"$$c1_7_tag_1837", label %"$empty_default_1838" [ + i8 0, label %"$Some_1839" + i8 1, label %"$None_1862" + ] -"$None_1846": ; preds = %"$have_gas_1816" - %"$$c1_7_1847" = bitcast %TName_Option_String* %"$$c1_7_1819" to %CName_None_String* - br label %"$matchsucc_1818" +"$Some_1839": ; preds = %"$have_gas_1832" + %"$$c1_7_1840" = bitcast %TName_Option_String* %"$$c1_7_1835" to %CName_Some_String* + %"$$$c1_7_13_gep_1841" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_7_1840", i32 0, i32 1 + %"$$$c1_7_13_load_1842" = load %String, %String* %"$$$c1_7_13_gep_1841" + %"$$c1_7_13" = alloca %String + store %String %"$$$c1_7_13_load_1842", %String* %"$$c1_7_13" + %"$gasrem_1843" = load i64, i64* @_gasrem + %"$gascmp_1844" = icmp ugt i64 1, %"$gasrem_1843" + br i1 %"$gascmp_1844", label %"$out_of_gas_1845", label %"$have_gas_1846" -"$empty_default_1822": ; preds = %"$have_gas_1816" - br label %"$matchsucc_1818" +"$out_of_gas_1845": ; preds = %"$Some_1839" + call void @_out_of_gas() + br label %"$have_gas_1846" -"$matchsucc_1818": ; preds = %"$None_1846", %"$have_gas_1841", %"$empty_default_1822" +"$have_gas_1846": ; preds = %"$out_of_gas_1845", %"$Some_1839" + %"$consume_1847" = sub i64 %"$gasrem_1843", 1 + store i64 %"$consume_1847", i64* @_gasrem + %m10 = alloca %String %"$gasrem_1848" = load i64, i64* @_gasrem %"$gascmp_1849" = icmp ugt i64 1, %"$gasrem_1848" br i1 %"$gascmp_1849", label %"$out_of_gas_1850", label %"$have_gas_1851" -"$out_of_gas_1850": ; preds = %"$matchsucc_1818" +"$out_of_gas_1850": ; preds = %"$have_gas_1846" call void @_out_of_gas() br label %"$have_gas_1851" -"$have_gas_1851": ; preds = %"$out_of_gas_1850", %"$matchsucc_1818" +"$have_gas_1851": ; preds = %"$out_of_gas_1850", %"$have_gas_1846" %"$consume_1852" = sub i64 %"$gasrem_1848", 1 store i64 %"$consume_1852", i64* @_gasrem - %"$key1b_8" = alloca %String - %"$gasrem_1853" = load i64, i64* @_gasrem - %"$gascmp_1854" = icmp ugt i64 1, %"$gasrem_1853" - br i1 %"$gascmp_1854", label %"$out_of_gas_1855", label %"$have_gas_1856" + store %String { i8* getelementptr inbounds ([42 x i8], [42 x i8]* @"$stringlit_1853", i32 0, i32 0), i32 42 }, %String* %m10 + %"$gasrem_1854" = load i64, i64* @_gasrem + %"$gascmp_1855" = icmp ugt i64 1, %"$gasrem_1854" + br i1 %"$gascmp_1855", label %"$out_of_gas_1856", label %"$have_gas_1857" -"$out_of_gas_1855": ; preds = %"$have_gas_1851" +"$out_of_gas_1856": ; preds = %"$have_gas_1851" call void @_out_of_gas() - br label %"$have_gas_1856" + br label %"$have_gas_1857" -"$have_gas_1856": ; preds = %"$out_of_gas_1855", %"$have_gas_1851" - %"$consume_1857" = sub i64 %"$gasrem_1853", 1 - store i64 %"$consume_1857", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1858", i32 0, i32 0), i32 5 }, %String* %"$key1b_8" - %"$gasrem_1859" = load i64, i64* @_gasrem - %"$gascmp_1860" = icmp ugt i64 1, %"$gasrem_1859" - br i1 %"$gascmp_1860", label %"$out_of_gas_1861", label %"$have_gas_1862" +"$have_gas_1857": ; preds = %"$out_of_gas_1856", %"$have_gas_1851" + %"$consume_1858" = sub i64 %"$gasrem_1854", 1 + store i64 %"$consume_1858", i64* @_gasrem + %"$fail_msg__sender_1859" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_1859" + %"$tname_1860" = load %String, %String* %tname + %"$m_1861" = load %String, %String* %m10 + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_1859", %String %"$tname_1860", %String %"$m_1861") + br label %"$matchsucc_1834" -"$out_of_gas_1861": ; preds = %"$have_gas_1856" - call void @_out_of_gas() - br label %"$have_gas_1862" +"$None_1862": ; preds = %"$have_gas_1832" + %"$$c1_7_1863" = bitcast %TName_Option_String* %"$$c1_7_1835" to %CName_None_String* + br label %"$matchsucc_1834" -"$have_gas_1862": ; preds = %"$out_of_gas_1861", %"$have_gas_1856" - %"$consume_1863" = sub i64 %"$gasrem_1859", 1 - store i64 %"$consume_1863", i64* @_gasrem - %key2c = alloca %String +"$empty_default_1838": ; preds = %"$have_gas_1832" + br label %"$matchsucc_1834" + +"$matchsucc_1834": ; preds = %"$None_1862", %"$have_gas_1857", %"$empty_default_1838" %"$gasrem_1864" = load i64, i64* @_gasrem %"$gascmp_1865" = icmp ugt i64 1, %"$gasrem_1864" br i1 %"$gascmp_1865", label %"$out_of_gas_1866", label %"$have_gas_1867" -"$out_of_gas_1866": ; preds = %"$have_gas_1862" +"$out_of_gas_1866": ; preds = %"$matchsucc_1834" call void @_out_of_gas() br label %"$have_gas_1867" -"$have_gas_1867": ; preds = %"$out_of_gas_1866", %"$have_gas_1862" +"$have_gas_1867": ; preds = %"$out_of_gas_1866", %"$matchsucc_1834" %"$consume_1868" = sub i64 %"$gasrem_1864", 1 store i64 %"$consume_1868", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1869", i32 0, i32 0), i32 5 }, %String* %key2c - %"$gasrem_1870" = load i64, i64* @_gasrem - %"$gascmp_1871" = icmp ugt i64 1, %"$gasrem_1870" - br i1 %"$gascmp_1871", label %"$out_of_gas_1872", label %"$have_gas_1873" + %"$key1b_8" = alloca %String + %"$gasrem_1869" = load i64, i64* @_gasrem + %"$gascmp_1870" = icmp ugt i64 1, %"$gasrem_1869" + br i1 %"$gascmp_1870", label %"$out_of_gas_1871", label %"$have_gas_1872" -"$out_of_gas_1872": ; preds = %"$have_gas_1867" +"$out_of_gas_1871": ; preds = %"$have_gas_1867" call void @_out_of_gas() - br label %"$have_gas_1873" + br label %"$have_gas_1872" -"$have_gas_1873": ; preds = %"$out_of_gas_1872", %"$have_gas_1867" - %"$consume_1874" = sub i64 %"$gasrem_1870", 1 - store i64 %"$consume_1874", i64* @_gasrem - %s = alloca %String +"$have_gas_1872": ; preds = %"$out_of_gas_1871", %"$have_gas_1867" + %"$consume_1873" = sub i64 %"$gasrem_1869", 1 + store i64 %"$consume_1873", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1874", i32 0, i32 0), i32 5 }, %String* %"$key1b_8" %"$gasrem_1875" = load i64, i64* @_gasrem %"$gascmp_1876" = icmp ugt i64 1, %"$gasrem_1875" br i1 %"$gascmp_1876", label %"$out_of_gas_1877", label %"$have_gas_1878" -"$out_of_gas_1877": ; preds = %"$have_gas_1873" +"$out_of_gas_1877": ; preds = %"$have_gas_1872" call void @_out_of_gas() br label %"$have_gas_1878" -"$have_gas_1878": ; preds = %"$out_of_gas_1877", %"$have_gas_1873" +"$have_gas_1878": ; preds = %"$out_of_gas_1877", %"$have_gas_1872" %"$consume_1879" = sub i64 %"$gasrem_1875", 1 store i64 %"$consume_1879", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1880", i32 0, i32 0), i32 3 }, %String* %s - %"$_literal_cost_s_1881" = alloca %String - %"$s_1882" = load %String, %String* %s - store %String %"$s_1882", %String* %"$_literal_cost_s_1881" - %"$$_literal_cost_s_1881_1883" = bitcast %String* %"$_literal_cost_s_1881" to i8* - %"$_literal_cost_call_1884" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_49", i8* %"$$_literal_cost_s_1881_1883") - %"$gasadd_1885" = add i64 %"$_literal_cost_call_1884", 2 + %key2c = alloca %String + %"$gasrem_1880" = load i64, i64* @_gasrem + %"$gascmp_1881" = icmp ugt i64 1, %"$gasrem_1880" + br i1 %"$gascmp_1881", label %"$out_of_gas_1882", label %"$have_gas_1883" + +"$out_of_gas_1882": ; preds = %"$have_gas_1878" + call void @_out_of_gas() + br label %"$have_gas_1883" + +"$have_gas_1883": ; preds = %"$out_of_gas_1882", %"$have_gas_1878" + %"$consume_1884" = sub i64 %"$gasrem_1880", 1 + store i64 %"$consume_1884", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1885", i32 0, i32 0), i32 5 }, %String* %key2c %"$gasrem_1886" = load i64, i64* @_gasrem - %"$gascmp_1887" = icmp ugt i64 %"$gasadd_1885", %"$gasrem_1886" + %"$gascmp_1887" = icmp ugt i64 1, %"$gasrem_1886" br i1 %"$gascmp_1887", label %"$out_of_gas_1888", label %"$have_gas_1889" -"$out_of_gas_1888": ; preds = %"$have_gas_1878" +"$out_of_gas_1888": ; preds = %"$have_gas_1883" call void @_out_of_gas() br label %"$have_gas_1889" -"$have_gas_1889": ; preds = %"$out_of_gas_1888", %"$have_gas_1878" - %"$consume_1890" = sub i64 %"$gasrem_1886", %"$gasadd_1885" +"$have_gas_1889": ; preds = %"$out_of_gas_1888", %"$have_gas_1883" + %"$consume_1890" = sub i64 %"$gasrem_1886", 1 store i64 %"$consume_1890", i64* @_gasrem - %"$indices_buf_1891_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1891_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1891_salloc_load", i64 32) - %"$indices_buf_1891_salloc" = bitcast i8* %"$indices_buf_1891_salloc_salloc" to [32 x i8]* - %"$indices_buf_1891" = bitcast [32 x i8]* %"$indices_buf_1891_salloc" to i8* - %"$$key1b_8_1892" = load %String, %String* %"$key1b_8" - %"$indices_gep_1893" = getelementptr i8, i8* %"$indices_buf_1891", i32 0 - %indices_cast11 = bitcast i8* %"$indices_gep_1893" to %String* - store %String %"$$key1b_8_1892", %String* %indices_cast11 - %"$key2c_1894" = load %String, %String* %key2c - %"$indices_gep_1895" = getelementptr i8, i8* %"$indices_buf_1891", i32 16 - %indices_cast12 = bitcast i8* %"$indices_gep_1895" to %String* - store %String %"$key2c_1894", %String* %indices_cast12 - %"$execptr_load_1896" = load i8*, i8** @_execptr + %s = alloca %String + %"$gasrem_1891" = load i64, i64* @_gasrem + %"$gascmp_1892" = icmp ugt i64 1, %"$gasrem_1891" + br i1 %"$gascmp_1892", label %"$out_of_gas_1893", label %"$have_gas_1894" + +"$out_of_gas_1893": ; preds = %"$have_gas_1889" + call void @_out_of_gas() + br label %"$have_gas_1894" + +"$have_gas_1894": ; preds = %"$out_of_gas_1893", %"$have_gas_1889" + %"$consume_1895" = sub i64 %"$gasrem_1891", 1 + store i64 %"$consume_1895", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1896", i32 0, i32 0), i32 3 }, %String* %s + %"$_literal_cost_s_1897" = alloca %String %"$s_1898" = load %String, %String* %s - %"$update_value_1899" = alloca %String - store %String %"$s_1898", %String* %"$update_value_1899" - %"$update_value_1900" = bitcast %String* %"$update_value_1899" to i8* - call void @_update_field(i8* %"$execptr_load_1896", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1897", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1891", i8* %"$update_value_1900") + store %String %"$s_1898", %String* %"$_literal_cost_s_1897" + %"$$_literal_cost_s_1897_1899" = bitcast %String* %"$_literal_cost_s_1897" to i8* + %"$_literal_cost_call_1900" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_49", i8* %"$$_literal_cost_s_1897_1899") + %"$gasadd_1901" = add i64 %"$_literal_cost_call_1900", 2 + %"$gasrem_1902" = load i64, i64* @_gasrem + %"$gascmp_1903" = icmp ugt i64 %"$gasadd_1901", %"$gasrem_1902" + br i1 %"$gascmp_1903", label %"$out_of_gas_1904", label %"$have_gas_1905" + +"$out_of_gas_1904": ; preds = %"$have_gas_1894" + call void @_out_of_gas() + br label %"$have_gas_1905" + +"$have_gas_1905": ; preds = %"$out_of_gas_1904", %"$have_gas_1894" + %"$consume_1906" = sub i64 %"$gasrem_1902", %"$gasadd_1901" + store i64 %"$consume_1906", i64* @_gasrem + %"$indices_buf_1907_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1907_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1907_salloc_load", i64 32) + %"$indices_buf_1907_salloc" = bitcast i8* %"$indices_buf_1907_salloc_salloc" to [32 x i8]* + %"$indices_buf_1907" = bitcast [32 x i8]* %"$indices_buf_1907_salloc" to i8* + %"$$key1b_8_1908" = load %String, %String* %"$key1b_8" + %"$indices_gep_1909" = getelementptr i8, i8* %"$indices_buf_1907", i32 0 + %indices_cast11 = bitcast i8* %"$indices_gep_1909" to %String* + store %String %"$$key1b_8_1908", %String* %indices_cast11 + %"$key2c_1910" = load %String, %String* %key2c + %"$indices_gep_1911" = getelementptr i8, i8* %"$indices_buf_1907", i32 16 + %indices_cast12 = bitcast i8* %"$indices_gep_1911" to %String* + store %String %"$key2c_1910", %String* %indices_cast12 + %"$execptr_load_1912" = load i8*, i8** @_execptr + %"$s_1914" = load %String, %String* %s + %"$update_value_1915" = alloca %String + store %String %"$s_1914", %String* %"$update_value_1915" + %"$update_value_1916" = bitcast %String* %"$update_value_1915" to i8* + call void @_update_field(i8* %"$execptr_load_1912", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1913", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1907", i8* %"$update_value_1916") ret void } define void @t7(i8* %0) { entry: - %"$_amount_1902" = getelementptr i8, i8* %0, i32 0 - %"$_amount_1903" = bitcast i8* %"$_amount_1902" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_1903" - %"$_sender_1904" = getelementptr i8, i8* %0, i32 16 - %"$_sender_1905" = bitcast i8* %"$_sender_1904" to [20 x i8]* - call void @"$t7_1491"(%Uint128 %_amount, [20 x i8]* %"$_sender_1905") + %"$_amount_1918" = getelementptr i8, i8* %0, i32 0 + %"$_amount_1919" = bitcast i8* %"$_amount_1918" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_1919" + %"$_sender_1920" = getelementptr i8, i8* %0, i32 16 + %"$_sender_1921" = bitcast i8* %"$_sender_1920" to [20 x i8]* + call void @"$t7_1507"(%Uint128 %_amount, [20 x i8]* %"$_sender_1921") ret void } -define internal void @"$t8_1906"(%Uint128 %_amount, [20 x i8]* %"$_sender_1907") { +define internal void @"$t8_1922"(%Uint128 %_amount, [20 x i8]* %"$_sender_1923") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_1907" - %"$gasrem_1908" = load i64, i64* @_gasrem - %"$gascmp_1909" = icmp ugt i64 1, %"$gasrem_1908" - br i1 %"$gascmp_1909", label %"$out_of_gas_1910", label %"$have_gas_1911" - -"$out_of_gas_1910": ; preds = %entry - call void @_out_of_gas() - br label %"$have_gas_1911" - -"$have_gas_1911": ; preds = %"$out_of_gas_1910", %entry - %"$consume_1912" = sub i64 %"$gasrem_1908", 1 - store i64 %"$consume_1912", i64* @_gasrem - %tname = alloca %String - %"$gasrem_1913" = load i64, i64* @_gasrem - %"$gascmp_1914" = icmp ugt i64 1, %"$gasrem_1913" - br i1 %"$gascmp_1914", label %"$out_of_gas_1915", label %"$have_gas_1916" - -"$out_of_gas_1915": ; preds = %"$have_gas_1911" - call void @_out_of_gas() - br label %"$have_gas_1916" - -"$have_gas_1916": ; preds = %"$out_of_gas_1915", %"$have_gas_1911" - %"$consume_1917" = sub i64 %"$gasrem_1913", 1 - store i64 %"$consume_1917", i64* @_gasrem - store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_1918", i32 0, i32 0), i32 2 }, %String* %tname - %"$gasrem_1919" = load i64, i64* @_gasrem - %"$gascmp_1920" = icmp ugt i64 1, %"$gasrem_1919" - br i1 %"$gascmp_1920", label %"$out_of_gas_1921", label %"$have_gas_1922" - -"$out_of_gas_1921": ; preds = %"$have_gas_1916" - call void @_out_of_gas() - br label %"$have_gas_1922" - -"$have_gas_1922": ; preds = %"$out_of_gas_1921", %"$have_gas_1916" - %"$consume_1923" = sub i64 %"$gasrem_1919", 1 - store i64 %"$consume_1923", i64* @_gasrem - %key1a = alloca %String + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1923" %"$gasrem_1924" = load i64, i64* @_gasrem %"$gascmp_1925" = icmp ugt i64 1, %"$gasrem_1924" br i1 %"$gascmp_1925", label %"$out_of_gas_1926", label %"$have_gas_1927" -"$out_of_gas_1926": ; preds = %"$have_gas_1922" +"$out_of_gas_1926": ; preds = %entry call void @_out_of_gas() br label %"$have_gas_1927" -"$have_gas_1927": ; preds = %"$out_of_gas_1926", %"$have_gas_1922" +"$have_gas_1927": ; preds = %"$out_of_gas_1926", %entry %"$consume_1928" = sub i64 %"$gasrem_1924", 1 store i64 %"$consume_1928", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1929", i32 0, i32 0), i32 5 }, %String* %key1a - %"$gasrem_1930" = load i64, i64* @_gasrem - %"$gascmp_1931" = icmp ugt i64 1, %"$gasrem_1930" - br i1 %"$gascmp_1931", label %"$out_of_gas_1932", label %"$have_gas_1933" + %tname = alloca %String + %"$gasrem_1929" = load i64, i64* @_gasrem + %"$gascmp_1930" = icmp ugt i64 1, %"$gasrem_1929" + br i1 %"$gascmp_1930", label %"$out_of_gas_1931", label %"$have_gas_1932" -"$out_of_gas_1932": ; preds = %"$have_gas_1927" +"$out_of_gas_1931": ; preds = %"$have_gas_1927" call void @_out_of_gas() - br label %"$have_gas_1933" + br label %"$have_gas_1932" -"$have_gas_1933": ; preds = %"$out_of_gas_1932", %"$have_gas_1927" - %"$consume_1934" = sub i64 %"$gasrem_1930", 1 - store i64 %"$consume_1934", i64* @_gasrem - %key2a = alloca %String +"$have_gas_1932": ; preds = %"$out_of_gas_1931", %"$have_gas_1927" + %"$consume_1933" = sub i64 %"$gasrem_1929", 1 + store i64 %"$consume_1933", i64* @_gasrem + store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_1934", i32 0, i32 0), i32 2 }, %String* %tname %"$gasrem_1935" = load i64, i64* @_gasrem %"$gascmp_1936" = icmp ugt i64 1, %"$gasrem_1935" br i1 %"$gascmp_1936", label %"$out_of_gas_1937", label %"$have_gas_1938" -"$out_of_gas_1937": ; preds = %"$have_gas_1933" +"$out_of_gas_1937": ; preds = %"$have_gas_1932" call void @_out_of_gas() br label %"$have_gas_1938" -"$have_gas_1938": ; preds = %"$out_of_gas_1937", %"$have_gas_1933" +"$have_gas_1938": ; preds = %"$out_of_gas_1937", %"$have_gas_1932" %"$consume_1939" = sub i64 %"$gasrem_1935", 1 store i64 %"$consume_1939", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1940", i32 0, i32 0), i32 5 }, %String* %key2a + %key1a = alloca %String + %"$gasrem_1940" = load i64, i64* @_gasrem + %"$gascmp_1941" = icmp ugt i64 1, %"$gasrem_1940" + br i1 %"$gascmp_1941", label %"$out_of_gas_1942", label %"$have_gas_1943" + +"$out_of_gas_1942": ; preds = %"$have_gas_1938" + call void @_out_of_gas() + br label %"$have_gas_1943" + +"$have_gas_1943": ; preds = %"$out_of_gas_1942", %"$have_gas_1938" + %"$consume_1944" = sub i64 %"$gasrem_1940", 1 + store i64 %"$consume_1944", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1945", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_1946" = load i64, i64* @_gasrem + %"$gascmp_1947" = icmp ugt i64 1, %"$gasrem_1946" + br i1 %"$gascmp_1947", label %"$out_of_gas_1948", label %"$have_gas_1949" + +"$out_of_gas_1948": ; preds = %"$have_gas_1943" + call void @_out_of_gas() + br label %"$have_gas_1949" + +"$have_gas_1949": ; preds = %"$out_of_gas_1948", %"$have_gas_1943" + %"$consume_1950" = sub i64 %"$gasrem_1946", 1 + store i64 %"$consume_1950", i64* @_gasrem + %key2a = alloca %String + %"$gasrem_1951" = load i64, i64* @_gasrem + %"$gascmp_1952" = icmp ugt i64 1, %"$gasrem_1951" + br i1 %"$gascmp_1952", label %"$out_of_gas_1953", label %"$have_gas_1954" + +"$out_of_gas_1953": ; preds = %"$have_gas_1949" + call void @_out_of_gas() + br label %"$have_gas_1954" + +"$have_gas_1954": ; preds = %"$out_of_gas_1953", %"$have_gas_1949" + %"$consume_1955" = sub i64 %"$gasrem_1951", 1 + store i64 %"$consume_1955", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_1956", i32 0, i32 0), i32 5 }, %String* %key2a %c1 = alloca %TName_Option_String* - %"$indices_buf_1941_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_1941_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1941_salloc_load", i64 32) - %"$indices_buf_1941_salloc" = bitcast i8* %"$indices_buf_1941_salloc_salloc" to [32 x i8]* - %"$indices_buf_1941" = bitcast [32 x i8]* %"$indices_buf_1941_salloc" to i8* - %"$key1a_1942" = load %String, %String* %key1a - %"$indices_gep_1943" = getelementptr i8, i8* %"$indices_buf_1941", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_1943" to %String* - store %String %"$key1a_1942", %String* %indices_cast - %"$key2a_1944" = load %String, %String* %key2a - %"$indices_gep_1945" = getelementptr i8, i8* %"$indices_buf_1941", i32 16 - %indices_cast1 = bitcast i8* %"$indices_gep_1945" to %String* - store %String %"$key2a_1944", %String* %indices_cast1 - %"$execptr_load_1946" = load i8*, i8** @_execptr - %"$c1_1948" = call i8* @_fetch_field(i8* %"$execptr_load_1946", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1947", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1941", i32 1) - %"$c1_1949" = bitcast i8* %"$c1_1948" to %TName_Option_String* - store %TName_Option_String* %"$c1_1949", %TName_Option_String** %c1 - %"$c1_1950" = load %TName_Option_String*, %TName_Option_String** %c1 - %"$$c1_1950_1951" = bitcast %TName_Option_String* %"$c1_1950" to i8* - %"$_literal_cost_call_1952" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$c1_1950_1951") - %"$gasadd_1953" = add i64 %"$_literal_cost_call_1952", 0 - %"$gasadd_1954" = add i64 %"$gasadd_1953", 2 - %"$gasrem_1955" = load i64, i64* @_gasrem - %"$gascmp_1956" = icmp ugt i64 %"$gasadd_1954", %"$gasrem_1955" - br i1 %"$gascmp_1956", label %"$out_of_gas_1957", label %"$have_gas_1958" - -"$out_of_gas_1957": ; preds = %"$have_gas_1938" - call void @_out_of_gas() - br label %"$have_gas_1958" - -"$have_gas_1958": ; preds = %"$out_of_gas_1957", %"$have_gas_1938" - %"$consume_1959" = sub i64 %"$gasrem_1955", %"$gasadd_1954" - store i64 %"$consume_1959", i64* @_gasrem - %"$gasrem_1960" = load i64, i64* @_gasrem - %"$gascmp_1961" = icmp ugt i64 2, %"$gasrem_1960" - br i1 %"$gascmp_1961", label %"$out_of_gas_1962", label %"$have_gas_1963" - -"$out_of_gas_1962": ; preds = %"$have_gas_1958" - call void @_out_of_gas() - br label %"$have_gas_1963" - -"$have_gas_1963": ; preds = %"$out_of_gas_1962", %"$have_gas_1958" - %"$consume_1964" = sub i64 %"$gasrem_1960", 2 - store i64 %"$consume_1964", i64* @_gasrem + %"$indices_buf_1957_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_1957_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_1957_salloc_load", i64 32) + %"$indices_buf_1957_salloc" = bitcast i8* %"$indices_buf_1957_salloc_salloc" to [32 x i8]* + %"$indices_buf_1957" = bitcast [32 x i8]* %"$indices_buf_1957_salloc" to i8* + %"$key1a_1958" = load %String, %String* %key1a + %"$indices_gep_1959" = getelementptr i8, i8* %"$indices_buf_1957", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_1959" to %String* + store %String %"$key1a_1958", %String* %indices_cast + %"$key2a_1960" = load %String, %String* %key2a + %"$indices_gep_1961" = getelementptr i8, i8* %"$indices_buf_1957", i32 16 + %indices_cast1 = bitcast i8* %"$indices_gep_1961" to %String* + store %String %"$key2a_1960", %String* %indices_cast1 + %"$execptr_load_1962" = load i8*, i8** @_execptr + %"$c1_1964" = call i8* @_fetch_field(i8* %"$execptr_load_1962", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_1963", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_1957", i32 1) + %"$c1_1965" = bitcast i8* %"$c1_1964" to %TName_Option_String* + store %TName_Option_String* %"$c1_1965", %TName_Option_String** %c1 %"$c1_1966" = load %TName_Option_String*, %TName_Option_String** %c1 - %"$c1_tag_1967" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$c1_1966", i32 0, i32 0 - %"$c1_tag_1968" = load i8, i8* %"$c1_tag_1967" - switch i8 %"$c1_tag_1968", label %"$empty_default_1969" [ - i8 0, label %"$Some_1970" - i8 1, label %"$None_2027" + %"$$c1_1966_1967" = bitcast %TName_Option_String* %"$c1_1966" to i8* + %"$_literal_cost_call_1968" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$c1_1966_1967") + %"$gasadd_1969" = add i64 %"$_literal_cost_call_1968", 0 + %"$gasadd_1970" = add i64 %"$gasadd_1969", 2 + %"$gasrem_1971" = load i64, i64* @_gasrem + %"$gascmp_1972" = icmp ugt i64 %"$gasadd_1970", %"$gasrem_1971" + br i1 %"$gascmp_1972", label %"$out_of_gas_1973", label %"$have_gas_1974" + +"$out_of_gas_1973": ; preds = %"$have_gas_1954" + call void @_out_of_gas() + br label %"$have_gas_1974" + +"$have_gas_1974": ; preds = %"$out_of_gas_1973", %"$have_gas_1954" + %"$consume_1975" = sub i64 %"$gasrem_1971", %"$gasadd_1970" + store i64 %"$consume_1975", i64* @_gasrem + %"$gasrem_1976" = load i64, i64* @_gasrem + %"$gascmp_1977" = icmp ugt i64 2, %"$gasrem_1976" + br i1 %"$gascmp_1977", label %"$out_of_gas_1978", label %"$have_gas_1979" + +"$out_of_gas_1978": ; preds = %"$have_gas_1974" + call void @_out_of_gas() + br label %"$have_gas_1979" + +"$have_gas_1979": ; preds = %"$out_of_gas_1978", %"$have_gas_1974" + %"$consume_1980" = sub i64 %"$gasrem_1976", 2 + store i64 %"$consume_1980", i64* @_gasrem + %"$c1_1982" = load %TName_Option_String*, %TName_Option_String** %c1 + %"$c1_tag_1983" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$c1_1982", i32 0, i32 0 + %"$c1_tag_1984" = load i8, i8* %"$c1_tag_1983" + switch i8 %"$c1_tag_1984", label %"$empty_default_1985" [ + i8 0, label %"$Some_1986" + i8 1, label %"$None_2043" ] -"$Some_1970": ; preds = %"$have_gas_1963" - %"$c1_1971" = bitcast %TName_Option_String* %"$c1_1966" to %CName_Some_String* - %"$c_gep_1972" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$c1_1971", i32 0, i32 1 - %"$c_load_1973" = load %String, %String* %"$c_gep_1972" +"$Some_1986": ; preds = %"$have_gas_1979" + %"$c1_1987" = bitcast %TName_Option_String* %"$c1_1982" to %CName_Some_String* + %"$c_gep_1988" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$c1_1987", i32 0, i32 1 + %"$c_load_1989" = load %String, %String* %"$c_gep_1988" %c = alloca %String - store %String %"$c_load_1973", %String* %c - %"$gasrem_1974" = load i64, i64* @_gasrem - %"$gascmp_1975" = icmp ugt i64 1, %"$gasrem_1974" - br i1 %"$gascmp_1975", label %"$out_of_gas_1976", label %"$have_gas_1977" + store %String %"$c_load_1989", %String* %c + %"$gasrem_1990" = load i64, i64* @_gasrem + %"$gascmp_1991" = icmp ugt i64 1, %"$gasrem_1990" + br i1 %"$gascmp_1991", label %"$out_of_gas_1992", label %"$have_gas_1993" -"$out_of_gas_1976": ; preds = %"$Some_1970" +"$out_of_gas_1992": ; preds = %"$Some_1986" call void @_out_of_gas() - br label %"$have_gas_1977" + br label %"$have_gas_1993" -"$have_gas_1977": ; preds = %"$out_of_gas_1976", %"$Some_1970" - %"$consume_1978" = sub i64 %"$gasrem_1974", 1 - store i64 %"$consume_1978", i64* @_gasrem +"$have_gas_1993": ; preds = %"$out_of_gas_1992", %"$Some_1986" + %"$consume_1994" = sub i64 %"$gasrem_1990", 1 + store i64 %"$consume_1994", i64* @_gasrem %v = alloca %String - %"$gasrem_1979" = load i64, i64* @_gasrem - %"$gascmp_1980" = icmp ugt i64 1, %"$gasrem_1979" - br i1 %"$gascmp_1980", label %"$out_of_gas_1981", label %"$have_gas_1982" + %"$gasrem_1995" = load i64, i64* @_gasrem + %"$gascmp_1996" = icmp ugt i64 1, %"$gasrem_1995" + br i1 %"$gascmp_1996", label %"$out_of_gas_1997", label %"$have_gas_1998" -"$out_of_gas_1981": ; preds = %"$have_gas_1977" +"$out_of_gas_1997": ; preds = %"$have_gas_1993" call void @_out_of_gas() - br label %"$have_gas_1982" + br label %"$have_gas_1998" -"$have_gas_1982": ; preds = %"$out_of_gas_1981", %"$have_gas_1977" - %"$consume_1983" = sub i64 %"$gasrem_1979", 1 - store i64 %"$consume_1983", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_1984", i32 0, i32 0), i32 3 }, %String* %v - %"$gasrem_1985" = load i64, i64* @_gasrem - %"$gascmp_1986" = icmp ugt i64 1, %"$gasrem_1985" - br i1 %"$gascmp_1986", label %"$out_of_gas_1987", label %"$have_gas_1988" +"$have_gas_1998": ; preds = %"$out_of_gas_1997", %"$have_gas_1993" + %"$consume_1999" = sub i64 %"$gasrem_1995", 1 + store i64 %"$consume_1999", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2000", i32 0, i32 0), i32 3 }, %String* %v + %"$gasrem_2001" = load i64, i64* @_gasrem + %"$gascmp_2002" = icmp ugt i64 1, %"$gasrem_2001" + br i1 %"$gascmp_2002", label %"$out_of_gas_2003", label %"$have_gas_2004" -"$out_of_gas_1987": ; preds = %"$have_gas_1982" +"$out_of_gas_2003": ; preds = %"$have_gas_1998" call void @_out_of_gas() - br label %"$have_gas_1988" + br label %"$have_gas_2004" -"$have_gas_1988": ; preds = %"$out_of_gas_1987", %"$have_gas_1982" - %"$consume_1989" = sub i64 %"$gasrem_1985", 1 - store i64 %"$consume_1989", i64* @_gasrem +"$have_gas_2004": ; preds = %"$out_of_gas_2003", %"$have_gas_1998" + %"$consume_2005" = sub i64 %"$gasrem_2001", 1 + store i64 %"$consume_2005", i64* @_gasrem %eq = alloca %TName_Bool* - %"$execptr_load_1990" = load i8*, i8** @_execptr - %"$c_1991" = load %String, %String* %c - %"$v_1992" = load %String, %String* %v - %"$eq_call_1993" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_1990", %String %"$c_1991", %String %"$v_1992") - store %TName_Bool* %"$eq_call_1993", %TName_Bool** %eq - %"$gasrem_1994" = load i64, i64* @_gasrem - %"$gascmp_1995" = icmp ugt i64 2, %"$gasrem_1994" - br i1 %"$gascmp_1995", label %"$out_of_gas_1996", label %"$have_gas_1997" - -"$out_of_gas_1996": ; preds = %"$have_gas_1988" - call void @_out_of_gas() - br label %"$have_gas_1997" - -"$have_gas_1997": ; preds = %"$out_of_gas_1996", %"$have_gas_1988" - %"$consume_1998" = sub i64 %"$gasrem_1994", 2 - store i64 %"$consume_1998", i64* @_gasrem - %"$eq_2000" = load %TName_Bool*, %TName_Bool** %eq - %"$eq_tag_2001" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_2000", i32 0, i32 0 - %"$eq_tag_2002" = load i8, i8* %"$eq_tag_2001" - switch i8 %"$eq_tag_2002", label %"$empty_default_2003" [ - i8 0, label %"$True_2004" - i8 1, label %"$False_2006" + %"$execptr_load_2006" = load i8*, i8** @_execptr + %"$c_2007" = load %String, %String* %c + %"$v_2008" = load %String, %String* %v + %"$eq_call_2009" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_2006", %String %"$c_2007", %String %"$v_2008") + store %TName_Bool* %"$eq_call_2009", %TName_Bool** %eq + %"$gasrem_2010" = load i64, i64* @_gasrem + %"$gascmp_2011" = icmp ugt i64 2, %"$gasrem_2010" + br i1 %"$gascmp_2011", label %"$out_of_gas_2012", label %"$have_gas_2013" + +"$out_of_gas_2012": ; preds = %"$have_gas_2004" + call void @_out_of_gas() + br label %"$have_gas_2013" + +"$have_gas_2013": ; preds = %"$out_of_gas_2012", %"$have_gas_2004" + %"$consume_2014" = sub i64 %"$gasrem_2010", 2 + store i64 %"$consume_2014", i64* @_gasrem + %"$eq_2016" = load %TName_Bool*, %TName_Bool** %eq + %"$eq_tag_2017" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_2016", i32 0, i32 0 + %"$eq_tag_2018" = load i8, i8* %"$eq_tag_2017" + switch i8 %"$eq_tag_2018", label %"$empty_default_2019" [ + i8 0, label %"$True_2020" + i8 1, label %"$False_2022" ] -"$True_2004": ; preds = %"$have_gas_1997" - %"$eq_2005" = bitcast %TName_Bool* %"$eq_2000" to %CName_True* - br label %"$matchsucc_1999" +"$True_2020": ; preds = %"$have_gas_2013" + %"$eq_2021" = bitcast %TName_Bool* %"$eq_2016" to %CName_True* + br label %"$matchsucc_2015" -"$False_2006": ; preds = %"$have_gas_1997" - %"$eq_2007" = bitcast %TName_Bool* %"$eq_2000" to %CName_False* - %"$gasrem_2008" = load i64, i64* @_gasrem - %"$gascmp_2009" = icmp ugt i64 1, %"$gasrem_2008" - br i1 %"$gascmp_2009", label %"$out_of_gas_2010", label %"$have_gas_2011" +"$False_2022": ; preds = %"$have_gas_2013" + %"$eq_2023" = bitcast %TName_Bool* %"$eq_2016" to %CName_False* + %"$gasrem_2024" = load i64, i64* @_gasrem + %"$gascmp_2025" = icmp ugt i64 1, %"$gasrem_2024" + br i1 %"$gascmp_2025", label %"$out_of_gas_2026", label %"$have_gas_2027" -"$out_of_gas_2010": ; preds = %"$False_2006" +"$out_of_gas_2026": ; preds = %"$False_2022" call void @_out_of_gas() - br label %"$have_gas_2011" + br label %"$have_gas_2027" -"$have_gas_2011": ; preds = %"$out_of_gas_2010", %"$False_2006" - %"$consume_2012" = sub i64 %"$gasrem_2008", 1 - store i64 %"$consume_2012", i64* @_gasrem +"$have_gas_2027": ; preds = %"$out_of_gas_2026", %"$False_2022" + %"$consume_2028" = sub i64 %"$gasrem_2024", 1 + store i64 %"$consume_2028", i64* @_gasrem %m = alloca %String - %"$gasrem_2013" = load i64, i64* @_gasrem - %"$gascmp_2014" = icmp ugt i64 1, %"$gasrem_2013" - br i1 %"$gascmp_2014", label %"$out_of_gas_2015", label %"$have_gas_2016" + %"$gasrem_2029" = load i64, i64* @_gasrem + %"$gascmp_2030" = icmp ugt i64 1, %"$gasrem_2029" + br i1 %"$gascmp_2030", label %"$out_of_gas_2031", label %"$have_gas_2032" -"$out_of_gas_2015": ; preds = %"$have_gas_2011" +"$out_of_gas_2031": ; preds = %"$have_gas_2027" call void @_out_of_gas() - br label %"$have_gas_2016" + br label %"$have_gas_2032" -"$have_gas_2016": ; preds = %"$out_of_gas_2015", %"$have_gas_2011" - %"$consume_2017" = sub i64 %"$gasrem_2013", 1 - store i64 %"$consume_2017", i64* @_gasrem - store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_2018", i32 0, i32 0), i32 31 }, %String* %m - %"$gasrem_2019" = load i64, i64* @_gasrem - %"$gascmp_2020" = icmp ugt i64 1, %"$gasrem_2019" - br i1 %"$gascmp_2020", label %"$out_of_gas_2021", label %"$have_gas_2022" +"$have_gas_2032": ; preds = %"$out_of_gas_2031", %"$have_gas_2027" + %"$consume_2033" = sub i64 %"$gasrem_2029", 1 + store i64 %"$consume_2033", i64* @_gasrem + store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_2034", i32 0, i32 0), i32 31 }, %String* %m + %"$gasrem_2035" = load i64, i64* @_gasrem + %"$gascmp_2036" = icmp ugt i64 1, %"$gasrem_2035" + br i1 %"$gascmp_2036", label %"$out_of_gas_2037", label %"$have_gas_2038" -"$out_of_gas_2021": ; preds = %"$have_gas_2016" +"$out_of_gas_2037": ; preds = %"$have_gas_2032" call void @_out_of_gas() - br label %"$have_gas_2022" + br label %"$have_gas_2038" -"$have_gas_2022": ; preds = %"$out_of_gas_2021", %"$have_gas_2016" - %"$consume_2023" = sub i64 %"$gasrem_2019", 1 - store i64 %"$consume_2023", i64* @_gasrem - %"$fail_msg__sender_2024" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2024" - %"$tname_2025" = load %String, %String* %tname - %"$m_2026" = load %String, %String* %m - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2024", %String %"$tname_2025", %String %"$m_2026") - br label %"$matchsucc_1999" +"$have_gas_2038": ; preds = %"$out_of_gas_2037", %"$have_gas_2032" + %"$consume_2039" = sub i64 %"$gasrem_2035", 1 + store i64 %"$consume_2039", i64* @_gasrem + %"$fail_msg__sender_2040" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2040" + %"$tname_2041" = load %String, %String* %tname + %"$m_2042" = load %String, %String* %m + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2040", %String %"$tname_2041", %String %"$m_2042") + br label %"$matchsucc_2015" -"$empty_default_2003": ; preds = %"$have_gas_1997" - br label %"$matchsucc_1999" +"$empty_default_2019": ; preds = %"$have_gas_2013" + br label %"$matchsucc_2015" -"$matchsucc_1999": ; preds = %"$have_gas_2022", %"$True_2004", %"$empty_default_2003" - br label %"$matchsucc_1965" +"$matchsucc_2015": ; preds = %"$have_gas_2038", %"$True_2020", %"$empty_default_2019" + br label %"$matchsucc_1981" -"$None_2027": ; preds = %"$have_gas_1963" - %"$c1_2028" = bitcast %TName_Option_String* %"$c1_1966" to %CName_None_String* - %"$gasrem_2029" = load i64, i64* @_gasrem - %"$gascmp_2030" = icmp ugt i64 1, %"$gasrem_2029" - br i1 %"$gascmp_2030", label %"$out_of_gas_2031", label %"$have_gas_2032" +"$None_2043": ; preds = %"$have_gas_1979" + %"$c1_2044" = bitcast %TName_Option_String* %"$c1_1982" to %CName_None_String* + %"$gasrem_2045" = load i64, i64* @_gasrem + %"$gascmp_2046" = icmp ugt i64 1, %"$gasrem_2045" + br i1 %"$gascmp_2046", label %"$out_of_gas_2047", label %"$have_gas_2048" -"$out_of_gas_2031": ; preds = %"$None_2027" +"$out_of_gas_2047": ; preds = %"$None_2043" call void @_out_of_gas() - br label %"$have_gas_2032" + br label %"$have_gas_2048" -"$have_gas_2032": ; preds = %"$out_of_gas_2031", %"$None_2027" - %"$consume_2033" = sub i64 %"$gasrem_2029", 1 - store i64 %"$consume_2033", i64* @_gasrem +"$have_gas_2048": ; preds = %"$out_of_gas_2047", %"$None_2043" + %"$consume_2049" = sub i64 %"$gasrem_2045", 1 + store i64 %"$consume_2049", i64* @_gasrem %m2 = alloca %String - %"$gasrem_2034" = load i64, i64* @_gasrem - %"$gascmp_2035" = icmp ugt i64 1, %"$gasrem_2034" - br i1 %"$gascmp_2035", label %"$out_of_gas_2036", label %"$have_gas_2037" + %"$gasrem_2050" = load i64, i64* @_gasrem + %"$gascmp_2051" = icmp ugt i64 1, %"$gasrem_2050" + br i1 %"$gascmp_2051", label %"$out_of_gas_2052", label %"$have_gas_2053" -"$out_of_gas_2036": ; preds = %"$have_gas_2032" +"$out_of_gas_2052": ; preds = %"$have_gas_2048" call void @_out_of_gas() - br label %"$have_gas_2037" + br label %"$have_gas_2053" -"$have_gas_2037": ; preds = %"$out_of_gas_2036", %"$have_gas_2032" - %"$consume_2038" = sub i64 %"$gasrem_2034", 1 - store i64 %"$consume_2038", i64* @_gasrem - store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_2039", i32 0, i32 0), i32 21 }, %String* %m2 - %"$gasrem_2040" = load i64, i64* @_gasrem - %"$gascmp_2041" = icmp ugt i64 1, %"$gasrem_2040" - br i1 %"$gascmp_2041", label %"$out_of_gas_2042", label %"$have_gas_2043" +"$have_gas_2053": ; preds = %"$out_of_gas_2052", %"$have_gas_2048" + %"$consume_2054" = sub i64 %"$gasrem_2050", 1 + store i64 %"$consume_2054", i64* @_gasrem + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_2055", i32 0, i32 0), i32 21 }, %String* %m2 + %"$gasrem_2056" = load i64, i64* @_gasrem + %"$gascmp_2057" = icmp ugt i64 1, %"$gasrem_2056" + br i1 %"$gascmp_2057", label %"$out_of_gas_2058", label %"$have_gas_2059" -"$out_of_gas_2042": ; preds = %"$have_gas_2037" +"$out_of_gas_2058": ; preds = %"$have_gas_2053" call void @_out_of_gas() - br label %"$have_gas_2043" + br label %"$have_gas_2059" -"$have_gas_2043": ; preds = %"$out_of_gas_2042", %"$have_gas_2037" - %"$consume_2044" = sub i64 %"$gasrem_2040", 1 - store i64 %"$consume_2044", i64* @_gasrem - %"$fail_msg__sender_2045" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2045" - %"$tname_2046" = load %String, %String* %tname - %"$m_2047" = load %String, %String* %m2 - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2045", %String %"$tname_2046", %String %"$m_2047") - br label %"$matchsucc_1965" +"$have_gas_2059": ; preds = %"$out_of_gas_2058", %"$have_gas_2053" + %"$consume_2060" = sub i64 %"$gasrem_2056", 1 + store i64 %"$consume_2060", i64* @_gasrem + %"$fail_msg__sender_2061" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2061" + %"$tname_2062" = load %String, %String* %tname + %"$m_2063" = load %String, %String* %m2 + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2061", %String %"$tname_2062", %String %"$m_2063") + br label %"$matchsucc_1981" -"$empty_default_1969": ; preds = %"$have_gas_1963" - br label %"$matchsucc_1965" +"$empty_default_1985": ; preds = %"$have_gas_1979" + br label %"$matchsucc_1981" -"$matchsucc_1965": ; preds = %"$have_gas_2043", %"$matchsucc_1999", %"$empty_default_1969" - %"$gasrem_2048" = load i64, i64* @_gasrem - %"$gascmp_2049" = icmp ugt i64 1, %"$gasrem_2048" - br i1 %"$gascmp_2049", label %"$out_of_gas_2050", label %"$have_gas_2051" +"$matchsucc_1981": ; preds = %"$have_gas_2059", %"$matchsucc_2015", %"$empty_default_1985" + %"$gasrem_2064" = load i64, i64* @_gasrem + %"$gascmp_2065" = icmp ugt i64 1, %"$gasrem_2064" + br i1 %"$gascmp_2065", label %"$out_of_gas_2066", label %"$have_gas_2067" -"$out_of_gas_2050": ; preds = %"$matchsucc_1965" +"$out_of_gas_2066": ; preds = %"$matchsucc_1981" call void @_out_of_gas() - br label %"$have_gas_2051" + br label %"$have_gas_2067" -"$have_gas_2051": ; preds = %"$out_of_gas_2050", %"$matchsucc_1965" - %"$consume_2052" = sub i64 %"$gasrem_2048", 1 - store i64 %"$consume_2052", i64* @_gasrem +"$have_gas_2067": ; preds = %"$out_of_gas_2066", %"$matchsucc_1981" + %"$consume_2068" = sub i64 %"$gasrem_2064", 1 + store i64 %"$consume_2068", i64* @_gasrem %key1b = alloca %String - %"$gasrem_2053" = load i64, i64* @_gasrem - %"$gascmp_2054" = icmp ugt i64 1, %"$gasrem_2053" - br i1 %"$gascmp_2054", label %"$out_of_gas_2055", label %"$have_gas_2056" + %"$gasrem_2069" = load i64, i64* @_gasrem + %"$gascmp_2070" = icmp ugt i64 1, %"$gasrem_2069" + br i1 %"$gascmp_2070", label %"$out_of_gas_2071", label %"$have_gas_2072" -"$out_of_gas_2055": ; preds = %"$have_gas_2051" +"$out_of_gas_2071": ; preds = %"$have_gas_2067" call void @_out_of_gas() - br label %"$have_gas_2056" + br label %"$have_gas_2072" -"$have_gas_2056": ; preds = %"$out_of_gas_2055", %"$have_gas_2051" - %"$consume_2057" = sub i64 %"$gasrem_2053", 1 - store i64 %"$consume_2057", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2058", i32 0, i32 0), i32 5 }, %String* %key1b - %"$gasrem_2059" = load i64, i64* @_gasrem - %"$gascmp_2060" = icmp ugt i64 1, %"$gasrem_2059" - br i1 %"$gascmp_2060", label %"$out_of_gas_2061", label %"$have_gas_2062" +"$have_gas_2072": ; preds = %"$out_of_gas_2071", %"$have_gas_2067" + %"$consume_2073" = sub i64 %"$gasrem_2069", 1 + store i64 %"$consume_2073", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2074", i32 0, i32 0), i32 5 }, %String* %key1b + %"$gasrem_2075" = load i64, i64* @_gasrem + %"$gascmp_2076" = icmp ugt i64 1, %"$gasrem_2075" + br i1 %"$gascmp_2076", label %"$out_of_gas_2077", label %"$have_gas_2078" -"$out_of_gas_2061": ; preds = %"$have_gas_2056" +"$out_of_gas_2077": ; preds = %"$have_gas_2072" call void @_out_of_gas() - br label %"$have_gas_2062" + br label %"$have_gas_2078" -"$have_gas_2062": ; preds = %"$out_of_gas_2061", %"$have_gas_2056" - %"$consume_2063" = sub i64 %"$gasrem_2059", 1 - store i64 %"$consume_2063", i64* @_gasrem +"$have_gas_2078": ; preds = %"$out_of_gas_2077", %"$have_gas_2072" + %"$consume_2079" = sub i64 %"$gasrem_2075", 1 + store i64 %"$consume_2079", i64* @_gasrem %key2c = alloca %String - %"$gasrem_2064" = load i64, i64* @_gasrem - %"$gascmp_2065" = icmp ugt i64 1, %"$gasrem_2064" - br i1 %"$gascmp_2065", label %"$out_of_gas_2066", label %"$have_gas_2067" + %"$gasrem_2080" = load i64, i64* @_gasrem + %"$gascmp_2081" = icmp ugt i64 1, %"$gasrem_2080" + br i1 %"$gascmp_2081", label %"$out_of_gas_2082", label %"$have_gas_2083" -"$out_of_gas_2066": ; preds = %"$have_gas_2062" +"$out_of_gas_2082": ; preds = %"$have_gas_2078" call void @_out_of_gas() - br label %"$have_gas_2067" + br label %"$have_gas_2083" -"$have_gas_2067": ; preds = %"$out_of_gas_2066", %"$have_gas_2062" - %"$consume_2068" = sub i64 %"$gasrem_2064", 1 - store i64 %"$consume_2068", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2069", i32 0, i32 0), i32 5 }, %String* %key2c +"$have_gas_2083": ; preds = %"$out_of_gas_2082", %"$have_gas_2078" + %"$consume_2084" = sub i64 %"$gasrem_2080", 1 + store i64 %"$consume_2084", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2085", i32 0, i32 0), i32 5 }, %String* %key2c %"$c1_9" = alloca %TName_Option_String* - %"$indices_buf_2070_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2070_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2070_salloc_load", i64 32) - %"$indices_buf_2070_salloc" = bitcast i8* %"$indices_buf_2070_salloc_salloc" to [32 x i8]* - %"$indices_buf_2070" = bitcast [32 x i8]* %"$indices_buf_2070_salloc" to i8* - %"$key1b_2071" = load %String, %String* %key1b - %"$indices_gep_2072" = getelementptr i8, i8* %"$indices_buf_2070", i32 0 - %indices_cast3 = bitcast i8* %"$indices_gep_2072" to %String* - store %String %"$key1b_2071", %String* %indices_cast3 - %"$key2c_2073" = load %String, %String* %key2c - %"$indices_gep_2074" = getelementptr i8, i8* %"$indices_buf_2070", i32 16 - %indices_cast4 = bitcast i8* %"$indices_gep_2074" to %String* - store %String %"$key2c_2073", %String* %indices_cast4 - %"$execptr_load_2075" = load i8*, i8** @_execptr - %"$$c1_9_2077" = call i8* @_fetch_field(i8* %"$execptr_load_2075", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_2076", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_2070", i32 1) - %"$$c1_9_2078" = bitcast i8* %"$$c1_9_2077" to %TName_Option_String* - store %TName_Option_String* %"$$c1_9_2078", %TName_Option_String** %"$c1_9" - %"$$c1_9_2079" = load %TName_Option_String*, %TName_Option_String** %"$c1_9" - %"$$$c1_9_2079_2080" = bitcast %TName_Option_String* %"$$c1_9_2079" to i8* - %"$_literal_cost_call_2081" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$$c1_9_2079_2080") - %"$gasadd_2082" = add i64 %"$_literal_cost_call_2081", 0 - %"$gasadd_2083" = add i64 %"$gasadd_2082", 2 - %"$gasrem_2084" = load i64, i64* @_gasrem - %"$gascmp_2085" = icmp ugt i64 %"$gasadd_2083", %"$gasrem_2084" - br i1 %"$gascmp_2085", label %"$out_of_gas_2086", label %"$have_gas_2087" - -"$out_of_gas_2086": ; preds = %"$have_gas_2067" - call void @_out_of_gas() - br label %"$have_gas_2087" - -"$have_gas_2087": ; preds = %"$out_of_gas_2086", %"$have_gas_2067" - %"$consume_2088" = sub i64 %"$gasrem_2084", %"$gasadd_2083" - store i64 %"$consume_2088", i64* @_gasrem - %"$gasrem_2089" = load i64, i64* @_gasrem - %"$gascmp_2090" = icmp ugt i64 2, %"$gasrem_2089" - br i1 %"$gascmp_2090", label %"$out_of_gas_2091", label %"$have_gas_2092" - -"$out_of_gas_2091": ; preds = %"$have_gas_2087" - call void @_out_of_gas() - br label %"$have_gas_2092" - -"$have_gas_2092": ; preds = %"$out_of_gas_2091", %"$have_gas_2087" - %"$consume_2093" = sub i64 %"$gasrem_2089", 2 - store i64 %"$consume_2093", i64* @_gasrem + %"$indices_buf_2086_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_2086_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2086_salloc_load", i64 32) + %"$indices_buf_2086_salloc" = bitcast i8* %"$indices_buf_2086_salloc_salloc" to [32 x i8]* + %"$indices_buf_2086" = bitcast [32 x i8]* %"$indices_buf_2086_salloc" to i8* + %"$key1b_2087" = load %String, %String* %key1b + %"$indices_gep_2088" = getelementptr i8, i8* %"$indices_buf_2086", i32 0 + %indices_cast3 = bitcast i8* %"$indices_gep_2088" to %String* + store %String %"$key1b_2087", %String* %indices_cast3 + %"$key2c_2089" = load %String, %String* %key2c + %"$indices_gep_2090" = getelementptr i8, i8* %"$indices_buf_2086", i32 16 + %indices_cast4 = bitcast i8* %"$indices_gep_2090" to %String* + store %String %"$key2c_2089", %String* %indices_cast4 + %"$execptr_load_2091" = load i8*, i8** @_execptr + %"$$c1_9_2093" = call i8* @_fetch_field(i8* %"$execptr_load_2091", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_2092", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_2086", i32 1) + %"$$c1_9_2094" = bitcast i8* %"$$c1_9_2093" to %TName_Option_String* + store %TName_Option_String* %"$$c1_9_2094", %TName_Option_String** %"$c1_9" %"$$c1_9_2095" = load %TName_Option_String*, %TName_Option_String** %"$c1_9" - %"$$c1_9_tag_2096" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_9_2095", i32 0, i32 0 - %"$$c1_9_tag_2097" = load i8, i8* %"$$c1_9_tag_2096" - switch i8 %"$$c1_9_tag_2097", label %"$empty_default_2098" [ - i8 0, label %"$Some_2099" - i8 1, label %"$None_2156" + %"$$$c1_9_2095_2096" = bitcast %TName_Option_String* %"$$c1_9_2095" to i8* + %"$_literal_cost_call_2097" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$$c1_9_2095_2096") + %"$gasadd_2098" = add i64 %"$_literal_cost_call_2097", 0 + %"$gasadd_2099" = add i64 %"$gasadd_2098", 2 + %"$gasrem_2100" = load i64, i64* @_gasrem + %"$gascmp_2101" = icmp ugt i64 %"$gasadd_2099", %"$gasrem_2100" + br i1 %"$gascmp_2101", label %"$out_of_gas_2102", label %"$have_gas_2103" + +"$out_of_gas_2102": ; preds = %"$have_gas_2083" + call void @_out_of_gas() + br label %"$have_gas_2103" + +"$have_gas_2103": ; preds = %"$out_of_gas_2102", %"$have_gas_2083" + %"$consume_2104" = sub i64 %"$gasrem_2100", %"$gasadd_2099" + store i64 %"$consume_2104", i64* @_gasrem + %"$gasrem_2105" = load i64, i64* @_gasrem + %"$gascmp_2106" = icmp ugt i64 2, %"$gasrem_2105" + br i1 %"$gascmp_2106", label %"$out_of_gas_2107", label %"$have_gas_2108" + +"$out_of_gas_2107": ; preds = %"$have_gas_2103" + call void @_out_of_gas() + br label %"$have_gas_2108" + +"$have_gas_2108": ; preds = %"$out_of_gas_2107", %"$have_gas_2103" + %"$consume_2109" = sub i64 %"$gasrem_2105", 2 + store i64 %"$consume_2109", i64* @_gasrem + %"$$c1_9_2111" = load %TName_Option_String*, %TName_Option_String** %"$c1_9" + %"$$c1_9_tag_2112" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$$c1_9_2111", i32 0, i32 0 + %"$$c1_9_tag_2113" = load i8, i8* %"$$c1_9_tag_2112" + switch i8 %"$$c1_9_tag_2113", label %"$empty_default_2114" [ + i8 0, label %"$Some_2115" + i8 1, label %"$None_2172" ] -"$Some_2099": ; preds = %"$have_gas_2092" - %"$$c1_9_2100" = bitcast %TName_Option_String* %"$$c1_9_2095" to %CName_Some_String* - %"$c_gep_2101" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_9_2100", i32 0, i32 1 - %"$c_load_2102" = load %String, %String* %"$c_gep_2101" +"$Some_2115": ; preds = %"$have_gas_2108" + %"$$c1_9_2116" = bitcast %TName_Option_String* %"$$c1_9_2111" to %CName_Some_String* + %"$c_gep_2117" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$$c1_9_2116", i32 0, i32 1 + %"$c_load_2118" = load %String, %String* %"$c_gep_2117" %c5 = alloca %String - store %String %"$c_load_2102", %String* %c5 - %"$gasrem_2103" = load i64, i64* @_gasrem - %"$gascmp_2104" = icmp ugt i64 1, %"$gasrem_2103" - br i1 %"$gascmp_2104", label %"$out_of_gas_2105", label %"$have_gas_2106" + store %String %"$c_load_2118", %String* %c5 + %"$gasrem_2119" = load i64, i64* @_gasrem + %"$gascmp_2120" = icmp ugt i64 1, %"$gasrem_2119" + br i1 %"$gascmp_2120", label %"$out_of_gas_2121", label %"$have_gas_2122" -"$out_of_gas_2105": ; preds = %"$Some_2099" +"$out_of_gas_2121": ; preds = %"$Some_2115" call void @_out_of_gas() - br label %"$have_gas_2106" + br label %"$have_gas_2122" -"$have_gas_2106": ; preds = %"$out_of_gas_2105", %"$Some_2099" - %"$consume_2107" = sub i64 %"$gasrem_2103", 1 - store i64 %"$consume_2107", i64* @_gasrem +"$have_gas_2122": ; preds = %"$out_of_gas_2121", %"$Some_2115" + %"$consume_2123" = sub i64 %"$gasrem_2119", 1 + store i64 %"$consume_2123", i64* @_gasrem %v6 = alloca %String - %"$gasrem_2108" = load i64, i64* @_gasrem - %"$gascmp_2109" = icmp ugt i64 1, %"$gasrem_2108" - br i1 %"$gascmp_2109", label %"$out_of_gas_2110", label %"$have_gas_2111" + %"$gasrem_2124" = load i64, i64* @_gasrem + %"$gascmp_2125" = icmp ugt i64 1, %"$gasrem_2124" + br i1 %"$gascmp_2125", label %"$out_of_gas_2126", label %"$have_gas_2127" -"$out_of_gas_2110": ; preds = %"$have_gas_2106" +"$out_of_gas_2126": ; preds = %"$have_gas_2122" call void @_out_of_gas() - br label %"$have_gas_2111" + br label %"$have_gas_2127" -"$have_gas_2111": ; preds = %"$out_of_gas_2110", %"$have_gas_2106" - %"$consume_2112" = sub i64 %"$gasrem_2108", 1 - store i64 %"$consume_2112", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2113", i32 0, i32 0), i32 3 }, %String* %v6 - %"$gasrem_2114" = load i64, i64* @_gasrem - %"$gascmp_2115" = icmp ugt i64 1, %"$gasrem_2114" - br i1 %"$gascmp_2115", label %"$out_of_gas_2116", label %"$have_gas_2117" +"$have_gas_2127": ; preds = %"$out_of_gas_2126", %"$have_gas_2122" + %"$consume_2128" = sub i64 %"$gasrem_2124", 1 + store i64 %"$consume_2128", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2129", i32 0, i32 0), i32 3 }, %String* %v6 + %"$gasrem_2130" = load i64, i64* @_gasrem + %"$gascmp_2131" = icmp ugt i64 1, %"$gasrem_2130" + br i1 %"$gascmp_2131", label %"$out_of_gas_2132", label %"$have_gas_2133" -"$out_of_gas_2116": ; preds = %"$have_gas_2111" +"$out_of_gas_2132": ; preds = %"$have_gas_2127" call void @_out_of_gas() - br label %"$have_gas_2117" + br label %"$have_gas_2133" -"$have_gas_2117": ; preds = %"$out_of_gas_2116", %"$have_gas_2111" - %"$consume_2118" = sub i64 %"$gasrem_2114", 1 - store i64 %"$consume_2118", i64* @_gasrem +"$have_gas_2133": ; preds = %"$out_of_gas_2132", %"$have_gas_2127" + %"$consume_2134" = sub i64 %"$gasrem_2130", 1 + store i64 %"$consume_2134", i64* @_gasrem %eq7 = alloca %TName_Bool* - %"$execptr_load_2119" = load i8*, i8** @_execptr - %"$c_2120" = load %String, %String* %c5 - %"$v_2121" = load %String, %String* %v6 - %"$eq_call_2122" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_2119", %String %"$c_2120", %String %"$v_2121") - store %TName_Bool* %"$eq_call_2122", %TName_Bool** %eq7 - %"$gasrem_2123" = load i64, i64* @_gasrem - %"$gascmp_2124" = icmp ugt i64 2, %"$gasrem_2123" - br i1 %"$gascmp_2124", label %"$out_of_gas_2125", label %"$have_gas_2126" - -"$out_of_gas_2125": ; preds = %"$have_gas_2117" - call void @_out_of_gas() - br label %"$have_gas_2126" - -"$have_gas_2126": ; preds = %"$out_of_gas_2125", %"$have_gas_2117" - %"$consume_2127" = sub i64 %"$gasrem_2123", 2 - store i64 %"$consume_2127", i64* @_gasrem - %"$eq_2129" = load %TName_Bool*, %TName_Bool** %eq7 - %"$eq_tag_2130" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_2129", i32 0, i32 0 - %"$eq_tag_2131" = load i8, i8* %"$eq_tag_2130" - switch i8 %"$eq_tag_2131", label %"$empty_default_2132" [ - i8 0, label %"$True_2133" - i8 1, label %"$False_2135" + %"$execptr_load_2135" = load i8*, i8** @_execptr + %"$c_2136" = load %String, %String* %c5 + %"$v_2137" = load %String, %String* %v6 + %"$eq_call_2138" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_2135", %String %"$c_2136", %String %"$v_2137") + store %TName_Bool* %"$eq_call_2138", %TName_Bool** %eq7 + %"$gasrem_2139" = load i64, i64* @_gasrem + %"$gascmp_2140" = icmp ugt i64 2, %"$gasrem_2139" + br i1 %"$gascmp_2140", label %"$out_of_gas_2141", label %"$have_gas_2142" + +"$out_of_gas_2141": ; preds = %"$have_gas_2133" + call void @_out_of_gas() + br label %"$have_gas_2142" + +"$have_gas_2142": ; preds = %"$out_of_gas_2141", %"$have_gas_2133" + %"$consume_2143" = sub i64 %"$gasrem_2139", 2 + store i64 %"$consume_2143", i64* @_gasrem + %"$eq_2145" = load %TName_Bool*, %TName_Bool** %eq7 + %"$eq_tag_2146" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_2145", i32 0, i32 0 + %"$eq_tag_2147" = load i8, i8* %"$eq_tag_2146" + switch i8 %"$eq_tag_2147", label %"$empty_default_2148" [ + i8 0, label %"$True_2149" + i8 1, label %"$False_2151" ] -"$True_2133": ; preds = %"$have_gas_2126" - %"$eq_2134" = bitcast %TName_Bool* %"$eq_2129" to %CName_True* - br label %"$matchsucc_2128" +"$True_2149": ; preds = %"$have_gas_2142" + %"$eq_2150" = bitcast %TName_Bool* %"$eq_2145" to %CName_True* + br label %"$matchsucc_2144" -"$False_2135": ; preds = %"$have_gas_2126" - %"$eq_2136" = bitcast %TName_Bool* %"$eq_2129" to %CName_False* - %"$gasrem_2137" = load i64, i64* @_gasrem - %"$gascmp_2138" = icmp ugt i64 1, %"$gasrem_2137" - br i1 %"$gascmp_2138", label %"$out_of_gas_2139", label %"$have_gas_2140" +"$False_2151": ; preds = %"$have_gas_2142" + %"$eq_2152" = bitcast %TName_Bool* %"$eq_2145" to %CName_False* + %"$gasrem_2153" = load i64, i64* @_gasrem + %"$gascmp_2154" = icmp ugt i64 1, %"$gasrem_2153" + br i1 %"$gascmp_2154", label %"$out_of_gas_2155", label %"$have_gas_2156" -"$out_of_gas_2139": ; preds = %"$False_2135" +"$out_of_gas_2155": ; preds = %"$False_2151" call void @_out_of_gas() - br label %"$have_gas_2140" + br label %"$have_gas_2156" -"$have_gas_2140": ; preds = %"$out_of_gas_2139", %"$False_2135" - %"$consume_2141" = sub i64 %"$gasrem_2137", 1 - store i64 %"$consume_2141", i64* @_gasrem +"$have_gas_2156": ; preds = %"$out_of_gas_2155", %"$False_2151" + %"$consume_2157" = sub i64 %"$gasrem_2153", 1 + store i64 %"$consume_2157", i64* @_gasrem %m8 = alloca %String - %"$gasrem_2142" = load i64, i64* @_gasrem - %"$gascmp_2143" = icmp ugt i64 1, %"$gasrem_2142" - br i1 %"$gascmp_2143", label %"$out_of_gas_2144", label %"$have_gas_2145" + %"$gasrem_2158" = load i64, i64* @_gasrem + %"$gascmp_2159" = icmp ugt i64 1, %"$gasrem_2158" + br i1 %"$gascmp_2159", label %"$out_of_gas_2160", label %"$have_gas_2161" -"$out_of_gas_2144": ; preds = %"$have_gas_2140" +"$out_of_gas_2160": ; preds = %"$have_gas_2156" call void @_out_of_gas() - br label %"$have_gas_2145" + br label %"$have_gas_2161" -"$have_gas_2145": ; preds = %"$out_of_gas_2144", %"$have_gas_2140" - %"$consume_2146" = sub i64 %"$gasrem_2142", 1 - store i64 %"$consume_2146", i64* @_gasrem - store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_2147", i32 0, i32 0), i32 31 }, %String* %m8 - %"$gasrem_2148" = load i64, i64* @_gasrem - %"$gascmp_2149" = icmp ugt i64 1, %"$gasrem_2148" - br i1 %"$gascmp_2149", label %"$out_of_gas_2150", label %"$have_gas_2151" +"$have_gas_2161": ; preds = %"$out_of_gas_2160", %"$have_gas_2156" + %"$consume_2162" = sub i64 %"$gasrem_2158", 1 + store i64 %"$consume_2162", i64* @_gasrem + store %String { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"$stringlit_2163", i32 0, i32 0), i32 31 }, %String* %m8 + %"$gasrem_2164" = load i64, i64* @_gasrem + %"$gascmp_2165" = icmp ugt i64 1, %"$gasrem_2164" + br i1 %"$gascmp_2165", label %"$out_of_gas_2166", label %"$have_gas_2167" -"$out_of_gas_2150": ; preds = %"$have_gas_2145" +"$out_of_gas_2166": ; preds = %"$have_gas_2161" call void @_out_of_gas() - br label %"$have_gas_2151" + br label %"$have_gas_2167" -"$have_gas_2151": ; preds = %"$out_of_gas_2150", %"$have_gas_2145" - %"$consume_2152" = sub i64 %"$gasrem_2148", 1 - store i64 %"$consume_2152", i64* @_gasrem - %"$fail_msg__sender_2153" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2153" - %"$tname_2154" = load %String, %String* %tname - %"$m_2155" = load %String, %String* %m8 - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2153", %String %"$tname_2154", %String %"$m_2155") - br label %"$matchsucc_2128" +"$have_gas_2167": ; preds = %"$out_of_gas_2166", %"$have_gas_2161" + %"$consume_2168" = sub i64 %"$gasrem_2164", 1 + store i64 %"$consume_2168", i64* @_gasrem + %"$fail_msg__sender_2169" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2169" + %"$tname_2170" = load %String, %String* %tname + %"$m_2171" = load %String, %String* %m8 + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2169", %String %"$tname_2170", %String %"$m_2171") + br label %"$matchsucc_2144" -"$empty_default_2132": ; preds = %"$have_gas_2126" - br label %"$matchsucc_2128" +"$empty_default_2148": ; preds = %"$have_gas_2142" + br label %"$matchsucc_2144" -"$matchsucc_2128": ; preds = %"$have_gas_2151", %"$True_2133", %"$empty_default_2132" - br label %"$matchsucc_2094" +"$matchsucc_2144": ; preds = %"$have_gas_2167", %"$True_2149", %"$empty_default_2148" + br label %"$matchsucc_2110" -"$None_2156": ; preds = %"$have_gas_2092" - %"$$c1_9_2157" = bitcast %TName_Option_String* %"$$c1_9_2095" to %CName_None_String* - %"$gasrem_2158" = load i64, i64* @_gasrem - %"$gascmp_2159" = icmp ugt i64 1, %"$gasrem_2158" - br i1 %"$gascmp_2159", label %"$out_of_gas_2160", label %"$have_gas_2161" +"$None_2172": ; preds = %"$have_gas_2108" + %"$$c1_9_2173" = bitcast %TName_Option_String* %"$$c1_9_2111" to %CName_None_String* + %"$gasrem_2174" = load i64, i64* @_gasrem + %"$gascmp_2175" = icmp ugt i64 1, %"$gasrem_2174" + br i1 %"$gascmp_2175", label %"$out_of_gas_2176", label %"$have_gas_2177" -"$out_of_gas_2160": ; preds = %"$None_2156" +"$out_of_gas_2176": ; preds = %"$None_2172" call void @_out_of_gas() - br label %"$have_gas_2161" + br label %"$have_gas_2177" -"$have_gas_2161": ; preds = %"$out_of_gas_2160", %"$None_2156" - %"$consume_2162" = sub i64 %"$gasrem_2158", 1 - store i64 %"$consume_2162", i64* @_gasrem +"$have_gas_2177": ; preds = %"$out_of_gas_2176", %"$None_2172" + %"$consume_2178" = sub i64 %"$gasrem_2174", 1 + store i64 %"$consume_2178", i64* @_gasrem %m9 = alloca %String - %"$gasrem_2163" = load i64, i64* @_gasrem - %"$gascmp_2164" = icmp ugt i64 1, %"$gasrem_2163" - br i1 %"$gascmp_2164", label %"$out_of_gas_2165", label %"$have_gas_2166" + %"$gasrem_2179" = load i64, i64* @_gasrem + %"$gascmp_2180" = icmp ugt i64 1, %"$gasrem_2179" + br i1 %"$gascmp_2180", label %"$out_of_gas_2181", label %"$have_gas_2182" -"$out_of_gas_2165": ; preds = %"$have_gas_2161" +"$out_of_gas_2181": ; preds = %"$have_gas_2177" call void @_out_of_gas() - br label %"$have_gas_2166" + br label %"$have_gas_2182" -"$have_gas_2166": ; preds = %"$out_of_gas_2165", %"$have_gas_2161" - %"$consume_2167" = sub i64 %"$gasrem_2163", 1 - store i64 %"$consume_2167", i64* @_gasrem - store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_2168", i32 0, i32 0), i32 21 }, %String* %m9 - %"$gasrem_2169" = load i64, i64* @_gasrem - %"$gascmp_2170" = icmp ugt i64 1, %"$gasrem_2169" - br i1 %"$gascmp_2170", label %"$out_of_gas_2171", label %"$have_gas_2172" +"$have_gas_2182": ; preds = %"$out_of_gas_2181", %"$have_gas_2177" + %"$consume_2183" = sub i64 %"$gasrem_2179", 1 + store i64 %"$consume_2183", i64* @_gasrem + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_2184", i32 0, i32 0), i32 21 }, %String* %m9 + %"$gasrem_2185" = load i64, i64* @_gasrem + %"$gascmp_2186" = icmp ugt i64 1, %"$gasrem_2185" + br i1 %"$gascmp_2186", label %"$out_of_gas_2187", label %"$have_gas_2188" -"$out_of_gas_2171": ; preds = %"$have_gas_2166" +"$out_of_gas_2187": ; preds = %"$have_gas_2182" call void @_out_of_gas() - br label %"$have_gas_2172" + br label %"$have_gas_2188" -"$have_gas_2172": ; preds = %"$out_of_gas_2171", %"$have_gas_2166" - %"$consume_2173" = sub i64 %"$gasrem_2169", 1 - store i64 %"$consume_2173", i64* @_gasrem - %"$fail_msg__sender_2174" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2174" - %"$tname_2175" = load %String, %String* %tname - %"$m_2176" = load %String, %String* %m9 - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2174", %String %"$tname_2175", %String %"$m_2176") - br label %"$matchsucc_2094" +"$have_gas_2188": ; preds = %"$out_of_gas_2187", %"$have_gas_2182" + %"$consume_2189" = sub i64 %"$gasrem_2185", 1 + store i64 %"$consume_2189", i64* @_gasrem + %"$fail_msg__sender_2190" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2190" + %"$tname_2191" = load %String, %String* %tname + %"$m_2192" = load %String, %String* %m9 + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2190", %String %"$tname_2191", %String %"$m_2192") + br label %"$matchsucc_2110" -"$empty_default_2098": ; preds = %"$have_gas_2092" - br label %"$matchsucc_2094" +"$empty_default_2114": ; preds = %"$have_gas_2108" + br label %"$matchsucc_2110" -"$matchsucc_2094": ; preds = %"$have_gas_2172", %"$matchsucc_2128", %"$empty_default_2098" - %"$gasrem_2177" = load i64, i64* @_gasrem - %"$gascmp_2178" = icmp ugt i64 1, %"$gasrem_2177" - br i1 %"$gascmp_2178", label %"$out_of_gas_2179", label %"$have_gas_2180" - -"$out_of_gas_2179": ; preds = %"$matchsucc_2094" - call void @_out_of_gas() - br label %"$have_gas_2180" - -"$have_gas_2180": ; preds = %"$out_of_gas_2179", %"$matchsucc_2094" - %"$consume_2181" = sub i64 %"$gasrem_2177", 1 - store i64 %"$consume_2181", i64* @_gasrem - %em = alloca %Map_String_String* - %"$gasrem_2182" = load i64, i64* @_gasrem - %"$gascmp_2183" = icmp ugt i64 1, %"$gasrem_2182" - br i1 %"$gascmp_2183", label %"$out_of_gas_2184", label %"$have_gas_2185" - -"$out_of_gas_2184": ; preds = %"$have_gas_2180" - call void @_out_of_gas() - br label %"$have_gas_2185" - -"$have_gas_2185": ; preds = %"$out_of_gas_2184", %"$have_gas_2180" - %"$consume_2186" = sub i64 %"$gasrem_2182", 1 - store i64 %"$consume_2186", i64* @_gasrem - %"$execptr_load_2187" = load i8*, i8** @_execptr - %"$_new_empty_map_call_2188" = call i8* @_new_empty_map(i8* %"$execptr_load_2187") - %"$Emp_2189" = bitcast i8* %"$_new_empty_map_call_2188" to %Map_String_String* - store %Map_String_String* %"$Emp_2189", %Map_String_String** %em - %"$em_2190" = load %Map_String_String*, %Map_String_String** %em - %"$$em_2190_2191" = bitcast %Map_String_String* %"$em_2190" to i8* - %"$_literal_cost_call_2192" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$em_2190_2191") +"$matchsucc_2110": ; preds = %"$have_gas_2188", %"$matchsucc_2144", %"$empty_default_2114" %"$gasrem_2193" = load i64, i64* @_gasrem - %"$gascmp_2194" = icmp ugt i64 %"$_literal_cost_call_2192", %"$gasrem_2193" + %"$gascmp_2194" = icmp ugt i64 1, %"$gasrem_2193" br i1 %"$gascmp_2194", label %"$out_of_gas_2195", label %"$have_gas_2196" -"$out_of_gas_2195": ; preds = %"$have_gas_2185" +"$out_of_gas_2195": ; preds = %"$matchsucc_2110" call void @_out_of_gas() br label %"$have_gas_2196" -"$have_gas_2196": ; preds = %"$out_of_gas_2195", %"$have_gas_2185" - %"$consume_2197" = sub i64 %"$gasrem_2193", %"$_literal_cost_call_2192" +"$have_gas_2196": ; preds = %"$out_of_gas_2195", %"$matchsucc_2110" + %"$consume_2197" = sub i64 %"$gasrem_2193", 1 store i64 %"$consume_2197", i64* @_gasrem - %"$execptr_load_2198" = load i8*, i8** @_execptr - %"$em_2200" = load %Map_String_String*, %Map_String_String** %em - %"$update_value_2201" = bitcast %Map_String_String* %"$em_2200" to i8* - call void @_update_field(i8* %"$execptr_load_2198", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_2199", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i8* %"$update_value_2201") + %em = alloca %Map_String_String* + %"$gasrem_2198" = load i64, i64* @_gasrem + %"$gascmp_2199" = icmp ugt i64 1, %"$gasrem_2198" + br i1 %"$gascmp_2199", label %"$out_of_gas_2200", label %"$have_gas_2201" + +"$out_of_gas_2200": ; preds = %"$have_gas_2196" + call void @_out_of_gas() + br label %"$have_gas_2201" + +"$have_gas_2201": ; preds = %"$out_of_gas_2200", %"$have_gas_2196" + %"$consume_2202" = sub i64 %"$gasrem_2198", 1 + store i64 %"$consume_2202", i64* @_gasrem + %"$execptr_load_2203" = load i8*, i8** @_execptr + %"$_new_empty_map_call_2204" = call i8* @_new_empty_map(i8* %"$execptr_load_2203") + %"$Emp_2205" = bitcast i8* %"$_new_empty_map_call_2204" to %Map_String_String* + store %Map_String_String* %"$Emp_2205", %Map_String_String** %em + %"$em_2206" = load %Map_String_String*, %Map_String_String** %em + %"$$em_2206_2207" = bitcast %Map_String_String* %"$em_2206" to i8* + %"$_literal_cost_call_2208" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$em_2206_2207") + %"$gasrem_2209" = load i64, i64* @_gasrem + %"$gascmp_2210" = icmp ugt i64 %"$_literal_cost_call_2208", %"$gasrem_2209" + br i1 %"$gascmp_2210", label %"$out_of_gas_2211", label %"$have_gas_2212" + +"$out_of_gas_2211": ; preds = %"$have_gas_2201" + call void @_out_of_gas() + br label %"$have_gas_2212" + +"$have_gas_2212": ; preds = %"$out_of_gas_2211", %"$have_gas_2201" + %"$consume_2213" = sub i64 %"$gasrem_2209", %"$_literal_cost_call_2208" + store i64 %"$consume_2213", i64* @_gasrem + %"$execptr_load_2214" = load i8*, i8** @_execptr + %"$em_2216" = load %Map_String_String*, %Map_String_String** %em + %"$update_value_2217" = bitcast %Map_String_String* %"$em_2216" to i8* + call void @_update_field(i8* %"$execptr_load_2214", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_2215", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i8* %"$update_value_2217") ret void } define void @t8(i8* %0) { entry: - %"$_amount_2203" = getelementptr i8, i8* %0, i32 0 - %"$_amount_2204" = bitcast i8* %"$_amount_2203" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_2204" - %"$_sender_2205" = getelementptr i8, i8* %0, i32 16 - %"$_sender_2206" = bitcast i8* %"$_sender_2205" to [20 x i8]* - call void @"$t8_1906"(%Uint128 %_amount, [20 x i8]* %"$_sender_2206") + %"$_amount_2219" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2220" = bitcast i8* %"$_amount_2219" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2220" + %"$_sender_2221" = getelementptr i8, i8* %0, i32 16 + %"$_sender_2222" = bitcast i8* %"$_sender_2221" to [20 x i8]* + call void @"$t8_1922"(%Uint128 %_amount, [20 x i8]* %"$_sender_2222") ret void } -define internal void @"$t9_2207"(%Uint128 %_amount, [20 x i8]* %"$_sender_2208") { +define internal void @"$t9_2223"(%Uint128 %_amount, [20 x i8]* %"$_sender_2224") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_2208" - %"$gasrem_2209" = load i64, i64* @_gasrem - %"$gascmp_2210" = icmp ugt i64 1, %"$gasrem_2209" - br i1 %"$gascmp_2210", label %"$out_of_gas_2211", label %"$have_gas_2212" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2224" + %"$gasrem_2225" = load i64, i64* @_gasrem + %"$gascmp_2226" = icmp ugt i64 1, %"$gasrem_2225" + br i1 %"$gascmp_2226", label %"$out_of_gas_2227", label %"$have_gas_2228" -"$out_of_gas_2211": ; preds = %entry +"$out_of_gas_2227": ; preds = %entry call void @_out_of_gas() - br label %"$have_gas_2212" + br label %"$have_gas_2228" -"$have_gas_2212": ; preds = %"$out_of_gas_2211", %entry - %"$consume_2213" = sub i64 %"$gasrem_2209", 1 - store i64 %"$consume_2213", i64* @_gasrem +"$have_gas_2228": ; preds = %"$out_of_gas_2227", %entry + %"$consume_2229" = sub i64 %"$gasrem_2225", 1 + store i64 %"$consume_2229", i64* @_gasrem %tname = alloca %String - %"$gasrem_2214" = load i64, i64* @_gasrem - %"$gascmp_2215" = icmp ugt i64 1, %"$gasrem_2214" - br i1 %"$gascmp_2215", label %"$out_of_gas_2216", label %"$have_gas_2217" + %"$gasrem_2230" = load i64, i64* @_gasrem + %"$gascmp_2231" = icmp ugt i64 1, %"$gasrem_2230" + br i1 %"$gascmp_2231", label %"$out_of_gas_2232", label %"$have_gas_2233" -"$out_of_gas_2216": ; preds = %"$have_gas_2212" +"$out_of_gas_2232": ; preds = %"$have_gas_2228" call void @_out_of_gas() - br label %"$have_gas_2217" + br label %"$have_gas_2233" -"$have_gas_2217": ; preds = %"$out_of_gas_2216", %"$have_gas_2212" - %"$consume_2218" = sub i64 %"$gasrem_2214", 1 - store i64 %"$consume_2218", i64* @_gasrem - store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_2219", i32 0, i32 0), i32 2 }, %String* %tname +"$have_gas_2233": ; preds = %"$out_of_gas_2232", %"$have_gas_2228" + %"$consume_2234" = sub i64 %"$gasrem_2230", 1 + store i64 %"$consume_2234", i64* @_gasrem + store %String { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"$stringlit_2235", i32 0, i32 0), i32 2 }, %String* %tname %m1 = alloca %Map_String_String* - %"$execptr_load_2220" = load i8*, i8** @_execptr - %"$m1_2222" = call i8* @_fetch_field(i8* %"$execptr_load_2220", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_2221", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i32 1) - %"$m1_2223" = bitcast i8* %"$m1_2222" to %Map_String_String* - store %Map_String_String* %"$m1_2223", %Map_String_String** %m1 - %"$m1_2224" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_2224_2225" = bitcast %Map_String_String* %"$m1_2224" to i8* - %"$_literal_cost_call_2226" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_2224_2225") - %"$m1_2227" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_2227_2228" = bitcast %Map_String_String* %"$m1_2227" to i8* - %"$_mapsortcost_call_2229" = call i64 @_mapsortcost(i8* %"$$m1_2227_2228") - %"$gasadd_2230" = add i64 %"$_literal_cost_call_2226", %"$_mapsortcost_call_2229" - %"$gasrem_2231" = load i64, i64* @_gasrem - %"$gascmp_2232" = icmp ugt i64 %"$gasadd_2230", %"$gasrem_2231" - br i1 %"$gascmp_2232", label %"$out_of_gas_2233", label %"$have_gas_2234" - -"$out_of_gas_2233": ; preds = %"$have_gas_2217" - call void @_out_of_gas() - br label %"$have_gas_2234" - -"$have_gas_2234": ; preds = %"$out_of_gas_2233", %"$have_gas_2217" - %"$consume_2235" = sub i64 %"$gasrem_2231", %"$gasadd_2230" - store i64 %"$consume_2235", i64* @_gasrem - %"$gasrem_2236" = load i64, i64* @_gasrem - %"$gascmp_2237" = icmp ugt i64 1, %"$gasrem_2236" - br i1 %"$gascmp_2237", label %"$out_of_gas_2238", label %"$have_gas_2239" - -"$out_of_gas_2238": ; preds = %"$have_gas_2234" - call void @_out_of_gas() - br label %"$have_gas_2239" - -"$have_gas_2239": ; preds = %"$out_of_gas_2238", %"$have_gas_2234" - %"$consume_2240" = sub i64 %"$gasrem_2236", 1 - store i64 %"$consume_2240", i64* @_gasrem + %"$execptr_load_2236" = load i8*, i8** @_execptr + %"$m1_2238" = call i8* @_fetch_field(i8* %"$execptr_load_2236", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_2237", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i32 1) + %"$m1_2239" = bitcast i8* %"$m1_2238" to %Map_String_String* + store %Map_String_String* %"$m1_2239", %Map_String_String** %m1 + %"$m1_2240" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2240_2241" = bitcast %Map_String_String* %"$m1_2240" to i8* + %"$_literal_cost_call_2242" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_2240_2241") + %"$m1_2243" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2243_2244" = bitcast %Map_String_String* %"$m1_2243" to i8* + %"$_mapsortcost_call_2245" = call i64 @_mapsortcost(i8* %"$$m1_2243_2244") + %"$gasadd_2246" = add i64 %"$_literal_cost_call_2242", %"$_mapsortcost_call_2245" + %"$gasrem_2247" = load i64, i64* @_gasrem + %"$gascmp_2248" = icmp ugt i64 %"$gasadd_2246", %"$gasrem_2247" + br i1 %"$gascmp_2248", label %"$out_of_gas_2249", label %"$have_gas_2250" + +"$out_of_gas_2249": ; preds = %"$have_gas_2233" + call void @_out_of_gas() + br label %"$have_gas_2250" + +"$have_gas_2250": ; preds = %"$out_of_gas_2249", %"$have_gas_2233" + %"$consume_2251" = sub i64 %"$gasrem_2247", %"$gasadd_2246" + store i64 %"$consume_2251", i64* @_gasrem + %"$gasrem_2252" = load i64, i64* @_gasrem + %"$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 = %"$have_gas_2250" + call void @_out_of_gas() + br label %"$have_gas_2255" + +"$have_gas_2255": ; preds = %"$out_of_gas_2254", %"$have_gas_2250" + %"$consume_2256" = sub i64 %"$gasrem_2252", 1 + store i64 %"$consume_2256", i64* @_gasrem %m1_size = alloca %Uint32 - %"$m1_2241" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_2241_2242" = bitcast %Map_String_String* %"$m1_2241" to i8* - %"$size_call_2243" = call %Uint32 @_size(i8* %"$$m1_2241_2242") - store %Uint32 %"$size_call_2243", %Uint32* %m1_size - %"$gasrem_2244" = load i64, i64* @_gasrem - %"$gascmp_2245" = icmp ugt i64 1, %"$gasrem_2244" - br i1 %"$gascmp_2245", label %"$out_of_gas_2246", label %"$have_gas_2247" + %"$m1_2257" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2257_2258" = bitcast %Map_String_String* %"$m1_2257" to i8* + %"$size_call_2259" = call %Uint32 @_size(i8* %"$$m1_2257_2258") + store %Uint32 %"$size_call_2259", %Uint32* %m1_size + %"$gasrem_2260" = load i64, i64* @_gasrem + %"$gascmp_2261" = icmp ugt i64 1, %"$gasrem_2260" + br i1 %"$gascmp_2261", label %"$out_of_gas_2262", label %"$have_gas_2263" -"$out_of_gas_2246": ; preds = %"$have_gas_2239" +"$out_of_gas_2262": ; preds = %"$have_gas_2255" call void @_out_of_gas() - br label %"$have_gas_2247" + br label %"$have_gas_2263" -"$have_gas_2247": ; preds = %"$out_of_gas_2246", %"$have_gas_2239" - %"$consume_2248" = sub i64 %"$gasrem_2244", 1 - store i64 %"$consume_2248", i64* @_gasrem +"$have_gas_2263": ; preds = %"$out_of_gas_2262", %"$have_gas_2255" + %"$consume_2264" = sub i64 %"$gasrem_2260", 1 + store i64 %"$consume_2264", i64* @_gasrem %zero = alloca %Uint32 - %"$gasrem_2249" = load i64, i64* @_gasrem - %"$gascmp_2250" = icmp ugt i64 1, %"$gasrem_2249" - br i1 %"$gascmp_2250", label %"$out_of_gas_2251", label %"$have_gas_2252" + %"$gasrem_2265" = load i64, i64* @_gasrem + %"$gascmp_2266" = icmp ugt i64 1, %"$gasrem_2265" + br i1 %"$gascmp_2266", label %"$out_of_gas_2267", label %"$have_gas_2268" -"$out_of_gas_2251": ; preds = %"$have_gas_2247" +"$out_of_gas_2267": ; preds = %"$have_gas_2263" call void @_out_of_gas() - br label %"$have_gas_2252" + br label %"$have_gas_2268" -"$have_gas_2252": ; preds = %"$out_of_gas_2251", %"$have_gas_2247" - %"$consume_2253" = sub i64 %"$gasrem_2249", 1 - store i64 %"$consume_2253", i64* @_gasrem +"$have_gas_2268": ; preds = %"$out_of_gas_2267", %"$have_gas_2263" + %"$consume_2269" = sub i64 %"$gasrem_2265", 1 + store i64 %"$consume_2269", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %zero - %"$gasrem_2254" = load i64, i64* @_gasrem - %"$gascmp_2255" = icmp ugt i64 1, %"$gasrem_2254" - br i1 %"$gascmp_2255", label %"$out_of_gas_2256", label %"$have_gas_2257" + %"$gasrem_2270" = load i64, i64* @_gasrem + %"$gascmp_2271" = icmp ugt i64 1, %"$gasrem_2270" + br i1 %"$gascmp_2271", label %"$out_of_gas_2272", label %"$have_gas_2273" -"$out_of_gas_2256": ; preds = %"$have_gas_2252" +"$out_of_gas_2272": ; preds = %"$have_gas_2268" call void @_out_of_gas() - br label %"$have_gas_2257" + br label %"$have_gas_2273" -"$have_gas_2257": ; preds = %"$out_of_gas_2256", %"$have_gas_2252" - %"$consume_2258" = sub i64 %"$gasrem_2254", 1 - store i64 %"$consume_2258", i64* @_gasrem +"$have_gas_2273": ; preds = %"$out_of_gas_2272", %"$have_gas_2268" + %"$consume_2274" = sub i64 %"$gasrem_2270", 1 + store i64 %"$consume_2274", i64* @_gasrem %is_empty = alloca %TName_Bool* - %"$execptr_load_2259" = load i8*, i8** @_execptr - %"$m1_size_2260" = load %Uint32, %Uint32* %m1_size - %"$zero_2261" = load %Uint32, %Uint32* %zero - %"$eq_call_2262" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_2259", %Uint32 %"$m1_size_2260", %Uint32 %"$zero_2261") - store %TName_Bool* %"$eq_call_2262", %TName_Bool** %is_empty - %"$gasrem_2263" = load i64, i64* @_gasrem - %"$gascmp_2264" = icmp ugt i64 2, %"$gasrem_2263" - br i1 %"$gascmp_2264", label %"$out_of_gas_2265", label %"$have_gas_2266" - -"$out_of_gas_2265": ; preds = %"$have_gas_2257" - call void @_out_of_gas() - br label %"$have_gas_2266" - -"$have_gas_2266": ; preds = %"$out_of_gas_2265", %"$have_gas_2257" - %"$consume_2267" = sub i64 %"$gasrem_2263", 2 - store i64 %"$consume_2267", i64* @_gasrem - %"$is_empty_2269" = load %TName_Bool*, %TName_Bool** %is_empty - %"$is_empty_tag_2270" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_2269", i32 0, i32 0 - %"$is_empty_tag_2271" = load i8, i8* %"$is_empty_tag_2270" - switch i8 %"$is_empty_tag_2271", label %"$empty_default_2272" [ - i8 0, label %"$True_2273" - i8 1, label %"$False_2275" + %"$execptr_load_2275" = load i8*, i8** @_execptr + %"$m1_size_2276" = load %Uint32, %Uint32* %m1_size + %"$zero_2277" = load %Uint32, %Uint32* %zero + %"$eq_call_2278" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_2275", %Uint32 %"$m1_size_2276", %Uint32 %"$zero_2277") + store %TName_Bool* %"$eq_call_2278", %TName_Bool** %is_empty + %"$gasrem_2279" = load i64, i64* @_gasrem + %"$gascmp_2280" = icmp ugt i64 2, %"$gasrem_2279" + br i1 %"$gascmp_2280", label %"$out_of_gas_2281", label %"$have_gas_2282" + +"$out_of_gas_2281": ; preds = %"$have_gas_2273" + call void @_out_of_gas() + br label %"$have_gas_2282" + +"$have_gas_2282": ; preds = %"$out_of_gas_2281", %"$have_gas_2273" + %"$consume_2283" = sub i64 %"$gasrem_2279", 2 + store i64 %"$consume_2283", i64* @_gasrem + %"$is_empty_2285" = load %TName_Bool*, %TName_Bool** %is_empty + %"$is_empty_tag_2286" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_2285", i32 0, i32 0 + %"$is_empty_tag_2287" = load i8, i8* %"$is_empty_tag_2286" + switch i8 %"$is_empty_tag_2287", label %"$empty_default_2288" [ + i8 0, label %"$True_2289" + i8 1, label %"$False_2291" ] -"$True_2273": ; preds = %"$have_gas_2266" - %"$is_empty_2274" = bitcast %TName_Bool* %"$is_empty_2269" to %CName_True* - br label %"$matchsucc_2268" +"$True_2289": ; preds = %"$have_gas_2282" + %"$is_empty_2290" = bitcast %TName_Bool* %"$is_empty_2285" to %CName_True* + br label %"$matchsucc_2284" -"$False_2275": ; preds = %"$have_gas_2266" - %"$is_empty_2276" = bitcast %TName_Bool* %"$is_empty_2269" to %CName_False* - %"$gasrem_2277" = load i64, i64* @_gasrem - %"$gascmp_2278" = icmp ugt i64 1, %"$gasrem_2277" - br i1 %"$gascmp_2278", label %"$out_of_gas_2279", label %"$have_gas_2280" +"$False_2291": ; preds = %"$have_gas_2282" + %"$is_empty_2292" = bitcast %TName_Bool* %"$is_empty_2285" to %CName_False* + %"$gasrem_2293" = load i64, i64* @_gasrem + %"$gascmp_2294" = icmp ugt i64 1, %"$gasrem_2293" + br i1 %"$gascmp_2294", label %"$out_of_gas_2295", label %"$have_gas_2296" -"$out_of_gas_2279": ; preds = %"$False_2275" +"$out_of_gas_2295": ; preds = %"$False_2291" call void @_out_of_gas() - br label %"$have_gas_2280" + br label %"$have_gas_2296" -"$have_gas_2280": ; preds = %"$out_of_gas_2279", %"$False_2275" - %"$consume_2281" = sub i64 %"$gasrem_2277", 1 - store i64 %"$consume_2281", i64* @_gasrem - %"$fail__sender_2282" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_2282" - %"$tname_2283" = load %String, %String* %tname - call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_2282", %String %"$tname_2283") - br label %"$matchsucc_2268" +"$have_gas_2296": ; preds = %"$out_of_gas_2295", %"$False_2291" + %"$consume_2297" = sub i64 %"$gasrem_2293", 1 + store i64 %"$consume_2297", i64* @_gasrem + %"$fail__sender_2298" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_2298" + %"$tname_2299" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_2298", %String %"$tname_2299") + br label %"$matchsucc_2284" -"$empty_default_2272": ; preds = %"$have_gas_2266" - br label %"$matchsucc_2268" +"$empty_default_2288": ; preds = %"$have_gas_2282" + br label %"$matchsucc_2284" -"$matchsucc_2268": ; preds = %"$have_gas_2280", %"$True_2273", %"$empty_default_2272" - %"$gasrem_2284" = load i64, i64* @_gasrem - %"$gascmp_2285" = icmp ugt i64 1, %"$gasrem_2284" - br i1 %"$gascmp_2285", label %"$out_of_gas_2286", label %"$have_gas_2287" +"$matchsucc_2284": ; preds = %"$have_gas_2296", %"$True_2289", %"$empty_default_2288" + %"$gasrem_2300" = load i64, i64* @_gasrem + %"$gascmp_2301" = icmp ugt i64 1, %"$gasrem_2300" + br i1 %"$gascmp_2301", label %"$out_of_gas_2302", label %"$have_gas_2303" -"$out_of_gas_2286": ; preds = %"$matchsucc_2268" +"$out_of_gas_2302": ; preds = %"$matchsucc_2284" call void @_out_of_gas() - br label %"$have_gas_2287" + br label %"$have_gas_2303" -"$have_gas_2287": ; preds = %"$out_of_gas_2286", %"$matchsucc_2268" - %"$consume_2288" = sub i64 %"$gasrem_2284", 1 - store i64 %"$consume_2288", i64* @_gasrem +"$have_gas_2303": ; preds = %"$out_of_gas_2302", %"$matchsucc_2284" + %"$consume_2304" = sub i64 %"$gasrem_2300", 1 + store i64 %"$consume_2304", i64* @_gasrem %key1a = alloca %String - %"$gasrem_2289" = load i64, i64* @_gasrem - %"$gascmp_2290" = icmp ugt i64 1, %"$gasrem_2289" - br i1 %"$gascmp_2290", label %"$out_of_gas_2291", label %"$have_gas_2292" + %"$gasrem_2305" = load i64, i64* @_gasrem + %"$gascmp_2306" = icmp ugt i64 1, %"$gasrem_2305" + br i1 %"$gascmp_2306", label %"$out_of_gas_2307", label %"$have_gas_2308" -"$out_of_gas_2291": ; preds = %"$have_gas_2287" +"$out_of_gas_2307": ; preds = %"$have_gas_2303" call void @_out_of_gas() - br label %"$have_gas_2292" + br label %"$have_gas_2308" -"$have_gas_2292": ; preds = %"$out_of_gas_2291", %"$have_gas_2287" - %"$consume_2293" = sub i64 %"$gasrem_2289", 1 - store i64 %"$consume_2293", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2294", i32 0, i32 0), i32 5 }, %String* %key1a - %"$gasrem_2295" = load i64, i64* @_gasrem - %"$gascmp_2296" = icmp ugt i64 1, %"$gasrem_2295" - br i1 %"$gascmp_2296", label %"$out_of_gas_2297", label %"$have_gas_2298" +"$have_gas_2308": ; preds = %"$out_of_gas_2307", %"$have_gas_2303" + %"$consume_2309" = sub i64 %"$gasrem_2305", 1 + store i64 %"$consume_2309", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2310", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_2311" = load i64, i64* @_gasrem + %"$gascmp_2312" = icmp ugt i64 1, %"$gasrem_2311" + br i1 %"$gascmp_2312", label %"$out_of_gas_2313", label %"$have_gas_2314" -"$out_of_gas_2297": ; preds = %"$have_gas_2292" +"$out_of_gas_2313": ; preds = %"$have_gas_2308" call void @_out_of_gas() - br label %"$have_gas_2298" + br label %"$have_gas_2314" -"$have_gas_2298": ; preds = %"$out_of_gas_2297", %"$have_gas_2292" - %"$consume_2299" = sub i64 %"$gasrem_2295", 1 - store i64 %"$consume_2299", i64* @_gasrem +"$have_gas_2314": ; preds = %"$out_of_gas_2313", %"$have_gas_2308" + %"$consume_2315" = sub i64 %"$gasrem_2311", 1 + store i64 %"$consume_2315", i64* @_gasrem %val = alloca %String - %"$gasrem_2300" = load i64, i64* @_gasrem - %"$gascmp_2301" = icmp ugt i64 1, %"$gasrem_2300" - br i1 %"$gascmp_2301", label %"$out_of_gas_2302", label %"$have_gas_2303" + %"$gasrem_2316" = load i64, i64* @_gasrem + %"$gascmp_2317" = icmp ugt i64 1, %"$gasrem_2316" + br i1 %"$gascmp_2317", label %"$out_of_gas_2318", label %"$have_gas_2319" -"$out_of_gas_2302": ; preds = %"$have_gas_2298" +"$out_of_gas_2318": ; preds = %"$have_gas_2314" call void @_out_of_gas() - br label %"$have_gas_2303" + br label %"$have_gas_2319" -"$have_gas_2303": ; preds = %"$out_of_gas_2302", %"$have_gas_2298" - %"$consume_2304" = sub i64 %"$gasrem_2300", 1 - store i64 %"$consume_2304", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2305", i32 0, i32 0), i32 3 }, %String* %val - %"$gasrem_2306" = load i64, i64* @_gasrem - %"$gascmp_2307" = icmp ugt i64 1, %"$gasrem_2306" - br i1 %"$gascmp_2307", label %"$out_of_gas_2308", label %"$have_gas_2309" +"$have_gas_2319": ; preds = %"$out_of_gas_2318", %"$have_gas_2314" + %"$consume_2320" = sub i64 %"$gasrem_2316", 1 + store i64 %"$consume_2320", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2321", i32 0, i32 0), i32 3 }, %String* %val + %"$gasrem_2322" = load i64, i64* @_gasrem + %"$gascmp_2323" = icmp ugt i64 1, %"$gasrem_2322" + br i1 %"$gascmp_2323", label %"$out_of_gas_2324", label %"$have_gas_2325" -"$out_of_gas_2308": ; preds = %"$have_gas_2303" +"$out_of_gas_2324": ; preds = %"$have_gas_2319" call void @_out_of_gas() - br label %"$have_gas_2309" + br label %"$have_gas_2325" -"$have_gas_2309": ; preds = %"$out_of_gas_2308", %"$have_gas_2303" - %"$consume_2310" = sub i64 %"$gasrem_2306", 1 - store i64 %"$consume_2310", i64* @_gasrem +"$have_gas_2325": ; preds = %"$out_of_gas_2324", %"$have_gas_2319" + %"$consume_2326" = sub i64 %"$gasrem_2322", 1 + store i64 %"$consume_2326", i64* @_gasrem %"$m1_10" = alloca %Map_String_String* - %"$execptr_load_2311" = load i8*, i8** @_execptr - %"$m1_2312" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_2312_2313" = bitcast %Map_String_String* %"$m1_2312" to i8* - %"$put_key1a_2314" = alloca %String - %"$key1a_2315" = load %String, %String* %key1a - store %String %"$key1a_2315", %String* %"$put_key1a_2314" - %"$$put_key1a_2314_2316" = bitcast %String* %"$put_key1a_2314" to i8* - %"$put_val_2317" = alloca %String - %"$val_2318" = load %String, %String* %val - store %String %"$val_2318", %String* %"$put_val_2317" - %"$$put_val_2317_2319" = bitcast %String* %"$put_val_2317" to i8* - %"$put_call_2320" = call i8* @_put(i8* %"$execptr_load_2311", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_2312_2313", i8* %"$$put_key1a_2314_2316", i8* %"$$put_val_2317_2319") - %"$_put_2321" = bitcast i8* %"$put_call_2320" to %Map_String_String* - store %Map_String_String* %"$_put_2321", %Map_String_String** %"$m1_10" - %"$$m1_10_2322" = load %Map_String_String*, %Map_String_String** %"$m1_10" - %"$$$m1_10_2322_2323" = bitcast %Map_String_String* %"$$m1_10_2322" to i8* - %"$_literal_cost_call_2324" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$$m1_10_2322_2323") - %"$gasrem_2325" = load i64, i64* @_gasrem - %"$gascmp_2326" = icmp ugt i64 %"$_literal_cost_call_2324", %"$gasrem_2325" - br i1 %"$gascmp_2326", label %"$out_of_gas_2327", label %"$have_gas_2328" - -"$out_of_gas_2327": ; preds = %"$have_gas_2309" - call void @_out_of_gas() - br label %"$have_gas_2328" - -"$have_gas_2328": ; preds = %"$out_of_gas_2327", %"$have_gas_2309" - %"$consume_2329" = sub i64 %"$gasrem_2325", %"$_literal_cost_call_2324" - store i64 %"$consume_2329", i64* @_gasrem - %"$execptr_load_2330" = load i8*, i8** @_execptr - %"$$m1_10_2332" = load %Map_String_String*, %Map_String_String** %"$m1_10" - %"$update_value_2333" = bitcast %Map_String_String* %"$$m1_10_2332" to i8* - call void @_update_field(i8* %"$execptr_load_2330", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_2331", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i8* %"$update_value_2333") + %"$execptr_load_2327" = load i8*, i8** @_execptr + %"$m1_2328" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2328_2329" = bitcast %Map_String_String* %"$m1_2328" to i8* + %"$put_key1a_2330" = alloca %String + %"$key1a_2331" = load %String, %String* %key1a + store %String %"$key1a_2331", %String* %"$put_key1a_2330" + %"$$put_key1a_2330_2332" = bitcast %String* %"$put_key1a_2330" to i8* + %"$put_val_2333" = alloca %String + %"$val_2334" = load %String, %String* %val + store %String %"$val_2334", %String* %"$put_val_2333" + %"$$put_val_2333_2335" = bitcast %String* %"$put_val_2333" to i8* + %"$put_call_2336" = call i8* @_put(i8* %"$execptr_load_2327", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_2328_2329", i8* %"$$put_key1a_2330_2332", i8* %"$$put_val_2333_2335") + %"$_put_2337" = bitcast i8* %"$put_call_2336" to %Map_String_String* + store %Map_String_String* %"$_put_2337", %Map_String_String** %"$m1_10" + %"$$m1_10_2338" = load %Map_String_String*, %Map_String_String** %"$m1_10" + %"$$$m1_10_2338_2339" = bitcast %Map_String_String* %"$$m1_10_2338" to i8* + %"$_literal_cost_call_2340" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$$m1_10_2338_2339") + %"$gasrem_2341" = load i64, i64* @_gasrem + %"$gascmp_2342" = icmp ugt i64 %"$_literal_cost_call_2340", %"$gasrem_2341" + br i1 %"$gascmp_2342", label %"$out_of_gas_2343", label %"$have_gas_2344" + +"$out_of_gas_2343": ; preds = %"$have_gas_2325" + call void @_out_of_gas() + br label %"$have_gas_2344" + +"$have_gas_2344": ; preds = %"$out_of_gas_2343", %"$have_gas_2325" + %"$consume_2345" = sub i64 %"$gasrem_2341", %"$_literal_cost_call_2340" + store i64 %"$consume_2345", i64* @_gasrem + %"$execptr_load_2346" = load i8*, i8** @_execptr + %"$$m1_10_2348" = load %Map_String_String*, %Map_String_String** %"$m1_10" + %"$update_value_2349" = bitcast %Map_String_String* %"$$m1_10_2348" to i8* + call void @_update_field(i8* %"$execptr_load_2346", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_2347", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i8* %"$update_value_2349") ret void } @@ -4854,319 +4880,319 @@ declare %TName_Bool* @_eq_Uint32(i8*, %Uint32, %Uint32) define void @t9(i8* %0) { entry: - %"$_amount_2335" = getelementptr i8, i8* %0, i32 0 - %"$_amount_2336" = bitcast i8* %"$_amount_2335" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_2336" - %"$_sender_2337" = getelementptr i8, i8* %0, i32 16 - %"$_sender_2338" = bitcast i8* %"$_sender_2337" to [20 x i8]* - call void @"$t9_2207"(%Uint128 %_amount, [20 x i8]* %"$_sender_2338") + %"$_amount_2351" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2352" = bitcast i8* %"$_amount_2351" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2352" + %"$_sender_2353" = getelementptr i8, i8* %0, i32 16 + %"$_sender_2354" = bitcast i8* %"$_sender_2353" to [20 x i8]* + call void @"$t9_2223"(%Uint128 %_amount, [20 x i8]* %"$_sender_2354") ret void } -define internal void @"$t10_2339"(%Uint128 %_amount, [20 x i8]* %"$_sender_2340") { +define internal void @"$t10_2355"(%Uint128 %_amount, [20 x i8]* %"$_sender_2356") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_2340" - %"$gasrem_2341" = load i64, i64* @_gasrem - %"$gascmp_2342" = icmp ugt i64 1, %"$gasrem_2341" - br i1 %"$gascmp_2342", label %"$out_of_gas_2343", label %"$have_gas_2344" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2356" + %"$gasrem_2357" = load i64, i64* @_gasrem + %"$gascmp_2358" = icmp ugt i64 1, %"$gasrem_2357" + br i1 %"$gascmp_2358", label %"$out_of_gas_2359", label %"$have_gas_2360" -"$out_of_gas_2343": ; preds = %entry +"$out_of_gas_2359": ; preds = %entry call void @_out_of_gas() - br label %"$have_gas_2344" + br label %"$have_gas_2360" -"$have_gas_2344": ; preds = %"$out_of_gas_2343", %entry - %"$consume_2345" = sub i64 %"$gasrem_2341", 1 - store i64 %"$consume_2345", i64* @_gasrem +"$have_gas_2360": ; preds = %"$out_of_gas_2359", %entry + %"$consume_2361" = sub i64 %"$gasrem_2357", 1 + store i64 %"$consume_2361", i64* @_gasrem %tname = alloca %String - %"$gasrem_2346" = load i64, i64* @_gasrem - %"$gascmp_2347" = icmp ugt i64 1, %"$gasrem_2346" - br i1 %"$gascmp_2347", label %"$out_of_gas_2348", label %"$have_gas_2349" + %"$gasrem_2362" = load i64, i64* @_gasrem + %"$gascmp_2363" = icmp ugt i64 1, %"$gasrem_2362" + br i1 %"$gascmp_2363", label %"$out_of_gas_2364", label %"$have_gas_2365" -"$out_of_gas_2348": ; preds = %"$have_gas_2344" +"$out_of_gas_2364": ; preds = %"$have_gas_2360" call void @_out_of_gas() - br label %"$have_gas_2349" + br label %"$have_gas_2365" -"$have_gas_2349": ; preds = %"$out_of_gas_2348", %"$have_gas_2344" - %"$consume_2350" = sub i64 %"$gasrem_2346", 1 - store i64 %"$consume_2350", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2351", i32 0, i32 0), i32 3 }, %String* %tname - %"$gasrem_2352" = load i64, i64* @_gasrem - %"$gascmp_2353" = icmp ugt i64 1, %"$gasrem_2352" - br i1 %"$gascmp_2353", label %"$out_of_gas_2354", label %"$have_gas_2355" +"$have_gas_2365": ; preds = %"$out_of_gas_2364", %"$have_gas_2360" + %"$consume_2366" = sub i64 %"$gasrem_2362", 1 + store i64 %"$consume_2366", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2367", i32 0, i32 0), i32 3 }, %String* %tname + %"$gasrem_2368" = load i64, i64* @_gasrem + %"$gascmp_2369" = icmp ugt i64 1, %"$gasrem_2368" + br i1 %"$gascmp_2369", label %"$out_of_gas_2370", label %"$have_gas_2371" -"$out_of_gas_2354": ; preds = %"$have_gas_2349" +"$out_of_gas_2370": ; preds = %"$have_gas_2365" call void @_out_of_gas() - br label %"$have_gas_2355" + br label %"$have_gas_2371" -"$have_gas_2355": ; preds = %"$out_of_gas_2354", %"$have_gas_2349" - %"$consume_2356" = sub i64 %"$gasrem_2352", 1 - store i64 %"$consume_2356", i64* @_gasrem +"$have_gas_2371": ; preds = %"$out_of_gas_2370", %"$have_gas_2365" + %"$consume_2372" = sub i64 %"$gasrem_2368", 1 + store i64 %"$consume_2372", i64* @_gasrem %key1a = alloca %String - %"$gasrem_2357" = load i64, i64* @_gasrem - %"$gascmp_2358" = icmp ugt i64 1, %"$gasrem_2357" - br i1 %"$gascmp_2358", label %"$out_of_gas_2359", label %"$have_gas_2360" + %"$gasrem_2373" = load i64, i64* @_gasrem + %"$gascmp_2374" = icmp ugt i64 1, %"$gasrem_2373" + br i1 %"$gascmp_2374", label %"$out_of_gas_2375", label %"$have_gas_2376" -"$out_of_gas_2359": ; preds = %"$have_gas_2355" +"$out_of_gas_2375": ; preds = %"$have_gas_2371" call void @_out_of_gas() - br label %"$have_gas_2360" + br label %"$have_gas_2376" -"$have_gas_2360": ; preds = %"$out_of_gas_2359", %"$have_gas_2355" - %"$consume_2361" = sub i64 %"$gasrem_2357", 1 - store i64 %"$consume_2361", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2362", i32 0, i32 0), i32 5 }, %String* %key1a +"$have_gas_2376": ; preds = %"$out_of_gas_2375", %"$have_gas_2371" + %"$consume_2377" = sub i64 %"$gasrem_2373", 1 + store i64 %"$consume_2377", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2378", i32 0, i32 0), i32 5 }, %String* %key1a %m1 = alloca %Map_String_String* - %"$execptr_load_2363" = load i8*, i8** @_execptr - %"$m1_2365" = call i8* @_fetch_field(i8* %"$execptr_load_2363", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_2364", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i32 1) - %"$m1_2366" = bitcast i8* %"$m1_2365" to %Map_String_String* - store %Map_String_String* %"$m1_2366", %Map_String_String** %m1 - %"$m1_2367" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_2367_2368" = bitcast %Map_String_String* %"$m1_2367" to i8* - %"$_literal_cost_call_2369" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_2367_2368") - %"$m1_2370" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_2370_2371" = bitcast %Map_String_String* %"$m1_2370" to i8* - %"$_mapsortcost_call_2372" = call i64 @_mapsortcost(i8* %"$$m1_2370_2371") - %"$gasadd_2373" = add i64 %"$_literal_cost_call_2369", %"$_mapsortcost_call_2372" - %"$gasrem_2374" = load i64, i64* @_gasrem - %"$gascmp_2375" = icmp ugt i64 %"$gasadd_2373", %"$gasrem_2374" - br i1 %"$gascmp_2375", label %"$out_of_gas_2376", label %"$have_gas_2377" - -"$out_of_gas_2376": ; preds = %"$have_gas_2360" - call void @_out_of_gas() - br label %"$have_gas_2377" - -"$have_gas_2377": ; preds = %"$out_of_gas_2376", %"$have_gas_2360" - %"$consume_2378" = sub i64 %"$gasrem_2374", %"$gasadd_2373" - store i64 %"$consume_2378", i64* @_gasrem - %"$gasrem_2379" = load i64, i64* @_gasrem - %"$gascmp_2380" = icmp ugt i64 1, %"$gasrem_2379" - br i1 %"$gascmp_2380", label %"$out_of_gas_2381", label %"$have_gas_2382" - -"$out_of_gas_2381": ; preds = %"$have_gas_2377" - call void @_out_of_gas() - br label %"$have_gas_2382" - -"$have_gas_2382": ; preds = %"$out_of_gas_2381", %"$have_gas_2377" - %"$consume_2383" = sub i64 %"$gasrem_2379", 1 - store i64 %"$consume_2383", i64* @_gasrem + %"$execptr_load_2379" = load i8*, i8** @_execptr + %"$m1_2381" = call i8* @_fetch_field(i8* %"$execptr_load_2379", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_2380", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i32 1) + %"$m1_2382" = bitcast i8* %"$m1_2381" to %Map_String_String* + store %Map_String_String* %"$m1_2382", %Map_String_String** %m1 + %"$m1_2383" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2383_2384" = bitcast %Map_String_String* %"$m1_2383" to i8* + %"$_literal_cost_call_2385" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_2383_2384") + %"$m1_2386" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2386_2387" = bitcast %Map_String_String* %"$m1_2386" to i8* + %"$_mapsortcost_call_2388" = call i64 @_mapsortcost(i8* %"$$m1_2386_2387") + %"$gasadd_2389" = add i64 %"$_literal_cost_call_2385", %"$_mapsortcost_call_2388" + %"$gasrem_2390" = load i64, i64* @_gasrem + %"$gascmp_2391" = icmp ugt i64 %"$gasadd_2389", %"$gasrem_2390" + br i1 %"$gascmp_2391", label %"$out_of_gas_2392", label %"$have_gas_2393" + +"$out_of_gas_2392": ; preds = %"$have_gas_2376" + call void @_out_of_gas() + br label %"$have_gas_2393" + +"$have_gas_2393": ; preds = %"$out_of_gas_2392", %"$have_gas_2376" + %"$consume_2394" = sub i64 %"$gasrem_2390", %"$gasadd_2389" + store i64 %"$consume_2394", i64* @_gasrem + %"$gasrem_2395" = load i64, i64* @_gasrem + %"$gascmp_2396" = icmp ugt i64 1, %"$gasrem_2395" + br i1 %"$gascmp_2396", label %"$out_of_gas_2397", label %"$have_gas_2398" + +"$out_of_gas_2397": ; preds = %"$have_gas_2393" + call void @_out_of_gas() + br label %"$have_gas_2398" + +"$have_gas_2398": ; preds = %"$out_of_gas_2397", %"$have_gas_2393" + %"$consume_2399" = sub i64 %"$gasrem_2395", 1 + store i64 %"$consume_2399", i64* @_gasrem %c1 = alloca %TName_Option_String* - %"$execptr_load_2384" = load i8*, i8** @_execptr - %"$m1_2385" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_2385_2386" = bitcast %Map_String_String* %"$m1_2385" to i8* - %"$get_key1a_2387" = alloca %String - %"$key1a_2388" = load %String, %String* %key1a - store %String %"$key1a_2388", %String* %"$get_key1a_2387" - %"$$get_key1a_2387_2389" = bitcast %String* %"$get_key1a_2387" to i8* - %"$get_call_2390" = call i8* @_get(i8* %"$execptr_load_2384", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_2385_2386", i8* %"$$get_key1a_2387_2389") - %"$_get_2391" = bitcast i8* %"$get_call_2390" to %TName_Option_String* - store %TName_Option_String* %"$_get_2391", %TName_Option_String** %c1 - %"$gasrem_2392" = load i64, i64* @_gasrem - %"$gascmp_2393" = icmp ugt i64 2, %"$gasrem_2392" - br i1 %"$gascmp_2393", label %"$out_of_gas_2394", label %"$have_gas_2395" - -"$out_of_gas_2394": ; preds = %"$have_gas_2382" - call void @_out_of_gas() - br label %"$have_gas_2395" - -"$have_gas_2395": ; preds = %"$out_of_gas_2394", %"$have_gas_2382" - %"$consume_2396" = sub i64 %"$gasrem_2392", 2 - store i64 %"$consume_2396", i64* @_gasrem - %"$c1_2398" = load %TName_Option_String*, %TName_Option_String** %c1 - %"$c1_tag_2399" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$c1_2398", i32 0, i32 0 - %"$c1_tag_2400" = load i8, i8* %"$c1_tag_2399" - switch i8 %"$c1_tag_2400", label %"$empty_default_2401" [ - i8 0, label %"$Some_2402" - i8 1, label %"$None_2459" + %"$execptr_load_2400" = load i8*, i8** @_execptr + %"$m1_2401" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2401_2402" = bitcast %Map_String_String* %"$m1_2401" to i8* + %"$get_key1a_2403" = alloca %String + %"$key1a_2404" = load %String, %String* %key1a + store %String %"$key1a_2404", %String* %"$get_key1a_2403" + %"$$get_key1a_2403_2405" = bitcast %String* %"$get_key1a_2403" to i8* + %"$get_call_2406" = call i8* @_get(i8* %"$execptr_load_2400", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_2401_2402", i8* %"$$get_key1a_2403_2405") + %"$_get_2407" = bitcast i8* %"$get_call_2406" to %TName_Option_String* + store %TName_Option_String* %"$_get_2407", %TName_Option_String** %c1 + %"$gasrem_2408" = load i64, i64* @_gasrem + %"$gascmp_2409" = icmp ugt i64 2, %"$gasrem_2408" + br i1 %"$gascmp_2409", label %"$out_of_gas_2410", label %"$have_gas_2411" + +"$out_of_gas_2410": ; preds = %"$have_gas_2398" + call void @_out_of_gas() + br label %"$have_gas_2411" + +"$have_gas_2411": ; preds = %"$out_of_gas_2410", %"$have_gas_2398" + %"$consume_2412" = sub i64 %"$gasrem_2408", 2 + store i64 %"$consume_2412", i64* @_gasrem + %"$c1_2414" = load %TName_Option_String*, %TName_Option_String** %c1 + %"$c1_tag_2415" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$c1_2414", i32 0, i32 0 + %"$c1_tag_2416" = load i8, i8* %"$c1_tag_2415" + switch i8 %"$c1_tag_2416", label %"$empty_default_2417" [ + i8 0, label %"$Some_2418" + i8 1, label %"$None_2475" ] -"$Some_2402": ; preds = %"$have_gas_2395" - %"$c1_2403" = bitcast %TName_Option_String* %"$c1_2398" to %CName_Some_String* - %"$c_gep_2404" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$c1_2403", i32 0, i32 1 - %"$c_load_2405" = load %String, %String* %"$c_gep_2404" +"$Some_2418": ; preds = %"$have_gas_2411" + %"$c1_2419" = bitcast %TName_Option_String* %"$c1_2414" to %CName_Some_String* + %"$c_gep_2420" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$c1_2419", i32 0, i32 1 + %"$c_load_2421" = load %String, %String* %"$c_gep_2420" %c = alloca %String - store %String %"$c_load_2405", %String* %c - %"$gasrem_2406" = load i64, i64* @_gasrem - %"$gascmp_2407" = icmp ugt i64 1, %"$gasrem_2406" - br i1 %"$gascmp_2407", label %"$out_of_gas_2408", label %"$have_gas_2409" + store %String %"$c_load_2421", %String* %c + %"$gasrem_2422" = load i64, i64* @_gasrem + %"$gascmp_2423" = icmp ugt i64 1, %"$gasrem_2422" + br i1 %"$gascmp_2423", label %"$out_of_gas_2424", label %"$have_gas_2425" -"$out_of_gas_2408": ; preds = %"$Some_2402" +"$out_of_gas_2424": ; preds = %"$Some_2418" call void @_out_of_gas() - br label %"$have_gas_2409" + br label %"$have_gas_2425" -"$have_gas_2409": ; preds = %"$out_of_gas_2408", %"$Some_2402" - %"$consume_2410" = sub i64 %"$gasrem_2406", 1 - store i64 %"$consume_2410", i64* @_gasrem +"$have_gas_2425": ; preds = %"$out_of_gas_2424", %"$Some_2418" + %"$consume_2426" = sub i64 %"$gasrem_2422", 1 + store i64 %"$consume_2426", i64* @_gasrem %v = alloca %String - %"$gasrem_2411" = load i64, i64* @_gasrem - %"$gascmp_2412" = icmp ugt i64 1, %"$gasrem_2411" - br i1 %"$gascmp_2412", label %"$out_of_gas_2413", label %"$have_gas_2414" + %"$gasrem_2427" = load i64, i64* @_gasrem + %"$gascmp_2428" = icmp ugt i64 1, %"$gasrem_2427" + br i1 %"$gascmp_2428", label %"$out_of_gas_2429", label %"$have_gas_2430" -"$out_of_gas_2413": ; preds = %"$have_gas_2409" +"$out_of_gas_2429": ; preds = %"$have_gas_2425" call void @_out_of_gas() - br label %"$have_gas_2414" + br label %"$have_gas_2430" -"$have_gas_2414": ; preds = %"$out_of_gas_2413", %"$have_gas_2409" - %"$consume_2415" = sub i64 %"$gasrem_2411", 1 - store i64 %"$consume_2415", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2416", i32 0, i32 0), i32 3 }, %String* %v - %"$gasrem_2417" = load i64, i64* @_gasrem - %"$gascmp_2418" = icmp ugt i64 1, %"$gasrem_2417" - br i1 %"$gascmp_2418", label %"$out_of_gas_2419", label %"$have_gas_2420" +"$have_gas_2430": ; preds = %"$out_of_gas_2429", %"$have_gas_2425" + %"$consume_2431" = sub i64 %"$gasrem_2427", 1 + store i64 %"$consume_2431", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2432", i32 0, i32 0), i32 3 }, %String* %v + %"$gasrem_2433" = load i64, i64* @_gasrem + %"$gascmp_2434" = icmp ugt i64 1, %"$gasrem_2433" + br i1 %"$gascmp_2434", label %"$out_of_gas_2435", label %"$have_gas_2436" -"$out_of_gas_2419": ; preds = %"$have_gas_2414" +"$out_of_gas_2435": ; preds = %"$have_gas_2430" call void @_out_of_gas() - br label %"$have_gas_2420" + br label %"$have_gas_2436" -"$have_gas_2420": ; preds = %"$out_of_gas_2419", %"$have_gas_2414" - %"$consume_2421" = sub i64 %"$gasrem_2417", 1 - store i64 %"$consume_2421", i64* @_gasrem +"$have_gas_2436": ; preds = %"$out_of_gas_2435", %"$have_gas_2430" + %"$consume_2437" = sub i64 %"$gasrem_2433", 1 + store i64 %"$consume_2437", i64* @_gasrem %eq = alloca %TName_Bool* - %"$execptr_load_2422" = load i8*, i8** @_execptr - %"$c_2423" = load %String, %String* %c - %"$v_2424" = load %String, %String* %v - %"$eq_call_2425" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_2422", %String %"$c_2423", %String %"$v_2424") - store %TName_Bool* %"$eq_call_2425", %TName_Bool** %eq - %"$gasrem_2426" = load i64, i64* @_gasrem - %"$gascmp_2427" = icmp ugt i64 2, %"$gasrem_2426" - br i1 %"$gascmp_2427", label %"$out_of_gas_2428", label %"$have_gas_2429" - -"$out_of_gas_2428": ; preds = %"$have_gas_2420" - call void @_out_of_gas() - br label %"$have_gas_2429" - -"$have_gas_2429": ; preds = %"$out_of_gas_2428", %"$have_gas_2420" - %"$consume_2430" = sub i64 %"$gasrem_2426", 2 - store i64 %"$consume_2430", i64* @_gasrem - %"$eq_2432" = load %TName_Bool*, %TName_Bool** %eq - %"$eq_tag_2433" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_2432", i32 0, i32 0 - %"$eq_tag_2434" = load i8, i8* %"$eq_tag_2433" - switch i8 %"$eq_tag_2434", label %"$empty_default_2435" [ - i8 0, label %"$True_2436" - i8 1, label %"$False_2438" + %"$execptr_load_2438" = load i8*, i8** @_execptr + %"$c_2439" = load %String, %String* %c + %"$v_2440" = load %String, %String* %v + %"$eq_call_2441" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_2438", %String %"$c_2439", %String %"$v_2440") + store %TName_Bool* %"$eq_call_2441", %TName_Bool** %eq + %"$gasrem_2442" = load i64, i64* @_gasrem + %"$gascmp_2443" = icmp ugt i64 2, %"$gasrem_2442" + br i1 %"$gascmp_2443", label %"$out_of_gas_2444", label %"$have_gas_2445" + +"$out_of_gas_2444": ; preds = %"$have_gas_2436" + call void @_out_of_gas() + br label %"$have_gas_2445" + +"$have_gas_2445": ; preds = %"$out_of_gas_2444", %"$have_gas_2436" + %"$consume_2446" = sub i64 %"$gasrem_2442", 2 + store i64 %"$consume_2446", i64* @_gasrem + %"$eq_2448" = load %TName_Bool*, %TName_Bool** %eq + %"$eq_tag_2449" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_2448", i32 0, i32 0 + %"$eq_tag_2450" = load i8, i8* %"$eq_tag_2449" + switch i8 %"$eq_tag_2450", label %"$empty_default_2451" [ + i8 0, label %"$True_2452" + i8 1, label %"$False_2454" ] -"$True_2436": ; preds = %"$have_gas_2429" - %"$eq_2437" = bitcast %TName_Bool* %"$eq_2432" to %CName_True* - br label %"$matchsucc_2431" +"$True_2452": ; preds = %"$have_gas_2445" + %"$eq_2453" = bitcast %TName_Bool* %"$eq_2448" to %CName_True* + br label %"$matchsucc_2447" -"$False_2438": ; preds = %"$have_gas_2429" - %"$eq_2439" = bitcast %TName_Bool* %"$eq_2432" to %CName_False* - %"$gasrem_2440" = load i64, i64* @_gasrem - %"$gascmp_2441" = icmp ugt i64 1, %"$gasrem_2440" - br i1 %"$gascmp_2441", label %"$out_of_gas_2442", label %"$have_gas_2443" +"$False_2454": ; preds = %"$have_gas_2445" + %"$eq_2455" = bitcast %TName_Bool* %"$eq_2448" to %CName_False* + %"$gasrem_2456" = load i64, i64* @_gasrem + %"$gascmp_2457" = icmp ugt i64 1, %"$gasrem_2456" + br i1 %"$gascmp_2457", label %"$out_of_gas_2458", label %"$have_gas_2459" -"$out_of_gas_2442": ; preds = %"$False_2438" +"$out_of_gas_2458": ; preds = %"$False_2454" call void @_out_of_gas() - br label %"$have_gas_2443" + br label %"$have_gas_2459" -"$have_gas_2443": ; preds = %"$out_of_gas_2442", %"$False_2438" - %"$consume_2444" = sub i64 %"$gasrem_2440", 1 - store i64 %"$consume_2444", i64* @_gasrem +"$have_gas_2459": ; preds = %"$out_of_gas_2458", %"$False_2454" + %"$consume_2460" = sub i64 %"$gasrem_2456", 1 + store i64 %"$consume_2460", i64* @_gasrem %m = alloca %String - %"$gasrem_2445" = load i64, i64* @_gasrem - %"$gascmp_2446" = icmp ugt i64 1, %"$gasrem_2445" - br i1 %"$gascmp_2446", label %"$out_of_gas_2447", label %"$have_gas_2448" + %"$gasrem_2461" = load i64, i64* @_gasrem + %"$gascmp_2462" = icmp ugt i64 1, %"$gasrem_2461" + br i1 %"$gascmp_2462", label %"$out_of_gas_2463", label %"$have_gas_2464" -"$out_of_gas_2447": ; preds = %"$have_gas_2443" +"$out_of_gas_2463": ; preds = %"$have_gas_2459" call void @_out_of_gas() - br label %"$have_gas_2448" + br label %"$have_gas_2464" -"$have_gas_2448": ; preds = %"$out_of_gas_2447", %"$have_gas_2443" - %"$consume_2449" = sub i64 %"$gasrem_2445", 1 - store i64 %"$consume_2449", i64* @_gasrem - store %String { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @"$stringlit_2450", i32 0, i32 0), i32 25 }, %String* %m - %"$gasrem_2451" = load i64, i64* @_gasrem - %"$gascmp_2452" = icmp ugt i64 1, %"$gasrem_2451" - br i1 %"$gascmp_2452", label %"$out_of_gas_2453", label %"$have_gas_2454" +"$have_gas_2464": ; preds = %"$out_of_gas_2463", %"$have_gas_2459" + %"$consume_2465" = sub i64 %"$gasrem_2461", 1 + store i64 %"$consume_2465", i64* @_gasrem + store %String { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @"$stringlit_2466", i32 0, i32 0), i32 25 }, %String* %m + %"$gasrem_2467" = load i64, i64* @_gasrem + %"$gascmp_2468" = icmp ugt i64 1, %"$gasrem_2467" + br i1 %"$gascmp_2468", label %"$out_of_gas_2469", label %"$have_gas_2470" -"$out_of_gas_2453": ; preds = %"$have_gas_2448" +"$out_of_gas_2469": ; preds = %"$have_gas_2464" call void @_out_of_gas() - br label %"$have_gas_2454" + br label %"$have_gas_2470" -"$have_gas_2454": ; preds = %"$out_of_gas_2453", %"$have_gas_2448" - %"$consume_2455" = sub i64 %"$gasrem_2451", 1 - store i64 %"$consume_2455", i64* @_gasrem - %"$fail_msg__sender_2456" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2456" - %"$tname_2457" = load %String, %String* %tname - %"$m_2458" = load %String, %String* %m - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2456", %String %"$tname_2457", %String %"$m_2458") - br label %"$matchsucc_2431" +"$have_gas_2470": ; preds = %"$out_of_gas_2469", %"$have_gas_2464" + %"$consume_2471" = sub i64 %"$gasrem_2467", 1 + store i64 %"$consume_2471", i64* @_gasrem + %"$fail_msg__sender_2472" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2472" + %"$tname_2473" = load %String, %String* %tname + %"$m_2474" = load %String, %String* %m + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2472", %String %"$tname_2473", %String %"$m_2474") + br label %"$matchsucc_2447" -"$empty_default_2435": ; preds = %"$have_gas_2429" - br label %"$matchsucc_2431" +"$empty_default_2451": ; preds = %"$have_gas_2445" + br label %"$matchsucc_2447" -"$matchsucc_2431": ; preds = %"$have_gas_2454", %"$True_2436", %"$empty_default_2435" - br label %"$matchsucc_2397" +"$matchsucc_2447": ; preds = %"$have_gas_2470", %"$True_2452", %"$empty_default_2451" + br label %"$matchsucc_2413" -"$None_2459": ; preds = %"$have_gas_2395" - %"$c1_2460" = bitcast %TName_Option_String* %"$c1_2398" to %CName_None_String* - %"$gasrem_2461" = load i64, i64* @_gasrem - %"$gascmp_2462" = icmp ugt i64 1, %"$gasrem_2461" - br i1 %"$gascmp_2462", label %"$out_of_gas_2463", label %"$have_gas_2464" +"$None_2475": ; preds = %"$have_gas_2411" + %"$c1_2476" = bitcast %TName_Option_String* %"$c1_2414" to %CName_None_String* + %"$gasrem_2477" = load i64, i64* @_gasrem + %"$gascmp_2478" = icmp ugt i64 1, %"$gasrem_2477" + br i1 %"$gascmp_2478", label %"$out_of_gas_2479", label %"$have_gas_2480" -"$out_of_gas_2463": ; preds = %"$None_2459" +"$out_of_gas_2479": ; preds = %"$None_2475" call void @_out_of_gas() - br label %"$have_gas_2464" + br label %"$have_gas_2480" -"$have_gas_2464": ; preds = %"$out_of_gas_2463", %"$None_2459" - %"$consume_2465" = sub i64 %"$gasrem_2461", 1 - store i64 %"$consume_2465", i64* @_gasrem +"$have_gas_2480": ; preds = %"$out_of_gas_2479", %"$None_2475" + %"$consume_2481" = sub i64 %"$gasrem_2477", 1 + store i64 %"$consume_2481", i64* @_gasrem %m2 = alloca %String - %"$gasrem_2466" = load i64, i64* @_gasrem - %"$gascmp_2467" = icmp ugt i64 1, %"$gasrem_2466" - br i1 %"$gascmp_2467", label %"$out_of_gas_2468", label %"$have_gas_2469" - -"$out_of_gas_2468": ; preds = %"$have_gas_2464" - call void @_out_of_gas() - br label %"$have_gas_2469" - -"$have_gas_2469": ; preds = %"$out_of_gas_2468", %"$have_gas_2464" - %"$consume_2470" = sub i64 %"$gasrem_2466", 1 - store i64 %"$consume_2470", i64* @_gasrem - store %String { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stringlit_2471", i32 0, i32 0), i32 15 }, %String* %m2 - %"$gasrem_2472" = load i64, i64* @_gasrem - %"$gascmp_2473" = icmp ugt i64 1, %"$gasrem_2472" - br i1 %"$gascmp_2473", label %"$out_of_gas_2474", label %"$have_gas_2475" - -"$out_of_gas_2474": ; preds = %"$have_gas_2469" - call void @_out_of_gas() - br label %"$have_gas_2475" - -"$have_gas_2475": ; preds = %"$out_of_gas_2474", %"$have_gas_2469" - %"$consume_2476" = sub i64 %"$gasrem_2472", 1 - store i64 %"$consume_2476", i64* @_gasrem - %"$fail_msg__sender_2477" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2477" - %"$tname_2478" = load %String, %String* %tname - %"$m_2479" = load %String, %String* %m2 - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2477", %String %"$tname_2478", %String %"$m_2479") - br label %"$matchsucc_2397" - -"$empty_default_2401": ; preds = %"$have_gas_2395" - br label %"$matchsucc_2397" - -"$matchsucc_2397": ; preds = %"$have_gas_2475", %"$matchsucc_2431", %"$empty_default_2401" - %"$gasrem_2480" = load i64, i64* @_gasrem - %"$gascmp_2481" = icmp ugt i64 1, %"$gasrem_2480" - br i1 %"$gascmp_2481", label %"$out_of_gas_2482", label %"$have_gas_2483" - -"$out_of_gas_2482": ; preds = %"$matchsucc_2397" - call void @_out_of_gas() - br label %"$have_gas_2483" - -"$have_gas_2483": ; preds = %"$out_of_gas_2482", %"$matchsucc_2397" - %"$consume_2484" = sub i64 %"$gasrem_2480", 1 - store i64 %"$consume_2484", i64* @_gasrem - %"$indices_buf_2485_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2485_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2485_salloc_load", i64 16) - %"$indices_buf_2485_salloc" = bitcast i8* %"$indices_buf_2485_salloc_salloc" to [16 x i8]* - %"$indices_buf_2485" = bitcast [16 x i8]* %"$indices_buf_2485_salloc" to i8* - %"$key1a_2486" = load %String, %String* %key1a - %"$indices_gep_2487" = getelementptr i8, i8* %"$indices_buf_2485", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_2487" to %String* - store %String %"$key1a_2486", %String* %indices_cast - %"$execptr_load_2488" = load i8*, i8** @_execptr - call void @_update_field(i8* %"$execptr_load_2488", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_2489", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_2485", i8* null) + %"$gasrem_2482" = load i64, i64* @_gasrem + %"$gascmp_2483" = icmp ugt i64 1, %"$gasrem_2482" + br i1 %"$gascmp_2483", label %"$out_of_gas_2484", label %"$have_gas_2485" + +"$out_of_gas_2484": ; preds = %"$have_gas_2480" + call void @_out_of_gas() + br label %"$have_gas_2485" + +"$have_gas_2485": ; preds = %"$out_of_gas_2484", %"$have_gas_2480" + %"$consume_2486" = sub i64 %"$gasrem_2482", 1 + store i64 %"$consume_2486", i64* @_gasrem + store %String { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stringlit_2487", i32 0, i32 0), i32 15 }, %String* %m2 + %"$gasrem_2488" = load i64, i64* @_gasrem + %"$gascmp_2489" = icmp ugt i64 1, %"$gasrem_2488" + br i1 %"$gascmp_2489", label %"$out_of_gas_2490", label %"$have_gas_2491" + +"$out_of_gas_2490": ; preds = %"$have_gas_2485" + call void @_out_of_gas() + br label %"$have_gas_2491" + +"$have_gas_2491": ; preds = %"$out_of_gas_2490", %"$have_gas_2485" + %"$consume_2492" = sub i64 %"$gasrem_2488", 1 + store i64 %"$consume_2492", i64* @_gasrem + %"$fail_msg__sender_2493" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2493" + %"$tname_2494" = load %String, %String* %tname + %"$m_2495" = load %String, %String* %m2 + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2493", %String %"$tname_2494", %String %"$m_2495") + br label %"$matchsucc_2413" + +"$empty_default_2417": ; preds = %"$have_gas_2411" + br label %"$matchsucc_2413" + +"$matchsucc_2413": ; preds = %"$have_gas_2491", %"$matchsucc_2447", %"$empty_default_2417" + %"$gasrem_2496" = load i64, i64* @_gasrem + %"$gascmp_2497" = icmp ugt i64 1, %"$gasrem_2496" + br i1 %"$gascmp_2497", label %"$out_of_gas_2498", label %"$have_gas_2499" + +"$out_of_gas_2498": ; preds = %"$matchsucc_2413" + call void @_out_of_gas() + br label %"$have_gas_2499" + +"$have_gas_2499": ; preds = %"$out_of_gas_2498", %"$matchsucc_2413" + %"$consume_2500" = sub i64 %"$gasrem_2496", 1 + store i64 %"$consume_2500", i64* @_gasrem + %"$indices_buf_2501_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_2501_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2501_salloc_load", i64 16) + %"$indices_buf_2501_salloc" = bitcast i8* %"$indices_buf_2501_salloc_salloc" to [16 x i8]* + %"$indices_buf_2501" = bitcast [16 x i8]* %"$indices_buf_2501_salloc" to i8* + %"$key1a_2502" = load %String, %String* %key1a + %"$indices_gep_2503" = getelementptr i8, i8* %"$indices_buf_2501", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_2503" to %String* + store %String %"$key1a_2502", %String* %indices_cast + %"$execptr_load_2504" = load i8*, i8** @_execptr + call void @_update_field(i8* %"$execptr_load_2504", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_2505", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_2501", i8* null) ret void } @@ -5174,805 +5200,769 @@ declare i8* @_get(i8*, %_TyDescrTy_Typ*, i8*, i8*) define void @t10(i8* %0) { entry: - %"$_amount_2491" = getelementptr i8, i8* %0, i32 0 - %"$_amount_2492" = bitcast i8* %"$_amount_2491" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_2492" - %"$_sender_2493" = getelementptr i8, i8* %0, i32 16 - %"$_sender_2494" = bitcast i8* %"$_sender_2493" to [20 x i8]* - call void @"$t10_2339"(%Uint128 %_amount, [20 x i8]* %"$_sender_2494") + %"$_amount_2507" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2508" = bitcast i8* %"$_amount_2507" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2508" + %"$_sender_2509" = getelementptr i8, i8* %0, i32 16 + %"$_sender_2510" = bitcast i8* %"$_sender_2509" to [20 x i8]* + call void @"$t10_2355"(%Uint128 %_amount, [20 x i8]* %"$_sender_2510") ret void } -define internal void @"$t11_2495"(%Uint128 %_amount, [20 x i8]* %"$_sender_2496") { +define internal void @"$t11_2511"(%Uint128 %_amount, [20 x i8]* %"$_sender_2512") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_2496" - %"$gasrem_2497" = load i64, i64* @_gasrem - %"$gascmp_2498" = icmp ugt i64 1, %"$gasrem_2497" - br i1 %"$gascmp_2498", label %"$out_of_gas_2499", label %"$have_gas_2500" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2512" + %"$gasrem_2513" = load i64, i64* @_gasrem + %"$gascmp_2514" = icmp ugt i64 1, %"$gasrem_2513" + br i1 %"$gascmp_2514", label %"$out_of_gas_2515", label %"$have_gas_2516" -"$out_of_gas_2499": ; preds = %entry +"$out_of_gas_2515": ; preds = %entry call void @_out_of_gas() - br label %"$have_gas_2500" + br label %"$have_gas_2516" -"$have_gas_2500": ; preds = %"$out_of_gas_2499", %entry - %"$consume_2501" = sub i64 %"$gasrem_2497", 1 - store i64 %"$consume_2501", i64* @_gasrem +"$have_gas_2516": ; preds = %"$out_of_gas_2515", %entry + %"$consume_2517" = sub i64 %"$gasrem_2513", 1 + store i64 %"$consume_2517", i64* @_gasrem %tname = alloca %String - %"$gasrem_2502" = load i64, i64* @_gasrem - %"$gascmp_2503" = icmp ugt i64 1, %"$gasrem_2502" - br i1 %"$gascmp_2503", label %"$out_of_gas_2504", label %"$have_gas_2505" + %"$gasrem_2518" = load i64, i64* @_gasrem + %"$gascmp_2519" = icmp ugt i64 1, %"$gasrem_2518" + br i1 %"$gascmp_2519", label %"$out_of_gas_2520", label %"$have_gas_2521" -"$out_of_gas_2504": ; preds = %"$have_gas_2500" +"$out_of_gas_2520": ; preds = %"$have_gas_2516" call void @_out_of_gas() - br label %"$have_gas_2505" + br label %"$have_gas_2521" -"$have_gas_2505": ; preds = %"$out_of_gas_2504", %"$have_gas_2500" - %"$consume_2506" = sub i64 %"$gasrem_2502", 1 - store i64 %"$consume_2506", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2507", i32 0, i32 0), i32 3 }, %String* %tname +"$have_gas_2521": ; preds = %"$out_of_gas_2520", %"$have_gas_2516" + %"$consume_2522" = sub i64 %"$gasrem_2518", 1 + store i64 %"$consume_2522", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2523", i32 0, i32 0), i32 3 }, %String* %tname %m1 = alloca %Map_String_String* - %"$execptr_load_2508" = load i8*, i8** @_execptr - %"$m1_2510" = call i8* @_fetch_field(i8* %"$execptr_load_2508", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_2509", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i32 1) - %"$m1_2511" = bitcast i8* %"$m1_2510" to %Map_String_String* - store %Map_String_String* %"$m1_2511", %Map_String_String** %m1 - %"$m1_2512" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_2512_2513" = bitcast %Map_String_String* %"$m1_2512" to i8* - %"$_literal_cost_call_2514" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_2512_2513") - %"$m1_2515" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_2515_2516" = bitcast %Map_String_String* %"$m1_2515" to i8* - %"$_mapsortcost_call_2517" = call i64 @_mapsortcost(i8* %"$$m1_2515_2516") - %"$gasadd_2518" = add i64 %"$_literal_cost_call_2514", %"$_mapsortcost_call_2517" - %"$gasrem_2519" = load i64, i64* @_gasrem - %"$gascmp_2520" = icmp ugt i64 %"$gasadd_2518", %"$gasrem_2519" - br i1 %"$gascmp_2520", label %"$out_of_gas_2521", label %"$have_gas_2522" - -"$out_of_gas_2521": ; preds = %"$have_gas_2505" - call void @_out_of_gas() - br label %"$have_gas_2522" - -"$have_gas_2522": ; preds = %"$out_of_gas_2521", %"$have_gas_2505" - %"$consume_2523" = sub i64 %"$gasrem_2519", %"$gasadd_2518" - store i64 %"$consume_2523", i64* @_gasrem - %"$gasrem_2524" = load i64, i64* @_gasrem - %"$gascmp_2525" = icmp ugt i64 1, %"$gasrem_2524" - br i1 %"$gascmp_2525", label %"$out_of_gas_2526", label %"$have_gas_2527" - -"$out_of_gas_2526": ; preds = %"$have_gas_2522" - call void @_out_of_gas() - br label %"$have_gas_2527" - -"$have_gas_2527": ; preds = %"$out_of_gas_2526", %"$have_gas_2522" - %"$consume_2528" = sub i64 %"$gasrem_2524", 1 - store i64 %"$consume_2528", i64* @_gasrem + %"$execptr_load_2524" = load i8*, i8** @_execptr + %"$m1_2526" = call i8* @_fetch_field(i8* %"$execptr_load_2524", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_2525", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i32 1) + %"$m1_2527" = bitcast i8* %"$m1_2526" to %Map_String_String* + store %Map_String_String* %"$m1_2527", %Map_String_String** %m1 + %"$m1_2528" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2528_2529" = bitcast %Map_String_String* %"$m1_2528" to i8* + %"$_literal_cost_call_2530" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_2528_2529") + %"$m1_2531" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2531_2532" = bitcast %Map_String_String* %"$m1_2531" to i8* + %"$_mapsortcost_call_2533" = call i64 @_mapsortcost(i8* %"$$m1_2531_2532") + %"$gasadd_2534" = add i64 %"$_literal_cost_call_2530", %"$_mapsortcost_call_2533" + %"$gasrem_2535" = load i64, i64* @_gasrem + %"$gascmp_2536" = icmp ugt i64 %"$gasadd_2534", %"$gasrem_2535" + br i1 %"$gascmp_2536", label %"$out_of_gas_2537", label %"$have_gas_2538" + +"$out_of_gas_2537": ; preds = %"$have_gas_2521" + call void @_out_of_gas() + br label %"$have_gas_2538" + +"$have_gas_2538": ; preds = %"$out_of_gas_2537", %"$have_gas_2521" + %"$consume_2539" = sub i64 %"$gasrem_2535", %"$gasadd_2534" + store i64 %"$consume_2539", i64* @_gasrem + %"$gasrem_2540" = load i64, i64* @_gasrem + %"$gascmp_2541" = icmp ugt i64 1, %"$gasrem_2540" + br i1 %"$gascmp_2541", label %"$out_of_gas_2542", label %"$have_gas_2543" + +"$out_of_gas_2542": ; preds = %"$have_gas_2538" + call void @_out_of_gas() + br label %"$have_gas_2543" + +"$have_gas_2543": ; preds = %"$out_of_gas_2542", %"$have_gas_2538" + %"$consume_2544" = sub i64 %"$gasrem_2540", 1 + store i64 %"$consume_2544", i64* @_gasrem %m1_size = alloca %Uint32 - %"$m1_2529" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_2529_2530" = bitcast %Map_String_String* %"$m1_2529" to i8* - %"$size_call_2531" = call %Uint32 @_size(i8* %"$$m1_2529_2530") - store %Uint32 %"$size_call_2531", %Uint32* %m1_size - %"$gasrem_2532" = load i64, i64* @_gasrem - %"$gascmp_2533" = icmp ugt i64 1, %"$gasrem_2532" - br i1 %"$gascmp_2533", label %"$out_of_gas_2534", label %"$have_gas_2535" + %"$m1_2545" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_2545_2546" = bitcast %Map_String_String* %"$m1_2545" to i8* + %"$size_call_2547" = call %Uint32 @_size(i8* %"$$m1_2545_2546") + store %Uint32 %"$size_call_2547", %Uint32* %m1_size + %"$gasrem_2548" = load i64, i64* @_gasrem + %"$gascmp_2549" = icmp ugt i64 1, %"$gasrem_2548" + br i1 %"$gascmp_2549", label %"$out_of_gas_2550", label %"$have_gas_2551" -"$out_of_gas_2534": ; preds = %"$have_gas_2527" +"$out_of_gas_2550": ; preds = %"$have_gas_2543" call void @_out_of_gas() - br label %"$have_gas_2535" + br label %"$have_gas_2551" -"$have_gas_2535": ; preds = %"$out_of_gas_2534", %"$have_gas_2527" - %"$consume_2536" = sub i64 %"$gasrem_2532", 1 - store i64 %"$consume_2536", i64* @_gasrem +"$have_gas_2551": ; preds = %"$out_of_gas_2550", %"$have_gas_2543" + %"$consume_2552" = sub i64 %"$gasrem_2548", 1 + store i64 %"$consume_2552", i64* @_gasrem %zero = alloca %Uint32 - %"$gasrem_2537" = load i64, i64* @_gasrem - %"$gascmp_2538" = icmp ugt i64 1, %"$gasrem_2537" - br i1 %"$gascmp_2538", label %"$out_of_gas_2539", label %"$have_gas_2540" + %"$gasrem_2553" = load i64, i64* @_gasrem + %"$gascmp_2554" = icmp ugt i64 1, %"$gasrem_2553" + br i1 %"$gascmp_2554", label %"$out_of_gas_2555", label %"$have_gas_2556" -"$out_of_gas_2539": ; preds = %"$have_gas_2535" +"$out_of_gas_2555": ; preds = %"$have_gas_2551" call void @_out_of_gas() - br label %"$have_gas_2540" + br label %"$have_gas_2556" -"$have_gas_2540": ; preds = %"$out_of_gas_2539", %"$have_gas_2535" - %"$consume_2541" = sub i64 %"$gasrem_2537", 1 - store i64 %"$consume_2541", i64* @_gasrem +"$have_gas_2556": ; preds = %"$out_of_gas_2555", %"$have_gas_2551" + %"$consume_2557" = sub i64 %"$gasrem_2553", 1 + store i64 %"$consume_2557", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %zero - %"$gasrem_2542" = load i64, i64* @_gasrem - %"$gascmp_2543" = icmp ugt i64 1, %"$gasrem_2542" - br i1 %"$gascmp_2543", label %"$out_of_gas_2544", label %"$have_gas_2545" + %"$gasrem_2558" = load i64, i64* @_gasrem + %"$gascmp_2559" = icmp ugt i64 1, %"$gasrem_2558" + br i1 %"$gascmp_2559", label %"$out_of_gas_2560", label %"$have_gas_2561" -"$out_of_gas_2544": ; preds = %"$have_gas_2540" +"$out_of_gas_2560": ; preds = %"$have_gas_2556" call void @_out_of_gas() - br label %"$have_gas_2545" + br label %"$have_gas_2561" -"$have_gas_2545": ; preds = %"$out_of_gas_2544", %"$have_gas_2540" - %"$consume_2546" = sub i64 %"$gasrem_2542", 1 - store i64 %"$consume_2546", i64* @_gasrem +"$have_gas_2561": ; preds = %"$out_of_gas_2560", %"$have_gas_2556" + %"$consume_2562" = sub i64 %"$gasrem_2558", 1 + store i64 %"$consume_2562", i64* @_gasrem %is_empty = alloca %TName_Bool* - %"$execptr_load_2547" = load i8*, i8** @_execptr - %"$m1_size_2548" = load %Uint32, %Uint32* %m1_size - %"$zero_2549" = load %Uint32, %Uint32* %zero - %"$eq_call_2550" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_2547", %Uint32 %"$m1_size_2548", %Uint32 %"$zero_2549") - store %TName_Bool* %"$eq_call_2550", %TName_Bool** %is_empty - %"$gasrem_2551" = load i64, i64* @_gasrem - %"$gascmp_2552" = icmp ugt i64 2, %"$gasrem_2551" - br i1 %"$gascmp_2552", label %"$out_of_gas_2553", label %"$have_gas_2554" - -"$out_of_gas_2553": ; preds = %"$have_gas_2545" - call void @_out_of_gas() - br label %"$have_gas_2554" - -"$have_gas_2554": ; preds = %"$out_of_gas_2553", %"$have_gas_2545" - %"$consume_2555" = sub i64 %"$gasrem_2551", 2 - store i64 %"$consume_2555", i64* @_gasrem - %"$is_empty_2557" = load %TName_Bool*, %TName_Bool** %is_empty - %"$is_empty_tag_2558" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_2557", i32 0, i32 0 - %"$is_empty_tag_2559" = load i8, i8* %"$is_empty_tag_2558" - switch i8 %"$is_empty_tag_2559", label %"$empty_default_2560" [ - i8 0, label %"$True_2561" - i8 1, label %"$False_2563" + %"$execptr_load_2563" = load i8*, i8** @_execptr + %"$m1_size_2564" = load %Uint32, %Uint32* %m1_size + %"$zero_2565" = load %Uint32, %Uint32* %zero + %"$eq_call_2566" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_2563", %Uint32 %"$m1_size_2564", %Uint32 %"$zero_2565") + store %TName_Bool* %"$eq_call_2566", %TName_Bool** %is_empty + %"$gasrem_2567" = load i64, i64* @_gasrem + %"$gascmp_2568" = icmp ugt i64 2, %"$gasrem_2567" + br i1 %"$gascmp_2568", label %"$out_of_gas_2569", label %"$have_gas_2570" + +"$out_of_gas_2569": ; preds = %"$have_gas_2561" + call void @_out_of_gas() + br label %"$have_gas_2570" + +"$have_gas_2570": ; preds = %"$out_of_gas_2569", %"$have_gas_2561" + %"$consume_2571" = sub i64 %"$gasrem_2567", 2 + store i64 %"$consume_2571", i64* @_gasrem + %"$is_empty_2573" = load %TName_Bool*, %TName_Bool** %is_empty + %"$is_empty_tag_2574" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_2573", i32 0, i32 0 + %"$is_empty_tag_2575" = load i8, i8* %"$is_empty_tag_2574" + switch i8 %"$is_empty_tag_2575", label %"$empty_default_2576" [ + i8 0, label %"$True_2577" + i8 1, label %"$False_2579" ] -"$True_2561": ; preds = %"$have_gas_2554" - %"$is_empty_2562" = bitcast %TName_Bool* %"$is_empty_2557" to %CName_True* - br label %"$matchsucc_2556" +"$True_2577": ; preds = %"$have_gas_2570" + %"$is_empty_2578" = bitcast %TName_Bool* %"$is_empty_2573" to %CName_True* + br label %"$matchsucc_2572" -"$False_2563": ; preds = %"$have_gas_2554" - %"$is_empty_2564" = bitcast %TName_Bool* %"$is_empty_2557" to %CName_False* - %"$gasrem_2565" = load i64, i64* @_gasrem - %"$gascmp_2566" = icmp ugt i64 1, %"$gasrem_2565" - br i1 %"$gascmp_2566", label %"$out_of_gas_2567", label %"$have_gas_2568" +"$False_2579": ; preds = %"$have_gas_2570" + %"$is_empty_2580" = bitcast %TName_Bool* %"$is_empty_2573" to %CName_False* + %"$gasrem_2581" = load i64, i64* @_gasrem + %"$gascmp_2582" = icmp ugt i64 1, %"$gasrem_2581" + br i1 %"$gascmp_2582", label %"$out_of_gas_2583", label %"$have_gas_2584" -"$out_of_gas_2567": ; preds = %"$False_2563" +"$out_of_gas_2583": ; preds = %"$False_2579" call void @_out_of_gas() - br label %"$have_gas_2568" - -"$have_gas_2568": ; preds = %"$out_of_gas_2567", %"$False_2563" - %"$consume_2569" = sub i64 %"$gasrem_2565", 1 - store i64 %"$consume_2569", i64* @_gasrem - %"$fail__sender_2570" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_2570" - %"$tname_2571" = load %String, %String* %tname - call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_2570", %String %"$tname_2571") - br label %"$matchsucc_2556" + br label %"$have_gas_2584" -"$empty_default_2560": ; preds = %"$have_gas_2554" - br label %"$matchsucc_2556" +"$have_gas_2584": ; preds = %"$out_of_gas_2583", %"$False_2579" + %"$consume_2585" = sub i64 %"$gasrem_2581", 1 + store i64 %"$consume_2585", i64* @_gasrem + %"$fail__sender_2586" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_2586" + %"$tname_2587" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_2586", %String %"$tname_2587") + br label %"$matchsucc_2572" -"$matchsucc_2556": ; preds = %"$have_gas_2568", %"$True_2561", %"$empty_default_2560" - %"$gasrem_2572" = load i64, i64* @_gasrem - %"$gascmp_2573" = icmp ugt i64 1, %"$gasrem_2572" - br i1 %"$gascmp_2573", label %"$out_of_gas_2574", label %"$have_gas_2575" +"$empty_default_2576": ; preds = %"$have_gas_2570" + br label %"$matchsucc_2572" -"$out_of_gas_2574": ; preds = %"$matchsucc_2556" - call void @_out_of_gas() - br label %"$have_gas_2575" - -"$have_gas_2575": ; preds = %"$out_of_gas_2574", %"$matchsucc_2556" - %"$consume_2576" = sub i64 %"$gasrem_2572", 1 - store i64 %"$consume_2576", i64* @_gasrem - %e2 = alloca %"Map_String_Map_(String)_(String)"* - %"$gasrem_2577" = load i64, i64* @_gasrem - %"$gascmp_2578" = icmp ugt i64 1, %"$gasrem_2577" - br i1 %"$gascmp_2578", label %"$out_of_gas_2579", label %"$have_gas_2580" - -"$out_of_gas_2579": ; preds = %"$have_gas_2575" - call void @_out_of_gas() - br label %"$have_gas_2580" - -"$have_gas_2580": ; preds = %"$out_of_gas_2579", %"$have_gas_2575" - %"$consume_2581" = sub i64 %"$gasrem_2577", 1 - store i64 %"$consume_2581", i64* @_gasrem - %"$execptr_load_2582" = load i8*, i8** @_execptr - %"$_new_empty_map_call_2583" = call i8* @_new_empty_map(i8* %"$execptr_load_2582") - %"$Emp_2584" = bitcast i8* %"$_new_empty_map_call_2583" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$Emp_2584", %"Map_String_Map_(String)_(String)"** %e2 - %"$e2_2585" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %e2 - %"$$e2_2585_2586" = bitcast %"Map_String_Map_(String)_(String)"* %"$e2_2585" to i8* - %"$_literal_cost_call_2587" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$e2_2585_2586") +"$matchsucc_2572": ; preds = %"$have_gas_2584", %"$True_2577", %"$empty_default_2576" %"$gasrem_2588" = load i64, i64* @_gasrem - %"$gascmp_2589" = icmp ugt i64 %"$_literal_cost_call_2587", %"$gasrem_2588" + %"$gascmp_2589" = icmp ugt i64 1, %"$gasrem_2588" br i1 %"$gascmp_2589", label %"$out_of_gas_2590", label %"$have_gas_2591" -"$out_of_gas_2590": ; preds = %"$have_gas_2580" +"$out_of_gas_2590": ; preds = %"$matchsucc_2572" call void @_out_of_gas() br label %"$have_gas_2591" -"$have_gas_2591": ; preds = %"$out_of_gas_2590", %"$have_gas_2580" - %"$consume_2592" = sub i64 %"$gasrem_2588", %"$_literal_cost_call_2587" +"$have_gas_2591": ; preds = %"$out_of_gas_2590", %"$matchsucc_2572" + %"$consume_2592" = sub i64 %"$gasrem_2588", 1 store i64 %"$consume_2592", i64* @_gasrem - %"$execptr_load_2593" = load i8*, i8** @_execptr - %"$e2_2595" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %e2 - %"$update_value_2596" = bitcast %"Map_String_Map_(String)_(String)"* %"$e2_2595" to i8* - call void @_update_field(i8* %"$execptr_load_2593", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_2594", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 0, i8* null, i8* %"$update_value_2596") + %e2 = alloca %"Map_String_Map_(String)_(String)"* + %"$gasrem_2593" = load i64, i64* @_gasrem + %"$gascmp_2594" = icmp ugt i64 1, %"$gasrem_2593" + br i1 %"$gascmp_2594", label %"$out_of_gas_2595", label %"$have_gas_2596" + +"$out_of_gas_2595": ; preds = %"$have_gas_2591" + call void @_out_of_gas() + br label %"$have_gas_2596" + +"$have_gas_2596": ; preds = %"$out_of_gas_2595", %"$have_gas_2591" + %"$consume_2597" = sub i64 %"$gasrem_2593", 1 + store i64 %"$consume_2597", i64* @_gasrem + %"$execptr_load_2598" = load i8*, i8** @_execptr + %"$_new_empty_map_call_2599" = call i8* @_new_empty_map(i8* %"$execptr_load_2598") + %"$Emp_2600" = bitcast i8* %"$_new_empty_map_call_2599" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$Emp_2600", %"Map_String_Map_(String)_(String)"** %e2 + %"$e2_2601" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %e2 + %"$$e2_2601_2602" = bitcast %"Map_String_Map_(String)_(String)"* %"$e2_2601" to i8* + %"$_literal_cost_call_2603" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$e2_2601_2602") + %"$gasrem_2604" = load i64, i64* @_gasrem + %"$gascmp_2605" = icmp ugt i64 %"$_literal_cost_call_2603", %"$gasrem_2604" + br i1 %"$gascmp_2605", label %"$out_of_gas_2606", label %"$have_gas_2607" + +"$out_of_gas_2606": ; preds = %"$have_gas_2596" + call void @_out_of_gas() + br label %"$have_gas_2607" + +"$have_gas_2607": ; preds = %"$out_of_gas_2606", %"$have_gas_2596" + %"$consume_2608" = sub i64 %"$gasrem_2604", %"$_literal_cost_call_2603" + store i64 %"$consume_2608", i64* @_gasrem + %"$execptr_load_2609" = load i8*, i8** @_execptr + %"$e2_2611" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %e2 + %"$update_value_2612" = bitcast %"Map_String_Map_(String)_(String)"* %"$e2_2611" to i8* + call void @_update_field(i8* %"$execptr_load_2609", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_2610", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 0, i8* null, i8* %"$update_value_2612") ret void } define void @t11(i8* %0) { entry: - %"$_amount_2598" = getelementptr i8, i8* %0, i32 0 - %"$_amount_2599" = bitcast i8* %"$_amount_2598" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_2599" - %"$_sender_2600" = getelementptr i8, i8* %0, i32 16 - %"$_sender_2601" = bitcast i8* %"$_sender_2600" to [20 x i8]* - call void @"$t11_2495"(%Uint128 %_amount, [20 x i8]* %"$_sender_2601") + %"$_amount_2614" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2615" = bitcast i8* %"$_amount_2614" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2615" + %"$_sender_2616" = getelementptr i8, i8* %0, i32 16 + %"$_sender_2617" = bitcast i8* %"$_sender_2616" to [20 x i8]* + call void @"$t11_2511"(%Uint128 %_amount, [20 x i8]* %"$_sender_2617") ret void } -define internal void @"$t12_2602"(%Uint128 %_amount, [20 x i8]* %"$_sender_2603") { +define internal void @"$t12_2618"(%Uint128 %_amount, [20 x i8]* %"$_sender_2619") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_2603" - %"$gasrem_2604" = load i64, i64* @_gasrem - %"$gascmp_2605" = icmp ugt i64 1, %"$gasrem_2604" - br i1 %"$gascmp_2605", label %"$out_of_gas_2606", label %"$have_gas_2607" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2619" + %"$gasrem_2620" = load i64, i64* @_gasrem + %"$gascmp_2621" = icmp ugt i64 1, %"$gasrem_2620" + br i1 %"$gascmp_2621", label %"$out_of_gas_2622", label %"$have_gas_2623" -"$out_of_gas_2606": ; preds = %entry +"$out_of_gas_2622": ; preds = %entry call void @_out_of_gas() - br label %"$have_gas_2607" + br label %"$have_gas_2623" -"$have_gas_2607": ; preds = %"$out_of_gas_2606", %entry - %"$consume_2608" = sub i64 %"$gasrem_2604", 1 - store i64 %"$consume_2608", i64* @_gasrem +"$have_gas_2623": ; preds = %"$out_of_gas_2622", %entry + %"$consume_2624" = sub i64 %"$gasrem_2620", 1 + store i64 %"$consume_2624", i64* @_gasrem %tname = alloca %String - %"$gasrem_2609" = load i64, i64* @_gasrem - %"$gascmp_2610" = icmp ugt i64 1, %"$gasrem_2609" - br i1 %"$gascmp_2610", label %"$out_of_gas_2611", label %"$have_gas_2612" + %"$gasrem_2625" = load i64, i64* @_gasrem + %"$gascmp_2626" = icmp ugt i64 1, %"$gasrem_2625" + br i1 %"$gascmp_2626", label %"$out_of_gas_2627", label %"$have_gas_2628" -"$out_of_gas_2611": ; preds = %"$have_gas_2607" +"$out_of_gas_2627": ; preds = %"$have_gas_2623" call void @_out_of_gas() - br label %"$have_gas_2612" + br label %"$have_gas_2628" -"$have_gas_2612": ; preds = %"$out_of_gas_2611", %"$have_gas_2607" - %"$consume_2613" = sub i64 %"$gasrem_2609", 1 - store i64 %"$consume_2613", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2614", i32 0, i32 0), i32 3 }, %String* %tname +"$have_gas_2628": ; preds = %"$out_of_gas_2627", %"$have_gas_2623" + %"$consume_2629" = sub i64 %"$gasrem_2625", 1 + store i64 %"$consume_2629", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2630", i32 0, i32 0), i32 3 }, %String* %tname %m2 = alloca %"Map_String_Map_(String)_(String)"* - %"$execptr_load_2615" = load i8*, i8** @_execptr - %"$m2_2617" = call i8* @_fetch_field(i8* %"$execptr_load_2615", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_2616", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 0, i8* null, i32 1) - %"$m2_2618" = bitcast i8* %"$m2_2617" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$m2_2618", %"Map_String_Map_(String)_(String)"** %m2 - %"$m2_2619" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 - %"$$m2_2619_2620" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_2619" to i8* - %"$_literal_cost_call_2621" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m2_2619_2620") - %"$m2_2622" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 - %"$$m2_2622_2623" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_2622" to i8* - %"$_mapsortcost_call_2624" = call i64 @_mapsortcost(i8* %"$$m2_2622_2623") - %"$gasadd_2625" = add i64 %"$_literal_cost_call_2621", %"$_mapsortcost_call_2624" - %"$gasrem_2626" = load i64, i64* @_gasrem - %"$gascmp_2627" = icmp ugt i64 %"$gasadd_2625", %"$gasrem_2626" - br i1 %"$gascmp_2627", label %"$out_of_gas_2628", label %"$have_gas_2629" - -"$out_of_gas_2628": ; preds = %"$have_gas_2612" - call void @_out_of_gas() - br label %"$have_gas_2629" - -"$have_gas_2629": ; preds = %"$out_of_gas_2628", %"$have_gas_2612" - %"$consume_2630" = sub i64 %"$gasrem_2626", %"$gasadd_2625" - store i64 %"$consume_2630", i64* @_gasrem - %"$gasrem_2631" = load i64, i64* @_gasrem - %"$gascmp_2632" = icmp ugt i64 1, %"$gasrem_2631" - br i1 %"$gascmp_2632", label %"$out_of_gas_2633", label %"$have_gas_2634" - -"$out_of_gas_2633": ; preds = %"$have_gas_2629" - call void @_out_of_gas() - br label %"$have_gas_2634" - -"$have_gas_2634": ; preds = %"$out_of_gas_2633", %"$have_gas_2629" - %"$consume_2635" = sub i64 %"$gasrem_2631", 1 - store i64 %"$consume_2635", i64* @_gasrem + %"$execptr_load_2631" = load i8*, i8** @_execptr + %"$m2_2633" = call i8* @_fetch_field(i8* %"$execptr_load_2631", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_2632", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 0, i8* null, i32 1) + %"$m2_2634" = bitcast i8* %"$m2_2633" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$m2_2634", %"Map_String_Map_(String)_(String)"** %m2 + %"$m2_2635" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 + %"$$m2_2635_2636" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_2635" to i8* + %"$_literal_cost_call_2637" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m2_2635_2636") + %"$m2_2638" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 + %"$$m2_2638_2639" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_2638" to i8* + %"$_mapsortcost_call_2640" = call i64 @_mapsortcost(i8* %"$$m2_2638_2639") + %"$gasadd_2641" = add i64 %"$_literal_cost_call_2637", %"$_mapsortcost_call_2640" + %"$gasrem_2642" = load i64, i64* @_gasrem + %"$gascmp_2643" = icmp ugt i64 %"$gasadd_2641", %"$gasrem_2642" + br i1 %"$gascmp_2643", label %"$out_of_gas_2644", label %"$have_gas_2645" + +"$out_of_gas_2644": ; preds = %"$have_gas_2628" + call void @_out_of_gas() + br label %"$have_gas_2645" + +"$have_gas_2645": ; preds = %"$out_of_gas_2644", %"$have_gas_2628" + %"$consume_2646" = sub i64 %"$gasrem_2642", %"$gasadd_2641" + store i64 %"$consume_2646", i64* @_gasrem + %"$gasrem_2647" = load i64, i64* @_gasrem + %"$gascmp_2648" = icmp ugt i64 1, %"$gasrem_2647" + br i1 %"$gascmp_2648", label %"$out_of_gas_2649", label %"$have_gas_2650" + +"$out_of_gas_2649": ; preds = %"$have_gas_2645" + call void @_out_of_gas() + br label %"$have_gas_2650" + +"$have_gas_2650": ; preds = %"$out_of_gas_2649", %"$have_gas_2645" + %"$consume_2651" = sub i64 %"$gasrem_2647", 1 + store i64 %"$consume_2651", i64* @_gasrem %m2_size = alloca %Uint32 - %"$m2_2636" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 - %"$$m2_2636_2637" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_2636" to i8* - %"$size_call_2638" = call %Uint32 @_size(i8* %"$$m2_2636_2637") - store %Uint32 %"$size_call_2638", %Uint32* %m2_size - %"$gasrem_2639" = load i64, i64* @_gasrem - %"$gascmp_2640" = icmp ugt i64 1, %"$gasrem_2639" - br i1 %"$gascmp_2640", label %"$out_of_gas_2641", label %"$have_gas_2642" + %"$m2_2652" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 + %"$$m2_2652_2653" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_2652" to i8* + %"$size_call_2654" = call %Uint32 @_size(i8* %"$$m2_2652_2653") + store %Uint32 %"$size_call_2654", %Uint32* %m2_size + %"$gasrem_2655" = load i64, i64* @_gasrem + %"$gascmp_2656" = icmp ugt i64 1, %"$gasrem_2655" + br i1 %"$gascmp_2656", label %"$out_of_gas_2657", label %"$have_gas_2658" -"$out_of_gas_2641": ; preds = %"$have_gas_2634" +"$out_of_gas_2657": ; preds = %"$have_gas_2650" call void @_out_of_gas() - br label %"$have_gas_2642" + br label %"$have_gas_2658" -"$have_gas_2642": ; preds = %"$out_of_gas_2641", %"$have_gas_2634" - %"$consume_2643" = sub i64 %"$gasrem_2639", 1 - store i64 %"$consume_2643", i64* @_gasrem +"$have_gas_2658": ; preds = %"$out_of_gas_2657", %"$have_gas_2650" + %"$consume_2659" = sub i64 %"$gasrem_2655", 1 + store i64 %"$consume_2659", i64* @_gasrem %zero = alloca %Uint32 - %"$gasrem_2644" = load i64, i64* @_gasrem - %"$gascmp_2645" = icmp ugt i64 1, %"$gasrem_2644" - br i1 %"$gascmp_2645", label %"$out_of_gas_2646", label %"$have_gas_2647" + %"$gasrem_2660" = load i64, i64* @_gasrem + %"$gascmp_2661" = icmp ugt i64 1, %"$gasrem_2660" + br i1 %"$gascmp_2661", label %"$out_of_gas_2662", label %"$have_gas_2663" -"$out_of_gas_2646": ; preds = %"$have_gas_2642" +"$out_of_gas_2662": ; preds = %"$have_gas_2658" call void @_out_of_gas() - br label %"$have_gas_2647" + br label %"$have_gas_2663" -"$have_gas_2647": ; preds = %"$out_of_gas_2646", %"$have_gas_2642" - %"$consume_2648" = sub i64 %"$gasrem_2644", 1 - store i64 %"$consume_2648", i64* @_gasrem +"$have_gas_2663": ; preds = %"$out_of_gas_2662", %"$have_gas_2658" + %"$consume_2664" = sub i64 %"$gasrem_2660", 1 + store i64 %"$consume_2664", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %zero - %"$gasrem_2649" = load i64, i64* @_gasrem - %"$gascmp_2650" = icmp ugt i64 1, %"$gasrem_2649" - br i1 %"$gascmp_2650", label %"$out_of_gas_2651", label %"$have_gas_2652" + %"$gasrem_2665" = load i64, i64* @_gasrem + %"$gascmp_2666" = icmp ugt i64 1, %"$gasrem_2665" + br i1 %"$gascmp_2666", label %"$out_of_gas_2667", label %"$have_gas_2668" -"$out_of_gas_2651": ; preds = %"$have_gas_2647" +"$out_of_gas_2667": ; preds = %"$have_gas_2663" call void @_out_of_gas() - br label %"$have_gas_2652" + br label %"$have_gas_2668" -"$have_gas_2652": ; preds = %"$out_of_gas_2651", %"$have_gas_2647" - %"$consume_2653" = sub i64 %"$gasrem_2649", 1 - store i64 %"$consume_2653", i64* @_gasrem +"$have_gas_2668": ; preds = %"$out_of_gas_2667", %"$have_gas_2663" + %"$consume_2669" = sub i64 %"$gasrem_2665", 1 + store i64 %"$consume_2669", i64* @_gasrem %is_empty = alloca %TName_Bool* - %"$execptr_load_2654" = load i8*, i8** @_execptr - %"$m2_size_2655" = load %Uint32, %Uint32* %m2_size - %"$zero_2656" = load %Uint32, %Uint32* %zero - %"$eq_call_2657" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_2654", %Uint32 %"$m2_size_2655", %Uint32 %"$zero_2656") - store %TName_Bool* %"$eq_call_2657", %TName_Bool** %is_empty - %"$gasrem_2658" = load i64, i64* @_gasrem - %"$gascmp_2659" = icmp ugt i64 2, %"$gasrem_2658" - br i1 %"$gascmp_2659", label %"$out_of_gas_2660", label %"$have_gas_2661" - -"$out_of_gas_2660": ; preds = %"$have_gas_2652" - call void @_out_of_gas() - br label %"$have_gas_2661" - -"$have_gas_2661": ; preds = %"$out_of_gas_2660", %"$have_gas_2652" - %"$consume_2662" = sub i64 %"$gasrem_2658", 2 - store i64 %"$consume_2662", i64* @_gasrem - %"$is_empty_2664" = load %TName_Bool*, %TName_Bool** %is_empty - %"$is_empty_tag_2665" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_2664", i32 0, i32 0 - %"$is_empty_tag_2666" = load i8, i8* %"$is_empty_tag_2665" - switch i8 %"$is_empty_tag_2666", label %"$empty_default_2667" [ - i8 0, label %"$True_2668" - i8 1, label %"$False_2670" + %"$execptr_load_2670" = load i8*, i8** @_execptr + %"$m2_size_2671" = load %Uint32, %Uint32* %m2_size + %"$zero_2672" = load %Uint32, %Uint32* %zero + %"$eq_call_2673" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_2670", %Uint32 %"$m2_size_2671", %Uint32 %"$zero_2672") + store %TName_Bool* %"$eq_call_2673", %TName_Bool** %is_empty + %"$gasrem_2674" = load i64, i64* @_gasrem + %"$gascmp_2675" = icmp ugt i64 2, %"$gasrem_2674" + br i1 %"$gascmp_2675", label %"$out_of_gas_2676", label %"$have_gas_2677" + +"$out_of_gas_2676": ; preds = %"$have_gas_2668" + call void @_out_of_gas() + br label %"$have_gas_2677" + +"$have_gas_2677": ; preds = %"$out_of_gas_2676", %"$have_gas_2668" + %"$consume_2678" = sub i64 %"$gasrem_2674", 2 + store i64 %"$consume_2678", i64* @_gasrem + %"$is_empty_2680" = load %TName_Bool*, %TName_Bool** %is_empty + %"$is_empty_tag_2681" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_2680", i32 0, i32 0 + %"$is_empty_tag_2682" = load i8, i8* %"$is_empty_tag_2681" + switch i8 %"$is_empty_tag_2682", label %"$empty_default_2683" [ + i8 0, label %"$True_2684" + i8 1, label %"$False_2686" ] -"$True_2668": ; preds = %"$have_gas_2661" - %"$is_empty_2669" = bitcast %TName_Bool* %"$is_empty_2664" to %CName_True* - br label %"$matchsucc_2663" +"$True_2684": ; preds = %"$have_gas_2677" + %"$is_empty_2685" = bitcast %TName_Bool* %"$is_empty_2680" to %CName_True* + br label %"$matchsucc_2679" -"$False_2670": ; preds = %"$have_gas_2661" - %"$is_empty_2671" = bitcast %TName_Bool* %"$is_empty_2664" to %CName_False* - %"$gasrem_2672" = load i64, i64* @_gasrem - %"$gascmp_2673" = icmp ugt i64 1, %"$gasrem_2672" - br i1 %"$gascmp_2673", label %"$out_of_gas_2674", label %"$have_gas_2675" +"$False_2686": ; preds = %"$have_gas_2677" + %"$is_empty_2687" = bitcast %TName_Bool* %"$is_empty_2680" to %CName_False* + %"$gasrem_2688" = load i64, i64* @_gasrem + %"$gascmp_2689" = icmp ugt i64 1, %"$gasrem_2688" + br i1 %"$gascmp_2689", label %"$out_of_gas_2690", label %"$have_gas_2691" -"$out_of_gas_2674": ; preds = %"$False_2670" +"$out_of_gas_2690": ; preds = %"$False_2686" call void @_out_of_gas() - br label %"$have_gas_2675" + br label %"$have_gas_2691" -"$have_gas_2675": ; preds = %"$out_of_gas_2674", %"$False_2670" - %"$consume_2676" = sub i64 %"$gasrem_2672", 1 - store i64 %"$consume_2676", i64* @_gasrem - %"$fail__sender_2677" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_2677" - %"$tname_2678" = load %String, %String* %tname - call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_2677", %String %"$tname_2678") - br label %"$matchsucc_2663" +"$have_gas_2691": ; preds = %"$out_of_gas_2690", %"$False_2686" + %"$consume_2692" = sub i64 %"$gasrem_2688", 1 + store i64 %"$consume_2692", i64* @_gasrem + %"$fail__sender_2693" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_2693" + %"$tname_2694" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_2693", %String %"$tname_2694") + br label %"$matchsucc_2679" -"$empty_default_2667": ; preds = %"$have_gas_2661" - br label %"$matchsucc_2663" +"$empty_default_2683": ; preds = %"$have_gas_2677" + br label %"$matchsucc_2679" -"$matchsucc_2663": ; preds = %"$have_gas_2675", %"$True_2668", %"$empty_default_2667" - %"$gasrem_2679" = load i64, i64* @_gasrem - %"$gascmp_2680" = icmp ugt i64 1, %"$gasrem_2679" - br i1 %"$gascmp_2680", label %"$out_of_gas_2681", label %"$have_gas_2682" +"$matchsucc_2679": ; preds = %"$have_gas_2691", %"$True_2684", %"$empty_default_2683" + %"$gasrem_2695" = load i64, i64* @_gasrem + %"$gascmp_2696" = icmp ugt i64 1, %"$gasrem_2695" + br i1 %"$gascmp_2696", label %"$out_of_gas_2697", label %"$have_gas_2698" -"$out_of_gas_2681": ; preds = %"$matchsucc_2663" +"$out_of_gas_2697": ; preds = %"$matchsucc_2679" call void @_out_of_gas() - br label %"$have_gas_2682" + br label %"$have_gas_2698" -"$have_gas_2682": ; preds = %"$out_of_gas_2681", %"$matchsucc_2663" - %"$consume_2683" = sub i64 %"$gasrem_2679", 1 - store i64 %"$consume_2683", i64* @_gasrem +"$have_gas_2698": ; preds = %"$out_of_gas_2697", %"$matchsucc_2679" + %"$consume_2699" = sub i64 %"$gasrem_2695", 1 + store i64 %"$consume_2699", i64* @_gasrem %e1 = alloca %Map_String_String* - %"$gasrem_2684" = load i64, i64* @_gasrem - %"$gascmp_2685" = icmp ugt i64 1, %"$gasrem_2684" - br i1 %"$gascmp_2685", label %"$out_of_gas_2686", label %"$have_gas_2687" + %"$gasrem_2700" = load i64, i64* @_gasrem + %"$gascmp_2701" = icmp ugt i64 1, %"$gasrem_2700" + br i1 %"$gascmp_2701", label %"$out_of_gas_2702", label %"$have_gas_2703" -"$out_of_gas_2686": ; preds = %"$have_gas_2682" +"$out_of_gas_2702": ; preds = %"$have_gas_2698" call void @_out_of_gas() - br label %"$have_gas_2687" + br label %"$have_gas_2703" -"$have_gas_2687": ; preds = %"$out_of_gas_2686", %"$have_gas_2682" - %"$consume_2688" = sub i64 %"$gasrem_2684", 1 - store i64 %"$consume_2688", i64* @_gasrem - %"$execptr_load_2689" = load i8*, i8** @_execptr - %"$_new_empty_map_call_2690" = call i8* @_new_empty_map(i8* %"$execptr_load_2689") - %"$Emp_2691" = bitcast i8* %"$_new_empty_map_call_2690" to %Map_String_String* - store %Map_String_String* %"$Emp_2691", %Map_String_String** %e1 - %"$gasrem_2692" = load i64, i64* @_gasrem - %"$gascmp_2693" = icmp ugt i64 1, %"$gasrem_2692" - br i1 %"$gascmp_2693", label %"$out_of_gas_2694", label %"$have_gas_2695" +"$have_gas_2703": ; preds = %"$out_of_gas_2702", %"$have_gas_2698" + %"$consume_2704" = sub i64 %"$gasrem_2700", 1 + store i64 %"$consume_2704", i64* @_gasrem + %"$execptr_load_2705" = load i8*, i8** @_execptr + %"$_new_empty_map_call_2706" = call i8* @_new_empty_map(i8* %"$execptr_load_2705") + %"$Emp_2707" = bitcast i8* %"$_new_empty_map_call_2706" to %Map_String_String* + store %Map_String_String* %"$Emp_2707", %Map_String_String** %e1 + %"$gasrem_2708" = load i64, i64* @_gasrem + %"$gascmp_2709" = icmp ugt i64 1, %"$gasrem_2708" + br i1 %"$gascmp_2709", label %"$out_of_gas_2710", label %"$have_gas_2711" -"$out_of_gas_2694": ; preds = %"$have_gas_2687" +"$out_of_gas_2710": ; preds = %"$have_gas_2703" call void @_out_of_gas() - br label %"$have_gas_2695" + br label %"$have_gas_2711" -"$have_gas_2695": ; preds = %"$out_of_gas_2694", %"$have_gas_2687" - %"$consume_2696" = sub i64 %"$gasrem_2692", 1 - store i64 %"$consume_2696", i64* @_gasrem +"$have_gas_2711": ; preds = %"$out_of_gas_2710", %"$have_gas_2703" + %"$consume_2712" = sub i64 %"$gasrem_2708", 1 + store i64 %"$consume_2712", i64* @_gasrem %key1a = alloca %String - %"$gasrem_2697" = load i64, i64* @_gasrem - %"$gascmp_2698" = icmp ugt i64 1, %"$gasrem_2697" - br i1 %"$gascmp_2698", label %"$out_of_gas_2699", label %"$have_gas_2700" - -"$out_of_gas_2699": ; preds = %"$have_gas_2695" - call void @_out_of_gas() - br label %"$have_gas_2700" - -"$have_gas_2700": ; preds = %"$out_of_gas_2699", %"$have_gas_2695" - %"$consume_2701" = sub i64 %"$gasrem_2697", 1 - store i64 %"$consume_2701", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2702", i32 0, i32 0), i32 5 }, %String* %key1a - %"$e1_2703" = load %Map_String_String*, %Map_String_String** %e1 - %"$$e1_2703_2704" = bitcast %Map_String_String* %"$e1_2703" to i8* - %"$_literal_cost_call_2705" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$e1_2703_2704") - %"$gasadd_2706" = add i64 %"$_literal_cost_call_2705", 1 - %"$gasrem_2707" = load i64, i64* @_gasrem - %"$gascmp_2708" = icmp ugt i64 %"$gasadd_2706", %"$gasrem_2707" - br i1 %"$gascmp_2708", label %"$out_of_gas_2709", label %"$have_gas_2710" - -"$out_of_gas_2709": ; preds = %"$have_gas_2700" - call void @_out_of_gas() - br label %"$have_gas_2710" - -"$have_gas_2710": ; preds = %"$out_of_gas_2709", %"$have_gas_2700" - %"$consume_2711" = sub i64 %"$gasrem_2707", %"$gasadd_2706" - store i64 %"$consume_2711", i64* @_gasrem - %"$indices_buf_2712_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2712_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2712_salloc_load", i64 16) - %"$indices_buf_2712_salloc" = bitcast i8* %"$indices_buf_2712_salloc_salloc" to [16 x i8]* - %"$indices_buf_2712" = bitcast [16 x i8]* %"$indices_buf_2712_salloc" to i8* - %"$key1a_2713" = load %String, %String* %key1a - %"$indices_gep_2714" = getelementptr i8, i8* %"$indices_buf_2712", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_2714" to %String* - store %String %"$key1a_2713", %String* %indices_cast - %"$execptr_load_2715" = load i8*, i8** @_execptr - %"$e1_2717" = load %Map_String_String*, %Map_String_String** %e1 - %"$update_value_2718" = bitcast %Map_String_String* %"$e1_2717" to i8* - call void @_update_field(i8* %"$execptr_load_2715", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_2716", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 1, i8* %"$indices_buf_2712", i8* %"$update_value_2718") + %"$gasrem_2713" = load i64, i64* @_gasrem + %"$gascmp_2714" = icmp ugt i64 1, %"$gasrem_2713" + br i1 %"$gascmp_2714", label %"$out_of_gas_2715", label %"$have_gas_2716" + +"$out_of_gas_2715": ; preds = %"$have_gas_2711" + call void @_out_of_gas() + br label %"$have_gas_2716" + +"$have_gas_2716": ; preds = %"$out_of_gas_2715", %"$have_gas_2711" + %"$consume_2717" = sub i64 %"$gasrem_2713", 1 + store i64 %"$consume_2717", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2718", i32 0, i32 0), i32 5 }, %String* %key1a + %"$e1_2719" = load %Map_String_String*, %Map_String_String** %e1 + %"$$e1_2719_2720" = bitcast %Map_String_String* %"$e1_2719" to i8* + %"$_literal_cost_call_2721" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$e1_2719_2720") + %"$gasadd_2722" = add i64 %"$_literal_cost_call_2721", 1 + %"$gasrem_2723" = load i64, i64* @_gasrem + %"$gascmp_2724" = icmp ugt i64 %"$gasadd_2722", %"$gasrem_2723" + br i1 %"$gascmp_2724", label %"$out_of_gas_2725", label %"$have_gas_2726" + +"$out_of_gas_2725": ; preds = %"$have_gas_2716" + call void @_out_of_gas() + br label %"$have_gas_2726" + +"$have_gas_2726": ; preds = %"$out_of_gas_2725", %"$have_gas_2716" + %"$consume_2727" = sub i64 %"$gasrem_2723", %"$gasadd_2722" + store i64 %"$consume_2727", i64* @_gasrem + %"$indices_buf_2728_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_2728_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2728_salloc_load", i64 16) + %"$indices_buf_2728_salloc" = bitcast i8* %"$indices_buf_2728_salloc_salloc" to [16 x i8]* + %"$indices_buf_2728" = bitcast [16 x i8]* %"$indices_buf_2728_salloc" to i8* + %"$key1a_2729" = load %String, %String* %key1a + %"$indices_gep_2730" = getelementptr i8, i8* %"$indices_buf_2728", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_2730" to %String* + store %String %"$key1a_2729", %String* %indices_cast + %"$execptr_load_2731" = load i8*, i8** @_execptr + %"$e1_2733" = load %Map_String_String*, %Map_String_String** %e1 + %"$update_value_2734" = bitcast %Map_String_String* %"$e1_2733" to i8* + call void @_update_field(i8* %"$execptr_load_2731", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_2732", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 1, i8* %"$indices_buf_2728", i8* %"$update_value_2734") ret void } define void @t12(i8* %0) { entry: - %"$_amount_2720" = getelementptr i8, i8* %0, i32 0 - %"$_amount_2721" = bitcast i8* %"$_amount_2720" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_2721" - %"$_sender_2722" = getelementptr i8, i8* %0, i32 16 - %"$_sender_2723" = bitcast i8* %"$_sender_2722" to [20 x i8]* - call void @"$t12_2602"(%Uint128 %_amount, [20 x i8]* %"$_sender_2723") + %"$_amount_2736" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2737" = bitcast i8* %"$_amount_2736" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2737" + %"$_sender_2738" = getelementptr i8, i8* %0, i32 16 + %"$_sender_2739" = bitcast i8* %"$_sender_2738" to [20 x i8]* + call void @"$t12_2618"(%Uint128 %_amount, [20 x i8]* %"$_sender_2739") ret void } -define internal void @"$t13_2724"(%Uint128 %_amount, [20 x i8]* %"$_sender_2725") { +define internal void @"$t13_2740"(%Uint128 %_amount, [20 x i8]* %"$_sender_2741") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_2725" - %"$gasrem_2726" = load i64, i64* @_gasrem - %"$gascmp_2727" = icmp ugt i64 1, %"$gasrem_2726" - br i1 %"$gascmp_2727", label %"$out_of_gas_2728", label %"$have_gas_2729" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2741" + %"$gasrem_2742" = load i64, i64* @_gasrem + %"$gascmp_2743" = icmp ugt i64 1, %"$gasrem_2742" + br i1 %"$gascmp_2743", label %"$out_of_gas_2744", label %"$have_gas_2745" -"$out_of_gas_2728": ; preds = %entry +"$out_of_gas_2744": ; preds = %entry call void @_out_of_gas() - br label %"$have_gas_2729" + br label %"$have_gas_2745" -"$have_gas_2729": ; preds = %"$out_of_gas_2728", %entry - %"$consume_2730" = sub i64 %"$gasrem_2726", 1 - store i64 %"$consume_2730", i64* @_gasrem +"$have_gas_2745": ; preds = %"$out_of_gas_2744", %entry + %"$consume_2746" = sub i64 %"$gasrem_2742", 1 + store i64 %"$consume_2746", i64* @_gasrem %tname = alloca %String - %"$gasrem_2731" = load i64, i64* @_gasrem - %"$gascmp_2732" = icmp ugt i64 1, %"$gasrem_2731" - br i1 %"$gascmp_2732", label %"$out_of_gas_2733", label %"$have_gas_2734" + %"$gasrem_2747" = load i64, i64* @_gasrem + %"$gascmp_2748" = icmp ugt i64 1, %"$gasrem_2747" + br i1 %"$gascmp_2748", label %"$out_of_gas_2749", label %"$have_gas_2750" -"$out_of_gas_2733": ; preds = %"$have_gas_2729" +"$out_of_gas_2749": ; preds = %"$have_gas_2745" call void @_out_of_gas() - br label %"$have_gas_2734" + br label %"$have_gas_2750" -"$have_gas_2734": ; preds = %"$out_of_gas_2733", %"$have_gas_2729" - %"$consume_2735" = sub i64 %"$gasrem_2731", 1 - store i64 %"$consume_2735", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2736", i32 0, i32 0), i32 3 }, %String* %tname - %"$gasrem_2737" = load i64, i64* @_gasrem - %"$gascmp_2738" = icmp ugt i64 1, %"$gasrem_2737" - br i1 %"$gascmp_2738", label %"$out_of_gas_2739", label %"$have_gas_2740" +"$have_gas_2750": ; preds = %"$out_of_gas_2749", %"$have_gas_2745" + %"$consume_2751" = sub i64 %"$gasrem_2747", 1 + store i64 %"$consume_2751", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2752", i32 0, i32 0), i32 3 }, %String* %tname + %"$gasrem_2753" = load i64, i64* @_gasrem + %"$gascmp_2754" = icmp ugt i64 1, %"$gasrem_2753" + br i1 %"$gascmp_2754", label %"$out_of_gas_2755", label %"$have_gas_2756" -"$out_of_gas_2739": ; preds = %"$have_gas_2734" +"$out_of_gas_2755": ; preds = %"$have_gas_2750" call void @_out_of_gas() - br label %"$have_gas_2740" + br label %"$have_gas_2756" -"$have_gas_2740": ; preds = %"$out_of_gas_2739", %"$have_gas_2734" - %"$consume_2741" = sub i64 %"$gasrem_2737", 1 - store i64 %"$consume_2741", i64* @_gasrem +"$have_gas_2756": ; preds = %"$out_of_gas_2755", %"$have_gas_2750" + %"$consume_2757" = sub i64 %"$gasrem_2753", 1 + store i64 %"$consume_2757", i64* @_gasrem %key1a = alloca %String - %"$gasrem_2742" = load i64, i64* @_gasrem - %"$gascmp_2743" = icmp ugt i64 1, %"$gasrem_2742" - br i1 %"$gascmp_2743", label %"$out_of_gas_2744", label %"$have_gas_2745" + %"$gasrem_2758" = load i64, i64* @_gasrem + %"$gascmp_2759" = icmp ugt i64 1, %"$gasrem_2758" + br i1 %"$gascmp_2759", label %"$out_of_gas_2760", label %"$have_gas_2761" -"$out_of_gas_2744": ; preds = %"$have_gas_2740" +"$out_of_gas_2760": ; preds = %"$have_gas_2756" call void @_out_of_gas() - br label %"$have_gas_2745" + br label %"$have_gas_2761" -"$have_gas_2745": ; preds = %"$out_of_gas_2744", %"$have_gas_2740" - %"$consume_2746" = sub i64 %"$gasrem_2742", 1 - store i64 %"$consume_2746", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2747", i32 0, i32 0), i32 5 }, %String* %key1a +"$have_gas_2761": ; preds = %"$out_of_gas_2760", %"$have_gas_2756" + %"$consume_2762" = sub i64 %"$gasrem_2758", 1 + store i64 %"$consume_2762", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2763", i32 0, i32 0), i32 5 }, %String* %key1a %mo = alloca %"TName_Option_Map_(String)_(String)"* - %"$indices_buf_2748_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_2748_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2748_salloc_load", i64 16) - %"$indices_buf_2748_salloc" = bitcast i8* %"$indices_buf_2748_salloc_salloc" to [16 x i8]* - %"$indices_buf_2748" = bitcast [16 x i8]* %"$indices_buf_2748_salloc" to i8* - %"$key1a_2749" = load %String, %String* %key1a - %"$indices_gep_2750" = getelementptr i8, i8* %"$indices_buf_2748", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_2750" to %String* - store %String %"$key1a_2749", %String* %indices_cast - %"$execptr_load_2751" = load i8*, i8** @_execptr - %"$mo_2753" = call i8* @_fetch_field(i8* %"$execptr_load_2751", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_2752", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 1, i8* %"$indices_buf_2748", i32 1) - %"$mo_2754" = bitcast i8* %"$mo_2753" to %"TName_Option_Map_(String)_(String)"* - store %"TName_Option_Map_(String)_(String)"* %"$mo_2754", %"TName_Option_Map_(String)_(String)"** %mo - %"$mo_2755" = load %"TName_Option_Map_(String)_(String)"*, %"TName_Option_Map_(String)_(String)"** %mo - %"$$mo_2755_2756" = bitcast %"TName_Option_Map_(String)_(String)"* %"$mo_2755" to i8* - %"$_literal_cost_call_2757" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Map_(String)_(String)_66", i8* %"$$mo_2755_2756") - %"$gasadd_2758" = add i64 %"$_literal_cost_call_2757", 0 - %"$gasadd_2759" = add i64 %"$gasadd_2758", 1 - %"$gasrem_2760" = load i64, i64* @_gasrem - %"$gascmp_2761" = icmp ugt i64 %"$gasadd_2759", %"$gasrem_2760" - br i1 %"$gascmp_2761", label %"$out_of_gas_2762", label %"$have_gas_2763" - -"$out_of_gas_2762": ; preds = %"$have_gas_2745" - call void @_out_of_gas() - br label %"$have_gas_2763" - -"$have_gas_2763": ; preds = %"$out_of_gas_2762", %"$have_gas_2745" - %"$consume_2764" = sub i64 %"$gasrem_2760", %"$gasadd_2759" - store i64 %"$consume_2764", i64* @_gasrem - %"$gasrem_2765" = load i64, i64* @_gasrem - %"$gascmp_2766" = icmp ugt i64 2, %"$gasrem_2765" - br i1 %"$gascmp_2766", label %"$out_of_gas_2767", label %"$have_gas_2768" - -"$out_of_gas_2767": ; preds = %"$have_gas_2763" - call void @_out_of_gas() - br label %"$have_gas_2768" - -"$have_gas_2768": ; preds = %"$out_of_gas_2767", %"$have_gas_2763" - %"$consume_2769" = sub i64 %"$gasrem_2765", 2 - store i64 %"$consume_2769", i64* @_gasrem + %"$indices_buf_2764_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_2764_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_2764_salloc_load", i64 16) + %"$indices_buf_2764_salloc" = bitcast i8* %"$indices_buf_2764_salloc_salloc" to [16 x i8]* + %"$indices_buf_2764" = bitcast [16 x i8]* %"$indices_buf_2764_salloc" to i8* + %"$key1a_2765" = load %String, %String* %key1a + %"$indices_gep_2766" = getelementptr i8, i8* %"$indices_buf_2764", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_2766" to %String* + store %String %"$key1a_2765", %String* %indices_cast + %"$execptr_load_2767" = load i8*, i8** @_execptr + %"$mo_2769" = call i8* @_fetch_field(i8* %"$execptr_load_2767", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_2768", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 1, i8* %"$indices_buf_2764", i32 1) + %"$mo_2770" = bitcast i8* %"$mo_2769" to %"TName_Option_Map_(String)_(String)"* + store %"TName_Option_Map_(String)_(String)"* %"$mo_2770", %"TName_Option_Map_(String)_(String)"** %mo %"$mo_2771" = load %"TName_Option_Map_(String)_(String)"*, %"TName_Option_Map_(String)_(String)"** %mo - %"$mo_tag_2772" = getelementptr inbounds %"TName_Option_Map_(String)_(String)", %"TName_Option_Map_(String)_(String)"* %"$mo_2771", i32 0, i32 0 - %"$mo_tag_2773" = load i8, i8* %"$mo_tag_2772" - switch i8 %"$mo_tag_2773", label %"$empty_default_2774" [ - i8 0, label %"$Some_2775" - i8 1, label %"$None_2839" + %"$$mo_2771_2772" = bitcast %"TName_Option_Map_(String)_(String)"* %"$mo_2771" to i8* + %"$_literal_cost_call_2773" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Map_(String)_(String)_66", i8* %"$$mo_2771_2772") + %"$gasadd_2774" = add i64 %"$_literal_cost_call_2773", 0 + %"$gasadd_2775" = add i64 %"$gasadd_2774", 1 + %"$gasrem_2776" = load i64, i64* @_gasrem + %"$gascmp_2777" = icmp ugt i64 %"$gasadd_2775", %"$gasrem_2776" + br i1 %"$gascmp_2777", label %"$out_of_gas_2778", label %"$have_gas_2779" + +"$out_of_gas_2778": ; preds = %"$have_gas_2761" + call void @_out_of_gas() + br label %"$have_gas_2779" + +"$have_gas_2779": ; preds = %"$out_of_gas_2778", %"$have_gas_2761" + %"$consume_2780" = sub i64 %"$gasrem_2776", %"$gasadd_2775" + store i64 %"$consume_2780", i64* @_gasrem + %"$gasrem_2781" = load i64, i64* @_gasrem + %"$gascmp_2782" = icmp ugt i64 2, %"$gasrem_2781" + br i1 %"$gascmp_2782", label %"$out_of_gas_2783", label %"$have_gas_2784" + +"$out_of_gas_2783": ; preds = %"$have_gas_2779" + call void @_out_of_gas() + br label %"$have_gas_2784" + +"$have_gas_2784": ; preds = %"$out_of_gas_2783", %"$have_gas_2779" + %"$consume_2785" = sub i64 %"$gasrem_2781", 2 + store i64 %"$consume_2785", i64* @_gasrem + %"$mo_2787" = load %"TName_Option_Map_(String)_(String)"*, %"TName_Option_Map_(String)_(String)"** %mo + %"$mo_tag_2788" = getelementptr inbounds %"TName_Option_Map_(String)_(String)", %"TName_Option_Map_(String)_(String)"* %"$mo_2787", i32 0, i32 0 + %"$mo_tag_2789" = load i8, i8* %"$mo_tag_2788" + switch i8 %"$mo_tag_2789", label %"$empty_default_2790" [ + i8 0, label %"$Some_2791" + i8 1, label %"$None_2855" ] -"$Some_2775": ; preds = %"$have_gas_2768" - %"$mo_2776" = bitcast %"TName_Option_Map_(String)_(String)"* %"$mo_2771" to %"CName_Some_Map_(String)_(String)"* - %"$m_gep_2777" = getelementptr inbounds %"CName_Some_Map_(String)_(String)", %"CName_Some_Map_(String)_(String)"* %"$mo_2776", i32 0, i32 1 - %"$m_load_2778" = load %Map_String_String*, %Map_String_String** %"$m_gep_2777" +"$Some_2791": ; preds = %"$have_gas_2784" + %"$mo_2792" = bitcast %"TName_Option_Map_(String)_(String)"* %"$mo_2787" to %"CName_Some_Map_(String)_(String)"* + %"$m_gep_2793" = getelementptr inbounds %"CName_Some_Map_(String)_(String)", %"CName_Some_Map_(String)_(String)"* %"$mo_2792", i32 0, i32 1 + %"$m_load_2794" = load %Map_String_String*, %Map_String_String** %"$m_gep_2793" %m = alloca %Map_String_String* - store %Map_String_String* %"$m_load_2778", %Map_String_String** %m - %"$gasrem_2779" = load i64, i64* @_gasrem - %"$gascmp_2780" = icmp ugt i64 1, %"$gasrem_2779" - br i1 %"$gascmp_2780", label %"$out_of_gas_2781", label %"$have_gas_2782" + store %Map_String_String* %"$m_load_2794", %Map_String_String** %m + %"$gasrem_2795" = load i64, i64* @_gasrem + %"$gascmp_2796" = icmp ugt i64 1, %"$gasrem_2795" + br i1 %"$gascmp_2796", label %"$out_of_gas_2797", label %"$have_gas_2798" -"$out_of_gas_2781": ; preds = %"$Some_2775" +"$out_of_gas_2797": ; preds = %"$Some_2791" call void @_out_of_gas() - br label %"$have_gas_2782" + br label %"$have_gas_2798" -"$have_gas_2782": ; preds = %"$out_of_gas_2781", %"$Some_2775" - %"$consume_2783" = sub i64 %"$gasrem_2779", 1 - store i64 %"$consume_2783", i64* @_gasrem +"$have_gas_2798": ; preds = %"$out_of_gas_2797", %"$Some_2791" + %"$consume_2799" = sub i64 %"$gasrem_2795", 1 + store i64 %"$consume_2799", i64* @_gasrem %m_size = alloca %Uint32 - %"$m_2784" = load %Map_String_String*, %Map_String_String** %m - %"$$m_2784_2785" = bitcast %Map_String_String* %"$m_2784" to i8* - %"$size_call_2786" = call %Uint32 @_size(i8* %"$$m_2784_2785") - store %Uint32 %"$size_call_2786", %Uint32* %m_size - %"$gasrem_2787" = load i64, i64* @_gasrem - %"$gascmp_2788" = icmp ugt i64 1, %"$gasrem_2787" - br i1 %"$gascmp_2788", label %"$out_of_gas_2789", label %"$have_gas_2790" + %"$m_2800" = load %Map_String_String*, %Map_String_String** %m + %"$$m_2800_2801" = bitcast %Map_String_String* %"$m_2800" to i8* + %"$size_call_2802" = call %Uint32 @_size(i8* %"$$m_2800_2801") + store %Uint32 %"$size_call_2802", %Uint32* %m_size + %"$gasrem_2803" = load i64, i64* @_gasrem + %"$gascmp_2804" = icmp ugt i64 1, %"$gasrem_2803" + br i1 %"$gascmp_2804", label %"$out_of_gas_2805", label %"$have_gas_2806" -"$out_of_gas_2789": ; preds = %"$have_gas_2782" +"$out_of_gas_2805": ; preds = %"$have_gas_2798" call void @_out_of_gas() - br label %"$have_gas_2790" + br label %"$have_gas_2806" -"$have_gas_2790": ; preds = %"$out_of_gas_2789", %"$have_gas_2782" - %"$consume_2791" = sub i64 %"$gasrem_2787", 1 - store i64 %"$consume_2791", i64* @_gasrem +"$have_gas_2806": ; preds = %"$out_of_gas_2805", %"$have_gas_2798" + %"$consume_2807" = sub i64 %"$gasrem_2803", 1 + store i64 %"$consume_2807", i64* @_gasrem %zero = alloca %Uint32 - %"$gasrem_2792" = load i64, i64* @_gasrem - %"$gascmp_2793" = icmp ugt i64 1, %"$gasrem_2792" - br i1 %"$gascmp_2793", label %"$out_of_gas_2794", label %"$have_gas_2795" + %"$gasrem_2808" = load i64, i64* @_gasrem + %"$gascmp_2809" = icmp ugt i64 1, %"$gasrem_2808" + br i1 %"$gascmp_2809", label %"$out_of_gas_2810", label %"$have_gas_2811" -"$out_of_gas_2794": ; preds = %"$have_gas_2790" +"$out_of_gas_2810": ; preds = %"$have_gas_2806" call void @_out_of_gas() - br label %"$have_gas_2795" + br label %"$have_gas_2811" -"$have_gas_2795": ; preds = %"$out_of_gas_2794", %"$have_gas_2790" - %"$consume_2796" = sub i64 %"$gasrem_2792", 1 - store i64 %"$consume_2796", i64* @_gasrem +"$have_gas_2811": ; preds = %"$out_of_gas_2810", %"$have_gas_2806" + %"$consume_2812" = sub i64 %"$gasrem_2808", 1 + store i64 %"$consume_2812", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %zero - %"$gasrem_2797" = load i64, i64* @_gasrem - %"$gascmp_2798" = icmp ugt i64 1, %"$gasrem_2797" - br i1 %"$gascmp_2798", label %"$out_of_gas_2799", label %"$have_gas_2800" + %"$gasrem_2813" = load i64, i64* @_gasrem + %"$gascmp_2814" = icmp ugt i64 1, %"$gasrem_2813" + br i1 %"$gascmp_2814", label %"$out_of_gas_2815", label %"$have_gas_2816" -"$out_of_gas_2799": ; preds = %"$have_gas_2795" +"$out_of_gas_2815": ; preds = %"$have_gas_2811" call void @_out_of_gas() - br label %"$have_gas_2800" + br label %"$have_gas_2816" -"$have_gas_2800": ; preds = %"$out_of_gas_2799", %"$have_gas_2795" - %"$consume_2801" = sub i64 %"$gasrem_2797", 1 - store i64 %"$consume_2801", i64* @_gasrem +"$have_gas_2816": ; preds = %"$out_of_gas_2815", %"$have_gas_2811" + %"$consume_2817" = sub i64 %"$gasrem_2813", 1 + store i64 %"$consume_2817", i64* @_gasrem %is_empty = alloca %TName_Bool* - %"$execptr_load_2802" = load i8*, i8** @_execptr - %"$m_size_2803" = load %Uint32, %Uint32* %m_size - %"$zero_2804" = load %Uint32, %Uint32* %zero - %"$eq_call_2805" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_2802", %Uint32 %"$m_size_2803", %Uint32 %"$zero_2804") - store %TName_Bool* %"$eq_call_2805", %TName_Bool** %is_empty - %"$gasrem_2806" = load i64, i64* @_gasrem - %"$gascmp_2807" = icmp ugt i64 2, %"$gasrem_2806" - br i1 %"$gascmp_2807", label %"$out_of_gas_2808", label %"$have_gas_2809" - -"$out_of_gas_2808": ; preds = %"$have_gas_2800" - call void @_out_of_gas() - br label %"$have_gas_2809" - -"$have_gas_2809": ; preds = %"$out_of_gas_2808", %"$have_gas_2800" - %"$consume_2810" = sub i64 %"$gasrem_2806", 2 - store i64 %"$consume_2810", i64* @_gasrem - %"$is_empty_2812" = load %TName_Bool*, %TName_Bool** %is_empty - %"$is_empty_tag_2813" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_2812", i32 0, i32 0 - %"$is_empty_tag_2814" = load i8, i8* %"$is_empty_tag_2813" - switch i8 %"$is_empty_tag_2814", label %"$empty_default_2815" [ - i8 0, label %"$True_2816" - i8 1, label %"$False_2818" + %"$execptr_load_2818" = load i8*, i8** @_execptr + %"$m_size_2819" = load %Uint32, %Uint32* %m_size + %"$zero_2820" = load %Uint32, %Uint32* %zero + %"$eq_call_2821" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_2818", %Uint32 %"$m_size_2819", %Uint32 %"$zero_2820") + store %TName_Bool* %"$eq_call_2821", %TName_Bool** %is_empty + %"$gasrem_2822" = load i64, i64* @_gasrem + %"$gascmp_2823" = icmp ugt i64 2, %"$gasrem_2822" + br i1 %"$gascmp_2823", label %"$out_of_gas_2824", label %"$have_gas_2825" + +"$out_of_gas_2824": ; preds = %"$have_gas_2816" + call void @_out_of_gas() + br label %"$have_gas_2825" + +"$have_gas_2825": ; preds = %"$out_of_gas_2824", %"$have_gas_2816" + %"$consume_2826" = sub i64 %"$gasrem_2822", 2 + store i64 %"$consume_2826", i64* @_gasrem + %"$is_empty_2828" = load %TName_Bool*, %TName_Bool** %is_empty + %"$is_empty_tag_2829" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_2828", i32 0, i32 0 + %"$is_empty_tag_2830" = load i8, i8* %"$is_empty_tag_2829" + switch i8 %"$is_empty_tag_2830", label %"$empty_default_2831" [ + i8 0, label %"$True_2832" + i8 1, label %"$False_2834" ] -"$True_2816": ; preds = %"$have_gas_2809" - %"$is_empty_2817" = bitcast %TName_Bool* %"$is_empty_2812" to %CName_True* - br label %"$matchsucc_2811" +"$True_2832": ; preds = %"$have_gas_2825" + %"$is_empty_2833" = bitcast %TName_Bool* %"$is_empty_2828" to %CName_True* + br label %"$matchsucc_2827" -"$False_2818": ; preds = %"$have_gas_2809" - %"$is_empty_2819" = bitcast %TName_Bool* %"$is_empty_2812" to %CName_False* - %"$gasrem_2820" = load i64, i64* @_gasrem - %"$gascmp_2821" = icmp ugt i64 1, %"$gasrem_2820" - br i1 %"$gascmp_2821", label %"$out_of_gas_2822", label %"$have_gas_2823" +"$False_2834": ; preds = %"$have_gas_2825" + %"$is_empty_2835" = bitcast %TName_Bool* %"$is_empty_2828" to %CName_False* + %"$gasrem_2836" = load i64, i64* @_gasrem + %"$gascmp_2837" = icmp ugt i64 1, %"$gasrem_2836" + br i1 %"$gascmp_2837", label %"$out_of_gas_2838", label %"$have_gas_2839" -"$out_of_gas_2822": ; preds = %"$False_2818" +"$out_of_gas_2838": ; preds = %"$False_2834" call void @_out_of_gas() - br label %"$have_gas_2823" + br label %"$have_gas_2839" -"$have_gas_2823": ; preds = %"$out_of_gas_2822", %"$False_2818" - %"$consume_2824" = sub i64 %"$gasrem_2820", 1 - store i64 %"$consume_2824", i64* @_gasrem +"$have_gas_2839": ; preds = %"$out_of_gas_2838", %"$False_2834" + %"$consume_2840" = sub i64 %"$gasrem_2836", 1 + store i64 %"$consume_2840", i64* @_gasrem %msg = alloca %String - %"$gasrem_2825" = load i64, i64* @_gasrem - %"$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 - store %String { i8* getelementptr inbounds ([29 x i8], [29 x i8]* @"$stringlit_2830", i32 0, i32 0), i32 29 }, %String* %msg - %"$gasrem_2831" = load i64, i64* @_gasrem - %"$gascmp_2832" = icmp ugt i64 1, %"$gasrem_2831" - br i1 %"$gascmp_2832", label %"$out_of_gas_2833", label %"$have_gas_2834" - -"$out_of_gas_2833": ; preds = %"$have_gas_2828" - call void @_out_of_gas() - br label %"$have_gas_2834" - -"$have_gas_2834": ; preds = %"$out_of_gas_2833", %"$have_gas_2828" - %"$consume_2835" = sub i64 %"$gasrem_2831", 1 - store i64 %"$consume_2835", i64* @_gasrem - %"$fail_msg__sender_2836" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2836" - %"$tname_2837" = load %String, %String* %tname - %"$msg_2838" = load %String, %String* %msg - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2836", %String %"$tname_2837", %String %"$msg_2838") - br label %"$matchsucc_2811" - -"$empty_default_2815": ; preds = %"$have_gas_2809" - br label %"$matchsucc_2811" - -"$matchsucc_2811": ; preds = %"$have_gas_2834", %"$True_2816", %"$empty_default_2815" - br label %"$matchsucc_2770" - -"$None_2839": ; preds = %"$have_gas_2768" - %"$mo_2840" = bitcast %"TName_Option_Map_(String)_(String)"* %"$mo_2771" to %"CName_None_Map_(String)_(String)"* %"$gasrem_2841" = load i64, i64* @_gasrem %"$gascmp_2842" = icmp ugt i64 1, %"$gasrem_2841" br i1 %"$gascmp_2842", label %"$out_of_gas_2843", label %"$have_gas_2844" -"$out_of_gas_2843": ; preds = %"$None_2839" +"$out_of_gas_2843": ; preds = %"$have_gas_2839" call void @_out_of_gas() br label %"$have_gas_2844" -"$have_gas_2844": ; preds = %"$out_of_gas_2843", %"$None_2839" +"$have_gas_2844": ; preds = %"$out_of_gas_2843", %"$have_gas_2839" %"$consume_2845" = sub i64 %"$gasrem_2841", 1 store i64 %"$consume_2845", i64* @_gasrem - %"$fail__sender_2846" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_2846" - %"$tname_2847" = load %String, %String* %tname - call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_2846", %String %"$tname_2847") - br label %"$matchsucc_2770" + store %String { i8* getelementptr inbounds ([29 x i8], [29 x i8]* @"$stringlit_2846", i32 0, i32 0), i32 29 }, %String* %msg + %"$gasrem_2847" = load i64, i64* @_gasrem + %"$gascmp_2848" = icmp ugt i64 1, %"$gasrem_2847" + br i1 %"$gascmp_2848", label %"$out_of_gas_2849", label %"$have_gas_2850" -"$empty_default_2774": ; preds = %"$have_gas_2768" - br label %"$matchsucc_2770" +"$out_of_gas_2849": ; preds = %"$have_gas_2844" + call void @_out_of_gas() + br label %"$have_gas_2850" -"$matchsucc_2770": ; preds = %"$have_gas_2844", %"$matchsucc_2811", %"$empty_default_2774" - %"$gasrem_2848" = load i64, i64* @_gasrem - %"$gascmp_2849" = icmp ugt i64 1, %"$gasrem_2848" - br i1 %"$gascmp_2849", label %"$out_of_gas_2850", label %"$have_gas_2851" +"$have_gas_2850": ; preds = %"$out_of_gas_2849", %"$have_gas_2844" + %"$consume_2851" = sub i64 %"$gasrem_2847", 1 + store i64 %"$consume_2851", i64* @_gasrem + %"$fail_msg__sender_2852" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_2852" + %"$tname_2853" = load %String, %String* %tname + %"$msg_2854" = load %String, %String* %msg + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_2852", %String %"$tname_2853", %String %"$msg_2854") + br label %"$matchsucc_2827" -"$out_of_gas_2850": ; preds = %"$matchsucc_2770" - call void @_out_of_gas() - br label %"$have_gas_2851" +"$empty_default_2831": ; preds = %"$have_gas_2825" + br label %"$matchsucc_2827" -"$have_gas_2851": ; preds = %"$out_of_gas_2850", %"$matchsucc_2770" - %"$consume_2852" = sub i64 %"$gasrem_2848", 1 - store i64 %"$consume_2852", i64* @_gasrem - %m3 = alloca %Map_String_String* - %"$gasrem_2853" = load i64, i64* @_gasrem - %"$gascmp_2854" = icmp ugt i64 1, %"$gasrem_2853" - br i1 %"$gascmp_2854", label %"$out_of_gas_2855", label %"$have_gas_2856" +"$matchsucc_2827": ; preds = %"$have_gas_2850", %"$True_2832", %"$empty_default_2831" + br label %"$matchsucc_2786" + +"$None_2855": ; preds = %"$have_gas_2784" + %"$mo_2856" = bitcast %"TName_Option_Map_(String)_(String)"* %"$mo_2787" to %"CName_None_Map_(String)_(String)"* + %"$gasrem_2857" = load i64, i64* @_gasrem + %"$gascmp_2858" = icmp ugt i64 1, %"$gasrem_2857" + br i1 %"$gascmp_2858", label %"$out_of_gas_2859", label %"$have_gas_2860" -"$out_of_gas_2855": ; preds = %"$have_gas_2851" +"$out_of_gas_2859": ; preds = %"$None_2855" call void @_out_of_gas() - br label %"$have_gas_2856" + br label %"$have_gas_2860" -"$have_gas_2856": ; preds = %"$out_of_gas_2855", %"$have_gas_2851" - %"$consume_2857" = sub i64 %"$gasrem_2853", 1 - store i64 %"$consume_2857", i64* @_gasrem - %"$execptr_load_2858" = load i8*, i8** @_execptr - %"$_new_empty_map_call_2859" = call i8* @_new_empty_map(i8* %"$execptr_load_2858") - %"$Emp_2860" = bitcast i8* %"$_new_empty_map_call_2859" to %Map_String_String* - store %Map_String_String* %"$Emp_2860", %Map_String_String** %m3 - %"$gasrem_2861" = load i64, i64* @_gasrem - %"$gascmp_2862" = icmp ugt i64 1, %"$gasrem_2861" - br i1 %"$gascmp_2862", label %"$out_of_gas_2863", label %"$have_gas_2864" +"$have_gas_2860": ; preds = %"$out_of_gas_2859", %"$None_2855" + %"$consume_2861" = sub i64 %"$gasrem_2857", 1 + store i64 %"$consume_2861", i64* @_gasrem + %"$fail__sender_2862" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_2862" + %"$tname_2863" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_2862", %String %"$tname_2863") + br label %"$matchsucc_2786" -"$out_of_gas_2863": ; preds = %"$have_gas_2856" - call void @_out_of_gas() - br label %"$have_gas_2864" +"$empty_default_2790": ; preds = %"$have_gas_2784" + br label %"$matchsucc_2786" -"$have_gas_2864": ; preds = %"$out_of_gas_2863", %"$have_gas_2856" - %"$consume_2865" = sub i64 %"$gasrem_2861", 1 - store i64 %"$consume_2865", i64* @_gasrem - %m2 = alloca %"Map_String_Map_(String)_(String)"* - %"$gasrem_2866" = load i64, i64* @_gasrem - %"$gascmp_2867" = icmp ugt i64 1, %"$gasrem_2866" - br i1 %"$gascmp_2867", label %"$out_of_gas_2868", label %"$have_gas_2869" +"$matchsucc_2786": ; preds = %"$have_gas_2860", %"$matchsucc_2827", %"$empty_default_2790" + %"$gasrem_2864" = load i64, i64* @_gasrem + %"$gascmp_2865" = icmp ugt i64 1, %"$gasrem_2864" + br i1 %"$gascmp_2865", label %"$out_of_gas_2866", label %"$have_gas_2867" -"$out_of_gas_2868": ; preds = %"$have_gas_2864" +"$out_of_gas_2866": ; preds = %"$matchsucc_2786" call void @_out_of_gas() - br label %"$have_gas_2869" + br label %"$have_gas_2867" -"$have_gas_2869": ; preds = %"$out_of_gas_2868", %"$have_gas_2864" - %"$consume_2870" = sub i64 %"$gasrem_2866", 1 - store i64 %"$consume_2870", i64* @_gasrem - %key2a = alloca %String - %"$gasrem_2871" = load i64, i64* @_gasrem - %"$gascmp_2872" = icmp ugt i64 1, %"$gasrem_2871" - br i1 %"$gascmp_2872", label %"$out_of_gas_2873", label %"$have_gas_2874" +"$have_gas_2867": ; preds = %"$out_of_gas_2866", %"$matchsucc_2786" + %"$consume_2868" = sub i64 %"$gasrem_2864", 1 + store i64 %"$consume_2868", i64* @_gasrem + %m3 = alloca %Map_String_String* + %"$gasrem_2869" = load i64, i64* @_gasrem + %"$gascmp_2870" = icmp ugt i64 1, %"$gasrem_2869" + br i1 %"$gascmp_2870", label %"$out_of_gas_2871", label %"$have_gas_2872" -"$out_of_gas_2873": ; preds = %"$have_gas_2869" +"$out_of_gas_2871": ; preds = %"$have_gas_2867" call void @_out_of_gas() - br label %"$have_gas_2874" + br label %"$have_gas_2872" -"$have_gas_2874": ; preds = %"$out_of_gas_2873", %"$have_gas_2869" - %"$consume_2875" = sub i64 %"$gasrem_2871", 1 - store i64 %"$consume_2875", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2876", i32 0, i32 0), i32 5 }, %String* %key2a +"$have_gas_2872": ; preds = %"$out_of_gas_2871", %"$have_gas_2867" + %"$consume_2873" = sub i64 %"$gasrem_2869", 1 + store i64 %"$consume_2873", i64* @_gasrem + %"$execptr_load_2874" = load i8*, i8** @_execptr + %"$_new_empty_map_call_2875" = call i8* @_new_empty_map(i8* %"$execptr_load_2874") + %"$Emp_2876" = bitcast i8* %"$_new_empty_map_call_2875" to %Map_String_String* + store %Map_String_String* %"$Emp_2876", %Map_String_String** %m3 %"$gasrem_2877" = load i64, i64* @_gasrem %"$gascmp_2878" = icmp ugt i64 1, %"$gasrem_2877" br i1 %"$gascmp_2878", label %"$out_of_gas_2879", label %"$have_gas_2880" -"$out_of_gas_2879": ; preds = %"$have_gas_2874" +"$out_of_gas_2879": ; preds = %"$have_gas_2872" call void @_out_of_gas() br label %"$have_gas_2880" -"$have_gas_2880": ; preds = %"$out_of_gas_2879", %"$have_gas_2874" +"$have_gas_2880": ; preds = %"$out_of_gas_2879", %"$have_gas_2872" %"$consume_2881" = sub i64 %"$gasrem_2877", 1 store i64 %"$consume_2881", i64* @_gasrem - %e = alloca %"Map_String_Map_(String)_(String)"* + %m2 = alloca %"Map_String_Map_(String)_(String)"* %"$gasrem_2882" = load i64, i64* @_gasrem %"$gascmp_2883" = icmp ugt i64 1, %"$gasrem_2882" br i1 %"$gascmp_2883", label %"$out_of_gas_2884", label %"$have_gas_2885" @@ -5984,1327 +5974,1337 @@ entry: "$have_gas_2885": ; preds = %"$out_of_gas_2884", %"$have_gas_2880" %"$consume_2886" = sub i64 %"$gasrem_2882", 1 store i64 %"$consume_2886", i64* @_gasrem - %"$execptr_load_2887" = load i8*, i8** @_execptr - %"$_new_empty_map_call_2888" = call i8* @_new_empty_map(i8* %"$execptr_load_2887") - %"$Emp_2889" = bitcast i8* %"$_new_empty_map_call_2888" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$Emp_2889", %"Map_String_Map_(String)_(String)"** %e - %"$execptr_load_2890" = load i8*, i8** @_execptr - %"$e_2891" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %e - %"$$e_2891_2892" = bitcast %"Map_String_Map_(String)_(String)"* %"$e_2891" to i8* - %"$put_key2a_2893" = alloca %String - %"$key2a_2894" = load %String, %String* %key2a - store %String %"$key2a_2894", %String* %"$put_key2a_2893" - %"$$put_key2a_2893_2895" = bitcast %String* %"$put_key2a_2893" to i8* - %"$m3_2896" = load %Map_String_String*, %Map_String_String** %m3 - %"$$m3_2896_2897" = bitcast %Map_String_String* %"$m3_2896" to i8* - %"$put_call_2898" = call i8* @_put(i8* %"$execptr_load_2890", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$e_2891_2892", i8* %"$$put_key2a_2893_2895", i8* %"$$m3_2896_2897") - %"$_put_2899" = bitcast i8* %"$put_call_2898" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$_put_2899", %"Map_String_Map_(String)_(String)"** %m2 - %"$gasrem_2900" = load i64, i64* @_gasrem - %"$gascmp_2901" = icmp ugt i64 1, %"$gasrem_2900" - br i1 %"$gascmp_2901", label %"$out_of_gas_2902", label %"$have_gas_2903" - -"$out_of_gas_2902": ; preds = %"$have_gas_2885" - call void @_out_of_gas() - br label %"$have_gas_2903" - -"$have_gas_2903": ; preds = %"$out_of_gas_2902", %"$have_gas_2885" - %"$consume_2904" = sub i64 %"$gasrem_2900", 1 - store i64 %"$consume_2904", i64* @_gasrem + %key2a = alloca %String + %"$gasrem_2887" = load i64, i64* @_gasrem + %"$gascmp_2888" = icmp ugt i64 1, %"$gasrem_2887" + br i1 %"$gascmp_2888", label %"$out_of_gas_2889", label %"$have_gas_2890" + +"$out_of_gas_2889": ; preds = %"$have_gas_2885" + call void @_out_of_gas() + br label %"$have_gas_2890" + +"$have_gas_2890": ; preds = %"$out_of_gas_2889", %"$have_gas_2885" + %"$consume_2891" = sub i64 %"$gasrem_2887", 1 + store i64 %"$consume_2891", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_2892", i32 0, i32 0), i32 5 }, %String* %key2a + %"$gasrem_2893" = load i64, i64* @_gasrem + %"$gascmp_2894" = icmp ugt i64 1, %"$gasrem_2893" + br i1 %"$gascmp_2894", label %"$out_of_gas_2895", label %"$have_gas_2896" + +"$out_of_gas_2895": ; preds = %"$have_gas_2890" + call void @_out_of_gas() + br label %"$have_gas_2896" + +"$have_gas_2896": ; preds = %"$out_of_gas_2895", %"$have_gas_2890" + %"$consume_2897" = sub i64 %"$gasrem_2893", 1 + store i64 %"$consume_2897", i64* @_gasrem + %e = alloca %"Map_String_Map_(String)_(String)"* + %"$gasrem_2898" = load i64, i64* @_gasrem + %"$gascmp_2899" = icmp ugt i64 1, %"$gasrem_2898" + br i1 %"$gascmp_2899", label %"$out_of_gas_2900", label %"$have_gas_2901" + +"$out_of_gas_2900": ; preds = %"$have_gas_2896" + call void @_out_of_gas() + br label %"$have_gas_2901" + +"$have_gas_2901": ; preds = %"$out_of_gas_2900", %"$have_gas_2896" + %"$consume_2902" = sub i64 %"$gasrem_2898", 1 + store i64 %"$consume_2902", i64* @_gasrem + %"$execptr_load_2903" = load i8*, i8** @_execptr + %"$_new_empty_map_call_2904" = call i8* @_new_empty_map(i8* %"$execptr_load_2903") + %"$Emp_2905" = bitcast i8* %"$_new_empty_map_call_2904" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$Emp_2905", %"Map_String_Map_(String)_(String)"** %e + %"$execptr_load_2906" = load i8*, i8** @_execptr + %"$e_2907" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %e + %"$$e_2907_2908" = bitcast %"Map_String_Map_(String)_(String)"* %"$e_2907" to i8* + %"$put_key2a_2909" = alloca %String + %"$key2a_2910" = load %String, %String* %key2a + store %String %"$key2a_2910", %String* %"$put_key2a_2909" + %"$$put_key2a_2909_2911" = bitcast %String* %"$put_key2a_2909" to i8* + %"$m3_2912" = load %Map_String_String*, %Map_String_String** %m3 + %"$$m3_2912_2913" = bitcast %Map_String_String* %"$m3_2912" to i8* + %"$put_call_2914" = call i8* @_put(i8* %"$execptr_load_2906", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$e_2907_2908", i8* %"$$put_key2a_2909_2911", i8* %"$$m3_2912_2913") + %"$_put_2915" = bitcast i8* %"$put_call_2914" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$_put_2915", %"Map_String_Map_(String)_(String)"** %m2 + %"$gasrem_2916" = load i64, i64* @_gasrem + %"$gascmp_2917" = icmp ugt i64 1, %"$gasrem_2916" + br i1 %"$gascmp_2917", label %"$out_of_gas_2918", label %"$have_gas_2919" + +"$out_of_gas_2918": ; preds = %"$have_gas_2901" + call void @_out_of_gas() + br label %"$have_gas_2919" + +"$have_gas_2919": ; preds = %"$out_of_gas_2918", %"$have_gas_2901" + %"$consume_2920" = sub i64 %"$gasrem_2916", 1 + store i64 %"$consume_2920", i64* @_gasrem %"$m3_11" = alloca %"Map_String_Map_(String)_(Map_(String)_(String))"* - %"$gasrem_2905" = load i64, i64* @_gasrem - %"$gascmp_2906" = icmp ugt i64 1, %"$gasrem_2905" - br i1 %"$gascmp_2906", label %"$out_of_gas_2907", label %"$have_gas_2908" + %"$gasrem_2921" = load i64, i64* @_gasrem + %"$gascmp_2922" = icmp ugt i64 1, %"$gasrem_2921" + br i1 %"$gascmp_2922", label %"$out_of_gas_2923", label %"$have_gas_2924" -"$out_of_gas_2907": ; preds = %"$have_gas_2903" +"$out_of_gas_2923": ; preds = %"$have_gas_2919" call void @_out_of_gas() - br label %"$have_gas_2908" + br label %"$have_gas_2924" -"$have_gas_2908": ; preds = %"$out_of_gas_2907", %"$have_gas_2903" - %"$consume_2909" = sub i64 %"$gasrem_2905", 1 - store i64 %"$consume_2909", i64* @_gasrem +"$have_gas_2924": ; preds = %"$out_of_gas_2923", %"$have_gas_2919" + %"$consume_2925" = sub i64 %"$gasrem_2921", 1 + store i64 %"$consume_2925", i64* @_gasrem %e1 = alloca %"Map_String_Map_(String)_(Map_(String)_(String))"* - %"$gasrem_2910" = load i64, i64* @_gasrem - %"$gascmp_2911" = icmp ugt i64 1, %"$gasrem_2910" - br i1 %"$gascmp_2911", label %"$out_of_gas_2912", label %"$have_gas_2913" - -"$out_of_gas_2912": ; preds = %"$have_gas_2908" - call void @_out_of_gas() - br label %"$have_gas_2913" - -"$have_gas_2913": ; preds = %"$out_of_gas_2912", %"$have_gas_2908" - %"$consume_2914" = sub i64 %"$gasrem_2910", 1 - store i64 %"$consume_2914", i64* @_gasrem - %"$execptr_load_2915" = load i8*, i8** @_execptr - %"$_new_empty_map_call_2916" = call i8* @_new_empty_map(i8* %"$execptr_load_2915") - %"$Emp_2917" = bitcast i8* %"$_new_empty_map_call_2916" to %"Map_String_Map_(String)_(Map_(String)_(String))"* - store %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$Emp_2917", %"Map_String_Map_(String)_(Map_(String)_(String))"** %e1 - %"$execptr_load_2918" = load i8*, i8** @_execptr - %"$e_2919" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %e1 - %"$$e_2919_2920" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$e_2919" to i8* - %"$put_key1a_2921" = alloca %String - %"$key1a_2922" = load %String, %String* %key1a - store %String %"$key1a_2922", %String* %"$put_key1a_2921" - %"$$put_key1a_2921_2923" = bitcast %String* %"$put_key1a_2921" to i8* - %"$m2_2924" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 - %"$$m2_2924_2925" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_2924" to i8* - %"$put_call_2926" = call i8* @_put(i8* %"$execptr_load_2918", %_TyDescrTy_Typ* @"$TyDescr_Map_70", i8* %"$$e_2919_2920", i8* %"$$put_key1a_2921_2923", i8* %"$$m2_2924_2925") - %"$_put_2927" = bitcast i8* %"$put_call_2926" to %"Map_String_Map_(String)_(Map_(String)_(String))"* - store %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$_put_2927", %"Map_String_Map_(String)_(Map_(String)_(String))"** %"$m3_11" - %"$$m3_11_2928" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %"$m3_11" - %"$$$m3_11_2928_2929" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$$m3_11_2928" to i8* - %"$_literal_cost_call_2930" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_70", i8* %"$$$m3_11_2928_2929") - %"$gasrem_2931" = load i64, i64* @_gasrem - %"$gascmp_2932" = icmp ugt i64 %"$_literal_cost_call_2930", %"$gasrem_2931" - br i1 %"$gascmp_2932", label %"$out_of_gas_2933", label %"$have_gas_2934" - -"$out_of_gas_2933": ; preds = %"$have_gas_2913" - call void @_out_of_gas() - br label %"$have_gas_2934" - -"$have_gas_2934": ; preds = %"$out_of_gas_2933", %"$have_gas_2913" - %"$consume_2935" = sub i64 %"$gasrem_2931", %"$_literal_cost_call_2930" - store i64 %"$consume_2935", i64* @_gasrem - %"$execptr_load_2936" = load i8*, i8** @_execptr - %"$$m3_11_2938" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %"$m3_11" - %"$update_value_2939" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$$m3_11_2938" to i8* - call void @_update_field(i8* %"$execptr_load_2936", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m3_2937", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_70", i32 0, i8* null, i8* %"$update_value_2939") + %"$gasrem_2926" = load i64, i64* @_gasrem + %"$gascmp_2927" = icmp ugt i64 1, %"$gasrem_2926" + br i1 %"$gascmp_2927", label %"$out_of_gas_2928", label %"$have_gas_2929" + +"$out_of_gas_2928": ; preds = %"$have_gas_2924" + call void @_out_of_gas() + br label %"$have_gas_2929" + +"$have_gas_2929": ; preds = %"$out_of_gas_2928", %"$have_gas_2924" + %"$consume_2930" = sub i64 %"$gasrem_2926", 1 + store i64 %"$consume_2930", i64* @_gasrem + %"$execptr_load_2931" = load i8*, i8** @_execptr + %"$_new_empty_map_call_2932" = call i8* @_new_empty_map(i8* %"$execptr_load_2931") + %"$Emp_2933" = bitcast i8* %"$_new_empty_map_call_2932" to %"Map_String_Map_(String)_(Map_(String)_(String))"* + store %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$Emp_2933", %"Map_String_Map_(String)_(Map_(String)_(String))"** %e1 + %"$execptr_load_2934" = load i8*, i8** @_execptr + %"$e_2935" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %e1 + %"$$e_2935_2936" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$e_2935" to i8* + %"$put_key1a_2937" = alloca %String + %"$key1a_2938" = load %String, %String* %key1a + store %String %"$key1a_2938", %String* %"$put_key1a_2937" + %"$$put_key1a_2937_2939" = bitcast %String* %"$put_key1a_2937" to i8* + %"$m2_2940" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 + %"$$m2_2940_2941" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_2940" to i8* + %"$put_call_2942" = call i8* @_put(i8* %"$execptr_load_2934", %_TyDescrTy_Typ* @"$TyDescr_Map_70", i8* %"$$e_2935_2936", i8* %"$$put_key1a_2937_2939", i8* %"$$m2_2940_2941") + %"$_put_2943" = bitcast i8* %"$put_call_2942" to %"Map_String_Map_(String)_(Map_(String)_(String))"* + store %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$_put_2943", %"Map_String_Map_(String)_(Map_(String)_(String))"** %"$m3_11" + %"$$m3_11_2944" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %"$m3_11" + %"$$$m3_11_2944_2945" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$$m3_11_2944" to i8* + %"$_literal_cost_call_2946" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_70", i8* %"$$$m3_11_2944_2945") + %"$gasrem_2947" = load i64, i64* @_gasrem + %"$gascmp_2948" = icmp ugt i64 %"$_literal_cost_call_2946", %"$gasrem_2947" + br i1 %"$gascmp_2948", label %"$out_of_gas_2949", label %"$have_gas_2950" + +"$out_of_gas_2949": ; preds = %"$have_gas_2929" + call void @_out_of_gas() + br label %"$have_gas_2950" + +"$have_gas_2950": ; preds = %"$out_of_gas_2949", %"$have_gas_2929" + %"$consume_2951" = sub i64 %"$gasrem_2947", %"$_literal_cost_call_2946" + store i64 %"$consume_2951", i64* @_gasrem + %"$execptr_load_2952" = load i8*, i8** @_execptr + %"$$m3_11_2954" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %"$m3_11" + %"$update_value_2955" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$$m3_11_2954" to i8* + call void @_update_field(i8* %"$execptr_load_2952", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m3_2953", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_70", i32 0, i8* null, i8* %"$update_value_2955") ret void } define void @t13(i8* %0) { entry: - %"$_amount_2941" = getelementptr i8, i8* %0, i32 0 - %"$_amount_2942" = bitcast i8* %"$_amount_2941" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_2942" - %"$_sender_2943" = getelementptr i8, i8* %0, i32 16 - %"$_sender_2944" = bitcast i8* %"$_sender_2943" to [20 x i8]* - call void @"$t13_2724"(%Uint128 %_amount, [20 x i8]* %"$_sender_2944") + %"$_amount_2957" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2958" = bitcast i8* %"$_amount_2957" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2958" + %"$_sender_2959" = getelementptr i8, i8* %0, i32 16 + %"$_sender_2960" = bitcast i8* %"$_sender_2959" to [20 x i8]* + call void @"$t13_2740"(%Uint128 %_amount, [20 x i8]* %"$_sender_2960") ret void } -define internal void @"$t14_2945"(%Uint128 %_amount, [20 x i8]* %"$_sender_2946") { +define internal void @"$t14_2961"(%Uint128 %_amount, [20 x i8]* %"$_sender_2962") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_2946" - %"$gasrem_2947" = load i64, i64* @_gasrem - %"$gascmp_2948" = icmp ugt i64 1, %"$gasrem_2947" - br i1 %"$gascmp_2948", label %"$out_of_gas_2949", label %"$have_gas_2950" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2962" + %"$gasrem_2963" = load i64, i64* @_gasrem + %"$gascmp_2964" = icmp ugt i64 1, %"$gasrem_2963" + br i1 %"$gascmp_2964", label %"$out_of_gas_2965", label %"$have_gas_2966" -"$out_of_gas_2949": ; preds = %entry +"$out_of_gas_2965": ; preds = %entry call void @_out_of_gas() - br label %"$have_gas_2950" + br label %"$have_gas_2966" -"$have_gas_2950": ; preds = %"$out_of_gas_2949", %entry - %"$consume_2951" = sub i64 %"$gasrem_2947", 1 - store i64 %"$consume_2951", i64* @_gasrem +"$have_gas_2966": ; preds = %"$out_of_gas_2965", %entry + %"$consume_2967" = sub i64 %"$gasrem_2963", 1 + store i64 %"$consume_2967", i64* @_gasrem %tname = alloca %String - %"$gasrem_2952" = load i64, i64* @_gasrem - %"$gascmp_2953" = icmp ugt i64 1, %"$gasrem_2952" - br i1 %"$gascmp_2953", label %"$out_of_gas_2954", label %"$have_gas_2955" + %"$gasrem_2968" = load i64, i64* @_gasrem + %"$gascmp_2969" = icmp ugt i64 1, %"$gasrem_2968" + br i1 %"$gascmp_2969", label %"$out_of_gas_2970", label %"$have_gas_2971" -"$out_of_gas_2954": ; preds = %"$have_gas_2950" +"$out_of_gas_2970": ; preds = %"$have_gas_2966" call void @_out_of_gas() - br label %"$have_gas_2955" + br label %"$have_gas_2971" -"$have_gas_2955": ; preds = %"$out_of_gas_2954", %"$have_gas_2950" - %"$consume_2956" = sub i64 %"$gasrem_2952", 1 - store i64 %"$consume_2956", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2957", i32 0, i32 0), i32 3 }, %String* %tname +"$have_gas_2971": ; preds = %"$out_of_gas_2970", %"$have_gas_2966" + %"$consume_2972" = sub i64 %"$gasrem_2968", 1 + store i64 %"$consume_2972", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_2973", i32 0, i32 0), i32 3 }, %String* %tname %m3 = alloca %"Map_String_Map_(String)_(Map_(String)_(String))"* - %"$execptr_load_2958" = load i8*, i8** @_execptr - %"$m3_2960" = call i8* @_fetch_field(i8* %"$execptr_load_2958", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m3_2959", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_70", i32 0, i8* null, i32 1) - %"$m3_2961" = bitcast i8* %"$m3_2960" to %"Map_String_Map_(String)_(Map_(String)_(String))"* - store %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_2961", %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 - %"$m3_2962" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 - %"$$m3_2962_2963" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_2962" to i8* - %"$_literal_cost_call_2964" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_70", i8* %"$$m3_2962_2963") - %"$m3_2965" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 - %"$$m3_2965_2966" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_2965" to i8* - %"$_mapsortcost_call_2967" = call i64 @_mapsortcost(i8* %"$$m3_2965_2966") - %"$gasadd_2968" = add i64 %"$_literal_cost_call_2964", %"$_mapsortcost_call_2967" - %"$gasrem_2969" = load i64, i64* @_gasrem - %"$gascmp_2970" = icmp ugt i64 %"$gasadd_2968", %"$gasrem_2969" - br i1 %"$gascmp_2970", label %"$out_of_gas_2971", label %"$have_gas_2972" - -"$out_of_gas_2971": ; preds = %"$have_gas_2955" - call void @_out_of_gas() - br label %"$have_gas_2972" - -"$have_gas_2972": ; preds = %"$out_of_gas_2971", %"$have_gas_2955" - %"$consume_2973" = sub i64 %"$gasrem_2969", %"$gasadd_2968" - store i64 %"$consume_2973", i64* @_gasrem - %"$gasrem_2974" = load i64, i64* @_gasrem - %"$gascmp_2975" = icmp ugt i64 1, %"$gasrem_2974" - br i1 %"$gascmp_2975", label %"$out_of_gas_2976", label %"$have_gas_2977" - -"$out_of_gas_2976": ; preds = %"$have_gas_2972" - call void @_out_of_gas() - br label %"$have_gas_2977" - -"$have_gas_2977": ; preds = %"$out_of_gas_2976", %"$have_gas_2972" - %"$consume_2978" = sub i64 %"$gasrem_2974", 1 - store i64 %"$consume_2978", i64* @_gasrem + %"$execptr_load_2974" = load i8*, i8** @_execptr + %"$m3_2976" = call i8* @_fetch_field(i8* %"$execptr_load_2974", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m3_2975", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_70", i32 0, i8* null, i32 1) + %"$m3_2977" = bitcast i8* %"$m3_2976" to %"Map_String_Map_(String)_(Map_(String)_(String))"* + store %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_2977", %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$m3_2978" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$$m3_2978_2979" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_2978" to i8* + %"$_literal_cost_call_2980" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_70", i8* %"$$m3_2978_2979") + %"$m3_2981" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$$m3_2981_2982" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_2981" to i8* + %"$_mapsortcost_call_2983" = call i64 @_mapsortcost(i8* %"$$m3_2981_2982") + %"$gasadd_2984" = add i64 %"$_literal_cost_call_2980", %"$_mapsortcost_call_2983" + %"$gasrem_2985" = load i64, i64* @_gasrem + %"$gascmp_2986" = icmp ugt i64 %"$gasadd_2984", %"$gasrem_2985" + br i1 %"$gascmp_2986", label %"$out_of_gas_2987", label %"$have_gas_2988" + +"$out_of_gas_2987": ; preds = %"$have_gas_2971" + call void @_out_of_gas() + br label %"$have_gas_2988" + +"$have_gas_2988": ; preds = %"$out_of_gas_2987", %"$have_gas_2971" + %"$consume_2989" = sub i64 %"$gasrem_2985", %"$gasadd_2984" + store i64 %"$consume_2989", i64* @_gasrem + %"$gasrem_2990" = load i64, i64* @_gasrem + %"$gascmp_2991" = icmp ugt i64 1, %"$gasrem_2990" + br i1 %"$gascmp_2991", label %"$out_of_gas_2992", label %"$have_gas_2993" + +"$out_of_gas_2992": ; preds = %"$have_gas_2988" + call void @_out_of_gas() + br label %"$have_gas_2993" + +"$have_gas_2993": ; preds = %"$out_of_gas_2992", %"$have_gas_2988" + %"$consume_2994" = sub i64 %"$gasrem_2990", 1 + store i64 %"$consume_2994", i64* @_gasrem %m3_size = alloca %Uint32 - %"$m3_2979" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 - %"$$m3_2979_2980" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_2979" to i8* - %"$size_call_2981" = call %Uint32 @_size(i8* %"$$m3_2979_2980") - store %Uint32 %"$size_call_2981", %Uint32* %m3_size - %"$gasrem_2982" = load i64, i64* @_gasrem - %"$gascmp_2983" = icmp ugt i64 1, %"$gasrem_2982" - br i1 %"$gascmp_2983", label %"$out_of_gas_2984", label %"$have_gas_2985" + %"$m3_2995" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$$m3_2995_2996" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_2995" to i8* + %"$size_call_2997" = call %Uint32 @_size(i8* %"$$m3_2995_2996") + store %Uint32 %"$size_call_2997", %Uint32* %m3_size + %"$gasrem_2998" = load i64, i64* @_gasrem + %"$gascmp_2999" = icmp ugt i64 1, %"$gasrem_2998" + br i1 %"$gascmp_2999", label %"$out_of_gas_3000", label %"$have_gas_3001" -"$out_of_gas_2984": ; preds = %"$have_gas_2977" +"$out_of_gas_3000": ; preds = %"$have_gas_2993" call void @_out_of_gas() - br label %"$have_gas_2985" + br label %"$have_gas_3001" -"$have_gas_2985": ; preds = %"$out_of_gas_2984", %"$have_gas_2977" - %"$consume_2986" = sub i64 %"$gasrem_2982", 1 - store i64 %"$consume_2986", i64* @_gasrem +"$have_gas_3001": ; preds = %"$out_of_gas_3000", %"$have_gas_2993" + %"$consume_3002" = sub i64 %"$gasrem_2998", 1 + store i64 %"$consume_3002", i64* @_gasrem %one = alloca %Uint32 - %"$gasrem_2987" = load i64, i64* @_gasrem - %"$gascmp_2988" = icmp ugt i64 1, %"$gasrem_2987" - br i1 %"$gascmp_2988", label %"$out_of_gas_2989", label %"$have_gas_2990" + %"$gasrem_3003" = load i64, i64* @_gasrem + %"$gascmp_3004" = icmp ugt i64 1, %"$gasrem_3003" + br i1 %"$gascmp_3004", label %"$out_of_gas_3005", label %"$have_gas_3006" -"$out_of_gas_2989": ; preds = %"$have_gas_2985" +"$out_of_gas_3005": ; preds = %"$have_gas_3001" call void @_out_of_gas() - br label %"$have_gas_2990" + br label %"$have_gas_3006" -"$have_gas_2990": ; preds = %"$out_of_gas_2989", %"$have_gas_2985" - %"$consume_2991" = sub i64 %"$gasrem_2987", 1 - store i64 %"$consume_2991", i64* @_gasrem +"$have_gas_3006": ; preds = %"$out_of_gas_3005", %"$have_gas_3001" + %"$consume_3007" = sub i64 %"$gasrem_3003", 1 + store i64 %"$consume_3007", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %one - %"$gasrem_2992" = load i64, i64* @_gasrem - %"$gascmp_2993" = icmp ugt i64 1, %"$gasrem_2992" - br i1 %"$gascmp_2993", label %"$out_of_gas_2994", label %"$have_gas_2995" + %"$gasrem_3008" = load i64, i64* @_gasrem + %"$gascmp_3009" = icmp ugt i64 1, %"$gasrem_3008" + br i1 %"$gascmp_3009", label %"$out_of_gas_3010", label %"$have_gas_3011" -"$out_of_gas_2994": ; preds = %"$have_gas_2990" +"$out_of_gas_3010": ; preds = %"$have_gas_3006" call void @_out_of_gas() - br label %"$have_gas_2995" + br label %"$have_gas_3011" -"$have_gas_2995": ; preds = %"$out_of_gas_2994", %"$have_gas_2990" - %"$consume_2996" = sub i64 %"$gasrem_2992", 1 - store i64 %"$consume_2996", i64* @_gasrem +"$have_gas_3011": ; preds = %"$out_of_gas_3010", %"$have_gas_3006" + %"$consume_3012" = sub i64 %"$gasrem_3008", 1 + store i64 %"$consume_3012", i64* @_gasrem %is_empty = alloca %TName_Bool* - %"$execptr_load_2997" = load i8*, i8** @_execptr - %"$m3_size_2998" = load %Uint32, %Uint32* %m3_size - %"$one_2999" = load %Uint32, %Uint32* %one - %"$eq_call_3000" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_2997", %Uint32 %"$m3_size_2998", %Uint32 %"$one_2999") - store %TName_Bool* %"$eq_call_3000", %TName_Bool** %is_empty - %"$gasrem_3001" = load i64, i64* @_gasrem - %"$gascmp_3002" = icmp ugt i64 2, %"$gasrem_3001" - br i1 %"$gascmp_3002", label %"$out_of_gas_3003", label %"$have_gas_3004" - -"$out_of_gas_3003": ; preds = %"$have_gas_2995" - call void @_out_of_gas() - br label %"$have_gas_3004" - -"$have_gas_3004": ; preds = %"$out_of_gas_3003", %"$have_gas_2995" - %"$consume_3005" = sub i64 %"$gasrem_3001", 2 - store i64 %"$consume_3005", i64* @_gasrem - %"$is_empty_3007" = load %TName_Bool*, %TName_Bool** %is_empty - %"$is_empty_tag_3008" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_3007", i32 0, i32 0 - %"$is_empty_tag_3009" = load i8, i8* %"$is_empty_tag_3008" - switch i8 %"$is_empty_tag_3009", label %"$empty_default_3010" [ - i8 0, label %"$True_3011" - i8 1, label %"$False_3013" + %"$execptr_load_3013" = load i8*, i8** @_execptr + %"$m3_size_3014" = load %Uint32, %Uint32* %m3_size + %"$one_3015" = load %Uint32, %Uint32* %one + %"$eq_call_3016" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_3013", %Uint32 %"$m3_size_3014", %Uint32 %"$one_3015") + store %TName_Bool* %"$eq_call_3016", %TName_Bool** %is_empty + %"$gasrem_3017" = load i64, i64* @_gasrem + %"$gascmp_3018" = icmp ugt i64 2, %"$gasrem_3017" + br i1 %"$gascmp_3018", label %"$out_of_gas_3019", label %"$have_gas_3020" + +"$out_of_gas_3019": ; preds = %"$have_gas_3011" + call void @_out_of_gas() + br label %"$have_gas_3020" + +"$have_gas_3020": ; preds = %"$out_of_gas_3019", %"$have_gas_3011" + %"$consume_3021" = sub i64 %"$gasrem_3017", 2 + store i64 %"$consume_3021", i64* @_gasrem + %"$is_empty_3023" = load %TName_Bool*, %TName_Bool** %is_empty + %"$is_empty_tag_3024" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_3023", i32 0, i32 0 + %"$is_empty_tag_3025" = load i8, i8* %"$is_empty_tag_3024" + switch i8 %"$is_empty_tag_3025", label %"$empty_default_3026" [ + i8 0, label %"$True_3027" + i8 1, label %"$False_3029" ] -"$True_3011": ; preds = %"$have_gas_3004" - %"$is_empty_3012" = bitcast %TName_Bool* %"$is_empty_3007" to %CName_True* - br label %"$matchsucc_3006" +"$True_3027": ; preds = %"$have_gas_3020" + %"$is_empty_3028" = bitcast %TName_Bool* %"$is_empty_3023" to %CName_True* + br label %"$matchsucc_3022" -"$False_3013": ; preds = %"$have_gas_3004" - %"$is_empty_3014" = bitcast %TName_Bool* %"$is_empty_3007" to %CName_False* - %"$gasrem_3015" = load i64, i64* @_gasrem - %"$gascmp_3016" = icmp ugt i64 1, %"$gasrem_3015" - br i1 %"$gascmp_3016", label %"$out_of_gas_3017", label %"$have_gas_3018" +"$False_3029": ; preds = %"$have_gas_3020" + %"$is_empty_3030" = bitcast %TName_Bool* %"$is_empty_3023" to %CName_False* + %"$gasrem_3031" = load i64, i64* @_gasrem + %"$gascmp_3032" = icmp ugt i64 1, %"$gasrem_3031" + br i1 %"$gascmp_3032", label %"$out_of_gas_3033", label %"$have_gas_3034" -"$out_of_gas_3017": ; preds = %"$False_3013" +"$out_of_gas_3033": ; preds = %"$False_3029" call void @_out_of_gas() - br label %"$have_gas_3018" - -"$have_gas_3018": ; preds = %"$out_of_gas_3017", %"$False_3013" - %"$consume_3019" = sub i64 %"$gasrem_3015", 1 - store i64 %"$consume_3019", i64* @_gasrem - %"$fail__sender_3020" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_3020" - %"$tname_3021" = load %String, %String* %tname - call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_3020", %String %"$tname_3021") - br label %"$matchsucc_3006" + br label %"$have_gas_3034" -"$empty_default_3010": ; preds = %"$have_gas_3004" - br label %"$matchsucc_3006" +"$have_gas_3034": ; preds = %"$out_of_gas_3033", %"$False_3029" + %"$consume_3035" = sub i64 %"$gasrem_3031", 1 + store i64 %"$consume_3035", i64* @_gasrem + %"$fail__sender_3036" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_3036" + %"$tname_3037" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_3036", %String %"$tname_3037") + br label %"$matchsucc_3022" -"$matchsucc_3006": ; preds = %"$have_gas_3018", %"$True_3011", %"$empty_default_3010" - %"$gasrem_3022" = load i64, i64* @_gasrem - %"$gascmp_3023" = icmp ugt i64 1, %"$gasrem_3022" - br i1 %"$gascmp_3023", label %"$out_of_gas_3024", label %"$have_gas_3025" - -"$out_of_gas_3024": ; preds = %"$matchsucc_3006" - call void @_out_of_gas() - br label %"$have_gas_3025" +"$empty_default_3026": ; preds = %"$have_gas_3020" + br label %"$matchsucc_3022" -"$have_gas_3025": ; preds = %"$out_of_gas_3024", %"$matchsucc_3006" - %"$consume_3026" = sub i64 %"$gasrem_3022", 1 - store i64 %"$consume_3026", i64* @_gasrem - %e = alloca %"Map_String_Map_(String)_(String)"* - %"$gasrem_3027" = load i64, i64* @_gasrem - %"$gascmp_3028" = icmp ugt i64 1, %"$gasrem_3027" - br i1 %"$gascmp_3028", label %"$out_of_gas_3029", label %"$have_gas_3030" - -"$out_of_gas_3029": ; preds = %"$have_gas_3025" - call void @_out_of_gas() - br label %"$have_gas_3030" - -"$have_gas_3030": ; preds = %"$out_of_gas_3029", %"$have_gas_3025" - %"$consume_3031" = sub i64 %"$gasrem_3027", 1 - store i64 %"$consume_3031", i64* @_gasrem - %"$execptr_load_3032" = load i8*, i8** @_execptr - %"$_new_empty_map_call_3033" = call i8* @_new_empty_map(i8* %"$execptr_load_3032") - %"$Emp_3034" = bitcast i8* %"$_new_empty_map_call_3033" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$Emp_3034", %"Map_String_Map_(String)_(String)"** %e - %"$e_3035" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %e - %"$$e_3035_3036" = bitcast %"Map_String_Map_(String)_(String)"* %"$e_3035" to i8* - %"$_literal_cost_call_3037" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$e_3035_3036") +"$matchsucc_3022": ; preds = %"$have_gas_3034", %"$True_3027", %"$empty_default_3026" %"$gasrem_3038" = load i64, i64* @_gasrem - %"$gascmp_3039" = icmp ugt i64 %"$_literal_cost_call_3037", %"$gasrem_3038" + %"$gascmp_3039" = icmp ugt i64 1, %"$gasrem_3038" br i1 %"$gascmp_3039", label %"$out_of_gas_3040", label %"$have_gas_3041" -"$out_of_gas_3040": ; preds = %"$have_gas_3030" +"$out_of_gas_3040": ; preds = %"$matchsucc_3022" call void @_out_of_gas() br label %"$have_gas_3041" -"$have_gas_3041": ; preds = %"$out_of_gas_3040", %"$have_gas_3030" - %"$consume_3042" = sub i64 %"$gasrem_3038", %"$_literal_cost_call_3037" +"$have_gas_3041": ; preds = %"$out_of_gas_3040", %"$matchsucc_3022" + %"$consume_3042" = sub i64 %"$gasrem_3038", 1 store i64 %"$consume_3042", i64* @_gasrem - %"$execptr_load_3043" = load i8*, i8** @_execptr - %"$e_3045" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %e - %"$update_value_3046" = bitcast %"Map_String_Map_(String)_(String)"* %"$e_3045" to i8* - call void @_update_field(i8* %"$execptr_load_3043", i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$f_m_3044", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 0, i8* null, i8* %"$update_value_3046") + %e = alloca %"Map_String_Map_(String)_(String)"* + %"$gasrem_3043" = load i64, i64* @_gasrem + %"$gascmp_3044" = icmp ugt i64 1, %"$gasrem_3043" + br i1 %"$gascmp_3044", label %"$out_of_gas_3045", label %"$have_gas_3046" + +"$out_of_gas_3045": ; preds = %"$have_gas_3041" + call void @_out_of_gas() + br label %"$have_gas_3046" + +"$have_gas_3046": ; preds = %"$out_of_gas_3045", %"$have_gas_3041" + %"$consume_3047" = sub i64 %"$gasrem_3043", 1 + store i64 %"$consume_3047", i64* @_gasrem + %"$execptr_load_3048" = load i8*, i8** @_execptr + %"$_new_empty_map_call_3049" = call i8* @_new_empty_map(i8* %"$execptr_load_3048") + %"$Emp_3050" = bitcast i8* %"$_new_empty_map_call_3049" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$Emp_3050", %"Map_String_Map_(String)_(String)"** %e + %"$e_3051" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %e + %"$$e_3051_3052" = bitcast %"Map_String_Map_(String)_(String)"* %"$e_3051" to i8* + %"$_literal_cost_call_3053" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$e_3051_3052") + %"$gasrem_3054" = load i64, i64* @_gasrem + %"$gascmp_3055" = icmp ugt i64 %"$_literal_cost_call_3053", %"$gasrem_3054" + br i1 %"$gascmp_3055", label %"$out_of_gas_3056", label %"$have_gas_3057" + +"$out_of_gas_3056": ; preds = %"$have_gas_3046" + call void @_out_of_gas() + br label %"$have_gas_3057" + +"$have_gas_3057": ; preds = %"$out_of_gas_3056", %"$have_gas_3046" + %"$consume_3058" = sub i64 %"$gasrem_3054", %"$_literal_cost_call_3053" + store i64 %"$consume_3058", i64* @_gasrem + %"$execptr_load_3059" = load i8*, i8** @_execptr + %"$e_3061" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %e + %"$update_value_3062" = bitcast %"Map_String_Map_(String)_(String)"* %"$e_3061" to i8* + call void @_update_field(i8* %"$execptr_load_3059", i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$f_m_3060", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 0, i8* null, i8* %"$update_value_3062") ret void } define void @t14(i8* %0) { entry: - %"$_amount_3048" = getelementptr i8, i8* %0, i32 0 - %"$_amount_3049" = bitcast i8* %"$_amount_3048" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_3049" - %"$_sender_3050" = getelementptr i8, i8* %0, i32 16 - %"$_sender_3051" = bitcast i8* %"$_sender_3050" to [20 x i8]* - call void @"$t14_2945"(%Uint128 %_amount, [20 x i8]* %"$_sender_3051") + %"$_amount_3064" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3065" = bitcast i8* %"$_amount_3064" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3065" + %"$_sender_3066" = getelementptr i8, i8* %0, i32 16 + %"$_sender_3067" = bitcast i8* %"$_sender_3066" to [20 x i8]* + call void @"$t14_2961"(%Uint128 %_amount, [20 x i8]* %"$_sender_3067") ret void } -define internal void @"$t15_3052"(%Uint128 %_amount, [20 x i8]* %"$_sender_3053") { +define internal void @"$t15_3068"(%Uint128 %_amount, [20 x i8]* %"$_sender_3069") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_3053" - %"$gasrem_3054" = load i64, i64* @_gasrem - %"$gascmp_3055" = icmp ugt i64 1, %"$gasrem_3054" - br i1 %"$gascmp_3055", label %"$out_of_gas_3056", label %"$have_gas_3057" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3069" + %"$gasrem_3070" = load i64, i64* @_gasrem + %"$gascmp_3071" = icmp ugt i64 1, %"$gasrem_3070" + br i1 %"$gascmp_3071", label %"$out_of_gas_3072", label %"$have_gas_3073" -"$out_of_gas_3056": ; preds = %entry +"$out_of_gas_3072": ; preds = %entry call void @_out_of_gas() - br label %"$have_gas_3057" + br label %"$have_gas_3073" -"$have_gas_3057": ; preds = %"$out_of_gas_3056", %entry - %"$consume_3058" = sub i64 %"$gasrem_3054", 1 - store i64 %"$consume_3058", i64* @_gasrem +"$have_gas_3073": ; preds = %"$out_of_gas_3072", %entry + %"$consume_3074" = sub i64 %"$gasrem_3070", 1 + store i64 %"$consume_3074", i64* @_gasrem %tname = alloca %String - %"$gasrem_3059" = load i64, i64* @_gasrem - %"$gascmp_3060" = icmp ugt i64 1, %"$gasrem_3059" - br i1 %"$gascmp_3060", label %"$out_of_gas_3061", label %"$have_gas_3062" + %"$gasrem_3075" = load i64, i64* @_gasrem + %"$gascmp_3076" = icmp ugt i64 1, %"$gasrem_3075" + br i1 %"$gascmp_3076", label %"$out_of_gas_3077", label %"$have_gas_3078" -"$out_of_gas_3061": ; preds = %"$have_gas_3057" +"$out_of_gas_3077": ; preds = %"$have_gas_3073" call void @_out_of_gas() - br label %"$have_gas_3062" + br label %"$have_gas_3078" -"$have_gas_3062": ; preds = %"$out_of_gas_3061", %"$have_gas_3057" - %"$consume_3063" = sub i64 %"$gasrem_3059", 1 - store i64 %"$consume_3063", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3064", i32 0, i32 0), i32 3 }, %String* %tname +"$have_gas_3078": ; preds = %"$out_of_gas_3077", %"$have_gas_3073" + %"$consume_3079" = sub i64 %"$gasrem_3075", 1 + store i64 %"$consume_3079", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3080", i32 0, i32 0), i32 3 }, %String* %tname %m3 = alloca %"Map_String_Map_(String)_(Map_(String)_(String))"* - %"$execptr_load_3065" = load i8*, i8** @_execptr - %"$m3_3067" = call i8* @_fetch_field(i8* %"$execptr_load_3065", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m3_3066", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_70", i32 0, i8* null, i32 1) - %"$m3_3068" = bitcast i8* %"$m3_3067" to %"Map_String_Map_(String)_(Map_(String)_(String))"* - store %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_3068", %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 - %"$m3_3069" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 - %"$$m3_3069_3070" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_3069" to i8* - %"$_literal_cost_call_3071" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_70", i8* %"$$m3_3069_3070") - %"$m3_3072" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 - %"$$m3_3072_3073" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_3072" to i8* - %"$_mapsortcost_call_3074" = call i64 @_mapsortcost(i8* %"$$m3_3072_3073") - %"$gasadd_3075" = add i64 %"$_literal_cost_call_3071", %"$_mapsortcost_call_3074" - %"$gasrem_3076" = load i64, i64* @_gasrem - %"$gascmp_3077" = icmp ugt i64 %"$gasadd_3075", %"$gasrem_3076" - br i1 %"$gascmp_3077", label %"$out_of_gas_3078", label %"$have_gas_3079" - -"$out_of_gas_3078": ; preds = %"$have_gas_3062" - call void @_out_of_gas() - br label %"$have_gas_3079" - -"$have_gas_3079": ; preds = %"$out_of_gas_3078", %"$have_gas_3062" - %"$consume_3080" = sub i64 %"$gasrem_3076", %"$gasadd_3075" - store i64 %"$consume_3080", i64* @_gasrem - %"$gasrem_3081" = load i64, i64* @_gasrem - %"$gascmp_3082" = icmp ugt i64 1, %"$gasrem_3081" - br i1 %"$gascmp_3082", label %"$out_of_gas_3083", label %"$have_gas_3084" - -"$out_of_gas_3083": ; preds = %"$have_gas_3079" - call void @_out_of_gas() - br label %"$have_gas_3084" - -"$have_gas_3084": ; preds = %"$out_of_gas_3083", %"$have_gas_3079" - %"$consume_3085" = sub i64 %"$gasrem_3081", 1 - store i64 %"$consume_3085", i64* @_gasrem + %"$execptr_load_3081" = load i8*, i8** @_execptr + %"$m3_3083" = call i8* @_fetch_field(i8* %"$execptr_load_3081", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m3_3082", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_70", i32 0, i8* null, i32 1) + %"$m3_3084" = bitcast i8* %"$m3_3083" to %"Map_String_Map_(String)_(Map_(String)_(String))"* + store %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_3084", %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$m3_3085" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$$m3_3085_3086" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_3085" to i8* + %"$_literal_cost_call_3087" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_70", i8* %"$$m3_3085_3086") + %"$m3_3088" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$$m3_3088_3089" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_3088" to i8* + %"$_mapsortcost_call_3090" = call i64 @_mapsortcost(i8* %"$$m3_3088_3089") + %"$gasadd_3091" = add i64 %"$_literal_cost_call_3087", %"$_mapsortcost_call_3090" + %"$gasrem_3092" = load i64, i64* @_gasrem + %"$gascmp_3093" = icmp ugt i64 %"$gasadd_3091", %"$gasrem_3092" + br i1 %"$gascmp_3093", label %"$out_of_gas_3094", label %"$have_gas_3095" + +"$out_of_gas_3094": ; preds = %"$have_gas_3078" + call void @_out_of_gas() + br label %"$have_gas_3095" + +"$have_gas_3095": ; preds = %"$out_of_gas_3094", %"$have_gas_3078" + %"$consume_3096" = sub i64 %"$gasrem_3092", %"$gasadd_3091" + store i64 %"$consume_3096", i64* @_gasrem + %"$gasrem_3097" = load i64, i64* @_gasrem + %"$gascmp_3098" = icmp ugt i64 1, %"$gasrem_3097" + br i1 %"$gascmp_3098", label %"$out_of_gas_3099", label %"$have_gas_3100" + +"$out_of_gas_3099": ; preds = %"$have_gas_3095" + call void @_out_of_gas() + br label %"$have_gas_3100" + +"$have_gas_3100": ; preds = %"$out_of_gas_3099", %"$have_gas_3095" + %"$consume_3101" = sub i64 %"$gasrem_3097", 1 + store i64 %"$consume_3101", i64* @_gasrem %m3_size = alloca %Uint32 - %"$m3_3086" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 - %"$$m3_3086_3087" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_3086" to i8* - %"$size_call_3088" = call %Uint32 @_size(i8* %"$$m3_3086_3087") - store %Uint32 %"$size_call_3088", %Uint32* %m3_size - %"$gasrem_3089" = load i64, i64* @_gasrem - %"$gascmp_3090" = icmp ugt i64 1, %"$gasrem_3089" - br i1 %"$gascmp_3090", label %"$out_of_gas_3091", label %"$have_gas_3092" + %"$m3_3102" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$$m3_3102_3103" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_3102" to i8* + %"$size_call_3104" = call %Uint32 @_size(i8* %"$$m3_3102_3103") + store %Uint32 %"$size_call_3104", %Uint32* %m3_size + %"$gasrem_3105" = load i64, i64* @_gasrem + %"$gascmp_3106" = icmp ugt i64 1, %"$gasrem_3105" + br i1 %"$gascmp_3106", label %"$out_of_gas_3107", label %"$have_gas_3108" -"$out_of_gas_3091": ; preds = %"$have_gas_3084" +"$out_of_gas_3107": ; preds = %"$have_gas_3100" call void @_out_of_gas() - br label %"$have_gas_3092" + br label %"$have_gas_3108" -"$have_gas_3092": ; preds = %"$out_of_gas_3091", %"$have_gas_3084" - %"$consume_3093" = sub i64 %"$gasrem_3089", 1 - store i64 %"$consume_3093", i64* @_gasrem +"$have_gas_3108": ; preds = %"$out_of_gas_3107", %"$have_gas_3100" + %"$consume_3109" = sub i64 %"$gasrem_3105", 1 + store i64 %"$consume_3109", i64* @_gasrem %one = alloca %Uint32 - %"$gasrem_3094" = load i64, i64* @_gasrem - %"$gascmp_3095" = icmp ugt i64 1, %"$gasrem_3094" - br i1 %"$gascmp_3095", label %"$out_of_gas_3096", label %"$have_gas_3097" + %"$gasrem_3110" = load i64, i64* @_gasrem + %"$gascmp_3111" = icmp ugt i64 1, %"$gasrem_3110" + br i1 %"$gascmp_3111", label %"$out_of_gas_3112", label %"$have_gas_3113" -"$out_of_gas_3096": ; preds = %"$have_gas_3092" +"$out_of_gas_3112": ; preds = %"$have_gas_3108" call void @_out_of_gas() - br label %"$have_gas_3097" + br label %"$have_gas_3113" -"$have_gas_3097": ; preds = %"$out_of_gas_3096", %"$have_gas_3092" - %"$consume_3098" = sub i64 %"$gasrem_3094", 1 - store i64 %"$consume_3098", i64* @_gasrem +"$have_gas_3113": ; preds = %"$out_of_gas_3112", %"$have_gas_3108" + %"$consume_3114" = sub i64 %"$gasrem_3110", 1 + store i64 %"$consume_3114", i64* @_gasrem store %Uint32 { i32 1 }, %Uint32* %one - %"$gasrem_3099" = load i64, i64* @_gasrem - %"$gascmp_3100" = icmp ugt i64 1, %"$gasrem_3099" - br i1 %"$gascmp_3100", label %"$out_of_gas_3101", label %"$have_gas_3102" + %"$gasrem_3115" = load i64, i64* @_gasrem + %"$gascmp_3116" = icmp ugt i64 1, %"$gasrem_3115" + br i1 %"$gascmp_3116", label %"$out_of_gas_3117", label %"$have_gas_3118" -"$out_of_gas_3101": ; preds = %"$have_gas_3097" +"$out_of_gas_3117": ; preds = %"$have_gas_3113" call void @_out_of_gas() - br label %"$have_gas_3102" + br label %"$have_gas_3118" -"$have_gas_3102": ; preds = %"$out_of_gas_3101", %"$have_gas_3097" - %"$consume_3103" = sub i64 %"$gasrem_3099", 1 - store i64 %"$consume_3103", i64* @_gasrem +"$have_gas_3118": ; preds = %"$out_of_gas_3117", %"$have_gas_3113" + %"$consume_3119" = sub i64 %"$gasrem_3115", 1 + store i64 %"$consume_3119", i64* @_gasrem %is_one = alloca %TName_Bool* - %"$execptr_load_3104" = load i8*, i8** @_execptr - %"$m3_size_3105" = load %Uint32, %Uint32* %m3_size - %"$one_3106" = load %Uint32, %Uint32* %one - %"$eq_call_3107" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_3104", %Uint32 %"$m3_size_3105", %Uint32 %"$one_3106") - store %TName_Bool* %"$eq_call_3107", %TName_Bool** %is_one - %"$gasrem_3108" = load i64, i64* @_gasrem - %"$gascmp_3109" = icmp ugt i64 2, %"$gasrem_3108" - br i1 %"$gascmp_3109", label %"$out_of_gas_3110", label %"$have_gas_3111" - -"$out_of_gas_3110": ; preds = %"$have_gas_3102" - call void @_out_of_gas() - br label %"$have_gas_3111" - -"$have_gas_3111": ; preds = %"$out_of_gas_3110", %"$have_gas_3102" - %"$consume_3112" = sub i64 %"$gasrem_3108", 2 - store i64 %"$consume_3112", i64* @_gasrem - %"$is_one_3114" = load %TName_Bool*, %TName_Bool** %is_one - %"$is_one_tag_3115" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_one_3114", i32 0, i32 0 - %"$is_one_tag_3116" = load i8, i8* %"$is_one_tag_3115" - switch i8 %"$is_one_tag_3116", label %"$empty_default_3117" [ - i8 0, label %"$True_3118" - i8 1, label %"$False_3120" + %"$execptr_load_3120" = load i8*, i8** @_execptr + %"$m3_size_3121" = load %Uint32, %Uint32* %m3_size + %"$one_3122" = load %Uint32, %Uint32* %one + %"$eq_call_3123" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_3120", %Uint32 %"$m3_size_3121", %Uint32 %"$one_3122") + store %TName_Bool* %"$eq_call_3123", %TName_Bool** %is_one + %"$gasrem_3124" = load i64, i64* @_gasrem + %"$gascmp_3125" = icmp ugt i64 2, %"$gasrem_3124" + br i1 %"$gascmp_3125", label %"$out_of_gas_3126", label %"$have_gas_3127" + +"$out_of_gas_3126": ; preds = %"$have_gas_3118" + call void @_out_of_gas() + br label %"$have_gas_3127" + +"$have_gas_3127": ; preds = %"$out_of_gas_3126", %"$have_gas_3118" + %"$consume_3128" = sub i64 %"$gasrem_3124", 2 + store i64 %"$consume_3128", i64* @_gasrem + %"$is_one_3130" = load %TName_Bool*, %TName_Bool** %is_one + %"$is_one_tag_3131" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_one_3130", i32 0, i32 0 + %"$is_one_tag_3132" = load i8, i8* %"$is_one_tag_3131" + switch i8 %"$is_one_tag_3132", label %"$empty_default_3133" [ + i8 0, label %"$True_3134" + i8 1, label %"$False_3136" ] -"$True_3118": ; preds = %"$have_gas_3111" - %"$is_one_3119" = bitcast %TName_Bool* %"$is_one_3114" to %CName_True* - br label %"$matchsucc_3113" +"$True_3134": ; preds = %"$have_gas_3127" + %"$is_one_3135" = bitcast %TName_Bool* %"$is_one_3130" to %CName_True* + br label %"$matchsucc_3129" -"$False_3120": ; preds = %"$have_gas_3111" - %"$is_one_3121" = bitcast %TName_Bool* %"$is_one_3114" to %CName_False* - %"$gasrem_3122" = load i64, i64* @_gasrem - %"$gascmp_3123" = icmp ugt i64 1, %"$gasrem_3122" - br i1 %"$gascmp_3123", label %"$out_of_gas_3124", label %"$have_gas_3125" +"$False_3136": ; preds = %"$have_gas_3127" + %"$is_one_3137" = bitcast %TName_Bool* %"$is_one_3130" to %CName_False* + %"$gasrem_3138" = load i64, i64* @_gasrem + %"$gascmp_3139" = icmp ugt i64 1, %"$gasrem_3138" + br i1 %"$gascmp_3139", label %"$out_of_gas_3140", label %"$have_gas_3141" -"$out_of_gas_3124": ; preds = %"$False_3120" +"$out_of_gas_3140": ; preds = %"$False_3136" call void @_out_of_gas() - br label %"$have_gas_3125" + br label %"$have_gas_3141" -"$have_gas_3125": ; preds = %"$out_of_gas_3124", %"$False_3120" - %"$consume_3126" = sub i64 %"$gasrem_3122", 1 - store i64 %"$consume_3126", i64* @_gasrem +"$have_gas_3141": ; preds = %"$out_of_gas_3140", %"$False_3136" + %"$consume_3142" = sub i64 %"$gasrem_3138", 1 + store i64 %"$consume_3142", i64* @_gasrem %err = alloca %String - %"$gasrem_3127" = load i64, i64* @_gasrem - %"$gascmp_3128" = icmp ugt i64 1, %"$gasrem_3127" - br i1 %"$gascmp_3128", label %"$out_of_gas_3129", label %"$have_gas_3130" + %"$gasrem_3143" = load i64, i64* @_gasrem + %"$gascmp_3144" = icmp ugt i64 1, %"$gasrem_3143" + br i1 %"$gascmp_3144", label %"$out_of_gas_3145", label %"$have_gas_3146" -"$out_of_gas_3129": ; preds = %"$have_gas_3125" +"$out_of_gas_3145": ; preds = %"$have_gas_3141" call void @_out_of_gas() - br label %"$have_gas_3130" + br label %"$have_gas_3146" -"$have_gas_3130": ; preds = %"$out_of_gas_3129", %"$have_gas_3125" - %"$consume_3131" = sub i64 %"$gasrem_3127", 1 - store i64 %"$consume_3131", i64* @_gasrem - store %String { i8* getelementptr inbounds ([22 x i8], [22 x i8]* @"$stringlit_3132", i32 0, i32 0), i32 22 }, %String* %err - %"$gasrem_3133" = load i64, i64* @_gasrem - %"$gascmp_3134" = icmp ugt i64 1, %"$gasrem_3133" - br i1 %"$gascmp_3134", label %"$out_of_gas_3135", label %"$have_gas_3136" +"$have_gas_3146": ; preds = %"$out_of_gas_3145", %"$have_gas_3141" + %"$consume_3147" = sub i64 %"$gasrem_3143", 1 + store i64 %"$consume_3147", i64* @_gasrem + store %String { i8* getelementptr inbounds ([22 x i8], [22 x i8]* @"$stringlit_3148", i32 0, i32 0), i32 22 }, %String* %err + %"$gasrem_3149" = load i64, i64* @_gasrem + %"$gascmp_3150" = icmp ugt i64 1, %"$gasrem_3149" + br i1 %"$gascmp_3150", label %"$out_of_gas_3151", label %"$have_gas_3152" -"$out_of_gas_3135": ; preds = %"$have_gas_3130" +"$out_of_gas_3151": ; preds = %"$have_gas_3146" call void @_out_of_gas() - br label %"$have_gas_3136" + br label %"$have_gas_3152" -"$have_gas_3136": ; preds = %"$out_of_gas_3135", %"$have_gas_3130" - %"$consume_3137" = sub i64 %"$gasrem_3133", 1 - store i64 %"$consume_3137", i64* @_gasrem - %"$fail_msg__sender_3138" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_3138" - %"$tname_3139" = load %String, %String* %tname - %"$err_3140" = load %String, %String* %err - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_3138", %String %"$tname_3139", %String %"$err_3140") - br label %"$matchsucc_3113" +"$have_gas_3152": ; preds = %"$out_of_gas_3151", %"$have_gas_3146" + %"$consume_3153" = sub i64 %"$gasrem_3149", 1 + store i64 %"$consume_3153", i64* @_gasrem + %"$fail_msg__sender_3154" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_3154" + %"$tname_3155" = load %String, %String* %tname + %"$err_3156" = load %String, %String* %err + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_3154", %String %"$tname_3155", %String %"$err_3156") + br label %"$matchsucc_3129" -"$empty_default_3117": ; preds = %"$have_gas_3111" - br label %"$matchsucc_3113" +"$empty_default_3133": ; preds = %"$have_gas_3127" + br label %"$matchsucc_3129" -"$matchsucc_3113": ; preds = %"$have_gas_3136", %"$True_3118", %"$empty_default_3117" - %"$gasrem_3141" = load i64, i64* @_gasrem - %"$gascmp_3142" = icmp ugt i64 1, %"$gasrem_3141" - br i1 %"$gascmp_3142", label %"$out_of_gas_3143", label %"$have_gas_3144" +"$matchsucc_3129": ; preds = %"$have_gas_3152", %"$True_3134", %"$empty_default_3133" + %"$gasrem_3157" = load i64, i64* @_gasrem + %"$gascmp_3158" = icmp ugt i64 1, %"$gasrem_3157" + br i1 %"$gascmp_3158", label %"$out_of_gas_3159", label %"$have_gas_3160" -"$out_of_gas_3143": ; preds = %"$matchsucc_3113" +"$out_of_gas_3159": ; preds = %"$matchsucc_3129" call void @_out_of_gas() - br label %"$have_gas_3144" + br label %"$have_gas_3160" -"$have_gas_3144": ; preds = %"$out_of_gas_3143", %"$matchsucc_3113" - %"$consume_3145" = sub i64 %"$gasrem_3141", 1 - store i64 %"$consume_3145", i64* @_gasrem +"$have_gas_3160": ; preds = %"$out_of_gas_3159", %"$matchsucc_3129" + %"$consume_3161" = sub i64 %"$gasrem_3157", 1 + store i64 %"$consume_3161", i64* @_gasrem %key1a = alloca %String - %"$gasrem_3146" = load i64, i64* @_gasrem - %"$gascmp_3147" = icmp ugt i64 1, %"$gasrem_3146" - br i1 %"$gascmp_3147", label %"$out_of_gas_3148", label %"$have_gas_3149" + %"$gasrem_3162" = load i64, i64* @_gasrem + %"$gascmp_3163" = icmp ugt i64 1, %"$gasrem_3162" + br i1 %"$gascmp_3163", label %"$out_of_gas_3164", label %"$have_gas_3165" -"$out_of_gas_3148": ; preds = %"$have_gas_3144" +"$out_of_gas_3164": ; preds = %"$have_gas_3160" call void @_out_of_gas() - br label %"$have_gas_3149" + br label %"$have_gas_3165" -"$have_gas_3149": ; preds = %"$out_of_gas_3148", %"$have_gas_3144" - %"$consume_3150" = sub i64 %"$gasrem_3146", 1 - store i64 %"$consume_3150", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3151", i32 0, i32 0), i32 5 }, %String* %key1a - %"$gasrem_3152" = load i64, i64* @_gasrem - %"$gascmp_3153" = icmp ugt i64 1, %"$gasrem_3152" - br i1 %"$gascmp_3153", label %"$out_of_gas_3154", label %"$have_gas_3155" +"$have_gas_3165": ; preds = %"$out_of_gas_3164", %"$have_gas_3160" + %"$consume_3166" = sub i64 %"$gasrem_3162", 1 + store i64 %"$consume_3166", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3167", i32 0, i32 0), i32 5 }, %String* %key1a + %"$gasrem_3168" = load i64, i64* @_gasrem + %"$gascmp_3169" = icmp ugt i64 1, %"$gasrem_3168" + br i1 %"$gascmp_3169", label %"$out_of_gas_3170", label %"$have_gas_3171" -"$out_of_gas_3154": ; preds = %"$have_gas_3149" +"$out_of_gas_3170": ; preds = %"$have_gas_3165" call void @_out_of_gas() - br label %"$have_gas_3155" + br label %"$have_gas_3171" -"$have_gas_3155": ; preds = %"$out_of_gas_3154", %"$have_gas_3149" - %"$consume_3156" = sub i64 %"$gasrem_3152", 1 - store i64 %"$consume_3156", i64* @_gasrem +"$have_gas_3171": ; preds = %"$out_of_gas_3170", %"$have_gas_3165" + %"$consume_3172" = sub i64 %"$gasrem_3168", 1 + store i64 %"$consume_3172", i64* @_gasrem %key2a = alloca %String - %"$gasrem_3157" = load i64, i64* @_gasrem - %"$gascmp_3158" = icmp ugt i64 1, %"$gasrem_3157" - br i1 %"$gascmp_3158", label %"$out_of_gas_3159", label %"$have_gas_3160" + %"$gasrem_3173" = load i64, i64* @_gasrem + %"$gascmp_3174" = icmp ugt i64 1, %"$gasrem_3173" + br i1 %"$gascmp_3174", label %"$out_of_gas_3175", label %"$have_gas_3176" -"$out_of_gas_3159": ; preds = %"$have_gas_3155" +"$out_of_gas_3175": ; preds = %"$have_gas_3171" call void @_out_of_gas() - br label %"$have_gas_3160" + br label %"$have_gas_3176" -"$have_gas_3160": ; preds = %"$out_of_gas_3159", %"$have_gas_3155" - %"$consume_3161" = sub i64 %"$gasrem_3157", 1 - store i64 %"$consume_3161", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3162", i32 0, i32 0), i32 5 }, %String* %key2a - %"$gasrem_3163" = load i64, i64* @_gasrem - %"$gascmp_3164" = icmp ugt i64 1, %"$gasrem_3163" - br i1 %"$gascmp_3164", label %"$out_of_gas_3165", label %"$have_gas_3166" +"$have_gas_3176": ; preds = %"$out_of_gas_3175", %"$have_gas_3171" + %"$consume_3177" = sub i64 %"$gasrem_3173", 1 + store i64 %"$consume_3177", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3178", i32 0, i32 0), i32 5 }, %String* %key2a + %"$gasrem_3179" = load i64, i64* @_gasrem + %"$gascmp_3180" = icmp ugt i64 1, %"$gasrem_3179" + br i1 %"$gascmp_3180", label %"$out_of_gas_3181", label %"$have_gas_3182" -"$out_of_gas_3165": ; preds = %"$have_gas_3160" +"$out_of_gas_3181": ; preds = %"$have_gas_3176" call void @_out_of_gas() - br label %"$have_gas_3166" + br label %"$have_gas_3182" -"$have_gas_3166": ; preds = %"$out_of_gas_3165", %"$have_gas_3160" - %"$consume_3167" = sub i64 %"$gasrem_3163", 1 - store i64 %"$consume_3167", i64* @_gasrem +"$have_gas_3182": ; preds = %"$out_of_gas_3181", %"$have_gas_3176" + %"$consume_3183" = sub i64 %"$gasrem_3179", 1 + store i64 %"$consume_3183", i64* @_gasrem %m2o = alloca %"TName_Option_Map_(String)_(Map_(String)_(String))"* - %"$execptr_load_3168" = load i8*, i8** @_execptr - %"$m3_3169" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 - %"$$m3_3169_3170" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_3169" to i8* - %"$get_key1a_3171" = alloca %String - %"$key1a_3172" = load %String, %String* %key1a - store %String %"$key1a_3172", %String* %"$get_key1a_3171" - %"$$get_key1a_3171_3173" = bitcast %String* %"$get_key1a_3171" to i8* - %"$get_call_3174" = call i8* @_get(i8* %"$execptr_load_3168", %_TyDescrTy_Typ* @"$TyDescr_Map_70", i8* %"$$m3_3169_3170", i8* %"$$get_key1a_3171_3173") - %"$_get_3175" = bitcast i8* %"$get_call_3174" to %"TName_Option_Map_(String)_(Map_(String)_(String))"* - store %"TName_Option_Map_(String)_(Map_(String)_(String))"* %"$_get_3175", %"TName_Option_Map_(String)_(Map_(String)_(String))"** %m2o - %"$gasrem_3176" = load i64, i64* @_gasrem - %"$gascmp_3177" = icmp ugt i64 2, %"$gasrem_3176" - br i1 %"$gascmp_3177", label %"$out_of_gas_3178", label %"$have_gas_3179" - -"$out_of_gas_3178": ; preds = %"$have_gas_3166" - call void @_out_of_gas() - br label %"$have_gas_3179" - -"$have_gas_3179": ; preds = %"$out_of_gas_3178", %"$have_gas_3166" - %"$consume_3180" = sub i64 %"$gasrem_3176", 2 - store i64 %"$consume_3180", i64* @_gasrem - %"$m2o_3182" = load %"TName_Option_Map_(String)_(Map_(String)_(String))"*, %"TName_Option_Map_(String)_(Map_(String)_(String))"** %m2o - %"$m2o_tag_3183" = getelementptr inbounds %"TName_Option_Map_(String)_(Map_(String)_(String))", %"TName_Option_Map_(String)_(Map_(String)_(String))"* %"$m2o_3182", i32 0, i32 0 - %"$m2o_tag_3184" = load i8, i8* %"$m2o_tag_3183" - switch i8 %"$m2o_tag_3184", label %"$empty_default_3185" [ - i8 0, label %"$Some_3186" - i8 1, label %"$None_3348" + %"$execptr_load_3184" = load i8*, i8** @_execptr + %"$m3_3185" = load %"Map_String_Map_(String)_(Map_(String)_(String))"*, %"Map_String_Map_(String)_(Map_(String)_(String))"** %m3 + %"$$m3_3185_3186" = bitcast %"Map_String_Map_(String)_(Map_(String)_(String))"* %"$m3_3185" to i8* + %"$get_key1a_3187" = alloca %String + %"$key1a_3188" = load %String, %String* %key1a + store %String %"$key1a_3188", %String* %"$get_key1a_3187" + %"$$get_key1a_3187_3189" = bitcast %String* %"$get_key1a_3187" to i8* + %"$get_call_3190" = call i8* @_get(i8* %"$execptr_load_3184", %_TyDescrTy_Typ* @"$TyDescr_Map_70", i8* %"$$m3_3185_3186", i8* %"$$get_key1a_3187_3189") + %"$_get_3191" = bitcast i8* %"$get_call_3190" to %"TName_Option_Map_(String)_(Map_(String)_(String))"* + store %"TName_Option_Map_(String)_(Map_(String)_(String))"* %"$_get_3191", %"TName_Option_Map_(String)_(Map_(String)_(String))"** %m2o + %"$gasrem_3192" = load i64, i64* @_gasrem + %"$gascmp_3193" = icmp ugt i64 2, %"$gasrem_3192" + br i1 %"$gascmp_3193", label %"$out_of_gas_3194", label %"$have_gas_3195" + +"$out_of_gas_3194": ; preds = %"$have_gas_3182" + call void @_out_of_gas() + br label %"$have_gas_3195" + +"$have_gas_3195": ; preds = %"$out_of_gas_3194", %"$have_gas_3182" + %"$consume_3196" = sub i64 %"$gasrem_3192", 2 + store i64 %"$consume_3196", i64* @_gasrem + %"$m2o_3198" = load %"TName_Option_Map_(String)_(Map_(String)_(String))"*, %"TName_Option_Map_(String)_(Map_(String)_(String))"** %m2o + %"$m2o_tag_3199" = getelementptr inbounds %"TName_Option_Map_(String)_(Map_(String)_(String))", %"TName_Option_Map_(String)_(Map_(String)_(String))"* %"$m2o_3198", i32 0, i32 0 + %"$m2o_tag_3200" = load i8, i8* %"$m2o_tag_3199" + switch i8 %"$m2o_tag_3200", label %"$empty_default_3201" [ + i8 0, label %"$Some_3202" + i8 1, label %"$None_3364" ] -"$Some_3186": ; preds = %"$have_gas_3179" - %"$m2o_3187" = bitcast %"TName_Option_Map_(String)_(Map_(String)_(String))"* %"$m2o_3182" to %"CName_Some_Map_(String)_(Map_(String)_(String))"* - %"$m2_gep_3188" = getelementptr inbounds %"CName_Some_Map_(String)_(Map_(String)_(String))", %"CName_Some_Map_(String)_(Map_(String)_(String))"* %"$m2o_3187", i32 0, i32 1 - %"$m2_load_3189" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %"$m2_gep_3188" +"$Some_3202": ; preds = %"$have_gas_3195" + %"$m2o_3203" = bitcast %"TName_Option_Map_(String)_(Map_(String)_(String))"* %"$m2o_3198" to %"CName_Some_Map_(String)_(Map_(String)_(String))"* + %"$m2_gep_3204" = getelementptr inbounds %"CName_Some_Map_(String)_(Map_(String)_(String))", %"CName_Some_Map_(String)_(Map_(String)_(String))"* %"$m2o_3203", i32 0, i32 1 + %"$m2_load_3205" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %"$m2_gep_3204" %m2 = alloca %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$m2_load_3189", %"Map_String_Map_(String)_(String)"** %m2 - %"$gasrem_3190" = load i64, i64* @_gasrem - %"$gascmp_3191" = icmp ugt i64 1, %"$gasrem_3190" - br i1 %"$gascmp_3191", label %"$out_of_gas_3192", label %"$have_gas_3193" + store %"Map_String_Map_(String)_(String)"* %"$m2_load_3205", %"Map_String_Map_(String)_(String)"** %m2 + %"$gasrem_3206" = load i64, i64* @_gasrem + %"$gascmp_3207" = icmp ugt i64 1, %"$gasrem_3206" + br i1 %"$gascmp_3207", label %"$out_of_gas_3208", label %"$have_gas_3209" -"$out_of_gas_3192": ; preds = %"$Some_3186" +"$out_of_gas_3208": ; preds = %"$Some_3202" call void @_out_of_gas() - br label %"$have_gas_3193" + br label %"$have_gas_3209" -"$have_gas_3193": ; preds = %"$out_of_gas_3192", %"$Some_3186" - %"$consume_3194" = sub i64 %"$gasrem_3190", 1 - store i64 %"$consume_3194", i64* @_gasrem +"$have_gas_3209": ; preds = %"$out_of_gas_3208", %"$Some_3202" + %"$consume_3210" = sub i64 %"$gasrem_3206", 1 + store i64 %"$consume_3210", i64* @_gasrem %m2_size = alloca %Uint32 - %"$m2_3195" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 - %"$$m2_3195_3196" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_3195" to i8* - %"$size_call_3197" = call %Uint32 @_size(i8* %"$$m2_3195_3196") - store %Uint32 %"$size_call_3197", %Uint32* %m2_size - %"$gasrem_3198" = load i64, i64* @_gasrem - %"$gascmp_3199" = icmp ugt i64 1, %"$gasrem_3198" - br i1 %"$gascmp_3199", label %"$out_of_gas_3200", label %"$have_gas_3201" + %"$m2_3211" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 + %"$$m2_3211_3212" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_3211" to i8* + %"$size_call_3213" = call %Uint32 @_size(i8* %"$$m2_3211_3212") + store %Uint32 %"$size_call_3213", %Uint32* %m2_size + %"$gasrem_3214" = load i64, i64* @_gasrem + %"$gascmp_3215" = icmp ugt i64 1, %"$gasrem_3214" + br i1 %"$gascmp_3215", label %"$out_of_gas_3216", label %"$have_gas_3217" -"$out_of_gas_3200": ; preds = %"$have_gas_3193" +"$out_of_gas_3216": ; preds = %"$have_gas_3209" call void @_out_of_gas() - br label %"$have_gas_3201" + br label %"$have_gas_3217" -"$have_gas_3201": ; preds = %"$out_of_gas_3200", %"$have_gas_3193" - %"$consume_3202" = sub i64 %"$gasrem_3198", 1 - store i64 %"$consume_3202", i64* @_gasrem +"$have_gas_3217": ; preds = %"$out_of_gas_3216", %"$have_gas_3209" + %"$consume_3218" = sub i64 %"$gasrem_3214", 1 + store i64 %"$consume_3218", i64* @_gasrem %is_one_1 = alloca %TName_Bool* - %"$execptr_load_3203" = load i8*, i8** @_execptr - %"$m2_size_3204" = load %Uint32, %Uint32* %m2_size - %"$one_3205" = load %Uint32, %Uint32* %one - %"$eq_call_3206" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_3203", %Uint32 %"$m2_size_3204", %Uint32 %"$one_3205") - store %TName_Bool* %"$eq_call_3206", %TName_Bool** %is_one_1 - %"$gasrem_3207" = load i64, i64* @_gasrem - %"$gascmp_3208" = icmp ugt i64 2, %"$gasrem_3207" - br i1 %"$gascmp_3208", label %"$out_of_gas_3209", label %"$have_gas_3210" - -"$out_of_gas_3209": ; preds = %"$have_gas_3201" - call void @_out_of_gas() - br label %"$have_gas_3210" - -"$have_gas_3210": ; preds = %"$out_of_gas_3209", %"$have_gas_3201" - %"$consume_3211" = sub i64 %"$gasrem_3207", 2 - store i64 %"$consume_3211", i64* @_gasrem - %"$is_one_1_3213" = load %TName_Bool*, %TName_Bool** %is_one_1 - %"$is_one_1_tag_3214" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_one_1_3213", i32 0, i32 0 - %"$is_one_1_tag_3215" = load i8, i8* %"$is_one_1_tag_3214" - switch i8 %"$is_one_1_tag_3215", label %"$empty_default_3216" [ - i8 0, label %"$True_3217" - i8 1, label %"$False_3327" + %"$execptr_load_3219" = load i8*, i8** @_execptr + %"$m2_size_3220" = load %Uint32, %Uint32* %m2_size + %"$one_3221" = load %Uint32, %Uint32* %one + %"$eq_call_3222" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_3219", %Uint32 %"$m2_size_3220", %Uint32 %"$one_3221") + store %TName_Bool* %"$eq_call_3222", %TName_Bool** %is_one_1 + %"$gasrem_3223" = load i64, i64* @_gasrem + %"$gascmp_3224" = icmp ugt i64 2, %"$gasrem_3223" + br i1 %"$gascmp_3224", label %"$out_of_gas_3225", label %"$have_gas_3226" + +"$out_of_gas_3225": ; preds = %"$have_gas_3217" + call void @_out_of_gas() + br label %"$have_gas_3226" + +"$have_gas_3226": ; preds = %"$out_of_gas_3225", %"$have_gas_3217" + %"$consume_3227" = sub i64 %"$gasrem_3223", 2 + store i64 %"$consume_3227", i64* @_gasrem + %"$is_one_1_3229" = load %TName_Bool*, %TName_Bool** %is_one_1 + %"$is_one_1_tag_3230" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_one_1_3229", i32 0, i32 0 + %"$is_one_1_tag_3231" = load i8, i8* %"$is_one_1_tag_3230" + switch i8 %"$is_one_1_tag_3231", label %"$empty_default_3232" [ + i8 0, label %"$True_3233" + i8 1, label %"$False_3343" ] -"$True_3217": ; preds = %"$have_gas_3210" - %"$is_one_1_3218" = bitcast %TName_Bool* %"$is_one_1_3213" to %CName_True* - %"$gasrem_3219" = load i64, i64* @_gasrem - %"$gascmp_3220" = icmp ugt i64 1, %"$gasrem_3219" - br i1 %"$gascmp_3220", label %"$out_of_gas_3221", label %"$have_gas_3222" +"$True_3233": ; preds = %"$have_gas_3226" + %"$is_one_1_3234" = bitcast %TName_Bool* %"$is_one_1_3229" to %CName_True* + %"$gasrem_3235" = load i64, i64* @_gasrem + %"$gascmp_3236" = icmp ugt i64 1, %"$gasrem_3235" + br i1 %"$gascmp_3236", label %"$out_of_gas_3237", label %"$have_gas_3238" -"$out_of_gas_3221": ; preds = %"$True_3217" +"$out_of_gas_3237": ; preds = %"$True_3233" call void @_out_of_gas() - br label %"$have_gas_3222" + br label %"$have_gas_3238" -"$have_gas_3222": ; preds = %"$out_of_gas_3221", %"$True_3217" - %"$consume_3223" = sub i64 %"$gasrem_3219", 1 - store i64 %"$consume_3223", i64* @_gasrem +"$have_gas_3238": ; preds = %"$out_of_gas_3237", %"$True_3233" + %"$consume_3239" = sub i64 %"$gasrem_3235", 1 + store i64 %"$consume_3239", i64* @_gasrem %m1o = alloca %"TName_Option_Map_(String)_(String)"* - %"$execptr_load_3224" = load i8*, i8** @_execptr - %"$m2_3225" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 - %"$$m2_3225_3226" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_3225" to i8* - %"$get_key2a_3227" = alloca %String - %"$key2a_3228" = load %String, %String* %key2a - store %String %"$key2a_3228", %String* %"$get_key2a_3227" - %"$$get_key2a_3227_3229" = bitcast %String* %"$get_key2a_3227" to i8* - %"$get_call_3230" = call i8* @_get(i8* %"$execptr_load_3224", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m2_3225_3226", i8* %"$$get_key2a_3227_3229") - %"$_get_3231" = bitcast i8* %"$get_call_3230" to %"TName_Option_Map_(String)_(String)"* - store %"TName_Option_Map_(String)_(String)"* %"$_get_3231", %"TName_Option_Map_(String)_(String)"** %m1o - %"$gasrem_3232" = load i64, i64* @_gasrem - %"$gascmp_3233" = icmp ugt i64 2, %"$gasrem_3232" - br i1 %"$gascmp_3233", label %"$out_of_gas_3234", label %"$have_gas_3235" - -"$out_of_gas_3234": ; preds = %"$have_gas_3222" - call void @_out_of_gas() - br label %"$have_gas_3235" - -"$have_gas_3235": ; preds = %"$out_of_gas_3234", %"$have_gas_3222" - %"$consume_3236" = sub i64 %"$gasrem_3232", 2 - store i64 %"$consume_3236", i64* @_gasrem - %"$m1o_3238" = load %"TName_Option_Map_(String)_(String)"*, %"TName_Option_Map_(String)_(String)"** %m1o - %"$m1o_tag_3239" = getelementptr inbounds %"TName_Option_Map_(String)_(String)", %"TName_Option_Map_(String)_(String)"* %"$m1o_3238", i32 0, i32 0 - %"$m1o_tag_3240" = load i8, i8* %"$m1o_tag_3239" - switch i8 %"$m1o_tag_3240", label %"$empty_default_3241" [ - i8 0, label %"$Some_3242" - i8 1, label %"$None_3306" + %"$execptr_load_3240" = load i8*, i8** @_execptr + %"$m2_3241" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2 + %"$$m2_3241_3242" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_3241" to i8* + %"$get_key2a_3243" = alloca %String + %"$key2a_3244" = load %String, %String* %key2a + store %String %"$key2a_3244", %String* %"$get_key2a_3243" + %"$$get_key2a_3243_3245" = bitcast %String* %"$get_key2a_3243" to i8* + %"$get_call_3246" = call i8* @_get(i8* %"$execptr_load_3240", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m2_3241_3242", i8* %"$$get_key2a_3243_3245") + %"$_get_3247" = bitcast i8* %"$get_call_3246" to %"TName_Option_Map_(String)_(String)"* + store %"TName_Option_Map_(String)_(String)"* %"$_get_3247", %"TName_Option_Map_(String)_(String)"** %m1o + %"$gasrem_3248" = load i64, i64* @_gasrem + %"$gascmp_3249" = icmp ugt i64 2, %"$gasrem_3248" + br i1 %"$gascmp_3249", label %"$out_of_gas_3250", label %"$have_gas_3251" + +"$out_of_gas_3250": ; preds = %"$have_gas_3238" + call void @_out_of_gas() + br label %"$have_gas_3251" + +"$have_gas_3251": ; preds = %"$out_of_gas_3250", %"$have_gas_3238" + %"$consume_3252" = sub i64 %"$gasrem_3248", 2 + store i64 %"$consume_3252", i64* @_gasrem + %"$m1o_3254" = load %"TName_Option_Map_(String)_(String)"*, %"TName_Option_Map_(String)_(String)"** %m1o + %"$m1o_tag_3255" = getelementptr inbounds %"TName_Option_Map_(String)_(String)", %"TName_Option_Map_(String)_(String)"* %"$m1o_3254", i32 0, i32 0 + %"$m1o_tag_3256" = load i8, i8* %"$m1o_tag_3255" + switch i8 %"$m1o_tag_3256", label %"$empty_default_3257" [ + i8 0, label %"$Some_3258" + i8 1, label %"$None_3322" ] -"$Some_3242": ; preds = %"$have_gas_3235" - %"$m1o_3243" = bitcast %"TName_Option_Map_(String)_(String)"* %"$m1o_3238" to %"CName_Some_Map_(String)_(String)"* - %"$m1_gep_3244" = getelementptr inbounds %"CName_Some_Map_(String)_(String)", %"CName_Some_Map_(String)_(String)"* %"$m1o_3243", i32 0, i32 1 - %"$m1_load_3245" = load %Map_String_String*, %Map_String_String** %"$m1_gep_3244" +"$Some_3258": ; preds = %"$have_gas_3251" + %"$m1o_3259" = bitcast %"TName_Option_Map_(String)_(String)"* %"$m1o_3254" to %"CName_Some_Map_(String)_(String)"* + %"$m1_gep_3260" = getelementptr inbounds %"CName_Some_Map_(String)_(String)", %"CName_Some_Map_(String)_(String)"* %"$m1o_3259", i32 0, i32 1 + %"$m1_load_3261" = load %Map_String_String*, %Map_String_String** %"$m1_gep_3260" %m1 = alloca %Map_String_String* - store %Map_String_String* %"$m1_load_3245", %Map_String_String** %m1 - %"$gasrem_3246" = load i64, i64* @_gasrem - %"$gascmp_3247" = icmp ugt i64 1, %"$gasrem_3246" - br i1 %"$gascmp_3247", label %"$out_of_gas_3248", label %"$have_gas_3249" + store %Map_String_String* %"$m1_load_3261", %Map_String_String** %m1 + %"$gasrem_3262" = load i64, i64* @_gasrem + %"$gascmp_3263" = icmp ugt i64 1, %"$gasrem_3262" + br i1 %"$gascmp_3263", label %"$out_of_gas_3264", label %"$have_gas_3265" -"$out_of_gas_3248": ; preds = %"$Some_3242" +"$out_of_gas_3264": ; preds = %"$Some_3258" call void @_out_of_gas() - br label %"$have_gas_3249" + br label %"$have_gas_3265" -"$have_gas_3249": ; preds = %"$out_of_gas_3248", %"$Some_3242" - %"$consume_3250" = sub i64 %"$gasrem_3246", 1 - store i64 %"$consume_3250", i64* @_gasrem +"$have_gas_3265": ; preds = %"$out_of_gas_3264", %"$Some_3258" + %"$consume_3266" = sub i64 %"$gasrem_3262", 1 + store i64 %"$consume_3266", i64* @_gasrem %m1_size = alloca %Uint32 - %"$m1_3251" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_3251_3252" = bitcast %Map_String_String* %"$m1_3251" to i8* - %"$size_call_3253" = call %Uint32 @_size(i8* %"$$m1_3251_3252") - store %Uint32 %"$size_call_3253", %Uint32* %m1_size - %"$gasrem_3254" = load i64, i64* @_gasrem - %"$gascmp_3255" = icmp ugt i64 1, %"$gasrem_3254" - br i1 %"$gascmp_3255", label %"$out_of_gas_3256", label %"$have_gas_3257" + %"$m1_3267" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_3267_3268" = bitcast %Map_String_String* %"$m1_3267" to i8* + %"$size_call_3269" = call %Uint32 @_size(i8* %"$$m1_3267_3268") + store %Uint32 %"$size_call_3269", %Uint32* %m1_size + %"$gasrem_3270" = load i64, i64* @_gasrem + %"$gascmp_3271" = icmp ugt i64 1, %"$gasrem_3270" + br i1 %"$gascmp_3271", label %"$out_of_gas_3272", label %"$have_gas_3273" -"$out_of_gas_3256": ; preds = %"$have_gas_3249" +"$out_of_gas_3272": ; preds = %"$have_gas_3265" call void @_out_of_gas() - br label %"$have_gas_3257" + br label %"$have_gas_3273" -"$have_gas_3257": ; preds = %"$out_of_gas_3256", %"$have_gas_3249" - %"$consume_3258" = sub i64 %"$gasrem_3254", 1 - store i64 %"$consume_3258", i64* @_gasrem +"$have_gas_3273": ; preds = %"$out_of_gas_3272", %"$have_gas_3265" + %"$consume_3274" = sub i64 %"$gasrem_3270", 1 + store i64 %"$consume_3274", i64* @_gasrem %zero = alloca %Uint32 - %"$gasrem_3259" = load i64, i64* @_gasrem - %"$gascmp_3260" = icmp ugt i64 1, %"$gasrem_3259" - br i1 %"$gascmp_3260", label %"$out_of_gas_3261", label %"$have_gas_3262" + %"$gasrem_3275" = load i64, i64* @_gasrem + %"$gascmp_3276" = icmp ugt i64 1, %"$gasrem_3275" + br i1 %"$gascmp_3276", label %"$out_of_gas_3277", label %"$have_gas_3278" -"$out_of_gas_3261": ; preds = %"$have_gas_3257" +"$out_of_gas_3277": ; preds = %"$have_gas_3273" call void @_out_of_gas() - br label %"$have_gas_3262" + br label %"$have_gas_3278" -"$have_gas_3262": ; preds = %"$out_of_gas_3261", %"$have_gas_3257" - %"$consume_3263" = sub i64 %"$gasrem_3259", 1 - store i64 %"$consume_3263", i64* @_gasrem +"$have_gas_3278": ; preds = %"$out_of_gas_3277", %"$have_gas_3273" + %"$consume_3279" = sub i64 %"$gasrem_3275", 1 + store i64 %"$consume_3279", i64* @_gasrem store %Uint32 zeroinitializer, %Uint32* %zero - %"$gasrem_3264" = load i64, i64* @_gasrem - %"$gascmp_3265" = icmp ugt i64 1, %"$gasrem_3264" - br i1 %"$gascmp_3265", label %"$out_of_gas_3266", label %"$have_gas_3267" + %"$gasrem_3280" = load i64, i64* @_gasrem + %"$gascmp_3281" = icmp ugt i64 1, %"$gasrem_3280" + br i1 %"$gascmp_3281", label %"$out_of_gas_3282", label %"$have_gas_3283" -"$out_of_gas_3266": ; preds = %"$have_gas_3262" +"$out_of_gas_3282": ; preds = %"$have_gas_3278" call void @_out_of_gas() - br label %"$have_gas_3267" + br label %"$have_gas_3283" -"$have_gas_3267": ; preds = %"$out_of_gas_3266", %"$have_gas_3262" - %"$consume_3268" = sub i64 %"$gasrem_3264", 1 - store i64 %"$consume_3268", i64* @_gasrem +"$have_gas_3283": ; preds = %"$out_of_gas_3282", %"$have_gas_3278" + %"$consume_3284" = sub i64 %"$gasrem_3280", 1 + store i64 %"$consume_3284", i64* @_gasrem %is_empty = alloca %TName_Bool* - %"$execptr_load_3269" = load i8*, i8** @_execptr - %"$m1_size_3270" = load %Uint32, %Uint32* %m1_size - %"$zero_3271" = load %Uint32, %Uint32* %zero - %"$eq_call_3272" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_3269", %Uint32 %"$m1_size_3270", %Uint32 %"$zero_3271") - store %TName_Bool* %"$eq_call_3272", %TName_Bool** %is_empty - %"$gasrem_3273" = load i64, i64* @_gasrem - %"$gascmp_3274" = icmp ugt i64 2, %"$gasrem_3273" - br i1 %"$gascmp_3274", label %"$out_of_gas_3275", label %"$have_gas_3276" - -"$out_of_gas_3275": ; preds = %"$have_gas_3267" - call void @_out_of_gas() - br label %"$have_gas_3276" - -"$have_gas_3276": ; preds = %"$out_of_gas_3275", %"$have_gas_3267" - %"$consume_3277" = sub i64 %"$gasrem_3273", 2 - store i64 %"$consume_3277", i64* @_gasrem - %"$is_empty_3279" = load %TName_Bool*, %TName_Bool** %is_empty - %"$is_empty_tag_3280" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_3279", i32 0, i32 0 - %"$is_empty_tag_3281" = load i8, i8* %"$is_empty_tag_3280" - switch i8 %"$is_empty_tag_3281", label %"$empty_default_3282" [ - i8 0, label %"$True_3283" - i8 1, label %"$False_3285" + %"$execptr_load_3285" = load i8*, i8** @_execptr + %"$m1_size_3286" = load %Uint32, %Uint32* %m1_size + %"$zero_3287" = load %Uint32, %Uint32* %zero + %"$eq_call_3288" = call %TName_Bool* @_eq_Uint32(i8* %"$execptr_load_3285", %Uint32 %"$m1_size_3286", %Uint32 %"$zero_3287") + store %TName_Bool* %"$eq_call_3288", %TName_Bool** %is_empty + %"$gasrem_3289" = load i64, i64* @_gasrem + %"$gascmp_3290" = icmp ugt i64 2, %"$gasrem_3289" + br i1 %"$gascmp_3290", label %"$out_of_gas_3291", label %"$have_gas_3292" + +"$out_of_gas_3291": ; preds = %"$have_gas_3283" + call void @_out_of_gas() + br label %"$have_gas_3292" + +"$have_gas_3292": ; preds = %"$out_of_gas_3291", %"$have_gas_3283" + %"$consume_3293" = sub i64 %"$gasrem_3289", 2 + store i64 %"$consume_3293", i64* @_gasrem + %"$is_empty_3295" = load %TName_Bool*, %TName_Bool** %is_empty + %"$is_empty_tag_3296" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_empty_3295", i32 0, i32 0 + %"$is_empty_tag_3297" = load i8, i8* %"$is_empty_tag_3296" + switch i8 %"$is_empty_tag_3297", label %"$empty_default_3298" [ + i8 0, label %"$True_3299" + i8 1, label %"$False_3301" ] -"$True_3283": ; preds = %"$have_gas_3276" - %"$is_empty_3284" = bitcast %TName_Bool* %"$is_empty_3279" to %CName_True* - br label %"$matchsucc_3278" +"$True_3299": ; preds = %"$have_gas_3292" + %"$is_empty_3300" = bitcast %TName_Bool* %"$is_empty_3295" to %CName_True* + br label %"$matchsucc_3294" -"$False_3285": ; preds = %"$have_gas_3276" - %"$is_empty_3286" = bitcast %TName_Bool* %"$is_empty_3279" to %CName_False* - %"$gasrem_3287" = load i64, i64* @_gasrem - %"$gascmp_3288" = icmp ugt i64 1, %"$gasrem_3287" - br i1 %"$gascmp_3288", label %"$out_of_gas_3289", label %"$have_gas_3290" +"$False_3301": ; preds = %"$have_gas_3292" + %"$is_empty_3302" = bitcast %TName_Bool* %"$is_empty_3295" to %CName_False* + %"$gasrem_3303" = load i64, i64* @_gasrem + %"$gascmp_3304" = icmp ugt i64 1, %"$gasrem_3303" + br i1 %"$gascmp_3304", label %"$out_of_gas_3305", label %"$have_gas_3306" -"$out_of_gas_3289": ; preds = %"$False_3285" +"$out_of_gas_3305": ; preds = %"$False_3301" call void @_out_of_gas() - br label %"$have_gas_3290" + br label %"$have_gas_3306" -"$have_gas_3290": ; preds = %"$out_of_gas_3289", %"$False_3285" - %"$consume_3291" = sub i64 %"$gasrem_3287", 1 - store i64 %"$consume_3291", i64* @_gasrem +"$have_gas_3306": ; preds = %"$out_of_gas_3305", %"$False_3301" + %"$consume_3307" = sub i64 %"$gasrem_3303", 1 + store i64 %"$consume_3307", i64* @_gasrem %err1 = alloca %String - %"$gasrem_3292" = load i64, i64* @_gasrem - %"$gascmp_3293" = icmp ugt i64 1, %"$gasrem_3292" - br i1 %"$gascmp_3293", label %"$out_of_gas_3294", label %"$have_gas_3295" - -"$out_of_gas_3294": ; preds = %"$have_gas_3290" - call void @_out_of_gas() - br label %"$have_gas_3295" - -"$have_gas_3295": ; preds = %"$out_of_gas_3294", %"$have_gas_3290" - %"$consume_3296" = sub i64 %"$gasrem_3292", 1 - store i64 %"$consume_3296", i64* @_gasrem - store %String { i8* getelementptr inbounds ([36 x i8], [36 x i8]* @"$stringlit_3297", i32 0, i32 0), i32 36 }, %String* %err1 - %"$gasrem_3298" = load i64, i64* @_gasrem - %"$gascmp_3299" = icmp ugt i64 1, %"$gasrem_3298" - br i1 %"$gascmp_3299", label %"$out_of_gas_3300", label %"$have_gas_3301" - -"$out_of_gas_3300": ; preds = %"$have_gas_3295" - call void @_out_of_gas() - br label %"$have_gas_3301" - -"$have_gas_3301": ; preds = %"$out_of_gas_3300", %"$have_gas_3295" - %"$consume_3302" = sub i64 %"$gasrem_3298", 1 - store i64 %"$consume_3302", i64* @_gasrem - %"$fail_msg__sender_3303" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_3303" - %"$tname_3304" = load %String, %String* %tname - %"$err_3305" = load %String, %String* %err1 - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_3303", %String %"$tname_3304", %String %"$err_3305") - br label %"$matchsucc_3278" - -"$empty_default_3282": ; preds = %"$have_gas_3276" - br label %"$matchsucc_3278" - -"$matchsucc_3278": ; preds = %"$have_gas_3301", %"$True_3283", %"$empty_default_3282" - br label %"$matchsucc_3237" - -"$None_3306": ; preds = %"$have_gas_3235" - %"$m1o_3307" = bitcast %"TName_Option_Map_(String)_(String)"* %"$m1o_3238" to %"CName_None_Map_(String)_(String)"* %"$gasrem_3308" = load i64, i64* @_gasrem %"$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 = %"$None_3306" +"$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", %"$None_3306" +"$have_gas_3311": ; preds = %"$out_of_gas_3310", %"$have_gas_3306" %"$consume_3312" = sub i64 %"$gasrem_3308", 1 store i64 %"$consume_3312", i64* @_gasrem - %err2 = alloca %String - %"$gasrem_3313" = load i64, i64* @_gasrem - %"$gascmp_3314" = icmp ugt i64 1, %"$gasrem_3313" - br i1 %"$gascmp_3314", label %"$out_of_gas_3315", label %"$have_gas_3316" + store %String { i8* getelementptr inbounds ([36 x i8], [36 x i8]* @"$stringlit_3313", i32 0, i32 0), i32 36 }, %String* %err1 + %"$gasrem_3314" = load i64, i64* @_gasrem + %"$gascmp_3315" = icmp ugt i64 1, %"$gasrem_3314" + br i1 %"$gascmp_3315", label %"$out_of_gas_3316", label %"$have_gas_3317" -"$out_of_gas_3315": ; preds = %"$have_gas_3311" +"$out_of_gas_3316": ; preds = %"$have_gas_3311" call void @_out_of_gas() - br label %"$have_gas_3316" + br label %"$have_gas_3317" -"$have_gas_3316": ; preds = %"$out_of_gas_3315", %"$have_gas_3311" - %"$consume_3317" = sub i64 %"$gasrem_3313", 1 - store i64 %"$consume_3317", i64* @_gasrem - store %String { i8* getelementptr inbounds ([19 x i8], [19 x i8]* @"$stringlit_3318", i32 0, i32 0), i32 19 }, %String* %err2 - %"$gasrem_3319" = load i64, i64* @_gasrem - %"$gascmp_3320" = icmp ugt i64 1, %"$gasrem_3319" - br i1 %"$gascmp_3320", label %"$out_of_gas_3321", label %"$have_gas_3322" +"$have_gas_3317": ; preds = %"$out_of_gas_3316", %"$have_gas_3311" + %"$consume_3318" = sub i64 %"$gasrem_3314", 1 + store i64 %"$consume_3318", i64* @_gasrem + %"$fail_msg__sender_3319" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_3319" + %"$tname_3320" = load %String, %String* %tname + %"$err_3321" = load %String, %String* %err1 + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_3319", %String %"$tname_3320", %String %"$err_3321") + br label %"$matchsucc_3294" -"$out_of_gas_3321": ; preds = %"$have_gas_3316" - call void @_out_of_gas() - br label %"$have_gas_3322" +"$empty_default_3298": ; preds = %"$have_gas_3292" + br label %"$matchsucc_3294" -"$have_gas_3322": ; preds = %"$out_of_gas_3321", %"$have_gas_3316" - %"$consume_3323" = sub i64 %"$gasrem_3319", 1 - store i64 %"$consume_3323", i64* @_gasrem - %"$fail_msg__sender_3324" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_3324" - %"$tname_3325" = load %String, %String* %tname - %"$err_3326" = load %String, %String* %err2 - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_3324", %String %"$tname_3325", %String %"$err_3326") - br label %"$matchsucc_3237" +"$matchsucc_3294": ; preds = %"$have_gas_3317", %"$True_3299", %"$empty_default_3298" + br label %"$matchsucc_3253" -"$empty_default_3241": ; preds = %"$have_gas_3235" - br label %"$matchsucc_3237" +"$None_3322": ; preds = %"$have_gas_3251" + %"$m1o_3323" = bitcast %"TName_Option_Map_(String)_(String)"* %"$m1o_3254" to %"CName_None_Map_(String)_(String)"* + %"$gasrem_3324" = load i64, i64* @_gasrem + %"$gascmp_3325" = icmp ugt i64 1, %"$gasrem_3324" + br i1 %"$gascmp_3325", label %"$out_of_gas_3326", label %"$have_gas_3327" -"$matchsucc_3237": ; preds = %"$have_gas_3322", %"$matchsucc_3278", %"$empty_default_3241" - br label %"$matchsucc_3212" +"$out_of_gas_3326": ; preds = %"$None_3322" + call void @_out_of_gas() + br label %"$have_gas_3327" -"$False_3327": ; preds = %"$have_gas_3210" - %"$is_one_1_3328" = bitcast %TName_Bool* %"$is_one_1_3213" to %CName_False* +"$have_gas_3327": ; preds = %"$out_of_gas_3326", %"$None_3322" + %"$consume_3328" = sub i64 %"$gasrem_3324", 1 + store i64 %"$consume_3328", i64* @_gasrem + %err2 = alloca %String %"$gasrem_3329" = load i64, i64* @_gasrem %"$gascmp_3330" = icmp ugt i64 1, %"$gasrem_3329" br i1 %"$gascmp_3330", label %"$out_of_gas_3331", label %"$have_gas_3332" -"$out_of_gas_3331": ; preds = %"$False_3327" +"$out_of_gas_3331": ; preds = %"$have_gas_3327" call void @_out_of_gas() br label %"$have_gas_3332" -"$have_gas_3332": ; preds = %"$out_of_gas_3331", %"$False_3327" +"$have_gas_3332": ; preds = %"$out_of_gas_3331", %"$have_gas_3327" %"$consume_3333" = sub i64 %"$gasrem_3329", 1 store i64 %"$consume_3333", i64* @_gasrem - %err3 = alloca %String - %"$gasrem_3334" = load i64, i64* @_gasrem - %"$gascmp_3335" = icmp ugt i64 1, %"$gasrem_3334" - br i1 %"$gascmp_3335", label %"$out_of_gas_3336", label %"$have_gas_3337" + store %String { i8* getelementptr inbounds ([19 x i8], [19 x i8]* @"$stringlit_3334", i32 0, i32 0), i32 19 }, %String* %err2 + %"$gasrem_3335" = load i64, i64* @_gasrem + %"$gascmp_3336" = icmp ugt i64 1, %"$gasrem_3335" + br i1 %"$gascmp_3336", label %"$out_of_gas_3337", label %"$have_gas_3338" -"$out_of_gas_3336": ; preds = %"$have_gas_3332" +"$out_of_gas_3337": ; preds = %"$have_gas_3332" call void @_out_of_gas() - br label %"$have_gas_3337" + br label %"$have_gas_3338" -"$have_gas_3337": ; preds = %"$out_of_gas_3336", %"$have_gas_3332" - %"$consume_3338" = sub i64 %"$gasrem_3334", 1 - store i64 %"$consume_3338", i64* @_gasrem - store %String { i8* getelementptr inbounds ([28 x i8], [28 x i8]* @"$stringlit_3339", i32 0, i32 0), i32 28 }, %String* %err3 - %"$gasrem_3340" = load i64, i64* @_gasrem - %"$gascmp_3341" = icmp ugt i64 1, %"$gasrem_3340" - br i1 %"$gascmp_3341", label %"$out_of_gas_3342", label %"$have_gas_3343" +"$have_gas_3338": ; preds = %"$out_of_gas_3337", %"$have_gas_3332" + %"$consume_3339" = sub i64 %"$gasrem_3335", 1 + store i64 %"$consume_3339", i64* @_gasrem + %"$fail_msg__sender_3340" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_3340" + %"$tname_3341" = load %String, %String* %tname + %"$err_3342" = load %String, %String* %err2 + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_3340", %String %"$tname_3341", %String %"$err_3342") + br label %"$matchsucc_3253" -"$out_of_gas_3342": ; preds = %"$have_gas_3337" - call void @_out_of_gas() - br label %"$have_gas_3343" +"$empty_default_3257": ; preds = %"$have_gas_3251" + br label %"$matchsucc_3253" -"$have_gas_3343": ; preds = %"$out_of_gas_3342", %"$have_gas_3337" - %"$consume_3344" = sub i64 %"$gasrem_3340", 1 - store i64 %"$consume_3344", i64* @_gasrem - %"$fail_msg__sender_3345" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_3345" - %"$tname_3346" = load %String, %String* %tname - %"$err_3347" = load %String, %String* %err3 - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_3345", %String %"$tname_3346", %String %"$err_3347") - br label %"$matchsucc_3212" +"$matchsucc_3253": ; preds = %"$have_gas_3338", %"$matchsucc_3294", %"$empty_default_3257" + br label %"$matchsucc_3228" -"$empty_default_3216": ; preds = %"$have_gas_3210" - br label %"$matchsucc_3212" +"$False_3343": ; preds = %"$have_gas_3226" + %"$is_one_1_3344" = bitcast %TName_Bool* %"$is_one_1_3229" to %CName_False* + %"$gasrem_3345" = load i64, i64* @_gasrem + %"$gascmp_3346" = icmp ugt i64 1, %"$gasrem_3345" + br i1 %"$gascmp_3346", label %"$out_of_gas_3347", label %"$have_gas_3348" -"$matchsucc_3212": ; preds = %"$have_gas_3343", %"$matchsucc_3237", %"$empty_default_3216" - br label %"$matchsucc_3181" +"$out_of_gas_3347": ; preds = %"$False_3343" + call void @_out_of_gas() + br label %"$have_gas_3348" -"$None_3348": ; preds = %"$have_gas_3179" - %"$m2o_3349" = bitcast %"TName_Option_Map_(String)_(Map_(String)_(String))"* %"$m2o_3182" to %"CName_None_Map_(String)_(Map_(String)_(String))"* +"$have_gas_3348": ; preds = %"$out_of_gas_3347", %"$False_3343" + %"$consume_3349" = sub i64 %"$gasrem_3345", 1 + store i64 %"$consume_3349", i64* @_gasrem + %err3 = alloca %String %"$gasrem_3350" = load i64, i64* @_gasrem %"$gascmp_3351" = icmp ugt i64 1, %"$gasrem_3350" br i1 %"$gascmp_3351", label %"$out_of_gas_3352", label %"$have_gas_3353" -"$out_of_gas_3352": ; preds = %"$None_3348" +"$out_of_gas_3352": ; preds = %"$have_gas_3348" call void @_out_of_gas() br label %"$have_gas_3353" -"$have_gas_3353": ; preds = %"$out_of_gas_3352", %"$None_3348" +"$have_gas_3353": ; preds = %"$out_of_gas_3352", %"$have_gas_3348" %"$consume_3354" = sub i64 %"$gasrem_3350", 1 store i64 %"$consume_3354", i64* @_gasrem - %err4 = alloca %String - %"$gasrem_3355" = load i64, i64* @_gasrem - %"$gascmp_3356" = icmp ugt i64 1, %"$gasrem_3355" - br i1 %"$gascmp_3356", label %"$out_of_gas_3357", label %"$have_gas_3358" + store %String { i8* getelementptr inbounds ([28 x i8], [28 x i8]* @"$stringlit_3355", i32 0, i32 0), i32 28 }, %String* %err3 + %"$gasrem_3356" = load i64, i64* @_gasrem + %"$gascmp_3357" = icmp ugt i64 1, %"$gasrem_3356" + br i1 %"$gascmp_3357", label %"$out_of_gas_3358", label %"$have_gas_3359" -"$out_of_gas_3357": ; preds = %"$have_gas_3353" +"$out_of_gas_3358": ; preds = %"$have_gas_3353" call void @_out_of_gas() - br label %"$have_gas_3358" - -"$have_gas_3358": ; preds = %"$out_of_gas_3357", %"$have_gas_3353" - %"$consume_3359" = sub i64 %"$gasrem_3355", 1 - store i64 %"$consume_3359", i64* @_gasrem - store %String { i8* getelementptr inbounds ([19 x i8], [19 x i8]* @"$stringlit_3360", i32 0, i32 0), i32 19 }, %String* %err4 - %"$gasrem_3361" = load i64, i64* @_gasrem - %"$gascmp_3362" = icmp ugt i64 1, %"$gasrem_3361" - br i1 %"$gascmp_3362", label %"$out_of_gas_3363", label %"$have_gas_3364" + br label %"$have_gas_3359" -"$out_of_gas_3363": ; preds = %"$have_gas_3358" - call void @_out_of_gas() - br label %"$have_gas_3364" +"$have_gas_3359": ; preds = %"$out_of_gas_3358", %"$have_gas_3353" + %"$consume_3360" = sub i64 %"$gasrem_3356", 1 + store i64 %"$consume_3360", i64* @_gasrem + %"$fail_msg__sender_3361" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_3361" + %"$tname_3362" = load %String, %String* %tname + %"$err_3363" = load %String, %String* %err3 + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_3361", %String %"$tname_3362", %String %"$err_3363") + br label %"$matchsucc_3228" -"$have_gas_3364": ; preds = %"$out_of_gas_3363", %"$have_gas_3358" - %"$consume_3365" = sub i64 %"$gasrem_3361", 1 - store i64 %"$consume_3365", i64* @_gasrem - %"$fail_msg__sender_3366" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_3366" - %"$tname_3367" = load %String, %String* %tname - %"$err_3368" = load %String, %String* %err4 - call void @"$fail_msg_259"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_3366", %String %"$tname_3367", %String %"$err_3368") - br label %"$matchsucc_3181" +"$empty_default_3232": ; preds = %"$have_gas_3226" + br label %"$matchsucc_3228" -"$empty_default_3185": ; preds = %"$have_gas_3179" - br label %"$matchsucc_3181" +"$matchsucc_3228": ; preds = %"$have_gas_3359", %"$matchsucc_3253", %"$empty_default_3232" + br label %"$matchsucc_3197" -"$matchsucc_3181": ; preds = %"$have_gas_3364", %"$matchsucc_3212", %"$empty_default_3185" - %"$gasrem_3369" = load i64, i64* @_gasrem - %"$gascmp_3370" = icmp ugt i64 1, %"$gasrem_3369" - br i1 %"$gascmp_3370", label %"$out_of_gas_3371", label %"$have_gas_3372" +"$None_3364": ; preds = %"$have_gas_3195" + %"$m2o_3365" = bitcast %"TName_Option_Map_(String)_(Map_(String)_(String))"* %"$m2o_3198" to %"CName_None_Map_(String)_(Map_(String)_(String))"* + %"$gasrem_3366" = load i64, i64* @_gasrem + %"$gascmp_3367" = icmp ugt i64 1, %"$gasrem_3366" + br i1 %"$gascmp_3367", label %"$out_of_gas_3368", label %"$have_gas_3369" -"$out_of_gas_3371": ; preds = %"$matchsucc_3181" +"$out_of_gas_3368": ; preds = %"$None_3364" call void @_out_of_gas() - br label %"$have_gas_3372" + br label %"$have_gas_3369" -"$have_gas_3372": ; preds = %"$out_of_gas_3371", %"$matchsucc_3181" - %"$consume_3373" = sub i64 %"$gasrem_3369", 1 - store i64 %"$consume_3373", i64* @_gasrem - %key1b = alloca %String - %"$gasrem_3374" = load i64, i64* @_gasrem - %"$gascmp_3375" = icmp ugt i64 1, %"$gasrem_3374" - br i1 %"$gascmp_3375", label %"$out_of_gas_3376", label %"$have_gas_3377" +"$have_gas_3369": ; preds = %"$out_of_gas_3368", %"$None_3364" + %"$consume_3370" = sub i64 %"$gasrem_3366", 1 + store i64 %"$consume_3370", i64* @_gasrem + %err4 = alloca %String + %"$gasrem_3371" = load i64, i64* @_gasrem + %"$gascmp_3372" = icmp ugt i64 1, %"$gasrem_3371" + br i1 %"$gascmp_3372", label %"$out_of_gas_3373", label %"$have_gas_3374" -"$out_of_gas_3376": ; preds = %"$have_gas_3372" +"$out_of_gas_3373": ; preds = %"$have_gas_3369" call void @_out_of_gas() - br label %"$have_gas_3377" + br label %"$have_gas_3374" -"$have_gas_3377": ; preds = %"$out_of_gas_3376", %"$have_gas_3372" - %"$consume_3378" = sub i64 %"$gasrem_3374", 1 - store i64 %"$consume_3378", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3379", i32 0, i32 0), i32 5 }, %String* %key1b - %"$gasrem_3380" = load i64, i64* @_gasrem - %"$gascmp_3381" = icmp ugt i64 1, %"$gasrem_3380" - br i1 %"$gascmp_3381", label %"$out_of_gas_3382", label %"$have_gas_3383" +"$have_gas_3374": ; preds = %"$out_of_gas_3373", %"$have_gas_3369" + %"$consume_3375" = sub i64 %"$gasrem_3371", 1 + store i64 %"$consume_3375", i64* @_gasrem + store %String { i8* getelementptr inbounds ([19 x i8], [19 x i8]* @"$stringlit_3376", i32 0, i32 0), i32 19 }, %String* %err4 + %"$gasrem_3377" = load i64, i64* @_gasrem + %"$gascmp_3378" = icmp ugt i64 1, %"$gasrem_3377" + br i1 %"$gascmp_3378", label %"$out_of_gas_3379", label %"$have_gas_3380" -"$out_of_gas_3382": ; preds = %"$have_gas_3377" +"$out_of_gas_3379": ; preds = %"$have_gas_3374" call void @_out_of_gas() - br label %"$have_gas_3383" + br label %"$have_gas_3380" -"$have_gas_3383": ; preds = %"$out_of_gas_3382", %"$have_gas_3377" - %"$consume_3384" = sub i64 %"$gasrem_3380", 1 - store i64 %"$consume_3384", i64* @_gasrem - %key2b = alloca %String +"$have_gas_3380": ; preds = %"$out_of_gas_3379", %"$have_gas_3374" + %"$consume_3381" = sub i64 %"$gasrem_3377", 1 + store i64 %"$consume_3381", i64* @_gasrem + %"$fail_msg__sender_3382" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail_msg__sender_3382" + %"$tname_3383" = load %String, %String* %tname + %"$err_3384" = load %String, %String* %err4 + call void @"$fail_msg_267"(%Uint128 %_amount, [20 x i8]* %"$fail_msg__sender_3382", %String %"$tname_3383", %String %"$err_3384") + br label %"$matchsucc_3197" + +"$empty_default_3201": ; preds = %"$have_gas_3195" + br label %"$matchsucc_3197" + +"$matchsucc_3197": ; preds = %"$have_gas_3380", %"$matchsucc_3228", %"$empty_default_3201" %"$gasrem_3385" = load i64, i64* @_gasrem %"$gascmp_3386" = icmp ugt i64 1, %"$gasrem_3385" br i1 %"$gascmp_3386", label %"$out_of_gas_3387", label %"$have_gas_3388" -"$out_of_gas_3387": ; preds = %"$have_gas_3383" +"$out_of_gas_3387": ; preds = %"$matchsucc_3197" call void @_out_of_gas() br label %"$have_gas_3388" -"$have_gas_3388": ; preds = %"$out_of_gas_3387", %"$have_gas_3383" +"$have_gas_3388": ; preds = %"$out_of_gas_3387", %"$matchsucc_3197" %"$consume_3389" = sub i64 %"$gasrem_3385", 1 store i64 %"$consume_3389", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3390", i32 0, i32 0), i32 5 }, %String* %key2b - %"$gasrem_3391" = load i64, i64* @_gasrem - %"$gascmp_3392" = icmp ugt i64 1, %"$gasrem_3391" - br i1 %"$gascmp_3392", label %"$out_of_gas_3393", label %"$have_gas_3394" + %key1b = alloca %String + %"$gasrem_3390" = load i64, i64* @_gasrem + %"$gascmp_3391" = icmp ugt i64 1, %"$gasrem_3390" + br i1 %"$gascmp_3391", label %"$out_of_gas_3392", label %"$have_gas_3393" -"$out_of_gas_3393": ; preds = %"$have_gas_3388" +"$out_of_gas_3392": ; preds = %"$have_gas_3388" call void @_out_of_gas() - br label %"$have_gas_3394" + br label %"$have_gas_3393" -"$have_gas_3394": ; preds = %"$out_of_gas_3393", %"$have_gas_3388" - %"$consume_3395" = sub i64 %"$gasrem_3391", 1 - store i64 %"$consume_3395", i64* @_gasrem - %key1c = alloca %String +"$have_gas_3393": ; preds = %"$out_of_gas_3392", %"$have_gas_3388" + %"$consume_3394" = sub i64 %"$gasrem_3390", 1 + store i64 %"$consume_3394", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3395", i32 0, i32 0), i32 5 }, %String* %key1b %"$gasrem_3396" = load i64, i64* @_gasrem %"$gascmp_3397" = icmp ugt i64 1, %"$gasrem_3396" br i1 %"$gascmp_3397", label %"$out_of_gas_3398", label %"$have_gas_3399" -"$out_of_gas_3398": ; preds = %"$have_gas_3394" +"$out_of_gas_3398": ; preds = %"$have_gas_3393" call void @_out_of_gas() br label %"$have_gas_3399" -"$have_gas_3399": ; preds = %"$out_of_gas_3398", %"$have_gas_3394" +"$have_gas_3399": ; preds = %"$out_of_gas_3398", %"$have_gas_3393" %"$consume_3400" = sub i64 %"$gasrem_3396", 1 store i64 %"$consume_3400", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3401", i32 0, i32 0), i32 5 }, %String* %key1c - %"$gasrem_3402" = load i64, i64* @_gasrem - %"$gascmp_3403" = icmp ugt i64 1, %"$gasrem_3402" - br i1 %"$gascmp_3403", label %"$out_of_gas_3404", label %"$have_gas_3405" + %key2b = alloca %String + %"$gasrem_3401" = load i64, i64* @_gasrem + %"$gascmp_3402" = icmp ugt i64 1, %"$gasrem_3401" + br i1 %"$gascmp_3402", label %"$out_of_gas_3403", label %"$have_gas_3404" -"$out_of_gas_3404": ; preds = %"$have_gas_3399" +"$out_of_gas_3403": ; preds = %"$have_gas_3399" call void @_out_of_gas() - br label %"$have_gas_3405" + br label %"$have_gas_3404" -"$have_gas_3405": ; preds = %"$out_of_gas_3404", %"$have_gas_3399" - %"$consume_3406" = sub i64 %"$gasrem_3402", 1 - store i64 %"$consume_3406", i64* @_gasrem - %key2c = alloca %String +"$have_gas_3404": ; preds = %"$out_of_gas_3403", %"$have_gas_3399" + %"$consume_3405" = sub i64 %"$gasrem_3401", 1 + store i64 %"$consume_3405", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3406", i32 0, i32 0), i32 5 }, %String* %key2b %"$gasrem_3407" = load i64, i64* @_gasrem %"$gascmp_3408" = icmp ugt i64 1, %"$gasrem_3407" br i1 %"$gascmp_3408", label %"$out_of_gas_3409", label %"$have_gas_3410" -"$out_of_gas_3409": ; preds = %"$have_gas_3405" +"$out_of_gas_3409": ; preds = %"$have_gas_3404" call void @_out_of_gas() br label %"$have_gas_3410" -"$have_gas_3410": ; preds = %"$out_of_gas_3409", %"$have_gas_3405" +"$have_gas_3410": ; preds = %"$out_of_gas_3409", %"$have_gas_3404" %"$consume_3411" = sub i64 %"$gasrem_3407", 1 store i64 %"$consume_3411", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3412", i32 0, i32 0), i32 5 }, %String* %key2c - %"$gasrem_3413" = load i64, i64* @_gasrem - %"$gascmp_3414" = icmp ugt i64 1, %"$gasrem_3413" - br i1 %"$gascmp_3414", label %"$out_of_gas_3415", label %"$have_gas_3416" + %key1c = alloca %String + %"$gasrem_3412" = load i64, i64* @_gasrem + %"$gascmp_3413" = icmp ugt i64 1, %"$gasrem_3412" + br i1 %"$gascmp_3413", label %"$out_of_gas_3414", label %"$have_gas_3415" -"$out_of_gas_3415": ; preds = %"$have_gas_3410" +"$out_of_gas_3414": ; preds = %"$have_gas_3410" call void @_out_of_gas() - br label %"$have_gas_3416" + br label %"$have_gas_3415" -"$have_gas_3416": ; preds = %"$out_of_gas_3415", %"$have_gas_3410" - %"$consume_3417" = sub i64 %"$gasrem_3413", 1 - store i64 %"$consume_3417", i64* @_gasrem - %key1d = alloca %String +"$have_gas_3415": ; preds = %"$out_of_gas_3414", %"$have_gas_3410" + %"$consume_3416" = sub i64 %"$gasrem_3412", 1 + store i64 %"$consume_3416", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3417", i32 0, i32 0), i32 5 }, %String* %key1c %"$gasrem_3418" = load i64, i64* @_gasrem %"$gascmp_3419" = icmp ugt i64 1, %"$gasrem_3418" br i1 %"$gascmp_3419", label %"$out_of_gas_3420", label %"$have_gas_3421" -"$out_of_gas_3420": ; preds = %"$have_gas_3416" +"$out_of_gas_3420": ; preds = %"$have_gas_3415" call void @_out_of_gas() br label %"$have_gas_3421" -"$have_gas_3421": ; preds = %"$out_of_gas_3420", %"$have_gas_3416" +"$have_gas_3421": ; preds = %"$out_of_gas_3420", %"$have_gas_3415" %"$consume_3422" = sub i64 %"$gasrem_3418", 1 store i64 %"$consume_3422", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3423", i32 0, i32 0), i32 5 }, %String* %key1d - %"$gasrem_3424" = load i64, i64* @_gasrem - %"$gascmp_3425" = icmp ugt i64 1, %"$gasrem_3424" - br i1 %"$gascmp_3425", label %"$out_of_gas_3426", label %"$have_gas_3427" + %key2c = alloca %String + %"$gasrem_3423" = load i64, i64* @_gasrem + %"$gascmp_3424" = icmp ugt i64 1, %"$gasrem_3423" + br i1 %"$gascmp_3424", label %"$out_of_gas_3425", label %"$have_gas_3426" -"$out_of_gas_3426": ; preds = %"$have_gas_3421" +"$out_of_gas_3425": ; preds = %"$have_gas_3421" call void @_out_of_gas() - br label %"$have_gas_3427" + br label %"$have_gas_3426" -"$have_gas_3427": ; preds = %"$out_of_gas_3426", %"$have_gas_3421" - %"$consume_3428" = sub i64 %"$gasrem_3424", 1 - store i64 %"$consume_3428", i64* @_gasrem - %key2d = alloca %String +"$have_gas_3426": ; preds = %"$out_of_gas_3425", %"$have_gas_3421" + %"$consume_3427" = sub i64 %"$gasrem_3423", 1 + store i64 %"$consume_3427", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3428", i32 0, i32 0), i32 5 }, %String* %key2c %"$gasrem_3429" = load i64, i64* @_gasrem %"$gascmp_3430" = icmp ugt i64 1, %"$gasrem_3429" br i1 %"$gascmp_3430", label %"$out_of_gas_3431", label %"$have_gas_3432" -"$out_of_gas_3431": ; preds = %"$have_gas_3427" +"$out_of_gas_3431": ; preds = %"$have_gas_3426" call void @_out_of_gas() br label %"$have_gas_3432" -"$have_gas_3432": ; preds = %"$out_of_gas_3431", %"$have_gas_3427" +"$have_gas_3432": ; preds = %"$out_of_gas_3431", %"$have_gas_3426" %"$consume_3433" = sub i64 %"$gasrem_3429", 1 store i64 %"$consume_3433", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3434", i32 0, i32 0), i32 5 }, %String* %key2d - %"$gasrem_3435" = load i64, i64* @_gasrem - %"$gascmp_3436" = icmp ugt i64 1, %"$gasrem_3435" - br i1 %"$gascmp_3436", label %"$out_of_gas_3437", label %"$have_gas_3438" + %key1d = alloca %String + %"$gasrem_3434" = load i64, i64* @_gasrem + %"$gascmp_3435" = icmp ugt i64 1, %"$gasrem_3434" + br i1 %"$gascmp_3435", label %"$out_of_gas_3436", label %"$have_gas_3437" -"$out_of_gas_3437": ; preds = %"$have_gas_3432" +"$out_of_gas_3436": ; preds = %"$have_gas_3432" call void @_out_of_gas() - br label %"$have_gas_3438" + br label %"$have_gas_3437" -"$have_gas_3438": ; preds = %"$out_of_gas_3437", %"$have_gas_3432" - %"$consume_3439" = sub i64 %"$gasrem_3435", 1 - store i64 %"$consume_3439", i64* @_gasrem - %v1 = alloca %String +"$have_gas_3437": ; preds = %"$out_of_gas_3436", %"$have_gas_3432" + %"$consume_3438" = sub i64 %"$gasrem_3434", 1 + store i64 %"$consume_3438", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3439", i32 0, i32 0), i32 5 }, %String* %key1d %"$gasrem_3440" = load i64, i64* @_gasrem %"$gascmp_3441" = icmp ugt i64 1, %"$gasrem_3440" br i1 %"$gascmp_3441", label %"$out_of_gas_3442", label %"$have_gas_3443" -"$out_of_gas_3442": ; preds = %"$have_gas_3438" +"$out_of_gas_3442": ; preds = %"$have_gas_3437" call void @_out_of_gas() br label %"$have_gas_3443" -"$have_gas_3443": ; preds = %"$out_of_gas_3442", %"$have_gas_3438" +"$have_gas_3443": ; preds = %"$out_of_gas_3442", %"$have_gas_3437" %"$consume_3444" = sub i64 %"$gasrem_3440", 1 store i64 %"$consume_3444", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3445", i32 0, i32 0), i32 3 }, %String* %v1 - %"$gasrem_3446" = load i64, i64* @_gasrem - %"$gascmp_3447" = icmp ugt i64 1, %"$gasrem_3446" - br i1 %"$gascmp_3447", label %"$out_of_gas_3448", label %"$have_gas_3449" + %key2d = alloca %String + %"$gasrem_3445" = load i64, i64* @_gasrem + %"$gascmp_3446" = icmp ugt i64 1, %"$gasrem_3445" + br i1 %"$gascmp_3446", label %"$out_of_gas_3447", label %"$have_gas_3448" -"$out_of_gas_3448": ; preds = %"$have_gas_3443" +"$out_of_gas_3447": ; preds = %"$have_gas_3443" call void @_out_of_gas() - br label %"$have_gas_3449" + br label %"$have_gas_3448" -"$have_gas_3449": ; preds = %"$out_of_gas_3448", %"$have_gas_3443" - %"$consume_3450" = sub i64 %"$gasrem_3446", 1 - store i64 %"$consume_3450", i64* @_gasrem - %v2 = alloca %String +"$have_gas_3448": ; preds = %"$out_of_gas_3447", %"$have_gas_3443" + %"$consume_3449" = sub i64 %"$gasrem_3445", 1 + store i64 %"$consume_3449", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3450", i32 0, i32 0), i32 5 }, %String* %key2d %"$gasrem_3451" = load i64, i64* @_gasrem %"$gascmp_3452" = icmp ugt i64 1, %"$gasrem_3451" br i1 %"$gascmp_3452", label %"$out_of_gas_3453", label %"$have_gas_3454" -"$out_of_gas_3453": ; preds = %"$have_gas_3449" +"$out_of_gas_3453": ; preds = %"$have_gas_3448" call void @_out_of_gas() br label %"$have_gas_3454" -"$have_gas_3454": ; preds = %"$out_of_gas_3453", %"$have_gas_3449" +"$have_gas_3454": ; preds = %"$out_of_gas_3453", %"$have_gas_3448" %"$consume_3455" = sub i64 %"$gasrem_3451", 1 store i64 %"$consume_3455", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3456", i32 0, i32 0), i32 3 }, %String* %v2 - %"$gasrem_3457" = load i64, i64* @_gasrem - %"$gascmp_3458" = icmp ugt i64 1, %"$gasrem_3457" - br i1 %"$gascmp_3458", label %"$out_of_gas_3459", label %"$have_gas_3460" + %v1 = alloca %String + %"$gasrem_3456" = load i64, i64* @_gasrem + %"$gascmp_3457" = icmp ugt i64 1, %"$gasrem_3456" + br i1 %"$gascmp_3457", label %"$out_of_gas_3458", label %"$have_gas_3459" -"$out_of_gas_3459": ; preds = %"$have_gas_3454" +"$out_of_gas_3458": ; preds = %"$have_gas_3454" call void @_out_of_gas() - br label %"$have_gas_3460" + br label %"$have_gas_3459" -"$have_gas_3460": ; preds = %"$out_of_gas_3459", %"$have_gas_3454" - %"$consume_3461" = sub i64 %"$gasrem_3457", 1 - store i64 %"$consume_3461", i64* @_gasrem - %v3 = alloca %String +"$have_gas_3459": ; preds = %"$out_of_gas_3458", %"$have_gas_3454" + %"$consume_3460" = sub i64 %"$gasrem_3456", 1 + store i64 %"$consume_3460", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3461", i32 0, i32 0), i32 3 }, %String* %v1 %"$gasrem_3462" = load i64, i64* @_gasrem %"$gascmp_3463" = icmp ugt i64 1, %"$gasrem_3462" br i1 %"$gascmp_3463", label %"$out_of_gas_3464", label %"$have_gas_3465" -"$out_of_gas_3464": ; preds = %"$have_gas_3460" +"$out_of_gas_3464": ; preds = %"$have_gas_3459" call void @_out_of_gas() br label %"$have_gas_3465" -"$have_gas_3465": ; preds = %"$out_of_gas_3464", %"$have_gas_3460" +"$have_gas_3465": ; preds = %"$out_of_gas_3464", %"$have_gas_3459" %"$consume_3466" = sub i64 %"$gasrem_3462", 1 store i64 %"$consume_3466", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3467", i32 0, i32 0), i32 3 }, %String* %v3 - %"$gasrem_3468" = load i64, i64* @_gasrem - %"$gascmp_3469" = icmp ugt i64 1, %"$gasrem_3468" - br i1 %"$gascmp_3469", label %"$out_of_gas_3470", label %"$have_gas_3471" + %v2 = alloca %String + %"$gasrem_3467" = load i64, i64* @_gasrem + %"$gascmp_3468" = icmp ugt i64 1, %"$gasrem_3467" + br i1 %"$gascmp_3468", label %"$out_of_gas_3469", label %"$have_gas_3470" -"$out_of_gas_3470": ; preds = %"$have_gas_3465" +"$out_of_gas_3469": ; preds = %"$have_gas_3465" call void @_out_of_gas() - br label %"$have_gas_3471" + br label %"$have_gas_3470" -"$have_gas_3471": ; preds = %"$out_of_gas_3470", %"$have_gas_3465" - %"$consume_3472" = sub i64 %"$gasrem_3468", 1 - store i64 %"$consume_3472", i64* @_gasrem - %v4 = alloca %String +"$have_gas_3470": ; preds = %"$out_of_gas_3469", %"$have_gas_3465" + %"$consume_3471" = sub i64 %"$gasrem_3467", 1 + store i64 %"$consume_3471", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3472", i32 0, i32 0), i32 3 }, %String* %v2 %"$gasrem_3473" = load i64, i64* @_gasrem %"$gascmp_3474" = icmp ugt i64 1, %"$gasrem_3473" br i1 %"$gascmp_3474", label %"$out_of_gas_3475", label %"$have_gas_3476" -"$out_of_gas_3475": ; preds = %"$have_gas_3471" +"$out_of_gas_3475": ; preds = %"$have_gas_3470" call void @_out_of_gas() br label %"$have_gas_3476" -"$have_gas_3476": ; preds = %"$out_of_gas_3475", %"$have_gas_3471" +"$have_gas_3476": ; preds = %"$out_of_gas_3475", %"$have_gas_3470" %"$consume_3477" = sub i64 %"$gasrem_3473", 1 store i64 %"$consume_3477", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3478", i32 0, i32 0), i32 3 }, %String* %v4 - %"$gasrem_3479" = load i64, i64* @_gasrem - %"$gascmp_3480" = icmp ugt i64 1, %"$gasrem_3479" - br i1 %"$gascmp_3480", label %"$out_of_gas_3481", label %"$have_gas_3482" + %v3 = alloca %String + %"$gasrem_3478" = load i64, i64* @_gasrem + %"$gascmp_3479" = icmp ugt i64 1, %"$gasrem_3478" + br i1 %"$gascmp_3479", label %"$out_of_gas_3480", label %"$have_gas_3481" -"$out_of_gas_3481": ; preds = %"$have_gas_3476" +"$out_of_gas_3480": ; preds = %"$have_gas_3476" call void @_out_of_gas() - br label %"$have_gas_3482" + br label %"$have_gas_3481" -"$have_gas_3482": ; preds = %"$out_of_gas_3481", %"$have_gas_3476" - %"$consume_3483" = sub i64 %"$gasrem_3479", 1 - store i64 %"$consume_3483", i64* @_gasrem - %m25 = alloca %"Map_String_Map_(String)_(String)"* +"$have_gas_3481": ; preds = %"$out_of_gas_3480", %"$have_gas_3476" + %"$consume_3482" = sub i64 %"$gasrem_3478", 1 + store i64 %"$consume_3482", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3483", i32 0, i32 0), i32 3 }, %String* %v3 %"$gasrem_3484" = load i64, i64* @_gasrem %"$gascmp_3485" = icmp ugt i64 1, %"$gasrem_3484" br i1 %"$gascmp_3485", label %"$out_of_gas_3486", label %"$have_gas_3487" -"$out_of_gas_3486": ; preds = %"$have_gas_3482" +"$out_of_gas_3486": ; preds = %"$have_gas_3481" call void @_out_of_gas() br label %"$have_gas_3487" -"$have_gas_3487": ; preds = %"$out_of_gas_3486", %"$have_gas_3482" +"$have_gas_3487": ; preds = %"$out_of_gas_3486", %"$have_gas_3481" %"$consume_3488" = sub i64 %"$gasrem_3484", 1 store i64 %"$consume_3488", i64* @_gasrem - %"$execptr_load_3489" = load i8*, i8** @_execptr - %"$_new_empty_map_call_3490" = call i8* @_new_empty_map(i8* %"$execptr_load_3489") - %"$Emp_3491" = bitcast i8* %"$_new_empty_map_call_3490" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$Emp_3491", %"Map_String_Map_(String)_(String)"** %m25 - %"$gasrem_3492" = load i64, i64* @_gasrem - %"$gascmp_3493" = icmp ugt i64 1, %"$gasrem_3492" - br i1 %"$gascmp_3493", label %"$out_of_gas_3494", label %"$have_gas_3495" + %v4 = alloca %String + %"$gasrem_3489" = load i64, i64* @_gasrem + %"$gascmp_3490" = icmp ugt i64 1, %"$gasrem_3489" + br i1 %"$gascmp_3490", label %"$out_of_gas_3491", label %"$have_gas_3492" -"$out_of_gas_3494": ; preds = %"$have_gas_3487" +"$out_of_gas_3491": ; preds = %"$have_gas_3487" call void @_out_of_gas() - br label %"$have_gas_3495" + br label %"$have_gas_3492" -"$have_gas_3495": ; preds = %"$out_of_gas_3494", %"$have_gas_3487" - %"$consume_3496" = sub i64 %"$gasrem_3492", 1 - store i64 %"$consume_3496", i64* @_gasrem - %m16 = alloca %Map_String_String* - %"$gasrem_3497" = load i64, i64* @_gasrem - %"$gascmp_3498" = icmp ugt i64 1, %"$gasrem_3497" - br i1 %"$gascmp_3498", label %"$out_of_gas_3499", label %"$have_gas_3500" +"$have_gas_3492": ; preds = %"$out_of_gas_3491", %"$have_gas_3487" + %"$consume_3493" = sub i64 %"$gasrem_3489", 1 + store i64 %"$consume_3493", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3494", i32 0, i32 0), i32 3 }, %String* %v4 + %"$gasrem_3495" = load i64, i64* @_gasrem + %"$gascmp_3496" = icmp ugt i64 1, %"$gasrem_3495" + br i1 %"$gascmp_3496", label %"$out_of_gas_3497", label %"$have_gas_3498" -"$out_of_gas_3499": ; preds = %"$have_gas_3495" +"$out_of_gas_3497": ; preds = %"$have_gas_3492" call void @_out_of_gas() - br label %"$have_gas_3500" + br label %"$have_gas_3498" -"$have_gas_3500": ; preds = %"$out_of_gas_3499", %"$have_gas_3495" - %"$consume_3501" = sub i64 %"$gasrem_3497", 1 - store i64 %"$consume_3501", i64* @_gasrem - %"$execptr_load_3502" = load i8*, i8** @_execptr - %"$_new_empty_map_call_3503" = call i8* @_new_empty_map(i8* %"$execptr_load_3502") - %"$Emp_3504" = bitcast i8* %"$_new_empty_map_call_3503" to %Map_String_String* - store %Map_String_String* %"$Emp_3504", %Map_String_String** %m16 - %"$gasrem_3505" = load i64, i64* @_gasrem - %"$gascmp_3506" = icmp ugt i64 1, %"$gasrem_3505" - br i1 %"$gascmp_3506", label %"$out_of_gas_3507", label %"$have_gas_3508" +"$have_gas_3498": ; preds = %"$out_of_gas_3497", %"$have_gas_3492" + %"$consume_3499" = sub i64 %"$gasrem_3495", 1 + store i64 %"$consume_3499", i64* @_gasrem + %m25 = alloca %"Map_String_Map_(String)_(String)"* + %"$gasrem_3500" = load i64, i64* @_gasrem + %"$gascmp_3501" = icmp ugt i64 1, %"$gasrem_3500" + br i1 %"$gascmp_3501", label %"$out_of_gas_3502", label %"$have_gas_3503" -"$out_of_gas_3507": ; preds = %"$have_gas_3500" +"$out_of_gas_3502": ; preds = %"$have_gas_3498" call void @_out_of_gas() - br label %"$have_gas_3508" + br label %"$have_gas_3503" -"$have_gas_3508": ; preds = %"$out_of_gas_3507", %"$have_gas_3500" - %"$consume_3509" = sub i64 %"$gasrem_3505", 1 - store i64 %"$consume_3509", i64* @_gasrem - %m2_full = alloca %"Map_String_Map_(String)_(String)"* - %"$gasrem_3510" = load i64, i64* @_gasrem - %"$gascmp_3511" = icmp ugt i64 1, %"$gasrem_3510" - br i1 %"$gascmp_3511", label %"$out_of_gas_3512", label %"$have_gas_3513" +"$have_gas_3503": ; preds = %"$out_of_gas_3502", %"$have_gas_3498" + %"$consume_3504" = sub i64 %"$gasrem_3500", 1 + store i64 %"$consume_3504", i64* @_gasrem + %"$execptr_load_3505" = load i8*, i8** @_execptr + %"$_new_empty_map_call_3506" = call i8* @_new_empty_map(i8* %"$execptr_load_3505") + %"$Emp_3507" = bitcast i8* %"$_new_empty_map_call_3506" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$Emp_3507", %"Map_String_Map_(String)_(String)"** %m25 + %"$gasrem_3508" = load i64, i64* @_gasrem + %"$gascmp_3509" = icmp ugt i64 1, %"$gasrem_3508" + br i1 %"$gascmp_3509", label %"$out_of_gas_3510", label %"$have_gas_3511" -"$out_of_gas_3512": ; preds = %"$have_gas_3508" +"$out_of_gas_3510": ; preds = %"$have_gas_3503" call void @_out_of_gas() - br label %"$have_gas_3513" + br label %"$have_gas_3511" -"$have_gas_3513": ; preds = %"$out_of_gas_3512", %"$have_gas_3508" - %"$consume_3514" = sub i64 %"$gasrem_3510", 1 - store i64 %"$consume_3514", i64* @_gasrem - %m21 = alloca %Map_String_String* - %"$execptr_load_3515" = load i8*, i8** @_execptr - %"$m1_3516" = load %Map_String_String*, %Map_String_String** %m16 - %"$$m1_3516_3517" = bitcast %Map_String_String* %"$m1_3516" to i8* - %"$put_key2a_3518" = alloca %String - %"$key2a_3519" = load %String, %String* %key2a - store %String %"$key2a_3519", %String* %"$put_key2a_3518" - %"$$put_key2a_3518_3520" = bitcast %String* %"$put_key2a_3518" to i8* - %"$put_v1_3521" = alloca %String - %"$v1_3522" = load %String, %String* %v1 - store %String %"$v1_3522", %String* %"$put_v1_3521" - %"$$put_v1_3521_3523" = bitcast %String* %"$put_v1_3521" to i8* - %"$put_call_3524" = call i8* @_put(i8* %"$execptr_load_3515", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_3516_3517", i8* %"$$put_key2a_3518_3520", i8* %"$$put_v1_3521_3523") - %"$_put_3525" = bitcast i8* %"$put_call_3524" to %Map_String_String* - store %Map_String_String* %"$_put_3525", %Map_String_String** %m21 +"$have_gas_3511": ; preds = %"$out_of_gas_3510", %"$have_gas_3503" + %"$consume_3512" = sub i64 %"$gasrem_3508", 1 + store i64 %"$consume_3512", i64* @_gasrem + %m16 = alloca %Map_String_String* + %"$gasrem_3513" = load i64, i64* @_gasrem + %"$gascmp_3514" = icmp ugt i64 1, %"$gasrem_3513" + br i1 %"$gascmp_3514", label %"$out_of_gas_3515", label %"$have_gas_3516" + +"$out_of_gas_3515": ; preds = %"$have_gas_3511" + call void @_out_of_gas() + br label %"$have_gas_3516" + +"$have_gas_3516": ; preds = %"$out_of_gas_3515", %"$have_gas_3511" + %"$consume_3517" = sub i64 %"$gasrem_3513", 1 + store i64 %"$consume_3517", i64* @_gasrem + %"$execptr_load_3518" = load i8*, i8** @_execptr + %"$_new_empty_map_call_3519" = call i8* @_new_empty_map(i8* %"$execptr_load_3518") + %"$Emp_3520" = bitcast i8* %"$_new_empty_map_call_3519" to %Map_String_String* + store %Map_String_String* %"$Emp_3520", %Map_String_String** %m16 + %"$gasrem_3521" = load i64, i64* @_gasrem + %"$gascmp_3522" = icmp ugt i64 1, %"$gasrem_3521" + br i1 %"$gascmp_3522", label %"$out_of_gas_3523", label %"$have_gas_3524" + +"$out_of_gas_3523": ; preds = %"$have_gas_3516" + call void @_out_of_gas() + br label %"$have_gas_3524" + +"$have_gas_3524": ; preds = %"$out_of_gas_3523", %"$have_gas_3516" + %"$consume_3525" = sub i64 %"$gasrem_3521", 1 + store i64 %"$consume_3525", i64* @_gasrem + %m2_full = alloca %"Map_String_Map_(String)_(String)"* %"$gasrem_3526" = load i64, i64* @_gasrem %"$gascmp_3527" = icmp ugt i64 1, %"$gasrem_3526" br i1 %"$gascmp_3527", label %"$out_of_gas_3528", label %"$have_gas_3529" -"$out_of_gas_3528": ; preds = %"$have_gas_3513" +"$out_of_gas_3528": ; preds = %"$have_gas_3524" call void @_out_of_gas() br label %"$have_gas_3529" -"$have_gas_3529": ; preds = %"$out_of_gas_3528", %"$have_gas_3513" +"$have_gas_3529": ; preds = %"$out_of_gas_3528", %"$have_gas_3524" %"$consume_3530" = sub i64 %"$gasrem_3526", 1 store i64 %"$consume_3530", i64* @_gasrem - %m22 = alloca %Map_String_String* + %m21 = alloca %Map_String_String* %"$execptr_load_3531" = load i8*, i8** @_execptr %"$m1_3532" = load %Map_String_String*, %Map_String_String** %m16 %"$$m1_3532_3533" = bitcast %Map_String_String* %"$m1_3532" to i8* - %"$put_key2b_3534" = alloca %String - %"$key2b_3535" = load %String, %String* %key2b - store %String %"$key2b_3535", %String* %"$put_key2b_3534" - %"$$put_key2b_3534_3536" = bitcast %String* %"$put_key2b_3534" to i8* - %"$put_v2_3537" = alloca %String - %"$v2_3538" = load %String, %String* %v2 - store %String %"$v2_3538", %String* %"$put_v2_3537" - %"$$put_v2_3537_3539" = bitcast %String* %"$put_v2_3537" to i8* - %"$put_call_3540" = call i8* @_put(i8* %"$execptr_load_3531", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_3532_3533", i8* %"$$put_key2b_3534_3536", i8* %"$$put_v2_3537_3539") + %"$put_key2a_3534" = alloca %String + %"$key2a_3535" = load %String, %String* %key2a + store %String %"$key2a_3535", %String* %"$put_key2a_3534" + %"$$put_key2a_3534_3536" = bitcast %String* %"$put_key2a_3534" to i8* + %"$put_v1_3537" = alloca %String + %"$v1_3538" = load %String, %String* %v1 + store %String %"$v1_3538", %String* %"$put_v1_3537" + %"$$put_v1_3537_3539" = bitcast %String* %"$put_v1_3537" to i8* + %"$put_call_3540" = call i8* @_put(i8* %"$execptr_load_3531", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_3532_3533", i8* %"$$put_key2a_3534_3536", i8* %"$$put_v1_3537_3539") %"$_put_3541" = bitcast i8* %"$put_call_3540" to %Map_String_String* - store %Map_String_String* %"$_put_3541", %Map_String_String** %m22 + store %Map_String_String* %"$_put_3541", %Map_String_String** %m21 %"$gasrem_3542" = load i64, i64* @_gasrem %"$gascmp_3543" = icmp ugt i64 1, %"$gasrem_3542" br i1 %"$gascmp_3543", label %"$out_of_gas_3544", label %"$have_gas_3545" @@ -7316,21 +7316,21 @@ entry: "$have_gas_3545": ; preds = %"$out_of_gas_3544", %"$have_gas_3529" %"$consume_3546" = sub i64 %"$gasrem_3542", 1 store i64 %"$consume_3546", i64* @_gasrem - %m23 = alloca %Map_String_String* + %m22 = alloca %Map_String_String* %"$execptr_load_3547" = load i8*, i8** @_execptr %"$m1_3548" = load %Map_String_String*, %Map_String_String** %m16 %"$$m1_3548_3549" = bitcast %Map_String_String* %"$m1_3548" to i8* - %"$put_key2c_3550" = alloca %String - %"$key2c_3551" = load %String, %String* %key2c - store %String %"$key2c_3551", %String* %"$put_key2c_3550" - %"$$put_key2c_3550_3552" = bitcast %String* %"$put_key2c_3550" to i8* - %"$put_v3_3553" = alloca %String - %"$v3_3554" = load %String, %String* %v3 - store %String %"$v3_3554", %String* %"$put_v3_3553" - %"$$put_v3_3553_3555" = bitcast %String* %"$put_v3_3553" to i8* - %"$put_call_3556" = call i8* @_put(i8* %"$execptr_load_3547", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_3548_3549", i8* %"$$put_key2c_3550_3552", i8* %"$$put_v3_3553_3555") + %"$put_key2b_3550" = alloca %String + %"$key2b_3551" = load %String, %String* %key2b + store %String %"$key2b_3551", %String* %"$put_key2b_3550" + %"$$put_key2b_3550_3552" = bitcast %String* %"$put_key2b_3550" to i8* + %"$put_v2_3553" = alloca %String + %"$v2_3554" = load %String, %String* %v2 + store %String %"$v2_3554", %String* %"$put_v2_3553" + %"$$put_v2_3553_3555" = bitcast %String* %"$put_v2_3553" to i8* + %"$put_call_3556" = call i8* @_put(i8* %"$execptr_load_3547", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_3548_3549", i8* %"$$put_key2b_3550_3552", i8* %"$$put_v2_3553_3555") %"$_put_3557" = bitcast i8* %"$put_call_3556" to %Map_String_String* - store %Map_String_String* %"$_put_3557", %Map_String_String** %m23 + store %Map_String_String* %"$_put_3557", %Map_String_String** %m22 %"$gasrem_3558" = load i64, i64* @_gasrem %"$gascmp_3559" = icmp ugt i64 1, %"$gasrem_3558" br i1 %"$gascmp_3559", label %"$out_of_gas_3560", label %"$have_gas_3561" @@ -7342,21 +7342,21 @@ entry: "$have_gas_3561": ; preds = %"$out_of_gas_3560", %"$have_gas_3545" %"$consume_3562" = sub i64 %"$gasrem_3558", 1 store i64 %"$consume_3562", i64* @_gasrem - %m24 = alloca %Map_String_String* + %m23 = alloca %Map_String_String* %"$execptr_load_3563" = load i8*, i8** @_execptr %"$m1_3564" = load %Map_String_String*, %Map_String_String** %m16 %"$$m1_3564_3565" = bitcast %Map_String_String* %"$m1_3564" to i8* - %"$put_key2d_3566" = alloca %String - %"$key2d_3567" = load %String, %String* %key2d - store %String %"$key2d_3567", %String* %"$put_key2d_3566" - %"$$put_key2d_3566_3568" = bitcast %String* %"$put_key2d_3566" to i8* - %"$put_v4_3569" = alloca %String - %"$v4_3570" = load %String, %String* %v4 - store %String %"$v4_3570", %String* %"$put_v4_3569" - %"$$put_v4_3569_3571" = bitcast %String* %"$put_v4_3569" to i8* - %"$put_call_3572" = call i8* @_put(i8* %"$execptr_load_3563", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_3564_3565", i8* %"$$put_key2d_3566_3568", i8* %"$$put_v4_3569_3571") + %"$put_key2c_3566" = alloca %String + %"$key2c_3567" = load %String, %String* %key2c + store %String %"$key2c_3567", %String* %"$put_key2c_3566" + %"$$put_key2c_3566_3568" = bitcast %String* %"$put_key2c_3566" to i8* + %"$put_v3_3569" = alloca %String + %"$v3_3570" = load %String, %String* %v3 + store %String %"$v3_3570", %String* %"$put_v3_3569" + %"$$put_v3_3569_3571" = bitcast %String* %"$put_v3_3569" to i8* + %"$put_call_3572" = call i8* @_put(i8* %"$execptr_load_3563", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_3564_3565", i8* %"$$put_key2c_3566_3568", i8* %"$$put_v3_3569_3571") %"$_put_3573" = bitcast i8* %"$put_call_3572" to %Map_String_String* - store %Map_String_String* %"$_put_3573", %Map_String_String** %m24 + store %Map_String_String* %"$_put_3573", %Map_String_String** %m23 %"$gasrem_3574" = load i64, i64* @_gasrem %"$gascmp_3575" = icmp ugt i64 1, %"$gasrem_3574" br i1 %"$gascmp_3575", label %"$out_of_gas_3576", label %"$have_gas_3577" @@ -7368,523 +7368,513 @@ entry: "$have_gas_3577": ; preds = %"$out_of_gas_3576", %"$have_gas_3561" %"$consume_3578" = sub i64 %"$gasrem_3574", 1 store i64 %"$consume_3578", i64* @_gasrem - %m11 = alloca %"Map_String_Map_(String)_(String)"* + %m24 = alloca %Map_String_String* %"$execptr_load_3579" = load i8*, i8** @_execptr - %"$m2_3580" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m25 - %"$$m2_3580_3581" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_3580" to i8* - %"$put_key1a_3582" = alloca %String - %"$key1a_3583" = load %String, %String* %key1a - store %String %"$key1a_3583", %String* %"$put_key1a_3582" - %"$$put_key1a_3582_3584" = bitcast %String* %"$put_key1a_3582" to i8* - %"$m21_3585" = load %Map_String_String*, %Map_String_String** %m21 - %"$$m21_3585_3586" = bitcast %Map_String_String* %"$m21_3585" to i8* - %"$put_call_3587" = call i8* @_put(i8* %"$execptr_load_3579", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m2_3580_3581", i8* %"$$put_key1a_3582_3584", i8* %"$$m21_3585_3586") - %"$_put_3588" = bitcast i8* %"$put_call_3587" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$_put_3588", %"Map_String_Map_(String)_(String)"** %m11 - %"$gasrem_3589" = load i64, i64* @_gasrem - %"$gascmp_3590" = icmp ugt i64 1, %"$gasrem_3589" - br i1 %"$gascmp_3590", label %"$out_of_gas_3591", label %"$have_gas_3592" - -"$out_of_gas_3591": ; preds = %"$have_gas_3577" - call void @_out_of_gas() - br label %"$have_gas_3592" - -"$have_gas_3592": ; preds = %"$out_of_gas_3591", %"$have_gas_3577" - %"$consume_3593" = sub i64 %"$gasrem_3589", 1 - store i64 %"$consume_3593", i64* @_gasrem + %"$m1_3580" = load %Map_String_String*, %Map_String_String** %m16 + %"$$m1_3580_3581" = bitcast %Map_String_String* %"$m1_3580" to i8* + %"$put_key2d_3582" = alloca %String + %"$key2d_3583" = load %String, %String* %key2d + store %String %"$key2d_3583", %String* %"$put_key2d_3582" + %"$$put_key2d_3582_3584" = bitcast %String* %"$put_key2d_3582" to i8* + %"$put_v4_3585" = alloca %String + %"$v4_3586" = load %String, %String* %v4 + store %String %"$v4_3586", %String* %"$put_v4_3585" + %"$$put_v4_3585_3587" = bitcast %String* %"$put_v4_3585" to i8* + %"$put_call_3588" = call i8* @_put(i8* %"$execptr_load_3579", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_3580_3581", i8* %"$$put_key2d_3582_3584", i8* %"$$put_v4_3585_3587") + %"$_put_3589" = bitcast i8* %"$put_call_3588" to %Map_String_String* + store %Map_String_String* %"$_put_3589", %Map_String_String** %m24 + %"$gasrem_3590" = load i64, i64* @_gasrem + %"$gascmp_3591" = icmp ugt i64 1, %"$gasrem_3590" + br i1 %"$gascmp_3591", label %"$out_of_gas_3592", label %"$have_gas_3593" + +"$out_of_gas_3592": ; preds = %"$have_gas_3577" + call void @_out_of_gas() + br label %"$have_gas_3593" + +"$have_gas_3593": ; preds = %"$out_of_gas_3592", %"$have_gas_3577" + %"$consume_3594" = sub i64 %"$gasrem_3590", 1 + store i64 %"$consume_3594", i64* @_gasrem + %m11 = alloca %"Map_String_Map_(String)_(String)"* + %"$execptr_load_3595" = load i8*, i8** @_execptr + %"$m2_3596" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m25 + %"$$m2_3596_3597" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_3596" to i8* + %"$put_key1a_3598" = alloca %String + %"$key1a_3599" = load %String, %String* %key1a + store %String %"$key1a_3599", %String* %"$put_key1a_3598" + %"$$put_key1a_3598_3600" = bitcast %String* %"$put_key1a_3598" to i8* + %"$m21_3601" = load %Map_String_String*, %Map_String_String** %m21 + %"$$m21_3601_3602" = bitcast %Map_String_String* %"$m21_3601" to i8* + %"$put_call_3603" = call i8* @_put(i8* %"$execptr_load_3595", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m2_3596_3597", i8* %"$$put_key1a_3598_3600", i8* %"$$m21_3601_3602") + %"$_put_3604" = bitcast i8* %"$put_call_3603" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$_put_3604", %"Map_String_Map_(String)_(String)"** %m11 + %"$gasrem_3605" = load i64, i64* @_gasrem + %"$gascmp_3606" = icmp ugt i64 1, %"$gasrem_3605" + br i1 %"$gascmp_3606", label %"$out_of_gas_3607", label %"$have_gas_3608" + +"$out_of_gas_3607": ; preds = %"$have_gas_3593" + call void @_out_of_gas() + br label %"$have_gas_3608" + +"$have_gas_3608": ; preds = %"$out_of_gas_3607", %"$have_gas_3593" + %"$consume_3609" = sub i64 %"$gasrem_3605", 1 + store i64 %"$consume_3609", i64* @_gasrem %m12 = alloca %"Map_String_Map_(String)_(String)"* - %"$execptr_load_3594" = load i8*, i8** @_execptr - %"$m11_3595" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m11 - %"$$m11_3595_3596" = bitcast %"Map_String_Map_(String)_(String)"* %"$m11_3595" to i8* - %"$put_key1b_3597" = alloca %String - %"$key1b_3598" = load %String, %String* %key1b - store %String %"$key1b_3598", %String* %"$put_key1b_3597" - %"$$put_key1b_3597_3599" = bitcast %String* %"$put_key1b_3597" to i8* - %"$m22_3600" = load %Map_String_String*, %Map_String_String** %m22 - %"$$m22_3600_3601" = bitcast %Map_String_String* %"$m22_3600" to i8* - %"$put_call_3602" = call i8* @_put(i8* %"$execptr_load_3594", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m11_3595_3596", i8* %"$$put_key1b_3597_3599", i8* %"$$m22_3600_3601") - %"$_put_3603" = bitcast i8* %"$put_call_3602" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$_put_3603", %"Map_String_Map_(String)_(String)"** %m12 - %"$gasrem_3604" = load i64, i64* @_gasrem - %"$gascmp_3605" = icmp ugt i64 1, %"$gasrem_3604" - br i1 %"$gascmp_3605", label %"$out_of_gas_3606", label %"$have_gas_3607" - -"$out_of_gas_3606": ; preds = %"$have_gas_3592" - call void @_out_of_gas() - br label %"$have_gas_3607" - -"$have_gas_3607": ; preds = %"$out_of_gas_3606", %"$have_gas_3592" - %"$consume_3608" = sub i64 %"$gasrem_3604", 1 - store i64 %"$consume_3608", i64* @_gasrem + %"$execptr_load_3610" = load i8*, i8** @_execptr + %"$m11_3611" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m11 + %"$$m11_3611_3612" = bitcast %"Map_String_Map_(String)_(String)"* %"$m11_3611" to i8* + %"$put_key1b_3613" = alloca %String + %"$key1b_3614" = load %String, %String* %key1b + store %String %"$key1b_3614", %String* %"$put_key1b_3613" + %"$$put_key1b_3613_3615" = bitcast %String* %"$put_key1b_3613" to i8* + %"$m22_3616" = load %Map_String_String*, %Map_String_String** %m22 + %"$$m22_3616_3617" = bitcast %Map_String_String* %"$m22_3616" to i8* + %"$put_call_3618" = call i8* @_put(i8* %"$execptr_load_3610", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m11_3611_3612", i8* %"$$put_key1b_3613_3615", i8* %"$$m22_3616_3617") + %"$_put_3619" = bitcast i8* %"$put_call_3618" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$_put_3619", %"Map_String_Map_(String)_(String)"** %m12 + %"$gasrem_3620" = load i64, i64* @_gasrem + %"$gascmp_3621" = icmp ugt i64 1, %"$gasrem_3620" + br i1 %"$gascmp_3621", label %"$out_of_gas_3622", label %"$have_gas_3623" + +"$out_of_gas_3622": ; preds = %"$have_gas_3608" + call void @_out_of_gas() + br label %"$have_gas_3623" + +"$have_gas_3623": ; preds = %"$out_of_gas_3622", %"$have_gas_3608" + %"$consume_3624" = sub i64 %"$gasrem_3620", 1 + store i64 %"$consume_3624", i64* @_gasrem %m13 = alloca %"Map_String_Map_(String)_(String)"* - %"$execptr_load_3609" = load i8*, i8** @_execptr - %"$m12_3610" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m12 - %"$$m12_3610_3611" = bitcast %"Map_String_Map_(String)_(String)"* %"$m12_3610" to i8* - %"$put_key1c_3612" = alloca %String - %"$key1c_3613" = load %String, %String* %key1c - store %String %"$key1c_3613", %String* %"$put_key1c_3612" - %"$$put_key1c_3612_3614" = bitcast %String* %"$put_key1c_3612" to i8* - %"$m23_3615" = load %Map_String_String*, %Map_String_String** %m23 - %"$$m23_3615_3616" = bitcast %Map_String_String* %"$m23_3615" to i8* - %"$put_call_3617" = call i8* @_put(i8* %"$execptr_load_3609", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m12_3610_3611", i8* %"$$put_key1c_3612_3614", i8* %"$$m23_3615_3616") - %"$_put_3618" = bitcast i8* %"$put_call_3617" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$_put_3618", %"Map_String_Map_(String)_(String)"** %m13 - %"$gasrem_3619" = load i64, i64* @_gasrem - %"$gascmp_3620" = icmp ugt i64 1, %"$gasrem_3619" - br i1 %"$gascmp_3620", label %"$out_of_gas_3621", label %"$have_gas_3622" - -"$out_of_gas_3621": ; preds = %"$have_gas_3607" - call void @_out_of_gas() - br label %"$have_gas_3622" - -"$have_gas_3622": ; preds = %"$out_of_gas_3621", %"$have_gas_3607" - %"$consume_3623" = sub i64 %"$gasrem_3619", 1 - store i64 %"$consume_3623", i64* @_gasrem + %"$execptr_load_3625" = load i8*, i8** @_execptr + %"$m12_3626" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m12 + %"$$m12_3626_3627" = bitcast %"Map_String_Map_(String)_(String)"* %"$m12_3626" to i8* + %"$put_key1c_3628" = alloca %String + %"$key1c_3629" = load %String, %String* %key1c + store %String %"$key1c_3629", %String* %"$put_key1c_3628" + %"$$put_key1c_3628_3630" = bitcast %String* %"$put_key1c_3628" to i8* + %"$m23_3631" = load %Map_String_String*, %Map_String_String** %m23 + %"$$m23_3631_3632" = bitcast %Map_String_String* %"$m23_3631" to i8* + %"$put_call_3633" = call i8* @_put(i8* %"$execptr_load_3625", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m12_3626_3627", i8* %"$$put_key1c_3628_3630", i8* %"$$m23_3631_3632") + %"$_put_3634" = bitcast i8* %"$put_call_3633" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$_put_3634", %"Map_String_Map_(String)_(String)"** %m13 + %"$gasrem_3635" = load i64, i64* @_gasrem + %"$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_3623" + call void @_out_of_gas() + br label %"$have_gas_3638" + +"$have_gas_3638": ; preds = %"$out_of_gas_3637", %"$have_gas_3623" + %"$consume_3639" = sub i64 %"$gasrem_3635", 1 + store i64 %"$consume_3639", i64* @_gasrem %m14 = alloca %"Map_String_Map_(String)_(String)"* - %"$execptr_load_3624" = load i8*, i8** @_execptr - %"$m13_3625" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m13 - %"$$m13_3625_3626" = bitcast %"Map_String_Map_(String)_(String)"* %"$m13_3625" to i8* - %"$put_key1d_3627" = alloca %String - %"$key1d_3628" = load %String, %String* %key1d - store %String %"$key1d_3628", %String* %"$put_key1d_3627" - %"$$put_key1d_3627_3629" = bitcast %String* %"$put_key1d_3627" to i8* - %"$m24_3630" = load %Map_String_String*, %Map_String_String** %m24 - %"$$m24_3630_3631" = bitcast %Map_String_String* %"$m24_3630" to i8* - %"$put_call_3632" = call i8* @_put(i8* %"$execptr_load_3624", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m13_3625_3626", i8* %"$$put_key1d_3627_3629", i8* %"$$m24_3630_3631") - %"$_put_3633" = bitcast i8* %"$put_call_3632" to %"Map_String_Map_(String)_(String)"* - store %"Map_String_Map_(String)_(String)"* %"$_put_3633", %"Map_String_Map_(String)_(String)"** %m14 - %"$gasrem_3634" = load i64, i64* @_gasrem - %"$gascmp_3635" = icmp ugt i64 1, %"$gasrem_3634" - br i1 %"$gascmp_3635", label %"$out_of_gas_3636", label %"$have_gas_3637" - -"$out_of_gas_3636": ; preds = %"$have_gas_3622" - call void @_out_of_gas() - br label %"$have_gas_3637" - -"$have_gas_3637": ; preds = %"$out_of_gas_3636", %"$have_gas_3622" - %"$consume_3638" = sub i64 %"$gasrem_3634", 1 - store i64 %"$consume_3638", i64* @_gasrem - %"$m14_3639" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m14 - store %"Map_String_Map_(String)_(String)"* %"$m14_3639", %"Map_String_Map_(String)_(String)"** %m2_full - %"$m2_full_3640" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2_full - %"$$m2_full_3640_3641" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_full_3640" to i8* - %"$_literal_cost_call_3642" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m2_full_3640_3641") - %"$gasrem_3643" = load i64, i64* @_gasrem - %"$gascmp_3644" = icmp ugt i64 %"$_literal_cost_call_3642", %"$gasrem_3643" - br i1 %"$gascmp_3644", label %"$out_of_gas_3645", label %"$have_gas_3646" - -"$out_of_gas_3645": ; preds = %"$have_gas_3637" - call void @_out_of_gas() - br label %"$have_gas_3646" - -"$have_gas_3646": ; preds = %"$out_of_gas_3645", %"$have_gas_3637" - %"$consume_3647" = sub i64 %"$gasrem_3643", %"$_literal_cost_call_3642" - store i64 %"$consume_3647", i64* @_gasrem - %"$execptr_load_3648" = load i8*, i8** @_execptr - %"$m2_full_3650" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2_full - %"$update_value_3651" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_full_3650" to i8* - call void @_update_field(i8* %"$execptr_load_3648", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_3649", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 0, i8* null, i8* %"$update_value_3651") - ret void -} - -define void @t15(i8* %0) { -entry: - %"$_amount_3653" = getelementptr i8, i8* %0, i32 0 - %"$_amount_3654" = bitcast i8* %"$_amount_3653" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_3654" - %"$_sender_3655" = getelementptr i8, i8* %0, i32 16 - %"$_sender_3656" = bitcast i8* %"$_sender_3655" to [20 x i8]* - call void @"$t15_3052"(%Uint128 %_amount, [20 x i8]* %"$_sender_3656") - ret void -} - -define internal void @"$t16_3657"(%Uint128 %_amount, [20 x i8]* %"$_sender_3658") { -entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_3658" + %"$execptr_load_3640" = load i8*, i8** @_execptr + %"$m13_3641" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m13 + %"$$m13_3641_3642" = bitcast %"Map_String_Map_(String)_(String)"* %"$m13_3641" to i8* + %"$put_key1d_3643" = alloca %String + %"$key1d_3644" = load %String, %String* %key1d + store %String %"$key1d_3644", %String* %"$put_key1d_3643" + %"$$put_key1d_3643_3645" = bitcast %String* %"$put_key1d_3643" to i8* + %"$m24_3646" = load %Map_String_String*, %Map_String_String** %m24 + %"$$m24_3646_3647" = bitcast %Map_String_String* %"$m24_3646" to i8* + %"$put_call_3648" = call i8* @_put(i8* %"$execptr_load_3640", %_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m13_3641_3642", i8* %"$$put_key1d_3643_3645", i8* %"$$m24_3646_3647") + %"$_put_3649" = bitcast i8* %"$put_call_3648" to %"Map_String_Map_(String)_(String)"* + store %"Map_String_Map_(String)_(String)"* %"$_put_3649", %"Map_String_Map_(String)_(String)"** %m14 + %"$gasrem_3650" = load i64, i64* @_gasrem + %"$gascmp_3651" = icmp ugt i64 1, %"$gasrem_3650" + br i1 %"$gascmp_3651", label %"$out_of_gas_3652", label %"$have_gas_3653" + +"$out_of_gas_3652": ; preds = %"$have_gas_3638" + call void @_out_of_gas() + br label %"$have_gas_3653" + +"$have_gas_3653": ; preds = %"$out_of_gas_3652", %"$have_gas_3638" + %"$consume_3654" = sub i64 %"$gasrem_3650", 1 + store i64 %"$consume_3654", i64* @_gasrem + %"$m14_3655" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m14 + store %"Map_String_Map_(String)_(String)"* %"$m14_3655", %"Map_String_Map_(String)_(String)"** %m2_full + %"$m2_full_3656" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2_full + %"$$m2_full_3656_3657" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_full_3656" to i8* + %"$_literal_cost_call_3658" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_71", i8* %"$$m2_full_3656_3657") %"$gasrem_3659" = load i64, i64* @_gasrem - %"$gascmp_3660" = icmp ugt i64 1, %"$gasrem_3659" + %"$gascmp_3660" = icmp ugt i64 %"$_literal_cost_call_3658", %"$gasrem_3659" br i1 %"$gascmp_3660", label %"$out_of_gas_3661", label %"$have_gas_3662" -"$out_of_gas_3661": ; preds = %entry +"$out_of_gas_3661": ; preds = %"$have_gas_3653" call void @_out_of_gas() br label %"$have_gas_3662" -"$have_gas_3662": ; preds = %"$out_of_gas_3661", %entry - %"$consume_3663" = sub i64 %"$gasrem_3659", 1 +"$have_gas_3662": ; preds = %"$out_of_gas_3661", %"$have_gas_3653" + %"$consume_3663" = sub i64 %"$gasrem_3659", %"$_literal_cost_call_3658" store i64 %"$consume_3663", i64* @_gasrem - %tname = alloca %String - %"$gasrem_3664" = load i64, i64* @_gasrem - %"$gascmp_3665" = icmp ugt i64 1, %"$gasrem_3664" - br i1 %"$gascmp_3665", label %"$out_of_gas_3666", label %"$have_gas_3667" - -"$out_of_gas_3666": ; preds = %"$have_gas_3662" - call void @_out_of_gas() - br label %"$have_gas_3667" - -"$have_gas_3667": ; preds = %"$out_of_gas_3666", %"$have_gas_3662" - %"$consume_3668" = sub i64 %"$gasrem_3664", 1 - store i64 %"$consume_3668", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3669", i32 0, i32 0), i32 3 }, %String* %tname - %"$gasrem_3670" = load i64, i64* @_gasrem - %"$gascmp_3671" = icmp ugt i64 1, %"$gasrem_3670" - br i1 %"$gascmp_3671", label %"$out_of_gas_3672", label %"$have_gas_3673" + %"$execptr_load_3664" = load i8*, i8** @_execptr + %"$m2_full_3666" = load %"Map_String_Map_(String)_(String)"*, %"Map_String_Map_(String)_(String)"** %m2_full + %"$update_value_3667" = bitcast %"Map_String_Map_(String)_(String)"* %"$m2_full_3666" to i8* + call void @_update_field(i8* %"$execptr_load_3664", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_3665", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 0, i8* null, i8* %"$update_value_3667") + ret void +} -"$out_of_gas_3672": ; preds = %"$have_gas_3667" - call void @_out_of_gas() - br label %"$have_gas_3673" +define void @t15(i8* %0) { +entry: + %"$_amount_3669" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3670" = bitcast i8* %"$_amount_3669" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3670" + %"$_sender_3671" = getelementptr i8, i8* %0, i32 16 + %"$_sender_3672" = bitcast i8* %"$_sender_3671" to [20 x i8]* + call void @"$t15_3068"(%Uint128 %_amount, [20 x i8]* %"$_sender_3672") + ret void +} -"$have_gas_3673": ; preds = %"$out_of_gas_3672", %"$have_gas_3667" - %"$consume_3674" = sub i64 %"$gasrem_3670", 1 - store i64 %"$consume_3674", i64* @_gasrem - %key1a = alloca %String +define internal void @"$t16_3673"(%Uint128 %_amount, [20 x i8]* %"$_sender_3674") { +entry: + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3674" %"$gasrem_3675" = load i64, i64* @_gasrem %"$gascmp_3676" = icmp ugt i64 1, %"$gasrem_3675" br i1 %"$gascmp_3676", label %"$out_of_gas_3677", label %"$have_gas_3678" -"$out_of_gas_3677": ; preds = %"$have_gas_3673" +"$out_of_gas_3677": ; preds = %entry call void @_out_of_gas() br label %"$have_gas_3678" -"$have_gas_3678": ; preds = %"$out_of_gas_3677", %"$have_gas_3673" +"$have_gas_3678": ; preds = %"$out_of_gas_3677", %entry %"$consume_3679" = sub i64 %"$gasrem_3675", 1 store i64 %"$consume_3679", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3680", i32 0, i32 0), i32 5 }, %String* %key1a - %"$gasrem_3681" = load i64, i64* @_gasrem - %"$gascmp_3682" = icmp ugt i64 1, %"$gasrem_3681" - br i1 %"$gascmp_3682", label %"$out_of_gas_3683", label %"$have_gas_3684" + %tname = alloca %String + %"$gasrem_3680" = load i64, i64* @_gasrem + %"$gascmp_3681" = icmp ugt i64 1, %"$gasrem_3680" + br i1 %"$gascmp_3681", label %"$out_of_gas_3682", label %"$have_gas_3683" -"$out_of_gas_3683": ; preds = %"$have_gas_3678" +"$out_of_gas_3682": ; preds = %"$have_gas_3678" call void @_out_of_gas() - br label %"$have_gas_3684" + br label %"$have_gas_3683" -"$have_gas_3684": ; preds = %"$out_of_gas_3683", %"$have_gas_3678" - %"$consume_3685" = sub i64 %"$gasrem_3681", 1 - store i64 %"$consume_3685", i64* @_gasrem - %key2a = alloca %String +"$have_gas_3683": ; preds = %"$out_of_gas_3682", %"$have_gas_3678" + %"$consume_3684" = sub i64 %"$gasrem_3680", 1 + store i64 %"$consume_3684", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3685", i32 0, i32 0), i32 3 }, %String* %tname %"$gasrem_3686" = load i64, i64* @_gasrem %"$gascmp_3687" = icmp ugt i64 1, %"$gasrem_3686" br i1 %"$gascmp_3687", label %"$out_of_gas_3688", label %"$have_gas_3689" -"$out_of_gas_3688": ; preds = %"$have_gas_3684" +"$out_of_gas_3688": ; preds = %"$have_gas_3683" call void @_out_of_gas() br label %"$have_gas_3689" -"$have_gas_3689": ; preds = %"$out_of_gas_3688", %"$have_gas_3684" +"$have_gas_3689": ; preds = %"$out_of_gas_3688", %"$have_gas_3683" %"$consume_3690" = sub i64 %"$gasrem_3686", 1 store i64 %"$consume_3690", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3691", i32 0, i32 0), i32 5 }, %String* %key2a - %"$gasrem_3692" = load i64, i64* @_gasrem - %"$gascmp_3693" = icmp ugt i64 1, %"$gasrem_3692" - br i1 %"$gascmp_3693", label %"$out_of_gas_3694", label %"$have_gas_3695" + %key1a = alloca %String + %"$gasrem_3691" = load i64, i64* @_gasrem + %"$gascmp_3692" = icmp ugt i64 1, %"$gasrem_3691" + br i1 %"$gascmp_3692", label %"$out_of_gas_3693", label %"$have_gas_3694" -"$out_of_gas_3694": ; preds = %"$have_gas_3689" +"$out_of_gas_3693": ; preds = %"$have_gas_3689" call void @_out_of_gas() - br label %"$have_gas_3695" + br label %"$have_gas_3694" -"$have_gas_3695": ; preds = %"$out_of_gas_3694", %"$have_gas_3689" - %"$consume_3696" = sub i64 %"$gasrem_3692", 1 - store i64 %"$consume_3696", i64* @_gasrem - %key1b = alloca %String +"$have_gas_3694": ; preds = %"$out_of_gas_3693", %"$have_gas_3689" + %"$consume_3695" = sub i64 %"$gasrem_3691", 1 + store i64 %"$consume_3695", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3696", i32 0, i32 0), i32 5 }, %String* %key1a %"$gasrem_3697" = load i64, i64* @_gasrem %"$gascmp_3698" = icmp ugt i64 1, %"$gasrem_3697" br i1 %"$gascmp_3698", label %"$out_of_gas_3699", label %"$have_gas_3700" -"$out_of_gas_3699": ; preds = %"$have_gas_3695" +"$out_of_gas_3699": ; preds = %"$have_gas_3694" call void @_out_of_gas() br label %"$have_gas_3700" -"$have_gas_3700": ; preds = %"$out_of_gas_3699", %"$have_gas_3695" +"$have_gas_3700": ; preds = %"$out_of_gas_3699", %"$have_gas_3694" %"$consume_3701" = sub i64 %"$gasrem_3697", 1 store i64 %"$consume_3701", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3702", i32 0, i32 0), i32 5 }, %String* %key1b - %"$gasrem_3703" = load i64, i64* @_gasrem - %"$gascmp_3704" = icmp ugt i64 1, %"$gasrem_3703" - br i1 %"$gascmp_3704", label %"$out_of_gas_3705", label %"$have_gas_3706" + %key2a = alloca %String + %"$gasrem_3702" = load i64, i64* @_gasrem + %"$gascmp_3703" = icmp ugt i64 1, %"$gasrem_3702" + br i1 %"$gascmp_3703", label %"$out_of_gas_3704", label %"$have_gas_3705" -"$out_of_gas_3705": ; preds = %"$have_gas_3700" +"$out_of_gas_3704": ; preds = %"$have_gas_3700" call void @_out_of_gas() - br label %"$have_gas_3706" + br label %"$have_gas_3705" -"$have_gas_3706": ; preds = %"$out_of_gas_3705", %"$have_gas_3700" - %"$consume_3707" = sub i64 %"$gasrem_3703", 1 - store i64 %"$consume_3707", i64* @_gasrem - %key2b = alloca %String +"$have_gas_3705": ; preds = %"$out_of_gas_3704", %"$have_gas_3700" + %"$consume_3706" = sub i64 %"$gasrem_3702", 1 + store i64 %"$consume_3706", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3707", i32 0, i32 0), i32 5 }, %String* %key2a %"$gasrem_3708" = load i64, i64* @_gasrem %"$gascmp_3709" = icmp ugt i64 1, %"$gasrem_3708" br i1 %"$gascmp_3709", label %"$out_of_gas_3710", label %"$have_gas_3711" -"$out_of_gas_3710": ; preds = %"$have_gas_3706" +"$out_of_gas_3710": ; preds = %"$have_gas_3705" call void @_out_of_gas() br label %"$have_gas_3711" -"$have_gas_3711": ; preds = %"$out_of_gas_3710", %"$have_gas_3706" +"$have_gas_3711": ; preds = %"$out_of_gas_3710", %"$have_gas_3705" %"$consume_3712" = sub i64 %"$gasrem_3708", 1 store i64 %"$consume_3712", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3713", i32 0, i32 0), i32 5 }, %String* %key2b - %"$gasrem_3714" = load i64, i64* @_gasrem - %"$gascmp_3715" = icmp ugt i64 1, %"$gasrem_3714" - br i1 %"$gascmp_3715", label %"$out_of_gas_3716", label %"$have_gas_3717" + %key1b = alloca %String + %"$gasrem_3713" = load i64, i64* @_gasrem + %"$gascmp_3714" = icmp ugt i64 1, %"$gasrem_3713" + br i1 %"$gascmp_3714", label %"$out_of_gas_3715", label %"$have_gas_3716" -"$out_of_gas_3716": ; preds = %"$have_gas_3711" +"$out_of_gas_3715": ; preds = %"$have_gas_3711" call void @_out_of_gas() - br label %"$have_gas_3717" + br label %"$have_gas_3716" -"$have_gas_3717": ; preds = %"$out_of_gas_3716", %"$have_gas_3711" - %"$consume_3718" = sub i64 %"$gasrem_3714", 1 - store i64 %"$consume_3718", i64* @_gasrem - %key1c = alloca %String +"$have_gas_3716": ; preds = %"$out_of_gas_3715", %"$have_gas_3711" + %"$consume_3717" = sub i64 %"$gasrem_3713", 1 + store i64 %"$consume_3717", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3718", i32 0, i32 0), i32 5 }, %String* %key1b %"$gasrem_3719" = load i64, i64* @_gasrem %"$gascmp_3720" = icmp ugt i64 1, %"$gasrem_3719" br i1 %"$gascmp_3720", label %"$out_of_gas_3721", label %"$have_gas_3722" -"$out_of_gas_3721": ; preds = %"$have_gas_3717" +"$out_of_gas_3721": ; preds = %"$have_gas_3716" call void @_out_of_gas() br label %"$have_gas_3722" -"$have_gas_3722": ; preds = %"$out_of_gas_3721", %"$have_gas_3717" +"$have_gas_3722": ; preds = %"$out_of_gas_3721", %"$have_gas_3716" %"$consume_3723" = sub i64 %"$gasrem_3719", 1 store i64 %"$consume_3723", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3724", i32 0, i32 0), i32 5 }, %String* %key1c - %"$gasrem_3725" = load i64, i64* @_gasrem - %"$gascmp_3726" = icmp ugt i64 1, %"$gasrem_3725" - br i1 %"$gascmp_3726", label %"$out_of_gas_3727", label %"$have_gas_3728" + %key2b = alloca %String + %"$gasrem_3724" = load i64, i64* @_gasrem + %"$gascmp_3725" = icmp ugt i64 1, %"$gasrem_3724" + br i1 %"$gascmp_3725", label %"$out_of_gas_3726", label %"$have_gas_3727" -"$out_of_gas_3727": ; preds = %"$have_gas_3722" +"$out_of_gas_3726": ; preds = %"$have_gas_3722" call void @_out_of_gas() - br label %"$have_gas_3728" + br label %"$have_gas_3727" -"$have_gas_3728": ; preds = %"$out_of_gas_3727", %"$have_gas_3722" - %"$consume_3729" = sub i64 %"$gasrem_3725", 1 - store i64 %"$consume_3729", i64* @_gasrem - %key2c = alloca %String +"$have_gas_3727": ; preds = %"$out_of_gas_3726", %"$have_gas_3722" + %"$consume_3728" = sub i64 %"$gasrem_3724", 1 + store i64 %"$consume_3728", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3729", i32 0, i32 0), i32 5 }, %String* %key2b %"$gasrem_3730" = load i64, i64* @_gasrem %"$gascmp_3731" = icmp ugt i64 1, %"$gasrem_3730" br i1 %"$gascmp_3731", label %"$out_of_gas_3732", label %"$have_gas_3733" -"$out_of_gas_3732": ; preds = %"$have_gas_3728" +"$out_of_gas_3732": ; preds = %"$have_gas_3727" call void @_out_of_gas() br label %"$have_gas_3733" -"$have_gas_3733": ; preds = %"$out_of_gas_3732", %"$have_gas_3728" +"$have_gas_3733": ; preds = %"$out_of_gas_3732", %"$have_gas_3727" %"$consume_3734" = sub i64 %"$gasrem_3730", 1 store i64 %"$consume_3734", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3735", i32 0, i32 0), i32 5 }, %String* %key2c - %"$gasrem_3736" = load i64, i64* @_gasrem - %"$gascmp_3737" = icmp ugt i64 1, %"$gasrem_3736" - br i1 %"$gascmp_3737", label %"$out_of_gas_3738", label %"$have_gas_3739" + %key1c = alloca %String + %"$gasrem_3735" = load i64, i64* @_gasrem + %"$gascmp_3736" = icmp ugt i64 1, %"$gasrem_3735" + br i1 %"$gascmp_3736", label %"$out_of_gas_3737", label %"$have_gas_3738" -"$out_of_gas_3738": ; preds = %"$have_gas_3733" +"$out_of_gas_3737": ; preds = %"$have_gas_3733" call void @_out_of_gas() - br label %"$have_gas_3739" + br label %"$have_gas_3738" -"$have_gas_3739": ; preds = %"$out_of_gas_3738", %"$have_gas_3733" - %"$consume_3740" = sub i64 %"$gasrem_3736", 1 - store i64 %"$consume_3740", i64* @_gasrem - %key1d = alloca %String +"$have_gas_3738": ; preds = %"$out_of_gas_3737", %"$have_gas_3733" + %"$consume_3739" = sub i64 %"$gasrem_3735", 1 + store i64 %"$consume_3739", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3740", i32 0, i32 0), i32 5 }, %String* %key1c %"$gasrem_3741" = load i64, i64* @_gasrem %"$gascmp_3742" = icmp ugt i64 1, %"$gasrem_3741" br i1 %"$gascmp_3742", label %"$out_of_gas_3743", label %"$have_gas_3744" -"$out_of_gas_3743": ; preds = %"$have_gas_3739" +"$out_of_gas_3743": ; preds = %"$have_gas_3738" call void @_out_of_gas() br label %"$have_gas_3744" -"$have_gas_3744": ; preds = %"$out_of_gas_3743", %"$have_gas_3739" +"$have_gas_3744": ; preds = %"$out_of_gas_3743", %"$have_gas_3738" %"$consume_3745" = sub i64 %"$gasrem_3741", 1 store i64 %"$consume_3745", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3746", i32 0, i32 0), i32 5 }, %String* %key1d - %"$gasrem_3747" = load i64, i64* @_gasrem - %"$gascmp_3748" = icmp ugt i64 1, %"$gasrem_3747" - br i1 %"$gascmp_3748", label %"$out_of_gas_3749", label %"$have_gas_3750" + %key2c = alloca %String + %"$gasrem_3746" = load i64, i64* @_gasrem + %"$gascmp_3747" = icmp ugt i64 1, %"$gasrem_3746" + br i1 %"$gascmp_3747", label %"$out_of_gas_3748", label %"$have_gas_3749" -"$out_of_gas_3749": ; preds = %"$have_gas_3744" +"$out_of_gas_3748": ; preds = %"$have_gas_3744" call void @_out_of_gas() - br label %"$have_gas_3750" + br label %"$have_gas_3749" -"$have_gas_3750": ; preds = %"$out_of_gas_3749", %"$have_gas_3744" - %"$consume_3751" = sub i64 %"$gasrem_3747", 1 - store i64 %"$consume_3751", i64* @_gasrem - %key2d = alloca %String +"$have_gas_3749": ; preds = %"$out_of_gas_3748", %"$have_gas_3744" + %"$consume_3750" = sub i64 %"$gasrem_3746", 1 + store i64 %"$consume_3750", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3751", i32 0, i32 0), i32 5 }, %String* %key2c %"$gasrem_3752" = load i64, i64* @_gasrem %"$gascmp_3753" = icmp ugt i64 1, %"$gasrem_3752" br i1 %"$gascmp_3753", label %"$out_of_gas_3754", label %"$have_gas_3755" -"$out_of_gas_3754": ; preds = %"$have_gas_3750" +"$out_of_gas_3754": ; preds = %"$have_gas_3749" call void @_out_of_gas() br label %"$have_gas_3755" -"$have_gas_3755": ; preds = %"$out_of_gas_3754", %"$have_gas_3750" +"$have_gas_3755": ; preds = %"$out_of_gas_3754", %"$have_gas_3749" %"$consume_3756" = sub i64 %"$gasrem_3752", 1 store i64 %"$consume_3756", i64* @_gasrem - store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3757", i32 0, i32 0), i32 5 }, %String* %key2d + %key1d = alloca %String + %"$gasrem_3757" = load i64, i64* @_gasrem + %"$gascmp_3758" = icmp ugt i64 1, %"$gasrem_3757" + br i1 %"$gascmp_3758", label %"$out_of_gas_3759", label %"$have_gas_3760" + +"$out_of_gas_3759": ; preds = %"$have_gas_3755" + call void @_out_of_gas() + br label %"$have_gas_3760" + +"$have_gas_3760": ; preds = %"$out_of_gas_3759", %"$have_gas_3755" + %"$consume_3761" = sub i64 %"$gasrem_3757", 1 + store i64 %"$consume_3761", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3762", i32 0, i32 0), i32 5 }, %String* %key1d + %"$gasrem_3763" = load i64, i64* @_gasrem + %"$gascmp_3764" = icmp ugt i64 1, %"$gasrem_3763" + br i1 %"$gascmp_3764", label %"$out_of_gas_3765", label %"$have_gas_3766" + +"$out_of_gas_3765": ; preds = %"$have_gas_3760" + call void @_out_of_gas() + br label %"$have_gas_3766" + +"$have_gas_3766": ; preds = %"$out_of_gas_3765", %"$have_gas_3760" + %"$consume_3767" = sub i64 %"$gasrem_3763", 1 + store i64 %"$consume_3767", i64* @_gasrem + %key2d = alloca %String + %"$gasrem_3768" = load i64, i64* @_gasrem + %"$gascmp_3769" = icmp ugt i64 1, %"$gasrem_3768" + br i1 %"$gascmp_3769", label %"$out_of_gas_3770", label %"$have_gas_3771" + +"$out_of_gas_3770": ; preds = %"$have_gas_3766" + call void @_out_of_gas() + br label %"$have_gas_3771" + +"$have_gas_3771": ; preds = %"$out_of_gas_3770", %"$have_gas_3766" + %"$consume_3772" = sub i64 %"$gasrem_3768", 1 + store i64 %"$consume_3772", i64* @_gasrem + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_3773", i32 0, i32 0), i32 5 }, %String* %key2d %t1 = alloca %TName_Option_String* - %"$indices_buf_3758_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_3758_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3758_salloc_load", i64 32) - %"$indices_buf_3758_salloc" = bitcast i8* %"$indices_buf_3758_salloc_salloc" to [32 x i8]* - %"$indices_buf_3758" = bitcast [32 x i8]* %"$indices_buf_3758_salloc" to i8* - %"$key1a_3759" = load %String, %String* %key1a - %"$indices_gep_3760" = getelementptr i8, i8* %"$indices_buf_3758", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_3760" to %String* - store %String %"$key1a_3759", %String* %indices_cast - %"$key2a_3761" = load %String, %String* %key2a - %"$indices_gep_3762" = getelementptr i8, i8* %"$indices_buf_3758", i32 16 - %indices_cast1 = bitcast i8* %"$indices_gep_3762" to %String* - store %String %"$key2a_3761", %String* %indices_cast1 - %"$execptr_load_3763" = load i8*, i8** @_execptr - %"$t1_3765" = call i8* @_fetch_field(i8* %"$execptr_load_3763", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_3764", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_3758", i32 1) - %"$t1_3766" = bitcast i8* %"$t1_3765" to %TName_Option_String* - store %TName_Option_String* %"$t1_3766", %TName_Option_String** %t1 - %"$t1_3767" = load %TName_Option_String*, %TName_Option_String** %t1 - %"$$t1_3767_3768" = bitcast %TName_Option_String* %"$t1_3767" to i8* - %"$_literal_cost_call_3769" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$t1_3767_3768") - %"$gasadd_3770" = add i64 %"$_literal_cost_call_3769", 0 - %"$gasadd_3771" = add i64 %"$gasadd_3770", 2 - %"$gasrem_3772" = load i64, i64* @_gasrem - %"$gascmp_3773" = icmp ugt i64 %"$gasadd_3771", %"$gasrem_3772" - br i1 %"$gascmp_3773", label %"$out_of_gas_3774", label %"$have_gas_3775" - -"$out_of_gas_3774": ; preds = %"$have_gas_3755" - call void @_out_of_gas() - br label %"$have_gas_3775" - -"$have_gas_3775": ; preds = %"$out_of_gas_3774", %"$have_gas_3755" - %"$consume_3776" = sub i64 %"$gasrem_3772", %"$gasadd_3771" - store i64 %"$consume_3776", i64* @_gasrem + %"$indices_buf_3774_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3774_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3774_salloc_load", i64 32) + %"$indices_buf_3774_salloc" = bitcast i8* %"$indices_buf_3774_salloc_salloc" to [32 x i8]* + %"$indices_buf_3774" = bitcast [32 x i8]* %"$indices_buf_3774_salloc" to i8* + %"$key1a_3775" = load %String, %String* %key1a + %"$indices_gep_3776" = getelementptr i8, i8* %"$indices_buf_3774", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_3776" to %String* + store %String %"$key1a_3775", %String* %indices_cast + %"$key2a_3777" = load %String, %String* %key2a + %"$indices_gep_3778" = getelementptr i8, i8* %"$indices_buf_3774", i32 16 + %indices_cast1 = bitcast i8* %"$indices_gep_3778" to %String* + store %String %"$key2a_3777", %String* %indices_cast1 + %"$execptr_load_3779" = load i8*, i8** @_execptr + %"$t1_3781" = call i8* @_fetch_field(i8* %"$execptr_load_3779", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_3780", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_3774", i32 1) + %"$t1_3782" = bitcast i8* %"$t1_3781" to %TName_Option_String* + store %TName_Option_String* %"$t1_3782", %TName_Option_String** %t1 + %"$t1_3783" = load %TName_Option_String*, %TName_Option_String** %t1 + %"$$t1_3783_3784" = bitcast %TName_Option_String* %"$t1_3783" to i8* + %"$_literal_cost_call_3785" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$t1_3783_3784") + %"$gasadd_3786" = add i64 %"$_literal_cost_call_3785", 0 + %"$gasadd_3787" = add i64 %"$gasadd_3786", 2 + %"$gasrem_3788" = load i64, i64* @_gasrem + %"$gascmp_3789" = icmp ugt i64 %"$gasadd_3787", %"$gasrem_3788" + br i1 %"$gascmp_3789", label %"$out_of_gas_3790", label %"$have_gas_3791" + +"$out_of_gas_3790": ; preds = %"$have_gas_3771" + call void @_out_of_gas() + br label %"$have_gas_3791" + +"$have_gas_3791": ; preds = %"$out_of_gas_3790", %"$have_gas_3771" + %"$consume_3792" = sub i64 %"$gasrem_3788", %"$gasadd_3787" + store i64 %"$consume_3792", i64* @_gasrem %t2 = alloca %TName_Option_String* - %"$indices_buf_3777_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_3777_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3777_salloc_load", i64 32) - %"$indices_buf_3777_salloc" = bitcast i8* %"$indices_buf_3777_salloc_salloc" to [32 x i8]* - %"$indices_buf_3777" = bitcast [32 x i8]* %"$indices_buf_3777_salloc" to i8* - %"$key1b_3778" = load %String, %String* %key1b - %"$indices_gep_3779" = getelementptr i8, i8* %"$indices_buf_3777", i32 0 - %indices_cast2 = bitcast i8* %"$indices_gep_3779" to %String* - store %String %"$key1b_3778", %String* %indices_cast2 - %"$key2b_3780" = load %String, %String* %key2b - %"$indices_gep_3781" = getelementptr i8, i8* %"$indices_buf_3777", i32 16 - %indices_cast3 = bitcast i8* %"$indices_gep_3781" to %String* - store %String %"$key2b_3780", %String* %indices_cast3 - %"$execptr_load_3782" = load i8*, i8** @_execptr - %"$t2_3784" = call i8* @_fetch_field(i8* %"$execptr_load_3782", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_3783", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_3777", i32 1) - %"$t2_3785" = bitcast i8* %"$t2_3784" to %TName_Option_String* - store %TName_Option_String* %"$t2_3785", %TName_Option_String** %t2 - %"$t2_3786" = load %TName_Option_String*, %TName_Option_String** %t2 - %"$$t2_3786_3787" = bitcast %TName_Option_String* %"$t2_3786" to i8* - %"$_literal_cost_call_3788" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$t2_3786_3787") - %"$gasadd_3789" = add i64 %"$_literal_cost_call_3788", 0 - %"$gasadd_3790" = add i64 %"$gasadd_3789", 2 - %"$gasrem_3791" = load i64, i64* @_gasrem - %"$gascmp_3792" = icmp ugt i64 %"$gasadd_3790", %"$gasrem_3791" - br i1 %"$gascmp_3792", label %"$out_of_gas_3793", label %"$have_gas_3794" - -"$out_of_gas_3793": ; preds = %"$have_gas_3775" - call void @_out_of_gas() - br label %"$have_gas_3794" - -"$have_gas_3794": ; preds = %"$out_of_gas_3793", %"$have_gas_3775" - %"$consume_3795" = sub i64 %"$gasrem_3791", %"$gasadd_3790" - store i64 %"$consume_3795", i64* @_gasrem + %"$indices_buf_3793_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3793_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3793_salloc_load", i64 32) + %"$indices_buf_3793_salloc" = bitcast i8* %"$indices_buf_3793_salloc_salloc" to [32 x i8]* + %"$indices_buf_3793" = bitcast [32 x i8]* %"$indices_buf_3793_salloc" to i8* + %"$key1b_3794" = load %String, %String* %key1b + %"$indices_gep_3795" = getelementptr i8, i8* %"$indices_buf_3793", i32 0 + %indices_cast2 = bitcast i8* %"$indices_gep_3795" to %String* + store %String %"$key1b_3794", %String* %indices_cast2 + %"$key2b_3796" = load %String, %String* %key2b + %"$indices_gep_3797" = getelementptr i8, i8* %"$indices_buf_3793", i32 16 + %indices_cast3 = bitcast i8* %"$indices_gep_3797" to %String* + store %String %"$key2b_3796", %String* %indices_cast3 + %"$execptr_load_3798" = load i8*, i8** @_execptr + %"$t2_3800" = call i8* @_fetch_field(i8* %"$execptr_load_3798", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_3799", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_3793", i32 1) + %"$t2_3801" = bitcast i8* %"$t2_3800" to %TName_Option_String* + store %TName_Option_String* %"$t2_3801", %TName_Option_String** %t2 + %"$t2_3802" = load %TName_Option_String*, %TName_Option_String** %t2 + %"$$t2_3802_3803" = bitcast %TName_Option_String* %"$t2_3802" to i8* + %"$_literal_cost_call_3804" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$t2_3802_3803") + %"$gasadd_3805" = add i64 %"$_literal_cost_call_3804", 0 + %"$gasadd_3806" = add i64 %"$gasadd_3805", 2 + %"$gasrem_3807" = load i64, i64* @_gasrem + %"$gascmp_3808" = icmp ugt i64 %"$gasadd_3806", %"$gasrem_3807" + br i1 %"$gascmp_3808", label %"$out_of_gas_3809", label %"$have_gas_3810" + +"$out_of_gas_3809": ; preds = %"$have_gas_3791" + call void @_out_of_gas() + br label %"$have_gas_3810" + +"$have_gas_3810": ; preds = %"$out_of_gas_3809", %"$have_gas_3791" + %"$consume_3811" = sub i64 %"$gasrem_3807", %"$gasadd_3806" + store i64 %"$consume_3811", i64* @_gasrem %t3 = alloca %TName_Option_String* - %"$indices_buf_3796_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_3796_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3796_salloc_load", i64 32) - %"$indices_buf_3796_salloc" = bitcast i8* %"$indices_buf_3796_salloc_salloc" to [32 x i8]* - %"$indices_buf_3796" = bitcast [32 x i8]* %"$indices_buf_3796_salloc" to i8* - %"$key1c_3797" = load %String, %String* %key1c - %"$indices_gep_3798" = getelementptr i8, i8* %"$indices_buf_3796", i32 0 - %indices_cast4 = bitcast i8* %"$indices_gep_3798" to %String* - store %String %"$key1c_3797", %String* %indices_cast4 - %"$key2c_3799" = load %String, %String* %key2c - %"$indices_gep_3800" = getelementptr i8, i8* %"$indices_buf_3796", i32 16 - %indices_cast5 = bitcast i8* %"$indices_gep_3800" to %String* - store %String %"$key2c_3799", %String* %indices_cast5 - %"$execptr_load_3801" = load i8*, i8** @_execptr - %"$t3_3803" = call i8* @_fetch_field(i8* %"$execptr_load_3801", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_3802", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_3796", i32 1) - %"$t3_3804" = bitcast i8* %"$t3_3803" to %TName_Option_String* - store %TName_Option_String* %"$t3_3804", %TName_Option_String** %t3 - %"$t3_3805" = load %TName_Option_String*, %TName_Option_String** %t3 - %"$$t3_3805_3806" = bitcast %TName_Option_String* %"$t3_3805" to i8* - %"$_literal_cost_call_3807" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$t3_3805_3806") - %"$gasadd_3808" = add i64 %"$_literal_cost_call_3807", 0 - %"$gasadd_3809" = add i64 %"$gasadd_3808", 2 - %"$gasrem_3810" = load i64, i64* @_gasrem - %"$gascmp_3811" = icmp ugt i64 %"$gasadd_3809", %"$gasrem_3810" - br i1 %"$gascmp_3811", label %"$out_of_gas_3812", label %"$have_gas_3813" - -"$out_of_gas_3812": ; preds = %"$have_gas_3794" - call void @_out_of_gas() - br label %"$have_gas_3813" - -"$have_gas_3813": ; preds = %"$out_of_gas_3812", %"$have_gas_3794" - %"$consume_3814" = sub i64 %"$gasrem_3810", %"$gasadd_3809" - store i64 %"$consume_3814", i64* @_gasrem + %"$indices_buf_3812_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3812_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3812_salloc_load", i64 32) + %"$indices_buf_3812_salloc" = bitcast i8* %"$indices_buf_3812_salloc_salloc" to [32 x i8]* + %"$indices_buf_3812" = bitcast [32 x i8]* %"$indices_buf_3812_salloc" to i8* + %"$key1c_3813" = load %String, %String* %key1c + %"$indices_gep_3814" = getelementptr i8, i8* %"$indices_buf_3812", i32 0 + %indices_cast4 = bitcast i8* %"$indices_gep_3814" to %String* + store %String %"$key1c_3813", %String* %indices_cast4 + %"$key2c_3815" = load %String, %String* %key2c + %"$indices_gep_3816" = getelementptr i8, i8* %"$indices_buf_3812", i32 16 + %indices_cast5 = bitcast i8* %"$indices_gep_3816" to %String* + store %String %"$key2c_3815", %String* %indices_cast5 + %"$execptr_load_3817" = load i8*, i8** @_execptr + %"$t3_3819" = call i8* @_fetch_field(i8* %"$execptr_load_3817", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_3818", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_3812", i32 1) + %"$t3_3820" = bitcast i8* %"$t3_3819" to %TName_Option_String* + store %TName_Option_String* %"$t3_3820", %TName_Option_String** %t3 + %"$t3_3821" = load %TName_Option_String*, %TName_Option_String** %t3 + %"$$t3_3821_3822" = bitcast %TName_Option_String* %"$t3_3821" to i8* + %"$_literal_cost_call_3823" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$t3_3821_3822") + %"$gasadd_3824" = add i64 %"$_literal_cost_call_3823", 0 + %"$gasadd_3825" = add i64 %"$gasadd_3824", 2 + %"$gasrem_3826" = load i64, i64* @_gasrem + %"$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_3810" + call void @_out_of_gas() + br label %"$have_gas_3829" + +"$have_gas_3829": ; preds = %"$out_of_gas_3828", %"$have_gas_3810" + %"$consume_3830" = sub i64 %"$gasrem_3826", %"$gasadd_3825" + store i64 %"$consume_3830", i64* @_gasrem %t4 = alloca %TName_Option_String* - %"$indices_buf_3815_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_3815_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3815_salloc_load", i64 32) - %"$indices_buf_3815_salloc" = bitcast i8* %"$indices_buf_3815_salloc_salloc" to [32 x i8]* - %"$indices_buf_3815" = bitcast [32 x i8]* %"$indices_buf_3815_salloc" to i8* - %"$key1d_3816" = load %String, %String* %key1d - %"$indices_gep_3817" = getelementptr i8, i8* %"$indices_buf_3815", i32 0 - %indices_cast6 = bitcast i8* %"$indices_gep_3817" to %String* - store %String %"$key1d_3816", %String* %indices_cast6 - %"$key2d_3818" = load %String, %String* %key2d - %"$indices_gep_3819" = getelementptr i8, i8* %"$indices_buf_3815", i32 16 - %indices_cast7 = bitcast i8* %"$indices_gep_3819" to %String* - store %String %"$key2d_3818", %String* %indices_cast7 - %"$execptr_load_3820" = load i8*, i8** @_execptr - %"$t4_3822" = call i8* @_fetch_field(i8* %"$execptr_load_3820", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_3821", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_3815", i32 1) - %"$t4_3823" = bitcast i8* %"$t4_3822" to %TName_Option_String* - store %TName_Option_String* %"$t4_3823", %TName_Option_String** %t4 - %"$t4_3824" = load %TName_Option_String*, %TName_Option_String** %t4 - %"$$t4_3824_3825" = bitcast %TName_Option_String* %"$t4_3824" to i8* - %"$_literal_cost_call_3826" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$t4_3824_3825") - %"$gasadd_3827" = add i64 %"$_literal_cost_call_3826", 0 - %"$gasadd_3828" = add i64 %"$gasadd_3827", 2 - %"$gasrem_3829" = load i64, i64* @_gasrem - %"$gascmp_3830" = icmp ugt i64 %"$gasadd_3828", %"$gasrem_3829" - br i1 %"$gascmp_3830", label %"$out_of_gas_3831", label %"$have_gas_3832" - -"$out_of_gas_3831": ; preds = %"$have_gas_3813" - call void @_out_of_gas() - br label %"$have_gas_3832" - -"$have_gas_3832": ; preds = %"$out_of_gas_3831", %"$have_gas_3813" - %"$consume_3833" = sub i64 %"$gasrem_3829", %"$gasadd_3828" - store i64 %"$consume_3833", i64* @_gasrem - %"$gasrem_3834" = load i64, i64* @_gasrem - %"$gascmp_3835" = icmp ugt i64 1, %"$gasrem_3834" - br i1 %"$gascmp_3835", label %"$out_of_gas_3836", label %"$have_gas_3837" - -"$out_of_gas_3836": ; preds = %"$have_gas_3832" - call void @_out_of_gas() - br label %"$have_gas_3837" - -"$have_gas_3837": ; preds = %"$out_of_gas_3836", %"$have_gas_3832" - %"$consume_3838" = sub i64 %"$gasrem_3834", 1 - store i64 %"$consume_3838", i64* @_gasrem - %v1 = alloca %String - %"$gasrem_3839" = load i64, i64* @_gasrem - %"$gascmp_3840" = icmp ugt i64 1, %"$gasrem_3839" - br i1 %"$gascmp_3840", label %"$out_of_gas_3841", label %"$have_gas_3842" - -"$out_of_gas_3841": ; preds = %"$have_gas_3837" - call void @_out_of_gas() - br label %"$have_gas_3842" - -"$have_gas_3842": ; preds = %"$out_of_gas_3841", %"$have_gas_3837" - %"$consume_3843" = sub i64 %"$gasrem_3839", 1 - store i64 %"$consume_3843", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3844", i32 0, i32 0), i32 3 }, %String* %v1 + %"$indices_buf_3831_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_3831_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_3831_salloc_load", i64 32) + %"$indices_buf_3831_salloc" = bitcast i8* %"$indices_buf_3831_salloc_salloc" to [32 x i8]* + %"$indices_buf_3831" = bitcast [32 x i8]* %"$indices_buf_3831_salloc" to i8* + %"$key1d_3832" = load %String, %String* %key1d + %"$indices_gep_3833" = getelementptr i8, i8* %"$indices_buf_3831", i32 0 + %indices_cast6 = bitcast i8* %"$indices_gep_3833" to %String* + store %String %"$key1d_3832", %String* %indices_cast6 + %"$key2d_3834" = load %String, %String* %key2d + %"$indices_gep_3835" = getelementptr i8, i8* %"$indices_buf_3831", i32 16 + %indices_cast7 = bitcast i8* %"$indices_gep_3835" to %String* + store %String %"$key2d_3834", %String* %indices_cast7 + %"$execptr_load_3836" = load i8*, i8** @_execptr + %"$t4_3838" = call i8* @_fetch_field(i8* %"$execptr_load_3836", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m2_3837", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_71", i32 2, i8* %"$indices_buf_3831", i32 1) + %"$t4_3839" = bitcast i8* %"$t4_3838" to %TName_Option_String* + store %TName_Option_String* %"$t4_3839", %TName_Option_String** %t4 + %"$t4_3840" = load %TName_Option_String*, %TName_Option_String** %t4 + %"$$t4_3840_3841" = bitcast %TName_Option_String* %"$t4_3840" to i8* + %"$_literal_cost_call_3842" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_67", i8* %"$$t4_3840_3841") + %"$gasadd_3843" = add i64 %"$_literal_cost_call_3842", 0 + %"$gasadd_3844" = add i64 %"$gasadd_3843", 2 %"$gasrem_3845" = load i64, i64* @_gasrem - %"$gascmp_3846" = icmp ugt i64 1, %"$gasrem_3845" + %"$gascmp_3846" = icmp ugt i64 %"$gasadd_3844", %"$gasrem_3845" br i1 %"$gascmp_3846", label %"$out_of_gas_3847", label %"$have_gas_3848" -"$out_of_gas_3847": ; preds = %"$have_gas_3842" +"$out_of_gas_3847": ; preds = %"$have_gas_3829" call void @_out_of_gas() br label %"$have_gas_3848" -"$have_gas_3848": ; preds = %"$out_of_gas_3847", %"$have_gas_3842" - %"$consume_3849" = sub i64 %"$gasrem_3845", 1 +"$have_gas_3848": ; preds = %"$out_of_gas_3847", %"$have_gas_3829" + %"$consume_3849" = sub i64 %"$gasrem_3845", %"$gasadd_3844" store i64 %"$consume_3849", i64* @_gasrem - %v2 = alloca %String %"$gasrem_3850" = load i64, i64* @_gasrem %"$gascmp_3851" = icmp ugt i64 1, %"$gasrem_3850" br i1 %"$gascmp_3851", label %"$out_of_gas_3852", label %"$have_gas_3853" @@ -7896,454 +7886,463 @@ entry: "$have_gas_3853": ; preds = %"$out_of_gas_3852", %"$have_gas_3848" %"$consume_3854" = sub i64 %"$gasrem_3850", 1 store i64 %"$consume_3854", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3855", i32 0, i32 0), i32 3 }, %String* %v2 - %"$gasrem_3856" = load i64, i64* @_gasrem - %"$gascmp_3857" = icmp ugt i64 1, %"$gasrem_3856" - br i1 %"$gascmp_3857", label %"$out_of_gas_3858", label %"$have_gas_3859" + %v1 = alloca %String + %"$gasrem_3855" = load i64, i64* @_gasrem + %"$gascmp_3856" = icmp ugt i64 1, %"$gasrem_3855" + br i1 %"$gascmp_3856", label %"$out_of_gas_3857", label %"$have_gas_3858" -"$out_of_gas_3858": ; preds = %"$have_gas_3853" +"$out_of_gas_3857": ; preds = %"$have_gas_3853" call void @_out_of_gas() - br label %"$have_gas_3859" + br label %"$have_gas_3858" -"$have_gas_3859": ; preds = %"$out_of_gas_3858", %"$have_gas_3853" - %"$consume_3860" = sub i64 %"$gasrem_3856", 1 - store i64 %"$consume_3860", i64* @_gasrem - %v3 = alloca %String +"$have_gas_3858": ; preds = %"$out_of_gas_3857", %"$have_gas_3853" + %"$consume_3859" = sub i64 %"$gasrem_3855", 1 + store i64 %"$consume_3859", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3860", i32 0, i32 0), i32 3 }, %String* %v1 %"$gasrem_3861" = load i64, i64* @_gasrem %"$gascmp_3862" = icmp ugt i64 1, %"$gasrem_3861" br i1 %"$gascmp_3862", label %"$out_of_gas_3863", label %"$have_gas_3864" -"$out_of_gas_3863": ; preds = %"$have_gas_3859" +"$out_of_gas_3863": ; preds = %"$have_gas_3858" call void @_out_of_gas() br label %"$have_gas_3864" -"$have_gas_3864": ; preds = %"$out_of_gas_3863", %"$have_gas_3859" +"$have_gas_3864": ; preds = %"$out_of_gas_3863", %"$have_gas_3858" %"$consume_3865" = sub i64 %"$gasrem_3861", 1 store i64 %"$consume_3865", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3866", i32 0, i32 0), i32 3 }, %String* %v3 - %"$gasrem_3867" = load i64, i64* @_gasrem - %"$gascmp_3868" = icmp ugt i64 1, %"$gasrem_3867" - br i1 %"$gascmp_3868", label %"$out_of_gas_3869", label %"$have_gas_3870" + %v2 = alloca %String + %"$gasrem_3866" = load i64, i64* @_gasrem + %"$gascmp_3867" = icmp ugt i64 1, %"$gasrem_3866" + br i1 %"$gascmp_3867", label %"$out_of_gas_3868", label %"$have_gas_3869" -"$out_of_gas_3869": ; preds = %"$have_gas_3864" +"$out_of_gas_3868": ; preds = %"$have_gas_3864" call void @_out_of_gas() - br label %"$have_gas_3870" + br label %"$have_gas_3869" -"$have_gas_3870": ; preds = %"$out_of_gas_3869", %"$have_gas_3864" - %"$consume_3871" = sub i64 %"$gasrem_3867", 1 - store i64 %"$consume_3871", i64* @_gasrem - %v4 = alloca %String +"$have_gas_3869": ; preds = %"$out_of_gas_3868", %"$have_gas_3864" + %"$consume_3870" = sub i64 %"$gasrem_3866", 1 + store i64 %"$consume_3870", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3871", i32 0, i32 0), i32 3 }, %String* %v2 %"$gasrem_3872" = load i64, i64* @_gasrem %"$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" +"$out_of_gas_3874": ; preds = %"$have_gas_3869" call void @_out_of_gas() br label %"$have_gas_3875" -"$have_gas_3875": ; preds = %"$out_of_gas_3874", %"$have_gas_3870" +"$have_gas_3875": ; preds = %"$out_of_gas_3874", %"$have_gas_3869" %"$consume_3876" = sub i64 %"$gasrem_3872", 1 store i64 %"$consume_3876", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3877", i32 0, i32 0), i32 3 }, %String* %v4 - %"$gasrem_3878" = load i64, i64* @_gasrem - %"$gascmp_3879" = icmp ugt i64 1, %"$gasrem_3878" - br i1 %"$gascmp_3879", label %"$out_of_gas_3880", label %"$have_gas_3881" + %v3 = alloca %String + %"$gasrem_3877" = load i64, i64* @_gasrem + %"$gascmp_3878" = icmp ugt i64 1, %"$gasrem_3877" + br i1 %"$gascmp_3878", label %"$out_of_gas_3879", label %"$have_gas_3880" -"$out_of_gas_3880": ; preds = %"$have_gas_3875" +"$out_of_gas_3879": ; preds = %"$have_gas_3875" call void @_out_of_gas() - br label %"$have_gas_3881" + br label %"$have_gas_3880" -"$have_gas_3881": ; preds = %"$out_of_gas_3880", %"$have_gas_3875" - %"$consume_3882" = sub i64 %"$gasrem_3878", 1 - store i64 %"$consume_3882", i64* @_gasrem - %b1 = alloca %TName_Bool* +"$have_gas_3880": ; preds = %"$out_of_gas_3879", %"$have_gas_3875" + %"$consume_3881" = sub i64 %"$gasrem_3877", 1 + store i64 %"$consume_3881", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3882", i32 0, i32 0), i32 3 }, %String* %v3 %"$gasrem_3883" = load i64, i64* @_gasrem - %"$gascmp_3884" = icmp ugt i64 2, %"$gasrem_3883" + %"$gascmp_3884" = icmp ugt i64 1, %"$gasrem_3883" br i1 %"$gascmp_3884", label %"$out_of_gas_3885", label %"$have_gas_3886" -"$out_of_gas_3885": ; preds = %"$have_gas_3881" +"$out_of_gas_3885": ; preds = %"$have_gas_3880" call void @_out_of_gas() br label %"$have_gas_3886" -"$have_gas_3886": ; preds = %"$out_of_gas_3885", %"$have_gas_3881" - %"$consume_3887" = sub i64 %"$gasrem_3883", 2 +"$have_gas_3886": ; preds = %"$out_of_gas_3885", %"$have_gas_3880" + %"$consume_3887" = sub i64 %"$gasrem_3883", 1 store i64 %"$consume_3887", i64* @_gasrem - %"$t1_3889" = load %TName_Option_String*, %TName_Option_String** %t1 - %"$t1_tag_3890" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$t1_3889", i32 0, i32 0 - %"$t1_tag_3891" = load i8, i8* %"$t1_tag_3890" - switch i8 %"$t1_tag_3891", label %"$empty_default_3892" [ - i8 0, label %"$Some_3893" - i8 1, label %"$None_3901" + %v4 = alloca %String + %"$gasrem_3888" = load i64, i64* @_gasrem + %"$gascmp_3889" = icmp ugt i64 1, %"$gasrem_3888" + br i1 %"$gascmp_3889", label %"$out_of_gas_3890", label %"$have_gas_3891" + +"$out_of_gas_3890": ; preds = %"$have_gas_3886" + call void @_out_of_gas() + br label %"$have_gas_3891" + +"$have_gas_3891": ; preds = %"$out_of_gas_3890", %"$have_gas_3886" + %"$consume_3892" = sub i64 %"$gasrem_3888", 1 + store i64 %"$consume_3892", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_3893", i32 0, i32 0), i32 3 }, %String* %v4 + %"$gasrem_3894" = load i64, i64* @_gasrem + %"$gascmp_3895" = icmp ugt i64 1, %"$gasrem_3894" + br i1 %"$gascmp_3895", label %"$out_of_gas_3896", label %"$have_gas_3897" + +"$out_of_gas_3896": ; preds = %"$have_gas_3891" + call void @_out_of_gas() + br label %"$have_gas_3897" + +"$have_gas_3897": ; preds = %"$out_of_gas_3896", %"$have_gas_3891" + %"$consume_3898" = sub i64 %"$gasrem_3894", 1 + store i64 %"$consume_3898", i64* @_gasrem + %b1 = alloca %TName_Bool* + %"$gasrem_3899" = load i64, i64* @_gasrem + %"$gascmp_3900" = icmp ugt i64 2, %"$gasrem_3899" + br i1 %"$gascmp_3900", label %"$out_of_gas_3901", label %"$have_gas_3902" + +"$out_of_gas_3901": ; preds = %"$have_gas_3897" + call void @_out_of_gas() + br label %"$have_gas_3902" + +"$have_gas_3902": ; preds = %"$out_of_gas_3901", %"$have_gas_3897" + %"$consume_3903" = sub i64 %"$gasrem_3899", 2 + store i64 %"$consume_3903", i64* @_gasrem + %"$t1_3905" = load %TName_Option_String*, %TName_Option_String** %t1 + %"$t1_tag_3906" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$t1_3905", i32 0, i32 0 + %"$t1_tag_3907" = load i8, i8* %"$t1_tag_3906" + switch i8 %"$t1_tag_3907", label %"$empty_default_3908" [ + i8 0, label %"$Some_3909" + i8 1, label %"$None_3917" ] -"$Some_3893": ; preds = %"$have_gas_3886" - %"$t1_3894" = bitcast %TName_Option_String* %"$t1_3889" to %CName_Some_String* - %"$t1v_gep_3895" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$t1_3894", i32 0, i32 1 - %"$t1v_load_3896" = load %String, %String* %"$t1v_gep_3895" +"$Some_3909": ; preds = %"$have_gas_3902" + %"$t1_3910" = bitcast %TName_Option_String* %"$t1_3905" to %CName_Some_String* + %"$t1v_gep_3911" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$t1_3910", i32 0, i32 1 + %"$t1v_load_3912" = load %String, %String* %"$t1v_gep_3911" %t1v = alloca %String - store %String %"$t1v_load_3896", %String* %t1v - %"$execptr_load_3897" = load i8*, i8** @_execptr - %"$t1v_3898" = load %String, %String* %t1v - %"$v1_3899" = load %String, %String* %v1 - %"$eq_call_3900" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_3897", %String %"$t1v_3898", %String %"$v1_3899") - store %TName_Bool* %"$eq_call_3900", %TName_Bool** %b1 - br label %"$matchsucc_3888" - -"$None_3901": ; preds = %"$have_gas_3886" - %"$t1_3902" = bitcast %TName_Option_String* %"$t1_3889" to %CName_None_String* - %"$gasrem_3903" = load i64, i64* @_gasrem - %"$gascmp_3904" = icmp ugt i64 1, %"$gasrem_3903" - br i1 %"$gascmp_3904", label %"$out_of_gas_3905", label %"$have_gas_3906" - -"$out_of_gas_3905": ; preds = %"$None_3901" - call void @_out_of_gas() - br label %"$have_gas_3906" - -"$have_gas_3906": ; preds = %"$out_of_gas_3905", %"$None_3901" - %"$consume_3907" = sub i64 %"$gasrem_3903", 1 - store i64 %"$consume_3907", i64* @_gasrem - %"$adtval_3908_load" = load i8*, i8** @_execptr - %"$adtval_3908_salloc" = call i8* @_salloc(i8* %"$adtval_3908_load", i64 1) - %"$adtval_3908" = bitcast i8* %"$adtval_3908_salloc" to %CName_False* - %"$adtgep_3909" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_3908", i32 0, i32 0 - store i8 1, i8* %"$adtgep_3909" - %"$adtptr_3910" = bitcast %CName_False* %"$adtval_3908" to %TName_Bool* - store %TName_Bool* %"$adtptr_3910", %TName_Bool** %b1 - br label %"$matchsucc_3888" - -"$empty_default_3892": ; preds = %"$have_gas_3886" - br label %"$matchsucc_3888" - -"$matchsucc_3888": ; preds = %"$have_gas_3906", %"$Some_3893", %"$empty_default_3892" - %"$gasrem_3911" = load i64, i64* @_gasrem - %"$gascmp_3912" = icmp ugt i64 1, %"$gasrem_3911" - br i1 %"$gascmp_3912", label %"$out_of_gas_3913", label %"$have_gas_3914" - -"$out_of_gas_3913": ; preds = %"$matchsucc_3888" - call void @_out_of_gas() - br label %"$have_gas_3914" - -"$have_gas_3914": ; preds = %"$out_of_gas_3913", %"$matchsucc_3888" - %"$consume_3915" = sub i64 %"$gasrem_3911", 1 - store i64 %"$consume_3915", i64* @_gasrem + store %String %"$t1v_load_3912", %String* %t1v + %"$execptr_load_3913" = load i8*, i8** @_execptr + %"$t1v_3914" = load %String, %String* %t1v + %"$v1_3915" = load %String, %String* %v1 + %"$eq_call_3916" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_3913", %String %"$t1v_3914", %String %"$v1_3915") + store %TName_Bool* %"$eq_call_3916", %TName_Bool** %b1 + br label %"$matchsucc_3904" + +"$None_3917": ; preds = %"$have_gas_3902" + %"$t1_3918" = bitcast %TName_Option_String* %"$t1_3905" to %CName_None_String* + %"$gasrem_3919" = load i64, i64* @_gasrem + %"$gascmp_3920" = icmp ugt i64 1, %"$gasrem_3919" + br i1 %"$gascmp_3920", label %"$out_of_gas_3921", label %"$have_gas_3922" + +"$out_of_gas_3921": ; preds = %"$None_3917" + call void @_out_of_gas() + br label %"$have_gas_3922" + +"$have_gas_3922": ; preds = %"$out_of_gas_3921", %"$None_3917" + %"$consume_3923" = sub i64 %"$gasrem_3919", 1 + store i64 %"$consume_3923", i64* @_gasrem + %"$adtval_3924_load" = load i8*, i8** @_execptr + %"$adtval_3924_salloc" = call i8* @_salloc(i8* %"$adtval_3924_load", i64 1) + %"$adtval_3924" = bitcast i8* %"$adtval_3924_salloc" to %CName_False* + %"$adtgep_3925" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_3924", i32 0, i32 0 + store i8 1, i8* %"$adtgep_3925" + %"$adtptr_3926" = bitcast %CName_False* %"$adtval_3924" to %TName_Bool* + store %TName_Bool* %"$adtptr_3926", %TName_Bool** %b1 + br label %"$matchsucc_3904" + +"$empty_default_3908": ; preds = %"$have_gas_3902" + br label %"$matchsucc_3904" + +"$matchsucc_3904": ; preds = %"$have_gas_3922", %"$Some_3909", %"$empty_default_3908" + %"$gasrem_3927" = load i64, i64* @_gasrem + %"$gascmp_3928" = icmp ugt i64 1, %"$gasrem_3927" + br i1 %"$gascmp_3928", label %"$out_of_gas_3929", label %"$have_gas_3930" + +"$out_of_gas_3929": ; preds = %"$matchsucc_3904" + call void @_out_of_gas() + br label %"$have_gas_3930" + +"$have_gas_3930": ; preds = %"$out_of_gas_3929", %"$matchsucc_3904" + %"$consume_3931" = sub i64 %"$gasrem_3927", 1 + store i64 %"$consume_3931", i64* @_gasrem %b2 = alloca %TName_Bool* - %"$gasrem_3916" = load i64, i64* @_gasrem - %"$gascmp_3917" = icmp ugt i64 2, %"$gasrem_3916" - br i1 %"$gascmp_3917", label %"$out_of_gas_3918", label %"$have_gas_3919" - -"$out_of_gas_3918": ; preds = %"$have_gas_3914" - call void @_out_of_gas() - br label %"$have_gas_3919" - -"$have_gas_3919": ; preds = %"$out_of_gas_3918", %"$have_gas_3914" - %"$consume_3920" = sub i64 %"$gasrem_3916", 2 - store i64 %"$consume_3920", i64* @_gasrem - %"$t2_3922" = load %TName_Option_String*, %TName_Option_String** %t2 - %"$t2_tag_3923" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$t2_3922", i32 0, i32 0 - %"$t2_tag_3924" = load i8, i8* %"$t2_tag_3923" - switch i8 %"$t2_tag_3924", label %"$empty_default_3925" [ - i8 0, label %"$Some_3926" - i8 1, label %"$None_3934" + %"$gasrem_3932" = load i64, i64* @_gasrem + %"$gascmp_3933" = icmp ugt i64 2, %"$gasrem_3932" + br i1 %"$gascmp_3933", label %"$out_of_gas_3934", label %"$have_gas_3935" + +"$out_of_gas_3934": ; preds = %"$have_gas_3930" + call void @_out_of_gas() + br label %"$have_gas_3935" + +"$have_gas_3935": ; preds = %"$out_of_gas_3934", %"$have_gas_3930" + %"$consume_3936" = sub i64 %"$gasrem_3932", 2 + store i64 %"$consume_3936", i64* @_gasrem + %"$t2_3938" = load %TName_Option_String*, %TName_Option_String** %t2 + %"$t2_tag_3939" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$t2_3938", i32 0, i32 0 + %"$t2_tag_3940" = load i8, i8* %"$t2_tag_3939" + switch i8 %"$t2_tag_3940", label %"$empty_default_3941" [ + i8 0, label %"$Some_3942" + i8 1, label %"$None_3950" ] -"$Some_3926": ; preds = %"$have_gas_3919" - %"$t2_3927" = bitcast %TName_Option_String* %"$t2_3922" to %CName_Some_String* - %"$t2v_gep_3928" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$t2_3927", i32 0, i32 1 - %"$t2v_load_3929" = load %String, %String* %"$t2v_gep_3928" +"$Some_3942": ; preds = %"$have_gas_3935" + %"$t2_3943" = bitcast %TName_Option_String* %"$t2_3938" to %CName_Some_String* + %"$t2v_gep_3944" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$t2_3943", i32 0, i32 1 + %"$t2v_load_3945" = load %String, %String* %"$t2v_gep_3944" %t2v = alloca %String - store %String %"$t2v_load_3929", %String* %t2v - %"$execptr_load_3930" = load i8*, i8** @_execptr - %"$t2v_3931" = load %String, %String* %t2v - %"$v2_3932" = load %String, %String* %v2 - %"$eq_call_3933" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_3930", %String %"$t2v_3931", %String %"$v2_3932") - store %TName_Bool* %"$eq_call_3933", %TName_Bool** %b2 - br label %"$matchsucc_3921" - -"$None_3934": ; preds = %"$have_gas_3919" - %"$t2_3935" = bitcast %TName_Option_String* %"$t2_3922" to %CName_None_String* - %"$gasrem_3936" = load i64, i64* @_gasrem - %"$gascmp_3937" = icmp ugt i64 1, %"$gasrem_3936" - br i1 %"$gascmp_3937", label %"$out_of_gas_3938", label %"$have_gas_3939" - -"$out_of_gas_3938": ; preds = %"$None_3934" - call void @_out_of_gas() - br label %"$have_gas_3939" - -"$have_gas_3939": ; preds = %"$out_of_gas_3938", %"$None_3934" - %"$consume_3940" = sub i64 %"$gasrem_3936", 1 - store i64 %"$consume_3940", i64* @_gasrem - %"$adtval_3941_load" = load i8*, i8** @_execptr - %"$adtval_3941_salloc" = call i8* @_salloc(i8* %"$adtval_3941_load", i64 1) - %"$adtval_3941" = bitcast i8* %"$adtval_3941_salloc" to %CName_False* - %"$adtgep_3942" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_3941", i32 0, i32 0 - store i8 1, i8* %"$adtgep_3942" - %"$adtptr_3943" = bitcast %CName_False* %"$adtval_3941" to %TName_Bool* - store %TName_Bool* %"$adtptr_3943", %TName_Bool** %b2 - br label %"$matchsucc_3921" - -"$empty_default_3925": ; preds = %"$have_gas_3919" - br label %"$matchsucc_3921" - -"$matchsucc_3921": ; preds = %"$have_gas_3939", %"$Some_3926", %"$empty_default_3925" - %"$gasrem_3944" = load i64, i64* @_gasrem - %"$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 = %"$matchsucc_3921" - call void @_out_of_gas() - br label %"$have_gas_3947" - -"$have_gas_3947": ; preds = %"$out_of_gas_3946", %"$matchsucc_3921" - %"$consume_3948" = sub i64 %"$gasrem_3944", 1 - store i64 %"$consume_3948", i64* @_gasrem + store %String %"$t2v_load_3945", %String* %t2v + %"$execptr_load_3946" = load i8*, i8** @_execptr + %"$t2v_3947" = load %String, %String* %t2v + %"$v2_3948" = load %String, %String* %v2 + %"$eq_call_3949" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_3946", %String %"$t2v_3947", %String %"$v2_3948") + store %TName_Bool* %"$eq_call_3949", %TName_Bool** %b2 + br label %"$matchsucc_3937" + +"$None_3950": ; preds = %"$have_gas_3935" + %"$t2_3951" = bitcast %TName_Option_String* %"$t2_3938" to %CName_None_String* + %"$gasrem_3952" = load i64, i64* @_gasrem + %"$gascmp_3953" = icmp ugt i64 1, %"$gasrem_3952" + br i1 %"$gascmp_3953", label %"$out_of_gas_3954", label %"$have_gas_3955" + +"$out_of_gas_3954": ; preds = %"$None_3950" + call void @_out_of_gas() + br label %"$have_gas_3955" + +"$have_gas_3955": ; preds = %"$out_of_gas_3954", %"$None_3950" + %"$consume_3956" = sub i64 %"$gasrem_3952", 1 + store i64 %"$consume_3956", i64* @_gasrem + %"$adtval_3957_load" = load i8*, i8** @_execptr + %"$adtval_3957_salloc" = call i8* @_salloc(i8* %"$adtval_3957_load", i64 1) + %"$adtval_3957" = bitcast i8* %"$adtval_3957_salloc" to %CName_False* + %"$adtgep_3958" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_3957", i32 0, i32 0 + store i8 1, i8* %"$adtgep_3958" + %"$adtptr_3959" = bitcast %CName_False* %"$adtval_3957" to %TName_Bool* + store %TName_Bool* %"$adtptr_3959", %TName_Bool** %b2 + br label %"$matchsucc_3937" + +"$empty_default_3941": ; preds = %"$have_gas_3935" + br label %"$matchsucc_3937" + +"$matchsucc_3937": ; preds = %"$have_gas_3955", %"$Some_3942", %"$empty_default_3941" + %"$gasrem_3960" = load i64, i64* @_gasrem + %"$gascmp_3961" = icmp ugt i64 1, %"$gasrem_3960" + br i1 %"$gascmp_3961", label %"$out_of_gas_3962", label %"$have_gas_3963" + +"$out_of_gas_3962": ; preds = %"$matchsucc_3937" + call void @_out_of_gas() + br label %"$have_gas_3963" + +"$have_gas_3963": ; preds = %"$out_of_gas_3962", %"$matchsucc_3937" + %"$consume_3964" = sub i64 %"$gasrem_3960", 1 + store i64 %"$consume_3964", i64* @_gasrem %b3 = alloca %TName_Bool* - %"$gasrem_3949" = load i64, i64* @_gasrem - %"$gascmp_3950" = icmp ugt i64 2, %"$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", 2 - store i64 %"$consume_3953", i64* @_gasrem - %"$t3_3955" = load %TName_Option_String*, %TName_Option_String** %t3 - %"$t3_tag_3956" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$t3_3955", i32 0, i32 0 - %"$t3_tag_3957" = load i8, i8* %"$t3_tag_3956" - switch i8 %"$t3_tag_3957", label %"$empty_default_3958" [ - i8 0, label %"$Some_3959" - i8 1, label %"$None_3967" + %"$gasrem_3965" = load i64, i64* @_gasrem + %"$gascmp_3966" = icmp ugt i64 2, %"$gasrem_3965" + br i1 %"$gascmp_3966", label %"$out_of_gas_3967", label %"$have_gas_3968" + +"$out_of_gas_3967": ; preds = %"$have_gas_3963" + call void @_out_of_gas() + br label %"$have_gas_3968" + +"$have_gas_3968": ; preds = %"$out_of_gas_3967", %"$have_gas_3963" + %"$consume_3969" = sub i64 %"$gasrem_3965", 2 + store i64 %"$consume_3969", i64* @_gasrem + %"$t3_3971" = load %TName_Option_String*, %TName_Option_String** %t3 + %"$t3_tag_3972" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$t3_3971", i32 0, i32 0 + %"$t3_tag_3973" = load i8, i8* %"$t3_tag_3972" + switch i8 %"$t3_tag_3973", label %"$empty_default_3974" [ + i8 0, label %"$Some_3975" + i8 1, label %"$None_3983" ] -"$Some_3959": ; preds = %"$have_gas_3952" - %"$t3_3960" = bitcast %TName_Option_String* %"$t3_3955" to %CName_Some_String* - %"$t3v_gep_3961" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$t3_3960", i32 0, i32 1 - %"$t3v_load_3962" = load %String, %String* %"$t3v_gep_3961" +"$Some_3975": ; preds = %"$have_gas_3968" + %"$t3_3976" = bitcast %TName_Option_String* %"$t3_3971" to %CName_Some_String* + %"$t3v_gep_3977" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$t3_3976", i32 0, i32 1 + %"$t3v_load_3978" = load %String, %String* %"$t3v_gep_3977" %t3v = alloca %String - store %String %"$t3v_load_3962", %String* %t3v - %"$execptr_load_3963" = load i8*, i8** @_execptr - %"$t3v_3964" = load %String, %String* %t3v - %"$v3_3965" = load %String, %String* %v3 - %"$eq_call_3966" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_3963", %String %"$t3v_3964", %String %"$v3_3965") - store %TName_Bool* %"$eq_call_3966", %TName_Bool** %b3 - br label %"$matchsucc_3954" - -"$None_3967": ; preds = %"$have_gas_3952" - %"$t3_3968" = bitcast %TName_Option_String* %"$t3_3955" to %CName_None_String* - %"$gasrem_3969" = load i64, i64* @_gasrem - %"$gascmp_3970" = icmp ugt i64 1, %"$gasrem_3969" - br i1 %"$gascmp_3970", label %"$out_of_gas_3971", label %"$have_gas_3972" - -"$out_of_gas_3971": ; preds = %"$None_3967" - call void @_out_of_gas() - br label %"$have_gas_3972" - -"$have_gas_3972": ; preds = %"$out_of_gas_3971", %"$None_3967" - %"$consume_3973" = sub i64 %"$gasrem_3969", 1 - store i64 %"$consume_3973", i64* @_gasrem - %"$adtval_3974_load" = load i8*, i8** @_execptr - %"$adtval_3974_salloc" = call i8* @_salloc(i8* %"$adtval_3974_load", i64 1) - %"$adtval_3974" = bitcast i8* %"$adtval_3974_salloc" to %CName_False* - %"$adtgep_3975" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_3974", i32 0, i32 0 - store i8 1, i8* %"$adtgep_3975" - %"$adtptr_3976" = bitcast %CName_False* %"$adtval_3974" to %TName_Bool* - store %TName_Bool* %"$adtptr_3976", %TName_Bool** %b3 - br label %"$matchsucc_3954" - -"$empty_default_3958": ; preds = %"$have_gas_3952" - br label %"$matchsucc_3954" - -"$matchsucc_3954": ; preds = %"$have_gas_3972", %"$Some_3959", %"$empty_default_3958" - %"$gasrem_3977" = load i64, i64* @_gasrem - %"$gascmp_3978" = icmp ugt i64 1, %"$gasrem_3977" - br i1 %"$gascmp_3978", label %"$out_of_gas_3979", label %"$have_gas_3980" - -"$out_of_gas_3979": ; preds = %"$matchsucc_3954" - call void @_out_of_gas() - br label %"$have_gas_3980" - -"$have_gas_3980": ; preds = %"$out_of_gas_3979", %"$matchsucc_3954" - %"$consume_3981" = sub i64 %"$gasrem_3977", 1 - store i64 %"$consume_3981", i64* @_gasrem + store %String %"$t3v_load_3978", %String* %t3v + %"$execptr_load_3979" = load i8*, i8** @_execptr + %"$t3v_3980" = load %String, %String* %t3v + %"$v3_3981" = load %String, %String* %v3 + %"$eq_call_3982" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_3979", %String %"$t3v_3980", %String %"$v3_3981") + store %TName_Bool* %"$eq_call_3982", %TName_Bool** %b3 + br label %"$matchsucc_3970" + +"$None_3983": ; preds = %"$have_gas_3968" + %"$t3_3984" = bitcast %TName_Option_String* %"$t3_3971" to %CName_None_String* + %"$gasrem_3985" = load i64, i64* @_gasrem + %"$gascmp_3986" = icmp ugt i64 1, %"$gasrem_3985" + br i1 %"$gascmp_3986", label %"$out_of_gas_3987", label %"$have_gas_3988" + +"$out_of_gas_3987": ; preds = %"$None_3983" + call void @_out_of_gas() + br label %"$have_gas_3988" + +"$have_gas_3988": ; preds = %"$out_of_gas_3987", %"$None_3983" + %"$consume_3989" = sub i64 %"$gasrem_3985", 1 + store i64 %"$consume_3989", i64* @_gasrem + %"$adtval_3990_load" = load i8*, i8** @_execptr + %"$adtval_3990_salloc" = call i8* @_salloc(i8* %"$adtval_3990_load", i64 1) + %"$adtval_3990" = bitcast i8* %"$adtval_3990_salloc" to %CName_False* + %"$adtgep_3991" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_3990", i32 0, i32 0 + store i8 1, i8* %"$adtgep_3991" + %"$adtptr_3992" = bitcast %CName_False* %"$adtval_3990" to %TName_Bool* + store %TName_Bool* %"$adtptr_3992", %TName_Bool** %b3 + br label %"$matchsucc_3970" + +"$empty_default_3974": ; preds = %"$have_gas_3968" + br label %"$matchsucc_3970" + +"$matchsucc_3970": ; preds = %"$have_gas_3988", %"$Some_3975", %"$empty_default_3974" + %"$gasrem_3993" = load i64, i64* @_gasrem + %"$gascmp_3994" = icmp ugt i64 1, %"$gasrem_3993" + br i1 %"$gascmp_3994", label %"$out_of_gas_3995", label %"$have_gas_3996" + +"$out_of_gas_3995": ; preds = %"$matchsucc_3970" + call void @_out_of_gas() + br label %"$have_gas_3996" + +"$have_gas_3996": ; preds = %"$out_of_gas_3995", %"$matchsucc_3970" + %"$consume_3997" = sub i64 %"$gasrem_3993", 1 + store i64 %"$consume_3997", i64* @_gasrem %b4 = alloca %TName_Bool* - %"$gasrem_3982" = load i64, i64* @_gasrem - %"$gascmp_3983" = icmp ugt i64 2, %"$gasrem_3982" - br i1 %"$gascmp_3983", label %"$out_of_gas_3984", label %"$have_gas_3985" - -"$out_of_gas_3984": ; preds = %"$have_gas_3980" - call void @_out_of_gas() - br label %"$have_gas_3985" - -"$have_gas_3985": ; preds = %"$out_of_gas_3984", %"$have_gas_3980" - %"$consume_3986" = sub i64 %"$gasrem_3982", 2 - store i64 %"$consume_3986", i64* @_gasrem - %"$t4_3988" = load %TName_Option_String*, %TName_Option_String** %t4 - %"$t4_tag_3989" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$t4_3988", i32 0, i32 0 - %"$t4_tag_3990" = load i8, i8* %"$t4_tag_3989" - switch i8 %"$t4_tag_3990", label %"$empty_default_3991" [ - i8 0, label %"$Some_3992" - i8 1, label %"$None_4000" + %"$gasrem_3998" = load i64, i64* @_gasrem + %"$gascmp_3999" = icmp ugt i64 2, %"$gasrem_3998" + br i1 %"$gascmp_3999", label %"$out_of_gas_4000", label %"$have_gas_4001" + +"$out_of_gas_4000": ; preds = %"$have_gas_3996" + call void @_out_of_gas() + br label %"$have_gas_4001" + +"$have_gas_4001": ; preds = %"$out_of_gas_4000", %"$have_gas_3996" + %"$consume_4002" = sub i64 %"$gasrem_3998", 2 + store i64 %"$consume_4002", i64* @_gasrem + %"$t4_4004" = load %TName_Option_String*, %TName_Option_String** %t4 + %"$t4_tag_4005" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$t4_4004", i32 0, i32 0 + %"$t4_tag_4006" = load i8, i8* %"$t4_tag_4005" + switch i8 %"$t4_tag_4006", label %"$empty_default_4007" [ + i8 0, label %"$Some_4008" + i8 1, label %"$None_4016" ] -"$Some_3992": ; preds = %"$have_gas_3985" - %"$t4_3993" = bitcast %TName_Option_String* %"$t4_3988" to %CName_Some_String* - %"$t4v_gep_3994" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$t4_3993", i32 0, i32 1 - %"$t4v_load_3995" = load %String, %String* %"$t4v_gep_3994" +"$Some_4008": ; preds = %"$have_gas_4001" + %"$t4_4009" = bitcast %TName_Option_String* %"$t4_4004" to %CName_Some_String* + %"$t4v_gep_4010" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$t4_4009", i32 0, i32 1 + %"$t4v_load_4011" = load %String, %String* %"$t4v_gep_4010" %t4v = alloca %String - store %String %"$t4v_load_3995", %String* %t4v - %"$execptr_load_3996" = load i8*, i8** @_execptr - %"$t4v_3997" = load %String, %String* %t4v - %"$v4_3998" = load %String, %String* %v4 - %"$eq_call_3999" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_3996", %String %"$t4v_3997", %String %"$v4_3998") - store %TName_Bool* %"$eq_call_3999", %TName_Bool** %b4 - br label %"$matchsucc_3987" - -"$None_4000": ; preds = %"$have_gas_3985" - %"$t4_4001" = bitcast %TName_Option_String* %"$t4_3988" to %CName_None_String* - %"$gasrem_4002" = load i64, i64* @_gasrem - %"$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 = %"$None_4000" - call void @_out_of_gas() - br label %"$have_gas_4005" - -"$have_gas_4005": ; preds = %"$out_of_gas_4004", %"$None_4000" - %"$consume_4006" = sub i64 %"$gasrem_4002", 1 - store i64 %"$consume_4006", i64* @_gasrem - %"$adtval_4007_load" = load i8*, i8** @_execptr - %"$adtval_4007_salloc" = call i8* @_salloc(i8* %"$adtval_4007_load", i64 1) - %"$adtval_4007" = bitcast i8* %"$adtval_4007_salloc" to %CName_False* - %"$adtgep_4008" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_4007", i32 0, i32 0 - store i8 1, i8* %"$adtgep_4008" - %"$adtptr_4009" = bitcast %CName_False* %"$adtval_4007" to %TName_Bool* - store %TName_Bool* %"$adtptr_4009", %TName_Bool** %b4 - br label %"$matchsucc_3987" - -"$empty_default_3991": ; preds = %"$have_gas_3985" - br label %"$matchsucc_3987" - -"$matchsucc_3987": ; preds = %"$have_gas_4005", %"$Some_3992", %"$empty_default_3991" - %"$gasrem_4010" = load i64, i64* @_gasrem - %"$gascmp_4011" = icmp ugt i64 1, %"$gasrem_4010" - br i1 %"$gascmp_4011", label %"$out_of_gas_4012", label %"$have_gas_4013" - -"$out_of_gas_4012": ; preds = %"$matchsucc_3987" - call void @_out_of_gas() - br label %"$have_gas_4013" - -"$have_gas_4013": ; preds = %"$out_of_gas_4012", %"$matchsucc_3987" - %"$consume_4014" = sub i64 %"$gasrem_4010", 1 - store i64 %"$consume_4014", i64* @_gasrem + store %String %"$t4v_load_4011", %String* %t4v + %"$execptr_load_4012" = load i8*, i8** @_execptr + %"$t4v_4013" = load %String, %String* %t4v + %"$v4_4014" = load %String, %String* %v4 + %"$eq_call_4015" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_4012", %String %"$t4v_4013", %String %"$v4_4014") + store %TName_Bool* %"$eq_call_4015", %TName_Bool** %b4 + br label %"$matchsucc_4003" + +"$None_4016": ; preds = %"$have_gas_4001" + %"$t4_4017" = bitcast %TName_Option_String* %"$t4_4004" to %CName_None_String* + %"$gasrem_4018" = load i64, i64* @_gasrem + %"$gascmp_4019" = icmp ugt i64 1, %"$gasrem_4018" + br i1 %"$gascmp_4019", label %"$out_of_gas_4020", label %"$have_gas_4021" + +"$out_of_gas_4020": ; preds = %"$None_4016" + call void @_out_of_gas() + br label %"$have_gas_4021" + +"$have_gas_4021": ; preds = %"$out_of_gas_4020", %"$None_4016" + %"$consume_4022" = sub i64 %"$gasrem_4018", 1 + store i64 %"$consume_4022", i64* @_gasrem + %"$adtval_4023_load" = load i8*, i8** @_execptr + %"$adtval_4023_salloc" = call i8* @_salloc(i8* %"$adtval_4023_load", i64 1) + %"$adtval_4023" = bitcast i8* %"$adtval_4023_salloc" to %CName_False* + %"$adtgep_4024" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_4023", i32 0, i32 0 + store i8 1, i8* %"$adtgep_4024" + %"$adtptr_4025" = bitcast %CName_False* %"$adtval_4023" to %TName_Bool* + store %TName_Bool* %"$adtptr_4025", %TName_Bool** %b4 + br label %"$matchsucc_4003" + +"$empty_default_4007": ; preds = %"$have_gas_4001" + br label %"$matchsucc_4003" + +"$matchsucc_4003": ; preds = %"$have_gas_4021", %"$Some_4008", %"$empty_default_4007" + %"$gasrem_4026" = load i64, i64* @_gasrem + %"$gascmp_4027" = icmp ugt i64 1, %"$gasrem_4026" + br i1 %"$gascmp_4027", label %"$out_of_gas_4028", label %"$have_gas_4029" + +"$out_of_gas_4028": ; preds = %"$matchsucc_4003" + call void @_out_of_gas() + br label %"$have_gas_4029" + +"$have_gas_4029": ; preds = %"$out_of_gas_4028", %"$matchsucc_4003" + %"$consume_4030" = sub i64 %"$gasrem_4026", 1 + store i64 %"$consume_4030", i64* @_gasrem %b = alloca %TName_Bool* - %"$gasrem_4015" = load i64, i64* @_gasrem - %"$gascmp_4016" = icmp ugt i64 1, %"$gasrem_4015" - br i1 %"$gascmp_4016", label %"$out_of_gas_4017", label %"$have_gas_4018" + %"$gasrem_4031" = load i64, i64* @_gasrem + %"$gascmp_4032" = icmp ugt i64 1, %"$gasrem_4031" + br i1 %"$gascmp_4032", label %"$out_of_gas_4033", label %"$have_gas_4034" -"$out_of_gas_4017": ; preds = %"$have_gas_4013" +"$out_of_gas_4033": ; preds = %"$have_gas_4029" call void @_out_of_gas() - br label %"$have_gas_4018" + br label %"$have_gas_4034" -"$have_gas_4018": ; preds = %"$out_of_gas_4017", %"$have_gas_4013" - %"$consume_4019" = sub i64 %"$gasrem_4015", 1 - store i64 %"$consume_4019", i64* @_gasrem +"$have_gas_4034": ; preds = %"$out_of_gas_4033", %"$have_gas_4029" + %"$consume_4035" = sub i64 %"$gasrem_4031", 1 + store i64 %"$consume_4035", i64* @_gasrem %a1 = alloca %TName_Bool* - %"$gasrem_4020" = load i64, i64* @_gasrem - %"$gascmp_4021" = icmp ugt i64 1, %"$gasrem_4020" - br i1 %"$gascmp_4021", label %"$out_of_gas_4022", label %"$have_gas_4023" - -"$out_of_gas_4022": ; preds = %"$have_gas_4018" - call void @_out_of_gas() - br label %"$have_gas_4023" - -"$have_gas_4023": ; preds = %"$out_of_gas_4022", %"$have_gas_4018" - %"$consume_4024" = sub i64 %"$gasrem_4020", 1 - store i64 %"$consume_4024", i64* @_gasrem - %"$andb_16" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$andb_4025" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb - %"$andb_fptr_4026" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_4025", 0 - %"$andb_envptr_4027" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_4025", 1 - %"$b1_4028" = load %TName_Bool*, %TName_Bool** %b1 - %"$andb_call_4029" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_4026"(i8* %"$andb_envptr_4027", %TName_Bool* %"$b1_4028") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_4029", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_16" - %"$andb_17" = alloca %TName_Bool* - %"$$andb_16_4030" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_16" - %"$$andb_16_fptr_4031" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_16_4030", 0 - %"$$andb_16_envptr_4032" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_16_4030", 1 - %"$b2_4033" = load %TName_Bool*, %TName_Bool** %b2 - %"$$andb_16_call_4034" = call %TName_Bool* %"$$andb_16_fptr_4031"(i8* %"$$andb_16_envptr_4032", %TName_Bool* %"$b2_4033") - store %TName_Bool* %"$$andb_16_call_4034", %TName_Bool** %"$andb_17" - %"$$andb_17_4035" = load %TName_Bool*, %TName_Bool** %"$andb_17" - store %TName_Bool* %"$$andb_17_4035", %TName_Bool** %a1 %"$gasrem_4036" = load i64, i64* @_gasrem %"$gascmp_4037" = icmp ugt i64 1, %"$gasrem_4036" br i1 %"$gascmp_4037", label %"$out_of_gas_4038", label %"$have_gas_4039" -"$out_of_gas_4038": ; preds = %"$have_gas_4023" +"$out_of_gas_4038": ; preds = %"$have_gas_4034" call void @_out_of_gas() br label %"$have_gas_4039" -"$have_gas_4039": ; preds = %"$out_of_gas_4038", %"$have_gas_4023" +"$have_gas_4039": ; preds = %"$out_of_gas_4038", %"$have_gas_4034" %"$consume_4040" = sub i64 %"$gasrem_4036", 1 store i64 %"$consume_4040", i64* @_gasrem + %"$andb_16" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$andb_4041" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb + %"$andb_fptr_4042" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_4041", 0 + %"$andb_envptr_4043" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_4041", 1 + %"$b1_4044" = load %TName_Bool*, %TName_Bool** %b1 + %"$andb_call_4045" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_4042"(i8* %"$andb_envptr_4043", %TName_Bool* %"$b1_4044") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_4045", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_16" + %"$andb_17" = alloca %TName_Bool* + %"$$andb_16_4046" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_16" + %"$$andb_16_fptr_4047" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_16_4046", 0 + %"$$andb_16_envptr_4048" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_16_4046", 1 + %"$b2_4049" = load %TName_Bool*, %TName_Bool** %b2 + %"$$andb_16_call_4050" = call %TName_Bool* %"$$andb_16_fptr_4047"(i8* %"$$andb_16_envptr_4048", %TName_Bool* %"$b2_4049") + store %TName_Bool* %"$$andb_16_call_4050", %TName_Bool** %"$andb_17" + %"$$andb_17_4051" = load %TName_Bool*, %TName_Bool** %"$andb_17" + store %TName_Bool* %"$$andb_17_4051", %TName_Bool** %a1 + %"$gasrem_4052" = load i64, i64* @_gasrem + %"$gascmp_4053" = icmp ugt i64 1, %"$gasrem_4052" + br i1 %"$gascmp_4053", label %"$out_of_gas_4054", label %"$have_gas_4055" + +"$out_of_gas_4054": ; preds = %"$have_gas_4039" + call void @_out_of_gas() + br label %"$have_gas_4055" + +"$have_gas_4055": ; preds = %"$out_of_gas_4054", %"$have_gas_4039" + %"$consume_4056" = sub i64 %"$gasrem_4052", 1 + store i64 %"$consume_4056", i64* @_gasrem %a2 = alloca %TName_Bool* - %"$gasrem_4041" = load i64, i64* @_gasrem - %"$gascmp_4042" = icmp ugt i64 1, %"$gasrem_4041" - br i1 %"$gascmp_4042", label %"$out_of_gas_4043", label %"$have_gas_4044" - -"$out_of_gas_4043": ; preds = %"$have_gas_4039" - call void @_out_of_gas() - br label %"$have_gas_4044" - -"$have_gas_4044": ; preds = %"$out_of_gas_4043", %"$have_gas_4039" - %"$consume_4045" = sub i64 %"$gasrem_4041", 1 - store i64 %"$consume_4045", i64* @_gasrem - %"$andb_18" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } - %"$andb_4046" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb - %"$andb_fptr_4047" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_4046", 0 - %"$andb_envptr_4048" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_4046", 1 - %"$b3_4049" = load %TName_Bool*, %TName_Bool** %b3 - %"$andb_call_4050" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_4047"(i8* %"$andb_envptr_4048", %TName_Bool* %"$b3_4049") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_4050", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_18" - %"$andb_19" = alloca %TName_Bool* - %"$$andb_18_4051" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_18" - %"$$andb_18_fptr_4052" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_18_4051", 0 - %"$$andb_18_envptr_4053" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_18_4051", 1 - %"$b4_4054" = load %TName_Bool*, %TName_Bool** %b4 - %"$$andb_18_call_4055" = call %TName_Bool* %"$$andb_18_fptr_4052"(i8* %"$$andb_18_envptr_4053", %TName_Bool* %"$b4_4054") - store %TName_Bool* %"$$andb_18_call_4055", %TName_Bool** %"$andb_19" - %"$$andb_19_4056" = load %TName_Bool*, %TName_Bool** %"$andb_19" - store %TName_Bool* %"$$andb_19_4056", %TName_Bool** %a2 %"$gasrem_4057" = load i64, i64* @_gasrem %"$gascmp_4058" = icmp ugt i64 1, %"$gasrem_4057" br i1 %"$gascmp_4058", label %"$out_of_gas_4059", label %"$have_gas_4060" -"$out_of_gas_4059": ; preds = %"$have_gas_4044" +"$out_of_gas_4059": ; preds = %"$have_gas_4055" call void @_out_of_gas() br label %"$have_gas_4060" -"$have_gas_4060": ; preds = %"$out_of_gas_4059", %"$have_gas_4044" +"$have_gas_4060": ; preds = %"$out_of_gas_4059", %"$have_gas_4055" %"$consume_4061" = sub i64 %"$gasrem_4057", 1 store i64 %"$consume_4061", i64* @_gasrem - %"$andb_20" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$andb_18" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_4062" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb %"$andb_fptr_4063" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_4062", 0 %"$andb_envptr_4064" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_4062", 1 - %"$a1_4065" = load %TName_Bool*, %TName_Bool** %a1 - %"$andb_call_4066" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_4063"(i8* %"$andb_envptr_4064", %TName_Bool* %"$a1_4065") - store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_4066", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_20" - %"$andb_21" = alloca %TName_Bool* - %"$$andb_20_4067" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_20" - %"$$andb_20_fptr_4068" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_20_4067", 0 - %"$$andb_20_envptr_4069" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_20_4067", 1 - %"$a2_4070" = load %TName_Bool*, %TName_Bool** %a2 - %"$$andb_20_call_4071" = call %TName_Bool* %"$$andb_20_fptr_4068"(i8* %"$$andb_20_envptr_4069", %TName_Bool* %"$a2_4070") - store %TName_Bool* %"$$andb_20_call_4071", %TName_Bool** %"$andb_21" - %"$$andb_21_4072" = load %TName_Bool*, %TName_Bool** %"$andb_21" - store %TName_Bool* %"$$andb_21_4072", %TName_Bool** %b + %"$b3_4065" = load %TName_Bool*, %TName_Bool** %b3 + %"$andb_call_4066" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_4063"(i8* %"$andb_envptr_4064", %TName_Bool* %"$b3_4065") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_4066", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_18" + %"$andb_19" = alloca %TName_Bool* + %"$$andb_18_4067" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_18" + %"$$andb_18_fptr_4068" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_18_4067", 0 + %"$$andb_18_envptr_4069" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_18_4067", 1 + %"$b4_4070" = load %TName_Bool*, %TName_Bool** %b4 + %"$$andb_18_call_4071" = call %TName_Bool* %"$$andb_18_fptr_4068"(i8* %"$$andb_18_envptr_4069", %TName_Bool* %"$b4_4070") + store %TName_Bool* %"$$andb_18_call_4071", %TName_Bool** %"$andb_19" + %"$$andb_19_4072" = load %TName_Bool*, %TName_Bool** %"$andb_19" + store %TName_Bool* %"$$andb_19_4072", %TName_Bool** %a2 %"$gasrem_4073" = load i64, i64* @_gasrem - %"$gascmp_4074" = icmp ugt i64 2, %"$gasrem_4073" + %"$gascmp_4074" = icmp ugt i64 1, %"$gasrem_4073" br i1 %"$gascmp_4074", label %"$out_of_gas_4075", label %"$have_gas_4076" "$out_of_gas_4075": ; preds = %"$have_gas_4060" @@ -8351,91 +8350,82 @@ entry: br label %"$have_gas_4076" "$have_gas_4076": ; preds = %"$out_of_gas_4075", %"$have_gas_4060" - %"$consume_4077" = sub i64 %"$gasrem_4073", 2 + %"$consume_4077" = sub i64 %"$gasrem_4073", 1 store i64 %"$consume_4077", i64* @_gasrem - %"$b_4079" = load %TName_Bool*, %TName_Bool** %b - %"$b_tag_4080" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b_4079", i32 0, i32 0 - %"$b_tag_4081" = load i8, i8* %"$b_tag_4080" - switch i8 %"$b_tag_4081", label %"$empty_default_4082" [ - i8 0, label %"$True_4083" - i8 1, label %"$False_4085" + %"$andb_20" = alloca { %TName_Bool* (i8*, %TName_Bool*)*, i8* } + %"$andb_4078" = load { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }, { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* }* @andb + %"$andb_fptr_4079" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_4078", 0 + %"$andb_envptr_4080" = extractvalue { { %TName_Bool* (i8*, %TName_Bool*)*, i8* } (i8*, %TName_Bool*)*, i8* } %"$andb_4078", 1 + %"$a1_4081" = load %TName_Bool*, %TName_Bool** %a1 + %"$andb_call_4082" = call { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_fptr_4079"(i8* %"$andb_envptr_4080", %TName_Bool* %"$a1_4081") + store { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$andb_call_4082", { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_20" + %"$andb_21" = alloca %TName_Bool* + %"$$andb_20_4083" = load { %TName_Bool* (i8*, %TName_Bool*)*, i8* }, { %TName_Bool* (i8*, %TName_Bool*)*, i8* }* %"$andb_20" + %"$$andb_20_fptr_4084" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_20_4083", 0 + %"$$andb_20_envptr_4085" = extractvalue { %TName_Bool* (i8*, %TName_Bool*)*, i8* } %"$$andb_20_4083", 1 + %"$a2_4086" = load %TName_Bool*, %TName_Bool** %a2 + %"$$andb_20_call_4087" = call %TName_Bool* %"$$andb_20_fptr_4084"(i8* %"$$andb_20_envptr_4085", %TName_Bool* %"$a2_4086") + store %TName_Bool* %"$$andb_20_call_4087", %TName_Bool** %"$andb_21" + %"$$andb_21_4088" = load %TName_Bool*, %TName_Bool** %"$andb_21" + store %TName_Bool* %"$$andb_21_4088", %TName_Bool** %b + %"$gasrem_4089" = load i64, i64* @_gasrem + %"$gascmp_4090" = icmp ugt i64 2, %"$gasrem_4089" + br i1 %"$gascmp_4090", label %"$out_of_gas_4091", label %"$have_gas_4092" + +"$out_of_gas_4091": ; preds = %"$have_gas_4076" + call void @_out_of_gas() + br label %"$have_gas_4092" + +"$have_gas_4092": ; preds = %"$out_of_gas_4091", %"$have_gas_4076" + %"$consume_4093" = sub i64 %"$gasrem_4089", 2 + store i64 %"$consume_4093", i64* @_gasrem + %"$b_4095" = load %TName_Bool*, %TName_Bool** %b + %"$b_tag_4096" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$b_4095", i32 0, i32 0 + %"$b_tag_4097" = load i8, i8* %"$b_tag_4096" + switch i8 %"$b_tag_4097", label %"$empty_default_4098" [ + i8 0, label %"$True_4099" + i8 1, label %"$False_4101" ] -"$True_4083": ; preds = %"$have_gas_4076" - %"$b_4084" = bitcast %TName_Bool* %"$b_4079" to %CName_True* - br label %"$matchsucc_4078" - -"$False_4085": ; preds = %"$have_gas_4076" - %"$b_4086" = bitcast %TName_Bool* %"$b_4079" to %CName_False* - %"$gasrem_4087" = load i64, i64* @_gasrem - %"$gascmp_4088" = icmp ugt i64 1, %"$gasrem_4087" - br i1 %"$gascmp_4088", label %"$out_of_gas_4089", label %"$have_gas_4090" - -"$out_of_gas_4089": ; preds = %"$False_4085" - call void @_out_of_gas() - br label %"$have_gas_4090" - -"$have_gas_4090": ; preds = %"$out_of_gas_4089", %"$False_4085" - %"$consume_4091" = sub i64 %"$gasrem_4087", 1 - store i64 %"$consume_4091", i64* @_gasrem - %"$fail__sender_4092" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_4092" - %"$tname_4093" = load %String, %String* %tname - call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_4092", %String %"$tname_4093") - br label %"$matchsucc_4078" - -"$empty_default_4082": ; preds = %"$have_gas_4076" - br label %"$matchsucc_4078" - -"$matchsucc_4078": ; preds = %"$have_gas_4090", %"$True_4083", %"$empty_default_4082" - %"$gasrem_4094" = load i64, i64* @_gasrem - %"$gascmp_4095" = icmp ugt i64 1, %"$gasrem_4094" - br i1 %"$gascmp_4095", label %"$out_of_gas_4096", label %"$have_gas_4097" +"$True_4099": ; preds = %"$have_gas_4092" + %"$b_4100" = bitcast %TName_Bool* %"$b_4095" to %CName_True* + br label %"$matchsucc_4094" -"$out_of_gas_4096": ; preds = %"$matchsucc_4078" - call void @_out_of_gas() - br label %"$have_gas_4097" - -"$have_gas_4097": ; preds = %"$out_of_gas_4096", %"$matchsucc_4078" - %"$consume_4098" = sub i64 %"$gasrem_4094", 1 - store i64 %"$consume_4098", i64* @_gasrem - %m1 = alloca %Map_String_String* - %"$gasrem_4099" = load i64, i64* @_gasrem - %"$gascmp_4100" = icmp ugt i64 1, %"$gasrem_4099" - br i1 %"$gascmp_4100", label %"$out_of_gas_4101", label %"$have_gas_4102" +"$False_4101": ; preds = %"$have_gas_4092" + %"$b_4102" = bitcast %TName_Bool* %"$b_4095" to %CName_False* + %"$gasrem_4103" = load i64, i64* @_gasrem + %"$gascmp_4104" = icmp ugt i64 1, %"$gasrem_4103" + br i1 %"$gascmp_4104", label %"$out_of_gas_4105", label %"$have_gas_4106" -"$out_of_gas_4101": ; preds = %"$have_gas_4097" +"$out_of_gas_4105": ; preds = %"$False_4101" call void @_out_of_gas() - br label %"$have_gas_4102" + br label %"$have_gas_4106" -"$have_gas_4102": ; preds = %"$out_of_gas_4101", %"$have_gas_4097" - %"$consume_4103" = sub i64 %"$gasrem_4099", 1 - store i64 %"$consume_4103", i64* @_gasrem - %k = alloca %String - %"$gasrem_4104" = load i64, i64* @_gasrem - %"$gascmp_4105" = icmp ugt i64 1, %"$gasrem_4104" - br i1 %"$gascmp_4105", label %"$out_of_gas_4106", label %"$have_gas_4107" +"$have_gas_4106": ; preds = %"$out_of_gas_4105", %"$False_4101" + %"$consume_4107" = sub i64 %"$gasrem_4103", 1 + store i64 %"$consume_4107", i64* @_gasrem + %"$fail__sender_4108" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_4108" + %"$tname_4109" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_4108", %String %"$tname_4109") + br label %"$matchsucc_4094" -"$out_of_gas_4106": ; preds = %"$have_gas_4102" - call void @_out_of_gas() - br label %"$have_gas_4107" +"$empty_default_4098": ; preds = %"$have_gas_4092" + br label %"$matchsucc_4094" -"$have_gas_4107": ; preds = %"$out_of_gas_4106", %"$have_gas_4102" - %"$consume_4108" = sub i64 %"$gasrem_4104", 1 - store i64 %"$consume_4108", i64* @_gasrem - store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_4109", i32 0, i32 0), i32 0 }, %String* %k +"$matchsucc_4094": ; preds = %"$have_gas_4106", %"$True_4099", %"$empty_default_4098" %"$gasrem_4110" = load i64, i64* @_gasrem %"$gascmp_4111" = icmp ugt i64 1, %"$gasrem_4110" br i1 %"$gascmp_4111", label %"$out_of_gas_4112", label %"$have_gas_4113" -"$out_of_gas_4112": ; preds = %"$have_gas_4107" +"$out_of_gas_4112": ; preds = %"$matchsucc_4094" call void @_out_of_gas() br label %"$have_gas_4113" -"$have_gas_4113": ; preds = %"$out_of_gas_4112", %"$have_gas_4107" +"$have_gas_4113": ; preds = %"$out_of_gas_4112", %"$matchsucc_4094" %"$consume_4114" = sub i64 %"$gasrem_4110", 1 store i64 %"$consume_4114", i64* @_gasrem - %v = alloca %String + %m1 = alloca %Map_String_String* %"$gasrem_4115" = load i64, i64* @_gasrem %"$gascmp_4116" = icmp ugt i64 1, %"$gasrem_4115" br i1 %"$gascmp_4116", label %"$out_of_gas_4117", label %"$have_gas_4118" @@ -8447,377 +8437,413 @@ entry: "$have_gas_4118": ; preds = %"$out_of_gas_4117", %"$have_gas_4113" %"$consume_4119" = sub i64 %"$gasrem_4115", 1 store i64 %"$consume_4119", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_4120", i32 0, i32 0), i32 3 }, %String* %v - %"$gasrem_4121" = load i64, i64* @_gasrem - %"$gascmp_4122" = icmp ugt i64 1, %"$gasrem_4121" - br i1 %"$gascmp_4122", label %"$out_of_gas_4123", label %"$have_gas_4124" + %k = alloca %String + %"$gasrem_4120" = load i64, i64* @_gasrem + %"$gascmp_4121" = icmp ugt i64 1, %"$gasrem_4120" + br i1 %"$gascmp_4121", label %"$out_of_gas_4122", label %"$have_gas_4123" -"$out_of_gas_4123": ; preds = %"$have_gas_4118" +"$out_of_gas_4122": ; preds = %"$have_gas_4118" call void @_out_of_gas() - br label %"$have_gas_4124" + br label %"$have_gas_4123" -"$have_gas_4124": ; preds = %"$out_of_gas_4123", %"$have_gas_4118" - %"$consume_4125" = sub i64 %"$gasrem_4121", 1 - store i64 %"$consume_4125", i64* @_gasrem - %e = alloca %Map_String_String* +"$have_gas_4123": ; preds = %"$out_of_gas_4122", %"$have_gas_4118" + %"$consume_4124" = sub i64 %"$gasrem_4120", 1 + store i64 %"$consume_4124", i64* @_gasrem + store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_4125", i32 0, i32 0), i32 0 }, %String* %k %"$gasrem_4126" = load i64, i64* @_gasrem %"$gascmp_4127" = icmp ugt i64 1, %"$gasrem_4126" br i1 %"$gascmp_4127", label %"$out_of_gas_4128", label %"$have_gas_4129" -"$out_of_gas_4128": ; preds = %"$have_gas_4124" +"$out_of_gas_4128": ; preds = %"$have_gas_4123" call void @_out_of_gas() br label %"$have_gas_4129" -"$have_gas_4129": ; preds = %"$out_of_gas_4128", %"$have_gas_4124" +"$have_gas_4129": ; preds = %"$out_of_gas_4128", %"$have_gas_4123" %"$consume_4130" = sub i64 %"$gasrem_4126", 1 store i64 %"$consume_4130", i64* @_gasrem - %"$execptr_load_4131" = load i8*, i8** @_execptr - %"$_new_empty_map_call_4132" = call i8* @_new_empty_map(i8* %"$execptr_load_4131") - %"$Emp_4133" = bitcast i8* %"$_new_empty_map_call_4132" to %Map_String_String* - store %Map_String_String* %"$Emp_4133", %Map_String_String** %e - %"$execptr_load_4134" = load i8*, i8** @_execptr - %"$e_4135" = load %Map_String_String*, %Map_String_String** %e - %"$$e_4135_4136" = bitcast %Map_String_String* %"$e_4135" to i8* - %"$put_k_4137" = alloca %String - %"$k_4138" = load %String, %String* %k - store %String %"$k_4138", %String* %"$put_k_4137" - %"$$put_k_4137_4139" = bitcast %String* %"$put_k_4137" to i8* - %"$put_v_4140" = alloca %String - %"$v_4141" = load %String, %String* %v - store %String %"$v_4141", %String* %"$put_v_4140" - %"$$put_v_4140_4142" = bitcast %String* %"$put_v_4140" to i8* - %"$put_call_4143" = call i8* @_put(i8* %"$execptr_load_4134", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$e_4135_4136", i8* %"$$put_k_4137_4139", i8* %"$$put_v_4140_4142") - %"$_put_4144" = bitcast i8* %"$put_call_4143" to %Map_String_String* - store %Map_String_String* %"$_put_4144", %Map_String_String** %m1 - %"$m1_4145" = load %Map_String_String*, %Map_String_String** %m1 - %"$$m1_4145_4146" = bitcast %Map_String_String* %"$m1_4145" to i8* - %"$_literal_cost_call_4147" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_4145_4146") - %"$gasrem_4148" = load i64, i64* @_gasrem - %"$gascmp_4149" = icmp ugt i64 %"$_literal_cost_call_4147", %"$gasrem_4148" - br i1 %"$gascmp_4149", label %"$out_of_gas_4150", label %"$have_gas_4151" - -"$out_of_gas_4150": ; preds = %"$have_gas_4129" - call void @_out_of_gas() - br label %"$have_gas_4151" - -"$have_gas_4151": ; preds = %"$out_of_gas_4150", %"$have_gas_4129" - %"$consume_4152" = sub i64 %"$gasrem_4148", %"$_literal_cost_call_4147" - store i64 %"$consume_4152", i64* @_gasrem - %"$execptr_load_4153" = load i8*, i8** @_execptr - %"$m1_4155" = load %Map_String_String*, %Map_String_String** %m1 - %"$update_value_4156" = bitcast %Map_String_String* %"$m1_4155" to i8* - call void @_update_field(i8* %"$execptr_load_4153", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_4154", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i8* %"$update_value_4156") + %v = alloca %String + %"$gasrem_4131" = load i64, i64* @_gasrem + %"$gascmp_4132" = icmp ugt i64 1, %"$gasrem_4131" + br i1 %"$gascmp_4132", label %"$out_of_gas_4133", label %"$have_gas_4134" + +"$out_of_gas_4133": ; preds = %"$have_gas_4129" + call void @_out_of_gas() + br label %"$have_gas_4134" + +"$have_gas_4134": ; preds = %"$out_of_gas_4133", %"$have_gas_4129" + %"$consume_4135" = sub i64 %"$gasrem_4131", 1 + store i64 %"$consume_4135", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_4136", i32 0, i32 0), i32 3 }, %String* %v + %"$gasrem_4137" = load i64, i64* @_gasrem + %"$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_4134" + call void @_out_of_gas() + br label %"$have_gas_4140" + +"$have_gas_4140": ; preds = %"$out_of_gas_4139", %"$have_gas_4134" + %"$consume_4141" = sub i64 %"$gasrem_4137", 1 + store i64 %"$consume_4141", i64* @_gasrem + %e = alloca %Map_String_String* + %"$gasrem_4142" = load i64, i64* @_gasrem + %"$gascmp_4143" = icmp ugt i64 1, %"$gasrem_4142" + br i1 %"$gascmp_4143", label %"$out_of_gas_4144", label %"$have_gas_4145" + +"$out_of_gas_4144": ; preds = %"$have_gas_4140" + call void @_out_of_gas() + br label %"$have_gas_4145" + +"$have_gas_4145": ; preds = %"$out_of_gas_4144", %"$have_gas_4140" + %"$consume_4146" = sub i64 %"$gasrem_4142", 1 + store i64 %"$consume_4146", i64* @_gasrem + %"$execptr_load_4147" = load i8*, i8** @_execptr + %"$_new_empty_map_call_4148" = call i8* @_new_empty_map(i8* %"$execptr_load_4147") + %"$Emp_4149" = bitcast i8* %"$_new_empty_map_call_4148" to %Map_String_String* + store %Map_String_String* %"$Emp_4149", %Map_String_String** %e + %"$execptr_load_4150" = load i8*, i8** @_execptr + %"$e_4151" = load %Map_String_String*, %Map_String_String** %e + %"$$e_4151_4152" = bitcast %Map_String_String* %"$e_4151" to i8* + %"$put_k_4153" = alloca %String + %"$k_4154" = load %String, %String* %k + store %String %"$k_4154", %String* %"$put_k_4153" + %"$$put_k_4153_4155" = bitcast %String* %"$put_k_4153" to i8* + %"$put_v_4156" = alloca %String + %"$v_4157" = load %String, %String* %v + store %String %"$v_4157", %String* %"$put_v_4156" + %"$$put_v_4156_4158" = bitcast %String* %"$put_v_4156" to i8* + %"$put_call_4159" = call i8* @_put(i8* %"$execptr_load_4150", %_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$e_4151_4152", i8* %"$$put_k_4153_4155", i8* %"$$put_v_4156_4158") + %"$_put_4160" = bitcast i8* %"$put_call_4159" to %Map_String_String* + store %Map_String_String* %"$_put_4160", %Map_String_String** %m1 + %"$m1_4161" = load %Map_String_String*, %Map_String_String** %m1 + %"$$m1_4161_4162" = bitcast %Map_String_String* %"$m1_4161" to i8* + %"$_literal_cost_call_4163" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Map_72", i8* %"$$m1_4161_4162") + %"$gasrem_4164" = load i64, i64* @_gasrem + %"$gascmp_4165" = icmp ugt i64 %"$_literal_cost_call_4163", %"$gasrem_4164" + br i1 %"$gascmp_4165", label %"$out_of_gas_4166", label %"$have_gas_4167" + +"$out_of_gas_4166": ; preds = %"$have_gas_4145" + call void @_out_of_gas() + br label %"$have_gas_4167" + +"$have_gas_4167": ; preds = %"$out_of_gas_4166", %"$have_gas_4145" + %"$consume_4168" = sub i64 %"$gasrem_4164", %"$_literal_cost_call_4163" + store i64 %"$consume_4168", i64* @_gasrem + %"$execptr_load_4169" = load i8*, i8** @_execptr + %"$m1_4171" = load %Map_String_String*, %Map_String_String** %m1 + %"$update_value_4172" = bitcast %Map_String_String* %"$m1_4171" to i8* + call void @_update_field(i8* %"$execptr_load_4169", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_4170", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 0, i8* null, i8* %"$update_value_4172") ret void } define void @t16(i8* %0) { entry: - %"$_amount_4158" = getelementptr i8, i8* %0, i32 0 - %"$_amount_4159" = bitcast i8* %"$_amount_4158" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_4159" - %"$_sender_4160" = getelementptr i8, i8* %0, i32 16 - %"$_sender_4161" = bitcast i8* %"$_sender_4160" to [20 x i8]* - call void @"$t16_3657"(%Uint128 %_amount, [20 x i8]* %"$_sender_4161") + %"$_amount_4174" = getelementptr i8, i8* %0, i32 0 + %"$_amount_4175" = bitcast i8* %"$_amount_4174" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_4175" + %"$_sender_4176" = getelementptr i8, i8* %0, i32 16 + %"$_sender_4177" = bitcast i8* %"$_sender_4176" to [20 x i8]* + call void @"$t16_3673"(%Uint128 %_amount, [20 x i8]* %"$_sender_4177") ret void } -define internal void @"$t17_4162"(%Uint128 %_amount, [20 x i8]* %"$_sender_4163") { +define internal void @"$t17_4178"(%Uint128 %_amount, [20 x i8]* %"$_sender_4179") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_4163" - %"$gasrem_4164" = load i64, i64* @_gasrem - %"$gascmp_4165" = icmp ugt i64 1, %"$gasrem_4164" - br i1 %"$gascmp_4165", label %"$out_of_gas_4166", label %"$have_gas_4167" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_4179" + %"$gasrem_4180" = load i64, i64* @_gasrem + %"$gascmp_4181" = icmp ugt i64 1, %"$gasrem_4180" + br i1 %"$gascmp_4181", label %"$out_of_gas_4182", label %"$have_gas_4183" -"$out_of_gas_4166": ; preds = %entry +"$out_of_gas_4182": ; preds = %entry call void @_out_of_gas() - br label %"$have_gas_4167" + br label %"$have_gas_4183" -"$have_gas_4167": ; preds = %"$out_of_gas_4166", %entry - %"$consume_4168" = sub i64 %"$gasrem_4164", 1 - store i64 %"$consume_4168", i64* @_gasrem +"$have_gas_4183": ; preds = %"$out_of_gas_4182", %entry + %"$consume_4184" = sub i64 %"$gasrem_4180", 1 + store i64 %"$consume_4184", i64* @_gasrem %tname = alloca %String - %"$gasrem_4169" = load i64, i64* @_gasrem - %"$gascmp_4170" = icmp ugt i64 1, %"$gasrem_4169" - br i1 %"$gascmp_4170", label %"$out_of_gas_4171", label %"$have_gas_4172" + %"$gasrem_4185" = load i64, i64* @_gasrem + %"$gascmp_4186" = icmp ugt i64 1, %"$gasrem_4185" + br i1 %"$gascmp_4186", label %"$out_of_gas_4187", label %"$have_gas_4188" -"$out_of_gas_4171": ; preds = %"$have_gas_4167" +"$out_of_gas_4187": ; preds = %"$have_gas_4183" call void @_out_of_gas() - br label %"$have_gas_4172" + br label %"$have_gas_4188" -"$have_gas_4172": ; preds = %"$out_of_gas_4171", %"$have_gas_4167" - %"$consume_4173" = sub i64 %"$gasrem_4169", 1 - store i64 %"$consume_4173", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_4174", i32 0, i32 0), i32 3 }, %String* %tname - %"$gasrem_4175" = load i64, i64* @_gasrem - %"$gascmp_4176" = icmp ugt i64 1, %"$gasrem_4175" - br i1 %"$gascmp_4176", label %"$out_of_gas_4177", label %"$have_gas_4178" +"$have_gas_4188": ; preds = %"$out_of_gas_4187", %"$have_gas_4183" + %"$consume_4189" = sub i64 %"$gasrem_4185", 1 + store i64 %"$consume_4189", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_4190", i32 0, i32 0), i32 3 }, %String* %tname + %"$gasrem_4191" = load i64, i64* @_gasrem + %"$gascmp_4192" = icmp ugt i64 1, %"$gasrem_4191" + br i1 %"$gascmp_4192", label %"$out_of_gas_4193", label %"$have_gas_4194" -"$out_of_gas_4177": ; preds = %"$have_gas_4172" +"$out_of_gas_4193": ; preds = %"$have_gas_4188" call void @_out_of_gas() - br label %"$have_gas_4178" + br label %"$have_gas_4194" -"$have_gas_4178": ; preds = %"$out_of_gas_4177", %"$have_gas_4172" - %"$consume_4179" = sub i64 %"$gasrem_4175", 1 - store i64 %"$consume_4179", i64* @_gasrem +"$have_gas_4194": ; preds = %"$out_of_gas_4193", %"$have_gas_4188" + %"$consume_4195" = sub i64 %"$gasrem_4191", 1 + store i64 %"$consume_4195", i64* @_gasrem %key = alloca %String - %"$gasrem_4180" = load i64, i64* @_gasrem - %"$gascmp_4181" = icmp ugt i64 1, %"$gasrem_4180" - br i1 %"$gascmp_4181", label %"$out_of_gas_4182", label %"$have_gas_4183" + %"$gasrem_4196" = load i64, i64* @_gasrem + %"$gascmp_4197" = icmp ugt i64 1, %"$gasrem_4196" + br i1 %"$gascmp_4197", label %"$out_of_gas_4198", label %"$have_gas_4199" -"$out_of_gas_4182": ; preds = %"$have_gas_4178" +"$out_of_gas_4198": ; preds = %"$have_gas_4194" call void @_out_of_gas() - br label %"$have_gas_4183" + br label %"$have_gas_4199" -"$have_gas_4183": ; preds = %"$out_of_gas_4182", %"$have_gas_4178" - %"$consume_4184" = sub i64 %"$gasrem_4180", 1 - store i64 %"$consume_4184", i64* @_gasrem - store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_4185", i32 0, i32 0), i32 0 }, %String* %key +"$have_gas_4199": ; preds = %"$out_of_gas_4198", %"$have_gas_4194" + %"$consume_4200" = sub i64 %"$gasrem_4196", 1 + store i64 %"$consume_4200", i64* @_gasrem + store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_4201", i32 0, i32 0), i32 0 }, %String* %key %found = alloca %TName_Bool* - %"$indices_buf_4186_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_4186_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4186_salloc_load", i64 16) - %"$indices_buf_4186_salloc" = bitcast i8* %"$indices_buf_4186_salloc_salloc" to [16 x i8]* - %"$indices_buf_4186" = bitcast [16 x i8]* %"$indices_buf_4186_salloc" to i8* - %"$key_4187" = load %String, %String* %key - %"$indices_gep_4188" = getelementptr i8, i8* %"$indices_buf_4186", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_4188" to %String* - store %String %"$key_4187", %String* %indices_cast - %"$execptr_load_4189" = load i8*, i8** @_execptr - %"$found_4191" = call i8* @_fetch_field(i8* %"$execptr_load_4189", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_4190", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_4186", i32 0) - %"$found_4192" = bitcast i8* %"$found_4191" to %TName_Bool* - store %TName_Bool* %"$found_4192", %TName_Bool** %found - %"$found_4193" = load %TName_Bool*, %TName_Bool** %found - %"$$found_4193_4194" = bitcast %TName_Bool* %"$found_4193" to i8* - %"$_literal_cost_call_4195" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_68", i8* %"$$found_4193_4194") - %"$gasadd_4196" = add i64 %"$_literal_cost_call_4195", 0 - %"$gasadd_4197" = add i64 %"$gasadd_4196", 1 - %"$gasrem_4198" = load i64, i64* @_gasrem - %"$gascmp_4199" = icmp ugt i64 %"$gasadd_4197", %"$gasrem_4198" - br i1 %"$gascmp_4199", label %"$out_of_gas_4200", label %"$have_gas_4201" - -"$out_of_gas_4200": ; preds = %"$have_gas_4183" - call void @_out_of_gas() - br label %"$have_gas_4201" - -"$have_gas_4201": ; preds = %"$out_of_gas_4200", %"$have_gas_4183" - %"$consume_4202" = sub i64 %"$gasrem_4198", %"$gasadd_4197" - store i64 %"$consume_4202", i64* @_gasrem - %"$gasrem_4203" = load i64, i64* @_gasrem - %"$gascmp_4204" = icmp ugt i64 2, %"$gasrem_4203" - br i1 %"$gascmp_4204", label %"$out_of_gas_4205", label %"$have_gas_4206" - -"$out_of_gas_4205": ; preds = %"$have_gas_4201" - call void @_out_of_gas() - br label %"$have_gas_4206" - -"$have_gas_4206": ; preds = %"$out_of_gas_4205", %"$have_gas_4201" - %"$consume_4207" = sub i64 %"$gasrem_4203", 2 - store i64 %"$consume_4207", i64* @_gasrem + %"$indices_buf_4202_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_4202_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4202_salloc_load", i64 16) + %"$indices_buf_4202_salloc" = bitcast i8* %"$indices_buf_4202_salloc_salloc" to [16 x i8]* + %"$indices_buf_4202" = bitcast [16 x i8]* %"$indices_buf_4202_salloc" to i8* + %"$key_4203" = load %String, %String* %key + %"$indices_gep_4204" = getelementptr i8, i8* %"$indices_buf_4202", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_4204" to %String* + store %String %"$key_4203", %String* %indices_cast + %"$execptr_load_4205" = load i8*, i8** @_execptr + %"$found_4207" = call i8* @_fetch_field(i8* %"$execptr_load_4205", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_4206", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_4202", i32 0) + %"$found_4208" = bitcast i8* %"$found_4207" to %TName_Bool* + store %TName_Bool* %"$found_4208", %TName_Bool** %found %"$found_4209" = load %TName_Bool*, %TName_Bool** %found - %"$found_tag_4210" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$found_4209", i32 0, i32 0 - %"$found_tag_4211" = load i8, i8* %"$found_tag_4210" - switch i8 %"$found_tag_4211", label %"$empty_default_4212" [ - i8 0, label %"$True_4213" - i8 1, label %"$False_4215" + %"$$found_4209_4210" = bitcast %TName_Bool* %"$found_4209" to i8* + %"$_literal_cost_call_4211" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_68", i8* %"$$found_4209_4210") + %"$gasadd_4212" = add i64 %"$_literal_cost_call_4211", 0 + %"$gasadd_4213" = add i64 %"$gasadd_4212", 1 + %"$gasrem_4214" = load i64, i64* @_gasrem + %"$gascmp_4215" = icmp ugt i64 %"$gasadd_4213", %"$gasrem_4214" + br i1 %"$gascmp_4215", label %"$out_of_gas_4216", label %"$have_gas_4217" + +"$out_of_gas_4216": ; preds = %"$have_gas_4199" + call void @_out_of_gas() + br label %"$have_gas_4217" + +"$have_gas_4217": ; preds = %"$out_of_gas_4216", %"$have_gas_4199" + %"$consume_4218" = sub i64 %"$gasrem_4214", %"$gasadd_4213" + store i64 %"$consume_4218", i64* @_gasrem + %"$gasrem_4219" = load i64, i64* @_gasrem + %"$gascmp_4220" = icmp ugt i64 2, %"$gasrem_4219" + br i1 %"$gascmp_4220", label %"$out_of_gas_4221", label %"$have_gas_4222" + +"$out_of_gas_4221": ; preds = %"$have_gas_4217" + call void @_out_of_gas() + br label %"$have_gas_4222" + +"$have_gas_4222": ; preds = %"$out_of_gas_4221", %"$have_gas_4217" + %"$consume_4223" = sub i64 %"$gasrem_4219", 2 + store i64 %"$consume_4223", i64* @_gasrem + %"$found_4225" = load %TName_Bool*, %TName_Bool** %found + %"$found_tag_4226" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$found_4225", i32 0, i32 0 + %"$found_tag_4227" = load i8, i8* %"$found_tag_4226" + switch i8 %"$found_tag_4227", label %"$empty_default_4228" [ + i8 0, label %"$True_4229" + i8 1, label %"$False_4231" ] -"$True_4213": ; preds = %"$have_gas_4206" - %"$found_4214" = bitcast %TName_Bool* %"$found_4209" to %CName_True* - br label %"$matchsucc_4208" - -"$False_4215": ; preds = %"$have_gas_4206" - %"$found_4216" = bitcast %TName_Bool* %"$found_4209" to %CName_False* - %"$gasrem_4217" = load i64, i64* @_gasrem - %"$gascmp_4218" = icmp ugt i64 1, %"$gasrem_4217" - br i1 %"$gascmp_4218", label %"$out_of_gas_4219", label %"$have_gas_4220" - -"$out_of_gas_4219": ; preds = %"$False_4215" - call void @_out_of_gas() - br label %"$have_gas_4220" - -"$have_gas_4220": ; preds = %"$out_of_gas_4219", %"$False_4215" - %"$consume_4221" = sub i64 %"$gasrem_4217", 1 - store i64 %"$consume_4221", i64* @_gasrem - %"$fail__sender_4222" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_4222" - %"$tname_4223" = load %String, %String* %tname - call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_4222", %String %"$tname_4223") - br label %"$matchsucc_4208" - -"$empty_default_4212": ; preds = %"$have_gas_4206" - br label %"$matchsucc_4208" - -"$matchsucc_4208": ; preds = %"$have_gas_4220", %"$True_4213", %"$empty_default_4212" - %"$gasrem_4224" = load i64, i64* @_gasrem - %"$gascmp_4225" = icmp ugt i64 1, %"$gasrem_4224" - br i1 %"$gascmp_4225", label %"$out_of_gas_4226", label %"$have_gas_4227" - -"$out_of_gas_4226": ; preds = %"$matchsucc_4208" - call void @_out_of_gas() - br label %"$have_gas_4227" - -"$have_gas_4227": ; preds = %"$out_of_gas_4226", %"$matchsucc_4208" - %"$consume_4228" = sub i64 %"$gasrem_4224", 1 - store i64 %"$consume_4228", i64* @_gasrem - %"$indices_buf_4229_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_4229_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4229_salloc_load", i64 16) - %"$indices_buf_4229_salloc" = bitcast i8* %"$indices_buf_4229_salloc_salloc" to [16 x i8]* - %"$indices_buf_4229" = bitcast [16 x i8]* %"$indices_buf_4229_salloc" to i8* - %"$key_4230" = load %String, %String* %key - %"$indices_gep_4231" = getelementptr i8, i8* %"$indices_buf_4229", i32 0 - %indices_cast1 = bitcast i8* %"$indices_gep_4231" to %String* - store %String %"$key_4230", %String* %indices_cast1 - %"$execptr_load_4232" = load i8*, i8** @_execptr - call void @_update_field(i8* %"$execptr_load_4232", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_4233", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_4229", i8* null) +"$True_4229": ; preds = %"$have_gas_4222" + %"$found_4230" = bitcast %TName_Bool* %"$found_4225" to %CName_True* + br label %"$matchsucc_4224" + +"$False_4231": ; preds = %"$have_gas_4222" + %"$found_4232" = bitcast %TName_Bool* %"$found_4225" to %CName_False* + %"$gasrem_4233" = load i64, i64* @_gasrem + %"$gascmp_4234" = icmp ugt i64 1, %"$gasrem_4233" + br i1 %"$gascmp_4234", label %"$out_of_gas_4235", label %"$have_gas_4236" + +"$out_of_gas_4235": ; preds = %"$False_4231" + call void @_out_of_gas() + br label %"$have_gas_4236" + +"$have_gas_4236": ; preds = %"$out_of_gas_4235", %"$False_4231" + %"$consume_4237" = sub i64 %"$gasrem_4233", 1 + store i64 %"$consume_4237", i64* @_gasrem + %"$fail__sender_4238" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_4238" + %"$tname_4239" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_4238", %String %"$tname_4239") + br label %"$matchsucc_4224" + +"$empty_default_4228": ; preds = %"$have_gas_4222" + br label %"$matchsucc_4224" + +"$matchsucc_4224": ; preds = %"$have_gas_4236", %"$True_4229", %"$empty_default_4228" + %"$gasrem_4240" = load i64, i64* @_gasrem + %"$gascmp_4241" = icmp ugt i64 1, %"$gasrem_4240" + br i1 %"$gascmp_4241", label %"$out_of_gas_4242", label %"$have_gas_4243" + +"$out_of_gas_4242": ; preds = %"$matchsucc_4224" + call void @_out_of_gas() + br label %"$have_gas_4243" + +"$have_gas_4243": ; preds = %"$out_of_gas_4242", %"$matchsucc_4224" + %"$consume_4244" = sub i64 %"$gasrem_4240", 1 + store i64 %"$consume_4244", i64* @_gasrem + %"$indices_buf_4245_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_4245_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4245_salloc_load", i64 16) + %"$indices_buf_4245_salloc" = bitcast i8* %"$indices_buf_4245_salloc_salloc" to [16 x i8]* + %"$indices_buf_4245" = bitcast [16 x i8]* %"$indices_buf_4245_salloc" to i8* + %"$key_4246" = load %String, %String* %key + %"$indices_gep_4247" = getelementptr i8, i8* %"$indices_buf_4245", i32 0 + %indices_cast1 = bitcast i8* %"$indices_gep_4247" to %String* + store %String %"$key_4246", %String* %indices_cast1 + %"$execptr_load_4248" = load i8*, i8** @_execptr + call void @_update_field(i8* %"$execptr_load_4248", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_4249", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_4245", i8* null) ret void } define void @t17(i8* %0) { entry: - %"$_amount_4235" = getelementptr i8, i8* %0, i32 0 - %"$_amount_4236" = bitcast i8* %"$_amount_4235" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_4236" - %"$_sender_4237" = getelementptr i8, i8* %0, i32 16 - %"$_sender_4238" = bitcast i8* %"$_sender_4237" to [20 x i8]* - call void @"$t17_4162"(%Uint128 %_amount, [20 x i8]* %"$_sender_4238") + %"$_amount_4251" = getelementptr i8, i8* %0, i32 0 + %"$_amount_4252" = bitcast i8* %"$_amount_4251" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_4252" + %"$_sender_4253" = getelementptr i8, i8* %0, i32 16 + %"$_sender_4254" = bitcast i8* %"$_sender_4253" to [20 x i8]* + call void @"$t17_4178"(%Uint128 %_amount, [20 x i8]* %"$_sender_4254") ret void } -define internal void @"$t18_4239"(%Uint128 %_amount, [20 x i8]* %"$_sender_4240") { +define internal void @"$t18_4255"(%Uint128 %_amount, [20 x i8]* %"$_sender_4256") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_4240" - %"$gasrem_4241" = load i64, i64* @_gasrem - %"$gascmp_4242" = icmp ugt i64 1, %"$gasrem_4241" - br i1 %"$gascmp_4242", label %"$out_of_gas_4243", label %"$have_gas_4244" + %_sender = load [20 x i8], [20 x i8]* %"$_sender_4256" + %"$gasrem_4257" = load i64, i64* @_gasrem + %"$gascmp_4258" = icmp ugt i64 1, %"$gasrem_4257" + br i1 %"$gascmp_4258", label %"$out_of_gas_4259", label %"$have_gas_4260" -"$out_of_gas_4243": ; preds = %entry +"$out_of_gas_4259": ; preds = %entry call void @_out_of_gas() - br label %"$have_gas_4244" + br label %"$have_gas_4260" -"$have_gas_4244": ; preds = %"$out_of_gas_4243", %entry - %"$consume_4245" = sub i64 %"$gasrem_4241", 1 - store i64 %"$consume_4245", i64* @_gasrem +"$have_gas_4260": ; preds = %"$out_of_gas_4259", %entry + %"$consume_4261" = sub i64 %"$gasrem_4257", 1 + store i64 %"$consume_4261", i64* @_gasrem %tname = alloca %String - %"$gasrem_4246" = load i64, i64* @_gasrem - %"$gascmp_4247" = icmp ugt i64 1, %"$gasrem_4246" - br i1 %"$gascmp_4247", label %"$out_of_gas_4248", label %"$have_gas_4249" + %"$gasrem_4262" = load i64, i64* @_gasrem + %"$gascmp_4263" = icmp ugt i64 1, %"$gasrem_4262" + br i1 %"$gascmp_4263", label %"$out_of_gas_4264", label %"$have_gas_4265" -"$out_of_gas_4248": ; preds = %"$have_gas_4244" +"$out_of_gas_4264": ; preds = %"$have_gas_4260" call void @_out_of_gas() - br label %"$have_gas_4249" + br label %"$have_gas_4265" -"$have_gas_4249": ; preds = %"$out_of_gas_4248", %"$have_gas_4244" - %"$consume_4250" = sub i64 %"$gasrem_4246", 1 - store i64 %"$consume_4250", i64* @_gasrem - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_4251", i32 0, i32 0), i32 3 }, %String* %tname - %"$gasrem_4252" = load i64, i64* @_gasrem - %"$gascmp_4253" = icmp ugt i64 1, %"$gasrem_4252" - br i1 %"$gascmp_4253", label %"$out_of_gas_4254", label %"$have_gas_4255" +"$have_gas_4265": ; preds = %"$out_of_gas_4264", %"$have_gas_4260" + %"$consume_4266" = sub i64 %"$gasrem_4262", 1 + store i64 %"$consume_4266", i64* @_gasrem + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_4267", i32 0, i32 0), i32 3 }, %String* %tname + %"$gasrem_4268" = load i64, i64* @_gasrem + %"$gascmp_4269" = icmp ugt i64 1, %"$gasrem_4268" + br i1 %"$gascmp_4269", label %"$out_of_gas_4270", label %"$have_gas_4271" -"$out_of_gas_4254": ; preds = %"$have_gas_4249" +"$out_of_gas_4270": ; preds = %"$have_gas_4265" call void @_out_of_gas() - br label %"$have_gas_4255" + br label %"$have_gas_4271" -"$have_gas_4255": ; preds = %"$out_of_gas_4254", %"$have_gas_4249" - %"$consume_4256" = sub i64 %"$gasrem_4252", 1 - store i64 %"$consume_4256", i64* @_gasrem +"$have_gas_4271": ; preds = %"$out_of_gas_4270", %"$have_gas_4265" + %"$consume_4272" = sub i64 %"$gasrem_4268", 1 + store i64 %"$consume_4272", i64* @_gasrem %key = alloca %String - %"$gasrem_4257" = load i64, i64* @_gasrem - %"$gascmp_4258" = icmp ugt i64 1, %"$gasrem_4257" - br i1 %"$gascmp_4258", label %"$out_of_gas_4259", label %"$have_gas_4260" + %"$gasrem_4273" = load i64, i64* @_gasrem + %"$gascmp_4274" = icmp ugt i64 1, %"$gasrem_4273" + br i1 %"$gascmp_4274", label %"$out_of_gas_4275", label %"$have_gas_4276" -"$out_of_gas_4259": ; preds = %"$have_gas_4255" +"$out_of_gas_4275": ; preds = %"$have_gas_4271" call void @_out_of_gas() - br label %"$have_gas_4260" + br label %"$have_gas_4276" -"$have_gas_4260": ; preds = %"$out_of_gas_4259", %"$have_gas_4255" - %"$consume_4261" = sub i64 %"$gasrem_4257", 1 - store i64 %"$consume_4261", i64* @_gasrem - store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_4262", i32 0, i32 0), i32 0 }, %String* %key +"$have_gas_4276": ; preds = %"$out_of_gas_4275", %"$have_gas_4271" + %"$consume_4277" = sub i64 %"$gasrem_4273", 1 + store i64 %"$consume_4277", i64* @_gasrem + store %String { i8* getelementptr inbounds ([0 x i8], [0 x i8]* @"$stringlit_4278", i32 0, i32 0), i32 0 }, %String* %key %found = alloca %TName_Bool* - %"$indices_buf_4263_salloc_load" = load i8*, i8** @_execptr - %"$indices_buf_4263_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4263_salloc_load", i64 16) - %"$indices_buf_4263_salloc" = bitcast i8* %"$indices_buf_4263_salloc_salloc" to [16 x i8]* - %"$indices_buf_4263" = bitcast [16 x i8]* %"$indices_buf_4263_salloc" to i8* - %"$key_4264" = load %String, %String* %key - %"$indices_gep_4265" = getelementptr i8, i8* %"$indices_buf_4263", i32 0 - %indices_cast = bitcast i8* %"$indices_gep_4265" to %String* - store %String %"$key_4264", %String* %indices_cast - %"$execptr_load_4266" = load i8*, i8** @_execptr - %"$found_4268" = call i8* @_fetch_field(i8* %"$execptr_load_4266", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_4267", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_4263", i32 0) - %"$found_4269" = bitcast i8* %"$found_4268" to %TName_Bool* - store %TName_Bool* %"$found_4269", %TName_Bool** %found - %"$found_4270" = load %TName_Bool*, %TName_Bool** %found - %"$$found_4270_4271" = bitcast %TName_Bool* %"$found_4270" to i8* - %"$_literal_cost_call_4272" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_68", i8* %"$$found_4270_4271") - %"$gasadd_4273" = add i64 %"$_literal_cost_call_4272", 0 - %"$gasadd_4274" = add i64 %"$gasadd_4273", 1 - %"$gasrem_4275" = load i64, i64* @_gasrem - %"$gascmp_4276" = icmp ugt i64 %"$gasadd_4274", %"$gasrem_4275" - br i1 %"$gascmp_4276", label %"$out_of_gas_4277", label %"$have_gas_4278" - -"$out_of_gas_4277": ; preds = %"$have_gas_4260" - call void @_out_of_gas() - br label %"$have_gas_4278" - -"$have_gas_4278": ; preds = %"$out_of_gas_4277", %"$have_gas_4260" - %"$consume_4279" = sub i64 %"$gasrem_4275", %"$gasadd_4274" - store i64 %"$consume_4279", i64* @_gasrem - %"$gasrem_4280" = load i64, i64* @_gasrem - %"$gascmp_4281" = icmp ugt i64 2, %"$gasrem_4280" - br i1 %"$gascmp_4281", label %"$out_of_gas_4282", label %"$have_gas_4283" - -"$out_of_gas_4282": ; preds = %"$have_gas_4278" - call void @_out_of_gas() - br label %"$have_gas_4283" - -"$have_gas_4283": ; preds = %"$out_of_gas_4282", %"$have_gas_4278" - %"$consume_4284" = sub i64 %"$gasrem_4280", 2 - store i64 %"$consume_4284", i64* @_gasrem + %"$indices_buf_4279_salloc_load" = load i8*, i8** @_execptr + %"$indices_buf_4279_salloc_salloc" = call i8* @_salloc(i8* %"$indices_buf_4279_salloc_load", i64 16) + %"$indices_buf_4279_salloc" = bitcast i8* %"$indices_buf_4279_salloc_salloc" to [16 x i8]* + %"$indices_buf_4279" = bitcast [16 x i8]* %"$indices_buf_4279_salloc" to i8* + %"$key_4280" = load %String, %String* %key + %"$indices_gep_4281" = getelementptr i8, i8* %"$indices_buf_4279", i32 0 + %indices_cast = bitcast i8* %"$indices_gep_4281" to %String* + store %String %"$key_4280", %String* %indices_cast + %"$execptr_load_4282" = load i8*, i8** @_execptr + %"$found_4284" = call i8* @_fetch_field(i8* %"$execptr_load_4282", i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$f_m1_4283", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Map_72", i32 1, i8* %"$indices_buf_4279", i32 0) + %"$found_4285" = bitcast i8* %"$found_4284" to %TName_Bool* + store %TName_Bool* %"$found_4285", %TName_Bool** %found %"$found_4286" = load %TName_Bool*, %TName_Bool** %found - %"$found_tag_4287" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$found_4286", i32 0, i32 0 - %"$found_tag_4288" = load i8, i8* %"$found_tag_4287" - switch i8 %"$found_tag_4288", label %"$empty_default_4289" [ - i8 0, label %"$True_4290" - i8 1, label %"$False_4299" + %"$$found_4286_4287" = bitcast %TName_Bool* %"$found_4286" to i8* + %"$_literal_cost_call_4288" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_68", i8* %"$$found_4286_4287") + %"$gasadd_4289" = add i64 %"$_literal_cost_call_4288", 0 + %"$gasadd_4290" = add i64 %"$gasadd_4289", 1 + %"$gasrem_4291" = load i64, i64* @_gasrem + %"$gascmp_4292" = icmp ugt i64 %"$gasadd_4290", %"$gasrem_4291" + br i1 %"$gascmp_4292", label %"$out_of_gas_4293", label %"$have_gas_4294" + +"$out_of_gas_4293": ; preds = %"$have_gas_4276" + call void @_out_of_gas() + br label %"$have_gas_4294" + +"$have_gas_4294": ; preds = %"$out_of_gas_4293", %"$have_gas_4276" + %"$consume_4295" = sub i64 %"$gasrem_4291", %"$gasadd_4290" + store i64 %"$consume_4295", i64* @_gasrem + %"$gasrem_4296" = load i64, i64* @_gasrem + %"$gascmp_4297" = icmp ugt i64 2, %"$gasrem_4296" + br i1 %"$gascmp_4297", label %"$out_of_gas_4298", label %"$have_gas_4299" + +"$out_of_gas_4298": ; preds = %"$have_gas_4294" + call void @_out_of_gas() + br label %"$have_gas_4299" + +"$have_gas_4299": ; preds = %"$out_of_gas_4298", %"$have_gas_4294" + %"$consume_4300" = sub i64 %"$gasrem_4296", 2 + store i64 %"$consume_4300", i64* @_gasrem + %"$found_4302" = load %TName_Bool*, %TName_Bool** %found + %"$found_tag_4303" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$found_4302", i32 0, i32 0 + %"$found_tag_4304" = load i8, i8* %"$found_tag_4303" + switch i8 %"$found_tag_4304", label %"$empty_default_4305" [ + i8 0, label %"$True_4306" + i8 1, label %"$False_4315" ] -"$True_4290": ; preds = %"$have_gas_4283" - %"$found_4291" = bitcast %TName_Bool* %"$found_4286" to %CName_True* - %"$gasrem_4292" = load i64, i64* @_gasrem - %"$gascmp_4293" = icmp ugt i64 1, %"$gasrem_4292" - br i1 %"$gascmp_4293", label %"$out_of_gas_4294", label %"$have_gas_4295" +"$True_4306": ; preds = %"$have_gas_4299" + %"$found_4307" = bitcast %TName_Bool* %"$found_4302" to %CName_True* + %"$gasrem_4308" = load i64, i64* @_gasrem + %"$gascmp_4309" = icmp ugt i64 1, %"$gasrem_4308" + br i1 %"$gascmp_4309", label %"$out_of_gas_4310", label %"$have_gas_4311" -"$out_of_gas_4294": ; preds = %"$True_4290" +"$out_of_gas_4310": ; preds = %"$True_4306" call void @_out_of_gas() - br label %"$have_gas_4295" + br label %"$have_gas_4311" -"$have_gas_4295": ; preds = %"$out_of_gas_4294", %"$True_4290" - %"$consume_4296" = sub i64 %"$gasrem_4292", 1 - store i64 %"$consume_4296", i64* @_gasrem - %"$fail__sender_4297" = alloca [20 x i8] - store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_4297" - %"$tname_4298" = load %String, %String* %tname - call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_4297", %String %"$tname_4298") - br label %"$matchsucc_4285" +"$have_gas_4311": ; preds = %"$out_of_gas_4310", %"$True_4306" + %"$consume_4312" = sub i64 %"$gasrem_4308", 1 + store i64 %"$consume_4312", i64* @_gasrem + %"$fail__sender_4313" = alloca [20 x i8] + store [20 x i8] %_sender, [20 x i8]* %"$fail__sender_4313" + %"$tname_4314" = load %String, %String* %tname + call void @"$fail_228"(%Uint128 %_amount, [20 x i8]* %"$fail__sender_4313", %String %"$tname_4314") + br label %"$matchsucc_4301" -"$False_4299": ; preds = %"$have_gas_4283" - %"$found_4300" = bitcast %TName_Bool* %"$found_4286" to %CName_False* - br label %"$matchsucc_4285" +"$False_4315": ; preds = %"$have_gas_4299" + %"$found_4316" = bitcast %TName_Bool* %"$found_4302" to %CName_False* + br label %"$matchsucc_4301" -"$empty_default_4289": ; preds = %"$have_gas_4283" - br label %"$matchsucc_4285" +"$empty_default_4305": ; preds = %"$have_gas_4299" + br label %"$matchsucc_4301" -"$matchsucc_4285": ; preds = %"$False_4299", %"$have_gas_4295", %"$empty_default_4289" +"$matchsucc_4301": ; preds = %"$False_4315", %"$have_gas_4311", %"$empty_default_4305" ret void } define void @t18(i8* %0) { entry: - %"$_amount_4302" = getelementptr i8, i8* %0, i32 0 - %"$_amount_4303" = bitcast i8* %"$_amount_4302" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_4303" - %"$_sender_4304" = getelementptr i8, i8* %0, i32 16 - %"$_sender_4305" = bitcast i8* %"$_sender_4304" to [20 x i8]* - call void @"$t18_4239"(%Uint128 %_amount, [20 x i8]* %"$_sender_4305") + %"$_amount_4318" = getelementptr i8, i8* %0, i32 0 + %"$_amount_4319" = bitcast i8* %"$_amount_4318" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_4319" + %"$_sender_4320" = getelementptr i8, i8* %0, i32 16 + %"$_sender_4321" = bitcast i8* %"$_sender_4320" to [20 x i8]* + call void @"$t18_4255"(%Uint128 %_amount, [20 x i8]* %"$_sender_4321") ret void } diff --git a/testsuite/contr/throw.ll b/testsuite/contr/throw.ll index 7516126c..3ba5a070 100644 --- a/testsuite/contr/throw.ll +++ b/testsuite/contr/throw.ll @@ -46,8 +46,8 @@ target triple = "x86_64-pc-linux-gnu" @"$TyDescr_Bystr20_30" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_0"* @"$TyDescr_Bystr20_Prim_29" to i8*) } @_scilla_version = global %Uint32 zeroinitializer @_this_address = global [20 x i8] zeroinitializer -@"$stringlit_56" = unnamed_addr constant [10 x i8] c"_exception" -@"$stringlit_61" = unnamed_addr constant [3 x i8] c"Foo" +@"$stringlit_61" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_66" = unnamed_addr constant [3 x i8] c"Foo" @_tydescr_table = constant [15 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Event_24", %_TyDescrTy_Typ* @"$TyDescr_Int64_6", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_30", %_TyDescrTy_Typ* @"$TyDescr_Uint256_16", %_TyDescrTy_Typ* @"$TyDescr_Uint32_4", %_TyDescrTy_Typ* @"$TyDescr_Uint64_8", %_TyDescrTy_Typ* @"$TyDescr_Bnum_20", %_TyDescrTy_Typ* @"$TyDescr_Uint128_12", %_TyDescrTy_Typ* @"$TyDescr_Exception_26", %_TyDescrTy_Typ* @"$TyDescr_String_18", %_TyDescrTy_Typ* @"$TyDescr_Int256_14", %_TyDescrTy_Typ* @"$TyDescr_Int128_10", %_TyDescrTy_Typ* @"$TyDescr_Bystr_28", %_TyDescrTy_Typ* @"$TyDescr_Message_22", %_TyDescrTy_Typ* @"$TyDescr_Int32_2"] @_tydescr_table_length = constant i32 15 @@ -64,82 +64,108 @@ entry: define internal void @"$ThrowEmpty_35"(%Uint128 %_amount, [20 x i8]* %"$_sender_36") { entry: %_sender = load [20 x i8], [20 x i8]* %"$_sender_36" - %"$execptr_load_37" = load i8*, i8** @_execptr - call void @_throw(i8* %"$execptr_load_37", %_TyDescrTy_Typ* @"$TyDescr_Exception_26", i8* null) + %"$gasrem_37" = load i64, i64* @_gasrem + %"$gascmp_38" = icmp ugt i64 1, %"$gasrem_37" + br i1 %"$gascmp_38", label %"$out_of_gas_39", label %"$have_gas_40" + +"$out_of_gas_39": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_40" + +"$have_gas_40": ; preds = %"$out_of_gas_39", %entry + %"$consume_41" = sub i64 %"$gasrem_37", 1 + store i64 %"$consume_41", i64* @_gasrem + %"$execptr_load_42" = load i8*, i8** @_execptr + call void @_throw(i8* %"$execptr_load_42", %_TyDescrTy_Typ* @"$TyDescr_Exception_26", i8* null) ret void } +declare void @_out_of_gas() + declare void @_throw(i8*, %_TyDescrTy_Typ*, i8*) define void @ThrowEmpty(i8* %0) { entry: - %"$_amount_39" = getelementptr i8, i8* %0, i32 0 - %"$_amount_40" = bitcast i8* %"$_amount_39" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_40" - %"$_sender_41" = getelementptr i8, i8* %0, i32 16 - %"$_sender_42" = bitcast i8* %"$_sender_41" to [20 x i8]* - call void @"$ThrowEmpty_35"(%Uint128 %_amount, [20 x i8]* %"$_sender_42") + %"$_amount_44" = getelementptr i8, i8* %0, i32 0 + %"$_amount_45" = bitcast i8* %"$_amount_44" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_45" + %"$_sender_46" = getelementptr i8, i8* %0, i32 16 + %"$_sender_47" = bitcast i8* %"$_sender_46" to [20 x i8]* + call void @"$ThrowEmpty_35"(%Uint128 %_amount, [20 x i8]* %"$_sender_47") ret void } -define internal void @"$ThrowObj_43"(%Uint128 %_amount, [20 x i8]* %"$_sender_44") { +define internal void @"$ThrowObj_48"(%Uint128 %_amount, [20 x i8]* %"$_sender_49") { entry: - %_sender = load [20 x i8], [20 x i8]* %"$_sender_44" - %"$gasrem_45" = load i64, i64* @_gasrem - %"$gascmp_46" = icmp ugt i64 1, %"$gasrem_45" - br i1 %"$gascmp_46", label %"$out_of_gas_47", label %"$have_gas_48" - -"$out_of_gas_47": ; preds = %entry - call void @_out_of_gas() - br label %"$have_gas_48" - -"$have_gas_48": ; preds = %"$out_of_gas_47", %entry - %"$consume_49" = sub i64 %"$gasrem_45", 1 - store i64 %"$consume_49", i64* @_gasrem - %t = alloca i8* + %_sender = load [20 x i8], [20 x i8]* %"$_sender_49" %"$gasrem_50" = load i64, i64* @_gasrem %"$gascmp_51" = icmp ugt i64 1, %"$gasrem_50" br i1 %"$gascmp_51", label %"$out_of_gas_52", label %"$have_gas_53" -"$out_of_gas_52": ; preds = %"$have_gas_48" +"$out_of_gas_52": ; preds = %entry call void @_out_of_gas() br label %"$have_gas_53" -"$have_gas_53": ; preds = %"$out_of_gas_52", %"$have_gas_48" +"$have_gas_53": ; preds = %"$out_of_gas_52", %entry %"$consume_54" = sub i64 %"$gasrem_50", 1 store i64 %"$consume_54", i64* @_gasrem - %"$msgobj_55_salloc_load" = load i8*, i8** @_execptr - %"$msgobj_55_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_55_salloc_load", i64 41) - %"$msgobj_55_salloc" = bitcast i8* %"$msgobj_55_salloc_salloc" to [41 x i8]* - %"$msgobj_55" = bitcast [41 x i8]* %"$msgobj_55_salloc" to i8* - store i8 1, i8* %"$msgobj_55" - %"$msgobj_fname_57" = getelementptr i8, i8* %"$msgobj_55", i32 1 - %"$msgobj_fname_58" = bitcast i8* %"$msgobj_fname_57" to %String* - store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_56", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_58" - %"$msgobj_td_59" = getelementptr i8, i8* %"$msgobj_55", i32 17 - %"$msgobj_td_60" = bitcast i8* %"$msgobj_td_59" to %_TyDescrTy_Typ** - store %_TyDescrTy_Typ* @"$TyDescr_String_18", %_TyDescrTy_Typ** %"$msgobj_td_60" - %"$msgobj_v_62" = getelementptr i8, i8* %"$msgobj_55", i32 25 - %"$msgobj_v_63" = bitcast i8* %"$msgobj_v_62" to %String* - store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_61", i32 0, i32 0), i32 3 }, %String* %"$msgobj_v_63" - store i8* %"$msgobj_55", i8** %t - %"$execptr_load_65" = load i8*, i8** @_execptr - %"$t_66" = load i8*, i8** %t - call void @_throw(i8* %"$execptr_load_65", %_TyDescrTy_Typ* @"$TyDescr_Exception_26", i8* %"$t_66") + %t = alloca i8* + %"$gasrem_55" = load i64, i64* @_gasrem + %"$gascmp_56" = icmp ugt i64 1, %"$gasrem_55" + br i1 %"$gascmp_56", label %"$out_of_gas_57", label %"$have_gas_58" + +"$out_of_gas_57": ; preds = %"$have_gas_53" + call void @_out_of_gas() + br label %"$have_gas_58" + +"$have_gas_58": ; preds = %"$out_of_gas_57", %"$have_gas_53" + %"$consume_59" = sub i64 %"$gasrem_55", 1 + store i64 %"$consume_59", i64* @_gasrem + %"$msgobj_60_salloc_load" = load i8*, i8** @_execptr + %"$msgobj_60_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_60_salloc_load", i64 41) + %"$msgobj_60_salloc" = bitcast i8* %"$msgobj_60_salloc_salloc" to [41 x i8]* + %"$msgobj_60" = bitcast [41 x i8]* %"$msgobj_60_salloc" to i8* + store i8 1, i8* %"$msgobj_60" + %"$msgobj_fname_62" = getelementptr i8, i8* %"$msgobj_60", i32 1 + %"$msgobj_fname_63" = bitcast i8* %"$msgobj_fname_62" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_61", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_63" + %"$msgobj_td_64" = getelementptr i8, i8* %"$msgobj_60", i32 17 + %"$msgobj_td_65" = bitcast i8* %"$msgobj_td_64" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_18", %_TyDescrTy_Typ** %"$msgobj_td_65" + %"$msgobj_v_67" = getelementptr i8, i8* %"$msgobj_60", i32 25 + %"$msgobj_v_68" = bitcast i8* %"$msgobj_v_67" to %String* + store %String { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$stringlit_66", i32 0, i32 0), i32 3 }, %String* %"$msgobj_v_68" + store i8* %"$msgobj_60", i8** %t + %"$t_70" = load i8*, i8** %t + %"$_literal_cost_call_72" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Exception_26", i8* %"$t_70") + %"$gasrem_73" = load i64, i64* @_gasrem + %"$gascmp_74" = icmp ugt i64 %"$_literal_cost_call_72", %"$gasrem_73" + br i1 %"$gascmp_74", label %"$out_of_gas_75", label %"$have_gas_76" + +"$out_of_gas_75": ; preds = %"$have_gas_58" + call void @_out_of_gas() + br label %"$have_gas_76" + +"$have_gas_76": ; preds = %"$out_of_gas_75", %"$have_gas_58" + %"$consume_77" = sub i64 %"$gasrem_73", %"$_literal_cost_call_72" + store i64 %"$consume_77", i64* @_gasrem + %"$execptr_load_78" = load i8*, i8** @_execptr + %"$t_79" = load i8*, i8** %t + call void @_throw(i8* %"$execptr_load_78", %_TyDescrTy_Typ* @"$TyDescr_Exception_26", i8* %"$t_79") ret void } -declare void @_out_of_gas() - declare i8* @_salloc(i8*, i64) +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + define void @ThrowObj(i8* %0) { entry: - %"$_amount_68" = getelementptr i8, i8* %0, i32 0 - %"$_amount_69" = bitcast i8* %"$_amount_68" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_69" - %"$_sender_70" = getelementptr i8, i8* %0, i32 16 - %"$_sender_71" = bitcast i8* %"$_sender_70" to [20 x i8]* - call void @"$ThrowObj_43"(%Uint128 %_amount, [20 x i8]* %"$_sender_71") + %"$_amount_81" = getelementptr i8, i8* %0, i32 0 + %"$_amount_82" = bitcast i8* %"$_amount_81" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_82" + %"$_sender_83" = getelementptr i8, i8* %0, i32 16 + %"$_sender_84" = bitcast i8* %"$_sender_83" to [20 x i8]* + call void @"$ThrowObj_48"(%Uint128 %_amount, [20 x i8]* %"$_sender_84") ret void }