fiboO2

 avatar
unknown
assembly_x86
2 years ago
6.6 kB
4
Indexable
	.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