.file "fibo.c"
.text
.section .rdata,"dr"
.LC0:
.ascii "fibo of %ld is %ld\12\0"
.text
.p2align 4
.def printf.constprop.0; .scl 3; .type 32; .endef
.seh_proc printf.constprop.0
printf.constprop.0:
pushq %rbx
.seh_pushreg %rbx
subq $48, %rsp
.seh_stackalloc 48
.seh_endprologue
movl $1, %ecx
leaq 72(%rsp), %rbx
movq %rdx, 72(%rsp)
movq %r8, 80(%rsp)
movq %r9, 88(%rsp)
movq %rbx, 40(%rsp)
call *__imp___acrt_iob_func(%rip)
movq %rbx, %r8
leaq .LC0(%rip), %rdx
movq %rax, %rcx
call __mingw_vfprintf
addq $48, %rsp
popq %rbx
ret
.seh_endproc
.p2align 4
.globl fibo
.def fibo; .scl 2; .type 32; .endef
.seh_proc fibo
fibo:
pushq %r15
.seh_pushreg %r15
pushq %r14
.seh_pushreg %r14
pushq %r13
.seh_pushreg %r13
pushq %r12
.seh_pushreg %r12
pushq %rbp
.seh_pushreg %rbp
pushq %rdi
.seh_pushreg %rdi
pushq %rsi
.seh_pushreg %rsi
pushq %rbx
.seh_pushreg %rbx
subq $120, %rsp
.seh_stackalloc 120
.seh_endprologue
movl %ecx, %edi
testl %ecx, %ecx
jle .L39
cmpl $1, %ecx
je .L4
leal -1(%rcx), %r12d
xorl %ebx, %ebx
movl %r12d, %r14d
andl $1, %r14d
.L6:
movl %r12d, %eax
cmpl $1, %r12d
je .L61
leal -1(%r12), %esi
movl %r14d, 68(%rsp)
xorl %r13d, %r13d
movl %r12d, %edx
movl %esi, 64(%rsp)
movl %esi, %r15d
movl %ebx, 192(%rsp)
.L8:
movl %r15d, %r8d
cmpl $1, %r15d
je .L60
leal -2(%rax), %esi
movl %r13d, 72(%rsp)
xorl %edi, %edi
movl %edx, %r11d
movl %r15d, 76(%rsp)
movl %esi, %r14d
movl %esi, 80(%rsp)
.L11:
movl %r14d, %r10d
cmpl $1, %r14d
je .L59
movl %edi, 84(%rsp)
leal -2(%r8), %esi
xorl %ebp, %ebp
movl %r14d, 88(%rsp)
movl %esi, %r12d
movl %esi, %r14d
.L14:
movl %r12d, %eax
cmpl $1, %r12d
je .L58
leal -2(%r10), %r13d
xorl %esi, %esi
movl %ebp, 92(%rsp)
movl %r12d, %r15d
movl %r11d, 96(%rsp)
movl %r13d, %ebx
movl %esi, 60(%rsp)
movl %r13d, 100(%rsp)
.L17:
movl %ebx, %edx
cmpl $1, %ebx
je .L57
movl %ebx, 104(%rsp)
leal -2(%rax), %r12d
xorl %ebp, %ebp
movl %r12d, %r13d
.L20:
movl %r13d, %r9d
cmpl $1, %r13d
je .L56
leal -2(%rdx), %r8d
movl %r13d, 40(%rsp)
xorl %ebx, %ebx
movl %ebp, 44(%rsp)
movl %ebx, %edi
movl %r8d, %ebx
movl %r14d, 48(%rsp)
movl %r12d, 52(%rsp)
movl %r8d, 56(%rsp)
.L23:
movl %ebx, %r14d
cmpl $1, %ebx
je .L55
leal -2(%r9), %ebp
xorl %r12d, %r12d
movl %ebp, %r13d
movl %ebp, %edx
movl %edi, %ebp
movl %ebx, %edi
movl %r13d, %ebx
.L26:
movl %ebx, %r13d
cmpl $1, %ebx
je .L54
xorl %esi, %esi
.L28:
leal -1(%r13), %ecx
movl %edx, 108(%rsp)
call fibo
movl 108(%rsp), %edx
addl %eax, %esi
subl $2, %r13d
je .L29
cmpl $1, %r13d
jne .L28
addl $1, %esi
.L29:
addl %esi, %r12d
subl $2, %r14d
je .L62
subl $2, %ebx
cmpl $1, %r14d
jne .L26
.L54:
movl %edi, %ebx
addl $1, %r12d
movl %ebp, %edi
movl %edx, %ebp
movl %ebp, %r9d
addl %r12d, %edi
testl %ebp, %ebp
je .L63
.L32:
subl $2, %ebx
cmpl $1, %ebp
jne .L23
.L55:
movl 44(%rsp), %ebp
movl 56(%rsp), %r8d
movl %edi, %ebx
addl $1, %ebx
movl 40(%rsp), %r13d
movl 48(%rsp), %r14d
movl 52(%rsp), %r12d
movl %r8d, %edx
addl %ebx, %ebp
testl %r8d, %r8d
je .L64
.L33:
subl $2, %r13d
cmpl $1, %r8d
jne .L20
.L56:
addl $1, %ebp
movl 104(%rsp), %ebx
addl %ebp, 60(%rsp)
movl %r12d, %eax
testl %r12d, %r12d
je .L65
.L34:
subl $2, %ebx
cmpl $1, %r12d
jne .L17
.L57:
movl 60(%rsp), %esi
movl 92(%rsp), %ebp
movl %r15d, %r12d
movl 100(%rsp), %r13d
movl 96(%rsp), %r11d
addl $1, %esi
movl %r13d, %r10d
addl %esi, %ebp
testl %r13d, %r13d
je .L66
.L35:
subl $2, %r12d
cmpl $1, %r13d
jne .L14
.L58:
movl %r14d, %esi
movl 84(%rsp), %edi
movl 88(%rsp), %r14d
addl $1, %ebp
.L15:
movl %esi, %r8d
addl %ebp, %edi
testl %esi, %esi
je .L67
subl $2, %r14d
cmpl $1, %esi
jne .L11
.L59:
movl 72(%rsp), %r13d
movl 76(%rsp), %r15d
movl %r11d, %edx
addl $1, %edi
movl 80(%rsp), %esi
.L12:
movl %esi, %eax
addl %edi, %r13d
testl %esi, %esi
je .L68
subl $2, %r15d
cmpl $1, %esi
jne .L8
.L60:
movl 64(%rsp), %esi
movl 68(%rsp), %r14d
movl %edx, %r12d
addl $1, %r13d
movl 192(%rsp), %ebx
.L9:
addl %r13d, %ebx
cmpl %r14d, %r12d
je .L69
subl $2, %r12d
cmpl $1, %esi
jne .L6
.L61:
movl %ebx, %edi
addl $1, %edi
.L4:
movl %edi, %eax
addq $120, %rsp
popq %rbx
popq %rsi
popq %rdi
popq %rbp
popq %r12
popq %r13
popq %r14
popq %r15
ret
.p2align 4,,10
.p2align 3
.L62:
movl %edi, %ebx
movl %ebp, %edi
movl %edx, %ebp
movl %ebp, %r9d
addl %r12d, %edi
testl %ebp, %ebp
jne .L32
.L63:
movl 44(%rsp), %ebp
movl 56(%rsp), %r8d
movl %edi, %ebx
movl 40(%rsp), %r13d
movl 48(%rsp), %r14d
movl 52(%rsp), %r12d
movl %r8d, %edx
addl %ebx, %ebp
testl %r8d, %r8d
jne .L33
.L64:
addl %ebp, 60(%rsp)
movl 104(%rsp), %ebx
movl %r12d, %eax
testl %r12d, %r12d
jne .L34
.L65:
movl 92(%rsp), %ebp
movl 60(%rsp), %esi
movl %r15d, %r12d
movl 100(%rsp), %r13d
movl 96(%rsp), %r11d
addl %esi, %ebp
movl %r13d, %r10d
testl %r13d, %r13d
jne .L35
.L66:
movl %r14d, %esi
movl 84(%rsp), %edi
movl 88(%rsp), %r14d
jmp .L15
.L39:
xorl %edi, %edi
jmp .L4
.L67:
movl 72(%rsp), %r13d
movl 76(%rsp), %r15d
movl %r11d, %edx
movl 80(%rsp), %esi
jmp .L12
.L68:
movl 64(%rsp), %esi
movl 68(%rsp), %r14d
movl %edx, %r12d
movl 192(%rsp), %ebx
jmp .L9
.L69:
movl %ebx, %edi
jmp .L4
.seh_endproc
.def __main; .scl 2; .type 32; .endef
.section .text.startup,"x"
.p2align 4
.globl main
.def main; .scl 2; .type 32; .endef
.seh_proc main
main:
pushq %rbp
.seh_pushreg %rbp
pushq %rdi
.seh_pushreg %rdi
pushq %rsi
.seh_pushreg %rsi
pushq %rbx
.seh_pushreg %rbx
subq $40, %rsp
.seh_stackalloc 40
.seh_endprologue
leaq .LC0(%rip), %rbp
movl $2, %edi
call __main
movl $1, %r8d
movl $1, %edx
movq %rbp, %rcx
call printf.constprop.0
.p2align 4,,10
.p2align 3
.L71:
movl %edi, %ebx
xorl %esi, %esi
.L72:
leal -1(%rbx), %ecx
call fibo
addl %eax, %esi
subl $2, %ebx
je .L73
cmpl $1, %ebx
jne .L72
addl $1, %esi
.L73:
movl %edi, %edx
movl %esi, %r8d
movq %rbp, %rcx
addl $1, %edi
call printf.constprop.0
cmpl $45, %edi
jne .L71
xorl %eax, %eax
addq $40, %rsp
popq %rbx
popq %rsi
popq %rdi
popq %rbp
ret
.seh_endproc
.ident "GCC: (Rev2, Built by MSYS2 project) 12.1.0"
.def __mingw_vfprintf; .scl 2; .type 32; .endef