fn ptr $fallible(ptr %0, w8 %1) {
  @entry0
    br.ne w32 %1 0 @then1 @merge2;
  @then1
    reserve %2 1 1;
    store w8 0 %2 0;
    reserve %3 9 8;
    store w64 1 %3 0;
    store w8 %2 %3 8;
    blit %0 %3 9;
    ret %0;
  @merge2
    reserve %4 9 8;
    store w64 0 %4 0;
    blit %0 %4 9;
    ret %0;
}

fn ptr $caller(ptr %0, w8 %1) {
  @entry0
    reserve %2 9 8;
    call ptr %3 $fallible(%2, %1);
    load w64 %4 %3 0;
    br.ne w32 %4 0 @err2 @ok1;
  @ok1
    jmp @merge3;
  @err2
    reserve %5 9 8;
    store w64 %4 %5 0;
    add ptr %6 %3 8;
    add ptr %7 %5 8;
    blit %7 %6 1;
    blit %0 %5 9;
    ret %0;
  @merge3
    reserve %8 9 8;
    store w64 0 %8 0;
    blit %0 %8 9;
    ret %0;
}
