// File: /workspace/github_cpp_makefile_star2_O1/jkingan[P]ladyheather/heathgps.cpp
// Function: decode_venus_msg()
void decode_venus_msg()
{
u08 id;

   // process the received Venus message
   start_msg_decode(1);

   id = tsip_byte();
// if(debug_file) fprintf(debug_file, "decode venus:%02X (%d)  len:%d\n", id,id, venus_msg_len);

   if     (id == VENUS_NAV_MSG)      parse_venus_nav();
   else if(id == VENUS_MASK_MSG)     parse_venus_masks();
   else if(id == VENUS_CABLE_MSG)    parse_venus_cable();
   else if(id == VENUS_SURVEY_MSG)   parse_venus_survey(id);
   else if(id == VENUS_BASE_MSG)     parse_venus_survey(id);
   else if(id == VENUS_PPS_MSG)      parse_venus_pps();
   else if(id == VENUS_RTK_MSG)      parse_venus_rtk();
   else if(id == VENUS_BOOT_MSG)     parse_venus_status();
   else if(id == VENUS_TIME_MSG)     parse_venus_status();
   else if(id == VENUS_JAMMING_MSG)  parse_venus_status();
   else if(id == VENUS_GNSS_MSG)     parse_venus_sbas();
   else if(id == VENUS_SBAS_MSG)     parse_venus_sbas();
   else if(id == VENUS_QZSS_MSG)     parse_venus_status();
   else if(id == VENUS_VERSION_MSG)  parse_venus_version();
   else if(id == VENUS_ACK_MSG)      parse_venus_ack();
   else if(id == VENUS_NAK_MSG)      parse_venus_nak();
   else if(id == VENUS_RATE_MSG)     parse_venus_rate();
   else if(id == VENUS_MTIME_MSG)    parse_venus_mtime();
   else if(id == VENUS_RAW_MSG)      parse_venus_raw();
   else if(id == VENUS_SV_MSG)       parse_venus_sv();
   else if(id == VENUS_XNAV_MSG)     parse_venus_xnav();
   else if(id == VENUS_EXTRAW_MSG)   parse_venus_ext_raw();
   else if(id == VENUS_RTCM_MSG)     parse_venus_rtcm();
   else if(id == VENUS_MEAS_MSG)     parse_venus_meas();
   else                              parse_venus_unkn(id);

   if(sim_file && sim_delay) {  // throttle sim file messages
      Sleep(sim_delay);
   }
   saw_rcvr_msg = 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movl $0x1, %edi
callq 0x7f47d
callq 0x587d1
cmpl $0x100, %eax            # imm = 0x100
jb 0x98871
leaq 0x1a6702(%rip), %rcx    # 0x23ef70
orb $0x8, (%rcx)
movzbl %al, %ecx
cmpl $0xa7, %ecx
jg 0x9889e
leal -0x80(%rcx), %edx
cmpl $0xb, %edx
ja 0x988cf
leaq 0x86f01(%rip), %rcx     # 0x11f78c
movslq (%rcx,%rdx,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
callq 0x97759
jmp 0x989b5
cmpl $0xc1, %ecx
jle 0x988f5
leal -0xdc(%rcx), %edx
cmpl $0x9, %edx
ja 0x98967
leaq 0x86f00(%rip), %rcx     # 0x11f7bc
movslq (%rcx,%rdx,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
callq 0x97ee3
jmp 0x989b5
addl $-0x62, %ecx
cmpl $0x8, %ecx
ja 0x98976
leaq 0x86e86(%rip), %rdx     # 0x11f768
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
callq 0x9740e
jmp 0x989b5
cmpl $0xa8, %ecx
je 0x98921
cmpl $0xb0, %ecx
je 0x98917
cmpl $0xbb, %ecx
jne 0x98976
callq 0x97109
jmp 0x989b5
callq 0x97058
jmp 0x989b5
callq 0x96cb5
jmp 0x989b5
leaq 0x8c0da(%rip), %rdi     # 0x124a0c
jmp 0x98994
callq 0x97832
jmp 0x989b5
callq 0x9785a
jmp 0x989b5
leaq 0x8c0b8(%rip), %rdi     # 0x124a01
jmp 0x98994
callq 0x97882
jmp 0x989b5
callq 0x973a6
jmp 0x989b5
callq 0x97254
jmp 0x989b5
callq 0x97534
jmp 0x989b5
cmpl $0xc2, %ecx
jne 0x98976
callq 0x9714c
jmp 0x989b5
movzbl %al, %edx
leaq 0x2a38a0(%rip), %rbx    # 0x33c220
leaq 0x8c090(%rip), %rsi     # 0x124a17
movq %rbx, %rdi
xorl %eax, %eax
callq 0x9060
movq %rbx, %rdi
callq 0x58e77
jmp 0x989b5
callq 0x981e1
jmp 0x989b5
callq 0x97fda
jmp 0x989b5
callq 0x97ae6
jmp 0x989b5
callq 0x978d5
leaq 0x1a5a04(%rip), %rax    # 0x23e3c0
cmpq $0x0, (%rax)
setne %al
leaq 0x18ac36(%rip), %rcx    # 0x223600
movq (%rcx), %rdi
testq %rdi, %rdi
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x989df
callq 0xaff7
leaq 0x1a65ba(%rip), %rax    # 0x23efa0
movl $0x1, (%rax)
addq $0x8, %rsp
popq %rbx
popq %rbp
retq