// File: /workspace/github_cpp_makefile_star2_O2/juli9797[P]ssf/src/console_page.hpp
// Function: ssf::ConsolePage::str[abi:cxx11]() const
auto str() const
    {
        std::ostringstream p;
        p << c_cmd::clear;
        p << c_cmd::hide_cursor;

        // iterate over columns
        for (auto col_index = 0u; col_index < entries.size(); col_index++)
        {
            std::vector<std::filesystem::directory_entry> col = entries.at(col_index);
            // Calculate entry offset in case there are more entries
            // than rows available
            unsigned entry_offset = 0;
            if (col_index == _active_col-1 && col.size() > _row_count && !_parent_selection.empty())
            {
                entry_offset = std::floor(find_pos(col, *_parent_selection.begin()) / _row_count) * _row_count;
            }
	    else if (col_index == _active_col && col.size() > _row_count && !_selection.empty())
            {
                entry_offset = std::floor(find_pos(col, *_selection.begin()) / _row_count) * _row_count;
            }
            // Handle last folder in middle column
            int current_width = _col_widths.at(col_index);
            if (col_index == 1)
            {
                if (entries.at(2).size() == 0)
                {
                    current_width += _col_widths[2];
                }
            }
            int current_cursor_col = 0;
            for (unsigned i = 0; i < col_index; i++)
            {
                current_cursor_col += _col_widths.at(i);
                current_cursor_col += _spacing;
            }
            // Only iterate to either row_count or size of the col
            unsigned limit = std::min((int)(col.size() - entry_offset),
                                      (int)_row_count);
            for (auto index = 0u; index < limit; index++)
            {
                // Calculate the actual index for the entry
                auto entry_index = index + entry_offset;
                auto dir_entry = col.at(entry_index);
                auto full_entry = col.at(entry_index).path().filename().string();
                auto entry = shortened_string(full_entry,
                                              current_width - 4);
                p << c_cmd::set_cursor(index, current_cursor_col);
                p << get_icon(full_entry) << " ";

                if (!_selection.empty() && (col.at(entry_index) == _selection.at(0) && col_index == _active_col) ||
                    (!_parent_selection.empty() && col.at(entry_index) == _parent_selection.at(0) && col_index == _active_col - 1))
                {
                    p << ((col_index == 0) ? c_cmd::color::background::bright_black: c_cmd::color::background::cyan)
                      << entry
                      << c_cmd::color::reset;
                }
                else
                {
                    if (dir_entry.is_directory())
                    {
                        p << c_cmd::color::foreground::bright_cyan
                          << entry
                          << c_cmd::color::reset;
                    }
                    else
                    {
                        p << entry;
                    }
                }
            }
        }
        return p.str();
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x328, %rsp            # imm = 0x328
movq %rsi, %r14
movq %rdi, 0x30(%rsp)
leaq 0x1b0(%rsp), %rbx
movq %rbx, %rdi
callq 0x32c0
leaq 0x3ea3(%rip), %rsi      # 0x92af
movq %rbx, %rdi
callq 0x3210
leaq 0x3e8d(%rip), %rsi      # 0x92a8
leaq 0x1b0(%rsp), %rdi
callq 0x3210
leaq 0x50(%r14), %rax
movq %rax, 0x38(%rsp)
leaq 0x28(%r14), %rax
movq %rax, 0x50(%rsp)
leaq 0x10(%r14), %rax
movq %rax, 0x58(%rsp)
leaq 0x44(%r14), %rax
movq %rax, 0x48(%rsp)
xorl %ebx, %ebx
leaq 0x150(%rsp), %r15
movl %ebx, %ebx
movq 0x58(%r14), %rax
subq 0x50(%r14), %rax
cqto
pushq $0x18
popq %rcx
idivq %rcx
cmpq %rbx, %rax
jbe 0x585e
movq 0x38(%rsp), %rdi
movq %rbx, %rsi
callq 0x7858
leaq 0x18(%rsp), %rdi
movq %rax, %rsi
callq 0x6116
movl 0x40(%r14), %ecx
leal -0x1(%rcx), %eax
cmpl %eax, %ebx
jne 0x54d5
movq 0x20(%rsp), %rax
subq 0x18(%rsp), %rax
cqto
pushq $0x30
popq %rsi
idivq %rsi
movl 0x8(%r14), %edx
cmpq %rdx, %rax
jbe 0x54d5
movq 0x28(%r14), %rsi
cmpq 0x30(%r14), %rsi
je 0x54d5
movq %r15, %rdi
callq 0x6276
movq %r14, %rdi
leaq 0x18(%rsp), %rsi
movq %r15, %rdx
callq 0x7876
jmp 0x5525
xorl %r13d, %r13d
cmpl %ecx, %ebx
jne 0x5565
movq 0x20(%rsp), %rax
subq 0x18(%rsp), %rax
cqto
pushq $0x30
popq %rcx
idivq %rcx
movl 0x8(%r14), %ecx
cmpq %rcx, %rax
jbe 0x5565
movq 0x10(%r14), %rsi
cmpq 0x18(%r14), %rsi
je 0x5565
leaq 0x180(%rsp), %r15
movq %r15, %rdi
callq 0x6276
movq %r14, %rdi
leaq 0x18(%rsp), %rsi
movq %r15, %rdx
callq 0x7876
movl 0x8(%r14), %ecx
xorl %edx, %edx
divq %rcx
movq %rax, %xmm0
punpckldq 0x3b25(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x3b2d(%rip), %xmm0     # 0x9070
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
cvtsi2sd %rcx, %xmm2
addsd %xmm0, %xmm1
mulsd %xmm1, %xmm2
cvttsd2si %xmm2, %r13
movq %r15, %rdi
callq 0x62f4
movq 0x48(%rsp), %rdi
movq %rbx, %rsi
callq 0x7896
movl (%rax), %ebp
cmpl $0x1, %ebx
movq %rbx, 0x10(%rsp)
jne 0x5598
movq 0x38(%rsp), %rdi
pushq $0x2
popq %rsi
callq 0x7858
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
jne 0x5598
addl 0x4c(%r14), %ebp
xorl %ebx, %ebx
movl $0x0, 0xc(%rsp)
cmpq %rbx, 0x10(%rsp)
je 0x55c9
movq 0x48(%rsp), %rdi
movq %rbx, %rsi
callq 0x7896
movl 0xc(%rsp), %ecx
addl (%rax), %ecx
addl 0x4(%r14), %ecx
movl %ecx, 0xc(%rsp)
incq %rbx
jmp 0x55a2
movq 0x20(%rsp), %rax
subq 0x18(%rsp), %rax
cqto
pushq $0x30
popq %rcx
idivq %rcx
subl %r13d, %eax
movl 0x8(%r14), %ecx
cmpl %eax, %ecx
cmovll %ecx, %eax
movq %rax, 0x70(%rsp)
addl $-0x4, %ebp
movslq %ebp, %rax
movq %rax, 0x60(%rsp)
cmpq $0x0, 0x10(%rsp)
leaq 0x3cb5(%rip), %rcx      # 0x92b9
leaq 0x3ca7(%rip), %rax      # 0x92b2
cmoveq %rax, %rcx
movq %rcx, 0x40(%rsp)
movl %r13d, %eax
movq %rax, 0x68(%rsp)
xorl %ebx, %ebx
cmpq %rbx, 0x70(%rsp)
je 0x5848
movq 0x68(%rsp), %rax
leal (%rax,%rbx), %ebp
leaq 0x18(%rsp), %rdi
movq %rbp, %rsi
callq 0x639c
leaq 0x100(%rsp), %rdi
movq %rax, %rsi
callq 0x6276
leaq 0x18(%rsp), %rdi
movq %rbp, %rsi
callq 0x639c
leaq 0x78(%rsp), %r13
movq %r13, %rdi
movq %rax, %rsi
callq 0x6d50
leaq 0xa0(%rsp), %r12
movq %r12, %rdi
movq %r13, %rsi
callq 0x6dc2
movq %r14, %r15
movq %r13, %rdi
callq 0x62f4
leaq 0x130(%rsp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x32d0
movq %r13, %rdi
movq %r14, %rsi
movq 0x60(%rsp), %rdx
callq 0x389c
movq %r14, %rdi
callq 0x30f0
leaq 0xe0(%rsp), %r14
movq %r14, %rdi
movl %ebx, %esi
movl 0xc(%rsp), %edx
callq 0x37fc
leaq 0x1b0(%rsp), %rdi
movq %r14, %rsi
callq 0x31e0
movq %r14, %rdi
callq 0x30f0
leaq 0xc0(%rsp), %r12
movq %r12, %rdi
leaq 0xa0(%rsp), %rsi
callq 0x32d0
movq %r14, %rdi
movq %r12, %rsi
callq 0x398d
leaq 0x1b0(%rsp), %rdi
movq %r14, %rsi
callq 0x31e0
movq %rax, %rdi
leaq 0x3c1b(%rip), %rsi      # 0x933a
callq 0x3210
movq %r14, %rdi
callq 0x30f0
leaq 0xc0(%rsp), %rdi
callq 0x30f0
movq %r15, %r14
movq 0x10(%r15), %rax
cmpq 0x18(%r15), %rax
je 0x5781
leaq 0x18(%rsp), %rdi
movq %rbp, %rsi
callq 0x639c
movq %rax, %r13
movq 0x58(%rsp), %rdi
xorl %esi, %esi
callq 0x78b4
movq %r13, %rdi
movq %rax, %rsi
callq 0x710b
testb %al, %al
je 0x5781
movq 0x40(%rsp), %rsi
movq 0x10(%rsp), %rax
cmpl 0x40(%r14), %eax
je 0x57df
movq 0x28(%r14), %rax
cmpq 0x30(%r14), %rax
je 0x57c7
leaq 0x18(%rsp), %rdi
movq %rbp, %rsi
callq 0x639c
movq %rax, %r13
movq 0x50(%rsp), %rdi
xorl %esi, %esi
callq 0x78b4
movq %r13, %rdi
movq %rax, %rsi
callq 0x710b
testb %al, %al
je 0x57c7
movl 0x40(%r14), %eax
decl %eax
movq 0x40(%rsp), %rsi
cmpl %eax, 0x10(%rsp)
je 0x57df
leaq 0x100(%rsp), %rdi
callq 0x6d26
leaq 0x39cc(%rip), %rsi      # 0x91a7
testb %al, %al
je 0x580a
leaq 0x1b0(%rsp), %rdi
callq 0x3210
movq %rax, %rdi
leaq 0x78(%rsp), %rsi
callq 0x31e0
movq %rax, %rdi
leaq 0x39b2(%rip), %rsi      # 0x91b5
callq 0x3210
jmp 0x581c
leaq 0x1b0(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0x31e0
leaq 0x78(%rsp), %rdi
callq 0x30f0
leaq 0xa0(%rsp), %rdi
callq 0x30f0
leaq 0x100(%rsp), %rdi
callq 0x62f4
incq %rbx
jmp 0x561e
leaq 0x18(%rsp), %rdi
callq 0x5070
movq 0x10(%rsp), %rbx
incl %ebx
jmp 0x544e
leaq 0x1b8(%rsp), %rsi
movq 0x30(%rsp), %rdi
callq 0x3370
leaq 0x1b0(%rsp), %rdi
callq 0x3040
movq 0x30(%rsp), %rax
addq $0x328, %rsp            # imm = 0x328
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x58bf
jmp 0x591f
movq %rax, %rbx
leaq 0x180(%rsp), %rdi
jmp 0x594b
jmp 0x591f
movq %rax, %rbx
leaq 0x150(%rsp), %rdi
jmp 0x594b
jmp 0x591f
movq %rax, %rbx
jmp 0x595a
movq %rax, %rbx
jmp 0x5936
movq %rax, %rbx
leaq 0x130(%rsp), %rdi
jmp 0x5931
jmp 0x5929
movq %rax, %rbx
leaq 0xe0(%rsp), %rdi
jmp 0x5918
jmp 0x5929
movq %rax, %rbx
jmp 0x5910
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x62f4
jmp 0x5943
jmp 0x591f
movq %rax, %rbx
leaq 0xe0(%rsp), %rdi
callq 0x30f0
leaq 0xc0(%rsp), %rdi
callq 0x30f0
jmp 0x592c
movq %rax, %rbx
jmp 0x5950
movq %rax, %rbx
jmp 0x5943
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x30f0
leaq 0xa0(%rsp), %rdi
callq 0x30f0
leaq 0x100(%rsp), %rdi
callq 0x62f4
leaq 0x18(%rsp), %rdi
callq 0x5070
leaq 0x1b0(%rsp), %rdi
callq 0x3040
movq %rbx, %rdi
callq 0x33d0
nop