```rust
function %foo(i32) system_v {
; list of alternative targets for the invoke outside of the control of Cranelift.
; compilation will result in a list of offsets to the start of these blocks
jt0 = jump_table [block2]
sig0 = () system_v
sig1 = (i64) system_v
fn0 = %bar sig0
fn1 = %_Unwind_Resume sig1
block0(v0: i32):
invoke fn0, block1, jt0
block1:
return
; All registers specified as callee-saved by the base ABI are restored, as well as scratch registers
; %rdi,%rsi,%rdx,%rcx(see below). Except for those exceptions, scratch (or caller-saved) registers
; are not preserved, and their contents are undefined on transfer.
; up to four args passed in %rdi, %rsi, %rdx, %rcx
; panic_unwind passes the exception_object pointer as the first arg and no additional arguments
block2(v1: i64) eh_landing_pad: ; eh_landing_pad is the "block entry abi"
; do cleanup work. all values accessible at the invoke are also accessible here
tail_call fn1(v1)
}
```