// File: /workspace/github_cpp_makefile_star2_O2/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
pushq $0x1
popq %rdi
callq 0x73dcb
movl %r13d, %r12d
xorl $0x41, %r12d
movl %r14d, %eax
xorl $0x41, %eax
orl %r12d, %eax
je 0x8e16a
movl %r14d, %ecx
xorl $0x61, %ecx
movl %r12d, %eax
orl %ecx, %eax
je 0x8e16a
movl %r14d, %eax
xorl $0x62, %eax
movl %r12d, %edx
orl %eax, %edx
je 0x8e16a
movl %r14d, %edx
xorl $0x42, %edx
orl %r12d, %edx
je 0x8e16a
movl %r14d, %edx
xorl $0x63, %edx
movl %r12d, %esi
orl %edx, %esi
je 0x8e16a
movl %r14d, %esi
xorl $0x43, %esi
orl %r12d, %esi
jne 0x8e1b5
callq 0x8db3d
leaq 0x19a24a(%rip), %rax    # 0x2283c0
cmpq $0x0, (%rax)
setne %al
leaq 0x17f47c(%rip), %rcx    # 0x20d600
movq (%rcx), %rdi
testq %rdi, %rdi
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x8e199
callq 0xae83
leaq 0x19ae00(%rip), %rax    # 0x228fa0
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 0x8e1c9
callq 0x8c0d1
jmp 0x8e16f
movl %r14d, %edi
xorl $0x44, %edi
orl %r12d, %edi
je 0x8e16a
movl %r14d, %edi
xorl $0x65, %edi
movl %r12d, %r8d
orl %edi, %r8d
jne 0x8e1e9
callq 0x8c10f
jmp 0x8e16f
movl %r14d, %r8d
xorl $0x45, %r8d
orl %r12d, %r8d
je 0x8e16a
movl %r14d, %r8d
xorl $0x66, %r8d
movl %r12d, %r9d
orl %r8d, %r9d
jne 0x8e212
callq 0x8c14d
jmp 0x8e16f
movl %r14d, %r15d
xorl $0x67, %r15d
movl %r12d, %r9d
orl %r15d, %r9d
jne 0x8e22b
callq 0x8c18f
jmp 0x8e16f
movl %r14d, %r11d
xorl $0x68, %r11d
movl %r12d, %r9d
orl %r11d, %r9d
je 0x8e16a
movl %r14d, %r10d
xorl $0x69, %r10d
movl %r12d, %r9d
orl %r10d, %r9d
je 0x8e16a
movl %r10d, -0x38(%rbp)
movl %r14d, %r9d
xorl $0x6a, %r9d
movl %r12d, %r10d
orl %r9d, %r10d
je 0x8e16a
movl %r14d, %r10d
xorl $0x4a, %r10d
orl %r12d, %r10d
je 0x8e16a
movl %r14d, %r10d
xorl $0x6b, %r10d
movl %r12d, %ebx
movl %r10d, -0x2c(%rbp)
orl %r10d, %ebx
je 0x8e16a
movl %r14d, %r10d
xorl $0x6c, %r10d
movl %r12d, %ebx
movl %r10d, -0x44(%rbp)
orl %r10d, %ebx
je 0x8e16a
movl %r14d, %ebx
xorl $0x6d, %ebx
orl %r12d, %ebx
jne 0x8e2bb
callq 0x8c1c5
jmp 0x8e16f
movl %r14d, %ebx
xorl $0x4d, %ebx
orl %r12d, %ebx
je 0x8e16a
movl %r14d, %r10d
xorl $0x6e, %r10d
movl %r12d, %ebx
movl %r10d, -0x30(%rbp)
orl %r10d, %ebx
je 0x8e16a
movl %r14d, %ebx
xorl $0x4e, %ebx
orl %r12d, %ebx
jne 0x8e2f6
callq 0x8c1f2
jmp 0x8e16f
movl %r14d, %r10d
xorl $0x6f, %r10d
movl %r12d, %ebx
movl %r10d, -0x34(%rbp)
orl %r10d, %ebx
je 0x8e16a
movl %r14d, %ebx
xorl $0x4f, %ebx
orl %r12d, %ebx
je 0x8e16a
movl %r14d, %r10d
xorl $0x70, %r10d
movl %r12d, %ebx
movl %r10d, -0x40(%rbp)
orl %r10d, %ebx
jne 0x8e339
callq 0x8c25d
jmp 0x8e16f
movl %r14d, %ebx
xorl $0x50, %ebx
orl %r12d, %ebx
jne 0x8e34e
callq 0x8c230
jmp 0x8e16f
movl %r14d, %r10d
xorl $0x71, %r10d
movl %r12d, %ebx
movl %r10d, -0x3c(%rbp)
orl %r10d, %ebx
jne 0x8e36b
callq 0x8c26e
jmp 0x8e16f
movl %r14d, %ebx
xorl $0x51, %ebx
orl %r12d, %ebx
jne 0x8e380
callq 0x8c2aa
jmp 0x8e16f
movl %r14d, %r10d
xorl $0x72, %r10d
movl %r12d, %ebx
orl %r10d, %ebx
jne 0x8e399
callq 0x8c2d4
jmp 0x8e16f
movl %r14d, %ebx
xorl $0x73, %ebx
orl %r12d, %ebx
je 0x8e16a
movl %r14d, %ebx
xorl $0x74, %ebx
orl %r12d, %ebx
jne 0x8e3bd
callq 0x8c2ea
jmp 0x8e16f
movl %r14d, %ebx
xorl $0x75, %ebx
orl %r12d, %ebx
je 0x8e16a
movl %r14d, %ebx
xorl $0x76, %ebx
orl %r12d, %ebx
je 0x8e16a
movl %r14d, %ebx
xorl $0x77, %ebx
orl %r12d, %ebx
jne 0x8e3f0
callq 0x8c345
jmp 0x8e16f
movl %r14d, %ebx
xorl $0x78, %ebx
orl %r12d, %ebx
je 0x8e16a
movl %r14d, %ebx
xorl $0x79, %ebx
orl %r12d, %ebx
jne 0x8e414
callq 0x8c311
jmp 0x8e16f
xorl $0x7a, %r14d
orl %r14d, %r12d
jne 0x8e427
callq 0x8c394
jmp 0x8e16f
movl %r13d, %ebx
xorl $0x42, %ebx
movl %ebx, %r12d
orl %ecx, %r12d
jne 0x8e44f
leaq 0x268dbc(%rip), %rax    # 0x2f71f8
movl $0x1, (%rax)
pushq $0x6
popq %rdi
callq 0x8c7e9
jmp 0x8e16f
movl %ebx, %r12d
orl %eax, %r12d
jne 0x8e461
callq 0x8c3e4
jmp 0x8e16f
movl %ebx, %r12d
orl %edx, %r12d
je 0x8e16a
movl %ebx, %r12d
orl %esi, %r12d
jne 0x8e47f
callq 0x8c4c7
jmp 0x8e16f
movl %ebx, %r12d
orl %edi, %r12d
je 0x8e16a
movl %ebx, %r12d
orl %r8d, %r12d
je 0x8e16a
movl %ebx, %r12d
orl %r15d, %r12d
jne 0x8e4b9
leaq 0x268d5a(%rip), %rax    # 0x2f7200
movl $0x1, (%rax)
pushq $0x6
popq %rdi
callq 0x8cabb
jmp 0x8e16f
movl %ebx, %r12d
orl %r11d, %r12d
je 0x8e16a
movl %ebx, %r12d
orl -0x38(%rbp), %r12d
je 0x8e16a
movl %ebx, %r12d
orl %r9d, %r12d
jne 0x8e4e4
callq 0x8c54c
jmp 0x8e16f
movl %ebx, %r12d
orl -0x2c(%rbp), %r12d
jne 0x8e507
leaq 0x268d14(%rip), %rax    # 0x2f7208
movl $0x1, (%rax)
pushq $0x6
popq %rdi
callq 0x8cd76
jmp 0x8e16f
orl %ebx, -0x44(%rbp)
je 0x8e16a
movl %ebx, %r12d
orl -0x30(%rbp), %r12d
jne 0x8e533
leaq 0x268cf0(%rip), %rax    # 0x2f7210
movl $0x1, (%rax)
pushq $0x6
popq %rdi
callq 0x8cf03
jmp 0x8e16f
movl %ebx, %r12d
orl -0x34(%rbp), %r12d
jne 0x8e546
callq 0x8c598
jmp 0x8e16f
orl -0x40(%rbp), %ebx
je 0x8e16a
movl %r13d, %ebx
xorl $0x43, %ebx
movl %ebx, %r12d
orl %ecx, %r12d
jne 0x8e567
callq 0x8c5d0
jmp 0x8e16f
movl %ebx, %r12d
orl %eax, %r12d
je 0x8e16a
movl %ebx, %r12d
orl %esi, %r12d
je 0x8e16a
movl %ebx, %r12d
orl %edi, %r12d
je 0x8e16a
movl %ebx, %r12d
orl %r8d, %r12d
je 0x8e16a
movl %ebx, %r12d
orl %r15d, %r12d
jne 0x8e5a9
callq 0x8c684
jmp 0x8e16f
orl %ebx, %r11d
je 0x8e16a
orl %ebx, -0x38(%rbp)
je 0x8e16a
movl %ebx, %r11d
orl %r9d, %r11d
jne 0x8e5cd
callq 0x8c6a7
jmp 0x8e16f
movl %ebx, %r11d
orl -0x2c(%rbp), %r11d
je 0x8e16a
orl -0x34(%rbp), %ebx
je 0x8e16a
movl %r13d, %r11d
xorl $0x45, %r11d
movl %r11d, %ebx
orl %ecx, %ebx
jne 0x8e605
leaq 0x268c04(%rip), %rax    # 0x2f71fc
movl $0x1, (%rax)
pushq $0x8
jmp 0x8e444
movl %r11d, %ebx
orl %edx, %ebx
je 0x8e16a
orl %r11d, %r15d
jne 0x8e629
leaq 0x268be8(%rip), %rax    # 0x2f7204
movl $0x1, (%rax)
pushq $0x8
jmp 0x8e4ae
movl %r11d, %ebx
orl -0x2c(%rbp), %ebx
jne 0x8e645
leaq 0x268bd4(%rip), %rax    # 0x2f720c
movl $0x1, (%rax)
pushq $0x8
jmp 0x8e4fc
movl %r11d, %ebx
orl -0x30(%rbp), %ebx
jne 0x8e661
leaq 0x268bc0(%rip), %rax    # 0x2f7214
movl $0x1, (%rax)
pushq $0x8
jmp 0x8e528
orl -0x3c(%rbp), %r11d
jne 0x8e671
callq 0x8d090
jmp 0x8e16f
movl %r13d, %r11d
xorl $0x46, %r11d
movl %r11d, %ebx
orl %ecx, %ebx
jne 0x8e689
callq 0x8d0a1
jmp 0x8e16f
orl %esi, %r11d
je 0x8e16a
movl %r13d, %r11d
xorl $0x47, %r11d
movl %r11d, %ebx
orl %ecx, %ebx
jne 0x8e6aa
callq 0x8d155
jmp 0x8e16f
movl %r11d, %ebx
orl %eax, %ebx
jne 0x8e6bb
callq 0x8d170
jmp 0x8e16f
orl %r11d, %edx
jne 0x8e6ca
callq 0x8d18e
jmp 0x8e16f
orl %r11d, %esi
jne 0x8e6d9
callq 0x8d1cc
jmp 0x8e16f
orl %r11d, %edi
jne 0x8e6e8
callq 0x8d1f3
jmp 0x8e16f
orl %r11d, %r8d
jne 0x8e6f7
callq 0x8d216
jmp 0x8e16f
orl %r11d, %r9d
jne 0x8e706
callq 0x8d239
jmp 0x8e16f
orl -0x2c(%rbp), %r11d
jne 0x8e716
callq 0x8d330
jmp 0x8e16f
movl %r13d, %edx
xorl $0x48, %edx
movl %edx, %esi
orl %ecx, %esi
jne 0x8e727
pushq $0x1
popq %rdi
jmp 0x8e72f
movl %edx, %esi
orl %eax, %esi
jne 0x8e739
xorl %edi, %edi
callq 0x8d346
jmp 0x8e16f
orl %edx, -0x30(%rbp)
jne 0x8e748
callq 0x8d73f
jmp 0x8e16f
orl %r10d, %edx
jne 0x8e757
callq 0x8d813
jmp 0x8e16f
movl %r13d, %edx
xorl $0x49, %edx
orl %ecx, %edx
jne 0x8e76b
callq 0x8da25
jmp 0x8e16f
movl %r13d, %ecx
xorl $0x53, %ecx
orl %r14d, %ecx
jne 0x8e780
callq 0x8daed
jmp 0x8e16f
xorl $0x57, %r13d
orl %eax, %r13d
jne 0x8e16f
callq 0x8c3d3
jmp 0x8e16f