// File: jkingan[P]ladyheather/heathgps.cpp
// Function: decode_nvs_message()
void decode_nvs_message()
{
u08 id;

   flush_debug();

   msg_fault = 0x00;
   tsip_rptr = 0;
   id = get_next_tsip();

   subcode = 0x00;
   first_msg = 0;
   last_msg = msg_id;
   ++wakeup_tsip_msg; // we have seen a TSIP message
   tsip_error = 0;    // this flag gets set if we see something wrong in a message
   early_end = 0;
   new_packet(0);

   if     (id == 0x41) parse_nvs_speed();
   else if(id == 0x43) parse_nvs_test();
   else if(id == 0x46) parse_nvs_date();
   else if(id == 0x47) parse_nvs_disable();
   else if(id == 0x4A) parse_nvs_iono();
   else if(id == 0x4B) parse_nvs_gnss_timescale();
   else if(id == 0x51) parse_nvs_config();
   else if(id == 0x52) parse_nvs_sats();
   else if(id == 0x55) parse_nvs_mode();
   else if(id == 0x60) parse_nvs_dops();
   else if(id == 0x61) parse_nvs_pvtdops();
   else if(id == 0x70) parse_nvs_version();
   else if(id == 0x72) parse_nvs_time();
   else if(id == 0x73) parse_nvs_survey();
   else if(id == 0x74) parse_nvs_timescale();
   else if(id == 0x88) parse_nvs_pvt();
   else if(id == 0x93) parse_nvs_used();
   else if(id == 0xE7) parse_nvs_rcvr_config();
   else if(id == 0xF5) parse_nvs_raw();
   else if(id == 0xF7) parse_nvs_ephem();

   if(sim_file && sim_delay) {  // throttle sim file messages
      Sleep(sim_delay);
   }
   saw_rcvr_msg = 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
callq 0x798d0
leaq 0x1b8c38(%rip), %rax    # 0x29e14c
movl $0x0, (%rax)
leaq 0x2b1f13(%rip), %rax    # 0x397434
movw $0x0, (%rax)
callq 0x7a380
movb %al, -0x1(%rbp)
leaq 0x1b8c09(%rip), %rax    # 0x29e13e
movb $0x0, (%rax)
leaq 0x2b0cca(%rip), %rax    # 0x396209
movb $0x0, (%rax)
leaq 0x1b8bf3(%rip), %rax    # 0x29e13c
movzwl (%rax), %eax
movl %eax, 0x2e5a52(%rip)    # 0x3cafa4
leaq 0x1b8c1f(%rip), %rax    # 0x29e178
movq (%rax), %rcx
addq $0x1, %rcx
leaq 0x1b8c11(%rip), %rax    # 0x29e178
movq %rcx, (%rax)
leaq 0x1b8bdf(%rip), %rax    # 0x29e150
movl $0x0, (%rax)
movw $0x0, 0x2e5a20(%rip)    # 0x3cafa0
xorl %edi, %edi
callq 0xae3c0
movzbl -0x1(%rbp), %eax
cmpl $0x41, %eax
jne 0xe559a
callq 0xe3c70
jmp 0xe571c
movzbl -0x1(%rbp), %eax
cmpl $0x43, %eax
jne 0xe55ad
callq 0xe3ce0
jmp 0xe571a
movzbl -0x1(%rbp), %eax
cmpl $0x46, %eax
jne 0xe55c0
callq 0xe3e30
jmp 0xe5718
movzbl -0x1(%rbp), %eax
cmpl $0x47, %eax
jne 0xe55d3
callq 0xe3ec0
jmp 0xe5716
movzbl -0x1(%rbp), %eax
cmpl $0x4a, %eax
jne 0xe55e6
callq 0xe3ff0
jmp 0xe5714
movzbl -0x1(%rbp), %eax
cmpl $0x4b, %eax
jne 0xe55f9
callq 0xe4070
jmp 0xe5712
movzbl -0x1(%rbp), %eax
cmpl $0x51, %eax
jne 0xe560c
callq 0xe41a0
jmp 0xe5710
movzbl -0x1(%rbp), %eax
cmpl $0x52, %eax
jne 0xe561f
callq 0xe4320
jmp 0xe570e
movzbl -0x1(%rbp), %eax
cmpl $0x55, %eax
jne 0xe5632
callq 0xe4520
jmp 0xe570c
movzbl -0x1(%rbp), %eax
cmpl $0x60, %eax
jne 0xe5645
callq 0xe4640
jmp 0xe570a
movzbl -0x1(%rbp), %eax
cmpl $0x61, %eax
jne 0xe5658
callq 0xe46b0
jmp 0xe5708
movzbl -0x1(%rbp), %eax
cmpl $0x70, %eax
jne 0xe566b
callq 0xe4720
jmp 0xe5706
movzbl -0x1(%rbp), %eax
cmpl $0x72, %eax
jne 0xe567e
callq 0xe4870
jmp 0xe5704
movzbl -0x1(%rbp), %eax
cmpl $0x73, %eax
jne 0xe568e
callq 0xe4920
jmp 0xe5702
movzbl -0x1(%rbp), %eax
cmpl $0x74, %eax
jne 0xe569e
callq 0xe4a40
jmp 0xe5700
movzbl -0x1(%rbp), %eax
cmpl $0x88, %eax
jne 0xe56b0
callq 0xe4c60
jmp 0xe56fe
movzbl -0x1(%rbp), %eax
cmpl $0x93, %eax
jne 0xe56c2
callq 0xe4e80
jmp 0xe56fc
movzbl -0x1(%rbp), %eax
cmpl $0xe7, %eax
jne 0xe56d4
callq 0xe4ea0
jmp 0xe56fa
movzbl -0x1(%rbp), %eax
cmpl $0xf5, %eax
jne 0xe56e6
callq 0xe5140
jmp 0xe56f8
movzbl -0x1(%rbp), %eax
cmpl $0xf7, %eax
jne 0xe56f6
callq 0xe54e0
jmp 0xe56f8
jmp 0xe56fa
jmp 0xe56fc
jmp 0xe56fe
jmp 0xe5700
jmp 0xe5702
jmp 0xe5704
jmp 0xe5706
jmp 0xe5708
jmp 0xe570a
jmp 0xe570c
jmp 0xe570e
jmp 0xe5710
jmp 0xe5712
jmp 0xe5714
jmp 0xe5716
jmp 0xe5718
jmp 0xe571a
jmp 0xe571c
leaq 0x1b7e7d(%rip), %rax    # 0x29d5a0
cmpq $0x0, (%rax)
je 0xe5747
leaq 0x19d0b0(%rip), %rax    # 0x2827e0
cmpq $0x0, (%rax)
je 0xe5747
leaq 0x19d0a3(%rip), %rax    # 0x2827e0
movq (%rax), %rax
movl %eax, %edi
callq 0xb8b0
leaq 0x1b8a32(%rip), %rax    # 0x29e180
movl $0x1, (%rax)
addq $0x10, %rsp
popq %rbp
retq
nopw (%rax,%rax)