	.section .note.GNU-stack
/* variables */
	.data
	.globl	i
	.align	8
	.type	i, @object
	.size	i, 8
i:
	.quad	0xa

	.data
	.globl	c
	.align	8
	.type	c, @object
	.size	c, 8
c:
	.quad	'A'

	.data
	.globl	s
	.align	8
	.type	s, @object
	.size	s, 8
s:
	.quad	.LC0

	.data
	.globl	form
	.align	8
	.type	form, @object
	.size	form, 8
form:
	.quad	.LC1

/* function */
	.text
	.globl	main
	.type	main, @function
main:
	push	%rbp
	mov	%rsp, %rbp
	push	%rbx
	push	%rsi
	push	%rdi
	sub	$0x0, %rsp
/* output variable */
	mov	form(%rip), %rax
	mov	%rax, %rdi
	mov	i(%rip), %rax
	mov	%rax, %rsi
	mov	c(%rip), %rax
	mov	%rax, %rdx
	mov	s(%rip), %rax
	mov	%rax, %rcx
	push	%rbx
	mov	%rsp, %rbx
	and	$0xfffffffffffffff0, %rsp
	call	printf
	mov	%rbx, %rsp
	pop	%rbx
	mov	%rax, %rbx
/* store to variable */
	mov	$'a', %rax
	mov	%rax, i(%rip)
	mov	s(%rip), %rax
	mov	0x2(%rax), %al
	movzbl	%al, %eax
	mov	%rax, c(%rip)
	mov	$'D', %rax
	mov	s(%rip), %rdx
	mov	%al, 0x3(%rdx)
/* output variable */
	mov	form(%rip), %rax
	mov	%rax, %rdi
	mov	i(%rip), %rax
	mov	%rax, %rsi
	mov	c(%rip), %rax
	mov	%rax, %rdx
	mov	s(%rip), %rax
	mov	%rax, %rcx
	push	%rbx
	mov	%rsp, %rbx
	and	$0xfffffffffffffff0, %rsp
	call	printf
	mov	%rbx, %rsp
	pop	%rbx
	mov	%rax, %rbx
/* return process */
	mov	$0x0, %rax
	mov	-0x8(%rbp), %rbx
	mov	-0x10(%rbp), %rsi
	mov	-0x18(%rbp), %rdi
	leave
	ret

	.data
.LC1:	.string	"%d %c %s\n"
.LC0:	.string	"abcdefg"
