.section __TEXT,__text,regular,pure_instructions .globl _gets .align 4, 0x90 _gets: pushl %ebp movl %esp, %ebp pushl %edi pushl %esi call _getchar movl 8(%ebp), %esi movl %esi, %edi jmp LBB1_2 .align 4, 0x90 LBB1_1: movb %al, (%edi) call _getchar incl %edi LBB1_2: cmpl $-1, %eax je LBB1_4 cmpl $10, %eax jne LBB1_1 LBB1_4: movb $0, (%edi) movl %esi, %eax popl %esi popl %edi popl %ebp ret .globl _good_echo .align 4, 0x90 _good_echo: pushl %ebp movl %esp, %ebp pushl %ebx pushl %edi pushl %esi subl $92, %esp call L2$pb L2$pb: popl %eax movl L___stack_chk_guard$non_lazy_ptr-L2$pb(%eax), %ecx movl %ecx, -84(%ebp) movl (%ecx), %ecx movl %ecx, -16(%ebp) leal -80(%ebp), %esi movl L___stdinp$non_lazy_ptr-L2$pb(%eax), %edi .align 4, 0x90 LBB2_1: movl (%edi), %eax movl %eax, 8(%esp) movl %esi, (%esp) movl $64, 4(%esp) call _fgets testl %eax, %eax je LBB2_8 movl %esi, %ebx jmp LBB2_5 .align 4, 0x90 LBB2_3: movl %eax, (%esp) call _putchar cmpl $-1, %eax je LBB2_8 incl %ebx LBB2_5: movsbl (%ebx), %eax testl %eax, %eax je LBB2_1 cmpb $10, %al jne LBB2_3 movl $10, (%esp) call _putchar LBB2_8: movl -84(%ebp), %eax movl (%eax), %eax cmpl -16(%ebp), %eax jne LBB2_10 addl $92, %esp popl %esi popl %edi popl %ebx popl %ebp ret LBB2_10: call ___stack_chk_fail .globl _echo .align 4, 0x90 _echo: pushl %ebp movl %esp, %ebp pushl %esi subl $20, %esp leal -8(%ebp), %esi movl %esi, (%esp) call _gets movl %esi, (%esp) call _puts addl $20, %esp popl %esi popl %ebp ret .globl _call_echo .align 4, 0x90 _call_echo: pushl %ebp movl %esp, %ebp popl %ebp jmp _echo # TAILCALL .globl _main .align 4, 0x90 _main: pushl %ebp movl %esp, %ebp subl $8, %esp call L5$pb L5$pb: popl %eax leal L_.str-L5$pb(%eax), %eax movl %eax, (%esp) call _printf cmpl $2, 8(%ebp) jl LBB5_3 call _good_echo LBB5_2: xorl %eax, %eax addl $8, %esp popl %ebp ret LBB5_3: call _call_echo jmp LBB5_2 .section __TEXT,__cstring,cstring_literals L_.str: .asciz "Type a string:" .section __IMPORT,__pointers,non_lazy_symbol_pointers L___stack_chk_guard$non_lazy_ptr: .indirect_symbol ___stack_chk_guard .long 0 L___stdinp$non_lazy_ptr: .indirect_symbol ___stdinp .long 0 .subsections_via_symbols