LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_antenna(int)
void set_antenna(int i)
{
   if(read_only) return;

   if(rcvr_type == TM4_RCVR) {
      sprintf(out, "#23,%d", i);
      send_tm4_cmd(out);
   }
}

// Assembly:
leaq 0x2d0bc7(%rip), %rax    # 0x33701a
cmpb $0x0, (%rax)
jne 0x6649c
leaq 0x1b2471(%rip), %rax    # 0x2188d0
movabsq $0x400000000, %rcx      # imm = 0x400000000
cmpq %rcx, (%rax)
jne 0x6649c
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movl %edi, %edx
leaq 0x2d5da3(%rip), %rbx    # 0x33c220
leaq 0xba4af(%rip), %rsi     # 0x120933
movq %rbx, %rdi
xorl %eax, %eax
callq 0x9060
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x5f170
retq
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_sat_list()
void request_sat_list()
{
   if(luxor) return;
   if(no_poll) return;

   if(rcvr_type == ESIP_RCVR) {
//    send_esip_cmd("PERDCFG,NMEAOUT,GSA,0");
//    send_esip_cmd("PERDCFG,NMEAOUT,GSV,0");
   }
   else if(rcvr_type == FURUNO_RCVR) {
      send_furuno_cmd("GPint,GSA00,GSV00,acc00,anc00,wav00");
      send_furuno_cmd("GPwaq");
      send_furuno_cmd("GPmgq");
      send_furuno_cmd("GPpsq");
      send_furuno_cmd("GPprq");
   }
   else if(rcvr_type == MOTO_RCVR) {
      if(1 || (user_set_raw_rate == 0)) { 
         send_moto_start("Bb");  // sat visibility data
         send_byte(0);
         send_moto_end();
      }
   }
   else if(rcvr_type == NVS_RCVR) {
      send_nvs_start(0x24);
      send_nvs_end();
   }
   else if(rcvr_type == RFTG_RCVR) {
      request_rftg_sats();
set_rftg_normal();
   }
   else if(rcvr_type == TRUE_RCVR) {
      send_true_cmd("$GETPOS");  // get position
   }
   else if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x24);
      send_tsip_end();
   }
   else if(rcvr_type == UBX_RCVR) {
      request_ubx_msg(UBX_DOP);
   }
   else if(rcvr_type == ZODIAC_RCVR) {
      query_zod_msg(ZOD_SNR_MSG);
      query_zod_msg(ZOD_VIS_MSG);
//query_zod_msg(ZOD_TRAIM_CONFIG_MSG);  //zork
   }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
leaq 0x1d8a96(%rip), %rax    # 0x23ef3e
leaq 0x2d0b71(%rip), %rcx    # 0x337020
movb (%rcx), %cl
orb (%rax), %cl
setne %cl
leaq 0x1b2413(%rip), %rax    # 0x2188d0
movq (%rax), %rax
movl $0x80000000, %edx       # imm = 0x80000000
cmpq %rdx, %rax
sete %dl
orb %cl, %dl
je 0x664d1
popq %rbp
retq
cmpq $0x7ff, %rax            # imm = 0x7FF
jg 0x66501
cmpq $0x1f, %rax
jg 0x6652a
cmpq $0x1, %rax
je 0x665c0
cmpq $0x4, %rax
jne 0x664cf
movl $0x104, %edi            # imm = 0x104
xorl %esi, %esi
callq 0x5f37d
popq %rbp
jmp 0x5f456
cmpq $0x3fffff, %rax         # imm = 0x3FFFFF
jg 0x6656f
cmpq $0x800, %rax            # imm = 0x800
je 0x665c7
cmpq $0x200000, %rax         # imm = 0x200000
jne 0x664cf
leaq 0xba455(%rip), %rdi     # 0x120979
popq %rbp
jmp 0x5f228
cmpq $0x20, %rax
je 0x665d7
cmpq $0x100, %rax            # imm = 0x100
jne 0x664cf
movl $0x3ea, %edi            # imm = 0x3EA
movl $0x6, %esi
movl $0x800, %edx            # imm = 0x800
callq 0x646e6
callq 0x648ab
movl $0x3eb, %edi            # imm = 0x3EB
movl $0x6, %esi
movl $0x800, %edx            # imm = 0x800
callq 0x646e6
popq %rbp
jmp 0x648ab
cmpq $0x400000, %rax         # imm = 0x400000
je 0x665f0
cmpq $0x20000000, %rax       # imm = 0x20000000
jne 0x664cf
leaq 0xba3b0(%rip), %rdi     # 0x12093a
callq 0x5eff8
leaq 0xba3c8(%rip), %rdi     # 0x12095e
callq 0x5eff8
leaq 0xba3c2(%rip), %rdi     # 0x120964
callq 0x5eff8
leaq 0xba3bc(%rip), %rdi     # 0x12096a
callq 0x5eff8
leaq 0xba3b6(%rip), %rdi     # 0x120970
popq %rbp
jmp 0x5eff8
movl $0x24, %edi
jmp 0x66601
movl $0x24, %edi
callq 0x5e6be
popq %rbp
jmp 0x5e7c0
leaq 0xba398(%rip), %rdi     # 0x120976
callq 0x6160d
xorl %edi, %edi
callq 0x590f7
popq %rbp
jmp 0x61688
callq 0x65965
xorl %edi, %edi
callq 0x65779
movl $0x45, %edi
callq 0x5e6be
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_gps_time()
void request_gps_time()
{
   if(luxor) return;
   if(no_poll) return;

   if(rcvr_type == TSIP_RCVR) {  // SV6_TYPE uses this
      send_tsip_start(0x21);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x1d892b(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
je 0x66619
retq
leaq 0x2d0a00(%rip), %rax    # 0x337020
cmpb $0x0, (%rax)
jne 0x66618
leaq 0x1b22a4(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x66618
pushq %rbp
movq %rsp, %rbp
movl $0x21, %edi
callq 0x5e6be
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_sig_levels()
void request_sig_levels()
{
   if(luxor) return;
   if(no_poll) return;

   if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x27);
      send_tsip_end();
   }
   else if(rcvr_type == UBX_RCVR) {
      if(raw_msg_rate == 0) {   // poll for doppler, etc
         request_ubx_msg(UBX_SVN); // sat info
         request_ubx_msg(UBX_RAW);  
         request_ubx_msg(UBX_RAWX);
      }
   }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
leaq 0x1d88ed(%rip), %rax    # 0x23ef3e
leaq 0x2d09c8(%rip), %rcx    # 0x337020
movb (%rcx), %cl
orb (%rax), %cl
je 0x66660
popq %rbp
retq
leaq 0x1b2269(%rip), %rax    # 0x2188d0
movq (%rax), %rax
cmpq $0x1, %rax
jne 0x66680
movl $0x27, %edi
callq 0x5e6be
popq %rbp
jmp 0x5e73c
cmpq $0x4, %rax
jne 0x6665e
leaq 0x1b4ceb(%rip), %rax    # 0x21b378
cmpl $0x0, (%rax)
jne 0x6665e
movl $0x130, %edi            # imm = 0x130
xorl %esi, %esi
callq 0x5f37d
callq 0x5f456
movl $0x210, %edi            # imm = 0x210
xorl %esi, %esi
callq 0x5f37d
callq 0x5f456
movl $0x215, %edi            # imm = 0x215
xorl %esi, %esi
callq 0x5f37d
popq %rbp
jmp 0x5f456
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_alm_health()
void request_alm_health()
{
   if(no_poll) return;
   if(res_t) return;
   if(luxor) return;

   if(rcvr_type == TSIP_RCVR) {
      if(ACU_GG) ;
      else if(ACU_360) ;
      else if(ACUTIME) ;
      else if(PALISADE) ;
      else if(SV6_FAMILY) return;
      send_tsip_start(0x29);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x2d0953(%rip), %rax    # 0x337020
leaq 0x1b2230(%rip), %rcx    # 0x218904
movb (%rcx), %cl
orb (%rax), %cl
je 0x666db
retq
leaq 0x1d885c(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
jne 0x666da
leaq 0x1b21e2(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x666da
leaq 0x1b48d9(%rip), %rax    # 0x21afd4
movl (%rax), %eax
cmpl $0x33, %eax
je 0x666da
cmpl $0x36, %eax
je 0x666da
pushq %rbp
movq %rsp, %rbp
movl $0x29, %edi
callq 0x5e6be
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_xyz(float, float, float)
void set_xyz(float x, float y, float z)
{
   if(read_only) return;
   if(luxor) return;

   if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x31);
      send_single(x);
      send_single(y);
      send_single(z);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x2d08f8(%rip), %rax    # 0x33701a
cmpb $0x0, (%rax)
je 0x66728
retq
leaq 0x1d880f(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
jne 0x66727
leaq 0x1b2195(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x66727
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movl $0x31, %edi
movss %xmm2, -0xc(%rbp)
movss %xmm1, -0x8(%rbp)
movss %xmm0, -0x4(%rbp)
callq 0x5e6be
movss -0x4(%rbp), %xmm0
callq 0x59376
movss -0x8(%rbp), %xmm0
callq 0x59376
movss -0xc(%rbp), %xmm0
callq 0x59376
addq $0x10, %rsp
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_ref_input(int)
void set_ref_input(int ref)
{
   // ref=0: GPS
   // ref=1: AUX PPS input

   if(read_only) return;
   if(luxor) return;

   if(rcvr_type == STAR_RCVR) {
      if     (ref == 0) queue_star_cmd("INPUT_TYPE(1)=GPS;", STAR_INP_TYPE_MSG);       // gps input
      else if(ref == 1) queue_star_cmd("INPUT_TYPE(1)=AUX;", STAR_INP_TYPE_MSG);  // pps input
      queue_star_cmd("INPUT_TYPE(1);", STAR_INP_TYPE_MSG);  // !!! this command is not valid for ATDC model
   }
   else request_rcvr_config(7788);
}

// Assembly:
leaq 0x2d0889(%rip), %rax    # 0x33701a
leaq 0x1d87a6(%rip), %rcx    # 0x23ef3e
movb (%rcx), %cl
orb (%rax), %cl
je 0x6679f
retq
leaq 0x1b212a(%rip), %rax    # 0x2188d0
cmpq $0x1000, (%rax)         # imm = 0x1000
jne 0x667c1
testl %edi, %edi
je 0x667cb
cmpl $0x1, %edi
jne 0x667e1
leaq 0xba1d5(%rip), %rdi     # 0x120994
jmp 0x667d2
movl $0x1e6c, %edi           # imm = 0x1E6C
jmp 0x667f2
leaq 0xba1af(%rip), %rdi     # 0x120981
pushq %rbp
movq %rsp, %rbp
movl $0xcb, %esi
callq 0x5edda
popq %rbp
leaq 0xba1bf(%rip), %rdi     # 0x1209a7
movl $0xcb, %esi
jmp 0x5edda
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_venus_survey(int, double, double, double)
void set_venus_survey(int mode, double slat,double slon,double salt)
{
   if(read_only) return;

   if(saw_venus_raw) send_venus_start(SET_VENUS_RTK_SURVEY);
   else              send_venus_start(SET_VENUS_SURVEY);
   send_byte(mode);       // 0=timing pvt mode  1=do survey  2=posn hold mode
   send_dword(do_survey);
   send_dword(100);             // standard deviation
   send_double(slat*180.0/PI);  // lla only used for position hold mode
   send_double(slon*180.0/PI);
   send_single((float)salt);
   send_venus_save(1);
}

// Assembly:
leaq 0x2d028a(%rip), %rax    # 0x33701a
cmpb $0x0, (%rax)
je 0x66d96
retq
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x18, %rsp
movl %edi, %ebx
leaq 0x2d704c(%rip), %rax    # 0x33ddf4
cmpl $0x0, (%rax)
movl $0x54, %eax
movl $0x22, %edi
cmovel %eax, %edi
movl $0x1f, %esi
movsd %xmm2, -0x20(%rbp)
movsd %xmm1, -0x18(%rbp)
movsd %xmm0, -0x10(%rbp)
callq 0x5fb3c
movzbl %bl, %edi
callq 0x590f7
leaq 0x2a7098(%rip), %rax    # 0x30de78
movl (%rax), %edi
callq 0x592eb
movl $0x64, %edi
callq 0x592eb
movsd -0x10(%rbp), %xmm0
mulsd 0xa4a32(%rip), %xmm0    # 0x10b830
divsd 0xa4a22(%rip), %xmm0    # 0x10b828
callq 0x593bd
movsd -0x18(%rbp), %xmm0
mulsd 0xa4a18(%rip), %xmm0    # 0x10b830
divsd 0xa4a08(%rip), %xmm0    # 0x10b828
callq 0x593bd
xorps %xmm0, %xmm0
cvtsd2ss -0x20(%rbp), %xmm0
callq 0x59376
movl $0x1, %edi
addq $0x18, %rsp
popq %rbx
popq %rbp
jmp 0x5fc00
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_filter_factor(double)
void set_filter_factor(DATA_SIZE val)
{
   if(read_only) return;

   if(rcvr_type == NVS_RCVR) {
      send_nvs_start(0x0D);
      send_byte(0x04);
      send_single((float) val);
      send_nvs_end();
   }
}

// Assembly:
leaq 0x2d01d1(%rip), %rax    # 0x33701a
cmpb $0x0, (%rax)
jne 0x66e96
leaq 0x1b1a7b(%rip), %rax    # 0x2188d0
cmpq $0x800, (%rax)          # imm = 0x800
jne 0x66e96
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movl $0xd, %edi
movsd %xmm0, -0x8(%rbp)
callq 0x5e6be
movl $0x4, %edi
callq 0x590f7
xorps %xmm0, %xmm0
cvtsd2ss -0x8(%rbp), %xmm0
callq 0x59376
addq $0x10, %rsp
popq %rbp
jmp 0x5e7c0
retq
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_rtcm_mode(int)
void set_rtcm_mode(int enable)
{
   if(rcvr_type == VENUS_RCVR) {  // raw Hz !!!!
      send_venus_start(SET_VENUS_RTCM);
      send_byte(enable);
      send_byte(0);   // 1Hz rnx2  0..6 -> 1/2/4/5/10/20/8 Hz

      send_byte(1);   // base station ARP
      if(gnss_mask & GPS)     send_byte(1);
      else                    send_byte(0);

      if(gnss_mask & GLONASS) send_byte(1);
      else                    send_byte(0);

      if(1)                   send_byte(0);  // reserved

      if(gnss_mask & SBAS)    send_byte(1);
      else                    send_byte(0);

      if(gnss_mask & QZSS)    send_byte(1);
      else                    send_byte(0);

      if(gnss_mask & BEIDOU)  send_byte(1);
      else                    send_byte(0);

      send_byte(0);  // reserved
      send_byte(0);  // reserved
      send_byte(0);  // reserved
      send_byte(0);  // reserved
      send_byte(0);  // reserved
      send_byte(0);  // reserved
      send_venus_save(1);
   }
}

// Assembly:
leaq 0x1b1a32(%rip), %rax    # 0x2188d0
cmpq $0x80, (%rax)
jne 0x66f62
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movl %edi, %ebx
movl $0x20, %edi
movl $0x11, %esi
callq 0x5fb3c
movzbl %bl, %edi
callq 0x590f7
xorl %edi, %edi
callq 0x590f7
movl $0x1, %edi
callq 0x590f7
leaq 0x109d92(%rip), %rbx    # 0x170c74
movl (%rbx), %edi
andl $0x1, %edi
callq 0x590f7
movzbl (%rbx), %edi
shrl %edi
andl $0x1, %edi
callq 0x590f7
xorl %edi, %edi
callq 0x590f7
movl (%rbx), %edi
shrl $0xf, %edi
andl $0x1, %edi
callq 0x590f7
movl (%rbx), %edi
shrl $0xe, %edi
andl $0x1, %edi
callq 0x590f7
movzbl (%rbx), %edi
shrl $0x3, %edi
andl $0x1, %edi
callq 0x590f7
xorl %edi, %edi
callq 0x590f7
xorl %edi, %edi
callq 0x590f7
xorl %edi, %edi
callq 0x590f7
xorl %edi, %edi
callq 0x590f7
xorl %edi, %edi
callq 0x590f7
xorl %edi, %edi
callq 0x590f7
movl $0x1, %edi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x5fc00
retq
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_ubx_rate(int, int)
void set_ubx_rate(int id, int rate)
{
   // set periodic output rate for a UBX message
   if(read_only) return;

   send_ubx_start(UBX_SET_RATE, 3);
   send_byte((id >> 8) & 0xFF);
   send_byte(id & 0xFF);
   send_byte(rate);
   send_ubx_end();
}

// Assembly:
leaq 0x2cfbf5(%rip), %rax    # 0x33701a
cmpb $0x0, (%rax)
je 0x6742b
retq
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebx
movl %edi, %r14d
movl $0x601, %edi            # imm = 0x601
movl $0x3, %esi
callq 0x5f37d
movl %r14d, %edi
shrl $0x8, %edi
movl $0xff, %r15d
andl %r15d, %edi
callq 0x590f7
andl %r15d, %r14d
movl %r14d, %edi
callq 0x590f7
andl %r15d, %ebx
movl %ebx, %edi
callq 0x590f7
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x5f456
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_rinex_site(char*)
void set_rinex_site(char *s)
{
   // set RINEX site name
   if(read_only) return;

   if(s == 0) return;

   if(rcvr_type == Z12_RCVR) {
      out[4] = 0;
      sprintf(out, "PASHS,SIT,%s", s);
      send_z12_cmd(out);
   }
}

// Assembly:
leaq 0x2cfb92(%rip), %rax    # 0x33701a
cmpb $0x0, (%rax)
je 0x6748e
retq
movq %rdi, %rdx
testq %rdi, %rdi
je 0x6748d
leaq 0x1b1433(%rip), %rax    # 0x2188d0
movabsq $0x100000000, %rcx      # imm = 0x100000000
cmpq %rcx, (%rax)
jne 0x6748d
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
leaq 0x2d4d67(%rip), %rbx    # 0x33c220
movb $0x0, 0x4(%rbx)
leaq 0xb958a(%rip), %rsi     # 0x120a4e
movq %rbx, %rdi
xorl %eax, %eax
callq 0x9060
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x5f2c8
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_rftg_lla(int, int, int)
void set_rftg_lla(S32 slat, S32 slon, S32 salt)
{
   if(read_only) return;

   start_rftg_request2(0);

   send_rftg_start(0x32);
   send_dword(slat);
   send_dword(slon);
   send_dword(salt);
   send_rftg_end();
}

// Assembly:
leaq 0x2cedbb(%rip), %rax    # 0x33701a
cmpb $0x0, (%rax)
je 0x68265
retq
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %edx, %ebx
movl %esi, %r14d
movl %edi, %r15d
xorl %edi, %edi
callq 0x657ff
movl $0x32, %edi
callq 0x5e6be
movl %r15d, %edi
callq 0x592eb
movl %r14d, %edi
callq 0x592eb
movl %ebx, %edi
callq 0x592eb
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_io_options()
void request_io_options()
{
   if(luxor) return;
   if(no_poll) return;

   if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x35);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x1d6790(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
je 0x687b4
retq
leaq 0x2ce865(%rip), %rax    # 0x337020
cmpb $0x0, (%rax)
jne 0x687b3
leaq 0x1b0109(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x687b3
pushq %rbp
movq %rsp, %rbp
movl $0x35, %edi
callq 0x5e6be
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_io_options(unsigned char, unsigned char, unsigned char, unsigned char)
void set_io_options(u08 posn, u08 vel, u08 timing, u08 aux)
{
   if(read_only) return;
   if(luxor) return;

   if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x35);
      send_byte(posn);
      send_byte(vel);
      send_byte(timing);
      send_byte(aux);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x2ce832(%rip), %rax    # 0x33701a
cmpb $0x0, (%rax)
je 0x687ee
retq
leaq 0x1d6749(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
jne 0x687ed
leaq 0x1b00cf(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x687ed
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movl %ecx, %ebx
movl %edx, %r14d
movl %esi, %r15d
movl %edi, %r12d
movl $0x35, %edi
callq 0x5e6be
movzbl %r12b, %edi
callq 0x590f7
movzbl %r15b, %edi
callq 0x590f7
movzbl %r14b, %edi
callq 0x590f7
movzbl %bl, %edi
callq 0x590f7
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_last_posn()
void request_last_posn()
{
   if(luxor) return;
   if(no_poll) return;

   if(rcvr_type == TSIP_RCVR) {
      if(ACU_GG) ;
      else if(ACU_360) ;
      else if(ACUTIME) ;
      else if(PALISADE) ;
      else if(SV6_FAMILY) return;
      send_tsip_start(0x37);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x1d66e0(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
je 0x68864
retq
leaq 0x2ce7b5(%rip), %rax    # 0x337020
cmpb $0x0, (%rax)
jne 0x68863
leaq 0x1b0059(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x68863
leaq 0x1b2750(%rip), %rax    # 0x21afd4
movl (%rax), %eax
cmpl $0x33, %eax
je 0x68863
cmpl $0x36, %eax
je 0x68863
pushq %rbp
movq %rsp, %rbp
movl $0x37, %edi
callq 0x5e6be
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_gps_system_msg()
void request_gps_system_msg()
{
  // request GPS system message

   if(luxor) return;
   if(no_poll) return;

   if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x28);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x1d6693(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
je 0x688b1
retq
leaq 0x2ce768(%rip), %rax    # 0x337020
cmpb $0x0, (%rax)
jne 0x688b0
leaq 0x1b000c(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x688b0
pushq %rbp
movq %rsp, %rbp
movl $0x28, %edi
callq 0x5e6be
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_system_data(unsigned char, int)
void request_system_data(u08 mode, int prn)
{
   if(luxor) return;
   if(no_poll) return;
   if(rcvr_type != TSIP_RCVR) return;
   if(have_info == 0) return;

   if(res_t == RES_T) {  // this message can hose up the original res-t for 3 seconds
      if(raw_msg_rate < 3) {  // user can force raw data by setting the rate to 3 secs
         return;
      }
   }

   // mode 2: almanac
   // mode 3: health page
   // mode 4: ionosphere
   // mode 5: UTC params
   // mode 6: ephemeris

   if((prn >= 1) && (prn <= MAX_PRN)) {  // flag that we have asked about this sat
      eph_polled |= (0x01 << (prn-1));
   }

   send_tsip_start(0x38);
   send_byte(0x01);
   send_byte(mode);
   send_byte((u08) prn);
   send_tsip_end();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
leaq 0x1d6652(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
jne 0x68933
leaq 0x2ce728(%rip), %rax    # 0x337020
cmpb $0x0, (%rax)
jne 0x68933
leaq 0x1affcc(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x68933
leaq 0x2a5063(%rip), %rax    # 0x30d974
cmpl $0x0, (%rax)
je 0x68933
movl %esi, %ebx
movl %edi, %r14d
leaq 0x1affe2(%rip), %rax    # 0x218904
cmpb $0x1, (%rax)
jne 0x68938
leaq 0x1b2a4a(%rip), %rax    # 0x21b378
cmpl $0x3, (%rax)
jge 0x68938
popq %rbx
popq %r14
popq %rbp
retq
leal -0x1(%rbx), %ecx
cmpl $0x3e6, %ecx            # imm = 0x3E6
ja 0x68953
movl $0x1, %eax
shll %cl, %eax
leaq 0x2a4afb(%rip), %rcx    # 0x30d44c
orl %eax, (%rcx)
movl $0x38, %edi
callq 0x5e6be
movl $0x1, %edi
callq 0x590f7
movzbl %r14b, %edi
callq 0x590f7
movzbl %bl, %edi
callq 0x590f7
popq %rbx
popq %r14
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_health_config(unsigned char, int)
void set_health_config(u08 mode, int prn)
{
   // mode 1: enable sat
   // mode 2: disable sat
   // mode 3: get enable/disable status of all sats
   // mode 4: set sat healthy
   // mode 5: set sat unhealthy
   // mode 6: get health of all sats

   if(read_only) return;
   if(luxor) return;
   if((res_t && (res_t != RES_T))) return;
   if(rcvr_type != TSIP_RCVR) return;

   send_tsip_start(0x39); 
   send_byte(mode);
   send_byte((u08) prn);
   send_tsip_end();
}

// Assembly:
leaq 0x2ce692(%rip), %rax    # 0x33701a
leaq 0x1d65af(%rip), %rcx    # 0x23ef3e
movb (%rcx), %cl
orb (%rax), %cl
je 0x68996
retq
leaq 0x1aff67(%rip), %rax    # 0x218904
cmpb $0x1, (%rax)
ja 0x68995
leaq 0x1aff27(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x68995
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movl %esi, %ebx
movl %edi, %r14d
movl $0x39, %edi
callq 0x5e6be
movzbl %r14b, %edi
callq 0x590f7
movzbl %bl, %edi
callq 0x590f7
popq %rbx
popq %r14
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_zod_sat_mask(unsigned int)
void set_zod_sat_mask(u32 val)
{
   if(read_only) return;

   send_zod_start(ZOD_SET_SAT_MASK, 10, 0);
   send_zod_seq();
   send_dword(val);
   send_word(0);     // don't write to EEPROM
   send_zod_end();

   query_zod_msg(ZOD_SETTINGS_MSG);
}

// Assembly:
leaq 0x2cd75a(%rip), %rax    # 0x33701a
cmpb $0x0, (%rax)
je 0x698c6
retq
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movl %edi, %ebx
movl $0x4bd, %edi            # imm = 0x4BD
movl $0xa, %esi
xorl %edx, %edx
callq 0x646e6
callq 0x64869
movl %ebx, %edi
callq 0x592eb
movw $0x0, -0xa(%rbp)
leaq 0x1aeedc(%rip), %rbx    # 0x2187d4
xorl %eax, %eax
cmpb $0x0, (%rbx)
sete %al
movzbl -0xa(%rbp,%rax), %edi
callq 0x590f7
xorl %eax, %eax
cmpb $0x0, (%rbx)
setne %al
movzbl -0xa(%rbp,%rax), %edi
callq 0x590f7
callq 0x648ab
movl $0x3f4, %edi            # imm = 0x3F4
movl $0x6, %esi
movl $0x800, %edx            # imm = 0x800
callq 0x646e6
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x648ab
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_eph_status(int)
void request_eph_status(int prn)
{
   if(res_t) return;
   if(luxor) return;
   if(no_poll) return;
   if(rcvr_type != TSIP_RCVR) return;

   send_tsip_start(0x3B);
   send_byte((u08) prn);
   send_tsip_end();
}

// Assembly:
leaq 0x1aefbd(%rip), %rax    # 0x218904
cmpb $0x0, (%rax)
jne 0x69996
leaq 0x1d55eb(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
jne 0x69996
leaq 0x2cd6c1(%rip), %rax    # 0x337020
cmpb $0x0, (%rax)
jne 0x69996
leaq 0x1aef65(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x69996
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movl %edi, %ebx
movl $0x3b, %edi
callq 0x5e6be
movzbl %bl, %edi
callq 0x590f7
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x5e73c
retq
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_last_raw(int)
void request_last_raw(int prn)
{
   if(luxor) return;
   if(no_poll) return;

   if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x3A);
      send_byte((u08) prn);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x1d55a0(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
je 0x699a4
retq
leaq 0x2cd675(%rip), %rax    # 0x337020
cmpb $0x0, (%rax)
jne 0x699a3
leaq 0x1aef19(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x699a3
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movl %edi, %ebx
movl $0x3a, %edi
callq 0x5e6be
movzbl %bl, %edi
callq 0x590f7
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_sat_status(int)
void request_sat_status(int prn)
{
   if(luxor) return;
   if(no_poll) return;
   if(rcvr_type != TSIP_RCVR) return;

   send_tsip_start(0x3C);
   send_byte((u08) prn);
   send_tsip_end();
}

// Assembly:
leaq 0x1d5555(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
jne 0x69a2c
leaq 0x2cd62b(%rip), %rax    # 0x337020
cmpb $0x0, (%rax)
jne 0x69a2c
leaq 0x1aeecf(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x69a2c
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movl %edi, %ebx
movl $0x3c, %edi
callq 0x5e6be
movzbl %bl, %edi
callq 0x590f7
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x5e73c
retq
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_eeprom_status()
void request_eeprom_status()
{
   if(luxor) return;
   if(no_poll) return;
   if(rcvr_type != TSIP_RCVR) return;
   if(ACU_GG) return;
   if(ACU_360) return;
   if(ACUTIME) ;
   else if(PALISADE) return;
   else if(SV6_FAMILY) return;
   if(res_t) return;          // !!! Thunderbolt only
   if(saw_ntpx) return;

   send_tsip_start(0x3F);
   send_byte(0x11);
   send_tsip_end();
}

// Assembly:
leaq 0x1d550a(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
jne 0x69a72
leaq 0x2cd5e0(%rip), %rax    # 0x337020
cmpb $0x0, (%rax)
jne 0x69a72
leaq 0x1aee84(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x69a72
leaq 0x1b157b(%rip), %rax    # 0x21afd4
movl (%rax), %eax
movl %eax, %edx
xorl $0x41, %edx
leaq 0x1aee91(%rip), %rcx    # 0x2188f8
movl (%rcx), %ecx
movl %ecx, %esi
xorl $0x47, %esi
orl %edx, %esi
jne 0x69a73
retq
cmpl $0x41, %eax
jne 0x69a98
cmpl $0x33, %ecx
je 0x69a72
cmpl $0x47, %ecx
je 0x69a72
leaq 0x1aee7b(%rip), %rax    # 0x218904
leaq 0x1d54ac(%rip), %rcx    # 0x23ef3c
movb (%rcx), %cl
orb (%rax), %cl
jne 0x69a72
jmp 0x69ac7
cmpl $0x50, %eax
je 0x69a72
leaq 0x1aee60(%rip), %rcx    # 0x218904
cmpb $0x0, (%rcx)
jne 0x69a72
addl $-0x33, %eax
cmpl $0x1d, %eax
ja 0x69abb
movl $0x20000009, %ecx       # imm = 0x20000009
btl %eax, %ecx
jb 0x69a72
leaq 0x1d547a(%rip), %rax    # 0x23ef3c
cmpb $0x0, (%rax)
jne 0x69a72
pushq %rbp
movq %rsp, %rbp
movl $0x3f, %edi
callq 0x5e6be
movl $0x11, %edi
callq 0x590f7
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_diff_mode()
void request_diff_mode()
{
   if(luxor) return;
   if(no_poll) return;

   if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x62);
      send_byte(0xFF);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x1d5452(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
je 0x69af2
retq
leaq 0x2cd527(%rip), %rax    # 0x337020
cmpb $0x0, (%rax)
jne 0x69af1
leaq 0x1aedcb(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x69af1
pushq %rbp
movq %rsp, %rbp
movl $0x62, %edi
callq 0x5e6be
movl $0xff, %edi
callq 0x590f7
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_diff_mode(unsigned char)
void set_diff_mode(u08 mode)
{
   if(read_only) return;
   if(luxor) return;

   if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x62);
      send_byte(mode);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x2cd4ea(%rip), %rax    # 0x33701a
cmpb $0x0, (%rax)
je 0x69b36
retq
leaq 0x1d5401(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
jne 0x69b35
leaq 0x1aed87(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x69b35
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movl %edi, %ebx
movl $0x62, %edi
callq 0x5e6be
movzbl %bl, %edi
callq 0x590f7
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_posn_filter()
void request_posn_filter()
{
   if(luxor) return;
   if(no_poll) return;

   if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x71);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x1d53c3(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
je 0x69b81
retq
leaq 0x2cd498(%rip), %rax    # 0x337020
cmpb $0x0, (%rax)
jne 0x69b80
leaq 0x1aed3c(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x69b80
pushq %rbp
movq %rsp, %rbp
movl $0x71, %edi
callq 0x5e6be
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_alt_filter()
void request_alt_filter()
{
   if(luxor) return;
   if(no_poll) return;

   if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x73);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x1d5389(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
je 0x69bbb
retq
leaq 0x2cd45e(%rip), %rax    # 0x337020
cmpb $0x0, (%rax)
jne 0x69bba
leaq 0x1aed02(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x69bba
pushq %rbp
movq %rsp, %rbp
movl $0x73, %edi
callq 0x5e6be
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_high8_mode()
void request_high8_mode()
{
   if(luxor) return;
   if(no_poll) return;

   if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x75);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x1d534f(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
je 0x69bf5
retq
leaq 0x2cd424(%rip), %rax    # 0x337020
cmpb $0x0, (%rax)
jne 0x69bf4
leaq 0x1aecc8(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x69bf4
pushq %rbp
movq %rsp, %rbp
movl $0x75, %edi
callq 0x5e6be
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_high6_mode()
void request_high6_mode()
{
   if(luxor) return;
   if(no_poll) return;

   if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x76);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x1d5315(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
je 0x69c2f
retq
leaq 0x2cd3ea(%rip), %rax    # 0x337020
cmpb $0x0, (%rax)
jne 0x69c2e
leaq 0x1aec8e(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x69c2e
pushq %rbp
movq %rsp, %rbp
movl $0x76, %edi
callq 0x5e6be
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_diff_age()
void request_diff_age()
{
   if(luxor) return;
   if(no_poll) return;

   if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x77);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x1d52db(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
je 0x69c69
retq
leaq 0x2cd3b0(%rip), %rax    # 0x337020
cmpb $0x0, (%rax)
jne 0x69c68
leaq 0x1aec54(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x69c68
pushq %rbp
movq %rsp, %rbp
movl $0x77, %edi
callq 0x5e6be
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_filter_config()
void request_filter_config()
{
   if(luxor) return;
   if(no_poll) return;

   if(rcvr_type == TSIP_RCVR) {
      if(ACU_GG) return;
      if(ACU_360) return;
      if(ACUTIME) return;     // responds to filter commands, but settings do not stick
      if(PALISADE) return;

      if(ACUTIME) {
         send_tsip_start(0x70);
         send_tsip_end();
      }
      else if(SV6_FAMILY) {
         request_alt_filter();
         request_posn_filter();
      }
      else {
         send_tsip_start(0x70);
         send_tsip_end();
      }
   }
   else if(rcvr_type == MOTO_RCVR) {
      send_moto_start("AN");  // marine (velocity) filter
      send_byte(0xFF);
      send_moto_end();

      send_moto_start("AQ");  // position filter
      send_byte(0xFF);
      send_moto_end();

      send_moto_start("Aq");  // ionosphere corrections
      send_byte(0xFF);
      send_moto_end();

      send_moto_start("Ar");  // fix type
      send_byte(0xFF);
      send_moto_end();
   }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
leaq 0x1d529d(%rip), %rax    # 0x23ef3e
leaq 0x2cd378(%rip), %rcx    # 0x337020
movb (%rcx), %cl
orb (%rax), %cl
jne 0x69d6e
leaq 0x1aec17(%rip), %rax    # 0x2188d0
movq (%rax), %rax
cmpq $0x20, %rax
je 0x69cf7
cmpq $0x1, %rax
jne 0x69d6e
leaq 0x1b1301(%rip), %rax    # 0x21afd4
movl (%rax), %eax
cmpl $0x40, %eax
jg 0x69d64
cmpl $0x33, %eax
je 0x69cec
cmpl $0x36, %eax
jne 0x69d70
callq 0x69bae
popq %rbp
jmp 0x69b74
leaq 0xba5af(%rip), %rdi     # 0x1242ad
callq 0x6160d
movl $0xff, %edi
callq 0x590f7
callq 0x61688
leaq 0xb706d(%rip), %rdi     # 0x120d86
callq 0x6160d
movl $0xff, %edi
callq 0x590f7
callq 0x61688
leaq 0xb7055(%rip), %rdi     # 0x120d89
callq 0x6160d
movl $0xff, %edi
callq 0x590f7
callq 0x61688
leaq 0xb703d(%rip), %rdi     # 0x120d8c
callq 0x6160d
movl $0xff, %edi
callq 0x590f7
popq %rbp
jmp 0x61688
cmpl $0x41, %eax
je 0x69d6e
cmpl $0x50, %eax
jne 0x69d70
popq %rbp
retq
movl $0x70, %edi
callq 0x5e6be
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_posn_filter(unsigned char, unsigned char)
void set_posn_filter(u08 static_mode, u08 dynamic_mode)
{
u08 val;

   if(read_only) return;
   if(luxor) return;

   if(rcvr_type == TSIP_RCVR) {
      if(static_mode || dynamic_mode) val = 1;
      else val = 0;
      send_tsip_start(0x71);
      send_byte(val);
      if(dynamic_mode) send_single(0.0625F);
      else             send_single(1.0F);
      send_byte(1);
      send_byte(1);
      send_byte(0);
      send_byte(6);
      send_single(0.1F);
      send_single(100.0F);
      send_single(1.21F);
      send_single(1.0E6F);
      if(static_mode) send_byte(6);
      else            send_byte(255);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x2cd293(%rip), %rax    # 0x33701a
cmpb $0x0, (%rax)
jne 0x69e73
leaq 0x1d51a7(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
jne 0x69e73
leaq 0x1aeb29(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x69e73
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %edi, %ebx
xorl %r15d, %r15d
testb %sil, %sil
sete %r15b
xorl %r14d, %r14d
orb %bl, %sil
setne %r14b
movl $0x71, %edi
callq 0x5e6be
movl %r14d, %edi
callq 0x590f7
leaq 0xb43e6(%rip), %rax     # 0x11e1d0
movss (%rax,%r15,4), %xmm0
callq 0x59376
movl $0x1, %edi
callq 0x590f7
movl $0x1, %edi
callq 0x590f7
xorl %edi, %edi
callq 0x590f7
movl $0x6, %r14d
movl $0x6, %edi
callq 0x590f7
movss 0xb4c1c(%rip), %xmm0    # 0x11ea44
callq 0x59376
movss 0xa323b(%rip), %xmm0    # 0x10d070
callq 0x59376
movss 0xb4c06(%rip), %xmm0    # 0x11ea48
callq 0x59376
movss 0xb4bfd(%rip), %xmm0    # 0x11ea4c
callq 0x59376
testb %bl, %bl
movl $0xff, %edi
cmovnel %r14d, %edi
callq 0x590f7
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x5e73c
retq
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_filter_config(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, int)
void set_filter_config(u08 pv, u08 stat, u08 alt, u08 kalman, u08 marine, int save)
{
u08 val;

   if(read_only) return;
   if(luxor) return;

   if(rcvr_type == TSIP_RCVR) {
      if(ACU_GG) return;
      if(ACU_360) return;
      if(ACUTIME) return;
      if(PALISADE) return;

      if(SV6_FAMILY) {
         set_alt_filter(alt);
         set_posn_filter(stat, pv);
      }
      else {
         send_tsip_start(0x70);
         send_byte(pv);
         send_byte(stat);
         send_byte(alt);
         send_byte(kalman); // rsvd on ThunderBolt,  kalman on ThunderBolt-E
         send_tsip_end();
         if(0 && save) save_segment(255, 20);
      }
   }
   else if(1 && (rcvr_type == MOTO_RCVR)) { // marine velocity filter - !!!! code in heathui.cpp will need to be changed to do this
      if((marine >= 10) && (marine <= 100)) {
         send_moto_start("AN");
         send_byte(marine);
         send_moto_end();
      }

      send_moto_start("AQ");
      send_byte(pv);
      send_moto_end();

      val = 0x00;
      if(stat) val |= 0x01;
      if(alt) val |= 0x02;
      send_moto_start("Aq");
      send_byte(val);
      send_moto_end();
   }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %ecx, %r12d
leaq 0x2cd18e(%rip), %rax    # 0x33701a
leaq 0x1d50ab(%rip), %rcx    # 0x23ef3e
movb (%rcx), %cl
orb (%rax), %cl
jne 0x69f85
movl %edx, %ebx
movl %esi, %r14d
movl %edi, %r15d
leaq 0x1aea24(%rip), %rax    # 0x2188d0
movq (%rax), %rax
cmpq $0x20, %rax
je 0x69f02
cmpq $0x1, %rax
jne 0x69f85
leaq 0x1b110e(%rip), %rax    # 0x21afd4
movl (%rax), %eax
cmpl $0x40, %eax
jg 0x69f7b
cmpl $0x33, %eax
je 0x69edf
cmpl $0x36, %eax
jne 0x69f94
movzbl %bl, %edi
callq 0x69fd4
movzbl %r14b, %edi
movzbl %r15b, %esi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x69d80
movl %r8d, %r13d
leal -0xa(%r13), %eax
cmpb $0x5a, %al
ja 0x69f27
leaq 0xba399(%rip), %rdi     # 0x1242ad
callq 0x6160d
movzbl %r13b, %edi
callq 0x590f7
callq 0x61688
leaq 0xb6e58(%rip), %rdi     # 0x120d86
callq 0x6160d
movzbl %r15b, %edi
callq 0x590f7
callq 0x61688
xorl %eax, %eax
testb %r14b, %r14b
setne %al
leal 0x2(%rax), %ecx
testb %bl, %bl
movzbl %cl, %ebx
cmovel %eax, %ebx
leaq 0xb6e2e(%rip), %rdi     # 0x120d89
callq 0x6160d
movzbl %bl, %edi
callq 0x590f7
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x61688
cmpl $0x41, %eax
je 0x69f85
cmpl $0x50, %eax
jne 0x69f94
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x70, %edi
callq 0x5e6be
movzbl %r15b, %edi
callq 0x590f7
movzbl %r14b, %edi
callq 0x590f7
movzbl %bl, %edi
callq 0x590f7
movzbl %r12b, %edi
callq 0x590f7
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_alt_filter(unsigned char)
void set_alt_filter(u08 mode)
{
   if(read_only) return;
   if(luxor) return;

   // mode > 1: filter count
   // mode = 1: filter off
   // mode = 0: filter default
   if(mode) mode = 0;
   else     mode = 1;

   if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x73);
      send_single((float) mode);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x2cd03f(%rip), %rax    # 0x33701a
cmpb $0x0, (%rax)
jne 0x6a00b
leaq 0x1d4f57(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
jne 0x6a00b
leaq 0x1ae8dd(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x6a00b
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
testb %dil, %dil
je 0x6a00c
xorps %xmm0, %xmm0
jmp 0x6a014
retq
movss 0xa3058(%rip), %xmm0    # 0x10d06c
movss %xmm0, -0x4(%rbp)
movl $0x73, %edi
callq 0x5e6be
movss -0x4(%rbp), %xmm0
callq 0x59376
addq $0x10, %rsp
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_high8_mode(unsigned char)
void set_high8_mode(u08 mode)
{
   if(read_only) return;
   if(luxor) return;

   if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x75);
      send_single((float) mode);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x2ccfdc(%rip), %rax    # 0x33701a
cmpb $0x0, (%rax)
je 0x6a044
retq
leaq 0x1d4ef3(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
jne 0x6a043
leaq 0x1ae879(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x6a043
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movl %edi, %ebx
movl $0x75, %edi
callq 0x5e6be
movzbl %bl, %eax
cvtsi2ss %eax, %xmm0
callq 0x59376
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_high6_mode(unsigned char)
void set_high6_mode(u08 mode)
{
   if(read_only) return;
   if(luxor) return;

   if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x76);
      send_single((float) mode);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x2ccf8d(%rip), %rax    # 0x33701a
cmpb $0x0, (%rax)
je 0x6a093
retq
leaq 0x1d4ea4(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
jne 0x6a092
leaq 0x1ae82a(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x6a092
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movl %edi, %ebx
movl $0x76, %edi
callq 0x5e6be
movzbl %bl, %eax
cvtsi2ss %eax, %xmm0
callq 0x59376
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_diff_age(unsigned short)
void set_diff_age(u16 age)
{
   if(read_only) return;
   if(luxor) return;

   if(rcvr_type == TSIP_RCVR) {
      send_tsip_start(0x77);
      send_word(age);
      send_tsip_end();
   }
}

// Assembly:
leaq 0x2ccf3e(%rip), %rax    # 0x33701a
cmpb $0x0, (%rax)
je 0x6a0e2
retq
leaq 0x1d4e55(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
jne 0x6a0e1
leaq 0x1ae7db(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x6a0e1
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movl %edi, %ebx
movl $0x77, %edi
callq 0x5e6be
movw %bx, -0xa(%rbp)
leaq 0x1ae6bc(%rip), %rbx    # 0x2187d4
xorl %eax, %eax
cmpb $0x0, (%rbx)
sete %al
movzbl -0xa(%rbp,%rax), %edi
callq 0x590f7
xorl %eax, %eax
cmpb $0x0, (%rbx)
setne %al
movzbl -0xa(%rbp,%rax), %edi
callq 0x590f7
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x5e73c
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: send_rt17_start(int, int)
void send_rt17_start(int msg, int len)
{
// flush_rt17_cmd();   // toots - RT17 fix needed
if(debug_file) fprintf(debug_file, "send rt17: %02x  len:%d\n", msg, len);

   send_byte(0x02);
   rt17_tx_cksum = 0;

   send_byte(0x00);   // status
   send_byte(msg);    // msg type
   send_byte(len);    // header len
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebx
movl %edi, %r14d
leaq 0x1d41f1(%rip), %rax    # 0x23e390
movq (%rax), %rdi
testq %rdi, %rdi
je 0x6a1ba
leaq 0xb89b4(%rip), %rsi     # 0x122b62
movl %r14d, %edx
movl %ebx, %ecx
xorl %eax, %eax
callq 0x9560
movl $0x2, %edi
callq 0x590f7
movb $0x0, 0x3028f5(%rip)    # 0x36cac0
xorl %edi, %edi
callq 0x590f7
movl $0xff, %r15d
andl %r15d, %r14d
movl %r14d, %edi
callq 0x590f7
andl %r15d, %ebx
movl %ebx, %edi
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x590f7
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_gnss_system()
void request_gnss_system()
{
   // request the current GNSS system selections
   if(no_poll) return;
   if(luxor) return;

   if(rcvr_type == ESIP_RCVR) {
      send_esip_cmd("PERDAPI,GNSS,QUERY");
   }
   else if(rcvr_type == NVS_RCVR) {
      send_nvs_start(0x0D);  // gnss system info
      send_byte(0x02);
      send_nvs_end();
   }
   else if(rcvr_type == TSIP_RCVR) {
      if(PALISADE) return;
      if(SV6_FAMILY) return;

      if(saw_icm || (res_t == RES_T_360) || ACU_GG || ACU_360) {
         request_rcvr_config(666);
      }
   }
   else if(rcvr_type == UBX_RCVR) {
      request_ubx_msg(UBX_GNSS);
   }
   else if(rcvr_type == VENUS_RCVR) {
      query_venus_msg(QUERY_VENUS_GNSS);
      query_venus_msg(QUERY_VENUS_SBAS);
      query_venus_msg(QUERY_VENUS_QZSS);
   }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
leaq 0x2ccddf(%rip), %rax    # 0x337020
leaq 0x1d4cf6(%rip), %rcx    # 0x23ef3e
movb (%rcx), %cl
orb (%rax), %cl
je 0x6a250
popq %rbp
retq
leaq 0x1ae679(%rip), %rax    # 0x2188d0
movq (%rax), %rax
cmpq $0x7f, %rax
jle 0x6a28b
cmpq $0x80, %rax
je 0x6a2ad
cmpq $0x800, %rax            # imm = 0x800
je 0x6a308
movl $0x80000000, %ecx       # imm = 0x80000000
cmpq %rcx, %rax
jne 0x6a24e
leaq 0xb768c(%rip), %rdi     # 0x121911
popq %rbp
jmp 0x5ee9b
cmpq $0x1, %rax
je 0x6a322
cmpq $0x4, %rax
jne 0x6a24e
movl $0x63e, %edi            # imm = 0x63E
xorl %esi, %esi
callq 0x5f37d
popq %rbp
jmp 0x5f456
movl $0x64, %edi
movl $0x2, %esi
callq 0x5fb3c
movl $0x1a, %edi
callq 0x590f7
callq 0x61bc1
movl $0x62, %edi
movl $0x2, %esi
callq 0x5fb3c
movl $0x2, %edi
callq 0x590f7
callq 0x61bc1
movl $0x62, %edi
movl $0x2, %esi
callq 0x5fb3c
movl $0x4, %edi
callq 0x590f7
popq %rbp
jmp 0x61bc1
movl $0xd, %edi
callq 0x5e6be
movl $0x2, %edi
callq 0x590f7
popq %rbp
jmp 0x5e7c0
leaq 0x1b0cab(%rip), %rax    # 0x21afd4
movl (%rax), %eax
leal -0x33(%rax), %ecx
cmpl $0x1d, %ecx
ja 0x6a341
movl $0x20004009, %edx       # imm = 0x20004009
btl %ecx, %edx
jb 0x6a24e
leaq 0x1d4be5(%rip), %rcx    # 0x23ef2d
cmpb $0x0, (%rcx)
jne 0x6a370
leaq 0x1ae5b0(%rip), %rcx    # 0x218904
cmpb $0x4, (%rcx)
je 0x6a370
movl %eax, %edx
xorl $0x41, %edx
leaq 0x1ae593(%rip), %rcx    # 0x2188f8
movl (%rcx), %ecx
movl %ecx, %esi
xorl $0x47, %esi
orl %edx, %esi
jne 0x6a37b
movl $0x29a, %edi            # imm = 0x29A
popq %rbp
jmp 0x667f2
cmpl $0x41, %eax
jne 0x6a24e
cmpl $0x47, %ecx
je 0x6a370
cmpl $0x33, %ecx
je 0x6a370
jmp 0x6a24e
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_ubx_amu(float)
void set_ubx_amu(float amu)
{
   if(read_only) return;

   send_ubx_start(UBX_NAVX5, 40);

   send_word(0);      // msg version
   send_word(0x0008); // only update amu mask 
   send_dword(0);
   send_byte(0);      // rsvd
   send_byte(0);      // rsvd
   send_byte(1);      // min sv
   send_byte(16);     // max sv
   send_byte((s08) amu);
   send_byte(0);      // rsvd
   send_byte(0);      // initial fix
   send_byte(0);      // rsvd
   send_byte(0);      // rsvd
   send_byte(0);      // rsvd
   send_word(0);      // rollover week
   send_dword(0);     // rsvd
   send_dword(0);     // rsvd
   send_dword(0);     // rsvd
   send_dword(0);     // rsvd
   send_dword(0);     // rsvd

   send_ubx_end();
}

// Assembly:
leaq 0x2ccc80(%rip), %rax    # 0x33701a
cmpb $0x0, (%rax)
je 0x6a3a0
retq
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movl $0x623, %edi            # imm = 0x623
movl $0x28, %esi
movss %xmm0, -0x1c(%rbp)
callq 0x5f37d
xorl %r14d, %r14d
movw %r14w, -0x12(%rbp)
leaq 0x1ae406(%rip), %rbx    # 0x2187d4
xorl %eax, %eax
cmpb $0x0, (%rbx)
sete %al
movzbl -0x12(%rbp,%rax), %edi
callq 0x590f7
xorl %eax, %eax
cmpb $0x0, (%rbx)
setne %al
movzbl -0x12(%rbp,%rax), %edi
callq 0x590f7
movw $0x8, -0x14(%rbp)
xorl %eax, %eax
cmpb $0x0, (%rbx)
sete %al
movzbl -0x14(%rbp,%rax), %edi
callq 0x590f7
xorl %eax, %eax
cmpb $0x0, (%rbx)
setne %al
movzbl -0x14(%rbp,%rax), %edi
callq 0x590f7
xorl %edi, %edi
callq 0x592eb
xorl %edi, %edi
callq 0x590f7
xorl %edi, %edi
callq 0x590f7
movl $0x1, %edi
callq 0x590f7
movl $0x10, %edi
callq 0x590f7
cvttss2si -0x1c(%rbp), %eax
movzbl %al, %edi
callq 0x590f7
xorl %edi, %edi
callq 0x590f7
xorl %edi, %edi
callq 0x590f7
xorl %edi, %edi
callq 0x590f7
xorl %edi, %edi
callq 0x590f7
xorl %edi, %edi
callq 0x590f7
movw %r14w, -0x16(%rbp)
xorl %eax, %eax
cmpb $0x0, (%rbx)
sete %al
movzbl -0x16(%rbp,%rax), %edi
callq 0x590f7
xorl %eax, %eax
cmpb $0x0, (%rbx)
setne %al
movzbl -0x16(%rbp,%rax), %edi
callq 0x590f7
xorl %edi, %edi
callq 0x592eb
xorl %edi, %edi
callq 0x592eb
xorl %edi, %edi
callq 0x592eb
xorl %edi, %edi
callq 0x592eb
xorl %edi, %edi
callq 0x592eb
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
jmp 0x5f456
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: set_rcvr_smoothing(int)
void set_rcvr_smoothing(int val)
{
   if(read_only) return;

   if(rcvr_type == FURUNO_RCVR) {
      if((val >= 1) && (val <= 3)) {
         sprintf(out, "GPset,W%d", val);
         send_furuno_cmd(out);
         send_furuno_cmd("GPsrq");
      }
   }
}

// Assembly:
movl %edi, %edx
leal -0x1(%rdx), %eax
cmpl $0x2, %eax
ja 0x6a7f5
leaq 0x2cc872(%rip), %rax    # 0x33701a
cmpb $0x0, (%rax)
jne 0x6a7f5
leaq 0x1ae11c(%rip), %rax    # 0x2188d0
cmpq $0x20000000, (%rax)     # imm = 0x20000000
jne 0x6a7f5
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
leaq 0x2d1a56(%rip), %rbx    # 0x33c220
leaq 0xb67f5(%rip), %rsi     # 0x120fc6
movq %rbx, %rdi
xorl %eax, %eax
callq 0x9060
movq %rbx, %rdi
callq 0x5eff8
leaq 0xb62e7(%rip), %rdi     # 0x120ad1
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x5eff8
retq
// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: request_serial_config(unsigned char)
void request_serial_config(u08 port)
{
   if(luxor) return;
   if(no_poll) return;
   if(rcvr_type != TSIP_RCVR) return;

   send_tsip_start(0xBC);
   send_byte(port);
   send_tsip_end();
}

// Assembly:
leaq 0x1d4741(%rip), %rax    # 0x23ef3e
cmpb $0x0, (%rax)
jne 0x6a840
leaq 0x2cc817(%rip), %rax    # 0x337020
cmpb $0x0, (%rax)
jne 0x6a840
leaq 0x1ae0bb(%rip), %rax    # 0x2188d0
cmpq $0x1, (%rax)
jne 0x6a840
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movl %edi, %ebx
movl $0xbc, %edi
callq 0x5e6be
movzbl %bl, %edi
callq 0x590f7
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x5e73c
retq