// File: /workspace/github_cpp_makefile_star2_O3/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 0x7f2b8
movl %r13d, %r12d
xorl $0x41, %r12d
movl %r14d, %eax
xorl $0x41, %eax
orl %r12d, %eax
je 0x9cebd
movl %r14d, %ecx
xorl $0x61, %ecx
movl %r12d, %eax
orl %ecx, %eax
je 0x9cebd
movl %r14d, %eax
xorl $0x62, %eax
movl %r12d, %edx
orl %eax, %edx
je 0x9cebd
movl %r14d, %edx
xorl $0x42, %edx
orl %r12d, %edx
je 0x9cebd
movl %r14d, %edx
xorl $0x63, %edx
movl %r12d, %esi
orl %edx, %esi
je 0x9cebd
movl %r14d, %esi
xorl $0x43, %esi
orl %r12d, %esi
jne 0x9cf08
callq 0x9c896
leaq 0x1a14f7(%rip), %rax    # 0x23e3c0
cmpq $0x0, (%rax)
setne %al
leaq 0x186729(%rip), %rcx    # 0x223600
movq (%rcx), %rdi
testq %rdi, %rdi
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x9ceec
callq 0xafe8
leaq 0x1a20ad(%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 0x9cf1c
callq 0x9a65e
jmp 0x9cec2
movl %r14d, %edi
xorl $0x44, %edi
orl %r12d, %edi
je 0x9cebd
movl %r14d, %edi
xorl $0x65, %edi
movl %r12d, %r8d
orl %edi, %r8d
jne 0x9cf3c
callq 0x9a69c
jmp 0x9cec2
movl %r14d, %r8d
xorl $0x45, %r8d
orl %r12d, %r8d
je 0x9cebd
movl %r14d, %r8d
xorl $0x66, %r8d
movl %r12d, %r9d
orl %r8d, %r9d
jne 0x9cf65
callq 0x9a6da
jmp 0x9cec2
movl %r14d, %r15d
xorl $0x67, %r15d
movl %r12d, %r9d
orl %r15d, %r9d
jne 0x9cf7e
callq 0x9a71c
jmp 0x9cec2
movl %r14d, %r11d
xorl $0x68, %r11d
movl %r12d, %r9d
orl %r11d, %r9d
je 0x9cebd
movl %r14d, %r10d
xorl $0x69, %r10d
movl %r12d, %r9d
orl %r10d, %r9d
je 0x9cebd
movl %r10d, -0x38(%rbp)
movl %r14d, %r9d
xorl $0x6a, %r9d
movl %r12d, %r10d
orl %r9d, %r10d
je 0x9cebd
movl %r14d, %r10d
xorl $0x4a, %r10d
orl %r12d, %r10d
je 0x9cebd
movl %r14d, %r10d
xorl $0x6b, %r10d
movl %r12d, %ebx
movl %r10d, -0x2c(%rbp)
orl %r10d, %ebx
je 0x9cebd
movl %r14d, %r10d
xorl $0x6c, %r10d
movl %r12d, %ebx
movl %r10d, -0x44(%rbp)
orl %r10d, %ebx
je 0x9cebd
movl %r14d, %ebx
xorl $0x6d, %ebx
orl %r12d, %ebx
jne 0x9d00e
callq 0x9a763
jmp 0x9cec2
movl %r14d, %ebx
xorl $0x4d, %ebx
orl %r12d, %ebx
je 0x9cebd
movl %r14d, %r10d
xorl $0x6e, %r10d
movl %r12d, %ebx
movl %r10d, -0x30(%rbp)
orl %r10d, %ebx
je 0x9cebd
movl %r14d, %ebx
xorl $0x4e, %ebx
orl %r12d, %ebx
jne 0x9d049
callq 0x9a7c1
jmp 0x9cec2
movl %r14d, %r10d
xorl $0x6f, %r10d
movl %r12d, %ebx
movl %r10d, -0x34(%rbp)
orl %r10d, %ebx
je 0x9cebd
movl %r14d, %ebx
xorl $0x4f, %ebx
orl %r12d, %ebx
je 0x9cebd
movl %r14d, %r10d
xorl $0x70, %r10d
movl %r12d, %ebx
movl %r10d, -0x40(%rbp)
orl %r10d, %ebx
jne 0x9d093
leaq 0x87b97(%rip), %rdi     # 0x124c20
callq 0x58dc2
jmp 0x9cec2
movl %r14d, %ebx
xorl $0x50, %ebx
orl %r12d, %ebx
jne 0x9d0a8
callq 0x9a813
jmp 0x9cec2
movl %r14d, %r10d
xorl $0x71, %r10d
movl %r12d, %ebx
movl %r10d, -0x3c(%rbp)
orl %r10d, %ebx
jne 0x9d0c5
callq 0x9a862
jmp 0x9cec2
movl %r14d, %ebx
xorl $0x51, %ebx
orl %r12d, %ebx
jne 0x9d0da
callq 0x9a8af
jmp 0x9cec2
movl %r14d, %r10d
xorl $0x72, %r10d
movl %r12d, %ebx
orl %r10d, %ebx
jne 0x9d0f3
callq 0x9a8ea
jmp 0x9cec2
movl %r14d, %ebx
xorl $0x73, %ebx
orl %r12d, %ebx
je 0x9cebd
movl %r14d, %ebx
xorl $0x74, %ebx
orl %r12d, %ebx
jne 0x9d117
callq 0x9a912
jmp 0x9cec2
movl %r14d, %ebx
xorl $0x75, %ebx
orl %r12d, %ebx
je 0x9cebd
movl %r14d, %ebx
xorl $0x76, %ebx
orl %r12d, %ebx
je 0x9cebd
movl %r14d, %ebx
xorl $0x77, %ebx
orl %r12d, %ebx
jne 0x9d14a
callq 0x9a97e
jmp 0x9cec2
movl %r14d, %ebx
xorl $0x78, %ebx
orl %r12d, %ebx
je 0x9cebd
movl %r14d, %ebx
xorl $0x79, %ebx
orl %r12d, %ebx
jne 0x9d16e
callq 0x9a94a
jmp 0x9cec2
xorl $0x7a, %r14d
orl %r14d, %r12d
jne 0x9d181
callq 0x9a9e0
jmp 0x9cec2
movl %r13d, %ebx
xorl $0x42, %ebx
movl %ebx, %r12d
orl %ecx, %r12d
jne 0x9d1ab
leaq 0x270062(%rip), %rax    # 0x30d1f8
movl $0x1, (%rax)
movl $0x6, %edi
callq 0x9aff8
jmp 0x9cec2
movl %ebx, %r12d
orl %eax, %r12d
jne 0x9d1bd
callq 0x9aa30
jmp 0x9cec2
movl %ebx, %r12d
orl %edx, %r12d
je 0x9cebd
movl %ebx, %r12d
orl %esi, %r12d
jne 0x9d1db
callq 0x9ab5c
jmp 0x9cec2
movl %ebx, %r12d
orl %edi, %r12d
je 0x9cebd
movl %ebx, %r12d
orl %r8d, %r12d
je 0x9cebd
movl %ebx, %r12d
orl %r15d, %r12d
jne 0x9d217
leaq 0x26fffe(%rip), %rax    # 0x30d200
movl $0x1, (%rax)
movl $0x6, %edi
callq 0x9b38f
jmp 0x9cec2
movl %ebx, %r12d
orl %r11d, %r12d
je 0x9cebd
movl %ebx, %r12d
orl -0x38(%rbp), %r12d
je 0x9cebd
movl %ebx, %r12d
orl %r9d, %r12d
jne 0x9d242
callq 0x9acad
jmp 0x9cec2
movl %ebx, %r12d
orl -0x2c(%rbp), %r12d
jne 0x9d267
leaq 0x26ffb6(%rip), %rax    # 0x30d208
movl $0x1, (%rax)
movl $0x6, %edi
callq 0x9b6ac
jmp 0x9cec2
orl %ebx, -0x44(%rbp)
je 0x9cebd
movl %ebx, %r12d
orl -0x30(%rbp), %r12d
jne 0x9d295
leaq 0x26ff90(%rip), %rax    # 0x30d210
movl $0x1, (%rax)
movl $0x6, %edi
callq 0x9b85d
jmp 0x9cec2
movl %ebx, %r12d
orl -0x34(%rbp), %r12d
jne 0x9d2a8
callq 0x9ad0a
jmp 0x9cec2
orl -0x40(%rbp), %ebx
je 0x9cebd
movl %r13d, %ebx
xorl $0x43, %ebx
movl %ebx, %r12d
orl %ecx, %r12d
jne 0x9d2c9
callq 0x9ad8e
jmp 0x9cec2
movl %ebx, %r12d
orl %eax, %r12d
je 0x9cebd
movl %ebx, %r12d
orl %esi, %r12d
je 0x9cebd
movl %ebx, %r12d
orl %edi, %r12d
je 0x9cebd
movl %ebx, %r12d
orl %r8d, %r12d
je 0x9cebd
movl %ebx, %r12d
orl %r15d, %r12d
jne 0x9d30b
callq 0x9ae4c
jmp 0x9cec2
orl %ebx, %r11d
je 0x9cebd
orl %ebx, -0x38(%rbp)
je 0x9cebd
movl %ebx, %r11d
orl %r9d, %r11d
jne 0x9d32f
callq 0x9ae80
jmp 0x9cec2
movl %ebx, %r11d
orl -0x2c(%rbp), %r11d
je 0x9cebd
orl -0x34(%rbp), %ebx
je 0x9cebd
movl %r13d, %r11d
xorl $0x45, %r11d
movl %r11d, %ebx
orl %ecx, %ebx
jne 0x9d36a
leaq 0x26fea2(%rip), %rax    # 0x30d1fc
movl $0x1, (%rax)
movl $0x8, %edi
jmp 0x9d1a1
movl %r11d, %ebx
orl %edx, %ebx
je 0x9cebd
orl %r11d, %r15d
jne 0x9d391
leaq 0x26fe83(%rip), %rax    # 0x30d204
movl $0x1, (%rax)
movl $0x8, %edi
jmp 0x9d20d
movl %r11d, %ebx
orl -0x2c(%rbp), %ebx
jne 0x9d3b0
leaq 0x26fe6c(%rip), %rax    # 0x30d20c
movl $0x1, (%rax)
movl $0x8, %edi
jmp 0x9d25d
movl %r11d, %ebx
orl -0x30(%rbp), %ebx
jne 0x9d3cf
leaq 0x26fe55(%rip), %rax    # 0x30d214
movl $0x1, (%rax)
movl $0x8, %edi
jmp 0x9d28b
orl -0x3c(%rbp), %r11d
jne 0x9d3e1
leaq 0x87a3a(%rip), %rdi     # 0x124e16
jmp 0x9d089
movl %r13d, %r11d
xorl $0x46, %r11d
movl %r11d, %ebx
orl %ecx, %ebx
jne 0x9d3f9
callq 0x9bb16
jmp 0x9cec2
orl %esi, %r11d
je 0x9cebd
movl %r13d, %r11d
xorl $0x47, %r11d
movl %r11d, %ebx
orl %ecx, %ebx
jne 0x9d41a
callq 0x9bbd4
jmp 0x9cec2
movl %r11d, %ebx
orl %eax, %ebx
jne 0x9d42b
callq 0x9bc01
jmp 0x9cec2
orl %r11d, %edx
jne 0x9d43a
callq 0x9bc21
jmp 0x9cec2
orl %r11d, %esi
jne 0x9d449
callq 0x9bc72
jmp 0x9cec2
orl %r11d, %edi
jne 0x9d458
callq 0x9bcaa
jmp 0x9cec2
orl %r11d, %r8d
jne 0x9d467
callq 0x9bcde
jmp 0x9cec2
orl %r11d, %r9d
jne 0x9d476
callq 0x9bd01
jmp 0x9cec2
orl -0x2c(%rbp), %r11d
jne 0x9d492
leaq 0x879c9(%rip), %rdi     # 0x124e4c
callq 0x58dc2
callq 0x9a5a9
jmp 0x9cec2
movl %r13d, %edx
xorl $0x48, %edx
movl %edx, %esi
orl %ecx, %esi
jne 0x9d4a5
movl $0x1, %edi
jmp 0x9d4ad
movl %edx, %esi
orl %eax, %esi
jne 0x9d4b7
xorl %edi, %edi
callq 0x9bedb
jmp 0x9cec2
orl %edx, -0x30(%rbp)
jne 0x9d4c6
callq 0x9c3b5
jmp 0x9cec2
orl %r10d, %edx
jne 0x9d4d5
callq 0x9c4f6
jmp 0x9cec2
movl %r13d, %edx
xorl $0x49, %edx
orl %ecx, %edx
jne 0x9d4e9
callq 0x9c760
jmp 0x9cec2
movl %r13d, %ecx
xorl $0x53, %ecx
orl %r14d, %ecx
jne 0x9d4fe
callq 0x9c835
jmp 0x9cec2
xorl $0x57, %r13d
orl %eax, %r13d
jne 0x9cec2
leaq 0x87772(%rip), %rdi     # 0x124c84
jmp 0x9d089