// File: rfotino[P]consolite-compiler/src/syntax.cpp
// Function: LocalVarToken::parse(Tokenizer*, std::vector<std::shared_ptr<FunctionToken>, std::allocator<std::shared_ptr<FunctionToken>>> const&, std::vector<std::shared_ptr<GlobalVarToken>, std::allocator<std::shared_ptr<GlobalVarToken>>> const&, std::vector<std::shared_ptr<ParamToken>, std::allocator<std::shared_ptr<ParamToken>>> const&, std::vector<std::shared_ptr<LocalVarToken>, std::allocator<std::shared_ptr<LocalVarToken>>> const&)
bool LocalVarToken::parse(
      Tokenizer *tokenizer,
      const std::vector<std::shared_ptr<FunctionToken>>& functions,
      const std::vector<std::shared_ptr<GlobalVarToken>>& globals,
      const std::vector<std::shared_ptr<ParamToken>>& parameters,
      const std::vector<std::shared_ptr<LocalVarToken>>& localVars) {
  _lineNum = tokenizer->peekNext().line();
  // Parse the type
  if (!_type.parse(tokenizer, functions, globals, parameters, localVars)) {
    return false;
  }
  // Validate the type
  if ("void" == _type.name()) {
    _error("Local var cannot be of type 'void'.", _type.line());
    return false;
  }
  // Get and validate the name
  AtomToken nameToken = tokenizer->getNext();
  if (nameToken.str().empty()) {
    _error("Unexpected EOF.", nameToken.line());
    return false;
  }
  _name = nameToken.str();
  if (!isValidName(_name)) {
    _error("Invalid local var name '" + _name + "'.", _type.line());
    return false;
  } else if (getFunction(_name, functions)) {
    _error("Local var '" + _name + "' conflicts with existing function name.",
           nameToken.line());
    return false;
  } else if (getGlobal(_name, globals)) {
    _error("Local var '" + _name + "' conflicts with existing global var name.",
           nameToken.line());
    return false;
  } else if (getParameter(_name, parameters)) {
    _error("Local var '" + _name + "' conflicts with existing parameter name.",
           nameToken.line());
    return false;
  } else if (getLocal(_name, localVars)) {
    _error("Local var '" + _name + "' conflicts with existing local var name.",
           nameToken.line());
    return false;
  }
  // Validate the value (if set)
  AtomToken next = tokenizer->getNext();
  AtomToken last = next;
  if ("=" == next.str()) {
    if (_type.isArray()) {
      // Make sure array expression has as many values as the type
      // requires, and make sure they are all constant.
      ArrayExprToken arrayExpr;
      if (!arrayExpr.parse(tokenizer, functions, globals,
                           parameters, localVars)) {
        return false;
      } else if (arrayExpr.size() != _type.arraySize()) {
        _error("Array size mismatch.", _lineNum);
        return false;
      }
      for (size_t i = 0; i < arrayExpr.size(); i++) {
        _initExprs.push_back(arrayExpr.get(i));
      }
    } else {
      // Not an array value, get the singleton initialization expression
      std::shared_ptr<ExprToken> expr(new ExprToken());
      if (!expr->parse(tokenizer, functions, globals,
                       parameters, localVars)) {
        return false;
      }
      _initExprs.push_back(expr);
    }
    // This should be a semicolon
    last = tokenizer->getNext();
  }
  if (last.empty()) {
    _error("Unexpected EOF.", last.line());
    return false;
  } else if (";" != last.str()) {
    _error("Unexpected token '" + last.str() + "', expected ';'.", last.line());
    return false;
  }
  return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x590, %rsp            # imm = 0x590
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq %r8, -0x30(%rbp)
movq %r9, -0x38(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x4c0(%rbp)
movq -0x18(%rbp), %rsi
leaq -0x68(%rbp), %rdi
movq %rdi, -0x4b8(%rbp)
callq 0x6bae0
movq -0x4b8(%rbp), %rdi
callq 0x32270
movl %eax, -0x4ac(%rbp)
jmp 0x2e246
movq -0x4c0(%rbp), %rax
movl -0x4ac(%rbp), %ecx
movl %ecx, 0x8(%rax)
leaq -0x68(%rbp), %rdi
callq 0x99b0
movq -0x4c0(%rbp), %rdi
addq $0x10, %rdi
addq $0x28, %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x38(%rbp), %r9
callq 0x1d3e0
testb $0x1, %al
jne 0x2e2ae
movb $0x0, -0x1(%rbp)
jmp 0x2f16f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x99b0
jmp 0x2f17d
movq -0x4c0(%rbp), %rsi
addq $0x38, %rsi
leaq -0x98(%rbp), %rdi
movq %rdi, -0x4d0(%rbp)
callq 0xd940
movq -0x4d0(%rbp), %rsi
leaq 0x40d5a(%rip), %rdi     # 0x6f034
callq 0xd590
movb %al, -0x4c1(%rbp)
jmp 0x2e2e7
leaq -0x98(%rbp), %rdi
callq 0x8848
movb -0x4c1(%rbp), %al
testb $0x1, %al
jne 0x2e302
jmp 0x2e3d2
leaq -0xb9(%rbp), %rdi
movq %rdi, -0x4d8(%rbp)
callq 0x8760
movq -0x4d8(%rbp), %rdx
leaq 0x41b80(%rip), %rsi     # 0x6fea3
leaq -0xb8(%rbp), %rdi
callq 0xced0
jmp 0x2e331
movq -0x4c0(%rbp), %rdi
addq $0x38, %rdi
callq 0x32270
movl %eax, -0x4dc(%rbp)
jmp 0x2e349
movl -0x4dc(%rbp), %esi
leaq -0xb8(%rbp), %rdi
callq 0x6d960
jmp 0x2e35d
leaq -0xb8(%rbp), %rdi
callq 0x8848
leaq -0xb9(%rbp), %rdi
callq 0x8460
movb $0x0, -0x1(%rbp)
jmp 0x2f16f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x8848
jmp 0x2f17d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2e3c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x8848
leaq -0xb9(%rbp), %rdi
callq 0x8460
jmp 0x2f17d
movq -0x18(%rbp), %rsi
leaq -0xf0(%rbp), %rdi
movq %rdi, -0x4e8(%rbp)
callq 0x6ae20
movq -0x4e8(%rbp), %rsi
leaq -0x110(%rbp), %rdi
callq 0xd5c0
jmp 0x2e3fe
leaq -0x110(%rbp), %rdi
callq 0x8690
movb %al, -0x4e9(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x8848
movb -0x4e9(%rbp), %al
testb $0x1, %al
jne 0x2e42b
jmp 0x2e4f5
leaq -0x131(%rbp), %rdi
movq %rdi, -0x4f8(%rbp)
callq 0x8760
movq -0x4f8(%rbp), %rdx
leaq 0x4161b(%rip), %rsi     # 0x6fa67
leaq -0x130(%rbp), %rdi
callq 0xced0
jmp 0x2e45a
leaq -0xf0(%rbp), %rdi
callq 0x32270
movl %eax, -0x4fc(%rbp)
jmp 0x2e46e
movl -0x4fc(%rbp), %esi
leaq -0x130(%rbp), %rdi
callq 0x6d960
jmp 0x2e482
leaq -0x130(%rbp), %rdi
callq 0x8848
leaq -0x131(%rbp), %rdi
callq 0x8460
movb $0x0, -0x1(%rbp)
movl $0x1, -0x138(%rbp)
jmp 0x2f153
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2f161
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2e4e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x8848
leaq -0x131(%rbp), %rdi
callq 0x8460
jmp 0x2f161
leaq -0x158(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0xd5c0
jmp 0x2e50a
movq -0x4c0(%rbp), %rdi
addq $0x70, %rdi
movq %rdi, -0x508(%rbp)
leaq -0x158(%rbp), %rsi
movq %rsi, -0x510(%rbp)
callq 0x84e0
movq -0x510(%rbp), %rdi
callq 0x8848
movq -0x508(%rbp), %rdi
callq 0x6cd20
movb %al, -0x4fd(%rbp)
jmp 0x2e54f
movb -0x4fd(%rbp), %al
testb $0x1, %al
jne 0x2e629
jmp 0x2e55f
movq -0x4c0(%rbp), %rdx
addq $0x70, %rdx
leaq 0x41956(%rip), %rsi     # 0x6fec7
leaq -0x198(%rbp), %rdi
callq 0xdc30
jmp 0x2e57f
leaq 0x4184c(%rip), %rdx     # 0x6fdd2
leaq -0x178(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0xe020
jmp 0x2e59b
movq -0x4c0(%rbp), %rdi
addq $0x38, %rdi
callq 0x32270
movl %eax, -0x514(%rbp)
jmp 0x2e5b3
movl -0x514(%rbp), %esi
leaq -0x178(%rbp), %rdi
callq 0x6d960
jmp 0x2e5c7
leaq -0x178(%rbp), %rdi
callq 0x8848
leaq -0x198(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
movl $0x1, -0x138(%rbp)
jmp 0x2f153
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2e618
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x8848
leaq -0x198(%rbp), %rdi
callq 0x8848
jmp 0x2f161
movq -0x4c0(%rbp), %rsi
addq $0x70, %rsi
movq -0x20(%rbp), %rdx
leaq -0x1a8(%rbp), %rdi
callq 0x6d580
jmp 0x2e646
leaq -0x1a8(%rbp), %rdi
callq 0xd8c0
movb %al, -0x515(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x94c0
movb -0x515(%rbp), %al
testb $0x1, %al
jne 0x2e673
jmp 0x2e739
movq -0x4c0(%rbp), %rdx
addq $0x70, %rdx
leaq 0x4185b(%rip), %rsi     # 0x6fee0
leaq -0x1e8(%rbp), %rdi
callq 0xdc30
jmp 0x2e693
leaq 0x41522(%rip), %rdx     # 0x6fbbc
leaq -0x1c8(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0xe020
jmp 0x2e6af
leaq -0xf0(%rbp), %rdi
callq 0x32270
movl %eax, -0x51c(%rbp)
jmp 0x2e6c3
movl -0x51c(%rbp), %esi
leaq -0x1c8(%rbp), %rdi
callq 0x6d960
jmp 0x2e6d7
leaq -0x1c8(%rbp), %rdi
callq 0x8848
leaq -0x1e8(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
movl $0x1, -0x138(%rbp)
jmp 0x2f153
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2e728
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x8848
leaq -0x1e8(%rbp), %rdi
callq 0x8848
jmp 0x2f161
movq -0x4c0(%rbp), %rsi
addq $0x70, %rsi
movq -0x28(%rbp), %rdx
leaq -0x1f8(%rbp), %rdi
callq 0x6d6b0
jmp 0x2e756
leaq -0x1f8(%rbp), %rdi
callq 0x332b0
movb %al, -0x51d(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x9880
movb -0x51d(%rbp), %al
testb $0x1, %al
jne 0x2e783
jmp 0x2e849
movq -0x4c0(%rbp), %rdx
addq $0x70, %rdx
leaq 0x4174b(%rip), %rsi     # 0x6fee0
leaq -0x238(%rbp), %rdi
callq 0xdc30
jmp 0x2e7a3
leaq 0x4143b(%rip), %rdx     # 0x6fbe5
leaq -0x218(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0xe020
jmp 0x2e7bf
leaq -0xf0(%rbp), %rdi
callq 0x32270
movl %eax, -0x524(%rbp)
jmp 0x2e7d3
movl -0x524(%rbp), %esi
leaq -0x218(%rbp), %rdi
callq 0x6d960
jmp 0x2e7e7
leaq -0x218(%rbp), %rdi
callq 0x8848
leaq -0x238(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
movl $0x1, -0x138(%rbp)
jmp 0x2f153
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2e838
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x8848
leaq -0x238(%rbp), %rdi
callq 0x8848
jmp 0x2f161
movq -0x4c0(%rbp), %rsi
addq $0x70, %rsi
movq -0x30(%rbp), %rdx
leaq -0x248(%rbp), %rdi
callq 0x6d320
jmp 0x2e866
leaq -0x248(%rbp), %rdi
callq 0x33360
movb %al, -0x525(%rbp)
leaq -0x248(%rbp), %rdi
callq 0xd400
movb -0x525(%rbp), %al
testb $0x1, %al
jne 0x2e893
jmp 0x2e959
movq -0x4c0(%rbp), %rdx
addq $0x70, %rdx
leaq 0x4163b(%rip), %rsi     # 0x6fee0
leaq -0x288(%rbp), %rdi
callq 0xdc30
jmp 0x2e8b3
leaq 0x414af(%rip), %rdx     # 0x6fd69
leaq -0x268(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0xe020
jmp 0x2e8cf
leaq -0xf0(%rbp), %rdi
callq 0x32270
movl %eax, -0x52c(%rbp)
jmp 0x2e8e3
movl -0x52c(%rbp), %esi
leaq -0x268(%rbp), %rdi
callq 0x6d960
jmp 0x2e8f7
leaq -0x268(%rbp), %rdi
callq 0x8848
leaq -0x288(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
movl $0x1, -0x138(%rbp)
jmp 0x2f153
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2e948
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x8848
leaq -0x288(%rbp), %rdi
callq 0x8848
jmp 0x2f161
movq -0x4c0(%rbp), %rsi
addq $0x70, %rsi
movq -0x38(%rbp), %rdx
leaq -0x298(%rbp), %rdi
callq 0x6d450
jmp 0x2e976
leaq -0x298(%rbp), %rdi
callq 0x33410
movb %al, -0x52d(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x10dc0
movb -0x52d(%rbp), %al
testb $0x1, %al
jne 0x2e9a3
jmp 0x2ea69
movq -0x4c0(%rbp), %rdx
addq $0x70, %rdx
leaq 0x4152b(%rip), %rsi     # 0x6fee0
leaq -0x2d8(%rbp), %rdi
callq 0xdc30
jmp 0x2e9c3
leaq 0x41522(%rip), %rdx     # 0x6feec
leaq -0x2b8(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0xe020
jmp 0x2e9df
leaq -0xf0(%rbp), %rdi
callq 0x32270
movl %eax, -0x534(%rbp)
jmp 0x2e9f3
movl -0x534(%rbp), %esi
leaq -0x2b8(%rbp), %rdi
callq 0x6d960
jmp 0x2ea07
leaq -0x2b8(%rbp), %rdi
callq 0x8848
leaq -0x2d8(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
movl $0x1, -0x138(%rbp)
jmp 0x2f153
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2ea58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x8848
leaq -0x2d8(%rbp), %rdi
callq 0x8848
jmp 0x2f161
jmp 0x2ea6b
jmp 0x2ea6d
jmp 0x2ea6f
jmp 0x2ea71
movq -0x18(%rbp), %rsi
leaq -0x308(%rbp), %rdi
callq 0x6ae20
jmp 0x2ea83
leaq -0x338(%rbp), %rdi
leaq -0x308(%rbp), %rsi
callq 0x33dd0
jmp 0x2ea98
leaq -0x358(%rbp), %rdi
leaq -0x308(%rbp), %rsi
callq 0xd5c0
jmp 0x2eaad
leaq 0x40bce(%rip), %rdi     # 0x6f682
leaq -0x358(%rbp), %rsi
callq 0xd590
movb %al, -0x535(%rbp)
jmp 0x2eac8
leaq -0x358(%rbp), %rdi
callq 0x8848
movb -0x535(%rbp), %al
testb $0x1, %al
jne 0x2eae3
jmp 0x2eed7
movq -0x4c0(%rbp), %rdi
addq $0x38, %rdi
callq 0x33e20
movb %al, -0x536(%rbp)
jmp 0x2eafb
movb -0x536(%rbp), %al
testb $0x1, %al
jne 0x2eb0a
jmp 0x2eda1
leaq -0x380(%rbp), %rdi
callq 0x33e40
jmp 0x2eb18
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x38(%rbp), %r9
leaq -0x380(%rbp), %rdi
callq 0x245c0
movb %al, -0x537(%rbp)
jmp 0x2eb40
movb -0x537(%rbp), %al
testb $0x1, %al
jne 0x2ebaf
jmp 0x2eb4c
movb $0x0, -0x1(%rbp)
movl $0x1, -0x138(%rbp)
jmp 0x2ed6f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2f145
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2f139
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x358(%rbp), %rdi
callq 0x8848
jmp 0x2f139
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2ed90
leaq -0x380(%rbp), %rdi
callq 0x33e80
movq %rax, -0x540(%rbp)
jmp 0x2ebc4
movq -0x4c0(%rbp), %rdi
addq $0x38, %rdi
callq 0x33ea0
movq %rax, -0x548(%rbp)
jmp 0x2ebdd
movq -0x540(%rbp), %rax
movq -0x548(%rbp), %rcx
cmpq %rcx, %rax
je 0x2ec9d
leaq -0x3a1(%rbp), %rdi
movq %rdi, -0x550(%rbp)
callq 0x8760
movq -0x550(%rbp), %rdx
leaq 0x40ffb(%rip), %rsi     # 0x6fc10
leaq -0x3a0(%rbp), %rdi
callq 0xced0
jmp 0x2ec23
movq -0x4c0(%rbp), %rax
movl 0x8(%rax), %esi
leaq -0x3a0(%rbp), %rdi
callq 0x6d960
jmp 0x2ec3b
leaq -0x3a0(%rbp), %rdi
callq 0x8848
leaq -0x3a1(%rbp), %rdi
callq 0x8460
movb $0x0, -0x1(%rbp)
movl $0x1, -0x138(%rbp)
jmp 0x2ed6f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2ec8c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x8848
leaq -0x3a1(%rbp), %rdi
callq 0x8460
jmp 0x2ed90
jmp 0x2ec9f
movq $0x0, -0x3b0(%rbp)
movq -0x3b0(%rbp), %rax
movq %rax, -0x560(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x33e80
movq %rax, -0x558(%rbp)
jmp 0x2eccd
movq -0x560(%rbp), %rax
movq -0x558(%rbp), %rcx
cmpq %rcx, %rax
jae 0x2ed65
movq -0x4c0(%rbp), %rax
addq $0x98, %rax
movq %rax, -0x568(%rbp)
movl -0x3b0(%rbp), %edx
leaq -0x3c0(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x33ec0
jmp 0x2ed13
movq -0x568(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x356a0
jmp 0x2ed28
leaq -0x3c0(%rbp), %rdi
callq 0x33b70
movq -0x3b0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x3b0(%rbp)
jmp 0x2ecaa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x3c0(%rbp), %rdi
callq 0x33b70
jmp 0x2ed90
movl $0x0, -0x138(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x33f40
movl -0x138(%rbp), %eax
testl %eax, %eax
jne 0x2f11f
jmp 0x2ed8b
jmp 0x2eea6
leaq -0x380(%rbp), %rdi
callq 0x33f40
jmp 0x2f139
movl $0x28, %edi
callq 0x83e0
movq %rax, -0x570(%rbp)
jmp 0x2edb4
movq -0x570(%rbp), %rdi
callq 0x32670
jmp 0x2edc2
movq -0x570(%rbp), %rsi
leaq -0x3d0(%rbp), %rdi
callq 0x33ab0
jmp 0x2edd7
leaq -0x3d0(%rbp), %rdi
callq 0x33ae0
movq %rax, %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x38(%rbp), %r9
callq 0x1d9b0
movb %al, -0x571(%rbp)
jmp 0x2ee07
movb -0x571(%rbp), %al
testb $0x1, %al
jne 0x2ee62
jmp 0x2ee13
movb $0x0, -0x1(%rbp)
movl $0x1, -0x138(%rbp)
jmp 0x2ee88
movq -0x570(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
movl $0x28, %esi
callq 0x83f0
jmp 0x2f139
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x33b70
jmp 0x2f139
movq -0x4c0(%rbp), %rdi
addq $0x98, %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x33b00
jmp 0x2ee7e
movl $0x0, -0x138(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x33b70
movl -0x138(%rbp), %eax
testl %eax, %eax
jne 0x2f11f
jmp 0x2eea4
jmp 0x2eea6
movq -0x18(%rbp), %rsi
leaq -0x400(%rbp), %rdi
callq 0x6ae20
jmp 0x2eeb8
leaq -0x338(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0x33f70
leaq -0x400(%rbp), %rdi
callq 0x99b0
leaq -0x338(%rbp), %rdi
callq 0xd490
movb %al, -0x572(%rbp)
jmp 0x2eeeb
movb -0x572(%rbp), %al
testb $0x1, %al
jne 0x2eefa
jmp 0x2efb3
leaq -0x421(%rbp), %rdi
movq %rdi, -0x580(%rbp)
callq 0x8760
movq -0x580(%rbp), %rdx
leaq 0x40b4c(%rip), %rsi     # 0x6fa67
leaq -0x420(%rbp), %rdi
callq 0xced0
jmp 0x2ef29
leaq -0x338(%rbp), %rdi
callq 0x32270
movl %eax, -0x584(%rbp)
jmp 0x2ef3d
movl -0x584(%rbp), %esi
leaq -0x420(%rbp), %rdi
callq 0x6d960
jmp 0x2ef51
leaq -0x420(%rbp), %rdi
callq 0x8848
leaq -0x421(%rbp), %rdi
callq 0x8460
movb $0x0, -0x1(%rbp)
movl $0x1, -0x138(%rbp)
jmp 0x2f11f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2efa2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x420(%rbp), %rdi
callq 0x8848
leaq -0x421(%rbp), %rdi
callq 0x8460
jmp 0x2f139
leaq -0x448(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0xd5c0
jmp 0x2efc8
leaq 0x40c82(%rip), %rdi     # 0x6fc51
leaq -0x448(%rbp), %rsi
callq 0xd8e0
movb %al, -0x585(%rbp)
jmp 0x2efe3
leaq -0x448(%rbp), %rdi
callq 0x8848
movb -0x585(%rbp), %al
testb $0x1, %al
jne 0x2effe
jmp 0x2f10f
leaq -0x4a8(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0xd5c0
jmp 0x2f013
leaq 0x4091d(%rip), %rsi     # 0x6f937
leaq -0x488(%rbp), %rdi
leaq -0x4a8(%rbp), %rdx
callq 0x325f0
jmp 0x2f02f
leaq 0x40c1d(%rip), %rdx     # 0x6fc53
leaq -0x468(%rbp), %rdi
leaq -0x488(%rbp), %rsi
callq 0xe020
jmp 0x2f04b
leaq -0x338(%rbp), %rdi
callq 0x32270
movl %eax, -0x58c(%rbp)
jmp 0x2f05f
movl -0x58c(%rbp), %esi
leaq -0x468(%rbp), %rdi
callq 0x6d960
jmp 0x2f073
leaq -0x468(%rbp), %rdi
callq 0x8848
leaq -0x488(%rbp), %rdi
callq 0x8848
leaq -0x4a8(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
movl $0x1, -0x138(%rbp)
jmp 0x2f11f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x448(%rbp), %rdi
callq 0x8848
jmp 0x2f139
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2f101
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x2f0f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x468(%rbp), %rdi
callq 0x8848
leaq -0x488(%rbp), %rdi
callq 0x8848
leaq -0x4a8(%rbp), %rdi
callq 0x8848
jmp 0x2f139
jmp 0x2f111
movb $0x1, -0x1(%rbp)
movl $0x1, -0x138(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x99b0
leaq -0x308(%rbp), %rdi
callq 0x99b0
jmp 0x2f153
leaq -0x338(%rbp), %rdi
callq 0x99b0
leaq -0x308(%rbp), %rdi
callq 0x99b0
jmp 0x2f161
leaq -0xf0(%rbp), %rdi
callq 0x99b0
jmp 0x2f16f
leaq -0xf0(%rbp), %rdi
callq 0x99b0
jmp 0x2f17d
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x590, %rsp            # imm = 0x590
popq %rbp
retq
movq -0x70(%rbp), %rdi
callq 0x8750
nopw %cs:(%rax,%rax)