// File: /workspace/github_c_makefile_star2_O0/seuscq[P]rtk_hciattach/hciattach_rtk.c
// Function: h5_unslip_one_byte
static void h5_unslip_one_byte(rtk_hw_cfg_t * h5, unsigned char byte)
{
	const RT_U8 c0 = 0xc0, db = 0xdb;
	const RT_U8 oof1 = 0x11, oof2 = 0x13;

	if (H5_ESCSTATE_NOESC == h5->rx_esc_state) {
		if (0xdb == byte) {
			h5->rx_esc_state = H5_ESCSTATE_ESC;
		} else {
			memcpy(skb_put(h5->rx_skb, 1), &byte, 1);
			//Check Pkt Header's CRC enable bit
			if ((h5->rx_skb->data[0] & 0x40) != 0
			    && h5->rx_state != H5_W4_CRC) {
				h5_crc_update(&h5->message_crc, byte);
			}
			h5->rx_count--;
		}
	} else if (H5_ESCSTATE_ESC == h5->rx_esc_state) {
		switch (byte) {
		case 0xdc:
			memcpy(skb_put(h5->rx_skb, 1), &c0, 1);
			if ((h5->rx_skb->data[0] & 0x40) != 0
			    && h5->rx_state != H5_W4_CRC)
				h5_crc_update(&h5->message_crc, 0xc0);
			h5->rx_esc_state = H5_ESCSTATE_NOESC;
			h5->rx_count--;
			break;

		case 0xdd:
			memcpy(skb_put(h5->rx_skb, 1), &db, 1);
			if ((h5->rx_skb->data[0] & 0x40) != 0
			    && h5->rx_state != H5_W4_CRC)
				h5_crc_update(&h5->message_crc, 0xdb);
			h5->rx_esc_state = H5_ESCSTATE_NOESC;
			h5->rx_count--;
			break;

		case 0xde:
			memcpy(skb_put(h5->rx_skb, 1), &oof1, 1);
			if ((h5->rx_skb->data[0] & 0x40) != 0
			    && h5->rx_state != H5_W4_CRC)
				h5_crc_update(&h5->message_crc, oof1);
			h5->rx_esc_state = H5_ESCSTATE_NOESC;
			h5->rx_count--;
			break;

		case 0xdf:
			memcpy(skb_put(h5->rx_skb, 1), &oof2, 1);
			if ((h5->rx_skb->data[0] & 0x40) != 0
			    && h5->rx_state != H5_W4_CRC)
				h5_crc_update(&h5->message_crc, oof2);
			h5->rx_esc_state = H5_ESCSTATE_NOESC;
			h5->rx_count--;
			break;

		default:
			RS_ERR("Error: Invalid byte %02x after esc byte", byte);
			skb_free(h5->rx_skb);
			h5->rx_skb = NULL;
			h5->rx_state = H5_W4_PKT_DELIMITER;
			h5->rx_count = 0;
			break;
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movb $-0x40, -0xa(%rbp)
movb $-0x25, -0xb(%rbp)
movb $0x11, -0xc(%rbp)
movb $0x13, -0xd(%rbp)
movq -0x8(%rbp), %rcx
xorl %eax, %eax
cmpl 0x10(%rcx), %eax
jne 0x888f
movzbl -0x9(%rbp), %ecx
movl $0xdb, %eax
cmpl %ecx, %eax
jne 0x8837
movq -0x8(%rbp), %rax
movl $0x1, 0x10(%rax)
jmp 0x888a
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movl $0x1, %esi
callq 0x8750
movb -0x9(%rbp), %cl
movb %cl, (%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movzbl 0x8(%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x887d
movq -0x8(%rbp), %rax
cmpl $0x4, 0xc(%rax)
je 0x887d
movq -0x8(%rbp), %rdi
addq $0x6, %rdi
movzbl -0x9(%rbp), %esi
callq 0x8680
movq -0x8(%rbp), %rax
movl 0x8(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x8(%rax)
jmp 0x8ab2
movq -0x8(%rbp), %rcx
movl $0x1, %eax
cmpl 0x10(%rcx), %eax
jne 0x8ab0
movzbl -0x9(%rbp), %eax
addl $0xffffff24, %eax       # imm = 0xFFFFFF24
movl %eax, %ecx
movq %rcx, -0x18(%rbp)
subl $0x3, %eax
ja 0x8a5a
movq -0x18(%rbp), %rax
leaq 0x2b40(%rip), %rcx      # 0xb404
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movl $0x1, %esi
callq 0x8750
movb -0xa(%rbp), %cl
movb %cl, (%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movzbl 0x8(%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x8914
movq -0x8(%rbp), %rax
cmpl $0x4, 0xc(%rax)
je 0x8914
movq -0x8(%rbp), %rdi
addq $0x6, %rdi
movl $0xc0, %esi
callq 0x8680
movq -0x8(%rbp), %rax
movl $0x0, 0x10(%rax)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x8(%rax)
jmp 0x8aae
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movl $0x1, %esi
callq 0x8750
movb -0xb(%rbp), %cl
movb %cl, (%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movzbl 0x8(%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x8978
movq -0x8(%rbp), %rax
cmpl $0x4, 0xc(%rax)
je 0x8978
movq -0x8(%rbp), %rdi
addq $0x6, %rdi
movl $0xdb, %esi
callq 0x8680
movq -0x8(%rbp), %rax
movl $0x0, 0x10(%rax)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x8(%rax)
jmp 0x8aae
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movl $0x1, %esi
callq 0x8750
movb -0xc(%rbp), %cl
movb %cl, (%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movzbl 0x8(%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x89dc
movq -0x8(%rbp), %rax
cmpl $0x4, 0xc(%rax)
je 0x89dc
movq -0x8(%rbp), %rdi
addq $0x6, %rdi
movl $0x11, %esi
callq 0x8680
movq -0x8(%rbp), %rax
movl $0x0, 0x10(%rax)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x8(%rax)
jmp 0x8aae
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movl $0x1, %esi
callq 0x8750
movb -0xd(%rbp), %cl
movb %cl, (%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movzbl 0x8(%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x8a40
movq -0x8(%rbp), %rax
cmpl $0x4, 0xc(%rax)
je 0x8a40
movq -0x8(%rbp), %rdi
addq $0x6, %rdi
movl $0x13, %esi
callq 0x8680
movq -0x8(%rbp), %rax
movl $0x0, 0x10(%rax)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x8(%rax)
jmp 0x8aae
jmp 0x8a5c
movq 0x7595(%rip), %rax      # 0xfff8
movq (%rax), %rdi
movzbl -0x9(%rbp), %ecx
leaq 0x3ae4(%rip), %rsi      # 0xc555
leaq 0x2b11(%rip), %rdx      # 0xb589
movb $0x0, %al
callq 0x2150
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x66c0
movq -0x8(%rbp), %rax
movq $0x0, 0x18(%rax)
movq -0x8(%rbp), %rax
movl $0x0, 0xc(%rax)
movq -0x8(%rbp), %rax
movl $0x0, 0x8(%rax)
jmp 0x8ab0
jmp 0x8ab2
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)