// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %rbx
pushq %rax
callq 0x51408
leaq 0x18f7bc(%rip), %rax    # 0x228f6c
andl $0x0, (%rax)
leaq 0x288a9a(%rip), %rax    # 0x322254
andw $0x0, (%rax)
callq 0x51b3c
movl %eax, %ebx
leaq 0x18f792(%rip), %rax    # 0x228f5e
xorl %ecx, %ecx
movb %cl, (%rax)
leaq 0x287852(%rip), %rax    # 0x321029
movb %cl, (%rax)
leaq 0x18f77c(%rip), %rax    # 0x228f5c
movzwl (%rax), %eax
leaq 0x18f7ae(%rip), %rcx    # 0x228f98
incq (%rcx)
leaq 0x18f77c(%rip), %rcx    # 0x228f70
andl $0x0, (%rcx)
movl %eax, 0x2bc5c7(%rip)    # 0x355dc4
andw $0x0, 0x2bc5bb(%rip)    # 0x355dc0
xorl %edi, %edi
callq 0x73d28
movzbl %bl, %eax
leal -0x41(%rax), %ecx
cmpl $0x14, %ecx
jbe 0x99872
leal -0x70(%rax), %ecx
cmpl $0x4, %ecx
jbe 0x9988c
cmpl $0x60, %eax
je 0x99905
cmpl $0x61, %eax
je 0x99913
cmpl $0x88, %eax
je 0x9990c
cmpl $0x93, %eax
je 0x998f0
cmpl $0xe7, %eax
je 0x998fe
cmpl $0xf5, %eax
je 0x998f7
cmpl $0xf7, %eax
jne 0x99918
callq 0x9978d
jmp 0x99918
leaq 0x7026b(%rip), %rax     # 0x109ae4
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
callq 0x98807
jmp 0x99918
leaq 0x702a5(%rip), %rax     # 0x109b38
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
callq 0x98ea3
jmp 0x99918
callq 0x990a8
jmp 0x99918
callq 0x99005
jmp 0x99918
callq 0x98f77
jmp 0x99918
callq 0x98c0b
jmp 0x99918
callq 0x98ae5
jmp 0x99918
callq 0x98a32
jmp 0x99918
callq 0x98947
jmp 0x99918
callq 0x989f4
jmp 0x99918
callq 0x98863
jmp 0x99918
callq 0x98d5a
jmp 0x99918
callq 0x98918
jmp 0x99918
callq 0x99352
jmp 0x99918
callq 0x9954a
jmp 0x99918
callq 0x99363
jmp 0x99918
callq 0x98dfd
jmp 0x99918
callq 0x991c1
jmp 0x99918
callq 0x98e4b
leaq 0x18eaa1(%rip), %rax    # 0x2283c0
cmpq $0x0, (%rax)
setne %al
leaq 0x173cd3(%rip), %rcx    # 0x20d600
movq (%rcx), %rdi
testq %rdi, %rdi
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x99942
callq 0xae83
leaq 0x18f657(%rip), %rax    # 0x228fa0
movl $0x1, (%rax)
addq $0x8, %rsp
popq %rbx
popq %rbp
retq