// File: rfotino[P]consolite-compiler/src/syntax.cpp
// Function: ExprToken::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 ExprToken::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) {
  std::string prev;
  std::stack<std::string> parens;
  std::stack<std::shared_ptr<Token>> opStack;
  while (true) {
    AtomToken t = tokenizer->peekNext();
    if (-1 == _lineNum) {
      _lineNum = t.line();
    }
    std::shared_ptr<LiteralToken> literal(new LiteralToken());
    std::shared_ptr<OperatorToken> op(new OperatorToken());
    if ("(" == t.str()) {
      if (!prev.empty() && "(" != prev && "op" != prev) {
        _error("Unexpected token '" + t.str() + "' in expression.", t.line());
        return false;
      }
      prev = t.str();
      parens.push(t.str());
      opStack.push(std::shared_ptr<Token>(new AtomToken("(", t.line())));
    } else if (")" == t.str() || "]" == t.str()) {
      if ((!parens.empty() && otherParen(t.str()) != parens.top()) ||
          (")" != prev && "val" != prev)) {
        _error("Unexpected token '" + t.str() + "' in expression.", t.line());
        return false;
      } else if (parens.empty()) {
        break;
      }
      // Pop operators off the stack until we reach a corresponding "("
      while (!opStack.empty() &&
             std::dynamic_pointer_cast<OperatorToken>(opStack.top())) {
        _postfix.push_back(opStack.top());
        opStack.pop();
      }
      // Pop off the "("
      opStack.pop();
      parens.pop();
      prev = ")";
    } else if (literal->parse(t)) {
      if (!prev.empty() && "(" != prev && "op" != prev) {
        _error("Unexpected token '" + t.str() + "' in expression.", t.line());
        return false;
      }
      prev = "val";
      _postfix.push_back(literal);
    } else if (op->parse(t)) {
      // Determine if the operator is binary or unary.
      if (op->maybeBinary() && (")" == prev || "val" == prev)) {
        op->setBinary();
      } else if (op->maybeUnary() &&
                 (prev.empty() || "(" == prev || "op" == prev)) {
        op->setUnary();
      } else {
        _error("Unexpected token '" + t.str() + "' in expression.", t.line());
        return false;
      }
      // Handle the operator stack based on precedence.
      std::shared_ptr<OperatorToken> topOp;
      while (!opStack.empty() &&
             (topOp = std::dynamic_pointer_cast<OperatorToken>(opStack.top()))) {
        if (op->precedence() < topOp->precedence()) {
          break;
        } else if (op->precedence() == topOp->precedence()) {
          if (op->leftToRight()) {
            _postfix.push_back(opStack.top());
            opStack.pop();
          }
          break;
        } else {
          _postfix.push_back(opStack.top());
          opStack.pop();
        }
      }
      opStack.push(op);
      // If it's an open square bracket, add it to the parentheses stack.
      // Also push an open parenthesis to the operator stack, since the
      // expression inside [] is treated as if it were parenthesized.
      if ("[" == t.str()) {
        parens.push(t.str());
        opStack.push(std::shared_ptr<Token>(new AtomToken("(", op->line())));
      }
      prev = "op";
    } else if (isValidName(t.str())) {
      auto globalVar = getGlobal(t.str(), globals);
      auto function = getFunction(t.str(), functions);
      auto param = getParameter(t.str(), parameters);
      auto localVar = getLocal(t.str(), localVars);
      if (nullptr != globalVar) {
        // If the name represents a global variable, push it onto the stack
        _postfix.push_back(globalVar);
        prev = "val";
      } else if (nullptr != param) {
        // If the name represents a parameter, push it onto the stack
        _postfix.push_back(param);
        prev = "val";
      } else if (nullptr != localVar) {
        // If the name represents a parameter, push it onto the stack
        _postfix.push_back(localVar);
        prev = "val";
      } else if (nullptr != function) {
        // If the function returns void, this is an error. We can't have
        // void functions mixed in with expressions.
        if ("void" == function->type().name()) {
          _error("Function call to 'void " + function->name() + "()' not "
                 "allowed in expression.",
                 t.line());
          return false;
        }
        // If it is not void, parse the function call.
        std::shared_ptr<FunctionCallToken> fnCall(new FunctionCallToken());
        if (!fnCall->parse(tokenizer, functions, globals,
                           parameters, localVars)) {
          return false;
        }
        _postfix.push_back(fnCall);
        prev = "val";
        // Continue so we don't consume an extra token at the end, all
        // tokens have been consumed already for the function call.
        continue;
      } else {
        _error("Unknown token '" + t.str() + "'.", t.line());
        return false;
      }
    } else if (t.str().empty()) {
      if (!parens.empty() || (")" != prev && "val" != prev)) {
        _error("Unexpected EOF in expression.", t.line());
        return false;
      }
      break;
    } else {
      if (!parens.empty() || (")" != prev && "val" != prev)) {
        _error("Unexpected token '" + t.str() + "' in expression.", t.line());
        return false;
      }
      break;
    }
    // We actually used the token we peeked at, so consume it here.
    tokenizer->getNext();
  }
  // Pop any remaining operators off the stack.
  while (!opStack.empty()) {
    _postfix.push_back(opStack.top());
    opStack.pop();
  }
  // Validate the expression for further errors.
  if (!_validate()) {
    return false;
  }
  // Evaluate the expression, if it is known at compile-time.
  _evaluate();
  // Flag variables that are not able to be stored in registers due to
  // address-of operations.
  _flagNonRegs();
  return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x9b0, %rsp            # imm = 0x9B0
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, -0x808(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x8590
leaq -0xa8(%rbp), %rdi
callq 0xe680
jmp 0x1d9f5
leaq -0x108(%rbp), %rdi
callq 0x32870
jmp 0x1da03
jmp 0x1da05
jmp 0x1da07
movq -0x18(%rbp), %rsi
leaq -0x138(%rbp), %rdi
callq 0x6bae0
jmp 0x1da19
movq -0x808(%rbp), %rcx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
cmpl 0x8(%rcx), %eax
jne 0x1dab0
leaq -0x138(%rbp), %rdi
callq 0x32270
movl %eax, -0x80c(%rbp)
jmp 0x1da42
movq -0x808(%rbp), %rax
movl -0x80c(%rbp), %ecx
movl %ecx, 0x8(%rax)
jmp 0x1dab0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1fbef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1fbe3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1fbd7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1facd
movl $0x10, %edi
callq 0x83e0
movq %rax, -0x818(%rbp)
jmp 0x1dac3
movq -0x818(%rbp), %rdi
xorl %esi, %esi
callq 0x32780
jmp 0x1dad3
movq -0x818(%rbp), %rsi
leaq -0x148(%rbp), %rdi
callq 0x328a0
jmp 0x1dae8
movl $0x38, %edi
callq 0x83e0
movq %rax, -0x820(%rbp)
jmp 0x1dafb
movq -0x820(%rbp), %rdi
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq $0x0, 0x30(%rdi)
callq 0x328d0
jmp 0x1db1f
movq -0x820(%rbp), %rsi
leaq -0x158(%rbp), %rdi
callq 0x32910
jmp 0x1db34
leaq -0x178(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1db49
leaq 0x5155d(%rip), %rdi     # 0x6f0ad
leaq -0x178(%rbp), %rsi
callq 0xd590
movb %al, -0x821(%rbp)
jmp 0x1db64
leaq -0x178(%rbp), %rdi
callq 0x8848
movb -0x821(%rbp), %al
testb $0x1, %al
jne 0x1db7f
jmp 0x1df70
leaq -0x58(%rbp), %rdi
callq 0x8690
testb $0x1, %al
jne 0x1dd8e
leaq 0x51516(%rip), %rdi     # 0x6f0ad
leaq -0x58(%rbp), %rsi
callq 0xd8e0
movb %al, -0x822(%rbp)
jmp 0x1dba8
movb -0x822(%rbp), %al
testb $0x1, %al
jne 0x1dbb7
jmp 0x1dd8e
leaq 0x51d76(%rip), %rdi     # 0x6f934
leaq -0x58(%rbp), %rsi
callq 0xd8e0
movb %al, -0x823(%rbp)
jmp 0x1dbcf
movb -0x823(%rbp), %al
testb $0x1, %al
jne 0x1dbde
jmp 0x1dd8e
leaq -0x1d8(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1dbf3
leaq 0x51d3d(%rip), %rsi     # 0x6f937
leaq -0x1b8(%rbp), %rdi
leaq -0x1d8(%rbp), %rdx
callq 0x325f0
jmp 0x1dc0f
leaq 0x51b5b(%rip), %rdx     # 0x6f771
leaq -0x198(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0xe020
jmp 0x1dc2b
leaq -0x138(%rbp), %rdi
callq 0x32270
movl %eax, -0x828(%rbp)
jmp 0x1dc3f
movl -0x828(%rbp), %esi
leaq -0x198(%rbp), %rdi
callq 0x6d960
jmp 0x1dc53
leaq -0x198(%rbp), %rdi
callq 0x8848
leaq -0x1b8(%rbp), %rdi
callq 0x8848
leaq -0x1d8(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
movl $0x1, -0x1dc(%rbp)
jmp 0x1fa59
movq -0x818(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
movl $0x10, %esi
callq 0x83f0
jmp 0x1facd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1fac1
movq -0x820(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
movl $0x38, %esi
callq 0x83f0
jmp 0x1fac1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1fab5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x8848
jmp 0x1fab5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1dd7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1dd71
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x8848
leaq -0x1b8(%rbp), %rdi
callq 0x8848
leaq -0x1d8(%rbp), %rdi
callq 0x8848
jmp 0x1fab5
leaq -0x200(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1dda3
leaq -0x58(%rbp), %rdi
leaq -0x200(%rbp), %rsi
movq %rsi, -0x830(%rbp)
callq 0x84e0
movq -0x830(%rbp), %rdi
callq 0x8848
leaq -0x220(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1dddb
leaq -0xa8(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x32940
jmp 0x1ddf0
leaq -0x220(%rbp), %rdi
callq 0x8848
movl $0x30, %edi
callq 0x83e0
movq %rax, -0x838(%rbp)
jmp 0x1de0f
movb $0x1, -0x252(%rbp)
leaq -0x251(%rbp), %rdi
movq %rdi, -0x840(%rbp)
callq 0x8760
movq -0x840(%rbp), %rdx
leaq 0x51276(%rip), %rsi     # 0x6f0ad
leaq -0x250(%rbp), %rdi
callq 0xced0
jmp 0x1de45
leaq -0x138(%rbp), %rdi
callq 0x32270
movl %eax, -0x844(%rbp)
jmp 0x1de59
movl -0x844(%rbp), %edx
movq -0x838(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x329a0
jmp 0x1de74
movq -0x838(%rbp), %rsi
movb $0x0, -0x252(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x329f0
jmp 0x1de90
leaq -0x108(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x32970
jmp 0x1dea5
leaq -0x230(%rbp), %rdi
callq 0x327f0
leaq -0x250(%rbp), %rdi
callq 0x8848
leaq -0x251(%rbp), %rdi
callq 0x8460
jmp 0x1fa31
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x8848
jmp 0x1fab5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1df43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1df37
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x327f0
leaq -0x250(%rbp), %rdi
callq 0x8848
leaq -0x251(%rbp), %rdi
callq 0x8460
testb $0x1, -0x252(%rbp)
jne 0x1df5a
jmp 0x1df6b
movq -0x838(%rbp), %rdi
movl $0x30, %esi
callq 0x83f0
jmp 0x1fab5
movb $0x0, -0x299(%rbp)
leaq -0x278(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1df8c
leaq 0x529db(%rip), %rdi     # 0x7096e
leaq -0x278(%rbp), %rsi
callq 0xd590
movb %al, -0x845(%rbp)
jmp 0x1dfa7
movb -0x845(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x846(%rbp)
jne 0x1e001
jmp 0x1dfbc
leaq -0x298(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1dfd1
movb $0x1, -0x299(%rbp)
leaq 0x51953(%rip), %rdi     # 0x6f932
leaq -0x298(%rbp), %rsi
callq 0xd590
movb %al, -0x847(%rbp)
jmp 0x1dff3
movb -0x847(%rbp), %al
movb %al, -0x846(%rbp)
jmp 0x1e001
movb -0x846(%rbp), %al
movb %al, -0x848(%rbp)
testb $0x1, -0x299(%rbp)
jne 0x1e018
jmp 0x1e024
leaq -0x298(%rbp), %rdi
callq 0x8848
leaq -0x278(%rbp), %rdi
callq 0x8848
movb -0x848(%rbp), %al
testb $0x1, %al
jne 0x1e03f
jmp 0x1e493
movb $0x0, -0x2e1(%rbp)
movb $0x0, -0x2e2(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x32a20
movb %al, -0x849(%rbp)
jmp 0x1e061
movb -0x849(%rbp), %al
testb $0x1, %al
jne 0x1e0dc
jmp 0x1e06d
leaq -0x2e0(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1e082
movb $0x1, -0x2e1(%rbp)
leaq -0x2c0(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x6ca50
jmp 0x1e09e
movb $0x1, -0x2e2(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x32a40
movq %rax, -0x858(%rbp)
jmp 0x1e0ba
movq -0x858(%rbp), %rsi
leaq -0x2c0(%rbp), %rdi
callq 0xdfa0
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x859(%rbp)
jne 0x1e13b
leaq 0x5288b(%rip), %rdi     # 0x7096e
leaq -0x58(%rbp), %rsi
callq 0xd8e0
movb %al, -0x85a(%rbp)
jmp 0x1e0f4
movb -0x85a(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x85b(%rbp)
jne 0x1e109
jmp 0x1e12f
leaq 0x5183a(%rip), %rdi     # 0x6f94a
leaq -0x58(%rbp), %rsi
callq 0xd8e0
movb %al, -0x85c(%rbp)
jmp 0x1e121
movb -0x85c(%rbp), %al
movb %al, -0x85b(%rbp)
jmp 0x1e12f
movb -0x85b(%rbp), %al
movb %al, -0x859(%rbp)
movb -0x859(%rbp), %al
movb %al, -0x85d(%rbp)
testb $0x1, -0x2e2(%rbp)
jne 0x1e152
jmp 0x1e15e
leaq -0x2c0(%rbp), %rdi
callq 0x8848
testb $0x1, -0x2e1(%rbp)
jne 0x1e169
jmp 0x1e175
leaq -0x2e0(%rbp), %rdi
callq 0x8848
movb -0x85d(%rbp), %al
testb $0x1, %al
jne 0x1e184
jmp 0x1e33e
leaq -0x348(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1e199
leaq 0x51797(%rip), %rsi     # 0x6f937
leaq -0x328(%rbp), %rdi
leaq -0x348(%rbp), %rdx
callq 0x325f0
jmp 0x1e1b5
leaq 0x515b5(%rip), %rdx     # 0x6f771
leaq -0x308(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0xe020
jmp 0x1e1d1
leaq -0x138(%rbp), %rdi
callq 0x32270
movl %eax, -0x864(%rbp)
jmp 0x1e1e5
movl -0x864(%rbp), %esi
leaq -0x308(%rbp), %rdi
callq 0x6d960
jmp 0x1e1f9
leaq -0x308(%rbp), %rdi
callq 0x8848
leaq -0x328(%rbp), %rdi
callq 0x8848
leaq -0x348(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
movl $0x1, -0x1dc(%rbp)
jmp 0x1fa59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1e26f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
testb $0x1, -0x299(%rbp)
jne 0x1e261
jmp 0x1e26d
leaq -0x298(%rbp), %rdi
callq 0x8848
jmp 0x1e26f
leaq -0x278(%rbp), %rdi
callq 0x8848
jmp 0x1fab5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1e2bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
testb $0x1, -0x2e2(%rbp)
jne 0x1e2b1
jmp 0x1e2bd
leaq -0x2c0(%rbp), %rdi
callq 0x8848
jmp 0x1e2bf
testb $0x1, -0x2e1(%rbp)
jne 0x1e2ca
jmp 0x1e2d6
leaq -0x2e0(%rbp), %rdi
callq 0x8848
jmp 0x1fab5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1e32d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1e321
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x308(%rbp), %rdi
callq 0x8848
leaq -0x328(%rbp), %rdi
callq 0x8848
leaq -0x348(%rbp), %rdi
callq 0x8848
jmp 0x1fab5
leaq -0xa8(%rbp), %rdi
callq 0x32a20
movb %al, -0x865(%rbp)
jmp 0x1e352
movb -0x865(%rbp), %al
testb $0x1, %al
jne 0x1e35e
jmp 0x1e36d
movl $0x3, -0x1dc(%rbp)
jmp 0x1fa59
jmp 0x1e36f
jmp 0x1e371
movb $0x0, -0x359(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x32a60
movb %al, -0x866(%rbp)
jmp 0x1e38c
movb -0x866(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x867(%rbp)
jne 0x1e3e2
jmp 0x1e3a1
leaq -0x108(%rbp), %rdi
callq 0x32b10
movq %rax, -0x870(%rbp)
jmp 0x1e3b6
movq -0x870(%rbp), %rsi
leaq -0x358(%rbp), %rdi
callq 0x32a80
movb $0x1, -0x359(%rbp)
leaq -0x358(%rbp), %rdi
callq 0x32b30
movb %al, -0x867(%rbp)
movb -0x867(%rbp), %al
movb %al, -0x871(%rbp)
testb $0x1, -0x359(%rbp)
jne 0x1e3f9
jmp 0x1e405
leaq -0x358(%rbp), %rdi
callq 0x32b50
movb -0x871(%rbp), %al
testb $0x1, %al
jne 0x1e411
jmp 0x1e460
movq -0x808(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x888(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x32b10
movq %rax, -0x880(%rbp)
jmp 0x1e438
movq -0x880(%rbp), %rsi
movq -0x888(%rbp), %rdi
callq 0x32b70
jmp 0x1e44d
leaq -0x108(%rbp), %rdi
callq 0x32be0
jmp 0x1e45b
jmp 0x1e371
leaq -0x108(%rbp), %rdi
callq 0x32be0
jmp 0x1e46e
leaq -0xa8(%rbp), %rdi
callq 0x32c00
jmp 0x1e47c
leaq 0x524eb(%rip), %rsi     # 0x7096e
leaq -0x58(%rbp), %rdi
callq 0x8580
jmp 0x1e48e
jmp 0x1fa2f
leaq -0x148(%rbp), %rdi
callq 0x32c20
movq %rax, %rdi
leaq -0x138(%rbp), %rsi
callq 0x16160
movb %al, -0x889(%rbp)
jmp 0x1e4b6
movb -0x889(%rbp), %al
testb $0x1, %al
jne 0x1e4c5
jmp 0x1e6ba
leaq -0x58(%rbp), %rdi
callq 0x8690
testb $0x1, %al
jne 0x1e633
leaq 0x50bd0(%rip), %rdi     # 0x6f0ad
leaq -0x58(%rbp), %rsi
callq 0xd8e0
movb %al, -0x88a(%rbp)
jmp 0x1e4ee
movb -0x88a(%rbp), %al
testb $0x1, %al
jne 0x1e4fd
jmp 0x1e633
leaq 0x51430(%rip), %rdi     # 0x6f934
leaq -0x58(%rbp), %rsi
callq 0xd8e0
movb %al, -0x88b(%rbp)
jmp 0x1e515
movb -0x88b(%rbp), %al
testb $0x1, %al
jne 0x1e524
jmp 0x1e633
leaq -0x3c0(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1e539
leaq 0x513f7(%rip), %rsi     # 0x6f937
leaq -0x3a0(%rbp), %rdi
leaq -0x3c0(%rbp), %rdx
callq 0x325f0
jmp 0x1e555
leaq 0x51215(%rip), %rdx     # 0x6f771
leaq -0x380(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0xe020
jmp 0x1e571
leaq -0x138(%rbp), %rdi
callq 0x32270
movl %eax, -0x890(%rbp)
jmp 0x1e585
movl -0x890(%rbp), %esi
leaq -0x380(%rbp), %rdi
callq 0x6d960
jmp 0x1e599
leaq -0x380(%rbp), %rdi
callq 0x8848
leaq -0x3a0(%rbp), %rdi
callq 0x8848
leaq -0x3c0(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
movl $0x1, -0x1dc(%rbp)
jmp 0x1fa59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1e622
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1e616
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x8848
leaq -0x3a0(%rbp), %rdi
callq 0x8848
leaq -0x3c0(%rbp), %rdi
callq 0x8848
jmp 0x1fab5
leaq 0x51310(%rip), %rsi     # 0x6f94a
leaq -0x58(%rbp), %rdi
callq 0x8580
jmp 0x1e645
movq -0x808(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x8a0(%rbp)
leaq -0x3d0(%rbp), %rdi
movq %rdi, -0x898(%rbp)
leaq -0x148(%rbp), %rsi
callq 0x32c40
movq -0x8a0(%rbp), %rdi
movq -0x898(%rbp), %rsi
callq 0x32750
jmp 0x1e686
leaq -0x3d0(%rbp), %rdi
callq 0x327f0
jmp 0x1fa2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x327f0
jmp 0x1fab5
leaq -0x158(%rbp), %rdi
callq 0x32c70
movq %rax, %rdi
leaq -0x138(%rbp), %rsi
callq 0x16760
movb %al, -0x8a1(%rbp)
jmp 0x1e6dd
movb -0x8a1(%rbp), %al
testb $0x1, %al
jne 0x1e6ec
jmp 0x1ee02
leaq -0x158(%rbp), %rdi
callq 0x32c70
movq %rax, %rdi
callq 0x17490
movb %al, -0x8a2(%rbp)
jmp 0x1e708
movb -0x8a2(%rbp), %al
testb $0x1, %al
jne 0x1e714
jmp 0x1e777
leaq 0x52253(%rip), %rdi     # 0x7096e
leaq -0x58(%rbp), %rsi
callq 0xd590
movb %al, -0x8a3(%rbp)
jmp 0x1e72c
movb -0x8a3(%rbp), %al
testb $0x1, %al
jne 0x1e75c
jmp 0x1e738
leaq 0x5120b(%rip), %rdi     # 0x6f94a
leaq -0x58(%rbp), %rsi
callq 0xd590
movb %al, -0x8a4(%rbp)
jmp 0x1e750
movb -0x8a4(%rbp), %al
testb $0x1, %al
jne 0x1e75c
jmp 0x1e777
leaq -0x158(%rbp), %rdi
callq 0x32c70
movq %rax, %rdi
callq 0x32c90
jmp 0x1e772
jmp 0x1e920
leaq -0x158(%rbp), %rdi
callq 0x32c70
movq %rax, %rdi
callq 0x18050
movb %al, -0x8a5(%rbp)
jmp 0x1e793
movb -0x8a5(%rbp), %al
testb $0x1, %al
jne 0x1e79f
jmp 0x1e80f
leaq -0x58(%rbp), %rdi
callq 0x8690
testb $0x1, %al
jne 0x1e7f4
leaq 0x508fa(%rip), %rdi     # 0x6f0ad
leaq -0x58(%rbp), %rsi
callq 0xd590
movb %al, -0x8a6(%rbp)
jmp 0x1e7c4
movb -0x8a6(%rbp), %al
testb $0x1, %al
jne 0x1e7f4
jmp 0x1e7d0
leaq 0x5115d(%rip), %rdi     # 0x6f934
leaq -0x58(%rbp), %rsi
callq 0xd590
movb %al, -0x8a7(%rbp)
jmp 0x1e7e8
movb -0x8a7(%rbp), %al
testb $0x1, %al
jne 0x1e7f4
jmp 0x1e80f
leaq -0x158(%rbp), %rdi
callq 0x32c70
movq %rax, %rdi
callq 0x32cb0
jmp 0x1e80a
jmp 0x1e91e
leaq -0x430(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1e824
leaq 0x5110c(%rip), %rsi     # 0x6f937
leaq -0x410(%rbp), %rdi
leaq -0x430(%rbp), %rdx
callq 0x325f0
jmp 0x1e840
leaq 0x50f2a(%rip), %rdx     # 0x6f771
leaq -0x3f0(%rbp), %rdi
leaq -0x410(%rbp), %rsi
callq 0xe020
jmp 0x1e85c
leaq -0x138(%rbp), %rdi
callq 0x32270
movl %eax, -0x8ac(%rbp)
jmp 0x1e870
movl -0x8ac(%rbp), %esi
leaq -0x3f0(%rbp), %rdi
callq 0x6d960
jmp 0x1e884
leaq -0x3f0(%rbp), %rdi
callq 0x8848
leaq -0x410(%rbp), %rdi
callq 0x8848
leaq -0x430(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
movl $0x1, -0x1dc(%rbp)
jmp 0x1fa59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1e90d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1e901
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x3f0(%rbp), %rdi
callq 0x8848
leaq -0x410(%rbp), %rdi
callq 0x8848
leaq -0x430(%rbp), %rdi
callq 0x8848
jmp 0x1fab5
jmp 0x1e920
leaq -0x440(%rbp), %rdi
callq 0x32cd0
movb $0x0, -0x451(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x32a60
movb %al, -0x8ad(%rbp)
jmp 0x1e947
movb -0x8ad(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x8ae(%rbp)
jne 0x1e9ac
jmp 0x1e95c
leaq -0x108(%rbp), %rdi
callq 0x32b10
movq %rax, -0x8b8(%rbp)
jmp 0x1e971
movq -0x8b8(%rbp), %rsi
leaq -0x450(%rbp), %rdi
callq 0x32a80
movb $0x1, -0x451(%rbp)
leaq -0x440(%rbp), %rdi
leaq -0x450(%rbp), %rsi
callq 0x32cf0
movq %rax, %rdi
callq 0x32b30
movb %al, -0x8ae(%rbp)
movb -0x8ae(%rbp), %al
movb %al, -0x8b9(%rbp)
testb $0x1, -0x451(%rbp)
jne 0x1e9c3
jmp 0x1e9cf
leaq -0x450(%rbp), %rdi
callq 0x32b50
movb -0x8b9(%rbp), %al
testb $0x1, %al
jne 0x1e9de
jmp 0x1eb53
leaq -0x158(%rbp), %rdi
callq 0x32c70
movq %rax, %rdi
callq 0x185d0
movl %eax, -0x8c0(%rbp)
jmp 0x1e9fa
leaq -0x440(%rbp), %rdi
callq 0x32c70
movq %rax, %rdi
callq 0x185d0
movl %eax, -0x8c4(%rbp)
jmp 0x1ea16
movl -0x8c0(%rbp), %eax
movl -0x8c4(%rbp), %ecx
cmpl %ecx, %eax
jge 0x1ea42
jmp 0x1eb53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1edf1
leaq -0x158(%rbp), %rdi
callq 0x32c70
movq %rax, %rdi
callq 0x185d0
movl %eax, -0x8c8(%rbp)
jmp 0x1ea5e
leaq -0x440(%rbp), %rdi
callq 0x32c70
movq %rax, %rdi
callq 0x185d0
movl %eax, -0x8cc(%rbp)
jmp 0x1ea7a
movl -0x8c8(%rbp), %eax
movl -0x8cc(%rbp), %ecx
cmpl %ecx, %eax
jne 0x1eb00
leaq -0x158(%rbp), %rdi
callq 0x32c70
movq %rax, %rdi
callq 0x188b0
movb %al, -0x8cd(%rbp)
jmp 0x1eaa6
movb -0x8cd(%rbp), %al
testb $0x1, %al
jne 0x1eab2
jmp 0x1eafe
movq -0x808(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x8e0(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x32b10
movq %rax, -0x8d8(%rbp)
jmp 0x1ead9
movq -0x8d8(%rbp), %rsi
movq -0x8e0(%rbp), %rdi
callq 0x32b70
jmp 0x1eaee
leaq -0x108(%rbp), %rdi
callq 0x32be0
jmp 0x1eafc
jmp 0x1eafe
jmp 0x1eb53
movq -0x808(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x8f0(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x32b10
movq %rax, -0x8e8(%rbp)
jmp 0x1eb27
movq -0x8e8(%rbp), %rsi
movq -0x8f0(%rbp), %rdi
callq 0x32b70
jmp 0x1eb3c
leaq -0x108(%rbp), %rdi
callq 0x32be0
jmp 0x1eb4a
jmp 0x1eb4c
jmp 0x1eb4e
jmp 0x1e92c
leaq -0x468(%rbp), %rdi
movq %rdi, -0x8f8(%rbp)
leaq -0x158(%rbp), %rsi
callq 0x32d20
movq -0x8f8(%rbp), %rsi
leaq -0x108(%rbp), %rdi
callq 0x32970
jmp 0x1eb82
leaq -0x468(%rbp), %rdi
callq 0x327f0
leaq -0x488(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1eba3
leaq 0x50ada(%rip), %rdi     # 0x6f684
leaq -0x488(%rbp), %rsi
callq 0xd590
movb %al, -0x8f9(%rbp)
jmp 0x1ebbe
leaq -0x488(%rbp), %rdi
callq 0x8848
movb -0x8f9(%rbp), %al
testb $0x1, %al
jne 0x1ebd9
jmp 0x1edce
leaq -0x4a8(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1ebee
leaq -0xa8(%rbp), %rdi
leaq -0x4a8(%rbp), %rsi
callq 0x32940
jmp 0x1ec03
leaq -0x4a8(%rbp), %rdi
callq 0x8848
movl $0x30, %edi
callq 0x83e0
movq %rax, -0x908(%rbp)
jmp 0x1ec22
movb $0x1, -0x4da(%rbp)
leaq -0x4d9(%rbp), %rdi
movq %rdi, -0x910(%rbp)
callq 0x8760
movq -0x910(%rbp), %rdx
leaq 0x50463(%rip), %rsi     # 0x6f0ad
leaq -0x4d8(%rbp), %rdi
callq 0xced0
jmp 0x1ec58
leaq -0x158(%rbp), %rdi
callq 0x32c70
movq %rax, %rdi
callq 0x32270
movl %eax, -0x914(%rbp)
jmp 0x1ec74
movl -0x914(%rbp), %edx
movq -0x908(%rbp), %rdi
leaq -0x4d8(%rbp), %rsi
callq 0x329a0
jmp 0x1ec8f
movq -0x908(%rbp), %rsi
movb $0x0, -0x4da(%rbp)
leaq -0x4b8(%rbp), %rdi
callq 0x329f0
jmp 0x1ecab
leaq -0x108(%rbp), %rdi
leaq -0x4b8(%rbp), %rsi
callq 0x32970
jmp 0x1ecc0
leaq -0x4b8(%rbp), %rdi
callq 0x327f0
leaq -0x4d8(%rbp), %rdi
callq 0x8848
leaq -0x4d9(%rbp), %rdi
callq 0x8460
jmp 0x1edce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x468(%rbp), %rdi
callq 0x327f0
jmp 0x1edf1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x488(%rbp), %rdi
callq 0x8848
jmp 0x1edf1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x4a8(%rbp), %rdi
callq 0x8848
jmp 0x1edf1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1eda4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1ed98
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x4b8(%rbp), %rdi
callq 0x327f0
leaq -0x4d8(%rbp), %rdi
callq 0x8848
leaq -0x4d9(%rbp), %rdi
callq 0x8460
testb $0x1, -0x4da(%rbp)
jne 0x1edbb
jmp 0x1edcc
movq -0x908(%rbp), %rdi
movl $0x30, %esi
callq 0x83f0
jmp 0x1edf1
leaq 0x50b5f(%rip), %rsi     # 0x6f934
leaq -0x58(%rbp), %rdi
callq 0x8580
jmp 0x1ede0
leaq -0x440(%rbp), %rdi
callq 0x32b50
jmp 0x1fa2b
leaq -0x440(%rbp), %rdi
callq 0x32b50
jmp 0x1fab5
leaq -0x500(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1ee17
leaq -0x500(%rbp), %rdi
callq 0x6cd20
movb %al, -0x915(%rbp)
jmp 0x1ee2b
leaq -0x500(%rbp), %rdi
callq 0x8848
movb -0x915(%rbp), %al
testb $0x1, %al
jne 0x1ee46
jmp 0x1f71c
leaq -0x530(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1ee5b
movq -0x28(%rbp), %rdx
leaq -0x510(%rbp), %rdi
leaq -0x530(%rbp), %rsi
callq 0x6d6b0
jmp 0x1ee74
leaq -0x530(%rbp), %rdi
callq 0x8848
leaq -0x560(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1ee95
movq -0x20(%rbp), %rdx
leaq -0x540(%rbp), %rdi
leaq -0x560(%rbp), %rsi
callq 0x6d580
jmp 0x1eeae
leaq -0x560(%rbp), %rdi
callq 0x8848
leaq -0x590(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1eecf
movq -0x30(%rbp), %rdx
leaq -0x570(%rbp), %rdi
leaq -0x590(%rbp), %rsi
callq 0x6d320
jmp 0x1eee8
leaq -0x590(%rbp), %rdi
callq 0x8848
leaq -0x5c0(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1ef09
movq -0x38(%rbp), %rdx
leaq -0x5a0(%rbp), %rdi
leaq -0x5c0(%rbp), %rsi
callq 0x6d450
jmp 0x1ef22
leaq -0x5c0(%rbp), %rdi
callq 0x8848
xorl %eax, %eax
movl %eax, %edi
leaq -0x510(%rbp), %rsi
callq 0x32d50
testb $0x1, %al
jne 0x1ef47
jmp 0x1f0d9
movq -0x808(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x928(%rbp)
leaq -0x5d0(%rbp), %rdi
movq %rdi, -0x920(%rbp)
leaq -0x510(%rbp), %rsi
callq 0x32d80
movq -0x928(%rbp), %rdi
movq -0x920(%rbp), %rsi
callq 0x32750
jmp 0x1ef88
leaq -0x5d0(%rbp), %rdi
callq 0x327f0
leaq 0x509af(%rip), %rsi     # 0x6f94a
leaq -0x58(%rbp), %rdi
callq 0x8580
jmp 0x1efa6
jmp 0x1f698
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x500(%rbp), %rdi
callq 0x8848
jmp 0x1fab5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x530(%rbp), %rdi
callq 0x8848
jmp 0x1fab5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1f70b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x560(%rbp), %rdi
callq 0x8848
jmp 0x1f70b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1f6ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x590(%rbp), %rdi
callq 0x8848
jmp 0x1f6ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1f6f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x5c0(%rbp), %rdi
callq 0x8848
jmp 0x1f6f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x5d0(%rbp), %rdi
callq 0x327f0
jmp 0x1f6e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1f6e7
xorl %eax, %eax
movl %eax, %edi
leaq -0x570(%rbp), %rsi
callq 0x32db0
testb $0x1, %al
jne 0x1f0f2
jmp 0x1f179
movq -0x808(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x938(%rbp)
leaq -0x5e0(%rbp), %rdi
movq %rdi, -0x930(%rbp)
leaq -0x570(%rbp), %rsi
callq 0x32de0
movq -0x938(%rbp), %rdi
movq -0x930(%rbp), %rsi
callq 0x32750
jmp 0x1f133
leaq -0x5e0(%rbp), %rdi
callq 0x327f0
leaq 0x50804(%rip), %rsi     # 0x6f94a
leaq -0x58(%rbp), %rdi
callq 0x8580
jmp 0x1f151
jmp 0x1f696
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x5e0(%rbp), %rdi
callq 0x327f0
jmp 0x1f6e7
xorl %eax, %eax
movl %eax, %edi
leaq -0x5a0(%rbp), %rsi
callq 0x32e10
testb $0x1, %al
jne 0x1f192
jmp 0x1f219
movq -0x808(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x948(%rbp)
leaq -0x5f0(%rbp), %rdi
movq %rdi, -0x940(%rbp)
leaq -0x5a0(%rbp), %rsi
callq 0x32e40
movq -0x948(%rbp), %rdi
movq -0x940(%rbp), %rsi
callq 0x32750
jmp 0x1f1d3
leaq -0x5f0(%rbp), %rdi
callq 0x327f0
leaq 0x50764(%rip), %rsi     # 0x6f94a
leaq -0x58(%rbp), %rdi
callq 0x8580
jmp 0x1f1f1
jmp 0x1f694
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x5f0(%rbp), %rdi
callq 0x327f0
jmp 0x1f6e7
xorl %eax, %eax
movl %eax, %edi
leaq -0x540(%rbp), %rsi
callq 0x32e70
testb $0x1, %al
jne 0x1f232
jmp 0x1f58b
leaq -0x540(%rbp), %rdi
callq 0xd780
movq %rax, %rsi
leaq -0x648(%rbp), %rdi
callq 0xd910
jmp 0x1f24f
leaq -0x610(%rbp), %rdi
leaq -0x648(%rbp), %rsi
callq 0xd940
jmp 0x1f264
leaq 0x4fdc9(%rip), %rdi     # 0x6f034
leaq -0x610(%rbp), %rsi
callq 0xd590
movb %al, -0x949(%rbp)
jmp 0x1f27f
leaq -0x610(%rbp), %rdi
callq 0x8848
leaq -0x648(%rbp), %rdi
callq 0xd440
movb -0x949(%rbp), %al
testb $0x1, %al
jne 0x1f2a6
jmp 0x1f400
leaq -0x540(%rbp), %rdi
callq 0xd780
movq %rax, %rsi
leaq -0x6a8(%rbp), %rdi
callq 0xdbe0
jmp 0x1f2c3
leaq 0x50684(%rip), %rsi     # 0x6f94e
leaq -0x688(%rbp), %rdi
leaq -0x6a8(%rbp), %rdx
callq 0x325f0
jmp 0x1f2df
leaq 0x50680(%rip), %rdx     # 0x6f966
leaq -0x668(%rbp), %rdi
leaq -0x688(%rbp), %rsi
callq 0xe020
jmp 0x1f2fb
leaq -0x138(%rbp), %rdi
callq 0x32270
movl %eax, -0x950(%rbp)
jmp 0x1f30f
movl -0x950(%rbp), %esi
leaq -0x668(%rbp), %rdi
callq 0x6d960
jmp 0x1f323
leaq -0x668(%rbp), %rdi
callq 0x8848
leaq -0x688(%rbp), %rdi
callq 0x8848
leaq -0x6a8(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
movl $0x1, -0x1dc(%rbp)
jmp 0x1f6a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1f38c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x610(%rbp), %rdi
callq 0x8848
leaq -0x648(%rbp), %rdi
callq 0xd440
jmp 0x1f6e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1f3ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1f3e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x668(%rbp), %rdi
callq 0x8848
leaq -0x688(%rbp), %rdi
callq 0x8848
leaq -0x6a8(%rbp), %rdi
callq 0x8848
jmp 0x1f6e7
movl $0x48, %edi
callq 0x83e0
movq %rax, -0x958(%rbp)
jmp 0x1f413
movq -0x958(%rbp), %rdi
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
movq $0x0, 0x40(%rdi)
callq 0x32ea0
jmp 0x1f43b
movq -0x958(%rbp), %rsi
leaq -0x6b8(%rbp), %rdi
callq 0x32ef0
jmp 0x1f450
leaq -0x6b8(%rbp), %rdi
callq 0x32f20
movq %rax, %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
movq -0x30(%rbp), %r8
movq -0x38(%rbp), %r9
callq 0x1fd00
movb %al, -0x959(%rbp)
jmp 0x1f480
movb -0x959(%rbp), %al
testb $0x1, %al
jne 0x1f4de
jmp 0x1f48c
movb $0x0, -0x1(%rbp)
movl $0x1, -0x1dc(%rbp)
jmp 0x1f569
movq -0x958(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
movl $0x48, %esi
callq 0x83f0
jmp 0x1f6e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1f57a
movq -0x808(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x970(%rbp)
leaq -0x6c8(%rbp), %rdi
movq %rdi, -0x968(%rbp)
leaq -0x6b8(%rbp), %rsi
callq 0x32f40
movq -0x970(%rbp), %rdi
movq -0x968(%rbp), %rsi
callq 0x32750
jmp 0x1f51f
leaq -0x6c8(%rbp), %rdi
callq 0x327f0
leaq 0x50418(%rip), %rsi     # 0x6f94a
leaq -0x58(%rbp), %rdi
callq 0x8580
jmp 0x1f53d
movl $0x2, -0x1dc(%rbp)
jmp 0x1f569
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x6c8(%rbp), %rdi
callq 0x327f0
jmp 0x1f57a
leaq -0x6b8(%rbp), %rdi
callq 0x32f70
jmp 0x1f6a2
leaq -0x6b8(%rbp), %rdi
callq 0x32f70
jmp 0x1f6e7
leaq -0x728(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1f5a0
leaq 0x503de(%rip), %rsi     # 0x6f985
leaq -0x708(%rbp), %rdi
leaq -0x728(%rbp), %rdx
callq 0x325f0
jmp 0x1f5bc
leaq 0x5080f(%rip), %rdx     # 0x6fdd2
leaq -0x6e8(%rbp), %rdi
leaq -0x708(%rbp), %rsi
callq 0xe020
jmp 0x1f5d8
leaq -0x138(%rbp), %rdi
callq 0x32270
movl %eax, -0x974(%rbp)
jmp 0x1f5ec
movl -0x974(%rbp), %esi
leaq -0x6e8(%rbp), %rdi
callq 0x6d960
jmp 0x1f600
leaq -0x6e8(%rbp), %rdi
callq 0x8848
leaq -0x708(%rbp), %rdi
callq 0x8848
leaq -0x728(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
movl $0x1, -0x1dc(%rbp)
jmp 0x1f6a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1f686
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1f67a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x6e8(%rbp), %rdi
callq 0x8848
leaq -0x708(%rbp), %rdi
callq 0x8848
leaq -0x728(%rbp), %rdi
callq 0x8848
jmp 0x1f6e7
jmp 0x1f696
jmp 0x1f698
movl $0x0, -0x1dc(%rbp)
leaq -0x5a0(%rbp), %rdi
callq 0x10dc0
leaq -0x570(%rbp), %rdi
callq 0xd400
leaq -0x540(%rbp), %rdi
callq 0x94c0
leaq -0x510(%rbp), %rdi
callq 0x9880
movl -0x1dc(%rbp), %eax
testl %eax, %eax
jne 0x1fa59
jmp 0x1f6e2
jmp 0x1fa29
leaq -0x5a0(%rbp), %rdi
callq 0x10dc0
leaq -0x570(%rbp), %rdi
callq 0xd400
leaq -0x540(%rbp), %rdi
callq 0x94c0
leaq -0x510(%rbp), %rdi
callq 0x9880
jmp 0x1fab5
leaq -0x748(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1f731
leaq -0x748(%rbp), %rdi
callq 0x8690
movb %al, -0x975(%rbp)
leaq -0x748(%rbp), %rdi
callq 0x8848
movb -0x975(%rbp), %al
testb $0x1, %al
jne 0x1f75e
jmp 0x1f8a0
leaq -0xa8(%rbp), %rdi
callq 0x32a20
movb %al, -0x976(%rbp)
jmp 0x1f772
movb -0x976(%rbp), %al
testb $0x1, %al
jne 0x1f77e
jmp 0x1f7cc
leaq 0x511e9(%rip), %rdi     # 0x7096e
leaq -0x58(%rbp), %rsi
callq 0xd8e0
movb %al, -0x977(%rbp)
jmp 0x1f796
movb -0x977(%rbp), %al
testb $0x1, %al
jne 0x1f7a5
jmp 0x1f891
leaq 0x5019e(%rip), %rdi     # 0x6f94a
leaq -0x58(%rbp), %rsi
callq 0xd8e0
movb %al, -0x978(%rbp)
jmp 0x1f7bd
movb -0x978(%rbp), %al
testb $0x1, %al
jne 0x1f7cc
jmp 0x1f891
leaq -0x769(%rbp), %rdi
movq %rdi, -0x980(%rbp)
callq 0x8760
movq -0x980(%rbp), %rdx
leaq 0x501a8(%rip), %rsi     # 0x6f995
leaq -0x768(%rbp), %rdi
callq 0xced0
jmp 0x1f7fb
leaq -0x138(%rbp), %rdi
callq 0x32270
movl %eax, -0x984(%rbp)
jmp 0x1f80f
movl -0x984(%rbp), %esi
leaq -0x768(%rbp), %rdi
callq 0x6d960
jmp 0x1f823
leaq -0x768(%rbp), %rdi
callq 0x8848
leaq -0x769(%rbp), %rdi
callq 0x8460
movb $0x0, -0x1(%rbp)
movl $0x1, -0x1dc(%rbp)
jmp 0x1fa59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1f880
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x768(%rbp), %rdi
callq 0x8848
leaq -0x769(%rbp), %rdi
callq 0x8460
jmp 0x1fab5
movl $0x3, -0x1dc(%rbp)
jmp 0x1fa59
leaq -0xa8(%rbp), %rdi
callq 0x32a20
movb %al, -0x985(%rbp)
jmp 0x1f8b4
movb -0x985(%rbp), %al
testb $0x1, %al
jne 0x1f8c0
jmp 0x1f90e
leaq 0x510a7(%rip), %rdi     # 0x7096e
leaq -0x58(%rbp), %rsi
callq 0xd8e0
movb %al, -0x986(%rbp)
jmp 0x1f8d8
movb -0x986(%rbp), %al
testb $0x1, %al
jne 0x1f8e7
jmp 0x1fa1d
leaq 0x5005c(%rip), %rdi     # 0x6f94a
leaq -0x58(%rbp), %rsi
callq 0xd8e0
movb %al, -0x987(%rbp)
jmp 0x1f8ff
movb -0x987(%rbp), %al
testb $0x1, %al
jne 0x1f90e
jmp 0x1fa1d
leaq -0x7d0(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xd5c0
jmp 0x1f923
leaq 0x5000d(%rip), %rsi     # 0x6f937
leaq -0x7b0(%rbp), %rdi
leaq -0x7d0(%rbp), %rdx
callq 0x325f0
jmp 0x1f93f
leaq 0x4fe2b(%rip), %rdx     # 0x6f771
leaq -0x790(%rbp), %rdi
leaq -0x7b0(%rbp), %rsi
callq 0xe020
jmp 0x1f95b
leaq -0x138(%rbp), %rdi
callq 0x32270
movl %eax, -0x98c(%rbp)
jmp 0x1f96f
movl -0x98c(%rbp), %esi
leaq -0x790(%rbp), %rdi
callq 0x6d960
jmp 0x1f983
leaq -0x790(%rbp), %rdi
callq 0x8848
leaq -0x7b0(%rbp), %rdi
callq 0x8848
leaq -0x7d0(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
movl $0x1, -0x1dc(%rbp)
jmp 0x1fa59
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1fa0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x1fa00
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x790(%rbp), %rdi
callq 0x8848
leaq -0x7b0(%rbp), %rdi
callq 0x8848
leaq -0x7d0(%rbp), %rdi
callq 0x8848
jmp 0x1fab5
movl $0x3, -0x1dc(%rbp)
jmp 0x1fa59
jmp 0x1fa2b
jmp 0x1fa2d
jmp 0x1fa2f
jmp 0x1fa31
movq -0x18(%rbp), %rsi
leaq -0x800(%rbp), %rdi
callq 0x6ae20
jmp 0x1fa43
leaq -0x800(%rbp), %rdi
callq 0x99b0
movl $0x0, -0x1dc(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x32b50
leaq -0x148(%rbp), %rdi
callq 0x32f90
leaq -0x138(%rbp), %rdi
callq 0x99b0
movl -0x1dc(%rbp), %eax
movl %eax, -0x990(%rbp)
testl %eax, %eax
je 0x1fab0
jmp 0x1fa8f
movl -0x990(%rbp), %eax
subl $0x2, %eax
je 0x1da05
jmp 0x1faa0
movl -0x990(%rbp), %eax
subl $0x3, %eax
je 0x1fade
jmp 0x1fba8
jmp 0x1da05
leaq -0x158(%rbp), %rdi
callq 0x32b50
leaq -0x148(%rbp), %rdi
callq 0x32f90
leaq -0x138(%rbp), %rdi
callq 0x99b0
jmp 0x1fbd7
jmp 0x1fae0
leaq -0x108(%rbp), %rdi
callq 0x32a60
movb %al, -0x991(%rbp)
jmp 0x1faf4
movb -0x991(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1fb02
jmp 0x1fb4e
movq -0x808(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x9a8(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x32b10
movq %rax, -0x9a0(%rbp)
jmp 0x1fb29
movq -0x9a0(%rbp), %rsi
movq -0x9a8(%rbp), %rdi
callq 0x32b70
jmp 0x1fb3e
leaq -0x108(%rbp), %rdi
callq 0x32be0
jmp 0x1fb4c
jmp 0x1fae0
movq -0x808(%rbp), %rdi
callq 0x20a30
movb %al, -0x9a9(%rbp)
jmp 0x1fb62
movb -0x9a9(%rbp), %al
testb $0x1, %al
jne 0x1fb7e
jmp 0x1fb6e
movb $0x0, -0x1(%rbp)
movl $0x1, -0x1dc(%rbp)
jmp 0x1fba8
movq -0x808(%rbp), %rdi
callq 0x214a0
jmp 0x1fb8c
movq -0x808(%rbp), %rdi
callq 0x22020
jmp 0x1fb9a
movb $0x1, -0x1(%rbp)
movl $0x1, -0x1dc(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x32fb0
leaq -0xa8(%rbp), %rdi
callq 0x10390
leaq -0x58(%rbp), %rdi
callq 0x8848
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x9b0, %rsp            # imm = 0x9B0
popq %rbp
retq
leaq -0x108(%rbp), %rdi
callq 0x32fb0
leaq -0xa8(%rbp), %rdi
callq 0x10390
leaq -0x58(%rbp), %rdi
callq 0x8848
movq -0xb0(%rbp), %rdi
callq 0x8750
nopw %cs:(%rax,%rax)