// File: 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
movq %rsp, %rbp
subq $0x870, %rsp            # imm = 0x870
movq %rcx, -0x18(%rbp)
movq %r8, -0x10(%rbp)
movq %rdi, -0x20(%rbp)
movq %rsi, -0x28(%rbp)
movl %edx, -0x2c(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x700(%rbp)
cmpl $0x9, 0x48(%rax)
je 0x33358
movb $0x0, -0x1(%rbp)
jmp 0x34d2d
movq -0x700(%rbp), %rax
movq 0x50(%rax), %rcx
movq %rcx, -0x40(%rbp)
movq 0x58(%rax), %rax
movq %rax, -0x38(%rbp)
leaq -0x50(%rbp), %rdi
leaq 0x8f382(%rip), %rsi     # 0xc26fc
callq 0x31e20
movq -0x40(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq -0x50(%rbp), %rdx
movq -0x48(%rbp), %rcx
callq 0x3a5e0
testb $0x1, %al
jne 0x3339d
jmp 0x33512
movq -0x700(%rbp), %rdi
callq 0x33060
movq -0x700(%rbp), %rdi
movq %rdi, %rax
addq $0xa8, %rax
movq %rax, -0x718(%rbp)
addq $0x50, %rdi
callq 0x332c0
movq %rax, -0x710(%rbp)
movq -0x28(%rbp), %rdi
addq $0x28, %rdi
callq 0xb1f0
movq -0x718(%rbp), %rsi
movq %rax, %rcx
movq -0x710(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x68(%rbp)
leaq -0x60(%rbp), %rdi
movq %rdi, -0x708(%rbp)
leaq -0x68(%rbp), %rdx
callq 0x3a660
movq -0x700(%rbp), %rax
movq -0x708(%rbp), %rsi
movq 0xa8(%rax), %rdi
addq $0x10, %rdi
callq 0x3a6e0
jmp 0x33429
movq -0x700(%rbp), %rax
addq $0x158, %rax            # imm = 0x158
movq %rax, -0x720(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x3a790
movq -0x720(%rbp), %rdi
movq %rax, -0x80(%rbp)
leaq -0x80(%rbp), %rsi
callq 0x3a760
jmp 0x3345c
leaq -0x60(%rbp), %rdi
movq %rdi, -0x730(%rbp)
callq 0x3a7b0
movq -0x730(%rbp), %rdi
movq %rax, %rcx
movq -0x700(%rbp), %rax
addq $0x38, %rcx
movq %rcx, 0xa8(%rax)
callq 0x3a7b0
movq -0x700(%rbp), %rdi
addq $0x10, %rax
movq %rax, 0xb0(%rdi)
movq -0x28(%rbp), %rsi
movl -0x2c(%rbp), %edx
callq 0x35040
movb %al, -0x721(%rbp)
jmp 0x334b3
movb -0x721(%rbp), %al
testb $0x1, %al
jne 0x334e9
jmp 0x334bf
movb $0x0, -0x1(%rbp)
movl $0x1, -0x84(%rbp)
jmp 0x334f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x3a7d0
jmp 0x34d3b
movl $0x0, -0x84(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x3a7d0
movl -0x84(%rbp), %eax
testl %eax, %eax
je 0x3350d
jmp 0x33508
jmp 0x34d2d
jmp 0x34d29
movq -0x700(%rbp), %rax
movq 0x50(%rax), %rcx
movq %rcx, -0x98(%rbp)
movq 0x58(%rax), %rax
movq %rax, -0x90(%rbp)
leaq -0xa8(%rbp), %rdi
leaq 0x8f313(%rip), %rsi     # 0xc2850
callq 0x31e20
movq -0x98(%rbp), %rdi
movq -0x90(%rbp), %rsi
movq -0xa8(%rbp), %rdx
movq -0xa0(%rbp), %rcx
callq 0x3a5e0
testb $0x1, %al
jne 0x3356c
jmp 0x33874
movq -0x700(%rbp), %rdi
addq $0x158, %rdi            # imm = 0x158
callq 0x330d0
testb $0x1, %al
jne 0x33588
jmp 0x3361d
leaq -0xc9(%rbp), %rdi
movq %rdi, -0x738(%rbp)
callq 0xba70
movq -0x738(%rbp), %rdx
leaq 0x8f2ac(%rip), %rsi     # 0xc2855
leaq -0xc8(%rbp), %rdi
callq 0x10b90
jmp 0x335b7
movq -0x700(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x330f0
jmp 0x335cc
leaq -0xc8(%rbp), %rdi
callq 0xbb98
leaq -0xc9(%rbp), %rdi
callq 0xb600
jmp 0x3361d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x3360c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0xbb98
leaq -0xc9(%rbp), %rdi
callq 0xb600
jmp 0x34d3b
movq -0x700(%rbp), %rdi
addq $0x158, %rdi            # imm = 0x158
callq 0x3a7f0
movq -0x700(%rbp), %rdi
movq %rax, -0xd8(%rbp)
callq 0x33060
movq -0x700(%rbp), %rax
movq -0xd8(%rbp), %rcx
movq (%rcx), %rcx
movb $0x1, 0x91(%rcx)
movq -0xd8(%rbp), %rcx
movq (%rcx), %rcx
addq $0x60, %rcx
movq %rcx, 0xa8(%rax)
cmpl $0x9, 0x48(%rax)
jne 0x3386f
movq -0x700(%rbp), %rax
movq 0x50(%rax), %rcx
movq %rcx, -0xe8(%rbp)
movq 0x58(%rax), %rax
movq %rax, -0xe0(%rbp)
leaq -0xf8(%rbp), %rdi
leaq 0x8f057(%rip), %rsi     # 0xc26fc
callq 0x31e20
movq -0xe8(%rbp), %rdi
movq -0xe0(%rbp), %rsi
movq -0xf8(%rbp), %rdx
movq -0xf0(%rbp), %rcx
callq 0x3a5e0
testb $0x1, %al
jne 0x336d4
jmp 0x3386f
movq -0x700(%rbp), %rdi
callq 0x33060
movq -0x700(%rbp), %rdi
movb $0x1, -0x109(%rbp)
movq %rdi, %rax
addq $0xa8, %rax
movq %rax, -0x750(%rbp)
addq $0x50, %rdi
callq 0x332c0
movq %rax, -0x748(%rbp)
movq -0x28(%rbp), %rdi
addq $0x28, %rdi
callq 0xb1f0
movq -0x750(%rbp), %rdx
movq %rax, %rcx
movq -0x748(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x118(%rbp)
leaq -0x108(%rbp), %rdi
movq %rdi, -0x740(%rbp)
leaq -0x109(%rbp), %rsi
leaq -0x118(%rbp), %rcx
callq 0x3a810
movq -0x700(%rbp), %rax
movq -0x740(%rbp), %rsi
movq 0xa8(%rax), %rdi
addq $0x10, %rdi
callq 0x3a6e0
jmp 0x33777
movq -0x700(%rbp), %rax
addq $0x158, %rax            # imm = 0x158
movq %rax, -0x758(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x3a790
movq -0x758(%rbp), %rdi
movq %rax, -0x120(%rbp)
leaq -0x120(%rbp), %rsi
callq 0x3a760
jmp 0x337b3
leaq -0x108(%rbp), %rdi
movq %rdi, -0x768(%rbp)
callq 0x3a7b0
movq -0x768(%rbp), %rdi
movq %rax, %rcx
movq -0x700(%rbp), %rax
addq $0x38, %rcx
movq %rcx, 0xa8(%rax)
callq 0x3a7b0
movq -0x700(%rbp), %rdi
addq $0x10, %rax
movq %rax, 0xb0(%rdi)
movq -0x28(%rbp), %rsi
movl -0x2c(%rbp), %edx
callq 0x35040
movb %al, -0x759(%rbp)
jmp 0x3380d
movb -0x759(%rbp), %al
testb $0x1, %al
jne 0x33846
jmp 0x33819
movb $0x0, -0x1(%rbp)
movl $0x1, -0x84(%rbp)
jmp 0x33850
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x3a7d0
jmp 0x34d3b
movl $0x0, -0x84(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x3a7d0
movl -0x84(%rbp), %eax
testl %eax, %eax
je 0x3386d
jmp 0x33868
jmp 0x34d2d
jmp 0x3386f
jmp 0x34d27
movq -0x700(%rbp), %rax
movq 0x50(%rax), %rcx
movq %rcx, -0x130(%rbp)
movq 0x58(%rax), %rax
movq %rax, -0x128(%rbp)
leaq -0x140(%rbp), %rdi
leaq 0x8efcf(%rip), %rsi     # 0xc286e
callq 0x31e20
movq -0x130(%rbp), %rdi
movq -0x128(%rbp), %rsi
movq -0x140(%rbp), %rdx
movq -0x138(%rbp), %rcx
callq 0x3a5e0
testb $0x1, %al
jne 0x338ce
jmp 0x33a0b
movq -0x700(%rbp), %rdi
addq $0x158, %rdi            # imm = 0x158
callq 0x330d0
testb $0x1, %al
jne 0x338ea
jmp 0x3397f
leaq -0x161(%rbp), %rdi
movq %rdi, -0x770(%rbp)
callq 0xba70
movq -0x770(%rbp), %rdx
leaq 0x8ef69(%rip), %rsi     # 0xc2874
leaq -0x160(%rbp), %rdi
callq 0x10b90
jmp 0x33919
movq -0x700(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x330f0
jmp 0x3392e
leaq -0x160(%rbp), %rdi
callq 0xbb98
leaq -0x161(%rbp), %rdi
callq 0xb600
jmp 0x3397f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x3396e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x160(%rbp), %rdi
callq 0xbb98
leaq -0x161(%rbp), %rdi
callq 0xb600
jmp 0x34d3b
jmp 0x33981
movq -0x700(%rbp), %rdi
addq $0x158, %rdi            # imm = 0x158
callq 0x3a7f0
movq (%rax), %rax
testb $0x1, 0x90(%rax)
je 0x339b5
movq -0x700(%rbp), %rdi
addq $0x158, %rdi            # imm = 0x158
callq 0x3a890
jmp 0x33981
movq -0x700(%rbp), %rdi
addq $0x158, %rdi            # imm = 0x158
callq 0x3a7f0
movq -0x700(%rbp), %rdi
movq %rax, -0x170(%rbp)
callq 0x33060
movq -0x700(%rbp), %rdi
movq -0x170(%rbp), %rax
movq (%rax), %rax
movq 0x88(%rax), %rax
movq %rax, 0xa8(%rdi)
addq $0x158, %rdi            # imm = 0x158
callq 0x3a890
jmp 0x34d25
movq -0x700(%rbp), %rax
movq 0x50(%rax), %rcx
movq %rcx, -0x180(%rbp)
movq 0x58(%rax), %rax
movq %rax, -0x178(%rbp)
leaq -0x190(%rbp), %rdi
leaq 0x8ecd3(%rip), %rsi     # 0xc2709
callq 0x31e20
movq -0x180(%rbp), %rdi
movq -0x178(%rbp), %rsi
movq -0x190(%rbp), %rdx
movq -0x188(%rbp), %rcx
callq 0x3a5e0
testb $0x1, %al
jne 0x33a65
jmp 0x3420a
movq -0x700(%rbp), %rdi
callq 0x33060
movq -0x700(%rbp), %rax
cmpl $0x9, 0x48(%rax)
je 0x33b64
movq -0x700(%rbp), %rsi
addq $0x48, %rsi
leaq -0x1f0(%rbp), %rdi
movq %rdi, -0x778(%rbp)
callq 0x34da0
movq -0x778(%rbp), %rdx
leaq 0x8ede0(%rip), %rsi     # 0xc288e
leaq -0x1d0(%rbp), %rdi
callq 0x34d50
jmp 0x33abc
leaq 0x917ed(%rip), %rdx     # 0xc52b0
leaq -0x1b0(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x1fa80
jmp 0x33ad8
movq -0x700(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x330f0
jmp 0x33aed
leaq -0x1b0(%rbp), %rdi
callq 0xbb98
leaq -0x1d0(%rbp), %rdi
callq 0xbb98
leaq -0x1f0(%rbp), %rdi
callq 0xbb98
jmp 0x33b64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x33b53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x33b47
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0xbb98
leaq -0x1d0(%rbp), %rdi
callq 0xbb98
leaq -0x1f0(%rbp), %rdi
callq 0xbb98
jmp 0x34d3b
movq -0x700(%rbp), %rdi
movq 0x48(%rdi), %rax
movq %rax, -0x210(%rbp)
movq 0x50(%rdi), %rax
movq %rax, -0x208(%rbp)
movq 0x58(%rdi), %rax
movq %rax, -0x200(%rbp)
callq 0x33060
leaq -0x220(%rbp), %rdi
callq 0x3a8b0
movq -0x700(%rbp), %rax
cmpl $0x12, 0x48(%rax)
jne 0x33e98
movq -0x700(%rbp), %rdi
callq 0x33060
jmp 0x33bbc
movq -0x700(%rbp), %rax
cmpl $0x9, 0x48(%rax)
je 0x33cbb
movq -0x700(%rbp), %rsi
addq $0x48, %rsi
leaq -0x280(%rbp), %rdi
callq 0x34da0
jmp 0x33be6
leaq 0x8eca1(%rip), %rsi     # 0xc288e
leaq -0x260(%rbp), %rdi
leaq -0x280(%rbp), %rdx
callq 0x34d50
jmp 0x33c02
leaq 0x916a7(%rip), %rdx     # 0xc52b0
leaq -0x240(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x1fa80
jmp 0x33c1e
movq -0x700(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x330f0
jmp 0x33c33
leaq -0x240(%rbp), %rdi
callq 0xbb98
leaq -0x260(%rbp), %rdi
callq 0xbb98
leaq -0x280(%rbp), %rdi
callq 0xbb98
jmp 0x33cbb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x341f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x33caa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x33c9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x240(%rbp), %rdi
callq 0xbb98
leaq -0x260(%rbp), %rdi
callq 0xbb98
leaq -0x280(%rbp), %rdi
callq 0xbb98
jmp 0x341f9
movq -0x700(%rbp), %rdi
movq -0x200(%rbp), %rax
movq %rax, -0x290(%rbp)
movups -0x210(%rbp), %xmm0
movaps %xmm0, -0x2a0(%rbp)
movq 0x58(%rdi), %rax
movq %rax, -0x200(%rbp)
movups 0x48(%rdi), %xmm0
movaps %xmm0, -0x210(%rbp)
callq 0x33060
jmp 0x33cfb
leaq -0x298(%rbp), %rax
movq %rax, -0x788(%rbp)
leaq -0x2d1(%rbp), %rdi
movq %rdi, -0x780(%rbp)
callq 0xba70
movq -0x788(%rbp), %rsi
movq -0x780(%rbp), %rdx
leaq -0x2d0(%rbp), %rdi
callq 0x31e70
jmp 0x33d38
leaq -0x208(%rbp), %rax
movq %rax, -0x798(%rbp)
leaq -0x2f9(%rbp), %rdi
movq %rdi, -0x790(%rbp)
callq 0xba70
movq -0x798(%rbp), %rsi
movq -0x790(%rbp), %rdx
leaq -0x2f8(%rbp), %rdi
callq 0x31e70
jmp 0x33d75
movq -0x700(%rbp), %rdi
movq %rdi, %rax
addq $0xa8, %rax
movq %rax, -0x7a8(%rbp)
addq $0x50, %rdi
callq 0x332c0
movq %rax, -0x7a0(%rbp)
movq -0x28(%rbp), %rdi
addq $0x28, %rdi
callq 0xb1f0
movq -0x7a8(%rbp), %rcx
movq %rax, %rdx
movq -0x7a0(%rbp), %rax
subq %rdx, %rax
movq %rax, -0x308(%rbp)
leaq -0x2b0(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
leaq -0x2f8(%rbp), %rdx
leaq -0x308(%rbp), %r8
callq 0x3a8d0
jmp 0x33de7
leaq -0x220(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x3a960
leaq -0x2b0(%rbp), %rdi
callq 0x3a990
leaq -0x2f8(%rbp), %rdi
callq 0xbb98
leaq -0x2f9(%rbp), %rdi
callq 0xb600
leaq -0x2d0(%rbp), %rdi
callq 0xbb98
leaq -0x2d1(%rbp), %rdi
callq 0xb600
jmp 0x33fb0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x33e87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x33e6f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0xbb98
leaq -0x2f9(%rbp), %rdi
callq 0xb600
leaq -0x2d0(%rbp), %rdi
callq 0xbb98
leaq -0x2d1(%rbp), %rdi
callq 0xb600
jmp 0x341f9
leaq -0x208(%rbp), %rax
movq %rax, -0x7b8(%rbp)
leaq -0x339(%rbp), %rdi
movq %rdi, -0x7b0(%rbp)
callq 0xba70
movq -0x7b8(%rbp), %rsi
movq -0x7b0(%rbp), %rdx
leaq -0x338(%rbp), %rdi
callq 0x31e70
jmp 0x33ed5
movq -0x700(%rbp), %rdi
movq %rdi, %rax
addq $0xa8, %rax
movq %rax, -0x7c8(%rbp)
addq $0x50, %rdi
callq 0x332c0
movq %rax, -0x7c0(%rbp)
movq -0x28(%rbp), %rdi
addq $0x28, %rdi
callq 0xb1f0
movq -0x7c8(%rbp), %rdx
movq %rax, %rcx
movq -0x7c0(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x348(%rbp)
leaq -0x318(%rbp), %rdi
leaq -0x338(%rbp), %rsi
leaq -0x348(%rbp), %rcx
callq 0x3a9b0
jmp 0x33f40
leaq -0x220(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x3aa30
leaq -0x318(%rbp), %rdi
callq 0x3aa60
leaq -0x338(%rbp), %rdi
callq 0xbb98
leaq -0x339(%rbp), %rdi
callq 0xb600
jmp 0x33fb0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x33f9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x338(%rbp), %rdi
callq 0xbb98
leaq -0x339(%rbp), %rdi
callq 0xb600
jmp 0x341f9
movq -0x700(%rbp), %rax
movq 0xa8(%rax), %rdi
addq $0x10, %rdi
leaq -0x220(%rbp), %rsi
callq 0x3aa80
jmp 0x33fd0
movq -0x700(%rbp), %rax
addq $0x1a8, %rax            # imm = 0x1A8
movq %rax, -0x7d0(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x3ab30
movq -0x7d0(%rbp), %rdi
movq %rax, -0x350(%rbp)
leaq -0x350(%rbp), %rsi
callq 0x3ab00
jmp 0x3400c
leaq -0x220(%rbp), %rdi
callq 0x3ab50
movq %rax, %rcx
movq -0x700(%rbp), %rax
addq $0x38, %rcx
movq %rcx, 0xa8(%rax)
leaq -0x220(%rbp), %rdi
callq 0x3ab50
movq %rax, %rcx
movq -0x700(%rbp), %rax
addq $0x10, %rcx
movq %rcx, 0xb0(%rax)
cmpl $0x9, 0x48(%rax)
jne 0x340ae
movq -0x700(%rbp), %rax
movq 0x50(%rax), %rcx
movq %rcx, -0x360(%rbp)
movq 0x58(%rax), %rax
movq %rax, -0x358(%rbp)
leaq -0x370(%rbp), %rdi
leaq 0x8e65e(%rip), %rsi     # 0xc26dd
callq 0x31e20
movq -0x360(%rbp), %rdi
movq -0x358(%rbp), %rsi
movq -0x370(%rbp), %rdx
movq -0x368(%rbp), %rcx
callq 0x3ab70
testb $0x1, %al
jne 0x340ae
jmp 0x34188
movq -0x700(%rbp), %rsi
addq $0x48, %rsi
leaq -0x3d0(%rbp), %rdi
callq 0x34da0
jmp 0x340c7
leaq 0x8e7d3(%rip), %rsi     # 0xc28a1
leaq -0x3b0(%rbp), %rdi
leaq -0x3d0(%rbp), %rdx
callq 0x34d50
jmp 0x340e3
leaq 0x911c6(%rip), %rdx     # 0xc52b0
leaq -0x390(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0x1fa80
jmp 0x340ff
movq -0x700(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x330f0
jmp 0x34114
leaq -0x390(%rbp), %rdi
callq 0xbb98
leaq -0x3b0(%rbp), %rdi
callq 0xbb98
leaq -0x3d0(%rbp), %rdi
callq 0xbb98
jmp 0x34188
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x3417a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x3416e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x390(%rbp), %rdi
callq 0xbb98
leaq -0x3b0(%rbp), %rdi
callq 0xbb98
leaq -0x3d0(%rbp), %rdi
callq 0xbb98
jmp 0x341f9
movq -0x700(%rbp), %rdi
callq 0x33060
jmp 0x34196
movq -0x700(%rbp), %rdi
movq -0x28(%rbp), %rsi
movl -0x2c(%rbp), %edx
callq 0x35040
movb %al, -0x7d1(%rbp)
jmp 0x341b1
movb -0x7d1(%rbp), %al
testb $0x1, %al
jne 0x341cd
jmp 0x341bd
movb $0x0, -0x1(%rbp)
movl $0x1, -0x84(%rbp)
jmp 0x341d7
movl $0x0, -0x84(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x3abd0
movl -0x84(%rbp), %eax
testl %eax, %eax
je 0x341f4
jmp 0x341ef
jmp 0x34d2d
jmp 0x34d23
leaq -0x220(%rbp), %rdi
callq 0x3abd0
jmp 0x34d3b
movq -0x700(%rbp), %rax
movq 0x50(%rax), %rcx
movq %rcx, -0x3e0(%rbp)
movq 0x58(%rax), %rax
movq %rax, -0x3d8(%rbp)
leaq -0x3f0(%rbp), %rdi
leaq 0x8e681(%rip), %rsi     # 0xc28b6
callq 0x31e20
movq -0x3e0(%rbp), %rdi
movq -0x3d8(%rbp), %rsi
movq -0x3f0(%rbp), %rdx
movq -0x3e8(%rbp), %rcx
callq 0x3a5e0
testb $0x1, %al
jne 0x34264
jmp 0x34368
movq -0x700(%rbp), %rdi
addq $0x1a8, %rdi            # imm = 0x1A8
callq 0x331a0
testb $0x1, %al
jne 0x34280
jmp 0x34315
leaq -0x411(%rbp), %rdi
movq %rdi, -0x7e0(%rbp)
callq 0xba70
movq -0x7e0(%rbp), %rdx
leaq 0x8e61c(%rip), %rsi     # 0xc28bd
leaq -0x410(%rbp), %rdi
callq 0x10b90
jmp 0x342af
movq -0x700(%rbp), %rdi
leaq -0x410(%rbp), %rsi
callq 0x330f0
jmp 0x342c4
leaq -0x410(%rbp), %rdi
callq 0xbb98
leaq -0x411(%rbp), %rdi
callq 0xb600
jmp 0x34315
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x34304
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x410(%rbp), %rdi
callq 0xbb98
leaq -0x411(%rbp), %rdi
callq 0xb600
jmp 0x34d3b
movq -0x700(%rbp), %rdi
addq $0x1a8, %rdi            # imm = 0x1A8
callq 0x3abf0
movq -0x700(%rbp), %rdi
movq %rax, -0x420(%rbp)
callq 0x33060
movq -0x700(%rbp), %rdi
movq -0x420(%rbp), %rax
movq (%rax), %rax
movq 0x60(%rax), %rax
movq %rax, 0xa8(%rdi)
addq $0x1a8, %rdi            # imm = 0x1A8
callq 0x3ac10
jmp 0x34d21
movq -0x700(%rbp), %rax
movq 0x50(%rax), %rcx
movq %rcx, -0x430(%rbp)
movq 0x58(%rax), %rax
movq %rax, -0x428(%rbp)
leaq -0x440(%rbp), %rdi
leaq 0x8e546(%rip), %rsi     # 0xc28d9
callq 0x31e20
movq -0x430(%rbp), %rdi
movq -0x428(%rbp), %rsi
movq -0x440(%rbp), %rdx
movq -0x438(%rbp), %rcx
callq 0x3a5e0
testb $0x1, %al
jne 0x343c2
jmp 0x348ce
movq -0x700(%rbp), %rdi
callq 0x33060
movq -0x700(%rbp), %rax
cmpl $0xb, 0x48(%rax)
je 0x344c1
movq -0x700(%rbp), %rsi
addq $0x48, %rsi
leaq -0x4a0(%rbp), %rdi
movq %rdi, -0x7e8(%rbp)
callq 0x34da0
movq -0x7e8(%rbp), %rdx
leaq 0x8e4d6(%rip), %rsi     # 0xc28e1
leaq -0x480(%rbp), %rdi
callq 0x34d50
jmp 0x34419
leaq 0x90e90(%rip), %rdx     # 0xc52b0
leaq -0x460(%rbp), %rdi
leaq -0x480(%rbp), %rsi
callq 0x1fa80
jmp 0x34435
movq -0x700(%rbp), %rdi
leaq -0x460(%rbp), %rsi
callq 0x330f0
jmp 0x3444a
leaq -0x460(%rbp), %rdi
callq 0xbb98
leaq -0x480(%rbp), %rdi
callq 0xbb98
leaq -0x4a0(%rbp), %rdi
callq 0xbb98
jmp 0x344c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x344b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x344a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x460(%rbp), %rdi
callq 0xbb98
leaq -0x480(%rbp), %rdi
callq 0xbb98
leaq -0x4a0(%rbp), %rdi
callq 0xbb98
jmp 0x34d3b
movq -0x700(%rbp), %rax
addq $0x50, %rax
movq %rax, -0x800(%rbp)
xorl %eax, %eax
movl %eax, -0x7ec(%rbp)
movl %eax, %esi
leaq -0x4d0(%rbp), %rdi
movq %rdi, -0x7f8(%rbp)
callq 0x12420
movq -0x800(%rbp), %rsi
movq -0x7f8(%rbp), %rdx
movl -0x7ec(%rbp), %r8d
leaq -0x4b0(%rbp), %rdi
movl $0x1, %ecx
callq 0x3ac30
jmp 0x34518
leaq -0x4d0(%rbp), %rdi
callq 0x124a0
leaq -0x4f1(%rbp), %rdi
movq %rdi, -0x808(%rbp)
callq 0xba70
movq -0x808(%rbp), %rdx
leaq -0x4f0(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x31e70
jmp 0x34550
leaq -0x4f1(%rbp), %rdi
callq 0xb600
leaq -0x4b0(%rbp), %rdi
callq 0x3adc0
movq %rax, -0x810(%rbp)
jmp 0x34571
movq -0x810(%rbp), %rsi
leaq -0x4f0(%rbp), %rdi
callq 0xb760
jmp 0x34586
leaq 0x8e162(%rip), %rcx     # 0xc26ef
xorl %eax, %eax
movl %eax, %esi
leaq -0x4f0(%rbp), %rdi
movl $0x2, %edx
callq 0xb7e0
movl %eax, -0x814(%rbp)
jmp 0x345aa
movl -0x814(%rbp), %eax
cmpl $0x0, %eax
jne 0x34619
xorl %eax, %eax
movl %eax, %esi
leaq -0x4f0(%rbp), %rdi
movl $0x2, %edx
callq 0xb0e0
jmp 0x345cc
jmp 0x34619
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x4d0(%rbp), %rdi
callq 0x124a0
jmp 0x34d3b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x4f1(%rbp), %rdi
callq 0xb600
jmp 0x348bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x348b1
movq -0x700(%rbp), %rax
movq (%rax), %rcx
xorl %eax, %eax
testb $0x1, (%rcx)
movb %al, -0x815(%rbp)
je 0x3468e
movq -0x700(%rbp), %rax
movq 0x38(%rax), %rdi
leaq -0x4f0(%rbp), %rsi
callq 0x3ae10
movq %rax, -0x820(%rbp)
jmp 0x34650
movq -0x700(%rbp), %rax
movq -0x820(%rbp), %rcx
movq %rcx, -0x500(%rbp)
movq 0x38(%rax), %rdi
callq 0x3ae40
movq %rax, -0x508(%rbp)
leaq -0x500(%rbp), %rdi
leaq -0x508(%rbp), %rsi
callq 0x3ade0
movb %al, -0x815(%rbp)
movb -0x815(%rbp), %al
testb $0x1, %al
jne 0x3469d
jmp 0x347e7
leaq -0x4f0(%rbp), %rdi
callq 0xb610
movq -0x700(%rbp), %rsi
movq %rax, -0x580(%rbp)
movq %rdx, -0x578(%rbp)
movq -0x580(%rbp), %rdx
movq -0x578(%rbp), %rcx
leaq -0x570(%rbp), %rdi
callq 0x3ae70
jmp 0x346da
leaq -0x550(%rbp), %rdi
leaq -0x570(%rbp), %rsi
callq 0x31ee0
jmp 0x346ef
leaq -0x570(%rbp), %rdi
callq 0xbb98
movq -0x700(%rbp), %rax
movq 0x38(%rax), %rdi
leaq -0x4f0(%rbp), %rsi
leaq -0x550(%rbp), %rdx
callq 0x3b030
movb %dl, -0x829(%rbp)
movq %rax, -0x828(%rbp)
jmp 0x34728
movq -0x700(%rbp), %rax
movb -0x829(%rbp), %cl
movq -0x828(%rbp), %rdx
movq %rdx, -0x590(%rbp)
movb %cl, -0x588(%rbp)
movq 0x38(%rax), %rdi
leaq -0x4f0(%rbp), %rsi
callq 0x3b1a0
movq %rax, -0x838(%rbp)
jmp 0x34762
leaq -0x4f0(%rbp), %rdi
callq 0xb610
movq -0x700(%rbp), %rdi
movq -0x838(%rbp), %rsi
movq %rax, -0x5a0(%rbp)
movq %rdx, -0x598(%rbp)
movq -0x5a0(%rbp), %rdx
movq -0x598(%rbp), %rcx
callq 0x3b080
jmp 0x3479f
leaq -0x550(%rbp), %rdi
callq 0x13120
jmp 0x347e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x570(%rbp), %rdi
callq 0xbb98
jmp 0x348b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x550(%rbp), %rdi
callq 0x13120
jmp 0x348b1
movq -0x700(%rbp), %rdi
movq 0xa8(%rdi), %rax
addq $0x10, %rax
movq %rax, -0x848(%rbp)
addq $0x50, %rdi
callq 0x332c0
movq %rax, -0x840(%rbp)
movq -0x28(%rbp), %rdi
addq $0x28, %rdi
callq 0xb1f0
movq %rax, %rcx
movq -0x840(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x5b8(%rbp)
leaq -0x5b0(%rbp), %rdi
leaq -0x4f0(%rbp), %rsi
leaq -0x5b8(%rbp), %rdx
callq 0x3b300
jmp 0x3484d
movq -0x848(%rbp), %rdi
leaq -0x5b0(%rbp), %rsi
callq 0x3b280
jmp 0x34862
leaq -0x5b0(%rbp), %rdi
callq 0x3b380
movq -0x700(%rbp), %rdi
callq 0x33060
jmp 0x3487c
leaq -0x4f0(%rbp), %rdi
callq 0xbb98
leaq -0x4b0(%rbp), %rdi
callq 0x12460
jmp 0x34d1f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x5b0(%rbp), %rdi
callq 0x3b380
leaq -0x4f0(%rbp), %rdi
callq 0xbb98
leaq -0x4b0(%rbp), %rdi
callq 0x12460
jmp 0x34d3b
movq -0x700(%rbp), %rax
movq 0x50(%rax), %rcx
movq %rcx, -0x5c8(%rbp)
movq 0x58(%rax), %rax
movq %rax, -0x5c0(%rbp)
leaq -0x5d8(%rbp), %rdi
leaq 0x8dfff(%rip), %rsi     # 0xc28f8
callq 0x31e20
movq -0x5c8(%rbp), %rdi
movq -0x5c0(%rbp), %rsi
movq -0x5d8(%rbp), %rdx
movq -0x5d0(%rbp), %rcx
callq 0x3a5e0
testb $0x1, %al
jne 0x34928
jmp 0x34d17
movq -0x700(%rbp), %rdi
callq 0x33060
movq -0x700(%rbp), %rax
cmpl $0x9, 0x48(%rax)
je 0x34a27
movq -0x700(%rbp), %rsi
addq $0x48, %rsi
leaq -0x638(%rbp), %rdi
movq %rdi, -0x850(%rbp)
callq 0x34da0
movq -0x850(%rbp), %rdx
leaq 0x8df8b(%rip), %rsi     # 0xc28fc
leaq -0x618(%rbp), %rdi
callq 0x34d50
jmp 0x3497f
leaq 0x9092a(%rip), %rdx     # 0xc52b0
leaq -0x5f8(%rbp), %rdi
leaq -0x618(%rbp), %rsi
callq 0x1fa80
jmp 0x3499b
movq -0x700(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
callq 0x330f0
jmp 0x349b0
leaq -0x5f8(%rbp), %rdi
callq 0xbb98
leaq -0x618(%rbp), %rdi
callq 0xbb98
leaq -0x638(%rbp), %rdi
callq 0xbb98
jmp 0x34a27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x34a16
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x34a0a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x5f8(%rbp), %rdi
callq 0xbb98
leaq -0x618(%rbp), %rdi
callq 0xbb98
leaq -0x638(%rbp), %rdi
callq 0xbb98
jmp 0x34d3b
movq -0x700(%rbp), %rax
addq $0x50, %rax
movq %rax, -0x860(%rbp)
leaq -0x659(%rbp), %rdi
movq %rdi, -0x858(%rbp)
callq 0xba70
movq -0x860(%rbp), %rsi
movq -0x858(%rbp), %rdx
leaq -0x658(%rbp), %rdi
callq 0x31e70
jmp 0x34a68
leaq -0x659(%rbp), %rdi
callq 0xb600
movq -0x700(%rbp), %rdi
callq 0x33060
jmp 0x34a82
movq -0x700(%rbp), %rdi
addq $0x50, %rdi
callq 0x332c0
movq %rax, -0x868(%rbp)
movq -0x28(%rbp), %rdi
addq $0x28, %rdi
callq 0xb1f0
movq %rax, %rcx
movq -0x868(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x678(%rbp)
leaq -0x670(%rbp), %rdi
leaq -0x658(%rbp), %rsi
leaq -0x678(%rbp), %rdx
callq 0x3b3a0
jmp 0x34ad6
movq -0x700(%rbp), %rax
movq 0xa8(%rax), %rdi
addq $0x10, %rdi
leaq -0x670(%rbp), %rsi
callq 0x3b420
jmp 0x34af6
leaq -0x670(%rbp), %rdi
callq 0x3b4a0
movq %rax, %rcx
movq -0x700(%rbp), %rax
addq $0x30, %rcx
movq %rcx, 0xb0(%rax)
movq 0x50(%rax), %rcx
movq %rcx, -0x688(%rbp)
movq 0x58(%rax), %rax
movq %rax, -0x680(%rbp)
leaq -0x698(%rbp), %rdi
leaq 0x8daf3(%rip), %rsi     # 0xc262e
callq 0x31e20
movq -0x688(%rbp), %rdi
movq -0x680(%rbp), %rsi
movq -0x698(%rbp), %rdx
movq -0x690(%rbp), %rcx
callq 0x3ab70
testb $0x1, %al
jne 0x34b6a
jmp 0x34c86
movq -0x700(%rbp), %rsi
addq $0x48, %rsi
leaq -0x6f8(%rbp), %rdi
callq 0x34da0
jmp 0x34b83
leaq 0x8dd90(%rip), %rsi     # 0xc291a
leaq -0x6d8(%rbp), %rdi
leaq -0x6f8(%rbp), %rdx
callq 0x34d50
jmp 0x34b9f
leaq 0x9070a(%rip), %rdx     # 0xc52b0
leaq -0x6b8(%rbp), %rdi
leaq -0x6d8(%rbp), %rsi
callq 0x1fa80
jmp 0x34bbb
movq -0x700(%rbp), %rdi
leaq -0x6b8(%rbp), %rsi
callq 0x330f0
jmp 0x34bd0
leaq -0x6b8(%rbp), %rdi
callq 0xbb98
leaq -0x6d8(%rbp), %rdi
callq 0xbb98
leaq -0x6f8(%rbp), %rdi
callq 0xbb98
jmp 0x34c86
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x659(%rbp), %rdi
callq 0xb600
jmp 0x34d3b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x34d09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x34cfd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x34c78
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x34c6c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x6b8(%rbp), %rdi
callq 0xbb98
leaq -0x6d8(%rbp), %rdi
callq 0xbb98
leaq -0x6f8(%rbp), %rdi
callq 0xbb98
jmp 0x34cfd
movq -0x700(%rbp), %rdi
callq 0x33060
jmp 0x34c94
movq -0x700(%rbp), %rdi
movq -0x28(%rbp), %rsi
movl -0x2c(%rbp), %edx
callq 0x35040
movb %al, -0x869(%rbp)
jmp 0x34caf
movb -0x869(%rbp), %al
testb $0x1, %al
jne 0x34ccb
jmp 0x34cbb
movb $0x0, -0x1(%rbp)
movl $0x1, -0x84(%rbp)
jmp 0x34cd5
movl $0x0, -0x84(%rbp)
leaq -0x670(%rbp), %rdi
callq 0x3b4c0
leaq -0x658(%rbp), %rdi
callq 0xbb98
movl -0x84(%rbp), %eax
testl %eax, %eax
je 0x34cfb
jmp 0x34cf9
jmp 0x34d2d
jmp 0x34d1d
leaq -0x670(%rbp), %rdi
callq 0x3b4c0
leaq -0x658(%rbp), %rdi
callq 0xbb98
jmp 0x34d3b
movb $0x0, -0x1(%rbp)
jmp 0x34d2d
jmp 0x34d1f
jmp 0x34d21
jmp 0x34d23
jmp 0x34d25
jmp 0x34d27
jmp 0x34d29
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x870, %rsp            # imm = 0x870
popq %rbp
retq
movq -0x70(%rbp), %rdi
callq 0xba60
nopw %cs:(%rax,%rax)
nop