// File: ahupowerdns[P]spamidea/getsender.cc
// Function: MailTreeNode::add(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
MailTreeNode* add(const std::string& name)
  {
    string rname = flattenDomain(name, {"sendgrid.net", "github.net", "outlook.com"});

    if(rname == d_name) {
      ++d_count;
      return this;
    }
    
    for(auto& mtn : d_children) {
      if(mtn->d_name == rname) {
        ++mtn->d_count;
        ++d_count;
        return mtn.get();
      }
    }
    d_children.emplace_back(std::make_unique<MailTreeNode>(rname));
    (*d_children.rbegin())->d_count = 1;
    ++d_count;
    return d_children.rbegin()->get();
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1d0, %rsp            # imm = 0x1D0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x140(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x138(%rbp)
movb $0x1, -0xdf(%rbp)
leaq -0xc0(%rbp), %rax
movq %rax, -0x130(%rbp)
movq %rax, -0xc8(%rbp)
leaq -0xc9(%rbp), %rdi
movq %rdi, -0x128(%rbp)
callq 0x67b0
movq -0x130(%rbp), %rdi
movq -0x128(%rbp), %rdx
leaq 0x30b6e(%rip), %rsi     # 0x3925b
callq 0x9ca0
jmp 0x86f4
leaq -0xa0(%rbp), %rax
movq %rax, -0x150(%rbp)
movq %rax, -0xc8(%rbp)
leaq -0xdd(%rbp), %rdi
movq %rdi, -0x148(%rbp)
callq 0x67b0
movq -0x150(%rbp), %rdi
movq -0x148(%rbp), %rdx
leaq 0x30b37(%rip), %rsi     # 0x39268
callq 0x9ca0
jmp 0x8738
leaq -0x80(%rbp), %rax
movq %rax, -0x160(%rbp)
movq %rax, -0xc8(%rbp)
leaq -0xde(%rbp), %rdi
movq %rdi, -0x158(%rbp)
callq 0x67b0
movq -0x160(%rbp), %rdi
movq -0x158(%rbp), %rdx
leaq 0x30b01(%rip), %rsi     # 0x39273
callq 0x9ca0
jmp 0x8779
movb $0x0, -0xdf(%rbp)
leaq -0xc0(%rbp), %rax
movq %rax, -0x60(%rbp)
movq $0x3, -0x58(%rbp)
leaq -0xe0(%rbp), %rdi
movq %rdi, -0x168(%rbp)
callq 0xbef0
movq -0x168(%rbp), %rcx
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
leaq -0x50(%rbp), %rdi
callq 0xbf10
jmp 0x87c0
movq -0x138(%rbp), %rsi
leaq -0x38(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0x6a70
jmp 0x87d6
leaq -0x50(%rbp), %rdi
callq 0xbf90
leaq -0xe0(%rbp), %rdi
callq 0xbff0
leaq -0xc0(%rbp), %rax
movq %rax, -0x178(%rbp)
addq $0x60, %rax
movq %rax, -0x170(%rbp)
movq -0x170(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x180(%rbp)
callq 0x6290
movq -0x178(%rbp), %rcx
movq -0x180(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x170(%rbp)
jne 0x8804
leaq -0xde(%rbp), %rdi
callq 0x64a0
leaq -0xdd(%rbp), %rdi
callq 0x64a0
leaq -0xc9(%rbp), %rdi
callq 0x64a0
movq -0x140(%rbp), %rsi
leaq -0x38(%rbp), %rdi
callq 0xc010
testb $0x1, %al
jne 0x8872
jmp 0x89e2
movq -0x140(%rbp), %rax
movl 0x20(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x20(%rax)
movq %rax, -0x8(%rbp)
movl $0x1, -0xe4(%rbp)
jmp 0x8bd7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x8979
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x896d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x8961
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x8909
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x50(%rbp), %rdi
callq 0xbf90
leaq -0xe0(%rbp), %rdi
callq 0xbff0
leaq -0xc0(%rbp), %rax
movq %rax, -0x190(%rbp)
addq $0x60, %rax
movq %rax, -0x188(%rbp)
movq -0x188(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x198(%rbp)
callq 0x6290
movq -0x190(%rbp), %rcx
movq -0x198(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x188(%rbp)
jne 0x892e
jmp 0x8961
leaq -0xde(%rbp), %rdi
callq 0x64a0
leaq -0xdd(%rbp), %rdi
callq 0x64a0
leaq -0xc9(%rbp), %rdi
callq 0x64a0
testb $0x1, -0xdf(%rbp)
jne 0x8990
jmp 0x89dd
movq -0xc8(%rbp), %rax
leaq -0xc0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x1a0(%rbp)
je 0x89db
movq -0x1a0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x1a8(%rbp)
callq 0x6290
movq -0x1a8(%rbp), %rax
leaq -0xc0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x1a0(%rbp)
jne 0x89aa
jmp 0x89dd
jmp 0x8bf6
movq -0x140(%rbp), %rax
addq $0x28, %rax
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rdi
callq 0xc0a0
movq %rax, -0xf8(%rbp)
movq -0xf0(%rbp), %rdi
callq 0xc0d0
movq %rax, -0x100(%rbp)
leaq -0xf8(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0xc100
testb $0x1, %al
jne 0x8a36
jmp 0x8ac1
leaq -0xf8(%rbp), %rdi
callq 0xc140
movq %rax, -0x108(%rbp)
movq -0x108(%rbp), %rdi
callq 0xc160
movq %rax, %rdi
leaq -0x38(%rbp), %rsi
callq 0xc010
testb $0x1, %al
jne 0x8a67
jmp 0x8aae
movq -0x108(%rbp), %rdi
callq 0xc160
movq %rax, %rcx
movq -0x140(%rbp), %rax
movl 0x20(%rcx), %edx
addl $0x1, %edx
movl %edx, 0x20(%rcx)
movl 0x20(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x20(%rax)
movq -0x108(%rbp), %rdi
callq 0xc180
movq %rax, -0x8(%rbp)
movl $0x1, -0xe4(%rbp)
jmp 0x8bd7
jmp 0x8ab0
leaq -0xf8(%rbp), %rdi
callq 0xc1b0
jmp 0x8a1a
movq -0x140(%rbp), %rax
addq $0x28, %rax
movq %rax, -0x1b0(%rbp)
leaq -0x110(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0xc250
jmp 0x8ae5
movq -0x1b0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xc1d0
jmp 0x8afa
leaq -0x110(%rbp), %rdi
callq 0xbc00
movq -0x140(%rbp), %rsi
addq $0x28, %rsi
leaq -0x118(%rbp), %rdi
movq %rdi, -0x1c0(%rbp)
callq 0xc2d0
movq -0x1c0(%rbp), %rdi
callq 0xc320
movq %rax, -0x1b8(%rbp)
jmp 0x8b39
movq -0x1b8(%rbp), %rdi
callq 0xc160
movq -0x140(%rbp), %rsi
movl $0x1, 0x20(%rax)
movl 0x20(%rsi), %eax
incl %eax
movl %eax, 0x20(%rsi)
addq $0x28, %rsi
leaq -0x120(%rbp), %rdi
movq %rdi, -0x1d0(%rbp)
callq 0xc2d0
movq -0x1d0(%rbp), %rdi
callq 0xc350
movq %rax, -0x1c8(%rbp)
jmp 0x8b87
movq -0x1c8(%rbp), %rdi
callq 0xc180
movq %rax, -0x8(%rbp)
movl $0x1, -0xe4(%rbp)
jmp 0x8bd7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x8bed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x110(%rbp), %rdi
callq 0xbc00
jmp 0x8bed
leaq -0x38(%rbp), %rdi
callq 0x6290
movq -0x8(%rbp), %rax
addq $0x1d0, %rsp            # imm = 0x1D0
popq %rbp
retq
leaq -0x38(%rbp), %rdi
callq 0x6290
movq -0xd8(%rbp), %rdi
callq 0x67a0
nopw %cs:(%rax,%rax)
nopl (%rax)