// File: /workspace/github_cpp_makefile_star2_O3/akinanop[P]mvl-solver/src/Formula.cc
// Function: Formula::watchedReduceTheory(Literal)
void Formula::watchedReduceTheory ( Literal lit ) {

	if ( lit.EQUAL ) {

		if ( LOG ) {
			cout << "Reducing literal: " << lit.VAR << "="<< lit.VAL << " at level " << LEVEL << endl;
			cout << "The reason for the literal: " << endl;
			if ( UNITCLAUSE > -1 ) CLAUSELIST[UNITCLAUSE] -> Print(); else cout << UNITCLAUSE << endl;
		}

		DECSTACK.push_back(Literal(lit.VAR, lit.EQUAL, lit.VAL)); 		// Add literal to the decision stack

		VARLIST[lit.VAR] -> ATOMASSIGN[lit.VAL] = 1;
		VARLIST[lit.VAR] -> ATOMLEVEL[lit.VAL] = LEVEL;
		VARLIST[lit.VAR] -> VAL = lit.VAL;
		VARLIST[lit.VAR] -> CLAUSEID[lit.VAL] = UNITCLAUSE; 		// Set the reason for the literal
		VARLIST[lit.VAR] -> ATOMINDEX[lit.VAL] = DECSTACK.size() - 1; // to use in maxLit

		// update watched literals:
		watchedFalsifyLiteral ( Literal(lit.VAR, ! lit.EQUAL, lit.VAL) ); // if one of the watched literals falsified, swap watched literals


		//for each different domain value x from dom(lit.VAR) which is not assigned (0) assign it

		for ( int i = 0; i < lit.VAL && ! CONFLICT; i++ ) {

			if ( VARLIST[lit.VAR] -> ATOMASSIGN[i] == 0 ) {

				VARLIST[lit.VAR]->ATOMASSIGN[i] = -1;
				VARLIST[lit.VAR]->ATOMLEVEL[i] = LEVEL;

				// Set the same reason:
				VARLIST[lit.VAR]->CLAUSEID[i] = UNITCLAUSE;
				VARLIST[lit.VAR] -> ATOMINDEX[i] = DECSTACK.size() - 1; // to use in maxLit


				watchedFalsifyLiteral ( Literal(lit.VAR, lit.EQUAL, i) ); // if one of the watched literals falsified, swap watched literals

			}
		}

		for ( int i = lit.VAL + 1; i < VARLIST[lit.VAR] -> DOMAINSIZE && ! CONFLICT; i++ ) {

			if ( VARLIST[lit.VAR] -> ATOMASSIGN[i] == 0 ) {

				VARLIST[lit.VAR]->ATOMASSIGN[i] = -1;
				VARLIST[lit.VAR]->ATOMLEVEL[i] = LEVEL;

				VARLIST[lit.VAR] -> CLAUSEID[i] = UNITCLAUSE;
				VARLIST[lit.VAR] -> ATOMINDEX[i] = DECSTACK.size() - 1; // to use in maxLit

				watchedFalsifyLiteral ( Literal(lit.VAR, lit.EQUAL, i) ); // if one of the watched literals falsified, swap watched literals
			}
		}
	} else {

		if ( LOG ) {
			cout << "Reducing literal: " << lit.VAR << "!="<< lit.VAL << " at level " << LEVEL << endl;
			cout << "The reason for the literal: " << endl;
			if ( UNITCLAUSE > -1 ) CLAUSELIST[UNITCLAUSE] -> Print(); else cout << UNITCLAUSE << endl;
		}

		//Add literal to decision stack:
		DECSTACK.push_back ( Literal(lit.VAR, lit.EQUAL, lit.VAL) );

		VARLIST[lit.VAR] -> ATOMASSIGN[lit.VAL] = -1;
		VARLIST[lit.VAR] -> ATOMLEVEL[lit.VAL] = LEVEL;
		// Set the reason:
		VARLIST[lit.VAR] -> CLAUSEID[lit.VAL] = UNITCLAUSE;
		VARLIST[lit.VAR] -> ATOMINDEX[lit.VAL] = DECSTACK.size() - 1; // to use in maxLit

		watchedFalsifyLiteral ( Literal(lit.VAR, ! lit.EQUAL, lit.VAL) );


		//check Entailment on this variable
		int entailVal = checkEntail ( lit.VAR );
		if ( entailVal != -1 ) {
			if ( LOG ) cout << "Entailment... " << lit.VAR << "=" << entailVal << endl;
			ENTAILS++;
			// Set the reason:
			UNITCLAUSE = -2;
			watchedReduceTheory ( Literal(lit.VAR, true, entailVal) );
		}

	}

}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movq %rsi, %rax
shrq $0x20, %rax
movq %rax, (%rsp)
movb 0xa4(%rdi), %al
testb $0x1, %dl
je 0xa1f4
testb %al, %al
je 0xa322
movq 0x6ec5(%rip), %r12      # 0x10fd0
leaq 0x3c50(%rip), %rsi      # 0xdd62
movl $0x12, %edx
movq %r12, %rdi
callq 0x2270
movq %r12, %rdi
movl %r14d, %esi
callq 0x2390
movq %rax, %r13
leaq 0x3b4d(%rip), %rsi      # 0xdc81
movl $0x1, %edx
movq %rax, %rdi
callq 0x2270
movq %r13, %rdi
movq (%rsp), %rsi
callq 0x2390
movq %rax, %r13
leaq 0x3c1e(%rip), %rsi      # 0xdd75
movl $0xa, %edx
movq %rax, %rdi
callq 0x2270
movl 0x48(%rbx), %esi
movq %r13, %rdi
callq 0x2390
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2180
leaq 0x3be0(%rip), %rsi      # 0xdd80
movl $0x1c, %edx
movq %r12, %rdi
callq 0x2270
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %r12, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2180
movslq 0x78(%rbx), %rsi
testq %rsi, %rsi
js 0xa2ec
movq 0x18(%rbx), %rax
movq (%rax,%rsi,8), %rdi
callq 0x6f0c
jmp 0xa322
testb %al, %al
je 0xa868
movq 0x6dcd(%rip), %r12      # 0x10fd0
leaq 0x3b58(%rip), %rsi      # 0xdd62
movl $0x12, %edx
movq %r12, %rdi
callq 0x2270
movq %r12, %rdi
movl %r14d, %esi
callq 0x2390
movq %rax, %r13
leaq 0x3a54(%rip), %rsi      # 0xdc80
movl $0x2, %edx
movq %rax, %rdi
callq 0x2270
movq %r13, %rdi
movq (%rsp), %rsi
callq 0x2390
movq %rax, %r13
leaq 0x3b26(%rip), %rsi      # 0xdd75
movl $0xa, %edx
movq %rax, %rdi
callq 0x2270
movl 0x48(%rbx), %esi
movq %r13, %rdi
callq 0x2390
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %r13, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2180
leaq 0x3ae8(%rip), %rsi      # 0xdd80
movl $0x1c, %edx
movq %r12, %rdi
callq 0x2270
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %r12, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2180
movslq 0x78(%rbx), %rsi
testq %rsi, %rsi
js 0xa832
movq 0x18(%rbx), %rax
movq (%rax,%rsi,8), %rdi
callq 0x6f0c
jmp 0xa868
movq 0x6cdd(%rip), %rdi      # 0x10fd0
callq 0x2390
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %r12, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2180
movl %r14d, 0xc(%rsp)
movq (%rsp), %rax
movl %eax, 0x10(%rsp)
movb $0x1, 0x14(%rsp)
movq 0x90(%rbx), %rsi
cmpq 0x98(%rbx), %rsi
je 0xa367
movl 0x14(%rsp), %eax
movl %eax, 0x8(%rsi)
movq 0xc(%rsp), %rax
movq %rax, (%rsi)
movq 0x90(%rbx), %rax
addq $0xc, %rax
movq %rax, 0x90(%rbx)
jmp 0xa37f
leaq 0x88(%rbx), %rdi
leaq 0xc(%rsp), %rdx
callq 0xbd3e
movq 0x90(%rbx), %rax
movslq %r14d, %r12
movq (%rbx), %rcx
movq (%rcx,%r12,8), %rdx
movq 0x20(%rdx), %rsi
movq %r14, %rdi
sarq $0x20, %rdi
movl $0x1, (%rsi,%rdi,4)
movl 0x48(%rbx), %esi
movq 0x18(%rdx), %r8
movl %esi, (%r8,%rdi,4)
movq (%rsp), %rsi
movl %esi, 0x4(%rdx)
movl 0x78(%rbx), %esi
movq 0x48(%rdx), %r8
movl %esi, (%r8,%rdi,4)
subq 0x88(%rbx), %rax
shrq $0x2, %rax
imull $0xaaaaaaab, %eax, %eax # imm = 0xAAAAAAAB
decl %eax
movq 0x10(%rdx), %rdx
movl %eax, (%rdx,%rdi,4)
movl %r12d, %eax
movq %rax, 0x18(%rsp)
movq (%rcx,%r12,8), %rax
movq 0x58(%rax), %rax
movq (%rax,%rdi,8), %r13
testq %r13, %r13
je 0xa4ec
movabsq $-0x5555555555555555, %r15 # imm = 0xAAAAAAAAAAAAAAAB
cmpb $0x0, 0x7c(%rbx)
jne 0xa4ec
movq %r13, %rsi
movq 0x8(%r13), %r13
movslq (%rsi), %rax
movq (%rbx), %rdi
movq 0x18(%rbx), %rcx
movq (%rcx,%rax,8), %rdx
movq 0x20(%rdx), %rcx
movzbl 0x28(%rdx), %eax
movl %eax, %r8d
andl $0x1, %r8d
decl %r8d
orl $0x1, %r8d
movslq %ecx, %r9
movq (%rdi,%r9,8), %r9
movq 0x20(%r9), %r9
movq %rcx, %r10
sarq $0x20, %r10
cmpl %r8d, (%r9,%r10,4)
je 0xa4e3
movq 0x2c(%rdx), %r8
movq 0x8(%rdx), %r10
subq (%rdx), %r10
movb 0x34(%rdx), %r9b
sarq $0x2, %r10
imulq %r15, %r10
cmpq $0x2, %r10
jb 0xa4aa
movzbl %r9b, %r10d
andl $0x1, %r10d
decl %r10d
orl $0x1, %r10d
movslq %r8d, %r11
movq (%rdi,%r11,8), %rdi
movq 0x20(%rdi), %rdi
movq %r8, %r11
sarq $0x20, %r11
cmpl %r10d, (%rdi,%r11,4)
jne 0xa4aa
movq %r8, 0x20(%rdx)
movb %r9b, 0x28(%rdx)
movslq (%rsi), %rdx
movq 0x18(%rbx), %rsi
movq (%rsi,%rdx,8), %rdx
movq %rcx, 0x2c(%rdx)
movb %al, 0x34(%rdx)
jmp 0xa4e3
cmpq %r14, %r8
sete %dil
testb %r9b, %r9b
sete %r8b
andb %dil, %r8b
cmpb $0x1, %r8b
jne 0xa4db
movq %r14, 0x20(%rdx)
movb $0x0, 0x28(%rdx)
movslq (%rsi), %rdx
movq 0x18(%rbx), %rdi
movq (%rdi,%rdx,8), %rdx
movq %rcx, 0x2c(%rdx)
movb %al, 0x34(%rdx)
movq %rbx, %rdi
callq 0xac0c
testq %r13, %r13
jne 0xa3f9
leaq (,%r12,8), %rax
movq %rax, 0x20(%rsp)
cmpl $0x0, (%rsp)
jle 0xa68b
xorl %ebp, %ebp
movabsq $-0x5555555555555555, %r13 # imm = 0xAAAAAAAAAAAAAAAB
cmpb $0x1, 0x7c(%rbx)
je 0xa68b
movq (%rbx), %rax
movq (%rax,%r12,8), %rcx
movq 0x20(%rcx), %rdx
cmpl $0x0, (%rdx,%rbp,4)
je 0xa538
incq %rbp
cmpq (%rsp), %rbp
jne 0xa50f
jmp 0xa68b
movl $0xffffffff, (%rdx,%rbp,4) # imm = 0xFFFFFFFF
movl 0x48(%rbx), %edx
movq 0x18(%rcx), %rsi
movl %edx, (%rsi,%rbp,4)
movl 0x78(%rbx), %edx
movq 0x48(%rcx), %rsi
movl %edx, (%rsi,%rbp,4)
movq 0x90(%rbx), %rdx
subq 0x88(%rbx), %rdx
shrq $0x2, %rdx
imull $0xaaaaaaab, %edx, %edx # imm = 0xAAAAAAAB
decl %edx
movq 0x10(%rcx), %rcx
movl %edx, (%rcx,%rbp,4)
movq 0x20(%rsp), %rcx
movq (%rax,%rcx), %rax
movq 0x50(%rax), %rax
movq (%rax,%rbp,8), %r15
testq %r15, %r15
je 0xa52a
movq %rbp, %r14
shlq $0x20, %r14
addq 0x18(%rsp), %r14
cmpb $0x0, 0x7c(%rbx)
jne 0xa52a
movq %r15, %rsi
movq 0x8(%r15), %r15
movslq (%rsi), %rax
movq (%rbx), %rdi
movq 0x18(%rbx), %rcx
movq (%rcx,%rax,8), %rdx
movq 0x20(%rdx), %rcx
movzbl 0x28(%rdx), %eax
movl %eax, %r8d
andl $0x1, %r8d
decl %r8d
orl $0x1, %r8d
movslq %ecx, %r9
movq (%rdi,%r9,8), %r9
movq 0x20(%r9), %r9
movq %rcx, %r10
sarq $0x20, %r10
cmpl %r8d, (%r9,%r10,4)
je 0xa67d
movq 0x2c(%rdx), %r8
movq 0x8(%rdx), %r10
subq (%rdx), %r10
movb 0x34(%rdx), %r9b
sarq $0x2, %r10
imulq %r13, %r10
cmpq $0x2, %r10
jb 0xa643
movzbl %r9b, %r10d
andl $0x1, %r10d
decl %r10d
orl $0x1, %r10d
movslq %r8d, %r11
movq (%rdi,%r11,8), %rdi
movq 0x20(%rdi), %rdi
movq %r8, %r11
sarq $0x20, %r11
cmpl %r10d, (%rdi,%r11,4)
jne 0xa643
movq %r8, 0x20(%rdx)
movb %r9b, 0x28(%rdx)
movslq (%rsi), %rdx
movq 0x18(%rbx), %rsi
movq (%rsi,%rdx,8), %rdx
movq %rcx, 0x2c(%rdx)
movb %al, 0x34(%rdx)
jmp 0xa67d
cmpq %r14, %r8
sete %dil
cmpb $0x1, %r9b
sete %r8b
andb %dil, %r8b
cmpb $0x1, %r8b
jne 0xa675
movq %r14, 0x20(%rdx)
movb $0x1, 0x28(%rdx)
movslq (%rsi), %rdx
movq 0x18(%rbx), %rdi
movq (%rdi,%rdx,8), %rdx
movq %rcx, 0x2c(%rdx)
movb %al, 0x34(%rdx)
movq %rbx, %rdi
callq 0xac0c
testq %r15, %r15
jne 0xa596
jmp 0xa52a
movq (%rsp), %rax
leal 0x1(%rax), %edx
movq (%rbx), %rax
movq (%rax,%r12,8), %rcx
cmpl 0x8(%rcx), %edx
jge 0xab16
movslq %edx, %r15
movabsq $-0x5555555555555555, %rbp # imm = 0xAAAAAAAAAAAAAAAB
cmpb $0x0, 0x7c(%rbx)
jne 0xab16
movq 0x20(%rcx), %rdx
cmpl $0x0, (%rdx,%r15,4)
je 0xa6d9
incq %r15
movq (%rax,%r12,8), %rcx
movslq 0x8(%rcx), %rdx
cmpq %rdx, %r15
jl 0xa6af
jmp 0xab16
movl $0xffffffff, (%rdx,%r15,4) # imm = 0xFFFFFFFF
movl 0x48(%rbx), %edx
movq 0x18(%rcx), %rsi
movl %edx, (%rsi,%r15,4)
movl 0x78(%rbx), %edx
movq 0x48(%rcx), %rsi
movl %edx, (%rsi,%r15,4)
movq 0x90(%rbx), %rdx
subq 0x88(%rbx), %rdx
shrq $0x2, %rdx
imull $0xaaaaaaab, %edx, %edx # imm = 0xAAAAAAAB
decl %edx
movq 0x10(%rcx), %rcx
movl %edx, (%rcx,%r15,4)
movq 0x20(%rsp), %rcx
movq (%rax,%rcx), %rcx
movq 0x50(%rcx), %rcx
movq (%rcx,%r15,8), %r14
testq %r14, %r14
je 0xa6c4
movq %r15, %r13
shlq $0x20, %r13
addq 0x18(%rsp), %r13
movq (%rbx), %rax
cmpb $0x0, 0x7c(%rbx)
jne 0xa6c4
movq %r14, %rsi
movq 0x8(%r14), %r14
movslq (%rsi), %rcx
movq 0x18(%rbx), %rdx
movq (%rdx,%rcx,8), %rdi
movq 0x20(%rdi), %rdx
movzbl 0x28(%rdi), %ecx
movl %ecx, %r8d
andl $0x1, %r8d
decl %r8d
orl $0x1, %r8d
movslq %edx, %r9
movq (%rax,%r9,8), %r9
movq 0x20(%r9), %r9
movq %rdx, %r10
sarq $0x20, %r10
cmpl %r8d, (%r9,%r10,4)
je 0xa821
movq 0x2c(%rdi), %r8
movq 0x8(%rdi), %r10
subq (%rdi), %r10
movb 0x34(%rdi), %r9b
sarq $0x2, %r10
imulq %rbp, %r10
cmpq $0x2, %r10
jb 0xa7e8
movzbl %r9b, %r10d
andl $0x1, %r10d
decl %r10d
orl $0x1, %r10d
movslq %r8d, %r11
movq (%rax,%r11,8), %rax
movq 0x20(%rax), %rax
movq %r8, %r11
sarq $0x20, %r11
cmpl %r10d, (%rax,%r11,4)
jne 0xa7e8
movq %r8, 0x20(%rdi)
movb %r9b, 0x28(%rdi)
movslq (%rsi), %rax
movq 0x18(%rbx), %rsi
movq (%rsi,%rax,8), %rax
movq %rdx, 0x2c(%rax)
movb %cl, 0x34(%rax)
jmp 0xa821
cmpq %r13, %r8
sete %al
cmpb $0x1, %r9b
sete %r8b
andb %al, %r8b
cmpb $0x1, %r8b
jne 0xa819
movq %r13, 0x20(%rdi)
movb $0x1, 0x28(%rdi)
movslq (%rsi), %rax
movq 0x18(%rbx), %rdi
movq (%rdi,%rax,8), %rax
movq %rdx, 0x2c(%rax)
movb %cl, 0x34(%rax)
movq %rbx, %rdi
callq 0xac0c
testq %r14, %r14
jne 0xa73b
movq (%rbx), %rax
jmp 0xa6c4
movq 0x6797(%rip), %rdi      # 0x10fd0
callq 0x2390
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %r12, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2180
movl %r14d, 0xc(%rsp)
movq (%rsp), %rax
movl %eax, 0x10(%rsp)
movb $0x0, 0x14(%rsp)
movq 0x90(%rbx), %rsi
cmpq 0x98(%rbx), %rsi
je 0xa8ad
movl 0x14(%rsp), %eax
movl %eax, 0x8(%rsi)
movq 0xc(%rsp), %rax
movq %rax, (%rsi)
movq 0x90(%rbx), %rax
addq $0xc, %rax
movq %rax, 0x90(%rbx)
jmp 0xa8c5
leaq 0x88(%rbx), %rdi
leaq 0xc(%rsp), %rdx
callq 0xbd3e
movq 0x90(%rbx), %rax
movq (%rbx), %rcx
movslq %r14d, %r15
movq (%rcx,%r15,8), %rcx
movq 0x20(%rcx), %rdx
movq %r14, %rsi
sarq $0x20, %rsi
movl $0xffffffff, (%rdx,%rsi,4) # imm = 0xFFFFFFFF
movl 0x48(%rbx), %edx
movq 0x18(%rcx), %rdi
movl %edx, (%rdi,%rsi,4)
movl 0x78(%rbx), %edx
movq 0x48(%rcx), %rdi
movl %edx, (%rdi,%rsi,4)
subq 0x88(%rbx), %rax
shrq $0x2, %rax
imull $0xaaaaaaab, %eax, %eax # imm = 0xAAAAAAAB
decl %eax
movq 0x10(%rcx), %rdx
movl %eax, (%rdx,%rsi,4)
movq 0x50(%rcx), %rax
movq (%rax,%rsi,8), %r12
testq %r12, %r12
je 0xaa2a
shlq $0x3, %r15
movabsq $-0x5555555555555555, %r13 # imm = 0xAAAAAAAAAAAAAAAB
movq (%rbx), %rdi
cmpb $0x0, 0x7c(%rbx)
jne 0xaa26
movq %r12, %rsi
movq 0x8(%r12), %r12
movslq (%rsi), %rax
movq 0x18(%rbx), %rcx
movq (%rcx,%rax,8), %rdx
movq 0x20(%rdx), %rcx
movzbl 0x28(%rdx), %eax
movl %eax, %r8d
andl $0x1, %r8d
decl %r8d
orl $0x1, %r8d
movslq %ecx, %r9
movq (%rdi,%r9,8), %r9
movq 0x20(%r9), %r9
movq %rcx, %r10
sarq $0x20, %r10
cmpl %r8d, (%r9,%r10,4)
je 0xaa1a
movq 0x2c(%rdx), %r8
movq 0x8(%rdx), %r10
subq (%rdx), %r10
movb 0x34(%rdx), %r9b
sarq $0x2, %r10
imulq %r13, %r10
cmpq $0x2, %r10
jb 0xa9e0
movzbl %r9b, %r10d
andl $0x1, %r10d
decl %r10d
orl $0x1, %r10d
movslq %r8d, %r11
movq (%rdi,%r11,8), %rdi
movq 0x20(%rdi), %rdi
movq %r8, %r11
sarq $0x20, %r11
cmpl %r10d, (%rdi,%r11,4)
jne 0xa9e0
movq %r8, 0x20(%rdx)
movb %r9b, 0x28(%rdx)
movslq (%rsi), %rdx
movq 0x18(%rbx), %rsi
movq (%rsi,%rdx,8), %rdx
movq %rcx, 0x2c(%rdx)
movb %al, 0x34(%rdx)
jmp 0xaa1a
cmpq %r14, %r8
sete %dil
cmpb $0x1, %r9b
sete %r8b
andb %dil, %r8b
cmpb $0x1, %r8b
jne 0xaa12
movq %r14, 0x20(%rdx)
movb $0x1, 0x28(%rdx)
movslq (%rsi), %rdx
movq 0x18(%rbx), %rdi
movq (%rdi,%rdx,8), %rdx
movq %rcx, 0x2c(%rdx)
movb %al, 0x34(%rdx)
movq %rbx, %rdi
callq 0xac0c
testq %r12, %r12
jne 0xa92e
movq (%rbx), %rdi
movq (%rdi,%r15), %rcx
movslq 0x8(%rcx), %rax
testq %rax, %rax
jle 0xab16
movl %r14d, %r13d
movq 0x20(%rcx), %rcx
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
xorl %edx, %edx
xorl %esi, %esi
cmpl $0x0, (%rcx,%rdx,4)
jne 0xaa5e
testb $0x1, %sil
jne 0xab16
movb $0x1, %sil
movl %edx, %r15d
incq %rdx
cmpq %rdx, %rax
jne 0xaa48
cmpl $-0x1, %r15d
setne %al
andb %al, %sil
cmpb $0x1, %sil
jne 0xab16
cmpb $0x1, 0xa4(%rbx)
jne 0xaaf5
movq 0x6546(%rip), %r12      # 0x10fd0
leaq 0x330c(%rip), %rsi      # 0xdd9d
movl $0xe, %edx
movq %r12, %rdi
callq 0x2270
movq %r12, %rdi
movl %r14d, %esi
callq 0x2390
movq %rax, %r14
leaq 0x31ce(%rip), %rsi      # 0xdc81
movl $0x1, %edx
movq %rax, %rdi
callq 0x2270
movq %r14, %rdi
movl %r15d, %esi
callq 0x2390
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2180
incl 0x58(%rbx)
movl $0xfffffffe, 0x78(%rbx) # imm = 0xFFFFFFFE
shlq $0x20, %r15
orq %r13, %r15
movq %rbx, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0xa0ce
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop