// File: /workspace/github_cpp_makefile_star2_O1/jkingan[P]ladyheather/heathgps.cpp
// Function: decode_zyfer_message()
void decode_zyfer_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 buffer
   get_msg_field(); // get the NMEA message type 

   if     (!strcmp(msg_field, "ALRM")) parse_zy_alrm();
   else if(!strcmp(msg_field, "ANTD")) parse_zy_antd();    // unsl 10
   else if(!strcmp(msg_field, "AZEL")) parse_zy_azel();    // unsl 2
   else if(!strcmp(msg_field, "DACV")) parse_zy_dacv();    // unsl 1
   else if(!strcmp(msg_field, "DRFT")) parse_zy_drft();
   else if(!strcmp(msg_field, "EFER")) parse_zy_efer();    // unsl 1
   else if(!strcmp(msg_field, "ESSD")) parse_zy_essd();    // unsl 1
   else if(!strcmp(msg_field, "ESSN")) parse_zy_essn();    // * unsl 1
   else if(!strcmp(msg_field, "ESTP")) parse_zy_estp();    // * unsl 30
   else if(!strcmp(msg_field, "FACTORYRESET")) ;
   else if(!strcmp(msg_field, "FSEL")) parse_zy_fsel();
   else if(!strcmp(msg_field, "GDOP")) parse_zy_gdop();    // * unsl 2
   else if(!strcmp(msg_field, "HEFE")) parse_zy_hefe();    // * unsl 30
   else if(!strcmp(msg_field, "HEST")) parse_zy_hest();    // * unsl 30
   else if(!strcmp(msg_field, "HETE")) parse_zy_hete();    // * unsl 30
   else if(!strcmp(msg_field, "HINT")) parse_zy_hint();    // unsl 30
   else if(!strcmp(msg_field, "LEAP")) parse_zy_leap();    // unsl 30
   else if(!strcmp(msg_field, "MANG")) parse_zy_mang();
   else if(!strcmp(msg_field, "MANI")) parse_zy_mani();
   else if(!strcmp(msg_field, "NTLC")) parse_zy_ntlc();    // unsl 30
   else if(!strcmp(msg_field, "OFST")) parse_zy_ofst();
   else if(!strcmp(msg_field, "PAVG")) parse_zy_pavg();    // unsl 1
   else if(!strcmp(msg_field, "PCTL")) ;                   // for option board
   else if(!strcmp(msg_field, "PRESET1")) ;
   else if(!strcmp(msg_field, "PRESET2")) ;
   else if(!strcmp(msg_field, "PRESET3")) ;
   else if(!strcmp(msg_field, "PRID")) parse_zy_prid();
   else if(!strcmp(msg_field, "PULE")) ;
   else if(!strcmp(msg_field, "PULP")) parse_zy_pulp();
   else if(!strcmp(msg_field, "PULR")) parse_zy_pulr();
   else if(!strcmp(msg_field, "PULW")) parse_zy_pulw();
   else if(!strcmp(msg_field, "PUTD")) ;                   // unsl 1
   else if(!strcmp(msg_field, "RSAH")) parse_zy_rsah();    // unsl 2
   else if(!strcmp(msg_field, "RSEL")) ;                   // for option board
   else if(!strcmp(msg_field, "RSTG")) ;
   else if(!strcmp(msg_field, "SIGQ")) parse_zy_sigq();    // unsl 1
   else if(!strcmp(msg_field, "SPOS")) ;
   else if(!strcmp(msg_field, "SSLT")) parse_zy_sslt();    // unsl 30
   else if(!strcmp(msg_field, "STAT")) parse_zy_stat();    // unsl 2
   else if(!strcmp(msg_field, "STIM")) ;                   // unsl 1
   else if(!strcmp(msg_field, "TCOD")) ;
   else if(!strcmp(msg_field, "TEMP")) parse_zy_temp();    // unsl 5
   else if(!strcmp(msg_field, "TIMD")) parse_zy_timd();    // unsl 2
   else if(!strcmp(msg_field, "TIME")) parse_zy_time();    // unsl 1
   else if(!strcmp(msg_field, "TIMI")) parse_zy_timi();    // * unsl 10
   else if(!strcmp(msg_field, "TIMM")) parse_zy_timm();
   else if(!strcmp(msg_field, "TRMO")) parse_zy_trmo();    // unsl 10
   else if(!strcmp(msg_field, "UNID")) parse_zy_unid();
   else if(!strcmp(msg_field, "UNSL")) ;
   else if(!strcmp(msg_field, "VERS")) parse_zy_vers();
   else last_was_gsv = 0;

   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, 0x2e63f4(%rip)    # 0x36cae4
movl $0x1, %edi
callq 0x7f47d
leaq 0x2b512f(%rip), %rbx    # 0x33b830
movb $0x0, (%rbx)
xorl %r14d, %r14d
leaq 0x2b1b44(%rip), %r15    # 0x338252
leaq 0x1b885b(%rip), %r12    # 0x23ef70
movzwl (%r15), %eax
cmpq %rax, %r14
jae 0x86745
callq 0x587d1
cmpl $0x100, %eax            # imm = 0x100
jb 0x8672f
orb $0x8, (%r12)
movb %al, (%r14,%rbx)
movb $0x0, 0x1(%r14,%rbx)
incq %r14
cmpq $0x1f6, %r14            # imm = 0x1F6
jne 0x86715
leaq 0x2b54f8(%rip), %rax    # 0x33bc44
movl $0x0, (%rax)
callq 0x811da
leaq 0x2b52e2(%rip), %rax    # 0x33ba40
movl $0x4d524c41, %ecx       # imm = 0x4D524C41
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b22
movl $0x44544e41, %ecx       # imm = 0x44544E41
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b29
movl $0x4c455a41, %ecx       # imm = 0x4C455A41
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b30
movl $0x56434144, %ecx       # imm = 0x56434144
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b37
movl $0x54465244, %ecx       # imm = 0x54465244
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b3e
movl $0x52454645, %ecx       # imm = 0x52454645
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b45
movl $0x44535345, %ecx       # imm = 0x44535345
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b4c
movl $0x4e535345, %ecx       # imm = 0x4E535345
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b53
movl $0x50545345, %ecx       # imm = 0x50545345
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b5a
movabsq $0x5259524f54434146, %rcx # imm = 0x5259524F54434146
xorq (%rax), %rcx
movabsq $0x54455345525952, %rdx # imm = 0x54455345525952
xorq 0x5(%rax), %rdx
orq %rcx, %rdx
je 0x86b74
movl $0x4c455346, %ecx       # imm = 0x4C455346
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b63
movl $0x504f4447, %ecx       # imm = 0x504F4447
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86bb4
movl $0x45464548, %ecx       # imm = 0x45464548
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86bbb
movl $0x54534548, %ecx       # imm = 0x54534548
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86bc2
movl $0x45544548, %ecx       # imm = 0x45544548
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86bc9
movl $0x544e4948, %ecx       # imm = 0x544E4948
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86bd0
movl $0x5041454c, %ecx       # imm = 0x5041454C
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86bd7
movl $0x474e414d, %ecx       # imm = 0x474E414D
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86bde
movl $0x494e414d, %ecx       # imm = 0x494E414D
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86be5
movl $0x434c544e, %ecx       # imm = 0x434C544E
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86bec
movl $0x5453464f, %ecx       # imm = 0x5453464F
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86bf3
movl $0x47564150, %ecx       # imm = 0x47564150
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86bfd
movl $0x4c544350, %ecx       # imm = 0x4C544350
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b74
movq (%rax), %rcx
movabsq $0x32544553455250, %rdx # imm = 0x32544553455250
cmpq %rdx, %rcx
je 0x86b74
btrq $0x31, %rcx
movabsq $0x31544553455250, %rdx # imm = 0x31544553455250
cmpq %rdx, %rcx
je 0x86b74
movl $0x44495250, %ecx       # imm = 0x44495250
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86c07
movl $0x454c5550, %ecx       # imm = 0x454C5550
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b74
movl $0x504c5550, %ecx       # imm = 0x504C5550
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86c11
movl $0x524c5550, %ecx       # imm = 0x524C5550
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86c1b
movl $0x574c5550, %ecx       # imm = 0x574C5550
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86c25
movl $0x44545550, %ecx       # imm = 0x44545550
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b74
movl $0x48415352, %ecx       # imm = 0x48415352
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86c2f
movl $0x4c455352, %ecx       # imm = 0x4C455352
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b74
movl $0x47545352, %ecx       # imm = 0x47545352
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b74
movl $0x51474953, %ecx       # imm = 0x51474953
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86c39
movl $0x534f5053, %ecx       # imm = 0x534F5053
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b74
movl $0x544c5353, %ecx       # imm = 0x544C5353
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86c43
movl $0x54415453, %ecx       # imm = 0x54415453
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86c4d
movl $0x4d495453, %ecx       # imm = 0x4D495453
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b74
movl $0x444f4354, %ecx       # imm = 0x444F4354
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b74
movl $0x504d4554, %ecx       # imm = 0x504D4554
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86c57
movl $0x444d4954, %ecx       # imm = 0x444D4954
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86c61
movl $0x454d4954, %ecx       # imm = 0x454D4954
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86c6b
movl $0x494d4954, %ecx       # imm = 0x494D4954
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86c75
movl $0x4d4d4954, %ecx       # imm = 0x4D4D4954
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86c7f
movl $0x4f4d5254, %ecx       # imm = 0x4F4D5254
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86c89
movl $0x44494e55, %ecx       # imm = 0x44494E55
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86c93
movl $0x4c534e55, %ecx       # imm = 0x4C534E55
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b74
movl $0x53524556, %ecx       # imm = 0x53524556
xorl (%rax), %ecx
movzbl 0x4(%rax), %eax
orl %ecx, %eax
je 0x86c9d
movl $0x0, 0x2eb304(%rip)    # 0x371e24
jmp 0x86b74
callq 0xa95fe
jmp 0x86b74
callq 0xa95b7
jmp 0x86b74
callq 0xa96a2
jmp 0x86b74
callq 0xa98d0
jmp 0x86b74
callq 0xa9927
jmp 0x86b74
callq 0xa996e
jmp 0x86b74
callq 0xa99c7
jmp 0x86b74
callq 0xa9a0e
jmp 0x86b74
leaq 0x9f454(%rip), %rdi     # 0x125fb5
jmp 0x86b6a
leaq 0x9dd15(%rip), %rdi     # 0x12487f
callq 0x58e77
callq 0x811da
leaq 0x1b7845(%rip), %rax    # 0x23e3c0
cmpq $0x0, (%rax)
setne %al
leaq 0x19ca77(%rip), %rcx    # 0x223600
movq (%rcx), %rdi
testq %rdi, %rdi
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x86b9e
callq 0xaff7
leaq 0x1b83fb(%rip), %rax    # 0x23efa0
movl $0x1, (%rax)
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
callq 0xa9a79
jmp 0x86b74
callq 0xa9ab5
jmp 0x86b74
callq 0xa9afc
jmp 0x86b74
callq 0xa9b36
jmp 0x86b74
callq 0xa9b70
jmp 0x86b74
callq 0xa9c64
jmp 0x86b74
callq 0xa9d45
jmp 0x86b74
callq 0xaa08a
jmp 0x86b74
callq 0xa9da0
jmp 0x86b74
callq 0xa9dd4
jmp 0x86b74
callq 0xa9e18
jmp 0x86b74
callq 0xaa0c6
jmp 0x86b74
callq 0xaa1fe
jmp 0x86b74
callq 0xaa24c
jmp 0x86b74
callq 0xaa299
jmp 0x86b74
callq 0xaa2d8
jmp 0x86b74
callq 0xa982b
jmp 0x86b74
callq 0xaa351
jmp 0x86b74
callq 0xaa3ba
jmp 0x86b74
callq 0xaa435
jmp 0x86b74
callq 0xaa474
jmp 0x86b74
callq 0xaa506
jmp 0x86b74
callq 0xaa4bd
jmp 0x86b74
callq 0xaa6e5
jmp 0x86b74
callq 0xaa75b
jmp 0x86b74
callq 0xaa142
jmp 0x86b74
callq 0xa9fce
jmp 0x86b74