d8 --allow_natives_syntax utility/debug.js utility/iterators.js utility/graph.js utility/arrays.js utility/hashmap.js utility/linkedlist.js utility/strings.js utility/modules.js parser/misc.js parser/scanner.js parser/parser.js parser/pp.js parser/ast-passes.js platform/memory.js ir/static.js ir/instructions.js ir/iir.js ir/cfg.js ir/functions.js ir/ir.js ir/inlining.js ir/lowering.js runtime/memlayout.js runtime/context.js runtime/objects.js codegen/asm.js codegen/asm-x86.js codegen/linearscan.js codegen/backend.js codegen/ir-to-asm-x86.js jslib/errors.js init.js main.js "runtime/primitives.js"@210.5-210.21: warning -- semicolon was inserted after this token "runtime/primitives.js"@402.52-402.53: warning -- semicolon was inserted after this token "runtime/primitives.js"@550.24-550.31: warning -- semicolon was inserted after this token i64 function getRefTag(box boxVal) [] { entry: box boxVal = arg 2; i64 $t_6 = and_box_i64 boxVal, 7; ret_i64 $t_6; } i8 function boxHasTag(box boxVal, i64 tagVal) [] { entry: box boxVal = arg 2; i64 tagVal = arg 3; i64 $t_7 = and_box_i64 boxVal, 7; i8 $t_6 = eq_i64 $t_7, tagVal; ret_i8 $t_6; } i8 function boxIsInt(box boxVal) [] { entry: box boxVal = arg 2; i64 $t_6 = and_box_i64 boxVal, 3; i8 $t_7 = eq_i64 $t_6, 0; ret_i8 $t_7; } i8 function boxIsObj(box boxVal) [] { entry: box boxVal = arg 2; i64 $t_6 = and_box_i64 boxVal, 7; i8 $t_5 = gte_i64 $t_6, 5; ret_i8 $t_5; } i8 function boxIsFunc(box boxVal) [] { entry: box boxVal = arg 2; i64 $t_6 = and_box_i64 boxVal, 7; i8 $t_5 = eq_i64 $t_6, 6; ret_i8 $t_5; } i8 function boxIsArray(box boxVal) [] { entry: box boxVal = arg 2; i64 $t_6 = and_box_i64 boxVal, 7; i8 $t_5 = eq_i64 $t_6, 5; ret_i8 $t_5; } i8 function boxToBool(box boxVal) [] { entry: box boxVal = arg 2; rptr $t_4 = get_ctx; box global = load_box $t_4, 0; i64 boxInt = icast_i64 boxVal; i8 $t_7 = eq_i64 boxInt, 9; if_i8 $t_7 then log_or_join else log_or_sec; log_or_sec: i8 $t_8 = eq_i64 boxInt, 25; if_i8 $t_8 then log_or_join else log_or_false; log_or_join: box $t_13 = phi [false log_or_false], [true entry], [true log_or_sec]; i8 $t_2 = call , global, $t_13; if_i8 $t_2 then log_or_join_1 else log_or_sec_1; log_or_false_3: jump log_or_join_3; log_or_false: jump log_or_join; log_or_sec_1: i8 $t_14 = eq_i64 boxInt, 17; if_i8 $t_14 then log_or_join_1 else log_or_false_1; log_or_join_1: box $t_19 = phi [false log_or_false_1], [true log_or_join], [true log_or_sec_1]; i8 $t_1 = call , global, $t_19; if_i8 $t_1 then log_or_join_2 else log_or_sec_2; if_false_1: ret_i8 0; log_or_false_1: jump log_or_join_1; log_or_sec_2: i8 $t_20 = eq_i64 boxInt, 0; if_i8 $t_20 then log_or_join_2 else log_or_false_2; log_or_join_2: box $t_25 = phi [false log_or_false_2], [true log_or_join_1], [true log_or_sec_2]; i8 $t_40 = call , global, $t_25; if_i8 $t_40 then if_true else if_false; if_true_1: ret_i8 1; log_or_false_2: jump log_or_join_2; if_true: ret_i8 0; if_false: i8 $t_27 = eq_i64 boxInt, 1; if_i8 $t_27 then log_or_join_3 else log_or_sec_3; log_or_sec_3: i64 $t_28 = and_box_i64 boxVal, 3; i8 $t_41 = eq_i64 $t_28, 0; if_i8 $t_41 then log_or_join_3 else log_or_false_3; log_or_join_3: box $t_33 = phi [false log_or_false_3], [true if_false], [true log_or_sec_3]; i8 $t_46 = call , global, $t_33; if_i8 $t_46 then if_true_1 else if_false_1; } box function throwError(box errorCtor, box message) [] { entry: box errorCtor = arg 2; box message = arg 3; rptr $t_5 = get_ctx; box global = load_box $t_5, 0; box $t_7 = call , global, errorCtor, "prototype" continue get_prop_val_cont; get_prop_val_cont: i64 $t_8 = and_box_i64 $t_7, 7; i8 $t_37 = eq_i64 $t_8, 6; if_i8 $t_37 then proto_merge else proto_not_obj; construct_cont: i64 $t_23 = and_box_i64 $t_22, 7; i8 $t_43 = gte_i64 $t_23, 5; if_i8 $t_43 then ret_merge else ret_not_obj; proto_not_obj: rptr $t_10 = get_ctx; box $t_11 = load_box $t_10, 8; jump proto_merge; proto_merge: box proto_val = phi [$t_11 proto_not_obj], [$t_7 get_prop_val_cont]; box $t_15 = new_object proto_val; i64 $t_16 = and_box_i64 errorCtor, 7; i8 $t_2 = eq_i64 $t_16, 6; if_i8 $t_2 then callee_is_func else callee_not_func; ret_not_obj: jump ret_merge; callee_not_func: rptr $t_18 = get_ctx; box $t_19 = load_box $t_18, 24; box $t_20 = call , global, $t_19, "callee is not a function" continue callee_is_func; callee_is_func: box $t_22 = construct errorCtor, $t_15, message continue construct_cont; ret_merge: box obj_val = phi [$t_15 ret_not_obj], [$t_22 construct_cont]; throw obj_val; } box function make_clos() [] { entry: ret undefined; } box function put_clos() [] { entry: ret undefined; } box function get_clos() [] { entry: ret undefined; } box function make_arg_obj() [] { entry: ret undefined; } box function div() [] { entry: ret undefined; } box function mod() [] { entry: ret undefined; } box function neq() [] { entry: ret undefined; } box function lt(box v1, box v2) [] { entry: box v1 = arg 2; box v2 = arg 3; rptr $t_5 = get_ctx; box global = load_box $t_5, 0; i64 $t_7 = and_box_i64 v1, 3; i8 $t_28 = eq_i64 $t_7, 0; if_i8 $t_28 then log_and_sec else log_and_join; if_false: ret undefined; log_and_sec: i64 $t_8 = and_box_i64 v2, 3; i8 $t_34 = eq_i64 $t_8, 0; if_i8 $t_34 then log_and_join else log_and_false; cond_false: jump cond_join; log_and_join: box $t_13 = phi [false log_and_false], [true log_and_sec], [false entry]; i8 $t_33 = call , global, $t_13; if_i8 $t_33 then if_true else if_false; cond_join: box $t_20 = phi [false cond_false], [true if_true]; ret $t_20; log_and_false: jump log_and_join; if_true: i64 i1 = icast_i64 v1; i64 i2 = icast_i64 v2; i8 $t_16 = lt_i64 i1, i2; if_i8 $t_16 then cond_join else cond_false; } box function eq(box v1, box v2) [] { entry: box v1 = arg 2; box v2 = arg 3; rptr $t_5 = get_ctx; box global = load_box $t_5, 0; i64 $t_7 = and_box_i64 v1, 3; i8 $t_28 = eq_i64 $t_7, 0; if_i8 $t_28 then log_and_sec else log_and_join; if_false: ret undefined; log_and_sec: i64 $t_8 = and_box_i64 v2, 3; i8 $t_34 = eq_i64 $t_8, 0; if_i8 $t_34 then log_and_join else log_and_false; cond_false: jump cond_join; log_and_join: box $t_13 = phi [false log_and_false], [true log_and_sec], [false entry]; i8 $t_33 = call , global, $t_13; if_i8 $t_33 then if_true else if_false; cond_join: box $t_20 = phi [false cond_false], [true if_true]; ret $t_20; log_and_false: jump log_and_join; if_true: i64 i1 = icast_i64 v1; i64 i2 = icast_i64 v2; i8 $t_16 = eq_i64 i1, i2; if_i8 $t_16 then cond_join else cond_false; } box function seq(box v1, box v2) [] { entry: box v1 = arg 2; box v2 = arg 3; rptr $t_5 = get_ctx; box global = load_box $t_5, 0; i64 $t_7 = and_box_i64 v1, 7; i8 $t_1 = eq_i64 $t_7, 3; if_i8 $t_1 then log_and_sec else log_and_join; if_false: i64 i1 = icast_i64 v1; i64 i2 = icast_i64 v2; i8 $t_16 = eq_i64 i1, i2; if_i8 $t_16 then cond_join else cond_false; log_and_sec: i64 $t_8 = and_box_i64 v2, 7; i8 $t_34 = eq_i64 $t_8, 3; if_i8 $t_34 then log_and_join else log_and_false; cond_false: jump cond_join; log_and_join: box $t_13 = phi [false log_and_false], [true log_and_sec], [false entry]; i8 $t_29 = call , global, $t_13; if_i8 $t_29 then if_true else if_false; cond_join: box $t_20 = phi [false cond_false], [true if_false]; ret $t_20; log_and_false: jump log_and_join; if_true: ret undefined; } box function add(box v1, box v2) [] { entry: box v1 = arg 2; box v2 = arg 3; rptr $t_5 = get_ctx; box global = load_box $t_5, 0; i64 $t_7 = and_box_i64 v1, 3; i8 $t_24 = eq_i64 $t_7, 0; if_i8 $t_24 then log_and_sec else log_and_join; if_true: box intResult = add_ovf v1, v2 normal iir_true overflow if_join; log_and_sec: i64 $t_8 = and_box_i64 v2, 3; i8 $t_30 = eq_i64 $t_8, 0; if_i8 $t_30 then log_and_join else log_and_false; iir_true: ret intResult; log_and_join: box $t_13 = phi [false log_and_false], [true log_and_sec], [false entry]; i8 $t_29 = call , global, $t_13; if_i8 $t_29 then if_true else if_join; if_join: ret undefined; log_and_false: jump log_and_join; } box function sub(box v1, box v2) [] { entry: box v1 = arg 2; box v2 = arg 3; rptr $t_5 = get_ctx; box global = load_box $t_5, 0; i64 $t_7 = and_box_i64 v1, 3; i8 $t_24 = eq_i64 $t_7, 0; if_i8 $t_24 then log_and_sec else log_and_join; if_true: box intResult = sub_ovf v1, v2 normal iir_true overflow if_join; log_and_sec: i64 $t_8 = and_box_i64 v2, 3; i8 $t_30 = eq_i64 $t_8, 0; if_i8 $t_30 then log_and_join else log_and_false; iir_true: ret intResult; log_and_join: box $t_13 = phi [false log_and_false], [true log_and_sec], [false entry]; i8 $t_29 = call , global, $t_13; if_i8 $t_29 then if_true else if_join; if_join: ret undefined; log_and_false: jump log_and_join; } box function mul(box v1, box v2) [] { entry: box v1 = arg 2; box v2 = arg 3; rptr $t_5 = get_ctx; box global = load_box $t_5, 0; i64 $t_7 = and_box_i64 v1, 3; i8 $t_26 = eq_i64 $t_7, 0; if_i8 $t_26 then log_and_sec else log_and_join; if_true: box intResult = mul_ovf v1, v2 normal iir_true overflow if_join; log_and_sec: i64 $t_8 = and_box_i64 v2, 3; i8 $t_32 = eq_i64 $t_8, 0; if_i8 $t_32 then log_and_join else log_and_false; iir_true: i64 $t_15 = rsft_box_i64 intResult, 2; box $t_16 = box_i64 $t_15; ret $t_16; log_and_join: box $t_13 = phi [false log_and_false], [true log_and_sec], [false entry]; i8 $t_31 = call , global, $t_13; if_i8 $t_31 then if_true else if_join; if_join: ret undefined; log_and_false: jump log_and_join; } i64 function getStrLen(box strVal) [] { entry: box strVal = arg 2; i32 $t_6 = load_i32 strVal, 4; i64 len = icast_i64 $t_6; ret_i64 len; } u16 function getCodeUnit(box strVal, i64 index) [] { entry: box strVal = arg 2; i64 index = arg 3; i64 $t_7 = mul_i64 index, 2; i64 offset = add_i64 8, $t_7; u16 codePoint = load_u16 strVal, offset; ret_u16 codePoint; } i64 function computeHash(box key) [] { entry: box key = arg 2; i64 $t_6 = and_box_i64 key, 3; i8 $t_5 = eq_i64 $t_6, 0; if_i8 $t_5 then if_true else if_false; loop_body: i64 $t_16 = mul_i64 i, 2; i64 $t_35 = add_i64 8, $t_16; u16 $t_41 = load_u16 key, $t_35; i64 $t_42 = icast_i64 $t_41; i64 $t_4 = mul_i64 hashCode, 256; i64 $t_48 = add_i64 $t_4, $t_42; i64 $t_49 = mod_i64 $t_48, 426870919; i64 $t_50 = add_i64 i, 1; jump loop_test; if_true: i64 $t_7 = icast_i64 key; ret_i64 $t_7; if_false: i32 $t_9 = load_i32 key, 4; i64 $t_29 = icast_i64 $t_9; jump loop_test; loop_exit: ret_i64 hashCode; loop_test: i64 i = phi [$t_50 loop_body], [0 if_false]; i64 hashCode = phi [$t_49 loop_body], [0 if_false]; i8 $t_15 = lt_i64 i, $t_29; if_i8 $t_15 then loop_body else loop_exit; } box function put_prop_val(box obj, box propName, box propVal) [] { entry: box obj = arg 2; box propName = arg 3; rptr $t_6 = get_ctx; box global = load_box $t_6, 0; i64 $t_8 = and_box_i64 propName, 3; i8 $t_98 = eq_i64 $t_8, 0; if_i8 $t_98 then if_true else if_false_2; log_and_join_1: box $t_91 = phi [false log_and_false_1], [true log_and_sec_1], [false if_false]; i8 $t_92 = call , $t_104, $t_91; if_i8 $t_92 then call_res_2 else if_false_4; loop_test: i64 hashIndex_1 = phi [$t_110 call_res], [$t_16 if_false_1]; i8 $t_53 = call , global, true; if_i8 $t_53 then loop_body else loop_exit; loop_body: i64 $t_21 = mul_i64 hashIndex_1, 16; box keyVal_1 = load_box $t_5, $t_21; rptr $t_23 = get_ctx; box $t_100 = load_box $t_23, 0; i64 $t_101 = and_box_i64 keyVal_1, 7; i8 $t_102 = eq_i64 $t_101, 3; if_i8 $t_102 then log_and_sec else log_and_join; if_false_1: i64 $t_25 = add_i64 hashIndex_1, 16; i64 $t_16 = mod_i64 $t_25, $t_109; jump loop_test; if_false: rptr $t_24 = get_ctx; box $t_104 = load_box $t_24, 0; i64 $t_105 = and_box_i64 keyVal_1, 7; i8 $t_106 = eq_i64 $t_105, 3; if_i8 $t_106 then log_and_sec_1 else log_and_join_1; loop_exit: ret undefined; call_res: i64 phires = phi [$t_43 if_true], [hashCode loop_test_1]; box $t_5 = load_box obj, 12; i32 $t_108 = load_i32 obj, 20; i64 $t_109 = icast_i64 $t_108; i64 $t_110 = mod_i64 phires, $t_109; jump loop_test; cond_false_1: jump cond_join_1; loop_body_1: i64 $t_18 = mul_i64 i, 2; i64 $t_17 = add_i64 8, $t_18; u16 $t_15 = load_u16 propName, $t_17; i64 $t_14 = icast_i64 $t_15; i64 $t_38 = mul_i64 hashCode, 256; i64 $t_39 = add_i64 $t_38, $t_14; i64 $t_40 = mod_i64 $t_39, 426870919; i64 $t_41 = add_i64 i, 1; jump loop_test_1; if_true: i64 $t_43 = icast_i64 propName; jump call_res; if_false_2: i32 $t_45 = load_i32 propName, 4; i64 $t_46 = icast_i64 $t_45; jump loop_test_1; log_and_sec_1: i64 $t_87 = and_box_i64 0, 7; i8 $t_88 = eq_i64 $t_87, 3; if_i8 $t_88 then log_and_join_1 else log_and_false_1; loop_test_1: i64 i = phi [$t_41 loop_body_1], [0 if_false_2]; i64 hashCode = phi [$t_40 loop_body_1], [0 if_false_2]; i8 $t_51 = lt_i64 i, $t_46; if_i8 $t_51 then loop_body_1 else call_res; call_res_1: box phires_1 = phi [$t_73 cond_join], [undefined log_and_join]; i8 $t_77 = call , global, phires_1; if_i8 $t_77 then loop_exit else if_false; log_and_false_1: jump log_and_join_1; if_false_3: i64 i1 = icast_i64 keyVal_1; i64 i2 = icast_i64 propName; i8 $t_64 = eq_i64 i1, i2; if_i8 $t_64 then cond_join else cond_false; log_and_sec: i64 $t_66 = and_box_i64 propName, 7; i8 $t_67 = eq_i64 $t_66, 3; if_i8 $t_67 then log_and_join else log_and_false; cond_false: jump cond_join; log_and_join: box $t_70 = phi [false log_and_false], [true log_and_sec], [false loop_body]; i8 $t_71 = call , $t_100, $t_70; if_i8 $t_71 then call_res_1 else if_false_3; cond_join: box $t_73 = phi [false cond_false], [true if_false_3]; jump call_res_1; log_and_false: jump log_and_join; if_false_4: i64 i1_1 = icast_i64 keyVal_1; i64 i2_1 = icast_i64 0; i8 $t_85 = eq_i64 i1_1, i2_1; if_i8 $t_85 then cond_join_1 else cond_false_1; call_res_2: box phires_2 = phi [$t_94 cond_join_1], [undefined log_and_join_1]; i8 $t_55 = call , global, phires_2; if_i8 $t_55 then loop_exit else if_false_1; cond_join_1: box $t_94 = phi [false cond_false_1], [true if_false_4]; jump call_res_2; } box function get_prop_val(box obj, box propName) [] { entry: box obj = arg 2; box propName = arg 3; rptr $t_5 = get_ctx; box global = load_box $t_5, 0; i64 $t_7 = and_box_i64 propName, 3; i8 $t_101 = eq_i64 $t_7, 0; if_i8 $t_101 then if_true_1 else if_false_2; loop_exit_1: box $t_8 = call , global, global, "undefined" continue get_prop_val_cont_4; loop_body: box keyVal = phi [keyVal_3 loop_exit], [undefined call_res]; box obj_1 = phi [obj_3 loop_exit], [obj call_res]; box tblPtr_1 = load_box obj_1, 12; i32 $t_17 = load_i32 obj_1, 20; i64 tblSize_1 = icast_i64 $t_17; i64 hashIndex_1 = mod_i64 phires, tblSize_1; jump loop_test; loop_test: i64 hashIndex_2 = phi [hashIndex_1 loop_body], [$t_2 if_false_1]; box keyVal_1 = phi [keyVal loop_body], [keyVal_2 if_false_1]; i8 $t_77 = call , global, true; if_i8 $t_77 then loop_body_1 else loop_exit; loop_body_1: i64 $t_28 = mul_i64 hashIndex_2, 16; box keyVal_2 = load_box tblPtr_1, $t_28; rptr $t_30 = get_ctx; box $t_129 = load_box $t_30, 0; i64 $t_130 = and_box_i64 keyVal_2, 7; i8 $t_131 = eq_i64 $t_130, 3; if_i8 $t_131 then log_and_sec else log_and_join; if_true: box $t_31 = call , global, global, "IRType" continue get_prop_val_cont; if_false: rptr $t_45 = get_ctx; box $t_133 = load_box $t_45, 0; i64 $t_134 = and_box_i64 keyVal_2, 7; i8 $t_135 = eq_i64 $t_134, 3; if_i8 $t_135 then log_and_sec_1 else log_and_join_1; get_prop_val_cont: box $t_32 = call , global, $t_31, "box" continue get_prop_val_cont_1; get_prop_val_cont_1: box $t_33 = call , global, global, "tblPointer" continue get_prop_val_cont_2; get_prop_val_cont_2: i64 $t_34 = mul_i64 hashIndex_2, 16; i64 $t_35 = add_i64 $t_34, 8; box $t_36 = call , global, global, "load" continue get_prop_val_cont_3; get_prop_val_cont_3: i64 $t_37 = and_box_i64 $t_36, 7; i8 $t_137 = eq_i64 $t_37, 6; if_i8 $t_137 then callee_is_func else callee_not_func; callee_not_func: rptr $t_39 = get_ctx; box $t_40 = load_box $t_39, 24; box $t_41 = call , global, $t_40, "callee is not a function" continue callee_is_func; callee_is_func: box propVal_2 = call $t_36, global, $t_32, $t_33, $t_35 continue call_cont_3; cond_join_1: box $t_118 = phi [false cond_false_1], [true if_false_4]; jump call_res_2; loop_exit: box keyVal_3 = phi [keyVal_1 loop_test], [keyVal_2 call_res_2]; box obj_3 = load_box obj_1, 4; box $t_58 = call , global, obj_3, null; i8 $t_125 = call , global, $t_58; if_i8 $t_125 then loop_body else loop_exit_1; call_cont_3: ret propVal_2; get_prop_val_cont_4: ret $t_8; if_false_1: i64 $t_46 = add_i64 hashIndex_2, 16; i64 $t_2 = mod_i64 $t_46, tblSize_1; jump loop_test; call_res: i64 phires = phi [$t_67 if_true_1], [hashCode loop_test_1]; jump loop_body; log_and_false_1: jump log_and_join_1; loop_body_2: i64 $t_25 = mul_i64 i, 2; i64 $t_24 = add_i64 8, $t_25; u16 $t_22 = load_u16 propName, $t_24; i64 $t_21 = icast_i64 $t_22; i64 $t_62 = mul_i64 hashCode, 256; i64 $t_63 = add_i64 $t_62, $t_21; i64 $t_64 = mod_i64 $t_63, 426870919; i64 $t_65 = add_i64 i, 1; jump loop_test_1; if_true_1: i64 $t_67 = icast_i64 propName; jump call_res; if_false_2: i32 $t_69 = load_i32 propName, 4; i64 $t_70 = icast_i64 $t_69; jump loop_test_1; cond_false_1: jump cond_join_1; loop_test_1: i64 i = phi [$t_65 loop_body_2], [0 if_false_2]; i64 hashCode = phi [$t_64 loop_body_2], [0 if_false_2]; i8 $t_75 = lt_i64 i, $t_70; if_i8 $t_75 then loop_body_2 else call_res; call_res_1: box phires_1 = phi [$t_97 cond_join], [undefined log_and_join]; i8 $t_126 = call , global, phires_1; if_i8 $t_126 then if_true else if_false; log_and_join_1: box $t_115 = phi [false log_and_false_1], [true log_and_sec_1], [false if_false]; i8 $t_116 = call , $t_133, $t_115; if_i8 $t_116 then call_res_2 else if_false_4; if_false_3: i64 i1 = icast_i64 keyVal_2; i64 i2 = icast_i64 propName; i8 $t_88 = eq_i64 i1, i2; if_i8 $t_88 then cond_join else cond_false; log_and_sec: i64 $t_90 = and_box_i64 propName, 7; i8 $t_91 = eq_i64 $t_90, 3; if_i8 $t_91 then log_and_join else log_and_false; cond_false: jump cond_join; log_and_join: box $t_94 = phi [false log_and_false], [true log_and_sec], [false loop_body_1]; i8 $t_95 = call , $t_129, $t_94; if_i8 $t_95 then call_res_1 else if_false_3; cond_join: box $t_97 = phi [false cond_false], [true if_false_3]; jump call_res_1; log_and_false: jump log_and_join; log_and_sec_1: i64 $t_111 = and_box_i64 0, 7; i8 $t_112 = eq_i64 $t_111, 3; if_i8 $t_112 then log_and_join_1 else log_and_false_1; call_res_2: box phires_2 = phi [$t_118 cond_join_1], [undefined log_and_join_1]; i8 $t_127 = call , global, phires_2; if_i8 $t_127 then loop_exit else if_false_1; if_false_4: i64 i1_1 = icast_i64 keyVal_2; i64 i2_1 = icast_i64 0; i8 $t_109 = eq_i64 i1_1, i2_1; if_i8 $t_109 then cond_join_1 else cond_false_1; } box function () [] { box function fib(box n) [] { entry: box n = arg 2; rptr $t_4 = get_ctx; box global = load_box $t_4, 0; rptr $t_6 = get_ctx; box $t_88 = load_box $t_6, 0; i64 $t_51 = and_box_i64 n, 3; i8 $t_108 = eq_i64 $t_51, 0; if_i8 $t_108 then log_and_sec else log_and_join; if_true: ret n; if_false: rptr $t_8 = get_ctx; box $t_110 = load_box $t_8, 0; i64 $t_111 = and_box_i64 n, 3; i8 $t_112 = eq_i64 $t_111, 0; if_i8 $t_112 then log_and_sec_1 else log_and_join_1; get_prop_val_cont: i64 $t_10 = and_box_i64 $t_9, 7; i8 $t_114 = eq_i64 $t_10, 6; if_i8 $t_114 then callee_is_func else callee_not_func; callee_not_func: rptr $t_12 = get_ctx; box $t_13 = load_box $t_12, 24; box $t_14 = call , global, $t_13, "callee is not a function" continue callee_is_func; callee_is_func: box $t_16 = call $t_9, global, phires_1 continue call_cont_2; if_true_4: box intResult_2 = sub_ovf n, 2 normal call_res_4 overflow if_join_2; call_cont_5: rptr $t_26 = get_ctx; box $t_116 = load_box $t_26, 0; i64 $t_117 = and_box_i64 $t_16, 3; i8 $t_118 = eq_i64 $t_117, 0; if_i8 $t_118 then log_and_sec_2 else log_and_join_2; call_cont_2: rptr $t_17 = get_ctx; box $t_120 = load_box $t_17, 0; i64 $t_121 = and_box_i64 n, 3; i8 $t_122 = eq_i64 $t_121, 0; if_i8 $t_122 then log_and_sec_3 else log_and_join_3; get_prop_val_cont_1: i64 $t_19 = and_box_i64 $t_18, 7; i8 $t_124 = eq_i64 $t_19, 6; if_i8 $t_124 then callee_is_func_1 else callee_not_func_1; callee_not_func_1: rptr $t_21 = get_ctx; box $t_22 = load_box $t_21, 24; box $t_23 = call , global, $t_22, "callee is not a function" continue callee_is_func_1; callee_is_func_1: box $t_25 = call $t_18, global, phires_4 continue call_cont_5; log_and_sec_3: i64 $t_95 = and_box_i64 2, 3; i8 $t_96 = eq_i64 $t_95, 0; if_i8 $t_96 then log_and_join_3 else log_and_false_3; call_res: box phires = phi [$t_44 cond_join], [undefined log_and_join]; i8 $t_107 = call , global, phires; if_i8 $t_107 then if_true else if_false; log_and_false_2: jump log_and_join_2; if_join_1: jump call_res_3; log_and_sec: i64 $t_37 = and_box_i64 2, 3; i8 $t_38 = eq_i64 $t_37, 0; if_i8 $t_38 then log_and_join else log_and_false; cond_false: jump cond_join; log_and_join: box $t_41 = phi [false log_and_false], [true log_and_sec], [false entry]; i8 $t_42 = call , $t_88, $t_41; if_i8 $t_42 then if_true_1 else call_res; cond_join: box $t_44 = phi [false cond_false], [true if_true_1]; jump call_res; log_and_false: jump log_and_join; if_true_1: i64 i1 = icast_i64 n; i64 i2 = icast_i64 2; i8 $t_49 = lt_i64 i1, i2; if_i8 $t_49 then cond_join else cond_false; call_res_1: box phires_1 = phi [undefined if_join], [intResult if_true_2], [undefined log_and_join_1]; box $t_9 = call , global, global, "fib" continue get_prop_val_cont; call_res_4: box phires_4 = phi [undefined if_join_2], [intResult_2 if_true_4], [undefined log_and_join_3]; box $t_18 = call , global, global, "fib" continue get_prop_val_cont_1; if_true_2: box intResult = sub_ovf n, 1 normal call_res_1 overflow if_join; log_and_sec_1: i64 $t_58 = and_box_i64 1, 3; i8 $t_59 = eq_i64 $t_58, 0; if_i8 $t_59 then log_and_join_1 else log_and_false_1; log_and_join_2: box $t_83 = phi [false log_and_false_2], [true log_and_sec_2], [false call_cont_5]; i8 $t_84 = call , $t_116, $t_83; if_i8 $t_84 then if_true_3 else call_res_3; log_and_join_1: box $t_62 = phi [false log_and_false_1], [true log_and_sec_1], [false if_false]; i8 $t_63 = call , $t_110, $t_62; if_i8 $t_63 then if_true_2 else call_res_1; if_join: jump call_res_1; log_and_false_1: jump log_and_join_1; log_and_join_3: box $t_99 = phi [false log_and_false_3], [true log_and_sec_3], [false call_cont_2]; i8 $t_100 = call , $t_120, $t_99; if_i8 $t_100 then if_true_4 else call_res_4; log_and_false_3: jump log_and_join_3; call_res_3: box phires_3 = phi [undefined if_join_1], [intResult_1 if_true_3], [undefined log_and_join_2]; ret phires_3; if_join_2: jump call_res_4; if_true_3: box intResult_1 = add_ovf $t_16, $t_25 normal call_res_3 overflow if_join_1; log_and_sec_2: i64 $t_79 = and_box_i64 $t_25, 3; i8 $t_80 = eq_i64 $t_79, 0; if_i8 $t_80 then log_and_join_2 else log_and_false_2; } entry: rptr $t_3 = get_ctx; box global = load_box $t_3, 0; box $t_5 = call , global, ; box $t_6 = call , global, global, "fib", $t_5 continue put_prop_val_cont; put_prop_val_cont: ret undefined; }