// File: jkingan[P]ladyheather/heathgps.cpp
// Function: decode_ss_msg()
void decode_ss_msg()
{
u08 id;
u08 cid;
u08 len;

   // process the received Novatel SuperStar II message
   start_msg_decode(1);

   id = tsip_byte();
   cid = tsip_byte();
   len = tsip_byte();

   if     (id == 6)   parse_ss_unkn(id,  "Channel assignments 0..5");   // current channel assignment (0..5)
   else if(id == 7)   parse_ss_unkn(id,  "Channel assignments 6..12");   // current channel assignment (6..12)
   else if(id == 20)  parse_ss_nav();     // nav data
   else if(id == 21)  parse_ss_unkn(id,  "ECEF nav data");  // nav data ECEF
   else if(id == 22)  parse_ss_unkn(id,  "Ephemeris data");  // ephemeris data
   else if(id == 23)  parse_ss_raw();     // raw measurement data
   else if(id == 30)  parse_ss_config();  // receiver config
   else if(id == 33)  parse_ss_sats();    // sat visibility and status
   else if(id == 43)  parse_ss_unkn(id,  "DGPS config");  // DGPS config
   else if(id == 45)  parse_ss_id();      // hw/sw id info
   else if(id == 47)  parse_ss_unkn(id,  "Base station data");  // base station data
   else if(id == 48)  parse_ss_unkn(id,  "Differential status");  // differential status
   else if(id == 49)  parse_ss_status(); // receiver status
   else if(id == 50)  parse_ss_health(); // sat health
   else if(id == 51)  parse_ss_test();   // self test results
   else if(id == 65)  parse_ss_unkn(id,  "RTCM data");  // RTCM data message
   else if(id == 67)  parse_ss_unkn(id,  "SBAS data");  // SBAS data
   else if(id == 68)  parse_ss_unkn(id,  "SBAS status");  // SBAS status
   else if(id == 75)  parse_ss_utc()   ; // ionosphere and UTC time data
   else if(id == 76)  parse_ss_unkn(id,  "Almanac data");  // almanac data
   else if(id == 78)  parse_ss_unkn(id,  "Almanac status");  // almanac status
   else if(id == 113) parse_ss_timing(); // timing status
   else if(id == 125) parse_ss_link()  ; // link overflow
   else if(id == 126) parse_ss_ack();    // message acknowledge
   else               parse_ss_unkn(id,  "Unknown message");

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movl $0x1, %edi
callq 0xae4a0
callq 0x7a510
movb %al, -0x1(%rbp)
callq 0x7a510
movb %al, -0x2(%rbp)
callq 0x7a510
movb %al, -0x3(%rbp)
movzbl -0x1(%rbp), %eax
cmpl $0x6, %eax
jne 0xba298
movzbl -0x1(%rbp), %edi
leaq 0xcc456(%rip), %rsi     # 0x1866e4
callq 0xb9350
jmp 0xba4f5
movzbl -0x1(%rbp), %eax
cmpl $0x7, %eax
jne 0xba2b6
movzbl -0x1(%rbp), %edi
leaq 0xcc451(%rip), %rsi     # 0x1866fd
callq 0xb9350
jmp 0xba4f3
movzbl -0x1(%rbp), %eax
cmpl $0x14, %eax
jne 0xba2c9
callq 0xb93a0
jmp 0xba4f1
movzbl -0x1(%rbp), %eax
cmpl $0x15, %eax
jne 0xba2e7
movzbl -0x1(%rbp), %edi
leaq 0xcc43a(%rip), %rsi     # 0x186717
callq 0xb9350
jmp 0xba4ef
movzbl -0x1(%rbp), %eax
cmpl $0x16, %eax
jne 0xba305
movzbl -0x1(%rbp), %edi
leaq 0xcc42a(%rip), %rsi     # 0x186725
callq 0xb9350
jmp 0xba4ed
movzbl -0x1(%rbp), %eax
cmpl $0x17, %eax
jne 0xba318
callq 0xb9630
jmp 0xba4eb
movzbl -0x1(%rbp), %eax
cmpl $0x1e, %eax
jne 0xba32b
callq 0xb9650
jmp 0xba4e9
movzbl -0x1(%rbp), %eax
cmpl $0x21, %eax
jne 0xba33e
callq 0xb9780
jmp 0xba4e7
movzbl -0x1(%rbp), %eax
cmpl $0x2b, %eax
jne 0xba35c
movzbl -0x1(%rbp), %edi
leaq 0xcc3e2(%rip), %rsi     # 0x186734
callq 0xb9350
jmp 0xba4e5
movzbl -0x1(%rbp), %eax
cmpl $0x2d, %eax
jne 0xba36f
callq 0xb99b0
jmp 0xba4e3
movzbl -0x1(%rbp), %eax
cmpl $0x2f, %eax
jne 0xba38d
movzbl -0x1(%rbp), %edi
leaq 0xcc3bd(%rip), %rsi     # 0x186740
callq 0xb9350
jmp 0xba4e1
movzbl -0x1(%rbp), %eax
cmpl $0x30, %eax
jne 0xba3ab
movzbl -0x1(%rbp), %edi
leaq 0xcc3b1(%rip), %rsi     # 0x186752
callq 0xb9350
jmp 0xba4df
movzbl -0x1(%rbp), %eax
cmpl $0x31, %eax
jne 0xba3be
callq 0xb9a90
jmp 0xba4dd
movzbl -0x1(%rbp), %eax
cmpl $0x32, %eax
jne 0xba3d1
callq 0xb9ba0
jmp 0xba4db
movzbl -0x1(%rbp), %eax
cmpl $0x33, %eax
jne 0xba3e4
callq 0xb9c90
jmp 0xba4d9
movzbl -0x1(%rbp), %eax
cmpl $0x41, %eax
jne 0xba402
movzbl -0x1(%rbp), %edi
leaq 0xcc36e(%rip), %rsi     # 0x186766
callq 0xb9350
jmp 0xba4d7
movzbl -0x1(%rbp), %eax
cmpl $0x43, %eax
jne 0xba420
movzbl -0x1(%rbp), %edi
leaq 0xcc35a(%rip), %rsi     # 0x186770
callq 0xb9350
jmp 0xba4d5
movzbl -0x1(%rbp), %eax
cmpl $0x44, %eax
jne 0xba43e
movzbl -0x1(%rbp), %edi
leaq 0xcc346(%rip), %rsi     # 0x18677a
callq 0xb9350
jmp 0xba4d3
movzbl -0x1(%rbp), %eax
cmpl $0x4b, %eax
jne 0xba451
callq 0xb9fe0
jmp 0xba4d1
movzbl -0x1(%rbp), %eax
cmpl $0x4c, %eax
jne 0xba46c
movzbl -0x1(%rbp), %edi
leaq 0xca8c4(%rip), %rsi     # 0x184d29
callq 0xb9350
jmp 0xba4cf
movzbl -0x1(%rbp), %eax
cmpl $0x4e, %eax
jne 0xba487
movzbl -0x1(%rbp), %edi
leaq 0xcc306(%rip), %rsi     # 0x186786
callq 0xb9350
jmp 0xba4cd
movzbl -0x1(%rbp), %eax
cmpl $0x71, %eax
jne 0xba497
callq 0xba080
jmp 0xba4cb
movzbl -0x1(%rbp), %eax
cmpl $0x7d, %eax
jne 0xba4a7
callq 0xba210
jmp 0xba4c9
movzbl -0x1(%rbp), %eax
cmpl $0x7e, %eax
jne 0xba4b7
callq 0xba230
jmp 0xba4c7
movzbl -0x1(%rbp), %edi
leaq 0xcc2d3(%rip), %rsi     # 0x186795
callq 0xb9350
jmp 0xba4c9
jmp 0xba4cb
jmp 0xba4cd
jmp 0xba4cf
jmp 0xba4d1
jmp 0xba4d3
jmp 0xba4d5
jmp 0xba4d7
jmp 0xba4d9
jmp 0xba4db
jmp 0xba4dd
jmp 0xba4df
jmp 0xba4e1
jmp 0xba4e3
jmp 0xba4e5
jmp 0xba4e7
jmp 0xba4e9
jmp 0xba4eb
jmp 0xba4ed
jmp 0xba4ef
jmp 0xba4f1
jmp 0xba4f3
jmp 0xba4f5
leaq 0x1e30a4(%rip), %rax    # 0x29d5a0
cmpq $0x0, (%rax)
je 0xba520
leaq 0x1c82d7(%rip), %rax    # 0x2827e0
cmpq $0x0, (%rax)
je 0xba520
leaq 0x1c82ca(%rip), %rax    # 0x2827e0
movq (%rax), %rax
movl %eax, %edi
callq 0xb8b0
leaq 0x1e3c59(%rip), %rax    # 0x29e180
movl $0x1, (%rax)
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)