// File: /workspace/github_cpp_makefile_star2_O1/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
pushq %rbx
pushq %rax
movl $0x1, %edi
callq 0x7f47d
callq 0x587d1
movl %eax, %ebx
cmpl $0x100, %eax            # imm = 0x100
jb 0x881ca
leaq 0x1b6da9(%rip), %rax    # 0x23ef70
orb $0x8, (%rax)
callq 0x587d1
cmpl $0x100, %eax            # imm = 0x100
jb 0x881e0
leaq 0x1b6d93(%rip), %rax    # 0x23ef70
orb $0x8, (%rax)
callq 0x587d1
cmpl $0x100, %eax            # imm = 0x100
jb 0x881f6
leaq 0x1b6d7d(%rip), %rax    # 0x23ef70
orb $0x8, (%rax)
movzbl %bl, %eax
cmpl $0x40, %eax
jg 0x88224
leal -0x14(%rax), %ecx
cmpl $0x1f, %ecx
ja 0x8828b
leaq 0x96ebf(%rip), %rax     # 0x11f0d0
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
callq 0x8708c
jmp 0x8846c
cmpl $0x70, %eax
jg 0x88264
addl $-0x41, %eax
cmpl $0xd, %eax
ja 0x88416
leaq 0x96f14(%rip), %rcx     # 0x11f150
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x2b3fd4(%rip), %rdi    # 0x33c220
leaq 0x9afeb(%rip), %rsi     # 0x12323e
leaq 0x9b145(%rip), %rbx     # 0x12339f
movl $0x41, %edx
jmp 0x8845a
cmpl $0x71, %eax
je 0x88430
cmpl $0x7d, %eax
je 0x88437
cmpl $0x7e, %eax
jne 0x88416
leaq 0x9b083(%rip), %rdi     # 0x123309
jmp 0x88467
cmpl $0x6, %eax
je 0x88440
cmpl $0x7, %eax
jne 0x88416
leaq 0x2b3f7c(%rip), %rdi    # 0x33c220
leaq 0x9af93(%rip), %rsi     # 0x12323e
leaq 0x9b084(%rip), %rbx     # 0x123336
movl $0x7, %edx
jmp 0x8845a
leaq 0x2b3f5d(%rip), %rdi    # 0x33c220
leaq 0x9af74(%rip), %rsi     # 0x12323e
leaq 0x996e8(%rip), %rbx     # 0x1219b9
movl $0x4c, %edx
jmp 0x8845a
leaq 0x2b3f3e(%rip), %rdi    # 0x33c220
leaq 0x9af55(%rip), %rsi     # 0x12323e
leaq 0x9b0b9(%rip), %rbx     # 0x1233a9
movl $0x43, %edx
jmp 0x8845a
leaq 0x2b3f1f(%rip), %rdi    # 0x33c220
leaq 0x9af36(%rip), %rsi     # 0x12323e
leaq 0x9b0a4(%rip), %rbx     # 0x1233b3
movl $0x44, %edx
jmp 0x8845a
callq 0x87da4
jmp 0x8846c
leaq 0x2b3ef6(%rip), %rdi    # 0x33c220
leaq 0x9af0d(%rip), %rsi     # 0x12323e
leaq 0x9b087(%rip), %rbx     # 0x1233bf
movl $0x4e, %edx
jmp 0x8845a
leaq 0x2b3ed7(%rip), %rdi    # 0x33c220
leaq 0x9aeee(%rip), %rsi     # 0x12323e
leaq 0x9b007(%rip), %rbx     # 0x12335e
movl $0x16, %edx
jmp 0x8845a
leaq 0x2b3eb8(%rip), %rdi    # 0x33c220
leaq 0x9aecf(%rip), %rsi     # 0x12323e
leaq 0x9aff7(%rip), %rbx     # 0x12336d
movl $0x2b, %edx
jmp 0x8845a
leaq 0x2b3e99(%rip), %rdi    # 0x33c220
leaq 0x9aeb0(%rip), %rsi     # 0x12323e
leaq 0x9afbb(%rip), %rbx     # 0x123350
movl $0x15, %edx
jmp 0x8845a
callq 0x876e5
jmp 0x8846c
leaq 0x9aeb2(%rip), %rdi     # 0x123262
jmp 0x88467
callq 0x8734f
jmp 0x8846c
callq 0x874b4
jmp 0x8846c
leaq 0x2b3e50(%rip), %rdi    # 0x33c220
leaq 0x9ae67(%rip), %rsi     # 0x12323e
leaq 0x9af9b(%rip), %rbx     # 0x123379
movl $0x2f, %edx
jmp 0x8845a
leaq 0x2b3e34(%rip), %rdi    # 0x33c220
leaq 0x9ae4b(%rip), %rsi     # 0x12323e
leaq 0x9af91(%rip), %rbx     # 0x12338b
movl $0x30, %edx
jmp 0x8845a
callq 0x87897
jmp 0x8846c
callq 0x87af7
jmp 0x8846c
callq 0x87b96
jmp 0x8846c
movzbl %bl, %edx
leaq 0x2b3e00(%rip), %rdi    # 0x33c220
leaq 0x9ae17(%rip), %rsi     # 0x12323e
leaq 0x9afa0(%rip), %rbx     # 0x1233ce
jmp 0x8845a
callq 0x87f33
jmp 0x8846c
leaq 0x9aebd(%rip), %rdi     # 0x1232fb
jmp 0x88467
leaq 0x2b3dd9(%rip), %rdi    # 0x33c220
leaq 0x9adf0(%rip), %rsi     # 0x12323e
leaq 0x9aec8(%rip), %rbx     # 0x12331d
movl $0x6, %edx
movq %rbx, %rcx
xorl %eax, %eax
callq 0x9060
movq %rbx, %rdi
callq 0x58e77
leaq 0x1b5f4d(%rip), %rax    # 0x23e3c0
cmpq $0x0, (%rax)
setne %al
leaq 0x19b17f(%rip), %rcx    # 0x223600
movq (%rcx), %rdi
testq %rdi, %rdi
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x88496
callq 0xaff7
leaq 0x1b6b03(%rip), %rax    # 0x23efa0
movl $0x1, (%rax)
addq $0x8, %rsp
popq %rbx
popq %rbp
retq