// File: /workspace/github_c_makefile_star2_O0/craigbarnes[P]lua-gumbo/lib/parser.c
// Function: pop_current_node
static GumboNode* pop_current_node(GumboParser* parser) {
  GumboParserState* state = parser->_parser_state;
  maybe_flush_text_node_buffer(parser);
  if (state->_open_elements.length > 0) {
    assert(node_html_tag_is(state->_open_elements.data[0], GUMBO_TAG_HTML));
    gumbo_debug (
      "Popping %s node.\n",
      gumbo_normalized_tagname(get_current_node(parser)->v.element.tag)
    );
  }
  GumboNode* current_node = gumbo_vector_pop(&state->_open_elements);
  if (!current_node) {
    assert(state->_open_elements.length == 0);
    return NULL;
  }
  assert (
    current_node->type == GUMBO_NODE_ELEMENT
    || current_node->type == GUMBO_NODE_TEMPLATE
  );
  bool is_closed_body_or_html_tag =
    (
      node_html_tag_is(current_node, GUMBO_TAG_BODY)
      && state->_closed_body_tag
    ) || (
      node_html_tag_is(current_node, GUMBO_TAG_HTML)
      && state->_closed_html_tag
    )
  ;
  if (
    (
      state->_current_token->type != GUMBO_TOKEN_END_TAG
      || !node_html_tag_is(current_node, state->_current_token->v.end_tag)
    )
    && !is_closed_body_or_html_tag
  ) {
    current_node->parse_flags |= GUMBO_INSERTION_IMPLICIT_END_TAG;
  }
  if (!is_closed_body_or_html_tag) {
    record_end_of_element(state->_current_token, &current_node->v.element);
  }
  return current_node;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x8030
movq -0x18(%rbp), %rax
cmpl $0x0, 0x10(%rax)
jbe 0xf0e6
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rdi
xorl %esi, %esi
callq 0x8700
testb $0x1, %al
jne 0xf0a3
jmp 0xf0a5
jmp 0xf0c4
leaq 0x25150(%rip), %rdi     # 0x341fc
leaq 0x23dc1(%rip), %rsi     # 0x32e74
movl $0x3bf, %edx            # imm = 0x3BF
leaq 0x2517d(%rip), %rcx     # 0x3423c
callq 0x4100
movq -0x10(%rbp), %rdi
callq 0x7550
movl 0x28(%rax), %edi
callq 0x5f80
movq %rax, %rsi
leaq 0x25188(%rip), %rdi     # 0x34267
movb $0x0, %al
callq 0x7540
movq -0x18(%rbp), %rdi
addq $0x8, %rdi
callq 0x6bb0
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0xf136
movq -0x18(%rbp), %rax
cmpl $0x0, 0x10(%rax)
jne 0xf10a
jmp 0xf129
leaq 0x25168(%rip), %rdi     # 0x34279
leaq 0x23d5c(%rip), %rsi     # 0x32e74
movl $0x3c7, %edx            # imm = 0x3C7
leaq 0x25118(%rip), %rcx     # 0x3423c
callq 0x4100
movq $0x0, -0x8(%rbp)
jmp 0xf227
movq -0x20(%rbp), %rax
cmpl $0x1, (%rax)
je 0xf148
movq -0x20(%rbp), %rax
cmpl $0x6, (%rax)
jne 0xf14a
jmp 0xf169
leaq 0x242f3(%rip), %rdi     # 0x33444
leaq 0x23d1c(%rip), %rsi     # 0x32e74
movl $0x3cd, %edx            # imm = 0x3CD
leaq 0x250d8(%rip), %rcx     # 0x3423c
callq 0x4100
movq -0x20(%rbp), %rdi
movl $0xa, %esi
callq 0x8700
testb $0x1, %al
jne 0xf17d
jmp 0xf18f
movq -0x18(%rbp), %rcx
movb $0x1, %al
testb $0x1, 0xa0(%rcx)
movb %al, -0x22(%rbp)
jne 0xf1bb
movq -0x20(%rbp), %rdi
xorl %esi, %esi
callq 0x8700
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x23(%rbp)
jne 0xf1a8
jmp 0xf1b5
movq -0x18(%rbp), %rax
movb 0xa1(%rax), %al
movb %al, -0x23(%rbp)
movb -0x23(%rbp), %al
movb %al, -0x22(%rbp)
movb -0x22(%rbp), %al
andb $0x1, %al
movb %al, -0x21(%rbp)
movq -0x18(%rbp), %rax
movq 0x98(%rax), %rax
cmpl $0x2, (%rax)
jne 0xf1ee
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rax
movq 0x98(%rax), %rax
movl 0x30(%rax), %esi
callq 0x8700
testb $0x1, %al
jne 0xf201
testb $0x1, -0x21(%rbp)
jne 0xf201
movq -0x20(%rbp), %rax
movl 0x14(%rax), %ecx
orl $0x2, %ecx
movl %ecx, 0x14(%rax)
testb $0x1, -0x21(%rbp)
jne 0xf21f
movq -0x18(%rbp), %rax
movq 0x98(%rax), %rdi
movq -0x20(%rbp), %rsi
addq $0x18, %rsi
callq 0xf4d0
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)