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 8;
    ret %0;
  @merge2
    reserve %4 12 8;
    store w64 0 %4 0;
    store w32 3 %4 8;
    blit %0 %4 12 8;
    ret %0;
}

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