// File: /workspace/github_cpp_makefile_star2_O3/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 $0x278, %rsp            # imm = 0x278
movq %r9, 0x150(%rsp)
movq %r8, 0x158(%rsp)
movq %rcx, 0x168(%rsp)
movq %rdx, 0x160(%rsp)
movq %rsi, 0xe8(%rsp)
movq %rdi, 0xd0(%rsp)
leaq 0xb8(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq $0x0, -0x8(%rbx)
movb $0x0, (%rbx)
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 0xb9be
leaq 0xf0(%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 0x2f76a
leaq 0x10(%rsp), %rbx
leaq 0x48(%rsp), %r13
movq 0xd0(%rsp), %rax
addq $0x10, %rax
movq %rax, 0xc8(%rsp)
leaq 0x98(%rsp), %r12
movq %rsp, %r15
leaq 0x78(%rsp), %rdi
movq 0xe8(%rsp), %rsi
callq 0x32bec
movq 0xd0(%rsp), %rax
cmpl $-0x1, 0x8(%rax)
jne 0x11417
movl 0x80(%rsp), %eax
movq 0xd0(%rsp), %rcx
movl %eax, 0x8(%rcx)
movl $0x10, %edi
callq 0x72b0
movl $0xffffffff, 0x8(%rax)  # imm = 0xFFFFFFFF
leaq 0x34f81(%rip), %rcx     # 0x463b0
movq %rcx, (%rax)
movw $0x0, 0xc(%rax)
movq %rax, 0x140(%rsp)
leaq 0x148(%rsp), %rdi
movq %rax, %rsi
callq 0x2f51a
movl $0x38, %edi
callq 0x72b0
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movaps %xmm0, 0x10(%rax)
movaps %xmm0, 0x20(%rax)
movq $0x0, 0x30(%rax)
movq %rax, %rcx
addq $0x20, %rcx
movl $0xffffffff, 0x8(%rax)  # imm = 0xFFFFFFFF
leaq 0x34f5b(%rip), %rdx     # 0x463e0
movq %rdx, (%rax)
movq %rcx, 0x10(%rax)
movb $0x0, 0x20(%rax)
movq %rax, 0xd8(%rsp)
leaq 0xe0(%rsp), %rdi
movq %rax, %rsi
callq 0x2f8e2
movq %rbx, (%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0xbd58
movq %r15, %rdi
leaq 0x23be8(%rip), %rsi     # 0x350b9
callq 0x70c0
movl %eax, %ebp
movq (%rsp), %rdi
cmpq %rbx, %rdi
je 0x114ee
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
testl %ebp, %ebp
je 0x11586
movq %rbx, (%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0xbd58
movq %r15, %rdi
leaq 0x253bf(%rip), %rsi     # 0x368de
callq 0x70c0
testl %eax, %eax
je 0x11789
movq %r13, 0x38(%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
leaq 0x38(%rsp), %r14
movq %r14, %rdi
callq 0xbd58
movq %r14, %rdi
leaq 0x24347(%rip), %rsi     # 0x358a2
callq 0x70c0
testl %eax, %eax
sete %bpl
movq 0x38(%rsp), %rdi
cmpq %r13, %rdi
je 0x1178c
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x1178c
cmpq $0x0, 0xb0(%rsp)
je 0x11636
leaq 0xa8(%rsp), %rdi
leaq 0x23b15(%rip), %rsi     # 0x350b9
callq 0x70c0
testl %eax, %eax
je 0x11636
leaq 0xa8(%rsp), %rdi
leaq 0x242e4(%rip), %rsi     # 0x358a4
callq 0x70c0
testl %eax, %eax
je 0x11636
leaq 0x68(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %r14
movq %r14, %rdi
callq 0xbd58
movl $0x12, %r8d
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x242a0(%rip), %rcx     # 0x358a7
callq 0x7320
movq %r13, 0x38(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x11df2
movq %rdx, 0x38(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x48(%rsp)
jmp 0x11dfa
leaq 0x10(%rsp), %r13
movq %r13, (%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0xbd58
leaq 0xa8(%rsp), %rdi
movq %r15, %rsi
callq 0x7370
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x11680
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
movq %r13, (%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0xbd58
leaq 0x1d0(%rsp), %rdi
movq %r15, %rsi
callq 0x2f9b6
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x116c5
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
movl $0x30, %edi
callq 0x72b0
movq %rax, %r14
movq %r13, (%rsp)
movq %r15, %rdi
leaq 0x239d9(%rip), %rsi     # 0x350b9
leaq 0x239d3(%rip), %rdx     # 0x350ba
callq 0xbdee
movl 0x80(%rsp), %r12d
movl $0xffffffff, 0x8(%r14)  # imm = 0xFFFFFFFF
leaq 0x3460d(%rip), %rax     # 0x45d10
movq %rax, (%r14)
leaq 0x10(%r14), %rdi
movq %r14, %rax
addq $0x20, %rax
movq %rax, 0x10(%r14)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
movb $0x1, %bpl
callq 0xbd58
movl %r12d, 0x8(%r14)
movq %r14, 0x38(%rsp)
xorl %ebp, %ebp
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0x2fc8a
leaq 0xf0(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x2fd5e
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
leaq 0x98(%rsp), %r12
je 0x1176a
callq 0x8036
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x126a4
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x126a4
movb $0x1, %bpl
movq (%rsp), %rdi
cmpq %rbx, %rdi
je 0x117a2
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
testb %bpl, %bpl
je 0x118b4
movq 0x1e0(%rsp), %r14
movq 0x200(%rsp), %r13
cmpq %r14, %r13
je 0x11b14
leaq 0x1c0(%rsp), %rax
movq %rax, 0x1b0(%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1b0(%rsp), %rbp
movq %rbp, %rdi
callq 0xbd58
leaq 0x228(%rsp), %rdi
movq %rbp, %rsi
callq 0x33777
movq 0x200(%rsp), %rax
cmpq 0x208(%rsp), %rax
jne 0x1182d
movq 0x218(%rsp), %rax
movq -0x8(%rax), %rax
movl $0x200, %ecx            # imm = 0x200
addq %rcx, %rax
movq 0x230(%rsp), %rdx
movb $0x1, %bpl
cmpq -0x18(%rax), %rdx
jne 0x11ed6
testq %rdx, %rdx
je 0x11860
movq -0x20(%rax), %rsi
movq 0x228(%rsp), %rdi
callq 0x72e0
testl %eax, %eax
jne 0x11ed6
leaq 0xa8(%rsp), %rbp
movq %rbp, %rdi
leaq 0x2506c(%rip), %rsi     # 0x368de
callq 0x70c0
testl %eax, %eax
je 0x11ecb
movq %rbp, %rdi
leaq 0x24031(%rip), %rsi     # 0x358ba
callq 0x70c0
testl %eax, %eax
setne %bpl
cmpq %r14, %r13
jne 0x11ed6
testl %eax, %eax
leaq 0x48(%rsp), %r14
leaq 0x58(%rsp), %r13
jne 0x11f2f
jmp 0x11f9c
movq 0x140(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0xcfc4
testb %al, %al
je 0x1198a
cmpq $0x0, 0xb0(%rsp)
leaq 0xa8(%rsp), %r14
je 0x11abb
movq %r14, %rdi
leaq 0x237ca(%rip), %rsi     # 0x350b9
callq 0x70c0
testl %eax, %eax
je 0x11abb
movq %r14, %rdi
leaq 0x23f9e(%rip), %rsi     # 0x358a4
callq 0x70c0
testl %eax, %eax
je 0x11abb
leaq 0x68(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %r14
movq %r14, %rdi
callq 0xbd58
movl $0x12, %r8d
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x23f56(%rip), %rcx     # 0x358a7
callq 0x7320
leaq 0x48(%rsp), %r14
movq %r14, 0x38(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq 0x10(%rsp), %r13
je 0x12384
movq %rdx, 0x38(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x48(%rsp)
jmp 0x1238b
movq 0xd8(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0xd466
testb %al, %al
je 0x11b5b
movq 0xd8(%rsp), %rdi
callq 0xda6c
testb %al, %al
je 0x119ee
leaq 0xa8(%rsp), %r14
movq %r14, %rdi
leaq 0x24f17(%rip), %rsi     # 0x368de
callq 0x70c0
movb $0x1, %bpl
testl %eax, %eax
je 0x12162
movq %r14, %rdi
leaq 0x23ed9(%rip), %rsi     # 0x358ba
callq 0x70c0
testl %eax, %eax
je 0x12162
movq 0xd8(%rsp), %rdi
callq 0xdf78
testb %al, %al
leaq 0x48(%rsp), %r14
je 0x11a49
cmpq $0x0, 0xb0(%rsp)
je 0x12160
leaq 0xa8(%rsp), %r13
movq %r13, %rdi
leaq 0x23694(%rip), %rsi     # 0x350b9
callq 0x70c0
testl %eax, %eax
je 0x12160
movq %r13, %rdi
leaq 0x23e68(%rip), %rsi     # 0x358a4
callq 0x70c0
testl %eax, %eax
je 0x12160
leaq 0x68(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %r13
movq %r13, %rdi
callq 0xbd58
movl $0x12, %r8d
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x23e20(%rip), %rcx     # 0x358a7
callq 0x7320
movq %r14, 0x38(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq 0x10(%rsp), %r13
je 0x12409
movq %rdx, 0x38(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x48(%rsp)
jmp 0x12410
movq 0xb0(%rsp), %rdx
movl $0x3, %r8d
movq %r14, %rdi
xorl %esi, %esi
leaq 0x23de5(%rip), %rcx     # 0x358ba
callq 0x7450
movq 0x140(%rsp), %rcx
movq 0x148(%rsp), %rax
movq %rcx, (%rsp)
movq %rax, 0x8(%rsp)
testq %rax, %rax
je 0x11ea8
movq 0x35495(%rip), %rcx     # 0x46f98
cmpb $0x0, (%rcx)
je 0x11ea4
incl 0x8(%rax)
jmp 0x11ea8
leaq 0xa8(%rsp), %rdi
leaq 0x24dbb(%rip), %rsi     # 0x368de
callq 0x70c0
testl %eax, %eax
leaq 0x48(%rsp), %r14
leaq 0x58(%rsp), %r13
je 0x11f9c
leaq 0xa8(%rsp), %rdi
leaq 0x23d71(%rip), %rsi     # 0x358ba
callq 0x70c0
testl %eax, %eax
jne 0x11f2f
jmp 0x11f9c
movq %rbx, (%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0xbd58
movq %r15, %rdi
callq 0x338b8
movl %eax, %ebp
movq (%rsp), %rdi
cmpq %rbx, %rdi
leaq 0x48(%rsp), %r13
je 0x11b9f
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
testb %bpl, %bpl
je 0x11d1f
movq %rbx, (%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0xbd58
leaq 0x1a0(%rsp), %rdi
movq %r15, %rsi
movq 0x168(%rsp), %rdx
callq 0x33f2c
movq (%rsp), %rdi
cmpq %rbx, %rdi
je 0x11bf5
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
movq %rbx, (%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0xbd58
leaq 0x190(%rsp), %rdi
movq %r15, %rsi
movq 0x160(%rsp), %rdx
callq 0x33e1d
movq (%rsp), %rdi
cmpq %rbx, %rdi
je 0x11c42
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
movq %rbx, (%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0xbd58
leaq 0x180(%rsp), %rdi
movq %r15, %rsi
movq 0x158(%rsp), %rdx
callq 0x33bff
movq (%rsp), %rdi
cmpq %rbx, %rdi
je 0x11c8f
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
movq %rbx, (%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0xbd58
leaq 0x170(%rsp), %rdi
movq %r15, %rsi
movq 0x150(%rsp), %rdx
callq 0x33d0e
movq (%rsp), %rdi
cmpq %rbx, %rdi
je 0x11cdc
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0x1a0(%rsp), %rax
testq %rax, %rax
je 0x12341
movq %rax, (%rsp)
movq 0x1a8(%rsp), %rax
movq %rax, 0x8(%rsp)
testq %rax, %rax
je 0x12885
movq 0x3528a(%rip), %rcx     # 0x46f98
cmpb $0x0, (%rcx)
je 0x12881
incl 0x8(%rax)
jmp 0x12885
movq %rbx, (%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0xbd58
movq (%rsp), %rdi
movq 0x8(%rsp), %r14
cmpq %rbx, %rdi
je 0x11d59
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0x1e0(%rsp), %rax
movq 0x200(%rsp), %rcx
testq %r14, %r14
je 0x122f8
cmpq %rax, %rcx
je 0x1275a
leaq 0x68(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %r14
movq %r14, %rdi
callq 0xbd58
movl $0x12, %r8d
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x23aee(%rip), %rcx     # 0x358a7
callq 0x7320
leaq 0x48(%rsp), %r14
leaq 0x38(%rsp), %rdi
movq %r14, 0x38(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1279b
movq %rdx, 0x38(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x48(%rsp)
jmp 0x127a2
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x40(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x38(%rsp), %rdi
leaq 0x238c3(%rip), %rsi     # 0x356e1
callq 0x7560
leaq 0x10(%rsp), %rsi
movq %rsi, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x11e49
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x11e4f
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x80(%rsp), %esi
movq %r15, %rdi
callq 0x34178
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x11e91
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0x38(%rsp), %rdi
cmpq %r13, %rdi
jne 0x124a9
jmp 0x124b6
lock
incl 0x8(%rax)
movq 0xc8(%rsp), %rdi
movq %r15, %rsi
callq 0x2f5b4
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
jne 0x1269f
jmp 0x126a4
cmpq %r14, %r13
je 0x11f9c
xorl %ebp, %ebp
movq 0x228(%rsp), %rdi
leaq 0x238(%rsp), %rax
cmpq %rax, %rdi
je 0x11efb
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0x1b0(%rsp), %rdi
leaq 0x1c0(%rsp), %rax
cmpq %rax, %rdi
leaq 0x48(%rsp), %r14
leaq 0x58(%rsp), %r13
je 0x11f2a
movq 0x1c0(%rsp), %rsi
incq %rsi
callq 0x72c0
testb %bpl, %bpl
je 0x11f9c
leaq 0x68(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0xbd58
movl $0x12, %r8d
movq %r13, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x2393f(%rip), %rcx     # 0x358a7
callq 0x7320
leaq 0x10(%rsp), %r13
movq %r14, 0x38(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x120db
movq %rdx, 0x38(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x48(%rsp)
jmp 0x120e2
movq 0x200(%rsp), %rax
cmpq 0x1e0(%rsp), %rax
je 0x120d0
movq 0x120(%rsp), %r14
cmpq 0x100(%rsp), %r14
je 0x12085
movq 0x128(%rsp), %r12
movq %r14, %r13
cmpq %r12, %r14
jne 0x11fec
movq 0x138(%rsp), %rax
movq -0x8(%rax), %r13
movl $0x200, %eax            # imm = 0x200
addq %rax, %r13
movq -0x10(%r13), %rdi
testq %rdi, %rdi
je 0x12085
leaq 0x33d18(%rip), %rsi     # 0x45d18
leaq 0x343e1(%rip), %rdx     # 0x463e8
xorl %ecx, %ecx
callq 0x7330
testq %rax, %rax
je 0x12085
movq -0x8(%r13), %rdi
testq %rdi, %rdi
je 0x12046
movq 0x34f75(%rip), %rax     # 0x46f98
cmpb $0x0, (%rax)
je 0x1202d
incl 0x8(%rdi)
jmp 0x12031
lock
incl 0x8(%rdi)
callq 0x8036
movq 0x120(%rsp), %r14
movq 0x128(%rsp), %r12
cmpq %r12, %r14
jne 0x1205f
movq 0x138(%rsp), %rax
movq -0x8(%rax), %r14
movl $0x200, %eax            # imm = 0x200
addq %rax, %r14
addq $-0x10, %r14
movq 0xc8(%rsp), %rdi
movq %r14, %rsi
callq 0x21a2c
leaq 0xf0(%rsp), %rdi
callq 0x300fc
jmp 0x11fb2
leaq 0xf0(%rsp), %rdi
callq 0x300fc
leaq 0x1d0(%rsp), %rdi
callq 0x30170
movq 0xb0(%rsp), %rdx
movl $0x1, %r8d
leaq 0xa8(%rsp), %rdi
xorl %esi, %esi
leaq 0x24820(%rip), %rcx     # 0x368de
leaq 0x98(%rsp), %r12
callq 0x7450
jmp 0x126a4
movl $0x3, %r14d
jmp 0x126f0
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x40(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x38(%rsp), %rdi
leaq 0x235db(%rip), %rsi     # 0x356e1
callq 0x7560
movq %r13, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1212c
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x12134
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x80(%rsp), %esi
movq %r15, %rdi
callq 0x34178
jmp 0x12489
xorl %ebp, %ebp
movq 0xd8(%rsp), %rax
movb %bpl, 0x30(%rax)
movq 0x120(%rsp), %r12
cmpq 0x100(%rsp), %r12
je 0x122bb
xorl %r14d, %r14d
cmpq 0x128(%rsp), %r12
jne 0x121a5
movq 0x138(%rsp), %rax
movq -0x8(%rax), %r12
movl $0x200, %eax            # imm = 0x200
addq %rax, %r12
movq -0x10(%r12), %rdi
testq %rdi, %rdi
je 0x121f0
leaq 0x33b62(%rip), %rsi     # 0x45d18
leaq 0x3422b(%rip), %rdx     # 0x463e8
xorl %ecx, %ecx
callq 0x7330
movl $0x0, %ebp
movl $0x0, %r13d
testq %rax, %rax
je 0x12204
movq -0x8(%r12), %r13
testq %r13, %r13
je 0x121f4
movq 0x34db3(%rip), %rcx     # 0x46f98
cmpb $0x0, (%rcx)
je 0x121fc
incl 0x8(%r13)
jmp 0x12201
xorl %ebp, %ebp
jmp 0x121f7
movq %rax, %rbp
xorl %r13d, %r13d
jmp 0x12204
lock
incl 0x8(%r13)
movq %rax, %rbp
testq %r14, %r14
je 0x12211
movq %r14, %rdi
callq 0x8036
testq %rbp, %rbp
je 0x122be
movq 0xd8(%rsp), %rdi
callq 0xe21c
movl %eax, %r14d
movq %rbp, %rdi
callq 0xe21c
cmpl %eax, %r14d
jl 0x122be
movq 0xd8(%rsp), %rdi
callq 0xe21c
movl %eax, %r14d
movq %rbp, %rdi
callq 0xe21c
cmpl %eax, %r14d
je 0x12826
movq 0x120(%rsp), %rsi
cmpq 0x128(%rsp), %rsi
jne 0x12282
movq 0x138(%rsp), %rax
movq -0x8(%rax), %rsi
movl $0x200, %eax            # imm = 0x200
addq %rax, %rsi
addq $-0x10, %rsi
movq 0xc8(%rsp), %rdi
callq 0x21a2c
leaq 0xf0(%rsp), %rdi
callq 0x300fc
movq 0x120(%rsp), %r12
movq %r13, %r14
cmpq 0x100(%rsp), %r12
jne 0x12187
jmp 0x122be
xorl %r13d, %r13d
movq 0xd8(%rsp), %rcx
movq 0xe0(%rsp), %rax
movq %rcx, (%rsp)
movq %rax, 0x8(%rsp)
testq %rax, %rax
je 0x124e1
movq 0x34cb1(%rip), %rcx     # 0x46f98
cmpb $0x0, (%rcx)
je 0x124dd
incl 0x8(%rax)
jmp 0x124e1
cmpq %rax, %rcx
je 0x1289a
movq %rbx, (%rsp)
movq %r15, %rdi
leaq 0x235f6(%rip), %rsi     # 0x35905
leaq 0x2360c(%rip), %rdx     # 0x35922
callq 0xbdee
movl 0x80(%rsp), %esi
movq %r15, %rdi
callq 0x34178
movq (%rsp), %rdi
cmpq %rbx, %rdi
je 0x124d2
movq 0x10(%rsp), %rsi
jmp 0x124ca
movq 0x180(%rsp), %rax
testq %rax, %rax
je 0x128db
movq %rax, (%rsp)
movq 0x188(%rsp), %rax
movq %rax, 0x8(%rsp)
testq %rax, %rax
je 0x1291e
movq 0x34c25(%rip), %rcx     # 0x46f98
cmpb $0x0, (%rcx)
je 0x1291a
incl 0x8(%rax)
jmp 0x1291e
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x40(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x38(%rsp), %rdi
leaq 0x23332(%rip), %rsi     # 0x356e1
callq 0x7560
movq %r13, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x123d5
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x123dd
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x80(%rsp), %esi
movq %r15, %rdi
callq 0x34178
jmp 0x12489
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x40(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x38(%rsp), %rdi
leaq 0x232ad(%rip), %rsi     # 0x356e1
callq 0x7560
movq %r13, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1245a
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x12462
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x80(%rsp), %esi
movq %r15, %rdi
callq 0x34178
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x1249f
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0x38(%rsp), %rdi
cmpq %r14, %rdi
je 0x124b6
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x124d2
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x72c0
movl $0x1, %r14d
jmp 0x126f0
lock
incl 0x8(%rax)
leaq 0xf0(%rsp), %rdi
movq %r15, %rsi
callq 0x2fd5e
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x12500
callq 0x8036
leaq 0x10(%rsp), %r14
movq %r14, (%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
leaq 0x98(%rsp), %r12
callq 0xbd58
movq %r15, %rdi
leaq 0x230be(%rip), %rsi     # 0x355f4
callq 0x70c0
movl %eax, %ebp
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0x12553
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
testl %ebp, %ebp
jne 0x12673
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0xbd58
leaq 0x1d0(%rsp), %rdi
movq %r15, %rsi
callq 0x2f9b6
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x125aa
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
movl $0x30, %edi
callq 0x72b0
movq %rax, %r14
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r15, %rdi
leaq 0x22aef(%rip), %rsi     # 0x350b9
leaq 0x22ae9(%rip), %rdx     # 0x350ba
callq 0xbdee
movq 0xd8(%rsp), %rax
movl 0x8(%rax), %r12d
movl $0xffffffff, 0x8(%r14)  # imm = 0xFFFFFFFF
leaq 0x3371f(%rip), %rax     # 0x45d10
movq %rax, (%r14)
leaq 0x10(%r14), %rdi
movq %r14, %rax
addq $0x20, %rax
movq %rax, 0x10(%r14)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
movb $0x1, %bpl
callq 0xbd58
movl %r12d, 0x8(%r14)
movq %r14, 0x38(%rsp)
xorl %ebp, %ebp
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
callq 0x2fc8a
leaq 0xf0(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x2fd5e
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
leaq 0x98(%rsp), %r12
je 0x12658
callq 0x8036
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x12673
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0xb0(%rsp), %rdx
movl $0x2, %r8d
leaq 0xa8(%rsp), %rdi
xorl %esi, %esi
leaq 0x23212(%rip), %rcx     # 0x358a4
callq 0x7450
testq %r13, %r13
je 0x126a4
movq %r13, %rdi
callq 0x8036
leaq 0x248(%rsp), %rdi
movq 0xe8(%rsp), %rsi
callq 0x32902
leaq 0x33650(%rip), %rax     # 0x45d10
movq %rax, 0x248(%rsp)
movq 0x258(%rsp), %rdi
xorl %r14d, %r14d
leaq 0x268(%rsp), %rax
cmpq %rax, %rdi
je 0x126f0
movq 0x268(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0x12702
callq 0x8036
movq 0x148(%rsp), %rdi
testq %rdi, %rdi
leaq 0x48(%rsp), %r13
je 0x12719
callq 0x8036
leaq 0x335f0(%rip), %rax     # 0x45d10
movq %rax, 0x78(%rsp)
movq 0x88(%rsp), %rdi
cmpq %r12, %rdi
je 0x12742
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x72c0
testl %r14d, %r14d
je 0x113e5
cmpl $0x2, %r14d
je 0x113e5
jmp 0x12dec
leaq 0xa8(%rsp), %r13
movq %r13, %rdi
leaq 0x24172(%rip), %rsi     # 0x368de
callq 0x70c0
movl $0x3, %r14d
testl %eax, %eax
je 0x126f0
movq %r13, %rdi
leaq 0x23131(%rip), %rsi     # 0x358ba
callq 0x70c0
testl %eax, %eax
jne 0x11d7b
jmp 0x126f0
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x40(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x22f20(%rip), %rsi     # 0x356e1
callq 0x7560
movq %rbx, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x127e7
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x127ed
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x80(%rsp), %esi
movq %r15, %rdi
callq 0x34178
movq (%rsp), %rdi
cmpq %rbx, %rdi
jne 0x12492
jmp 0x1249f
movq 0xd8(%rsp), %rax
cmpb $0x1, 0x30(%rax)
jne 0x122be
movq 0x120(%rsp), %rsi
cmpq 0x128(%rsp), %rsi
jne 0x1285e
movq 0x138(%rsp), %rax
movq -0x8(%rax), %rsi
movl $0x200, %eax            # imm = 0x200
addq %rax, %rsi
addq $-0x10, %rsi
movq 0xc8(%rsp), %rdi
callq 0x21a2c
leaq 0xf0(%rsp), %rdi
callq 0x300fc
jmp 0x122be
lock
incl 0x8(%rax)
movq 0xc8(%rsp), %rdi
movq %r15, %rsi
callq 0x2f5b4
jmp 0x12ad5
leaq 0xa8(%rsp), %r13
movq %r13, %rdi
leaq 0x24032(%rip), %rsi     # 0x368de
callq 0x70c0
movl $0x3, %r14d
testl %eax, %eax
je 0x126f0
movq %r13, %rdi
leaq 0x22ff1(%rip), %rsi     # 0x358ba
callq 0x70c0
testl %eax, %eax
jne 0x12301
jmp 0x126f0
movq 0x170(%rsp), %rax
testq %rax, %rax
je 0x12933
movq %rax, (%rsp)
movq 0x178(%rsp), %rax
movq %rax, 0x8(%rsp)
testq %rax, %rax
je 0x12ac5
movq 0x3468f(%rip), %rcx     # 0x46f98
cmpb $0x0, (%rcx)
je 0x12ac1
incl 0x8(%rax)
jmp 0x12ac5
lock
incl 0x8(%rax)
movq 0xc8(%rsp), %rdi
movq %r15, %rsi
callq 0x2f5b4
jmp 0x12ad5
movq 0x190(%rsp), %r14
testq %r14, %r14
je 0x12b61
movl 0x28(%r14), %eax
movl %eax, 0x8(%rsp)
leaq 0x333fd(%rip), %rax     # 0x45d50
movq %rax, (%rsp)
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x30(%r14), %rsi
movq 0x38(%r14), %rdx
addq %rsi, %rdx
leaq 0x10(%rsp), %rdi
callq 0xbd58
movl 0x50(%r14), %eax
movl %eax, 0x30(%rsp)
movq %r13, 0x38(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x38(%rsp), %r14
movq %r14, %rdi
callq 0xbd58
movq %r14, %rdi
leaq 0x22699(%rip), %rsi     # 0x35040
callq 0x70c0
movl %eax, %ebp
movq 0x38(%rsp), %rdi
cmpq %r13, %rdi
je 0x129c5
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x72c0
leaq 0x33384(%rip), %rax     # 0x45d50
movq %rax, (%rsp)
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x129ec
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x72c0
testl %ebp, %ebp
je 0x12bc7
movl $0x48, %edi
callq 0x72b0
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movaps %xmm0, 0x10(%rax)
movaps %xmm0, 0x20(%rax)
movq %rax, %rcx
addq $0x20, %rcx
movl $0xffffffff, 0x8(%rax)  # imm = 0xFFFFFFFF
leaq 0x339ef(%rip), %rdx     # 0x46410
movq %rdx, (%rax)
movq %rcx, 0x10(%rax)
movb $0x0, 0x20(%rax)
movups %xmm0, 0x30(%rax)
movq $0x0, 0x40(%rax)
movq %rax, (%rsp)
leaq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0x301fc
movq (%rsp), %rdi
movq 0xe8(%rsp), %rsi
movq 0x160(%rsp), %rdx
movq 0x168(%rsp), %rcx
movq 0x158(%rsp), %r8
movq 0x150(%rsp), %r9
callq 0x13476
leaq 0x38(%rsp), %rsi
movl $0x1, %r14d
testb %al, %al
je 0x12dd4
movq (%rsp), %rcx
movq 0x8(%rsp), %rax
movq %rcx, 0x38(%rsp)
movq %rax, 0x40(%rsp)
testq %rax, %rax
je 0x12d9e
movq 0x344e8(%rip), %rcx     # 0x46f98
cmpb $0x0, (%rcx)
je 0x12d9a
incl 0x8(%rax)
jmp 0x12d9e
lock
incl 0x8(%rax)
movq 0xc8(%rsp), %rdi
movq %r15, %rsi
callq 0x2f5b4
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x12ae4
callq 0x8036
xorl %r14d, %r14d
movq 0xb0(%rsp), %rdx
movl $0x3, %r8d
leaq 0xa8(%rsp), %rdi
xorl %esi, %esi
leaq 0x22db4(%rip), %rcx     # 0x358ba
callq 0x7450
movq 0x178(%rsp), %rdi
testq %rdi, %rdi
je 0x12b1d
callq 0x8036
movq 0x188(%rsp), %rdi
testq %rdi, %rdi
je 0x12b2f
callq 0x8036
movq 0x198(%rsp), %rdi
testq %rdi, %rdi
je 0x12b41
callq 0x8036
movq 0x1a8(%rsp), %rdi
testq %rdi, %rdi
je 0x12b53
callq 0x8036
testl %r14d, %r14d
jne 0x126f0
jmp 0x126a4
leaq 0x68(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %r14
movq %r14, %rdi
callq 0xbd58
movl $0xf, %r8d
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x22d56(%rip), %rcx     # 0x358f5
callq 0x7320
movq %r13, 0x38(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12c34
movq %rdx, 0x38(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x48(%rsp)
jmp 0x12c3c
movq 0x190(%rsp), %rax
leaq 0x68(%rsp), %rcx
movq %rcx, 0x58(%rsp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %r14
movq %r14, %rdi
callq 0xbd58
movl $0x17, %r8d
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x22cb9(%rip), %rcx     # 0x358be
callq 0x7320
movq %r13, 0x38(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12cbd
movq %rdx, 0x38(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x48(%rsp)
jmp 0x12cc5
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x40(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x38(%rsp), %rdi
leaq 0x230e2(%rip), %rsi     # 0x35d42
callq 0x7560
leaq 0x10(%rsp), %rsi
movq %rsi, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12c8b
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x12c91
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x80(%rsp), %esi
movq %r15, %rdi
callq 0x34178
jmp 0x12d41
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x40(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x38(%rsp), %rdi
leaq 0x22bed(%rip), %rsi     # 0x358d6
callq 0x7560
leaq 0x10(%rsp), %rsi
movq %rsi, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12d14
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x12d1a
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x80(%rsp), %esi
movq %r15, %rdi
callq 0x34178
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x12d5c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0x38(%rsp), %rdi
cmpq %r13, %rdi
je 0x12d73
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x12d8f
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x72c0
movl $0x1, %r14d
jmp 0x12b0b
lock
incl 0x8(%rax)
movq 0xc8(%rsp), %rdi
callq 0x2f5b4
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x12dba
callq 0x8036
movl $0x2, %r14d
leaq 0xa8(%rsp), %rdi
leaq 0x22aeb(%rip), %rsi     # 0x358ba
callq 0x73d0
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x12b0b
callq 0x8036
jmp 0x12b0b
cmpl $0x3, %r14d
jne 0x12e91
movq 0x120(%rsp), %rsi
cmpq 0x100(%rsp), %rsi
je 0x12e59
movl $0x200, %ebx            # imm = 0x200
leaq 0xf0(%rsp), %r14
cmpq 0x128(%rsp), %rsi
jne 0x12e2e
movq 0x138(%rsp), %rax
movq -0x8(%rax), %rsi
addq %rbx, %rsi
addq $-0x10, %rsi
movq 0xc8(%rsp), %rdi
callq 0x21a2c
movq %r14, %rdi
callq 0x300fc
movq 0x120(%rsp), %rsi
cmpq 0x100(%rsp), %rsi
jne 0x12e15
movq 0xd0(%rsp), %rdi
leaq 0xb8(%rsp), %rbx
callq 0x14026
testb %al, %al
je 0x12e9d
movq 0xd0(%rsp), %rdi
callq 0x148ac
movb $0x1, %bpl
movq 0xd0(%rsp), %rdi
callq 0x150c4
jmp 0x12e9f
xorl %ebp, %ebp
leaq 0xb8(%rsp), %rbx
jmp 0x12e9f
xorl %ebp, %ebp
leaq 0xf0(%rsp), %rdi
callq 0x21e32
leaq 0x1d0(%rsp), %rdi
callq 0xbb36
movq 0xa8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x12ed6
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x72c0
movl %ebp, %eax
addq $0x278, %rsp            # imm = 0x278
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r15
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x13037
callq 0x8036
jmp 0x13037
jmp 0x12f10
jmp 0x12f30
jmp 0x12f51
jmp 0x130ad
movq %rax, %r15
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x12f33
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x12f33
movq %rax, %r15
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x12f54
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x12f54
movq %rax, %r15
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x130b0
movq 0x68(%rsp), %rsi
jmp 0x12f9e
jmp 0x130ad
jmp 0x13034
movq %rax, %r15
leaq 0x32dce(%rip), %rax     # 0x45d50
movq %rax, (%rsp)
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x130b0
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x130b0
jmp 0x130ad
jmp 0x130ad
jmp 0x13034
jmp 0x13034
jmp 0x132a7
jmp 0x132f1
movq %rax, %r15
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x12fd5
callq 0x8036
xorl %ebp, %ebp
jmp 0x13063
movq %rax, %r15
jmp 0x13087
jmp 0x13260
movq %rax, %r15
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x13263
movq 0x10(%rsp), %rsi
incq %rsi
jmp 0x1308f
jmp 0x13260
movq %rax, %r15
movq (%rsp), %rdi
cmpq %rbx, %rdi
jne 0x131e0
jmp 0x131f2
jmp 0x131ef
jmp 0x13210
jmp 0x132f1
movq %rax, %r15
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x130b0
callq 0x8036
jmp 0x130b0
movq %rax, %r15
jmp 0x13387
movq %rax, %r15
jmp 0x13394
movq %rax, %r15
jmp 0x133a1
movq %rax, %r15
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x1307e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
testb %bpl, %bpl
je 0x13263
movl $0x30, %esi
movq %r14, %rdi
callq 0x72c0
jmp 0x13263
jmp 0x131d4
jmp 0x131ef
jmp 0x13210
jmp 0x132f1
movq %rax, %r15
movq 0x178(%rsp), %rdi
testq %rdi, %rdi
je 0x1310a
callq 0x8036
jmp 0x1310a
jmp 0x131d4
jmp 0x131ef
jmp 0x13210
jmp 0x132f1
movq %rax, %r15
jmp 0x1314e
jmp 0x132a7
jmp 0x132f1
jmp 0x13315
movq %rax, %r15
movq (%rsp), %rdi
cmpq %rbx, %rdi
je 0x1310a
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x1310a
movq %rax, %r15
movq 0x188(%rsp), %rdi
testq %rdi, %rdi
je 0x1313c
callq 0x8036
jmp 0x1313c
movq %rax, %r15
movq (%rsp), %rdi
cmpq %rbx, %rdi
je 0x1313c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x1313c
movq %rax, %r15
movq 0x198(%rsp), %rdi
testq %rdi, %rdi
je 0x1314e
callq 0x8036
movq 0x1a8(%rsp), %rdi
jmp 0x131c6
movq %rax, %r15
movq (%rsp), %rdi
cmpq %rbx, %rdi
je 0x1314e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x1314e
jmp 0x13260
movq %rax, %r15
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x13263
callq 0x8036
jmp 0x13263
jmp 0x13260
jmp 0x132a7
jmp 0x132f1
movq %rax, %r15
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
jne 0x131e0
jmp 0x131f2
jmp 0x131ef
jmp 0x13210
jmp 0x132f1
movq %rax, %r15
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
jne 0x1326f
jmp 0x132f4
movq %rax, %r15
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x131f2
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x131f2
movq %rax, %r15
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x13213
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x13213
movq %rax, %r15
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x132f4
movq 0x68(%rsp), %rsi
jmp 0x132b8
jmp 0x132f1
movq %rax, %r15
movq 0x1b0(%rsp), %rdi
leaq 0x1c0(%rsp), %rax
cmpq %rax, %rdi
je 0x132f4
movq 0x1c0(%rsp), %rsi
jmp 0x132b8
jmp 0x132f1
movq %rax, %r15
testq %r13, %r13
je 0x132f4
movq %r13, %rdi
callq 0x8036
jmp 0x132f4
movq %rax, %r15
movq (%rsp), %rdi
cmpq %r13, %rdi
jne 0x132b3
jmp 0x132f4
jmp 0x132f1
movq %rax, %r15
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x13298
callq 0x8036
xorl %ebp, %ebp
jmp 0x132c0
jmp 0x13315
movq %rax, %r15
jmp 0x132e0
jmp 0x132f1
jmp 0x13306
movq %rax, %r15
movq (%rsp), %rdi
cmpq %rbx, %rdi
je 0x132f4
movq 0x10(%rsp), %rsi
incq %rsi
jmp 0x132e8
movq %rax, %r15
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x132db
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x72c0
testb %bpl, %bpl
je 0x132f4
movl $0x30, %esi
movq %r14, %rdi
callq 0x72c0
jmp 0x132f4
jmp 0x132f1
movq %rax, %r15
leaq 0xb8(%rsp), %rbx
leaq 0x98(%rsp), %r12
jmp 0x13320
movq %rax, %r15
leaq 0xb8(%rsp), %rbx
jmp 0x13387
jmp 0x13315
movq %rax, %r15
leaq 0xb8(%rsp), %rbx
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0x1334c
callq 0x8036
jmp 0x1334c
movq %rax, %r15
leaq 0xb8(%rsp), %rbx
jmp 0x1335e
movq %rax, %r15
leaq 0xb8(%rsp), %rbx
movq 0x148(%rsp), %rdi
testq %rdi, %rdi
je 0x1335e
callq 0x8036
leaq 0x329ab(%rip), %rax     # 0x45d10
movq %rax, 0x78(%rsp)
movq 0x88(%rsp), %rdi
cmpq %r12, %rdi
je 0x13387
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x72c0
leaq 0xf0(%rsp), %rdi
callq 0x21e32
leaq 0x1d0(%rsp), %rdi
callq 0xbb36
movq 0xa8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x133be
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x72c0
movq %r15, %rdi
callq 0x74f0