// File: temelmertcan[P]multgen/src/adders.cpp
// Function: create_hc_adder(int, bool, std::queue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::deque<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>&)
void create_hc_adder (int size, bool carryin, std::queue<string>& verilog){

  int index = 0;

  string* g = new string[size];
  string* p = new string[size];

  string* gtmp = new string[size];
  string* ptmp = new string[size];

  ppx_preprocess(size, carryin, index, "HC", gtmp, ptmp, verilog);
  pgtmp_to_pg(size, gtmp, g);
  pgtmp_to_pg(size, ptmp, p);

  verilog.push("\n// Han-Carlson Adder \n");


  // hc step1 :
  verilog.push("");
  verilog.push("// HC stage 1");

  for (int i = 1; i<size; i+=2){

    string new_p = "p_1_"+ to_string(i);
    string new_g = "g_1_"+ to_string(i);

    verilog.push ("wire logic " + new_p + ";");
    verilog.push ("wire logic "+ new_g + ";");

    verilog.push ("assign "+ new_p + " = " + p[i] + " & " + p[i-1] + ";");
    verilog.push ("assign "+ new_g + " = (" + p[i] + " & " + g[i-1] + ") | " + g[i] + ";");

    gtmp[i] =  new_g;
    ptmp[i] =  new_p;
    //index++;
  }

  pgtmp_to_pg(size, gtmp, g);
  pgtmp_to_pg(size, ptmp, p);

  int stage=1;

  // hc midsteps
  for (int diff = 2; diff < size; diff *= 2){
    verilog.push("");
    verilog.push("// HC stage " + to_string(++stage));
    for (int i=1+diff; i < size; i+=2){

      string new_p = "p_" + to_string(stage)+ "_" + to_string(i);
      string new_g = "g_" + to_string(stage)+ "_" + to_string(i);

      verilog.push ("wire logic "+ new_p + ";");
      verilog.push ("wire logic "+ new_g + ";");

      verilog.push ("assign "+ new_p + " = " + p[i] + " & " + p[i-diff] + ";");
      verilog.push ("assign "+ new_g + " = (" + p[i] + " & " + g[i-diff] + ") | " + g[i] + ";");

      gtmp[i] =  new_g;
      ptmp[i] =  new_p;
      index++;
    }
    pgtmp_to_pg(size, gtmp, g);
    pgtmp_to_pg(size, ptmp, p);
  }

  //hc final step
  verilog.push("");
  verilog.push("// HC stage " + to_string(++stage));
  for (int i = 2; i<size; i+=2){

    string new_p = "p_" + to_string(stage)+ "_" + to_string(i);
    string new_g = "g_" + to_string(stage)+ "_" + to_string(i);

    verilog.push ("wire logic "+ new_p + ";");
    verilog.push ("wire logic "+ new_g + ";");

    verilog.push ("assign "+ new_p + " = " + p[i] + " & " + p[i-1] + ";");
    verilog.push ("assign "+ new_g + " = (" + p[i] + " & " + g[i-1] + ") | " + g[i] + ";");

    gtmp[i] =  new_g;
    ptmp[i] =  new_p;
    index++;
  }

  pgtmp_to_pg(size, gtmp, g);
  pgtmp_to_pg(size, ptmp, p);

  verilog.push("");
  verilog.push("// HC postprocess ");

  ppx_postprocess (size, index, g, p, verilog);

  delete[] p;
  delete[] g;

  delete[] ptmp;
  delete[] gtmp;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe20, %rsp            # imm = 0xE20
movb %sil, %al
movl %edi, -0x4(%rbp)
andb $0x1, %al
movb %al, -0x5(%rbp)
movq %rdx, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
movslq -0x4(%rbp), %rax
movq %rax, -0xbf0(%rbp)
movl $0x20, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
addq $0x8, %rdi
setb %al
orb %al, %cl
movq $-0x1, %rax
testb $0x1, %cl
cmovneq %rax, %rdi
callq 0x3030
movq %rax, %rcx
movq -0xbf0(%rbp), %rax
movq %rax, (%rcx)
addq $0x8, %rcx
movq %rcx, -0xbe8(%rbp)
cmpq $0x0, %rax
je 0x264ab
movq -0xbe8(%rbp), %rax
movq -0xbf0(%rbp), %rdx
shlq $0x5, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0xc00(%rbp)
movq %rax, -0xbf8(%rbp)
movq -0xbf8(%rbp), %rdi
movq %rdi, -0xc08(%rbp)
callq 0x3330
movq -0xc08(%rbp), %rax
movq -0xc00(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0xbf8(%rbp)
jne 0x2647a
movq -0xbe8(%rbp), %rax
movq %rax, -0x20(%rbp)
movslq -0x4(%rbp), %rax
movq %rax, -0xc18(%rbp)
movl $0x20, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
addq $0x8, %rdi
setb %al
orb %al, %cl
movq $-0x1, %rax
testb $0x1, %cl
cmovneq %rax, %rdi
callq 0x3030
movq %rax, %rcx
movq -0xc18(%rbp), %rax
movq %rax, (%rcx)
addq $0x8, %rcx
movq %rcx, -0xc10(%rbp)
cmpq $0x0, %rax
je 0x26560
movq -0xc10(%rbp), %rax
movq -0xc18(%rbp), %rdx
shlq $0x5, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0xc28(%rbp)
movq %rax, -0xc20(%rbp)
movq -0xc20(%rbp), %rdi
movq %rdi, -0xc30(%rbp)
callq 0x3330
movq -0xc30(%rbp), %rax
movq -0xc28(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0xc20(%rbp)
jne 0x2652f
movq -0xc10(%rbp), %rax
movq %rax, -0x28(%rbp)
movslq -0x4(%rbp), %rax
movq %rax, -0xc40(%rbp)
movl $0x20, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
addq $0x8, %rdi
setb %al
orb %al, %cl
movq $-0x1, %rax
testb $0x1, %cl
cmovneq %rax, %rdi
callq 0x3030
movq %rax, %rcx
movq -0xc40(%rbp), %rax
movq %rax, (%rcx)
addq $0x8, %rcx
movq %rcx, -0xc38(%rbp)
cmpq $0x0, %rax
je 0x26615
movq -0xc38(%rbp), %rax
movq -0xc40(%rbp), %rdx
shlq $0x5, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0xc50(%rbp)
movq %rax, -0xc48(%rbp)
movq -0xc48(%rbp), %rdi
movq %rdi, -0xc58(%rbp)
callq 0x3330
movq -0xc58(%rbp), %rax
movq -0xc50(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0xc48(%rbp)
jne 0x265e4
movq -0xc38(%rbp), %rax
movq %rax, -0x30(%rbp)
movslq -0x4(%rbp), %rax
movq %rax, -0xc68(%rbp)
movl $0x20, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
addq $0x8, %rdi
setb %al
orb %al, %cl
movq $-0x1, %rax
testb $0x1, %cl
cmovneq %rax, %rdi
callq 0x3030
movq %rax, %rcx
movq -0xc68(%rbp), %rax
movq %rax, (%rcx)
addq $0x8, %rcx
movq %rcx, -0xc60(%rbp)
cmpq $0x0, %rax
je 0x266ca
movq -0xc60(%rbp), %rax
movq -0xc68(%rbp), %rdx
shlq $0x5, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0xc78(%rbp)
movq %rax, -0xc70(%rbp)
movq -0xc70(%rbp), %rdi
movq %rdi, -0xc80(%rbp)
callq 0x3330
movq -0xc80(%rbp), %rax
movq -0xc78(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0xc70(%rbp)
jne 0x26699
movq -0xc60(%rbp), %rax
movq %rax, -0x38(%rbp)
movl -0x4(%rbp), %eax
movl %eax, -0xc90(%rbp)
movb -0x5(%rbp), %al
movb %al, -0xc89(%rbp)
leaq -0x59(%rbp), %rdi
movq %rdi, -0xc88(%rbp)
callq 0x3430
movq -0xc88(%rbp), %rdx
leaq 0x30fd7(%rip), %rsi     # 0x576dc
leaq -0x58(%rbp), %rdi
callq 0x3320
jmp 0x26710
movl -0xc90(%rbp), %edi
movb -0xc89(%rbp), %al
movq -0x10(%rbp), %rdx
movq %rsp, %rcx
movq %rdx, (%rcx)
movzbl %al, %esi
andl $0x1, %esi
leaq -0x14(%rbp), %rdx
leaq -0x58(%rbp), %rcx
leaq -0x30(%rbp), %r8
leaq -0x38(%rbp), %r9
callq 0x249e0
jmp 0x26743
leaq -0x58(%rbp), %rdi
callq 0x31a0
leaq -0x59(%rbp), %rdi
callq 0x32a0
movl -0x4(%rbp), %edi
leaq -0x30(%rbp), %rsi
leaq -0x20(%rbp), %rdx
callq 0x26380
movl -0x4(%rbp), %edi
leaq -0x38(%rbp), %rsi
leaq -0x28(%rbp), %rdx
callq 0x26380
movq -0x10(%rbp), %rax
movq %rax, -0xca0(%rbp)
leaq -0x91(%rbp), %rdi
movq %rdi, -0xc98(%rbp)
callq 0x3430
movq -0xc98(%rbp), %rdx
leaq 0x32498(%rip), %rsi     # 0x58c39
leaq -0x90(%rbp), %rdi
callq 0x3320
jmp 0x267af
movq -0xca0(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x1e3c0
jmp 0x267c4
leaq -0x90(%rbp), %rdi
callq 0x31a0
leaq -0x91(%rbp), %rdi
callq 0x32a0
movq -0x10(%rbp), %rax
movq %rax, -0xcb0(%rbp)
leaq -0xb9(%rbp), %rdi
movq %rdi, -0xca8(%rbp)
callq 0x3430
movq -0xca8(%rbp), %rdx
leaq 0x32dd9(%rip), %rsi     # 0x595e1
leaq -0xb8(%rbp), %rdi
callq 0x3320
jmp 0x26816
movq -0xcb0(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x1e3c0
jmp 0x2682b
leaq -0xb8(%rbp), %rdi
callq 0x31a0
leaq -0xb9(%rbp), %rdi
callq 0x32a0
movq -0x10(%rbp), %rax
movq %rax, -0xcc0(%rbp)
leaq -0xe1(%rbp), %rdi
movq %rdi, -0xcb8(%rbp)
callq 0x3430
movq -0xcb8(%rbp), %rdx
leaq 0x323e2(%rip), %rsi     # 0x58c51
leaq -0xe0(%rbp), %rdi
callq 0x3320
jmp 0x2687d
movq -0xcc0(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x1e3c0
jmp 0x26892
leaq -0xe0(%rbp), %rdi
callq 0x31a0
leaq -0xe1(%rbp), %rdi
callq 0x32a0
movl $0x1, -0xe8(%rbp)
movl -0xe8(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0x2706f
movl -0xe8(%rbp), %esi
leaq -0x128(%rbp), %rdi
movq %rdi, -0xcc8(%rbp)
callq 0x1e700
movq -0xcc8(%rbp), %rdx
leaq 0x32375(%rip), %rsi     # 0x58c5f
leaq -0x108(%rbp), %rdi
callq 0x1e930
jmp 0x268f8
leaq -0x128(%rbp), %rdi
callq 0x31a0
movl -0xe8(%rbp), %esi
leaq -0x168(%rbp), %rdi
callq 0x1e700
jmp 0x26918
leaq 0x32345(%rip), %rsi     # 0x58c64
leaq -0x148(%rbp), %rdi
leaq -0x168(%rbp), %rdx
callq 0x1e930
jmp 0x26934
leaq -0x168(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xcd0(%rbp)
leaq 0x32317(%rip), %rsi     # 0x58c69
leaq -0x1a8(%rbp), %rdi
leaq -0x108(%rbp), %rdx
callq 0x1e820
jmp 0x26967
leaq 0x32d9d(%rip), %rdx     # 0x5970b
leaq -0x188(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x1e560
jmp 0x26983
movq -0xcd0(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0x1e3c0
jmp 0x26998
leaq -0x188(%rbp), %rdi
callq 0x31a0
leaq -0x1a8(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xcd8(%rbp)
leaq 0x322a7(%rip), %rsi     # 0x58c69
leaq -0x1e8(%rbp), %rdi
leaq -0x148(%rbp), %rdx
callq 0x1e820
jmp 0x269d7
leaq 0x32d2d(%rip), %rdx     # 0x5970b
leaq -0x1c8(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x1e560
jmp 0x269f3
movq -0xcd8(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x1e3c0
jmp 0x26a08
leaq -0x1c8(%rbp), %rdi
callq 0x31a0
leaq -0x1e8(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xce0(%rbp)
leaq 0x31b80(%rip), %rsi     # 0x585b2
leaq -0x2a8(%rbp), %rdi
leaq -0x108(%rbp), %rdx
callq 0x1e820
jmp 0x26a47
leaq 0x31808(%rip), %rdx     # 0x58256
leaq -0x288(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
callq 0x1e560
jmp 0x26a63
movq -0x28(%rbp), %rdx
movslq -0xe8(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x268(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0x1e980
jmp 0x26a8a
leaq 0x32704(%rip), %rdx     # 0x59195
leaq -0x248(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x1e560
jmp 0x26aa6
movq -0x28(%rbp), %rdx
movl -0xe8(%rbp), %eax
decl %eax
cltq
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x228(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x1e980
jmp 0x26ad0
leaq 0x32c34(%rip), %rdx     # 0x5970b
leaq -0x208(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0x1e560
jmp 0x26aec
movq -0xce0(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x1e3c0
jmp 0x26b01
leaq -0x208(%rbp), %rdi
callq 0x31a0
leaq -0x228(%rbp), %rdi
callq 0x31a0
leaq -0x248(%rbp), %rdi
callq 0x31a0
leaq -0x268(%rbp), %rdi
callq 0x31a0
leaq -0x288(%rbp), %rdi
callq 0x31a0
leaq -0x2a8(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xce8(%rbp)
leaq 0x31a57(%rip), %rsi     # 0x585b2
leaq -0x3a8(%rbp), %rdi
leaq -0x148(%rbp), %rdx
callq 0x1e820
jmp 0x26b70
leaq 0x31933(%rip), %rdx     # 0x584aa
leaq -0x388(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
callq 0x1e560
jmp 0x26b8c
movq -0x28(%rbp), %rdx
movslq -0xe8(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x368(%rbp), %rdi
leaq -0x388(%rbp), %rsi
callq 0x1e980
jmp 0x26bb3
leaq 0x325db(%rip), %rdx     # 0x59195
leaq -0x348(%rbp), %rdi
leaq -0x368(%rbp), %rsi
callq 0x1e560
jmp 0x26bcf
movq -0x20(%rbp), %rdx
movl -0xe8(%rbp), %eax
decl %eax
cltq
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x328(%rbp), %rdi
leaq -0x348(%rbp), %rsi
callq 0x1e980
jmp 0x26bf9
leaq 0x32478(%rip), %rdx     # 0x59078
leaq -0x308(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0x1e560
jmp 0x26c15
movq -0x20(%rbp), %rdx
movslq -0xe8(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x2e8(%rbp), %rdi
leaq -0x308(%rbp), %rsi
callq 0x1e980
jmp 0x26c3c
leaq 0x32ac8(%rip), %rdx     # 0x5970b
leaq -0x2c8(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x1e560
jmp 0x26c58
movq -0xce8(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
callq 0x1e3c0
jmp 0x26c6d
leaq -0x2c8(%rbp), %rdi
callq 0x31a0
leaq -0x2e8(%rbp), %rdi
callq 0x31a0
leaq -0x308(%rbp), %rdi
callq 0x31a0
leaq -0x328(%rbp), %rdi
callq 0x31a0
leaq -0x348(%rbp), %rdi
callq 0x31a0
leaq -0x368(%rbp), %rdi
callq 0x31a0
leaq -0x388(%rbp), %rdi
callq 0x31a0
leaq -0x3a8(%rbp), %rdi
callq 0x31a0
movq -0x30(%rbp), %rdi
movslq -0xe8(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x148(%rbp), %rsi
callq 0x3050
jmp 0x26ced
movq -0x38(%rbp), %rdi
movslq -0xe8(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x108(%rbp), %rsi
callq 0x3050
jmp 0x26d0d
leaq -0x148(%rbp), %rdi
callq 0x31a0
leaq -0x108(%rbp), %rdi
callq 0x31a0
movl -0xe8(%rbp), %eax
addl $0x2, %eax
movl %eax, -0xe8(%rbp)
jmp 0x268b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x26d5c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x31a0
leaq -0x59(%rbp), %rdi
callq 0x32a0
jmp 0x287db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x26d90
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x31a0
leaq -0x91(%rbp), %rdi
callq 0x32a0
jmp 0x287db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x26dc7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x31a0
leaq -0xb9(%rbp), %rdi
callq 0x32a0
jmp 0x287db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x26dfe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x31a0
leaq -0xe1(%rbp), %rdi
callq 0x32a0
jmp 0x287db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x31a0
jmp 0x287db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2705e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x31a0
jmp 0x2705e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x27052
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x26e91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x31a0
leaq -0x1a8(%rbp), %rdi
callq 0x31a0
jmp 0x27052
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x26ec8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x31a0
leaq -0x1e8(%rbp), %rdi
callq 0x31a0
jmp 0x27052
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x26f6a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x26f5e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x26f52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x26f46
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x26f3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x31a0
leaq -0x228(%rbp), %rdi
callq 0x31a0
leaq -0x248(%rbp), %rdi
callq 0x31a0
leaq -0x268(%rbp), %rdi
callq 0x31a0
leaq -0x288(%rbp), %rdi
callq 0x31a0
leaq -0x2a8(%rbp), %rdi
callq 0x31a0
jmp 0x27052
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x27046
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2703a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2702e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x27022
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x27016
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2700a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x26ffe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x2c8(%rbp), %rdi
callq 0x31a0
leaq -0x2e8(%rbp), %rdi
callq 0x31a0
leaq -0x308(%rbp), %rdi
callq 0x31a0
leaq -0x328(%rbp), %rdi
callq 0x31a0
leaq -0x348(%rbp), %rdi
callq 0x31a0
leaq -0x368(%rbp), %rdi
callq 0x31a0
leaq -0x388(%rbp), %rdi
callq 0x31a0
leaq -0x3a8(%rbp), %rdi
callq 0x31a0
leaq -0x148(%rbp), %rdi
callq 0x31a0
leaq -0x108(%rbp), %rdi
callq 0x31a0
jmp 0x287db
movl -0x4(%rbp), %edi
leaq -0x30(%rbp), %rsi
leaq -0x20(%rbp), %rdx
callq 0x26380
movl -0x4(%rbp), %edi
leaq -0x38(%rbp), %rsi
leaq -0x28(%rbp), %rdx
callq 0x26380
movl $0x1, -0x3ac(%rbp)
movl $0x2, -0x3b0(%rbp)
movl -0x3b0(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0x27ab4
movq -0x10(%rbp), %rax
movq %rax, -0xcf8(%rbp)
leaq -0x3d1(%rbp), %rdi
movq %rdi, -0xcf0(%rbp)
callq 0x3430
movq -0xcf0(%rbp), %rdx
leaq 0x32503(%rip), %rsi     # 0x595e1
leaq -0x3d0(%rbp), %rdi
callq 0x3320
jmp 0x270ec
movq -0xcf8(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x1e3c0
jmp 0x27101
leaq -0x3d0(%rbp), %rdi
callq 0x31a0
leaq -0x3d1(%rbp), %rdi
callq 0x32a0
movq -0x10(%rbp), %rax
movq %rax, -0xd08(%rbp)
movl -0x3ac(%rbp), %esi
incl %esi
movl %esi, -0x3ac(%rbp)
leaq -0x418(%rbp), %rdi
movq %rdi, -0xd00(%rbp)
callq 0x1e700
movq -0xd00(%rbp), %rdx
leaq 0x31b22(%rip), %rsi     # 0x58c75
leaq -0x3f8(%rbp), %rdi
callq 0x1e930
jmp 0x27161
movq -0xd08(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
callq 0x1e3c0
jmp 0x27176
leaq -0x3f8(%rbp), %rdi
callq 0x31a0
leaq -0x418(%rbp), %rdi
callq 0x31a0
movl -0x3b0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x41c(%rbp)
movl -0x41c(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0x27a81
movl -0x3ac(%rbp), %esi
leaq -0x4a0(%rbp), %rdi
movq %rdi, -0xd10(%rbp)
callq 0x1e700
movq -0xd10(%rbp), %rdx
leaq 0x313e9(%rip), %rsi     # 0x585bc
leaq -0x480(%rbp), %rdi
callq 0x1e930
jmp 0x271e1
leaq 0x31f6e(%rip), %rdx     # 0x59156
leaq -0x460(%rbp), %rdi
leaq -0x480(%rbp), %rsi
callq 0x1e560
jmp 0x271fd
movl -0x41c(%rbp), %esi
leaq -0x4c0(%rbp), %rdi
callq 0x1e700
jmp 0x27211
leaq -0x440(%rbp), %rdi
leaq -0x460(%rbp), %rsi
leaq -0x4c0(%rbp), %rdx
callq 0x1e5b0
jmp 0x2722d
leaq -0x4c0(%rbp), %rdi
callq 0x31a0
leaq -0x460(%rbp), %rdi
callq 0x31a0
leaq -0x480(%rbp), %rdi
callq 0x31a0
leaq -0x4a0(%rbp), %rdi
callq 0x31a0
movl -0x3ac(%rbp), %esi
leaq -0x540(%rbp), %rdi
callq 0x1e700
jmp 0x27271
leaq 0x31a0a(%rip), %rsi     # 0x58c82
leaq -0x520(%rbp), %rdi
leaq -0x540(%rbp), %rdx
callq 0x1e930
jmp 0x2728d
leaq 0x31ec2(%rip), %rdx     # 0x59156
leaq -0x500(%rbp), %rdi
leaq -0x520(%rbp), %rsi
callq 0x1e560
jmp 0x272a9
movl -0x41c(%rbp), %esi
leaq -0x560(%rbp), %rdi
callq 0x1e700
jmp 0x272bd
leaq -0x4e0(%rbp), %rdi
leaq -0x500(%rbp), %rsi
leaq -0x560(%rbp), %rdx
callq 0x1e5b0
jmp 0x272d9
leaq -0x560(%rbp), %rdi
callq 0x31a0
leaq -0x500(%rbp), %rdi
callq 0x31a0
leaq -0x520(%rbp), %rdi
callq 0x31a0
leaq -0x540(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xd18(%rbp)
leaq 0x3194e(%rip), %rsi     # 0x58c69
leaq -0x5a0(%rbp), %rdi
leaq -0x440(%rbp), %rdx
callq 0x1e820
jmp 0x27330
leaq 0x323d4(%rip), %rdx     # 0x5970b
leaq -0x580(%rbp), %rdi
leaq -0x5a0(%rbp), %rsi
callq 0x1e560
jmp 0x2734c
movq -0xd18(%rbp), %rdi
leaq -0x580(%rbp), %rsi
callq 0x1e3c0
jmp 0x27361
leaq -0x580(%rbp), %rdi
callq 0x31a0
leaq -0x5a0(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xd20(%rbp)
leaq 0x318de(%rip), %rsi     # 0x58c69
leaq -0x5e0(%rbp), %rdi
leaq -0x4e0(%rbp), %rdx
callq 0x1e820
jmp 0x273a0
leaq 0x32364(%rip), %rdx     # 0x5970b
leaq -0x5c0(%rbp), %rdi
leaq -0x5e0(%rbp), %rsi
callq 0x1e560
jmp 0x273bc
movq -0xd20(%rbp), %rdi
leaq -0x5c0(%rbp), %rsi
callq 0x1e3c0
jmp 0x273d1
leaq -0x5c0(%rbp), %rdi
callq 0x31a0
leaq -0x5e0(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xd28(%rbp)
leaq 0x311b7(%rip), %rsi     # 0x585b2
leaq -0x6a0(%rbp), %rdi
leaq -0x440(%rbp), %rdx
callq 0x1e820
jmp 0x27410
leaq 0x30e3f(%rip), %rdx     # 0x58256
leaq -0x680(%rbp), %rdi
leaq -0x6a0(%rbp), %rsi
callq 0x1e560
jmp 0x2742c
movq -0x28(%rbp), %rdx
movslq -0x41c(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x660(%rbp), %rdi
leaq -0x680(%rbp), %rsi
callq 0x1e980
jmp 0x27453
leaq 0x31d3b(%rip), %rdx     # 0x59195
leaq -0x640(%rbp), %rdi
leaq -0x660(%rbp), %rsi
callq 0x1e560
jmp 0x2746f
movq -0x28(%rbp), %rdx
movl -0x41c(%rbp), %eax
movl -0x3b0(%rbp), %ecx
subl %ecx, %eax
cltq
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x620(%rbp), %rdi
leaq -0x640(%rbp), %rsi
callq 0x1e980
jmp 0x2749f
leaq 0x32265(%rip), %rdx     # 0x5970b
leaq -0x600(%rbp), %rdi
leaq -0x620(%rbp), %rsi
callq 0x1e560
jmp 0x274bb
movq -0xd28(%rbp), %rdi
leaq -0x600(%rbp), %rsi
callq 0x1e3c0
jmp 0x274d0
leaq -0x600(%rbp), %rdi
callq 0x31a0
leaq -0x620(%rbp), %rdi
callq 0x31a0
leaq -0x640(%rbp), %rdi
callq 0x31a0
leaq -0x660(%rbp), %rdi
callq 0x31a0
leaq -0x680(%rbp), %rdi
callq 0x31a0
leaq -0x6a0(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xd30(%rbp)
leaq 0x31088(%rip), %rsi     # 0x585b2
leaq -0x7a0(%rbp), %rdi
leaq -0x4e0(%rbp), %rdx
callq 0x1e820
jmp 0x2753f
leaq 0x30f64(%rip), %rdx     # 0x584aa
leaq -0x780(%rbp), %rdi
leaq -0x7a0(%rbp), %rsi
callq 0x1e560
jmp 0x2755b
movq -0x28(%rbp), %rdx
movslq -0x41c(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x760(%rbp), %rdi
leaq -0x780(%rbp), %rsi
callq 0x1e980
jmp 0x27582
leaq 0x31c0c(%rip), %rdx     # 0x59195
leaq -0x740(%rbp), %rdi
leaq -0x760(%rbp), %rsi
callq 0x1e560
jmp 0x2759e
movq -0x20(%rbp), %rdx
movl -0x41c(%rbp), %eax
movl -0x3b0(%rbp), %ecx
subl %ecx, %eax
cltq
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x720(%rbp), %rdi
leaq -0x740(%rbp), %rsi
callq 0x1e980
jmp 0x275ce
leaq 0x31aa3(%rip), %rdx     # 0x59078
leaq -0x700(%rbp), %rdi
leaq -0x720(%rbp), %rsi
callq 0x1e560
jmp 0x275ea
movq -0x20(%rbp), %rdx
movslq -0x41c(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x6e0(%rbp), %rdi
leaq -0x700(%rbp), %rsi
callq 0x1e980
jmp 0x27611
leaq 0x320f3(%rip), %rdx     # 0x5970b
leaq -0x6c0(%rbp), %rdi
leaq -0x6e0(%rbp), %rsi
callq 0x1e560
jmp 0x2762d
movq -0xd30(%rbp), %rdi
leaq -0x6c0(%rbp), %rsi
callq 0x1e3c0
jmp 0x27642
leaq -0x6c0(%rbp), %rdi
callq 0x31a0
leaq -0x6e0(%rbp), %rdi
callq 0x31a0
leaq -0x700(%rbp), %rdi
callq 0x31a0
leaq -0x720(%rbp), %rdi
callq 0x31a0
leaq -0x740(%rbp), %rdi
callq 0x31a0
leaq -0x760(%rbp), %rdi
callq 0x31a0
leaq -0x780(%rbp), %rdi
callq 0x31a0
leaq -0x7a0(%rbp), %rdi
callq 0x31a0
movq -0x30(%rbp), %rdi
movslq -0x41c(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x4e0(%rbp), %rsi
callq 0x3050
jmp 0x276c2
movq -0x38(%rbp), %rdi
movslq -0x41c(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x440(%rbp), %rsi
callq 0x3050
jmp 0x276e2
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
leaq -0x4e0(%rbp), %rdi
callq 0x31a0
leaq -0x440(%rbp), %rdi
callq 0x31a0
movl -0x41c(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x41c(%rbp)
jmp 0x2719d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2773d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x31a0
leaq -0x3d1(%rbp), %rdi
callq 0x32a0
jmp 0x287db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x27774
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x31a0
leaq -0x418(%rbp), %rdi
callq 0x31a0
jmp 0x287db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x277df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x277d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x277c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x4c0(%rbp), %rdi
callq 0x31a0
leaq -0x460(%rbp), %rdi
callq 0x31a0
leaq -0x480(%rbp), %rdi
callq 0x31a0
leaq -0x4a0(%rbp), %rdi
callq 0x31a0
jmp 0x287db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x27a70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2785b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2784f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x27843
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x560(%rbp), %rdi
callq 0x31a0
leaq -0x500(%rbp), %rdi
callq 0x31a0
leaq -0x520(%rbp), %rdi
callq 0x31a0
leaq -0x540(%rbp), %rdi
callq 0x31a0
jmp 0x27a70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x27a64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x278a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x580(%rbp), %rdi
callq 0x31a0
leaq -0x5a0(%rbp), %rdi
callq 0x31a0
jmp 0x27a64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x278da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x5c0(%rbp), %rdi
callq 0x31a0
leaq -0x5e0(%rbp), %rdi
callq 0x31a0
jmp 0x27a64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2797c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x27970
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x27964
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x27958
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2794c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x600(%rbp), %rdi
callq 0x31a0
leaq -0x620(%rbp), %rdi
callq 0x31a0
leaq -0x640(%rbp), %rdi
callq 0x31a0
leaq -0x660(%rbp), %rdi
callq 0x31a0
leaq -0x680(%rbp), %rdi
callq 0x31a0
leaq -0x6a0(%rbp), %rdi
callq 0x31a0
jmp 0x27a64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x27a58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x27a4c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x27a40
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x27a34
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x27a28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x27a1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x27a10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x6c0(%rbp), %rdi
callq 0x31a0
leaq -0x6e0(%rbp), %rdi
callq 0x31a0
leaq -0x700(%rbp), %rdi
callq 0x31a0
leaq -0x720(%rbp), %rdi
callq 0x31a0
leaq -0x740(%rbp), %rdi
callq 0x31a0
leaq -0x760(%rbp), %rdi
callq 0x31a0
leaq -0x780(%rbp), %rdi
callq 0x31a0
leaq -0x7a0(%rbp), %rdi
callq 0x31a0
leaq -0x4e0(%rbp), %rdi
callq 0x31a0
leaq -0x440(%rbp), %rdi
callq 0x31a0
jmp 0x287db
movl -0x4(%rbp), %edi
leaq -0x30(%rbp), %rsi
leaq -0x20(%rbp), %rdx
callq 0x26380
movl -0x4(%rbp), %edi
leaq -0x38(%rbp), %rsi
leaq -0x28(%rbp), %rdx
callq 0x26380
movl -0x3b0(%rbp), %eax
shll %eax
movl %eax, -0x3b0(%rbp)
jmp 0x270a3
movq -0x10(%rbp), %rax
movq %rax, -0xd40(%rbp)
leaq -0x7c1(%rbp), %rdi
movq %rdi, -0xd38(%rbp)
callq 0x3430
movq -0xd38(%rbp), %rdx
leaq 0x31b01(%rip), %rsi     # 0x595e1
leaq -0x7c0(%rbp), %rdi
callq 0x3320
jmp 0x27aee
movq -0xd40(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
callq 0x1e3c0
jmp 0x27b03
leaq -0x7c0(%rbp), %rdi
callq 0x31a0
leaq -0x7c1(%rbp), %rdi
callq 0x32a0
movq -0x10(%rbp), %rax
movq %rax, -0xd50(%rbp)
movl -0x3ac(%rbp), %esi
incl %esi
movl %esi, -0x3ac(%rbp)
leaq -0x808(%rbp), %rdi
movq %rdi, -0xd48(%rbp)
callq 0x1e700
movq -0xd48(%rbp), %rdx
leaq 0x31120(%rip), %rsi     # 0x58c75
leaq -0x7e8(%rbp), %rdi
callq 0x1e930
jmp 0x27b63
movq -0xd50(%rbp), %rdi
leaq -0x7e8(%rbp), %rsi
callq 0x1e3c0
jmp 0x27b78
leaq -0x7e8(%rbp), %rdi
callq 0x31a0
leaq -0x808(%rbp), %rdi
callq 0x31a0
movl $0x2, -0x80c(%rbp)
movl -0x80c(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0x28472
movl -0x3ac(%rbp), %esi
leaq -0x890(%rbp), %rdi
movq %rdi, -0xd58(%rbp)
callq 0x1e700
movq -0xd58(%rbp), %rdx
leaq 0x309ec(%rip), %rsi     # 0x585bc
leaq -0x870(%rbp), %rdi
callq 0x1e930
jmp 0x27bde
leaq 0x31571(%rip), %rdx     # 0x59156
leaq -0x850(%rbp), %rdi
leaq -0x870(%rbp), %rsi
callq 0x1e560
jmp 0x27bfa
movl -0x80c(%rbp), %esi
leaq -0x8b0(%rbp), %rdi
callq 0x1e700
jmp 0x27c0e
leaq -0x830(%rbp), %rdi
leaq -0x850(%rbp), %rsi
leaq -0x8b0(%rbp), %rdx
callq 0x1e5b0
jmp 0x27c2a
leaq -0x8b0(%rbp), %rdi
callq 0x31a0
leaq -0x850(%rbp), %rdi
callq 0x31a0
leaq -0x870(%rbp), %rdi
callq 0x31a0
leaq -0x890(%rbp), %rdi
callq 0x31a0
movl -0x3ac(%rbp), %esi
leaq -0x930(%rbp), %rdi
callq 0x1e700
jmp 0x27c6e
leaq 0x3100d(%rip), %rsi     # 0x58c82
leaq -0x910(%rbp), %rdi
leaq -0x930(%rbp), %rdx
callq 0x1e930
jmp 0x27c8a
leaq 0x314c5(%rip), %rdx     # 0x59156
leaq -0x8f0(%rbp), %rdi
leaq -0x910(%rbp), %rsi
callq 0x1e560
jmp 0x27ca6
movl -0x80c(%rbp), %esi
leaq -0x950(%rbp), %rdi
callq 0x1e700
jmp 0x27cba
leaq -0x8d0(%rbp), %rdi
leaq -0x8f0(%rbp), %rsi
leaq -0x950(%rbp), %rdx
callq 0x1e5b0
jmp 0x27cd6
leaq -0x950(%rbp), %rdi
callq 0x31a0
leaq -0x8f0(%rbp), %rdi
callq 0x31a0
leaq -0x910(%rbp), %rdi
callq 0x31a0
leaq -0x930(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xd60(%rbp)
leaq 0x30f51(%rip), %rsi     # 0x58c69
leaq -0x990(%rbp), %rdi
leaq -0x830(%rbp), %rdx
callq 0x1e820
jmp 0x27d2d
leaq 0x319d7(%rip), %rdx     # 0x5970b
leaq -0x970(%rbp), %rdi
leaq -0x990(%rbp), %rsi
callq 0x1e560
jmp 0x27d49
movq -0xd60(%rbp), %rdi
leaq -0x970(%rbp), %rsi
callq 0x1e3c0
jmp 0x27d5e
leaq -0x970(%rbp), %rdi
callq 0x31a0
leaq -0x990(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xd68(%rbp)
leaq 0x30ee1(%rip), %rsi     # 0x58c69
leaq -0x9d0(%rbp), %rdi
leaq -0x8d0(%rbp), %rdx
callq 0x1e820
jmp 0x27d9d
leaq 0x31967(%rip), %rdx     # 0x5970b
leaq -0x9b0(%rbp), %rdi
leaq -0x9d0(%rbp), %rsi
callq 0x1e560
jmp 0x27db9
movq -0xd68(%rbp), %rdi
leaq -0x9b0(%rbp), %rsi
callq 0x1e3c0
jmp 0x27dce
leaq -0x9b0(%rbp), %rdi
callq 0x31a0
leaq -0x9d0(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xd70(%rbp)
leaq 0x307ba(%rip), %rsi     # 0x585b2
leaq -0xa90(%rbp), %rdi
leaq -0x830(%rbp), %rdx
callq 0x1e820
jmp 0x27e0d
leaq 0x30442(%rip), %rdx     # 0x58256
leaq -0xa70(%rbp), %rdi
leaq -0xa90(%rbp), %rsi
callq 0x1e560
jmp 0x27e29
movq -0x28(%rbp), %rdx
movslq -0x80c(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0xa50(%rbp), %rdi
leaq -0xa70(%rbp), %rsi
callq 0x1e980
jmp 0x27e50
leaq 0x3133e(%rip), %rdx     # 0x59195
leaq -0xa30(%rbp), %rdi
leaq -0xa50(%rbp), %rsi
callq 0x1e560
jmp 0x27e6c
movq -0x28(%rbp), %rdx
movl -0x80c(%rbp), %eax
decl %eax
cltq
shlq $0x5, %rax
addq %rax, %rdx
leaq -0xa10(%rbp), %rdi
leaq -0xa30(%rbp), %rsi
callq 0x1e980
jmp 0x27e96
leaq 0x3186e(%rip), %rdx     # 0x5970b
leaq -0x9f0(%rbp), %rdi
leaq -0xa10(%rbp), %rsi
callq 0x1e560
jmp 0x27eb2
movq -0xd70(%rbp), %rdi
leaq -0x9f0(%rbp), %rsi
callq 0x1e3c0
jmp 0x27ec7
leaq -0x9f0(%rbp), %rdi
callq 0x31a0
leaq -0xa10(%rbp), %rdi
callq 0x31a0
leaq -0xa30(%rbp), %rdi
callq 0x31a0
leaq -0xa50(%rbp), %rdi
callq 0x31a0
leaq -0xa70(%rbp), %rdi
callq 0x31a0
leaq -0xa90(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xd78(%rbp)
leaq 0x30691(%rip), %rsi     # 0x585b2
leaq -0xb90(%rbp), %rdi
leaq -0x8d0(%rbp), %rdx
callq 0x1e820
jmp 0x27f36
leaq 0x3056d(%rip), %rdx     # 0x584aa
leaq -0xb70(%rbp), %rdi
leaq -0xb90(%rbp), %rsi
callq 0x1e560
jmp 0x27f52
movq -0x28(%rbp), %rdx
movslq -0x80c(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0xb50(%rbp), %rdi
leaq -0xb70(%rbp), %rsi
callq 0x1e980
jmp 0x27f79
leaq 0x31215(%rip), %rdx     # 0x59195
leaq -0xb30(%rbp), %rdi
leaq -0xb50(%rbp), %rsi
callq 0x1e560
jmp 0x27f95
movq -0x20(%rbp), %rdx
movl -0x80c(%rbp), %eax
decl %eax
cltq
shlq $0x5, %rax
addq %rax, %rdx
leaq -0xb10(%rbp), %rdi
leaq -0xb30(%rbp), %rsi
callq 0x1e980
jmp 0x27fbf
leaq 0x310b2(%rip), %rdx     # 0x59078
leaq -0xaf0(%rbp), %rdi
leaq -0xb10(%rbp), %rsi
callq 0x1e560
jmp 0x27fdb
movq -0x20(%rbp), %rdx
movslq -0x80c(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0xad0(%rbp), %rdi
leaq -0xaf0(%rbp), %rsi
callq 0x1e980
jmp 0x28002
leaq 0x31702(%rip), %rdx     # 0x5970b
leaq -0xab0(%rbp), %rdi
leaq -0xad0(%rbp), %rsi
callq 0x1e560
jmp 0x2801e
movq -0xd78(%rbp), %rdi
leaq -0xab0(%rbp), %rsi
callq 0x1e3c0
jmp 0x28033
leaq -0xab0(%rbp), %rdi
callq 0x31a0
leaq -0xad0(%rbp), %rdi
callq 0x31a0
leaq -0xaf0(%rbp), %rdi
callq 0x31a0
leaq -0xb10(%rbp), %rdi
callq 0x31a0
leaq -0xb30(%rbp), %rdi
callq 0x31a0
leaq -0xb50(%rbp), %rdi
callq 0x31a0
leaq -0xb70(%rbp), %rdi
callq 0x31a0
leaq -0xb90(%rbp), %rdi
callq 0x31a0
movq -0x30(%rbp), %rdi
movslq -0x80c(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x8d0(%rbp), %rsi
callq 0x3050
jmp 0x280b3
movq -0x38(%rbp), %rdi
movslq -0x80c(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x830(%rbp), %rsi
callq 0x3050
jmp 0x280d3
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
leaq -0x8d0(%rbp), %rdi
callq 0x31a0
leaq -0x830(%rbp), %rdi
callq 0x31a0
movl -0x80c(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x80c(%rbp)
jmp 0x27b9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2812e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x7c0(%rbp), %rdi
callq 0x31a0
leaq -0x7c1(%rbp), %rdi
callq 0x32a0
jmp 0x287db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x28165
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x7e8(%rbp), %rdi
callq 0x31a0
leaq -0x808(%rbp), %rdi
callq 0x31a0
jmp 0x287db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x281d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x281c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x281b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x8b0(%rbp), %rdi
callq 0x31a0
leaq -0x850(%rbp), %rdi
callq 0x31a0
leaq -0x870(%rbp), %rdi
callq 0x31a0
leaq -0x890(%rbp), %rdi
callq 0x31a0
jmp 0x287db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x28461
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2824c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x28240
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x28234
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x950(%rbp), %rdi
callq 0x31a0
leaq -0x8f0(%rbp), %rdi
callq 0x31a0
leaq -0x910(%rbp), %rdi
callq 0x31a0
leaq -0x930(%rbp), %rdi
callq 0x31a0
jmp 0x28461
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x28455
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x28294
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x970(%rbp), %rdi
callq 0x31a0
leaq -0x990(%rbp), %rdi
callq 0x31a0
jmp 0x28455
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x282cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x9b0(%rbp), %rdi
callq 0x31a0
leaq -0x9d0(%rbp), %rdi
callq 0x31a0
jmp 0x28455
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2836d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x28361
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x28355
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x28349
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2833d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x9f0(%rbp), %rdi
callq 0x31a0
leaq -0xa10(%rbp), %rdi
callq 0x31a0
leaq -0xa30(%rbp), %rdi
callq 0x31a0
leaq -0xa50(%rbp), %rdi
callq 0x31a0
leaq -0xa70(%rbp), %rdi
callq 0x31a0
leaq -0xa90(%rbp), %rdi
callq 0x31a0
jmp 0x28455
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x28449
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2843d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x28431
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x28425
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x28419
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2840d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x28401
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xab0(%rbp), %rdi
callq 0x31a0
leaq -0xad0(%rbp), %rdi
callq 0x31a0
leaq -0xaf0(%rbp), %rdi
callq 0x31a0
leaq -0xb10(%rbp), %rdi
callq 0x31a0
leaq -0xb30(%rbp), %rdi
callq 0x31a0
leaq -0xb50(%rbp), %rdi
callq 0x31a0
leaq -0xb70(%rbp), %rdi
callq 0x31a0
leaq -0xb90(%rbp), %rdi
callq 0x31a0
leaq -0x8d0(%rbp), %rdi
callq 0x31a0
leaq -0x830(%rbp), %rdi
callq 0x31a0
jmp 0x287db
movl -0x4(%rbp), %edi
leaq -0x30(%rbp), %rsi
leaq -0x20(%rbp), %rdx
callq 0x26380
movl -0x4(%rbp), %edi
leaq -0x38(%rbp), %rsi
leaq -0x28(%rbp), %rdx
callq 0x26380
movq -0x10(%rbp), %rax
movq %rax, -0xd88(%rbp)
leaq -0xbb1(%rbp), %rdi
movq %rdi, -0xd80(%rbp)
callq 0x3430
movq -0xd80(%rbp), %rdx
leaq 0x31123(%rip), %rsi     # 0x595e1
leaq -0xbb0(%rbp), %rdi
callq 0x3320
jmp 0x284cc
movq -0xd88(%rbp), %rdi
leaq -0xbb0(%rbp), %rsi
callq 0x1e3c0
jmp 0x284e1
leaq -0xbb0(%rbp), %rdi
callq 0x31a0
leaq -0xbb1(%rbp), %rdi
callq 0x32a0
movq -0x10(%rbp), %rax
movq %rax, -0xd98(%rbp)
leaq -0xbd9(%rbp), %rdi
movq %rdi, -0xd90(%rbp)
callq 0x3430
movq -0xd90(%rbp), %rdx
leaq 0x30760(%rip), %rsi     # 0x58c85
leaq -0xbd8(%rbp), %rdi
callq 0x3320
jmp 0x28533
movq -0xd98(%rbp), %rdi
leaq -0xbd8(%rbp), %rsi
callq 0x1e3c0
jmp 0x28548
leaq -0xbd8(%rbp), %rdi
callq 0x31a0
leaq -0xbd9(%rbp), %rdi
callq 0x32a0
movl -0x4(%rbp), %edi
movq -0x10(%rbp), %r8
leaq -0x14(%rbp), %rsi
leaq -0x20(%rbp), %rdx
leaq -0x28(%rbp), %rcx
callq 0x25d30
movq -0x28(%rbp), %rax
movq %rax, -0xda0(%rbp)
cmpq $0x0, %rax
je 0x285f5
movq -0xda0(%rbp), %rcx
movq %rcx, %rax
addq $-0x8, %rax
movq %rax, -0xdb0(%rbp)
movq -0x8(%rcx), %rdx
shlq $0x5, %rdx
movq %rcx, %rax
addq %rdx, %rax
cmpq %rax, %rcx
movq %rax, -0xda8(%rbp)
je 0x285e9
movq -0xda8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xdb8(%rbp)
callq 0x31a0
movq -0xda0(%rbp), %rcx
movq -0xdb8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0xda8(%rbp)
jne 0x285b8
movq -0xdb0(%rbp), %rdi
callq 0x32f0
movq -0x20(%rbp), %rax
movq %rax, -0xdc0(%rbp)
cmpq $0x0, %rax
je 0x28672
movq -0xdc0(%rbp), %rcx
movq %rcx, %rax
addq $-0x8, %rax
movq %rax, -0xdd0(%rbp)
movq -0x8(%rcx), %rdx
shlq $0x5, %rdx
movq %rcx, %rax
addq %rdx, %rax
cmpq %rax, %rcx
movq %rax, -0xdc8(%rbp)
je 0x28666
movq -0xdc8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xdd8(%rbp)
callq 0x31a0
movq -0xdc0(%rbp), %rcx
movq -0xdd8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0xdc8(%rbp)
jne 0x28635
movq -0xdd0(%rbp), %rdi
callq 0x32f0
movq -0x38(%rbp), %rax
movq %rax, -0xde0(%rbp)
cmpq $0x0, %rax
je 0x286ef
movq -0xde0(%rbp), %rcx
movq %rcx, %rax
addq $-0x8, %rax
movq %rax, -0xdf0(%rbp)
movq -0x8(%rcx), %rdx
shlq $0x5, %rdx
movq %rcx, %rax
addq %rdx, %rax
cmpq %rax, %rcx
movq %rax, -0xde8(%rbp)
je 0x286e3
movq -0xde8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xdf8(%rbp)
callq 0x31a0
movq -0xde0(%rbp), %rcx
movq -0xdf8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0xde8(%rbp)
jne 0x286b2
movq -0xdf0(%rbp), %rdi
callq 0x32f0
movq -0x30(%rbp), %rax
movq %rax, -0xe00(%rbp)
cmpq $0x0, %rax
je 0x2876c
movq -0xe00(%rbp), %rcx
movq %rcx, %rax
addq $-0x8, %rax
movq %rax, -0xe10(%rbp)
movq -0x8(%rcx), %rdx
shlq $0x5, %rdx
movq %rcx, %rax
addq %rdx, %rax
cmpq %rax, %rcx
movq %rax, -0xe08(%rbp)
je 0x28760
movq -0xe08(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xe18(%rbp)
callq 0x31a0
movq -0xe00(%rbp), %rcx
movq -0xe18(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0xe08(%rbp)
jne 0x2872f
movq -0xe10(%rbp), %rdi
callq 0x32f0
addq $0xe20, %rsp            # imm = 0xE20
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2879b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xbb0(%rbp), %rdi
callq 0x31a0
leaq -0xbb1(%rbp), %rdi
callq 0x32a0
jmp 0x287db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x287cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xbd8(%rbp), %rdi
callq 0x31a0
leaq -0xbd9(%rbp), %rdi
callq 0x32a0
movq -0x68(%rbp), %rdi
callq 0x3420
nopw %cs:(%rax,%rax)