// File: 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:
subq $0x8e8, %rsp            # imm = 0x8E8
movq $0x0, 0xd30e(%rip) # 0x16330
movq 0xd307(%rip), %rax      # 0x16330
movq %rax, 0x2a8(%rsp)
leaq 0xd210(%rip), %rdi      # 0x16248
callq 0xd320
movl $0x28, %ecx
xorl %edx, %edx
divq %rcx
movq %rax, %rcx
movq 0x2a8(%rsp), %rax
cmpq %rcx, %rax
jae 0xbb00
movq 0xd2ce(%rip), %rsi      # 0x16330
leaq 0xd1df(%rip), %rdi      # 0x16248
callq 0xd300
movl (%rax), %eax
cmpl 0xd16e(%rip), %eax      # 0x161e4
jne 0x9fab
movq 0xd2ad(%rip), %rsi      # 0x16330
leaq 0xd1be(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x8149(%rip), %rsi      # 0x111e6
callq 0xd340
testb $0x1, %al
jne 0x90a8
jmp 0x90b4
movb $0x1, 0xd1d9(%rip)      # 0x16288
jmp 0x9fa6
movq 0xd275(%rip), %rsi      # 0x16330
leaq 0xd186(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x811b(%rip), %rsi      # 0x111f0
callq 0xd340
testb $0x1, %al
jne 0x90e0
jmp 0x90ec
movb $0x1, 0xd1a2(%rip)      # 0x16289
jmp 0x9fa4
movq 0xd23d(%rip), %rsi      # 0x16330
leaq 0xd14e(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x80e7(%rip), %rsi      # 0x111f4
callq 0xd340
testb $0x1, %al
jne 0x911b
jmp 0x91d8
leaq 0x8bf(%rsp), %rdi
movq %rdi, 0x2a0(%rsp)
callq 0x2330
movq 0x2a0(%rsp), %rdx
leaq 0x80b5(%rip), %rsi      # 0x111f4
leaq 0x8c0(%rsp), %rdi
callq 0x2250
jmp 0x914e
movl 0xd0ac(%rip), %esi      # 0x16200
leaq 0x8c0(%rsp), %rdi
callq 0xc270
jmp 0x9163
leaq 0x8c0(%rsp), %rdi
callq 0x23a8
leaq 0x8bf(%rsp), %rdi
callq 0x21d0
movq 0xd14c(%rip), %rax      # 0x162d0
movb %al, 0xd126(%rip)       # 0x162b0
jmp 0x9fa2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
jmp 0x91c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x8c0(%rsp), %rdi
callq 0x23a8
leaq 0x8bf(%rsp), %rdi
callq 0x21d0
jmp 0xbb1a
movq 0xd151(%rip), %rsi      # 0x16330
leaq 0xd062(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x8003(%rip), %rsi      # 0x111fc
callq 0xd340
testb $0x1, %al
jne 0x9207
jmp 0x92c4
leaq 0x887(%rsp), %rdi
movq %rdi, 0x298(%rsp)
callq 0x2330
movq 0x298(%rsp), %rdx
leaq 0x7fd1(%rip), %rsi      # 0x111fc
leaq 0x888(%rsp), %rdi
callq 0x2250
jmp 0x923a
movl 0xcfc0(%rip), %esi      # 0x16200
leaq 0x888(%rsp), %rdi
callq 0xc270
jmp 0x924f
leaq 0x888(%rsp), %rdi
callq 0x23a8
leaq 0x887(%rsp), %rdi
callq 0x21d0
movq 0xd060(%rip), %rax      # 0x162d0
movb %al, 0xd03b(%rip)       # 0x162b1
jmp 0x9fa0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
jmp 0x92b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x888(%rsp), %rdi
callq 0x23a8
leaq 0x887(%rsp), %rdi
callq 0x21d0
jmp 0xbb1a
movq 0xd065(%rip), %rsi      # 0x16330
leaq 0xcf76(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x7f20(%rip), %rsi      # 0x11205
callq 0xd340
testb $0x1, %al
jne 0x92f3
jmp 0x93b0
leaq 0x85f(%rsp), %rdi
movq %rdi, 0x290(%rsp)
callq 0x2330
movq 0x290(%rsp), %rdx
leaq 0x7eee(%rip), %rsi      # 0x11205
leaq 0x860(%rsp), %rdi
callq 0x2250
jmp 0x9326
movl 0xced4(%rip), %esi      # 0x16200
leaq 0x860(%rsp), %rdi
callq 0xc270
jmp 0x933b
leaq 0x860(%rsp), %rdi
callq 0x23a8
leaq 0x85f(%rsp), %rdi
callq 0x21d0
movq 0xcf74(%rip), %rax      # 0x162d0
movb %al, 0xcf50(%rip)       # 0x162b2
jmp 0x9f9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
jmp 0x939e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x860(%rsp), %rdi
callq 0x23a8
leaq 0x85f(%rsp), %rdi
callq 0x21d0
jmp 0xbb1a
movq 0xcf79(%rip), %rsi      # 0x16330
leaq 0xce8a(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x7e41(%rip), %rsi      # 0x11212
callq 0xd340
testb $0x1, %al
jne 0x93df
jmp 0x949c
leaq 0x837(%rsp), %rdi
movq %rdi, 0x288(%rsp)
callq 0x2330
movq 0x288(%rsp), %rdx
leaq 0x7e0f(%rip), %rsi      # 0x11212
leaq 0x838(%rsp), %rdi
callq 0x2250
jmp 0x9412
movl 0xcde8(%rip), %esi      # 0x16200
leaq 0x838(%rsp), %rdi
callq 0xc270
jmp 0x9427
leaq 0x838(%rsp), %rdi
callq 0x23a8
leaq 0x837(%rsp), %rdi
callq 0x21d0
movq 0xce88(%rip), %rax      # 0x162d0
movb %al, 0xce65(%rip)       # 0x162b3
jmp 0x9f9c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
jmp 0x948a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x838(%rsp), %rdi
callq 0x23a8
leaq 0x837(%rsp), %rdi
callq 0x21d0
jmp 0xbb1a
movq 0xce8d(%rip), %rsi      # 0x16330
leaq 0xcd9e(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x7d5d(%rip), %rsi      # 0x1121a
callq 0xd340
testb $0x1, %al
jne 0x94cb
jmp 0x95cc
leaq 0x80f(%rsp), %rdi
movq %rdi, 0x280(%rsp)
callq 0x2330
movq 0x280(%rsp), %rdx
leaq 0x7d2b(%rip), %rsi      # 0x1121a
leaq 0x810(%rsp), %rdi
callq 0x2250
jmp 0x94fe
movl 0xcd00(%rip), %esi      # 0x16204
leaq 0x810(%rsp), %rdi
callq 0xc270
jmp 0x9513
leaq 0x810(%rsp), %rdi
callq 0x23a8
leaq 0x80f(%rsp), %rdi
callq 0x21d0
movq 0xcd9c(%rip), %rax      # 0x162d0
movq %rax, 0xccdd(%rip)      # 0x16218
movb 0xcd88(%rip), %al       # 0x162c9
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x955b
movb 0xcd77(%rip), %al       # 0x162c8
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x95c7
movq 0xca8e(%rip), %rdi      # 0x15ff0
leaq 0x7cb5(%rip), %rsi      # 0x1121e
callq 0x21b0
movl $0x1, 0x8e4(%rsp)
jmp 0xbb0b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
jmp 0x95b5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x810(%rsp), %rdi
callq 0x23a8
leaq 0x80f(%rsp), %rdi
callq 0x21d0
jmp 0xbb1a
jmp 0x9f9a
movq 0xcd5d(%rip), %rsi      # 0x16330
leaq 0xcc6e(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x7c6d(%rip), %rsi      # 0x1125a
callq 0xd340
testb $0x1, %al
jne 0x95fb
jmp 0x96eb
leaq 0x7e7(%rsp), %rdi
movq %rdi, 0x278(%rsp)
callq 0x2330
movq 0x278(%rsp), %rdx
leaq 0x7c3b(%rip), %rsi      # 0x1125a
leaq 0x7e8(%rsp), %rdi
callq 0x2250
jmp 0x962e
movl 0xcbd0(%rip), %esi      # 0x16204
leaq 0x7e8(%rsp), %rdi
callq 0xc270
jmp 0x9643
leaq 0x7e8(%rsp), %rdi
callq 0x23a8
leaq 0x7e7(%rsp), %rdi
callq 0x21d0
movq 0xcc6c(%rip), %rax      # 0x162d0
movq %rax, 0xcc4d(%rip)      # 0x162b8
movb $0x1, 0xcc57(%rip)      # 0x162c9
movzbl 0xcc3d(%rip), %eax      # 0x162b6
cmpl $0x0, %eax
je 0x96e6
movzbl 0xcc31(%rip), %eax      # 0x162b6
movl %eax, %esi
imulq 0xcc29(%rip), %rsi      # 0x162b8
leaq 0xcc42(%rip), %rdi      # 0x162d8
callq 0xd370
jmp 0x96e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
jmp 0x96d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x7e8(%rsp), %rdi
callq 0x23a8
leaq 0x7e7(%rsp), %rdi
callq 0x21d0
jmp 0xbb1a
jmp 0x9f98
movq 0xcc3e(%rip), %rsi      # 0x16330
leaq 0xcb4f(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x7b57(%rip), %rsi      # 0x11263
callq 0xd340
testb $0x1, %al
jne 0x971a
jmp 0x9807
leaq 0x7bf(%rsp), %rdi
movq %rdi, 0x270(%rsp)
callq 0x2330
movq 0x270(%rsp), %rdx
leaq 0x7b25(%rip), %rsi      # 0x11263
leaq 0x7c0(%rsp), %rdi
callq 0x2250
jmp 0x974d
movl 0xcb11(%rip), %esi      # 0x16264
leaq 0x7c0(%rsp), %rdi
callq 0xc270
jmp 0x9762
leaq 0x7c0(%rsp), %rdi
callq 0x23a8
leaq 0x7bf(%rsp), %rdi
callq 0x21d0
movq 0xcb4d(%rip), %rax      # 0x162d0
movb %al, 0xcb2d(%rip)       # 0x162b6
movb $0x1, 0xcb38(%rip)      # 0x162c8
cmpq $0x0, 0xcb20(%rip)      # 0x162b8
je 0x9802
movzbl 0xcb15(%rip), %eax      # 0x162b6
movl %eax, %esi
imulq 0xcb0d(%rip), %rsi      # 0x162b8
leaq 0xcb26(%rip), %rdi      # 0x162d8
callq 0xd370
jmp 0x9802
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
jmp 0x97f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x7c0(%rsp), %rdi
callq 0x23a8
leaq 0x7bf(%rsp), %rdi
callq 0x21d0
jmp 0xbb1a
jmp 0x9f96
movq 0xcb22(%rip), %rsi      # 0x16330
leaq 0xca33(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x7a44(%rip), %rsi      # 0x1126c
callq 0xd340
testb $0x1, %al
jne 0x9836
jmp 0x99cc
leaq 0x797(%rsp), %rdi
movq %rdi, 0x268(%rsp)
callq 0x2330
movq 0x268(%rsp), %rdx
leaq 0x7a12(%rip), %rsi      # 0x1126c
leaq 0x798(%rsp), %rdi
callq 0x2250
jmp 0x9869
movl 0xc9f5(%rip), %esi      # 0x16264
leaq 0x798(%rsp), %rdi
callq 0xc270
jmp 0x987e
leaq 0x798(%rsp), %rdi
callq 0x23a8
leaq 0x797(%rsp), %rdi
callq 0x21d0
movq 0xca31(%rip), %rax      # 0x162d0
movq %rax, 0xca1a(%rip)      # 0x162c0
movq 0xc963(%rip), %rax      # 0x16210
movq 0xca0c(%rip), %rcx      # 0x162c0
addq $0x1, %rcx
imulq %rcx, %rax
movq %rax, 0xc955(%rip)      # 0x16218
movb 0xc9ff(%rip), %al       # 0x162c8
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x993f
movq 0xc716(%rip), %rdi      # 0x15ff0
leaq 0x7990(%rip), %rsi      # 0x11271
callq 0x21b0
movl $0x1, 0x8e4(%rsp)
jmp 0xbb0b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
jmp 0x992d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x798(%rsp), %rdi
callq 0x23a8
leaq 0x797(%rsp), %rdi
callq 0x21d0
jmp 0xbb1a
movb 0xc984(%rip), %al       # 0x162c9
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x9972
movq 0xc69a(%rip), %rdi      # 0x15ff0
leaq 0x7946(%rip), %rsi      # 0x112a3
callq 0x21b0
movl $0x1, 0x8e4(%rsp)
jmp 0xbb0b
jmp 0x9974
movq 0xc945(%rip), %rax      # 0x162c0
movzbl 0xc934(%rip), %ecx      # 0x162b6
cmpq %rcx, %rax
jb 0x99aa
movq 0xc662(%rip), %rdi      # 0x15ff0
leaq 0x7940(%rip), %rsi      # 0x112d5
callq 0x21b0
movl $0x1, 0x8e4(%rsp)
jmp 0xbb0b
movq 0xc907(%rip), %rax      # 0x162b8
imulq 0xc907(%rip), %rax      # 0x162c0
addq 0xc850(%rip), %rax      # 0x16210
movq %rax, 0xc851(%rip)      # 0x16218
jmp 0x9f94
movq 0xc95d(%rip), %rsi      # 0x16330
leaq 0xc86e(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x791b(%rip), %rsi      # 0x11308
callq 0xd340
testb $0x1, %al
jne 0x99fb
jmp 0x9c6e
leaq 0x768(%rsp), %rdi
callq 0xc5a0
movl 0x768(%rsp), %eax
movl %eax, 0x264(%rsp)
movl 0xc7e0(%rip), %eax      # 0x161fc
movl %eax, 0x260(%rsp)
leaq 0x768(%rsp), %rdi
callq 0xd410
movl 0x260(%rsp), %ecx
movl 0x264(%rsp), %eax
cmpl %ecx, %eax
je 0x9a65
movq 0xc5a7(%rip), %rdi      # 0x15ff0
leaq 0x78bd(%rip), %rsi      # 0x1130d
callq 0x21b0
movl $0x1, 0x8e4(%rsp)
jmp 0xbb0b
movb $0x1, 0xc81e(%rip)      # 0x1628a
leaq 0x720(%rsp), %rdi
callq 0xc5a0
leaq 0x720(%rsp), %rsi
addq $0x8, %rsi
leaq 0x748(%rsp), %rdi
callq 0x2120
leaq 0x720(%rsp), %rdi
callq 0xd410
movl $0x0, 0x71c(%rsp)
movl 0x71c(%rsp), %eax
movl %eax, %esi
leaq 0x748(%rsp), %rdi
callq 0x2390
movq %rax, 0x258(%rsp)
jmp 0x9aca
movq 0x258(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x22, %eax
je 0x9c2d
movl 0x71c(%rsp), %eax
movl %eax, %esi
leaq 0x748(%rsp), %rdi
callq 0x2390
movq %rax, 0x250(%rsp)
jmp 0x9afe
movq 0x250(%rsp), %rax
movsbl (%rax), %eax
movl %eax, 0x244(%rsp)
leaq 0x6f7(%rsp), %rdi
movq %rdi, 0x248(%rsp)
callq 0x2330
movl 0x244(%rsp), %edx
movq 0x248(%rsp), %rcx
leaq 0x6f8(%rsp), %rdi
movl $0x1, %esi
callq 0x2130
jmp 0x9b48
leaq 0xc741(%rip), %rdi      # 0x16290
leaq 0x6f8(%rsp), %rsi
callq 0x2380
jmp 0x9b5e
leaq 0x6f8(%rsp), %rdi
callq 0x23a8
leaq 0x6f7(%rsp), %rdi
callq 0x21d0
cmpl $0x15, 0x71c(%rsp)
jne 0x9c15
movq 0xc463(%rip), %rdi      # 0x15ff0
leaq 0x779b(%rip), %rsi      # 0x1132f
callq 0x21b0
jmp 0x9b9b
movl $0x1, 0x8e4(%rsp)
movl $0x1, 0x6f0(%rsp)
jmp 0x9c38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
jmp 0x9c5c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
jmp 0x9c06
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x6f8(%rsp), %rdi
callq 0x23a8
leaq 0x6f7(%rsp), %rdi
callq 0x21d0
jmp 0x9c5c
jmp 0x9c17
movl 0x71c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x71c(%rsp)
jmp 0x9aaa
movl $0x0, 0x6f0(%rsp)
leaq 0x748(%rsp), %rdi
callq 0x23a8
movl 0x6f0(%rsp), %eax
testl %eax, %eax
je 0x9c57
jmp 0x9c52
jmp 0xbb0b
jmp 0x9f92
leaq 0x748(%rsp), %rdi
callq 0x23a8
jmp 0xbb1a
movq 0xc6bb(%rip), %rsi      # 0x16330
leaq 0xc5cc(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x76cf(%rip), %rsi      # 0x1135e
callq 0xd340
testb $0x1, %al
jne 0x9c9d
jmp 0x9d5b
movl 0xc55d(%rip), %eax      # 0x16200
movl %eax, 0x234(%rsp)
leaq 0x6cf(%rsp), %rdi
movq %rdi, 0x238(%rsp)
callq 0x2330
movq 0x238(%rsp), %rdx
leaq 0x7690(%rip), %rsi      # 0x1135e
leaq 0x6d0(%rsp), %rdi
callq 0x2250
jmp 0x9cdd
movl 0x234(%rsp), %edi
leaq 0x6d0(%rsp), %rsi
callq 0xc6a0
jmp 0x9cf3
leaq 0x6d0(%rsp), %rdi
callq 0x23a8
leaq 0x6cf(%rsp), %rdi
callq 0x21d0
jmp 0x9f90
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
jmp 0x9d49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x6d0(%rsp), %rdi
callq 0x23a8
leaq 0x6cf(%rsp), %rdi
callq 0x21d0
jmp 0xbb1a
movq 0xc5ce(%rip), %rsi      # 0x16330
leaq 0xc4df(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x75e5(%rip), %rsi      # 0x11361
callq 0xd340
testb $0x1, %al
jne 0x9d8a
jmp 0x9e48
movl 0xc474(%rip), %eax      # 0x16204
movl %eax, 0x224(%rsp)
leaq 0x6a7(%rsp), %rdi
movq %rdi, 0x228(%rsp)
callq 0x2330
movq 0x228(%rsp), %rdx
leaq 0x75a6(%rip), %rsi      # 0x11361
leaq 0x6a8(%rsp), %rdi
callq 0x2250
jmp 0x9dca
movl 0x224(%rsp), %edi
leaq 0x6a8(%rsp), %rsi
callq 0xc6a0
jmp 0x9de0
leaq 0x6a8(%rsp), %rdi
callq 0x23a8
leaq 0x6a7(%rsp), %rdi
callq 0x21d0
jmp 0x9f8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
jmp 0x9e36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x6a8(%rsp), %rdi
callq 0x23a8
leaq 0x6a7(%rsp), %rdi
callq 0x21d0
jmp 0xbb1a
movq 0xc4e1(%rip), %rsi      # 0x16330
leaq 0xc3f2(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x74fb(%rip), %rsi      # 0x11364
callq 0xd340
testb $0x1, %al
jne 0x9e74
jmp 0x9e80
movb $0x0, 0xc439(%rip)      # 0x162b4
jmp 0x9f8c
movq 0xc4a9(%rip), %rsi      # 0x16330
leaq 0xc3ba(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x74c9(%rip), %rsi      # 0x1136a
callq 0xd340
testb $0x1, %al
jne 0x9eac
jmp 0x9eb8
movb $0x1, 0xc401(%rip)      # 0x162b4
jmp 0x9f8a
movq 0xc471(%rip), %rsi      # 0x16330
leaq 0xc382(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x7497(%rip), %rsi      # 0x11370
callq 0xd340
testb $0x1, %al
jne 0x9ee4
jmp 0x9ef0
movb $0x0, 0xc3ca(%rip)      # 0x162b5
jmp 0x9f88
movq 0xc439(%rip), %rsi      # 0x16330
leaq 0xc34a(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x7467(%rip), %rsi      # 0x11378
callq 0xd340
testb $0x1, %al
jne 0x9f1c
jmp 0x9f25
movb $0x1, 0xc392(%rip)      # 0x162b5
jmp 0x9f86
movq 0xc0a4(%rip), %rdi      # 0x15fd0
leaq 0x744d(%rip), %rsi      # 0x11380
callq 0x21b0
movq %rax, 0x218(%rsp)
movq 0xc3e9(%rip), %rsi      # 0x16330
leaq 0xc2fa(%rip), %rdi      # 0x16248
callq 0xd300
movq 0x218(%rsp), %rdi
movq %rax, %rsi
addq $0x8, %rsi
callq 0x2180
movq %rax, %rdi
leaq 0x723d(%rip), %rsi      # 0x111ae
callq 0x21b0
movl $0x1, 0x8e4(%rsp)
jmp 0xbb0b
jmp 0x9f88
jmp 0x9f8a
jmp 0x9f8c
jmp 0x9f8e
jmp 0x9f90
jmp 0x9f92
jmp 0x9f94
jmp 0x9f96
jmp 0x9f98
jmp 0x9f9a
jmp 0x9f9c
jmp 0x9f9e
jmp 0x9fa0
jmp 0x9fa2
jmp 0x9fa4
jmp 0x9fa6
jmp 0xbae7
movq 0xc37e(%rip), %rsi      # 0x16330
leaq 0xc28f(%rip), %rdi      # 0x16248
callq 0xd300
movl (%rax), %eax
cmpl 0xc21a(%rip), %eax      # 0x161e0
je 0x9fe5
movq 0xc361(%rip), %rsi      # 0x16330
leaq 0xc272(%rip), %rdi      # 0x16248
callq 0xd300
movl (%rax), %eax
cmpl 0xc20d(%rip), %eax      # 0x161f0
jne 0xa046
movq 0xc004(%rip), %rdi      # 0x15ff0
leaq 0x73a7(%rip), %rsi      # 0x1139a
callq 0x21b0
movq %rax, 0x210(%rsp)
movq 0xc329(%rip), %rsi      # 0x16330
leaq 0xc23a(%rip), %rdi      # 0x16248
callq 0xd300
movq 0x210(%rsp), %rdi
movq %rax, %rsi
addq $0x8, %rsi
callq 0x2180
movq %rax, %rdi
leaq 0x717d(%rip), %rsi      # 0x111ae
callq 0x21b0
movl $0x1, 0x8e4(%rsp)
jmp 0xbb0b
movq 0xc2e3(%rip), %rsi      # 0x16330
leaq 0xc1f4(%rip), %rdi      # 0x16248
callq 0xd300
movl (%rax), %eax
cmpl 0xc187(%rip), %eax      # 0x161e8
jne 0xba0c
movl $0x0, 0x6a0(%rsp)
leaq 0x678(%rsp), %rdi
callq 0xc5a0
movb 0xc244(%rip), %al       # 0x162c9
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0xa09f
movb 0xc233(%rip), %al       # 0x162c8
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0xa0e8
movq 0xbf4a(%rip), %rdi      # 0x15ff0
leaq 0x7302(%rip), %rsi      # 0x113af
callq 0x21b0
jmp 0xa0b4
movl $0x1, 0x8e4(%rsp)
movl $0x1, 0x6f0(%rsp)
jmp 0xb9d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
jmp 0xb9fa
movl $0x0, 0x674(%rsp)
movl 0x674(%rsp), %eax
cmpq $0x58, %rax
jae 0xb951
movq 0xc225(%rip), %rsi      # 0x16330
leaq 0xc136(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
movl 0x674(%rsp), %eax
leaq 0xc214(%rip), %rsi      # 0x16340
imulq $0x50, %rax, %rax
addq %rax, %rsi
callq 0xd430
testb $0x1, %al
jne 0xa13e
jmp 0xa151
movl 0x6a0(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x6a0(%rsp)
jmp 0xa156
jmp 0xb93b
movl 0x678(%rsp), %eax
cmpl 0xc091(%rip), %eax      # 0x161f4
je 0xa178
movl 0x678(%rsp), %eax
cmpl 0xc0ee(%rip), %eax      # 0x16260
jne 0xa23a
movl 0x674(%rsp), %eax
movl %eax, %ecx
leaq 0xc1b8(%rip), %rax      # 0x16340
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
cmpl $-0x1, 0x20(%rax)
je 0xa1bc
movl 0x674(%rsp), %eax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
leaq 0xc195(%rip), %rcx      # 0x16340
movzbl 0x20(%rax,%rcx), %edi
callq 0xc810
jmp 0xa1b7
jmp 0xb93b
movq 0xbe2d(%rip), %rdi      # 0x15ff0
leaq 0x7225(%rip), %rsi      # 0x113ef
callq 0x21b0
movq %rax, 0x208(%rsp)
jmp 0xa1d9
movq 0x208(%rsp), %rdi
movl 0x674(%rsp), %eax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
leaq 0xc149(%rip), %rsi      # 0x16340
addq %rax, %rsi
callq 0x2180
movq %rax, 0x200(%rsp)
jmp 0xa209
movq 0x200(%rsp), %rdi
leaq 0x71e6(%rip), %rsi      # 0x113fe
callq 0x21b0
jmp 0xa21f
movl $0x1, 0x8e4(%rsp)
movl $0x1, 0x6f0(%rsp)
jmp 0xb9d6
leaq 0x680(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x2390
movq %rax, 0x1f8(%rsp)
jmp 0xa255
movq 0x1f8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x23, %eax
jne 0xa4bf
leaq 0x680(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x1, %edx
callq 0x2040
jmp 0xa281
movl 0x674(%rsp), %eax
movl %eax, %ecx
leaq 0xc0af(%rip), %rax      # 0x16340
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
cmpl $-0x1, 0x34(%rax)
je 0xa441
leaq 0x680(%rsp), %rsi
leaq 0x650(%rsp), %rdi
callq 0x20d0
jmp 0xa2b9
leaq 0x650(%rsp), %rdi
callq 0xc960
movq %rax, 0x1f0(%rsp)
jmp 0xa2d0
leaq 0x650(%rsp), %rdi
callq 0x23a8
movq 0x1f0(%rsp), %rax
cmpq $0x100, %rax            # imm = 0x100
jge 0xa3c3
movl 0x674(%rsp), %eax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
leaq 0xc039(%rip), %rcx      # 0x16340
movzbl 0x34(%rax,%rcx), %edi
callq 0xc810
jmp 0xa313
leaq 0x680(%rsp), %rsi
leaq 0x630(%rsp), %rdi
callq 0x20d0
jmp 0xa32a
leaq 0x630(%rsp), %rdi
callq 0xc960
movq %rax, 0x1e8(%rsp)
jmp 0xa341
movq 0x1e8(%rsp), %rax
movzbl %al, %edi
callq 0xc810
jmp 0xa353
leaq 0x630(%rsp), %rdi
callq 0x23a8
movq 0xbfc9(%rip), %rax      # 0x16330
addq $0x1, %rax
movq %rax, 0xbfbe(%rip)      # 0x16330
jmp 0xb93b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x650(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x630(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq 0xbc26(%rip), %rdi      # 0x15ff0
leaq 0x701e(%rip), %rsi      # 0x113ef
callq 0x21b0
movq %rax, 0x1e0(%rsp)
jmp 0xa3e0
movq 0x1e0(%rsp), %rdi
movl 0x674(%rsp), %eax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
leaq 0xbf42(%rip), %rsi      # 0x16340
addq %rax, %rsi
callq 0x2180
movq %rax, 0x1d8(%rsp)
jmp 0xa410
movq 0x1d8(%rsp), %rdi
leaq 0x6fee(%rip), %rsi      # 0x1140d
callq 0x21b0
jmp 0xa426
movl $0x1, 0x8e4(%rsp)
movl $0x1, 0x6f0(%rsp)
jmp 0xb9d6
movq 0xbba8(%rip), %rdi      # 0x15ff0
leaq 0x6fa0(%rip), %rsi      # 0x113ef
callq 0x21b0
movq %rax, 0x1d0(%rsp)
jmp 0xa45e
movq 0x1d0(%rsp), %rdi
movl 0x674(%rsp), %eax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
leaq 0xbec4(%rip), %rsi      # 0x16340
addq %rax, %rsi
callq 0x2180
movq %rax, 0x1c8(%rsp)
jmp 0xa48e
movq 0x1c8(%rsp), %rdi
leaq 0x6f8c(%rip), %rsi      # 0x11429
callq 0x21b0
jmp 0xa4a4
movl $0x1, 0x8e4(%rsp)
movl $0x1, 0x6f0(%rsp)
jmp 0xb9d6
movl 0x678(%rsp), %eax
cmpl 0xbd14(%rip), %eax      # 0x161e0
je 0xa4e1
movl 0x678(%rsp), %eax
cmpl 0xbd0d(%rip), %eax      # 0x161e8
jne 0xb935
movq 0xbe48(%rip), %rax      # 0x16330
addq $0x3, %rax
movq %rax, 0x1c0(%rsp)
leaq 0xbd4d(%rip), %rdi      # 0x16248
callq 0xd320
movq %rax, %rcx
movq 0x1c0(%rsp), %rax
cmpq %rcx, %rax
jb 0xa515
jmp 0xabd4
movq 0xbe14(%rip), %rsi      # 0x16330
addq $0x2, %rsi
leaq 0xbd21(%rip), %rdi      # 0x16248
callq 0xd300
movl (%rax), %eax
cmpl 0xbcc4(%rip), %eax      # 0x161f8
jne 0xabd2
movq 0xbdef(%rip), %rsi      # 0x16330
addq $0x3, %rsi
leaq 0xbcfc(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
leaq 0x6bd7(%rip), %rsi      # 0x11136
callq 0xd340
movb %al, 0x1bf(%rsp)
jmp 0xa56d
movb 0x1bf(%rsp), %al
testb $0x1, %al
jne 0xa57d
jmp 0xaba0
movl 0x674(%rsp), %eax
movl %eax, %ecx
leaq 0xbdb3(%rip), %rax      # 0x16340
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
cmpl $-0x1, 0x38(%rax)
je 0xa6ee
movq 0xbd8b(%rip), %rsi      # 0x16330
incq %rsi
leaq 0xbc99(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rsi
addq $0x8, %rsi
leaq 0x610(%rsp), %rdi
callq 0x20d0
jmp 0xa5ca
leaq 0x610(%rsp), %rdi
callq 0xc960
movq %rax, 0x1b0(%rsp)
jmp 0xa5e1
leaq 0x610(%rsp), %rdi
callq 0x23a8
movq 0x1b0(%rsp), %rax
cmpq $0x100, %rax            # imm = 0x100
jge 0xa6e9
movl 0x674(%rsp), %eax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
leaq 0xbd28(%rip), %rcx      # 0x16340
movzbl 0x38(%rax,%rcx), %edi
callq 0xc810
jmp 0xa624
movq 0xbd05(%rip), %rsi      # 0x16330
incq %rsi
leaq 0xbc13(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rsi
addq $0x8, %rsi
leaq 0x5f0(%rsp), %rdi
callq 0x20d0
jmp 0xa650
leaq 0x5f0(%rsp), %rdi
callq 0xc960
movq %rax, 0x1a8(%rsp)
jmp 0xa667
movq 0x1a8(%rsp), %rax
movzbl %al, %edi
callq 0xc810
jmp 0xa679
leaq 0x5f0(%rsp), %rdi
callq 0x23a8
movq 0xbca3(%rip), %rax      # 0x16330
addq $0x3, %rax
movq %rax, 0xbc98(%rip)      # 0x16330
jmp 0xb93b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x610(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x5f0(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
jmp 0xab9e
movl 0x674(%rsp), %eax
movl %eax, %ecx
leaq 0xbc42(%rip), %rax      # 0x16340
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
cmpl $-0x1, 0x3c(%rax)
je 0xa8e9
movq 0xbc1a(%rip), %rsi      # 0x16330
incq %rsi
leaq 0xbb28(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rsi
addq $0x8, %rsi
leaq 0x5d0(%rsp), %rdi
callq 0x20d0
jmp 0xa73b
leaq 0x5d0(%rsp), %rdi
callq 0xc960
movq %rax, 0x1a0(%rsp)
jmp 0xa752
leaq 0x5d0(%rsp), %rdi
callq 0x23a8
movq 0x1a0(%rsp), %rax
cmpq $0x10000, %rax          # imm = 0x10000
jge 0xa8e4
movl 0x674(%rsp), %eax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
leaq 0xbbb7(%rip), %rcx      # 0x16340
movzbl 0x3c(%rax,%rcx), %edi
callq 0xc810
jmp 0xa795
movq 0xbb94(%rip), %rsi      # 0x16330
incq %rsi
leaq 0xbaa2(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rsi
addq $0x8, %rsi
leaq 0x5b0(%rsp), %rdi
callq 0x20d0
jmp 0xa7c1
leaq 0x5b0(%rsp), %rdi
callq 0xc960
movq %rax, 0x198(%rsp)
jmp 0xa7d8
movq 0x198(%rsp), %rax
movzbl %al, %edi
callq 0xc810
jmp 0xa7ea
leaq 0x5b0(%rsp), %rdi
callq 0x23a8
movq 0xbb32(%rip), %rsi      # 0x16330
incq %rsi
leaq 0xba40(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rsi
addq $0x8, %rsi
leaq 0x590(%rsp), %rdi
callq 0x20d0
jmp 0xa823
leaq 0x590(%rsp), %rdi
callq 0xc960
movq %rax, 0x190(%rsp)
jmp 0xa83a
movq 0x190(%rsp), %rax
movb %ah, %al
movzbl %al, %edi
callq 0xc810
jmp 0xa84e
leaq 0x590(%rsp), %rdi
callq 0x23a8
movq 0xbace(%rip), %rax      # 0x16330
addq $0x3, %rax
movq %rax, 0xbac3(%rip)      # 0x16330
jmp 0xb93b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x5d0(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x5b0(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x590(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
jmp 0xab9c
movl 0x674(%rsp), %eax
movl %eax, %ecx
leaq 0xba47(%rip), %rax      # 0x16340
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
cmpl $-0x1, 0x40(%rax)
je 0xab9a
movq 0xba1f(%rip), %rsi      # 0x16330
incq %rsi
leaq 0xb92d(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rsi
addq $0x8, %rsi
leaq 0x570(%rsp), %rdi
callq 0x20d0
jmp 0xa936
leaq 0x570(%rsp), %rdi
callq 0xc960
movq %rax, 0x188(%rsp)
jmp 0xa94d
leaq 0x570(%rsp), %rdi
callq 0x23a8
movq 0x188(%rsp), %rax
cmpq $0x1000000, %rax        # imm = 0x1000000
jge 0xab6a
movl 0x674(%rsp), %eax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
leaq 0xb9bc(%rip), %rcx      # 0x16340
movzbl 0x40(%rax,%rcx), %edi
callq 0xc810
jmp 0xa990
movq 0xb999(%rip), %rsi      # 0x16330
incq %rsi
leaq 0xb8a7(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rsi
addq $0x8, %rsi
leaq 0x550(%rsp), %rdi
callq 0x20d0
jmp 0xa9bc
leaq 0x550(%rsp), %rdi
callq 0xc960
movq %rax, 0x180(%rsp)
jmp 0xa9d3
movq 0x180(%rsp), %rax
movzbl %al, %edi
callq 0xc810
jmp 0xa9e5
leaq 0x550(%rsp), %rdi
callq 0x23a8
movq 0xb937(%rip), %rsi      # 0x16330
incq %rsi
leaq 0xb845(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rsi
addq $0x8, %rsi
leaq 0x530(%rsp), %rdi
callq 0x20d0
jmp 0xaa1e
leaq 0x530(%rsp), %rdi
callq 0xc960
movq %rax, 0x178(%rsp)
jmp 0xaa35
movq 0x178(%rsp), %rax
movb %ah, %al
movzbl %al, %edi
callq 0xc810
jmp 0xaa49
leaq 0x530(%rsp), %rdi
callq 0x23a8
movq 0xb8d3(%rip), %rsi      # 0x16330
incq %rsi
leaq 0xb7e1(%rip), %rdi      # 0x16248
callq 0xd300
movq %rax, %rsi
addq $0x8, %rsi
leaq 0x510(%rsp), %rdi
callq 0x20d0
jmp 0xaa82
leaq 0x510(%rsp), %rdi
callq 0xc960
movq %rax, 0x170(%rsp)
jmp 0xaa99
movq 0x170(%rsp), %rax
shrl $0x10, %eax
movzbl %al, %edi
callq 0xc810
jmp 0xaaae
leaq 0x510(%rsp), %rdi
callq 0x23a8
movq 0xb86e(%rip), %rax      # 0x16330
addq $0x3, %rax
movq %rax, 0xb863(%rip)      # 0x16330
jmp 0xb93b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x570(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x550(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x530(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x510(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq 0xb47f(%rip), %rdi      # 0x15ff0
leaq 0x68c9(%rip), %rsi      # 0x11441
callq 0x21b0
jmp 0xab7f
movl $0x1, 0x8e4(%rsp)
movl $0x1, 0x6f0(%rsp)
jmp 0xb9d6
jmp 0xab9c
jmp 0xab9e
jmp 0xabd0
movq 0xb449(%rip), %rdi      # 0x15ff0
leaq 0x68af(%rip), %rsi      # 0x1145d
callq 0x21b0
jmp 0xabb5
movl $0x1, 0x8e4(%rsp)
movl $0x1, 0x6f0(%rsp)
jmp 0xb9d6
jmp 0xabd2
jmp 0xabd4
movl 0x674(%rsp), %eax
movl %eax, %ecx
leaq 0xb75c(%rip), %rax      # 0x16340
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movl 0x44(%rax), %ecx
movb $0x0, 0x4ef(%rsp)
xorl %eax, %eax
cmpl $-0x1, %ecx
movb %al, 0x16f(%rsp)
je 0xac6c
movq 0xb60d(%rip), %rax      # 0x16218
movq %rax, 0x160(%rsp)
leaq 0x680(%rsp), %rsi
leaq 0x4f0(%rsp), %rdi
callq 0x20d0
jmp 0xac2a
movb $0x1, 0x4ef(%rsp)
leaq 0x4f0(%rsp), %rdi
callq 0xc960
movq %rax, 0x158(%rsp)
jmp 0xac49
movq 0x158(%rsp), %rcx
movq 0x160(%rsp), %rax
subq %rcx, %rax
cmpq $0x100, %rax            # imm = 0x100
setb %al
movb %al, 0x16f(%rsp)
movb 0x16f(%rsp), %al
movb %al, 0x157(%rsp)
testb $0x1, 0x4ef(%rsp)
jne 0xac86
jmp 0xac93
leaq 0x4f0(%rsp), %rdi
callq 0x23a8
movb 0x157(%rsp), %al
testb $0x1, %al
jne 0xaca3
jmp 0xaf4b
leaq 0x680(%rsp), %rdi
movb $0x0, 0x4c7(%rsp)
xorl %eax, %eax
movl %eax, %esi
callq 0x2390
movq %rax, 0x148(%rsp)
jmp 0xacc6
movq 0x148(%rsp), %rax
movsbl (%rax), %ecx
movb $0x1, %al
cmpl $0x2d, %ecx
movb %al, 0x147(%rsp)
je 0xad45
movslq 0xb532(%rip), %rax      # 0x16218
movq %rax, 0x138(%rsp)
leaq 0x680(%rsp), %rsi
leaq 0x4c8(%rsp), %rdi
callq 0x20d0
jmp 0xad05
movb $0x1, 0x4c7(%rsp)
leaq 0x4c8(%rsp), %rdi
callq 0xc960
movq %rax, 0x130(%rsp)
jmp 0xad24
movq 0x130(%rsp), %rcx
movq 0x138(%rsp), %rax
subq %rcx, %rax
cmpq $0x0, %rax
setl %al
movb %al, 0x147(%rsp)
movb 0x147(%rsp), %al
movb %al, 0x12f(%rsp)
testb $0x1, 0x4c7(%rsp)
jne 0xad5f
jmp 0xad6c
leaq 0x4c8(%rsp), %rdi
callq 0x23a8
movb 0x12f(%rsp), %al
testb $0x1, %al
jne 0xad7c
jmp 0xae6f
movq 0xb495(%rip), %rax      # 0x16218
movq %rax, 0x120(%rsp)
leaq 0x680(%rsp), %rsi
leaq 0x4a0(%rsp), %rdi
callq 0x20d0
jmp 0xada2
leaq 0x4a0(%rsp), %rdi
callq 0xc960
movq %rax, 0x118(%rsp)
jmp 0xadb9
movq 0x118(%rsp), %rcx
movq 0x120(%rsp), %rax
subq %rcx, %rax
movb %al, 0x4ee(%rsp)
leaq 0x4a0(%rsp), %rdi
callq 0x23a8
jmp 0xaf03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
testb $0x1, 0x4ef(%rsp)
jne 0xae05
jmp 0xae12
leaq 0x4f0(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
testb $0x1, 0x4c7(%rsp)
jne 0xae37
jmp 0xae44
leaq 0x4c8(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x4a0(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq 0xb3a2(%rip), %rax      # 0x16218
movq %rax, 0x110(%rsp)
leaq 0x680(%rsp), %rsi
leaq 0x480(%rsp), %rdi
callq 0x20d0
jmp 0xae95
leaq 0x480(%rsp), %rdi
callq 0xc960
movq %rax, 0x108(%rsp)
jmp 0xaeac
movq 0x108(%rsp), %rax
movq 0x110(%rsp), %rcx
subq %rax, %rcx
movl $0xfe, %eax
subq %rcx, %rax
movb %al, 0x4ee(%rsp)
leaq 0x480(%rsp), %rdi
callq 0x23a8
jmp 0xaf03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x480(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movl 0x674(%rsp), %eax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
leaq 0xb427(%rip), %rcx      # 0x16340
movzbl 0x44(%rax,%rcx), %edi
callq 0xc810
jmp 0xaf25
movzbl 0x4ee(%rsp), %edi
callq 0xc810
jmp 0xaf34
movq 0xb3f5(%rip), %rax      # 0x16330
addq $0x1, %rax
movq %rax, 0xb3ea(%rip)      # 0x16330
jmp 0xb93b
movl 0x674(%rsp), %eax
movl %eax, %ecx
leaq 0xb3e5(%rip), %rax      # 0x16340
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
movl 0x48(%rax), %ecx
movb $0x0, 0x45f(%rsp)
xorl %eax, %eax
cmpl $-0x1, %ecx
movb %al, 0x107(%rsp)
je 0xafe3
movq 0xb296(%rip), %rax      # 0x16218
movq %rax, 0xf8(%rsp)
leaq 0x680(%rsp), %rsi
leaq 0x460(%rsp), %rdi
callq 0x20d0
jmp 0xafa1
movb $0x1, 0x45f(%rsp)
leaq 0x460(%rsp), %rdi
callq 0xc960
movq %rax, 0xf0(%rsp)
jmp 0xafc0
movq 0xf0(%rsp), %rcx
movq 0xf8(%rsp), %rax
subq %rcx, %rax
cmpq $0x10000, %rax          # imm = 0x10000
setb %al
movb %al, 0x107(%rsp)
movb 0x107(%rsp), %al
movb %al, 0xef(%rsp)
testb $0x1, 0x45f(%rsp)
jne 0xaffd
jmp 0xb00a
leaq 0x460(%rsp), %rdi
callq 0x23a8
movb 0xef(%rsp), %al
testb $0x1, %al
jne 0xb01a
jmp 0xb2d1
leaq 0x680(%rsp), %rdi
movb $0x0, 0x437(%rsp)
xorl %eax, %eax
movl %eax, %esi
callq 0x2390
movq %rax, 0xe0(%rsp)
jmp 0xb03d
movq 0xe0(%rsp), %rax
movsbl (%rax), %ecx
movb $0x1, %al
cmpl $0x2d, %ecx
movb %al, 0xdf(%rsp)
je 0xb0bc
movslq 0xb1bb(%rip), %rax      # 0x16218
movq %rax, 0xd0(%rsp)
leaq 0x680(%rsp), %rsi
leaq 0x438(%rsp), %rdi
callq 0x20d0
jmp 0xb07c
movb $0x1, 0x437(%rsp)
leaq 0x438(%rsp), %rdi
callq 0xc960
movq %rax, 0xc8(%rsp)
jmp 0xb09b
movq 0xc8(%rsp), %rcx
movq 0xd0(%rsp), %rax
subq %rcx, %rax
cmpq $0x0, %rax
setl %al
movb %al, 0xdf(%rsp)
movb 0xdf(%rsp), %al
movb %al, 0xc7(%rsp)
testb $0x1, 0x437(%rsp)
jne 0xb0d6
jmp 0xb0e3
leaq 0x438(%rsp), %rdi
callq 0x23a8
movb 0xc7(%rsp), %al
testb $0x1, %al
jne 0xb0f3
jmp 0xb1e6
movq 0xb11e(%rip), %rax      # 0x16218
movq %rax, 0xb8(%rsp)
leaq 0x680(%rsp), %rsi
leaq 0x410(%rsp), %rdi
callq 0x20d0
jmp 0xb119
leaq 0x410(%rsp), %rdi
callq 0xc960
movq %rax, 0xb0(%rsp)
jmp 0xb130
movq 0xb0(%rsp), %rcx
movq 0xb8(%rsp), %rax
subq %rcx, %rax
movl %eax, 0x458(%rsp)
leaq 0x410(%rsp), %rdi
callq 0x23a8
jmp 0xb27a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
testb $0x1, 0x45f(%rsp)
jne 0xb17c
jmp 0xb189
leaq 0x460(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
testb $0x1, 0x437(%rsp)
jne 0xb1ae
jmp 0xb1bb
leaq 0x438(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x410(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq 0xb02b(%rip), %rax      # 0x16218
movq %rax, 0xa8(%rsp)
leaq 0x680(%rsp), %rsi
leaq 0x3f0(%rsp), %rdi
callq 0x20d0
jmp 0xb20c
leaq 0x3f0(%rsp), %rdi
callq 0xc960
movq %rax, 0xa0(%rsp)
jmp 0xb223
movq 0xa0(%rsp), %rax
movq 0xa8(%rsp), %rcx
subq %rax, %rcx
movl $0xfffe, %eax           # imm = 0xFFFE
subq %rcx, %rax
movl %eax, 0x458(%rsp)
leaq 0x3f0(%rsp), %rdi
callq 0x23a8
jmp 0xb27a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x3f0(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movl 0x674(%rsp), %eax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
leaq 0xb0b0(%rip), %rcx      # 0x16340
movzbl 0x48(%rax,%rcx), %edi
callq 0xc810
jmp 0xb29c
movzbl 0x458(%rsp), %edi
callq 0xc810
jmp 0xb2ab
movzbl 0x459(%rsp), %edi
callq 0xc810
jmp 0xb2ba
movq 0xb06f(%rip), %rax      # 0x16330
addq $0x1, %rax
movq %rax, 0xb064(%rip)      # 0x16330
jmp 0xb93b
leaq 0x680(%rsp), %rsi
leaq 0x3d0(%rsp), %rdi
callq 0x20d0
jmp 0xb2e8
leaq 0x3d0(%rsp), %rdi
callq 0xc960
movq %rax, 0x98(%rsp)
jmp 0xb2ff
leaq 0x3d0(%rsp), %rdi
callq 0x23a8
movq 0x98(%rsp), %rax
cmpq $0x100, %rax            # imm = 0x100
jge 0xb491
movl 0x674(%rsp), %eax
movl %eax, %ecx
leaq 0xb010(%rip), %rax      # 0x16340
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
cmpl $-0x1, 0x24(%rax)
je 0xb413
movl 0x674(%rsp), %eax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
leaq 0xafe9(%rip), %rcx      # 0x16340
movzbl 0x24(%rax,%rcx), %edi
callq 0xc810
jmp 0xb363
leaq 0x680(%rsp), %rsi
leaq 0x3b0(%rsp), %rdi
callq 0x20d0
jmp 0xb37a
leaq 0x3b0(%rsp), %rdi
callq 0xc960
movq %rax, 0x90(%rsp)
jmp 0xb391
movq 0x90(%rsp), %rax
movzbl %al, %edi
callq 0xc810
jmp 0xb3a3
leaq 0x3b0(%rsp), %rdi
callq 0x23a8
movq 0xaf79(%rip), %rax      # 0x16330
addq $0x1, %rax
movq %rax, 0xaf6e(%rip)      # 0x16330
jmp 0xb93b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x3d0(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x3b0(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq 0xabd6(%rip), %rdi      # 0x15ff0
leaq 0x5fce(%rip), %rsi      # 0x113ef
callq 0x21b0
movq %rax, 0x88(%rsp)
jmp 0xb430
movq 0x88(%rsp), %rdi
movl 0x674(%rsp), %eax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
leaq 0xaef2(%rip), %rsi      # 0x16340
addq %rax, %rsi
callq 0x2180
movq %rax, 0x80(%rsp)
jmp 0xb460
movq 0x80(%rsp), %rdi
leaq 0x600e(%rip), %rsi      # 0x1147d
callq 0x21b0
jmp 0xb476
movl $0x1, 0x8e4(%rsp)
movl $0x1, 0x6f0(%rsp)
jmp 0xb9d6
leaq 0x680(%rsp), %rsi
leaq 0x390(%rsp), %rdi
callq 0x20d0
jmp 0xb4a8
leaq 0x390(%rsp), %rdi
callq 0xc960
movq %rax, 0x78(%rsp)
jmp 0xb4bc
leaq 0x390(%rsp), %rdi
callq 0x23a8
movq 0x78(%rsp), %rax
cmpq $0x10000, %rax          # imm = 0x10000
jge 0xb6a8
movl 0x674(%rsp), %eax
movl %eax, %ecx
leaq 0xae56(%rip), %rax      # 0x16340
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
cmpl $-0x1, 0x28(%rax)
je 0xb636
movl 0x674(%rsp), %eax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
leaq 0xae2f(%rip), %rcx      # 0x16340
movzbl 0x28(%rax,%rcx), %edi
callq 0xc810
jmp 0xb51d
leaq 0x680(%rsp), %rsi
leaq 0x370(%rsp), %rdi
callq 0x20d0
jmp 0xb534
leaq 0x370(%rsp), %rdi
callq 0xc960
movq %rax, 0x70(%rsp)
jmp 0xb548
movq 0x70(%rsp), %rax
movzbl %al, %edi
callq 0xc810
jmp 0xb557
leaq 0x370(%rsp), %rdi
callq 0x23a8
leaq 0x680(%rsp), %rsi
leaq 0x350(%rsp), %rdi
callq 0x20d0
jmp 0xb57b
leaq 0x350(%rsp), %rdi
callq 0xc960
movq %rax, 0x68(%rsp)
jmp 0xb58f
movq 0x68(%rsp), %rax
movb %ah, %al
movzbl %al, %edi
callq 0xc810
jmp 0xb5a0
leaq 0x350(%rsp), %rdi
callq 0x23a8
movq 0xad7c(%rip), %rax      # 0x16330
addq $0x1, %rax
movq %rax, 0xad71(%rip)      # 0x16330
jmp 0xb93b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x390(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x370(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x350(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq 0xa9b3(%rip), %rdi      # 0x15ff0
leaq 0x5dab(%rip), %rsi      # 0x113ef
callq 0x21b0
movq %rax, 0x60(%rsp)
jmp 0xb650
movq 0x60(%rsp), %rdi
movl 0x674(%rsp), %eax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
leaq 0xacd5(%rip), %rsi      # 0x16340
addq %rax, %rsi
callq 0x2180
movq %rax, 0x58(%rsp)
jmp 0xb67a
movq 0x58(%rsp), %rdi
leaq 0x5e0f(%rip), %rsi      # 0x11495
callq 0x21b0
jmp 0xb68d
movl $0x1, 0x8e4(%rsp)
movl $0x1, 0x6f0(%rsp)
jmp 0xb9d6
leaq 0x680(%rsp), %rsi
leaq 0x330(%rsp), %rdi
callq 0x20d0
jmp 0xb6bf
leaq 0x330(%rsp), %rdi
callq 0xc960
movq %rax, 0x50(%rsp)
jmp 0xb6d3
leaq 0x330(%rsp), %rdi
callq 0x23a8
movq 0x50(%rsp), %rax
cmpq $0x1000000, %rax        # imm = 0x1000000
jge 0xb92f
movl 0x674(%rsp), %eax
movl %eax, %ecx
leaq 0xac3f(%rip), %rax      # 0x16340
imulq $0x50, %rcx, %rcx
addq %rcx, %rax
cmpl $-0x1, 0x2c(%rax)
je 0xb8bd
movl 0x674(%rsp), %eax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
leaq 0xac18(%rip), %rcx      # 0x16340
movzbl 0x2c(%rax,%rcx), %edi
callq 0xc810
jmp 0xb734
leaq 0x680(%rsp), %rsi
leaq 0x310(%rsp), %rdi
callq 0x20d0
jmp 0xb74b
leaq 0x310(%rsp), %rdi
callq 0xc960
movq %rax, 0x48(%rsp)
jmp 0xb75f
movq 0x48(%rsp), %rax
movzbl %al, %edi
callq 0xc810
jmp 0xb76e
leaq 0x310(%rsp), %rdi
callq 0x23a8
leaq 0x680(%rsp), %rsi
leaq 0x2f0(%rsp), %rdi
callq 0x20d0
jmp 0xb792
leaq 0x2f0(%rsp), %rdi
callq 0xc960
movq %rax, 0x40(%rsp)
jmp 0xb7a6
movq 0x40(%rsp), %rax
movb %ah, %al
movzbl %al, %edi
callq 0xc810
jmp 0xb7b7
leaq 0x2f0(%rsp), %rdi
callq 0x23a8
leaq 0x680(%rsp), %rsi
leaq 0x2d0(%rsp), %rdi
callq 0x20d0
jmp 0xb7db
leaq 0x2d0(%rsp), %rdi
callq 0xc960
movq %rax, 0x38(%rsp)
jmp 0xb7ef
movq 0x38(%rsp), %rax
shrl $0x10, %eax
movzbl %al, %edi
callq 0xc810
jmp 0xb801
leaq 0x2d0(%rsp), %rdi
callq 0x23a8
movq 0xab1b(%rip), %rax      # 0x16330
addq $0x1, %rax
movq %rax, 0xab10(%rip)      # 0x16330
jmp 0xb93b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x330(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x310(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x2f0(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x2d0(%rsp), %rdi
callq 0x23a8
jmp 0xb9fa
movq 0xa72c(%rip), %rdi      # 0x15ff0
leaq 0x5b24(%rip), %rsi      # 0x113ef
callq 0x21b0
movq %rax, 0x30(%rsp)
jmp 0xb8d7
movq 0x30(%rsp), %rdi
movl 0x674(%rsp), %eax
leaq (%rax,%rax,4), %rax
shlq $0x4, %rax
leaq 0xaa4e(%rip), %rsi      # 0x16340
addq %rax, %rsi
callq 0x2180
movq %rax, 0x28(%rsp)
jmp 0xb901
movq 0x28(%rsp), %rdi
leaq 0x5ba1(%rip), %rsi      # 0x114ae
callq 0x21b0
jmp 0xb914
movl $0x1, 0x8e4(%rsp)
movl $0x1, 0x6f0(%rsp)
jmp 0xb9d6
jmp 0xb931
jmp 0xb933
jmp 0xb935
jmp 0xb937
jmp 0xb939
jmp 0xb93b
movl 0x674(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x674(%rsp)
jmp 0xa0f3
cmpl $0x0, 0x6a0(%rsp)
jne 0xb9cb
movq 0xa68e(%rip), %rdi      # 0x15ff0
leaq 0x5b5e(%rip), %rsi      # 0x114c7
callq 0x21b0
movq %rax, 0x20(%rsp)
jmp 0xb975
movq 0xa9b4(%rip), %rsi      # 0x16330
leaq 0xa8c5(%rip), %rdi      # 0x16248
callq 0xd300
movq 0x20(%rsp), %rdi
movq %rax, %rsi
addq $0x8, %rsi
callq 0x2180
movq %rax, 0x18(%rsp)
jmp 0xb9a0
movq 0x18(%rsp), %rdi
leaq 0x5802(%rip), %rsi      # 0x111ae
callq 0x21b0
jmp 0xb9b3
movl $0x1, 0x8e4(%rsp)
movl $0x1, 0x6f0(%rsp)
jmp 0xb9d6
movl $0x0, 0x6f0(%rsp)
leaq 0x678(%rsp), %rdi
callq 0xd410
movl 0x6f0(%rsp), %eax
testl %eax, %eax
je 0xb9f5
jmp 0xb9f0
jmp 0xbb0b
jmp 0xbae3
leaq 0x678(%rsp), %rdi
callq 0xd410
jmp 0xbb1a
movq 0xa91d(%rip), %rsi      # 0x16330
leaq 0xa82e(%rip), %rdi      # 0x16248
callq 0xd300
movl (%rax), %eax
cmpl 0xa7c5(%rip), %eax      # 0x161ec
jne 0xbac0
movq 0xa8fc(%rip), %rsi      # 0x16330
leaq 0xa80d(%rip), %rdi      # 0x16248
movq %rdi, 0x8(%rsp)
callq 0xd300
movq %rax, %rdi
addq $0x8, %rdi
callq 0x2200
movq 0x8(%rsp), %rdi
movq 0xa8d3(%rip), %rsi      # 0x16330
callq 0xd300
movq %rax, %rsi
addq $0x8, %rsi
leaq 0x2b0(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x20d0
movq 0x10(%rsp), %rdi
movq 0xa791(%rip), %rsi      # 0x16218
callq 0xcd20
jmp 0xba8e
leaq 0x2b0(%rsp), %rdi
callq 0x23a8
jmp 0xbae1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x8b0(%rsp)
movl %eax, 0x8ac(%rsp)
leaq 0x2b0(%rsp), %rdi
callq 0x23a8
jmp 0xbb1a
movq 0xa869(%rip), %rsi      # 0x16330
leaq 0xa77a(%rip), %rdi      # 0x16248
callq 0xd300
movl (%rax), %eax
cmpl 0xa719(%rip), %eax      # 0x161f4
jne 0xbadf
jmp 0xbae9
jmp 0xbae9
jmp 0xbae3
jmp 0xbae5
jmp 0xbae7
jmp 0xbae9
movq 0xa840(%rip), %rax      # 0x16330
addq $0x1, %rax
movq %rax, 0xa835(%rip)      # 0x16330
jmp 0x9022
movl $0x0, 0x8e4(%rsp)
movl 0x8e4(%rsp), %eax
addq $0x8e8, %rsp            # imm = 0x8E8
retq
movq 0x8b0(%rsp), %rdi
callq 0x2320
nopw (%rax,%rax)