LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O2/mateuz[P]MTS-LS1/source/F4.cpp
// Function: F4::F4()
F4::F4():Benchmarks(){
	Ovector = NULL;
	minX = -100;
	maxX = 100;
	ID = 4;
        s_size = 7;
	// lookup2 = lookupprepare(nonSeparableGroupSize);
	// lookup = lookupprepare(dimension - nonSeparableGroupSize);
        anotherz = new double[dimension];
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
callq 0x375c
leaq 0x7d56(%rip), %rax      # 0xec08
movq %rax, (%rbx)
andq $0x0, 0x48(%rbx)
movabsq $0x64ffffff9c, %rax     # imm = 0x64FFFFFF9C
movq %rax, 0xb0(%rbx)
movl $0x4, 0x8(%rbx)
movl $0x7, 0x3c(%rbx)
movslq 0xb8(%rbx), %rax
leaq (,%rax,8), %rcx
testq %rax, %rax
pushq $-0x1
popq %rdi
cmovnsq %rcx, %rdi
callq 0x3030
movq %rax, 0x70(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %r14
movq %rbx, %rdi
callq 0x37f4
movq %r14, %rdi
callq 0x32d0
nop
// File: /workspace/github_cpp_makefile_star2_O2/mateuz[P]MTS-LS1/source/F5.cpp
// Function: F5::F5()
F5::F5():Benchmarks(){
  Ovector = NULL;
  minX = -5;
  maxX = 5;
  ID = 5;
  s_size = 7;
  anotherz = new double[dimension];
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
callq 0x375c
leaq 0x7a26(%rip), %rax      # 0xec50
movq %rax, (%rbx)
andq $0x0, 0x48(%rbx)
movabsq $0x5fffffffb, %rax      # imm = 0x5FFFFFFFB
movq %rax, 0xb0(%rbx)
movl $0x5, 0x8(%rbx)
movl $0x7, 0x3c(%rbx)
movslq 0xb8(%rbx), %rax
leaq (,%rax,8), %rcx
testq %rax, %rax
pushq $-0x1
popq %rdi
cmovnsq %rcx, %rdi
callq 0x3030
movq %rax, 0x70(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %r14
movq %rbx, %rdi
callq 0x37f4
movq %r14, %rdi
callq 0x32d0
nop
// File: /workspace/github_cpp_makefile_star2_O2/mateuz[P]MTS-LS1/source/F6.cpp
// Function: F6::F6()
F6::F6():Benchmarks(){
  Ovector = NULL;
  minX = -32;
  maxX = 32;
  ID = 6;
  s_size = 7;
  anotherz = new double[dimension];
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
callq 0x375c
leaq 0x76f6(%rip), %rax      # 0xec98
movq %rax, (%rbx)
andq $0x0, 0x48(%rbx)
movabsq $0x20ffffffe0, %rax     # imm = 0x20FFFFFFE0
movq %rax, 0xb0(%rbx)
movl $0x6, 0x8(%rbx)
movl $0x7, 0x3c(%rbx)
movslq 0xb8(%rbx), %rax
leaq (,%rax,8), %rcx
testq %rax, %rax
pushq $-0x1
popq %rdi
cmovnsq %rcx, %rdi
callq 0x3030
movq %rax, 0x70(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %r14
movq %rbx, %rdi
callq 0x37f4
movq %r14, %rdi
callq 0x32d0
nop
// File: /workspace/github_cpp_makefile_star2_O2/mateuz[P]MTS-LS1/source/F7.cpp
// Function: F7::F7()
F7::F7():Benchmarks(){
	Ovector = NULL;
	minX = -100;
	maxX = 100;
	ID = 7;
        s_size = 7;
        anotherz = new double[dimension];
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
callq 0x375c
leaq 0x73c6(%rip), %rax      # 0xece0
movq %rax, (%rbx)
andq $0x0, 0x48(%rbx)
movabsq $0x64ffffff9c, %rax     # imm = 0x64FFFFFF9C
movq %rax, 0xb0(%rbx)
pushq $0x7
popq %rax
movl %eax, 0x8(%rbx)
movl %eax, 0x3c(%rbx)
movslq 0xb8(%rbx), %rax
leaq (,%rax,8), %rcx
testq %rax, %rax
pushq $-0x1
popq %rdi
cmovnsq %rcx, %rdi
callq 0x3030
movq %rax, 0x70(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %r14
movq %rbx, %rdi
callq 0x37f4
movq %r14, %rdi
callq 0x32d0
// File: /workspace/github_cpp_makefile_star2_O2/mateuz[P]MTS-LS1/source/F7.cpp
// Function: F7::~F7()
F7::~F7(){
	delete[] Ovector;
	delete[] Pvector;
        delete[] anotherz;        for (int i = 0; i < 25; ++i)
          {
            delete[] r25[i];
          }
        for (int i = 0; i < 50; ++i)
          {
            delete[] r50[i];
          }
        for (int i = 0; i < 100; ++i)
          {
            delete[] r100[i];
          }
        delete[] r25;
        delete[] r50;
        delete[] r100;
        delete[] s;
        delete[] w;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
leaq 0x7359(%rip), %rax      # 0xece0
movq %rax, (%rdi)
movq 0x48(%rdi), %rdi
testq %rdi, %rdi
je 0x7998
callq 0x3210
movq 0x58(%rbx), %rdi
testq %rdi, %rdi
je 0x79a6
callq 0x3210
movq 0x70(%rbx), %rdi
testq %rdi, %rdi
je 0x79b4
callq 0x3210
xorl %r14d, %r14d
cmpq $0x19, %r14
je 0x79d7
movq 0xd8(%rbx), %rax
movq (%rax,%r14,8), %rdi
testq %rdi, %rdi
je 0x79d2
callq 0x3210
incq %r14
jmp 0x79b7
xorl %r14d, %r14d
cmpq $0x32, %r14
je 0x79fa
movq 0xe0(%rbx), %rax
movq (%rax,%r14,8), %rdi
testq %rdi, %rdi
je 0x79f5
callq 0x3210
incq %r14
jmp 0x79da
xorl %r14d, %r14d
cmpq $0x64, %r14
je 0x7a1d
movq 0xe8(%rbx), %rax
movq (%rax,%r14,8), %rdi
testq %rdi, %rdi
je 0x7a18
callq 0x3210
incq %r14
jmp 0x79fd
movq 0xd8(%rbx), %rdi
testq %rdi, %rdi
je 0x7a2e
callq 0x3210
movq 0xe0(%rbx), %rdi
testq %rdi, %rdi
je 0x7a3f
callq 0x3210
movq 0xe8(%rbx), %rdi
testq %rdi, %rdi
je 0x7a50
callq 0x3210
movq 0xf0(%rbx), %rdi
testq %rdi, %rdi
je 0x7a61
callq 0x3210
movq 0xf8(%rbx), %rdi
testq %rdi, %rdi
je 0x7a72
callq 0x3210
movq %rbx, %rdi
popq %rbx
popq %r14
popq %rbp
jmp 0x37f4
// File: /workspace/github_cpp_makefile_star2_O2/mateuz[P]MTS-LS1/source/F8.cpp
// Function: F8::F8()
F8::F8():Benchmarks(){
  Ovector = NULL;
  minX = -100;
  maxX = 100;
  ID = 8;
  s_size = 20;
  anotherz = new double[dimension];
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
callq 0x375c
leaq 0x709e(%rip), %rax      # 0xed28
movq %rax, (%rbx)
andq $0x0, 0x48(%rbx)
movabsq $0x64ffffff9c, %rax     # imm = 0x64FFFFFF9C
movq %rax, 0xb0(%rbx)
movl $0x8, 0x8(%rbx)
movl $0x14, 0x3c(%rbx)
movslq 0xb8(%rbx), %rax
leaq (,%rax,8), %rcx
testq %rax, %rax
pushq $-0x1
popq %rdi
cmovnsq %rcx, %rdi
callq 0x3030
movq %rax, 0x70(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %r14
movq %rbx, %rdi
callq 0x37f4
movq %r14, %rdi
callq 0x32d0
nop
// File: /workspace/github_cpp_makefile_star2_O2/mateuz[P]MTS-LS1/source/F8.cpp
// Function: F8::compute(double*)
double F8::compute(double* x){
  int    i;
  double result=0.0;

  if(Ovector == NULL) {
    Ovector = readOvector();
    Pvector = readPermVector();
    r25 = readR(25);
    r50 = readR(50);
    r100 = readR(100);
    s = readS(s_size);
    w = readW(s_size);
  }

  for(i = 0; i < dimension; i++) {
    anotherz[i] = x[i] - Ovector[i];
  }
  
  // s_size non-separable part with rotation
  int c = 0;
  for (i = 0; i < s_size; i++)
    {
      // cout<<"c="<<c<<", i="<<i<<endl;
      anotherz1 = rotateVector(i, c);
      // cout<<"done rot"<<endl;
      result += w[i] * elliptic(anotherz1, s[i]);
      delete []anotherz1;
      // cout<<result<<endl;
    }
  
  return(result);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x28, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movq 0x48(%rdi), %rax
testq %rax, %rax
jne 0x7ea2
movq %rbx, %rdi
callq 0x3a5e
movq %rax, 0x48(%rbx)
movq %rbx, %rdi
callq 0x42a8
movq %rax, 0x58(%rbx)
pushq $0x19
popq %rsi
movq %rbx, %rdi
callq 0x46d2
movq %rax, 0xd8(%rbx)
pushq $0x32
popq %rsi
movq %rbx, %rdi
callq 0x46d2
movq %rax, 0xe0(%rbx)
pushq $0x64
popq %rsi
movq %rbx, %rdi
callq 0x46d2
movq %rax, 0xe8(%rbx)
movl 0x3c(%rbx), %esi
movq %rbx, %rdi
callq 0x4978
movq %rax, 0xf0(%rbx)
movl 0x3c(%rbx), %esi
movq %rbx, %rdi
callq 0x4afe
movq %rax, 0xf8(%rbx)
movq 0x48(%rbx), %rax
movl 0xb8(%rbx), %ecx
movq 0x70(%rbx), %rdx
xorl %esi, %esi
testl %ecx, %ecx
cmovlel %esi, %ecx
cmpq %rsi, %rcx
je 0x7ecd
movsd (%r14,%rsi,8), %xmm0
subsd (%rax,%rsi,8), %xmm0
movsd %xmm0, (%rdx,%rsi,8)
incq %rsi
jmp 0x7eb3
leaq -0x34(%rbp), %r14
andl $0x0, (%r14)
xorpd %xmm0, %xmm0
xorl %r15d, %r15d
movslq 0x3c(%rbx), %rax
cmpq %rax, %r15
jge 0x7f53
movsd %xmm0, -0x30(%rbp)
movq %rbx, %rdi
movl %r15d, %esi
movq %r14, %rdx
callq 0x4c82
movq %rax, 0x78(%rbx)
movq 0xf0(%rbx), %rcx
movq 0xf8(%rbx), %rdx
movsd (%rdx,%r15,8), %xmm0
movsd %xmm0, -0x28(%rbp)
movl (%rcx,%r15,4), %edx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x500a
movq 0x78(%rbx), %rdi
testq %rdi, %rdi
je 0x7f3c
movsd %xmm0, -0x20(%rbp)
callq 0x3210
movsd -0x20(%rbp), %xmm0
movsd -0x28(%rbp), %xmm1
mulsd %xmm0, %xmm1
movsd -0x30(%rbp), %xmm0
addsd %xmm1, %xmm0
incq %r15
jmp 0x7edc
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/mateuz[P]MTS-LS1/source/F9.cpp
// Function: F9::F9()
F9::F9():Benchmarks(){
  Ovector = NULL;
  minX = -100;
  maxX = 100;
  ID = 9;
  s_size = 20;
  anotherz = new double[dimension];
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
callq 0x375c
leaq 0x6dfa(%rip), %rax      # 0xed70
movq %rax, (%rbx)
andq $0x0, 0x48(%rbx)
movabsq $0x64ffffff9c, %rax     # imm = 0x64FFFFFF9C
movq %rax, 0xb0(%rbx)
movl $0x9, 0x8(%rbx)
movl $0x14, 0x3c(%rbx)
movslq 0xb8(%rbx), %rax
leaq (,%rax,8), %rcx
testq %rax, %rax
pushq $-0x1
popq %rdi
cmovnsq %rcx, %rdi
callq 0x3030
movq %rax, 0x70(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %r14
movq %rbx, %rdi
callq 0x37f4
movq %r14, %rdi
callq 0x32d0
nop
// File: /workspace/github_cpp_makefile_star2_O2/mateuz[P]MTS-LS1/source/F9.cpp
// Function: F9::compute(double*)
double F9::compute(double*x){
  // int k, i;
  int i;
  double result=0.0;

  if(Ovector==NULL){
    Ovector = readOvector();
    Pvector = readPermVector();
    r25 = readR(25);
    r50 = readR(50);
    r100 = readR(100);
    s = readS(s_size);
    w = readW(s_size);
  }

  for( i=0;i<dimension;i++){
    anotherz[i]=x[i]-Ovector[i];
  }
  
  // s_size non-separable part with rotation
  int c = 0;
  for (i = 0; i < s_size; i++)
    {
      // cout<<"c="<<c<<", i="<<i<<endl;
      anotherz1 = rotateVector(i, c);
      // cout<<"done rot"<<endl;
      result += w[i] * rastrigin(anotherz1, s[i]);
      delete []anotherz1;
      // cout<<result<<endl;
    }


  return(result);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x28, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movq 0x48(%rdi), %rax
testq %rax, %rax
jne 0x818e
movq %rbx, %rdi
callq 0x3a5e
movq %rax, 0x48(%rbx)
movq %rbx, %rdi
callq 0x42a8
movq %rax, 0x58(%rbx)
pushq $0x19
popq %rsi
movq %rbx, %rdi
callq 0x46d2
movq %rax, 0xd8(%rbx)
pushq $0x32
popq %rsi
movq %rbx, %rdi
callq 0x46d2
movq %rax, 0xe0(%rbx)
pushq $0x64
popq %rsi
movq %rbx, %rdi
callq 0x46d2
movq %rax, 0xe8(%rbx)
movl 0x3c(%rbx), %esi
movq %rbx, %rdi
callq 0x4978
movq %rax, 0xf0(%rbx)
movl 0x3c(%rbx), %esi
movq %rbx, %rdi
callq 0x4afe
movq %rax, 0xf8(%rbx)
movq 0x48(%rbx), %rax
movl 0xb8(%rbx), %ecx
movq 0x70(%rbx), %rdx
xorl %esi, %esi
testl %ecx, %ecx
cmovlel %esi, %ecx
cmpq %rsi, %rcx
je 0x81b9
movsd (%r14,%rsi,8), %xmm0
subsd (%rax,%rsi,8), %xmm0
movsd %xmm0, (%rdx,%rsi,8)
incq %rsi
jmp 0x819f
leaq -0x34(%rbp), %r14
andl $0x0, (%r14)
xorpd %xmm0, %xmm0
xorl %r15d, %r15d
movslq 0x3c(%rbx), %rax
cmpq %rax, %r15
jge 0x823f
movsd %xmm0, -0x30(%rbp)
movq %rbx, %rdi
movl %r15d, %esi
movq %r14, %rdx
callq 0x4c82
movq %rax, 0x78(%rbx)
movq 0xf0(%rbx), %rcx
movq 0xf8(%rbx), %rdx
movsd (%rdx,%r15,8), %xmm0
movsd %xmm0, -0x28(%rbp)
movl (%rcx,%r15,4), %edx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x5096
movq 0x78(%rbx), %rdi
testq %rdi, %rdi
je 0x8228
movsd %xmm0, -0x20(%rbp)
callq 0x3210
movsd -0x20(%rbp), %xmm0
movsd -0x28(%rbp), %xmm1
mulsd %xmm0, %xmm1
movsd -0x30(%rbp), %xmm0
addsd %xmm1, %xmm0
incq %r15
jmp 0x81c8
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/superyuan[P]refeditor/CLineFields1.cpp
// Function: CLineFields::divide(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::vector<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>>>>&)
int CLineFields::divide(string s, string divisor, vector<string> &field)
{
	field.clear();
	size_t found;
	int start = 0;
	found = s.find(divisor);
	while (found != string::npos){
		field.push_back(s.substr(start,found-start));
		start = found+divisor.length();
		found = s.find(divisor,start);
	}
	field.push_back(s.substr(start,s.length()-start));
	return field.size();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rcx, %rbx
movq %rdx, %r15
movq %rsi, %r14
movq %rcx, %rdi
callq 0x4abe
xorl %ebp, %ebp
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x2400
movq %rax, %r13
leaq 0x8(%rsp), %r12
movslq %ebp, %rdx
cmpq $-0x1, %r13
je 0x453f
movq %r13, %rcx
subq %rdx, %rcx
movq %r12, %rdi
movq %r14, %rsi
callq 0x2230
movq %rbx, %rdi
movq %r12, %rsi
callq 0x3a14
movq %r12, %rdi
callq 0x2418
movq %r13, %rbp
addq 0x8(%r15), %rbp
movslq %ebp, %rdx
movq %r14, %rdi
movq %r15, %rsi
callq 0x2400
movq %rax, %r13
jmp 0x44f8
movq 0x8(%r14), %rcx
subq %rdx, %rcx
leaq 0x8(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
callq 0x2230
movq %rbx, %rdi
movq %r15, %rsi
callq 0x3a14
leaq 0x8(%rsp), %rdi
callq 0x2418
movq 0x8(%rbx), %rax
subq (%rbx), %rax
shrq $0x5, %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x4587
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x2418
movq %rbx, %rdi
callq 0x2380
// File: /workspace/github_cpp_makefile_star2_O2/superyuan[P]refeditor/CLineFields1.cpp
// Function: CLineFields::readline(bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
bool CLineFields::readline (bool ignoreComment, string divisor)
{
	field.clear();
	do {
		getline(*fp, line);
		if (line.length()==0)
			return false;
	} while ((line[0]=='@' || line[0]=='#') &&(ignoreComment)) ;

	divide(line, divisor, field);

	return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x40, %rsp
movq %rdx, %r14
movl %esi, %ebp
movq %rdi, %rbx
callq 0x4abe
leaq 0x20(%rbx), %r15
movq 0x18(%rbx), %rdi
movq %r15, %rsi
callq 0x2060
movq 0x28(%rbx), %r12
testq %r12, %r12
je 0x46f6
movq (%r15), %rax
movb (%rax), %al
cmpb $0x40, %al
je 0x46b7
cmpb $0x23, %al
jne 0x46bc
testb %bpl, %bpl
jne 0x4695
leaq 0x20(%rsp), %rdi
movq %r15, %rsi
callq 0x22c0
movq %rsp, %rdi
movq %r14, %rsi
callq 0x22c0
leaq 0x20(%rsp), %rsi
movq %rsp, %rdx
movq %rbx, %rcx
callq 0x44c2
movq %rsp, %rdi
callq 0x2418
leaq 0x20(%rsp), %rdi
callq 0x2418
testq %r12, %r12
setne %al
addq $0x40, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq %rsp, %rdi
callq 0x2418
jmp 0x4719
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x2418
movq %rbx, %rdi
callq 0x2380
// File: /workspace/github_cpp_makefile_star2_O2/superyuan[P]refeditor/CLineFields1.cpp
// Function: substr2int(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, int&)
int substr2int(string &s, int &p)
{
	//''' convert substring of s started from p to an interger '''
	//''' return the value and the position of last digit + 1 '''
	int sum = 0;
	char c = s[p];

	while (c>='0' && c<='9') {
		sum = sum*10 + c-'0';
		p ++;
		c = s[p];
	}
	return sum;
}

// Assembly:
movslq (%rsi), %rdx
leal 0x1(%rdx), %ecx
addq (%rdi), %rdx
xorl %eax, %eax
movzbl (%rdx), %edi
leal -0x30(%rdi), %r8d
cmpb $0x9, %r8b
ja 0x4754
imull $0xa, %eax, %eax
addl %edi, %eax
addl $-0x30, %eax
movl %ecx, (%rsi)
incq %rdx
incl %ecx
jmp 0x4736
retq
// File: /workspace/github_cpp_makefile_star2_O2/superyuan[P]refeditor/CLineFields1.cpp
// Function: pileupShortStr2Info(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::map<char, int, std::less<char>, std::allocator<std::pair<char const, int>>>&)
void pileupShortStr2Info(string &s, map<char,int> &pileupInfo)
{
	int i = 0;
	initPileupInfo(pileupInfo);
	if (s=="NoInfo")
		return;
	while (i<(int)s.length()) {
		int num = substr2int(s, i);
		pileupInfo[s[i]] = num;
		i++;
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rsi, %rbx
movq %rdi, %r14
andl $0x0, 0xc(%rsp)
movq %rsi, %rdi
callq 0x4755
leaq 0xbf3(%rip), %rsi       # 0x53a0
movq %r14, %rdi
callq 0x423c
testb %al, %al
je 0x47c6
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
xorl %eax, %eax
leaq 0xc(%rsp), %r15
cmpl 0x8(%r14), %eax
jge 0x47b9
movq %r14, %rdi
movq %r15, %rsi
callq 0x472b
movl %eax, %ebp
movslq 0xc(%rsp), %r12
movq %r12, %rsi
addq (%r14), %rsi
movq %rbx, %rdi
callq 0x4ac6
movl %ebp, (%rax)
leal 0x1(%r12), %eax
movl %eax, 0xc(%rsp)
jmp 0x47cd
// File: /workspace/github_cpp_makefile_star2_O2/superyuan[P]refeditor/CLineFields1.cpp
// Function: pileupInfoMajor(std::map<char, int, std::less<char>, std::allocator<std::pair<char const, int>>>&, float)
char pileupInfoMajor(map<char,int> &pileupInfo, float threadhold)
{
	int total = 0;
	for (int i=0; i<(int)sizeof(keys); i++) {
		if (keys[i]=='N')
			continue; // we don't count 'N' into total
		total += pileupInfo[keys[i]];
	}
	if (total > 0) {
		for (int i=0; i<(int)sizeof(keys); i++) {
			if (keys[i]=='N')
				continue; // we don't count 'N' as majority
			if (((float)pileupInfo[keys[i]])/(float)total>=threadhold)  { //must be >= than threadhold(eg. 80%)
				return keys[i];
			}
		}
	}
	return (char)0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movss %xmm0, 0x4(%rsp)
movq %rdi, %rbx
xorl %r15d, %r15d
leaq 0x3a0e(%rip), %r14      # 0x8228
xorl %ebp, %ebp
cmpq $0x5, %r15
je 0x483c
cmpb $0x4e, (%r15,%r14)
je 0x4837
leaq (%r14,%r15), %rsi
movq %rbx, %rdi
callq 0x4ac6
addl (%rax), %ebp
incq %r15
jmp 0x481c
testl %ebp, %ebp
jle 0x487a
cvtsi2ss %ebp, %xmm0
movss %xmm0, (%rsp)
xorl %r15d, %r15d
cmpq $0x5, %r15
je 0x487a
cmpb $0x4e, (%r15,%r14)
je 0x4875
leaq (%r14,%r15), %rsi
movq %rbx, %rdi
callq 0x4ac6
cvtsi2ssl (%rax), %xmm0
divss (%rsp), %xmm0
ucomiss 0x4(%rsp), %xmm0
jae 0x487e
incq %r15
jmp 0x484c
xorl %eax, %eax
jmp 0x4882
movb (%r15,%r14), %al
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/superyuan[P]refeditor/CLineFields1.cpp
// Function: pileupLongStr2Info(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, char, std::map<char, int, std::less<char>, std::allocator<std::pair<char const, int>>>&)
void pileupLongStr2Info(string &s, char base, map<char,int>& pileupInfo)
{
	int value;
	int i = 0;
	initPileupInfo(pileupInfo);
	while (i<(int)s.length()) {
		char L = toupper(s[i]);
		if (L=='A' || L=='C' || L=='G' || L=='T' || L=='N')
			pileupInfo[L] += 1;
		else if (L=='.' || L==',')
			pileupInfo[base] += 1;
		else if (L=='+' || L=='-') {
			i ++;
			value = substr2int(s, i);
			i += value-1;
		}
		else if (L=='^')
			i += 1;
		else if (L=='<' || s[i]=='>'|| L=='*')
			pileupInfo['N'] += 1;
		else if (L=='$')
			;
		else {
			cout << "unexpected letter " << s[i];
			exit(-1);
		}
		i += 1;
	}

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %r14
movq %rdi, %rbx
leaq 0x3(%rsp), %rax
movb %sil, (%rax)
movq %rdx, %rdi
callq 0x4755
xorl %ebp, %ebp
leaq 0x2(%rsp), %r12
cmpl 0x8(%rbx), %ebp
jge 0x4992
movslq %ebp, %r13
movq (%rbx), %r15
movsbl (%r15,%r13), %edi
callq 0x23c0
movb %al, 0x2(%rsp)
movl %eax, %edx
andl $0xfd, %edx
cmpl $0x41, %edx
jne 0x48f4
movq %r14, %rdi
movq %r12, %rsi
callq 0x4ac6
incl (%rax)
incl %ebp
movl %ebp, 0x4(%rsp)
jmp 0x48b5
movl %eax, %ecx
shll $0x18, %ecx
cmpl $0x47000000, %ecx       # imm = 0x47000000
je 0x48df
cmpl $0x54000000, %ecx       # imm = 0x54000000
je 0x48df
cmpl $0x4e000000, %ecx       # imm = 0x4E000000
je 0x48df
cmpl $0x2c, %edx
jne 0x4920
movq %r14, %rdi
leaq 0x3(%rsp), %rsi
jmp 0x48e5
cmpl $0x2b000000, %ecx       # imm = 0x2B000000
je 0x4940
cmpl $0x5e000000, %ecx       # imm = 0x5E000000
je 0x495e
cmpl $0x3c000000, %ecx       # imm = 0x3C000000
je 0x497b
cmpl $0x2d000000, %ecx       # imm = 0x2D000000
jne 0x4966
incl %ebp
movl %ebp, 0x4(%rsp)
movq %rbx, %rdi
leaq 0x4(%rsp), %rsi
callq 0x472b
movl 0x4(%rsp), %ecx
leal (%rax,%rcx), %ebp
decl %ebp
jmp 0x4960
incl %ebp
movl %ebp, 0x4(%rsp)
jmp 0x48ec
cmpb $0x2a, %al
je 0x497b
cmpb $0x3e, (%r15,%r13)
je 0x497b
cmpb $0x24, %al
je 0x48ec
jmp 0x49a1
movb $0x4e, 0x1(%rsp)
movq %r14, %rdi
leaq 0x1(%rsp), %rsi
callq 0x4b14
jmp 0x48ea
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x3620(%rip), %rdi      # 0x7fc8
leaq 0x9f8(%rip), %rsi       # 0x53a7
callq 0x2200
movq (%rbx), %rcx
movsbl (%rcx,%r13), %esi
movq %rax, %rdi
callq 0x2260
pushq $-0x1
popq %rdi
callq 0x2270
// File: /workspace/github_cpp_makefile_star2_O2/superyuan[P]refeditor/CLineFields1.cpp
// Function: pileupLongStr2ShortStr(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, char)
string pileupLongStr2ShortStr(string &s, char base)
{
	stringstream ss;
	map<char,int> pileupInfo;
	pileupLongStr2Info(s, base, pileupInfo);
	for (int i=0; i<(int)sizeof(keys); i++) {
		if (pileupInfo[keys[i]]>0)
			ss << pileupInfo[keys[i]] << keys[i];
	}
	return ss.str();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1b8, %rsp            # imm = 0x1B8
movl %edx, %ebp
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2170
leaq 0x8(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
movq %rsp, %rdx
movq %r14, %rdi
movl %ebp, %esi
callq 0x488d
leaq 0x40(%rsp), %r14
xorl %r13d, %r13d
leaq 0x3803(%rip), %rbp      # 0x8228
movq %rsp, %r15
cmpq $0x5, %r13
je 0x4a6b
movq %rbp, %r12
addq %r13, %r12
movq %r15, %rdi
movq %r12, %rsi
callq 0x4ac6
cmpl $0x0, (%rax)
jle 0x4a66
movq %r15, %rdi
movq %r12, %rsi
callq 0x4ac6
movl (%rax), %esi
movq %r14, %rdi
callq 0x2370
movsbl (%r12), %esi
movq %rax, %rdi
callq 0x2260
incq %r13
jmp 0x4a28
leaq 0x48(%rsp), %rsi
movq %rbx, %rdi
callq 0x2320
movq %rsp, %rdi
callq 0x4b62
leaq 0x30(%rsp), %rdi
callq 0x2190
movq %rbx, %rax
addq $0x1b8, %rsp            # imm = 0x1B8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x4aa1
movq %rax, %rbx
movq %rsp, %rdi
callq 0x4b62
leaq 0x30(%rsp), %rdi
callq 0x2190
movq %rbx, %rdi
callq 0x2380
// File: /workspace/github_cpp_makefile_star2_O2/SYZYGYfpga[P]syzygy-tools/include/catch.hpp
// Function: Catch::getCurrentMutableContext()
inline IMutableContext& getCurrentMutableContext()
    {
        if( !IMutableContext::currentContext )
            IMutableContext::createContext();
        // NOLINTNEXTLINE(clang-analyzer-core.uninitialized.UndefReturn)
        return *IMutableContext::currentContext;
    }

// Assembly:
movq 0x4fc5a(%rip), %rax     # 0x7ac30
testq %rax, %rax
je 0x2afdc
retq
pushq %rax
callq 0x1592e
movq 0x4fc47(%rip), %rax     # 0x7ac30
addq $0x8, %rsp
retq
// File: /workspace/github_cpp_makefile_star2_O2/swxlion[P]swxJson/tests/swxJsonAdvancedTest_fetch_v2.cpp
// Function: main
int main()
{
	test_tuple();
	test_array();
	test_queue();
	test_deque();
	test_list();
	test_vector();
	test_set();
	test_unordered_set();
	test_dict();
	test_unordered_dict();

	return 0;
}

// Assembly:
pushq %rax
callq 0x1baf3
callq 0x1be82
callq 0x1c443
callq 0x1c61d
callq 0x1c7f7
callq 0x1c9d1
callq 0x1cbab
callq 0x1cd85
callq 0x1cf5f
callq 0x1d139
xorl %eax, %eax
popq %rcx
retq
// File: /workspace/github_cpp_makefile_star2_O2/swxlion[P]swxJson/tests/swxJsonAdvancedTest_fetch_v2.cpp
// Function: void test_array<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, 3ul>(std::shared_ptr<swxJson::Json>, char const*, char const*, bool)
void test_array(JsonPtr json, const char* key, const char* desc, bool compatibleMode)
{
	cout<<endl<<desc<<endl;

	std::array<K, N> elemArray = json->wantArray<K, N>(key, compatibleMode);
	for (auto& element: elemArray)
		cout<<"Element: "<<element<<endl;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movl %ecx, %ebx
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %r12
movq 0x1f93e(%rip), %rdi     # 0x3cfd8
callq 0x1b100
movq %rax, %rdi
movq %r14, %rsi
callq 0x1b280
movq %rax, %rdi
callq 0x1b100
movq (%r12), %r14
leaq 0x28(%rsp), %rdi
leaq 0x7(%rsp), %rdx
movq %r15, %rsi
callq 0x1d34a
leaq 0x11a71(%rip), %rsi     # 0x2f140
leaq 0x8(%rsp), %rdi
leaq 0x6(%rsp), %rdx
callq 0x1d34a
movzbl %bl, %ecx
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rdx
leaq 0x8(%rsp), %r8
movq %r14, %rsi
callq 0x201b0
leaq 0x8(%rsp), %rdi
callq 0x1b458
leaq 0x28(%rsp), %rdi
callq 0x1b458
xorl %r15d, %r15d
movq 0x1f8c2(%rip), %rbx     # 0x3cfd8
leaq 0x11f0e(%rip), %r14     # 0x2f62b
cmpq $0x60, %r15
je 0x1d74c
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1b280
leaq (%rsp,%r15), %rsi
addq $0x48, %rsi
movq %rax, %rdi
callq 0x1b240
movq %rax, %rdi
callq 0x1b100
addq $0x20, %r15
jmp 0x1d71d
leaq 0x48(%rsp), %rdi
callq 0x2028a
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x1b458
jmp 0x1d777
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x1b458
jmp 0x1d795
movq %rax, %rbx
jmp 0x1d795
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x2028a
movq %rbx, %rdi
callq 0x1b410
// File: /workspace/github_cpp_makefile_star2_O2/swxlion[P]swxJson/tests/swxJsonAdvancedTest_fetch_v2.cpp
// Function: void test_queue<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>(std::shared_ptr<swxJson::Json>, char const*, char const*)
void test_queue(JsonPtr json, const char* key, const char* desc)
{
	cout<<endl<<desc<<endl;

	std::queue<K> elemQueue = json->wantQueue<K>(key);
	while (elemQueue.size())
	{
		cout<<"Element: "<<elemQueue.front()<<endl;
		elemQueue.pop();
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0xa0, %rsp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
movq 0x1f2de(%rip), %rdi     # 0x3cfd8
callq 0x1b100
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1b280
movq %rax, %rdi
callq 0x1b100
movq (%r15), %rbx
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
movq %r14, %rsi
callq 0x1d34a
leaq 0x11412(%rip), %rsi     # 0x2f140
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x1d34a
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rdx
leaq 0x10(%rsp), %rcx
movq %rbx, %rsi
callq 0x20fdc
leaq 0x10(%rsp), %rdi
callq 0x1b458
leaq 0x30(%rsp), %rdi
callq 0x1b458
leaq 0x50(%rsp), %rbx
movq 0x1f264(%rip), %r14     # 0x3cfd8
leaq 0x118b0(%rip), %r15     # 0x2f62b
movq %rbx, %rdi
callq 0x2149e
testq %rax, %rax
je 0x1ddb2
movq %r14, %rdi
movq %r15, %rsi
callq 0x1b280
movq 0x60(%rsp), %rsi
movq %rax, %rdi
callq 0x1b240
movq %rax, %rdi
callq 0x1b100
movq %rbx, %rdi
callq 0x21636
jmp 0x1dd7b
leaq 0x50(%rsp), %rdi
callq 0x216a0
addq $0xa0, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x1b458
jmp 0x1dddb
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x1b458
jmp 0x1ddf9
movq %rax, %rbx
jmp 0x1ddf9
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x216a0
movq %rbx, %rdi
callq 0x1b410
// File: /workspace/github_cpp_makefile_star2_O2/swxlion[P]swxJson/tests/swxJsonAdvancedTest_fetch_v2.cpp
// Function: void test_deque<int>(std::shared_ptr<swxJson::Json>, char const*, char const*)
void test_deque(JsonPtr json, const char* key, const char* desc)
{
	cout<<endl<<desc<<endl;

	std::deque<K> elemQueue = json->wantDeque<K>(key);
	while (elemQueue.size())
	{
		cout<<"Element: "<<elemQueue.front()<<endl;
		elemQueue.pop_front();
	}
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0xa0, %rsp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
movq 0x1ef73(%rip), %rdi     # 0x3cfd8
callq 0x1b100
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1b280
movq %rax, %rdi
callq 0x1b100
movq (%r15), %rbx
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
movq %r14, %rsi
callq 0x1d34a
leaq 0x110a7(%rip), %rsi     # 0x2f140
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x1d34a
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rdx
leaq 0x10(%rsp), %rcx
movq %rbx, %rsi
callq 0x22056
leaq 0x10(%rsp), %rdi
callq 0x1b458
leaq 0x30(%rsp), %rdi
callq 0x1b458
leaq 0x50(%rsp), %rbx
movq 0x1eef9(%rip), %r14     # 0x3cfd8
leaq 0x11545(%rip), %r15     # 0x2f62b
movq %rbx, %rdi
callq 0x21c6a
testq %rax, %rax
je 0x1e11f
movq %r14, %rdi
movq %r15, %rsi
callq 0x1b280
movq 0x60(%rsp), %rcx
movl (%rcx), %esi
movq %rax, %rdi
callq 0x1b400
movq %rax, %rdi
callq 0x1b100
movq %rbx, %rdi
callq 0x21e02
jmp 0x1e0e6
leaq 0x50(%rsp), %rdi
callq 0x21e58
addq $0xa0, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x1b458
jmp 0x1e148
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x1b458
jmp 0x1e166
movq %rax, %rbx
jmp 0x1e166
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x21e58
movq %rbx, %rdi
callq 0x1b410
// File: /workspace/github_cpp_makefile_star2_O2/swxlion[P]swxJson/tests/swxJsonAdvancedTest_fetch_v2.cpp
// Function: void test_list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>(std::shared_ptr<swxJson::Json>, char const*, char const*)
void test_list(JsonPtr json, const char* key, const char* desc)
{
	cout<<endl<<desc<<endl;

	std::list<K> elemList = json->wantList<K>(key);
	for (auto& element: elemList)
		cout<<"Element: "<<element<<endl;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r14
movq 0x1ee4f(%rip), %rdi     # 0x3cfd8
callq 0x1b100
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1b280
movq %rax, %rdi
callq 0x1b100
movq (%r14), %r14
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
movq %r15, %rsi
callq 0x1d34a
leaq 0x10f83(%rip), %rsi     # 0x2f140
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x1d34a
leaq 0x50(%rsp), %rbx
leaq 0x30(%rsp), %rdx
leaq 0x10(%rsp), %rcx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x22210
leaq 0x10(%rsp), %rdi
callq 0x1b458
leaq 0x30(%rsp), %rdi
callq 0x1b458
movq 0x1edd7(%rip), %r14     # 0x3cfd8
leaq 0x11423(%rip), %r15     # 0x2f62b
movq %rbx, %r12
movq (%r12), %r12
cmpq %rbx, %r12
je 0x1e236
movq %r14, %rdi
movq %r15, %rsi
callq 0x1b280
leaq 0x10(%r12), %rsi
movq %rax, %rdi
callq 0x1b240
movq %rax, %rdi
callq 0x1b100
jmp 0x1e20b
leaq 0x50(%rsp), %rdi
callq 0x224be
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x1b458
jmp 0x1e25e
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x1b458
jmp 0x1e27c
movq %rax, %rbx
jmp 0x1e27c
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x224be
movq %rbx, %rdi
callq 0x1b410
// File: /workspace/github_cpp_makefile_star2_O2/swxlion[P]swxJson/tests/swxJsonAdvancedTest_fetch_v2.cpp
// Function: void test_vector<int>(std::shared_ptr<swxJson::Json>, char const*, char const*)
void test_vector(JsonPtr json, const char* key, const char* desc)
{
	cout<<endl<<desc<<endl;

	std::vector<K> elemVector = json->wantVector<K>(key);
	for (auto& element: elemVector)
		cout<<"Element: "<<element<<endl;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
movq 0x1eb0b(%rip), %rdi     # 0x3cfd8
callq 0x1b100
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1b280
movq %rax, %rdi
callq 0x1b100
movq (%r15), %rbx
leaq 0x48(%rsp), %rdi
leaq 0xf(%rsp), %rdx
movq %r14, %rsi
callq 0x1d34a
leaq 0x10c3f(%rip), %rsi     # 0x2f140
leaq 0x28(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x1d34a
leaq 0x10(%rsp), %rdi
leaq 0x48(%rsp), %rdx
leaq 0x28(%rsp), %rcx
movq %rbx, %rsi
callq 0x22c10
leaq 0x28(%rsp), %rdi
callq 0x1b458
leaq 0x48(%rsp), %rdi
callq 0x1b458
movq 0x10(%rsp), %r15
movq 0x18(%rsp), %r12
movq 0x1ea8c(%rip), %rbx     # 0x3cfd8
leaq 0x110d8(%rip), %r14     # 0x2f62b
cmpq %r12, %r15
je 0x1e57c
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1b280
movl (%r15), %esi
movq %rax, %rdi
callq 0x1b400
movq %rax, %rdi
callq 0x1b100
addq $0x4, %r15
jmp 0x1e553
leaq 0x10(%rsp), %rdi
callq 0x22fcc
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x1b458
jmp 0x1e5a4
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x1b458
jmp 0x1e5c2
movq %rax, %rbx
jmp 0x1e5c2
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x22fcc
movq %rbx, %rdi
callq 0x1b410
// File: /workspace/github_cpp_makefile_star2_O2/swxlion[P]swxJson/tests/swxJsonAdvancedTest_fetch_v2.cpp
// Function: void test_set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>(std::shared_ptr<swxJson::Json>, char const*, char const*)
void test_set(JsonPtr json, const char* key, const char* desc)
{
	cout<<endl<<desc<<endl;

	std::set<K> elemSet = json->wantSet<K>(key);
	for (auto& element: elemSet)
		cout<<"Element: "<<element<<endl;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
movq 0x1e9f3(%rip), %rdi     # 0x3cfd8
callq 0x1b100
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1b280
movq %rax, %rdi
callq 0x1b100
movq (%r15), %rbx
leaq 0x28(%rsp), %rdi
leaq 0x7(%rsp), %rdx
movq %r14, %rsi
callq 0x1d34a
leaq 0x10b27(%rip), %rsi     # 0x2f140
leaq 0x8(%rsp), %rdi
leaq 0x6(%rsp), %rdx
callq 0x1d34a
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rdx
leaq 0x8(%rsp), %rcx
movq %rbx, %rsi
callq 0x22fea
leaq 0x8(%rsp), %rdi
callq 0x1b458
leaq 0x28(%rsp), %rdi
callq 0x1b458
leaq 0x50(%rsp), %r12
movq 0x10(%r12), %r15
movq 0x1e974(%rip), %rbx     # 0x3cfd8
leaq 0x10fc0(%rip), %r14     # 0x2f62b
cmpq %r12, %r15
je 0x1e69c
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1b280
leaq 0x20(%r15), %rsi
movq %rax, %rdi
callq 0x1b240
movq %rax, %rdi
callq 0x1b100
movq %r15, %rdi
callq 0x1b2e0
movq %rax, %r15
jmp 0x1e66b
leaq 0x48(%rsp), %rdi
callq 0x23386
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x1b458
jmp 0x1e6c4
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x1b458
jmp 0x1e6e2
movq %rax, %rbx
jmp 0x1e6e2
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x23386
movq %rbx, %rdi
callq 0x1b410
// File: /workspace/github_cpp_makefile_star2_O2/swxlion[P]swxJson/tests/swxJsonAdvancedTest_fetch_v2.cpp
// Function: void test_unordered_set<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>(std::shared_ptr<swxJson::Json>, char const*, char const*)
void test_unordered_set(JsonPtr json, const char* key, const char* desc)
{
	cout<<endl<<desc<<endl;

	std::unordered_set<K> elemSet = json->wantUnorderedSet<K>(key);
	for (auto& element: elemSet)
		cout<<"Element: "<<element<<endl;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x80, %rsp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
movq 0x1e7b2(%rip), %rdi     # 0x3cfd8
callq 0x1b100
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1b280
movq %rax, %rdi
callq 0x1b100
movq (%r15), %rbx
leaq 0x28(%rsp), %rdi
leaq 0x7(%rsp), %rdx
movq %r14, %rsi
callq 0x1d34a
leaq 0x108e6(%rip), %rsi     # 0x2f140
leaq 0x8(%rsp), %rdi
leaq 0x6(%rsp), %rdx
callq 0x1d34a
leaq 0x48(%rsp), %rdi
leaq 0x28(%rsp), %rdx
leaq 0x8(%rsp), %rcx
movq %rbx, %rsi
callq 0x23762
leaq 0x8(%rsp), %rdi
callq 0x1b458
leaq 0x28(%rsp), %rdi
callq 0x1b458
leaq 0x58(%rsp), %r15
movq 0x1e738(%rip), %rbx     # 0x3cfd8
leaq 0x10d84(%rip), %r14     # 0x2f62b
movq (%r15), %r15
testq %r15, %r15
je 0x1e8d0
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1b280
leaq 0x8(%r15), %rsi
movq %rax, %rdi
callq 0x1b240
movq %rax, %rdi
callq 0x1b100
jmp 0x1e8a7
leaq 0x48(%rsp), %rdi
callq 0x23dc2
addq $0x80, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x1b458
jmp 0x1e8f9
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x1b458
jmp 0x1e917
movq %rax, %rbx
jmp 0x1e917
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x23dc2
movq %rbx, %rdi
callq 0x1b410
// File: /workspace/github_cpp_makefile_star2_O2/swxlion[P]swxJson/tests/swxJsonAdvancedTest_fetch_v2.cpp
// Function: void test_dict<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>(std::shared_ptr<swxJson::Json>, char const*, char const*)
void test_dict(JsonPtr json, const char* key, const char* desc)
{
	cout<<endl<<desc<<endl;

	std::map<std::string, K> elemMap = json->wantDict<K>(key);
	for (auto& pp: elemMap)
		cout<<"Element: "<<pp.first<<":"<<pp.second<<endl;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x80, %rsp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
movq 0x1e584(%rip), %rdi     # 0x3cfd8
callq 0x1b100
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1b280
movq %rax, %rdi
callq 0x1b100
movq (%r15), %rbx
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
movq %r14, %rsi
callq 0x1d34a
leaq 0x106b8(%rip), %rsi     # 0x2f140
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x1d34a
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rdx
leaq 0x10(%rsp), %rcx
movq %rbx, %rsi
callq 0x24402
leaq 0x10(%rsp), %rdi
callq 0x1b458
leaq 0x30(%rsp), %rdi
callq 0x1b458
leaq 0x58(%rsp), %r13
movq 0x10(%r13), %r12
movq 0x1e506(%rip), %rbx     # 0x3cfd8
leaq 0x10b52(%rip), %r14     # 0x2f62b
leaq 0x10cda(%rip), %r15     # 0x2f7ba
cmpq %r13, %r12
je 0x1eb2a
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1b280
leaq 0x20(%r12), %rsi
movq %rax, %rdi
callq 0x1b240
movq %rax, %rdi
movq %r15, %rsi
callq 0x1b280
leaq 0x40(%r12), %rsi
movq %rax, %rdi
callq 0x1b240
movq %rax, %rdi
callq 0x1b100
movq %r12, %rdi
callq 0x1b180
movq %rax, %r12
jmp 0x1eae0
leaq 0x50(%rsp), %rdi
callq 0x24a46
addq $0x80, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x1b458
jmp 0x1eb57
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x1b458
jmp 0x1eb75
movq %rax, %rbx
jmp 0x1eb75
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x24a46
movq %rbx, %rdi
callq 0x1b410
// File: /workspace/github_cpp_makefile_star2_O2/swxlion[P]swxJson/tests/swxJsonAdvancedTest_fetch_v2.cpp
// Function: void test_unordered_dict<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>(std::shared_ptr<swxJson::Json>, char const*, char const*)
void test_unordered_dict(JsonPtr json, const char* key, const char* desc)
{
	cout<<endl<<desc<<endl;

	std::unordered_map<std::string, K> elemMap = json->wantUnorderedDict<K>(key);
	for (auto& pp: elemMap)
		cout<<"Element: "<<pp.first<<":"<<pp.second<<endl;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
movq 0x1e2f4(%rip), %rdi     # 0x3cfd8
callq 0x1b100
movq %rax, %rdi
movq %rbx, %rsi
callq 0x1b280
movq %rax, %rdi
callq 0x1b100
movq (%r15), %rbx
leaq 0x30(%rsp), %rdi
leaq 0xf(%rsp), %rdx
movq %r14, %rsi
callq 0x1d34a
leaq 0x10428(%rip), %rsi     # 0x2f140
leaq 0x10(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x1d34a
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rdx
leaq 0x10(%rsp), %rcx
movq %rbx, %rsi
callq 0x250d6
leaq 0x10(%rsp), %rdi
callq 0x1b458
leaq 0x30(%rsp), %rdi
callq 0x1b458
leaq 0x60(%rsp), %r12
movq 0x1e27a(%rip), %rbx     # 0x3cfd8
leaq 0x108c6(%rip), %r14     # 0x2f62b
leaq 0x10a4e(%rip), %r15     # 0x2f7ba
movq (%r12), %r12
testq %r12, %r12
je 0x1edaf
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1b280
leaq 0x8(%r12), %rsi
movq %rax, %rdi
callq 0x1b240
movq %rax, %rdi
movq %r15, %rsi
callq 0x1b280
leaq 0x28(%r12), %rsi
movq %rax, %rdi
callq 0x1b240
movq %rax, %rdi
callq 0x1b100
jmp 0x1ed6c
leaq 0x50(%rsp), %rdi
callq 0x256fe
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x1b458
jmp 0x1edda
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x1b458
jmp 0x1edf8
movq %rax, %rbx
jmp 0x1edf8
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x256fe
movq %rbx, %rdi
callq 0x1b410
// File: /workspace/github_cpp_makefile_star2_O2/swxlion[P]swxJson/tests/../src/swxJson.Enhancement.inc.h
// Function: swxJson::Json::WantTupleValues<5ul, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, double, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>::wantValue(std::_List_iterator<std::shared_ptr<swxJson::Json>>, unsigned long, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, double, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>&)
static void wantValue(std::list<JsonPtr>::iterator it, size_t targetOffset, std::tuple<Args...>& tup)
		{
			if (N > targetOffset)
			{
				WantTupleValues<N-1, Args...>::wantValue(it, targetOffset, tup);
			}
			else
			{
				auto realIt = it;
				for (size_t i = 0; i < targetOffset - 1; i++)
					realIt++;

				JsonPtr node = *(realIt);

				typename std::tuple_element<N-1, std::tuple<Args...>>::type v;
				std::get<N-1>(tup) = (decltype(v))(*node);

				WantTupleValues<N-1, Args...>::wantValue(it, targetOffset - 1, tup);
			}
		}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
cmpq $0x5, %rsi
jae 0x1f47f
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x1f52c
decq %r14
movq %r14, %rax
movq %r15, %rsi
subq $0x1, %rax
jb 0x1f493
movq (%rsi), %rsi
jmp 0x1f488
addq $0x10, %rsi
leaq 0x8(%rsp), %r12
movq %r12, %rdi
callq 0x1efb8
leaq 0x28(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq (%r12), %rsi
leaq 0x38(%rsp), %rdi
callq 0x28382
leaq 0x28(%rbx), %rdi
leaq 0x38(%rsp), %r12
movq %r12, %rsi
callq 0x1b300
movq %r12, %rdi
callq 0x1b458
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
callq 0x1f52c
leaq 0x18(%rsp), %rdi
callq 0x1b458
leaq 0x10(%rsp), %rdi
callq 0x1efec
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
jmp 0x1f50c
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x1b458
leaq 0x10(%rsp), %rdi
callq 0x1efec
movq %rbx, %rdi
callq 0x1b410
nop
// File: /workspace/github_cpp_makefile_star2_O2/swxlion[P]swxJson/tests/../src/swxJson.Enhancement.inc.h
// Function: swxJson::Json::WantTupleValues<1ul, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, double, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>::wantValue(std::_List_iterator<std::shared_ptr<swxJson::Json>>, unsigned long, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, double, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>&)
static void wantValue(std::list<JsonPtr>::iterator it, size_t targetOffset, std::tuple<Args...>& tup)
		{
			if (1 == targetOffset)
			{
				JsonPtr node = *it;

				typename std::tuple_element<0, std::tuple<Args...>>::type v;
				std::get<0>(tup) = (decltype(v))(*node);
			}
		}

// Assembly:
pushq %r14
pushq %rbx
subq $0x58, %rsp
cmpq $0x1, %rsi
jne 0x1f77d
movq %rdx, %rbx
movq %rdi, %rax
addq $0x10, %rax
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq 0x1efb8
leaq 0x28(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq (%r14), %rsi
leaq 0x38(%rsp), %rdi
callq 0x28382
addq $0x60, %rbx
leaq 0x38(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1b300
movq %r14, %rdi
callq 0x1b458
leaq 0x18(%rsp), %rdi
callq 0x1b458
leaq 0x10(%rsp), %rdi
callq 0x1efec
addq $0x58, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x1b458
leaq 0x10(%rsp), %rdi
callq 0x1efec
movq %rbx, %rdi
callq 0x1b410
// File: /workspace/github_cpp_makefile_star2_O2/swxlion[P]swxJson/tests/../src/swxJson.Enhancement.inc.h
// Function: std::array<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, 3ul> swxJson::Json::wantArray<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, 3ul>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
std::array<T, N> wantArray(const std::string& path, bool compatibleMode = false, const std::string& delim = "./")
	{
		JsonPtr node = getNode(path, delim);
		if (node)
			return node->wantArray<T, N>(compatibleMode);
		
		throw JSON_ERROR_MSG(JosnNodeNotExistError, "Target node doesn't exist.");
	}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x40, %rsp
movl %ecx, %ebp
movq %rdi, %rbx
leaq 0x10(%rsp), %r14
movq %r14, %rdi
movq %r8, %rcx
callq 0x2623a
movq (%r14), %rsi
testq %rsi, %rsi
je 0x201f7
movzbl %bpl, %edx
movq %rbx, %rdi
callq 0x202b0
leaq 0x18(%rsp), %rdi
callq 0x1efec
movq %rbx, %rax
addq $0x40, %rsp
popq %rbx
popq %r14
popq %rbp
retq
pushq $0x60
popq %rdi
callq 0x1b110
movq %rax, %rbx
leaq 0xf3f1(%rip), %rsi      # 0x2f5fa
leaq 0x20(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x1d34a
movb $0x1, %bpl
leaq 0xf3ad(%rip), %rsi      # 0x2f5cf
leaq 0xf40c(%rip), %rdx      # 0x2f635
leaq 0x20(%rsp), %r8
movq %rbx, %rdi
movl $0x3d6, %ecx            # imm = 0x3D6
callq 0x1f23c
xorl %ebp, %ebp
leaq 0x1c9dc(%rip), %rsi     # 0x3cc20
leaq -0xff5(%rip), %rdx      # 0x1f256
movq %rbx, %rdi
callq 0x1b3f0
movq %rax, %r14
leaq 0x20(%rsp), %rdi
callq 0x1b458
testb %bpl, %bpl
jne 0x2026a
jmp 0x20277
movq %rax, %r14
movq %rbx, %rdi
callq 0x1b1c0
jmp 0x20277
movq %rax, %r14
leaq 0x18(%rsp), %rdi
callq 0x1efec
movq %r14, %rdi
callq 0x1b410
nop
// File: /workspace/github_cpp_makefile_star2_O2/swxlion[P]swxJson/tests/../src/swxJson.Enhancement.inc.h
// Function: std::array<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, 3ul> swxJson::Json::wantArray<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, 3ul>(bool)
std::array<T, N> wantArray(bool compatibleMode = false)
	{
		if (_type != JSON_Array)
			throw JSON_ERROR_MSG(JsonNodeTypeMissMatchError, "Node type miss match.");

		std::list<JsonPtr>* data = (std::list<JsonPtr>*)_data;

		if (!compatibleMode && data->size() != N)
			throw JSON_ERROR_MSG(JsonNodeTypeMissMatchError, "Node type miss match.");

		std::array<T, N> res;

		size_t idx = 0;
		for (auto& node: *data)
		{
			if (idx == N)
				return res;

			res[idx] = (T)(*node);
			idx += 1;
		}

		return res;
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
cmpl $0x1, (%rsi)
jne 0x20333
movq %rdi, %rbx
movq 0x8(%rsi), %r15
testb %dl, %dl
jne 0x202d9
cmpq $0x3, 0x10(%r15)
jne 0x20391
movq %rbx, %rdi
callq 0x20426
xorl %r12d, %r12d
leaq 0x8(%rsp), %r14
movq %r15, %r13
movq (%r13), %r13
cmpq %r15, %r13
je 0x20321
cmpq $0x60, %r12
je 0x20321
movq 0x10(%r13), %rsi
movq %r14, %rdi
callq 0x28382
leaq (%rbx,%r12), %rdi
movq %r14, %rsi
callq 0x1b300
movq %r14, %rdi
callq 0x1b458
addq $0x20, %r12
jmp 0x202ec
movq %rbx, %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x60
popq %rdi
callq 0x1b110
movq %rax, %rbx
leaq 0xf2d0(%rip), %rsi      # 0x2f615
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x1d34a
movb $0x1, %bpl
leaq 0xf271(%rip), %rsi      # 0x2f5cf
leaq 0xf2d0(%rip), %rdx      # 0x2f635
leaq 0x8(%rsp), %r8
movq %rbx, %rdi
movl $0x335, %ecx            # imm = 0x335
callq 0x1f284
xorl %ebp, %ebp
leaq 0x1c888(%rip), %rsi     # 0x3cc08
leaq -0x1131(%rip), %rdx     # 0x1f256
movq %rbx, %rdi
callq 0x1b3f0
jmp 0x203ed
pushq $0x60
popq %rdi
callq 0x1b110
movq %rax, %rbx
leaq 0xf272(%rip), %rsi      # 0x2f615
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x1d34a
movb $0x1, %bpl
leaq 0xf213(%rip), %rsi      # 0x2f5cf
leaq 0xf272(%rip), %rdx      # 0x2f635
leaq 0x8(%rsp), %r8
movq %rbx, %rdi
movl $0x33a, %ecx            # imm = 0x33A
callq 0x1f284
xorl %ebp, %ebp
leaq 0x1c82a(%rip), %rsi     # 0x3cc08
leaq -0x118f(%rip), %rdx     # 0x1f256
movq %rbx, %rdi
callq 0x1b3f0
jmp 0x203f1
jmp 0x20405
movq %rax, %r14
leaq 0x8(%rsp), %rdi
callq 0x1b458
testb %bpl, %bpl
jne 0x20408
jmp 0x2041d
movq %rax, %r14
movq %rbx, %rdi
callq 0x1b1c0
jmp 0x2041d
movq %rax, %r14
movq %rbx, %rdi
callq 0x2028a
movq %r14, %rdi
callq 0x1b410
nop