// File: 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
subq $0x10, %rsp
movl $0x0, 0x313542(%rip)    # 0x3cbcc4
movl $0x1, %edi
callq 0xae4a0
leaq 0x2e227d(%rip), %rax    # 0x39aa10
movb $0x0, (%rax)
movl $0x0, -0x8(%rbp)
movl -0x8(%rbp), %eax
leaq 0x2dec8b(%rip), %rcx    # 0x397432
movzwl (%rcx), %ecx
cmpl %ecx, %eax
jge 0xb87f3
callq 0x7a510
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %dl
movslq -0x8(%rbp), %rcx
leaq 0x2e224c(%rip), %rax    # 0x39aa10
movb %dl, (%rax,%rcx)
movl -0x8(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rcx
leaq 0x2e2239(%rip), %rax    # 0x39aa10
movb $0x0, (%rax,%rcx)
cmpl $0x1f5, -0x8(%rbp)      # imm = 0x1F5
jl 0xb87e6
jmp 0xb87f3
jmp 0xb87e8
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0xb879d
leaq 0x2e262a(%rip), %rax    # 0x39ae24
movl $0x0, (%rax)
callq 0xb0bd0
leaq 0x2e2414(%rip), %rdi    # 0x39ac20
leaq 0xcb89a(%rip), %rsi     # 0x1840ad
callq 0x9510
cmpl $0x0, %eax
jne 0xb8827
callq 0xe5b70
jmp 0xb8ec8
leaq 0x2e23f2(%rip), %rdi    # 0x39ac20
leaq 0xcb87e(%rip), %rsi     # 0x1840b3
callq 0x9510
cmpl $0x0, %eax
jne 0xb8849
callq 0xe5b20
jmp 0xb8ec6
leaq 0x2e23d0(%rip), %rdi    # 0x39ac20
leaq 0xd0c7a(%rip), %rsi     # 0x1894d1
callq 0x9510
cmpl $0x0, %eax
jne 0xb886b
callq 0xe5d40
jmp 0xb8ec4
leaq 0x2e23ae(%rip), %rdi    # 0x39ac20
leaq 0xd0c5d(%rip), %rsi     # 0x1894d6
callq 0x9510
cmpl $0x0, %eax
jne 0xb888d
callq 0xe6010
jmp 0xb8ec2
leaq 0x2e238c(%rip), %rdi    # 0x39ac20
leaq 0xcb81e(%rip), %rsi     # 0x1840b9
callq 0x9510
cmpl $0x0, %eax
jne 0xb88af
callq 0xe6090
jmp 0xb8ec0
leaq 0x2e236a(%rip), %rdi    # 0x39ac20
leaq 0xd0c1e(%rip), %rsi     # 0x1894db
callq 0x9510
cmpl $0x0, %eax
jne 0xb88d1
callq 0xe60e0
jmp 0xb8ebe
leaq 0x2e2348(%rip), %rdi    # 0x39ac20
leaq 0xd0c01(%rip), %rsi     # 0x1894e0
callq 0x9510
cmpl $0x0, %eax
jne 0xb88f3
callq 0xe6160
jmp 0xb8ebc
leaq 0x2e2326(%rip), %rdi    # 0x39ac20
leaq 0xca032(%rip), %rsi     # 0x182933
callq 0x9510
cmpl $0x0, %eax
jne 0xb8915
callq 0xe61b0
jmp 0xb8eba
leaq 0x2e2304(%rip), %rdi    # 0x39ac20
leaq 0xd0bc2(%rip), %rsi     # 0x1894e5
callq 0x9510
cmpl $0x0, %eax
jne 0xb8937
callq 0xe61f0
jmp 0xb8eb8
leaq 0x2e22e2(%rip), %rdi    # 0x39ac20
leaq 0xcb1bc(%rip), %rsi     # 0x183b01
callq 0x9510
cmpl $0x0, %eax
jne 0xb8954
jmp 0xb8eb6
leaq 0x2e22c5(%rip), %rdi    # 0x39ac20
leaq 0xd0b88(%rip), %rsi     # 0x1894ea
callq 0x9510
cmpl $0x0, %eax
jne 0xb8976
callq 0xe6240
jmp 0xb8eb4
leaq 0x2e22a3(%rip), %rdi    # 0x39ac20
leaq 0xc9faa(%rip), %rsi     # 0x18292e
callq 0x9510
cmpl $0x0, %eax
jne 0xb8998
callq 0xe6280
jmp 0xb8eb2
leaq 0x2e2281(%rip), %rdi    # 0x39ac20
leaq 0xc9f79(%rip), %rsi     # 0x18291f
callq 0x9510
cmpl $0x0, %eax
jne 0xb89ba
callq 0xe62d0
jmp 0xb8eb0
leaq 0x2e225f(%rip), %rdi    # 0x39ac20
leaq 0xc9f61(%rip), %rsi     # 0x182929
callq 0x9510
cmpl $0x0, %eax
jne 0xb89dc
callq 0xe6320
jmp 0xb8eae
leaq 0x2e223d(%rip), %rdi    # 0x39ac20
leaq 0xc9f3a(%rip), %rsi     # 0x182924
callq 0x9510
cmpl $0x0, %eax
jne 0xb89fe
callq 0xe6360
jmp 0xb8eac
leaq 0x2e221b(%rip), %rdi    # 0x39ac20
leaq 0xd0ae3(%rip), %rsi     # 0x1894ef
callq 0x9510
cmpl $0x0, %eax
jne 0xb8a20
callq 0xe63a0
jmp 0xb8eaa
leaq 0x2e21f9(%rip), %rdi    # 0x39ac20
leaq 0xcae26(%rip), %rsi     # 0x183854
callq 0x9510
cmpl $0x0, %eax
jne 0xb8a42
callq 0xe64c0
jmp 0xb8ea8
leaq 0x2e21d7(%rip), %rdi    # 0x39ac20
leaq 0xcb66f(%rip), %rsi     # 0x1840bf
callq 0x9510
cmpl $0x0, %eax
jne 0xb8a64
callq 0xe6590
jmp 0xb8ea6
leaq 0x2e21b5(%rip), %rdi    # 0x39ac20
leaq 0xcb0fb(%rip), %rsi     # 0x183b6d
callq 0x9510
cmpl $0x0, %eax
jne 0xb8a86
callq 0xe69e0
jmp 0xb8ea4
leaq 0x2e2193(%rip), %rdi    # 0x39ac20
leaq 0xd0a60(%rip), %rsi     # 0x1894f4
callq 0x9510
cmpl $0x0, %eax
jne 0xb8aa8
callq 0xe6610
jmp 0xb8ea2
leaq 0x2e2171(%rip), %rdi    # 0x39ac20
leaq 0xd0a43(%rip), %rsi     # 0x1894f9
callq 0x9510
cmpl $0x0, %eax
jne 0xb8aca
callq 0xe6660
jmp 0xb8ea0
leaq 0x2e214f(%rip), %rdi    # 0x39ac20
leaq 0xd0a26(%rip), %rsi     # 0x1894fe
callq 0x9510
cmpl $0x0, %eax
jne 0xb8aec
callq 0xe66c0
jmp 0xb8e9e
leaq 0x2e212d(%rip), %rdi    # 0x39ac20
leaq 0xd0a09(%rip), %rsi     # 0x189503
callq 0x9510
cmpl $0x0, %eax
jne 0xb8b09
jmp 0xb8e9c
leaq 0x2e2110(%rip), %rdi    # 0x39ac20
leaq 0xd09f1(%rip), %rsi     # 0x189508
callq 0x9510
cmpl $0x0, %eax
jne 0xb8b26
jmp 0xb8e9a
leaq 0x2e20f3(%rip), %rdi    # 0x39ac20
leaq 0xd09dc(%rip), %rsi     # 0x189510
callq 0x9510
cmpl $0x0, %eax
jne 0xb8b43
jmp 0xb8e98
leaq 0x2e20d6(%rip), %rdi    # 0x39ac20
leaq 0xd09c7(%rip), %rsi     # 0x189518
callq 0x9510
cmpl $0x0, %eax
jne 0xb8b60
jmp 0xb8e96
leaq 0x2e20b9(%rip), %rdi    # 0x39ac20
leaq 0xcb005(%rip), %rsi     # 0x183b73
callq 0x9510
cmpl $0x0, %eax
jne 0xb8b82
callq 0xe6a30
jmp 0xb8e94
leaq 0x2e2097(%rip), %rdi    # 0x39ac20
leaq 0xd0990(%rip), %rsi     # 0x189520
callq 0x9510
cmpl $0x0, %eax
jne 0xb8b9f
jmp 0xb8e92
leaq 0x2e207a(%rip), %rdi    # 0x39ac20
leaq 0xcb6c8(%rip), %rsi     # 0x184275
callq 0x9510
cmpl $0x0, %eax
jne 0xb8bc1
callq 0xe6bc0
jmp 0xb8e90
leaq 0x2e2058(%rip), %rdi    # 0x39ac20
leaq 0xcb6ac(%rip), %rsi     # 0x18427b
callq 0x9510
cmpl $0x0, %eax
jne 0xb8be3
callq 0xe6c30
jmp 0xb8e8e
leaq 0x2e2036(%rip), %rdi    # 0x39ac20
leaq 0xcb882(%rip), %rsi     # 0x184473
callq 0x9510
cmpl $0x0, %eax
jne 0xb8c05
callq 0xe6ca0
jmp 0xb8e8c
leaq 0x2e2014(%rip), %rdi    # 0x39ac20
leaq 0xd0912(%rip), %rsi     # 0x189525
callq 0x9510
cmpl $0x0, %eax
jne 0xb8c22
jmp 0xb8e8a
leaq 0x2e1ff7(%rip), %rdi    # 0x39ac20
leaq 0xcb1ed(%rip), %rsi     # 0x183e1d
callq 0x9510
cmpl $0x0, %eax
jne 0xb8c44
callq 0xe6d60
jmp 0xb8e88
leaq 0x2e1fd5(%rip), %rdi    # 0x39ac20
leaq 0xd08d8(%rip), %rsi     # 0x18952a
callq 0x9510
cmpl $0x0, %eax
jne 0xb8c61
jmp 0xb8e86
leaq 0x2e1fb8(%rip), %rdi    # 0x39ac20
leaq 0xd08c0(%rip), %rsi     # 0x18952f
callq 0x9510
cmpl $0x0, %eax
jne 0xb8c7e
jmp 0xb8e84
leaq 0x2e1f9b(%rip), %rdi    # 0x39ac20
leaq 0xd08a8(%rip), %rsi     # 0x189534
callq 0x9510
cmpl $0x0, %eax
jne 0xb8ca0
callq 0xe5f40
jmp 0xb8e82
leaq 0x2e1f79(%rip), %rdi    # 0x39ac20
leaq 0xd088b(%rip), %rsi     # 0x189539
callq 0x9510
cmpl $0x0, %eax
jne 0xb8cbd
jmp 0xb8e80
leaq 0x2e1f5c(%rip), %rdi    # 0x39ac20
leaq 0xcb14c(%rip), %rsi     # 0x183e17
callq 0x9510
cmpl $0x0, %eax
jne 0xb8cdf
callq 0xe6e10
jmp 0xb8e7e
leaq 0x2e1f3a(%rip), %rdi    # 0x39ac20
leaq 0xcb3d8(%rip), %rsi     # 0x1840c5
callq 0x9510
cmpl $0x0, %eax
jne 0xb8d01
callq 0xe6f10
jmp 0xb8e7c
leaq 0x2e1f18(%rip), %rdi    # 0x39ac20
leaq 0xd082f(%rip), %rsi     # 0x18953e
callq 0x9510
cmpl $0x0, %eax
jne 0xb8d1e
jmp 0xb8e7a
leaq 0x2e1efb(%rip), %rdi    # 0x39ac20
leaq 0xd0817(%rip), %rsi     # 0x189543
callq 0x9510
cmpl $0x0, %eax
jne 0xb8d3b
jmp 0xb8e78
leaq 0x2e1ede(%rip), %rdi    # 0x39ac20
leaq 0xce463(%rip), %rsi     # 0x1871ac
callq 0x9510
cmpl $0x0, %eax
jne 0xb8d5d
callq 0xe6fd0
jmp 0xb8e76
leaq 0x2e1ebc(%rip), %rdi    # 0x39ac20
leaq 0xd07dd(%rip), %rsi     # 0x189548
callq 0x9510
cmpl $0x0, %eax
jne 0xb8d7f
callq 0xe7010
jmp 0xb8e74
leaq 0x2e1e9a(%rip), %rdi    # 0x39ac20
leaq 0xcbf5d(%rip), %rsi     # 0x184cea
callq 0x9510
cmpl $0x0, %eax
jne 0xb8da1
callq 0xe70d0
jmp 0xb8e72
leaq 0x2e1e78(%rip), %rdi    # 0x39ac20
leaq 0xd079e(%rip), %rsi     # 0x18954d
callq 0x9510
cmpl $0x0, %eax
jne 0xb8dc3
callq 0xe7070
jmp 0xb8e70
leaq 0x2e1e56(%rip), %rdi    # 0x39ac20
leaq 0xcb880(%rip), %rsi     # 0x184651
callq 0x9510
cmpl $0x0, %eax
jne 0xb8de5
callq 0xe7350
jmp 0xb8e6e
leaq 0x2e1e34(%rip), %rdi    # 0x39ac20
leaq 0xcb2d8(%rip), %rsi     # 0x1840cb
callq 0x9510
cmpl $0x0, %eax
jne 0xb8e04
callq 0xe7400
jmp 0xb8e6c
leaq 0x2e1e15(%rip), %rdi    # 0x39ac20
leaq 0xcad55(%rip), %rsi     # 0x183b67
callq 0x9510
cmpl $0x0, %eax
jne 0xb8e23
callq 0xe6ad0
jmp 0xb8e6a
leaq 0x2e1df6(%rip), %rdi    # 0x39ac20
leaq 0xd0721(%rip), %rsi     # 0x189552
callq 0x9510
cmpl $0x0, %eax
jne 0xb8e3d
jmp 0xb8e68
leaq 0x2e1ddc(%rip), %rdi    # 0x39ac20
leaq 0xdd548(%rip), %rsi     # 0x196393
callq 0x9510
cmpl $0x0, %eax
jne 0xb8e5c
callq 0xe68f0
jmp 0xb8e66
movl $0x0, 0x31818e(%rip)    # 0x3d0ff4
jmp 0xb8e68
jmp 0xb8e6a
jmp 0xb8e6c
jmp 0xb8e6e
jmp 0xb8e70
jmp 0xb8e72
jmp 0xb8e74
jmp 0xb8e76
jmp 0xb8e78
jmp 0xb8e7a
jmp 0xb8e7c
jmp 0xb8e7e
jmp 0xb8e80
jmp 0xb8e82
jmp 0xb8e84
jmp 0xb8e86
jmp 0xb8e88
jmp 0xb8e8a
jmp 0xb8e8c
jmp 0xb8e8e
jmp 0xb8e90
jmp 0xb8e92
jmp 0xb8e94
jmp 0xb8e96
jmp 0xb8e98
jmp 0xb8e9a
jmp 0xb8e9c
jmp 0xb8e9e
jmp 0xb8ea0
jmp 0xb8ea2
jmp 0xb8ea4
jmp 0xb8ea6
jmp 0xb8ea8
jmp 0xb8eaa
jmp 0xb8eac
jmp 0xb8eae
jmp 0xb8eb0
jmp 0xb8eb2
jmp 0xb8eb4
jmp 0xb8eb6
jmp 0xb8eb8
jmp 0xb8eba
jmp 0xb8ebc
jmp 0xb8ebe
jmp 0xb8ec0
jmp 0xb8ec2
jmp 0xb8ec4
jmp 0xb8ec6
jmp 0xb8ec8
leaq 0x1e46d1(%rip), %rax    # 0x29d5a0
cmpq $0x0, (%rax)
je 0xb8ef3
leaq 0x1c9904(%rip), %rax    # 0x2827e0
cmpq $0x0, (%rax)
je 0xb8ef3
leaq 0x1c98f7(%rip), %rax    # 0x2827e0
movq (%rax), %rax
movl %eax, %edi
callq 0xb8b0
leaq 0x1e5286(%rip), %rax    # 0x29e180
movl $0x1, (%rax)
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)