// File: /workspace/github_cpp_makefile_star2_O2/ALSchwalm[P]entrospy/entrospy/include/output.hpp
// Function: void print_block_bytes<__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char>>>>(__gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char>>>, __gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char>>>, unsigned long, unsigned long, PrintingPolicy const&)
void print_block_bytes(Iter begin, Iter end, uint64_t offset,
                       uint64_t address_width, const PrintingPolicy& policy) {
    const auto BYTES_PER_LINE = 16;
    auto iter = begin;
    for (auto i = 0; i < std::distance(begin, end) / BYTES_PER_LINE; ++i) {
        auto address = offset + BYTES_PER_LINE * i;
        std::cout << boost::format("%1%  ") %
                         boost::io::group(address_format_modifier(
                                              policy.addr_format),
                                          std::setw(address_width),
                                          std::setfill('0'), address);

        auto byte_iter = iter;
        auto line_end = iter + BYTES_PER_LINE;
        for (; byte_iter < line_end; ++byte_iter) {
            std::cout << boost::format("%02x ") %
                             static_cast<unsigned>(*byte_iter);
        }

        line_end -= 1;
        std::cout << "  |";
        for (; iter < line_end; ++iter) {
            std::cout << byte_to_printable(*iter);
        }
        std::cout << byte_to_printable(*iter++) << "|\n";
    }

    if (iter != end) {
        auto byte_iter = iter;
        auto printed = end - begin - (end - iter);

        std::cout << boost::format("%1%  ") %
                         boost::io::group(address_format_modifier(
                                              policy.addr_format),
                                          std::setw(address_width),
                                          std::setfill('0'), offset + printed);
        for (; byte_iter != end; ++byte_iter) {
            std::cout << boost::format("%02x ") %
                             static_cast<unsigned>(*byte_iter);
        }

        auto spacing = BYTES_PER_LINE - ((end - begin) % BYTES_PER_LINE);
        std::cout << std::string(spacing * 3, ' ') << "  |";
        for (; iter < end; ++iter) {
            std::cout << byte_to_printable(*iter);
        }
        std::cout << std::string(spacing, ' ') << "|\n";
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x148, %rsp            # imm = 0x148
movq %r8, 0x20(%rsp)
movq %rdx, 0x28(%rsp)
movq %rdi, %r15
movq %rsi, 0x8(%rsp)
movq %rsi, %rax
subq %rdi, %rax
pushq $0x10
popq %rsi
movq %rax, 0x50(%rsp)
cqto
idivq %rsi
movq %rdx, 0x48(%rsp)
xorl %edx, %edx
testq %rax, %rax
cmovleq %rdx, %rax
movq %rax, 0x58(%rsp)
movq %rcx, 0x18(%rsp)
leaq 0x68(%rsp), %r14
leaq 0x30(%rsp), %r12
movq 0xe133(%rip), %rbx      # 0x21fb0
leaq 0x34f0(%rip), %r13      # 0x17374
cmpq 0x58(%rsp), %rdx
je 0x13fae
movq %rdx, 0x60(%rsp)
movq %rdx, %rax
shlq $0x4, %rax
addq 0x28(%rsp), %rax
movq %rax, 0x10(%rsp)
movq %r14, %rdi
leaq 0x34bf(%rip), %rsi      # 0x1736e
callq 0x99b6
movq 0x20(%rsp), %rax
movl 0x18(%rax), %edi
callq 0x13881
movq %rax, 0x30(%rsp)
movq 0x18(%rsp), %rax
movl %eax, 0x38(%rsp)
movb $0x30, 0x3c(%rsp)
leaq 0x10(%rsp), %rax
movq %rax, 0x40(%rsp)
movq %r14, %rdi
movq %r12, %rsi
callq 0x138d8
movq %rbx, %rdi
movq %rax, %rsi
callq 0x12d49
movq %r14, %rdi
callq 0x9c02
xorl %ebp, %ebp
cmpq $0x10, %rbp
je 0x13f3b
movq %r14, %rdi
movq %r13, %rsi
callq 0x99b6
movzbl (%r15,%rbp), %eax
movl %eax, 0x30(%rsp)
movq %r14, %rdi
movq %r12, %rsi
callq 0x14530
movq %rbx, %rdi
movq %rax, %rsi
callq 0x12d49
movq %r14, %rdi
callq 0x9c02
incq %rbp
jmp 0x13efe
movq %rbx, %rdi
leaq 0x3435(%rip), %rsi      # 0x1737a
callq 0x83b0
incq %r15
pushq $0xf
popq %rbp
subq $0x1, %rbp
jb 0x13f76
movzbl -0x1(%r15), %eax
leal -0x20(%rax), %ecx
cmpb $0x5f, %cl
jb 0x13f66
pushq $0x2e
popq %rax
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8470
incq %r15
jmp 0x13f50
movzbl -0x1(%r15), %eax
leal -0x20(%rax), %ecx
cmpb $0x5f, %cl
pushq $0x2e
popq %rcx
cmovael %ecx, %eax
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8470
movq %rax, %rdi
leaq 0x33e2(%rip), %rsi      # 0x1737e
callq 0x83b0
movq 0x60(%rsp), %rdx
incq %rdx
jmp 0x13e84
movq 0x8(%rsp), %r14
cmpq %r14, %r15
je 0x14142
leaq 0x33ab(%rip), %rsi      # 0x1736e
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
callq 0x99b6
movq 0x20(%rsp), %rax
movl 0x18(%rax), %edi
callq 0x13881
movq 0x28(%rsp), %rcx
subq %r14, %rcx
addq 0x50(%rsp), %rcx
addq %r15, %rcx
movq %rcx, 0x10(%rsp)
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
movq 0x18(%rsp), %rax
movl %eax, 0x8(%rsi)
movb $0x30, 0xc(%rsi)
leaq 0x10(%rsp), %rax
movq %rax, 0x10(%rsi)
movq %rbx, %rdi
callq 0x1456a
movq 0xdf92(%rip), %rdi      # 0x21fb0
movq %rax, %rsi
callq 0x12d49
leaq 0x68(%rsp), %rbx
movq %rbx, %rdi
callq 0x9c02
leaq 0x333a(%rip), %r14      # 0x17374
leaq 0x30(%rsp), %r12
movq 0xdf6a(%rip), %r13      # 0x21fb0
movq %r15, %rbp
cmpq 0x8(%rsp), %rbp
je 0x14086
movq %rbx, %rdi
movq %r14, %rsi
callq 0x99b6
movzbl (%rbp), %eax
movl %eax, 0x30(%rsp)
movq %rbx, %rdi
movq %r12, %rsi
callq 0x14530
movq %r13, %rdi
movq %rax, %rsi
callq 0x12d49
movq %rbx, %rdi
callq 0x9c02
incq %rbp
jmp 0x14049
pushq $0x10
popq %r12
subq 0x48(%rsp), %r12
leaq (%r12,%r12,2), %rsi
leaq 0x78(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x68(%rsp), %rdi
pushq $0x20
popq %rdx
callq 0x8450
movq 0xdf00(%rip), %rdi      # 0x21fb0
leaq 0x68(%rsp), %rsi
callq 0x8360
movq 0x8(%rsp), %r13
leaq 0x32b4(%rip), %rsi      # 0x1737a
movq %rax, %rdi
callq 0x83b0
leaq 0x68(%rsp), %rdi
callq 0x87d8
pushq $0x2e
popq %rbp
movq 0xdece(%rip), %rbx      # 0x21fb0
cmpq %r13, %r15
jae 0x14105
movzbl (%r15), %eax
leal -0x20(%rax), %ecx
cmpb $0x5f, %cl
jb 0x140f5
movl %ebp, %eax
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8470
incq %r15
jmp 0x140e2
leaq 0x68(%rsp), %rdi
movq %r14, (%rdi)
pushq $0x20
popq %rdx
movq %r12, %rsi
callq 0x8450
movq 0xde91(%rip), %rdi      # 0x21fb0
leaq 0x68(%rsp), %rsi
callq 0x8360
leaq 0x324e(%rip), %rsi      # 0x1737e
movq %rax, %rdi
callq 0x83b0
leaq 0x68(%rsp), %rdi
callq 0x87d8
addq $0x148, %rsp            # imm = 0x148
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x14156
movq %rax, %rbx
jmp 0x1417f
jmp 0x1415d
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x87d8
jmp 0x1417f
jmp 0x14172
jmp 0x14172
jmp 0x14172
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x9c02
movq %rbx, %rdi
callq 0x86f0
nop