// File: temelmertcan[P]multgen/src/wallace.cpp
// Function: compress_concat_vector(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, int&)
void compress_concat_vector (string* arr, int& size){

  const unsigned long max = std::string::npos;

  // cout << "Starting compress_concat_vector before:" << endl;
  // for (int i = 0 ; i <size ; i++)
  //   cout << arr[i] << " ";
  // cout << endl;
    
  
  try{
    
    int offset = 0;
    for (int i = 0; i<size-1-offset; i++){
      string& a = arr[i];
      string b = arr[i+1+offset];
      if (a.find("'b0") < max && b.find("'b0") < max){

	// !!
	//cout << "Merging zeros sizes: " << a.size() << " "<< b.size() << endl;
	//cout << "Merging zeros find res: " << a.find("'b0") << " "<< b.find("'b0") << endl;
	//cout << "Merging zeros: " << a << " "<< b << endl;
	
	int newcoef = stoi(a.substr(0,a.find("'b0"))) + stoi(b.substr(0,b.find("'b0")));
	a = to_string(newcoef) + "'b0";
	i--;
	offset++;
      }
      else if (a.find("[") <max && b.find("[") <max && a.find("]") <max && b.find("]")<max
	  && a.substr(0, a.find("[")) == b.substr(0, b.find("["))){

	int s1, e1;
	if (a.find(":")<max){
	  e1 = stoi(a.substr(a.find("[")+1,a.find(":")));
	  s1 = stoi(a.substr(a.find(":")+1,a.find("]")));
	}else {
	  s1 = stoi(a.substr(a.find("[")+1,a.find("]")));
	  e1 = s1;
	}

	int s2, e2;
	if (b.find(":")<max){
	  e2 = stoi(b.substr(b.find("[")+1,b.find(":")));
	  s2 = stoi(b.substr(b.find(":")+1,b.find("]")));
	}else {
	  s2 = stoi(b.substr(a.find("[")+1,b.find("]")));
	  e2 = s2;
	}
      
	if (s2 == (1 + e1)){
	  
	  // !!
	  //cout << "Merging vectors: " << a << " "<< b << endl;

	  
	  a = a.substr(0, a.find("[")) + "[" + to_string(e2) + ":" + to_string(s1) + "]";
	  i--;
	  offset++;
	} else {
	  arr[i+1] = b;
	}
      } else
	arr[i+1] = b;
    }

    size -= offset;
    

  }
  catch(exception &err)
    {
      cout<<"Conversion failure"<<endl;
      //cout << err << endl;
    }

  // for (int i = 0 ; i <size ; i++)
  //   cout << arr[i] << " ";
  // cout << endl;
  
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x440, %rsp            # imm = 0x440
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $-0x1, -0x18(%rbp)
movl $0x0, -0x1c(%rbp)
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
movq -0x10(%rbp), %rcx
movl (%rcx), %ecx
subl $0x1, %ecx
subl -0x1c(%rbp), %ecx
cmpl %ecx, %eax
jge 0x511a2
movq -0x8(%rbp), %rax
movslq -0x20(%rbp), %rcx
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rsi
movl -0x20(%rbp), %edx
movl -0x1c(%rbp), %eax
movl %eax, %ecx
movl %edx, %eax
leal 0x1(%rax,%rcx), %eax
cltq
shlq $0x5, %rax
addq %rax, %rsi
leaq -0x48(%rbp), %rdi
callq 0x3100
jmp 0x50629
movq -0x28(%rbp), %rdi
leaq 0x89a1(%rip), %rsi      # 0x58fd5
xorl %eax, %eax
movl %eax, %edx
callq 0x3460
cmpq $-0x1, %rax
jae 0x5082c
leaq -0x48(%rbp), %rdi
leaq 0x8983(%rip), %rsi      # 0x58fd5
xorl %eax, %eax
movl %eax, %edx
callq 0x3460
cmpq $-0x1, %rax
jae 0x5082c
movq -0x28(%rbp), %rdi
movq %rdi, -0x310(%rbp)
leaq 0x895e(%rip), %rsi      # 0x58fd5
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x308(%rbp)
callq 0x3460
movq -0x310(%rbp), %rsi
movq -0x308(%rbp), %rdx
movq %rax, %rcx
leaq -0x78(%rbp), %rdi
callq 0x3270
jmp 0x506a3
xorl %eax, %eax
movl %eax, %esi
leaq -0x78(%rbp), %rdi
movl $0xa, %edx
callq 0x55760
movl %eax, -0x314(%rbp)
jmp 0x506bd
leaq 0x8911(%rip), %rsi      # 0x58fd5
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x320(%rbp)
leaq -0x48(%rbp), %rdi
movq %rdi, -0x328(%rbp)
callq 0x3460
movq -0x328(%rbp), %rsi
movq -0x320(%rbp), %rdx
movq %rax, %rcx
leaq -0x98(%rbp), %rdi
callq 0x3270
jmp 0x506fe
xorl %eax, %eax
movl %eax, %esi
leaq -0x98(%rbp), %rdi
movl $0xa, %edx
callq 0x55760
movl %eax, -0x32c(%rbp)
jmp 0x5071b
movl -0x32c(%rbp), %ecx
movl -0x314(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x330(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x31a0
leaq -0x78(%rbp), %rdi
callq 0x31a0
movl -0x330(%rbp), %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %esi
leaq -0xd8(%rbp), %rdi
callq 0x1e700
jmp 0x5075e
leaq 0x8870(%rip), %rdx      # 0x58fd5
leaq -0xb8(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x1e560
jmp 0x5077a
movq -0x28(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x32b0
leaq -0xb8(%rbp), %rdi
callq 0x31a0
leaq -0xd8(%rbp), %rdi
callq 0x31a0
movl -0x20(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x20(%rbp)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x51127
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x51147
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x5113e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x50801
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x31a0
leaq -0x78(%rbp), %rdi
callq 0x31a0
jmp 0x5113e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x31a0
jmp 0x5113e
movq -0x28(%rbp), %rdi
leaq 0x7c56(%rip), %rsi      # 0x5848d
xorl %eax, %eax
movl %eax, %edx
callq 0x3460
movq %rax, %rcx
movb $0x0, -0xf9(%rbp)
movb $0x0, -0x121(%rbp)
xorl %eax, %eax
cmpq $-0x1, %rcx
movb %al, -0x331(%rbp)
jae 0x50987
leaq -0x48(%rbp), %rdi
leaq 0x7c1f(%rip), %rsi      # 0x5848d
xorl %eax, %eax
movl %eax, %edx
callq 0x3460
movq %rax, %rcx
xorl %eax, %eax
cmpq $-0x1, %rcx
movb %al, -0x331(%rbp)
jae 0x50987
movq -0x28(%rbp), %rdi
leaq 0x7585(%rip), %rsi      # 0x57e1c
xorl %eax, %eax
movl %eax, %edx
callq 0x3460
movq %rax, %rcx
xorl %eax, %eax
cmpq $-0x1, %rcx
movb %al, -0x331(%rbp)
jae 0x50987
leaq -0x48(%rbp), %rdi
leaq 0x755c(%rip), %rsi      # 0x57e1c
xorl %eax, %eax
movl %eax, %edx
callq 0x3460
movq %rax, %rcx
xorl %eax, %eax
cmpq $-0x1, %rcx
movb %al, -0x331(%rbp)
jae 0x50987
movq -0x28(%rbp), %rdi
movq %rdi, -0x348(%rbp)
leaq 0x7b9d(%rip), %rsi      # 0x5848d
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x340(%rbp)
callq 0x3460
movq -0x348(%rbp), %rsi
movq -0x340(%rbp), %rdx
movq %rax, %rcx
leaq -0xf8(%rbp), %rdi
callq 0x3270
jmp 0x5091f
movb $0x1, -0xf9(%rbp)
leaq 0x7b60(%rip), %rsi      # 0x5848d
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x350(%rbp)
leaq -0x48(%rbp), %rdi
movq %rdi, -0x358(%rbp)
callq 0x3460
movq -0x358(%rbp), %rsi
movq -0x350(%rbp), %rdx
movq %rax, %rcx
leaq -0x120(%rbp), %rdi
callq 0x3270
jmp 0x50967
movb $0x1, -0x121(%rbp)
leaq -0xf8(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x557a0
movb %al, -0x331(%rbp)
movb -0x331(%rbp), %al
movb %al, -0x359(%rbp)
testb $0x1, -0x121(%rbp)
jne 0x5099e
jmp 0x509aa
leaq -0x120(%rbp), %rdi
callq 0x31a0
testb $0x1, -0xf9(%rbp)
jne 0x509b5
jmp 0x509c1
leaq -0xf8(%rbp), %rdi
callq 0x31a0
movb -0x359(%rbp), %al
testb $0x1, %al
jne 0x509d0
jmp 0x51107
movq -0x28(%rbp), %rdi
leaq 0x5ccf(%rip), %rsi      # 0x566aa
xorl %eax, %eax
movl %eax, %edx
callq 0x3460
cmpq $-0x1, %rax
jae 0x50b83
movq -0x28(%rbp), %rdi
movq %rdi, -0x370(%rbp)
leaq 0x7a8d(%rip), %rsi      # 0x5848d
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x378(%rbp)
callq 0x3460
movq -0x378(%rbp), %rdx
incq %rax
movq %rax, -0x368(%rbp)
movq -0x28(%rbp), %rdi
leaq 0x5c7e(%rip), %rsi      # 0x566aa
callq 0x3460
movq -0x370(%rbp), %rsi
movq -0x368(%rbp), %rdx
movq %rax, %rcx
leaq -0x150(%rbp), %rdi
callq 0x3270
jmp 0x50a50
xorl %eax, %eax
movl %eax, %esi
leaq -0x150(%rbp), %rdi
movl $0xa, %edx
callq 0x55760
movl %eax, -0x37c(%rbp)
jmp 0x50a6d
movl -0x37c(%rbp), %eax
movl %eax, -0x12c(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x31a0
movq -0x28(%rbp), %rdi
movq %rdi, -0x390(%rbp)
leaq 0x5c13(%rip), %rsi      # 0x566aa
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x398(%rbp)
callq 0x3460
movq -0x398(%rbp), %rdx
incq %rax
movq %rax, -0x388(%rbp)
movq -0x28(%rbp), %rdi
leaq 0x7359(%rip), %rsi      # 0x57e1c
callq 0x3460
movq -0x390(%rbp), %rsi
movq -0x388(%rbp), %rdx
movq %rax, %rcx
leaq -0x170(%rbp), %rdi
callq 0x3270
jmp 0x50ae7
xorl %eax, %eax
movl %eax, %esi
leaq -0x170(%rbp), %rdi
movl $0xa, %edx
callq 0x55760
movl %eax, -0x39c(%rbp)
jmp 0x50b04
movl -0x39c(%rbp), %eax
movl %eax, -0x128(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x31a0
jmp 0x50c45
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
testb $0x1, -0xf9(%rbp)
jne 0x50b38
jmp 0x50b44
leaq -0xf8(%rbp), %rdi
callq 0x31a0
jmp 0x5113e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x31a0
jmp 0x5113e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x31a0
jmp 0x5113e
movq -0x28(%rbp), %rdi
movq %rdi, -0x3b0(%rbp)
leaq 0x78f8(%rip), %rsi      # 0x5848d
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x3b8(%rbp)
callq 0x3460
movq -0x3b8(%rbp), %rdx
incq %rax
movq %rax, -0x3a8(%rbp)
movq -0x28(%rbp), %rdi
leaq 0x725b(%rip), %rsi      # 0x57e1c
callq 0x3460
movq -0x3b0(%rbp), %rsi
movq -0x3a8(%rbp), %rdx
movq %rax, %rcx
leaq -0x190(%rbp), %rdi
callq 0x3270
jmp 0x50be5
xorl %eax, %eax
movl %eax, %esi
leaq -0x190(%rbp), %rdi
movl $0xa, %edx
callq 0x55760
movl %eax, -0x3bc(%rbp)
jmp 0x50c02
movl -0x3bc(%rbp), %eax
movl %eax, -0x128(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x31a0
movl -0x128(%rbp), %eax
movl %eax, -0x12c(%rbp)
jmp 0x50c45
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x31a0
jmp 0x5113e
leaq -0x48(%rbp), %rdi
leaq 0x5a5a(%rip), %rsi      # 0x566aa
xorl %eax, %eax
movl %eax, %edx
callq 0x3460
cmpq $-0x1, %rax
jae 0x50dd6
leaq 0x7823(%rip), %rsi      # 0x5848d
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x3d8(%rbp)
leaq -0x48(%rbp), %rdi
movq %rdi, -0x3d0(%rbp)
callq 0x3460
movq -0x3d8(%rbp), %rdx
movq -0x3d0(%rbp), %rdi
incq %rax
movq %rax, -0x3c8(%rbp)
leaq 0x5a06(%rip), %rsi      # 0x566aa
callq 0x3460
movq -0x3d0(%rbp), %rsi
movq -0x3c8(%rbp), %rdx
movq %rax, %rcx
leaq -0x1b8(%rbp), %rdi
callq 0x3270
jmp 0x50cc8
xorl %eax, %eax
movl %eax, %esi
leaq -0x1b8(%rbp), %rdi
movl $0xa, %edx
callq 0x55760
movl %eax, -0x3dc(%rbp)
jmp 0x50ce5
movl -0x3dc(%rbp), %eax
movl %eax, -0x198(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x31a0
leaq 0x59a6(%rip), %rsi      # 0x566aa
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x3f8(%rbp)
leaq -0x48(%rbp), %rdi
movq %rdi, -0x3f0(%rbp)
callq 0x3460
movq -0x3f8(%rbp), %rdx
movq -0x3f0(%rbp), %rdi
incq %rax
movq %rax, -0x3e8(%rbp)
leaq 0x70de(%rip), %rsi      # 0x57e1c
callq 0x3460
movq -0x3f0(%rbp), %rsi
movq -0x3e8(%rbp), %rdx
movq %rax, %rcx
leaq -0x1d8(%rbp), %rdi
callq 0x3270
jmp 0x50d62
xorl %eax, %eax
movl %eax, %esi
leaq -0x1d8(%rbp), %rdi
movl $0xa, %edx
callq 0x55760
movl %eax, -0x3fc(%rbp)
jmp 0x50d7f
movl -0x3fc(%rbp), %eax
movl %eax, -0x194(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x31a0
jmp 0x50e98
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x31a0
jmp 0x5113e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x31a0
jmp 0x5113e
movq -0x28(%rbp), %rdi
leaq 0x76ac(%rip), %rsi      # 0x5848d
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x418(%rbp)
callq 0x3460
movq -0x418(%rbp), %rdx
incq %rax
movq %rax, -0x408(%rbp)
leaq 0x7013(%rip), %rsi      # 0x57e1c
leaq -0x48(%rbp), %rdi
movq %rdi, -0x410(%rbp)
callq 0x3460
movq -0x410(%rbp), %rsi
movq -0x408(%rbp), %rdx
movq %rax, %rcx
leaq -0x1f8(%rbp), %rdi
callq 0x3270
jmp 0x50e38
xorl %eax, %eax
movl %eax, %esi
leaq -0x1f8(%rbp), %rdi
movl $0xa, %edx
callq 0x55760
movl %eax, -0x41c(%rbp)
jmp 0x50e55
movl -0x41c(%rbp), %eax
movl %eax, -0x194(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x31a0
movl -0x194(%rbp), %eax
movl %eax, -0x198(%rbp)
jmp 0x50e98
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x31a0
jmp 0x5113e
movl -0x194(%rbp), %eax
movl -0x12c(%rbp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jne 0x510e7
movq -0x28(%rbp), %rdi
movq %rdi, -0x430(%rbp)
leaq 0x75cc(%rip), %rsi      # 0x5848d
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x428(%rbp)
callq 0x3460
movq -0x430(%rbp), %rsi
movq -0x428(%rbp), %rdx
movq %rax, %rcx
leaq -0x2b8(%rbp), %rdi
callq 0x3270
jmp 0x50ef0
leaq 0x7596(%rip), %rdx      # 0x5848d
leaq -0x298(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
callq 0x1e560
jmp 0x50f0c
movl -0x198(%rbp), %esi
leaq -0x2d8(%rbp), %rdi
callq 0x1e700
jmp 0x50f20
leaq -0x278(%rbp), %rdi
leaq -0x298(%rbp), %rsi
leaq -0x2d8(%rbp), %rdx
callq 0x1e5b0
jmp 0x50f3c
leaq 0x5767(%rip), %rdx      # 0x566aa
leaq -0x258(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x1e560
jmp 0x50f58
movl -0x128(%rbp), %esi
leaq -0x2f8(%rbp), %rdi
callq 0x1e700
jmp 0x50f6c
leaq -0x238(%rbp), %rdi
leaq -0x258(%rbp), %rsi
leaq -0x2f8(%rbp), %rdx
callq 0x1e5b0
jmp 0x50f88
leaq 0x6e8d(%rip), %rdx      # 0x57e1c
leaq -0x218(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x1e560
jmp 0x50fa4
movq -0x28(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0x32b0
leaq -0x218(%rbp), %rdi
callq 0x31a0
leaq -0x238(%rbp), %rdi
callq 0x31a0
leaq -0x2f8(%rbp), %rdi
callq 0x31a0
leaq -0x258(%rbp), %rdi
callq 0x31a0
leaq -0x278(%rbp), %rdi
callq 0x31a0
leaq -0x2d8(%rbp), %rdi
callq 0x31a0
leaq -0x298(%rbp), %rdi
callq 0x31a0
leaq -0x2b8(%rbp), %rdi
callq 0x31a0
movl -0x20(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x20(%rbp)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x51105
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x510d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x510cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x510c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x510b5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x510a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x5109d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x31a0
leaq -0x2f8(%rbp), %rdi
callq 0x31a0
leaq -0x258(%rbp), %rdi
callq 0x31a0
leaq -0x278(%rbp), %rdi
callq 0x31a0
leaq -0x2d8(%rbp), %rdi
callq 0x31a0
leaq -0x298(%rbp), %rdi
callq 0x31a0
leaq -0x2b8(%rbp), %rdi
callq 0x31a0
jmp 0x5113e
movq -0x8(%rbp), %rcx
movslq -0x20(%rbp), %rax
shlq $0x5, %rax
leaq 0x20(%rax,%rcx), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3050
jmp 0x51103
jmp 0x51105
jmp 0x51125
movq -0x8(%rbp), %rcx
movslq -0x20(%rbp), %rax
shlq $0x5, %rax
leaq 0x20(%rax,%rcx), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3050
jmp 0x51123
jmp 0x51125
jmp 0x51127
leaq -0x48(%rbp), %rdi
callq 0x31a0
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x505d9
leaq -0x48(%rbp), %rdi
callq 0x31a0
movl -0x54(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x511c6
movq -0x50(%rbp), %rdi
callq 0x30e0
movq %rax, -0x300(%rbp)
movq 0x14e5e(%rip), %rdi     # 0x65fc8
leaq 0x85ca(%rip), %rsi      # 0x5973b
callq 0x3250
movq %rax, -0x438(%rbp)
jmp 0x5117f
movq -0x438(%rbp), %rdi
movq 0x14e2b(%rip), %rsi     # 0x65fb8
callq 0x3280
jmp 0x51194
callq 0x33e0
addq $0x440, %rsp            # imm = 0x440
popq %rbp
retq
movl -0x1c(%rbp), %edx
movq -0x10(%rbp), %rax
movl (%rax), %ecx
subl %edx, %ecx
movl %ecx, (%rax)
jmp 0x51199
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x33e0
jmp 0x511c4
jmp 0x511c6
movq -0x50(%rbp), %rdi
callq 0x3420
movq %rax, %rdi
callq 0x1f120
nopw (%rax,%rax)