.file "collatz.c" .text .p2align 4,,15 .type fill_collatz_table.part.0, @function fill_collatz_table.part.0: .LFB27: .cfi_startproc cmpl $1, %esi movl $0, (%rdi) jle .L11 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 .L12 .p2align 4,,10 .p2align 3 .L8: movl %esi, %eax xorl %edx, %edx jmp .L5 .p2align 4,,10 .p2align 3 .L14: movl %eax, %ecx addl $1, %edx shrl $31, %ecx addl %ecx, %eax sarl %eax cmpl $1, %eax je .L13 .L5: testb $1, %al je .L14 leal 1(%rax,%rax,2), %eax addl $1, %edx cmpl $1, %eax jne .L5 .L13: addq $4, %rdi addl $1, %esi movl %edx, (%rdi) cmpq %r8, %rdi jne .L8 .L12: rep ret .L11: rep ret .cfi_endproc .LFE27: .size fill_collatz_table.part.0, .-fill_collatz_table.part.0 .p2align 4,,15 .globl collatz .type collatz, @function collatz: .LFB23: .cfi_startproc xorl %eax, %eax cmpl $1, %edi jne .L19 jmp .L20 .p2align 4,,10 .p2align 3 .L23: movl %edi, %edx addl $1, %eax shrl $31, %edx addl %edx, %edi sarl %edi cmpl $1, %edi je .L22 .L19: testb $1, %dil je .L23 leal 1(%rdi,%rdi,2), %edi addl $1, %eax cmpl $1, %edi jne .L19 .L22: rep ret .p2align 4,,10 .p2align 3 .L20: 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 .L24 jmp fill_collatz_table.part.0 .p2align 4,,10 .p2align 3 .L24: 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 .L31 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 .L28: 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 %r12, %rbx jne .L28 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 .L31: .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 $200, %esi movq %rsp, %r9 movq %r9, %rdi movq %fs:40, %rax movq %rax, 808(%rsp) xorl %eax, %eax call fill_collatz_table.part.0 movl $200, %esi movq %r9, %rdi call print_table movq 808(%rsp), %rdx xorq %fs:40, %rdx jne .L37 xorl %eax, %eax addq $824, %rsp .cfi_remember_state .cfi_def_cfa_offset 8 ret .L37: .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