// File: /workspace/github_cpp_makefile_star2_O1/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
leaq 0x195219(%rip), %rax    # 0x23e390
movq (%rax), %rdi
testq %rdi, %rdi
je 0xa9190
leaq 0x1952a2(%rip), %rax    # 0x23e428
cmpl $0x0, (%rax)
je 0xa9190
callq 0x9420
leaq 0x195dd5(%rip), %rax    # 0x23ef6c
movl $0x0, (%rax)
leaq 0x28f0b0(%rip), %rax    # 0x338254
xorl %ebx, %ebx
movw %bx, (%rax)
movw %bx, 0x2c2c10(%rip)     # 0x36bdc0
leaq 0x28f09b(%rip), %rcx    # 0x338252
cmpw %bx, (%rcx)
je 0xa91ca
movw $0x1, (%rax)
leaq 0x28e088(%rip), %rax    # 0x337250
movb (%rax), %bl
leaq 0x195d8d(%rip), %rax    # 0x23ef5e
xorl %ecx, %ecx
movb %cl, (%rax)
leaq 0x28de4d(%rip), %rax    # 0x337029
movb %cl, (%rax)
leaq 0x195d77(%rip), %rax    # 0x23ef5c
movzwl (%rax), %eax
leaq 0x195da9(%rip), %rcx    # 0x23ef98
incq (%rcx)
movl %eax, 0x2c2bcc(%rip)    # 0x36bdc4
leaq 0x195d71(%rip), %rax    # 0x23ef70
movl $0x0, (%rax)
movw $0x0, 0x2c2bb2(%rip)    # 0x36bdc0
xorl %edi, %edi
callq 0x7f3d1
movzbl %bl, %eax
cmpl $0x60, %eax
jg 0xa9243
leal -0x41(%rax), %ecx
cmpl $0x14, %ecx
ja 0xa92c1
leaq 0x76898(%rip), %rax     # 0x11fac8
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
callq 0xa7e45
jmp 0xa9339
cmpl $0x87, %eax
jg 0xa926c
leal -0x70(%rax), %ecx
cmpl $0x4, %ecx
ja 0xa92cd
leaq 0x768c3(%rip), %rax     # 0x11fb1c
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
callq 0xa869c
jmp 0xa9339
cmpl $0xe6, %eax
jle 0xa929d
cmpl $0xe7, %eax
je 0xa932d
cmpl $0xf5, %eax
je 0xa9326
cmpl $0xf7, %eax
jne 0xa9339
leaq 0x7ccd8(%rip), %rdi     # 0x125f73
jmp 0xa92ba
cmpl $0x88, %eax
je 0xa9334
cmpl $0x93, %eax
jne 0xa9339
leaq 0x7cc5c(%rip), %rdi     # 0x125f16
callq 0x58e77
jmp 0xa9339
cmpl $0x60, %eax
jne 0xa9339
callq 0xa85d4
jmp 0xa9339
cmpl $0x61, %eax
jne 0xa9339
callq 0xa8644
jmp 0xa9339
callq 0xa87b2
jmp 0xa9339
callq 0xa88a1
jmp 0xa9339
callq 0xa8956
jmp 0xa9339
callq 0xa81e5
jmp 0xa9339
callq 0xa80cc
jmp 0xa9339
callq 0xa7ea3
jmp 0xa9339
callq 0xa7fee
jmp 0xa9339
callq 0xa7f7a
jmp 0xa9339
callq 0xa811c
jmp 0xa9339
callq 0xa8368
jmp 0xa9339
callq 0xa851f
jmp 0xa9339
callq 0xa8e94
jmp 0xa9339
callq 0xa8c67
jmp 0xa9339
callq 0xa8a86
leaq 0x195080(%rip), %rax    # 0x23e3c0
cmpq $0x0, (%rax)
setne %al
leaq 0x17a2b2(%rip), %rcx    # 0x223600
movq (%rcx), %rdi
testq %rdi, %rdi
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0xa9363
callq 0xaff7
leaq 0x195c36(%rip), %rax    # 0x23efa0
movl $0x1, (%rax)
addq $0x8, %rsp
popq %rbx
popq %rbp
retq