// File: /workspace/github_cpp_makefile_star2_O2/ksabry[P]bfbrute/src/ProgramIterator.h
// Function: ProgramIterator<400ul, 32ul, 12ul, 32ul>::Serialize(std::ostream&)
void Serialize(std::ostream& output)
	{
		serializeLock.lock();

		output << programSize << " " << threadOffset << " " << threadDelta << "\n";
		output << currentCount << "\n";
		output << iteratorCount << "\n";
		for (uint_fast32_t i = 0; i < iteratorCount; i++)
		{
			output << iteratorSizes[i] << " ";
		}
		output << "\n";
		for (uint_fast32_t i = 0; i < iteratorCount; i++)
		{
			output << " ";
			iterators[i].Serialize(output);
			output << "\n";
		}
		output << "\n";
		for (uint_fast32_t i = 0; i < iteratorCount - 1; i++)
		{
			output << " " << (brackets[i].bracket == Bracket::EMPTY ? 0 : brackets[i].bracket == Bracket::LEFT ? 1 : 2) << " " << brackets[i].depth << "\n";
		}
		output << "\n";
		for (uint_fast32_t i = 0; i < iteratorCount - 1; i++)
		{
			output << " " << jumps[i].zero << " " << jumps[i].nonzero << "\n";
		}
		output << "\n";
		output << iteratorIdx << " " << bracketIdx << " " << remainingSize << "\n";
		output << firstIteratorWithNonZeroDataDelta << " " << lastExecutionSuccessful << " " << lastExecutionMaxProgramIdx << "\n";

		serializeLock.unlock();
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r15
movq %rdi, %r14
addq $0x4248, %rdi           # imm = 0x4248
movq %rdi, (%rsp)
callq 0x48fe
movq 0x18(%r14), %rsi
movq %r15, %rdi
callq 0x2140
leaq 0x15c4(%rip), %r12      # 0x80fe
movq %rax, %rdi
movq %r12, %rsi
callq 0x2210
movq 0x8(%r14), %rsi
movq %rax, %rdi
callq 0x2140
movq %rax, %rdi
movq %r12, %rsi
callq 0x2210
movq 0x10(%r14), %rsi
movq %rax, %rdi
callq 0x2140
leaq 0x1be5(%rip), %r13      # 0x8754
movq %rax, %rdi
movq %r13, %rsi
callq 0x2210
movq 0x4270(%r14), %rsi
movq %r15, %rdi
callq 0x2140
movq %rax, %rdi
movq %r13, %rsi
callq 0x2210
movq 0x20(%r14), %rsi
movq %r15, %rdi
callq 0x2140
movq %rax, %rdi
movq %r13, %rsi
callq 0x2210
xorl %ebx, %ebx
cmpq 0x20(%r14), %rbx
jae 0x6bd0
movq 0x28(%r14,%rbx,8), %rsi
movq %r15, %rdi
callq 0x2200
movq %rax, %rdi
movq %r12, %rsi
callq 0x2210
incq %rbx
jmp 0x6bad
leaq 0x1b7d(%rip), %r12      # 0x8754
movq %r15, %rdi
movq %r12, %rsi
callq 0x2210
leaq 0x128(%r14), %r13
xorl %ebx, %ebx
leaq 0x150c(%rip), %rbp      # 0x80fe
cmpq 0x20(%r14), %rbx
jae 0x6c25
movq %r15, %rdi
movq %rbp, %rsi
callq 0x2210
movq %r13, %rdi
movq %r15, %rsi
callq 0x6de0
movq %r15, %rdi
movq %r12, %rsi
callq 0x2210
incq %rbx
addq $0x1e8, %r13            # imm = 0x1E8
jmp 0x6bf2
leaq 0x1b28(%rip), %r12      # 0x8754
movq %r15, %rdi
movq %r12, %rsi
callq 0x2210
leaq 0x3e38(%r14), %rbp
xorl %ebx, %ebx
leaq 0x14b7(%rip), %r13      # 0x80fe
movq 0x20(%r14), %rax
decq %rax
cmpq %rax, %rbx
jae 0x6ca4
movq %r15, %rdi
movq %r13, %rsi
callq 0x2210
movl -0x8(%rbp), %ecx
xorl %esi, %esi
cmpl $0x1, %ecx
setne %sil
incl %esi
testl %ecx, %ecx
cmovel %ecx, %esi
movq %rax, %rdi
callq 0x2380
movq %rax, %rdi
movq %r13, %rsi
callq 0x2210
movq (%rbp), %rsi
movq %rax, %rdi
callq 0x2140
movq %rax, %rdi
movq %r12, %rsi
callq 0x2210
incq %rbx
addq $0x10, %rbp
jmp 0x6c47
leaq 0x1aa9(%rip), %r12      # 0x8754
movq %r15, %rdi
movq %r12, %rsi
callq 0x2210
leaq 0x4038(%r14), %rbx
xorl %ebp, %ebp
leaq 0x1438(%rip), %r13      # 0x80fe
movq 0x20(%r14), %rax
decq %rax
cmpq %rax, %rbp
jae 0x6d13
movq %r15, %rdi
movq %r13, %rsi
callq 0x2210
movq -0x8(%rbx), %rsi
movq %rax, %rdi
callq 0x2140
movq %rax, %rdi
movq %r13, %rsi
callq 0x2210
movq (%rbx), %rsi
movq %rax, %rdi
callq 0x2140
movq %rax, %rdi
movq %r12, %rsi
callq 0x2210
incq %rbp
addq $0x10, %rbx
jmp 0x6cc6
leaq 0x1a3a(%rip), %r12      # 0x8754
movq %r15, %rdi
movq %r12, %rsi
callq 0x2210
movq 0x4238(%r14), %rsi
movq %r15, %rdi
callq 0x2200
leaq 0x13c3(%rip), %r13      # 0x80fe
movq %rax, %rdi
movq %r13, %rsi
callq 0x2210
movq 0x4230(%r14), %rsi
movq %rax, %rdi
callq 0x2200
movq %rax, %rdi
movq %r13, %rsi
callq 0x2210
movq 0x3e28(%r14), %rsi
movq %rax, %rdi
callq 0x2200
movq %rax, %rdi
movq %r12, %rsi
callq 0x2210
movq 0x4240(%r14), %rsi
movq %r15, %rdi
callq 0x2200
movq %rax, %rdi
movq %r13, %rsi
callq 0x2210
movzbl 0x4468(%r14), %esi
movq %rax, %rdi
callq 0x2360
movq %rax, %rdi
movq %r13, %rsi
callq 0x2210
movq 0x4470(%r14), %rsi
movq %rax, %rdi
callq 0x2140
movq %rax, %rdi
movq %r12, %rsi
callq 0x2210
movq (%rsp), %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2170