// File: /workspace/github_cpp_makefile_star2_O1/jkingan[P]ladyheather/heathgps.cpp
// Function: decode_moto_msg(int, int)
void decode_moto_msg(int cmd1, int cmd2)
{
   start_msg_decode(1);  // ggggg
   // parse and decode Motorola binary message
   if     ((cmd1 == 'A') && (cmd2 == 'A')) skip_moto_msg();   // sat positions

   else if((cmd1 == 'A') && (cmd2 == 'a')) skip_moto_msg();   // time
   else if((cmd1 == 'A') && (cmd2 == 'A')) skip_moto_msg();   // ephemeris hold correction
   else if((cmd1 == 'A') && (cmd2 == 'b')) skip_moto_msg();   // GMT correction
   else if((cmd1 == 'A') && (cmd2 == 'B')) skip_moto_msg();   // application type select
   else if((cmd1 == 'A') && (cmd2 == 'c')) skip_moto_msg();   // date
   else if((cmd1 == 'A') && (cmd2 == 'C')) skip_moto_msg();   // 2D to 0D dop threshold
   else if((cmd1 == 'A') && (cmd2 == 'd')) parse_moto_Ad();   // lat
   else if((cmd1 == 'A') && (cmd2 == 'D')) skip_moto_msg();   // correction thresholds
   else if((cmd1 == 'A') && (cmd2 == 'e')) parse_moto_Ae();   // lon
   else if((cmd1 == 'A') && (cmd2 == 'E')) skip_moto_msg();   // output align
   else if((cmd1 == 'A') && (cmd2 == 'f')) parse_moto_Af();   // alt
   else if((cmd1 == 'A') && (cmd2 == 'g')) parse_moto_Ag();   // elevation mask
   else if((cmd1 == 'A') && (cmd2 == 'h')) skip_moto_msg();   // satellite select options
   else if((cmd1 == 'A') && (cmd2 == 'i')) skip_moto_msg();   // manual satellite select
   else if((cmd1 == 'A') && (cmd2 == 'j')) skip_moto_msg();   // DOP type
   else if((cmd1 == 'A') && (cmd2 == 'J')) skip_moto_msg();   // differential timeout select
   else if((cmd1 == 'A') && (cmd2 == 'k')) skip_moto_msg();   // DOP hysteresis
   else if((cmd1 == 'A') && (cmd2 == 'l')) skip_moto_msg();   // 3D to 2D dop threshold
   else if((cmd1 == 'A') && (cmd2 == 'm')) parse_moto_Am();   // sat ignore list
   else if((cmd1 == 'A') && (cmd2 == 'M')) skip_moto_msg();   // 
   else if((cmd1 == 'A') && (cmd2 == 'n')) skip_moto_msg();   // almanac update
   else if((cmd1 == 'A') && (cmd2 == 'N')) parse_moto_AN();   // velocity filter
   else if((cmd1 == 'A') && (cmd2 == 'o')) skip_moto_msg();   // datum
   else if((cmd1 == 'A') && (cmd2 == 'O')) skip_moto_msg();   // RTCM baud rate
   else if((cmd1 == 'A') && (cmd2 == 'p')) parse_moto_Ap();   // user datum
   else if((cmd1 == 'A') && (cmd2 == 'P')) parse_moto_AP();   // PPS rate
   else if((cmd1 == 'A') && (cmd2 == 'q')) parse_moto_Aq();   // ionospheic correction enabled
   else if((cmd1 == 'A') && (cmd2 == 'Q')) parse_moto_AQ();   // position filter
   else if((cmd1 == 'A') && (cmd2 == 'r')) parse_moto_Ar();   // position fix algorithm type
   else if((cmd1 == 'A') && (cmd2 == 's')) skip_moto_msg();   // position hold position
   else if((cmd1 == 'A') && (cmd2 == 't')) parse_moto_At();   // position hold select
   else if((cmd1 == 'A') && (cmd2 == 'u')) skip_moto_msg();   // altitude hold height
   else if((cmd1 == 'A') && (cmd2 == 'v')) skip_moto_msg();   // altitude hold select
   else if((cmd1 == 'A') && (cmd2 == 'w')) parse_moto_Aw();   // gps/utc select
   else if((cmd1 == 'A') && (cmd2 == 'x')) skip_moto_msg();   // measurement epcho offser
   else if((cmd1 == 'A') && (cmd2 == 'y')) parse_moto_Ay();   // pps offset delay
   else if((cmd1 == 'A') && (cmd2 == 'z')) parse_moto_Az();   // cable delay (for 1PPS)

   else if((cmd1 == 'B') && (cmd2 == 'a')) {
      have_moto_Ba = 1;
      parse_moto_Ea(6);  // 6 chan positioning
   }
   else if((cmd1 == 'B') && (cmd2 == 'b')) parse_moto_Bb();   // sat positions
   else if((cmd1 == 'B') && (cmd2 == 'c')) skip_moto_msg();   // 6 chan dops
   else if((cmd1 == 'B') && (cmd2 == 'd')) parse_moto_Bd();   // almanac status
   else if((cmd1 == 'B') && (cmd2 == 'e')) skip_moto_msg();   // almanac data
   else if((cmd1 == 'B') && (cmd2 == 'f')) skip_moto_msg();   // ephermeris data
   else if((cmd1 == 'B') && (cmd2 == 'g')) {
      have_moto_Bg = 1;
      parse_moto_Eg(6);  // 6 chan range
   }
   else if((cmd1 == 'B') && (cmd2 == 'h')) skip_moto_msg();   // pseudorange data
   else if((cmd1 == 'B') && (cmd2 == 'i')) skip_moto_msg();   // ephemeris data
   else if((cmd1 == 'B') && (cmd2 == 'j')) parse_moto_Bj();   // leapsecond pending
   else if((cmd1 == 'B') && (cmd2 == 'k')) {
      have_moto_Bk = 1;
      parse_moto_Ek(6);  // 6 chan position
   }
   else if((cmd1 == 'B') && (cmd2 == 'l')) skip_moto_msg();   // broadcast data data
   else if((cmd1 == 'B') && (cmd2 == 'n')) {
      have_moto_Bn = 1;
      parse_moto_En(6);  // 6 chan traim
   }
   else if((cmd1 == 'B') && (cmd2 == 'o')) parse_moto_Bo();   // UTC offset from GPS time
   else if((cmd1 == 'B') && (cmd2 == 'p')) skip_moto_msg();   // ionosphere data

   else if((cmd1 == 'C') && (cmd2 == 'a')) parse_moto_Ca();   // 6-channel self test
   else if((cmd1 == 'C') && (cmd2 == 'b')) skip_moto_msg();   // almanac input response
   else if((cmd1 == 'C') && (cmd2 == 'd')) skip_moto_msg();   // alert planning
   else if((cmd1 == 'C') && (cmd2 == 'e')) skip_moto_msg();   // pseudorange correction
   else if((cmd1 == 'C') && (cmd2 == 'f')) skip_moto_msg();   // receiver set to defaults
   else if((cmd1 == 'C') && (cmd2 == 'g')) parse_moto_Cg();   // idle/fix mode
   else if((cmd1 == 'C') && (cmd2 == 'h')) skip_moto_msg();   // almanac ack
   else if((cmd1 == 'C') && (cmd2 == 'i')) skip_moto_msg();   // switch I/O format
   else if((cmd1 == 'C') && (cmd2 == 'j')) parse_moto_Cj();   // receiver id
   else if((cmd1 == 'C') && (cmd2 == 'k')) skip_moto_msg();   // psudorange ack
   else if((cmd1 == 'C') && (cmd2 == 'o')) skip_moto_msg();   // ionosphere data

   else if((cmd1 == 'E') && (cmd2 == 'a')) {
      have_moto_Ea = 1;
      parse_moto_Ea(8);  // 8 chan positioning
   }
   else if((cmd1 == 'E') && (cmd2 == 'c')) skip_moto_msg();   // 8 chan dops
   else if((cmd1 == 'E') && (cmd2 == 'g')) {
      have_moto_Eg = 1;
      parse_moto_Eg(8);  // 8 chan range
   }
   else if((cmd1 == 'E') && (cmd2 == 'k')) {
      have_moto_Ek = 1;
      parse_moto_Ek(8);  // 8 chan position
   }
   else if((cmd1 == 'E') && (cmd2 == 'n')) {
      have_moto_En = 1;
      parse_moto_En(8);  // 8 chan traim
   }

   else if((cmd1 == 'E') && (cmd2 == 'q')) parse_moto_Eq();   // !!!! BASTARD FORMAT ascii position

   else if((cmd1 == 'F') && (cmd2 == 'a')) parse_moto_Fa();   // 8-channel self test
   else if((cmd1 == 'F') && (cmd2 == 'd')) skip_moto_msg();   // alert planning

   else if((cmd1 == 'G') && (cmd2 == 'a')) parse_moto_Ga();   // lat/lon/alt
   else if((cmd1 == 'G') && (cmd2 == 'b')) parse_moto_Gb();   // date and time
   else if((cmd1 == 'G') && (cmd2 == 'c')) parse_moto_Gc();   // PPS status
   else if((cmd1 == 'G') && (cmd2 == 'd')) parse_moto_Gd();   // positioning mode
   else if((cmd1 == 'G') && (cmd2 == 'e')) parse_moto_Ge();   // traim mode
   else if((cmd1 == 'G') && (cmd2 == 'f')) parse_moto_Gf();   // traim alarm threshold
   else if((cmd1 == 'G') && (cmd2 == 'j')) parse_moto_Gj();   // leapsecond info
   else if((cmd1 == 'G') && (cmd2 == 'k')) parse_moto_Gk();   // vehicle id tag

   else if((cmd1 == 'H') && (cmd2 == 'a')) parse_moto_Ha(1);  // 
   else if((cmd1 == 'H') && (cmd2 == 'b')) parse_moto_Ha(0);  // 
   else if((cmd1 == 'H') && (cmd2 == 'n')) parse_moto_Hn();   // !!!! traim
   else if((cmd1 == 'H') && (cmd2 == 'r')) parse_moto_Hr();   // inverse differential

   else if((cmd1 == 'I') && (cmd2 == 'a')) parse_moto_Ia();   // 12-channel self test

   else if((cmd1 == 'S') && (cmd2 == 'z')) parse_moto_Sz();   // power-up test failure
   else if((cmd1 == 'W') && (cmd2 == 'b')) parse_moto_Wb();   // Jupiter-T message format switch

   if(sim_file && sim_delay) {  // throttle sim file messages
      Sleep(sim_delay);
   }
   saw_rcvr_msg = 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movl %esi, %r14d
movl %edi, %r13d
movl $0x1, %edi
callq 0x7f47d
movl %r13d, %r12d
xorl $0x41, %r12d
movl %r14d, %eax
xorl $0x41, %eax
orl %r12d, %eax
je 0x9ccdc
movl %r14d, %ecx
xorl $0x61, %ecx
movl %r12d, %eax
orl %ecx, %eax
je 0x9ccdc
movl %r14d, %eax
xorl $0x62, %eax
movl %r12d, %edx
orl %eax, %edx
je 0x9ccdc
movl %r14d, %edx
xorl $0x42, %edx
orl %r12d, %edx
je 0x9ccdc
movl %r14d, %edx
xorl $0x63, %edx
movl %r12d, %esi
orl %edx, %esi
je 0x9ccdc
movl %r14d, %esi
xorl $0x43, %esi
orl %r12d, %esi
jne 0x9cd27
callq 0x9c6b5
leaq 0x1a16d8(%rip), %rax    # 0x23e3c0
cmpq $0x0, (%rax)
setne %al
leaq 0x18690a(%rip), %rcx    # 0x223600
movq (%rcx), %rdi
testq %rdi, %rdi
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x9cd0b
callq 0xaff7
leaq 0x1a228e(%rip), %rax    # 0x23efa0
movl $0x1, (%rax)
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl %r14d, %esi
xorl $0x64, %esi
movl %r12d, %edi
orl %esi, %edi
jne 0x9cd3b
callq 0x9a4b5
jmp 0x9cce1
movl %r14d, %edi
xorl $0x44, %edi
orl %r12d, %edi
je 0x9ccdc
movl %r14d, %edi
xorl $0x65, %edi
movl %r12d, %r8d
orl %edi, %r8d
jne 0x9cd5b
callq 0x9a4f3
jmp 0x9cce1
movl %r14d, %r8d
xorl $0x45, %r8d
orl %r12d, %r8d
je 0x9ccdc
movl %r14d, %r8d
xorl $0x66, %r8d
movl %r12d, %r9d
orl %r8d, %r9d
jne 0x9cd84
callq 0x9a531
jmp 0x9cce1
movl %r14d, %r15d
xorl $0x67, %r15d
movl %r12d, %r9d
orl %r15d, %r9d
jne 0x9cd9d
callq 0x9a573
jmp 0x9cce1
movl %r14d, %r11d
xorl $0x68, %r11d
movl %r12d, %r9d
orl %r11d, %r9d
je 0x9ccdc
movl %r14d, %r10d
xorl $0x69, %r10d
movl %r12d, %r9d
orl %r10d, %r9d
je 0x9ccdc
movl %r10d, -0x38(%rbp)
movl %r14d, %r9d
xorl $0x6a, %r9d
movl %r12d, %r10d
orl %r9d, %r10d
je 0x9ccdc
movl %r14d, %r10d
xorl $0x4a, %r10d
orl %r12d, %r10d
je 0x9ccdc
movl %r14d, %r10d
xorl $0x6b, %r10d
movl %r12d, %ebx
movl %r10d, -0x2c(%rbp)
orl %r10d, %ebx
je 0x9ccdc
movl %r14d, %r10d
xorl $0x6c, %r10d
movl %r12d, %ebx
movl %r10d, -0x44(%rbp)
orl %r10d, %ebx
je 0x9ccdc
movl %r14d, %ebx
xorl $0x6d, %ebx
orl %r12d, %ebx
jne 0x9ce2d
callq 0x9a5ba
jmp 0x9cce1
movl %r14d, %ebx
xorl $0x4d, %ebx
orl %r12d, %ebx
je 0x9ccdc
movl %r14d, %r10d
xorl $0x6e, %r10d
movl %r12d, %ebx
movl %r10d, -0x30(%rbp)
orl %r10d, %ebx
je 0x9ccdc
movl %r14d, %ebx
xorl $0x4e, %ebx
orl %r12d, %ebx
jne 0x9ce68
callq 0x9a618
jmp 0x9cce1
movl %r14d, %r10d
xorl $0x6f, %r10d
movl %r12d, %ebx
movl %r10d, -0x34(%rbp)
orl %r10d, %ebx
je 0x9ccdc
movl %r14d, %ebx
xorl $0x4f, %ebx
orl %r12d, %ebx
je 0x9ccdc
movl %r14d, %r10d
xorl $0x70, %r10d
movl %r12d, %ebx
movl %r10d, -0x40(%rbp)
orl %r10d, %ebx
jne 0x9ceb2
leaq 0x87c98(%rip), %rdi     # 0x124b40
callq 0x58e77
jmp 0x9cce1
movl %r14d, %ebx
xorl $0x50, %ebx
orl %r12d, %ebx
jne 0x9cec7
callq 0x9a66a
jmp 0x9cce1
movl %r14d, %r10d
xorl $0x71, %r10d
movl %r12d, %ebx
movl %r10d, -0x3c(%rbp)
orl %r10d, %ebx
jne 0x9cee4
callq 0x9a6b9
jmp 0x9cce1
movl %r14d, %ebx
xorl $0x51, %ebx
orl %r12d, %ebx
jne 0x9cef9
callq 0x9a706
jmp 0x9cce1
movl %r14d, %r10d
xorl $0x72, %r10d
movl %r12d, %ebx
orl %r10d, %ebx
jne 0x9cf12
callq 0x9a741
jmp 0x9cce1
movl %r14d, %ebx
xorl $0x73, %ebx
orl %r12d, %ebx
je 0x9ccdc
movl %r14d, %ebx
xorl $0x74, %ebx
orl %r12d, %ebx
jne 0x9cf36
callq 0x9a769
jmp 0x9cce1
movl %r14d, %ebx
xorl $0x75, %ebx
orl %r12d, %ebx
je 0x9ccdc
movl %r14d, %ebx
xorl $0x76, %ebx
orl %r12d, %ebx
je 0x9ccdc
movl %r14d, %ebx
xorl $0x77, %ebx
orl %r12d, %ebx
jne 0x9cf69
callq 0x9a7d5
jmp 0x9cce1
movl %r14d, %ebx
xorl $0x78, %ebx
orl %r12d, %ebx
je 0x9ccdc
movl %r14d, %ebx
xorl $0x79, %ebx
orl %r12d, %ebx
jne 0x9cf8d
callq 0x9a7a1
jmp 0x9cce1
xorl $0x7a, %r14d
orl %r14d, %r12d
jne 0x9cfa0
callq 0x9a837
jmp 0x9cce1
movl %r13d, %ebx
xorl $0x42, %ebx
movl %ebx, %r12d
orl %ecx, %r12d
jne 0x9cfca
leaq 0x270243(%rip), %rax    # 0x30d1f8
movl $0x1, (%rax)
movl $0x6, %edi
callq 0x9ae3d
jmp 0x9cce1
movl %ebx, %r12d
orl %eax, %r12d
jne 0x9cfdc
callq 0x9a887
jmp 0x9cce1
movl %ebx, %r12d
orl %edx, %r12d
je 0x9ccdc
movl %ebx, %r12d
orl %esi, %r12d
jne 0x9cffa
callq 0x9a9b2
jmp 0x9cce1
movl %ebx, %r12d
orl %edi, %r12d
je 0x9ccdc
movl %ebx, %r12d
orl %r8d, %r12d
je 0x9ccdc
movl %ebx, %r12d
orl %r15d, %r12d
jne 0x9d036
leaq 0x2701df(%rip), %rax    # 0x30d200
movl $0x1, (%rax)
movl $0x6, %edi
callq 0x9b1d6
jmp 0x9cce1
movl %ebx, %r12d
orl %r11d, %r12d
je 0x9ccdc
movl %ebx, %r12d
orl -0x38(%rbp), %r12d
je 0x9ccdc
movl %ebx, %r12d
orl %r9d, %r12d
jne 0x9d061
callq 0x9ab03
jmp 0x9cce1
movl %ebx, %r12d
orl -0x2c(%rbp), %r12d
jne 0x9d086
leaq 0x270197(%rip), %rax    # 0x30d208
movl $0x1, (%rax)
movl $0x6, %edi
callq 0x9b4d7
jmp 0x9cce1
orl %ebx, -0x44(%rbp)
je 0x9ccdc
movl %ebx, %r12d
orl -0x30(%rbp), %r12d
jne 0x9d0b4
leaq 0x270171(%rip), %rax    # 0x30d210
movl $0x1, (%rax)
movl $0x6, %edi
callq 0x9b68a
jmp 0x9cce1
movl %ebx, %r12d
orl -0x34(%rbp), %r12d
jne 0x9d0c7
callq 0x9ab60
jmp 0x9cce1
orl -0x40(%rbp), %ebx
je 0x9ccdc
movl %r13d, %ebx
xorl $0x43, %ebx
movl %ebx, %r12d
orl %ecx, %r12d
jne 0x9d0e8
callq 0x9abe4
jmp 0x9cce1
movl %ebx, %r12d
orl %eax, %r12d
je 0x9ccdc
movl %ebx, %r12d
orl %esi, %r12d
je 0x9ccdc
movl %ebx, %r12d
orl %edi, %r12d
je 0x9ccdc
movl %ebx, %r12d
orl %r8d, %r12d
je 0x9ccdc
movl %ebx, %r12d
orl %r15d, %r12d
jne 0x9d12a
callq 0x9ac91
jmp 0x9cce1
orl %ebx, %r11d
je 0x9ccdc
orl %ebx, -0x38(%rbp)
je 0x9ccdc
movl %ebx, %r11d
orl %r9d, %r11d
jne 0x9d14e
callq 0x9acc5
jmp 0x9cce1
movl %ebx, %r11d
orl -0x2c(%rbp), %r11d
je 0x9ccdc
orl -0x34(%rbp), %ebx
je 0x9ccdc
movl %r13d, %r11d
xorl $0x45, %r11d
movl %r11d, %ebx
orl %ecx, %ebx
jne 0x9d189
leaq 0x270083(%rip), %rax    # 0x30d1fc
movl $0x1, (%rax)
movl $0x8, %edi
jmp 0x9cfc0
movl %r11d, %ebx
orl %edx, %ebx
je 0x9ccdc
orl %r11d, %r15d
jne 0x9d1b0
leaq 0x270064(%rip), %rax    # 0x30d204
movl $0x1, (%rax)
movl $0x8, %edi
jmp 0x9d02c
movl %r11d, %ebx
orl -0x2c(%rbp), %ebx
jne 0x9d1cf
leaq 0x27004d(%rip), %rax    # 0x30d20c
movl $0x1, (%rax)
movl $0x8, %edi
jmp 0x9d07c
movl %r11d, %ebx
orl -0x30(%rbp), %ebx
jne 0x9d1ee
leaq 0x270036(%rip), %rax    # 0x30d214
movl $0x1, (%rax)
movl $0x8, %edi
jmp 0x9d0aa
orl -0x3c(%rbp), %r11d
jne 0x9d200
leaq 0x87b3b(%rip), %rdi     # 0x124d36
jmp 0x9cea8
movl %r13d, %r11d
xorl $0x46, %r11d
movl %r11d, %ebx
orl %ecx, %ebx
jne 0x9d218
callq 0x9b943
jmp 0x9cce1
orl %esi, %r11d
je 0x9ccdc
movl %r13d, %r11d
xorl $0x47, %r11d
movl %r11d, %ebx
orl %ecx, %ebx
jne 0x9d239
callq 0x9b9f0
jmp 0x9cce1
movl %r11d, %ebx
orl %eax, %ebx
jne 0x9d24a
callq 0x9ba1d
jmp 0x9cce1
orl %r11d, %edx
jne 0x9d259
callq 0x9ba3d
jmp 0x9cce1
orl %r11d, %esi
jne 0x9d268
callq 0x9ba8e
jmp 0x9cce1
orl %r11d, %edi
jne 0x9d277
callq 0x9bac6
jmp 0x9cce1
orl %r11d, %r8d
jne 0x9d286
callq 0x9bafa
jmp 0x9cce1
orl %r11d, %r9d
jne 0x9d295
callq 0x9bb1d
jmp 0x9cce1
orl -0x2c(%rbp), %r11d
jne 0x9d2b1
leaq 0x87aca(%rip), %rdi     # 0x124d6c
callq 0x58e77
callq 0x9a400
jmp 0x9cce1
movl %r13d, %edx
xorl $0x48, %edx
movl %edx, %esi
orl %ecx, %esi
jne 0x9d2c4
movl $0x1, %edi
jmp 0x9d2cc
movl %edx, %esi
orl %eax, %esi
jne 0x9d2d6
xorl %edi, %edi
callq 0x9bcf7
jmp 0x9cce1
orl %edx, -0x30(%rbp)
jne 0x9d2e5
callq 0x9c1e0
jmp 0x9cce1
orl %r10d, %edx
jne 0x9d2f4
callq 0x9c321
jmp 0x9cce1
movl %r13d, %edx
xorl $0x49, %edx
orl %ecx, %edx
jne 0x9d308
callq 0x9c58a
jmp 0x9cce1
movl %r13d, %ecx
xorl $0x53, %ecx
orl %r14d, %ecx
jne 0x9d31d
callq 0x9c654
jmp 0x9cce1
xorl $0x57, %r13d
orl %eax, %r13d
jne 0x9cce1
leaq 0x87873(%rip), %rdi     # 0x124ba4
jmp 0x9cea8