// File: /workspace/github_cpp_makefile_star2_O2/ksabry[P]bfbrute/src/ProgramSearch.h
// Function: ProgramSearch<ProgramIterator<400ul, 32ul, 12ul, 32ul>, DataCache<32ul, 12ul>>::Filename[abi:cxx11]()
std::string Filename()
	{
		std::string filename = "/home/ksabry/dev/bfbrute/progress/program_search";

		for (std::string input : inputs)
		{
			filename += "_" + StringToHex(input);
		}
		filename += "_";
		for (std::string output : outputs)
		{
			filename += "_" + StringToHex(output);
		}

		filename += "__" + std::to_string(THREAD_COUNT);
		// SIZE_START is not necessary
		filename += "_" + std::to_string(SHOW_ALL_PROGRAMS_LENGTH);
		filename += "_" + std::to_string(MAX_JUMPS);

#ifdef SINGLE_BRACKET_HIERARCHY
		filename += "_T";
#else
		filename += "_F";
#endif

#ifdef SHORT_CIRCUIT_LINEAR_SINGULAR
		filename += "_T";
#else
		filename += "_F";
#endif

#ifdef INITIAL_ZERO
		filename += "_T";
#else
		filename += "_F";
#endif

#ifdef INITIAL_DATA_SYMMETRIC
		filename += "_T";
#else
		filename += "_F";
#endif

#ifdef NO_ENDING
		filename += "_T";
#else
		filename += "_F";
#endif

#ifdef CASE_INSENSITIVE
		filename += "_T";
#else
		filename += "_F";
#endif

#ifdef MAX_BRACKET_DEPTH
		filename += "_" + std::to_string(MAX_BRACKET_DEPTH);
#else
		filename += "_F";
#endif

#ifdef SINGLE_ITER_COUNT
		filename += "_" + std::to_string(SINGLE_ITER_COUNT);
#else
		filename += "_F";
#endif

#ifdef MAX_FIRST_SIZE
		filename += "_" + std::to_string(MAX_FIRST_SIZE);
#else
		filename += "_F";
#endif

		return filename;
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rsi, %r14
leaq 0x38a5(%rip), %rsi      # 0x81cf
leaq 0x28(%rsp), %r15
movq %rdi, (%rsp)
movq %r15, %rdx
callq 0x26c6
movq 0x85a38(%r14), %rbx
movq 0x85a40(%r14), %rbp
leaq 0x8(%rsp), %r12
leaq 0x48(%rsp), %r13
cmpq %rbp, %rbx
je 0x49b0
movq (%rbx), %rsi
movq %r15, %rdi
movq %r12, %rdx
callq 0x26c6
movq %r13, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x4e94
movq %r12, %rdi
leaq 0x3883(%rip), %rsi      # 0x8201
movq %r13, %rdx
callq 0x4e6f
movq (%rsp), %rdi
movq %r12, %rsi
callq 0x23e0
movq %r12, %rdi
callq 0x20b0
movq %r13, %rdi
callq 0x20b0
movq %r15, %rdi
callq 0x20b0
addq $0x8, %rbx
jmp 0x4953
leaq 0x384a(%rip), %rsi      # 0x8201
movq (%rsp), %rbx
movq %rbx, %rdi
callq 0x23b0
movq 0x85a68(%r14), %rbx
movq 0x85a70(%r14), %rbp
leaq 0x28(%rsp), %r15
leaq 0x8(%rsp), %r12
leaq 0x48(%rsp), %r13
cmpq %rbp, %rbx
je 0x4a3d
movq (%rbx), %rsi
movq %r15, %rdi
movq %r12, %rdx
callq 0x26c6
movq %r13, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x4e94
movq %r12, %rdi
leaq 0x37f6(%rip), %rsi      # 0x8201
movq %r13, %rdx
callq 0x4e6f
movq (%rsp), %rdi
movq %r12, %rsi
callq 0x23e0
movq %r12, %rdi
callq 0x20b0
movq %r13, %rdi
callq 0x20b0
movq %r15, %rdi
callq 0x20b0
addq $0x8, %rbx
jmp 0x49e0
leaq 0x8(%rsp), %rdi
pushq $0x10
popq %rsi
callq 0x4f2b
leaq 0x37af(%rip), %rsi      # 0x8200
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
movq (%rsp), %rbx
callq 0x4e6f
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
callq 0x23e0
leaq 0x28(%rsp), %rdi
callq 0x20b0
leaq 0x8(%rsp), %rdi
callq 0x20b0
leaq 0x8(%rsp), %rdi
pushq $0x55
popq %rsi
callq 0x4f2b
leaq 0x3768(%rip), %rsi      # 0x8201
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x4e6f
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
callq 0x23e0
leaq 0x28(%rsp), %rdi
callq 0x20b0
leaq 0x8(%rsp), %rdi
callq 0x20b0
leaq 0x8(%rsp), %rdi
movl $0xc350, %esi           # imm = 0xC350
callq 0x4f2b
leaq 0x3722(%rip), %rsi      # 0x8201
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x4e6f
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
callq 0x23e0
leaq 0x28(%rsp), %rdi
callq 0x20b0
leaq 0x8(%rsp), %rdi
callq 0x20b0
leaq 0x36ed(%rip), %rsi      # 0x8203
movq %rbx, %rdi
callq 0x23b0
leaq 0x36de(%rip), %rsi      # 0x8203
movq %rbx, %rdi
callq 0x23b0
leaq 0x36cf(%rip), %rsi      # 0x8203
movq %rbx, %rdi
callq 0x23b0
leaq 0x36c3(%rip), %rsi      # 0x8206
movq %rbx, %rdi
callq 0x23b0
leaq 0x36b1(%rip), %rsi      # 0x8203
movq %rbx, %rdi
callq 0x23b0
leaq 0x36a5(%rip), %rsi      # 0x8206
movq %rbx, %rdi
callq 0x23b0
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
callq 0x4f2b
leaq 0x3684(%rip), %rsi      # 0x8201
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x4e6f
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
callq 0x23e0
leaq 0x28(%rsp), %rdi
callq 0x20b0
leaq 0x8(%rsp), %rdi
callq 0x20b0
leaq 0x3652(%rip), %rsi      # 0x8206
movq %rbx, %rdi
callq 0x23b0
leaq 0x8(%rsp), %rdi
pushq $0x1
popq %rsi
callq 0x4f2b
leaq 0x3631(%rip), %rsi      # 0x8201
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %rdx
callq 0x4e6f
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
callq 0x23e0
leaq 0x28(%rsp), %rdi
callq 0x20b0
leaq 0x8(%rsp), %rdi
callq 0x20b0
movq %rbx, %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x4c2a
jmp 0x4c39
jmp 0x4c52
jmp 0x4c2a
jmp 0x4c39
jmp 0x4c45
jmp 0x4c2a
jmp 0x4c39
jmp 0x4c45
jmp 0x4c2a
jmp 0x4c39
jmp 0x4c45
movq %rax, %r14
leaq 0x28(%rsp), %rdi
callq 0x20b0
jmp 0x4c3c
movq %rax, %r14
leaq 0x8(%rsp), %rdi
jmp 0x4c7d
jmp 0x4c52
movq %rax, %r14
jmp 0x4c86
jmp 0x4c52
jmp 0x4c57
jmp 0x4c5c
jmp 0x4c61
movq %rax, %r14
jmp 0x4c82
movq %rax, %r14
jmp 0x4c78
movq %rax, %r14
jmp 0x4c6e
movq %rax, %r14
leaq 0x8(%rsp), %rdi
callq 0x20b0
leaq 0x48(%rsp), %rdi
callq 0x20b0
leaq 0x28(%rsp), %rdi
callq 0x20b0
movq (%rsp), %rbx
movq %rbx, %rdi
callq 0x20b0
movq %r14, %rdi
callq 0x2390