.file "collatz.c" .text .p2align 4,,15 .globl collatz .type collatz, @function collatz: .LFB23: .cfi_startproc xorl %eax, %eax cmpl $1, %edi je .L1 .p2align 4,,10 .p2align 3 .L2: testb $1, %dil jne .L4 movl %edi, %edx addl $1, %eax shrl $31, %edx addl %edx, %edi sarl %edi cmpl $1, %edi jne .L2 rep ret .p2align 4,,10 .p2align 3 .L4: leal 1(%rdi,%rdi,2), %edi addl $1, %eax cmpl $1, %edi jne .L2 .L1: rep ret .cfi_endproc .LFE23: .size collatz, .-collatz .p2align 4,,15 .globl fill_collatz_table .type fill_collatz_table, @function fill_collatz_table: .LFB24: .cfi_startproc testl %esi, %esi jle .L10 cmpl $1, %esi movl $0, (%rdi) je .L20 leal -2(%rsi), %eax addq $4, %rdi movl $1, %esi xorl %edx, %edx addl $1, %esi leaq (%rdi,%rax,4), %r8 movl %edx, (%rdi) cmpq %r8, %rdi je .L21 .p2align 4,,10 .p2align 3 .L19: movl %esi, %eax xorl %edx, %edx .p2align 4,,10 .p2align 3 .L17: testb $1, %al jne .L14 movl %eax, %ecx addl $1, %edx shrl $31, %ecx addl %ecx, %eax sarl %eax cmpl $1, %eax jne .L17 addq $4, %rdi .L22: addl $1, %esi cmpq %r8, %rdi movl %edx, (%rdi) jne .L19 .L21: rep ret .p2align 4,,10 .p2align 3 .L14: leal 1(%rax,%rax,2), %eax addl $1, %edx cmpl $1, %eax jne .L17 addq $4, %rdi jmp .L22 .p2align 4,,10 .p2align 3 .L10: rep ret .L20: rep ret .cfi_endproc .LFE24: .size fill_collatz_table, .-fill_collatz_table .section .rodata.str1.1,"aMS",@progbits,1 .LC0: .string "%4d --> %8d\n" .text .p2align 4,,15 .globl print_table .type print_table, @function print_table: .LFB25: .cfi_startproc cmpl $1, %esi jle .L28 pushq %r13 .cfi_def_cfa_offset 16 .cfi_offset 13, -16 pushq %r12 .cfi_def_cfa_offset 24 .cfi_offset 12, -24 leal -2(%rsi), %r12d pushq %rbp .cfi_def_cfa_offset 32 .cfi_offset 6, -32 pushq %rbx .cfi_def_cfa_offset 40 .cfi_offset 3, -40 leaq .LC0(%rip), %r13 movq %rdi, %rbp addq $2, %r12 movl $1, %ebx subq $8, %rsp .cfi_def_cfa_offset 48 .p2align 4,,10 .p2align 3 .L25: movl 0(%rbp,%rbx,4), %r8d movq stdout(%rip), %rdi movl %ebx, %ecx xorl %eax, %eax movq %r13, %rdx movl $1, %esi addq $1, %rbx call __fprintf_chk@PLT cmpq %rbx, %r12 jne .L25 addq $8, %rsp .cfi_def_cfa_offset 40 popq %rbx .cfi_def_cfa_offset 32 popq %rbp .cfi_def_cfa_offset 24 popq %r12 .cfi_def_cfa_offset 16 popq %r13 .cfi_def_cfa_offset 8 ret .p2align 4,,10 .p2align 3 .L28: .cfi_restore 3 .cfi_restore 6 .cfi_restore 12 .cfi_restore 13 rep ret .cfi_endproc .LFE25: .size print_table, .-print_table .section .text.startup,"ax",@progbits .p2align 4,,15 .globl main .type main, @function main: .LFB26: .cfi_startproc subq $824, %rsp .cfi_def_cfa_offset 832 movl $1, %esi xorl %edx, %edx movq %fs:40, %rax movq %rax, 808(%rsp) xorl %eax, %eax cmpq $1, %rsi movl $0, (%rsp) movq %rsp, %rdi movl %esi, %eax je .L42 .p2align 4,,10 .p2align 3 .L33: testb $1, %al jne .L35 movl %eax, %ecx addl $1, %edx shrl $31, %ecx addl %ecx, %eax sarl %eax cmpl $1, %eax jne .L33 cmpl $199, %esi movl %edx, (%rdi,%rsi,4) je .L45 .L38: addq $1, %rsi xorl %edx, %edx cmpq $1, %rsi movl %esi, %eax jne .L33 .L42: movl $0, 4(%rdi) jmp .L38 .p2align 4,,10 .p2align 3 .L35: leal 1(%rax,%rax,2), %eax addl $1, %edx cmpl $1, %eax jne .L33 cmpl $199, %esi movl %edx, (%rdi,%rsi,4) jne .L38 .L45: movl $200, %esi call print_table xorl %eax, %eax movq 808(%rsp), %rdi xorq %fs:40, %rdi jne .L46 addq $824, %rsp .cfi_remember_state .cfi_def_cfa_offset 8 ret .L46: .cfi_restore_state call __stack_chk_fail@PLT .cfi_endproc .LFE26: .size main, .-main .ident "GCC: (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0" .section .note.GNU-stack,"",@progbits