// File: /workspace/github_cpp_makefile_star2_O1/rfotino[P]consolite-compiler/src/syntax.cpp
// Function: GlobalVarToken::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&)
bool GlobalVarToken::parse(
      Tokenizer *tokenizer,
      const std::vector<std::shared_ptr<FunctionToken>>& functions,
      const std::vector<std::shared_ptr<GlobalVarToken>>& globals) {
  _lineNum = _type.line();
  // Validate the type
  if ("void" == _type.name()) {
    _error("Global var cannot be of type 'void'.", _type.line());
    return false;
  }
  // Validate the name
  if (!isValidName(_name)) {
    _error("Invalid global var name '" + _name + "'.", _type.line());
    return false;
  } else if (getFunction(_name, functions)) {
    _error("Global var '" + _name + "' conflicts with existing function name.",
           _type.line());
    return false;
  } else if (getGlobal(_name, globals)) {
    _error("Global var '" + _name + "' conflicts with existing global var name.",
           _type.line());
    return false;
  }
  // Validate the value (if set)
  AtomToken next = tokenizer->getNext();
  AtomToken last = next;
  if ("=" == next.str()) {
    if (_type.isArray()) {
      // Make sure array expression has as many values as the type
      // requires, and make sure they are all constant.
      ArrayExprToken arrayExpr;
      if (!arrayExpr.parse(tokenizer, functions, globals)) {
        return false;
      } else if (arrayExpr.size() != _type.arraySize()) {
        _error("Array size mismatch.", _type.line());
        return false;
      }
      for (size_t i = 0; i < arrayExpr.size(); i++) {
        auto expr = arrayExpr.get(i);
        if (!expr->isConst()) {
          _error("Global value must be known at compile time.", expr->line());
          return false;
        }
        _arrayValues.push_back(expr->val());
      }
    } else {
      // Not an array value, get the singleton initialization expression
      ExprToken expr;
      if (!expr.parse(tokenizer, functions, globals)) {
        return false;
      } else if (!expr.isConst()) {
        _error("Global value must be known at compile time.", expr.line());
        return false;
      }
      _value = expr.val();
    }
    // This should be a semicolon
    last = tokenizer->getNext();
  } else if (";" == next.str()) {
    // No value supplied, give default value of 0.
    if (_type.isArray()) {
      for (size_t i = 0; i < _type.arraySize(); i++) {
        _arrayValues.push_back(0);
      }
    } else {
      _value = 0;
    }
  }
  if (last.empty()) {
    _error("Unexpected EOF.", last.line());
    return false;
  } else if (";" != last.str()) {
    _error("Unexpected token '" + last.str() + "', expected ';'.", last.line());
    return false;
  }
  return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xf8, %rsp
movq %rcx, 0x8(%rsp)
movq %rdx, %rbp
movq %rsi, %r14
movq %rdi, %rbx
movl 0x40(%rdi), %eax
movl %eax, 0x8(%rdi)
leaq 0x78(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0x48(%rdi), %rsi
movq 0x50(%rdi), %rdx
addq %rsi, %rdx
leaq 0x68(%rsp), %r12
movq %r12, %rdi
callq 0xc014
leaq 0x1e869(%rip), %rsi     # 0x36040
movq %r12, %rdi
callq 0x70c0
movl %eax, %r15d
movq (%r12), %rdi
cmpq %r13, %rdi
je 0x177f8
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x72c0
testl %r15d, %r15d
je 0x1789f
leaq 0x70(%rbx), %r15
movq %r15, %rdi
callq 0x33f07
testb %al, %al
je 0x178df
movq %r14, 0xc8(%rsp)
leaq 0x68(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
movq %rbp, %rdx
callq 0x34498
movq (%r12), %r14
movq 0x8(%r12), %rdi
testq %rdi, %rdi
je 0x17843
callq 0x81ea
testq %r14, %r14
je 0x17932
leaq 0x1f2cc(%rip), %rsi     # 0x36b1f
leaq 0x98(%rsp), %r14
movq %r14, %rdi
movq %r15, %rdx
callq 0xb963
leaq 0x1f2bf(%rip), %rsi     # 0x36b2c
movq %r14, %rdi
callq 0x7560
movq %r13, 0x68(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x179e7
movq %rdx, 0x68(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x78(%rsp)
jmp 0x179ef
leaq 0x68(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x1f232(%rip), %rsi     # 0x36ae0
leaq 0x1f24f(%rip), %rdx     # 0x36b04
callq 0xc0a4
movl 0x40(%rbx), %esi
leaq 0x68(%rsp), %rdi
callq 0x34811
movq 0x68(%rsp), %rdi
cmpq %r13, %rdi
je 0x17be6
movq 0x78(%rsp), %rsi
jmp 0x17bde
leaq 0x1f21f(%rip), %rsi     # 0x36b05
leaq 0x98(%rsp), %r14
movq %r14, %rdi
movq %r15, %rdx
callq 0xb963
leaq 0x1f442(%rip), %rsi     # 0x36d42
movq %r14, %rdi
callq 0x7560
movq %r13, 0x68(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x179b6
movq %rdx, 0x68(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x78(%rsp)
jmp 0x179be
leaq 0x68(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
movq 0x8(%rsp), %rdx
callq 0x345b1
movq (%r12), %r14
movq 0x8(%r12), %rdi
testq %rdi, %rdi
je 0x1795a
callq 0x81ea
testq %r14, %r14
je 0x17a18
leaq 0x1f1b5(%rip), %rsi     # 0x36b1f
leaq 0x98(%rsp), %r14
movq %r14, %rdi
movq %r15, %rdx
callq 0xb963
leaq 0x1f1d1(%rip), %rsi     # 0x36b55
movq %r14, %rdi
callq 0x7560
movq %r13, 0x68(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x17b82
movq %rdx, 0x68(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x78(%rsp)
jmp 0x17b8a
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
leaq 0x68(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x40(%rbx), %esi
callq 0x34811
jmp 0x17bae
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
leaq 0x68(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x40(%rbx), %esi
callq 0x34811
jmp 0x17bae
leaq 0x68(%rsp), %r15
movq %r15, %rdi
movq 0xc8(%rsp), %rsi
callq 0x32f76
movl 0x8(%r15), %eax
leaq 0xa8(%rsp), %rdi
movl %eax, -0x8(%rdi)
leaq 0x2f29d(%rip), %rax     # 0x46ce0
movq %rax, -0x10(%rdi)
leaq 0xb8(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x10(%r15), %rsi
movq 0x18(%r15), %rdx
addq %rsi, %rdx
callq 0xc014
leaq 0x48(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0x78(%rsp), %rsi
movq 0x80(%rsp), %rdx
addq %rsi, %rdx
leaq 0x38(%rsp), %rdi
callq 0xc014
leaq 0x1eb65(%rip), %rsi     # 0x365f2
leaq 0x38(%rsp), %r12
movq %r12, %rdi
callq 0x70c0
movl %eax, %r15d
movq (%r12), %rdi
cmpq %r13, %rdi
movq %r13, %r12
je 0x17ab6
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x72c0
testl %r15d, %r15d
leaq 0x2f220(%rip), %r13     # 0x46ce0
je 0x17bfc
leaq 0x38(%rsp), %rdi
movq %r12, (%rdi)
movq 0x78(%rsp), %rsi
movq 0x80(%rsp), %rdx
addq %rsi, %rdx
callq 0xc014
leaq 0x1f0d7(%rip), %rsi     # 0x36bc1
leaq 0x38(%rsp), %r14
movq %r14, %rdi
callq 0x70c0
movl %eax, %ebp
movq (%r14), %rdi
movq %r12, %r15
cmpq %r12, %rdi
je 0x17b11
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x72c0
testl %ebp, %ebp
jne 0x17eff
cmpb $0x1, 0x68(%rbx)
jne 0x17ef6
cmpw $0x0, 0x6a(%rbx)
je 0x17eff
leaq 0x98(%rbx), %r14
xorl %r12d, %r12d
leaq 0x38(%rsp), %rbp
movw $0x0, 0x38(%rsp)
movq 0xa0(%rbx), %rsi
cmpq 0xa8(%rbx), %rsi
je 0x17b66
movw $0x0, (%rsi)
addq $0x2, %rsi
movq %rsi, 0xa0(%rbx)
jmp 0x17b71
movq %r14, %rdi
movq %rbp, %rdx
callq 0x31586
incq %r12
movzwl 0x6a(%rbx), %eax
cmpq %rax, %r12
jb 0x17b3d
jmp 0x17eff
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
leaq 0x68(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0x40(%rbx), %esi
callq 0x34811
movq 0x68(%rsp), %rdi
cmpq %r13, %rdi
je 0x17bc5
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x72c0
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x17be6
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x72c0
xorl %ebx, %ebx
movl %ebx, %eax
addq $0xf8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpb $0x1, 0x68(%rbx)
jne 0x17e03
leaq 0x48(%rsp), %r15
movl $0xffffffff, -0x8(%r15) # imm = 0xFFFFFFFF
leaq 0x2f82e(%rip), %r12     # 0x47448
movq %r12, -0x10(%r15)
xorps %xmm0, %xmm0
movups %xmm0, (%r15)
xorl %eax, %eax
movq %rax, 0x10(%r15)
leaq 0x10(%rsp), %r8
movq %rax, 0x10(%r8)
movaps %xmm0, (%r8)
leaq 0xd0(%rsp), %r9
movq %rax, 0x10(%r9)
movaps %xmm0, (%r9)
leaq 0x38(%rsp), %rdi
movq 0xc8(%rsp), %rsi
movq %rbp, %rdx
movq 0x8(%rsp), %rcx
callq 0x171c4
movl %eax, %ebp
leaq 0xd0(%rsp), %rdi
callq 0xb77e
leaq 0x10(%rsp), %rdi
callq 0xb6d8
testb %bpl, %bpl
je 0x18104
movq 0x50(%rsp), %rax
subq 0x48(%rsp), %rax
sarq $0x4, %rax
movzwl 0x6a(%rbx), %ecx
cmpq %rcx, %rax
jne 0x180b7
movq 0x48(%rsp), %rax
cmpq %rax, 0x50(%rsp)
je 0x17ddc
leaq 0x98(%rbx), %rcx
movq %rcx, 0xf0(%rsp)
xorl %r12d, %r12d
leaq 0x10(%rsp), %r15
xorl %r14d, %r14d
movq %r12, %rcx
sarq $0x1c, %rcx
movq (%rax,%rcx), %rbp
movq 0x8(%rax,%rcx), %rax
movq %rax, 0x8(%rsp)
testq %rax, %rax
je 0x17d02
movq 0x302ae(%rip), %rax     # 0x47f98
cmpb $0x0, (%rax)
je 0x17cf9
movq 0x8(%rsp), %rax
incl 0x8(%rax)
jmp 0x17d02
movq 0x8(%rsp), %rax
lock
incl 0x8(%rax)
movb 0xc(%rbp), %r13b
testb %r13b, %r13b
je 0x17d3e
movq (%rbp), %rax
movq %rbp, %rdi
movq 0x8(%rsp), %rbp
callq *(%rax)
movw %ax, 0x10(%rsp)
movq 0xa0(%rbx), %rsi
cmpq 0xa8(%rbx), %rsi
je 0x17d8c
movw %ax, (%rsi)
addq $0x2, %rsi
movq %rsi, 0xa0(%rbx)
jmp 0x17d9c
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq %r15, %rdi
leaq 0x1ee43(%rip), %rsi     # 0x36b95
leaq 0x1ee67(%rip), %rdx     # 0x36bc0
callq 0xc0a4
movl 0x8(%rbp), %esi
movq %r15, %rdi
callq 0x34811
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
movq 0x8(%rsp), %rbp
je 0x17d9c
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x17d9c
movq 0xf0(%rsp), %rdi
movq %r15, %rdx
callq 0x31586
testq %rbp, %rbp
je 0x17da9
movq %rbp, %rdi
callq 0x81ea
testb %r13b, %r13b
je 0x181c4
incq %r14
movq 0x48(%rsp), %rax
movq 0x50(%rsp), %rcx
subq %rax, %rcx
sarq $0x4, %rcx
movabsq $0x100000000, %rdx      # imm = 0x100000000
addq %rdx, %r12
cmpq %rcx, %r14
jb 0x17cc9
leaq 0x2f665(%rip), %rax     # 0x47448
movq %rax, 0x38(%rsp)
leaq 0x48(%rsp), %rdi
callq 0x22940
leaq 0x2eee7(%rip), %r13     # 0x46ce0
leaq 0x48(%rsp), %r12
jmp 0x17ea2
leaq 0x38(%rsp), %rdi
movl $0xffffffff, 0x8(%rdi)  # imm = 0xFFFFFFFF
leaq 0x2f22a(%rip), %r15     # 0x47040
movq %r15, (%rdi)
movb $0x1, 0xc(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0xe(%rdi)
movups %xmm0, 0x18(%rdi)
xorl %eax, %eax
leaq 0x10(%rsp), %r8
movq %rax, 0x10(%r8)
movaps %xmm0, (%r8)
leaq 0xd0(%rsp), %r9
movq %rax, 0x10(%r9)
movaps %xmm0, (%r9)
movq 0xc8(%rsp), %rsi
movq %rbp, %rdx
movq 0x8(%rsp), %rcx
callq 0x1160e
movl %eax, %ebp
leaq 0xd0(%rsp), %rdi
callq 0xb77e
leaq 0x10(%rsp), %rdi
callq 0xb6d8
testb %bpl, %bpl
je 0x18161
cmpb $0x0, 0x44(%rsp)
je 0x18113
leaq 0x48(%rsp), %rdi
movzwl -0x2(%rdi), %eax
movw %ax, 0x92(%rbx)
movq %r15, -0x10(%rdi)
callq 0x22116
leaq 0x38(%rsp), %rdi
movq 0xc8(%rsp), %rsi
callq 0x32f76
movq %r12, %r15
leaq 0x48(%rsp), %rbx
movl -0x8(%rbx), %eax
movl %eax, 0xa0(%rsp)
leaq 0xa8(%rsp), %rdi
movq %rbx, %rsi
callq 0x7370
movq %r13, -0x10(%rbx)
movq (%rbx), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x17eff
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x17eff
movw $0x0, 0x92(%rbx)
movq 0xb0(%rsp), %rdx
leaq 0x38(%rsp), %rdi
testq %rdx, %rdx
je 0x17fd4
movq %r15, (%rdi)
movq 0xa8(%rsp), %rsi
addq %rsi, %rdx
callq 0xc014
leaq 0x1ec92(%rip), %rsi     # 0x36bc1
leaq 0x38(%rsp), %r14
movq %r14, %rdi
callq 0x70c0
movl %eax, %ebx
movq (%r14), %rdi
cmpq %r15, %rdi
je 0x17f53
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x72c0
testl %ebx, %ebx
je 0x18023
leaq 0xe0(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
addq %rsi, %rdx
leaq 0xd0(%rsp), %rdi
callq 0xc014
leaq 0x1e919(%rip), %rsi     # 0x368a7
leaq 0x10(%rsp), %rdi
leaq 0xd0(%rsp), %rdx
callq 0x22046
leaq 0x1ec1c(%rip), %rsi     # 0x36bc3
leaq 0x10(%rsp), %rdi
callq 0x7560
movq %r15, 0x38(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1802a
movq %rdx, 0x38(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x48(%rsp)
jmp 0x18031
movq %r15, (%rdi)
leaq 0x1e9f9(%rip), %rsi     # 0x369d7
leaq 0x1ea01(%rip), %rdx     # 0x369e6
leaq 0xb8(%rsp), %r14
callq 0xc0a4
movl 0xa0(%rsp), %esi
leaq 0x38(%rsp), %rdi
callq 0x34811
movq 0x38(%rsp), %rdi
cmpq %r15, %rdi
je 0x1816f
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x1816f
movb $0x1, %bl
jmp 0x180aa
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
leaq 0x38(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl 0xa0(%rsp), %esi
callq 0x34811
movq 0x38(%rsp), %rdi
cmpq %r15, %rdi
je 0x18070
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x72c0
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1808b
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x72c0
movq 0xd0(%rsp), %rdi
cmpq %r14, %rdi
je 0x180a8
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x72c0
xorl %ebx, %ebx
leaq 0xb8(%rsp), %r14
jmp 0x18171
leaq 0x20(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1eab9(%rip), %rsi     # 0x36b80
leaq 0x1eac6(%rip), %rdx     # 0x36b94
leaq 0x10(%rsp), %rdi
callq 0xc0a4
movl 0x40(%rbx), %esi
leaq 0x10(%rsp), %rdi
callq 0x34811
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x180fc
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x72c0
leaq 0xb8(%rsp), %r14
movq %r12, 0x38(%rsp)
movq %r15, %rdi
callq 0x22940
jmp 0x1816f
leaq 0x20(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1ea72(%rip), %rsi     # 0x36b95
leaq 0x1ea96(%rip), %rdx     # 0x36bc0
leaq 0x10(%rsp), %rdi
callq 0xc0a4
movl 0x40(%rsp), %esi
leaq 0x10(%rsp), %rdi
callq 0x34811
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x18159
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x72c0
leaq 0xb8(%rsp), %r14
leaq 0x48(%rsp), %rdi
movq %r15, -0x10(%rdi)
callq 0x22116
xorl %ebx, %ebx
movq %r13, 0x98(%rsp)
movq 0xa8(%rsp), %rdi
cmpq %r14, %rdi
je 0x18196
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x72c0
leaq 0x88(%rsp), %rax
movq %r13, -0x20(%rax)
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x17be8
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x17be8
leaq 0x2f27d(%rip), %rax     # 0x47448
movq %rax, 0x38(%rsp)
leaq 0x48(%rsp), %rdi
callq 0x22940
xorl %ebx, %ebx
leaq 0x2eafd(%rip), %r13     # 0x46ce0
jmp 0x180aa
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x18253
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x18253
movq %rax, %rbx
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x18341
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x18341
movq %rax, %rbx
jmp 0x18253
movq %rax, %rbx
jmp 0x18341
jmp 0x1835f
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0xb77e
leaq 0x10(%rsp), %rdi
callq 0xb6d8
leaq 0x48(%rsp), %rdi
movq %r15, -0x10(%rdi)
callq 0x22116
jmp 0x18362
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0xb77e
leaq 0x10(%rsp), %rdi
callq 0xb6d8
jmp 0x18341
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x1832f
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x1832f
jmp 0x1832c
movq %rax, %rbx
movq 0x38(%rsp), %rdi
cmpq %r15, %rdi
je 0x18362
movq 0x48(%rsp), %rsi
jmp 0x18320
jmp 0x1835f
movq %rax, %rbx
movq 0x38(%rsp), %rdi
cmpq %r15, %rdi
je 0x182eb
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x182eb
movq %rax, %rbx
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1830b
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x1830b
movq %rax, %rbx
movq 0xd0(%rsp), %rdi
cmpq %r14, %rdi
je 0x18362
movq 0xe0(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x18362
jmp 0x1835f
movq %rax, %rbx
cmpq $0x0, 0x8(%rsp)
je 0x18341
movq 0x8(%rsp), %rdi
callq 0x81ea
leaq 0x2f100(%rip), %rax     # 0x47448
movq %rax, 0x38(%rsp)
leaq 0x48(%rsp), %rdi
callq 0x22940
jmp 0x18362
jmp 0x1835f
jmp 0x1835f
jmp 0x1835f
movq %rax, %rbx
leaq 0x2e977(%rip), %rax     # 0x46ce0
movq %rax, 0x98(%rsp)
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x1839b
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x1839b
movq %rax, %rbx
leaq 0x88(%rsp), %rax
leaq 0x2e936(%rip), %rcx     # 0x46ce0
movq %rcx, -0x20(%rax)
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x18422
movq 0x88(%rsp), %rsi
jmp 0x18415
jmp 0x183c9
jmp 0x183e5
jmp 0x183c9
jmp 0x183e5
movq %rax, %rbx
movq 0x68(%rsp), %rdi
cmpq %r13, %rdi
je 0x183e8
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x183e8
movq %rax, %rbx
leaq 0xa8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x18422
movq 0xa8(%rsp), %rsi
jmp 0x18415
movq %rax, %rbx
movq 0x68(%rsp), %rdi
cmpq %r13, %rdi
je 0x18422
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x72c0
jmp 0x18422
movq %rax, %rbx
movq %rbx, %rdi
callq 0x74f0