// File: /workspace/github_cpp_makefile_star2_O2/Falldog[P]dcinja/src/include/inja/inja.hpp
// Function: inja::Parser::parse_statement(inja::Template&, inja::Token::Kind, std::basic_string_view<char, std::char_traits<char>>)
bool parse_statement(Template &tmpl, Token::Kind closing, nonstd::string_view path) {
    if (tok.kind != Token::Kind::Id) {
      return false;
    }

    if (tok.text == static_cast<decltype(tok.text)>("if")) {
      get_next_token();

      auto if_statement_node = std::make_shared<IfStatementNode>(current_block, tok.text.data() - tmpl.content.c_str());
      current_block->nodes.emplace_back(if_statement_node);
      if_statement_stack.emplace(if_statement_node.get());
      current_block = &if_statement_node->true_statement;
      current_expression_list = &if_statement_node->condition;

      if (!parse_expression(tmpl, closing)) {
        return false;
      }

    } else if (tok.text == static_cast<decltype(tok.text)>("else")) {
      if (if_statement_stack.empty()) {
        throw_parser_error("else without matching if");
      }
      auto &if_statement_data = if_statement_stack.top();
      get_next_token();

      if_statement_data->has_false_statement = true;
      current_block = &if_statement_data->false_statement;

      // Chained else if
      if (tok.kind == Token::Kind::Id && tok.text == static_cast<decltype(tok.text)>("if")) {
        get_next_token();

        auto if_statement_node = std::make_shared<IfStatementNode>(true, current_block, tok.text.data() - tmpl.content.c_str());
        current_block->nodes.emplace_back(if_statement_node);
        if_statement_stack.emplace(if_statement_node.get());
        current_block = &if_statement_node->true_statement;
        current_expression_list = &if_statement_node->condition;

        if (!parse_expression(tmpl, closing)) {
          return false;
        }
      }

    } else if (tok.text == static_cast<decltype(tok.text)>("endif")) {
      if (if_statement_stack.empty()) {
        throw_parser_error("endif without matching if");
      }

      // Nested if statements
      while (if_statement_stack.top()->is_nested) {
        if_statement_stack.pop();
      }

      auto &if_statement_data = if_statement_stack.top();
      get_next_token();

      current_block = if_statement_data->parent;
      if_statement_stack.pop();

    } else if (tok.text == static_cast<decltype(tok.text)>("for")) {
      get_next_token();

      // options: for a in arr; for a, b in obj
      if (tok.kind != Token::Kind::Id) {
        throw_parser_error("expected id, got '" + tok.describe() + "'");
      }

      Token value_token = tok;
      get_next_token();

      // Object type
      std::shared_ptr<ForStatementNode> for_statement_node;
      if (tok.kind == Token::Kind::Comma) {
        get_next_token();
        if (tok.kind != Token::Kind::Id) {
          throw_parser_error("expected id, got '" + tok.describe() + "'");
        }

        Token key_token = std::move(value_token);
        value_token = tok;
        get_next_token();

        for_statement_node = std::make_shared<ForObjectStatementNode>(static_cast<std::string>(key_token.text), static_cast<std::string>(value_token.text), current_block, tok.text.data() - tmpl.content.c_str());

      // Array type
      } else {
        for_statement_node = std::make_shared<ForArrayStatementNode>(static_cast<std::string>(value_token.text), current_block, tok.text.data() - tmpl.content.c_str());
      }

      current_block->nodes.emplace_back(for_statement_node);
      for_statement_stack.emplace(for_statement_node.get());
      current_block = &for_statement_node->body;
      current_expression_list = &for_statement_node->condition;

      if (tok.kind != Token::Kind::Id || tok.text != static_cast<decltype(tok.text)>("in")) {
        throw_parser_error("expected 'in', got '" + tok.describe() + "'");
      }
      get_next_token();

      if (!parse_expression(tmpl, closing)) {
        return false;
      }

    } else if (tok.text == static_cast<decltype(tok.text)>("endfor")) {
      if (for_statement_stack.empty()) {
        throw_parser_error("endfor without matching for");
      }

      auto &for_statement_data = for_statement_stack.top();
      get_next_token();

      current_block = for_statement_data->parent;
      for_statement_stack.pop();

    } else if (tok.text == static_cast<decltype(tok.text)>("include")) {
      get_next_token();

      if (tok.kind != Token::Kind::String) {
        throw_parser_error("expected string, got '" + tok.describe() + "'");
      }

      // Build the relative path
      json json_name = json::parse(tok.text);
      std::string pathname = static_cast<std::string>(path);
      pathname += json_name.get_ref<const std::string &>();
      if (pathname.compare(0, 2, "./") == 0) {
        pathname.erase(0, 2);
      }
      // sys::path::remove_dots(pathname, true, sys::path::Style::posix);

      if (config.search_included_templates_in_files && template_storage.find(pathname) == template_storage.end()) {
        auto include_template = Template(load_file(pathname));
        template_storage.emplace(pathname, include_template);
        parse_into_template(template_storage[pathname], pathname);
      }

      current_block->nodes.emplace_back(std::make_shared<IncludeStatementNode>(pathname, tok.text.data() - tmpl.content.c_str()));

      get_next_token();

    } else if (tok.text == static_cast<decltype(tok.text)>("set")) {
      get_next_token();

      if (tok.kind != Token::Kind::Id) {
        throw_parser_error("expected variable name, got '" + tok.describe() + "'");
      }

      std::string key = static_cast<std::string>(tok.text);
      get_next_token();

      auto set_statement_node = std::make_shared<SetStatementNode>(key, tok.text.data() - tmpl.content.c_str());
      current_block->nodes.emplace_back(set_statement_node);
      current_expression_list = &set_statement_node->expression;

      if (tok.text != static_cast<decltype(tok.text)>("=")) {
        throw_parser_error("expected '=', got '" + tok.describe() + "'");
      }
      get_next_token();

      if (!parse_expression(tmpl, closing)) {
        return false;
      }

    } else {
      return false;
    }
    return true;
  }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x128, %rsp            # imm = 0x128
movq %rcx, 0xe8(%rsp)
movq %r8, 0xf0(%rsp)
cmpl $0x9, 0x48(%rdi)
jne 0x171f2
movl %edx, %ebp
movq %rsi, %r14
movq %rdi, %rbx
movq 0x50(%rdi), %rdi
movq 0x58(%rbx), %rsi
leaq 0x2f8ca(%rip), %rcx     # 0x46a18
pushq $0x2
popq %rdx
callq 0x19e1c
testb %al, %al
je 0x171f9
movq %rbx, %rdi
callq 0x16ffc
leaq 0xa8(%rbx), %rsi
movq 0x58(%rbx), %rax
subq 0x28(%r14), %rax
leaq 0x8(%rsp), %rdx
movq %rax, (%rdx)
leaq 0x58(%rsp), %r15
movq %r15, %rdi
callq 0x19e50
movq 0xa8(%rbx), %rdi
addq $0x10, %rdi
movq %r15, %rsi
callq 0x19e72
leaq 0x158(%rbx), %rdi
movq 0x58(%rsp), %rax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
callq 0x1a680
movq 0x58(%rsp), %rax
leaq 0x38(%rax), %rcx
movq %rcx, 0xa8(%rbx)
addq $0x10, %rax
movq %rax, 0xb0(%rbx)
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x17ed2
movl %eax, %ebx
leaq 0x60(%rsp), %rdi
callq 0xd76e
testb %bl, %bl
jne 0x176cd
xorl %eax, %eax
jmp 0x176cf
movq 0x50(%rbx), %rdi
movq 0x58(%rbx), %rsi
leaq 0x2f964(%rip), %rcx     # 0x46b6c
pushq $0x4
popq %rdx
callq 0x19e1c
testb %al, %al
je 0x1734d
movq 0x188(%rbx), %r15
cmpq 0x168(%rbx), %r15
jne 0x1725c
leaq 0x2f942(%rip), %rsi     # 0x46b71
leaq 0x58(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0xc0a4
leaq 0x58(%rsp), %rsi
movq %rbx, %rdi
callq 0x1704a
leaq 0x58(%rsp), %rdi
callq 0x9898
movq 0x188(%rbx), %r15
cmpq 0x190(%rbx), %r15
jne 0x17276
movq 0x1a0(%rbx), %rax
movl $0x200, %r15d           # imm = 0x200
addq -0x8(%rax), %r15
movq %rbx, %rdi
callq 0x16ffc
movq -0x8(%r15), %rax
movb $0x1, 0x91(%rax)
addq $0x60, %rax
movq %rax, 0xa8(%rbx)
cmpl $0x9, 0x48(%rbx)
jne 0x176cd
movq 0x50(%rbx), %rdi
movq 0x58(%rbx), %rsi
leaq 0x2f76b(%rip), %rcx     # 0x46a18
pushq $0x2
popq %rdx
callq 0x19e1c
testb %al, %al
je 0x176cd
leaq 0xa8(%rbx), %r15
movq %rbx, %rdi
callq 0x16ffc
leaq 0x30(%rsp), %rsi
movb $0x1, (%rsi)
movq 0x58(%rbx), %rax
subq 0x28(%r14), %rax
leaq 0x8(%rsp), %rcx
movq %rax, (%rcx)
leaq 0x58(%rsp), %r12
movq %r12, %rdi
movq %r15, %rdx
callq 0x19eae
movq 0xa8(%rbx), %rdi
addq $0x10, %rdi
movq %r12, %rsi
callq 0x19e72
leaq 0x158(%rbx), %rdi
movq 0x58(%rsp), %rax
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
callq 0x1a680
movq 0x58(%rsp), %rax
leaq 0x38(%rax), %rcx
movq %rcx, 0xa8(%rbx)
addq $0x10, %rax
movq %rax, 0xb0(%rbx)
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x17ed2
jmp 0x171de
movq 0x50(%rbx), %rdi
movq 0x58(%rbx), %rsi
leaq 0x2f82e(%rip), %rcx     # 0x46b8a
pushq $0x5
popq %rdx
callq 0x19e1c
testb %al, %al
je 0x173fb
movq 0x188(%rbx), %rax
cmpq 0x168(%rbx), %rax
jne 0x173a9
leaq 0x2f80d(%rip), %rsi     # 0x46b90
leaq 0x58(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0xc0a4
leaq 0x58(%rsp), %rsi
movq %rbx, %rdi
callq 0x1704a
leaq 0x58(%rsp), %rdi
callq 0x9898
leaq 0x158(%rbx), %r14
movq 0x188(%rbx), %r15
cmpq 0x190(%rbx), %r15
je 0x173d2
movq -0x8(%r15), %rax
cmpb $0x1, 0x90(%rax)
je 0x173f1
jmp 0x176ab
movq 0x1a0(%rbx), %rax
movq -0x8(%rax), %r15
movq 0x1f8(%r15), %rax
cmpb $0x0, 0x90(%rax)
je 0x176a4
movq %r14, %rdi
callq 0x1aa3c
jmp 0x173b0
leaq 0x48(%rbx), %r15
movq 0x50(%rbx), %rdi
movq 0x58(%rbx), %rsi
leaq 0x2f617(%rip), %rcx     # 0x46a25
pushq $0x3
popq %rdx
callq 0x19e1c
testb %al, %al
je 0x175ff
movq %rbx, %rdi
callq 0x16ffc
cmpl $0x9, 0x48(%rbx)
je 0x17491
leaq 0x30(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x17e14
leaq 0x2f767(%rip), %rsi     # 0x46baa
leaq 0x8(%rsp), %rdi
movq %r12, %rdx
callq 0x17df0
leaq 0x319d7(%rip), %rdx     # 0x48e2e
leaq 0x58(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1093d
leaq 0x58(%rsp), %rsi
movq %rbx, %rdi
callq 0x1704a
leaq 0x58(%rsp), %rdi
callq 0x9898
leaq 0x8(%rsp), %rdi
callq 0x9898
leaq 0x30(%rsp), %rdi
callq 0x9898
movq 0x10(%r15), %rax
movq %rax, 0xc0(%rsp)
movups (%r15), %xmm0
movaps %xmm0, 0xb0(%rsp)
movq %rbx, %rdi
callq 0x16ffc
xorps %xmm0, %xmm0
movaps %xmm0, 0xa0(%rsp)
cmpl $0x12, 0x48(%rbx)
jne 0x17902
movq %rbx, %rdi
callq 0x16ffc
cmpl $0x9, (%r15)
je 0x17538
leaq 0x30(%rsp), %rdi
movq %r15, %rsi
callq 0x17e14
leaq 0x2f6c2(%rip), %rsi     # 0x46baa
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x17df0
leaq 0x31930(%rip), %rdx     # 0x48e2e
leaq 0x58(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1093d
leaq 0x58(%rsp), %rsi
movq %rbx, %rdi
callq 0x1704a
leaq 0x58(%rsp), %rdi
callq 0x9898
leaq 0x8(%rsp), %rdi
callq 0x9898
leaq 0x30(%rsp), %rdi
callq 0x9898
movq 0xc0(%rsp), %rax
movq %rax, 0x40(%rsp)
movaps 0xb0(%rsp), %xmm0
movaps %xmm0, 0x30(%rsp)
movups (%r15), %xmm0
movaps %xmm0, 0xb0(%rsp)
movq 0x10(%r15), %rax
movq %rax, 0xc0(%rsp)
movq %rbx, %rdi
callq 0x16ffc
leaq 0x38(%rsp), %rsi
leaq 0x58(%rsp), %rdi
leaq 0x2f(%rsp), %rdx
callq 0x1690a
leaq 0xb8(%rsp), %rsi
leaq 0x8(%rsp), %rdi
leaq 0x2e(%rsp), %rdx
callq 0x1690a
leaq 0xa8(%rbx), %rcx
movq 0x58(%rbx), %rax
subq 0x28(%r14), %rax
leaq 0xf8(%rsp), %r8
movq %rax, (%r8)
leaq 0xd8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
leaq 0x8(%rsp), %rdx
callq 0x19ed2
leaq 0xa0(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x1ad62
leaq 0xe0(%rsp), %rdi
callq 0xd76e
leaq 0x8(%rsp), %rdi
callq 0x9898
jmp 0x1795e
movq 0x50(%rbx), %rdi
movq 0x58(%rbx), %rsi
leaq 0x2f5c4(%rip), %rcx     # 0x46bd2
pushq $0x6
popq %rdx
callq 0x19e1c
testb %al, %al
je 0x176e1
movq 0x1d8(%rbx), %r15
cmpq 0x1b8(%rbx), %r15
jne 0x17662
leaq 0x2f5a4(%rip), %rsi     # 0x46bd9
leaq 0x58(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0xc0a4
leaq 0x58(%rsp), %rsi
movq %rbx, %rdi
callq 0x1704a
leaq 0x58(%rsp), %rdi
callq 0x9898
movq 0x1d8(%rbx), %r15
leaq 0x1a8(%rbx), %r14
cmpq 0x1e0(%rbx), %r15
jne 0x17683
movq 0x1f0(%rbx), %rax
movl $0x200, %r15d           # imm = 0x200
addq -0x8(%rax), %r15
movq %rbx, %rdi
callq 0x16ffc
movq -0x8(%r15), %rax
movq 0x60(%rax), %rax
movq %rax, 0xa8(%rbx)
movq %r14, %rdi
callq 0x1b358
jmp 0x176cd
addq $0x200, %r15            # imm = 0x200
movq %rbx, %rdi
callq 0x16ffc
movq -0x8(%r15), %rax
movq 0x88(%rax), %rax
movq %rax, 0xa8(%rbx)
movq %r14, %rdi
callq 0x1aa3c
movb $0x1, %al
addq $0x128, %rsp            # imm = 0x128
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x50(%rbx), %r12
movq 0x50(%rbx), %rdi
movq 0x58(%rbx), %rsi
leaq 0x2f501(%rip), %rcx     # 0x46bf5
pushq $0x7
popq %rdx
callq 0x19e1c
testb %al, %al
je 0x17a63
movq %rbx, %rdi
callq 0x16ffc
cmpl $0xb, 0x48(%rbx)
je 0x17777
leaq 0x30(%rsp), %r13
movq %r13, %rdi
movq %r15, %rsi
callq 0x17e14
leaq 0x2f4d4(%rip), %rsi     # 0x46bfd
leaq 0x8(%rsp), %rdi
movq %r13, %rdx
callq 0x17df0
leaq 0x316f1(%rip), %rdx     # 0x48e2e
leaq 0x58(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1093d
leaq 0x58(%rsp), %rsi
movq %rbx, %rdi
callq 0x1704a
leaq 0x58(%rsp), %rdi
callq 0x9898
leaq 0x8(%rsp), %rdi
callq 0x9898
leaq 0x30(%rsp), %rdi
callq 0x9898
xorps %xmm0, %xmm0
leaq 0x100(%rsp), %rdx
movaps %xmm0, (%rdx)
movaps %xmm0, 0x10(%rdx)
leaq 0xb0(%rsp), %rdi
pushq $0x1
popq %rcx
movq %r12, %rsi
xorl %r8d, %r8d
callq 0x19f64
leaq 0x100(%rsp), %rdi
callq 0x33e76
leaq 0x8(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
leaq 0x58(%rsp), %rdx
callq 0x1690a
leaq 0xb0(%rsp), %rdi
callq 0x22bea
leaq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0x9860
leaq 0x2f227(%rip), %rcx     # 0x46a0b
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rdx
xorl %esi, %esi
callq 0x95c0
testl %eax, %eax
jne 0x17806
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rdx
xorl %esi, %esi
callq 0x90a0
movq (%rbx), %rax
cmpb $0x1, (%rax)
jne 0x1789d
movq 0x38(%rbx), %rdi
leaq 0x8(%rsp), %rsi
callq 0x22cae
movq 0x38(%rbx), %rcx
addq $0x8, %rcx
cmpq %rcx, %rax
jne 0x1789d
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rdx
leaq 0x30(%rsp), %rdi
movq %rbx, %rsi
callq 0x1a024
leaq 0x58(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x16924
leaq 0x30(%rsp), %rdi
callq 0x9898
movq 0x38(%rbx), %rdi
leaq 0x8(%rsp), %rsi
leaq 0x58(%rsp), %rdx
callq 0x23148
movq 0x38(%rbx), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1a178
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rdx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x1a0d8
leaq 0x58(%rsp), %rdi
callq 0xd46c
movq 0xa8(%rbx), %r15
movq 0x58(%rbx), %rax
subq 0x28(%r14), %rax
leaq 0x30(%rsp), %rdx
movq %rax, (%rdx)
leaq 0x58(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1a222
addq $0x10, %r15
leaq 0x58(%rsp), %rsi
movq %r15, %rdi
callq 0x1a1de
leaq 0x60(%rsp), %rdi
callq 0xd76e
movq %rbx, %rdi
callq 0x16ffc
leaq 0x8(%rsp), %rdi
callq 0x9898
leaq 0xb0(%rsp), %rdi
callq 0xccf0
jmp 0x176cd
leaq 0xb8(%rsp), %rsi
leaq 0x58(%rsp), %rdi
leaq 0xd8(%rsp), %rdx
callq 0x1690a
leaq 0xa8(%rbx), %rdx
movq 0x58(%rbx), %rax
subq 0x28(%r14), %rax
leaq 0x30(%rsp), %rcx
movq %rax, (%rcx)
leaq 0x8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x19ef9
leaq 0xa0(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1affc
leaq 0x10(%rsp), %rdi
callq 0xd76e
leaq 0x58(%rsp), %rdi
callq 0x9898
movq 0xa8(%rbx), %rdi
addq $0x10, %rdi
leaq 0xa0(%rsp), %rsi
callq 0x19f1e
leaq 0x1a8(%rbx), %rdi
movq 0xa0(%rsp), %rax
leaq 0x58(%rsp), %rsi
movq %rax, (%rsi)
callq 0x1b0f8
movq 0xa0(%rsp), %rax
leaq 0x38(%rax), %rcx
movq %rcx, 0xa8(%rbx)
addq $0x10, %rax
movq %rax, 0xb0(%rbx)
cmpl $0x9, 0x48(%rbx)
jne 0x179db
movq 0x50(%rbx), %rdi
movq 0x58(%rbx), %rsi
leaq 0x2f02a(%rip), %rcx     # 0x469f9
pushq $0x2
popq %rdx
callq 0x19f5a
testb %al, %al
je 0x17a3f
leaq 0x30(%rsp), %rdi
movq %r15, %rsi
callq 0x17e14
leaq 0x2f1ce(%rip), %rsi     # 0x46bbd
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x17df0
leaq 0x31429(%rip), %rdx     # 0x48e2e
leaq 0x58(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1093d
leaq 0x58(%rsp), %rsi
movq %rbx, %rdi
callq 0x1704a
leaq 0x58(%rsp), %rdi
callq 0x9898
leaq 0x8(%rsp), %rdi
callq 0x9898
leaq 0x30(%rsp), %rdi
callq 0x9898
movq %rbx, %rdi
callq 0x16ffc
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x17ed2
movl %eax, %ebx
leaq 0xa8(%rsp), %rdi
jmp 0x171e5
movq 0x50(%rbx), %rdi
movq 0x58(%rbx), %rsi
leaq 0x2f1a2(%rip), %rcx     # 0x46c14
pushq $0x3
popq %rdx
callq 0x19e1c
testb %al, %al
je 0x171f2
movq %rbx, %rdi
callq 0x16ffc
cmpl $0x9, 0x48(%rbx)
je 0x17af5
leaq 0x30(%rsp), %r13
movq %r13, %rdi
movq %r15, %rsi
callq 0x17e14
leaq 0x2f171(%rip), %rsi     # 0x46c18
leaq 0x8(%rsp), %rdi
movq %r13, %rdx
callq 0x17df0
leaq 0x31373(%rip), %rdx     # 0x48e2e
leaq 0x58(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1093d
leaq 0x58(%rsp), %rsi
movq %rbx, %rdi
callq 0x1704a
leaq 0x58(%rsp), %rdi
callq 0x9898
leaq 0x8(%rsp), %rdi
callq 0x9898
leaq 0x30(%rsp), %rdi
callq 0x9898
leaq 0x58(%rsp), %rdi
leaq 0x8(%rsp), %rdx
movq %r12, %rsi
callq 0x1690a
movq %rbx, %rdi
callq 0x16ffc
movq 0x58(%rbx), %rax
subq 0x28(%r14), %rax
leaq 0x8(%rsp), %rdx
movq %rax, (%rdx)
leaq 0xa0(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0x1a243
movq 0xa8(%rbx), %rdi
addq $0x10, %rdi
leaq 0xa0(%rsp), %rsi
callq 0x1a264
movq 0xa0(%rsp), %rax
addq $0x30, %rax
movq %rax, 0xb0(%rbx)
movq 0x50(%rbx), %rdi
movq 0x58(%rbx), %rsi
leaq 0x2eddf(%rip), %rcx     # 0x4694a
pushq $0x1
popq %rdx
callq 0x19f5a
testb %al, %al
je 0x17be4
leaq 0xb0(%rsp), %rdi
movq %r15, %rsi
callq 0x17e14
leaq 0x2f0a8(%rip), %rsi     # 0x46c36
leaq 0x30(%rsp), %rdi
leaq 0xb0(%rsp), %rdx
callq 0x17df0
leaq 0x31287(%rip), %rdx     # 0x48e2e
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x1093d
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x1704a
leaq 0x8(%rsp), %rdi
callq 0x9898
leaq 0x30(%rsp), %rdi
callq 0x9898
leaq 0xb0(%rsp), %rdi
callq 0x9898
movq %rbx, %rdi
callq 0x16ffc
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x17ed2
movl %eax, %ebx
leaq 0xa8(%rsp), %rdi
callq 0xd76e
leaq 0x58(%rsp), %rdi
callq 0x9898
jmp 0x171ea
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x9898
jmp 0x17d9d
jmp 0x17d9a
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x9898
jmp 0x17c40
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x9898
jmp 0x17c4f
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0x9898
jmp 0x17cff
jmp 0x17cfc
jmp 0x17d36
jmp 0x17d4a
jmp 0x17d59
jmp 0x17d9a
jmp 0x17db6
jmp 0x17db6
jmp 0x17d36
jmp 0x17dc5
jmp 0x17d4a
jmp 0x17d59
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0xd46c
jmp 0x17d9d
jmp 0x17db6
jmp 0x17dc5
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0xd76e
jmp 0x17d9d
jmp 0x17d9a
jmp 0x17d63
jmp 0x17d72
jmp 0x17d81
movq %rax, %rbx
jmp 0x17da7
jmp 0x17dcc
movq %rax, %rbx
leaq 0x100(%rsp), %rdi
callq 0x33e76
jmp 0x17de8
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0xd76e
jmp 0x17db9
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x9898
jmp 0x17d2f
jmp 0x17d2c
jmp 0x17dcc
jmp 0x17dcc
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
jmp 0x17d89
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0x9898
jmp 0x17d4d
jmp 0x17dcc
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x9898
jmp 0x17d5c
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
jmp 0x17dbe
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0x9898
jmp 0x17d75
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x9898
jmp 0x17d84
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x9898
jmp 0x17dcf
jmp 0x17dcc
jmp 0x17db6
jmp 0x17dc5
jmp 0x17dcc
jmp 0x17ddb
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x9898
leaq 0xb0(%rsp), %rdi
callq 0xccf0
jmp 0x17de8
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0x9898
jmp 0x17de8
movq %rax, %rbx
jmp 0x17de8
jmp 0x17ddb
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
jmp 0x17de3
jmp 0x17ddb
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0xd76e
movq %rbx, %rdi
callq 0x97a0