// File: textbrowser[P]zepeto/zepeto.cc
// Function: zepeto::add_detach_product(char const*)
void zepeto::add_detach_product(const char *product)
{
  try
    {
      if(!product || strnlen(product, s_maximum_buffer_length) == 0)
	return;
      else if(m_detached_products.count(product) == 0)
	m_detached_products.insert(product);
    }
  catch(const std::bad_alloc &exception)
    {
      throw;
    }
  catch(...)
    {
      m_error.append("echo \"add_detach_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 0x5188
movq -0x70(%rbp), %rdi
movq 0x121eb(%rip), %rsi     # 0x17368
callq 0x3550
cmpq $0x0, %rax
jne 0x518d
jmp 0x5403
movq -0x90(%rbp), %rax
subq $-0x80, %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 0x51d3
movq -0xa8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x7820
movq %rax, -0xb0(%rbp)
jmp 0x51ec
leaq -0x28(%rbp), %rdi
callq 0x3250
leaq -0x59(%rbp), %rdi
callq 0x33c0
movq -0xb0(%rbp), %rax
cmpq $0x0, %rax
jne 0x53bb
movq -0x90(%rbp), %rax
subq $-0x80, %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 0x5255
movq -0xc8(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x80e0
movb %dl, -0xd1(%rbp)
movq %rax, -0xd0(%rbp)
jmp 0x5274
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 0x53bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x52c2
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 0x52f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x52f0
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 0x5335
movq -0x78(%rbp), %rdi
callq 0x3150
movq %rax, -0x88(%rbp)
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0x544f
callq 0x34f0
jmp 0x544f
movq -0x78(%rbp), %rdi
callq 0x3150
movq -0x90(%rbp), %rdi
addq $0xe0, %rdi
leaq 0xbd81(%rip), %rsi      # 0x110d4
callq 0x3640
jmp 0x535a
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 0x5386
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0x544f
movq -0xe0(%rbp), %rdi
movq 0x11c46(%rip), %rsi     # 0x16ff0
movq 0x11c0f(%rip), %rdx     # 0x16fc0
callq 0x35c0
jmp 0x544f
jmp 0x53bd
jmp 0x5403
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0x53e5
movq -0xe0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
callq 0x32c0
callq 0x35a0
jmp 0x53ec
jmp 0x541e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
callq 0x35a0
jmp 0x5401
jmp 0x541e
movq %fs:0x28, %rax
movq -0x8(%rbp), %rcx
cmpq %rcx, %rax
jne 0x544f
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 0x544f
movq -0xe8(%rbp), %rdi
callq 0x35f0
movq %rax, %rdi
callq 0x7810
callq 0x33f0
nopw %cs:(%rax,%rax)