// File: textbrowser[P]zepeto/zepeto.cc
// Function: zepeto::add_attach_product(char const*)
void zepeto::add_attach_product(const char *product)
{
  try
    {
      if(!product || strnlen(product, s_maximum_buffer_length) == 0)
	return;
      else if(m_attached_products.count(product) == 0)
	m_attached_products.insert(product);
    }
  catch(const std::bad_alloc &exception)
    {
      throw;
    }
  catch(...)
    {
      m_error.append("echo \"add_attach_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 0x4e68
movq -0x70(%rbp), %rdi
movq 0x1250b(%rip), %rsi     # 0x17368
callq 0x3550
cmpq $0x0, %rax
jne 0x4e6d
jmp 0x50e3
movq -0x90(%rbp), %rax
addq $0x50, %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 0x4eb3
movq -0xa8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x7820
movq %rax, -0xb0(%rbp)
jmp 0x4ecc
leaq -0x28(%rbp), %rdi
callq 0x3250
leaq -0x59(%rbp), %rdi
callq 0x33c0
movq -0xb0(%rbp), %rax
cmpq $0x0, %rax
jne 0x509b
movq -0x90(%rbp), %rax
addq $0x50, %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 0x4f35
movq -0xc8(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x80e0
movb %dl, -0xd1(%rbp)
movq %rax, -0xd0(%rbp)
jmp 0x4f54
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 0x509b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x4fa2
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 0x4fd9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x4fd0
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 0x5015
movq -0x78(%rbp), %rdi
callq 0x3150
movq %rax, -0x88(%rbp)
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0x512f
callq 0x34f0
jmp 0x512f
movq -0x78(%rbp), %rdi
callq 0x3150
movq -0x90(%rbp), %rdi
addq $0xe0, %rdi
leaq 0xc07d(%rip), %rsi      # 0x110b0
callq 0x3640
jmp 0x503a
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 0x5066
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0x512f
movq -0xe0(%rbp), %rdi
movq 0x11f66(%rip), %rsi     # 0x16ff0
movq 0x11f2f(%rip), %rdx     # 0x16fc0
callq 0x35c0
jmp 0x512f
jmp 0x509d
jmp 0x50e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x50c5
movq -0xe0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
callq 0x32c0
callq 0x35a0
jmp 0x50cc
jmp 0x50fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
callq 0x35a0
jmp 0x50e1
jmp 0x50fe
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0x512f
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 0x512f
movq -0xe8(%rbp), %rdi
callq 0x35f0
movq %rax, %rdi
callq 0x7810
callq 0x33f0
nopw %cs:(%rax,%rax)