// File: /workspace/github_cpp_makefile_star2_O1/jkingan[P]ladyheather/heathgps.cpp
// Function: decode_sro_msg()
void decode_sro_msg()
{
char c;
int i;

   start_msg_decode(0);

   nmea_msg[0] = 0;
   for(i=0; i<tsip_wptr; i++) {  // copy message from tsip buffer to nmea buffer
      c = tsip_byte();
      nmea_msg[i] = c;
      nmea_msg[i+1] = 0;
      if(i >= ((int)sizeof(nmea_msg)-12)) break;
   }
   msg_col = 0;     // index of next char to get from nmea buffer

   tsip_wptr = tsip_rptr = 0;
   tsip_sync = 0;

   // get the response from the reciver and pass it to (HOPEFULLY) the routine
   // that expects it...

   strupr(nmea_msg);

if(debug_file) fprintf(debug_file, "Decode msg %d:[%s]\n", polled_msg_id, nmea_msg);
//sprintf(debug_text, "Decode msg %d:[%s]", polled_msg_id, nmea_msg);


   sro_msg_id = polled_msg_id;
   if     (strstr(nmea_msg,  "TNTSRO")) parse_sro_id();
   else if(strstr(nmea_msg,  "RESET")) sro_msg_id = 0;
   else if(strstr(nmea_msg,  "TNT")) sro_msg_id = 0;
   else if(strstr(nmea_msg,  "?")) {
      sro_msg_id = 0;
   }

   else if(sro_msg_id == SRO_M_MSG)      parse_sro_m();
   else if(sro_msg_id == SRO_ID_MSG)     parse_sro_id();
   else if(sro_msg_id == SRO_SN_MSG)     parse_sro_sn();
   else if(sro_msg_id == SRO_ST_MSG)     parse_sro_st();
   else if(sro_msg_id == SRO_TR_MSG)     parse_sro_tr();
   else if(sro_msg_id == SRO_SY_MSG)     parse_sro_sy();
   else if(sro_msg_id == SRO_DE_MSG)     parse_sro_de();
   else if(sro_msg_id == SRO_PW_MSG)     parse_sro_pw();
   else if(sro_msg_id == SRO_FC_MSG)     parse_sro_fc();
   else if(sro_msg_id == SRO_FS_MSG)     parse_sro_fs();
   else if(sro_msg_id == SRO_TW_MSG)     parse_sro_tw();
   else if(sro_msg_id == SRO_AW_MSG)     parse_sro_aw();
   else if(sro_msg_id == SRO_TC_MSG)     parse_sro_tc();
   else if(sro_msg_id == SRO_VS_MSG)     parse_sro_vs();
   else if(sro_msg_id == SRO_VT_MSG)     parse_sro_vt();
   else if(sro_msg_id == SRO_GF_MSG)     parse_sro_gf();
   else if(sro_msg_id == SRO_RA_MSG)     parse_sro_ra();

   else if(sro_msg_id == SRO_L05_MSG)    parse_sro_l05();
   else if(sro_msg_id == SRO_L06_MSG)    parse_sro_l06();
   else if(sro_msg_id == SRO_R05_MSG)    parse_sro_r05();
   else if(sro_msg_id == SRO_R06_MSG)    parse_sro_r06();
   else if(sro_msg_id == SRO_R14_MSG)    parse_sro_r14();
   else if(sro_msg_id == SRO_R15_MSG)    parse_sro_r15();
   else if(sro_msg_id == SRO_R48_MSG)    parse_sro_r48();
   else if(sro_msg_id == SRO_R49_MSG)    parse_sro_r49();
   else if(sro_msg_id == SRO_R4F_MSG)    parse_sro_r4F();

   else if(sro_msg_id == SRO_TD_MSG)     parse_sro_td();
   else if(sro_msg_id == SRO_DT_MSG)     parse_sro_dt();
   else if(sro_msg_id == SRO_RAQUIK_MSG) parse_sro_raquik();

   else if(sro_msg_id == SCPI_USER_MSG)     parse_scpi_user();
   else if(sro_msg_id == (0-SCPI_USER_MSG)) parse_scpi_user();

   i = get_norcvr_message();   // returns true if seconds just ticked
///   if(SLOW_PRS_POLL && (seconds & 0x01));  // enable this to trigger high priority message polls every seoncd
                                              // ... but this slows polling loop cycle to around 1 minute
///   else if(i && (prs_poll_tick == 0)) prs_poll_tick = 1;  // trigger high priority message polls
   poll_next_sro();

   sro_msg_id = 0;

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

   saw_rcvr_msg = 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
xorl %r14d, %r14d
xorl %edi, %edi
callq 0x7f47d
leaq 0x2af91d(%rip), %r15    # 0x33b830
movb $0x0, (%r15)
leaq 0x2ac334(%rip), %rbx    # 0x338252
leaq 0x1b304b(%rip), %r12    # 0x23ef70
movzwl (%rbx), %eax
cmpq %rax, %r14
jae 0x8bf54
callq 0x587d1
cmpl $0x100, %eax            # imm = 0x100
jb 0x8bf3e
orb $0x8, (%r12)
movb %al, (%r14,%r15)
movb $0x0, 0x1(%r14,%r15)
incq %r14
cmpq $0x1f6, %r14            # imm = 0x1F6
jne 0x8bf25
leaq 0x2afce9(%rip), %rax    # 0x33bc44
movl $0x0, (%rax)
leaq 0x2ac2ec(%rip), %rax    # 0x338254
xorl %ecx, %ecx
movw %cx, (%rax)
movw %cx, (%rbx)
leaq 0x2ac2df(%rip), %rax    # 0x338256
movw %cx, (%rax)
leaq 0x2af8af(%rip), %rdi    # 0x33b830
callq 0x9899
leaq 0x1b2403(%rip), %rax    # 0x23e390
movq (%rax), %rdi
testq %rdi, %rdi
je 0x8bfb0
movl 0x2e0c65(%rip), %edx    # 0x36cc00
leaq 0x97984(%rip), %rsi     # 0x123926
leaq 0x2af887(%rip), %rcx    # 0x33b830
xorl %eax, %eax
callq 0x9560
movl 0x2e0c4a(%rip), %ebx    # 0x36cc00
movl %ebx, 0x2e0c58(%rip)    # 0x36cc14
leaq 0x2af86d(%rip), %rdi    # 0x33b830
leaq 0x97970(%rip), %rsi     # 0x12393a
callq 0x9090
testq %rax, %rax
je 0x8bfdb
callq 0x8b25b
jmp 0x8c02b
leaq 0x2af84e(%rip), %rdi    # 0x33b830
leaq 0x946a3(%rip), %rsi     # 0x12068c
callq 0x9090
testq %rax, %rax
jne 0x8c021
leaq 0x2af836(%rip), %rdi    # 0x33b830
leaq 0x97940(%rip), %rsi     # 0x123941
callq 0x9090
testq %rax, %rax
jne 0x8c021
leaq 0x2af81e(%rip), %rdi    # 0x33b830
movl $0x3f, %esi
callq 0x9100
testq %rax, %rax
je 0x8c07f
movl $0x0, 0x2e0be9(%rip)    # 0x36cc14
callq 0x82578
callq 0x6f89c
leaq 0x1b2384(%rip), %rax    # 0x23e3c0
cmpq $0x0, (%rax)
movl $0x0, 0x2e0bca(%rip)    # 0x36cc14
setne %al
leaq 0x1975ac(%rip), %rcx    # 0x223600
movq (%rcx), %rdi
testq %rdi, %rdi
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x8c069
callq 0xaff7
leaq 0x1b2f30(%rip), %rax    # 0x23efa0
movl $0x1, (%rax)
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leal -0x320(%rbx), %eax
cmpl $0x26, %eax
ja 0x8c0a1
leaq 0x93207(%rip), %rcx     # 0x11f298
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
callq 0x8b071
jmp 0x8c02b
cmpl $-0x25, %ebx
je 0x8c0ab
cmpl $0x25, %ebx
jne 0x8c02b
callq 0x8c1c3
jmp 0x8c02b
callq 0x8b760
jmp 0x8c02b
callq 0x8b999
jmp 0x8c02b
callq 0x8b4de
jmp 0x8c02b
callq 0x8b6f7
jmp 0x8c02b
callq 0x8b5cf
jmp 0x8c02b
callq 0x8b2a6
jmp 0x8c02b
callq 0x8b43e
jmp 0x8c02b
callq 0x8b3ee
jmp 0x8c02b
callq 0x8b605
jmp 0x8c02b
callq 0x8b514
jmp 0x8c02b
callq 0x8b34c
jmp 0x8c02b
callq 0x8b2f1
jmp 0x8c02b
callq 0x8b957
jmp 0x8c02b
callq 0x8b655
jmp 0x8c02b
callq 0x8b382
jmp 0x8c02b
callq 0x8b3b8
jmp 0x8c02b
callq 0x8b796
jmp 0x8c02b
callq 0x8b8d4
jmp 0x8c02b
callq 0x8b4a8
jmp 0x8c02b
callq 0x8b921
jmp 0x8c02b
callq 0x8b54a
jmp 0x8c02b
callq 0x8b68b
jmp 0x8c02b
callq 0x8b978
jmp 0x8c02b
callq 0x8b835
jmp 0x8c02b
callq 0x8b6c1
jmp 0x8c02b
callq 0x8b7ff
jmp 0x8c02b
callq 0x8b89e
jmp 0x8c02b