// File: /workspace/github_cpp_makefile_star2_O3/rfotino[P]consolite-assembler/src/parser.cpp
// Function: Parser::_validateInstruction(std::vector<Token, std::allocator<Token>> const&, unsigned int const&)
bool Parser::_validateInstruction(const std::vector<Token>& tokens,
                                  const unsigned& line) {
  const std::string opcode = tokens[0].getData();
  if ("NOP" == opcode || "TIMERST" == opcode) {
    if (1 < tokens.size()) {
      std::cerr << "Error: Invalid syntax for " << opcode
                << ", must be by itself on line " << line << "." << std::endl;
      return false;
    }
  } else if ("INPUT" == opcode || "LOAD" == opcode || "MOV" == opcode ||
             "ADD" == opcode || "SUB" == opcode || "MUL" == opcode ||
             "DIV" == opcode || "AND" == opcode || "OR" == opcode ||
             "XOR" == opcode || "SHL" == opcode || "SHRA" == opcode ||
             "SHRL" == opcode || "CMP" == opcode || "TST" == opcode ||
             "PIXEL" == opcode || "STOR" == opcode) {
    if (3 != tokens.size() ||
        REGISTER != tokens[1].getType() ||
        REGISTER != tokens[2].getType()) {
      std::cerr << "Error: Invalid syntax for " << opcode
                << ", expected " << opcode << " REG1 REG2 on line "
                << line << "." << std::endl;
      return false;
    }
  } else if ("PUSH" == opcode || "POP" == opcode || "COLOR" == opcode ||
             "JMP" == opcode || "TIME" == opcode || "RND" == opcode) {
    if (2 != tokens.size() ||
        REGISTER != tokens[1].getType()) {
      std::cerr << "Error: Invalid syntax for " << opcode
                << ", expected " << opcode << " REG on line "
                << line << "." << std::endl;
      return false;
    }
  } else if ("CALL" == opcode || "JMPI" == opcode || "JEQ" == opcode ||
             "JNE" == opcode || "JG" == opcode || "JGE" == opcode ||
             "JA" == opcode || "JAE" == opcode || "JL" == opcode ||
             "JLE" == opcode || "JB" == opcode || "JBE" == opcode ||
             "JO" == opcode || "JNO" == opcode || "JS" == opcode ||
             "JNS" == opcode) {
    if (2 != tokens.size() ||
        (DATA != tokens[1].getType() &&
         LABELREF != tokens[1].getType())) {
      std::cerr << "Error: Invalid syntax for " << opcode
                << ", expected " << opcode << " LABEL|DATA on line "
                << line << "." << std::endl;
      return false;
    } else if (DATA == tokens[1].getType() && 2 < tokens[1].getSize()) {
      std::cerr << "Error: Data too large, max of 16 bits on line "
                << line << "." << std::endl;
      return false;
    } else if (LABELREF == tokens[1].getType()) {
      // Save the label reference for later validation against
      // the full list of label declarations.
      _labelRefs.push_back(make_pair(tokens[1].getData(), line));
    }
  } else if ("RET" == opcode) {
    if (2 < tokens.size() ||
        (2 == tokens.size() && DATA != tokens[1].getType())) {
      std::cerr << "Error: Invalid syntax for " << opcode
                << ", expected " << opcode << " [DATA] on line "
                << line << "." << std::endl;
      return false;
    } else if (2 == tokens.size() && 1 < tokens[1].getSize()) {
      std::cerr << "Error: Data too large, max of 8 bits on line "
                << line << "." << std::endl;
      return false;
    }
  } else if ("LOADI" == opcode || "STORI" == opcode || "MOVI" == opcode) {
    if (3 != tokens.size() ||
        REGISTER != tokens[1].getType() ||
        (DATA != tokens[2].getType() &&
         LABELREF != tokens[2].getType())) {
      std::cerr << "Error: Invalid syntax for " << opcode
                << ", expected " << opcode << " REG LABEL|DATA on line "
                << line << "." << std::endl;
      return false;
    } else if (DATA == tokens[2].getType() && 2 < tokens[2].getSize()) {
      std::cerr << "Error: Data too large, max of 16 bits on line "
                << line << "." << std::endl;
      return false;
    } else if (LABELREF == tokens[2].getType()) {
      // Save the label reference for later validation against
      // the full list of label declarations.
      _labelRefs.push_back(make_pair(tokens[2].getData(), line));
    }
  }
  return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r14
movq (%rsi), %rax
leaq 0x10(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0x8(%rax), %rsi
movq 0x10(%rax), %rdx
addq %rsi, %rdx
movq %rsp, %r12
movq %r12, %rdi
callq 0x4c28
leaq 0x29fc(%rip), %rsi      # 0x8040
movq %r12, %rdi
callq 0x2080
testl %eax, %eax
je 0x5ac4
leaq 0x2a37(%rip), %rsi      # 0x8092
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5ac4
leaq 0x29d2(%rip), %rsi      # 0x8044
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5b68
leaq 0x2abc(%rip), %rsi      # 0x8145
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5b68
leaq 0x29b4(%rip), %rsi      # 0x8054
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5b68
leaq 0x29a5(%rip), %rsi      # 0x805c
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5b68
leaq 0x2992(%rip), %rsi      # 0x8060
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5b68
leaq 0x297f(%rip), %rsi      # 0x8064
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5b68
leaq 0x296c(%rip), %rsi      # 0x8068
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5b68
leaq 0x2959(%rip), %rsi      # 0x806c
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5b68
leaq 0x2959(%rip), %rsi      # 0x8083
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5b68
leaq 0x292f(%rip), %rsi      # 0x8070
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5b68
leaq 0x291c(%rip), %rsi      # 0x8074
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5b68
leaq 0x29e5(%rip), %rsi      # 0x8154
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5b68
leaq 0x29d3(%rip), %rsi      # 0x8159
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5b68
leaq 0x28db(%rip), %rsi      # 0x8078
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5b68
leaq 0x28c8(%rip), %rsi      # 0x807c
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5b68
leaq 0x28bb(%rip), %rsi      # 0x8086
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5b68
leaq 0x297c(%rip), %rsi      # 0x815e
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5b68
leaq 0x2956(%rip), %rsi      # 0x814f
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5c68
leaq 0x2848(%rip), %rsi      # 0x8058
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5c68
leaq 0x2859(%rip), %rsi      # 0x8080
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5c68
leaq 0x2860(%rip), %rsi      # 0x809e
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5c68
leaq 0x290e(%rip), %rsi      # 0x8163
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5c68
leaq 0x282e(%rip), %rsi      # 0x809a
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5c68
leaq 0x28bd(%rip), %rsi      # 0x8140
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5d1b
leaq 0x28ce(%rip), %rsi      # 0x8168
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5d1b
leaq 0x27f1(%rip), %rsi      # 0x80a2
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5d1b
leaq 0x27de(%rip), %rsi      # 0x80a6
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5d1b
leaq 0x288e(%rip), %rsi      # 0x816d
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5d1b
leaq 0x27b4(%rip), %rsi      # 0x80aa
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5d1b
leaq 0x2863(%rip), %rsi      # 0x8170
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5d1b
leaq 0x278a(%rip), %rsi      # 0x80ae
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5d1b
leaq 0x2838(%rip), %rsi      # 0x8173
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5d1b
leaq 0x2760(%rip), %rsi      # 0x80b2
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5d1b
leaq 0x280d(%rip), %rsi      # 0x8176
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5d1b
leaq 0x2736(%rip), %rsi      # 0x80b6
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5d1b
leaq 0x27e2(%rip), %rsi      # 0x8179
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5d1b
leaq 0x270c(%rip), %rsi      # 0x80ba
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5d1b
leaq 0x27b7(%rip), %rsi      # 0x817c
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5d1b
leaq 0x26e2(%rip), %rsi      # 0x80be
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5d1b
leaq 0x2657(%rip), %rsi      # 0x804a
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5f6b
leaq 0x2644(%rip), %rsi      # 0x804e
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5a43
leaq 0x266f(%rip), %rsi      # 0x808c
movq %rsp, %rdi
callq 0x2080
testl %eax, %eax
je 0x5a43
leaq 0x271a(%rip), %rsi      # 0x814a
movq %rsp, %rdi
callq 0x2080
movb $0x1, %bpl
testl %eax, %eax
jne 0x5c41
movq (%r15), %rax
movq 0x8(%r15), %rcx
subq %rax, %rcx
cmpq $0x78, %rcx
jne 0x5ed9
cmpl $0x1, 0x28(%rax)
jne 0x5ed9
movl 0x50(%rax), %ecx
cmpl $0x2, %ecx
je 0x6082
cmpl $0x4, %ecx
jne 0x5ed9
leaq 0x30(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
leaq 0x20(%rsp), %rdi
callq 0x4c28
addq $0x38, %r14
leaq 0x50(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x20(%rsp), %rax
cmpq %r15, %rax
je 0x60d2
movq %rax, 0x40(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x50(%rsp)
jmp 0x60db
movq 0x8(%r15), %rax
subq (%r15), %rax
sarq $0x3, %rax
movabsq $-0x3333333333333333, %rcx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rax, %rcx
movb $0x1, %bpl
cmpq $0x2, %rcx
jb 0x5c41
movq 0x54ff(%rip), %rdi      # 0xaff0
leaq 0x2687(%rip), %rsi      # 0x817f
movl $0x1a, %edx
callq 0x21f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq 0x54de(%rip), %rdi      # 0xaff0
callq 0x21f0
movq %rax, %r14
leaq 0x2679(%rip), %rsi      # 0x819a
movl $0x1c, %edx
movq %rax, %rdi
callq 0x21f0
movl (%rbx), %esi
movq %r14, %rdi
callq 0x2100
movq %rax, %rbx
leaq 0x25b5(%rip), %rsi      # 0x80f7
movl $0x1, %edx
movq %rax, %rdi
callq 0x21f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2190
jmp 0x5c2c
movq (%r15), %rax
movq 0x8(%r15), %rcx
subq %rax, %rcx
cmpq $0x78, %rcx
jne 0x5b8b
cmpl $0x1, 0x28(%rax)
jne 0x5b8b
movb $0x1, %bpl
cmpl $0x1, 0x50(%rax)
je 0x5c41
movq 0x545e(%rip), %rdi      # 0xaff0
leaq 0x25e6(%rip), %rsi      # 0x817f
movl $0x1a, %edx
callq 0x21f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq 0x543d(%rip), %rdi      # 0xaff0
callq 0x21f0
movq %rax, %r14
leaq 0x25f5(%rip), %rsi      # 0x81b7
movl $0xb, %edx
movq %rax, %rdi
callq 0x21f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r14, %rdi
callq 0x21f0
movq %rax, %r14
leaq 0x25d9(%rip), %rsi      # 0x81c3
movl $0x13, %edx
movq %rax, %rdi
callq 0x21f0
movl (%rbx), %esi
movq %r14, %rdi
callq 0x2100
movq %rax, %rbx
leaq 0x24ec(%rip), %rsi      # 0x80f7
movl $0x1, %edx
movq %rax, %rdi
callq 0x21f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2190
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2110
xorl %ebp, %ebp
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x5c57
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21b0
movl %ebp, %eax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq (%r15), %rax
movq 0x8(%r15), %rcx
subq %rax, %rcx
cmpq $0x50, %rcx
jne 0x5c81
movb $0x1, %bpl
cmpl $0x1, 0x28(%rax)
je 0x5c41
movq 0x5368(%rip), %rdi      # 0xaff0
leaq 0x24f0(%rip), %rsi      # 0x817f
movl $0x1a, %edx
callq 0x21f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq 0x5347(%rip), %rdi      # 0xaff0
callq 0x21f0
movq %rax, %r14
leaq 0x24ff(%rip), %rsi      # 0x81b7
movl $0xb, %edx
movq %rax, %rdi
callq 0x21f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r14, %rdi
callq 0x21f0
movq %rax, %r14
leaq 0x24f7(%rip), %rsi      # 0x81d7
movl $0xd, %edx
movq %rax, %rdi
callq 0x21f0
movl (%rbx), %esi
movq %r14, %rdi
callq 0x2100
movq %rax, %rbx
leaq 0x23f6(%rip), %rsi      # 0x80f7
movl $0x1, %edx
movq %rax, %rdi
callq 0x21f0
movq %rbx, %rdi
callq 0x20e0
jmp 0x5c3f
movq (%r15), %rax
movq 0x8(%r15), %rcx
subq %rax, %rcx
cmpq $0x50, %rcx
jne 0x5d8a
movl 0x28(%rax), %ecx
cmpl $0x2, %ecx
je 0x5e1c
cmpl $0x4, %ecx
jne 0x5d8a
leaq 0x30(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x30(%rax), %rsi
movq 0x38(%rax), %rdx
addq %rsi, %rdx
leaq 0x20(%rsp), %rdi
callq 0x4c28
addq $0x38, %r14
leaq 0x50(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x20(%rsp), %rax
cmpq %r15, %rax
je 0x5e6c
movq %rax, 0x40(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x50(%rsp)
jmp 0x5e75
movq 0x525f(%rip), %rdi      # 0xaff0
leaq 0x23e7(%rip), %rsi      # 0x817f
movl $0x1a, %edx
callq 0x21f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq 0x523e(%rip), %rdi      # 0xaff0
callq 0x21f0
movq %rax, %r14
leaq 0x23f6(%rip), %rsi      # 0x81b7
movl $0xb, %edx
movq %rax, %rdi
callq 0x21f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r14, %rdi
callq 0x21f0
movq %rax, %r14
leaq 0x246e(%rip), %rsi      # 0x8257
movl $0x14, %edx
movq %rax, %rdi
callq 0x21f0
movl (%rbx), %esi
movq %r14, %rdi
callq 0x2100
movq %rax, %rbx
leaq 0x22ed(%rip), %rsi      # 0x80f7
movl $0x1, %edx
movq %rax, %rdi
callq 0x21f0
jmp 0x5d0e
movb $0x1, %bpl
cmpq $0x3, 0x38(%rax)
jb 0x5c41
movq 0x51bf(%rip), %rdi      # 0xaff0
leaq 0x23ad(%rip), %rsi      # 0x81e5
movl $0x2e, %edx
callq 0x21f0
movl (%rbx), %esi
movq 0x51a5(%rip), %rdi      # 0xaff0
callq 0x2100
movq %rax, %rbx
leaq 0x229d(%rip), %rsi      # 0x80f7
movl $0x1, %edx
movq %rax, %rdi
callq 0x21f0
jmp 0x5d0e
movups (%r15), %xmm0
movups %xmm0, (%r12)
movq 0x28(%rsp), %rax
leaq 0x40(%rsp), %rsi
movq %rax, 0x8(%rsi)
movq %r15, 0x20(%rsp)
movq $0x0, 0x28(%rsp)
movb $0x0, 0x30(%rsp)
movl (%rbx), %eax
movl %eax, 0x20(%rsi)
movq %r14, %rdi
callq 0x7100
movq 0x40(%rsp), %rdi
cmpq %r12, %rdi
je 0x5eba
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x21b0
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
je 0x5ed1
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x21b0
movb $0x1, %bpl
jmp 0x5c41
movq 0x5110(%rip), %rdi      # 0xaff0
leaq 0x2298(%rip), %rsi      # 0x817f
movl $0x1a, %edx
callq 0x21f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq 0x50ef(%rip), %rdi      # 0xaff0
callq 0x21f0
movq %rax, %r14
leaq 0x22a7(%rip), %rsi      # 0x81b7
movl $0xb, %edx
movq %rax, %rdi
callq 0x21f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r14, %rdi
callq 0x21f0
movq %rax, %r14
leaq 0x231b(%rip), %rsi      # 0x8253
movl $0x18, %edx
movq %rax, %rdi
callq 0x21f0
movl (%rbx), %esi
movq %r14, %rdi
callq 0x2100
movq %rax, %rbx
leaq 0x219e(%rip), %rsi      # 0x80f7
movl $0x1, %edx
movq %rax, %rdi
callq 0x21f0
jmp 0x5d0e
movq (%r15), %rax
movq 0x8(%r15), %rcx
subq %rax, %rcx
movq %rcx, %rdx
sarq $0x3, %rdx
movabsq $-0x3333333333333333, %rsi # imm = 0xCCCCCCCCCCCCCCCD
imulq %rdx, %rsi
cmpq $0x2, %rsi
ja 0x5ff0
movb $0x1, %bpl
cmpq $0x50, %rcx
jne 0x5c41
cmpl $0x2, 0x28(%rax)
jne 0x5ff0
cmpq $0x2, 0x38(%rax)
jb 0x5c41
movq 0x503b(%rip), %rdi      # 0xaff0
leaq 0x2269(%rip), %rsi      # 0x8225
movl $0x2d, %edx
callq 0x21f0
movl (%rbx), %esi
movq 0x5021(%rip), %rdi      # 0xaff0
callq 0x2100
movq %rax, %rbx
leaq 0x2119(%rip), %rsi      # 0x80f7
movl $0x1, %edx
movq %rax, %rdi
callq 0x21f0
jmp 0x5d0e
movq 0x4ff9(%rip), %rdi      # 0xaff0
leaq 0x2181(%rip), %rsi      # 0x817f
movl $0x1a, %edx
callq 0x21f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq 0x4fd8(%rip), %rdi      # 0xaff0
callq 0x21f0
movq %rax, %r14
leaq 0x2190(%rip), %rsi      # 0x81b7
movl $0xb, %edx
movq %rax, %rdi
callq 0x21f0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r14, %rdi
callq 0x21f0
movq %rax, %r14
leaq 0x21c5(%rip), %rsi      # 0x8214
movl $0x10, %edx
movq %rax, %rdi
callq 0x21f0
movl (%rbx), %esi
movq %r14, %rdi
callq 0x2100
movq %rax, %rbx
leaq 0x2087(%rip), %rsi      # 0x80f7
movl $0x1, %edx
movq %rax, %rdi
callq 0x21f0
jmp 0x5d0e
movb $0x1, %bpl
cmpq $0x3, 0x60(%rax)
jb 0x5c41
movq 0x4f59(%rip), %rdi      # 0xaff0
leaq 0x2147(%rip), %rsi      # 0x81e5
movl $0x2e, %edx
callq 0x21f0
movl (%rbx), %esi
movq 0x4f3f(%rip), %rdi      # 0xaff0
callq 0x2100
movq %rax, %rbx
leaq 0x2037(%rip), %rsi      # 0x80f7
movl $0x1, %edx
movq %rax, %rdi
callq 0x21f0
jmp 0x5d0e
movups (%r15), %xmm0
movups %xmm0, (%r12)
movq 0x28(%rsp), %rax
leaq 0x40(%rsp), %rsi
movq %rax, 0x8(%rsi)
movq %r15, 0x20(%rsp)
movq $0x0, 0x28(%rsp)
movb $0x0, 0x30(%rsp)
movl (%rbx), %eax
movl %eax, 0x20(%rsi)
movq %r14, %rdi
callq 0x7100
jmp 0x5ea3
jmp 0x6112
jmp 0x6147
movq %rax, %rbx
movq 0x40(%rsp), %rdi
cmpq %r12, %rdi
je 0x612c
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x21b0
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
je 0x614a
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x21b0
jmp 0x614a
jmp 0x6147
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r13, %rdi
je 0x6160
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x21b0
movq %rbx, %rdi
callq 0x2290