//! > Test recursive call.

//! > test_runner_name
test_function_lowering_phases

//! > function
fn foo() {
  match Option::<felt252>::None {
     Option::Some(_) => panic(Default::default()),
     Option::None => foo(),
  }
}

//! > function_name
foo

//! > module_code

//! > semantic_diagnostics

//! > lowering_diagnostics

//! > before_all
Parameters:
blk0 (root):
Statements:
  (v0: ()) <- struct_construct()
  (v1: core::option::Option::<core::felt252>) <- Option::None(v0)
End:
  Match(match_enum(v1) {
    Option::Some(v2) => blk1,
    Option::None(v3) => blk2,
  })

blk1:
Statements:
  (v4: core::array::Array::<core::felt252>) <- core::array::ArrayDefault::<core::felt252>::default()
  (v5: core::panics::Panic) <- struct_construct()
  (v6: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v5, v4)
End:
  Panic(v6)

blk2:
Statements:
  (v7: ()) <- test::foo()
End:
  Goto(blk3, {v7 -> v8})

blk3:
Statements:
End:
  Return(v8)

//! > after_inlining
Parameters:
blk0 (root):
Statements:
  (v0: ()) <- struct_construct()
  (v1: core::option::Option::<core::felt252>) <- Option::None(v0)
End:
  Match(match_enum(v1) {
    Option::Some(v2) => blk1,
    Option::None(v3) => blk2,
  })

blk1:
Statements:
End:
  Goto(blk5, {})

blk2:
Statements:
  (v7: ()) <- test::foo()
End:
  Goto(blk3, {v7 -> v8})

blk3:
Statements:
End:
  Return(v8)

blk4:
Statements:
  (v5: core::panics::Panic) <- struct_construct()
  (v6: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v5, v4)
End:
  Panic(v6)

blk5:
Statements:
End:
  Goto(blk7, {})

blk6:
Statements:
End:
  Goto(blk4, {v9 -> v4})

blk7:
Statements:
  (v10: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
End:
  Goto(blk6, {v10 -> v9})

//! > after_add_withdraw_gas
Parameters:
blk0 (root):
Statements:
End:
  Match(match core::gas::withdraw_gas() {
    Option::Some => blk8,
    Option::None => blk9,
  })

blk1:
Statements:
End:
  Goto(blk5, {})

blk2:
Statements:
  (v7: ()) <- test::foo()
End:
  Goto(blk3, {v7 -> v8})

blk3:
Statements:
End:
  Return(v8)

blk4:
Statements:
  (v5: core::panics::Panic) <- struct_construct()
  (v6: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v5, v4)
End:
  Panic(v6)

blk5:
Statements:
End:
  Goto(blk7, {})

blk6:
Statements:
End:
  Goto(blk4, {v9 -> v4})

blk7:
Statements:
  (v10: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
End:
  Goto(blk6, {v10 -> v9})

blk8:
Statements:
  (v0: ()) <- struct_construct()
  (v1: core::option::Option::<core::felt252>) <- Option::None(v0)
End:
  Match(match_enum(v1) {
    Option::Some(v2) => blk1,
    Option::None(v3) => blk2,
  })

blk9:
Statements:
  (v11: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
  (v12: core::felt252) <- 375233589013918064796019u
  (v14: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v11, v12)
  (v13: core::panics::Panic) <- struct_construct()
  (v15: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v13, v14)
End:
  Panic(v15)

//! > after_lower_panics
Parameters:
blk0 (root):
Statements:
End:
  Match(match core::gas::withdraw_gas() {
    Option::Some => blk8,
    Option::None => blk9,
  })

blk1:
Statements:
End:
  Goto(blk5, {})

blk2:
Statements:
  (v16: core::panics::PanicResult::<((),)>) <- test::foo()
End:
  Match(match_enum(v16) {
    PanicResult::Ok(v17) => blk11,
    PanicResult::Err(v19) => blk12,
  })

blk3:
Statements:
  (v20: ((),)) <- struct_construct(v8)
  (v21: core::panics::PanicResult::<((),)>) <- PanicResult::Ok(v20)
End:
  Return(v21)

blk4:
Statements:
  (v5: core::panics::Panic) <- struct_construct()
  (v6: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v5, v4)
  (v22: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v6)
End:
  Return(v22)

blk5:
Statements:
End:
  Goto(blk7, {})

blk6:
Statements:
End:
  Goto(blk4, {v9 -> v4})

blk7:
Statements:
  (v10: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
End:
  Goto(blk6, {v10 -> v9})

blk8:
Statements:
  (v0: ()) <- struct_construct()
  (v1: core::option::Option::<core::felt252>) <- Option::None(v0)
End:
  Match(match_enum(v1) {
    Option::Some(v2) => blk1,
    Option::None(v3) => blk2,
  })

blk9:
Statements:
  (v11: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
  (v12: core::felt252) <- 375233589013918064796019u
  (v14: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v11, v12)
  (v13: core::panics::Panic) <- struct_construct()
  (v15: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v13, v14)
  (v23: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v15)
End:
  Return(v23)

blk10:
Statements:
End:
  Goto(blk3, {v7 -> v8})

blk11:
Statements:
  (v18: ()) <- struct_destructure(v17)
End:
  Goto(blk10, {v18 -> v7})

blk12:
Statements:
  (v24: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v19)
End:
  Return(v24)

//! > after_add_destructs
Parameters:
blk0 (root):
Statements:
End:
  Match(match core::gas::withdraw_gas() {
    Option::Some => blk8,
    Option::None => blk9,
  })

blk1:
Statements:
End:
  Goto(blk5, {})

blk2:
Statements:
  (v16: core::panics::PanicResult::<((),)>) <- test::foo()
End:
  Match(match_enum(v16) {
    PanicResult::Ok(v17) => blk11,
    PanicResult::Err(v19) => blk12,
  })

blk3:
Statements:
  (v20: ((),)) <- struct_construct(v8)
  (v21: core::panics::PanicResult::<((),)>) <- PanicResult::Ok(v20)
End:
  Return(v21)

blk4:
Statements:
  (v5: core::panics::Panic) <- struct_construct()
  (v6: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v5, v4)
  (v22: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v6)
End:
  Return(v22)

blk5:
Statements:
End:
  Goto(blk7, {})

blk6:
Statements:
End:
  Goto(blk4, {v9 -> v4})

blk7:
Statements:
  (v10: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
End:
  Goto(blk6, {v10 -> v9})

blk8:
Statements:
  (v0: ()) <- struct_construct()
  (v1: core::option::Option::<core::felt252>) <- Option::None(v0)
End:
  Match(match_enum(v1) {
    Option::Some(v2) => blk1,
    Option::None(v3) => blk2,
  })

blk9:
Statements:
  (v11: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
  (v12: core::felt252) <- 375233589013918064796019u
  (v14: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v11, v12)
  (v13: core::panics::Panic) <- struct_construct()
  (v15: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v13, v14)
  (v23: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v15)
End:
  Return(v23)

blk10:
Statements:
End:
  Goto(blk3, {v7 -> v8})

blk11:
Statements:
  (v18: ()) <- struct_destructure(v17)
End:
  Goto(blk10, {v18 -> v7})

blk12:
Statements:
  (v24: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v19)
End:
  Return(v24)

//! > after_optimize_remappings1
Parameters:
blk0 (root):
Statements:
End:
  Match(match core::gas::withdraw_gas() {
    Option::Some => blk8,
    Option::None => blk9,
  })

blk1:
Statements:
End:
  Goto(blk5, {})

blk2:
Statements:
  (v16: core::panics::PanicResult::<((),)>) <- test::foo()
End:
  Match(match_enum(v16) {
    PanicResult::Ok(v17) => blk11,
    PanicResult::Err(v19) => blk12,
  })

blk3:
Statements:
  (v20: ((),)) <- struct_construct(v18)
  (v21: core::panics::PanicResult::<((),)>) <- PanicResult::Ok(v20)
End:
  Return(v21)

blk4:
Statements:
  (v5: core::panics::Panic) <- struct_construct()
  (v6: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v5, v10)
  (v22: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v6)
End:
  Return(v22)

blk5:
Statements:
End:
  Goto(blk7, {})

blk6:
Statements:
End:
  Goto(blk4, {})

blk7:
Statements:
  (v10: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
End:
  Goto(blk6, {})

blk8:
Statements:
  (v0: ()) <- struct_construct()
  (v1: core::option::Option::<core::felt252>) <- Option::None(v0)
End:
  Match(match_enum(v1) {
    Option::Some(v2) => blk1,
    Option::None(v3) => blk2,
  })

blk9:
Statements:
  (v11: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
  (v12: core::felt252) <- 375233589013918064796019u
  (v14: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v11, v12)
  (v13: core::panics::Panic) <- struct_construct()
  (v15: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v13, v14)
  (v23: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v15)
End:
  Return(v23)

blk10:
Statements:
End:
  Goto(blk3, {})

blk11:
Statements:
  (v18: ()) <- struct_destructure(v17)
End:
  Goto(blk10, {})

blk12:
Statements:
  (v24: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v19)
End:
  Return(v24)

//! > after_reorder_statements1
Parameters:
blk0 (root):
Statements:
End:
  Match(match core::gas::withdraw_gas() {
    Option::Some => blk8,
    Option::None => blk9,
  })

blk1:
Statements:
End:
  Goto(blk5, {})

blk2:
Statements:
  (v16: core::panics::PanicResult::<((),)>) <- test::foo()
End:
  Match(match_enum(v16) {
    PanicResult::Ok(v17) => blk11,
    PanicResult::Err(v19) => blk12,
  })

blk3:
Statements:
  (v18: ()) <- struct_destructure(v17)
  (v20: ((),)) <- struct_construct(v18)
  (v21: core::panics::PanicResult::<((),)>) <- PanicResult::Ok(v20)
End:
  Return(v21)

blk4:
Statements:
  (v5: core::panics::Panic) <- struct_construct()
  (v6: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v5, v10)
  (v22: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v6)
End:
  Return(v22)

blk5:
Statements:
End:
  Goto(blk7, {})

blk6:
Statements:
End:
  Goto(blk4, {})

blk7:
Statements:
  (v10: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
End:
  Goto(blk6, {})

blk8:
Statements:
  (v0: ()) <- struct_construct()
  (v1: core::option::Option::<core::felt252>) <- Option::None(v0)
End:
  Match(match_enum(v1) {
    Option::Some(v2) => blk1,
    Option::None(v3) => blk2,
  })

blk9:
Statements:
  (v11: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
  (v12: core::felt252) <- 375233589013918064796019u
  (v14: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v11, v12)
  (v13: core::panics::Panic) <- struct_construct()
  (v15: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v13, v14)
  (v23: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v15)
End:
  Return(v23)

blk10:
Statements:
End:
  Goto(blk3, {})

blk11:
Statements:
End:
  Goto(blk10, {})

blk12:
Statements:
  (v24: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v19)
End:
  Return(v24)

//! > after_branch_inversion
Parameters:
blk0 (root):
Statements:
End:
  Match(match core::gas::withdraw_gas() {
    Option::Some => blk8,
    Option::None => blk9,
  })

blk1:
Statements:
End:
  Goto(blk5, {})

blk2:
Statements:
  (v16: core::panics::PanicResult::<((),)>) <- test::foo()
End:
  Match(match_enum(v16) {
    PanicResult::Ok(v17) => blk11,
    PanicResult::Err(v19) => blk12,
  })

blk3:
Statements:
  (v18: ()) <- struct_destructure(v17)
  (v20: ((),)) <- struct_construct(v18)
  (v21: core::panics::PanicResult::<((),)>) <- PanicResult::Ok(v20)
End:
  Return(v21)

blk4:
Statements:
  (v5: core::panics::Panic) <- struct_construct()
  (v6: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v5, v10)
  (v22: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v6)
End:
  Return(v22)

blk5:
Statements:
End:
  Goto(blk7, {})

blk6:
Statements:
End:
  Goto(blk4, {})

blk7:
Statements:
  (v10: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
End:
  Goto(blk6, {})

blk8:
Statements:
  (v0: ()) <- struct_construct()
  (v1: core::option::Option::<core::felt252>) <- Option::None(v0)
End:
  Match(match_enum(v1) {
    Option::Some(v2) => blk1,
    Option::None(v3) => blk2,
  })

blk9:
Statements:
  (v11: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
  (v12: core::felt252) <- 375233589013918064796019u
  (v14: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v11, v12)
  (v13: core::panics::Panic) <- struct_construct()
  (v15: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v13, v14)
  (v23: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v15)
End:
  Return(v23)

blk10:
Statements:
End:
  Goto(blk3, {})

blk11:
Statements:
End:
  Goto(blk10, {})

blk12:
Statements:
  (v24: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v19)
End:
  Return(v24)

//! > after_reorder_statements2
Parameters:
blk0 (root):
Statements:
End:
  Match(match core::gas::withdraw_gas() {
    Option::Some => blk8,
    Option::None => blk9,
  })

blk1:
Statements:
End:
  Goto(blk5, {})

blk2:
Statements:
  (v16: core::panics::PanicResult::<((),)>) <- test::foo()
End:
  Match(match_enum(v16) {
    PanicResult::Ok(v17) => blk11,
    PanicResult::Err(v19) => blk12,
  })

blk3:
Statements:
  (v18: ()) <- struct_destructure(v17)
  (v20: ((),)) <- struct_construct(v18)
  (v21: core::panics::PanicResult::<((),)>) <- PanicResult::Ok(v20)
End:
  Return(v21)

blk4:
Statements:
  (v5: core::panics::Panic) <- struct_construct()
  (v6: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v5, v10)
  (v22: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v6)
End:
  Return(v22)

blk5:
Statements:
End:
  Goto(blk7, {})

blk6:
Statements:
End:
  Goto(blk4, {})

blk7:
Statements:
  (v10: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
End:
  Goto(blk6, {})

blk8:
Statements:
  (v0: ()) <- struct_construct()
  (v1: core::option::Option::<core::felt252>) <- Option::None(v0)
End:
  Match(match_enum(v1) {
    Option::Some(v2) => blk1,
    Option::None(v3) => blk2,
  })

blk9:
Statements:
  (v11: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
  (v12: core::felt252) <- 375233589013918064796019u
  (v14: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v11, v12)
  (v13: core::panics::Panic) <- struct_construct()
  (v15: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v13, v14)
  (v23: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v15)
End:
  Return(v23)

blk10:
Statements:
End:
  Goto(blk3, {})

blk11:
Statements:
End:
  Goto(blk10, {})

blk12:
Statements:
  (v24: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v19)
End:
  Return(v24)

//! > const_folding
Parameters:
blk0 (root):
Statements:
End:
  Match(match core::gas::withdraw_gas() {
    Option::Some => blk8,
    Option::None => blk9,
  })

blk1:
Statements:
End:
  Goto(blk5, {})

blk2:
Statements:
  (v16: core::panics::PanicResult::<((),)>) <- test::foo()
End:
  Match(match_enum(v16) {
    PanicResult::Ok(v17) => blk11,
    PanicResult::Err(v19) => blk12,
  })

blk3:
Statements:
  (v18: ()) <- struct_destructure(v17)
  (v20: ((),)) <- struct_construct(v18)
  (v21: core::panics::PanicResult::<((),)>) <- PanicResult::Ok(v20)
End:
  Return(v21)

blk4:
Statements:
  (v5: core::panics::Panic) <- struct_construct()
  (v6: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v5, v10)
  (v22: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v6)
End:
  Return(v22)

blk5:
Statements:
End:
  Goto(blk7, {})

blk6:
Statements:
End:
  Goto(blk4, {})

blk7:
Statements:
  (v10: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
End:
  Goto(blk6, {})

blk8:
Statements:
  (v0: ()) <- struct_construct()
  (v1: core::option::Option::<core::felt252>) <- Option::None(v0)
End:
  Match(match_enum(v1) {
    Option::Some(v2) => blk1,
    Option::None(v3) => blk2,
  })

blk9:
Statements:
  (v11: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
  (v12: core::felt252) <- 375233589013918064796019u
  (v14: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v11, v12)
  (v13: core::panics::Panic) <- struct_construct()
  (v15: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v13, v14)
  (v23: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v15)
End:
  Return(v23)

blk10:
Statements:
End:
  Goto(blk3, {})

blk11:
Statements:
End:
  Goto(blk10, {})

blk12:
Statements:
  (v24: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v19)
End:
  Return(v24)

//! > after_optimize_matches
Parameters:
blk0 (root):
Statements:
End:
  Match(match core::gas::withdraw_gas() {
    Option::Some => blk8,
    Option::None => blk9,
  })

blk1:
Statements:
End:
  Goto(blk5, {})

blk2:
Statements:
  (v16: core::panics::PanicResult::<((),)>) <- test::foo()
End:
  Match(match_enum(v16) {
    PanicResult::Ok(v17) => blk11,
    PanicResult::Err(v19) => blk12,
  })

blk3:
Statements:
  (v18: ()) <- struct_destructure(v17)
  (v20: ((),)) <- struct_construct(v18)
  (v21: core::panics::PanicResult::<((),)>) <- PanicResult::Ok(v20)
End:
  Return(v21)

blk4:
Statements:
  (v5: core::panics::Panic) <- struct_construct()
  (v6: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v5, v10)
  (v22: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v6)
End:
  Return(v22)

blk5:
Statements:
End:
  Goto(blk7, {})

blk6:
Statements:
End:
  Goto(blk4, {})

blk7:
Statements:
  (v10: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
End:
  Goto(blk6, {})

blk8:
Statements:
  (v0: ()) <- struct_construct()
End:
  Goto(blk2, {})

blk9:
Statements:
  (v11: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
  (v12: core::felt252) <- 375233589013918064796019u
  (v14: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v11, v12)
  (v13: core::panics::Panic) <- struct_construct()
  (v15: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v13, v14)
  (v23: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v15)
End:
  Return(v23)

blk10:
Statements:
End:
  Goto(blk3, {})

blk11:
Statements:
End:
  Goto(blk10, {})

blk12:
Statements:
  (v24: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v19)
End:
  Return(v24)

//! > after_lower_implicits
Parameters: v25: core::RangeCheck, v26: core::gas::GasBuiltin
blk0 (root):
Statements:
End:
  Match(match core::gas::withdraw_gas(v25, v26) {
    Option::Some(v27, v28) => blk8,
    Option::None(v29, v30) => blk9,
  })

blk1:
Statements:
End:
  Goto(blk5, {})

blk2:
Statements:
  (v33: core::RangeCheck, v34: core::gas::GasBuiltin, v16: core::panics::PanicResult::<((),)>) <- test::foo(v31, v32)
End:
  Match(match_enum(v16) {
    PanicResult::Ok(v17) => blk11,
    PanicResult::Err(v19) => blk12,
  })

blk3:
Statements:
  (v18: ()) <- struct_destructure(v17)
  (v20: ((),)) <- struct_construct(v18)
  (v21: core::panics::PanicResult::<((),)>) <- PanicResult::Ok(v20)
End:
  Return(v37, v38, v21)

blk4:
Statements:
  (v5: core::panics::Panic) <- struct_construct()
  (v6: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v5, v10)
  (v22: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v6)
End:
  Return(v22)

blk5:
Statements:
End:
  Goto(blk7, {})

blk6:
Statements:
End:
  Goto(blk4, {})

blk7:
Statements:
  (v10: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
End:
  Goto(blk6, {})

blk8:
Statements:
  (v0: ()) <- struct_construct()
End:
  Goto(blk2, {v27 -> v31, v28 -> v32})

blk9:
Statements:
  (v11: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
  (v12: core::felt252) <- 375233589013918064796019u
  (v14: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v11, v12)
  (v13: core::panics::Panic) <- struct_construct()
  (v15: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v13, v14)
  (v23: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v15)
End:
  Return(v29, v30, v23)

blk10:
Statements:
End:
  Goto(blk3, {v35 -> v37, v36 -> v38})

blk11:
Statements:
End:
  Goto(blk10, {v33 -> v35, v34 -> v36})

blk12:
Statements:
  (v24: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v19)
End:
  Return(v33, v34, v24)

//! > after_optimize_remappings2
Parameters: v25: core::RangeCheck, v26: core::gas::GasBuiltin
blk0 (root):
Statements:
End:
  Match(match core::gas::withdraw_gas(v25, v26) {
    Option::Some(v27, v28) => blk8,
    Option::None(v29, v30) => blk9,
  })

blk1:
Statements:
End:
  Goto(blk5, {})

blk2:
Statements:
  (v33: core::RangeCheck, v34: core::gas::GasBuiltin, v16: core::panics::PanicResult::<((),)>) <- test::foo(v27, v28)
End:
  Match(match_enum(v16) {
    PanicResult::Ok(v17) => blk11,
    PanicResult::Err(v19) => blk12,
  })

blk3:
Statements:
  (v18: ()) <- struct_destructure(v17)
  (v20: ((),)) <- struct_construct(v18)
  (v21: core::panics::PanicResult::<((),)>) <- PanicResult::Ok(v20)
End:
  Return(v33, v34, v21)

blk4:
Statements:
  (v5: core::panics::Panic) <- struct_construct()
  (v6: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v5, v10)
  (v22: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v6)
End:
  Return(v22)

blk5:
Statements:
End:
  Goto(blk7, {})

blk6:
Statements:
End:
  Goto(blk4, {})

blk7:
Statements:
  (v10: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
End:
  Goto(blk6, {})

blk8:
Statements:
  (v0: ()) <- struct_construct()
End:
  Goto(blk2, {})

blk9:
Statements:
  (v11: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
  (v12: core::felt252) <- 375233589013918064796019u
  (v14: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v11, v12)
  (v13: core::panics::Panic) <- struct_construct()
  (v15: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v13, v14)
  (v23: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v15)
End:
  Return(v29, v30, v23)

blk10:
Statements:
End:
  Goto(blk3, {})

blk11:
Statements:
End:
  Goto(blk10, {})

blk12:
Statements:
  (v24: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v19)
End:
  Return(v33, v34, v24)

//! > after_reorder_statements3
Parameters: v25: core::RangeCheck, v26: core::gas::GasBuiltin
blk0 (root):
Statements:
End:
  Match(match core::gas::withdraw_gas(v25, v26) {
    Option::Some(v27, v28) => blk8,
    Option::None(v29, v30) => blk9,
  })

blk1:
Statements:
End:
  Goto(blk5, {})

blk2:
Statements:
  (v33: core::RangeCheck, v34: core::gas::GasBuiltin, v16: core::panics::PanicResult::<((),)>) <- test::foo(v27, v28)
End:
  Match(match_enum(v16) {
    PanicResult::Ok(v17) => blk11,
    PanicResult::Err(v19) => blk12,
  })

blk3:
Statements:
  (v18: ()) <- struct_destructure(v17)
  (v20: ((),)) <- struct_construct(v18)
  (v21: core::panics::PanicResult::<((),)>) <- PanicResult::Ok(v20)
End:
  Return(v33, v34, v21)

blk4:
Statements:
  (v5: core::panics::Panic) <- struct_construct()
  (v6: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v5, v10)
  (v22: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v6)
End:
  Return(v22)

blk5:
Statements:
End:
  Goto(blk7, {})

blk6:
Statements:
End:
  Goto(blk4, {})

blk7:
Statements:
  (v10: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
End:
  Goto(blk6, {})

blk8:
Statements:
End:
  Goto(blk2, {})

blk9:
Statements:
  (v11: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
  (v12: core::felt252) <- 375233589013918064796019u
  (v14: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v11, v12)
  (v13: core::panics::Panic) <- struct_construct()
  (v15: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v13, v14)
  (v23: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v15)
End:
  Return(v29, v30, v23)

blk10:
Statements:
End:
  Goto(blk3, {})

blk11:
Statements:
End:
  Goto(blk10, {})

blk12:
Statements:
  (v24: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v19)
End:
  Return(v33, v34, v24)

//! > after_reorganize_blocks
Parameters: v25: core::RangeCheck, v26: core::gas::GasBuiltin
blk0 (root):
Statements:
End:
  Match(match core::gas::withdraw_gas(v25, v26) {
    Option::Some(v27, v28) => blk1,
    Option::None(v29, v30) => blk4,
  })

blk1:
Statements:
  (v33: core::RangeCheck, v34: core::gas::GasBuiltin, v16: core::panics::PanicResult::<((),)>) <- test::foo(v27, v28)
End:
  Match(match_enum(v16) {
    PanicResult::Ok(v17) => blk2,
    PanicResult::Err(v19) => blk3,
  })

blk2:
Statements:
  (v18: ()) <- struct_destructure(v17)
  (v20: ((),)) <- struct_construct(v18)
  (v21: core::panics::PanicResult::<((),)>) <- PanicResult::Ok(v20)
End:
  Return(v33, v34, v21)

blk3:
Statements:
  (v24: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v19)
End:
  Return(v33, v34, v24)

blk4:
Statements:
  (v11: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
  (v12: core::felt252) <- 375233589013918064796019u
  (v14: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v11, v12)
  (v13: core::panics::Panic) <- struct_construct()
  (v15: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v13, v14)
  (v23: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v15)
End:
  Return(v29, v30, v23)

//! > after_optimize_remappings3 (final)
Parameters: v25: core::RangeCheck, v26: core::gas::GasBuiltin
blk0 (root):
Statements:
End:
  Match(match core::gas::withdraw_gas(v25, v26) {
    Option::Some(v27, v28) => blk1,
    Option::None(v29, v30) => blk4,
  })

blk1:
Statements:
  (v33: core::RangeCheck, v34: core::gas::GasBuiltin, v16: core::panics::PanicResult::<((),)>) <- test::foo(v27, v28)
End:
  Match(match_enum(v16) {
    PanicResult::Ok(v17) => blk2,
    PanicResult::Err(v19) => blk3,
  })

blk2:
Statements:
  (v18: ()) <- struct_destructure(v17)
  (v20: ((),)) <- struct_construct(v18)
  (v21: core::panics::PanicResult::<((),)>) <- PanicResult::Ok(v20)
End:
  Return(v33, v34, v21)

blk3:
Statements:
  (v24: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v19)
End:
  Return(v33, v34, v24)

blk4:
Statements:
  (v11: core::array::Array::<core::felt252>) <- core::array::array_new::<core::felt252>()
  (v12: core::felt252) <- 375233589013918064796019u
  (v14: core::array::Array::<core::felt252>) <- core::array::array_append::<core::felt252>(v11, v12)
  (v13: core::panics::Panic) <- struct_construct()
  (v15: (core::panics::Panic, core::array::Array::<core::felt252>)) <- struct_construct(v13, v14)
  (v23: core::panics::PanicResult::<((),)>) <- PanicResult::Err(v15)
End:
  Return(v29, v30, v23)
