
; 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 "        stp x29, x30, [sp, #-16]!\0A        mov x0, ${1}\0A        bl ${2:c}\0A        mov ${0}, x0\0A        ldp x29, x30, [sp], #16\0A", "=r,r,s,~{x0},~{x30},~{memory}"(i64 %load, ptr @cb)
  ret i64 %asm
}

; Function Attrs: nounwind
define i32 @main() #0 {
entry:
  %call = call i64 @tramp(i64 41)
  %ca.tr = trunc i64 %call to i32
  ret i32 %ca.tr
}
