// File: textbrowser[P]zepeto/zepeto.cc
// Function: zepeto::add_print_product(char const*)
void zepeto::add_print_product(const char *product)
{
  try
    {
      if(!product || strnlen(product, s_maximum_buffer_length) == 0)
	return;
      else if(m_printed_products.count(product) == 0)
	m_printed_products.insert(product);
    }
  catch(const std::bad_alloc &exception)
    {
      throw;
    }
  catch(...)
    {
      m_error.append("echo \"add_print_product() error.\"\n");
      throw std::runtime_error(m_error);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %fs:0x28, %rax
movq %rax, -0x8(%rbp)
movq %rdi, -0x68(%rbp)
movq %rsi, -0x70(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0x90(%rbp)
cmpq $0x0, -0x70(%rbp)
je 0x54a8
movq -0x70(%rbp), %rdi
movq 0x11ecb(%rip), %rsi     # 0x17368
callq 0x3550
cmpq $0x0, %rax
jne 0x54ad
jmp 0x5727
movq -0x90(%rbp), %rax
addq $0xb0, %rax
movq %rax, -0xa8(%rbp)
movq -0x70(%rbp), %rax
movq %rax, -0xa0(%rbp)
leaq -0x59(%rbp), %rdi
movq %rdi, -0x98(%rbp)
callq 0x3600
movq -0xa0(%rbp), %rsi
movq -0x98(%rbp), %rdx
leaq -0x28(%rbp), %rdi
callq 0x76a0
jmp 0x54f5
movq -0xa8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x7820
movq %rax, -0xb0(%rbp)
jmp 0x550e
leaq -0x28(%rbp), %rdi
callq 0x3250
leaq -0x59(%rbp), %rdi
callq 0x33c0
movq -0xb0(%rbp), %rax
cmpq $0x0, %rax
jne 0x56df
movq -0x90(%rbp), %rax
addq $0xb0, %rax
movq %rax, -0xc8(%rbp)
movq -0x70(%rbp), %rax
movq %rax, -0xc0(%rbp)
leaq -0x5a(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
callq 0x3600
movq -0xc0(%rbp), %rsi
movq -0xb8(%rbp), %rdx
leaq -0x48(%rbp), %rdi
callq 0x76a0
jmp 0x5579
movq -0xc8(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x80e0
movb %dl, -0xd1(%rbp)
movq %rax, -0xd0(%rbp)
jmp 0x5598
movb -0xd1(%rbp), %al
movq -0xd0(%rbp), %rcx
movq %rcx, -0x58(%rbp)
movb %al, -0x50(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x3250
leaq -0x5a(%rbp), %rdi
callq 0x33c0
jmp 0x56df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x55e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x3250
leaq -0x59(%rbp), %rdi
callq 0x33c0
jmp 0x561d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x5614
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x3250
leaq -0x5a(%rbp), %rdi
callq 0x33c0
movl -0x7c(%rbp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x5659
movq -0x78(%rbp), %rdi
callq 0x3150
movq %rax, -0x88(%rbp)
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0x5773
callq 0x34f0
jmp 0x5773
movq -0x78(%rbp), %rdi
callq 0x3150
movq -0x90(%rbp), %rdi
addq $0xe0, %rdi
leaq 0xba81(%rip), %rsi      # 0x110f8
callq 0x3640
jmp 0x567e
movl $0x10, %edi
callq 0x31b0
movq -0x90(%rbp), %rsi
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0xe0(%rbp)
addq $0xe0, %rsi
callq 0x3590
jmp 0x56aa
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0x5773
movq -0xe0(%rbp), %rdi
movq 0x11922(%rip), %rsi     # 0x16ff0
movq 0x118eb(%rip), %rdx     # 0x16fc0
callq 0x35c0
jmp 0x5773
jmp 0x56e1
jmp 0x5727
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x5709
movq -0xe0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
callq 0x32c0
callq 0x35a0
jmp 0x5710
jmp 0x5742
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
callq 0x35a0
jmp 0x5725
jmp 0x5742
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0x5773
addq $0xf0, %rsp
popq %rbp
retq
movq -0x78(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0x5773
movq -0xe8(%rbp), %rdi
callq 0x35f0
movq %rax, %rdi
callq 0x7810
callq 0x33f0
nopl (%rax,%rax)