// File: probonopd[P]decodeir/DecodeIR.cpp
// Function: Signal::trySingleBurstSize()
void Signal::trySingleBurstSize()
{
    // pid-0003 16 bits, no end pulse

    if ( nFrameL != 16 )
        return;

    if ( sortBurst.min1 * 1.3 < sortBurst.max1 )
        return;

    if ( sortOn.min1 * 1.4 < sortOn.max1 )
        nMaxShort = (sortOn.min1 + sortOn.max1) * .5;
    else
        nMaxShort = (sortBurst.min1 + sortBurst.max1) * .25;
    cleanup();
    while ( nBit <= nFrameL )
    {
        if ( pBit[0] > nMaxShort )
        {
			cBits[nBit>>3] |= 1 << (nBit & 7);
        }
        pBit += 2;
        nBit++;
    }

    switch ( nFrameL )
    {
        case 16:
            if ( cBits[0] + cBits[1] == 255 )
            {
                // {40.2k,389}<2,-2|3,-1>(F:8,~F:8,^102k)+
                //
        		strcpy(pProtocol, "pid-0003");
            	*pOBC = cBits[0];
                *pHex = msb(*pOBC);

				newPreemptValue = prByPid_0001;    // Avoid Async decode
				newPreemptLength = 16;
            }
            return;
    }

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x10(%rbp)
cmpl $0x10, 0x48(%rax)
je 0x126ff
jmp 0x128d0
movq -0x10(%rbp), %rax
movss 0x1d0(%rax), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x7c19(%rip), %xmm0     # 0x1a330
mulsd %xmm0, %xmm1
movss 0x1dc(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x12732
jmp 0x128d0
movq -0x10(%rbp), %rax
movss 0x180(%rax), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x7d9e(%rip), %xmm0     # 0x1a4e8
mulsd %xmm0, %xmm1
movss 0x184(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
ucomisd %xmm1, %xmm0
jbe 0x12792
movq -0x10(%rbp), %rax
movss 0x180(%rax), %xmm0
addss 0x184(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x7a40(%rip), %xmm1     # 0x1a1c0
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xe8(%rax)
jmp 0x127c2
movq -0x10(%rbp), %rax
movss 0x1d0(%rax), %xmm0
addss 0x1dc(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0x7ae6(%rip), %xmm1     # 0x1a298
mulsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0xe8(%rax)
movq -0x10(%rbp), %rdi
callq 0x16180
movq -0x10(%rbp), %rcx
movl 0xc0(%rcx), %eax
cmpl 0x48(%rcx), %eax
jg 0x1284a
movq -0x10(%rbp), %rax
movq 0xc8(%rax), %rcx
movss (%rcx), %xmm0
ucomiss 0xe8(%rax), %xmm0
jbe 0x12823
movq -0x10(%rbp), %rax
movl 0xc0(%rax), %ecx
andl $0x7, %ecx
movl $0x1, %esi
shll %cl, %esi
movl 0xc0(%rax), %ecx
sarl $0x3, %ecx
movslq %ecx, %rcx
movzbl 0xa0(%rax,%rcx), %edx
orl %esi, %edx
movb %dl, 0xa0(%rax,%rcx)
movq -0x10(%rbp), %rax
movq 0xc8(%rax), %rcx
addq $0x8, %rcx
movq %rcx, 0xc8(%rax)
movl 0xc0(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xc0(%rax)
jmp 0x127cb
movq -0x10(%rbp), %rax
movl 0x48(%rax), %eax
subl $0x10, %eax
jne 0x128d0
jmp 0x12858
movq -0x10(%rbp), %rcx
movzbl 0xa0(%rcx), %eax
movzbl 0xa1(%rcx), %ecx
addl %ecx, %eax
cmpl $0xff, %eax
jne 0x128ce
movq -0x10(%rbp), %rax
movq 0x148(%rax), %rdi
leaq 0x8851(%rip), %rsi      # 0x1b0d6
callq 0x2120
movq -0x10(%rbp), %rdi
movzbl 0xa0(%rdi), %ecx
movq 0x170(%rdi), %rax
movl %ecx, (%rax)
movq 0x170(%rdi), %rax
movl (%rax), %esi
movl $0x8, %edx
callq 0x15e70
movl %eax, %edx
movq -0x10(%rbp), %rax
movq 0x178(%rax), %rcx
movl %edx, (%rcx)
movl $0x2, 0x5c(%rax)
movl $0x10, 0x58(%rax)
jmp 0x128d0
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)