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

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