// File: /workspace/github_cpp_makefile_star2_O3/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 0x7f2b8
callq 0x587be
cmpl $0x100, %eax            # imm = 0x100
jb 0x9897d
leaq 0x1a65f6(%rip), %rcx    # 0x23ef70
orb $0x8, (%rcx)
movzbl %al, %ecx
cmpl $0xa7, %ecx
jg 0x989aa
leal -0x80(%rcx), %edx
cmpl $0xb, %edx
ja 0x989db
leaq 0x86ecd(%rip), %rcx     # 0x11f864
movslq (%rcx,%rdx,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
callq 0x9787f
jmp 0x98ac1
cmpl $0xc1, %ecx
jle 0x98a01
leal -0xdc(%rcx), %edx
cmpl $0x9, %edx
ja 0x98a73
leaq 0x86ecc(%rip), %rcx     # 0x11f894
movslq (%rcx,%rdx,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
callq 0x97ff8
jmp 0x98ac1
addl $-0x62, %ecx
cmpl $0x8, %ecx
ja 0x98a82
leaq 0x86e52(%rip), %rdx     # 0x11f840
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
callq 0x97534
jmp 0x98ac1
cmpl $0xa8, %ecx
je 0x98a2d
cmpl $0xb0, %ecx
je 0x98a23
cmpl $0xbb, %ecx
jne 0x98a82
callq 0x9722f
jmp 0x98ac1
callq 0x9717e
jmp 0x98ac1
callq 0x96ddb
jmp 0x98ac1
leaq 0x8c0ae(%rip), %rdi     # 0x124aec
jmp 0x98aa0
callq 0x97958
jmp 0x98ac1
callq 0x97980
jmp 0x98ac1
leaq 0x8c08c(%rip), %rdi     # 0x124ae1
jmp 0x98aa0
callq 0x979a8
jmp 0x98ac1
callq 0x974cc
jmp 0x98ac1
callq 0x9737a
jmp 0x98ac1
callq 0x9765a
jmp 0x98ac1
cmpl $0xc2, %ecx
jne 0x98a82
callq 0x97272
jmp 0x98ac1
movzbl %al, %edx
leaq 0x2a3794(%rip), %rbx    # 0x33c220
leaq 0x8c064(%rip), %rsi     # 0x124af7
movq %rbx, %rdi
xorl %eax, %eax
callq 0x9060
movq %rbx, %rdi
callq 0x58dc2
jmp 0x98ac1
callq 0x982ed
jmp 0x98ac1
callq 0x980ef
jmp 0x98ac1
callq 0x97bfb
jmp 0x98ac1
callq 0x979fb
leaq 0x1a58f8(%rip), %rax    # 0x23e3c0
cmpq $0x0, (%rax)
setne %al
leaq 0x18ab2a(%rip), %rcx    # 0x223600
movq (%rcx), %rdi
testq %rdi, %rdi
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x98aeb
callq 0xafe8
leaq 0x1a64ae(%rip), %rax    # 0x23efa0
movl $0x1, (%rax)
addq $0x8, %rsp
popq %rbx
popq %rbp
retq