// File: /workspace/github_cpp_makefile_star2_O3/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 0x4fee1(%rip), %rdx     # 0x79601
leaq -0x180(%rbp), %rdi
movq %rdx, %rsi
callq 0x2ac04
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 0x2ad8c
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 0x2a02a
leaq -0x390(%rbp), %rdi
callq 0x36cc
leaq -0x130(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x4dadc(%rip), %rsi     # 0x77313
leaq -0x120(%rbp), %rdi
callq 0x3090
testl %eax, %eax
je 0x29907
leaq 0x4dbbf(%rip), %rsi     # 0x77411
leaq -0x120(%rbp), %rdi
callq 0x3090
testl %eax, %eax
je 0x29a6d
leaq 0x4dba0(%rip), %rsi     # 0x7740d
leaq -0x120(%rbp), %rdi
callq 0x3090
testl %eax, %eax
je 0x29b92
leaq 0x4db92(%rip), %rsi     # 0x7741a
leaq -0x120(%rbp), %rdi
callq 0x3090
testl %eax, %eax
je 0x29cbd
leaq 0x4db7b(%rip), %rsi     # 0x7741e
leaq -0x120(%rbp), %rdi
callq 0x3090
testl %eax, %eax
je 0x2a0c2
movq 0x5c712(%rip), %rbx     # 0x85fd0
leaq 0x4edbc(%rip), %rsi     # 0x78681
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 0x5c6e0(%rip), %rdi     # 0x85fd0
callq 0x3040
movl $0x1, %ebx
movq %rax, %rdi
callq 0x3160
jmp 0x2a012
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 0x2a8a4
leaq -0x270(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x280(%rbp), %rdi
callq 0x2a8a4
leaq -0x250(%rbp), %rax
movq %rax, -0x10(%rax)
movq -0xe0(%rbp), %rsi
movq -0xd8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x260(%rbp), %rdi
callq 0x2a8a4
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 0x7829
addq $0x40, %rsp
movl %eax, %ebx
movq -0x260(%rbp), %rdi
leaq -0x250(%rbp), %rax
cmpq %rax, %rdi
je 0x29a19
callq 0x31d0
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x29a31
callq 0x31d0
movq -0x2a0(%rbp), %rdi
leaq -0x290(%rbp), %rax
cmpq %rax, %rdi
je 0x29a49
callq 0x31d0
movq -0x78(%rbp), %rdi
cmpq %r14, %rdi
je 0x29a62
movq (%rdi), %r15
callq 0x31d0
movq %r15, %rdi
cmpq %r14, %r15
jne 0x29a52
testl %ebx, %ebx
sete %r14b
jmp 0x29dfd
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 0x2a8a4
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 0x2a8a4
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 0x2a8a4
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 0xc419
addq $0x30, %rsp
movq -0x300(%rbp), %rdi
leaq -0x2f0(%rbp), %rax
cmpq %rax, %rdi
je 0x29b5b
callq 0x31d0
movq -0x220(%rbp), %rdi
leaq -0x210(%rbp), %rax
cmpq %rax, %rdi
je 0x29b73
callq 0x31d0
movq -0x240(%rbp), %rdi
movb $0x1, %r14b
leaq -0x230(%rbp), %rax
cmpq %rax, %rdi
je 0x29dfd
jmp 0x29df8
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 0x2a8a4
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 0x2a8a4
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 0x2a8a4
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 0x19cf3
addq $0x30, %rsp
movq -0x2e0(%rbp), %rdi
leaq -0x2d0(%rbp), %rax
cmpq %rax, %rdi
je 0x29c86
callq 0x31d0
movq -0x1e0(%rbp), %rdi
leaq -0x1d0(%rbp), %rax
cmpq %rax, %rdi
je 0x29c9e
callq 0x31d0
movq -0x200(%rbp), %rdi
movb $0x1, %r14b
leaq -0x1f0(%rbp), %rax
cmpq %rax, %rdi
je 0x29dfd
jmp 0x29df8
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 0x2a8a4
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 0x2a8a4
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 0x2a8a4
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 0x20219
addq $0x40, %rsp
movq -0x2c0(%rbp), %rdi
leaq -0x2b0(%rbp), %rax
cmpq %rax, %rdi
je 0x29dca
callq 0x31d0
movq -0x1a0(%rbp), %rdi
leaq -0x190(%rbp), %rax
cmpq %rax, %rdi
je 0x29de2
callq 0x31d0
movq -0x1c0(%rbp), %rdi
movb $0x1, %r14b
leaq -0x1b0(%rbp), %rax
cmpq %rax, %rdi
je 0x29dfd
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 0x2a8a4
leaq 0x4d5f2(%rip), %rsi     # 0x7741e
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 0x64ff
movq -0x340(%rbp), %rdi
cmpq %r15, %rdi
je 0x29e67
callq 0x31d0
movl $0x1, %ebx
testb %r14b, %r14b
je 0x2a012
movzbl -0x31(%rbp), %edi
leaq -0x390(%rbp), %rsi
callq 0x2aeec
leaq -0xb8(%rbp), %rdi
leaq -0x180(%rbp), %rsi
leaq -0x140(%rbp), %rdx
callq 0x2a647
leaq 0x4e7f0(%rip), %rsi     # 0x78696
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 0x29ed6
movq %rdx, -0x78(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x68(%rbp)
jmp 0x29edd
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 0x29f09
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 0x2a8a4
leaq -0x320(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x29535
movq -0x320(%rbp), %rdi
cmpq %r14, %rdi
je 0x29f4f
callq 0x31d0
movq 0x5c07a(%rip), %rdi     # 0x85fd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x31e0
movsbl %al, %esi
movq 0x5c05f(%rip), %rdi     # 0x85fd0
callq 0x3040
movq %rax, %rdi
callq 0x3160
movq 0x5c04b(%rip), %rdi     # 0x85fd0
leaq 0x4e716(%rip), %rsi     # 0x786a2
movl $0xb, %edx
callq 0x3240
movq -0x78(%rbp), %rsi
movq -0x70(%rbp), %rdx
movq 0x5c02b(%rip), %rbx     # 0x85fd0
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 0x5bfdb(%rip), %rdi     # 0x85fd0
callq 0x3040
movq %rax, %rdi
callq 0x3160
movq -0x78(%rbp), %rdi
cmpq %r15, %rdi
je 0x2a010
callq 0x31d0
xorl %ebx, %ebx
movq -0x140(%rbp), %rdi
leaq -0x130(%rbp), %rax
cmpq %rax, %rdi
je 0x2a02a
callq 0x31d0
leaq -0x390(%rbp), %rdi
callq 0x2a726
movq -0x120(%rbp), %rdi
leaq -0x110(%rbp), %rax
cmpq %rax, %rdi
je 0x2a04e
callq 0x31d0
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a066
callq 0x31d0
movq -0x100(%rbp), %rdi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a07e
callq 0x31d0
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0x2a096
callq 0x31d0
movq -0x180(%rbp), %rdi
leaq -0x170(%rbp), %rax
cmpq %rax, %rdi
je 0x2a0ae
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 0x2a8a4
leaq 0x4f084(%rip), %rsi     # 0x79176
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 0x2a161
movl $0x4, %r15d
movl $0xd1b71759, %eax       # imm = 0xD1B71759
movl %r14d, %ecx
cmpl $0x63, %ecx
jbe 0x2a158
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x2a15e
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x2a161
movl %ecx, %edx
imulq %rax, %rdx
shrq $0x2d, %rdx
addl $0x4, %r15d
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x2a125
addl $-0x3, %r15d
jmp 0x2a161
addl $-0x2, %r15d
jmp 0x2a161
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 0x2a6a5
movq -0xb8(%rbp), %rcx
movq -0xb0(%rbp), %r8
movq -0x158(%rbp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %edi
cmpq %r12, %rcx
je 0x2a1c3
movq -0xa8(%rbp), %rdi
movq -0x160(%rbp), %rsi
cmpq %rdi, %rax
jbe 0x2a1e5
movl $0xf, %edi
cmpq %r13, %rsi
je 0x2a1e0
movq -0x150(%rbp), %rdi
cmpq %rdi, %rax
jbe 0x2a1f3
leaq -0xb8(%rbp), %rdi
callq 0x30a0
jmp 0x2a203
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 0x2a224
movq %rsi, -0x78(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x68(%rbp)
jmp 0x2a22a
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 0x2a26a
callq 0x31d0
movq -0x160(%rbp), %rdi
cmpq %r13, %rdi
je 0x2a27b
callq 0x31d0
movq -0xb8(%rbp), %rdi
cmpq %r12, %rdi
je 0x2a28c
callq 0x31d0
movl -0x38(%rbp), %eax
movl %eax, -0x3c(%rbp)
movb $0x1, %r14b
jmp 0x29dfd
movq %rax, %rbx
movq -0x160(%rbp), %rdi
cmpq %r13, %rdi
je 0x2a2b3
callq 0x31d0
jmp 0x2a2b3
movq %rax, %rbx
movq -0xb8(%rbp), %rdi
cmpq %r12, %rdi
je 0x2a4c3
jmp 0x2a4be
movq %rax, %rbx
movq -0xb8(%rbp), %rdi
cmpq %r12, %rdi
je 0x2a4c3
jmp 0x2a4be
jmp 0x2a4a8
movq %rax, %rbx
movq -0x2c0(%rbp), %rdi
leaq -0x2b0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a305
callq 0x31d0
jmp 0x2a305
movq %rax, %rbx
movq -0x1a0(%rbp), %rdi
leaq -0x190(%rbp), %rax
cmpq %rax, %rdi
je 0x2a322
callq 0x31d0
jmp 0x2a322
movq %rax, %rbx
movq -0x1c0(%rbp), %rdi
leaq -0x1b0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a4c3
jmp 0x2a4be
movq %rax, %rbx
movq -0x2e0(%rbp), %rdi
leaq -0x2d0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a35e
callq 0x31d0
jmp 0x2a35e
movq %rax, %rbx
movq -0x1e0(%rbp), %rdi
leaq -0x1d0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a37b
callq 0x31d0
jmp 0x2a37b
movq %rax, %rbx
movq -0x200(%rbp), %rdi
leaq -0x1f0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a4c3
jmp 0x2a4be
movq %rax, %rbx
movq -0x300(%rbp), %rdi
leaq -0x2f0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a3b7
callq 0x31d0
jmp 0x2a3b7
movq %rax, %rbx
movq -0x220(%rbp), %rdi
leaq -0x210(%rbp), %rax
cmpq %rax, %rdi
je 0x2a3d4
callq 0x31d0
jmp 0x2a3d4
movq %rax, %rbx
movq -0x240(%rbp), %rdi
leaq -0x230(%rbp), %rax
cmpq %rax, %rdi
je 0x2a4c3
jmp 0x2a4be
movq %rax, %rbx
movq -0x260(%rbp), %rdi
leaq -0x250(%rbp), %rax
cmpq %rax, %rdi
je 0x2a410
callq 0x31d0
jmp 0x2a410
movq %rax, %rbx
movq -0x280(%rbp), %rdi
leaq -0x270(%rbp), %rax
cmpq %rax, %rdi
je 0x2a42d
callq 0x31d0
jmp 0x2a42d
movq %rax, %rbx
movq -0x2a0(%rbp), %rdi
leaq -0x290(%rbp), %rax
cmpq %rax, %rdi
je 0x2a44a
callq 0x31d0
jmp 0x2a44a
movq %rax, %rbx
movq -0x78(%rbp), %rdi
cmpq %r14, %rdi
je 0x2a4c3
movq (%rdi), %r15
callq 0x31d0
movq %r15, %rdi
cmpq %r14, %r15
jne 0x2a453
jmp 0x2a4c3
movq %rax, %rbx
movq -0x320(%rbp), %rdi
cmpq %r14, %rdi
je 0x2a4b5
callq 0x31d0
jmp 0x2a4b5
movq %rax, %rbx
leaq -0xa8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2a4c3
jmp 0x2a4be
jmp 0x2a4a8
movq %rax, %rbx
movq -0x340(%rbp), %rdi
cmpq %r15, %rdi
je 0x2a4c3
jmp 0x2a4be
movq %rax, %rbx
jmp 0x2a4e7
movq %rax, %rbx
jmp 0x2a4c3
movq %rax, %rbx
jmp 0x2a4db
movq %rax, %rbx
movq -0x78(%rbp), %rdi
cmpq %r15, %rdi
je 0x2a4c3
callq 0x31d0
movq -0x140(%rbp), %rdi
leaq -0x130(%rbp), %rax
cmpq %rax, %rdi
je 0x2a4db
callq 0x31d0
leaq -0x390(%rbp), %rdi
callq 0x2a726
movq -0x120(%rbp), %rdi
leaq -0x110(%rbp), %rax
cmpq %rax, %rdi
je 0x2a4ff
callq 0x31d0
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a517
callq 0x31d0
movq -0x100(%rbp), %rdi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rdi
je 0x2a52f
callq 0x31d0
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0x2a547
callq 0x31d0
movq -0x180(%rbp), %rdi
leaq -0x170(%rbp), %rax
cmpq %rax, %rdi
je 0x2a55f
callq 0x31d0
movq %rbx, %rdi
callq 0x33a0