// File: LiuYinCarl[P]headerFileAnalysis/headerFileAnalysis.cpp
// Function: Graph::add_node(Node*)
bool Graph::add_node(Node* node) {
  std::string name = node->get_node_name();
  if (node_name_map.count(name) > 0) {
    return false;
  }
  uint32_t node_id = node->get_node_id();
  auto node_iter = node_map.find(node_id);
  assert(node_iter == node_map.end());
  const auto [it, succ] = node_map.insert({node_id, node});
  assert(succ);
  const auto [it2, succ2] = node_name_map.insert({node->get_node_name(), node});
  assert(succ2);

  ++node_count;
  return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x150, %rsp            # imm = 0x150
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x110(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6b90
movq %rax, %rsi
leaq -0x38(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0x61f0
movq -0x110(%rbp), %rdi
movq -0x108(%rbp), %rsi
addq $0x38, %rdi
callq 0x8ee0
movq %rax, -0x100(%rbp)
jmp 0x6dea
movq -0x100(%rbp), %rax
cmpq $0x0, %rax
jbe 0x6e18
movb $0x0, -0x1(%rbp)
movl $0x1, -0x48(%rbp)
jmp 0x706b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x7082
movq -0x18(%rbp), %rdi
callq 0x6c10
movq -0x110(%rbp), %rdi
movl %eax, -0x4c(%rbp)
addq $0x8, %rdi
leaq -0x4c(%rbp), %rsi
callq 0x8f40
movq %rax, -0x118(%rbp)
jmp 0x6e41
movq -0x110(%rbp), %rdi
movq -0x118(%rbp), %rax
movq %rax, -0x58(%rbp)
addq $0x8, %rdi
callq 0x8fa0
movq %rax, -0x60(%rbp)
leaq -0x58(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x8f70
testb $0x1, %al
jne 0x6e73
jmp 0x6e75
jmp 0x6e94
leaq 0x3c3e5(%rip), %rdi     # 0x43261
leaq 0x3c358(%rip), %rsi     # 0x431db
movl $0x5a, %edx
leaq 0x3c3ee(%rip), %rcx     # 0x4327d
callq 0x6370
movq -0x110(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x120(%rbp)
leaq -0x80(%rbp), %rdi
leaq -0x4c(%rbp), %rsi
leaq -0x18(%rbp), %rdx
callq 0x9010
jmp 0x6eb9
movq -0x120(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x8fd0
movb %dl, -0x129(%rbp)
movq %rax, -0x128(%rbp)
jmp 0x6ed8
movb -0x129(%rbp), %al
movq -0x128(%rbp), %rcx
movq %rcx, -0x90(%rbp)
movb %al, -0x88(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x70(%rbp)
movb -0x88(%rbp), %al
movb %al, -0x68(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x9040
movq %rax, -0x98(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x9060
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rax
testb $0x1, (%rax)
je 0x6f34
jmp 0x6f53
leaq 0x3c35f(%rip), %rdi     # 0x4329a
leaq 0x3c299(%rip), %rsi     # 0x431db
movl $0x5c, %edx
leaq 0x3c32f(%rip), %rcx     # 0x4327d
callq 0x6370
movq -0x110(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x138(%rbp)
movq -0x18(%rbp), %rdi
callq 0x6b90
movq %rax, %rsi
leaq -0xd8(%rbp), %rdi
leaq -0x18(%rbp), %rdx
callq 0x90c0
jmp 0x6f83
movq -0x138(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x9080
movb %dl, -0x141(%rbp)
movq %rax, -0x140(%rbp)
jmp 0x6fa5
movb -0x141(%rbp), %al
movq -0x140(%rbp), %rcx
movq %rcx, -0xe8(%rbp)
movb %al, -0xe0(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0xb0(%rbp)
movb -0xe0(%rbp), %al
movb %al, -0xa8(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x9100
leaq -0xb0(%rbp), %rdi
callq 0x9120
movq %rax, -0xf0(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x9140
movq %rax, -0xf8(%rbp)
movq -0xf8(%rbp), %rax
testb $0x1, (%rax)
je 0x7019
jmp 0x7052
leaq 0x3c27f(%rip), %rdi     # 0x4329f
leaq 0x3c1b4(%rip), %rsi     # 0x431db
movl $0x5e, %edx
leaq 0x3c24a(%rip), %rcx     # 0x4327d
callq 0x6370
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x9100
jmp 0x7082
movq -0x110(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
movb $0x1, -0x1(%rbp)
movl $0x1, -0x48(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x6310
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x150, %rsp            # imm = 0x150
popq %rbp
retq
leaq -0x38(%rbp), %rdi
callq 0x6310
movq -0x40(%rbp), %rdi
callq 0x6780
nopw %cs:(%rax,%rax)