// File: /workspace/github_cpp_makefile_star2_O2/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 0x8e2ef(%rip), %rdi     # 0x10d96d
callq 0x520bf
leaq 0x2773d2(%rip), %rax    # 0x2f6a5c
movl $0x23, (%rax)
callq 0x75767
testl %eax, %eax
je 0x7f6bf
leaq 0x2a63a0(%rip), %rdi    # 0x325a40
callq 0x95e0
leaq 0x2773f8(%rip), %rcx    # 0x2f6aa4
movl %eax, (%rcx)
testl %eax, %eax
pushq $0x1a
popq %rcx
cmovel %eax, %ecx
leaq 0x277dda(%rip), %rax    # 0x2f7497
movb %cl, (%rax)
callq 0x75767
testl %eax, %eax
je 0x7f6df
leaq 0x2a6371(%rip), %rsi    # 0x325a40
movb $0x0, 0x20(%rsi)
leaq 0x2773d6(%rip), %rdi    # 0x2f6ab0
callq 0x9330
callq 0x75767
testl %eax, %eax
je 0x7f746
leaq 0x2a6351(%rip), %rbx    # 0x325a40
xorl %r14d, %r14d
movb %r14b, 0x20(%rbx)
leaq 0x2773e3(%rip), %rdi    # 0x2f6ae0
movq %rbx, %rsi
callq 0x9330
leaq 0x6(%rbx), %rsi
leaq 0x277460(%rip), %rdi    # 0x2f6b70
callq 0x9330
movb %r14b, 0x6(%rbx)
leaq 0x4(%rbx), %rsi
leaq 0x27741c(%rip), %rdi    # 0x2f6b40
callq 0x9330
movb %r14b, 0x4(%rbx)
leaq 0x2773dc(%rip), %rdi    # 0x2f6b10
movq %rbx, %rsi
callq 0x9330
leaq 0x278231(%rip), %rax    # 0x2f7974
orb $0xf, (%rax)
callq 0x75767
testl %eax, %eax
je 0x7f76e
leaq 0x2a62ea(%rip), %rdi    # 0x325a40
callq 0x9470
divsd 0x738d5(%rip), %xmm0    # 0xf3038
leaq 0x2772f6(%rip), %rax    # 0x2f6a60
movsd %xmm0, (%rax)
callq 0x75767
testl %eax, %eax
je 0x7f796
leaq 0x2a62c2(%rip), %rdi    # 0x325a40
callq 0x9470
divsd 0x7394d(%rip), %xmm0    # 0xf30d8
leaq 0x2772d6(%rip), %rax    # 0x2f6a68
movsd %xmm0, (%rax)
callq 0x75767
testl %eax, %eax
je 0x7f7be
leaq 0x2a629a(%rip), %rdi    # 0x325a40
callq 0x9470
divsd 0x7394d(%rip), %xmm0    # 0xf3100
leaq 0x2772b6(%rip), %rax    # 0x2f6a70
movsd %xmm0, (%rax)
callq 0x75767
testl %eax, %eax
je 0x7f7de
leaq 0x2a6272(%rip), %rdi    # 0x325a40
callq 0x9470
leaq 0x27729e(%rip), %rax    # 0x2f6a78
movsd %xmm0, (%rax)
callq 0x75767
testl %eax, %eax
je 0x7f806
leaq 0x2a6252(%rip), %rdi    # 0x325a40
callq 0x9470
divsd 0x7383d(%rip), %xmm0    # 0xf3038
leaq 0x27727e(%rip), %rax    # 0x2f6a80
movsd %xmm0, (%rax)
callq 0x75767
testl %eax, %eax
je 0x7f83b
leaq 0x2a622a(%rip), %rdi    # 0x325a40
callq 0x9470
divsd 0x73815(%rip), %xmm0    # 0xf3038
leaq 0x2771ee(%rip), %rax    # 0x2f6a18
movsd %xmm0, (%rax)
leaq 0x277a17(%rip), %rax    # 0x2f724c
movl $0x23, (%rax)
callq 0x75767
testl %eax, %eax
je 0x7f863
leaq 0x2a61f5(%rip), %rdi    # 0x325a40
callq 0x9470
divsd 0x738a8(%rip), %xmm0    # 0xf3100
leaq 0x277229(%rip), %rax    # 0x2f6a88
movsd %xmm0, (%rax)
callq 0x75767
testl %eax, %eax
je 0x7f881
leaq 0x2a61cd(%rip), %rdi    # 0x325a40
callq 0x95e0
leaq 0x277221(%rip), %rcx    # 0x2f6aa0
movl %eax, (%rcx)
callq 0x75767
testl %eax, %eax
je 0x7f8c1
leaq 0x2a61af(%rip), %rdi    # 0x325a40
callq 0x9470
divsd 0x7379a(%rip), %xmm0    # 0xf3038
leaq 0x2771eb(%rip), %rax    # 0x2f6a90
movsd %xmm0, (%rax)
leaq 0x277150(%rip), %rax    # 0x2f6a00
movsd %xmm0, (%rax)
leaq 0x277a41(%rip), %rax    # 0x2f72fc
movl $0x23, (%rax)
callq 0x75767
testl %eax, %eax
je 0x7f8e9
leaq 0x2a616f(%rip), %rdi    # 0x325a40
callq 0x9470
mulsd 0x7384a(%rip), %xmm0    # 0xf3128
leaq 0x2771b3(%rip), %rax    # 0x2f6a98
movsd %xmm0, (%rax)
popq %rbx
popq %r14
popq %rbp
retq