
; Function Attrs: nounwind
define i64 @cb(i64 %0) #0 {
entry:
  %alloca = alloca i64, align 8
  store i64 %0, ptr %alloca, align 8
  %load = load i64, ptr %alloca, align 8
  %add = add i64 %load, 1
  ret i64 %add
}

; Function Attrs: nounwind
define internal i64 @tramp(i64 %0) #0 {
entry:
  %alloca = alloca i64, align 8
  store i64 %0, ptr %alloca, align 8
  %load = load i64, ptr %alloca, align 8
  %asm = call i64 asm sideeffect "call ${2:c}", "={rax},{rdi},s,~{rcx},~{rdx},~{rsi},~{r8},~{r9},~{r10},~{r11},~{memory}"(i64 %load, ptr @cb)
  ret i64 %asm
}

; Function Attrs: nounwind
define i32 @main() #0 {
entry:
  %call = call i64 @tramp(i64 41)
  %icmp = icmp ne i64 %call, 42
  br i1 %icmp, label %if.then.0, label %if.merge.1

if.then.0:                                        ; preds = %entry
  ret i32 1

if.merge.1:                                       ; preds = %entry
  ret i32 0
}
