// File: /workspace/github_cpp_makefile_star2_O1/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
leaq 0x4248(%rdi), %rbx
movq %rbx, %rdi
callq 0x22d0
testl %eax, %eax
jne 0x7e9d
movq %rbx, (%rsp)
movq 0x18(%r14), %rsi
movq %r15, %rdi
callq 0x2140
movq %rax, %r12
leaq 0x15ba(%rip), %r13      # 0x90fe
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x2270
movq 0x8(%r14), %rsi
movq %r12, %rdi
callq 0x2140
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x2270
movq 0x10(%r14), %rsi
movq %r12, %rdi
callq 0x2140
leaq 0x1b4a(%rip), %r12      # 0x96d0
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x2270
movq 0x4270(%r14), %rsi
movq %r15, %rdi
callq 0x2140
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x2270
movq 0x20(%r14), %rsi
movq %r15, %rdi
callq 0x2140
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x2270
cmpq $0x0, 0x20(%r14)
je 0x7c07
xorl %ebx, %ebx
leaq 0x151d(%rip), %r12      # 0x90fe
movq 0x28(%r14,%rbx,8), %rsi
movq %r15, %rdi
callq 0x2200
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x2270
incq %rbx
cmpq 0x20(%r14), %rbx
jb 0x7be1
leaq 0x1ac2(%rip), %rsi      # 0x96d0
movl $0x1, %edx
movq %r15, %rdi
callq 0x2270
cmpq $0x0, 0x20(%r14)
je 0x7c74
leaq 0x128(%r14), %r12
xorl %ebx, %ebx
leaq 0x14cc(%rip), %r13      # 0x90fe
leaq 0x1a97(%rip), %rbp      # 0x96d0
movl $0x1, %edx
movq %r15, %rdi
movq %r13, %rsi
callq 0x2270
movq %r12, %rdi
movq %r15, %rsi
callq 0x7ea4
movl $0x1, %edx
movq %r15, %rdi
movq %rbp, %rsi
callq 0x2270
incq %rbx
addq $0x1e8, %r12            # imm = 0x1E8
cmpq 0x20(%r14), %rbx
jb 0x7c39
leaq 0x1a55(%rip), %rsi      # 0x96d0
movl $0x1, %edx
movq %r15, %rdi
callq 0x2270
cmpq $0x1, 0x20(%r14)
je 0x7d14
leaq 0x3e38(%r14), %rbx
xorl %r13d, %r13d
leaq 0x145a(%rip), %r12      # 0x90fe
movl $0x1, %edx
movq %r15, %rdi
movq %r12, %rsi
callq 0x2270
movl -0x8(%rbx), %eax
xorl %esi, %esi
cmpl $0x1, %eax
setne %sil
incl %esi
testl %eax, %eax
cmovel %eax, %esi
movq %r15, %rdi
callq 0x2390
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x2270
movq (%rbx), %rsi
movq %rbp, %rdi
callq 0x2140
movl $0x1, %edx
movq %rax, %rdi
leaq 0x19d4(%rip), %rsi      # 0x96d0
callq 0x2270
incq %r13
movq 0x20(%r14), %rax
decq %rax
addq $0x10, %rbx
cmpq %rax, %r13
jb 0x7ca4
leaq 0x19b5(%rip), %rsi      # 0x96d0
movl $0x1, %edx
movq %r15, %rdi
callq 0x2270
cmpq $0x1, 0x20(%r14)
je 0x7da1
leaq 0x4038(%r14), %rbx
xorl %r13d, %r13d
leaq 0x13be(%rip), %r12      # 0x90fe
movl $0x1, %edx
movq %r15, %rdi
movq %r12, %rsi
callq 0x2270
movq -0x8(%rbx), %rsi
movq %r15, %rdi
callq 0x2140
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x2270
movq (%rbx), %rsi
movq %rbp, %rdi
callq 0x2140
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1947(%rip), %rsi      # 0x96d0
callq 0x2270
incq %r13
movq 0x20(%r14), %rax
decq %rax
addq $0x10, %rbx
cmpq %rax, %r13
jb 0x7d40
leaq 0x1928(%rip), %r12      # 0x96d0
movl $0x1, %edx
movq %r15, %rdi
movq %r12, %rsi
callq 0x2270
movq 0x4238(%r14), %rsi
movq %r15, %rdi
callq 0x2200
movq %rax, %rbp
leaq 0x132d(%rip), %r13      # 0x90fe
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x2270
movq 0x4230(%r14), %rsi
movq %rbp, %rdi
callq 0x2200
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x2270
movq 0x3e28(%r14), %rsi
movq %rbp, %rdi
callq 0x2200
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x2270
movq 0x4240(%r14), %rsi
movq %r15, %rdi
callq 0x2200
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x2270
movzbl 0x4468(%r14), %esi
movq %r15, %rdi
callq 0x2360
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x2270
movq 0x4470(%r14), %rsi
movq %r15, %rdi
callq 0x2140
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x2270
movq (%rsp), %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2170
movl %eax, %edi
callq 0x2130