// File: temelmertcan[P]multgen/src/adders.cpp
// Function: create_bk_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_bk_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, "BK", gtmp, ptmp, verilog);
  pgtmp_to_pg(size, gtmp, g);
  pgtmp_to_pg(size, ptmp, p);

  verilog.push("\n// Brent-Kung Adder \n");

  int stage=0;

  verilog.push("");
  verilog.push("// BK Step 1: group pairs from close to far ");

  // bk first
  unsigned long long coef;
  for (coef = 1; coef*2-1 < size; coef *= 2){
    verilog.push("");
    verilog.push("// Stage " + to_string(++stage)+ " - pairs that are " + to_string(coef) + " index apart.");

    for (int i=2*coef-1; i < size; i+=coef*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-coef] + ";");
      verilog.push ("assign "+ new_g + " = (" + p[i] + " & " + g[i-coef] + ") | " + g[i] + ";");

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

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

  verilog.push("");
  verilog.push("");
  verilog.push("// BK Step 2: group pairs from far to close ");

  if (coef < size)
    coef *= 2;

  for (coef = coef/4; coef >= 1; coef = coef/2){
    verilog.push("");
    verilog.push("// Stage " + to_string(++stage)+ " - pairs that are " + to_string(coef) + " index apart.");

    for (int i=3*coef-1; i < size; i+=coef*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-coef] + ";");
      verilog.push ("assign "+ new_g + " = (" + p[i] + " & " + g[i-coef] + ") | " + g[i] + ";");

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

  }

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

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

  delete[] p;
  delete[] g;

  delete[] ptmp;
  delete[] gtmp;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xce0, %rsp            # imm = 0xCE0
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, -0xaa8(%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 -0xaa8(%rbp), %rax
movq %rax, (%rcx)
addq $0x8, %rcx
movq %rcx, -0xaa0(%rbp)
cmpq $0x0, %rax
je 0x2acfb
movq -0xaa0(%rbp), %rax
movq -0xaa8(%rbp), %rdx
shlq $0x5, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0xab8(%rbp)
movq %rax, -0xab0(%rbp)
movq -0xab0(%rbp), %rdi
movq %rdi, -0xac0(%rbp)
callq 0x3330
movq -0xac0(%rbp), %rax
movq -0xab8(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0xab0(%rbp)
jne 0x2acca
movq -0xaa0(%rbp), %rax
movq %rax, -0x20(%rbp)
movslq -0x4(%rbp), %rax
movq %rax, -0xad0(%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 -0xad0(%rbp), %rax
movq %rax, (%rcx)
addq $0x8, %rcx
movq %rcx, -0xac8(%rbp)
cmpq $0x0, %rax
je 0x2adb0
movq -0xac8(%rbp), %rax
movq -0xad0(%rbp), %rdx
shlq $0x5, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0xae0(%rbp)
movq %rax, -0xad8(%rbp)
movq -0xad8(%rbp), %rdi
movq %rdi, -0xae8(%rbp)
callq 0x3330
movq -0xae8(%rbp), %rax
movq -0xae0(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0xad8(%rbp)
jne 0x2ad7f
movq -0xac8(%rbp), %rax
movq %rax, -0x28(%rbp)
movslq -0x4(%rbp), %rax
movq %rax, -0xaf8(%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 -0xaf8(%rbp), %rax
movq %rax, (%rcx)
addq $0x8, %rcx
movq %rcx, -0xaf0(%rbp)
cmpq $0x0, %rax
je 0x2ae65
movq -0xaf0(%rbp), %rax
movq -0xaf8(%rbp), %rdx
shlq $0x5, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0xb08(%rbp)
movq %rax, -0xb00(%rbp)
movq -0xb00(%rbp), %rdi
movq %rdi, -0xb10(%rbp)
callq 0x3330
movq -0xb10(%rbp), %rax
movq -0xb08(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0xb00(%rbp)
jne 0x2ae34
movq -0xaf0(%rbp), %rax
movq %rax, -0x30(%rbp)
movslq -0x4(%rbp), %rax
movq %rax, -0xb20(%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 -0xb20(%rbp), %rax
movq %rax, (%rcx)
addq $0x8, %rcx
movq %rcx, -0xb18(%rbp)
cmpq $0x0, %rax
je 0x2af1a
movq -0xb18(%rbp), %rax
movq -0xb20(%rbp), %rdx
shlq $0x5, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0xb30(%rbp)
movq %rax, -0xb28(%rbp)
movq -0xb28(%rbp), %rdi
movq %rdi, -0xb38(%rbp)
callq 0x3330
movq -0xb38(%rbp), %rax
movq -0xb30(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0xb28(%rbp)
jne 0x2aee9
movq -0xb18(%rbp), %rax
movq %rax, -0x38(%rbp)
movl -0x4(%rbp), %eax
movl %eax, -0xb48(%rbp)
movb -0x5(%rbp), %al
movb %al, -0xb41(%rbp)
leaq -0x59(%rbp), %rdi
movq %rdi, -0xb40(%rbp)
callq 0x3430
movq -0xb40(%rbp), %rdx
leaq 0x2c790(%rip), %rsi     # 0x576e5
leaq -0x58(%rbp), %rdi
callq 0x3320
jmp 0x2af60
movl -0xb48(%rbp), %edi
movb -0xb41(%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 0x2af93
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, -0xb58(%rbp)
leaq -0x91(%rbp), %rdi
movq %rdi, -0xb50(%rbp)
callq 0x3430
movq -0xb50(%rbp), %rdx
leaq 0x2dd1a(%rip), %rsi     # 0x58d0b
leaq -0x90(%rbp), %rdi
callq 0x3320
jmp 0x2afff
movq -0xb58(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x1e3c0
jmp 0x2b014
leaq -0x90(%rbp), %rdi
callq 0x31a0
leaq -0x91(%rbp), %rdi
callq 0x32a0
movl $0x0, -0x98(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xb68(%rbp)
leaq -0xb9(%rbp), %rdi
movq %rdi, -0xb60(%rbp)
callq 0x3430
movq -0xb60(%rbp), %rdx
leaq 0x2e57f(%rip), %rsi     # 0x595e1
leaq -0xb8(%rbp), %rdi
callq 0x3320
jmp 0x2b070
movq -0xb68(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x1e3c0
jmp 0x2b085
leaq -0xb8(%rbp), %rdi
callq 0x31a0
leaq -0xb9(%rbp), %rdi
callq 0x32a0
movq -0x10(%rbp), %rax
movq %rax, -0xb78(%rbp)
leaq -0xe1(%rbp), %rdi
movq %rdi, -0xb70(%rbp)
callq 0x3430
movq -0xb70(%rbp), %rdx
leaq 0x2dc59(%rip), %rsi     # 0x58d22
leaq -0xe0(%rbp), %rdi
callq 0x3320
jmp 0x2b0d7
movq -0xb78(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x1e3c0
jmp 0x2b0ec
leaq -0xe0(%rbp), %rdi
callq 0x31a0
leaq -0xe1(%rbp), %rdi
callq 0x32a0
movq $0x1, -0xf0(%rbp)
movq -0xf0(%rbp), %rax
shlq %rax
subq $0x1, %rax
movslq -0x4(%rbp), %rcx
cmpq %rcx, %rax
jae 0x2bd12
movq -0x10(%rbp), %rax
movq %rax, -0xb88(%rbp)
leaq -0x111(%rbp), %rdi
movq %rdi, -0xb80(%rbp)
callq 0x3430
movq -0xb80(%rbp), %rdx
leaq 0x2e48b(%rip), %rsi     # 0x595e1
leaq -0x110(%rbp), %rdi
callq 0x3320
jmp 0x2b164
movq -0xb88(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x1e3c0
jmp 0x2b179
leaq -0x110(%rbp), %rdi
callq 0x31a0
leaq -0x111(%rbp), %rdi
callq 0x32a0
movq -0x10(%rbp), %rax
movq %rax, -0xb98(%rbp)
movl -0x98(%rbp), %esi
incl %esi
movl %esi, -0x98(%rbp)
leaq -0x1b8(%rbp), %rdi
movq %rdi, -0xb90(%rbp)
callq 0x1e700
movq -0xb90(%rbp), %rdx
leaq 0x2db84(%rip), %rsi     # 0x58d4f
leaq -0x198(%rbp), %rdi
callq 0x1e930
jmp 0x2b1d9
leaq 0x2db79(%rip), %rdx     # 0x58d59
leaq -0x178(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x1e560
jmp 0x2b1f5
movq -0xf0(%rbp), %rsi
leaq -0x1d8(%rbp), %rdi
callq 0x2e180
jmp 0x2b20a
leaq -0x158(%rbp), %rdi
leaq -0x178(%rbp), %rsi
leaq -0x1d8(%rbp), %rdx
callq 0x1e5b0
jmp 0x2b226
leaq 0x2db3f(%rip), %rdx     # 0x58d6c
leaq -0x138(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x1e560
jmp 0x2b242
movq -0xb98(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x1e3c0
jmp 0x2b257
leaq -0x138(%rbp), %rdi
callq 0x31a0
leaq -0x158(%rbp), %rdi
callq 0x31a0
leaq -0x1d8(%rbp), %rdi
callq 0x31a0
leaq -0x178(%rbp), %rdi
callq 0x31a0
leaq -0x198(%rbp), %rdi
callq 0x31a0
leaq -0x1b8(%rbp), %rdi
callq 0x31a0
movq -0xf0(%rbp), %rax
shlq %rax
subq $0x1, %rax
movl %eax, -0x1dc(%rbp)
movl -0x1dc(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0x2bcdc
movl -0x98(%rbp), %esi
leaq -0x260(%rbp), %rdi
movq %rdi, -0xba0(%rbp)
callq 0x1e700
movq -0xba0(%rbp), %rdx
leaq 0x2d2d3(%rip), %rsi     # 0x585bc
leaq -0x240(%rbp), %rdi
callq 0x1e930
jmp 0x2b2f7
leaq 0x2de58(%rip), %rdx     # 0x59156
leaq -0x220(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x1e560
jmp 0x2b313
movl -0x1dc(%rbp), %esi
leaq -0x280(%rbp), %rdi
callq 0x1e700
jmp 0x2b327
leaq -0x200(%rbp), %rdi
leaq -0x220(%rbp), %rsi
leaq -0x280(%rbp), %rdx
callq 0x1e5b0
jmp 0x2b343
leaq -0x280(%rbp), %rdi
callq 0x31a0
leaq -0x220(%rbp), %rdi
callq 0x31a0
leaq -0x240(%rbp), %rdi
callq 0x31a0
leaq -0x260(%rbp), %rdi
callq 0x31a0
movl -0x98(%rbp), %esi
leaq -0x300(%rbp), %rdi
callq 0x1e700
jmp 0x2b387
leaq 0x2d8f4(%rip), %rsi     # 0x58c82
leaq -0x2e0(%rbp), %rdi
leaq -0x300(%rbp), %rdx
callq 0x1e930
jmp 0x2b3a3
leaq 0x2ddac(%rip), %rdx     # 0x59156
leaq -0x2c0(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x1e560
jmp 0x2b3bf
movl -0x1dc(%rbp), %esi
leaq -0x320(%rbp), %rdi
callq 0x1e700
jmp 0x2b3d3
leaq -0x2a0(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
leaq -0x320(%rbp), %rdx
callq 0x1e5b0
jmp 0x2b3ef
leaq -0x320(%rbp), %rdi
callq 0x31a0
leaq -0x2c0(%rbp), %rdi
callq 0x31a0
leaq -0x2e0(%rbp), %rdi
callq 0x31a0
leaq -0x300(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xba8(%rbp)
leaq 0x2d838(%rip), %rsi     # 0x58c69
leaq -0x360(%rbp), %rdi
leaq -0x200(%rbp), %rdx
callq 0x1e820
jmp 0x2b446
leaq 0x2e2be(%rip), %rdx     # 0x5970b
leaq -0x340(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0x1e560
jmp 0x2b462
movq -0xba8(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0x1e3c0
jmp 0x2b477
leaq -0x340(%rbp), %rdi
callq 0x31a0
leaq -0x360(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xbb0(%rbp)
leaq 0x2d7c8(%rip), %rsi     # 0x58c69
leaq -0x3a0(%rbp), %rdi
leaq -0x2a0(%rbp), %rdx
callq 0x1e820
jmp 0x2b4b6
leaq 0x2e24e(%rip), %rdx     # 0x5970b
leaq -0x380(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0x1e560
jmp 0x2b4d2
movq -0xbb0(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x1e3c0
jmp 0x2b4e7
leaq -0x380(%rbp), %rdi
callq 0x31a0
leaq -0x3a0(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xbb8(%rbp)
leaq 0x2d0a1(%rip), %rsi     # 0x585b2
leaq -0x460(%rbp), %rdi
leaq -0x200(%rbp), %rdx
callq 0x1e820
jmp 0x2b526
leaq 0x2cd29(%rip), %rdx     # 0x58256
leaq -0x440(%rbp), %rdi
leaq -0x460(%rbp), %rsi
callq 0x1e560
jmp 0x2b542
movq -0x28(%rbp), %rdx
movslq -0x1dc(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x420(%rbp), %rdi
leaq -0x440(%rbp), %rsi
callq 0x1e980
jmp 0x2b569
leaq 0x2dc25(%rip), %rdx     # 0x59195
leaq -0x400(%rbp), %rdi
leaq -0x420(%rbp), %rsi
callq 0x1e560
jmp 0x2b585
movq -0x28(%rbp), %rdx
movslq -0x1dc(%rbp), %rax
movq -0xf0(%rbp), %rcx
subq %rcx, %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x3e0(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0x1e980
jmp 0x2b5b6
leaq 0x2e14e(%rip), %rdx     # 0x5970b
leaq -0x3c0(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
callq 0x1e560
jmp 0x2b5d2
movq -0xbb8(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x1e3c0
jmp 0x2b5e7
leaq -0x3c0(%rbp), %rdi
callq 0x31a0
leaq -0x3e0(%rbp), %rdi
callq 0x31a0
leaq -0x400(%rbp), %rdi
callq 0x31a0
leaq -0x420(%rbp), %rdi
callq 0x31a0
leaq -0x440(%rbp), %rdi
callq 0x31a0
leaq -0x460(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xbc0(%rbp)
leaq 0x2cf71(%rip), %rsi     # 0x585b2
leaq -0x560(%rbp), %rdi
leaq -0x2a0(%rbp), %rdx
callq 0x1e820
jmp 0x2b656
leaq 0x2ce4d(%rip), %rdx     # 0x584aa
leaq -0x540(%rbp), %rdi
leaq -0x560(%rbp), %rsi
callq 0x1e560
jmp 0x2b672
movq -0x28(%rbp), %rdx
movslq -0x1dc(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x520(%rbp), %rdi
leaq -0x540(%rbp), %rsi
callq 0x1e980
jmp 0x2b699
leaq 0x2daf5(%rip), %rdx     # 0x59195
leaq -0x500(%rbp), %rdi
leaq -0x520(%rbp), %rsi
callq 0x1e560
jmp 0x2b6b5
movq -0x20(%rbp), %rdx
movslq -0x1dc(%rbp), %rax
movq -0xf0(%rbp), %rcx
subq %rcx, %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x4e0(%rbp), %rdi
leaq -0x500(%rbp), %rsi
callq 0x1e980
jmp 0x2b6e6
leaq 0x2d98b(%rip), %rdx     # 0x59078
leaq -0x4c0(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0x1e560
jmp 0x2b702
movq -0x20(%rbp), %rdx
movslq -0x1dc(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x4a0(%rbp), %rdi
leaq -0x4c0(%rbp), %rsi
callq 0x1e980
jmp 0x2b729
leaq 0x2dfdb(%rip), %rdx     # 0x5970b
leaq -0x480(%rbp), %rdi
leaq -0x4a0(%rbp), %rsi
callq 0x1e560
jmp 0x2b745
movq -0xbc0(%rbp), %rdi
leaq -0x480(%rbp), %rsi
callq 0x1e3c0
jmp 0x2b75a
leaq -0x480(%rbp), %rdi
callq 0x31a0
leaq -0x4a0(%rbp), %rdi
callq 0x31a0
leaq -0x4c0(%rbp), %rdi
callq 0x31a0
leaq -0x4e0(%rbp), %rdi
callq 0x31a0
leaq -0x500(%rbp), %rdi
callq 0x31a0
leaq -0x520(%rbp), %rdi
callq 0x31a0
leaq -0x540(%rbp), %rdi
callq 0x31a0
leaq -0x560(%rbp), %rdi
callq 0x31a0
movq -0x30(%rbp), %rdi
movslq -0x1dc(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x3050
jmp 0x2b7da
movq -0x38(%rbp), %rdi
movslq -0x1dc(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x200(%rbp), %rsi
callq 0x3050
jmp 0x2b7fa
leaq -0x2a0(%rbp), %rdi
callq 0x31a0
leaq -0x200(%rbp), %rdi
callq 0x31a0
movq -0xf0(%rbp), %rcx
shlq %rcx
movslq -0x1dc(%rbp), %rax
addq %rcx, %rax
movl %eax, -0x1dc(%rbp)
jmp 0x2b2b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2b854
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 0x2cd8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2b888
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 0x2cd8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2b8bf
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 0x2cd8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2b8f6
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 0x2cd8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2b92d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x31a0
leaq -0x111(%rbp), %rdi
callq 0x32a0
jmp 0x2cd8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2b9cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2b9c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2b9b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2b9ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2b99f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x31a0
leaq -0x158(%rbp), %rdi
callq 0x31a0
leaq -0x1d8(%rbp), %rdi
callq 0x31a0
leaq -0x178(%rbp), %rdi
callq 0x31a0
leaq -0x198(%rbp), %rdi
callq 0x31a0
leaq -0x1b8(%rbp), %rdi
callq 0x31a0
jmp 0x2cd8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2ba3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2ba2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2ba22
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x31a0
leaq -0x220(%rbp), %rdi
callq 0x31a0
leaq -0x240(%rbp), %rdi
callq 0x31a0
leaq -0x260(%rbp), %rdi
callq 0x31a0
jmp 0x2cd8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bccb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bab6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2baaa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2ba9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x31a0
leaq -0x2c0(%rbp), %rdi
callq 0x31a0
leaq -0x2e0(%rbp), %rdi
callq 0x31a0
leaq -0x300(%rbp), %rdi
callq 0x31a0
jmp 0x2bccb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bcbf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bafe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x340(%rbp), %rdi
callq 0x31a0
leaq -0x360(%rbp), %rdi
callq 0x31a0
jmp 0x2bcbf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bb35
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x31a0
leaq -0x3a0(%rbp), %rdi
callq 0x31a0
jmp 0x2bcbf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bbd7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bbcb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bbbf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bbb3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bba7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x3c0(%rbp), %rdi
callq 0x31a0
leaq -0x3e0(%rbp), %rdi
callq 0x31a0
leaq -0x400(%rbp), %rdi
callq 0x31a0
leaq -0x420(%rbp), %rdi
callq 0x31a0
leaq -0x440(%rbp), %rdi
callq 0x31a0
leaq -0x460(%rbp), %rdi
callq 0x31a0
jmp 0x2bcbf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bcb3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bca7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bc9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bc8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bc83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bc77
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bc6b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x480(%rbp), %rdi
callq 0x31a0
leaq -0x4a0(%rbp), %rdi
callq 0x31a0
leaq -0x4c0(%rbp), %rdi
callq 0x31a0
leaq -0x4e0(%rbp), %rdi
callq 0x31a0
leaq -0x500(%rbp), %rdi
callq 0x31a0
leaq -0x520(%rbp), %rdi
callq 0x31a0
leaq -0x540(%rbp), %rdi
callq 0x31a0
leaq -0x560(%rbp), %rdi
callq 0x31a0
leaq -0x2a0(%rbp), %rdi
callq 0x31a0
leaq -0x200(%rbp), %rdi
callq 0x31a0
jmp 0x2cd8f
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 -0xf0(%rbp), %rax
shlq %rax
movq %rax, -0xf0(%rbp)
jmp 0x2b10f
movq -0x10(%rbp), %rax
movq %rax, -0xbd0(%rbp)
leaq -0x581(%rbp), %rdi
movq %rdi, -0xbc8(%rbp)
callq 0x3430
movq -0xbc8(%rbp), %rdx
leaq 0x2d8a3(%rip), %rsi     # 0x595e1
leaq -0x580(%rbp), %rdi
callq 0x3320
jmp 0x2bd4c
movq -0xbd0(%rbp), %rdi
leaq -0x580(%rbp), %rsi
callq 0x1e3c0
jmp 0x2bd61
leaq -0x580(%rbp), %rdi
callq 0x31a0
leaq -0x581(%rbp), %rdi
callq 0x32a0
movq -0x10(%rbp), %rax
movq %rax, -0xbe0(%rbp)
leaq -0x5a9(%rbp), %rdi
movq %rdi, -0xbd8(%rbp)
callq 0x3430
movq -0xbd8(%rbp), %rdx
leaq 0x2d83c(%rip), %rsi     # 0x595e1
leaq -0x5a8(%rbp), %rdi
callq 0x3320
jmp 0x2bdb3
movq -0xbe0(%rbp), %rdi
leaq -0x5a8(%rbp), %rsi
callq 0x1e3c0
jmp 0x2bdc8
leaq -0x5a8(%rbp), %rdi
callq 0x31a0
leaq -0x5a9(%rbp), %rdi
callq 0x32a0
movq -0x10(%rbp), %rax
movq %rax, -0xbf0(%rbp)
leaq -0x5d1(%rbp), %rdi
movq %rdi, -0xbe8(%rbp)
callq 0x3430
movq -0xbe8(%rbp), %rdx
leaq 0x2cf6e(%rip), %rsi     # 0x58d7a
leaq -0x5d0(%rbp), %rdi
callq 0x3320
jmp 0x2be1a
movq -0xbf0(%rbp), %rdi
leaq -0x5d0(%rbp), %rsi
callq 0x1e3c0
jmp 0x2be2f
leaq -0x5d0(%rbp), %rdi
callq 0x31a0
leaq -0x5d1(%rbp), %rdi
callq 0x32a0
movq -0xf0(%rbp), %rax
movslq -0x4(%rbp), %rcx
cmpq %rcx, %rax
jae 0x2bf16
movq -0xf0(%rbp), %rax
shlq %rax
movq %rax, -0xf0(%rbp)
jmp 0x2bf16
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2be97
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x580(%rbp), %rdi
callq 0x31a0
leaq -0x581(%rbp), %rdi
callq 0x32a0
jmp 0x2cd8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bece
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x5a8(%rbp), %rdi
callq 0x31a0
leaq -0x5a9(%rbp), %rdi
callq 0x32a0
jmp 0x2cd8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2bf05
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x5d0(%rbp), %rdi
callq 0x31a0
leaq -0x5d1(%rbp), %rdi
callq 0x32a0
jmp 0x2cd8f
movq -0xf0(%rbp), %rax
shrq $0x2, %rax
movq %rax, -0xf0(%rbp)
cmpq $0x1, -0xf0(%rbp)
jb 0x2ca46
movq -0x10(%rbp), %rax
movq %rax, -0xc00(%rbp)
leaq -0x5f9(%rbp), %rdi
movq %rdi, -0xbf8(%rbp)
callq 0x3430
movq -0xbf8(%rbp), %rdx
leaq 0x2d67f(%rip), %rsi     # 0x595e1
leaq -0x5f8(%rbp), %rdi
callq 0x3320
jmp 0x2bf70
movq -0xc00(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
callq 0x1e3c0
jmp 0x2bf85
leaq -0x5f8(%rbp), %rdi
callq 0x31a0
leaq -0x5f9(%rbp), %rdi
callq 0x32a0
movq -0x10(%rbp), %rax
movq %rax, -0xc10(%rbp)
movl -0x98(%rbp), %esi
incl %esi
movl %esi, -0x98(%rbp)
leaq -0x6a0(%rbp), %rdi
movq %rdi, -0xc08(%rbp)
callq 0x1e700
movq -0xc08(%rbp), %rdx
leaq 0x2cd78(%rip), %rsi     # 0x58d4f
leaq -0x680(%rbp), %rdi
callq 0x1e930
jmp 0x2bfe5
leaq 0x2cd6d(%rip), %rdx     # 0x58d59
leaq -0x660(%rbp), %rdi
leaq -0x680(%rbp), %rsi
callq 0x1e560
jmp 0x2c001
movq -0xf0(%rbp), %rsi
leaq -0x6c0(%rbp), %rdi
callq 0x2e180
jmp 0x2c016
leaq -0x640(%rbp), %rdi
leaq -0x660(%rbp), %rsi
leaq -0x6c0(%rbp), %rdx
callq 0x1e5b0
jmp 0x2c032
leaq 0x2cd33(%rip), %rdx     # 0x58d6c
leaq -0x620(%rbp), %rdi
leaq -0x640(%rbp), %rsi
callq 0x1e560
jmp 0x2c04e
movq -0xc10(%rbp), %rdi
leaq -0x620(%rbp), %rsi
callq 0x1e3c0
jmp 0x2c063
leaq -0x620(%rbp), %rdi
callq 0x31a0
leaq -0x640(%rbp), %rdi
callq 0x31a0
leaq -0x6c0(%rbp), %rdi
callq 0x31a0
leaq -0x660(%rbp), %rdi
callq 0x31a0
leaq -0x680(%rbp), %rdi
callq 0x31a0
leaq -0x6a0(%rbp), %rdi
callq 0x31a0
imulq $0x3, -0xf0(%rbp), %rax
subq $0x1, %rax
movl %eax, -0x6c4(%rbp)
movl -0x6c4(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0x2ca10
movl -0x98(%rbp), %esi
leaq -0x748(%rbp), %rdi
movq %rdi, -0xc18(%rbp)
callq 0x1e700
movq -0xc18(%rbp), %rdx
leaq 0x2c4c9(%rip), %rsi     # 0x585bc
leaq -0x728(%rbp), %rdi
callq 0x1e930
jmp 0x2c101
leaq 0x2d04e(%rip), %rdx     # 0x59156
leaq -0x708(%rbp), %rdi
leaq -0x728(%rbp), %rsi
callq 0x1e560
jmp 0x2c11d
movl -0x6c4(%rbp), %esi
leaq -0x768(%rbp), %rdi
callq 0x1e700
jmp 0x2c131
leaq -0x6e8(%rbp), %rdi
leaq -0x708(%rbp), %rsi
leaq -0x768(%rbp), %rdx
callq 0x1e5b0
jmp 0x2c14d
leaq -0x768(%rbp), %rdi
callq 0x31a0
leaq -0x708(%rbp), %rdi
callq 0x31a0
leaq -0x728(%rbp), %rdi
callq 0x31a0
leaq -0x748(%rbp), %rdi
callq 0x31a0
movl -0x98(%rbp), %esi
leaq -0x7e8(%rbp), %rdi
callq 0x1e700
jmp 0x2c191
leaq 0x2caea(%rip), %rsi     # 0x58c82
leaq -0x7c8(%rbp), %rdi
leaq -0x7e8(%rbp), %rdx
callq 0x1e930
jmp 0x2c1ad
leaq 0x2cfa2(%rip), %rdx     # 0x59156
leaq -0x7a8(%rbp), %rdi
leaq -0x7c8(%rbp), %rsi
callq 0x1e560
jmp 0x2c1c9
movl -0x6c4(%rbp), %esi
leaq -0x808(%rbp), %rdi
callq 0x1e700
jmp 0x2c1dd
leaq -0x788(%rbp), %rdi
leaq -0x7a8(%rbp), %rsi
leaq -0x808(%rbp), %rdx
callq 0x1e5b0
jmp 0x2c1f9
leaq -0x808(%rbp), %rdi
callq 0x31a0
leaq -0x7a8(%rbp), %rdi
callq 0x31a0
leaq -0x7c8(%rbp), %rdi
callq 0x31a0
leaq -0x7e8(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xc20(%rbp)
leaq 0x2ca2e(%rip), %rsi     # 0x58c69
leaq -0x848(%rbp), %rdi
leaq -0x6e8(%rbp), %rdx
callq 0x1e820
jmp 0x2c250
leaq 0x2d4b4(%rip), %rdx     # 0x5970b
leaq -0x828(%rbp), %rdi
leaq -0x848(%rbp), %rsi
callq 0x1e560
jmp 0x2c26c
movq -0xc20(%rbp), %rdi
leaq -0x828(%rbp), %rsi
callq 0x1e3c0
jmp 0x2c281
leaq -0x828(%rbp), %rdi
callq 0x31a0
leaq -0x848(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xc28(%rbp)
leaq 0x2c9be(%rip), %rsi     # 0x58c69
leaq -0x888(%rbp), %rdi
leaq -0x788(%rbp), %rdx
callq 0x1e820
jmp 0x2c2c0
leaq 0x2d444(%rip), %rdx     # 0x5970b
leaq -0x868(%rbp), %rdi
leaq -0x888(%rbp), %rsi
callq 0x1e560
jmp 0x2c2dc
movq -0xc28(%rbp), %rdi
leaq -0x868(%rbp), %rsi
callq 0x1e3c0
jmp 0x2c2f1
leaq -0x868(%rbp), %rdi
callq 0x31a0
leaq -0x888(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xc30(%rbp)
leaq 0x2c297(%rip), %rsi     # 0x585b2
leaq -0x948(%rbp), %rdi
leaq -0x6e8(%rbp), %rdx
callq 0x1e820
jmp 0x2c330
leaq 0x2bf1f(%rip), %rdx     # 0x58256
leaq -0x928(%rbp), %rdi
leaq -0x948(%rbp), %rsi
callq 0x1e560
jmp 0x2c34c
movq -0x28(%rbp), %rdx
movslq -0x6c4(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x908(%rbp), %rdi
leaq -0x928(%rbp), %rsi
callq 0x1e980
jmp 0x2c373
leaq 0x2ce1b(%rip), %rdx     # 0x59195
leaq -0x8e8(%rbp), %rdi
leaq -0x908(%rbp), %rsi
callq 0x1e560
jmp 0x2c38f
movq -0x28(%rbp), %rdx
movslq -0x6c4(%rbp), %rax
movq -0xf0(%rbp), %rcx
subq %rcx, %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x8c8(%rbp), %rdi
leaq -0x8e8(%rbp), %rsi
callq 0x1e980
jmp 0x2c3c0
leaq 0x2d344(%rip), %rdx     # 0x5970b
leaq -0x8a8(%rbp), %rdi
leaq -0x8c8(%rbp), %rsi
callq 0x1e560
jmp 0x2c3dc
movq -0xc30(%rbp), %rdi
leaq -0x8a8(%rbp), %rsi
callq 0x1e3c0
jmp 0x2c3f1
leaq -0x8a8(%rbp), %rdi
callq 0x31a0
leaq -0x8c8(%rbp), %rdi
callq 0x31a0
leaq -0x8e8(%rbp), %rdi
callq 0x31a0
leaq -0x908(%rbp), %rdi
callq 0x31a0
leaq -0x928(%rbp), %rdi
callq 0x31a0
leaq -0x948(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0xc38(%rbp)
leaq 0x2c167(%rip), %rsi     # 0x585b2
leaq -0xa48(%rbp), %rdi
leaq -0x788(%rbp), %rdx
callq 0x1e820
jmp 0x2c460
leaq 0x2c043(%rip), %rdx     # 0x584aa
leaq -0xa28(%rbp), %rdi
leaq -0xa48(%rbp), %rsi
callq 0x1e560
jmp 0x2c47c
movq -0x28(%rbp), %rdx
movslq -0x6c4(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0xa08(%rbp), %rdi
leaq -0xa28(%rbp), %rsi
callq 0x1e980
jmp 0x2c4a3
leaq 0x2cceb(%rip), %rdx     # 0x59195
leaq -0x9e8(%rbp), %rdi
leaq -0xa08(%rbp), %rsi
callq 0x1e560
jmp 0x2c4bf
movq -0x20(%rbp), %rdx
movslq -0x6c4(%rbp), %rax
movq -0xf0(%rbp), %rcx
subq %rcx, %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x9c8(%rbp), %rdi
leaq -0x9e8(%rbp), %rsi
callq 0x1e980
jmp 0x2c4f0
leaq 0x2cb81(%rip), %rdx     # 0x59078
leaq -0x9a8(%rbp), %rdi
leaq -0x9c8(%rbp), %rsi
callq 0x1e560
jmp 0x2c50c
movq -0x20(%rbp), %rdx
movslq -0x6c4(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x988(%rbp), %rdi
leaq -0x9a8(%rbp), %rsi
callq 0x1e980
jmp 0x2c533
leaq 0x2d1d1(%rip), %rdx     # 0x5970b
leaq -0x968(%rbp), %rdi
leaq -0x988(%rbp), %rsi
callq 0x1e560
jmp 0x2c54f
movq -0xc38(%rbp), %rdi
leaq -0x968(%rbp), %rsi
callq 0x1e3c0
jmp 0x2c564
leaq -0x968(%rbp), %rdi
callq 0x31a0
leaq -0x988(%rbp), %rdi
callq 0x31a0
leaq -0x9a8(%rbp), %rdi
callq 0x31a0
leaq -0x9c8(%rbp), %rdi
callq 0x31a0
leaq -0x9e8(%rbp), %rdi
callq 0x31a0
leaq -0xa08(%rbp), %rdi
callq 0x31a0
leaq -0xa28(%rbp), %rdi
callq 0x31a0
leaq -0xa48(%rbp), %rdi
callq 0x31a0
movq -0x30(%rbp), %rdi
movslq -0x6c4(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x788(%rbp), %rsi
callq 0x3050
jmp 0x2c5e4
movq -0x38(%rbp), %rdi
movslq -0x6c4(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x6e8(%rbp), %rsi
callq 0x3050
jmp 0x2c604
leaq -0x788(%rbp), %rdi
callq 0x31a0
leaq -0x6e8(%rbp), %rdi
callq 0x31a0
movq -0xf0(%rbp), %rcx
shlq %rcx
movslq -0x6c4(%rbp), %rax
addq %rcx, %rax
movl %eax, -0x6c4(%rbp)
jmp 0x2c0bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c661
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x5f8(%rbp), %rdi
callq 0x31a0
leaq -0x5f9(%rbp), %rdi
callq 0x32a0
jmp 0x2cd8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c703
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c6f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c6eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c6df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c6d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x620(%rbp), %rdi
callq 0x31a0
leaq -0x640(%rbp), %rdi
callq 0x31a0
leaq -0x6c0(%rbp), %rdi
callq 0x31a0
leaq -0x660(%rbp), %rdi
callq 0x31a0
leaq -0x680(%rbp), %rdi
callq 0x31a0
leaq -0x6a0(%rbp), %rdi
callq 0x31a0
jmp 0x2cd8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c76e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c762
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c756
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x768(%rbp), %rdi
callq 0x31a0
leaq -0x708(%rbp), %rdi
callq 0x31a0
leaq -0x728(%rbp), %rdi
callq 0x31a0
leaq -0x748(%rbp), %rdi
callq 0x31a0
jmp 0x2cd8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c9ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c7ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c7de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c7d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x808(%rbp), %rdi
callq 0x31a0
leaq -0x7a8(%rbp), %rdi
callq 0x31a0
leaq -0x7c8(%rbp), %rdi
callq 0x31a0
leaq -0x7e8(%rbp), %rdi
callq 0x31a0
jmp 0x2c9ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c9f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c832
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x828(%rbp), %rdi
callq 0x31a0
leaq -0x848(%rbp), %rdi
callq 0x31a0
jmp 0x2c9f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c869
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x868(%rbp), %rdi
callq 0x31a0
leaq -0x888(%rbp), %rdi
callq 0x31a0
jmp 0x2c9f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c90b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c8ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c8f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c8e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c8db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x8a8(%rbp), %rdi
callq 0x31a0
leaq -0x8c8(%rbp), %rdi
callq 0x31a0
leaq -0x8e8(%rbp), %rdi
callq 0x31a0
leaq -0x908(%rbp), %rdi
callq 0x31a0
leaq -0x928(%rbp), %rdi
callq 0x31a0
leaq -0x948(%rbp), %rdi
callq 0x31a0
jmp 0x2c9f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c9e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c9db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c9cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c9c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c9b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c9ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2c99f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x968(%rbp), %rdi
callq 0x31a0
leaq -0x988(%rbp), %rdi
callq 0x31a0
leaq -0x9a8(%rbp), %rdi
callq 0x31a0
leaq -0x9c8(%rbp), %rdi
callq 0x31a0
leaq -0x9e8(%rbp), %rdi
callq 0x31a0
leaq -0xa08(%rbp), %rdi
callq 0x31a0
leaq -0xa28(%rbp), %rdi
callq 0x31a0
leaq -0xa48(%rbp), %rdi
callq 0x31a0
leaq -0x788(%rbp), %rdi
callq 0x31a0
leaq -0x6e8(%rbp), %rdi
callq 0x31a0
jmp 0x2cd8f
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 -0xf0(%rbp), %rax
shrq %rax
movq %rax, -0xf0(%rbp)
jmp 0x2bf28
movq -0x10(%rbp), %rax
movq %rax, -0xc48(%rbp)
leaq -0xa69(%rbp), %rdi
movq %rdi, -0xc40(%rbp)
callq 0x3430
movq -0xc40(%rbp), %rdx
leaq 0x2cb6f(%rip), %rsi     # 0x595e1
leaq -0xa68(%rbp), %rdi
callq 0x3320
jmp 0x2ca80
movq -0xc48(%rbp), %rdi
leaq -0xa68(%rbp), %rsi
callq 0x1e3c0
jmp 0x2ca95
leaq -0xa68(%rbp), %rdi
callq 0x31a0
leaq -0xa69(%rbp), %rdi
callq 0x32a0
movq -0x10(%rbp), %rax
movq %rax, -0xc58(%rbp)
leaq -0xa91(%rbp), %rdi
movq %rdi, -0xc50(%rbp)
callq 0x3430
movq -0xc50(%rbp), %rdx
leaq 0x2c2ce(%rip), %rsi     # 0x58da7
leaq -0xa90(%rbp), %rdi
callq 0x3320
jmp 0x2cae7
movq -0xc58(%rbp), %rdi
leaq -0xa90(%rbp), %rsi
callq 0x1e3c0
jmp 0x2cafc
leaq -0xa90(%rbp), %rdi
callq 0x31a0
leaq -0xa91(%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, -0xc60(%rbp)
cmpq $0x0, %rax
je 0x2cba9
movq -0xc60(%rbp), %rcx
movq %rcx, %rax
addq $-0x8, %rax
movq %rax, -0xc70(%rbp)
movq -0x8(%rcx), %rdx
shlq $0x5, %rdx
movq %rcx, %rax
addq %rdx, %rax
cmpq %rax, %rcx
movq %rax, -0xc68(%rbp)
je 0x2cb9d
movq -0xc68(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xc78(%rbp)
callq 0x31a0
movq -0xc60(%rbp), %rcx
movq -0xc78(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0xc68(%rbp)
jne 0x2cb6c
movq -0xc70(%rbp), %rdi
callq 0x32f0
movq -0x20(%rbp), %rax
movq %rax, -0xc80(%rbp)
cmpq $0x0, %rax
je 0x2cc26
movq -0xc80(%rbp), %rcx
movq %rcx, %rax
addq $-0x8, %rax
movq %rax, -0xc90(%rbp)
movq -0x8(%rcx), %rdx
shlq $0x5, %rdx
movq %rcx, %rax
addq %rdx, %rax
cmpq %rax, %rcx
movq %rax, -0xc88(%rbp)
je 0x2cc1a
movq -0xc88(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xc98(%rbp)
callq 0x31a0
movq -0xc80(%rbp), %rcx
movq -0xc98(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0xc88(%rbp)
jne 0x2cbe9
movq -0xc90(%rbp), %rdi
callq 0x32f0
movq -0x38(%rbp), %rax
movq %rax, -0xca0(%rbp)
cmpq $0x0, %rax
je 0x2cca3
movq -0xca0(%rbp), %rcx
movq %rcx, %rax
addq $-0x8, %rax
movq %rax, -0xcb0(%rbp)
movq -0x8(%rcx), %rdx
shlq $0x5, %rdx
movq %rcx, %rax
addq %rdx, %rax
cmpq %rax, %rcx
movq %rax, -0xca8(%rbp)
je 0x2cc97
movq -0xca8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xcb8(%rbp)
callq 0x31a0
movq -0xca0(%rbp), %rcx
movq -0xcb8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0xca8(%rbp)
jne 0x2cc66
movq -0xcb0(%rbp), %rdi
callq 0x32f0
movq -0x30(%rbp), %rax
movq %rax, -0xcc0(%rbp)
cmpq $0x0, %rax
je 0x2cd20
movq -0xcc0(%rbp), %rcx
movq %rcx, %rax
addq $-0x8, %rax
movq %rax, -0xcd0(%rbp)
movq -0x8(%rcx), %rdx
shlq $0x5, %rdx
movq %rcx, %rax
addq %rdx, %rax
cmpq %rax, %rcx
movq %rax, -0xcc8(%rbp)
je 0x2cd14
movq -0xcc8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xcd8(%rbp)
callq 0x31a0
movq -0xcc0(%rbp), %rcx
movq -0xcd8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0xcc8(%rbp)
jne 0x2cce3
movq -0xcd0(%rbp), %rdi
callq 0x32f0
addq $0xce0, %rsp            # imm = 0xCE0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2cd4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xa68(%rbp), %rdi
callq 0x31a0
leaq -0xa69(%rbp), %rdi
callq 0x32a0
jmp 0x2cd8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2cd83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xa90(%rbp), %rdi
callq 0x31a0
leaq -0xa91(%rbp), %rdi
callq 0x32a0
movq -0x68(%rbp), %rdi
callq 0x3420
nopl (%rax,%rax)