// File: /workspace/github_cpp_makefile_star2_O3/jkingan[P]ladyheather/heathgps.cpp
// Function: parse_sa35_telem()
void parse_sa35_telem()
{
   log_packet_id("telemetry");
   have_sa35_telem = 35;

   if(get_msg_field()) {  // BITE (0=locked  1=unlocked)
      sa35_unlock = atoi(msg_field);
      if(sa35_unlock) discipline_mode = DIS_MODE_UNLOCK;
      else            discipline_mode = DIS_MODE_NORMAL;
   }

   if(get_msg_field()) {  // firmware
      msg_field[32] = 0;
      strcpy(sa35_fw, msg_field);
   }

   if(get_msg_field()) {  // serial number
      msg_field[32] = 0;
      strcpy(sa35_id, msg_field);
      strcpy(sa35_sn, &msg_field[6]);
      msg_field[6] = 0;

      strcpy(sa35_model, &msg_field[4]);
      msg_field[4] = 0;

      strcpy(sa35_date, &msg_field[0]);
      have_info |= ALL_ID_INFO;
   }

   if(get_msg_field()) { // TEC control (millidegrees C)
      sa35_tec = atof(msg_field) / 1000.0;
   }

   if(get_msg_field()) { // rf control  (0.1 mV)
      sa35_rf = atof(msg_field) / 10000.0;
   }

   if(get_msg_field()) { // DDS freq center current (0.01 Hz)
      sa35_center_freq = atof(msg_field) / 0.01;
   }

   if(get_msg_field()) { // cell heater current (mA)
      sa35_heater = atof(msg_field);
   }

   if(get_msg_field()) { // dc signal (mV)
      sa35_dc = atof(msg_field) / 1000.0;
   }

   if(get_msg_field()) { // temperature (millidegrees C)
      temperature = (DATA_SIZE) (atof(msg_field) / 1000.0);
      have_temperature = 35;
   }

   if(get_msg_field()) { // digital tuning (0.01 Hz)
      sa35_tune = atof(msg_field) / 0.01;
   }

   if(get_msg_field()) { // EFC enable
      sa35_efc_enable = atoi(msg_field);
   }

   if(get_msg_field()) { // EFC voltage (mV)
      sa35_efc = atof(msg_field) / 1000.0;
      dac_voltage = (DATA_SIZE) sa35_efc;
      have_dac = 35;
   }

   if(get_msg_field()) { // digital tuning (1E-15)
      sa35_dds = atof(msg_field) * 1.0E-15;
   }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
leaq 0x9780a(%rip), %rdi     # 0x123a25
callq 0x58dc2
leaq 0x280835(%rip), %rax    # 0x30ca5c
movl $0x23, (%rax)
callq 0x810b1
testl %eax, %eax
je 0x8c25e
leaq 0x2af803(%rip), %rdi    # 0x33ba40
callq 0x95e0
leaq 0x28085b(%rip), %rcx    # 0x30caa4
movl %eax, (%rcx)
testl %eax, %eax
movl $0x1a, %ecx
cmovel %eax, %ecx
leaq 0x28123b(%rip), %rax    # 0x30d497
movb %cl, (%rax)
callq 0x810b1
testl %eax, %eax
je 0x8c27e
leaq 0x2af7d2(%rip), %rsi    # 0x33ba40
movb $0x0, 0x20(%rsi)
leaq 0x280837(%rip), %rdi    # 0x30cab0
callq 0x9340
callq 0x810b1
testl %eax, %eax
je 0x8c2e5
leaq 0x2af7b2(%rip), %rbx    # 0x33ba40
xorl %r14d, %r14d
movb %r14b, 0x20(%rbx)
leaq 0x280844(%rip), %rdi    # 0x30cae0
movq %rbx, %rsi
callq 0x9340
leaq 0x6(%rbx), %rsi
leaq 0x2808c1(%rip), %rdi    # 0x30cb70
callq 0x9340
movb %r14b, 0x6(%rbx)
leaq 0x4(%rbx), %rsi
leaq 0x28087d(%rip), %rdi    # 0x30cb40
callq 0x9340
movb %r14b, 0x4(%rbx)
leaq 0x28083d(%rip), %rdi    # 0x30cb10
movq %rbx, %rsi
callq 0x9340
leaq 0x281692(%rip), %rax    # 0x30d974
orb $0xf, (%rax)
callq 0x810b1
testl %eax, %eax
je 0x8c30d
leaq 0x2af74b(%rip), %rdi    # 0x33ba40
callq 0x9470
divsd 0x7cd36(%rip), %xmm0    # 0x109038
leaq 0x280757(%rip), %rax    # 0x30ca60
movsd %xmm0, (%rax)
callq 0x810b1
testl %eax, %eax
je 0x8c335
leaq 0x2af723(%rip), %rdi    # 0x33ba40
callq 0x9470
divsd 0x7cdae(%rip), %xmm0    # 0x1090d8
leaq 0x280737(%rip), %rax    # 0x30ca68
movsd %xmm0, (%rax)
callq 0x810b1
testl %eax, %eax
je 0x8c35d
leaq 0x2af6fb(%rip), %rdi    # 0x33ba40
callq 0x9470
divsd 0x7cdae(%rip), %xmm0    # 0x109100
leaq 0x280717(%rip), %rax    # 0x30ca70
movsd %xmm0, (%rax)
callq 0x810b1
testl %eax, %eax
je 0x8c37d
leaq 0x2af6d3(%rip), %rdi    # 0x33ba40
callq 0x9470
leaq 0x2806ff(%rip), %rax    # 0x30ca78
movsd %xmm0, (%rax)
callq 0x810b1
testl %eax, %eax
je 0x8c3a5
leaq 0x2af6b3(%rip), %rdi    # 0x33ba40
callq 0x9470
divsd 0x7cc9e(%rip), %xmm0    # 0x109038
leaq 0x2806df(%rip), %rax    # 0x30ca80
movsd %xmm0, (%rax)
callq 0x810b1
testl %eax, %eax
je 0x8c3da
leaq 0x2af68b(%rip), %rdi    # 0x33ba40
callq 0x9470
divsd 0x7cc76(%rip), %xmm0    # 0x109038
leaq 0x28064f(%rip), %rax    # 0x30ca18
movsd %xmm0, (%rax)
leaq 0x280e78(%rip), %rax    # 0x30d24c
movl $0x23, (%rax)
callq 0x810b1
testl %eax, %eax
je 0x8c402
leaq 0x2af656(%rip), %rdi    # 0x33ba40
callq 0x9470
divsd 0x7cd09(%rip), %xmm0    # 0x109100
leaq 0x28068a(%rip), %rax    # 0x30ca88
movsd %xmm0, (%rax)
callq 0x810b1
testl %eax, %eax
je 0x8c420
leaq 0x2af62e(%rip), %rdi    # 0x33ba40
callq 0x95e0
leaq 0x280682(%rip), %rcx    # 0x30caa0
movl %eax, (%rcx)
callq 0x810b1
testl %eax, %eax
je 0x8c460
leaq 0x2af610(%rip), %rdi    # 0x33ba40
callq 0x9470
divsd 0x7cbfb(%rip), %xmm0    # 0x109038
leaq 0x28064c(%rip), %rax    # 0x30ca90
movsd %xmm0, (%rax)
leaq 0x2805b1(%rip), %rax    # 0x30ca00
movsd %xmm0, (%rax)
leaq 0x280ea2(%rip), %rax    # 0x30d2fc
movl $0x23, (%rax)
callq 0x810b1
testl %eax, %eax
je 0x8c488
leaq 0x2af5d0(%rip), %rdi    # 0x33ba40
callq 0x9470
mulsd 0x7ccab(%rip), %xmm0    # 0x109128
leaq 0x280614(%rip), %rax    # 0x30ca98
movsd %xmm0, (%rax)
popq %rbx
popq %r14
popq %rbp
retq