// File: textbrowser[P]zepeto/zepeto.cc
// Function: zepeto::print_products()
void zepeto::print_products(void)
{
  try
    {
      std::ifstream file;

      file.open(m_product_file.c_str(), std::ios::in);

      if(!file.is_open())
	{
	  m_error.append("echo \"Error opening the zepeto.table file.\"\n");
	  return;
	}

      std::map<std::string, char> map;

      while(file.getline(m_buffer, s_maximum_buffer_length_ss))
	{
	  size_t first = 0;
	  size_t last = 0;
	  std::string line(m_buffer);

	  first = line.find_first_not_of(" \t");
	  last = line.find_last_not_of(" \t");

	  if(first != std::string::npos &&
	     last != std::string::npos)
	    line = line.substr(first, last - first + 1);

	  if(line.find("#") == 0)
	    continue;

	  auto const index = line.find(".");

	  if(index == std::string::npos)
	    continue;

	  line = line.substr(0, index);

	  if(line.empty())
	    continue;

	  if(map.count(line) == 0)
	    map[line] = '0';
	}

      file.close();
      m_output.clear();

      for(auto it = map.begin(); it != map.end(); ++it)
	{
	  m_output.append("echo \"");
	  m_output.append(it->first);
	  m_output.append("\"\n");
	}

      if(m_fd != -1)
	if(!m_output.empty())
	  {
	    write(m_fd, m_output.c_str(), m_output.length());
	    fsync(m_fd);
	  }

      if(m_tempfilename)
	std::cout << m_tempfilename;
    }
  catch(const std::bad_alloc &exception)
    {
      throw;
    }
  catch(...)
    {
      m_error.append
	("echo \"An error occurred within print_products().\"\n");
      throw std::runtime_error(m_error);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x360, %rsp            # imm = 0x360
movq %fs:0x28, %rax
movq %rax, -0x8(%rbp)
movq %rdi, -0x2c0(%rbp)
movq -0x2c0(%rbp), %rax
movq %rax, -0x2f8(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x3400
jmp 0x6adb
movq -0x2f8(%rbp), %rdi
addq $0x120, %rdi            # imm = 0x120
callq 0x3160
movq %rax, %rsi
leaq -0x210(%rbp), %rdi
movl $0x8, %edx
callq 0x3260
jmp 0x6b04
leaq -0x210(%rbp), %rdi
callq 0x3570
movb %al, -0x2f9(%rbp)
jmp 0x6b18
movb -0x2f9(%rbp), %al
testb $0x1, %al
jne 0x6b7d
jmp 0x6b24
movq -0x2f8(%rbp), %rdi
addq $0xe0, %rdi
leaq 0xa5e2(%rip), %rsi      # 0x1111b
callq 0x3640
jmp 0x6b40
movl $0x1, -0x2d0(%rbp)
jmp 0x701c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2c8(%rbp)
movl %eax, -0x2cc(%rbp)
jmp 0x7056
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2c8(%rbp)
movl %eax, -0x2cc(%rbp)
jmp 0x704a
leaq -0x240(%rbp), %rdi
callq 0x8460
movq -0x2f8(%rbp), %rax
movq (%rax), %rsi
movq 0x10806(%rip), %rdx     # 0x173a0
leaq -0x210(%rbp), %rdi
callq 0x30f0
movq %rax, -0x308(%rbp)
jmp 0x6baf
movq -0x308(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x3450
movb %al, -0x309(%rbp)
jmp 0x6bcd
movb -0x309(%rbp), %al
testb $0x1, %al
jne 0x6bdc
jmp 0x6e7b
movq -0x2f8(%rbp), %rax
movq $0x0, -0x2d8(%rbp)
movq $0x0, -0x2e0(%rbp)
movq (%rax), %rax
movq %rax, -0x320(%rbp)
leaq -0x2a1(%rbp), %rdi
movq %rdi, -0x318(%rbp)
callq 0x3600
movq -0x320(%rbp), %rsi
movq -0x318(%rbp), %rdx
leaq -0x260(%rbp), %rdi
callq 0x76a0
jmp 0x6c32
leaq -0x2a1(%rbp), %rdi
callq 0x33c0
leaq -0x260(%rbp), %rdi
leaq 0xa4fc(%rip), %rsi      # 0x11148
xorl %eax, %eax
movl %eax, %edx
callq 0x3210
movq %rax, -0x2d8(%rbp)
leaq -0x260(%rbp), %rdi
leaq 0xa4de(%rip), %rsi      # 0x11148
movq $-0x1, %rdx
callq 0x3630
movq %rax, -0x2e0(%rbp)
cmpq $-0x1, -0x2d8(%rbp)
je 0x6d40
cmpq $-0x1, -0x2e0(%rbp)
je 0x6d40
movq -0x2d8(%rbp), %rdx
movq -0x2e0(%rbp), %rcx
subq %rdx, %rcx
incq %rcx
leaq -0x280(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x3390
jmp 0x6cc2
leaq -0x260(%rbp), %rdi
leaq -0x280(%rbp), %rsi
callq 0x3430
leaq -0x280(%rbp), %rdi
callq 0x3250
jmp 0x6d40
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2c8(%rbp)
movl %eax, -0x2cc(%rbp)
jmp 0x703e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2c8(%rbp)
movl %eax, -0x2cc(%rbp)
leaq -0x2a1(%rbp), %rdi
callq 0x33c0
jmp 0x703e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2c8(%rbp)
movl %eax, -0x2cc(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x3250
jmp 0x703e
leaq -0x260(%rbp), %rdi
leaq 0xa3fd(%rip), %rsi      # 0x1114b
xorl %eax, %eax
movl %eax, %edx
callq 0x3680
cmpq $0x0, %rax
jne 0x6d6c
movl $0x2, -0x2d0(%rbp)
jmp 0x6e59
leaq -0x260(%rbp), %rdi
leaq 0xa2be(%rip), %rsi      # 0x11038
xorl %eax, %eax
movl %eax, %edx
callq 0x3680
movq %rax, -0x2e8(%rbp)
cmpq $-0x1, -0x2e8(%rbp)
jne 0x6da3
movl $0x2, -0x2d0(%rbp)
jmp 0x6e59
movq -0x2e8(%rbp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x2a0(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x3390
jmp 0x6dc3
leaq -0x260(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3430
leaq -0x2a0(%rbp), %rdi
callq 0x3250
leaq -0x260(%rbp), %rdi
callq 0x35b0
testb $0x1, %al
jne 0x6df4
jmp 0x6e00
movl $0x2, -0x2d0(%rbp)
jmp 0x6e59
leaq -0x240(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x84a0
movq %rax, -0x328(%rbp)
jmp 0x6e1c
movq -0x328(%rbp), %rax
cmpq $0x0, %rax
jne 0x6e4f
leaq -0x240(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x8520
movq %rax, -0x330(%rbp)
jmp 0x6e45
movq -0x330(%rbp), %rax
movb $0x30, (%rax)
movl $0x0, -0x2d0(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x3250
movl -0x2d0(%rbp), %eax
testl %eax, %eax
je 0x6e76
jmp 0x6e71
jmp 0x6b89
jmp 0x6b89
leaq -0x210(%rbp), %rdi
callq 0x3090
jmp 0x6e89
movq -0x2f8(%rbp), %rdi
addq $0x100, %rdi            # imm = 0x100
callq 0x3490
leaq -0x240(%rbp), %rdi
callq 0x8630
movq %rax, -0x2b0(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x86e0
movq %rax, -0x2b8(%rbp)
leaq -0x2b0(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
callq 0x8680
testb $0x1, %al
jne 0x6edb
jmp 0x6f57
movq -0x2f8(%rbp), %rdi
addq $0x100, %rdi            # imm = 0x100
leaq 0xa388(%rip), %rsi      # 0x11278
callq 0x3640
jmp 0x6ef7
movq -0x2f8(%rbp), %rax
addq $0x100, %rax            # imm = 0x100
movq %rax, -0x338(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x8730
movq -0x338(%rbp), %rdi
movq %rax, %rsi
callq 0x3650
jmp 0x6f28
movq -0x2f8(%rbp), %rdi
addq $0x100, %rdi            # imm = 0x100
leaq 0xa3ad(%rip), %rsi      # 0x112ea
callq 0x3640
jmp 0x6f44
jmp 0x6f46
leaq -0x2b0(%rbp), %rdi
callq 0x8780
jmp 0x6eaf
movq -0x2f8(%rbp), %rax
cmpl $-0x1, 0x18(%rax)
je 0x6fdd
movq -0x2f8(%rbp), %rdi
addq $0x100, %rdi            # imm = 0x100
callq 0x35b0
testb $0x1, %al
jne 0x6fdb
movq -0x2f8(%rbp), %rdi
movl 0x18(%rdi), %eax
movl %eax, -0x344(%rbp)
addq $0x100, %rdi            # imm = 0x100
movq %rdi, -0x350(%rbp)
callq 0x3160
movq -0x350(%rbp), %rdi
movq %rax, -0x340(%rbp)
callq 0x3510
movl -0x344(%rbp), %edi
movq -0x340(%rbp), %rsi
movq %rax, %rdx
callq 0x3110
jmp 0x6fc8
movq -0x2f8(%rbp), %rax
movl 0x18(%rax), %edi
callq 0x3300
jmp 0x6fd9
jmp 0x6fdb
jmp 0x6fdd
movq -0x2f8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x7006
movq -0x2f8(%rbp), %rax
movq 0x10(%rax), %rsi
movq 0xffcb(%rip), %rdi      # 0x16fc8
callq 0x3350
jmp 0x7004
jmp 0x7006
leaq -0x240(%rbp), %rdi
callq 0x87e0
movl $0x0, -0x2d0(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x30c0
movl -0x2d0(%rbp), %eax
testl %eax, %eax
je 0x7039
jmp 0x7034
jmp 0x7177
jmp 0x7177
leaq -0x240(%rbp), %rdi
callq 0x87e0
leaq -0x210(%rbp), %rdi
callq 0x30c0
movl -0x2cc(%rbp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x7098
movq -0x2c8(%rbp), %rdi
callq 0x3150
movq %rax, -0x2f0(%rbp)
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0x71c6
callq 0x34f0
jmp 0x71c6
movq -0x2c8(%rbp), %rdi
callq 0x3150
movq -0x2f8(%rbp), %rdi
addq $0xe0, %rdi
leaq 0xa1c6(%rip), %rsi      # 0x1127f
callq 0x3640
jmp 0x70c0
movl $0x10, %edi
callq 0x31b0
movq -0x2f8(%rbp), %rsi
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x358(%rbp)
addq $0xe0, %rsi
callq 0x3590
jmp 0x70ec
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0x71c6
movq -0x358(%rbp), %rdi
movq 0xfee0(%rip), %rsi      # 0x16ff0
movq 0xfea9(%rip), %rdx      # 0x16fc0
callq 0x35c0
jmp 0x71c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2c8(%rbp)
movl %eax, -0x2cc(%rbp)
jmp 0x7153
movq -0x358(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2c8(%rbp)
movl %eax, -0x2cc(%rbp)
callq 0x32c0
callq 0x35a0
jmp 0x715a
jmp 0x7192
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x2c8(%rbp)
movl %eax, -0x2cc(%rbp)
callq 0x35a0
jmp 0x7175
jmp 0x7192
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0x71c6
addq $0x360, %rsp            # imm = 0x360
popq %rbp
retq
movq -0x2c8(%rbp), %rax
movq %rax, -0x360(%rbp)
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0x71c6
movq -0x360(%rbp), %rdi
callq 0x35f0
movq %rax, %rdi
callq 0x7810
callq 0x33f0
nopl (%rax,%rax)