// File: jkingan[P]ladyheather/heathgps.cpp
// Function: parse_taip_status()
void parse_taip_status()
{
   get_fixed_field(1);
   if(get_fixed_field(1)) {  // tracking mode
      have_gps_status = 33;
      if     (msg_field[0] == '0') gps_status = GPS_FIXES;
      else if(msg_field[0] == '1') gps_status = GPS_NO_TIME;
      else if(msg_field[0] == '3') gps_status = GPS_PDOP_HIGH;
      else if(msg_field[0] == '8') gps_status = GPS_NO_SATS;
      else if(msg_field[0] == '9') gps_status = GPS_ONE_SAT;
      else if(msg_field[0] == 'A') gps_status = GPS_TWO_SATS;
      else if(msg_field[0] == 'B') gps_status = GPS_THREE_SATS;
      else if(msg_field[0] == 'C') gps_status = GPS_SAT_UNAVAIL;
      else                         gps_status = GPS_UNK_STATUS;
   }

   if(get_fixed_field(1)) {  // status nibble 1 - antenna
      if(msg_field[0] == '0')  minor_alarms &= (~(MINOR_ANT_NO_PWR)); 
      else                     minor_alarms |= (MINOR_ANT_NO_PWR);
      have_antenna = 33;
   }
   if(get_fixed_field(1)) {  // status nibble 2 - backup battery
   }

   if(get_fixed_field(2)) {  // machine id      - not used
   }

   if(get_fixed_field(1)) {  // status nibble 3 - not used
   }

   if(get_fixed_field(1)) {  // status nibble 4 - almanac / RTCC
      minor_alarms &= (~MINOR_ALMANAC);
      if     (msg_field[0] == '8')  minor_alarms |= (MINOR_ALMANAC); 
      else if(msg_field[0] == 'A')  minor_alarms |= (MINOR_ALMANAC); 
      have_almanac = 1;
   }

   if(get_fixed_field(2)) {  // reseved         - not used
   }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movl $0x1, %edi
callq 0xb4d60
movl $0x1, %edi
callq 0xb4d60
cmpl $0x0, %eax
je 0xde5e7
leaq 0x28dfc8(%rip), %rax    # 0x36c490
movl $0x21, (%rax)
leaq 0x2bc74b(%rip), %rax    # 0x39ac20
movsbl (%rax), %eax
cmpl $0x30, %eax
jne 0xde4ef
leaq 0x28e198(%rip), %rax    # 0x36c67c
movl $0x0, (%rax)
jmp 0xde5e5
leaq 0x2bc72a(%rip), %rax    # 0x39ac20
movsbl (%rax), %eax
cmpl $0x31, %eax
jne 0xde510
leaq 0x28e177(%rip), %rax    # 0x36c67c
movl $0x1, (%rax)
jmp 0xde5e3
leaq 0x2bc709(%rip), %rax    # 0x39ac20
movsbl (%rax), %eax
cmpl $0x33, %eax
jne 0xde531
leaq 0x28e156(%rip), %rax    # 0x36c67c
movl $0x3, (%rax)
jmp 0xde5e1
leaq 0x2bc6e8(%rip), %rax    # 0x39ac20
movsbl (%rax), %eax
cmpl $0x38, %eax
jne 0xde552
leaq 0x28e135(%rip), %rax    # 0x36c67c
movl $0x8, (%rax)
jmp 0xde5df
leaq 0x2bc6c7(%rip), %rax    # 0x39ac20
movsbl (%rax), %eax
cmpl $0x39, %eax
jne 0xde570
leaq 0x28e114(%rip), %rax    # 0x36c67c
movl $0x9, (%rax)
jmp 0xde5dd
leaq 0x2bc6a9(%rip), %rax    # 0x39ac20
movsbl (%rax), %eax
cmpl $0x41, %eax
jne 0xde58e
leaq 0x28e0f6(%rip), %rax    # 0x36c67c
movl $0xa, (%rax)
jmp 0xde5db
leaq 0x2bc68b(%rip), %rax    # 0x39ac20
movsbl (%rax), %eax
cmpl $0x42, %eax
jne 0xde5ac
leaq 0x28e0d8(%rip), %rax    # 0x36c67c
movl $0xb, (%rax)
jmp 0xde5d9
leaq 0x2bc66d(%rip), %rax    # 0x39ac20
movsbl (%rax), %eax
cmpl $0x43, %eax
jne 0xde5ca
leaq 0x28e0ba(%rip), %rax    # 0x36c67c
movl $0xc, (%rax)
jmp 0xde5d7
leaq 0x28e0ab(%rip), %rax    # 0x36c67c
movl $0xff, (%rax)
jmp 0xde5d9
jmp 0xde5db
jmp 0xde5dd
jmp 0xde5df
jmp 0xde5e1
jmp 0xde5e3
jmp 0xde5e5
jmp 0xde5e7
movl $0x1, %edi
callq 0xb4d60
cmpl $0x0, %eax
je 0xde63e
leaq 0x2bc623(%rip), %rax    # 0x39ac20
movsbl (%rax), %eax
cmpl $0x30, %eax
jne 0xde61c
leaq 0x28ddac(%rip), %rax    # 0x36c3b8
movl (%rax), %ecx
andl $-0x7, %ecx
leaq 0x28dda0(%rip), %rax    # 0x36c3b8
movl %ecx, (%rax)
jmp 0xde631
leaq 0x28dd95(%rip), %rax    # 0x36c3b8
movl (%rax), %ecx
orl $0x6, %ecx
leaq 0x28dd89(%rip), %rax    # 0x36c3b8
movl %ecx, (%rax)
leaq 0x28ddd4(%rip), %rax    # 0x36c40c
movl $0x21, (%rax)
movl $0x1, %edi
callq 0xb4d60
cmpl $0x0, %eax
je 0xde64f
jmp 0xde64f
movl $0x2, %edi
callq 0xb4d60
cmpl $0x0, %eax
je 0xde660
jmp 0xde660
movl $0x1, %edi
callq 0xb4d60
cmpl $0x0, %eax
je 0xde671
jmp 0xde671
movl $0x1, %edi
callq 0xb4d60
cmpl $0x0, %eax
je 0xde6f7
leaq 0x28dd31(%rip), %rax    # 0x36c3b8
movl (%rax), %ecx
andl $0xfffff7ff, %ecx       # imm = 0xFFFFF7FF
leaq 0x28dd22(%rip), %rax    # 0x36c3b8
movl %ecx, (%rax)
leaq 0x2bc581(%rip), %rax    # 0x39ac20
movsbl (%rax), %eax
cmpl $0x38, %eax
jne 0xde6c1
leaq 0x28dd0a(%rip), %rax    # 0x36c3b8
movl (%rax), %ecx
orl $0x800, %ecx            # imm = 0x800
leaq 0x28dcfb(%rip), %rax    # 0x36c3b8
movl %ecx, (%rax)
jmp 0xde6ea
leaq 0x2bc558(%rip), %rax    # 0x39ac20
movsbl (%rax), %eax
cmpl $0x41, %eax
jne 0xde6e8
leaq 0x28dce1(%rip), %rax    # 0x36c3b8
movl (%rax), %ecx
orl $0x800, %ecx            # imm = 0x800
leaq 0x28dcd2(%rip), %rax    # 0x36c3b8
movl %ecx, (%rax)
jmp 0xde6ea
leaq 0x28dd93(%rip), %rax    # 0x36c484
movl $0x1, (%rax)
movl $0x2, %edi
callq 0xb4d60
cmpl $0x0, %eax
je 0xde708
jmp 0xde708
popq %rbp
retq
nopw (%rax,%rax)