// File: romkatv[P]hcproxy/src/list.cc
// Function: hcproxy::List::Erase(hcproxy::Node*)
void List::Erase(Node* node) {
  CHECK(node);
  Node* const prev = node->prev_;
  Node* const next = node->next_;
  if (prev) {
    CHECK(head_ != node);
    CHECK(prev->next_ == node);
    prev->next_ = next;
    node->prev_ = nullptr;
  } else {
    CHECK(head_ == node);
    head_ = next;
  }
  if (next) {
    CHECK(tail_ != node);
    CHECK(next->prev_ == node);
    next->prev_ = prev;
    node->next_ = nullptr;
  } else {
    CHECK(tail_ == node);
    tail_ = prev;
  }
  CHECK(!head_ == !tail_);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x280, %rsp            # imm = 0x280
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x178(%rbp)
movq -0x10(%rbp), %rax
movb $0x0, -0x31(%rbp)
cmpq $0x0, %rax
je 0x18c71
jmp 0x18cf7
leaq 0xcb38c(%rip), %rsi     # 0xe4004
leaq -0x30(%rbp), %rdi
movq %rdi, -0x188(%rbp)
movl $0x28, %edx
movl $0x3, %ecx
callq 0x194b0
movq -0x188(%rbp), %rdi
movb $0x1, -0x31(%rbp)
callq 0x194e0
movq %rax, -0x180(%rbp)
jmp 0x18cab
movq -0x180(%rbp), %rdi
leaq 0xcb39e(%rip), %rsi     # 0xe4057
callq 0x19480
movq %rax, -0x190(%rbp)
jmp 0x18cc7
movq -0x190(%rbp), %rdi
leaq 0xd06b6(%rip), %rsi     # 0xe938b
callq 0x19450
movq %rax, -0x198(%rbp)
jmp 0x18ce3
movq -0x198(%rbp), %rsi
leaq -0x45(%rbp), %rdi
callq 0x194f0
jmp 0x18cf5
jmp 0x18cf7
testb $0x1, -0x31(%rbp)
jne 0x18cff
jmp 0x18d23
leaq -0x30(%rbp), %rdi
callq 0x19500
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
testb $0x1, -0x31(%rbp)
jne 0x18df8
jmp 0x18e01
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x58(%rbp)
cmpq $0x0, -0x50(%rbp)
je 0x18f36
movq -0x178(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movb $0x0, -0x79(%rbp)
cmpq %rcx, %rax
je 0x18d61
jmp 0x18de7
leaq 0xcb29c(%rip), %rsi     # 0xe4004
leaq -0x78(%rbp), %rdi
movq %rdi, -0x1a8(%rbp)
movl $0x2c, %edx
movl $0x3, %ecx
callq 0x194b0
movq -0x1a8(%rbp), %rdi
movb $0x1, -0x79(%rbp)
callq 0x194e0
movq %rax, -0x1a0(%rbp)
jmp 0x18d9b
movq -0x1a0(%rbp), %rdi
leaq 0xcb2a5(%rip), %rsi     # 0xe404e
callq 0x19590
movq %rax, -0x1b0(%rbp)
jmp 0x18db7
movq -0x1b0(%rbp), %rdi
leaq 0xd05c6(%rip), %rsi     # 0xe938b
callq 0x19450
movq %rax, -0x1b8(%rbp)
jmp 0x18dd3
movq -0x1b8(%rbp), %rsi
leaq -0x7a(%rbp), %rdi
callq 0x194f0
jmp 0x18de5
jmp 0x18de7
testb $0x1, -0x79(%rbp)
jne 0x18def
jmp 0x18e21
leaq -0x78(%rbp), %rdi
callq 0x19500
leaq -0x30(%rbp), %rdi
callq 0x19500
jmp 0x19442
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
testb $0x1, -0x79(%rbp)
jne 0x18ee4
jmp 0x18eed
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x10(%rbp), %rcx
movb $0x0, -0xa1(%rbp)
cmpq %rcx, %rax
jne 0x18e3e
jmp 0x18ecd
leaq 0xcb1bf(%rip), %rsi     # 0xe4004
leaq -0xa0(%rbp), %rdi
movq %rdi, -0x1c8(%rbp)
movl $0x2d, %edx
movl $0x3, %ecx
callq 0x194b0
movq -0x1c8(%rbp), %rdi
movb $0x1, -0xa1(%rbp)
callq 0x194e0
movq %rax, -0x1c0(%rbp)
jmp 0x18e7e
movq -0x1c0(%rbp), %rdi
leaq 0xcb1d0(%rip), %rsi     # 0xe405c
callq 0x19620
movq %rax, -0x1d0(%rbp)
jmp 0x18e9a
movq -0x1d0(%rbp), %rdi
leaq 0xd04e3(%rip), %rsi     # 0xe938b
callq 0x19450
movq %rax, -0x1d8(%rbp)
jmp 0x18eb6
movq -0x1d8(%rbp), %rsi
leaq -0xa2(%rbp), %rdi
callq 0x194f0
jmp 0x18ecb
jmp 0x18ecd
testb $0x1, -0xa1(%rbp)
jne 0x18ed8
jmp 0x18f09
leaq -0xa0(%rbp), %rdi
callq 0x19500
leaq -0x78(%rbp), %rdi
callq 0x19500
jmp 0x19442
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
testb $0x1, -0xa1(%rbp)
jne 0x18f25
jmp 0x18f31
movq -0x58(%rbp), %rcx
movq -0x50(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq $0x0, (%rax)
jmp 0x19033
leaq -0xa0(%rbp), %rdi
callq 0x19500
jmp 0x19442
movq -0x178(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movb $0x0, -0xc9(%rbp)
cmpq %rcx, %rax
jne 0x18f55
jmp 0x18fe4
leaq 0xcb0a8(%rip), %rsi     # 0xe4004
leaq -0xc8(%rbp), %rdi
movq %rdi, -0x1e8(%rbp)
movl $0x31, %edx
movl $0x3, %ecx
callq 0x194b0
movq -0x1e8(%rbp), %rdi
movb $0x1, -0xc9(%rbp)
callq 0x194e0
movq %rax, -0x1e0(%rbp)
jmp 0x18f95
movq -0x1e0(%rbp), %rdi
leaq 0xcb0cd(%rip), %rsi     # 0xe4070
callq 0x19590
movq %rax, -0x1f0(%rbp)
jmp 0x18fb1
movq -0x1f0(%rbp), %rdi
leaq 0xd03cc(%rip), %rsi     # 0xe938b
callq 0x19450
movq %rax, -0x1f8(%rbp)
jmp 0x18fcd
movq -0x1f8(%rbp), %rsi
leaq -0xca(%rbp), %rdi
callq 0x194f0
jmp 0x18fe2
jmp 0x18fe4
testb $0x1, -0xc9(%rbp)
jne 0x18fef
jmp 0x19012
leaq -0xc8(%rbp), %rdi
callq 0x19500
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
testb $0x1, -0xc9(%rbp)
jne 0x19022
jmp 0x1902e
movq -0x178(%rbp), %rax
movq -0x58(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x19033
leaq -0xc8(%rbp), %rdi
callq 0x19500
jmp 0x19442
cmpq $0x0, -0x58(%rbp)
je 0x19239
movq -0x178(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x10(%rbp), %rcx
movb $0x0, -0xf1(%rbp)
cmpq %rcx, %rax
je 0x1905e
jmp 0x190ed
leaq 0xcaf9f(%rip), %rsi     # 0xe4004
leaq -0xf0(%rbp), %rdi
movq %rdi, -0x208(%rbp)
movl $0x35, %edx
movl $0x3, %ecx
callq 0x194b0
movq -0x208(%rbp), %rdi
movb $0x1, -0xf1(%rbp)
callq 0x194e0
movq %rax, -0x200(%rbp)
jmp 0x1909e
movq -0x200(%rbp), %rdi
leaq 0xcafd2(%rip), %rsi     # 0xe407e
callq 0x19590
movq %rax, -0x210(%rbp)
jmp 0x190ba
movq -0x210(%rbp), %rdi
leaq 0xd02c3(%rip), %rsi     # 0xe938b
callq 0x19450
movq %rax, -0x218(%rbp)
jmp 0x190d6
movq -0x218(%rbp), %rsi
leaq -0xf2(%rbp), %rdi
callq 0x194f0
jmp 0x190eb
jmp 0x190ed
testb $0x1, -0xf1(%rbp)
jne 0x190f8
jmp 0x19122
leaq -0xf0(%rbp), %rdi
callq 0x19500
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
testb $0x1, -0xf1(%rbp)
jne 0x191e4
jmp 0x191f0
movq -0x58(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movb $0x0, -0x119(%rbp)
cmpq %rcx, %rax
jne 0x1913e
jmp 0x191cd
leaq 0xcaebf(%rip), %rsi     # 0xe4004
leaq -0x118(%rbp), %rdi
movq %rdi, -0x228(%rbp)
movl $0x36, %edx
movl $0x3, %ecx
callq 0x194b0
movq -0x228(%rbp), %rdi
movb $0x1, -0x119(%rbp)
callq 0x194e0
movq %rax, -0x220(%rbp)
jmp 0x1917e
movq -0x220(%rbp), %rdi
leaq 0xcaf00(%rip), %rsi     # 0xe408c
callq 0x19620
movq %rax, -0x230(%rbp)
jmp 0x1919a
movq -0x230(%rbp), %rdi
leaq 0xd01e3(%rip), %rsi     # 0xe938b
callq 0x19450
movq %rax, -0x238(%rbp)
jmp 0x191b6
movq -0x238(%rbp), %rsi
leaq -0x11a(%rbp), %rdi
callq 0x194f0
jmp 0x191cb
jmp 0x191cd
testb $0x1, -0x119(%rbp)
jne 0x191d8
jmp 0x1920c
leaq -0x118(%rbp), %rdi
callq 0x19500
leaq -0xf0(%rbp), %rdi
callq 0x19500
jmp 0x19442
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
testb $0x1, -0x119(%rbp)
jne 0x19228
jmp 0x19234
movq -0x50(%rbp), %rcx
movq -0x58(%rbp), %rax
movq %rcx, (%rax)
movq -0x10(%rbp), %rax
movq $0x0, 0x8(%rax)
jmp 0x19338
leaq -0x118(%rbp), %rdi
callq 0x19500
jmp 0x19442
movq -0x178(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x10(%rbp), %rcx
movb $0x0, -0x141(%rbp)
cmpq %rcx, %rax
jne 0x19259
jmp 0x192e8
leaq 0xcada4(%rip), %rsi     # 0xe4004
leaq -0x140(%rbp), %rdi
movq %rdi, -0x248(%rbp)
movl $0x3a, %edx
movl $0x3, %ecx
callq 0x194b0
movq -0x248(%rbp), %rdi
movb $0x1, -0x141(%rbp)
callq 0x194e0
movq %rax, -0x240(%rbp)
jmp 0x19299
movq -0x240(%rbp), %rdi
leaq 0xcadf9(%rip), %rsi     # 0xe40a0
callq 0x19590
movq %rax, -0x250(%rbp)
jmp 0x192b5
movq -0x250(%rbp), %rdi
leaq 0xd00c8(%rip), %rsi     # 0xe938b
callq 0x19450
movq %rax, -0x258(%rbp)
jmp 0x192d1
movq -0x258(%rbp), %rsi
leaq -0x142(%rbp), %rdi
callq 0x194f0
jmp 0x192e6
jmp 0x192e8
testb $0x1, -0x141(%rbp)
jne 0x192f3
jmp 0x19316
leaq -0x140(%rbp), %rdi
callq 0x19500
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
testb $0x1, -0x141(%rbp)
jne 0x19327
jmp 0x19333
movq -0x178(%rbp), %rax
movq -0x50(%rbp), %rcx
movq %rcx, 0x8(%rax)
jmp 0x19338
leaq -0x140(%rbp), %rdi
callq 0x19500
jmp 0x19442
movq -0x178(%rbp), %rcx
cmpq $0x0, (%rcx)
setne %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
cmpq $0x0, 0x8(%rcx)
setne %cl
xorb $-0x1, %cl
andb $0x1, %cl
movzbl %cl, %ecx
movb $0x0, -0x169(%rbp)
cmpl %ecx, %eax
jne 0x1936e
jmp 0x193fd
leaq 0xcac8f(%rip), %rsi     # 0xe4004
leaq -0x168(%rbp), %rdi
movq %rdi, -0x268(%rbp)
movl $0x3d, %edx
movl $0x3, %ecx
callq 0x194b0
movq -0x268(%rbp), %rdi
movb $0x1, -0x169(%rbp)
callq 0x194e0
movq %rax, -0x260(%rbp)
jmp 0x193ae
movq -0x260(%rbp), %rdi
leaq 0xcacf2(%rip), %rsi     # 0xe40ae
callq 0x19650
movq %rax, -0x270(%rbp)
jmp 0x193ca
movq -0x270(%rbp), %rdi
leaq 0xcffb3(%rip), %rsi     # 0xe938b
callq 0x19450
movq %rax, -0x278(%rbp)
jmp 0x193e6
movq -0x278(%rbp), %rsi
leaq -0x16a(%rbp), %rdi
callq 0x194f0
jmp 0x193fb
jmp 0x193fd
testb $0x1, -0x169(%rbp)
jne 0x19408
jmp 0x1942b
leaq -0x168(%rbp), %rdi
callq 0x19500
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
testb $0x1, -0x169(%rbp)
jne 0x19434
jmp 0x19440
addq $0x280, %rsp            # imm = 0x280
popq %rbp
retq
leaq -0x168(%rbp), %rdi
callq 0x19500
jmp 0x19442
movq -0x40(%rbp), %rdi
callq 0xe1080
nopl (%rax,%rax)