// File: /workspace/github_cpp_makefile_star2_O2/jkingan[P]ladyheather/heathgps.cpp
// Function: decode_true_message()
void decode_true_message()
{
char c;
int i;
static int row = 0;

   venus_nmea = 0;
   start_msg_decode(1);

   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_msg buffer
   get_msg_field(); // get the NMEA message type 

   if     (!strcmp(msg_field, "CLOCK"))          parse_true_clock();
   else if(!strcmp(msg_field, "DISCARD"))        parse_true_discard();
   else if(!strcmp(msg_field, "ESN"))            parse_true_esn();
   else if(!strcmp(msg_field, "EXTSTATUS"))      parse_true_extstatus();
   else if(!strcmp(msg_field, "GETA"))           parse_true_geta();
   else if(!strcmp(msg_field, "GETBDELAY"))      parse_true_getbdelay();
   else if(!strcmp(msg_field, "GETDELAY"))       parse_true_getdelay();
   else if(!strcmp(msg_field, "GETPOS"))         parse_true_getpos(0);
   else if(!strcmp(msg_field, "GETP"))           parse_true_getp();
   else if(!strcmp(msg_field, "GETSCALEFACTOR")) parse_true_scale();
   else if(!strcmp(msg_field, "GETVER"))         parse_true_getver();
   else if(!strcmp(msg_field, "KALDBG"))         parse_true_kaldbg();
   else if(!strcmp(msg_field, "LEAVE"))          parse_true_leave();
   else if(!strcmp(msg_field, "PPSDBG"))         parse_true_ppsdbg();
   else if(!strcmp(msg_field, "PROCEED")) ;
   else if(!strcmp(msg_field, "SAT"))            parse_true_sat();
   else if(!strcmp(msg_field, "SET1PPS"))        parse_true_set1pps();
   else if(!strcmp(msg_field, "SPIW"))           parse_true_spiw();
   else if(!strcmp(msg_field, "STATUS"))         parse_true_status();
   else if(!strcmp(msg_field, "SURVEY"))         parse_true_getpos(1);
   else if(!strcmp(msg_field, "TRAIM"))          parse_true_traim();
   else if(!strcmp(msg_field, "UPDATE"))         parse_true_update();
   else if(!strcmp(msg_field, "WSAT"))           parse_true_wsat();
   else if(debug_file) {
      fprintf(debug_file, "Unknown message:%s\n", nmea_msg);
   }

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
andl $0x0, 0x2dba97(%rip)    # 0x356ae4
pushq $0x1
popq %rdi
callq 0x73dcb
leaq 0x2aa7d4(%rip), %rbx    # 0x325830
movb $0x0, (%rbx)
xorl %r14d, %r14d
leaq 0x2a71e9(%rip), %r15    # 0x322252
movzwl (%r15), %eax
cmpq %rax, %r14
jae 0x7b08d
callq 0x51c47
movb %al, (%r14,%rbx)
movb $0x0, 0x1(%r14,%rbx)
incq %r14
cmpq $0x1f6, %r14            # imm = 0x1F6
jne 0x7b069
leaq 0x2aabb0(%rip), %rax    # 0x325c44
andl $0x0, (%rax)
callq 0x75767
leaq 0x2aa99d(%rip), %rbx    # 0x325a40
leaq 0x93518(%rip), %rsi     # 0x10e5c2
pushq $0x6
popq %rdx
movq %rbx, %rdi
callq 0x9380
testl %eax, %eax
je 0x7b0d5
movq (%rbx), %rbx
movabsq $0x44524143534944, %rax # imm = 0x44524143534944
cmpq %rax, %rbx
jne 0x7b0df
callq 0x9b6ee
jmp 0x7b2a2
callq 0x9ad4b
jmp 0x7b2a2
cmpl $0x4e5345, %ebx         # imm = 0x4E5345
jne 0x7b0f1
callq 0x9b6ff
jmp 0x7b2a2
leaq 0x2aa948(%rip), %rdi    # 0x325a40
leaq 0x950cd(%rip), %rsi     # 0x1101cc
pushq $0xa
popq %rdx
callq 0x9380
testl %eax, %eax
je 0x7b255
leaq 0x2aa92a(%rip), %rdi    # 0x325a40
leaq 0x8f750(%rip), %rsi     # 0x10a86d
pushq $0x5
popq %rdx
callq 0x9380
testl %eax, %eax
je 0x7b25c
leaq 0x2aa90c(%rip), %rdi    # 0x325a40
leaq 0x8fc01(%rip), %rsi     # 0x10ad3c
pushq $0xa
popq %rdx
callq 0x9380
testl %eax, %eax
je 0x7b263
leaq 0x2aa8ee(%rip), %rdi    # 0x325a40
leaq 0x8fbd9(%rip), %rsi     # 0x10ad32
pushq $0x9
popq %rdx
callq 0x9380
testl %eax, %eax
je 0x7b26a
leaq 0x2aa8d0(%rip), %rdi    # 0x325a40
leaq 0x8f74b(%rip), %rsi     # 0x10a8c2
pushq $0x7
popq %rdx
callq 0x9380
testl %eax, %eax
je 0x7b271
leaq 0x2aa8b2(%rip), %rdi    # 0x325a40
leaq 0x8fbb2(%rip), %rsi     # 0x10ad47
pushq $0x5
popq %rdx
callq 0x9380
testl %eax, %eax
je 0x7b27a
leaq 0x2aa894(%rip), %rdi    # 0x325a40
leaq 0x8fb9a(%rip), %rsi     # 0x10ad4d
pushq $0xf
popq %rdx
callq 0x9380
testl %eax, %eax
je 0x7b281
leaq 0x2aa876(%rip), %rdi    # 0x325a40
leaq 0x8f646(%rip), %rsi     # 0x10a817
pushq $0x7
popq %rdx
callq 0x9380
testl %eax, %eax
je 0x7b288
leaq 0x2aa858(%rip), %rdi    # 0x325a40
leaq 0x94fe7(%rip), %rsi     # 0x1101d6
pushq $0x7
popq %rdx
callq 0x9380
testl %eax, %eax
je 0x7b28f
leaq 0x2aa83a(%rip), %rdi    # 0x325a40
leaq 0x94fd0(%rip), %rsi     # 0x1101dd
pushq $0x6
popq %rdx
callq 0x9380
testl %eax, %eax
je 0x7b296
leaq 0x2aa820(%rip), %rdi    # 0x325a40
leaq 0x904f2(%rip), %rsi     # 0x10b719
pushq $0x7
popq %rdx
callq 0x9380
testl %eax, %eax
je 0x7b29d
movabsq $0x444545434f5250, %rax # imm = 0x444545434F5250
cmpq %rax, %rbx
je 0x7b2a2
cmpl $0x544153, %ebx         # imm = 0x544153
jne 0x7b2e4
callq 0x9b36d
jmp 0x7b2a2
callq 0x9ae36
jmp 0x7b2a2
callq 0x9aeec
jmp 0x7b2a2
callq 0x9afd4
jmp 0x7b2a2
callq 0x9af8d
jmp 0x7b2a2
xorl %edi, %edi
callq 0x9b121
jmp 0x7b2a2
callq 0x9af2b
jmp 0x7b2a2
callq 0x9b0e2
jmp 0x7b2a2
callq 0x9b267
jmp 0x7b2a2
callq 0x9b0ae
jmp 0x7b2a2
callq 0x9b710
jmp 0x7b2a2
callq 0x9b018
leaq 0x1ad117(%rip), %rax    # 0x2283c0
cmpq $0x0, (%rax)
setne %al
leaq 0x192349(%rip), %rcx    # 0x20d600
movq (%rcx), %rdi
testq %rdi, %rdi
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x7b2cc
callq 0xae83
leaq 0x1adccd(%rip), %rax    # 0x228fa0
movl $0x1, (%rax)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movabsq $0x53505031544553, %rax # imm = 0x53505031544553
cmpq %rax, %rbx
jne 0x7b2fa
callq 0x9b5ca
jmp 0x7b2a2
leaq 0x2aa73f(%rip), %rdi    # 0x325a40
leaq 0x94edb(%rip), %rsi     # 0x1101e3
pushq $0x5
popq %rdx
callq 0x9380
testl %eax, %eax
je 0x7b3cf
leaq 0x2aa721(%rip), %rdi    # 0x325a40
leaq 0x94ea9(%rip), %rsi     # 0x1101cf
pushq $0x7
popq %rdx
callq 0x9380
testl %eax, %eax
je 0x7b3d9
leaq 0x2aa703(%rip), %rdi    # 0x325a40
leaq 0x9412d(%rip), %rsi     # 0x10f471
pushq $0x7
popq %rdx
callq 0x9380
testl %eax, %eax
je 0x7b3e3
leaq 0x2aa6e5(%rip), %rdi    # 0x325a40
leaq 0x94e86(%rip), %rsi     # 0x1101e8
pushq $0x6
popq %rdx
callq 0x9380
testl %eax, %eax
je 0x7b3eb
leaq 0x2aa6cb(%rip), %rdi    # 0x325a40
leaq 0x94e72(%rip), %rsi     # 0x1101ee
pushq $0x7
popq %rdx
callq 0x9380
testl %eax, %eax
je 0x7b3f5
leaq 0x2aa6b1(%rip), %rdi    # 0x325a40
leaq 0x94e5f(%rip), %rsi     # 0x1101f5
pushq $0x5
popq %rdx
callq 0x9380
testl %eax, %eax
je 0x7b3ff
leaq 0x1acfe7(%rip), %rax    # 0x228390
movq (%rax), %rdi
testq %rdi, %rdi
je 0x7b2a2
leaq 0x94e3e(%rip), %rsi     # 0x1101fa
leaq 0x2aa46d(%rip), %rdx    # 0x325830
xorl %eax, %eax
callq 0x9560
jmp 0x7b2a2
callq 0x9b721
jmp 0x7b2a2
callq 0x9b5db
jmp 0x7b2a2
pushq $0x1
popq %rdi
jmp 0x7b273
callq 0x9b732
jmp 0x7b2a2
callq 0x9b6dd
jmp 0x7b2a2
callq 0x9b49a
jmp 0x7b2a2