// File: /workspace/github_cpp_makefile_star2_O1/temelmertcan[P]multgen/src/multgen.cpp
// Function: main
int main(int argc, char **argv) {

  int  in1_size;
  int  in2_size;
  int  in3_size;
  int  dot_size;
  int  out_size;
  int  shift_amount=0;
  bool allowXes = false;
  string file_name_prefix = "";
  string final_stage_adder;
  string pp_encoding;
  string tree;
  string main_type;
  bool signed_mult;
  bool ha_fa_with_gates;
  queue<string> verilog;

  int retval = interact_with_user(argc, argv, in1_size, in2_size, in3_size, dot_size, out_size, shift_amount, allowXes, signed_mult, ha_fa_with_gates, final_stage_adder,
                                  pp_encoding, tree, main_type,
				  file_name_prefix);

  if (retval==2)
    return 0;

  enter_license(verilog);

  int adder_size;
  string module_name;

  int retval0 = 0, retval1 = 0;

  bool create_fin_adder = true;

  if (main_type.compare("StandAlone") == 0){
    std::list<int> extra_ones_indices;
    bool** zeros_in_output = NULL;

    retval0 = create_mult(in1_size, in2_size,
                          out_size, shift_amount, allowXes,
                          final_stage_adder,
                          pp_encoding,
                          tree,
                          create_fin_adder,
                          module_name,
                          extra_ones_indices,
                          verilog,
                          adder_size,
                          zeros_in_output);
  } else if (main_type.compare("FourMult") == 0) {

    create_four_mult (in1_size, in3_size,
                      out_size, shift_amount, allowXes,
                      final_stage_adder,
                      pp_encoding,
                      tree,
                      module_name,
                      verilog,
                      adder_size);

  } else if (main_type.compare("MAC") == 0){
    create_mac (in1_size,
                in2_size,
                in3_size,
                out_size, shift_amount, allowXes,
                final_stage_adder,
                pp_encoding,
                tree,
                module_name,
                verilog,
                adder_size);
  } else if (main_type.compare("DOT") == 0){
    create_dot (in1_size,
                in2_size,
                in3_size,
                dot_size,
                out_size, shift_amount, allowXes,
                final_stage_adder,
                pp_encoding,
                tree,
                module_name,
                verilog,
                adder_size);
  } else if (main_type.compare("Adder") == 0) {
    create_fin_adder = true;
    module_name = final_stage_adder + "_" + to_string (in1_size);
    adder_size = in1_size;
  } else {
    cout << "not implemented yet!" << endl;
    return 1;
  }

  if (create_fin_adder){
    // if only adder is being asked to create, then create it with carryin. 
    retval1 = create_adder(final_stage_adder, main_type.compare("Adder") == 0, adder_size, verilog);
  }
  if (retval0 == 1 || retval0 == 1)
    return 1;

  create_ha_fa (ha_fa_with_gates, verilog);

  string file_name = file_name_prefix + module_name + "_multgen.sv";
  write_to_file(file_name, verilog);

  cout << endl;
  cout << "Written to " << file_name << endl;
  cout << endl;

  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x368, %rsp            # imm = 0x368
movq %rsi, %rbx
movl %edi, %r14d
movl $0x0, -0x40(%rbp)
xorl %r12d, %r12d
movb %r12b, -0x29(%rbp)
leaq -0x170(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x50ab1(%rip), %rdx     # 0x7a601
leaq -0x180(%rbp), %rdi
movq %rdx, %rsi
callq 0x2b022
leaq -0x88(%rbp), %rax
movq %rax, -0x10(%rax)
movq %r12, -0x8(%rax)
movb %r12b, (%rax)
leaq -0xf0(%rbp), %rax
movq %rax, -0x10(%rax)
movq %r12, -0x8(%rax)
movb %r12b, (%rax)
leaq -0xd0(%rbp), %rax
movq %rax, -0x10(%rax)
movq %r12, -0x8(%rax)
movb %r12b, (%rax)
leaq -0x110(%rbp), %rax
movq %rax, -0x10(%rax)
movq %r12, -0x8(%rax)
movb %r12b, (%rax)
xorps %xmm0, %xmm0
leaq -0x390(%rbp), %rdi
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
xorl %esi, %esi
callq 0x2b1a0
leaq -0x120(%rbp), %rax
leaq -0xe0(%rbp), %r10
leaq -0x100(%rbp), %r11
leaq -0x98(%rbp), %r12
leaq -0x31(%rbp), %r13
leaq -0x51(%rbp), %r15
leaq -0x38(%rbp), %rdx
leaq -0x50(%rbp), %rcx
leaq -0x4c(%rbp), %r8
leaq -0xc0(%rbp), %r9
movl %r14d, %edi
movq %rbx, %rsi
leaq -0x180(%rbp), %rbx
pushq %rbx
pushq %rax
pushq %r10
pushq %r11
pushq %r12
pushq %r13
pushq %r15
leaq -0x29(%rbp), %rax
pushq %rax
leaq -0x40(%rbp), %rax
pushq %rax
leaq -0x44(%rbp), %rax
pushq %rax
callq 0x4085
addq $0x50, %rsp
xorl %ebx, %ebx
cmpl $0x2, %eax
je 0x2a45a
leaq -0x390(%rbp), %rdi
callq 0x36cc
leaq -0x130(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x4e6af(%rip), %rsi     # 0x78316
leaq -0x120(%rbp), %rdi
callq 0x3090
testl %eax, %eax
je 0x29d37
leaq 0x4e792(%rip), %rsi     # 0x78414
leaq -0x120(%rbp), %rdi
callq 0x3090
testl %eax, %eax
je 0x29e9d
leaq 0x4e773(%rip), %rsi     # 0x78410
leaq -0x120(%rbp), %rdi
callq 0x3090
testl %eax, %eax
je 0x29fc2
leaq 0x4e765(%rip), %rsi     # 0x7841d
leaq -0x120(%rbp), %rdi
callq 0x3090
testl %eax, %eax
je 0x2a0ed
leaq 0x4e74e(%rip), %rsi     # 0x78421
leaq -0x120(%rbp), %rdi
callq 0x3090
testl %eax, %eax
je 0x2a4f2
movq 0x5d2e2(%rip), %rbx     # 0x86fd0
leaq 0x4f98f(%rip), %rsi     # 0x79684
movl $0x14, %edx
movq %rbx, %rdi
callq 0x3240
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %esi
movq 0x5d2b0(%rip), %rdi     # 0x86fd0
callq 0x3040
movl $0x1, %ebx
movq %rax, %rdi
callq 0x3160
jmp 0x2a442
leaq -0x78(%rbp), %r14
movq %r14, 0x8(%r14)
movq %r14, (%r14)
xorl %eax, %eax
movq %rax, 0x10(%r14)
movq %rax, -0xb8(%rbp)
movl -0x38(%rbp), %r12d
movl -0x50(%rbp), %r13d
movl -0x44(%rbp), %r15d
movl -0x40(%rbp), %ebx
movb -0x29(%rbp), %al
movb %al, -0x30(%rbp)
leaq -0x290(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0x98(%rbp), %rsi
movq -0x90(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2a0(%rbp), %rdi
callq 0x2acc6
leaq -0x270(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x280(%rbp), %rdi
callq 0x2acc6
leaq -0x250(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0xe0(%rbp), %rsi
movq -0xd8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x260(%rbp), %rdi
callq 0x2acc6
leaq -0xb8(%rbp), %rax
leaq -0x3c(%rbp), %r10
leaq -0x140(%rbp), %r11
movzbl -0x30(%rbp), %r8d
leaq -0x2a0(%rbp), %r9
movl %r12d, %edi
movl %r13d, %esi
movl %r15d, %edx
movl %ebx, %ecx
pushq %rax
pushq %r10
leaq -0x390(%rbp), %rax
pushq %rax
pushq %r14
pushq %r11
pushq $0x1
leaq -0x260(%rbp), %rax
pushq %rax
leaq -0x280(%rbp), %rax
pushq %rax
callq 0x7811
addq $0x40, %rsp
movl %eax, %ebx
movq -0x260(%rbp), %rdi
leaq -0x250(%rbp), %rax
cmpq %rax, %rdi
je 0x29e49
callq 0x31d0
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x29e61
callq 0x31d0
movq -0x2a0(%rbp), %rdi
leaq -0x290(%rbp), %rax
cmpq %rax, %rdi
je 0x29e79
callq 0x31d0
movq -0x78(%rbp), %rdi
cmpq %r14, %rdi
je 0x29e92
movq (%rdi), %r15
callq 0x31d0
movq %r15, %rdi
cmpq %r14, %r15
jne 0x29e82
testl %ebx, %ebx
sete %r14b
jmp 0x2a22d
movl -0x38(%rbp), %r15d
movl -0x4c(%rbp), %r12d
movl -0x44(%rbp), %r13d
movl -0x40(%rbp), %r14d
movb -0x29(%rbp), %bl
leaq -0x230(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0x98(%rbp), %rsi
movq -0x90(%rbp), %rdx
addq %rsi, %rdx
leaq -0x240(%rbp), %rdi
callq 0x2acc6
movl %r14d, -0x30(%rbp)
leaq -0x210(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x220(%rbp), %rdi
callq 0x2acc6
leaq -0x2f0(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0xe0(%rbp), %rsi
movq -0xd8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x300(%rbp), %r14
movq %r14, %rdi
callq 0x2acc6
subq $0x8, %rsp
leaq -0x3c(%rbp), %rax
leaq -0x140(%rbp), %r10
movzbl %bl, %r8d
leaq -0x240(%rbp), %r9
movl %r15d, %edi
movl %r12d, %esi
movl %r13d, %edx
movl -0x30(%rbp), %ecx
pushq %rax
leaq -0x390(%rbp), %rax
pushq %rax
pushq %r10
pushq %r14
leaq -0x220(%rbp), %rax
pushq %rax
callq 0xc435
addq $0x30, %rsp
movq -0x300(%rbp), %rdi
leaq -0x2f0(%rbp), %rax
cmpq %rax, %rdi
je 0x29f8b
callq 0x31d0
movq -0x220(%rbp), %rdi
leaq -0x210(%rbp), %rax
cmpq %rax, %rdi
je 0x29fa3
callq 0x31d0
movq -0x240(%rbp), %rdi
movb $0x1, %r14b
leaq -0x230(%rbp), %rax
cmpq %rax, %rdi
je 0x2a22d
jmp 0x2a228
movl -0x38(%rbp), %r15d
movl -0x50(%rbp), %r12d
movl -0x4c(%rbp), %r13d
movl -0x44(%rbp), %r14d
movl -0x40(%rbp), %ebx
movb -0x29(%rbp), %al
movb %al, -0x30(%rbp)
leaq -0x1f0(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0x98(%rbp), %rsi
movq -0x90(%rbp), %rdx
addq %rsi, %rdx
leaq -0x200(%rbp), %rdi
callq 0x2acc6
movl %ebx, -0x48(%rbp)
leaq -0x1d0(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x1e0(%rbp), %rdi
callq 0x2acc6
leaq -0x2d0(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0xe0(%rbp), %rsi
movq -0xd8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2e0(%rbp), %rbx
movq %rbx, %rdi
callq 0x2acc6
leaq -0x3c(%rbp), %rax
leaq -0x140(%rbp), %r10
movzbl -0x30(%rbp), %r9d
movl %r15d, %edi
movl %r12d, %esi
movl %r13d, %edx
movl %r14d, %ecx
movl -0x48(%rbp), %r8d
pushq %rax
leaq -0x390(%rbp), %rax
pushq %rax
pushq %r10
pushq %rbx
leaq -0x1e0(%rbp), %rax
pushq %rax
leaq -0x200(%rbp), %rax
pushq %rax
callq 0x19f72
addq $0x30, %rsp
movq -0x2e0(%rbp), %rdi
leaq -0x2d0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a0b6
callq 0x31d0
movq -0x1e0(%rbp), %rdi
leaq -0x1d0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a0ce
callq 0x31d0
movq -0x200(%rbp), %rdi
movb $0x1, %r14b
leaq -0x1f0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a22d
jmp 0x2a228
movl -0x38(%rbp), %r15d
movl -0x50(%rbp), %r12d
movl -0x4c(%rbp), %r13d
movl -0xc0(%rbp), %r14d
movl -0x44(%rbp), %ebx
movl -0x40(%rbp), %eax
movl %eax, -0x30(%rbp)
movb -0x29(%rbp), %al
movb %al, -0x48(%rbp)
leaq -0x1b0(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0x98(%rbp), %rsi
movq -0x90(%rbp), %rdx
addq %rsi, %rdx
leaq -0x1c0(%rbp), %rdi
callq 0x2acc6
movl %ebx, -0xbc(%rbp)
leaq -0x190(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x1a0(%rbp), %rdi
callq 0x2acc6
leaq -0x2b0(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0xe0(%rbp), %rsi
movq -0xd8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2c0(%rbp), %rbx
movq %rbx, %rdi
callq 0x2acc6
subq $0x8, %rsp
leaq -0x3c(%rbp), %rax
leaq -0x140(%rbp), %r10
movzbl -0x48(%rbp), %r11d
movl %r15d, %edi
movl %r12d, %esi
movl %r13d, %edx
movl %r14d, %ecx
movl -0xbc(%rbp), %r8d
movl -0x30(%rbp), %r9d
pushq %rax
leaq -0x390(%rbp), %rax
pushq %rax
pushq %r10
pushq %rbx
leaq -0x1a0(%rbp), %rax
pushq %rax
leaq -0x1c0(%rbp), %rax
pushq %rax
pushq %r11
callq 0x20536
addq $0x40, %rsp
movq -0x2c0(%rbp), %rdi
leaq -0x2b0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a1fa
callq 0x31d0
movq -0x1a0(%rbp), %rdi
leaq -0x190(%rbp), %rax
cmpq %rax, %rdi
je 0x2a212
callq 0x31d0
movq -0x1c0(%rbp), %rdi
movb $0x1, %r14b
leaq -0x1b0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a22d
callq 0x31d0
leaq -0x330(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0x98(%rbp), %rsi
movq -0x90(%rbp), %rdx
addq %rsi, %rdx
leaq -0x340(%rbp), %rdi
callq 0x2acc6
leaq 0x4e1c5(%rip), %rsi     # 0x78421
leaq -0x120(%rbp), %rdi
callq 0x3090
xorl %esi, %esi
testl %eax, %eax
sete %sil
movl -0x3c(%rbp), %edx
leaq -0x340(%rbp), %rdi
leaq -0x390(%rbp), %rcx
callq 0x64df
movq -0x340(%rbp), %rdi
cmpq %r15, %rdi
je 0x2a297
callq 0x31d0
movl $0x1, %ebx
testb %r14b, %r14b
je 0x2a442
movzbl -0x31(%rbp), %edi
leaq -0x390(%rbp), %rsi
callq 0x2b300
leaq -0xb8(%rbp), %rdi
leaq -0x180(%rbp), %rsi
leaq -0x140(%rbp), %rdx
callq 0x2aa7b
leaq 0x4f3c3(%rip), %rsi     # 0x79699
leaq -0xb8(%rbp), %rdi
callq 0x33d0
leaq -0x68(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x2a306
movq %rdx, -0x78(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x68(%rbp)
jmp 0x2a30d
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, -0x70(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0xa8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2a339
callq 0x31d0
leaq -0x310(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x78(%rbp), %rsi
movq -0x70(%rbp), %rdx
addq %rsi, %rdx
leaq -0x320(%rbp), %rdi
callq 0x2acc6
leaq -0x320(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x29965
movq -0x320(%rbp), %rdi
cmpq %r14, %rdi
je 0x2a37f
callq 0x31d0
movq 0x5cc4a(%rip), %rdi     # 0x86fd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %esi
movq 0x5cc2f(%rip), %rdi     # 0x86fd0
callq 0x3040
movq %rax, %rdi
callq 0x3160
movq 0x5cc1b(%rip), %rdi     # 0x86fd0
leaq 0x4f2e9(%rip), %rsi     # 0x796a5
movl $0xb, %edx
callq 0x3240
movq -0x78(%rbp), %rsi
movq -0x70(%rbp), %rdx
movq 0x5cbfb(%rip), %rbx     # 0x86fd0
movq %rbx, %rdi
callq 0x3240
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %esi
movq %r14, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x3160
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %esi
movq 0x5cbab(%rip), %rdi     # 0x86fd0
callq 0x3040
movq %rax, %rdi
callq 0x3160
movq -0x78(%rbp), %rdi
cmpq %r15, %rdi
je 0x2a440
callq 0x31d0
xorl %ebx, %ebx
movq -0x140(%rbp), %rdi
leaq -0x130(%rbp), %rax
cmpq %rax, %rdi
je 0x2a45a
callq 0x31d0
leaq -0x390(%rbp), %rdi
callq 0x2ab5a
movq -0x120(%rbp), %rdi
leaq -0x110(%rbp), %rax
cmpq %rax, %rdi
je 0x2a47e
callq 0x31d0
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a496
callq 0x31d0
movq -0x100(%rbp), %rdi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a4ae
callq 0x31d0
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0x2a4c6
callq 0x31d0
movq -0x180(%rbp), %rdi
leaq -0x170(%rbp), %rax
cmpq %rax, %rdi
je 0x2a4de
callq 0x31d0
movl %ebx, %eax
addq $0x368, %rsp            # imm = 0x368
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq -0xa8(%rbp), %r12
movq %r12, -0x10(%r12)
movq -0x98(%rbp), %rsi
movq -0x90(%rbp), %rdx
addq %rsi, %rdx
leaq -0xb8(%rbp), %rdi
callq 0x2acc6
leaq 0x4fc54(%rip), %rsi     # 0x7a176
leaq -0xb8(%rbp), %rdi
callq 0x33d0
movl -0x38(%rbp), %ebx
movl %ebx, %r14d
negl %r14d
cmovsl %ebx, %r14d
movl $0x1, %r15d
cmpl $0xa, %r14d
jb 0x2a591
movl $0x4, %r15d
movl $0xd1b71759, %eax       # imm = 0xD1B71759
movl %r14d, %ecx
cmpl $0x63, %ecx
jbe 0x2a588
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x2a58e
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x2a591
movl %ecx, %edx
imulq %rax, %rdx
shrq $0x2d, %rdx
addl $0x4, %r15d
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x2a555
addl $-0x3, %r15d
jmp 0x2a591
addl $-0x2, %r15d
jmp 0x2a591
decl %r15d
shrl $0x1f, %ebx
leal (%r15,%rbx), %esi
leaq -0x150(%rbp), %r13
movq %r13, -0x10(%r13)
leaq -0x160(%rbp), %rdi
movl $0x2d, %edx
callq 0x3250
addq -0x160(%rbp), %rbx
movq %rbx, %rdi
movl %r15d, %esi
movl %r14d, %edx
callq 0x2aad9
movq -0xb8(%rbp), %rcx
movq -0xb0(%rbp), %r8
movq -0x158(%rbp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
cmpq %r12, %rcx
je 0x2a5f3
movq -0xa8(%rbp), %rsi
cmpq %rsi, %rax
jbe 0x2a612
movl $0xf, %esi
cmpq %r13, -0x160(%rbp)
je 0x2a60d
movq -0x150(%rbp), %rsi
cmpq %rsi, %rax
jbe 0x2a627
movq -0x160(%rbp), %rsi
leaq -0xb8(%rbp), %rdi
callq 0x30a0
jmp 0x2a637
leaq -0x160(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3230
leaq -0x68(%rbp), %rdx
movq %rdx, -0x10(%rdx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x2a658
movq %rsi, -0x78(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x68(%rbp)
jmp 0x2a65e
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, -0x70(%rbp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq -0x140(%rbp), %rdi
leaq -0x78(%rbp), %rbx
movq %rbx, %rsi
callq 0x3260
movq (%rbx), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x2a69e
callq 0x31d0
movq -0x160(%rbp), %rdi
cmpq %r13, %rdi
je 0x2a6af
callq 0x31d0
movq -0xb8(%rbp), %rdi
cmpq %r12, %rdi
je 0x2a6c0
callq 0x31d0
movl -0x38(%rbp), %eax
movl %eax, -0x3c(%rbp)
movb $0x1, %r14b
jmp 0x2a22d
movq %rax, %rbx
movq -0x160(%rbp), %rdi
cmpq %r13, %rdi
je 0x2a6e7
callq 0x31d0
jmp 0x2a6e7
movq %rax, %rbx
movq -0xb8(%rbp), %rdi
cmpq %r12, %rdi
je 0x2a8f7
jmp 0x2a8f2
movq %rax, %rbx
movq -0xb8(%rbp), %rdi
cmpq %r12, %rdi
je 0x2a8f7
jmp 0x2a8f2
jmp 0x2a8dc
movq %rax, %rbx
movq -0x2c0(%rbp), %rdi
leaq -0x2b0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a739
callq 0x31d0
jmp 0x2a739
movq %rax, %rbx
movq -0x1a0(%rbp), %rdi
leaq -0x190(%rbp), %rax
cmpq %rax, %rdi
je 0x2a756
callq 0x31d0
jmp 0x2a756
movq %rax, %rbx
movq -0x1c0(%rbp), %rdi
leaq -0x1b0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a8f7
jmp 0x2a8f2
movq %rax, %rbx
movq -0x2e0(%rbp), %rdi
leaq -0x2d0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a792
callq 0x31d0
jmp 0x2a792
movq %rax, %rbx
movq -0x1e0(%rbp), %rdi
leaq -0x1d0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a7af
callq 0x31d0
jmp 0x2a7af
movq %rax, %rbx
movq -0x200(%rbp), %rdi
leaq -0x1f0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a8f7
jmp 0x2a8f2
movq %rax, %rbx
movq -0x300(%rbp), %rdi
leaq -0x2f0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a7eb
callq 0x31d0
jmp 0x2a7eb
movq %rax, %rbx
movq -0x220(%rbp), %rdi
leaq -0x210(%rbp), %rax
cmpq %rax, %rdi
je 0x2a808
callq 0x31d0
jmp 0x2a808
movq %rax, %rbx
movq -0x240(%rbp), %rdi
leaq -0x230(%rbp), %rax
cmpq %rax, %rdi
je 0x2a8f7
jmp 0x2a8f2
movq %rax, %rbx
movq -0x260(%rbp), %rdi
leaq -0x250(%rbp), %rax
cmpq %rax, %rdi
je 0x2a844
callq 0x31d0
jmp 0x2a844
movq %rax, %rbx
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x2a861
callq 0x31d0
jmp 0x2a861
movq %rax, %rbx
movq -0x2a0(%rbp), %rdi
leaq -0x290(%rbp), %rax
cmpq %rax, %rdi
je 0x2a87e
callq 0x31d0
jmp 0x2a87e
movq %rax, %rbx
movq -0x78(%rbp), %rdi
cmpq %r14, %rdi
je 0x2a8f7
movq (%rdi), %r15
callq 0x31d0
movq %r15, %rdi
cmpq %r14, %r15
jne 0x2a887
jmp 0x2a8f7
movq %rax, %rbx
movq -0x320(%rbp), %rdi
cmpq %r14, %rdi
je 0x2a8e9
callq 0x31d0
jmp 0x2a8e9
movq %rax, %rbx
leaq -0xa8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2a8f7
jmp 0x2a8f2
jmp 0x2a8dc
movq %rax, %rbx
movq -0x340(%rbp), %rdi
cmpq %r15, %rdi
je 0x2a8f7
jmp 0x2a8f2
movq %rax, %rbx
jmp 0x2a91b
movq %rax, %rbx
jmp 0x2a8f7
movq %rax, %rbx
jmp 0x2a90f
movq %rax, %rbx
movq -0x78(%rbp), %rdi
cmpq %r15, %rdi
je 0x2a8f7
callq 0x31d0
movq -0x140(%rbp), %rdi
leaq -0x130(%rbp), %rax
cmpq %rax, %rdi
je 0x2a90f
callq 0x31d0
leaq -0x390(%rbp), %rdi
callq 0x2ab5a
movq -0x120(%rbp), %rdi
leaq -0x110(%rbp), %rax
cmpq %rax, %rdi
je 0x2a933
callq 0x31d0
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a94b
callq 0x31d0
movq -0x100(%rbp), %rdi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a963
callq 0x31d0
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0x2a97b
callq 0x31d0
movq -0x180(%rbp), %rdi
leaq -0x170(%rbp), %rax
cmpq %rax, %rdi
je 0x2a993
callq 0x31d0
movq %rbx, %rdi
callq 0x33a0