// File: /workspace/github_cpp_makefile_star2_O1/ksabry[P]bfbrute/src/ProgramIterator.h
// Function: ProgramIterator<400ul, 32ul, 12ul, 32ul>::Deserialize(std::istream&)
bool Deserialize(std::istream& input)
	{
		serializeLock.lock();

		input >> programSize >> threadOffset >> threadDelta;
		input >> currentCount;
		input >> iteratorCount;
		for (uint_fast32_t i = 0; i < iteratorCount; i++)
		{
			input >> iteratorSizes[i];
		}
		for (uint_fast32_t i = 0; i < iteratorCount; i++)
		{
			if (!iterators[i].Deserialize(input))
			{
				serializeLock.unlock();
				return false;
			}
		}
		for (uint_fast32_t i = 0; i < iteratorCount - 1; i++)
		{
			int bracketInt;
			input >> bracketInt >> brackets[i].depth;
			brackets[i].bracket = bracketInt == 0 ? Bracket::EMPTY : bracketInt == 1 ? Bracket::LEFT : Bracket::RIGHT;
		}
		for (uint_fast32_t i = 0; i < iteratorCount - 1; i++)
		{
			input >> jumps[i].zero >> jumps[i].nonzero;
		}
		input >> iteratorIdx >> bracketIdx >> remainingSize;
		input >> firstIteratorWithNonZeroDataDelta >> lastExecutionSuccessful >> lastExecutionMaxProgramIdx;

		serializeLock.unlock();
		return true;
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r15
movq %rdi, %rbp
leaq 0x4248(%rdi), %r13
movq %r13, %rdi
callq 0x22d0
testl %eax, %eax
jne 0x576a
leaq 0x18(%rbp), %rsi
movq %r15, %rdi
callq 0x20f0
leaq 0x8(%rbp), %rsi
movq %rax, %rdi
callq 0x20f0
leaq 0x10(%rbp), %rsi
movq %rax, %rdi
callq 0x20f0
leaq 0x4270(%rbp), %rsi
movq %r15, %rdi
callq 0x20f0
leaq 0x20(%rbp), %r12
movq %r15, %rdi
movq %r12, %rsi
callq 0x20f0
cmpq $0x0, 0x20(%rbp)
je 0x55e9
leaq 0x28(%rbp), %rbx
xorl %r14d, %r14d
movq %r15, %rdi
movq %rbx, %rsi
callq 0x2240
incq %r14
addq $0x8, %rbx
cmpq (%r12), %r14
jb 0x55d1
movq %rbp, (%rsp)
cmpq $0x0, (%r12)
sete %bpl
je 0x5650
movq (%rsp), %rax
leaq 0x128(%rax), %rdi
movq %r15, %rsi
callq 0x5890
testb %al, %al
je 0x563f
movq (%rsp), %rax
leaq 0x310(%rax), %rdi
xorl %ebx, %ebx
incq %rbx
cmpq (%r12), %rbx
setae %bpl
jae 0x5650
leaq 0x1e8(%rdi), %r14
movq %r15, %rsi
callq 0x5890
movq %r14, %rdi
testb %al, %al
jne 0x561c
movq %r13, %rdi
callq 0x2170
testb %bpl, %bpl
je 0x5759
movq %r13, 0x10(%rsp)
cmpq $0x1, (%r12)
je 0x56af
movq (%rsp), %rax
leaq 0x3e38(%rax), %r13
xorl %r14d, %r14d
leaq 0xc(%rsp), %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x2110
movq %rax, %rdi
movq %r13, %rsi
callq 0x20f0
movl 0xc(%rsp), %eax
xorl %ecx, %ecx
cmpl $0x1, %eax
setne %cl
incl %ecx
testl %eax, %eax
cmovel %eax, %ecx
movl %ecx, -0x8(%r13)
incq %r14
movq (%r12), %rax
decq %rax
addq $0x10, %r13
cmpq %rax, %r14
jb 0x566f
cmpq $0x1, (%r12)
je 0x56ee
movq (%rsp), %rax
leaq 0x4030(%rax), %rbx
xorl %r14d, %r14d
movq %r15, %rdi
movq %rbx, %rsi
callq 0x20f0
leaq 0x8(%rbx), %rsi
movq %rax, %rdi
callq 0x20f0
incq %r14
movq (%r12), %rax
decq %rax
addq $0x10, %rbx
cmpq %rax, %r14
jb 0x56c4
movq (%rsp), %rbx
leaq 0x4238(%rbx), %rsi
movq %r15, %rdi
callq 0x2240
leaq 0x4230(%rbx), %rsi
movq %rax, %rdi
callq 0x2240
leaq 0x3e28(%rbx), %rsi
movq %rax, %rdi
callq 0x2240
leaq 0x4240(%rbx), %rsi
movq %r15, %rdi
callq 0x2240
leaq 0x4468(%rbx), %rsi
movq %rax, %rdi
callq 0x21c0
addq $0x4470, %rbx           # imm = 0x4470
movq %rax, %rdi
movq %rbx, %rsi
callq 0x20f0
movq 0x10(%rsp), %rdi
callq 0x2170
movl %ebp, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl %eax, %edi
callq 0x2130
nop