// File: /workspace/github_cpp_makefile_star2_O2/It4innovations[P]Handicap/src/GraphLabelings/GraphLabeling.h
// Function: GraphLabeling::solve(int, std::mutex&)
void solve(int label, std::mutex & mut) {
			++this->levelOfRecursion;
			const int freeSlots = solution->getFreeCellsInColumn(label);

			generator->setSizeOfSet(freeSlots);
			generator->setCurrentLabel(label);
			generator->setMissingWeight(this->solution->getWeight(label));
			generator->computePossibleCombination(intermediateNSumResults[levelOfRecursion], solution);

			const int resultsCount = (int) this->intermediateNSumResults[levelOfRecursion].size() / freeSlots;
			for (int position = 0; position < resultsCount; ++position) {
				// mark numbers to solution
				this->markLabelsToSolution(label, freeSlots);

				for (int slot = 0; slot < freeSlots; ++slot) {
					this->intermediateNSumResults[levelOfRecursion].emplace(this->disabledNumbersArray[slot]);
				}

				if (solution->getFilledCells() == graph->getEdgesCount() * 2) {
					if (this->solutionValidator->validate(solution)) {
						std::lock_guard<std::mutex> lock{mut};
						++GraphLabeling::numberOfSolution;
						solutionPrinter->print(solution, GraphLabeling::numberOfSolution);
					}

				} else {
					const int nextLabelIndex = solution->selectNextLabel();
					this->solve(nextLabelIndex, mut);
				}
				// unmark numbers from solution
				this->unmarkLabelsFromSolution(label, freeSlots);
			}
			--levelOfRecursion;
		}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, %rbp
movq %rdi, %r14
movslq 0x40(%rdi), %rax
incq %rax
movl %eax, 0x40(%rdi)
leaq 0x10(%rdi), %rdx
movl %esi, 0x8(%rsp)
movslq %esi, %rcx
movq 0x10(%rdi), %r8
movq 0x28(%rdi), %rdi
movq 0x18(%r8), %rsi
movl (%rsi,%rcx,4), %r12d
movl %r12d, 0x2c(%rdi)
movl %ecx, 0x28(%rdi)
movq 0x20(%r8), %rsi
movl (%rsi,%rcx,4), %ecx
movl %ecx, 0x30(%rdi)
imulq $0x50, %rax, %rsi
addq 0x30(%r14), %rsi
movq %rdx, 0x10(%rsp)
callq 0x5d26
movslq 0x40(%r14), %rax
imulq $0x50, %rax, %rdi
addq 0x30(%r14), %rdi
callq 0x4882
cltd
idivl %r12d
xorl %r15d, %r15d
testl %r12d, %r12d
movl $0x0, %ebx
cmovgl %r12d, %ebx
testl %eax, %eax
cmovlel %r15d, %eax
movl %eax, 0xc(%rsp)
shlq $0x2, %rbx
cmpl 0xc(%rsp), %r15d
je 0x5bf3
movq %r14, %rdi
movl 0x8(%rsp), %esi
movl %r12d, %edx
callq 0x5980
xorl %r13d, %r13d
cmpq %r13, %rbx
je 0x5b7a
movslq 0x40(%r14), %rax
imulq $0x50, %rax, %rdi
addq 0x30(%r14), %rdi
movq 0x38(%r14), %rsi
addq %r13, %rsi
callq 0x47e6
addq $0x4, %r13
jmp 0x5b57
movq (%r14), %rax
movq 0x10(%r14), %rdi
movl (%rax), %eax
addl %eax, %eax
cmpl %eax, 0x8(%rdi)
jne 0x5bca
movq 0x18(%r14), %rdi
movq 0x10(%rsp), %rsi
callq 0x5e22
testb %al, %al
je 0x5bdc
movq %rbp, %rdi
callq 0x3f6e
movl 0x65e6(%rip), %edx      # 0xc190
incl %edx
movl %edx, 0x65de(%rip)      # 0xc190
movq 0x20(%r14), %rdi
movq 0x10(%rsp), %rsi
callq 0x5e58
movq %rbp, %rdi
callq 0x2130
jmp 0x5bdc
callq 0x5a1e
movq %r14, %rdi
movl %eax, %esi
movq %rbp, %rdx
callq 0x5aac
movq %r14, %rdi
movl 0x8(%rsp), %esi
movl %r12d, %edx
callq 0x5c1a
incl %r15d
jmp 0x5b3a
decl 0x40(%r14)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq %rbp, %rdi
callq 0x2130
movq %r14, %rdi
callq 0x22a0
nop