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

  verilog.push("\n// Ladner-Fischer Adder \n");

  int stage=0;

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

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

      for (int j = 0; j<diff && (i+j)<size; j++){
        string new_p = "p_" + to_string(stage)+ "_" + to_string(i+j);
        string new_g = "g_" + to_string(stage)+ "_" + to_string(i+j);

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

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

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

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

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

  delete[] p;
  delete[] g;

  delete[] ptmp;
  delete[] gtmp;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x6a0, %rsp            # imm = 0x6A0
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, -0x4f0(%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 -0x4f0(%rbp), %rax
movq %rax, (%rcx)
addq $0x8, %rcx
movq %rcx, -0x4e8(%rbp)
cmpq $0x0, %rax
je 0x288bb
movq -0x4e8(%rbp), %rax
movq -0x4f0(%rbp), %rdx
shlq $0x5, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0x500(%rbp)
movq %rax, -0x4f8(%rbp)
movq -0x4f8(%rbp), %rdi
movq %rdi, -0x508(%rbp)
callq 0x3330
movq -0x508(%rbp), %rax
movq -0x500(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x4f8(%rbp)
jne 0x2888a
movq -0x4e8(%rbp), %rax
movq %rax, -0x20(%rbp)
movslq -0x4(%rbp), %rax
movq %rax, -0x518(%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 -0x518(%rbp), %rax
movq %rax, (%rcx)
addq $0x8, %rcx
movq %rcx, -0x510(%rbp)
cmpq $0x0, %rax
je 0x28970
movq -0x510(%rbp), %rax
movq -0x518(%rbp), %rdx
shlq $0x5, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0x528(%rbp)
movq %rax, -0x520(%rbp)
movq -0x520(%rbp), %rdi
movq %rdi, -0x530(%rbp)
callq 0x3330
movq -0x530(%rbp), %rax
movq -0x528(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x520(%rbp)
jne 0x2893f
movq -0x510(%rbp), %rax
movq %rax, -0x28(%rbp)
movslq -0x4(%rbp), %rax
movq %rax, -0x540(%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 -0x540(%rbp), %rax
movq %rax, (%rcx)
addq $0x8, %rcx
movq %rcx, -0x538(%rbp)
cmpq $0x0, %rax
je 0x28a25
movq -0x538(%rbp), %rax
movq -0x540(%rbp), %rdx
shlq $0x5, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0x550(%rbp)
movq %rax, -0x548(%rbp)
movq -0x548(%rbp), %rdi
movq %rdi, -0x558(%rbp)
callq 0x3330
movq -0x558(%rbp), %rax
movq -0x550(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x548(%rbp)
jne 0x289f4
movq -0x538(%rbp), %rax
movq %rax, -0x30(%rbp)
movslq -0x4(%rbp), %rax
movq %rax, -0x568(%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 -0x568(%rbp), %rax
movq %rax, (%rcx)
addq $0x8, %rcx
movq %rcx, -0x560(%rbp)
cmpq $0x0, %rax
je 0x28ada
movq -0x560(%rbp), %rax
movq -0x568(%rbp), %rdx
shlq $0x5, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, -0x578(%rbp)
movq %rax, -0x570(%rbp)
movq -0x570(%rbp), %rdi
movq %rdi, -0x580(%rbp)
callq 0x3330
movq -0x580(%rbp), %rax
movq -0x578(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x570(%rbp)
jne 0x28aa9
movq -0x560(%rbp), %rax
movq %rax, -0x38(%rbp)
movl -0x4(%rbp), %eax
movl %eax, -0x590(%rbp)
movb -0x5(%rbp), %al
movb %al, -0x589(%rbp)
leaq -0x59(%rbp), %rdi
movq %rdi, -0x588(%rbp)
callq 0x3430
movq -0x588(%rbp), %rdx
leaq 0x2ebca(%rip), %rsi     # 0x576df
leaq -0x58(%rbp), %rdi
callq 0x3320
jmp 0x28b20
movl -0x590(%rbp), %edi
movb -0x589(%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 0x28b53
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, -0x5a0(%rbp)
leaq -0x91(%rbp), %rdi
movq %rdi, -0x598(%rbp)
callq 0x3430
movq -0x598(%rbp), %rdx
leaq 0x300e7(%rip), %rsi     # 0x58c98
leaq -0x90(%rbp), %rdi
callq 0x3320
jmp 0x28bbf
movq -0x5a0(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x1e3c0
jmp 0x28bd4
leaq -0x90(%rbp), %rdi
callq 0x31a0
leaq -0x91(%rbp), %rdi
callq 0x32a0
movl $0x0, -0x98(%rbp)
movl $0x1, -0x9c(%rbp)
movl -0x9c(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0x29700
movq -0x10(%rbp), %rax
movq %rax, -0x5b0(%rbp)
leaq -0xc1(%rbp), %rdi
movq %rdi, -0x5a8(%rbp)
callq 0x3430
movq -0x5a8(%rbp), %rdx
leaq 0x309a6(%rip), %rsi     # 0x595e1
leaq -0xc0(%rbp), %rdi
callq 0x3320
jmp 0x28c49
movq -0x5b0(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x1e3c0
jmp 0x28c5e
leaq -0xc0(%rbp), %rdi
callq 0x31a0
leaq -0xc1(%rbp), %rdi
callq 0x32a0
movq -0x10(%rbp), %rax
movq %rax, -0x5c0(%rbp)
movl -0x98(%rbp), %esi
incl %esi
movl %esi, -0x98(%rbp)
leaq -0x108(%rbp), %rdi
movq %rdi, -0x5b8(%rbp)
callq 0x1e700
movq -0x5b8(%rbp), %rdx
leaq 0x30003(%rip), %rsi     # 0x58cb3
leaq -0xe8(%rbp), %rdi
callq 0x1e930
jmp 0x28cbe
movq -0x5c0(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x1e3c0
jmp 0x28cd3
leaq -0xe8(%rbp), %rdi
callq 0x31a0
leaq -0x108(%rbp), %rdi
callq 0x31a0
movl -0x9c(%rbp), %eax
movl %eax, -0x10c(%rbp)
movl -0x10c(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0x296cd
movl $0x0, -0x110(%rbp)
movl -0x110(%rbp), %ecx
xorl %eax, %eax
cmpl -0x9c(%rbp), %ecx
movb %al, -0x5c1(%rbp)
jge 0x28d3e
movl -0x10c(%rbp), %eax
addl -0x110(%rbp), %eax
cmpl -0x4(%rbp), %eax
setl %al
movb %al, -0x5c1(%rbp)
movb -0x5c1(%rbp), %al
testb $0x1, %al
jne 0x28d4d
jmp 0x296b2
movl -0x98(%rbp), %esi
leaq -0x190(%rbp), %rdi
movq %rdi, -0x5d0(%rbp)
callq 0x1e700
movq -0x5d0(%rbp), %rdx
leaq 0x2f848(%rip), %rsi     # 0x585bc
leaq -0x170(%rbp), %rdi
callq 0x1e930
jmp 0x28d82
leaq 0x303cd(%rip), %rdx     # 0x59156
leaq -0x150(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0x1e560
jmp 0x28d9e
movl -0x10c(%rbp), %esi
movl -0x110(%rbp), %eax
addl %eax, %esi
leaq -0x1b0(%rbp), %rdi
callq 0x1e700
jmp 0x28dba
leaq -0x130(%rbp), %rdi
leaq -0x150(%rbp), %rsi
leaq -0x1b0(%rbp), %rdx
callq 0x1e5b0
jmp 0x28dd6
leaq -0x1b0(%rbp), %rdi
callq 0x31a0
leaq -0x150(%rbp), %rdi
callq 0x31a0
leaq -0x170(%rbp), %rdi
callq 0x31a0
leaq -0x190(%rbp), %rdi
callq 0x31a0
movl -0x98(%rbp), %esi
leaq -0x230(%rbp), %rdi
callq 0x1e700
jmp 0x28e1a
leaq 0x2fe61(%rip), %rsi     # 0x58c82
leaq -0x210(%rbp), %rdi
leaq -0x230(%rbp), %rdx
callq 0x1e930
jmp 0x28e36
leaq 0x30319(%rip), %rdx     # 0x59156
leaq -0x1f0(%rbp), %rdi
leaq -0x210(%rbp), %rsi
callq 0x1e560
jmp 0x28e52
movl -0x10c(%rbp), %esi
movl -0x110(%rbp), %eax
addl %eax, %esi
leaq -0x250(%rbp), %rdi
callq 0x1e700
jmp 0x28e6e
leaq -0x1d0(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
leaq -0x250(%rbp), %rdx
callq 0x1e5b0
jmp 0x28e8a
leaq -0x250(%rbp), %rdi
callq 0x31a0
leaq -0x1f0(%rbp), %rdi
callq 0x31a0
leaq -0x210(%rbp), %rdi
callq 0x31a0
leaq -0x230(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0x5d8(%rbp)
leaq 0x2fd9d(%rip), %rsi     # 0x58c69
leaq -0x290(%rbp), %rdi
leaq -0x130(%rbp), %rdx
callq 0x1e820
jmp 0x28ee1
leaq 0x30823(%rip), %rdx     # 0x5970b
leaq -0x270(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x1e560
jmp 0x28efd
movq -0x5d8(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x1e3c0
jmp 0x28f12
leaq -0x270(%rbp), %rdi
callq 0x31a0
leaq -0x290(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0x5e0(%rbp)
leaq 0x2fd2d(%rip), %rsi     # 0x58c69
leaq -0x2d0(%rbp), %rdi
leaq -0x1d0(%rbp), %rdx
callq 0x1e820
jmp 0x28f51
leaq 0x307b3(%rip), %rdx     # 0x5970b
leaq -0x2b0(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x1e560
jmp 0x28f6d
movq -0x5e0(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x1e3c0
jmp 0x28f82
leaq -0x2b0(%rbp), %rdi
callq 0x31a0
leaq -0x2d0(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0x5e8(%rbp)
leaq 0x2f606(%rip), %rsi     # 0x585b2
leaq -0x390(%rbp), %rdi
leaq -0x130(%rbp), %rdx
callq 0x1e820
jmp 0x28fc1
leaq 0x2f28e(%rip), %rdx     # 0x58256
leaq -0x370(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x1e560
jmp 0x28fdd
movq -0x28(%rbp), %rdx
movl -0x10c(%rbp), %eax
movl -0x110(%rbp), %ecx
addl %ecx, %eax
cltq
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x350(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0x1e980
jmp 0x2900d
leaq 0x30181(%rip), %rdx     # 0x59195
leaq -0x330(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0x1e560
jmp 0x29029
movq -0x28(%rbp), %rdx
movl -0x10c(%rbp), %eax
decl %eax
cltq
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x310(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x1e980
jmp 0x29053
leaq 0x306b1(%rip), %rdx     # 0x5970b
leaq -0x2f0(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x1e560
jmp 0x2906f
movq -0x5e8(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0x1e3c0
jmp 0x29084
leaq -0x2f0(%rbp), %rdi
callq 0x31a0
leaq -0x310(%rbp), %rdi
callq 0x31a0
leaq -0x330(%rbp), %rdi
callq 0x31a0
leaq -0x350(%rbp), %rdi
callq 0x31a0
leaq -0x370(%rbp), %rdi
callq 0x31a0
leaq -0x390(%rbp), %rdi
callq 0x31a0
movq -0x10(%rbp), %rax
movq %rax, -0x5f0(%rbp)
leaq 0x2f4d4(%rip), %rsi     # 0x585b2
leaq -0x490(%rbp), %rdi
leaq -0x1d0(%rbp), %rdx
callq 0x1e820
jmp 0x290f3
leaq 0x2f3b0(%rip), %rdx     # 0x584aa
leaq -0x470(%rbp), %rdi
leaq -0x490(%rbp), %rsi
callq 0x1e560
jmp 0x2910f
movq -0x28(%rbp), %rdx
movl -0x10c(%rbp), %eax
movl -0x110(%rbp), %ecx
addl %ecx, %eax
cltq
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x450(%rbp), %rdi
leaq -0x470(%rbp), %rsi
callq 0x1e980
jmp 0x2913f
leaq 0x3004f(%rip), %rdx     # 0x59195
leaq -0x430(%rbp), %rdi
leaq -0x450(%rbp), %rsi
callq 0x1e560
jmp 0x2915b
movq -0x20(%rbp), %rdx
movl -0x10c(%rbp), %eax
decl %eax
cltq
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x410(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x1e980
jmp 0x29185
leaq 0x2feec(%rip), %rdx     # 0x59078
leaq -0x3f0(%rbp), %rdi
leaq -0x410(%rbp), %rsi
callq 0x1e560
jmp 0x291a1
movq -0x20(%rbp), %rdx
movl -0x10c(%rbp), %eax
movl -0x110(%rbp), %ecx
addl %ecx, %eax
cltq
shlq $0x5, %rax
addq %rax, %rdx
leaq -0x3d0(%rbp), %rdi
leaq -0x3f0(%rbp), %rsi
callq 0x1e980
jmp 0x291d1
leaq 0x30533(%rip), %rdx     # 0x5970b
leaq -0x3b0(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x1e560
jmp 0x291ed
movq -0x5f0(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0x1e3c0
jmp 0x29202
leaq -0x3b0(%rbp), %rdi
callq 0x31a0
leaq -0x3d0(%rbp), %rdi
callq 0x31a0
leaq -0x3f0(%rbp), %rdi
callq 0x31a0
leaq -0x410(%rbp), %rdi
callq 0x31a0
leaq -0x430(%rbp), %rdi
callq 0x31a0
leaq -0x450(%rbp), %rdi
callq 0x31a0
leaq -0x470(%rbp), %rdi
callq 0x31a0
leaq -0x490(%rbp), %rdi
callq 0x31a0
movq -0x30(%rbp), %rdi
movl -0x10c(%rbp), %eax
movl -0x110(%rbp), %ecx
addl %ecx, %eax
cltq
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x3050
jmp 0x2928b
movq -0x38(%rbp), %rdi
movl -0x10c(%rbp), %eax
movl -0x110(%rbp), %ecx
addl %ecx, %eax
cltq
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x130(%rbp), %rsi
callq 0x3050
jmp 0x292b4
leaq -0x1d0(%rbp), %rdi
callq 0x31a0
leaq -0x130(%rbp), %rdi
callq 0x31a0
movl -0x110(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x110(%rbp)
jmp 0x28d10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x29303
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 0x29a49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x29337
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 0x29a49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2936e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0x31a0
leaq -0xc1(%rbp), %rdi
callq 0x32a0
jmp 0x29a49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x293a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x31a0
leaq -0x108(%rbp), %rdi
callq 0x31a0
jmp 0x29a49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x29410
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x29404
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x293f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x31a0
leaq -0x150(%rbp), %rdi
callq 0x31a0
leaq -0x170(%rbp), %rdi
callq 0x31a0
leaq -0x190(%rbp), %rdi
callq 0x31a0
jmp 0x29a49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x296a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2948c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x29480
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x29474
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x250(%rbp), %rdi
callq 0x31a0
leaq -0x1f0(%rbp), %rdi
callq 0x31a0
leaq -0x210(%rbp), %rdi
callq 0x31a0
leaq -0x230(%rbp), %rdi
callq 0x31a0
jmp 0x296a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x29695
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x294d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x31a0
leaq -0x290(%rbp), %rdi
callq 0x31a0
jmp 0x29695
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2950b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x31a0
leaq -0x2d0(%rbp), %rdi
callq 0x31a0
jmp 0x29695
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x295ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x295a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x29595
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x29589
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2957d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x2f0(%rbp), %rdi
callq 0x31a0
leaq -0x310(%rbp), %rdi
callq 0x31a0
leaq -0x330(%rbp), %rdi
callq 0x31a0
leaq -0x350(%rbp), %rdi
callq 0x31a0
leaq -0x370(%rbp), %rdi
callq 0x31a0
leaq -0x390(%rbp), %rdi
callq 0x31a0
jmp 0x29695
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x29689
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2967d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x29671
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x29665
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x29659
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x2964d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x29641
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0x31a0
leaq -0x3d0(%rbp), %rdi
callq 0x31a0
leaq -0x3f0(%rbp), %rdi
callq 0x31a0
leaq -0x410(%rbp), %rdi
callq 0x31a0
leaq -0x430(%rbp), %rdi
callq 0x31a0
leaq -0x450(%rbp), %rdi
callq 0x31a0
leaq -0x470(%rbp), %rdi
callq 0x31a0
leaq -0x490(%rbp), %rdi
callq 0x31a0
leaq -0x1d0(%rbp), %rdi
callq 0x31a0
leaq -0x130(%rbp), %rdi
callq 0x31a0
jmp 0x29a49
jmp 0x296b4
movl -0x9c(%rbp), %eax
shll %eax
addl -0x10c(%rbp), %eax
movl %eax, -0x10c(%rbp)
jmp 0x28cf7
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 -0x9c(%rbp), %eax
shll %eax
movl %eax, -0x9c(%rbp)
jmp 0x28c00
movq -0x10(%rbp), %rax
movq %rax, -0x600(%rbp)
leaq -0x4b1(%rbp), %rdi
movq %rdi, -0x5f8(%rbp)
callq 0x3430
movq -0x5f8(%rbp), %rdx
leaq 0x2feb5(%rip), %rsi     # 0x595e1
leaq -0x4b0(%rbp), %rdi
callq 0x3320
jmp 0x2973a
movq -0x600(%rbp), %rdi
leaq -0x4b0(%rbp), %rsi
callq 0x1e3c0
jmp 0x2974f
leaq -0x4b0(%rbp), %rdi
callq 0x31a0
leaq -0x4b1(%rbp), %rdi
callq 0x32a0
movq -0x10(%rbp), %rax
movq %rax, -0x610(%rbp)
leaq -0x4d9(%rbp), %rdi
movq %rdi, -0x608(%rbp)
callq 0x3430
movq -0x608(%rbp), %rdx
leaq 0x2f52d(%rip), %rsi     # 0x58cc0
leaq -0x4d8(%rbp), %rdi
callq 0x3320
jmp 0x297a1
movq -0x610(%rbp), %rdi
leaq -0x4d8(%rbp), %rsi
callq 0x1e3c0
jmp 0x297b6
leaq -0x4d8(%rbp), %rdi
callq 0x31a0
leaq -0x4d9(%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, -0x618(%rbp)
cmpq $0x0, %rax
je 0x29863
movq -0x618(%rbp), %rcx
movq %rcx, %rax
addq $-0x8, %rax
movq %rax, -0x628(%rbp)
movq -0x8(%rcx), %rdx
shlq $0x5, %rdx
movq %rcx, %rax
addq %rdx, %rax
cmpq %rax, %rcx
movq %rax, -0x620(%rbp)
je 0x29857
movq -0x620(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x630(%rbp)
callq 0x31a0
movq -0x618(%rbp), %rcx
movq -0x630(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x620(%rbp)
jne 0x29826
movq -0x628(%rbp), %rdi
callq 0x32f0
movq -0x20(%rbp), %rax
movq %rax, -0x638(%rbp)
cmpq $0x0, %rax
je 0x298e0
movq -0x638(%rbp), %rcx
movq %rcx, %rax
addq $-0x8, %rax
movq %rax, -0x648(%rbp)
movq -0x8(%rcx), %rdx
shlq $0x5, %rdx
movq %rcx, %rax
addq %rdx, %rax
cmpq %rax, %rcx
movq %rax, -0x640(%rbp)
je 0x298d4
movq -0x640(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x650(%rbp)
callq 0x31a0
movq -0x638(%rbp), %rcx
movq -0x650(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x640(%rbp)
jne 0x298a3
movq -0x648(%rbp), %rdi
callq 0x32f0
movq -0x38(%rbp), %rax
movq %rax, -0x658(%rbp)
cmpq $0x0, %rax
je 0x2995d
movq -0x658(%rbp), %rcx
movq %rcx, %rax
addq $-0x8, %rax
movq %rax, -0x668(%rbp)
movq -0x8(%rcx), %rdx
shlq $0x5, %rdx
movq %rcx, %rax
addq %rdx, %rax
cmpq %rax, %rcx
movq %rax, -0x660(%rbp)
je 0x29951
movq -0x660(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x670(%rbp)
callq 0x31a0
movq -0x658(%rbp), %rcx
movq -0x670(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x660(%rbp)
jne 0x29920
movq -0x668(%rbp), %rdi
callq 0x32f0
movq -0x30(%rbp), %rax
movq %rax, -0x678(%rbp)
cmpq $0x0, %rax
je 0x299da
movq -0x678(%rbp), %rcx
movq %rcx, %rax
addq $-0x8, %rax
movq %rax, -0x688(%rbp)
movq -0x8(%rcx), %rdx
shlq $0x5, %rdx
movq %rcx, %rax
addq %rdx, %rax
cmpq %rax, %rcx
movq %rax, -0x680(%rbp)
je 0x299ce
movq -0x680(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x690(%rbp)
callq 0x31a0
movq -0x678(%rbp), %rcx
movq -0x690(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x680(%rbp)
jne 0x2999d
movq -0x688(%rbp), %rdi
callq 0x32f0
addq $0x6a0, %rsp            # imm = 0x6A0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x29a09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x4b0(%rbp), %rdi
callq 0x31a0
leaq -0x4b1(%rbp), %rdi
callq 0x32a0
jmp 0x29a49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x29a3d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x4d8(%rbp), %rdi
callq 0x31a0
leaq -0x4d9(%rbp), %rdi
callq 0x32a0
movq -0x68(%rbp), %rdi
callq 0x3420
nopw %cs:(%rax,%rax)