--- /dev/null
+ .text
+# setting call to 1
+ .globl optfib
+ .type optfib, @function
+optfib:
+# 2 1 1 1
+ pushq %rbp
+ movq %rsp, %rbp
+ subq $24, %rsp
+ movq %rdi, 16(%rsp)
+ movq $5000000, %rdi
+ pushq %rax
+ pushq %r10
+ pushq %r11
+ pushq %r9
+ pushq %r8
+ pushq %rcx
+ pushq %rdx
+ pushq %rsi
+ pushq %rdi
+ call sqr
+ popq %rdi
+ popq %rsi
+ popq %rdx
+ popq %rcx
+ popq %r8
+ popq %r9
+ popq %r11
+ popq %r10
+ addq $8, %rsp
+ movq %rax, 0(%rsp) /* z */
+ movq 0(%rsp), %rdi
+ addq $1000000, %rdi
+ movq $2, %rsi
+ pushq %rax
+ pushq %r10
+ pushq %r11
+ pushq %r9
+ pushq %r8
+ pushq %rcx
+ pushq %rdx
+ pushq %rsi
+ pushq %rdi
+ call div
+ movq %rax, %rdi
+ addq $8, %rsp
+ popq %rsi
+ popq %rdx
+ popq %rcx
+ popq %r8
+ popq %r9
+ popq %r11
+ popq %r10
+ popq %rax
+ mov 16(%rsp), %rsi
+ pushq %rax
+ pushq %r10
+ pushq %r11
+ pushq %r9
+ pushq %r8
+ pushq %rcx
+ pushq %rdx
+ pushq %rsi
+ pushq %rdi
+ call power
+ movq %rax, %rdi
+ addq $8, %rsp
+ popq %rsi
+ popq %rdx
+ popq %rcx
+ popq %r8
+ popq %r9
+ popq %r11
+ popq %r10
+ popq %rax
+ imulq $1000000, %rdi
+ movq 0(%rsp), %rsi
+ pushq %rax
+ pushq %r10
+ pushq %r11
+ pushq %r9
+ pushq %r8
+ pushq %rcx
+ pushq %rdx
+ pushq %rsi
+ pushq %rdi
+ call div
+ popq %rdi
+ popq %rsi
+ popq %rdx
+ popq %rcx
+ popq %r8
+ popq %r9
+ popq %r11
+ popq %r10
+ addq $8, %rsp
+ addq $500000, %rax
+ movq %rax, 8(%rsp) /* z */
+ movq 8(%rsp), %rdi
+ movq $1000000, %rsi
+ pushq %rax
+ pushq %r10
+ pushq %r11
+ pushq %r9
+ pushq %r8
+ pushq %rcx
+ pushq %rdx
+ pushq %rsi
+ pushq %rdi
+ call div
+ popq %rdi
+ popq %rsi
+ popq %rdx
+ popq %rcx
+ popq %r8
+ popq %r9
+ popq %r11
+ popq %r10
+ addq $8, %rsp
+ leave
+ ret
+# setting call to 0
+ .globl divslow
+ .type divslow, @function
+divslow:
+# 1 0 2 0
+ pushq %rbp
+ movq %rsp, %rbp
+ subq $24, %rsp
+ movq $1, %rax
+ movq %rax, 0(%rsp) /* z */
+do_start1:
+ movq %rdi, %rax
+ movq %rsi, %r10
+ movq 0(%rsp), %r11
+ imulq %r11, %r10
+ cmp %r10, %rax
+ jns do_enter1 # do_enter1 do_end1 0 0
+ jmp do_end1 # foo1
+do_enter1:
+ movq 0(%rsp), %r10
+ addq $1, %r10
+ movq %r10, 0(%rsp) /* z */
+ jmp do_start1
+do_end1:
+ movq 0(%rsp), %rax
+ addq $-1, %rax
+ leave
+ ret
+# setting call to 1
+ .globl div
+ .type div, @function
+div:
+# 2 1 2 2
+ pushq %rbp
+ movq %rsp, %rbp
+ subq $32, %rsp
+ movq %rdi, 24(%rsp)
+ movq %rsi, 16(%rsp)
+ movq $1, %rax
+ movq %rax, 0(%rsp) /* z */
+ movq $1000000, %rax
+ movq %rax, 8(%rsp) /* z */
+do_start2:
+ movq 8(%rsp), %rax
+ movq $1, %r10
+ cmp %r10, %rax
+ jns do_enter2 # do_enter2 do_end2 0 0
+ jmp do_end2 # foo1
+do_enter2:
+do_start3:
+ mov 24(%rsp), %rax
+ mov 16(%rsp), %r10
+ movq 0(%rsp), %r11
+ imulq %r11, %r10
+ cmp %r10, %rax
+ jns do_enter3 # do_enter3 do_end3 0 0
+ jmp do_end3 # foo1
+do_enter3:
+ movq 8(%rsp), %r10
+ movq 0(%rsp), %r11
+ addq %r11, %r10
+ movq %r10, 0(%rsp) /* z */
+ jmp do_start3
+do_end3:
+ movq 8(%rsp), %r10
+ negq %r10
+ movq 0(%rsp), %r11
+ addq %r11, %r10
+ movq %r10, 0(%rsp) /* z */
+ movq 8(%rsp), %rdi
+ movq $2, %rsi
+ pushq %rax
+ pushq %r10
+ pushq %r11
+ pushq %r9
+ pushq %r8
+ pushq %rcx
+ pushq %rdx
+ pushq %rsi
+ pushq %rdi
+ call divslow
+ movq %rax, %r10
+ popq %rdi
+ popq %rsi
+ popq %rdx
+ popq %rcx
+ popq %r8
+ popq %r9
+ popq %r11
+ addq $8, %rsp
+ popq %rax
+ movq %r10, 8(%rsp) /* z */
+ jmp do_start2
+do_end2:
+ movq 0(%rsp), %rax
+ leave
+ ret
+# setting call to 1
+ .globl power
+ .type power, @function
+power:
+# 1 1 2 2
+ pushq %rbp
+ movq %rsp, %rbp
+ subq $24, %rsp
+ movq %rdi, 16(%rsp)
+ movq %rsi, 8(%rsp)
+ mov 8(%rsp), %rax
+ movq $0, %r10
+ cmp %rax, %r10
+ jz if_then4 # if_then4 if_end4 0 0
+ jmp if_end4 # foo1
+if_then4:
+ movq $1000000, %rax
+ leave
+ ret
+if_end4:
+ mov 16(%rsp), %rax
+ movq %rax, 0(%rsp) /* z */
+do_start5:
+ mov 8(%rsp), %rax
+ movq $2, %r10
+ cmp %r10, %rax
+ jns do_enter5 # do_enter5 do_end5 0 0
+ jmp do_end5 # foo1
+do_enter5:
+ mov 16(%rsp), %rdi
+ movq 0(%rsp), %(null)
+ imulq %(null), %rdi
+ movq $1000000, %rsi
+ pushq %rax
+ pushq %r10
+ pushq %r11
+ pushq %r9
+ pushq %r8
+ pushq %rcx
+ pushq %rdx
+ pushq %rsi
+ pushq %rdi
+ call div
+ movq %rax, %r10
+ popq %rdi
+ popq %rsi
+ popq %rdx
+ popq %rcx
+ popq %r8
+ popq %r9
+ popq %r11
+ addq $8, %rsp
+ popq %rax
+ movq %r10, 0(%rsp) /* z */
+ mov 8(%rsp), %r10
+ addq $-1, %r10
+ movq %r10, 8(%rsp) /* y */
+ jmp do_start5
+do_end5:
+ movq 0(%rsp), %rax
+ leave
+ ret
+# setting call to 1
+ .globl sqr
+ .type sqr, @function
+sqr:
+# 2 1 1 1
+ pushq %rbp
+ movq %rsp, %rbp
+ subq $24, %rsp
+ movq %rdi, 16(%rsp)
+ movq $1, %rax
+ movq %rax, 0(%rsp) /* z */
+ movq $1000000, %rax
+ movq %rax, 8(%rsp) /* z */
+ mov 16(%rsp), %r10
+ imulq $1000000, %r10
+ movq %r10, 16(%rsp) /* y */
+do_start6:
+ movq 8(%rsp), %rax
+ movq $1, %r10
+ cmp %r10, %rax
+ jns do_enter6 # do_enter6 do_end6 0 0
+ jmp do_end6 # foo1
+do_enter6:
+do_start7:
+ mov 16(%rsp), %rax
+ movq 0(%rsp), %r10
+ movq 0(%rsp), %r11
+ imulq %r11, %r10
+ cmp %r10, %rax
+ jns do_enter7 # do_enter7 do_end7 0 0
+ jmp do_end7 # foo1
+do_enter7:
+ movq 8(%rsp), %r10
+ movq 0(%rsp), %r11
+ addq %r11, %r10
+ movq %r10, 0(%rsp) /* z */
+ jmp do_start7
+do_end7:
+ movq 8(%rsp), %r10
+ negq %r10
+ movq 0(%rsp), %r11
+ addq %r11, %r10
+ movq %r10, 0(%rsp) /* z */
+ movq 8(%rsp), %rdi
+ movq $2, %rsi
+ pushq %rax
+ pushq %r10
+ pushq %r11
+ pushq %r9
+ pushq %r8
+ pushq %rcx
+ pushq %rdx
+ pushq %rsi
+ pushq %rdi
+ call div
+ movq %rax, %r10
+ popq %rdi
+ popq %rsi
+ popq %rdx
+ popq %rcx
+ popq %r8
+ popq %r9
+ popq %r11
+ addq $8, %rsp
+ popq %rax
+ movq %r10, 8(%rsp) /* z */
+ jmp do_start6
+do_end6:
+ movq 0(%rsp), %rax
+ leave
+ ret