// File: /workspace/github_cpp_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x298, %rsp            # imm = 0x298
movq %r9, 0x150(%rsp)
movq %r8, 0x158(%rsp)
movq %rcx, 0x168(%rsp)
movq %rdx, 0x160(%rsp)
movq %rsi, 0xe8(%rsp)
movq %rdi, 0xb0(%rsp)
leaq 0xd8(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq $0x0, -0x8(%rbp)
movb $0x0, (%rbp)
xorps %xmm0, %xmm0
leaq 0x1d0(%rsp), %rdi
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
xorl %esi, %esi
callq 0xbc88
leaq 0x100(%rsp), %rdi
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
xorl %esi, %esi
callq 0x2fe60
leaq 0x50(%rsp), %r13
movq 0xb0(%rsp), %rax
leaq 0x10(%rax), %r15
leaq 0x80(%rsp), %rdi
movq 0xe8(%rsp), %rsi
callq 0x33270
movq 0xb0(%rsp), %rax
cmpl $-0x1, 0x8(%rax)
jne 0x116f7
movl 0x88(%rsp), %eax
movq 0xb0(%rsp), %rcx
movl %eax, 0x8(%rcx)
movl $0x10, %edi
callq 0x72b0
movl $0xffffffff, 0x8(%rax)  # imm = 0xFFFFFFFF
leaq 0x35ca9(%rip), %rcx     # 0x473b8
movq %rcx, (%rax)
movw $0x0, 0xc(%rax)
movq %rax, 0xf0(%rsp)
leaq 0xf8(%rsp), %rdi
movq %rax, %rsi
callq 0x2fbf0
movl $0x38, %edi
callq 0x72b0
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movaps %xmm0, 0x10(%rax)
movaps %xmm0, 0x20(%rax)
xorl %edx, %edx
movq %rdx, 0x30(%rax)
movq %rax, %rcx
addq $0x20, %rcx
movl $0xffffffff, 0x8(%rax)  # imm = 0xFFFFFFFF
leaq 0x35c85(%rip), %rsi     # 0x473e8
movq %rsi, (%rax)
movq %rcx, 0x10(%rax)
movq %rdx, 0x18(%rax)
movb $0x0, 0x20(%rax)
movq %rax, 0xb8(%rsp)
leaq 0xc0(%rsp), %rdi
movq %rax, %rsi
callq 0x2ffd8
leaq 0x18(%rsp), %r12
movq %r12, 0x8(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0xc014
movq %rbx, %rdi
leaq 0x248fb(%rip), %rsi     # 0x360b9
callq 0x70c0
movl %eax, %ebx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x117dc
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
testl %ebx, %ebx
je 0x11874
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0xc014
movq %rbx, %rdi
leaq 0x260c6(%rip), %rsi     # 0x378de
callq 0x70c0
movl %eax, %ebx
testl %eax, %eax
je 0x11a85
leaq 0x258(%rsp), %rax
movq %rax, 0x248(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x248(%rsp), %r12
movq %r12, %rdi
callq 0xc014
movq %r12, %rdi
leaq 0x2503e(%rip), %rsi     # 0x368a2
callq 0x70c0
testl %eax, %eax
sete %r12b
jmp 0x11a88
cmpq $0x0, 0xd0(%rsp)
je 0x11924
leaq 0xc8(%rsp), %rdi
leaq 0x24827(%rip), %rsi     # 0x360b9
callq 0x70c0
testl %eax, %eax
je 0x11924
leaq 0xc8(%rsp), %rdi
leaq 0x24ff6(%rip), %rsi     # 0x368a4
callq 0x70c0
testl %eax, %eax
je 0x11924
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x60(%rsp), %rbx
movq %rbx, %rdi
callq 0xc014
movl $0x12, %r8d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x24fb2(%rip), %rcx     # 0x368a7
callq 0x7320
movq %r13, 0x40(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x123af
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x123b7
leaq 0x18(%rsp), %r12
movq %r12, 0x8(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %r13
movq %r13, %rdi
callq 0xc014
leaq 0xc8(%rsp), %rdi
movq %r13, %rsi
callq 0x7370
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x11975
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
movq %r12, 0x8(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0xc014
leaq 0x1d0(%rsp), %rdi
movq %r13, %rsi
callq 0x300a0
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x119bc
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
movl $0x30, %edi
callq 0x72b0
movq %rax, %rbx
movq %r12, 0x8(%rsp)
movq %r13, %rdi
leaq 0x246e1(%rip), %rsi     # 0x360b9
leaq 0x246db(%rip), %rdx     # 0x360ba
callq 0xc0a4
movl 0x88(%rsp), %r13d
movl $0xffffffff, 0x8(%rbx)  # imm = 0xFFFFFFFF
leaq 0x352e6(%rip), %rax     # 0x46ce0
movq %rax, (%rbx)
leaq 0x10(%rbx), %rdi
movq %rbx, %rax
addq $0x20, %rax
movq %rax, 0x10(%rbx)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
movb $0x1, %r12b
callq 0xc014
movl %r13d, 0x8(%rbx)
movq %rbx, 0x40(%rsp)
xorl %r12d, %r12d
leaq 0x48(%rsp), %rdi
movq %rbx, %rsi
callq 0x3036e
leaq 0x100(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x30436
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
leaq 0x50(%rsp), %r13
je 0x11a60
callq 0x81ea
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x12dc7
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x12dc7
movb $0x1, %r12b
testl %ebx, %ebx
je 0x11ab1
movq 0x248(%rsp), %rdi
leaq 0x258(%rsp), %rax
cmpq %rax, %rdi
je 0x11ab1
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x11acd
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
testb %r12b, %r12b
je 0x11bc7
movq 0x200(%rsp), %rax
cmpq 0x1e0(%rsp), %rax
setne %bl
je 0x11b8e
leaq 0x1c0(%rsp), %rax
movq %rax, 0x1b0(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1b0(%rsp), %r12
movq %r12, %rdi
callq 0xc014
leaq 0x228(%rsp), %rdi
movq %r12, %rsi
callq 0x33dc6
movq 0x200(%rsp), %rax
cmpq 0x208(%rsp), %rax
jne 0x11b58
movq 0x218(%rsp), %rax
movq -0x8(%rax), %rax
movl $0x200, %ecx            # imm = 0x200
addq %rcx, %rax
movq 0x230(%rsp), %rdx
movb $0x1, %r13b
cmpq -0x18(%rax), %rdx
jne 0x11e19
testq %rdx, %rdx
je 0x11b8e
movq -0x20(%rax), %rsi
movq 0x228(%rsp), %rdi
callq 0x72e0
movb $0x1, %r12b
testl %eax, %eax
jne 0x1203b
leaq 0xc8(%rsp), %r12
movq %r12, %rdi
leaq 0x25d3e(%rip), %rsi     # 0x378de
callq 0x70c0
testl %eax, %eax
je 0x12035
movq %r12, %rdi
leaq 0x24d03(%rip), %rsi     # 0x368ba
callq 0x70c0
testl %eax, %eax
setne %r12b
jmp 0x12038
movq 0xf0(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0xd270
testb %al, %al
je 0x11c96
cmpq $0x0, 0xd0(%rsp)
leaq 0xc8(%rsp), %rbx
je 0x11dbf
movq %rbx, %rdi
leaq 0x244b4(%rip), %rsi     # 0x360b9
callq 0x70c0
testl %eax, %eax
je 0x11dbf
movq %rbx, %rdi
leaq 0x24c88(%rip), %rsi     # 0x368a4
callq 0x70c0
testl %eax, %eax
je 0x11dbf
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x60(%rsp), %rbx
movq %rbx, %rdi
callq 0xc014
movl $0x12, %r8d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x24c40(%rip), %rcx     # 0x368a7
callq 0x7320
movq %r13, 0x40(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x126d4
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x126dc
movq 0xb8(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0xd712
testb %al, %al
je 0x11e21
movq 0xb8(%rsp), %rdi
callq 0xdd32
testb %al, %al
je 0x11cfc
leaq 0xc8(%rsp), %r12
movq %r12, %rdi
leaq 0x25c08(%rip), %rsi     # 0x378de
callq 0x70c0
movb $0x1, %bl
testl %eax, %eax
je 0x12467
movq %r12, %rdi
leaq 0x24bcb(%rip), %rsi     # 0x368ba
callq 0x70c0
testl %eax, %eax
je 0x12467
movq 0xb8(%rsp), %rdi
callq 0xe256
testb %al, %al
je 0x11d52
cmpq $0x0, 0xd0(%rsp)
je 0x12465
leaq 0xc8(%rsp), %rbx
movq %rbx, %rdi
leaq 0x2438b(%rip), %rsi     # 0x360b9
callq 0x70c0
testl %eax, %eax
je 0x12465
movq %rbx, %rdi
leaq 0x24b5f(%rip), %rsi     # 0x368a4
callq 0x70c0
testl %eax, %eax
je 0x12465
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x60(%rsp), %rbx
movq %rbx, %rdi
callq 0xc014
movl $0x12, %r8d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x24b17(%rip), %rcx     # 0x368a7
callq 0x7320
movq %r13, 0x40(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12761
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x12769
movq 0xd0(%rsp), %rdx
movl $0x3, %r8d
movq %rbx, %rdi
xorl %esi, %esi
leaq 0x24ae1(%rip), %rcx     # 0x368ba
callq 0x7450
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %rax
movq %rcx, 0x8(%rsp)
movq %rax, 0x10(%rsp)
testq %rax, %rax
je 0x12440
movq 0x36190(%rip), %rcx     # 0x47f98
cmpb $0x0, (%rcx)
je 0x1243c
incl 0x8(%rax)
jmp 0x12440
movb $0x1, %r12b
jmp 0x1203b
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0xc014
movq %rbx, %rdi
callq 0x33f07
movl %eax, %ebx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x11e71
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
testb %bl, %bl
je 0x122e0
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0xc014
leaq 0x1a0(%rsp), %rdi
movq %rbx, %rsi
movq 0x168(%rsp), %rdx
callq 0x345b1
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x11ed7
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0xc014
leaq 0x190(%rsp), %rdi
movq %rbx, %rsi
movq 0x160(%rsp), %rdx
callq 0x34498
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x11f35
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0xc014
leaq 0x180(%rsp), %rdi
movq %rbx, %rsi
movq 0x158(%rsp), %rdx
callq 0x34266
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x11f93
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0xc014
leaq 0x170(%rsp), %rdi
movq %rbx, %rsi
movq 0x150(%rsp), %rdx
callq 0x3437f
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x11ff1
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0x1a0(%rsp), %rax
testq %rax, %rax
je 0x12608
movq %rax, 0x8(%rsp)
movq 0x1a8(%rsp), %rax
movq %rax, 0x10(%rsp)
testq %rax, %rax
je 0x12af4
movq 0x35f74(%rip), %rcx     # 0x47f98
cmpb $0x0, (%rcx)
je 0x12af0
incl 0x8(%rax)
jmp 0x12af4
xorl %r12d, %r12d
movl %ebx, %r13d
testb %r13b, %r13b
leaq 0x50(%rsp), %r13
je 0x1208f
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
cmpq %rax, %rdi
je 0x1206a
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0x1b0(%rsp), %rdi
leaq 0x1c0(%rsp), %rax
cmpq %rax, %rdi
je 0x1208f
movq 0x1c0(%rsp), %rsi
incq %rsi
callq 0x72c0
testb %r12b, %r12b
je 0x12101
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x60(%rsp), %rbx
movq %rbx, %rdi
callq 0xc014
movl $0x12, %r8d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x247d5(%rip), %rcx     # 0x368a7
callq 0x7320
movq %r13, 0x40(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12253
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x1225b
movq 0x200(%rsp), %rax
cmpq 0x1e0(%rsp), %rax
je 0x12249
movq 0x110(%rsp), %rbx
movq 0x130(%rsp), %r12
cmpq %rbx, %r12
je 0x12174
movq %r12, %r14
cmpq 0x138(%rsp), %r12
jne 0x1214d
movq 0x148(%rsp), %rax
movq -0x8(%rax), %r14
movl $0x200, %eax            # imm = 0x200
addq %rax, %r14
movq -0x10(%r14), %rdi
testq %rdi, %rdi
je 0x12179
leaq 0x34b8b(%rip), %rsi     # 0x46ce8
leaq 0x3528c(%rip), %rdx     # 0x473f0
xorl %ecx, %ecx
callq 0x7330
testq %rax, %rax
setne %r13b
jmp 0x1217c
xorl %r13d, %r13d
jmp 0x1219f
xorl %r13d, %r13d
testb %r13b, %r13b
je 0x1219c
movq -0x8(%r14), %r14
testq %r14, %r14
je 0x1219f
movq 0x35e07(%rip), %rax     # 0x47f98
cmpb $0x0, (%rax)
je 0x121fa
incl 0x8(%r14)
jmp 0x1219f
xorl %r14d, %r14d
cmpq %rbx, %r12
je 0x121b1
testq %r14, %r14
je 0x121b1
movq %r14, %rdi
callq 0x81ea
testb %r13b, %r13b
je 0x12201
movq 0x130(%rsp), %rsi
cmpq 0x138(%rsp), %rsi
jne 0x121dc
movq 0x148(%rsp), %rax
movq -0x8(%rax), %rsi
movl $0x200, %eax            # imm = 0x200
addq %rax, %rsi
addq $-0x10, %rsi
movq %r15, %rdi
callq 0x2215e
leaq 0x100(%rsp), %rdi
callq 0x307f0
jmp 0x12117
lock
incl 0x8(%r14)
jmp 0x1219f
leaq 0x100(%rsp), %rdi
callq 0x307f0
leaq 0x1d0(%rsp), %rdi
callq 0x30864
movq 0xd0(%rsp), %rdx
movl $0x1, %r8d
leaq 0xc8(%rsp), %rdi
xorl %esi, %esi
leaq 0x256a4(%rip), %rcx     # 0x378de
callq 0x7450
leaq 0x50(%rsp), %r13
jmp 0x12dc7
movl $0x3, %ebx
jmp 0x12e12
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x40(%rsp), %rdi
leaq 0x24462(%rip), %rsi     # 0x366e1
callq 0x7560
leaq 0x18(%rsp), %rsi
movq %rsi, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x122ac
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x122b2
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x88(%rsp), %esi
leaq 0x8(%rsp), %rdi
callq 0x34811
jmp 0x12a97
leaq 0x18(%rsp), %r12
movq %r12, 0x8(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0xc014
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rbx
cmpq %r12, %rdi
je 0x12323
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
testq %rbx, %rbx
je 0x125a1
movq 0x200(%rsp), %rax
cmpq 0x1e0(%rsp), %rax
je 0x129cf
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x60(%rsp), %rbx
movq %rbx, %rdi
callq 0xc014
movl $0x12, %r8d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x24527(%rip), %rcx     # 0x368a7
callq 0x7320
movq %r13, 0x40(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12a0f
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x12a17
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x40(%rsp), %rdi
leaq 0x24306(%rip), %rsi     # 0x366e1
callq 0x7560
leaq 0x18(%rsp), %rsi
movq %rsi, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12408
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x1240e
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x88(%rsp), %esi
leaq 0x8(%rsp), %rdi
callq 0x34811
jmp 0x12a97
lock
incl 0x8(%rax)
movq %r15, %rdi
leaq 0x8(%rsp), %rsi
callq 0x2fc96
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x12dc7
callq 0x81ea
jmp 0x12dc7
xorl %ebx, %ebx
movq 0xb8(%rsp), %rax
movb %bl, 0x30(%rax)
xorl %r12d, %r12d
xorl %ebx, %ebx
movq 0x130(%rsp), %r13
cmpq 0x110(%rsp), %r13
je 0x124ca
cmpq 0x138(%rsp), %r13
jne 0x124a7
movq 0x148(%rsp), %rax
movq -0x8(%rax), %r13
movl $0x200, %eax            # imm = 0x200
addq %rax, %r13
movq -0x10(%r13), %rdi
testq %rdi, %rdi
je 0x124d1
leaq 0x34831(%rip), %rsi     # 0x46ce8
leaq 0x34f32(%rip), %rdx     # 0x473f0
xorl %ecx, %ecx
callq 0x7330
movq %rax, %r12
jmp 0x124d4
xorl %eax, %eax
movq %rbx, %r13
jmp 0x12514
xorl %r12d, %r12d
testq %r12, %r12
je 0x124f4
movq -0x8(%r13), %r13
testq %r13, %r13
je 0x12501
movq 0x35aaf(%rip), %rax     # 0x47f98
cmpb $0x0, (%rax)
je 0x124fc
incl 0x8(%r13)
jmp 0x12501
xorl %r12d, %r12d
xorl %r13d, %r13d
jmp 0x12501
lock
incl 0x8(%r13)
testq %rbx, %rbx
je 0x1250e
movq %rbx, %rdi
callq 0x81ea
testq %r12, %r12
setne %al
testb %al, %al
je 0x12699
movq 0xb8(%rsp), %rdi
callq 0xe50c
movl %eax, %ebx
movq %r12, %rdi
callq 0xe50c
cmpl %eax, %ebx
jl 0x12699
movq 0xb8(%rsp), %rdi
callq 0xe50c
movl %eax, %ebx
movq %r12, %rdi
callq 0xe50c
cmpl %eax, %ebx
je 0x1264c
movq 0x130(%rsp), %rsi
cmpq 0x138(%rsp), %rsi
jne 0x12580
movq 0x148(%rsp), %rax
movq -0x8(%rax), %rsi
movl $0x200, %eax            # imm = 0x200
addq %rax, %rsi
addq $-0x10, %rsi
movq %r15, %rdi
callq 0x2215e
leaq 0x100(%rsp), %rdi
callq 0x307f0
movq %r13, %rbx
jmp 0x12477
movq 0x200(%rsp), %rax
cmpq 0x1e0(%rsp), %rax
je 0x12b06
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
leaq 0x24335(%rip), %rsi     # 0x36905
leaq 0x2434b(%rip), %rdx     # 0x36922
callq 0xc0a4
movl 0x88(%rsp), %esi
movq %rbx, %rdi
callq 0x34811
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x12ae6
movq 0x18(%rsp), %rsi
jmp 0x12ade
movq 0x180(%rsp), %rax
testq %rax, %rax
je 0x12b46
movq %rax, 0x8(%rsp)
movq 0x188(%rsp), %rax
movq %rax, 0x10(%rsp)
testq %rax, %rax
je 0x12b8a
movq 0x3595d(%rip), %rcx     # 0x47f98
cmpb $0x0, (%rcx)
je 0x12b86
incl 0x8(%rax)
jmp 0x12b8a
movq 0xb8(%rsp), %rax
cmpb $0x1, 0x30(%rax)
jne 0x12699
movq 0x130(%rsp), %rsi
cmpq 0x138(%rsp), %rsi
jne 0x12680
movq 0x148(%rsp), %rax
movq -0x8(%rax), %rsi
movl $0x200, %eax            # imm = 0x200
addq %rax, %rsi
addq $-0x10, %rsi
movq %r15, %rdi
callq 0x2215e
leaq 0x100(%rsp), %rdi
callq 0x307f0
movq 0xb8(%rsp), %rcx
movq 0xc0(%rsp), %rax
movq %rcx, 0x8(%rsp)
movq %rax, 0x10(%rsp)
testq %rax, %rax
je 0x127f2
movq 0x358d5(%rip), %rcx     # 0x47f98
cmpb $0x0, (%rcx)
je 0x127ee
incl 0x8(%rax)
jmp 0x127f2
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x40(%rsp), %rdi
leaq 0x23fe1(%rip), %rsi     # 0x366e1
callq 0x7560
leaq 0x18(%rsp), %rsi
movq %rsi, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1272d
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x12733
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x88(%rsp), %esi
leaq 0x8(%rsp), %rdi
callq 0x34811
jmp 0x12a97
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x40(%rsp), %rdi
leaq 0x23f54(%rip), %rsi     # 0x366e1
callq 0x7560
leaq 0x18(%rsp), %rsi
movq %rsi, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x127ba
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x127c0
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x88(%rsp), %esi
leaq 0x8(%rsp), %rdi
callq 0x34811
jmp 0x12a97
lock
incl 0x8(%rax)
leaq 0x100(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x30436
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x12813
callq 0x81ea
leaq 0x18(%rsp), %r12
movq %r12, 0x8(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0xc014
movq %rbx, %rdi
leaq 0x23dad(%rip), %rsi     # 0x365f4
callq 0x70c0
movl %eax, %ebx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x12865
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
testl %ebx, %ebx
jne 0x12994
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0xc014
leaq 0x1d0(%rsp), %rdi
movq %rbx, %rsi
callq 0x300a0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x128c3
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
movl $0x30, %edi
callq 0x72b0
movq %rax, %r12
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
leaq 0x8(%rsp), %rdi
leaq 0x237d3(%rip), %rsi     # 0x360b9
leaq 0x237cd(%rip), %rdx     # 0x360ba
callq 0xc0a4
movq 0xb8(%rsp), %rax
movl 0x8(%rax), %ebp
movl $0xffffffff, 0x8(%r12)  # imm = 0xFFFFFFFF
leaq 0x343d3(%rip), %rax     # 0x46ce0
movq %rax, (%r12)
leaq 0x10(%r12), %rdi
movq %r12, %rax
addq $0x20, %rax
movq %rax, 0x10(%r12)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
movb $0x1, %bl
callq 0xc014
movl %ebp, 0x8(%r12)
movq %r12, 0x40(%rsp)
xorl %ebx, %ebx
leaq 0x48(%rsp), %rdi
movq %r12, %rsi
callq 0x3036e
leaq 0x100(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x30436
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
leaq 0xd8(%rsp), %rbp
je 0x12978
callq 0x81ea
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x12994
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0xd0(%rsp), %rdx
movl $0x2, %r8d
leaq 0xc8(%rsp), %rdi
xorl %esi, %esi
leaq 0x23ef1(%rip), %rcx     # 0x368a4
callq 0x7450
testq %r13, %r13
je 0x129c5
movq %r13, %rdi
callq 0x81ea
leaq 0x50(%rsp), %r13
jmp 0x12dc7
leaq 0xc8(%rsp), %r12
movq %r12, %rdi
leaq 0x24efd(%rip), %rsi     # 0x378de
callq 0x70c0
movl $0x3, %ebx
testl %eax, %eax
je 0x12e12
movq %r12, %rdi
leaq 0x23ebd(%rip), %rsi     # 0x368ba
callq 0x70c0
testl %eax, %eax
jne 0x12342
jmp 0x12e12
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x40(%rsp), %rdi
leaq 0x23ca6(%rip), %rsi     # 0x366e1
callq 0x7560
leaq 0x18(%rsp), %rsi
movq %rsi, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12a68
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x12a6e
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x88(%rsp), %esi
leaq 0x8(%rsp), %rdi
callq 0x34811
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x12ab3
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0x40(%rsp), %rdi
cmpq %r13, %rdi
je 0x12aca
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x12ae6
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x72c0
movl $0x1, %ebx
jmp 0x12e12
lock
incl 0x8(%rax)
movq %r15, %rdi
leaq 0x8(%rsp), %rsi
callq 0x2fc96
jmp 0x12d46
leaq 0xc8(%rsp), %r12
movq %r12, %rdi
leaq 0x24dc6(%rip), %rsi     # 0x378de
callq 0x70c0
movl $0x3, %ebx
testl %eax, %eax
je 0x12e12
movq %r12, %rdi
leaq 0x23d86(%rip), %rsi     # 0x368ba
callq 0x70c0
testl %eax, %eax
jne 0x125b7
jmp 0x12e12
movq 0x170(%rsp), %rax
testq %rax, %rax
je 0x12b9c
movq %rax, 0x8(%rsp)
movq 0x178(%rsp), %rax
movq %rax, 0x10(%rsp)
testq %rax, %rax
je 0x12d39
movq 0x35423(%rip), %rcx     # 0x47f98
cmpb $0x0, (%rcx)
je 0x12d35
incl 0x8(%rax)
jmp 0x12d39
lock
incl 0x8(%rax)
movq %r15, %rdi
leaq 0x8(%rsp), %rsi
callq 0x2fc96
jmp 0x12d46
movq 0x190(%rsp), %rbx
testq %rbx, %rbx
je 0x12e80
leaq 0x3419c(%rip), %rax     # 0x46d50
movq %rax, 0x8(%rsp)
movl 0x28(%rbx), %eax
movl %eax, 0x10(%rsp)
leaq 0x34159(%rip), %rax     # 0x46d20
movq %rax, 0x8(%rsp)
leaq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x30(%rbx), %rsi
movq 0x38(%rbx), %rdx
addq %rsi, %rdx
leaq 0x18(%rsp), %rdi
callq 0xc014
movl 0x50(%rbx), %eax
movl %eax, 0x38(%rsp)
movq %r13, 0x40(%rsp)
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rdx
addq %rsi, %rdx
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
callq 0xc014
movq %rbx, %rdi
leaq 0x23425(%rip), %rsi     # 0x36040
callq 0x70c0
movl %eax, %ebx
movq 0x40(%rsp), %rdi
cmpq %r13, %rdi
je 0x12c39
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x72c0
leaq 0x340e0(%rip), %rax     # 0x46d20
movq %rax, 0x8(%rsp)
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x12c61
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x72c0
testl %ebx, %ebx
je 0x12ee6
movl $0x48, %edi
callq 0x72b0
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movaps %xmm0, 0x10(%rax)
movaps %xmm0, 0x20(%rax)
movaps %xmm0, 0x30(%rax)
xorl %edx, %edx
movq %rdx, 0x40(%rax)
movq %rax, %rcx
addq $0x20, %rcx
movl $0xffffffff, 0x8(%rax)  # imm = 0xFFFFFFFF
leaq 0x34778(%rip), %rsi     # 0x47418
movq %rsi, (%rax)
movq %rcx, 0x10(%rax)
movq %rdx, 0x18(%rax)
movb $0x0, 0x20(%rax)
movq %rax, 0x8(%rsp)
leaq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x308f0
movq 0x8(%rsp), %rdi
movq 0xe8(%rsp), %rsi
movq 0x160(%rsp), %rdx
movq 0x168(%rsp), %rcx
movq 0x158(%rsp), %r8
movq 0x150(%rsp), %r9
callq 0x1376e
movl $0x1, %ebx
testb %al, %al
je 0x130fa
movq 0x8(%rsp), %rcx
movq 0x10(%rsp), %rax
movq %rcx, 0x40(%rsp)
movq %rax, 0x48(%rsp)
testq %rax, %rax
je 0x130c5
movq 0x35274(%rip), %rcx     # 0x47f98
cmpb $0x0, (%rcx)
je 0x130c1
incl 0x8(%rax)
jmp 0x130c5
lock
incl 0x8(%rax)
movq %r15, %rdi
leaq 0x8(%rsp), %rsi
callq 0x2fc96
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x12d55
callq 0x81ea
xorl %ebx, %ebx
movq 0xd0(%rsp), %rdx
movl $0x3, %r8d
leaq 0xc8(%rsp), %rdi
xorl %esi, %esi
leaq 0x23b44(%rip), %rcx     # 0x368ba
callq 0x7450
movq 0x178(%rsp), %rdi
testq %rdi, %rdi
je 0x12d8d
callq 0x81ea
movq 0x188(%rsp), %rdi
testq %rdi, %rdi
je 0x12d9f
callq 0x81ea
movq 0x198(%rsp), %rdi
testq %rdi, %rdi
je 0x12db1
callq 0x81ea
movq 0x1a8(%rsp), %rdi
testq %rdi, %rdi
je 0x12dc3
callq 0x81ea
testl %ebx, %ebx
jne 0x12e12
leaq 0x268(%rsp), %rdi
movq 0xe8(%rsp), %rsi
callq 0x32f76
leaq 0x33efd(%rip), %rax     # 0x46ce0
movq %rax, 0x268(%rsp)
movq 0x278(%rsp), %rdi
xorl %ebx, %ebx
leaq 0x288(%rsp), %rax
cmpq %rax, %rdi
je 0x12e12
movq 0x288(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0xc0(%rsp), %rdi
testq %rdi, %rdi
je 0x12e24
callq 0x81ea
movq 0xf8(%rsp), %rdi
testq %rdi, %rdi
je 0x12e36
callq 0x81ea
leaq 0x33ea3(%rip), %rax     # 0x46ce0
movq %rax, 0x80(%rsp)
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x12e6a
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x72c0
testl %ebx, %ebx
je 0x116c2
cmpl $0x2, %ebx
je 0x116c2
jmp 0x13112
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
addq %rsi, %rdx
leaq 0x60(%rsp), %rbx
movq %rbx, %rdi
callq 0xc014
movl $0xf, %r8d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x23a37(%rip), %rcx     # 0x368f5
callq 0x7320
movq %r13, 0x40(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12f53
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x12f5b
movq 0x190(%rsp), %rax
leaq 0x70(%rsp), %rcx
movq %rcx, 0x60(%rsp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
leaq 0x60(%rsp), %rbx
movq %rbx, %rdi
callq 0xc014
movl $0x17, %r8d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x2399a(%rip), %rcx     # 0x368be
callq 0x7320
movq %r13, 0x40(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12fe0
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x12fe8
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x40(%rsp), %rdi
leaq 0x23dc3(%rip), %rsi     # 0x36d42
callq 0x7560
leaq 0x18(%rsp), %rsi
movq %rsi, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12fac
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x12fb2
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x88(%rsp), %esi
leaq 0x8(%rsp), %rdi
callq 0x34811
jmp 0x13068
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x40(%rsp), %rdi
leaq 0x238ca(%rip), %rsi     # 0x368d6
callq 0x7560
leaq 0x18(%rsp), %rsi
movq %rsi, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x13039
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x1303f
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x88(%rsp), %esi
leaq 0x8(%rsp), %rdi
callq 0x34811
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x13084
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0x40(%rsp), %rdi
cmpq %r13, %rdi
je 0x1309b
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x130b7
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x72c0
movl $0x1, %ebx
jmp 0x12d7b
lock
incl 0x8(%rax)
movq %r15, %rdi
leaq 0x40(%rsp), %rsi
callq 0x2fc96
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x130e1
callq 0x81ea
movl $0x2, %ebx
leaq 0xc8(%rsp), %rdi
leaq 0x237c5(%rip), %rsi     # 0x368ba
callq 0x73d0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x12d7b
callq 0x81ea
jmp 0x12d7b
cmpl $0x3, %ebx
jne 0x131a9
movq 0x130(%rsp), %rsi
cmpq 0x110(%rsp), %rsi
je 0x1317a
movl $0x200, %r14d           # imm = 0x200
leaq 0x100(%rsp), %rbx
cmpq 0x138(%rsp), %rsi
jne 0x13154
movq 0x148(%rsp), %rax
movq -0x8(%rax), %rsi
addq %r14, %rsi
addq $-0x10, %rsi
movq %r15, %rdi
callq 0x2215e
movq %rbx, %rdi
callq 0x307f0
movq 0x130(%rsp), %rsi
cmpq 0x110(%rsp), %rsi
jne 0x1313b
movq 0xb0(%rsp), %rdi
callq 0x142e4
testb %al, %al
je 0x131a9
movq 0xb0(%rsp), %rdi
callq 0x14c56
movb $0x1, %bl
movq 0xb0(%rsp), %rdi
callq 0x1561a
jmp 0x131ab
xorl %ebx, %ebx
leaq 0x100(%rsp), %rdi
callq 0x22550
leaq 0x1d0(%rsp), %rdi
callq 0xbe00
movq 0xc8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x131e2
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x72c0
movl %ebx, %eax
addq $0x298, %rsp            # imm = 0x298
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x13332
callq 0x81ea
jmp 0x13332
jmp 0x1321c
jmp 0x1323d
jmp 0x1325e
jmp 0x133a5
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x13240
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x13240
movq %rax, %r14
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x13261
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x13261
movq %rax, %r14
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x133a8
movq 0x70(%rsp), %rsi
jmp 0x132ac
jmp 0x133a5
jmp 0x1332f
movq %rax, %r14
leaq 0x33a91(%rip), %rax     # 0x46d20
movq %rax, 0x8(%rsp)
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x133a8
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x133a8
jmp 0x133a5
jmp 0x133a5
jmp 0x1332f
jmp 0x1332f
jmp 0x135a6
jmp 0x13624
movq %rax, %r14
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x132e3
callq 0x81ea
xorl %ebx, %ebx
jmp 0x1335b
movq %rax, %r14
movb $0x1, %bl
jmp 0x13377
jmp 0x135c2
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x135c5
movq 0x18(%rsp), %rsi
incq %rsi
jmp 0x13387
jmp 0x135c2
jmp 0x134d2
jmp 0x134f3
jmp 0x13514
jmp 0x13624
movq %rax, %r14
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x133a8
callq 0x81ea
jmp 0x133a8
jmp 0x13611
movq %rax, %r14
jmp 0x1368c
movq %rax, %r14
jmp 0x13699
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x13377
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
testb %bl, %bl
je 0x135c5
movl $0x30, %esi
movq %r12, %rdi
callq 0x72c0
jmp 0x135c5
jmp 0x134d2
jmp 0x134f3
jmp 0x13514
jmp 0x13624
movq %rax, %r14
movq 0x178(%rsp), %rdi
testq %rdi, %rdi
je 0x133f4
callq 0x81ea
jmp 0x133f4
jmp 0x134d2
jmp 0x134f3
jmp 0x13514
jmp 0x13624
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x133f4
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x133f4
movq %rax, %r14
movq 0x188(%rsp), %rdi
testq %rdi, %rdi
je 0x1342c
callq 0x81ea
jmp 0x1342c
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x1342c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x1342c
movq %rax, %r14
movq 0x198(%rsp), %rdi
testq %rdi, %rdi
je 0x13464
callq 0x81ea
jmp 0x13464
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x13464
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x13464
movq %rax, %r14
movq 0x1a8(%rsp), %rdi
jmp 0x134bf
jmp 0x135a6
jmp 0x13624
jmp 0x13624
jmp 0x135c2
movq %rax, %r14
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x135c5
callq 0x81ea
jmp 0x135c5
jmp 0x135c2
jmp 0x135a6
jmp 0x13624
jmp 0x134d2
jmp 0x134f3
jmp 0x13514
jmp 0x13624
movq %rax, %r14
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x13627
callq 0x81ea
jmp 0x13627
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x134f6
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x134f6
movq %rax, %r14
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x13517
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x13517
movq %rax, %r14
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x13627
movq 0x70(%rsp), %rsi
jmp 0x135bd
jmp 0x13624
movq %rax, %r14
movq 0x1b0(%rsp), %rdi
leaq 0x1c0(%rsp), %rax
cmpq %rax, %rdi
je 0x13627
movq 0x1c0(%rsp), %rsi
jmp 0x135bd
jmp 0x13624
jmp 0x13624
movq %rax, %r14
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x1357b
callq 0x81ea
xorl %r12d, %r12d
jmp 0x135df
jmp 0x13624
movq %rax, %r14
movb $0x1, %r12b
jmp 0x135fb
jmp 0x13624
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
jne 0x135b8
jmp 0x13627
jmp 0x13611
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x13627
movq 0x18(%rsp), %rsi
incq %rsi
jmp 0x13608
movq %rax, %r14
testq %r13, %r13
je 0x135d2
movq %r13, %rdi
callq 0x81ea
leaq 0xd8(%rsp), %rbp
jmp 0x13627
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x135fb
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x72c0
testb %r12b, %r12b
je 0x13627
movl $0x30, %esi
movq %rbx, %rdi
callq 0x72c0
jmp 0x13627
jmp 0x13624
movq %rax, %r14
jmp 0x1367f
jmp 0x13624
jmp 0x13624
movq %rax, %r14
jmp 0x1364b
movq %rax, %r14
jmp 0x13639
movq %rax, %r14
movq 0xc0(%rsp), %rdi
testq %rdi, %rdi
je 0x13639
callq 0x81ea
movq 0xf8(%rsp), %rdi
testq %rdi, %rdi
je 0x1364b
callq 0x81ea
leaq 0x3368e(%rip), %rax     # 0x46ce0
movq %rax, 0x80(%rsp)
movq 0x90(%rsp), %rdi
leaq 0xa0(%rsp), %rax
cmpq %rax, %rdi
je 0x1367f
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x72c0
leaq 0x100(%rsp), %rdi
callq 0x22550
leaq 0x1d0(%rsp), %rdi
callq 0xbe00
movq 0xc8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x136b6
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x72c0
movq %r14, %rdi
callq 0x74f0