// File: /workspace/github_cpp_makefile_star2_O1/nicklausw[P]snesasm/snesasm.cpp
// Function: pass()
int pass()
{  
  for (pass_counter = 0; pass_counter < (tokens.size())/sizeof(token); pass_counter++) {
    if (tokens[pass_counter].token_type == tkDIR) {
      // directive
      if (tokens[pass_counter].token_i == "compcheck") {
        compcheck_flag = true;
      } else if (tokens[pass_counter].token_i == "autoromsize") {
        autoromsize_flag = true;
      } else if (tokens[pass_counter].token_i == "romsize") {
        directive_arg("romsize", r8); romsize = tr;
      } else if (tokens[pass_counter].token_i == "carttype") {
        directive_arg("carttype", r8); carttype = tr;
      } else if (tokens[pass_counter].token_i == "licenseecode") {
        directive_arg("licenseecode", r8); licenseecode = tr;
      } else if (tokens[pass_counter].token_i == "version") {
        directive_arg("version", r8); version = tr;
      } else if (tokens[pass_counter].token_i == "org") {
        directive_arg("org", r16); org = tr;
        
        if (banksize_defined == false || rombanks_defined == false) {
          cerr << "error: rombanks and banksize need to be defined before org\n";
          return fail;
        }
      } else if (tokens[pass_counter].token_i == "banksize") {
        directive_arg("banksize", r16); banksize = tr;
        banksize_defined = true;
        
        if (rombanks != 0) {
          // go ahead and set size of output
          rom.resize(rombanks*banksize);
        }
      } else if (tokens[pass_counter].token_i == "rombanks") {
        // not sure about rombanks limit
        directive_arg("rombanks", rNONE); rombanks = tr;
        rombanks_defined = true;
        
        if (banksize != 0) {
          // go ahead and set size of output
          rom.resize(rombanks*banksize);
        }
      } else if (tokens[pass_counter].token_i == "bank") {
       directive_arg("bank", rNONE); cur_bank = tr;
        
        // reset org
        org = base*(cur_bank+1);
        
        if (rombanks_defined == false) {
          cerr << "error: rombanks needs to be defined before .bank\n";
          return fail;
        } else if (banksize_defined == false) {
          cerr << "error: banksize needs to be defined before .bank\n";
          return fail;
        }
        
        if (cur_bank >= rombanks) {
          cerr << "error: can't go to bank higher than maximum banks\n";
          return fail;
        } else {
          org = (banksize*cur_bank)+base;
        }
      } else if (tokens[pass_counter].token_i == "name") {
        if (hint_next_token().token_type != tkQUOTE) {
          cerr << "error: name expects string value\n";
          return fail;
        }
        
        name_flag = true;
        
        string name_quote_raw = hint_next_token().token_i;
        
        for (unsigned int name_counter = 0; name_quote_raw[name_counter] != '\"'; name_counter++) {
          name.append(string(1, name_quote_raw[name_counter]));
          if (name_counter == 21) {
            cerr << "error: name can have only up to 21 characters\n";
            return fail;
          }
        }
      } else if (tokens[pass_counter].token_i == "db") {
          raw_data(r8, "db");
      } else if (tokens[pass_counter].token_i == "dw") {
          raw_data(r16, "dw");
      } else if (tokens[pass_counter].token_i == "lorom") {
        lohirom = lorom;
      } else if (tokens[pass_counter].token_i == "hirom") {
        lohirom = hirom;
      } else if (tokens[pass_counter].token_i == "slowrom") {
        sfrom = slowrom;
      } else if (tokens[pass_counter].token_i == "fastrom") {
        sfrom = fastrom;
      } else {
        cout << "error: unknown directive " << tokens[pass_counter].token_i << "\n";
        return fail;
      }
    } else if (tokens[pass_counter].token_type == tkNUM || tokens[pass_counter].token_type == tkARG) {
      cerr << "error: loose phrase " << tokens[pass_counter].token_i << "\n";
      return fail;
    } else if (tokens[pass_counter].token_type == tkOP) {
      // opcode
      int match_count = 0;
      token next_tok = hint_next_token();
      
      if (banksize_defined == false || rombanks_defined == false) {
        cerr << "error: rombanks and banksize need to be defined before opcodes\n";
        return fail;
      }
      
      
      for (unsigned int opcounter = 0; opcounter < sizeof(opcodes)/sizeof(opcode); opcounter++) {
        if (tokens[pass_counter].token_i == opcodes[opcounter].name) {
          match_count++;
        } else continue;
        
        // it's a match
        if (next_tok.token_type == tkNL || next_tok.token_type == tkUNDEF) {
          if (opcodes[opcounter].no_arg != -1) {
            write_byte(opcodes[opcounter].no_arg);
            continue;
          } else {
            cerr << "error: opcode " << opcodes[opcounter].name << " expects args\n";
            return fail;
          }
        } else if (next_tok.token_i[0] == '#') {
          // it's a literal!
          next_tok.token_i.erase(0, 1);
          if (opcodes[opcounter].lit != -1) {
            if (parse_num(next_tok.token_i) < 256) {
              // in range
              write_byte(opcodes[opcounter].lit);
              write_byte(parse_num(next_tok.token_i));
              pass_counter++; continue;
            } else {
              cerr << "error: opcode " << opcodes[opcounter].name << " takes only 8-bit literals\n";
              return fail;
            }
          } else {
            // this thing doesn't like literals!?
            cerr << "error: opcode " << opcodes[opcounter].name << " doesn't take literals\n";
            return fail;
          }
        } else if (next_tok.token_type == tkNUM || next_tok.token_type == tkOP) {
          // it's a number!
          // this could go multiple ways.
          
          // ", x"?
          if ((pass_counter+3) >= tokens.size()) {
          } else {
            if (tokens[pass_counter+2].token_type == tkCOMMA) {
              if (tokens[pass_counter+3].token_i == "x") {
                if (opcodes[opcounter].x8 != -1) {
                  // yay, x8
                  if (parse_num(tokens[pass_counter+1].token_i) < 256) {
                    write_byte(opcodes[opcounter].x8);
                    write_byte(parse_num(tokens[pass_counter+1].token_i));
                    pass_counter += 3; continue;
                  }
                } else if (opcodes[opcounter].x16 != -1) {
                  if (parse_num(tokens[pass_counter+1].token_i) < 65536) {
                    write_byte(opcodes[opcounter].x16);
                    write_byte((parse_num(tokens[pass_counter+1].token_i) & 0xFF));
                    write_byte((parse_num(tokens[pass_counter+1].token_i) >> 8));
                    pass_counter += 3; continue;
                  }
                } else if (opcodes[opcounter].x24 != -1) {
                  if (parse_num(tokens[pass_counter+1].token_i) < 0xFFFFFF+1) {
                    write_byte(opcodes[opcounter].x24);
                    write_byte((parse_num(tokens[pass_counter+1].token_i) & 0xFF));
                    write_byte(((parse_num(tokens[pass_counter+1].token_i) >> 8) & 0xFF));
                    write_byte((parse_num(tokens[pass_counter+1].token_i) >> 16));
                    pass_counter += 3; continue;
                  }
                  
                  cerr << "error: number out of range\n";
                  return fail;
                }
              } else {
                cerr << "error: xxx $XX, x only for now\n";
                return fail;
              }
            }
          }
          
          
          // is it relative?
          if (opcodes[opcounter].relative8 != -1 && org-parse_num(next_tok.token_i) < 256) {
            // it is!
            unsigned char relative_temp;
            if (next_tok.token_i[0] == '-' || ((signed)org-parse_num(next_tok.token_i)) < 0) {
              relative_temp = org-parse_num(next_tok.token_i);
            } else {
              relative_temp = 254-(org-parse_num(next_tok.token_i));
            }
            
            write_byte(opcodes[opcounter].relative8);
            write_byte(relative_temp);
            pass_counter++; continue;
          }
          
          // what about 16 bit relative?
          if (opcodes[opcounter].relative16 != -1 && org-parse_num(next_tok.token_i) < 65536) {
            // yay!
            unsigned int relative_temp;
            if (next_tok.token_i[0] == '-' || ((signed)org-parse_num(next_tok.token_i)) < 0) {
              relative_temp = org-parse_num(next_tok.token_i);
            } else {
              relative_temp = 65534-(org-parse_num(next_tok.token_i));
            }
            
            write_byte(opcodes[opcounter].relative16);
            write_byte(relative_temp & 0xFF);
            write_byte(relative_temp >> 8);
            pass_counter++; continue;
          }
          
          
          if (parse_num(next_tok.token_i) < 256) {
            // 8-bit!
            if (opcodes[opcounter].one8 != -1) {
              write_byte(opcodes[opcounter].one8);
              write_byte(parse_num(next_tok.token_i));
              pass_counter++; continue;
            } else {
              cerr << "error: opcode " << opcodes[opcounter].name << " can't take 8-bit args\n";
              return fail; 
            }
          } else if (parse_num(next_tok.token_i) < 65536) {
            // 16-bit!
            if (opcodes[opcounter].one16 != -1) {
              write_byte(opcodes[opcounter].one16);
              write_byte(parse_num(next_tok.token_i) & 0xFF);
              write_byte(parse_num(next_tok.token_i) >> 8);
              pass_counter++; continue;
            } else {
              cerr << "error: opcode " << opcodes[opcounter].name << " can't take 16-bit args\n";
              return fail; 
            }
          } else if (parse_num(next_tok.token_i) < 0xFFFFFF+1) {
            // 24-bit!
            if (opcodes[opcounter].one24 != -1) {
              write_byte(opcodes[opcounter].one24);
              write_byte(parse_num(next_tok.token_i) & 0xFF);
              write_byte((parse_num(next_tok.token_i) >> 8) & 0xFF); // crazy middle byte
              write_byte(parse_num(next_tok.token_i) >> 16);
              pass_counter++; continue;
            } else {
              cerr << "error: opcode " << opcodes[opcounter].name << " can't take 24-bit args\n";
              return fail; 
            }
          }
        }
      }
      
      if (!match_count) {
        // no matches
        cerr << "error: unknown opcode " << tokens[pass_counter].token_i << "\n";
        return fail;
      }
    } else if (tokens[pass_counter].token_type == tkLB) {
      tokens[pass_counter].token_i.pop_back();
      new_label(tokens[pass_counter].token_i, org);
    } else if (tokens[pass_counter].token_type == tkNL) {
      continue;
    } else {
      // probably a blank line
      continue;
    }
  }
  
  return success;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x538, %rsp            # imm = 0x538
movq $0x0, 0x74a5(%rip) # 0xc2b0
movq 0x73be(%rip), %rax      # 0xc1d0
movq 0x73af(%rip), %rcx      # 0xc1c8
subq %rcx, %rax
sarq $0x3, %rax
movabsq $-0x3333333333333333, %rdx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rdx, %rax
cmpq $0x28, %rax
jae 0x4e3b
xorl %eax, %eax
jmp 0x68c4
leaq 0x48(%rsp), %r14
leaq 0x408(%rsp), %r15
xorl %esi, %esi
leaq 0x460f(%rip), %rbp      # 0x9460
leaq 0x4666(%rip), %r12      # 0x94be
leaq (%rsi,%rsi,4), %rax
leaq (%rcx,%rax,8), %rdi
movl (%rdi), %eax
cmpl 0x72fc(%rip), %eax      # 0xc164
jne 0x5194
addq $0x8, %rdi
leaq 0x45d1(%rip), %rsi      # 0x944a
callq 0x2050
testl %eax, %eax
je 0x5fbd
movq 0x7423(%rip), %rax      # 0xc2b0
movq 0x7334(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rdi
addq $0x8, %rdi
leaq 0x45ad(%rip), %rsi      # 0x9454
callq 0x2050
testl %eax, %eax
je 0x5fc9
movq 0x73f5(%rip), %rax      # 0xc2b0
movq 0x7306(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rdi
addq $0x8, %rdi
leaq 0x4583(%rip), %r13      # 0x9458
movq %r13, %rsi
callq 0x2050
testl %eax, %eax
je 0x5fd5
movq 0x73c4(%rip), %rax      # 0xc2b0
movq 0x72d5(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rdi
addq $0x8, %rdi
movq %rbp, %rsi
callq 0x2050
testl %eax, %eax
je 0x604a
movq 0x739a(%rip), %rax      # 0xc2b0
movq 0x72ab(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rdi
addq $0x8, %rdi
leaq 0x4539(%rip), %r13      # 0x9469
movq %r13, %rsi
callq 0x2050
testl %eax, %eax
je 0x60a2
movq %r12, %rbp
movq 0x7366(%rip), %rax      # 0xc2b0
movq 0x7277(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rdi
addq $0x8, %rdi
leaq 0x4512(%rip), %r12      # 0x9476
movq %r12, %rsi
callq 0x2050
testl %eax, %eax
je 0x6109
movq 0x7335(%rip), %rax      # 0xc2b0
movq 0x7246(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rdi
addq $0x8, %rdi
leaq 0x44e9(%rip), %r13      # 0x947e
movq %r13, %rsi
callq 0x2050
testl %eax, %eax
je 0x61b0
movq 0x7304(%rip), %rax      # 0xc2b0
movq 0x7215(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rdi
addq $0x8, %rdi
movq %rbp, %r12
movq %rbp, %rsi
callq 0x2050
testl %eax, %eax
je 0x6277
movq 0x72d7(%rip), %rax      # 0xc2b0
movq 0x71e8(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rdi
addq $0x8, %rdi
leaq 0x44d4(%rip), %r13      # 0x94c7
movq %r13, %rsi
callq 0x2050
testl %eax, %eax
leaq 0x445c(%rip), %rbp      # 0x9460
je 0x6441
movq 0x729f(%rip), %rax      # 0xc2b0
movq 0x71b0(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rdi
addq $0x8, %rdi
leaq 0x44a5(%rip), %r13      # 0x94d0
movq %r13, %rsi
callq 0x2050
testl %eax, %eax
je 0x64cc
movq 0x726e(%rip), %rax      # 0xc2b0
movq 0x717f(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rdi
addq $0x8, %rdi
leaq 0x4510(%rip), %rsi      # 0x956c
callq 0x2050
testl %eax, %eax
je 0x6580
movq 0x7240(%rip), %rax      # 0xc2b0
movq 0x7151(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rdi
addq $0x8, %rdi
leaq 0x4538(%rip), %r13      # 0x95c2
movq %r13, %rsi
callq 0x2050
testl %eax, %eax
je 0x65f2
movq 0x720f(%rip), %rax      # 0xc2b0
movq 0x7120(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rdi
addq $0x8, %rdi
leaq 0x450a(%rip), %r13      # 0x95c5
movq %r13, %rsi
callq 0x2050
testl %eax, %eax
je 0x6657
movq 0x71de(%rip), %rax      # 0xc2b0
movq 0x70ef(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rdi
addq $0x8, %rdi
leaq 0x44dc(%rip), %rsi      # 0x95c8
callq 0x2050
testl %eax, %eax
je 0x6779
movq 0x71b0(%rip), %rax      # 0xc2b0
movq 0x70c1(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rdi
addq $0x8, %rdi
leaq 0x44b4(%rip), %rsi      # 0x95ce
callq 0x2050
testl %eax, %eax
je 0x67c2
movq 0x7182(%rip), %rax      # 0xc2b0
movq 0x7093(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rdi
addq $0x8, %rdi
leaq 0x448c(%rip), %rsi      # 0x95d4
callq 0x2050
testl %eax, %eax
leaq 0x48(%rsp), %r14
je 0x680b
movq 0x714f(%rip), %rax      # 0xc2b0
movq 0x7060(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rdi
addq $0x8, %rdi
leaq 0x4461(%rip), %rsi      # 0x95dc
callq 0x2050
testl %eax, %eax
jne 0x693a
movb $0x1, 0x70a6(%rip)      # 0xc235
jmp 0x63f8
cmpl 0x6fc6(%rip), %eax      # 0xc160
je 0x686c
cmpl 0x6fca(%rip), %eax      # 0xc170
je 0x686c
cmpl 0x6fb6(%rip), %eax      # 0xc168
jne 0x5f3f
leaq 0x8(%rsp), %rdi
callq 0x7414
cmpb $0x0, 0x7080(%rip)      # 0xc249
movl $0x3f, %edx
je 0x6037
cmpb $0x0, 0x706d(%rip)      # 0xc248
movq 0x6e0e(%rip), %rdi      # 0xbff0
leaq 0x442a(%rip), %rsi      # 0x9613
je 0x63b8
xorl %r12d, %r12d
leaq 0x70c7(%rip), %rbp      # 0xc2c0
xorl %r14d, %r14d
movl $0x0, 0x34(%rsp)
movq 0x70a5(%rip), %rbx      # 0xc2b0
movq 0x6fb6(%rip), %r15      # 0xc1c8
leaq (%rbx,%rbx,4), %r13
movq 0x10(%r15,%r13,8), %rdx
cmpq 0x8(%rbp), %rdx
jne 0x5c7c
testq %rdx, %rdx
je 0x5246
leaq (%r15,%r13,8), %rax
addq $0x8, %rax
movq (%rbp), %rsi
movq (%rax), %rdi
callq 0x2170
testl %eax, %eax
jne 0x5c7c
incl 0x34(%rsp)
movl 0x8(%rsp), %eax
cmpl 0x6f20(%rip), %eax      # 0xc174
je 0x5361
cmpl 0x6f80(%rip), %eax      # 0xc1e0
je 0x5361
movq 0x10(%rsp), %rcx
cmpb $0x23, (%rcx)
jne 0x537a
movl $0x1, %edx
leaq 0x10(%rsp), %rdi
xorl %esi, %esi
callq 0x2030
cmpl $-0x1, 0x34(%rbp)
je 0x623a
leaq 0x3e8(%rsp), %rax
movq %rax, 0x3d8(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x3d8(%rsp), %rdi
callq 0x7be0
leaq 0x3d8(%rsp), %rdi
callq 0x76eb
movq %rax, %rbx
movq 0x3d8(%rsp), %rdi
leaq 0x3e8(%rsp), %rax
cmpq %rax, %rdi
je 0x52e3
callq 0x2140
cmpq $0xff, %rbx
jg 0x62f7
movzbl 0x34(%rbp), %edi
callq 0x75a2
leaq 0x3c8(%rsp), %rax
movq %rax, 0x3b8(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x3b8(%rsp), %rdi
callq 0x7be0
leaq 0x3b8(%rsp), %rdi
callq 0x76eb
movzbl %al, %edi
callq 0x75a2
movq 0x3b8(%rsp), %rdi
movl $0x1, %r14d
leaq 0x3c8(%rsp), %rax
cmpq %rax, %rdi
je 0x5c75
callq 0x2140
jmp 0x5c75
movl 0x20(%rbp), %eax
cmpl $-0x1, %eax
je 0x6173
movzbl %al, %edi
callq 0x75a2
jmp 0x5c7c
cmpl 0x6de0(%rip), %eax      # 0xc160
je 0x538e
cmpl 0x6de0(%rip), %eax      # 0xc168
jne 0x5c7c
addq $0x3, %rbx
movq 0x6e37(%rip), %rax      # 0xc1d0
subq %r15, %rax
sarq $0x3, %rax
movabsq $-0x3333333333333333, %rcx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rcx, %rax
cmpq %rax, %rbx
jae 0x5802
movl 0x50(%r15,%r13,8), %eax
cmpl 0x6db6(%rip), %eax      # 0xc178
jne 0x5802
leaq (%rbx,%rbx,4), %rax
leaq (%r15,%rax,8), %rdi
addq $0x8, %rdi
leaq 0x3fbf(%rip), %rsi      # 0x939a
callq 0x2050
testl %eax, %eax
jne 0x663f
cmpl $-0x1, 0x38(%rbp)
je 0x54da
movq 0x6eb7(%rip), %rax      # 0xc2b0
movq 0x6dc8(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq 0x3a8(%rsp), %rdx
movq %rdx, 0x398(%rsp)
movq 0x30(%rcx,%rax,8), %rsi
movq 0x38(%rcx,%rax,8), %rdx
addq %rsi, %rdx
leaq 0x398(%rsp), %rdi
callq 0x7be0
leaq 0x398(%rsp), %rdi
callq 0x76eb
movq %rax, %rbx
movq 0x398(%rsp), %rdi
leaq 0x3a8(%rsp), %rax
cmpq %rax, %rdi
je 0x5458
callq 0x2140
cmpq $0xff, %rbx
jg 0x5802
movzbl 0x38(%rbp), %edi
callq 0x75a2
movq 0x6e3b(%rip), %rax      # 0xc2b0
movq 0x6d4c(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq 0x388(%rsp), %rdx
movq %rdx, 0x378(%rsp)
movq 0x30(%rcx,%rax,8), %rsi
movq 0x38(%rcx,%rax,8), %rdx
addq %rsi, %rdx
leaq 0x378(%rsp), %rdi
callq 0x7be0
leaq 0x378(%rsp), %rdi
callq 0x76eb
movzbl %al, %edi
callq 0x75a2
movq 0x378(%rsp), %rdi
movl $0x3, %r14d
leaq 0x388(%rsp), %rax
jmp 0x534e
cmpl $-0x1, 0x3c(%rbp)
je 0x5637
movq 0x6dc5(%rip), %rax      # 0xc2b0
movq 0x6cd6(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq 0x368(%rsp), %rdx
movq %rdx, 0x358(%rsp)
movq 0x30(%rcx,%rax,8), %rsi
movq 0x38(%rcx,%rax,8), %rdx
addq %rsi, %rdx
leaq 0x358(%rsp), %rdi
callq 0x7be0
leaq 0x358(%rsp), %rdi
callq 0x76eb
movq %rax, %rbx
movq 0x358(%rsp), %rdi
leaq 0x368(%rsp), %rax
cmpq %rax, %rdi
je 0x554a
callq 0x2140
cmpq $0xffff, %rbx           # imm = 0xFFFF
jg 0x5802
movzbl 0x3c(%rbp), %edi
callq 0x75a2
movq 0x6d49(%rip), %rax      # 0xc2b0
movq 0x6c5a(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq 0x348(%rsp), %rdx
movq %rdx, 0x338(%rsp)
movq 0x30(%rcx,%rax,8), %rsi
movq 0x38(%rcx,%rax,8), %rdx
addq %rsi, %rdx
leaq 0x338(%rsp), %rdi
callq 0x7be0
leaq 0x338(%rsp), %rdi
callq 0x76eb
movzbl %al, %edi
callq 0x75a2
movq 0x338(%rsp), %rdi
leaq 0x348(%rsp), %rax
cmpq %rax, %rdi
je 0x55cb
callq 0x2140
movq 0x6cde(%rip), %rax      # 0xc2b0
movq 0x6bef(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq 0x328(%rsp), %rdx
movq %rdx, 0x318(%rsp)
movq 0x30(%rcx,%rax,8), %rsi
movq 0x38(%rcx,%rax,8), %rdx
addq %rsi, %rdx
leaq 0x318(%rsp), %rdi
callq 0x7be0
leaq 0x318(%rsp), %rdi
callq 0x76eb
movzbl %ah, %edi
callq 0x75a2
movq 0x318(%rsp), %rdi
movl $0x3, %r14d
leaq 0x328(%rsp), %rax
jmp 0x534e
cmpl $-0x1, 0x40(%rbp)
je 0x5802
movq 0x6c68(%rip), %rax      # 0xc2b0
movq 0x6b79(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq 0x308(%rsp), %rdx
movq %rdx, 0x2f8(%rsp)
movq 0x30(%rcx,%rax,8), %rsi
movq 0x38(%rcx,%rax,8), %rdx
addq %rsi, %rdx
leaq 0x2f8(%rsp), %rdi
callq 0x7be0
leaq 0x2f8(%rsp), %rdi
callq 0x76eb
movq %rax, %rbx
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0x56a7
callq 0x2140
cmpq $0xffffff, %rbx         # imm = 0xFFFFFF
jg 0x6854
movzbl 0x40(%rbp), %edi
callq 0x75a2
movq 0x6bec(%rip), %rax      # 0xc2b0
movq 0x6afd(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq 0x2e8(%rsp), %rdx
movq %rdx, 0x2d8(%rsp)
movq 0x30(%rcx,%rax,8), %rsi
movq 0x38(%rcx,%rax,8), %rdx
addq %rsi, %rdx
leaq 0x2d8(%rsp), %rdi
callq 0x7be0
leaq 0x2d8(%rsp), %rdi
callq 0x76eb
movzbl %al, %edi
callq 0x75a2
movq 0x2d8(%rsp), %rdi
leaq 0x2e8(%rsp), %rax
cmpq %rax, %rdi
je 0x5728
callq 0x2140
movq 0x6b81(%rip), %rax      # 0xc2b0
movq 0x6a92(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq 0x2c8(%rsp), %rdx
movq %rdx, 0x2b8(%rsp)
movq 0x30(%rcx,%rax,8), %rsi
movq 0x38(%rcx,%rax,8), %rdx
addq %rsi, %rdx
leaq 0x2b8(%rsp), %rdi
callq 0x7be0
leaq 0x2b8(%rsp), %rdi
callq 0x76eb
movzbl %ah, %edi
callq 0x75a2
movq 0x2b8(%rsp), %rdi
leaq 0x2c8(%rsp), %rax
cmpq %rax, %rdi
je 0x5793
callq 0x2140
movq 0x6b16(%rip), %rax      # 0xc2b0
movq 0x6a27(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq 0x2a8(%rsp), %rdx
movq %rdx, 0x298(%rsp)
movq 0x30(%rcx,%rax,8), %rsi
movq 0x38(%rcx,%rax,8), %rdx
addq %rsi, %rdx
leaq 0x298(%rsp), %rdi
callq 0x7be0
leaq 0x298(%rsp), %rdi
callq 0x76eb
shrl $0x10, %eax
movzbl %al, %edi
callq 0x75a2
movq 0x298(%rsp), %rdi
movl $0x3, %r14d
leaq 0x2a8(%rsp), %rax
jmp 0x534e
movl 0x44(%rbp), %ebx
cmpl $-0x1, %ebx
je 0x5858
movq 0x6987(%rip), %r15      # 0xc198
leaq 0x288(%rsp), %rax
movq %rax, 0x278(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x278(%rsp), %rdi
callq 0x7be0
leaq 0x278(%rsp), %rdi
callq 0x76eb
subq %rax, %r15
cmpq $0x100, %r15            # imm = 0x100
setb %r15b
jmp 0x585b
xorl %r15d, %r15d
cmpl $-0x1, %ebx
je 0x587a
movq 0x278(%rsp), %rdi
leaq 0x288(%rsp), %rax
cmpq %rax, %rdi
je 0x587a
callq 0x2140
testb %r15b, %r15b
je 0x5953
movq 0x10(%rsp), %rsi
movb (%rsi), %bl
movb $0x1, %r15b
cmpb $0x2d, %bl
je 0x58d2
movslq 0x68ff(%rip), %r14      # 0xc198
leaq 0x268(%rsp), %rax
movq %rax, 0x258(%rsp)
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x258(%rsp), %rdi
callq 0x7be0
leaq 0x258(%rsp), %rdi
callq 0x76eb
cmpq %rax, %r14
setl %r15b
cmpb $0x2d, %bl
je 0x58f1
movq 0x258(%rsp), %rdi
leaq 0x268(%rsp), %rax
cmpq %rax, %rdi
je 0x58f1
callq 0x2140
movq 0x68a0(%rip), %r14      # 0xc198
testb %r15b, %r15b
je 0x59ad
leaq 0x248(%rsp), %rax
movq %rax, 0x238(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x238(%rsp), %rdi
callq 0x7be0
leaq 0x238(%rsp), %rdi
callq 0x76eb
subl %eax, %r14d
movq 0x238(%rsp), %rdi
movl %r14d, %ebx
leaq 0x248(%rsp), %rax
jmp 0x5a00
movl 0x48(%rbp), %ebx
cmpl $-0x1, %ebx
je 0x5a29
movq 0x6832(%rip), %r15      # 0xc198
leaq 0x208(%rsp), %rax
movq %rax, 0x1f8(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1f8(%rsp), %rdi
callq 0x7be0
leaq 0x1f8(%rsp), %rdi
callq 0x76eb
subq %rax, %r15
cmpq $0x10000, %r15          # imm = 0x10000
setb %r15b
jmp 0x5a2c
leaq 0x228(%rsp), %rax
movq %rax, 0x218(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x218(%rsp), %rdi
callq 0x7be0
leaq 0x218(%rsp), %rdi
callq 0x76eb
movq %rax, %rbx
subl %r14d, %ebx
addb $-0x2, %bl
movq 0x218(%rsp), %rdi
movl %ebx, %r14d
leaq 0x228(%rsp), %rax
cmpq %rax, %rdi
je 0x5a0d
callq 0x2140
movl %r14d, %ebx
movzbl 0x44(%rbp), %edi
callq 0x75a2
movl $0x1, %r14d
movzbl %bl, %edi
callq 0x75a2
jmp 0x5c75
xorl %r15d, %r15d
cmpl $-0x1, %ebx
je 0x5a4b
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
cmpq %rax, %rdi
je 0x5a4b
callq 0x2140
testb %r15b, %r15b
je 0x5b24
movq 0x10(%rsp), %rsi
movb (%rsi), %bl
movb $0x1, %r15b
cmpb $0x2d, %bl
je 0x5aa3
movslq 0x672e(%rip), %r14      # 0xc198
leaq 0x1e8(%rsp), %rax
movq %rax, 0x1d8(%rsp)
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1d8(%rsp), %rdi
callq 0x7be0
leaq 0x1d8(%rsp), %rdi
callq 0x76eb
cmpq %rax, %r14
setl %r15b
cmpb $0x2d, %bl
je 0x5ac2
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
cmpq %rax, %rdi
je 0x5ac2
callq 0x2140
movq 0x66cf(%rip), %r14      # 0xc198
testb %r15b, %r15b
je 0x5bf3
leaq 0x1c8(%rsp), %rax
movq %rax, 0x1b8(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1b8(%rsp), %rdi
callq 0x7be0
leaq 0x1b8(%rsp), %rdi
callq 0x76eb
subl %eax, %r14d
movq 0x1b8(%rsp), %rdi
movl %r14d, %ebx
leaq 0x1c8(%rsp), %rax
jmp 0x5c49
leaq 0x188(%rsp), %rax
movq %rax, 0x178(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x178(%rsp), %rdi
callq 0x7be0
leaq 0x178(%rsp), %rdi
callq 0x76eb
movq %rax, %rbx
movq 0x178(%rsp), %rdi
leaq 0x188(%rsp), %rax
cmpq %rax, %rdi
je 0x5b78
callq 0x2140
cmpq $0xff, %rbx
jg 0x5c9f
movl 0x24(%rbp), %eax
cmpl $-0x1, %eax
je 0x6785
movzbl %al, %edi
callq 0x75a2
leaq 0x168(%rsp), %rax
movq %rax, 0x158(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x158(%rsp), %rdi
callq 0x7be0
leaq 0x158(%rsp), %rdi
callq 0x76eb
movzbl %al, %edi
callq 0x75a2
movq 0x158(%rsp), %rdi
movl $0x1, %r14d
leaq 0x168(%rsp), %rax
jmp 0x534e
leaq 0x1a8(%rsp), %rax
movq %rax, 0x198(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x198(%rsp), %rdi
callq 0x7be0
leaq 0x198(%rsp), %rdi
callq 0x76eb
movq %rax, %rbx
subl %r14d, %ebx
addl $0xfffe, %ebx           # imm = 0xFFFE
movq 0x198(%rsp), %rdi
movl %ebx, %r14d
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x5c56
callq 0x2140
movl %r14d, %ebx
movzbl 0x48(%rbp), %edi
callq 0x75a2
movzbl %bl, %edi
callq 0x75a2
movl $0x1, %r14d
movzbl %bh, %edi
callq 0x75a2
addq %r14, 0x6634(%rip)      # 0xc2b0
cmpq $0x57, %r12
leaq 0x1(%r12), %rax
setae %r14b
addq $0x50, %rbp
movq %rax, %r12
cmpq $0x58, %rax
jne 0x5204
jmp 0x6337
leaq 0x148(%rsp), %rax
movq %rax, 0x138(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x138(%rsp), %rdi
callq 0x7be0
leaq 0x138(%rsp), %rdi
callq 0x76eb
movq %rax, %rbx
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
cmpq %rax, %rdi
je 0x5cf3
callq 0x2140
cmpq $0xffff, %rbx           # imm = 0xFFFF
jg 0x5dc7
movl 0x28(%rbp), %eax
cmpl $-0x1, %eax
je 0x67ce
movzbl %al, %edi
callq 0x75a2
leaq 0x128(%rsp), %rax
movq %rax, 0x118(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x118(%rsp), %rdi
callq 0x7be0
leaq 0x118(%rsp), %rdi
callq 0x76eb
movzbl %al, %edi
callq 0x75a2
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x5d6d
callq 0x2140
leaq 0x108(%rsp), %rax
movq %rax, 0xf8(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0xf8(%rsp), %rdi
callq 0x7be0
leaq 0xf8(%rsp), %rdi
callq 0x76eb
movzbl %ah, %edi
callq 0x75a2
movq 0xf8(%rsp), %rdi
movl $0x1, %r14d
leaq 0x108(%rsp), %rax
jmp 0x534e
leaq 0xe8(%rsp), %rax
movq %rax, 0xd8(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0xd8(%rsp), %rdi
callq 0x7be0
leaq 0xd8(%rsp), %rdi
callq 0x76eb
movq %rax, %rbx
movq 0xd8(%rsp), %rdi
leaq 0xe8(%rsp), %rax
cmpq %rax, %rdi
je 0x5e1b
callq 0x2140
cmpq $0xffffff, %rbx         # imm = 0xFFFFFF
jg 0x5c7c
movl 0x2c(%rbp), %eax
cmpl $-0x1, %eax
je 0x6817
movzbl %al, %edi
callq 0x75a2
leaq 0xc8(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0xb8(%rsp), %rdi
callq 0x7be0
leaq 0xb8(%rsp), %rdi
callq 0x76eb
movzbl %al, %edi
callq 0x75a2
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0x5e95
callq 0x2140
leaq 0xa8(%rsp), %rax
movq %rax, 0x98(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x98(%rsp), %rdi
callq 0x7be0
leaq 0x98(%rsp), %rdi
callq 0x76eb
movzbl %ah, %edi
callq 0x75a2
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x5eee
callq 0x2140
leaq 0x88(%rsp), %rax
movq %rax, 0x78(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
leaq 0x78(%rsp), %rdi
callq 0x7be0
leaq 0x78(%rsp), %rdi
callq 0x76eb
shrl $0x10, %eax
movzbl %al, %edi
callq 0x75a2
movq 0x78(%rsp), %rdi
movl $0x1, %r14d
leaq 0x88(%rsp), %rax
jmp 0x534e
cmpl 0x6227(%rip), %eax      # 0xc16c
jne 0x63f8
addq $0x8, %rdi
callq 0x21c0
movq 0x6355(%rip), %rax      # 0xc2b0
movq 0x6266(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
leaq 0x428(%rsp), %r13
movq %r13, 0x418(%rsp)
movq 0x8(%rcx,%rax,8), %rsi
movq 0x10(%rcx,%rax,8), %rdx
addq %rsi, %rdx
leaq 0x418(%rsp), %rbx
movq %rbx, %rdi
callq 0x7be0
movq 0x61fe(%rip), %rsi      # 0xc198
movq %rbx, %rdi
callq 0x78af
movq 0x418(%rsp), %rdi
cmpq %r13, %rdi
je 0x63f8
callq 0x2140
jmp 0x63f8
movb $0x1, 0x6244(%rip)      # 0xc208
jmp 0x63f8
movb $0x1, 0x6239(%rip)      # 0xc209
jmp 0x63f8
leaq 0x528(%rsp), %rbx
movq %rbx, 0x518(%rsp)
leaq 0x518(%rsp), %rbp
movq %rbp, %rdi
movq %r13, %rsi
leaq 0x3465(%rip), %rdx      # 0x945f
callq 0x7c70
movl 0x617b(%rip), %esi      # 0xc180
movq %rbp, %rdi
callq 0x71cf
movq 0x518(%rsp), %rdi
cmpq %rbx, %rdi
je 0x601f
callq 0x2140
movb 0x622b(%rip), %al       # 0xc250
movb %al, 0x6205(%rip)       # 0xc230
leaq 0x342e(%rip), %rbp      # 0x9460
jmp 0x60ff
movq 0x5fb2(%rip), %rdi      # 0xbff0
leaq 0x35ce(%rip), %rsi      # 0x9613
jmp 0x63b8
leaq 0x508(%rsp), %rbx
movq %rbx, 0x4f8(%rsp)
leaq 0x4f8(%rsp), %r13
movq %r13, %rdi
movq %rbp, %rsi
leaq 0x33f9(%rip), %rdx      # 0x9468
callq 0x7c70
movl 0x6106(%rip), %esi      # 0xc180
movq %r13, %rdi
callq 0x71cf
movq 0x4f8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x6094
callq 0x2140
movb 0x61b6(%rip), %al       # 0xc250
movb %al, 0x6191(%rip)       # 0xc231
jmp 0x60ff
leaq 0x4e8(%rsp), %rbx
movq %rbx, 0x4d8(%rsp)
leaq 0x4d8(%rsp), %r12
movq %r12, %rdi
movq %r13, %rsi
leaq 0x33ae(%rip), %rdx      # 0x9475
callq 0x7c70
movl 0x60ae(%rip), %esi      # 0xc180
movq %r12, %rdi
callq 0x71cf
movq 0x4d8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x60ec
callq 0x2140
movb 0x615e(%rip), %al       # 0xc250
movb %al, 0x613a(%rip)       # 0xc232
leaq 0x33bf(%rip), %r12      # 0x94be
leaq 0x48(%rsp), %r14
jmp 0x63f8
leaq 0x4c8(%rsp), %rbx
movq %rbx, 0x4b8(%rsp)
leaq 0x4b8(%rsp), %r13
movq %r13, %rdi
movq %r12, %rsi
leaq 0x334f(%rip), %rdx      # 0x947d
callq 0x7c70
movl 0x6047(%rip), %esi      # 0xc180
movq %r13, %rdi
callq 0x71cf
movq 0x4b8(%rsp), %rdi
cmpq %rbx, %rdi
movq %rbp, %r12
je 0x6156
callq 0x2140
movb 0x60f4(%rip), %al       # 0xc250
movb %al, 0x60d1(%rip)       # 0xc233
leaq 0x48(%rsp), %r14
leaq 0x32f2(%rip), %rbp      # 0x9460
jmp 0x63f8
movl $0xe, %edx
movq 0x5e71(%rip), %rdi      # 0xbff0
leaq 0x34cd(%rip), %rsi      # 0x9653
callq 0x2180
movq (%rbp), %rsi
movq 0x8(%rbp), %rdx
movq 0x5e56(%rip), %rdi      # 0xbff0
callq 0x2180
movl $0xe, %edx
leaq 0x34b7(%rip), %rsi      # 0x9662
jmp 0x632f
leaq 0x4a8(%rsp), %rbx
movq %rbx, 0x498(%rsp)
leaq 0x498(%rsp), %r12
movq %r12, %rdi
movq %r13, %rsi
leaq 0x32ac(%rip), %rdx      # 0x9481
callq 0x7c70
movl 0x5fa4(%rip), %esi      # 0xc184
movq %r12, %rdi
callq 0x71cf
movq 0x498(%rsp), %rdi
cmpq %rbx, %rdi
leaq 0x3266(%rip), %rbp      # 0x9460
je 0x6201
callq 0x2140
movq 0x6048(%rip), %rax      # 0xc250
movq %rax, 0x5f89(%rip)      # 0xc198
cmpb $0x0, 0x6033(%rip)      # 0xc249
leaq 0x32a1(%rip), %r12      # 0x94be
leaq 0x48(%rsp), %r14
je 0x68d6
cmpb $0x0, 0x6019(%rip)      # 0xc248
jne 0x63f8
jmp 0x68d6
movl $0xe, %edx
movq 0x5daa(%rip), %rdi      # 0xbff0
leaq 0x3406(%rip), %rsi      # 0x9653
callq 0x2180
movq (%rbp), %rsi
movq 0x8(%rbp), %rdx
movq 0x5d8f(%rip), %rdi      # 0xbff0
callq 0x2180
movl $0x17, %edx
leaq 0x341b(%rip), %rsi      # 0x968d
jmp 0x632f
leaq 0x488(%rsp), %rbx
movq %rbx, 0x478(%rsp)
leaq 0x478(%rsp), %r13
movq %r13, %rdi
movq %r12, %rsi
leaq 0x322a(%rip), %rdx      # 0x94c6
callq 0x7c70
movl 0x5edd(%rip), %esi      # 0xc184
movq %r13, %rdi
callq 0x71cf
leaq 0x31aa(%rip), %rbp      # 0x9460
movq 0x478(%rsp), %rdi
cmpq %rbx, %rdi
je 0x62c8
callq 0x2140
movq 0x5f81(%rip), %rsi      # 0xc250
movq %rsi, 0x5f62(%rip)      # 0xc238
movb $0x1, 0x5f6c(%rip)      # 0xc249
movzbl 0x5f52(%rip), %eax      # 0xc236
testq %rax, %rax
leaq 0x48(%rsp), %r14
jne 0x64b7
jmp 0x63f8
movl $0xe, %edx
movq 0x5ced(%rip), %rdi      # 0xbff0
leaq 0x3349(%rip), %rsi      # 0x9653
callq 0x2180
movq (%rbp), %rsi
movq 0x8(%rbp), %rdx
movq 0x5cd2(%rip), %rdi      # 0xbff0
callq 0x2180
movl $0x1b, %edx
leaq 0x3342(%rip), %rsi      # 0x9671
movq %rax, %rdi
callq 0x2180
testb $0x1, %r14b
leaq 0x48(%rsp), %r13
leaq 0x408(%rsp), %r15
je 0x63c9
movb $0x1, %bl
cmpl $0x0, 0x34(%rsp)
leaq 0x20(%rsp), %r14
leaq 0x3103(%rip), %rbp      # 0x9460
leaq 0x315a(%rip), %r12      # 0x94be
jne 0x63de
movl $0x16, %edx
movq 0x5c7e(%rip), %rdi      # 0xbff0
leaq 0x33b2(%rip), %rsi      # 0x972b
callq 0x2180
movq 0x5f2b(%rip), %rax      # 0xc2b0
movq 0x5e3c(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
movq 0x8(%rcx,%rax,8), %rsi
movq 0x10(%rcx,%rax,8), %rdx
movq 0x5c4f(%rip), %rdi      # 0xbff0
callq 0x2180
movq %rax, %rdi
movl $0x1, %edx
leaq 0x305d(%rip), %rsi      # 0x9412
movq %r13, %r14
movq %r14, %r13
callq 0x2180
xorl %ebx, %ebx
leaq 0x20(%rsp), %r14
jmp 0x63de
xorl %ebx, %ebx
leaq 0x20(%rsp), %r14
leaq 0x3089(%rip), %rbp      # 0x9460
leaq 0x30e0(%rip), %r12      # 0x94be
movq 0x10(%rsp), %rdi
cmpq %r14, %rdi
je 0x63ed
callq 0x2140
testb %bl, %bl
movq %r13, %r14
je 0x68bf
movq 0x5eb1(%rip), %rsi      # 0xc2b0
incq %rsi
movq 0x5dc7(%rip), %rax      # 0xc1d0
movq 0x5db8(%rip), %rcx      # 0xc1c8
subq %rcx, %rax
sarq $0x3, %rax
movabsq $-0x3333333333333333, %rdx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rdx, %rax
mulq %rdx
movq %rsi, 0x5e81(%rip)      # 0xc2b0
shrq $0x5, %rdx
cmpq %rdx, %rsi
jb 0x4e58
jmp 0x4e34
leaq 0x468(%rsp), %rbx
movq %rbx, 0x458(%rsp)
leaq 0x458(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
leaq 0x3069(%rip), %rdx      # 0x94cf
callq 0x7c70
movl 0x5d73(%rip), %esi      # 0xc1e4
movq %r14, %rdi
callq 0x71cf
movq 0x458(%rsp), %rdi
cmpq %rbx, %rdi
je 0x648b
callq 0x2140
movq 0x5dbe(%rip), %rax      # 0xc250
movb %al, 0x5d9e(%rip)       # 0xc236
movb $0x1, 0x5da9(%rip)      # 0xc248
movq 0x5d92(%rip), %rsi      # 0xc238
testq %rsi, %rsi
leaq 0x48(%rsp), %r14
je 0x63f8
movzbl %al, %eax
imulq %rax, %rsi
leaq 0x5d96(%rip), %rdi      # 0xc258
callq 0x7bb4
jmp 0x63f8
leaq 0x448(%rsp), %rbx
movq %rbx, 0x438(%rsp)
leaq 0x438(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
leaq 0x2fe3(%rip), %rdx      # 0x94d4
callq 0x7c70
movl 0x5ce8(%rip), %esi      # 0xc1e4
movq %r14, %rdi
callq 0x71cf
movq 0x438(%rsp), %rdi
cmpq %rbx, %rdi
je 0x6516
callq 0x2140
movq 0x5d33(%rip), %rax      # 0xc250
movq %rax, 0x5d1c(%rip)      # 0xc240
movq 0x5c65(%rip), %rcx      # 0xc190
leaq 0x1(%rax), %rdx
imulq %rcx, %rdx
movq %rdx, 0x5c5e(%rip)      # 0xc198
cmpb $0x0, 0x5d07(%rip)      # 0xc248
leaq 0x48(%rsp), %r14
je 0x68eb
cmpb $0x0, 0x5cf6(%rip)      # 0xc249
je 0x68fb
movzbl 0x5cd6(%rip), %edx      # 0xc236
cmpq %rdx, %rax
jae 0x6910
imulq 0x5cc7(%rip), %rax      # 0xc238
addq %rcx, %rax
movq %rax, 0x5c1d(%rip)      # 0xc198
jmp 0x63f8
leaq 0x8(%rsp), %rdi
callq 0x7414
movl 0x8(%rsp), %ebx
movl 0x5be8(%rip), %ebp      # 0xc17c
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x65a8
callq 0x2140
cmpl %ebp, %ebx
jne 0x6925
movb $0x1, 0x5c53(%rip)      # 0xc20a
leaq 0x8(%rsp), %rdi
callq 0x7414
leaq 0x68(%rsp), %rcx
movq %rcx, 0x58(%rsp)
movq 0x10(%rsp), %rax
leaq 0x20(%rsp), %rdx
cmpq %rdx, %rax
je 0x669f
movq %rax, 0x58(%rsp)
movq 0x20(%rsp), %rax
movq %rax, 0x68(%rsp)
jmp 0x66a5
movl 0x5b88(%rip), %ebx      # 0xc180
movq %r15, 0x3f8(%rsp)
leaq 0x3f8(%rsp), %r14
movq %r14, %rdi
movq %r13, %rsi
leaq 0x2faf(%rip), %rdx      # 0x95c4
callq 0x7c70
movl %ebx, %edi
movq %r14, %rsi
callq 0x7499
movq 0x3f8(%rsp), %rdi
cmpq %r15, %rdi
leaq 0x48(%rsp), %r14
jne 0x5fb3
jmp 0x63f8
movl $0x1f, %edx
movq 0x59a5(%rip), %rax      # 0xbff0
leaq 0x306f(%rip), %rsi      # 0x96c1
jmp 0x632f
movl 0x5b26(%rip), %r14d     # 0xc184
leaq 0x48(%rsp), %rbx
movq %rbx, 0x38(%rsp)
leaq 0x38(%rsp), %rdi
movq %r13, %rsi
leaq 0x2f50(%rip), %rdx      # 0x95c7
callq 0x7c70
movl %r14d, %edi
leaq 0x38(%rsp), %rsi
callq 0x7499
movq 0x38(%rsp), %rdi
cmpq %rbx, %rdi
movq %rbx, %r14
jne 0x5fb3
jmp 0x63f8
movups (%rdx), %xmm0
movups %xmm0, (%rcx)
leaq 0x408(%rsp), %r15
movq 0x18(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x58(%rsp), %rax
cmpb $0x22, (%rax)
sete %bl
leaq 0x2d97(%rip), %rbp      # 0x9460
je 0x6752
movl $0x1, %r14d
movsbl (%rax), %edx
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movl $0x1, %esi
leaq 0x8(%rsp), %rdi
callq 0x2190
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0x5b0e(%rip), %rdi      # 0xc210
callq 0x2060
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x671b
callq 0x2140
cmpq $0x16, %r14
je 0x673a
movq 0x58(%rsp), %rax
cmpb $0x22, (%rax,%r14)
leaq (%rax,%r14), %rax
leaq 0x1(%r14), %r14
sete %bl
jne 0x66d5
jmp 0x6752
movl $0x2e, %edx
movq 0x58aa(%rip), %rdi      # 0xbff0
leaq 0x2e46(%rip), %rsi      # 0x9593
callq 0x2180
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x6766
callq 0x2140
testb $0x1, %bl
leaq 0x48(%rsp), %r14
jne 0x63f8
jmp 0x68bf
movb $0x0, 0x5ab4(%rip)      # 0xc234
jmp 0x60ff
movl $0xe, %edx
movq 0x585f(%rip), %rdi      # 0xbff0
leaq 0x2ebb(%rip), %rsi      # 0x9653
callq 0x2180
movq (%rbp), %rsi
movq 0x8(%rbp), %rdx
movq 0x5844(%rip), %rdi      # 0xbff0
callq 0x2180
movl $0x17, %edx
leaq 0x2f24(%rip), %rsi      # 0x96e1
jmp 0x632f
movb $0x1, 0x5a6b(%rip)      # 0xc234
jmp 0x60ff
movl $0xe, %edx
movq 0x5816(%rip), %rdi      # 0xbff0
leaq 0x2e72(%rip), %rsi      # 0x9653
callq 0x2180
movq (%rbp), %rsi
movq 0x8(%rbp), %rdx
movq 0x57fb(%rip), %rdi      # 0xbff0
callq 0x2180
movl $0x18, %edx
leaq 0x2ef3(%rip), %rsi      # 0x96f9
jmp 0x632f
movb $0x0, 0x5a23(%rip)      # 0xc235
jmp 0x63f8
movl $0xe, %edx
movq 0x57cd(%rip), %rdi      # 0xbff0
leaq 0x2e29(%rip), %rsi      # 0x9653
callq 0x2180
movq (%rbp), %rsi
movq 0x8(%rbp), %rdx
movq 0x57b2(%rip), %rdi      # 0xbff0
callq 0x2180
movl $0x18, %edx
leaq 0x2ec3(%rip), %rsi      # 0x9712
jmp 0x632f
movl $0x1b, %edx
movq 0x5790(%rip), %rax      # 0xbff0
leaq 0x2e3e(%rip), %rsi      # 0x96a5
jmp 0x632f
movq 0x577d(%rip), %rbx      # 0xbff0
leaq 0x2d84(%rip), %rsi      # 0x95fe
movl $0x14, %edx
movq %rbx, %rdi
callq 0x2180
movq 0x5a22(%rip), %rax      # 0xc2b0
movq 0x5933(%rip), %rcx      # 0xc1c8
leaq (%rax,%rax,4), %rax
movq 0x8(%rcx,%rax,8), %rsi
movq 0x10(%rcx,%rax,8), %rdx
movq %rbx, %rdi
callq 0x2180
leaq 0x2b60(%rip), %rsi      # 0x9412
movl $0x1, %edx
movq %rax, %rdi
callq 0x2180
movl $0x1, %eax
addq $0x538, %rsp            # imm = 0x538
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x5713(%rip), %rdi      # 0xbff0
leaq 0x2b9e(%rip), %rsi      # 0x9482
movl $0x3b, %edx
jmp 0x68ba
movq 0x56fe(%rip), %rdi      # 0xbff0
leaq 0x2bdc(%rip), %rsi      # 0x94d5
jmp 0x6909
movq 0x56ee(%rip), %rdi      # 0xbff0
leaq 0x2bfe(%rip), %rsi      # 0x9507
movl $0x31, %edx
jmp 0x68ba
movq 0x56d9(%rip), %rdi      # 0xbff0
leaq 0x2c1b(%rip), %rsi      # 0x9539
movl $0x32, %edx
jmp 0x68ba
movq 0x56c4(%rip), %rdi      # 0xbff0
leaq 0x2c3e(%rip), %rsi      # 0x9571
movl $0x21, %edx
jmp 0x68ba
movq 0x568f(%rip), %rbx      # 0xbfd0
leaq 0x2c9c(%rip), %rsi      # 0x95e4
movl $0x19, %edx
jmp 0x687f
jmp 0x6b6b
movq %rax, %r14
movq 0x38(%rsp), %rdi
jmp 0x6c84
movq %rax, %r14
movq 0x3f8(%rsp), %rdi
cmpq %r15, %rdi
jne 0x6ceb
jmp 0x6cf0
movq %rax, %r14
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x438(%rsp), %rdi
jmp 0x6c84
movq %rax, %r14
movq 0x458(%rsp), %rdi
jmp 0x6c84
movq %rax, %r14
movq 0x298(%rsp), %rdi
leaq 0x2a8(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x2b8(%rsp), %rdi
leaq 0x2c8(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x2d8(%rsp), %rdi
leaq 0x2e8(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0xd8(%rsp), %rdi
leaq 0xe8(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x318(%rsp), %rdi
leaq 0x328(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x338(%rsp), %rdi
leaq 0x348(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x358(%rsp), %rdi
leaq 0x368(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x478(%rsp), %rdi
jmp 0x6c84
movq %rax, %r14
movq 0x498(%rsp), %rdi
jmp 0x6c84
movq %rax, %r14
movq 0xf8(%rsp), %rdi
leaq 0x108(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x1b8(%rsp), %rdi
leaq 0x1c8(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x1d8(%rsp), %rdi
leaq 0x1e8(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x138(%rsp), %rdi
leaq 0x148(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x6b6e
callq 0x2140
jmp 0x6b6e
movq %rax, %r14
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
jmp 0x6ce6
movq %rax, %r14
movq 0x378(%rsp), %rdi
leaq 0x388(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x398(%rsp), %rdi
leaq 0x3a8(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x4b8(%rsp), %rdi
jmp 0x6c84
movq %rax, %r14
movq 0x158(%rsp), %rdi
leaq 0x168(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x238(%rsp), %rdi
leaq 0x248(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x218(%rsp), %rdi
leaq 0x228(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x258(%rsp), %rdi
leaq 0x268(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x178(%rsp), %rdi
leaq 0x188(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x4d8(%rsp), %rdi
jmp 0x6c84
movq %rax, %r14
movq 0x1f8(%rsp), %rdi
leaq 0x208(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x4f8(%rsp), %rdi
jmp 0x6c84
movq %rax, %r14
movq 0x278(%rsp), %rdi
leaq 0x288(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x518(%rsp), %rdi
cmpq %rbx, %rdi
jne 0x6ceb
jmp 0x6cf0
jmp 0x6cd9
jmp 0x6cd9
movq %rax, %r14
movq 0x418(%rsp), %rdi
cmpq %r13, %rdi
jne 0x6ceb
jmp 0x6cf0
jmp 0x6cd9
jmp 0x6cd9
movq %rax, %r14
movq 0x3d8(%rsp), %rdi
leaq 0x3e8(%rsp), %rax
jmp 0x6ccd
movq %rax, %r14
movq 0x3b8(%rsp), %rdi
leaq 0x3c8(%rsp), %rax
cmpq %rax, %rdi
je 0x6cdc
callq 0x2140
jmp 0x6cdc
movq %rax, %r14
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x6cf0
callq 0x2140
movq %r14, %rdi
callq 0x2250