// File: /workspace/github_c_makefile_star2_O0/seuscq[P]rtk_hciattach/hciattach_rtk.c
// Function: hci_recv_frame
static void hci_recv_frame(struct sk_buff *skb)
{
	int len;
	unsigned char h5sync[2] = { 0x01, 0x7E }, h5syncresp[2] = {
	0x02, 0x7D}, h5_sync_resp_pkt[0x8] = {
	0xc0, 0x00, 0x2F, 0x00, 0xD0, 0x02, 0x7D, 0xc0},
	    h5_conf_resp_pkt_to_Ctrl[0x8] = {
	0xc0, 0x00, 0x2F, 0x00, 0xD0, 0x04, 0x7B, 0xc0}, h5conf[3] = {
	0x03, 0xFC, 0x10}, h5confresp[3] = {
	0x04, 0x7B, 0x10}, cmd_complete_evt_code = 0xe;

	if (rtk_hw_cfg.link_estab_state == H5_SYNC) {
		if (!memcmp(skb->data, h5sync, 2)) {
			RS_DBG("Get SYNC Pkt\n");
			len =
			    write(rtk_hw_cfg.serial_fd, &h5_sync_resp_pkt, 0x8);
		} else if (!memcmp(skb->data, h5syncresp, 2)) {
			RS_DBG("Get SYNC Resp Pkt\n");
			rtk_hw_cfg.link_estab_state = H5_CONFIG;
		}
		skb_free(skb);
	} else if (rtk_hw_cfg.link_estab_state == H5_CONFIG) {
		if (!memcmp(skb->data, h5sync, 0x2)) {
			len =
			    write(rtk_hw_cfg.serial_fd, &h5_sync_resp_pkt, 0x8);
			RS_DBG("Get SYNC pkt-active mode\n");
		} else if (!memcmp(skb->data, h5conf, 0x2)) {
			len =
			    write(rtk_hw_cfg.serial_fd,
				  &h5_conf_resp_pkt_to_Ctrl, 0x8);
			RS_DBG("Get CONFG pkt-active mode\n");
		} else if (!memcmp(skb->data, h5confresp, 0x2)) {
			RS_DBG("Get CONFG resp pkt-active mode\n");
			rtk_hw_cfg.link_estab_state = H5_INIT;
		} else {
			RS_DBG("H5_CONFIG receive event\n");
			rtk_send_pure_ack_down(rtk_hw_cfg.serial_fd);
		}
		skb_free(skb);
	} else if (rtk_hw_cfg.link_estab_state == H5_INIT) {
		if (skb->data[0] == cmd_complete_evt_code) {
			hci_event_cmd_complete(skb);
		}

		rtk_send_pure_ack_down(rtk_hw_cfg.serial_fd);
		usleep(10000);
		rtk_send_pure_ack_down(rtk_hw_cfg.serial_fd);
		usleep(10000);
		rtk_send_pure_ack_down(rtk_hw_cfg.serial_fd);
		skb_free(skb);
	} else if (rtk_hw_cfg.link_estab_state == H5_PATCH) {
		if (skb->data[0] != 0x0e) {
			RS_DBG("Received event 0x%x\n", skb->data[0]);
			skb_free(skb);
			rtk_send_pure_ack_down(rtk_hw_cfg.serial_fd);
			return;
		}

		rtk_hw_cfg.rx_index = skb->data[6];

		RS_DBG("rtk_hw_cfg.rx_index %d\n", rtk_hw_cfg.rx_index);

		/* Download fw/config done */
		if (rtk_hw_cfg.rx_index & 0x80) {
			rtk_hw_cfg.rx_index &= ~0x80;
			rtk_hw_cfg.link_estab_state = H5_ACTIVE;
		}

		skb_free(skb);
	} else {
		RS_ERR("receive packets in active state");
		skb_free(skb);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movw 0x26cd(%rip), %ax       # 0xb570
movw %ax, -0xe(%rbp)
movw 0x26c4(%rip), %ax       # 0xb572
movw %ax, -0x10(%rbp)
movq 0x43bf(%rip), %rax      # 0xd278
movq %rax, -0x18(%rbp)
movq 0x43bc(%rip), %rax      # 0xd280
movq %rax, -0x20(%rbp)
movw 0x26a5(%rip), %ax       # 0xb574
movw %ax, -0x23(%rbp)
movb 0x269d(%rip), %al       # 0xb576
movb %al, -0x21(%rbp)
movw 0x2694(%rip), %ax       # 0xb577
movw %ax, -0x26(%rbp)
movb 0x268c(%rip), %al       # 0xb579
movb %al, -0x24(%rbp)
movb $0xe, -0x27(%rbp)
cmpl $0x0, 0x77e9(%rip)      # 0x106e4
jne 0x8fcc
movq -0x8(%rbp), %rax
addq $0x8, %rax
leaq -0xe(%rbp), %rcx
movw (%rcx), %cx
movw (%rax), %ax
subw %cx, %ax
setne %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x8f66
jmp 0x8f23
cmpb $0x0, 0x73a6(%rip)      # 0x102d0
je 0x8f4b
movq 0x70c5(%rip), %rax      # 0xfff8
movq (%rax), %rdi
leaq 0x36e6(%rip), %rsi      # 0xc623
leaq 0x2645(%rip), %rdx      # 0xb589
movb $0x0, %al
callq 0x2150
jmp 0x8f4d
movl 0x77bd(%rip), %edi      # 0x10710
leaq -0x18(%rbp), %rsi
movl $0x8, %edx
callq 0x2070
movl %eax, -0xc(%rbp)
jmp 0x8fbe
movq -0x8(%rbp), %rax
addq $0x8, %rax
leaq -0x10(%rbp), %rcx
movw (%rcx), %cx
movw (%rax), %ax
subw %cx, %ax
setne %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x8fbc
jmp 0x8f88
cmpb $0x0, 0x7341(%rip)      # 0x102d0
je 0x8fb0
movq 0x7060(%rip), %rax      # 0xfff8
movq (%rax), %rdi
leaq 0x3694(%rip), %rsi      # 0xc636
leaq 0x25e0(%rip), %rdx      # 0xb589
movb $0x0, %al
callq 0x2150
jmp 0x8fb2
movl $0x1, 0x7728(%rip)      # 0x106e4
jmp 0x8fbe
movq -0x8(%rbp), %rdi
callq 0x66c0
jmp 0x92b6
cmpl $0x1, 0x7711(%rip)      # 0x106e4
jne 0x9146
movq -0x8(%rbp), %rax
addq $0x8, %rax
leaq -0xe(%rbp), %rcx
movw (%rcx), %cx
movw (%rax), %ax
subw %cx, %ax
setne %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x903f
movl 0x7711(%rip), %edi      # 0x10710
leaq -0x18(%rbp), %rsi
movl $0x8, %edx
callq 0x2070
movl %eax, -0xc(%rbp)
cmpb $0x0, 0x72b9(%rip)      # 0x102d0
je 0x9038
movq 0x6fd8(%rip), %rax      # 0xfff8
movq (%rax), %rdi
leaq 0x3624(%rip), %rsi      # 0xc64e
leaq 0x2558(%rip), %rdx      # 0xb589
movb $0x0, %al
callq 0x2150
jmp 0x903a
jmp 0x9138
movq -0x8(%rbp), %rax
addq $0x8, %rax
leaq -0x23(%rbp), %rcx
movw (%rcx), %cx
movw (%rax), %ax
subw %cx, %ax
setne %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x90a5
movl 0x76ab(%rip), %edi      # 0x10710
leaq -0x20(%rbp), %rsi
movl $0x8, %edx
callq 0x2070
movl %eax, -0xc(%rbp)
cmpb $0x0, 0x7253(%rip)      # 0x102d0
je 0x909e
movq 0x6f72(%rip), %rax      # 0xfff8
movq (%rax), %rdi
leaq 0x35dd(%rip), %rsi      # 0xc66d
leaq 0x24f2(%rip), %rdx      # 0xb589
movb $0x0, %al
callq 0x2150
jmp 0x90a0
jmp 0x9136
movq -0x8(%rbp), %rax
addq $0x8, %rax
leaq -0x26(%rbp), %rcx
movw (%rcx), %cx
movw (%rax), %ax
subw %cx, %ax
setne %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x90fd
jmp 0x90c7
cmpb $0x0, 0x7202(%rip)      # 0x102d0
je 0x90ef
movq 0x6f21(%rip), %rax      # 0xfff8
movq (%rax), %rdi
leaq 0x35ac(%rip), %rsi      # 0xc68d
leaq 0x24a1(%rip), %rdx      # 0xb589
movb $0x0, %al
callq 0x2150
jmp 0x90f1
movl $0x2, 0x75e9(%rip)      # 0x106e4
jmp 0x9134
jmp 0x90ff
cmpb $0x0, 0x71ca(%rip)      # 0x102d0
je 0x9127
movq 0x6ee9(%rip), %rax      # 0xfff8
movq (%rax), %rdi
leaq 0x3599(%rip), %rsi      # 0xc6b2
leaq 0x2469(%rip), %rdx      # 0xb589
movb $0x0, %al
callq 0x2150
jmp 0x9129
movl 0x75e1(%rip), %edi      # 0x10710
callq 0x62b0
jmp 0x9136
jmp 0x9138
movq -0x8(%rbp), %rdi
callq 0x66c0
jmp 0x92b4
cmpl $0x2, 0x7597(%rip)      # 0x106e4
jne 0x91ab
movq -0x8(%rbp), %rax
movzbl 0x8(%rax), %eax
movzbl -0x27(%rbp), %ecx
cmpl %ecx, %eax
jne 0x9168
movq -0x8(%rbp), %rdi
callq 0x92c0
movl 0x75a2(%rip), %edi      # 0x10710
callq 0x62b0
movl $0x2710, %edi           # imm = 0x2710
callq 0x22d0
movl 0x758d(%rip), %edi      # 0x10710
callq 0x62b0
movl $0x2710, %edi           # imm = 0x2710
callq 0x22d0
movl 0x7578(%rip), %edi      # 0x10710
callq 0x62b0
movq -0x8(%rbp), %rdi
callq 0x66c0
jmp 0x92b2
cmpl $0x3, 0x7532(%rip)      # 0x106e4
jne 0x9286
movq -0x8(%rbp), %rax
movzbl 0x8(%rax), %eax
cmpl $0xe, %eax
je 0x9212
jmp 0x91c7
cmpb $0x0, 0x7102(%rip)      # 0x102d0
je 0x91f7
movq 0x6e21(%rip), %rax      # 0xfff8
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movzbl 0x8(%rax), %ecx
leaq 0x34e7(%rip), %rsi      # 0xc6d0
leaq 0x2399(%rip), %rdx      # 0xb589
movb $0x0, %al
callq 0x2150
jmp 0x91f9
movq -0x8(%rbp), %rdi
callq 0x66c0
movl 0x7508(%rip), %edi      # 0x10710
callq 0x62b0
jmp 0x92b6
movq -0x8(%rbp), %rax
movzbl 0xe(%rax), %eax
movl %eax, 0x7508(%rip)      # 0x10728
cmpb $0x0, 0x70a9(%rip)      # 0x102d0
je 0x924e
movq 0x6dc8(%rip), %rax      # 0xfff8
movq (%rax), %rdi
movl 0x74ef(%rip), %ecx      # 0x10728
leaq 0x34aa(%rip), %rsi      # 0xc6ea
leaq 0x2342(%rip), %rdx      # 0xb589
movb $0x0, %al
callq 0x2150
jmp 0x9250
movl 0x74d2(%rip), %eax      # 0x10728
andl $0x80, %eax
cmpl $0x0, %eax
je 0x927b
movl 0x74c2(%rip), %eax      # 0x10728
andl $0xffffff7f, %eax       # imm = 0xFFFFFF7F
movl %eax, 0x74b7(%rip)      # 0x10728
movl $0x4, 0x7469(%rip)      # 0x106e4
movq -0x8(%rbp), %rdi
callq 0x66c0
jmp 0x92b0
jmp 0x9288
movq 0x6d69(%rip), %rax      # 0xfff8
movq (%rax), %rdi
leaq 0x346e(%rip), %rsi      # 0xc707
leaq 0x22e9(%rip), %rdx      # 0xb589
movb $0x0, %al
callq 0x2150
movq -0x8(%rbp), %rdi
callq 0x66c0
jmp 0x92b2
jmp 0x92b4
jmp 0x92b6
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)