// File: /workspace/github_cpp_makefile_star2_O3/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 %r12
pushq %rbx
movl $0x0, 0x2e5eb7(%rip)    # 0x36cae4
movl $0x1, %edi
callq 0x7f2b8
leaq 0x2b4bf2(%rip), %rbx    # 0x33b830
movb $0x0, (%rbx)
xorl %r14d, %r14d
leaq 0x2b1607(%rip), %r15    # 0x338252
leaq 0x1b831e(%rip), %r12    # 0x23ef70
movzwl (%r15), %eax
cmpq %rax, %r14
jae 0x86c82
callq 0x587be
cmpl $0x100, %eax            # imm = 0x100
jb 0x86c6c
orb $0x8, (%r12)
movb %al, (%r14,%rbx)
movb $0x0, 0x1(%r14,%rbx)
incq %r14
cmpq $0x1f6, %r14            # imm = 0x1F6
jne 0x86c52
leaq 0x2b4fbb(%rip), %rax    # 0x33bc44
movl $0x0, (%rax)
callq 0x810b1
leaq 0x2b4da5(%rip), %rax    # 0x33ba40
movl $0x434f4c43, %ecx       # imm = 0x434F4C43
xorl (%rax), %ecx
movzwl 0x4(%rax), %edx
xorl $0x4b, %edx
orl %ecx, %edx
je 0x86cc8
movq (%rax), %rcx
movabsq $0x44524143534944, %rdx # imm = 0x44524143534944
cmpq %rdx, %rcx
jne 0x86ccf
leaq 0x9f5a4(%rip), %rdi     # 0x12626a
jmp 0x86cde
callq 0xaaa62
jmp 0x86ce3
cmpl $0x4e5345, %ecx         # imm = 0x4E5345
jne 0x86d23
leaq 0x9f594(%rip), %rdi     # 0x126272
callq 0x58dc2
leaq 0x1b76d6(%rip), %rax    # 0x23e3c0
cmpq $0x0, (%rax)
setne %al
leaq 0x19c908(%rip), %rcx    # 0x223600
movq (%rcx), %rdi
testq %rdi, %rdi
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x86d0d
callq 0xafe8
leaq 0x1b828c(%rip), %rax    # 0x23efa0
movl $0x1, (%rax)
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movabsq $0x5554415453545845, %rdx # imm = 0x5554415453545845
xorq (%rax), %rdx
movzwl 0x8(%rax), %esi
xorq $0x53, %rsi
orq %rdx, %rsi
je 0x86e57
movl $0x41544547, %edx       # imm = 0x41544547
xorl (%rax), %edx
movzbl 0x4(%rax), %esi
orl %edx, %esi
je 0x86e61
movabsq $0x414c454442544547, %rdx # imm = 0x414C454442544547
xorq (%rax), %rdx
movzwl 0x8(%rax), %esi
xorq $0x59, %rsi
orq %rdx, %rsi
je 0x86e6b
movabsq $0x59414c4544544547, %rdx # imm = 0x59414C4544544547
xorq (%rax), %rdx
movzbl 0x8(%rax), %esi
orq %rdx, %rsi
je 0x86e75
movl $0x50544547, %edx       # imm = 0x50544547
movl (%rax), %esi
xorl %edx, %esi
movl $0x534f50, %edi         # imm = 0x534F50
xorl 0x3(%rax), %edi
orl %esi, %edi
je 0x86e7f
xorl (%rax), %edx
movzbl 0x4(%rax), %esi
orl %edx, %esi
je 0x86e8b
movabsq $0x454c414353544547, %rdx # imm = 0x454C414353544547
xorq (%rax), %rdx
movabsq $0x524f5443414645, %rsi # imm = 0x524F5443414645
xorq 0x7(%rax), %rsi
orq %rdx, %rsi
je 0x86e95
movl $0x56544547, %edx       # imm = 0x56544547
xorl (%rax), %edx
movl $0x524556, %esi         # imm = 0x524556
xorl 0x3(%rax), %esi
orl %edx, %esi
je 0x86e9f
movl $0x444c414b, %edx       # imm = 0x444C414B
xorl (%rax), %edx
movl $0x474244, %esi         # imm = 0x474244
xorl 0x3(%rax), %esi
orl %edx, %esi
je 0x86ea9
movl $0x5641454c, %edx       # imm = 0x5641454C
xorl (%rax), %edx
movzwl 0x4(%rax), %esi
xorl $0x45, %esi
orl %edx, %esi
je 0x86eb3
movl $0x44535050, %edx       # imm = 0x44535050
xorl (%rax), %edx
movl $0x474244, %esi         # imm = 0x474244
xorl 0x3(%rax), %esi
orl %edx, %esi
je 0x86ebf
movabsq $0x444545434f5250, %rdx # imm = 0x444545434F5250
cmpq %rdx, %rcx
je 0x86ce3
cmpl $0x544153, %ecx         # imm = 0x544153
jne 0x86ec9
callq 0xab0f5
jmp 0x86ce3
callq 0xaabab
jmp 0x86ce3
callq 0xaac63
jmp 0x86ce3
callq 0xaad4b
jmp 0x86ce3
callq 0xaad04
jmp 0x86ce3
xorl %edi, %edi
callq 0xaae9a
jmp 0x86ce3
callq 0xaaca2
jmp 0x86ce3
callq 0xaae5b
jmp 0x86ce3
callq 0xaafef
jmp 0x86ce3
callq 0xaae27
jmp 0x86ce3
leaq 0x9f3bc(%rip), %rdi     # 0x126276
jmp 0x86cde
callq 0xaad8f
jmp 0x86ce3
movabsq $0x53505031544553, %rdx # imm = 0x53505031544553
cmpq %rdx, %rcx
jne 0x86ee4
leaq 0x9f376(%rip), %rdi     # 0x126255
jmp 0x86cde
movl $0x57495053, %ecx       # imm = 0x57495053
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86f82
movl $0x54415453, %ecx       # imm = 0x54415453
xorl (%rax), %ecx
movl $0x535554, %edx         # imm = 0x535554
xorl 0x3(%rax), %edx
orl %ecx, %edx
je 0x86f8e
movl $0x56525553, %ecx       # imm = 0x56525553
xorl (%rax), %ecx
movl $0x594556, %edx         # imm = 0x594556
xorl 0x3(%rax), %edx
orl %ecx, %edx
je 0x86f98
movl $0x49415254, %ecx       # imm = 0x49415254
xorl (%rax), %ecx
movzwl 0x4(%rax), %edx
xorl $0x4d, %edx
orl %ecx, %edx
je 0x86fa2
movl $0x41445055, %ecx       # imm = 0x41445055
xorl (%rax), %ecx
movl $0x455441, %edx         # imm = 0x455441
xorl 0x3(%rax), %edx
orl %ecx, %edx
je 0x86fae
movl $0x54415357, %ecx       # imm = 0x54415357
xorl (%rax), %ecx
movzbl 0x4(%rax), %eax
orl %ecx, %eax
je 0x86fba
leaq 0x1b7434(%rip), %rax    # 0x23e390
movq (%rax), %rdi
testq %rdi, %rdi
je 0x86ce3
leaq 0x9f346(%rip), %rsi     # 0x1262b5
leaq 0x2b48ba(%rip), %rdx    # 0x33b830
xorl %eax, %eax
callq 0x9560
jmp 0x86ce3
leaq 0x9f2f3(%rip), %rdi     # 0x12627c
jmp 0x86cde
callq 0xab369
jmp 0x86ce3
movl $0x1, %edi
jmp 0x86e81
leaq 0x9f2d8(%rip), %rdi     # 0x126281
jmp 0x86cde
leaq 0x9f2a8(%rip), %rdi     # 0x12625d
jmp 0x86cde
callq 0xab225
jmp 0x86ce3