// File: temelmertcan[P]multgen/src/adders.cpp
// Function: ppx_preprocess(int, bool, int&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*&, 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 ppx_preprocess (int size, bool carryin, int& index, string addertype,
                     string*& g, string*& p, std::queue<string>& verilog){

  string module_name = addertype+"_"+to_string(size)+ (carryin?"_carry":"");

  verilog.push ("module " + module_name + " ( ");
  verilog.push("indent");
  verilog.push("indent");
  if(carryin)
    verilog.push ("input logic carryin,");
  verilog.push ("input logic [" + to_string(size-1) + ":0] IN1,");
  verilog.push ("input logic [" + to_string(size-1) + ":0] IN2,");
  verilog.push ("output logic [" + to_string(size) + ":0] OUT);");
  verilog.push("outdent");
  verilog.push("");

  verilog.push ( "wire logic ["+ to_string(size-1) + ":0] p_0;");
  verilog.push ( "wire logic ["+ to_string(size-1) + ":0] g_0;");

  if(carryin){
    verilog.push ( "assign g_0["+ to_string(size-1) + ":1] = IN1["+ to_string(size-1) + ":1] & IN2["+ to_string(size-1) + ":1];");
    verilog.push ( "assign p_0["+ to_string(size-1) + ":1] = IN1["+ to_string(size-1) + ":1] ^ IN2["+ to_string(size-1) + ":1];");
    verilog.push ("fa m0 (carryin, IN1[0], IN2[0], p_0[0], g_0[0]);");
  }else{
    verilog.push ( "assign g_0 = IN1 & IN2;");
    verilog.push ( "assign p_0 = IN1 ^ IN2;");
  }
    
  for (int i = 0; i<size; i++){
    g[i] = "g_0[" + to_string(i) + "]";
    p[i] = "p_0[" + to_string(i) + "]";
  }

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x7f0, %rsp            # imm = 0x7F0
movq %rcx, -0x720(%rbp)
movl %esi, %eax
movq -0x720(%rbp), %rsi
movq 0x10(%rbp), %rcx
movl %edi, -0x4(%rbp)
andb $0x1, %al
movb %al, -0x5(%rbp)
movq %rdx, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %r8, -0x20(%rbp)
movq %r9, -0x28(%rbp)
leaq 0x34738(%rip), %rdx     # 0x59156
leaq -0x88(%rbp), %rdi
callq 0x1e680
movl -0x4(%rbp), %esi
leaq -0xa8(%rbp), %rdi
callq 0x1e700
jmp 0x24a3b
leaq -0x68(%rbp), %rdi
leaq -0x88(%rbp), %rsi
leaq -0xa8(%rbp), %rdx
callq 0x1e5b0
jmp 0x24a54
movb -0x5(%rbp), %cl
leaq 0x33246(%rip), %rax     # 0x57ca4
leaq 0x34b7c(%rip), %rdx     # 0x595e1
testb $0x1, %cl
cmovneq %rax, %rdx
leaq -0x48(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x1e560
jmp 0x24a7b
leaq -0x68(%rbp), %rdi
callq 0x31a0
leaq -0xa8(%rbp), %rdi
callq 0x31a0
leaq -0x88(%rbp), %rdi
callq 0x31a0
movq 0x10(%rbp), %rax
movq %rax, -0x728(%rbp)
leaq 0x331fd(%rip), %rsi     # 0x57cab
leaq -0xf8(%rbp), %rdi
leaq -0x48(%rbp), %rdx
callq 0x1e820
jmp 0x24ac0
leaq 0x34019(%rip), %rdx     # 0x58ae0
leaq -0xd8(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x1e560
jmp 0x24adc
movq -0x728(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x1e3c0
jmp 0x24af1
leaq -0xd8(%rbp), %rdi
callq 0x31a0
leaq -0xf8(%rbp), %rdi
callq 0x31a0
movq 0x10(%rbp), %rax
movq %rax, -0x738(%rbp)
leaq -0x119(%rbp), %rdi
movq %rdi, -0x730(%rbp)
callq 0x3430
movq -0x730(%rbp), %rdx
leaq 0x33186(%rip), %rsi     # 0x57cbb
leaq -0x118(%rbp), %rdi
callq 0x3320
jmp 0x24b43
movq -0x738(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x1e3c0
jmp 0x24b58
leaq -0x118(%rbp), %rdi
callq 0x31a0
leaq -0x119(%rbp), %rdi
callq 0x32a0
movq 0x10(%rbp), %rax
movq %rax, -0x748(%rbp)
leaq -0x141(%rbp), %rdi
movq %rdi, -0x740(%rbp)
callq 0x3430
movq -0x740(%rbp), %rdx
leaq 0x3311f(%rip), %rsi     # 0x57cbb
leaq -0x140(%rbp), %rdi
callq 0x3320
jmp 0x24baa
movq -0x748(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0x1e3c0
jmp 0x24bbf
leaq -0x140(%rbp), %rdi
callq 0x31a0
leaq -0x141(%rbp), %rdi
callq 0x32a0
testb $0x1, -0x5(%rbp)
je 0x24dd0
movq 0x10(%rbp), %rax
movq %rax, -0x758(%rbp)
leaq -0x169(%rbp), %rdi
movq %rdi, -0x750(%rbp)
callq 0x3430
movq -0x750(%rbp), %rdx
leaq 0x330b5(%rip), %rsi     # 0x57cc2
leaq -0x168(%rbp), %rdi
callq 0x3320
jmp 0x24c1b
movq -0x758(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x1e3c0
jmp 0x24c30
leaq -0x168(%rbp), %rdi
callq 0x31a0
leaq -0x169(%rbp), %rdi
callq 0x32a0
jmp 0x24dd0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x24c9c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x24c90
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x31a0
leaq -0xa8(%rbp), %rdi
callq 0x31a0
leaq -0x88(%rbp), %rdi
callq 0x31a0
jmp 0x25d17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x25d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x24cf6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x31a0
leaq -0xf8(%rbp), %rdi
callq 0x31a0
jmp 0x25d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x24d39
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x31a0
leaq -0x119(%rbp), %rdi
callq 0x32a0
jmp 0x25d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x24d7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x31a0
leaq -0x141(%rbp), %rdi
callq 0x32a0
jmp 0x25d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x24dbf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x31a0
leaq -0x169(%rbp), %rdi
callq 0x32a0
jmp 0x25d0e
movq 0x10(%rbp), %rax
movq %rax, -0x760(%rbp)
movl -0x4(%rbp), %esi
decl %esi
leaq -0x1d0(%rbp), %rdi
callq 0x1e700
jmp 0x24dee
leaq 0x32ee2(%rip), %rsi     # 0x57cd7
leaq -0x1b0(%rbp), %rdi
leaq -0x1d0(%rbp), %rdx
callq 0x1e930
jmp 0x24e0a
leaq 0x32ed4(%rip), %rdx     # 0x57ce5
leaq -0x190(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x1e560
jmp 0x24e26
movq -0x760(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0x1e3c0
jmp 0x24e3b
leaq -0x190(%rbp), %rdi
callq 0x31a0
leaq -0x1b0(%rbp), %rdi
callq 0x31a0
leaq -0x1d0(%rbp), %rdi
callq 0x31a0
movq 0x10(%rbp), %rax
movq %rax, -0x768(%rbp)
movl -0x4(%rbp), %esi
decl %esi
leaq -0x230(%rbp), %rdi
callq 0x1e700
jmp 0x24e7d
leaq 0x32e53(%rip), %rsi     # 0x57cd7
leaq -0x210(%rbp), %rdi
leaq -0x230(%rbp), %rdx
callq 0x1e930
jmp 0x24e99
leaq 0x32e4e(%rip), %rdx     # 0x57cee
leaq -0x1f0(%rbp), %rdi
leaq -0x210(%rbp), %rsi
callq 0x1e560
jmp 0x24eb5
movq -0x768(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x1e3c0
jmp 0x24eca
leaq -0x1f0(%rbp), %rdi
callq 0x31a0
leaq -0x210(%rbp), %rdi
callq 0x31a0
leaq -0x230(%rbp), %rdi
callq 0x31a0
movq 0x10(%rbp), %rax
movq %rax, -0x770(%rbp)
movl -0x4(%rbp), %esi
leaq -0x290(%rbp), %rdi
callq 0x1e700
jmp 0x24f0a
leaq 0x32e02(%rip), %rsi     # 0x57d13
leaq -0x270(%rbp), %rdi
leaq -0x290(%rbp), %rdx
callq 0x1e930
jmp 0x24f26
leaq 0x33bb7(%rip), %rdx     # 0x58ae4
leaq -0x250(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x1e560
jmp 0x24f42
movq -0x770(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x1e3c0
jmp 0x24f57
leaq -0x250(%rbp), %rdi
callq 0x31a0
leaq -0x270(%rbp), %rdi
callq 0x31a0
leaq -0x290(%rbp), %rdi
callq 0x31a0
movq 0x10(%rbp), %rax
movq %rax, -0x780(%rbp)
leaq -0x2b1(%rbp), %rdi
movq %rdi, -0x778(%rbp)
callq 0x3430
movq -0x778(%rbp), %rdx
leaq 0x32d8a(%rip), %rsi     # 0x57d31
leaq -0x2b0(%rbp), %rdi
callq 0x3320
jmp 0x24fb5
movq -0x780(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x1e3c0
jmp 0x24fca
leaq -0x2b0(%rbp), %rdi
callq 0x31a0
leaq -0x2b1(%rbp), %rdi
callq 0x32a0
movq 0x10(%rbp), %rax
movq %rax, -0x790(%rbp)
leaq -0x2d9(%rbp), %rdi
movq %rdi, -0x788(%rbp)
callq 0x3430
movq -0x788(%rbp), %rdx
leaq 0x345d3(%rip), %rsi     # 0x595e1
leaq -0x2d8(%rbp), %rdi
callq 0x3320
jmp 0x2501c
movq -0x790(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0x1e3c0
jmp 0x25031
leaq -0x2d8(%rbp), %rdi
callq 0x31a0
leaq -0x2d9(%rbp), %rdi
callq 0x32a0
movq 0x10(%rbp), %rax
movq %rax, -0x798(%rbp)
movl -0x4(%rbp), %esi
decl %esi
leaq -0x340(%rbp), %rdi
callq 0x1e700
jmp 0x25067
leaq 0x32ec2(%rip), %rsi     # 0x57f30
leaq -0x320(%rbp), %rdi
leaq -0x340(%rbp), %rdx
callq 0x1e930
jmp 0x25083
leaq 0x33ad8(%rip), %rdx     # 0x58b62
leaq -0x300(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0x1e560
jmp 0x2509f
movq -0x798(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x1e3c0
jmp 0x250b4
leaq -0x300(%rbp), %rdi
callq 0x31a0
leaq -0x320(%rbp), %rdi
callq 0x31a0
leaq -0x340(%rbp), %rdi
callq 0x31a0
movq 0x10(%rbp), %rax
movq %rax, -0x7a0(%rbp)
movl -0x4(%rbp), %esi
decl %esi
leaq -0x3a0(%rbp), %rdi
callq 0x1e700
jmp 0x250f6
leaq 0x32e33(%rip), %rsi     # 0x57f30
leaq -0x380(%rbp), %rdi
leaq -0x3a0(%rbp), %rdx
callq 0x1e930
jmp 0x25112
leaq 0x33a52(%rip), %rdx     # 0x58b6b
leaq -0x360(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x1e560
jmp 0x2512e
movq -0x7a0(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0x1e3c0
jmp 0x25143
leaq -0x360(%rbp), %rdi
callq 0x31a0
leaq -0x380(%rbp), %rdi
callq 0x31a0
leaq -0x3a0(%rbp), %rdi
callq 0x31a0
testb $0x1, -0x5(%rbp)
je 0x259cd
movq 0x10(%rbp), %rax
movq %rax, -0x7a8(%rbp)
movl -0x4(%rbp), %esi
decl %esi
leaq -0x480(%rbp), %rdi
callq 0x1e700
jmp 0x2518f
leaq 0x339de(%rip), %rsi     # 0x58b74
leaq -0x460(%rbp), %rdi
leaq -0x480(%rbp), %rdx
callq 0x1e930
jmp 0x251ab
leaq 0x339ce(%rip), %rdx     # 0x58b80
leaq -0x440(%rbp), %rdi
leaq -0x460(%rbp), %rsi
callq 0x1e560
jmp 0x251c7
movl -0x4(%rbp), %esi
decl %esi
leaq -0x4a0(%rbp), %rdi
callq 0x1e700
jmp 0x251da
leaq -0x420(%rbp), %rdi
leaq -0x440(%rbp), %rsi
leaq -0x4a0(%rbp), %rdx
callq 0x1e5b0
jmp 0x251f6
leaq 0x3398e(%rip), %rdx     # 0x58b8b
leaq -0x400(%rbp), %rdi
leaq -0x420(%rbp), %rsi
callq 0x1e560
jmp 0x25212
movl -0x4(%rbp), %esi
decl %esi
leaq -0x4c0(%rbp), %rdi
callq 0x1e700
jmp 0x25225
leaq -0x3e0(%rbp), %rdi
leaq -0x400(%rbp), %rsi
leaq -0x4c0(%rbp), %rdx
callq 0x1e5b0
jmp 0x25241
leaq 0x3394e(%rip), %rdx     # 0x58b96
leaq -0x3c0(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
callq 0x1e560
jmp 0x2525d
movq -0x7a8(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x1e3c0
jmp 0x25272
leaq -0x3c0(%rbp), %rdi
callq 0x31a0
leaq -0x3e0(%rbp), %rdi
callq 0x31a0
leaq -0x4c0(%rbp), %rdi
callq 0x31a0
leaq -0x400(%rbp), %rdi
callq 0x31a0
leaq -0x420(%rbp), %rdi
callq 0x31a0
leaq -0x4a0(%rbp), %rdi
callq 0x31a0
leaq -0x440(%rbp), %rdi
callq 0x31a0
leaq -0x460(%rbp), %rdi
callq 0x31a0
leaq -0x480(%rbp), %rdi
callq 0x31a0
movq 0x10(%rbp), %rax
movq %rax, -0x7b0(%rbp)
movl -0x4(%rbp), %esi
decl %esi
leaq -0x5a0(%rbp), %rdi
callq 0x1e700
jmp 0x252fc
leaq 0x33898(%rip), %rsi     # 0x58b9b
leaq -0x580(%rbp), %rdi
leaq -0x5a0(%rbp), %rdx
callq 0x1e930
jmp 0x25318
leaq 0x33861(%rip), %rdx     # 0x58b80
leaq -0x560(%rbp), %rdi
leaq -0x580(%rbp), %rsi
callq 0x1e560
jmp 0x25334
movl -0x4(%rbp), %esi
decl %esi
leaq -0x5c0(%rbp), %rdi
callq 0x1e700
jmp 0x25347
leaq -0x540(%rbp), %rdi
leaq -0x560(%rbp), %rsi
leaq -0x5c0(%rbp), %rdx
callq 0x1e5b0
jmp 0x25363
leaq 0x3383d(%rip), %rdx     # 0x58ba7
leaq -0x520(%rbp), %rdi
leaq -0x540(%rbp), %rsi
callq 0x1e560
jmp 0x2537f
movl -0x4(%rbp), %esi
decl %esi
leaq -0x5e0(%rbp), %rdi
callq 0x1e700
jmp 0x25392
leaq -0x500(%rbp), %rdi
leaq -0x520(%rbp), %rsi
leaq -0x5e0(%rbp), %rdx
callq 0x1e5b0
jmp 0x253ae
leaq 0x337e1(%rip), %rdx     # 0x58b96
leaq -0x4e0(%rbp), %rdi
leaq -0x500(%rbp), %rsi
callq 0x1e560
jmp 0x253ca
movq -0x7b0(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0x1e3c0
jmp 0x253df
leaq -0x4e0(%rbp), %rdi
callq 0x31a0
leaq -0x500(%rbp), %rdi
callq 0x31a0
leaq -0x5e0(%rbp), %rdi
callq 0x31a0
leaq -0x520(%rbp), %rdi
callq 0x31a0
leaq -0x540(%rbp), %rdi
callq 0x31a0
leaq -0x5c0(%rbp), %rdi
callq 0x31a0
leaq -0x560(%rbp), %rdi
callq 0x31a0
leaq -0x580(%rbp), %rdi
callq 0x31a0
leaq -0x5a0(%rbp), %rdi
callq 0x31a0
movq 0x10(%rbp), %rax
movq %rax, -0x7c0(%rbp)
leaq -0x601(%rbp), %rdi
movq %rdi, -0x7b8(%rbp)
callq 0x3430
movq -0x7b8(%rbp), %rdx
leaq 0x3373b(%rip), %rsi     # 0x58bb2
leaq -0x600(%rbp), %rdi
callq 0x3320
jmp 0x25485
movq -0x7c0(%rbp), %rdi
leaq -0x600(%rbp), %rsi
callq 0x1e3c0
jmp 0x2549a
leaq -0x600(%rbp), %rdi
callq 0x31a0
leaq -0x601(%rbp), %rdi
callq 0x32a0
jmp 0x25b26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x25509
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x254fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x31a0
leaq -0x1b0(%rbp), %rdi
callq 0x31a0
leaq -0x1d0(%rbp), %rdi
callq 0x31a0
jmp 0x25d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x2556c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x25560
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x31a0
leaq -0x210(%rbp), %rdi
callq 0x31a0
leaq -0x230(%rbp), %rdi
callq 0x31a0
jmp 0x25d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x255cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x255c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x250(%rbp), %rdi
callq 0x31a0
leaq -0x270(%rbp), %rdi
callq 0x31a0
leaq -0x290(%rbp), %rdi
callq 0x31a0
jmp 0x25d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x25612
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x31a0
leaq -0x2b1(%rbp), %rdi
callq 0x32a0
jmp 0x25d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x25655
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x31a0
leaq -0x2d9(%rbp), %rdi
callq 0x32a0
jmp 0x25d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x256b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x256ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x300(%rbp), %rdi
callq 0x31a0
leaq -0x320(%rbp), %rdi
callq 0x31a0
leaq -0x340(%rbp), %rdi
callq 0x31a0
jmp 0x25d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x2571b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x2570f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x360(%rbp), %rdi
callq 0x31a0
leaq -0x380(%rbp), %rdi
callq 0x31a0
leaq -0x3a0(%rbp), %rdi
callq 0x31a0
jmp 0x25d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x2584a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x2583e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x25832
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x25826
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x2581a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x2580e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x25802
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x257f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x3c0(%rbp), %rdi
callq 0x31a0
leaq -0x3e0(%rbp), %rdi
callq 0x31a0
leaq -0x4c0(%rbp), %rdi
callq 0x31a0
leaq -0x400(%rbp), %rdi
callq 0x31a0
leaq -0x420(%rbp), %rdi
callq 0x31a0
leaq -0x4a0(%rbp), %rdi
callq 0x31a0
leaq -0x440(%rbp), %rdi
callq 0x31a0
leaq -0x460(%rbp), %rdi
callq 0x31a0
leaq -0x480(%rbp), %rdi
callq 0x31a0
jmp 0x25d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x25979
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x2596d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x25961
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x25955
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x25949
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x2593d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x25931
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x25925
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x4e0(%rbp), %rdi
callq 0x31a0
leaq -0x500(%rbp), %rdi
callq 0x31a0
leaq -0x5e0(%rbp), %rdi
callq 0x31a0
leaq -0x520(%rbp), %rdi
callq 0x31a0
leaq -0x540(%rbp), %rdi
callq 0x31a0
leaq -0x5c0(%rbp), %rdi
callq 0x31a0
leaq -0x560(%rbp), %rdi
callq 0x31a0
leaq -0x580(%rbp), %rdi
callq 0x31a0
leaq -0x5a0(%rbp), %rdi
callq 0x31a0
jmp 0x25d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x259bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x600(%rbp), %rdi
callq 0x31a0
leaq -0x601(%rbp), %rdi
callq 0x32a0
jmp 0x25d0e
movq 0x10(%rbp), %rax
movq %rax, -0x7d0(%rbp)
leaq -0x629(%rbp), %rdi
movq %rdi, -0x7c8(%rbp)
callq 0x3430
movq -0x7c8(%rbp), %rdx
leaq 0x331ea(%rip), %rsi     # 0x58be3
leaq -0x628(%rbp), %rdi
callq 0x3320
jmp 0x25a07
movq -0x7d0(%rbp), %rdi
leaq -0x628(%rbp), %rsi
callq 0x1e3c0
jmp 0x25a1c
leaq -0x628(%rbp), %rdi
callq 0x31a0
leaq -0x629(%rbp), %rdi
callq 0x32a0
movq 0x10(%rbp), %rax
movq %rax, -0x7e0(%rbp)
leaq -0x651(%rbp), %rdi
movq %rdi, -0x7d8(%rbp)
callq 0x3430
movq -0x7d8(%rbp), %rdx
leaq 0x3319b(%rip), %rsi     # 0x58bfb
leaq -0x650(%rbp), %rdi
callq 0x3320
jmp 0x25a6e
movq -0x7e0(%rbp), %rdi
leaq -0x650(%rbp), %rsi
callq 0x1e3c0
jmp 0x25a83
leaq -0x650(%rbp), %rdi
callq 0x31a0
leaq -0x651(%rbp), %rdi
callq 0x32a0
jmp 0x25b26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x25ad2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x628(%rbp), %rdi
callq 0x31a0
leaq -0x629(%rbp), %rdi
callq 0x32a0
jmp 0x25d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x25b15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x650(%rbp), %rdi
callq 0x31a0
leaq -0x651(%rbp), %rdi
callq 0x32a0
jmp 0x25d0e
movl $0x0, -0x658(%rbp)
movl -0x658(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0x25cfc
movl -0x658(%rbp), %esi
leaq -0x6b8(%rbp), %rdi
callq 0x1e700
jmp 0x25b53
leaq 0x33021(%rip), %rsi     # 0x58b7b
leaq -0x698(%rbp), %rdi
leaq -0x6b8(%rbp), %rdx
callq 0x1e930
jmp 0x25b6f
leaq 0x322a6(%rip), %rdx     # 0x57e1c
leaq -0x678(%rbp), %rdi
leaq -0x698(%rbp), %rsi
callq 0x1e560
jmp 0x25b8b
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movslq -0x658(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x678(%rbp), %rsi
movq %rsi, -0x7e8(%rbp)
callq 0x32b0
movq -0x7e8(%rbp), %rdi
callq 0x31a0
leaq -0x698(%rbp), %rdi
callq 0x31a0
leaq -0x6b8(%rbp), %rdi
callq 0x31a0
movl -0x658(%rbp), %esi
leaq -0x718(%rbp), %rdi
callq 0x1e700
jmp 0x25beb
leaq 0x3303d(%rip), %rsi     # 0x58c2f
leaq -0x6f8(%rbp), %rdi
leaq -0x718(%rbp), %rdx
callq 0x1e930
jmp 0x25c07
leaq 0x3220e(%rip), %rdx     # 0x57e1c
leaq -0x6d8(%rbp), %rdi
leaq -0x6f8(%rbp), %rsi
callq 0x1e560
jmp 0x25c23
movq -0x28(%rbp), %rax
movq (%rax), %rdi
movslq -0x658(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x6d8(%rbp), %rsi
callq 0x32b0
leaq -0x6d8(%rbp), %rdi
callq 0x31a0
leaq -0x6f8(%rbp), %rdi
callq 0x31a0
leaq -0x718(%rbp), %rdi
callq 0x31a0
movl -0x658(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x658(%rbp)
jmp 0x25b30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x25cae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x698(%rbp), %rdi
callq 0x31a0
leaq -0x6b8(%rbp), %rdi
callq 0x31a0
jmp 0x25d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
jmp 0x25cee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb0(%rbp)
movl %eax, -0xb4(%rbp)
leaq -0x6f8(%rbp), %rdi
callq 0x31a0
leaq -0x718(%rbp), %rdi
callq 0x31a0
jmp 0x25d0e
leaq -0x48(%rbp), %rdi
callq 0x31a0
addq $0x7f0, %rsp            # imm = 0x7F0
popq %rbp
retq
leaq -0x48(%rbp), %rdi
callq 0x31a0
movq -0xb0(%rbp), %rdi
callq 0x3420
nopw %cs:(%rax,%rax)