.file "collatz.c" .text .globl collatz .type collatz, @function collatz: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movl %edi, -20(%rbp) movl $0, -4(%rbp) jmp .L2 .L5: movl -20(%rbp), %eax andl $1, %eax testl %eax, %eax jne .L3 movl -20(%rbp), %eax movl %eax, %edx shrl $31, %edx addl %edx, %eax sarl %eax movl %eax, -20(%rbp) jmp .L4 .L3: movl -20(%rbp), %edx movl %edx, %eax addl %eax, %eax addl %edx, %eax addl $1, %eax movl %eax, -20(%rbp) .L4: addl $1, -4(%rbp) .L2: cmpl $1, -20(%rbp) jne .L5 movl -4(%rbp), %eax popq %rbp .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE0: .size collatz, .-collatz .globl fill_collatz_table .type fill_collatz_table, @function fill_collatz_table: .LFB1: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 pushq %rbx subq $32, %rsp .cfi_offset 3, -24 movq %rdi, -32(%rbp) movl %esi, -36(%rbp) cmpl $0, -36(%rbp) jle .L12 movq -32(%rbp), %rax movl $0, (%rax) movl $1, -12(%rbp) jmp .L10 .L11: movl -12(%rbp), %eax cltq leaq 0(,%rax,4), %rdx movq -32(%rbp), %rax leaq (%rdx,%rax), %rbx movl -12(%rbp), %eax movl %eax, %edi call collatz movl %eax, (%rbx) addl $1, -12(%rbp) .L10: movl -12(%rbp), %eax cmpl -36(%rbp), %eax jl .L11 jmp .L7 .L12: nop .L7: addq $32, %rsp popq %rbx popq %rbp .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE1: .size fill_collatz_table, .-fill_collatz_table .section .rodata .LC0: .string "%4d --> %8d\n" .text .globl print_table .type print_table, @function print_table: .LFB2: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 subq $32, %rsp movq %rdi, -24(%rbp) movl %esi, -28(%rbp) movl $1, -4(%rbp) jmp .L14 .L15: movl -4(%rbp), %eax cltq leaq 0(,%rax,4), %rdx movq -24(%rbp), %rax addq %rdx, %rax movl (%rax), %ecx movq stdout(%rip), %rax movl -4(%rbp), %edx leaq .LC0(%rip), %rsi movq %rax, %rdi movl $0, %eax call fprintf@PLT addl $1, -4(%rbp) .L14: movl -4(%rbp), %eax cmpl -28(%rbp), %eax jl .L15 nop leave .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE2: .size print_table, .-print_table .globl main .type main, @function main: .LFB3: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 subq $848, %rsp movl %edi, -836(%rbp) movq %rsi, -848(%rbp) movq %fs:40, %rax movq %rax, -8(%rbp) xorl %eax, %eax movl $200, -820(%rbp) movl -820(%rbp), %edx leaq -816(%rbp), %rax movl %edx, %esi movq %rax, %rdi call fill_collatz_table movl -820(%rbp), %edx leaq -816(%rbp), %rax movl %edx, %esi movq %rax, %rdi call print_table movl $0, %eax movq -8(%rbp), %rcx xorq %fs:40, %rcx je .L18 call __stack_chk_fail@PLT .L18: leave .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE3: .size main, .-main .ident "GCC: (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0" .section .note.GNU-stack,"",@progbits