// File: 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
movq %rsp, %rbp
subq $0x5e0, %rsp            # imm = 0x5E0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x458(%rbp)
addq $0x38, %rdi
movq %rdi, -0x460(%rbp)
callq 0x32270
movq -0x460(%rbp), %rsi
movl %eax, %ecx
movq -0x458(%rbp), %rax
movl %ecx, 0x8(%rax)
leaq -0x48(%rbp), %rdi
movq %rdi, -0x450(%rbp)
callq 0xd940
movq -0x450(%rbp), %rsi
leaq 0x4a3bd(%rip), %rdi     # 0x6f034
callq 0xd590
movb %al, -0x441(%rbp)
jmp 0x24c84
leaq -0x48(%rbp), %rdi
callq 0x8848
movb -0x441(%rbp), %al
testb $0x1, %al
jne 0x24c9c
jmp 0x24d54
leaq -0x79(%rbp), %rdi
movq %rdi, -0x468(%rbp)
callq 0x8760
movq -0x468(%rbp), %rdx
leaq 0x4aeb6(%rip), %rsi     # 0x6fb70
leaq -0x78(%rbp), %rdi
callq 0xced0
jmp 0x24cc5
movq -0x458(%rbp), %rdi
addq $0x38, %rdi
callq 0x32270
movl %eax, -0x46c(%rbp)
jmp 0x24cdd
movl -0x46c(%rbp), %esi
leaq -0x78(%rbp), %rdi
callq 0x6d960
jmp 0x24cee
leaq -0x78(%rbp), %rdi
callq 0x8848
leaq -0x79(%rbp), %rdi
callq 0x8460
movb $0x0, -0x1(%rbp)
jmp 0x25c09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x8848
jmp 0x25c17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x24d46
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x8848
leaq -0x79(%rbp), %rdi
callq 0x8460
jmp 0x25c17
movq -0x458(%rbp), %rdi
addq $0x10, %rdi
addq $0x60, %rdi
callq 0x6cd20
testb $0x1, %al
jne 0x24e35
movq -0x458(%rbp), %rdx
addq $0x70, %rdx
leaq 0x4ae13(%rip), %rsi     # 0x6fb95
leaq -0xc0(%rbp), %rdi
movq %rdi, -0x478(%rbp)
callq 0xdc30
movq -0x478(%rbp), %rsi
leaq 0x4b02f(%rip), %rdx     # 0x6fdd2
leaq -0xa0(%rbp), %rdi
callq 0xe020
jmp 0x24db1
movq -0x458(%rbp), %rdi
addq $0x38, %rdi
callq 0x32270
movl %eax, -0x47c(%rbp)
jmp 0x24dc9
movl -0x47c(%rbp), %esi
leaq -0xa0(%rbp), %rdi
callq 0x6d960
jmp 0x24ddd
leaq -0xa0(%rbp), %rdi
callq 0x8848
leaq -0xc0(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
jmp 0x25c09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x24e24
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x8848
leaq -0xc0(%rbp), %rdi
callq 0x8848
jmp 0x25c17
movq -0x458(%rbp), %rsi
addq $0x10, %rsi
addq $0x60, %rsi
movq -0x20(%rbp), %rdx
leaq -0xd0(%rbp), %rdi
callq 0x6d580
leaq -0xd0(%rbp), %rdi
callq 0xd8c0
movb %al, -0x47d(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x94c0
movb -0x47d(%rbp), %al
testb $0x1, %al
jne 0x24e81
jmp 0x24f46
movq -0x458(%rbp), %rdx
addq $0x70, %rdx
leaq 0x4ad1c(%rip), %rsi     # 0x6fbaf
leaq -0x110(%rbp), %rdi
movq %rdi, -0x488(%rbp)
callq 0xdc30
movq -0x488(%rbp), %rsi
leaq 0x4ad08(%rip), %rdx     # 0x6fbbc
leaq -0xf0(%rbp), %rdi
callq 0xe020
jmp 0x24ec2
movq -0x458(%rbp), %rdi
addq $0x38, %rdi
callq 0x32270
movl %eax, -0x48c(%rbp)
jmp 0x24eda
movl -0x48c(%rbp), %esi
leaq -0xf0(%rbp), %rdi
callq 0x6d960
jmp 0x24eee
leaq -0xf0(%rbp), %rdi
callq 0x8848
leaq -0x110(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
jmp 0x25c09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x24f35
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x8848
leaq -0x110(%rbp), %rdi
callq 0x8848
jmp 0x25c17
movq -0x458(%rbp), %rsi
addq $0x10, %rsi
addq $0x60, %rsi
movq -0x28(%rbp), %rdx
leaq -0x120(%rbp), %rdi
callq 0x6d6b0
leaq -0x120(%rbp), %rdi
callq 0x332b0
movb %al, -0x48d(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x9880
movb -0x48d(%rbp), %al
testb $0x1, %al
jne 0x24f92
jmp 0x25057
movq -0x458(%rbp), %rdx
addq $0x70, %rdx
leaq 0x4ac0b(%rip), %rsi     # 0x6fbaf
leaq -0x160(%rbp), %rdi
movq %rdi, -0x498(%rbp)
callq 0xdc30
movq -0x498(%rbp), %rsi
leaq 0x4ac20(%rip), %rdx     # 0x6fbe5
leaq -0x140(%rbp), %rdi
callq 0xe020
jmp 0x24fd3
movq -0x458(%rbp), %rdi
addq $0x38, %rdi
callq 0x32270
movl %eax, -0x49c(%rbp)
jmp 0x24feb
movl -0x49c(%rbp), %esi
leaq -0x140(%rbp), %rdi
callq 0x6d960
jmp 0x24fff
leaq -0x140(%rbp), %rdi
callq 0x8848
leaq -0x160(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
jmp 0x25c09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x25046
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x8848
leaq -0x160(%rbp), %rdi
callq 0x8848
jmp 0x25c17
jmp 0x25059
jmp 0x2505b
movq -0x18(%rbp), %rsi
leaq -0x190(%rbp), %rdi
movq %rdi, -0x4a8(%rbp)
callq 0x6ae20
movq -0x4a8(%rbp), %rsi
leaq -0x1c0(%rbp), %rdi
callq 0x33dd0
jmp 0x25087
leaq -0x1e0(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0xd5c0
jmp 0x2509c
leaq 0x4a5df(%rip), %rdi     # 0x6f682
leaq -0x1e0(%rbp), %rsi
callq 0xd590
movb %al, -0x4a9(%rbp)
jmp 0x250b7
leaq -0x1e0(%rbp), %rdi
callq 0x8848
movb -0x4a9(%rbp), %al
testb $0x1, %al
jne 0x250d2
jmp 0x25868
movq -0x458(%rbp), %rdi
addq $0x38, %rdi
callq 0x33e20
movb %al, -0x4aa(%rbp)
jmp 0x250ea
movb -0x4aa(%rbp), %al
testb $0x1, %al
jne 0x250f9
jmp 0x255b6
leaq -0x208(%rbp), %rdi
callq 0x33e40
jmp 0x25107
movq -0x18(%rbp), %rax
movq %rax, -0x4d8(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x4d0(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x4c8(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x4f0(%rbp)
movaps %xmm0, -0x220(%rbp)
movq $0x0, -0x210(%rbp)
leaq -0x220(%rbp), %rdi
movq %rdi, -0x4c0(%rbp)
callq 0xd470
movaps -0x4f0(%rbp), %xmm0
movaps %xmm0, -0x240(%rbp)
movq $0x0, -0x230(%rbp)
leaq -0x240(%rbp), %rdi
movq %rdi, -0x4b8(%rbp)
callq 0xd510
movq -0x4d8(%rbp), %rsi
movq -0x4d0(%rbp), %rdx
movq -0x4c8(%rbp), %rcx
movq -0x4c0(%rbp), %r8
movq -0x4b8(%rbp), %r9
leaq -0x208(%rbp), %rdi
callq 0x245c0
movb %al, -0x4ab(%rbp)
jmp 0x251ba
movb -0x4ab(%rbp), %al
xorb $-0x1, %al
movb %al, -0x4f1(%rbp)
leaq -0x240(%rbp), %rdi
callq 0xd530
leaq -0x220(%rbp), %rdi
callq 0xd380
movb -0x4f1(%rbp), %al
testb $0x1, %al
jne 0x251ec
jmp 0x25267
movb $0x0, -0x1(%rbp)
movl $0x1, -0x244(%rbp)
jmp 0x25584
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x25bfb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x25bef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x8848
jmp 0x25bef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x240(%rbp), %rdi
callq 0xd530
leaq -0x220(%rbp), %rdi
callq 0xd380
jmp 0x255a5
leaq -0x208(%rbp), %rdi
callq 0x33e80
movq %rax, -0x500(%rbp)
jmp 0x2527c
movq -0x458(%rbp), %rdi
addq $0x38, %rdi
callq 0x33ea0
movq %rax, -0x508(%rbp)
jmp 0x25295
movq -0x500(%rbp), %rax
movq -0x508(%rbp), %rcx
cmpq %rcx, %rax
je 0x2537a
leaq -0x269(%rbp), %rdi
movq %rdi, -0x510(%rbp)
callq 0x8760
movq -0x510(%rbp), %rdx
leaq 0x4a943(%rip), %rsi     # 0x6fc10
leaq -0x268(%rbp), %rdi
callq 0xced0
jmp 0x252db
movq -0x458(%rbp), %rdi
addq $0x38, %rdi
callq 0x32270
movl %eax, -0x514(%rbp)
jmp 0x252f3
movl -0x514(%rbp), %esi
leaq -0x268(%rbp), %rdi
callq 0x6d960
jmp 0x25307
leaq -0x268(%rbp), %rdi
callq 0x8848
leaq -0x269(%rbp), %rdi
callq 0x8460
movb $0x0, -0x1(%rbp)
movl $0x1, -0x244(%rbp)
jmp 0x25584
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x255a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x25369
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x8848
leaq -0x269(%rbp), %rdi
callq 0x8460
jmp 0x255a5
jmp 0x2537c
movq $0x0, -0x278(%rbp)
movq -0x278(%rbp), %rax
movq %rax, -0x528(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x33e80
movq %rax, -0x520(%rbp)
jmp 0x253aa
movq -0x528(%rbp), %rax
movq -0x520(%rbp), %rcx
cmpq %rcx, %rax
jae 0x2557a
movl -0x278(%rbp), %edx
leaq -0x288(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x33ec0
jmp 0x253dc
leaq -0x288(%rbp), %rdi
callq 0x33ae0
movq %rax, %rdi
callq 0x326c0
movb %al, -0x529(%rbp)
jmp 0x253f8
movb -0x529(%rbp), %al
testb $0x1, %al
jne 0x254da
jmp 0x25408
leaq -0x2a9(%rbp), %rdi
movq %rdi, -0x538(%rbp)
callq 0x8760
movq -0x538(%rbp), %rdx
leaq 0x4a7fc(%rip), %rsi     # 0x6fc25
leaq -0x2a8(%rbp), %rdi
callq 0xced0
jmp 0x25437
leaq -0x288(%rbp), %rdi
callq 0x33ae0
movq %rax, %rdi
callq 0x32270
movl %eax, -0x53c(%rbp)
jmp 0x25453
movl -0x53c(%rbp), %esi
leaq -0x2a8(%rbp), %rdi
callq 0x6d960
jmp 0x25467
leaq -0x2a8(%rbp), %rdi
callq 0x8848
leaq -0x2a9(%rbp), %rdi
callq 0x8460
movb $0x0, -0x1(%rbp)
movl $0x1, -0x244(%rbp)
jmp 0x2553b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2556c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x254c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2a8(%rbp), %rdi
callq 0x8848
leaq -0x2a9(%rbp), %rdi
callq 0x8460
jmp 0x2556c
movq -0x458(%rbp), %rax
addq $0x98, %rax
movq %rax, -0x548(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x33ae0
movq %rax, %rdi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
movw %ax, -0x53e(%rbp)
jmp 0x2550e
movq -0x548(%rbp), %rdi
movw -0x53e(%rbp), %ax
movw %ax, -0x2ac(%rbp)
leaq -0x2ac(%rbp), %rsi
callq 0x33f10
jmp 0x25531
movl $0x0, -0x244(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x33b70
movl -0x244(%rbp), %eax
testl %eax, %eax
jne 0x25584
jmp 0x25553
jmp 0x25555
movq -0x278(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x278(%rbp)
jmp 0x25387
leaq -0x288(%rbp), %rdi
callq 0x33b70
jmp 0x255a5
movl $0x0, -0x244(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x33f40
movl -0x244(%rbp), %eax
testl %eax, %eax
jne 0x25bd5
jmp 0x255a0
jmp 0x25832
leaq -0x208(%rbp), %rdi
callq 0x33f40
jmp 0x25bef
leaq -0x2d8(%rbp), %rdi
callq 0x32670
jmp 0x255c4
movq -0x18(%rbp), %rax
movq %rax, -0x578(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x570(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x568(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x590(%rbp)
movaps %xmm0, -0x2f0(%rbp)
movq $0x0, -0x2e0(%rbp)
leaq -0x2f0(%rbp), %rdi
movq %rdi, -0x560(%rbp)
callq 0xd470
movaps -0x590(%rbp), %xmm0
movaps %xmm0, -0x310(%rbp)
movq $0x0, -0x300(%rbp)
leaq -0x310(%rbp), %rdi
movq %rdi, -0x558(%rbp)
callq 0xd510
movq -0x578(%rbp), %rsi
movq -0x570(%rbp), %rdx
movq -0x568(%rbp), %rcx
movq -0x560(%rbp), %r8
movq -0x558(%rbp), %r9
leaq -0x2d8(%rbp), %rdi
callq 0x1d9b0
movb %al, -0x549(%rbp)
jmp 0x25677
movb -0x549(%rbp), %al
xorb $-0x1, %al
movb %al, -0x591(%rbp)
leaq -0x310(%rbp), %rdi
callq 0xd530
leaq -0x2f0(%rbp), %rdi
callq 0xd380
movb -0x591(%rbp), %al
testb $0x1, %al
jne 0x256a9
jmp 0x256e5
movb $0x0, -0x1(%rbp)
movl $0x1, -0x244(%rbp)
jmp 0x25803
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x310(%rbp), %rdi
callq 0xd530
leaq -0x2f0(%rbp), %rdi
callq 0xd380
jmp 0x25821
leaq -0x2d8(%rbp), %rdi
callq 0x326c0
movb %al, -0x592(%rbp)
jmp 0x256f9
movb -0x592(%rbp), %al
testb $0x1, %al
jne 0x257cd
jmp 0x25709
leaq -0x331(%rbp), %rdi
movq %rdi, -0x5a0(%rbp)
callq 0x8760
movq -0x5a0(%rbp), %rdx
leaq 0x4a4fb(%rip), %rsi     # 0x6fc25
leaq -0x330(%rbp), %rdi
callq 0xced0
jmp 0x25738
leaq -0x2d8(%rbp), %rdi
callq 0x32270
movl %eax, -0x5a4(%rbp)
jmp 0x2574c
movl -0x5a4(%rbp), %esi
leaq -0x330(%rbp), %rdi
callq 0x6d960
jmp 0x25760
leaq -0x330(%rbp), %rdi
callq 0x8848
leaq -0x331(%rbp), %rdi
callq 0x8460
movb $0x0, -0x1(%rbp)
movl $0x1, -0x244(%rbp)
jmp 0x25803
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x25821
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x257bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x330(%rbp), %rdi
callq 0x8848
leaq -0x331(%rbp), %rdi
callq 0x8460
jmp 0x25821
jmp 0x257cf
leaq -0x2d8(%rbp), %rdi
callq 0x326e0
movw %ax, -0x5a6(%rbp)
jmp 0x257e4
movq -0x458(%rbp), %rax
movw -0x5a6(%rbp), %cx
movw %cx, 0x92(%rax)
movl $0x0, -0x244(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x32700
movl -0x244(%rbp), %eax
testl %eax, %eax
jne 0x25bd5
jmp 0x2581f
jmp 0x25832
leaq -0x2d8(%rbp), %rdi
callq 0x32700
jmp 0x25bef
movq -0x18(%rbp), %rsi
leaq -0x368(%rbp), %rdi
callq 0x6ae20
jmp 0x25844
leaq -0x1c0(%rbp), %rdi
leaq -0x368(%rbp), %rsi
callq 0x33f70
leaq -0x368(%rbp), %rdi
callq 0x99b0
jmp 0x2598d
leaq -0x388(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0xd5c0
jmp 0x2587d
leaq 0x4a3cd(%rip), %rdi     # 0x6fc51
leaq -0x388(%rbp), %rsi
callq 0xd590
movb %al, -0x5a7(%rbp)
jmp 0x25898
leaq -0x388(%rbp), %rdi
callq 0x8848
movb -0x5a7(%rbp), %al
testb $0x1, %al
jne 0x258b3
jmp 0x2598b
movq -0x458(%rbp), %rdi
addq $0x38, %rdi
callq 0x33e20
movb %al, -0x5a8(%rbp)
jmp 0x258cb
movb -0x5a8(%rbp), %al
testb $0x1, %al
jne 0x258da
jmp 0x25979
movq $0x0, -0x390(%rbp)
movq -0x458(%rbp), %rdi
movq -0x390(%rbp), %rax
movq %rax, -0x5b8(%rbp)
addq $0x38, %rdi
callq 0x33ea0
movq %rax, -0x5b0(%rbp)
jmp 0x2590c
movq -0x5b8(%rbp), %rax
movq -0x5b0(%rbp), %rcx
cmpq %rcx, %rax
jae 0x25977
movq -0x458(%rbp), %rdi
addq $0x98, %rdi
movw $0x0, -0x392(%rbp)
leaq -0x392(%rbp), %rsi
callq 0x33f10
jmp 0x25944
jmp 0x25946
movq -0x390(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x390(%rbp)
jmp 0x258e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x388(%rbp), %rdi
callq 0x8848
jmp 0x25bef
jmp 0x25989
movq -0x458(%rbp), %rax
movw $0x0, 0x92(%rax)
jmp 0x2598b
jmp 0x2598d
leaq -0x1c0(%rbp), %rdi
callq 0xd490
movb %al, -0x5b9(%rbp)
jmp 0x259a1
movb -0x5b9(%rbp), %al
testb $0x1, %al
jne 0x259b0
jmp 0x25a69
leaq -0x3b9(%rbp), %rdi
movq %rdi, -0x5c8(%rbp)
callq 0x8760
movq -0x5c8(%rbp), %rdx
leaq 0x4a096(%rip), %rsi     # 0x6fa67
leaq -0x3b8(%rbp), %rdi
callq 0xced0
jmp 0x259df
leaq -0x1c0(%rbp), %rdi
callq 0x32270
movl %eax, -0x5cc(%rbp)
jmp 0x259f3
movl -0x5cc(%rbp), %esi
leaq -0x3b8(%rbp), %rdi
callq 0x6d960
jmp 0x25a07
leaq -0x3b8(%rbp), %rdi
callq 0x8848
leaq -0x3b9(%rbp), %rdi
callq 0x8460
movb $0x0, -0x1(%rbp)
movl $0x1, -0x244(%rbp)
jmp 0x25bd5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x25a58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x3b8(%rbp), %rdi
callq 0x8848
leaq -0x3b9(%rbp), %rdi
callq 0x8460
jmp 0x25bef
leaq -0x3e0(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0xd5c0
jmp 0x25a7e
leaq 0x4a1cc(%rip), %rdi     # 0x6fc51
leaq -0x3e0(%rbp), %rsi
callq 0xd8e0
movb %al, -0x5cd(%rbp)
jmp 0x25a99
leaq -0x3e0(%rbp), %rdi
callq 0x8848
movb -0x5cd(%rbp), %al
testb $0x1, %al
jne 0x25ab4
jmp 0x25bc5
leaq -0x440(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0xd5c0
jmp 0x25ac9
leaq 0x49e67(%rip), %rsi     # 0x6f937
leaq -0x420(%rbp), %rdi
leaq -0x440(%rbp), %rdx
callq 0x325f0
jmp 0x25ae5
leaq 0x4a167(%rip), %rdx     # 0x6fc53
leaq -0x400(%rbp), %rdi
leaq -0x420(%rbp), %rsi
callq 0xe020
jmp 0x25b01
leaq -0x1c0(%rbp), %rdi
callq 0x32270
movl %eax, -0x5d4(%rbp)
jmp 0x25b15
movl -0x5d4(%rbp), %esi
leaq -0x400(%rbp), %rdi
callq 0x6d960
jmp 0x25b29
leaq -0x400(%rbp), %rdi
callq 0x8848
leaq -0x420(%rbp), %rdi
callq 0x8848
leaq -0x440(%rbp), %rdi
callq 0x8848
movb $0x0, -0x1(%rbp)
movl $0x1, -0x244(%rbp)
jmp 0x25bd5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x3e0(%rbp), %rdi
callq 0x8848
jmp 0x25bef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x25bb7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x25bab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x400(%rbp), %rdi
callq 0x8848
leaq -0x420(%rbp), %rdi
callq 0x8848
leaq -0x440(%rbp), %rdi
callq 0x8848
jmp 0x25bef
jmp 0x25bc7
movb $0x1, -0x1(%rbp)
movl $0x1, -0x244(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x99b0
leaq -0x190(%rbp), %rdi
callq 0x99b0
jmp 0x25c09
leaq -0x1c0(%rbp), %rdi
callq 0x99b0
leaq -0x190(%rbp), %rdi
callq 0x99b0
jmp 0x25c17
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x5e0, %rsp            # imm = 0x5E0
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0x8750