// File: /workspace/github_cpp_makefile_star2_O3/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, 0x2e6483(%rip)    # 0x36cae4
movl $0x1, %edi
callq 0x7f2b8
leaq 0x2b51be(%rip), %rbx    # 0x33b830
movb $0x0, (%rbx)
xorl %r14d, %r14d
leaq 0x2b1bd3(%rip), %r15    # 0x338252
leaq 0x1b88ea(%rip), %r12    # 0x23ef70
movzwl (%r15), %eax
cmpq %rax, %r14
jae 0x866b6
callq 0x587be
cmpl $0x100, %eax            # imm = 0x100
jb 0x866a0
orb $0x8, (%r12)
movb %al, (%r14,%rbx)
movb $0x0, 0x1(%r14,%rbx)
incq %r14
cmpq $0x1f6, %r14            # imm = 0x1F6
jne 0x86686
leaq 0x2b5587(%rip), %rax    # 0x33bc44
movl $0x0, (%rax)
callq 0x810b1
leaq 0x2b5371(%rip), %rax    # 0x33ba40
movl $0x4d524c41, %ecx       # imm = 0x4D524C41
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86a93
movl $0x44544e41, %ecx       # imm = 0x44544E41
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86a9a
movl $0x4c455a41, %ecx       # imm = 0x4C455A41
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86aa1
movl $0x56434144, %ecx       # imm = 0x56434144
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86aa8
movl $0x54465244, %ecx       # imm = 0x54465244
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86aaf
movl $0x52454645, %ecx       # imm = 0x52454645
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86ab6
movl $0x44535345, %ecx       # imm = 0x44535345
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86abd
movl $0x4e535345, %ecx       # imm = 0x4E535345
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86ac4
movl $0x50545345, %ecx       # imm = 0x50545345
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86acb
movabsq $0x5259524f54434146, %rcx # imm = 0x5259524F54434146
xorq (%rax), %rcx
movabsq $0x54455345525952, %rdx # imm = 0x54455345525952
xorq 0x5(%rax), %rdx
orq %rcx, %rdx
je 0x86ae5
movl $0x4c455346, %ecx       # imm = 0x4C455346
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86ad4
movl $0x504f4447, %ecx       # imm = 0x504F4447
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b25
movl $0x45464548, %ecx       # imm = 0x45464548
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b2c
movl $0x54534548, %ecx       # imm = 0x54534548
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b33
movl $0x45544548, %ecx       # imm = 0x45544548
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b3a
movl $0x544e4948, %ecx       # imm = 0x544E4948
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b41
movl $0x5041454c, %ecx       # imm = 0x5041454C
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b48
movl $0x474e414d, %ecx       # imm = 0x474E414D
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b4f
movl $0x494e414d, %ecx       # imm = 0x494E414D
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b56
movl $0x434c544e, %ecx       # imm = 0x434C544E
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b5d
movl $0x5453464f, %ecx       # imm = 0x5453464F
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b64
movl $0x47564150, %ecx       # imm = 0x47564150
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b6e
movl $0x4c544350, %ecx       # imm = 0x4C544350
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86ae5
movq (%rax), %rcx
movabsq $0x32544553455250, %rdx # imm = 0x32544553455250
cmpq %rdx, %rcx
je 0x86ae5
btrq $0x31, %rcx
movabsq $0x31544553455250, %rdx # imm = 0x31544553455250
cmpq %rdx, %rcx
je 0x86ae5
movl $0x44495250, %ecx       # imm = 0x44495250
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b78
movl $0x454c5550, %ecx       # imm = 0x454C5550
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86ae5
movl $0x504c5550, %ecx       # imm = 0x504C5550
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b82
movl $0x524c5550, %ecx       # imm = 0x524C5550
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b8c
movl $0x574c5550, %ecx       # imm = 0x574C5550
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86b96
movl $0x44545550, %ecx       # imm = 0x44545550
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86ae5
movl $0x48415352, %ecx       # imm = 0x48415352
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86ba0
movl $0x4c455352, %ecx       # imm = 0x4C455352
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86ae5
movl $0x47545352, %ecx       # imm = 0x47545352
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86ae5
movl $0x51474953, %ecx       # imm = 0x51474953
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86baa
movl $0x534f5053, %ecx       # imm = 0x534F5053
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86ae5
movl $0x544c5353, %ecx       # imm = 0x544C5353
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86bb4
movl $0x54415453, %ecx       # imm = 0x54415453
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86bbe
movl $0x4d495453, %ecx       # imm = 0x4D495453
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86ae5
movl $0x444f4354, %ecx       # imm = 0x444F4354
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86ae5
movl $0x504d4554, %ecx       # imm = 0x504D4554
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86bc8
movl $0x444d4954, %ecx       # imm = 0x444D4954
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86bd2
movl $0x454d4954, %ecx       # imm = 0x454D4954
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86bdc
movl $0x494d4954, %ecx       # imm = 0x494D4954
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86be6
movl $0x4d4d4954, %ecx       # imm = 0x4D4D4954
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86bf0
movl $0x4f4d5254, %ecx       # imm = 0x4F4D5254
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86bfa
movl $0x44494e55, %ecx       # imm = 0x44494E55
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86c04
movl $0x4c534e55, %ecx       # imm = 0x4C534E55
xorl (%rax), %ecx
movzbl 0x4(%rax), %edx
orl %ecx, %edx
je 0x86ae5
movl $0x53524556, %ecx       # imm = 0x53524556
xorl (%rax), %ecx
movzbl 0x4(%rax), %eax
orl %ecx, %eax
je 0x86c0e
movl $0x0, 0x2eb393(%rip)    # 0x371e24
jmp 0x86ae5
callq 0xa984b
jmp 0x86ae5
callq 0xa9804
jmp 0x86ae5
callq 0xa9922
jmp 0x86ae5
callq 0xa9b51
jmp 0x86ae5
callq 0xa9ba8
jmp 0x86ae5
callq 0xa9bef
jmp 0x86ae5
callq 0xa9c48
jmp 0x86ae5
callq 0xa9c8f
jmp 0x86ae5
leaq 0x9f5c3(%rip), %rdi     # 0x126095
jmp 0x86adb
leaq 0x9de84(%rip), %rdi     # 0x12495f
callq 0x58dc2
callq 0x810b1
leaq 0x1b78d4(%rip), %rax    # 0x23e3c0
cmpq $0x0, (%rax)
setne %al
leaq 0x19cb06(%rip), %rcx    # 0x223600
movq (%rcx), %rdi
testq %rdi, %rdi
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x86b0f
callq 0xafe8
leaq 0x1b848a(%rip), %rax    # 0x23efa0
movl $0x1, (%rax)
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
callq 0xa9cfa
jmp 0x86ae5
callq 0xa9d36
jmp 0x86ae5
callq 0xa9d7d
jmp 0x86ae5
callq 0xa9db7
jmp 0x86ae5
callq 0xa9df1
jmp 0x86ae5
callq 0xa9ee5
jmp 0x86ae5
callq 0xa9fc6
jmp 0x86ae5
callq 0xaa30b
jmp 0x86ae5
callq 0xaa021
jmp 0x86ae5
callq 0xaa055
jmp 0x86ae5
callq 0xaa099
jmp 0x86ae5
callq 0xaa347
jmp 0x86ae5
callq 0xaa47f
jmp 0x86ae5
callq 0xaa4cd
jmp 0x86ae5
callq 0xaa51a
jmp 0x86ae5
callq 0xaa559
jmp 0x86ae5
callq 0xa9aac
jmp 0x86ae5
callq 0xaa5d2
jmp 0x86ae5
callq 0xaa63b
jmp 0x86ae5
callq 0xaa6b6
jmp 0x86ae5
callq 0xaa6f5
jmp 0x86ae5
callq 0xaa787
jmp 0x86ae5
callq 0xaa73e
jmp 0x86ae5
callq 0xaa966
jmp 0x86ae5
callq 0xaa9dc
jmp 0x86ae5
callq 0xaa3c3
jmp 0x86ae5
callq 0xaa24f
jmp 0x86ae5