.file "pi.c" .section .rdata,"dr" LC0: .ascii "%d.\0" LC1: .ascii "%04d\0" .text .p2align 4,,15 .globl _print .def _print; .scl 2; .type 32; .endef _print: pushl %ebp movl %esp, %ebp subl $24, %esp movl %edi, -4(%ebp) movl 8(%ebp), %edi movl %ebx, -12(%ebp) movl 12(%ebp), %ebx movl %esi, -8(%ebp) movl $2, %esi decl %ebx movzwl 2(%edi), %eax movl $LC0, (%esp) movl %eax, 4(%esp) call _printf cmpl $2, %ebx jle L7 .p2align 4,,15 L12: movzwl (%edi,%esi,2), %edx incl %esi movl $LC1, (%esp) movl %edx, 4(%esp) call _printf cmpl %esi, %ebx jg L12 L7: movl $10, 8(%ebp) movl -12(%ebp), %ebx movl -8(%ebp), %esi movl -4(%ebp), %edi movl %ebp, %esp popl %ebp jmp _putchar .def ___main; .scl 2; .type 32; .endef .section .rdata,"dr" .align 8 LC2: .long -1133871366 .long 1076532084 .text .p2align 4,,15 .globl _main .def _main; .scl 2; .type 32; .endef _main: pushl %ebp movl $16, %eax movl %esp, %ebp pushl %edi pushl %esi pushl %ebx subl $60, %esp andl $-16, %esp movl $0, -40(%ebp) movl $0, -36(%ebp) call __alloca call ___main cmpl $1, 8(%ebp) movl $253, -28(%ebp) jg L53 L15: movl -28(%ebp), %ebx addl %ebx, %ebx movl %ebx, (%esp) call _malloc movl %ebx, 8(%esp) movl %eax, %esi xorl %eax, %eax movl %eax, 4(%esp) movl %esi, (%esp) call _memset fnstcw -18(%ebp) fildl -28(%ebp) movl -28(%ebp), %ebx movzwl -18(%ebp), %edi fmull LC2 decl %ebx movw $4, 2(%esi) orw $3072, %di movw %di, -20(%ebp) fldcw -20(%ebp) fistpl -24(%ebp) fldcw -18(%ebp) movl %ebx, -44(%ebp) movl -24(%ebp), %edi testl %edi, %edi jle L35 leal 1(%edi,%edi), %edx movl %edx, -48(%ebp) .p2align 4,,15 L28: movl -44(%ebp), %ebx xorl %eax, %eax testl %ebx, %ebx jmp L50 .p2align 4,,7 L54: movzwl (%esi,%ebx,2), %edx imull %edi, %edx leal (%eax,%edx), %ecx movl $1759218605, %eax imull %ecx movl %edx, -52(%ebp) movl -52(%ebp), %edx movl %eax, -56(%ebp) movl %ecx, %eax sarl $31, %eax sarl $12, %edx subl %eax, %edx imull $10000, %edx, %eax subl %eax, %ecx movl %edx, %eax movw %cx, (%esi,%ebx,2) decl %ebx L50: jns L54 movl $0, -36(%ebp) xorl %ebx, %ebx cmpl -28(%ebp), %ebx movl $0, -40(%ebp) jge L39 .p2align 4,,15 L60: movl -48(%ebp), %ecx movl -36(%ebp), %edx movl %ecx, 4(%esp) imull $10000, %edx, %eax movzwl (%esi,%ebx,2), %ecx addl %eax, %ecx movl %ecx, (%esp) call _div movw %ax, (%esi,%ebx,2) incl %ebx movl %eax, -40(%ebp) movl %edx, -36(%ebp) cmpl -28(%ebp), %ebx jl L60 L39: movzwl 2(%esi), %ebx decl %edi subl $2, -48(%ebp) addl $2, %ebx testl %edi, %edi movw %bx, 2(%esi) jg L28 L35: movzwl 2(%esi), %edi movl $LC0, (%esp) movl $2, %ebx movl %edi, 4(%esp) call _printf cmpl $2, -44(%ebp) jle L41 L61: movzwl (%esi,%ebx,2), %eax incl %ebx movl $LC1, (%esp) movl %eax, 4(%esp) call _printf cmpl %ebx, -44(%ebp) jg L61 L41: movl $10, (%esp) call _putchar leal -12(%ebp), %esp xorl %eax, %eax popl %ebx popl %esi popl %edi popl %ebp ret L53: movl 12(%ebp), %ecx movl 4(%ecx), %edx movl %edx, (%esp) call _atoi movl %eax, %edx addl $3, %edx js L57 L16: sarl $2, %edx addl $3, %edx movl %edx, -28(%ebp) jmp L15 L57: leal 6(%eax), %edx jmp L16 .def _memset; .scl 3; .type 32; .endef .def _putchar; .scl 3; .type 32; .endef .def _div; .scl 3; .type 32; .endef .def _malloc; .scl 3; .type 32; .endef .def _atoi; .scl 3; .type 32; .endef .def _printf; .scl 3; .type 32; .endef