// File: /workspace/github_cpp_makefile_star2_O1/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, 0x2e5e28(%rip)    # 0x36cae4
movl $0x1, %edi
callq 0x7f47d
leaq 0x2b4b63(%rip), %rbx    # 0x33b830
movb $0x0, (%rbx)
xorl %r14d, %r14d
leaq 0x2b1578(%rip), %r15    # 0x338252
leaq 0x1b828f(%rip), %r12    # 0x23ef70
movzwl (%r15), %eax
cmpq %rax, %r14
jae 0x86d11
callq 0x587d1
cmpl $0x100, %eax            # imm = 0x100
jb 0x86cfb
orb $0x8, (%r12)
movb %al, (%r14,%rbx)
movb $0x0, 0x1(%r14,%rbx)
incq %r14
cmpq $0x1f6, %r14            # imm = 0x1F6
jne 0x86ce1
leaq 0x2b4f2c(%rip), %rax    # 0x33bc44
movl $0x0, (%rax)
callq 0x811da
leaq 0x2b4d16(%rip), %rax    # 0x33ba40
movl $0x434f4c43, %ecx       # imm = 0x434F4C43
xorl (%rax), %ecx
movzwl 0x4(%rax), %edx
xorl $0x4b, %edx
orl %ecx, %edx
je 0x86d54
movabsq $0x44524143534944, %rcx # imm = 0x44524143534944
cmpq %rcx, (%rax)
jne 0x86d5b
leaq 0x9f438(%rip), %rdi     # 0x12618a
jmp 0x86d6a
callq 0xaa7e1
jmp 0x86d6f
cmpl $0x4e5345, (%rax)       # imm = 0x4E5345
jne 0x86daf
leaq 0x9f428(%rip), %rdi     # 0x126192
callq 0x58e77
leaq 0x1b764a(%rip), %rax    # 0x23e3c0
cmpq $0x0, (%rax)
setne %al
leaq 0x19c87c(%rip), %rcx    # 0x223600
movq (%rcx), %rdi
testq %rdi, %rdi
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x86d99
callq 0xaff7
leaq 0x1b8200(%rip), %rax    # 0x23efa0
movl $0x1, (%rax)
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movabsq $0x5554415453545845, %rcx # imm = 0x5554415453545845
xorq (%rax), %rcx
movzwl 0x8(%rax), %edx
xorq $0x53, %rdx
orq %rcx, %rdx
je 0x86ee3
movl $0x41544547, %ecx       # imm = 0x41544547
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86eed
movabsq $0x414c454442544547, %rcx # imm = 0x414C454442544547
xorq (%rax), %rcx
movzwl 0x8(%rax), %edx
xorq $0x59, %rdx
orq %rcx, %rdx
je 0x86ef7
movabsq $0x59414c4544544547, %rcx # imm = 0x59414C4544544547
xorq (%rax), %rcx
movzbl 0x8(%rax), %edx
orq %rcx, %rdx
je 0x86f01
movl $0x50544547, %ecx       # imm = 0x50544547
movl (%rax), %edx
xorl %ecx, %edx
movl $0x534f50, %esi         # imm = 0x534F50
xorl 0x3(%rax), %esi
orl %edx, %esi
je 0x86f0b
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86f17
movabsq $0x454c414353544547, %rcx # imm = 0x454C414353544547
xorq (%rax), %rcx
movabsq $0x524f5443414645, %rdx # imm = 0x524F5443414645
xorq 0x7(%rax), %rdx
orq %rcx, %rdx
je 0x86f21
movl $0x56544547, %ecx       # imm = 0x56544547
xorl (%rax), %ecx
movl $0x524556, %edx         # imm = 0x524556
xorl 0x3(%rax), %edx
orl %ecx, %edx
je 0x86f2b
movl $0x444c414b, %ecx       # imm = 0x444C414B
xorl (%rax), %ecx
movl $0x474244, %edx         # imm = 0x474244
xorl 0x3(%rax), %edx
orl %ecx, %edx
je 0x86f35
movl $0x5641454c, %ecx       # imm = 0x5641454C
xorl (%rax), %ecx
movzwl 0x4(%rax), %edx
xorl $0x45, %edx
orl %ecx, %edx
je 0x86f3f
movl $0x44535050, %ecx       # imm = 0x44535050
xorl (%rax), %ecx
movl $0x474244, %edx         # imm = 0x474244
xorl 0x3(%rax), %edx
orl %ecx, %edx
je 0x86f4b
movabsq $0x444545434f5250, %rcx # imm = 0x444545434F5250
cmpq %rcx, (%rax)
je 0x86d6f
cmpl $0x544153, (%rax)       # imm = 0x544153
jne 0x86f55
callq 0xaae74
jmp 0x86d6f
callq 0xaa92a
jmp 0x86d6f
callq 0xaa9e2
jmp 0x86d6f
callq 0xaaaca
jmp 0x86d6f
callq 0xaaa83
jmp 0x86d6f
xorl %edi, %edi
callq 0xaac19
jmp 0x86d6f
callq 0xaaa21
jmp 0x86d6f
callq 0xaabda
jmp 0x86d6f
callq 0xaad6e
jmp 0x86d6f
callq 0xaaba6
jmp 0x86d6f
leaq 0x9f250(%rip), %rdi     # 0x126196
jmp 0x86d6a
callq 0xaab0e
jmp 0x86d6f
movabsq $0x53505031544553, %rcx # imm = 0x53505031544553
cmpq %rcx, (%rax)
jne 0x86f70
leaq 0x9f20a(%rip), %rdi     # 0x126175
jmp 0x86d6a
movl $0x57495053, %ecx       # imm = 0x57495053
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x8700e
movl $0x54415453, %ecx       # imm = 0x54415453
xorl (%rax), %ecx
movl $0x535554, %edx         # imm = 0x535554
xorl 0x3(%rax), %edx
orl %ecx, %edx
je 0x8701a
movl $0x56525553, %ecx       # imm = 0x56525553
xorl (%rax), %ecx
movl $0x594556, %edx         # imm = 0x594556
xorl 0x3(%rax), %edx
orl %ecx, %edx
je 0x87024
movl $0x49415254, %ecx       # imm = 0x49415254
xorl (%rax), %ecx
movzwl 0x4(%rax), %edx
xorl $0x4d, %edx
orl %ecx, %edx
je 0x8702e
movl $0x41445055, %ecx       # imm = 0x41445055
xorl (%rax), %ecx
movl $0x455441, %edx         # imm = 0x455441
xorl 0x3(%rax), %edx
orl %ecx, %edx
je 0x8703a
movl $0x54415357, %ecx       # imm = 0x54415357
xorl (%rax), %ecx
movzbl 0x4(%rax), %eax
orl %ecx, %eax
je 0x87046
leaq 0x1b73a8(%rip), %rax    # 0x23e390
movq (%rax), %rdi
testq %rdi, %rdi
je 0x86d6f
leaq 0x9f1da(%rip), %rsi     # 0x1261d5
leaq 0x2b482e(%rip), %rdx    # 0x33b830
xorl %eax, %eax
callq 0x9560
jmp 0x86d6f
leaq 0x9f187(%rip), %rdi     # 0x12619c
jmp 0x86d6a
callq 0xab0e8
jmp 0x86d6f
movl $0x1, %edi
jmp 0x86f0d
leaq 0x9f16c(%rip), %rdi     # 0x1261a1
jmp 0x86d6a
leaq 0x9f13c(%rip), %rdi     # 0x12617d
jmp 0x86d6a
callq 0xaafa4
jmp 0x86d6f