// File: /workspace/github_cpp_makefile_star2_O3/probonopd[P]decodeir/DecodeIR.cpp
// Function: Signal::tryQ1()
void Signal::tryQ1()
{
	// {38K,226}<2,-2|2,-3|2,-4|2,-5>(4,-2,D:8,F:6,M:2,C:4,~F:4,2,-356)+
	//

	if (nFrameL != 14)
		return;
	if ( sortOn.max2 >= pFrame[0] )
		return;
	if ( ! framed(sortBurst.max1*2) )
		return;
	double unit = (pFrame[0]+pFrame[1])*(1./6);
	if ( sortBurst.max1 > unit*6.6 )
		unit = sortBurst.max1 * (1./7);
	if ( sortBurst.min1 < unit*3.55 )
		return;
	if ( sortOn.max2 > unit * 2.5 || sortOn.max1 > unit * 4.5 )
	{
		return;
	}
	cleanup();
	double mult = 4/unit;
	do
	{
		pBit += 2;
		int x = (int)floor( (pBit[0]+pBit[1])*mult + (2.5-16) );
		if ( ! ( x & 3 ) )
			return;
		cBits[nBit>>3] |= (x>>2) << (nBit & 7);
		nBit += 2;
	
	}   while ( nBit < 24 );

	sprintf(pProtocol, "?1-%02X-%02X-%02X", cBits[0], cBits[1], cBits[2]);

	*pDevice = cBits[0];
	*pSubDevice = getLsb(14,2);
	*pOBC = getLsb(8,6);
	sprintf(pMisc, "C=%X", getLsb(16,4)^getLsb(8,4) );

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
cmpl $0xe, 0x48(%rdi)
jne 0x5f0f
movq %rdi, %rbx
movss 0x188(%rdi), %xmm1
movq 0x38(%rdi), %rax
movss (%rax), %xmm0
ucomiss %xmm0, %xmm1
jae 0x5f0f
movss 0x140(%rbx), %xmm3
movss 0x1dc(%rbx), %xmm2
movaps %xmm2, %xmm4
addss %xmm2, %xmm4
ucomiss %xmm4, %xmm3
jb 0x5f0f
addss 0x4(%rax), %xmm0
xorps %xmm3, %xmm3
cvtss2sd %xmm0, %xmm3
mulsd 0xc2f5(%rip), %xmm3     # 0x12188
xorps %xmm0, %xmm0
cvtss2sd %xmm2, %xmm0
movsd 0xc2ee(%rip), %xmm2     # 0x12190
mulsd %xmm3, %xmm2
cmpltsd %xmm0, %xmm2
mulsd 0xc2e5(%rip), %xmm0     # 0x12198
andpd %xmm2, %xmm0
andnpd %xmm3, %xmm2
orpd %xmm2, %xmm0
xorps %xmm2, %xmm2
cvtss2sd 0x1d0(%rbx), %xmm2
movsd 0xc2ce(%rip), %xmm3     # 0x121a0
mulsd %xmm0, %xmm3
ucomisd %xmm2, %xmm3
ja 0x5f0f
cvtss2sd %xmm1, %xmm1
movsd 0xc298(%rip), %xmm2     # 0x12180
mulsd %xmm0, %xmm2
ucomisd %xmm2, %xmm1
ja 0x5f0f
xorps %xmm1, %xmm1
cvtss2sd 0x184(%rbx), %xmm1
movsd 0xc263(%rip), %xmm2     # 0x12168
mulsd %xmm0, %xmm2
ucomisd %xmm2, %xmm1
jbe 0x5f18
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
xorps %xmm1, %xmm1
movups %xmm1, 0xa0(%rbx)
movq %rax, 0xc8(%rbx)
movq $0x0, 0xc0(%rbx)
movsd 0xc204(%rip), %xmm1     # 0x12140
divsd %xmm0, %xmm1
movsd %xmm1, -0x18(%rbp)
xorl %r14d, %r14d
movq 0xc8(%rbx), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0xc8(%rbx)
movss 0x8(%rax), %xmm0
addss 0xc(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
mulsd -0x18(%rbp), %xmm0
addsd 0xc233(%rip), %xmm0     # 0x121a8
callq 0x21f0
cvttsd2si %xmm0, %eax
testb $0x3, %al
je 0x5f0f
shrl $0x2, %eax
movl %r14d, %ecx
andb $0x7, %cl
shll %cl, %eax
sarl $0x3, %r14d
movslq %r14d, %rcx
orb %al, 0xa0(%rbx,%rcx)
movl 0xc0(%rbx), %eax
leal 0x2(%rax), %r14d
movl %r14d, 0xc0(%rbx)
cmpl $0x16, %eax
jl 0x5f48
movq 0x148(%rbx), %rdi
movzbl 0xa0(%rbx), %edx
movzbl 0xa1(%rbx), %ecx
movzbl 0xa2(%rbx), %r8d
leaq 0xd012(%rip), %rsi      # 0x12fe7
xorl %eax, %eax
callq 0x2060
movzbl 0xa0(%rbx), %eax
movq 0x160(%rbx), %rcx
movl %eax, (%rcx)
movzbl 0xa1(%rbx), %eax
shrl $0x6, %eax
movq 0x168(%rbx), %rcx
movl %eax, (%rcx)
movzbl 0xa1(%rbx), %eax
andl $0x3f, %eax
movq 0x170(%rbx), %rcx
movl %eax, (%rcx)
movb 0xa1(%rbx), %al
xorb 0xa2(%rbx), %al
movq 0x150(%rbx), %rdi
andb $0xf, %al
movzbl %al, %edx
leaq 0xcfc8(%rip), %rsi      # 0x12ff9
xorl %eax, %eax
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
jmp 0x2060