// File: akinanop[P]mvl-solver/src/GenBenFunc.cc
// Function: GenBenFin(CommandLine*)
void GenBenFin(CommandLine * cline)
{
  //local variables
  int x = 0;
  int y = 0;
  int z = 0;

  srand(time(NULL));

  //Assign Memory to each global variable
  SOLN = new Literal[cline->NUM_VAR];

  CLAUSE_LIST = new Literal *[cline->NUM_CLAUSE];
  for(y=0; y<cline->NUM_CLAUSE; y++)
    CLAUSE_LIST[y] = new Literal[cline->CLAUSE_SIZE];

  VARIABLES = new Literal [cline->NUM_VAR];

  //Assigning domain values to each variable
  //fixed size
  if(!cline->DRAND)
    {
      for(x=0; x<cline->NUM_VAR; x++)
	{
	  VARIABLES[x].VAR = x;
	  VARIABLES[x].VAL = cline->DOMAIN_SIZE;
	}
    }
  //random domain size
  else
    {
      for(x=0; x<cline->NUM_VAR; x++)
	{
	  VARIABLES[x].VAR = x;
	  VARIABLES[x].VAL = rand() % cline->DOMAIN_SIZE;
	}
    }

  //Generating solution
  for(x=0; x<cline->NUM_VAR; x++)
    {
      SOLN[x].VAR = x;
      SOLN[x].VAL = rand() % VARIABLES[x].VAL;
    }

  //Generating clauses
  bool already_exist = false;
  for(y=0; y<cline->NUM_CLAUSE; y++)
    {
      for(x=0; x<cline->CLAUSE_SIZE; x++)
	{
	  //checking if problem needs to be solvable or random
	  //if satisfiable
	  if(cline->SAT_UNSAT && x==0)
	    {
	      //assigning variable to clause
	      CLAUSE_LIST[y][x].VAR = SOLN[rand() % cline->NUM_VAR].VAR;
	      CLAUSE_LIST[y][x].VAL = SOLN[CLAUSE_LIST[y][x].VAR].VAL;
	    }

	  //else unsatisfiable
	  else
	    {
	      //assigning variable to clause
	      CLAUSE_LIST[y][x].VAR = rand() % cline->NUM_VAR;
	      //checking if variable already exist
	      do
		{
		  already_exist = false;
		  for(z=0; z<x && !already_exist; z++)
		    {
		      if(CLAUSE_LIST[y][x].VAR == CLAUSE_LIST[y][z].VAR)
			{
			  CLAUSE_LIST[y][x].VAR = rand() % cline->NUM_VAR;
			  already_exist = true;
			}
		      else
			{
			  already_exist = false;
			}
		    }
		}while(already_exist);
	      CLAUSE_LIST[y][x].VAL = rand() % VARIABLES[CLAUSE_LIST[y][x].VAR].VAL;
	    }
	}
    }

  //opening and writing to outputfile
  ofstream outfile;
  outfile.open(cline->FILE, ios::out);
  if(!outfile)
    {
      cout<<endl;
      cout<<"**** ERROR ****"<<endl;
      cout<<" Could not open output file to write "<<endl;
      cout<<"****       ****"<<endl;
      cout<<endl;
    }
  else
    {
      outfile<<"p cnf "<<cline->NUM_VAR<<" "<<cline->NUM_CLAUSE<<endl;
      for(y=0; y<cline->NUM_VAR; y++)
	{
	  outfile<<"d "<<VARIABLES[y].VAR+1<<" "<<VARIABLES[y].VAL<<endl;
	}
      for(y=0; y<cline->NUM_CLAUSE; y++)
	{
	  for(x=0; x<cline->CLAUSE_SIZE; x++)
	    {
	      outfile<<CLAUSE_LIST[y][x].VAR+1<<"="<<CLAUSE_LIST[y][x].VAL<<" ";
	    }
	  outfile<<"0"<<endl;
	}
    }
  outfile.close();
}

// Assembly:
subq $0x358, %rsp            # imm = 0x358
movq %rdi, 0x350(%rsp)
movl $0x0, 0x34c(%rsp)
movl $0x0, 0x348(%rsp)
movl $0x0, 0x344(%rsp)
xorl %eax, %eax
movl %eax, %edi
callq 0x21f0
movl %eax, %edi
callq 0x2200
movq 0x350(%rsp), %rax
movslq 0x4(%rax), %rax
movq %rax, 0x120(%rsp)
movl $0xc, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
movq $-0x1, %rax
testb $0x1, %cl
cmovneq %rax, %rdi
movq %rdi, 0x118(%rsp)
callq 0x2030
movq %rax, %rcx
movq 0x120(%rsp), %rax
movq %rcx, 0x128(%rsp)
cmpq $0x0, %rax
je 0x4788
movq 0x128(%rsp), %rax
movq 0x120(%rsp), %rcx
imulq $0xc, %rcx, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, 0x108(%rsp)
movq %rax, 0x110(%rsp)
movq 0x110(%rsp), %rdi
movq %rdi, 0x100(%rsp)
callq 0x59f0
jmp 0x4767
movq 0x108(%rsp), %rcx
movq 0x100(%rsp), %rax
addq $0xc, %rax
cmpq %rcx, %rax
movq %rax, 0x110(%rsp)
jne 0x4750
movq 0x128(%rsp), %rax
movq %rax, 0x19ac1(%rip)     # 0x1e258
movq 0x350(%rsp), %rax
movslq 0x8(%rax), %rax
movl $0x8, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
movq $-0x1, %rax
testb $0x1, %cl
cmovneq %rax, %rdi
callq 0x2030
movq %rax, 0x19a95(%rip)     # 0x1e260
movl $0x0, 0x348(%rsp)
movl 0x348(%rsp), %eax
movq 0x350(%rsp), %rcx
cmpl 0x8(%rcx), %eax
jge 0x4933
movq 0x350(%rsp), %rax
movslq 0xc(%rax), %rax
movq %rax, 0xf0(%rsp)
movl $0xc, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
movq $-0x1, %rax
testb $0x1, %cl
cmovneq %rax, %rdi
movq %rdi, 0xe8(%rsp)
callq 0x2030
movq %rax, %rcx
movq 0xf0(%rsp), %rax
movq %rcx, 0xf8(%rsp)
cmpq $0x0, %rax
je 0x48a6
movq 0xf8(%rsp), %rax
movq 0xf0(%rsp), %rcx
imulq $0xc, %rcx, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, 0xd8(%rsp)
movq %rax, 0xe0(%rsp)
movq 0xe0(%rsp), %rdi
movq %rdi, 0xd0(%rsp)
callq 0x59f0
jmp 0x4885
movq 0xd8(%rsp), %rcx
movq 0xd0(%rsp), %rax
addq $0xc, %rax
cmpq %rcx, %rax
movq %rax, 0xe0(%rsp)
jne 0x486e
movq 0xf8(%rsp), %rdx
movq 0x199ab(%rip), %rax     # 0x1e260
movslq 0x348(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
movl 0x348(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x348(%rsp)
jmp 0x47d6
movq 0x118(%rsp), %rsi
movq 0x128(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x338(%rsp)
movl %eax, 0x334(%rsp)
callq 0x2440
jmp 0x52a0
movq 0xe8(%rsp), %rsi
movq 0xf8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x338(%rsp)
movl %eax, 0x334(%rsp)
callq 0x2440
jmp 0x52a0
movq 0x350(%rsp), %rax
movslq 0x4(%rax), %rax
movq %rax, 0xc0(%rsp)
movl $0xc, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
movq $-0x1, %rax
testb $0x1, %cl
cmovneq %rax, %rdi
movq %rdi, 0xb8(%rsp)
callq 0x2030
movq %rax, %rcx
movq 0xc0(%rsp), %rax
movq %rcx, 0xc8(%rsp)
cmpq $0x0, %rax
je 0x49eb
movq 0xc8(%rsp), %rax
movq 0xc0(%rsp), %rcx
imulq $0xc, %rcx, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, 0xa8(%rsp)
movq %rax, 0xb0(%rsp)
movq 0xb0(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0x59f0
jmp 0x49ca
movq 0xa8(%rsp), %rcx
movq 0xa0(%rsp), %rax
addq $0xc, %rax
cmpq %rcx, %rax
movq %rax, 0xb0(%rsp)
jne 0x49b3
movq 0xc8(%rsp), %rax
movq %rax, 0x1986e(%rip)     # 0x1e268
movq 0x350(%rsp), %rax
testb $0x1, 0x18(%rax)
jne 0x4ab5
movl $0x0, 0x34c(%rsp)
movl 0x34c(%rsp), %eax
movq 0x350(%rsp), %rcx
cmpl 0x4(%rcx), %eax
jge 0x4ab3
movl 0x34c(%rsp), %ecx
movq 0x1982b(%rip), %rax     # 0x1e268
movslq 0x34c(%rsp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movq 0x350(%rsp), %rax
movl 0x14(%rax), %ecx
movq 0x19808(%rip), %rax     # 0x1e268
movslq 0x34c(%rsp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
movl 0x34c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x34c(%rsp)
jmp 0x4a17
movq 0xb8(%rsp), %rsi
movq 0xc8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x338(%rsp)
movl %eax, 0x334(%rsp)
callq 0x2440
jmp 0x52a0
jmp 0x4b32
movl $0x0, 0x34c(%rsp)
movl 0x34c(%rsp), %eax
movq 0x350(%rsp), %rcx
cmpl 0x4(%rcx), %eax
jge 0x4b30
movl 0x34c(%rsp), %ecx
movq 0x19786(%rip), %rax     # 0x1e268
movslq 0x34c(%rsp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
callq 0x20c0
movq 0x350(%rsp), %rcx
cltd
idivl 0x14(%rcx)
movq 0x1975d(%rip), %rax     # 0x1e268
movslq 0x34c(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl %edx, 0x4(%rax)
movl 0x34c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x34c(%rsp)
jmp 0x4ac0
jmp 0x4b32
movl $0x0, 0x34c(%rsp)
movl 0x34c(%rsp), %eax
movq 0x350(%rsp), %rcx
cmpl 0x4(%rcx), %eax
jge 0x4bbb
movl 0x34c(%rsp), %ecx
movq 0x196f9(%rip), %rax     # 0x1e258
movslq 0x34c(%rsp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
callq 0x20c0
movq 0x196ec(%rip), %rcx     # 0x1e268
movslq 0x34c(%rsp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rcx
cltd
idivl 0x4(%rcx)
movq 0x196c2(%rip), %rax     # 0x1e258
movslq 0x34c(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl %edx, 0x4(%rax)
movl 0x34c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x34c(%rsp)
jmp 0x4b3d
movb $0x0, 0x333(%rsp)
movl $0x0, 0x348(%rsp)
movl 0x348(%rsp), %eax
movq 0x350(%rsp), %rcx
cmpl 0x8(%rcx), %eax
jge 0x4eac
movl $0x0, 0x34c(%rsp)
movl 0x34c(%rsp), %eax
movq 0x350(%rsp), %rcx
cmpl 0xc(%rcx), %eax
jge 0x4e94
movq 0x350(%rsp), %rax
testb $0x1, 0x10(%rax)
je 0x4ce1
cmpl $0x0, 0x34c(%rsp)
jne 0x4ce1
movq 0x19628(%rip), %rax     # 0x1e258
movq %rax, 0x98(%rsp)
callq 0x20c0
movq 0x350(%rsp), %rcx
cltd
idivl 0x4(%rcx)
movq 0x98(%rsp), %rax
movslq %edx, %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %ecx
movq 0x195fc(%rip), %rax     # 0x1e260
movslq 0x348(%rsp), %rdx
movq (%rax,%rdx,8), %rax
movslq 0x34c(%rsp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rax
movl %ecx, (%rax)
movq 0x195d0(%rip), %rax     # 0x1e258
movq 0x195d1(%rip), %rcx     # 0x1e260
movslq 0x348(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq 0x34c(%rsp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rcx
movslq (%rcx), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl 0x4(%rax), %ecx
movq 0x195a2(%rip), %rax     # 0x1e260
movslq 0x348(%rsp), %rdx
movq (%rax,%rdx,8), %rax
movslq 0x34c(%rsp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rax
movl %ecx, 0x4(%rax)
jmp 0x4e7c
callq 0x20c0
movq 0x350(%rsp), %rcx
cltd
idivl 0x4(%rcx)
movq 0x19567(%rip), %rax     # 0x1e260
movslq 0x348(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x34c(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl %edx, (%rax)
movb $0x0, 0x333(%rsp)
movl $0x0, 0x344(%rsp)
movl 0x344(%rsp), %ecx
xorl %eax, %eax
cmpl 0x34c(%rsp), %ecx
movb %al, 0x97(%rsp)
jge 0x4d52
movb 0x333(%rsp), %al
xorb $-0x1, %al
movb %al, 0x97(%rsp)
movb 0x97(%rsp), %al
testb $0x1, %al
jne 0x4d62
jmp 0x4e0b
movq 0x194f7(%rip), %rax     # 0x1e260
movslq 0x348(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x34c(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %eax
movq 0x194d3(%rip), %rcx     # 0x1e260
movslq 0x348(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq 0x344(%rsp), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rcx
cmpl (%rcx), %eax
jne 0x4deb
callq 0x20c0
movq 0x350(%rsp), %rcx
cltd
idivl 0x4(%rcx)
movq 0x1949c(%rip), %rax     # 0x1e260
movslq 0x348(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x34c(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl %edx, (%rax)
movb $0x1, 0x333(%rsp)
jmp 0x4df3
movb $0x0, 0x333(%rsp)
jmp 0x4df5
movl 0x344(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x344(%rsp)
jmp 0x4d29
jmp 0x4e0d
testb $0x1, 0x333(%rsp)
jne 0x4d16
callq 0x20c0
movq 0x19441(%rip), %rcx     # 0x1e268
movq 0x19432(%rip), %rdx     # 0x1e260
movslq 0x348(%rsp), %rsi
movq (%rdx,%rsi,8), %rdx
movslq 0x34c(%rsp), %rsi
imulq $0xc, %rsi, %rsi
addq %rsi, %rdx
movslq (%rdx), %rdx
imulq $0xc, %rdx, %rdx
addq %rdx, %rcx
cltd
idivl 0x4(%rcx)
movq 0x19402(%rip), %rax     # 0x1e260
movslq 0x348(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x34c(%rsp), %rcx
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl %edx, 0x4(%rax)
jmp 0x4e7e
movl 0x34c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x34c(%rsp)
jmp 0x4bf1
jmp 0x4e96
movl 0x348(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x348(%rsp)
jmp 0x4bce
leaq 0x130(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0x23f0
movq 0x88(%rsp), %rdi
movq 0x350(%rsp), %rax
movq 0x20(%rax), %rsi
movl $0x10, %edx
callq 0x2060
jmp 0x4ee1
movq 0x130(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x130(%rsp,%rax), %rdi
callq 0x2130
movb %al, 0x87(%rsp)
jmp 0x4f03
movb 0x87(%rsp), %al
testb $0x1, %al
jne 0x4f13
jmp 0x4fef
movq 0x190b6(%rip), %rdi     # 0x1dfd0
movq 0x1909f(%rip), %rsi     # 0x1dfc0
callq 0x2260
jmp 0x4f28
movq 0x190a1(%rip), %rdi     # 0x1dfd0
leaq 0x12b9e(%rip), %rsi     # 0x17ad4
callq 0x2220
movq %rax, 0x78(%rsp)
jmp 0x4f42
movq 0x78(%rsp), %rdi
movq 0x19072(%rip), %rsi     # 0x1dfc0
callq 0x2260
jmp 0x4f55
movq 0x19074(%rip), %rdi     # 0x1dfd0
leaq 0x12b81(%rip), %rsi     # 0x17ae4
callq 0x2220
movq %rax, 0x70(%rsp)
jmp 0x4f6f
movq 0x70(%rsp), %rdi
movq 0x19045(%rip), %rsi     # 0x1dfc0
callq 0x2260
jmp 0x4f82
movq 0x19047(%rip), %rdi     # 0x1dfd0
leaq 0x12b7a(%rip), %rsi     # 0x17b0a
callq 0x2220
movq %rax, 0x68(%rsp)
jmp 0x4f9c
movq 0x68(%rsp), %rdi
movq 0x19018(%rip), %rsi     # 0x1dfc0
callq 0x2260
jmp 0x4faf
movq 0x1901a(%rip), %rdi     # 0x1dfd0
movq 0x19003(%rip), %rsi     # 0x1dfc0
callq 0x2260
jmp 0x4fc4
jmp 0x527c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x338(%rsp)
movl %eax, 0x334(%rsp)
leaq 0x130(%rsp), %rdi
callq 0x2380
jmp 0x52a0
leaq 0x12b24(%rip), %rsi     # 0x17b1a
leaq 0x130(%rsp), %rdi
callq 0x2220
movq %rax, 0x60(%rsp)
jmp 0x500a
movq 0x60(%rsp), %rdi
movq 0x350(%rsp), %rax
movl 0x4(%rax), %esi
callq 0x2400
movq %rax, 0x58(%rsp)
jmp 0x5026
movq 0x58(%rsp), %rdi
leaq 0x12215(%rip), %rsi     # 0x17247
callq 0x2220
movq %rax, 0x50(%rsp)
jmp 0x503e
movq 0x50(%rsp), %rdi
movq 0x350(%rsp), %rax
movl 0x8(%rax), %esi
callq 0x2400
movq %rax, 0x48(%rsp)
jmp 0x505a
movq 0x48(%rsp), %rdi
movq 0x18f5a(%rip), %rsi     # 0x1dfc0
callq 0x2260
jmp 0x506d
movl $0x0, 0x348(%rsp)
movl 0x348(%rsp), %eax
movq 0x350(%rsp), %rcx
cmpl 0x4(%rcx), %eax
jge 0x513f
leaq 0x12a8a(%rip), %rsi     # 0x17b21
leaq 0x130(%rsp), %rdi
callq 0x2220
movq %rax, 0x40(%rsp)
jmp 0x50ab
movq 0x40(%rsp), %rdi
movq 0x191b1(%rip), %rax     # 0x1e268
movslq 0x348(%rsp), %rcx
leaq (%rcx,%rcx,2), %rcx
movl (%rax,%rcx,4), %esi
incl %esi
callq 0x2400
movq %rax, 0x38(%rsp)
jmp 0x50d4
movq 0x38(%rsp), %rdi
leaq 0x12167(%rip), %rsi     # 0x17247
callq 0x2220
movq %rax, 0x30(%rsp)
jmp 0x50ec
movq 0x30(%rsp), %rdi
movq 0x19170(%rip), %rax     # 0x1e268
movslq 0x348(%rsp), %rcx
leaq (%rcx,%rcx,2), %rcx
movl 0x4(%rax,%rcx,4), %esi
callq 0x2400
movq %rax, 0x28(%rsp)
jmp 0x5114
movq 0x28(%rsp), %rdi
movq 0x18ea0(%rip), %rsi     # 0x1dfc0
callq 0x2260
jmp 0x5127
jmp 0x5129
movl 0x348(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x348(%rsp)
jmp 0x5078
movl $0x0, 0x348(%rsp)
movl 0x348(%rsp), %eax
movq 0x350(%rsp), %rcx
cmpl 0x8(%rcx), %eax
jge 0x527a
movl $0x0, 0x34c(%rsp)
movl 0x34c(%rsp), %eax
movq 0x350(%rsp), %rcx
cmpl 0xc(%rcx), %eax
jge 0x5234
movq 0x190d4(%rip), %rax     # 0x1e260
movslq 0x348(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x34c(%rsp), %rcx
leaq (%rcx,%rcx,2), %rcx
movl (%rax,%rcx,4), %esi
incl %esi
leaq 0x130(%rsp), %rdi
callq 0x2400
movq %rax, 0x20(%rsp)
jmp 0x51bd
movq 0x20(%rsp), %rdi
leaq 0x12a08(%rip), %rsi     # 0x17bd1
callq 0x2220
movq %rax, 0x18(%rsp)
jmp 0x51d5
movq 0x18(%rsp), %rdi
movq 0x1907f(%rip), %rax     # 0x1e260
movslq 0x348(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x34c(%rsp), %rcx
leaq (%rcx,%rcx,2), %rcx
movl 0x4(%rax,%rcx,4), %esi
callq 0x2400
movq %rax, 0x10(%rsp)
jmp 0x5209
movq 0x10(%rsp), %rdi
leaq 0x12032(%rip), %rsi     # 0x17247
callq 0x2220
jmp 0x521c
jmp 0x521e
movl 0x34c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x34c(%rsp)
jmp 0x516d
leaq 0x12978(%rip), %rsi     # 0x17bb3
leaq 0x130(%rsp), %rdi
callq 0x2220
movq %rax, 0x8(%rsp)
jmp 0x524f
movq 0x8(%rsp), %rdi
movq 0x18d65(%rip), %rsi     # 0x1dfc0
callq 0x2260
jmp 0x5262
jmp 0x5264
movl 0x348(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x348(%rsp)
jmp 0x514a
jmp 0x527c
leaq 0x130(%rsp), %rdi
callq 0x2360
jmp 0x528b
leaq 0x130(%rsp), %rdi
callq 0x2380
addq $0x358, %rsp            # imm = 0x358
retq
movq 0x338(%rsp), %rdi
callq 0x2410
nopl (%rax)