#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
unsigned int crc24q(unsigned char *, int);
int getbitu(unsigned char const *, int, int);
int /*<<< orphan*/ setbitu(unsigned char *, int, int, unsigned int);
int /*<<< orphan*/ trace(int, char *, int);
int lex2rtcm(const unsigned char *msg, int i, unsigned char *buff) {
  unsigned int crc;
  int j, ns, type, n = 0;
  if (i + 12 >= 2000 - 49 - 256)
    return 0;
  switch ((type = getbitu(msg, i, 12))) {
  case 1057:
    ns = getbitu(msg, i + 62, 6);
    n = 68 + ns * 135;
    break;
  case 1058:
    ns = getbitu(msg, i + 61, 6);
    n = 67 + ns * 76;
    break;
  case 1059:
    ns = getbitu(msg, i + 61, 6);
    n = 67;
    for (j = 0; j < ns; j++)
      n += 11 + getbitu(msg, i + n + 6, 5) * 19;
    break;
  case 1060:
    ns = getbitu(msg, i + 62, 6);
    n = 68 + ns * 205;
    break;
  case 1061:
    ns = getbitu(msg, i + 61, 6);
    n = 67 + ns * 12;
    break;
  case 1062:
    ns = getbitu(msg, i + 61, 6);
    n = 67 + ns * 28;
    break;
  case 1063:
    ns = getbitu(msg, i + 59, 6);
    n = 65 + ns * 134;
    break;
  case 1064:
    ns = getbitu(msg, i + 58, 6);
    n = 64 + ns * 75;
    break;
  case 1065:
    ns = getbitu(msg, i + 58, 6);
    n = 64;
    for (j = 0; j < ns; j++)
      n += 10 + getbitu(msg, i + n + 5, 5) * 19;
    break;
  case 1066:
    ns = getbitu(msg, i + 59, 6);
    n = 65 + ns * 204;
    break;
  case 1067:
    ns = getbitu(msg, i + 58, 6);
    n = 64 + ns * 11;
    break;
  case 1068:
    ns = getbitu(msg, i + 58, 6);
    n = 64 + ns * 27;
    break;
  case 1240:
    ns = getbitu(msg, i + 62, 6);
    n = 68 + ns * 135;
    break;
  case 1241:
    ns = getbitu(msg, i + 61, 6);
    n = 67 + ns * 76;
    break;
  case 1242:
    ns = getbitu(msg, i + 61, 6);
    n = 67;
    for (j = 0; j < ns; j++)
      n += 11 + getbitu(msg, i + n + 6, 5) * 19;
    break;
  case 1243:
    ns = getbitu(msg, i + 62, 6);
    n = 68 + ns * 205;
    break;
  case 1244:
    ns = getbitu(msg, i + 61, 6);
    n = 67 + ns * 12;
    break;
  case 1245:
    ns = getbitu(msg, i + 61, 6);
    n = 67 + ns * 28;
    break;
  case 1246:
    ns = getbitu(msg, i + 62, 4);
    n = 66 + ns * 133;
    break;
  case 1247:
    ns = getbitu(msg, i + 61, 4);
    n = 65 + ns * 74;
    break;
  case 1248:
    ns = getbitu(msg, i + 61, 4);
    n = 65;
    for (j = 0; j < ns; j++)
      n += 9 + getbitu(msg, i + n + 4, 5) * 19;
    break;
  case 1249:
    ns = getbitu(msg, i + 62, 4);
    n = 66 + ns * 203;
    break;
  case 1250:
    ns = getbitu(msg, i + 61, 4);
    n = 65 + ns * 10;
    break;
  case 1251:
    ns = getbitu(msg, i + 61, 4);
    n = 65 + ns * 26;
    break;
  default:
    if (type)
      trace(2, "lex 12: unsupported type=%4d\n", type);
    return 0;
  }
  n = (n + 7) / 8;
  if (i + n * 8 > 2000 - 256) {
    trace(2, "lex 12: invalid ssr size: len=%4d\n", n);
    return 0;
  }
  setbitu(buff, 0, 8, 0xD3);
  setbitu(buff, 8, 6, 0);
  setbitu(buff, 14, 10, n);
  for (j = 0; j < n; j++) {
    buff[j + 3] = getbitu(msg, i + j * 8, 8);
  }
  crc = crc24q(buff, 3 + n);
  setbitu(buff, 24 + n * 8, 24, crc);
  return n;
}


x86 assembly (clang, -O0):
<lex2rtcm>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %rdx,-0x20(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x14(%rbp),%eax
add    $0xc,%eax
cmp    $0x69f,%eax
jl     1177 <lex2rtcm+0x37>
movl   $0x0,-0x4(%rbp)
jmp    1790 <lex2rtcm+0x650>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    $0xc,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x30(%rbp)
add    $0xfffffbdf,%eax
mov    %eax,%ecx
mov    %rcx,-0x40(%rbp)
sub    $0xc2,%eax
ja     1661 <lex2rtcm+0x521>
mov    -0x40(%rbp),%rax
lea    0xe54(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3e,%esi
mov    $0x6,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0x87,-0x2c(%rbp),%eax
add    $0x44,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3d,%esi
mov    $0x6,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0x4c,-0x2c(%rbp),%eax
add    $0x43,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3d,%esi
mov    $0x6,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
movl   $0x43,-0x34(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jge    1266 <lex2rtcm+0x126>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    -0x34(%rbp),%esi
add    $0x6,%esi
mov    $0x5,%edx
call   1050 <getbitu@plt>
imul   $0x13,%eax,%eax
add    $0xb,%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1229 <lex2rtcm+0xe9>
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3e,%esi
mov    $0x6,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0xcd,-0x2c(%rbp),%eax
add    $0x44,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3d,%esi
mov    $0x6,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0xc,-0x2c(%rbp),%eax
add    $0x43,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3d,%esi
mov    $0x6,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0x1c,-0x2c(%rbp),%eax
add    $0x43,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3b,%esi
mov    $0x6,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0x86,-0x2c(%rbp),%eax
add    $0x41,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3a,%esi
mov    $0x6,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0x4b,-0x2c(%rbp),%eax
add    $0x40,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3a,%esi
mov    $0x6,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
movl   $0x40,-0x34(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jge    1391 <lex2rtcm+0x251>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    -0x34(%rbp),%esi
add    $0x5,%esi
mov    $0x5,%edx
call   1050 <getbitu@plt>
imul   $0x13,%eax,%eax
add    $0xa,%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1354 <lex2rtcm+0x214>
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3b,%esi
mov    $0x6,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0xcc,-0x2c(%rbp),%eax
add    $0x41,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3a,%esi
mov    $0x6,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0xb,-0x2c(%rbp),%eax
add    $0x40,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3a,%esi
mov    $0x6,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0x1b,-0x2c(%rbp),%eax
add    $0x40,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3e,%esi
mov    $0x6,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0x87,-0x2c(%rbp),%eax
add    $0x44,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3d,%esi
mov    $0x6,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0x4c,-0x2c(%rbp),%eax
add    $0x43,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3d,%esi
mov    $0x6,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
movl   $0x43,-0x34(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jge    14bc <lex2rtcm+0x37c>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    -0x34(%rbp),%esi
add    $0x6,%esi
mov    $0x5,%edx
call   1050 <getbitu@plt>
imul   $0x13,%eax,%eax
add    $0xb,%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    147f <lex2rtcm+0x33f>
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3e,%esi
mov    $0x6,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0xcd,-0x2c(%rbp),%eax
add    $0x44,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3d,%esi
mov    $0x6,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0xc,-0x2c(%rbp),%eax
add    $0x43,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3d,%esi
mov    $0x6,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0x1c,-0x2c(%rbp),%eax
add    $0x43,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3e,%esi
mov    $0x4,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0x85,-0x2c(%rbp),%eax
add    $0x42,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3d,%esi
mov    $0x4,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0x4a,-0x2c(%rbp),%eax
add    $0x41,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3d,%esi
mov    $0x4,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
movl   $0x41,-0x34(%rbp)
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jge    15e7 <lex2rtcm+0x4a7>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    -0x34(%rbp),%esi
add    $0x4,%esi
mov    $0x5,%edx
call   1050 <getbitu@plt>
imul   $0x13,%eax,%eax
add    $0x9,%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    15aa <lex2rtcm+0x46a>
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3e,%esi
mov    $0x4,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0xcb,-0x2c(%rbp),%eax
add    $0x42,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3d,%esi
mov    $0x4,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0xa,-0x2c(%rbp),%eax
add    $0x41,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
add    $0x3d,%esi
mov    $0x4,%edx
call   1050 <getbitu@plt>
mov    %eax,-0x2c(%rbp)
imul   $0x1a,-0x2c(%rbp),%eax
add    $0x41,%eax
mov    %eax,-0x34(%rbp)
jmp    168b <lex2rtcm+0x54b>
cmpl   $0x0,-0x30(%rbp)
je     167f <lex2rtcm+0x53f>
mov    -0x30(%rbp),%edx
mov    $0x2,%edi
lea    0xc92(%rip),%rsi
call   1060 <trace@plt>
movl   $0x0,-0x4(%rbp)
jmp    1790 <lex2rtcm+0x650>
mov    -0x34(%rbp),%eax
add    $0x7,%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
mov    %eax,-0x34(%rbp)
mov    -0x14(%rbp),%eax
mov    -0x34(%rbp),%ecx
shl    $0x3,%ecx
add    %ecx,%eax
cmp    $0x6d0,%eax
jle    16d2 <lex2rtcm+0x592>
mov    -0x34(%rbp),%edx
mov    $0x2,%edi
lea    0xc69(%rip),%rsi
call   1060 <trace@plt>
movl   $0x0,-0x4(%rbp)
jmp    1790 <lex2rtcm+0x650>
mov    -0x20(%rbp),%rdi
xor    %esi,%esi
mov    $0x8,%edx
mov    $0xd3,%ecx
call   1040 <setbitu@plt>
mov    -0x20(%rbp),%rdi
mov    $0x8,%esi
mov    $0x6,%edx
xor    %ecx,%ecx
call   1040 <setbitu@plt>
mov    -0x20(%rbp),%rdi
mov    -0x34(%rbp),%ecx
mov    $0xe,%esi
mov    $0xa,%edx
call   1040 <setbitu@plt>
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
cmp    -0x34(%rbp),%eax
jge    175e <lex2rtcm+0x61e>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x28(%rbp),%eax
shl    $0x3,%eax
add    %eax,%esi
mov    $0x8,%edx
call   1050 <getbitu@plt>
mov    %al,%dl
mov    -0x20(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1719 <lex2rtcm+0x5d9>
mov    -0x20(%rbp),%rdi
mov    -0x34(%rbp),%esi
add    $0x3,%esi
call   1030 <crc24q@plt>
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%rdi
mov    -0x34(%rbp),%esi
shl    $0x3,%esi
add    $0x18,%esi
mov    -0x24(%rbp),%ecx
mov    $0x18,%edx
call   1040 <setbitu@plt>
mov    -0x34(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<lex2rtcm>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
xor    %ebp,%ebp
cmp    $0x692,%esi
jg     1507 <lex2rtcm+0x3c7>
mov    %rdx,%r14
mov    %esi,%ebx
mov    %rdi,%r15
mov    $0xc,%edx
call   1050 <getbitu@plt>
lea    -0x421(%rax),%ecx
cmp    $0xc2,%ecx
ja     11dd <lex2rtcm+0x9d>
mov    $0x44,%r12d
mov    $0x87,%r13d
mov    $0x6,%edx
mov    $0x3e,%esi
lea    0xe6a(%rip),%rdi
movslq (%rdi,%rcx,4),%rcx
add    %rdi,%rcx
jmp    *%rcx
mov    $0x43,%r12d
mov    $0x4c,%r13d
jmp    1407 <lex2rtcm+0x2c7>
mov    $0xcd,%r13d
jmp    140c <lex2rtcm+0x2cc>
mov    $0x43,%r12d
mov    $0xc,%r13d
jmp    1407 <lex2rtcm+0x2c7>
mov    $0x43,%r12d
mov    $0x1c,%r13d
jmp    1407 <lex2rtcm+0x2c7>
test   %eax,%eax
jne    11e8 <lex2rtcm+0xa8>
mov    %eax,%ebp
jmp    1507 <lex2rtcm+0x3c7>
lea    0x111d(%rip),%rsi
mov    $0x2,%edi
mov    %eax,%edx
call   1060 <trace@plt>
jmp    1507 <lex2rtcm+0x3c7>
lea    0x3d(%rbx),%esi
mov    %r15,%rdi
mov    $0x6,%edx
call   1050 <getbitu@plt>
test   %eax,%eax
jle    1518 <lex2rtcm+0x3d8>
mov    %eax,%r12d
lea    0x6(%rbx),%r13d
mov    $0x43,%ebp
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    0x0(%r13,%rbp,1),%esi
mov    %r15,%rdi
mov    $0x5,%edx
call   1050 <getbitu@plt>
lea    (%rax,%rax,8),%ecx
lea    (%rax,%rcx,2),%eax
add    %eax,%ebp
add    $0xb,%ebp
add    $0xffffffff,%r12d
jne    1230 <lex2rtcm+0xf0>
jmp    141f <lex2rtcm+0x2df>
mov    $0x41,%r12d
mov    $0x86,%r13d
mov    $0x3b,%esi
jmp    140c <lex2rtcm+0x2cc>
mov    $0x40,%r12d
mov    $0x4b,%r13d
mov    $0x3a,%esi
jmp    140c <lex2rtcm+0x2cc>
lea    0x3a(%rbx),%esi
mov    %r15,%rdi
mov    $0x6,%edx
call   1050 <getbitu@plt>
test   %eax,%eax
jle    1522 <lex2rtcm+0x3e2>
mov    %eax,%r12d
lea    0x5(%rbx),%r13d
mov    $0x40,%ebp
nopl   0x0(%rax,%rax,1)
lea    0x0(%r13,%rbp,1),%esi
mov    %r15,%rdi
mov    $0x5,%edx
call   1050 <getbitu@plt>
lea    (%rax,%rax,8),%ecx
lea    (%rax,%rcx,2),%eax
add    %eax,%ebp
add    $0xa,%ebp
add    $0xffffffff,%r12d
jne    12b0 <lex2rtcm+0x170>
jmp    141f <lex2rtcm+0x2df>
mov    $0x41,%r12d
mov    $0xcc,%r13d
mov    $0x3b,%esi
jmp    140c <lex2rtcm+0x2cc>
mov    $0x40,%r12d
mov    $0xb,%r13d
mov    $0x3a,%esi
jmp    140c <lex2rtcm+0x2cc>
mov    $0x40,%r12d
mov    $0x1b,%r13d
mov    $0x3a,%esi
jmp    140c <lex2rtcm+0x2cc>
lea    0x3d(%rbx),%esi
mov    %r15,%rdi
mov    $0x6,%edx
call   1050 <getbitu@plt>
test   %eax,%eax
jle    1518 <lex2rtcm+0x3d8>
mov    %eax,%r12d
lea    0x6(%rbx),%r13d
mov    $0x43,%ebp
xchg   %ax,%ax
lea    0x0(%r13,%rbp,1),%esi
mov    %r15,%rdi
mov    $0x5,%edx
call   1050 <getbitu@plt>
lea    (%rax,%rax,8),%ecx
lea    (%rax,%rcx,2),%eax
add    %eax,%ebp
add    $0xb,%ebp
add    $0xffffffff,%r12d
jne    1340 <lex2rtcm+0x200>
jmp    141f <lex2rtcm+0x2df>
mov    $0x42,%r12d
mov    $0x85,%r13d
mov    $0x4,%edx
jmp    140c <lex2rtcm+0x2cc>
mov    $0x41,%r12d
mov    $0x4a,%r13d
jmp    1402 <lex2rtcm+0x2c2>
lea    0x3d(%rbx),%esi
mov    %r15,%rdi
mov    $0x4,%edx
call   1050 <getbitu@plt>
test   %eax,%eax
jle    152c <lex2rtcm+0x3ec>
mov    %eax,%r12d
lea    0x4(%rbx),%r13d
mov    $0x41,%ebp
lea    0x0(%r13,%rbp,1),%esi
mov    %r15,%rdi
mov    $0x5,%edx
call   1050 <getbitu@plt>
lea    (%rax,%rax,8),%ecx
lea    (%rax,%rcx,2),%eax
add    %eax,%ebp
add    $0x9,%ebp
add    $0xffffffff,%r12d
jne    13b0 <lex2rtcm+0x270>
jmp    141f <lex2rtcm+0x2df>
mov    $0x42,%r12d
mov    $0xcb,%r13d
mov    $0x4,%edx
jmp    140c <lex2rtcm+0x2cc>
mov    $0x41,%r12d
mov    $0xa,%r13d
jmp    1402 <lex2rtcm+0x2c2>
mov    $0x41,%r12d
mov    $0x1a,%r13d
mov    $0x4,%edx
mov    $0x3d,%esi
add    %ebx,%esi
mov    %r15,%rdi
call   1050 <getbitu@plt>
mov    %eax,%ebp
imul   %r13d,%ebp
add    %r12d,%ebp
lea    0x7(%rbp),%eax
lea    0xe(%rbp),%r13d
test   %eax,%eax
cmovns %eax,%r13d
mov    %r13d,%r12d
sar    $0x3,%r12d
and    $0xfffffff8,%r13d
lea    (%rbx,%r13,1),%eax
cmp    $0x6d1,%eax
jl     145d <lex2rtcm+0x31d>
lea    0xee1(%rip),%rsi
mov    $0x2,%edi
mov    %r12d,%edx
call   1060 <trace@plt>
xor    %ebp,%ebp
jmp    1507 <lex2rtcm+0x3c7>
mov    %r14,%rdi
xor    %esi,%esi
mov    $0x8,%edx
mov    $0xd3,%ecx
call   1040 <setbitu@plt>
mov    %r14,%rdi
mov    $0x8,%esi
mov    $0x6,%edx
xor    %ecx,%ecx
call   1040 <setbitu@plt>
mov    %r14,%rdi
mov    $0xe,%esi
mov    $0xa,%edx
mov    %r12,(%rsp)
mov    %r12d,%ecx
call   1040 <setbitu@plt>
test   %ebp,%ebp
mov    %r14,%r12
jle    14e0 <lex2rtcm+0x3a0>
mov    (%rsp),%rax
cmp    $0x2,%eax
mov    $0x1,%ebp
cmovge %eax,%ebp
xor    %r14d,%r14d
nopw   0x0(%rax,%rax,1)
mov    %r15,%rdi
mov    %ebx,%esi
mov    $0x8,%edx
call   1050 <getbitu@plt>
mov    %al,0x3(%r12,%r14,1)
add    $0x1,%r14
add    $0x8,%ebx
cmp    %r14,%rbp
jne    14c0 <lex2rtcm+0x380>
mov    (%rsp),%rbx
lea    0x3(%rbx),%esi
mov    %r12,%rdi
call   1030 <crc24q@plt>
add    $0x18,%r13d
mov    %r12,%rdi
mov    %r13d,%esi
mov    $0x18,%edx
mov    %eax,%ecx
call   1040 <setbitu@plt>
mov    %ebx,%ebp
mov    %ebp,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    $0x43,%ebp
jmp    141f <lex2rtcm+0x2df>
mov    $0x40,%ebp
jmp    141f <lex2rtcm+0x2df>
mov    $0x41,%ebp
jmp    141f <lex2rtcm+0x2df>

LLVM IR (-O0):
@.str = [30 x i8] c"lex 12: unsupported type=%4d\0A\00"
@.str.1 = [35 x i8] c"lex 12: invalid ssr size: len=%4d\0A\00"
define i32 @lex2rtcm(i8* %0, i32 %1, i8* %2) {
%4 = alloca i32
%5 = alloca i8*
%6 = alloca i32
%7 = alloca i8*
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
store i8* %0, i8** %5
store i32 %1, i32* %6
store i8* %2, i8** %7
store i32 0, i32* %12
%13 = load i32, i32* %6
%14 = add nsw i32 %13, 12
%15 = icmp sge i32 %14, 1695
br i1 %15, label %16, label %17
16: ; preds = %3
store i32 0, i32* %4
br label %336
17: ; preds = %3
%18 = load i8*, i8** %5
%19 = load i32, i32* %6
%20 = call i32 @getbitu(i8* %18, i32 %19, i32 12)
store i32 %20, i32* %11
switch i32 %20, label %277 [
i32 1057, label %21
i32 1058, label %29
i32 1059, label %37
i32 1060, label %61
i32 1061, label %69
i32 1062, label %77
i32 1063, label %85
i32 1064, label %93
i32 1065, label %101
i32 1066, label %125
i32 1067, label %133
i32 1068, label %141
i32 1240, label %149
i32 1241, label %157
i32 1242, label %165
i32 1243, label %189
i32 1244, label %197
i32 1245, label %205
i32 1246, label %213
i32 1247, label %221
i32 1248, label %229
i32 1249, label %253
i32 1250, label %261
i32 1251, label %269
]
21: ; preds = %17
%22 = load i8*, i8** %5
%23 = load i32, i32* %6
%24 = add nsw i32 %23, 62
%25 = call i32 @getbitu(i8* %22, i32 %24, i32 6)
store i32 %25, i32* %10
%26 = load i32, i32* %10
%27 = mul nsw i32 %26, 135
%28 = add nsw i32 68, %27
store i32 %28, i32* %12
br label %284
29: ; preds = %17
%30 = load i8*, i8** %5
%31 = load i32, i32* %6
%32 = add nsw i32 %31, 61
%33 = call i32 @getbitu(i8* %30, i32 %32, i32 6)
store i32 %33, i32* %10
%34 = load i32, i32* %10
%35 = mul nsw i32 %34, 76
%36 = add nsw i32 67, %35
store i32 %36, i32* %12
br label %284
37: ; preds = %17
%38 = load i8*, i8** %5
%39 = load i32, i32* %6
%40 = add nsw i32 %39, 61
%41 = call i32 @getbitu(i8* %38, i32 %40, i32 6)
store i32 %41, i32* %10
store i32 67, i32* %12
store i32 0, i32* %9
br label %42
42: ; preds = %57, %37
%43 = load i32, i32* %9
%44 = load i32, i32* %10
%45 = icmp slt i32 %43, %44
br i1 %45, label %46, label %60
46: ; preds = %42
%47 = load i8*, i8** %5
%48 = load i32, i32* %6
%49 = load i32, i32* %12
%50 = add nsw i32 %48, %49
%51 = add nsw i32 %50, 6
%52 = call i32 @getbitu(i8* %47, i32 %51, i32 5)
%53 = mul nsw i32 %52, 19
%54 = add nsw i32 11, %53
%55 = load i32, i32* %12
%56 = add nsw i32 %55, %54
store i32 %56, i32* %12
br label %57
57: ; preds = %46
%58 = load i32, i32* %9
%59 = add nsw i32 %58, 1
store i32 %59, i32* %9
br label %42
60: ; preds = %42
br label %284
61: ; preds = %17
%62 = load i8*, i8** %5
%63 = load i32, i32* %6
%64 = add nsw i32 %63, 62
%65 = call i32 @getbitu(i8* %62, i32 %64, i32 6)
store i32 %65, i32* %10
%66 = load i32, i32* %10
%67 = mul nsw i32 %66, 205
%68 = add nsw i32 68, %67
store i32 %68, i32* %12
br label %284
69: ; preds = %17
%70 = load i8*, i8** %5
%71 = load i32, i32* %6
%72 = add nsw i32 %71, 61
%73 = call i32 @getbitu(i8* %70, i32 %72, i32 6)
store i32 %73, i32* %10
%74 = load i32, i32* %10
%75 = mul nsw i32 %74, 12
%76 = add nsw i32 67, %75
store i32 %76, i32* %12
br label %284
77: ; preds = %17
%78 = load i8*, i8** %5
%79 = load i32, i32* %6
%80 = add nsw i32 %79, 61
%81 = call i32 @getbitu(i8* %78, i32 %80, i32 6)
store i32 %81, i32* %10
%82 = load i32, i32* %10
%83 = mul nsw i32 %82, 28
%84 = add nsw i32 67, %83
store i32 %84, i32* %12
br label %284
85: ; preds = %17
%86 = load i8*, i8** %5
%87 = load i32, i32* %6
%88 = add nsw i32 %87, 59
%89 = call i32 @getbitu(i8* %86, i32 %88, i32 6)
store i32 %89, i32* %10
%90 = load i32, i32* %10
%91 = mul nsw i32 %90, 134
%92 = add nsw i32 65, %91
store i32 %92, i32* %12
br label %284
93: ; preds = %17
%94 = load i8*, i8** %5
%95 = load i32, i32* %6
%96 = add nsw i32 %95, 58
%97 = call i32 @getbitu(i8* %94, i32 %96, i32 6)
store i32 %97, i32* %10
%98 = load i32, i32* %10
%99 = mul nsw i32 %98, 75
%100 = add nsw i32 64, %99
store i32 %100, i32* %12
br label %284
101: ; preds = %17
%102 = load i8*, i8** %5
%103 = load i32, i32* %6
%104 = add nsw i32 %103, 58
%105 = call i32 @getbitu(i8* %102, i32 %104, i32 6)
store i32 %105, i32* %10
store i32 64, i32* %12
store i32 0, i32* %9
br label %106
106: ; preds = %121, %101
%107 = load i32, i32* %9
%108 = load i32, i32* %10
%109 = icmp slt i32 %107, %108
br i1 %109, label %110, label %124
110: ; preds = %106
%111 = load i8*, i8** %5
%112 = load i32, i32* %6
%113 = load i32, i32* %12
%114 = add nsw i32 %112, %113
%115 = add nsw i32 %114, 5
%116 = call i32 @getbitu(i8* %111, i32 %115, i32 5)
%117 = mul nsw i32 %116, 19
%118 = add nsw i32 10, %117
%119 = load i32, i32* %12
%120 = add nsw i32 %119, %118
store i32 %120, i32* %12
br label %121
121: ; preds = %110
%122 = load i32, i32* %9
%123 = add nsw i32 %122, 1
store i32 %123, i32* %9
br label %106
124: ; preds = %106
br label %284
125: ; preds = %17
%126 = load i8*, i8** %5
%127 = load i32, i32* %6
%128 = add nsw i32 %127, 59
%129 = call i32 @getbitu(i8* %126, i32 %128, i32 6)
store i32 %129, i32* %10
%130 = load i32, i32* %10
%131 = mul nsw i32 %130, 204
%132 = add nsw i32 65, %131
store i32 %132, i32* %12
br label %284
133: ; preds = %17
%134 = load i8*, i8** %5
%135 = load i32, i32* %6
%136 = add nsw i32 %135, 58
%137 = call i32 @getbitu(i8* %134, i32 %136, i32 6)
store i32 %137, i32* %10
%138 = load i32, i32* %10
%139 = mul nsw i32 %138, 11
%140 = add nsw i32 64, %139
store i32 %140, i32* %12
br label %284
141: ; preds = %17
%142 = load i8*, i8** %5
%143 = load i32, i32* %6
%144 = add nsw i32 %143, 58
%145 = call i32 @getbitu(i8* %142, i32 %144, i32 6)
store i32 %145, i32* %10
%146 = load i32, i32* %10
%147 = mul nsw i32 %146, 27
%148 = add nsw i32 64, %147
store i32 %148, i32* %12
br label %284
149: ; preds = %17
%150 = load i8*, i8** %5
%151 = load i32, i32* %6
%152 = add nsw i32 %151, 62
%153 = call i32 @getbitu(i8* %150, i32 %152, i32 6)
store i32 %153, i32* %10
%154 = load i32, i32* %10
%155 = mul nsw i32 %154, 135
%156 = add nsw i32 68, %155
store i32 %156, i32* %12
br label %284
157: ; preds = %17
%158 = load i8*, i8** %5
%159 = load i32, i32* %6
%160 = add nsw i32 %159, 61
%161 = call i32 @getbitu(i8* %158, i32 %160, i32 6)
store i32 %161, i32* %10
%162 = load i32, i32* %10
%163 = mul nsw i32 %162, 76
%164 = add nsw i32 67, %163
store i32 %164, i32* %12
br label %284
165: ; preds = %17
%166 = load i8*, i8** %5
%167 = load i32, i32* %6
%168 = add nsw i32 %167, 61
%169 = call i32 @getbitu(i8* %166, i32 %168, i32 6)
store i32 %169, i32* %10
store i32 67, i32* %12
store i32 0, i32* %9
br label %170
170: ; preds = %185, %165
%171 = load i32, i32* %9
%172 = load i32, i32* %10
%173 = icmp slt i32 %171, %172
br i1 %173, label %174, label %188
174: ; preds = %170
%175 = load i8*, i8** %5
%176 = load i32, i32* %6
%177 = load i32, i32* %12
%178 = add nsw i32 %176, %177
%179 = add nsw i32 %178, 6
%180 = call i32 @getbitu(i8* %175, i32 %179, i32 5)
%181 = mul nsw i32 %180, 19
%182 = add nsw i32 11, %181
%183 = load i32, i32* %12
%184 = add nsw i32 %183, %182
store i32 %184, i32* %12
br label %185
185: ; preds = %174
%186 = load i32, i32* %9
%187 = add nsw i32 %186, 1
store i32 %187, i32* %9
br label %170
188: ; preds = %170
br label %284
189: ; preds = %17
%190 = load i8*, i8** %5
%191 = load i32, i32* %6
%192 = add nsw i32 %191, 62
%193 = call i32 @getbitu(i8* %190, i32 %192, i32 6)
store i32 %193, i32* %10
%194 = load i32, i32* %10
%195 = mul nsw i32 %194, 205
%196 = add nsw i32 68, %195
store i32 %196, i32* %12
br label %284
197: ; preds = %17
%198 = load i8*, i8** %5
%199 = load i32, i32* %6
%200 = add nsw i32 %199, 61
%201 = call i32 @getbitu(i8* %198, i32 %200, i32 6)
store i32 %201, i32* %10
%202 = load i32, i32* %10
%203 = mul nsw i32 %202, 12
%204 = add nsw i32 67, %203
store i32 %204, i32* %12
br label %284
205: ; preds = %17
%206 = load i8*, i8** %5
%207 = load i32, i32* %6
%208 = add nsw i32 %207, 61
%209 = call i32 @getbitu(i8* %206, i32 %208, i32 6)
store i32 %209, i32* %10
%210 = load i32, i32* %10
%211 = mul nsw i32 %210, 28
%212 = add nsw i32 67, %211
store i32 %212, i32* %12
br label %284
213: ; preds = %17
%214 = load i8*, i8** %5
%215 = load i32, i32* %6
%216 = add nsw i32 %215, 62
%217 = call i32 @getbitu(i8* %214, i32 %216, i32 4)
store i32 %217, i32* %10
%218 = load i32, i32* %10
%219 = mul nsw i32 %218, 133
%220 = add nsw i32 66, %219
store i32 %220, i32* %12
br label %284
221: ; preds = %17
%222 = load i8*, i8** %5
%223 = load i32, i32* %6
%224 = add nsw i32 %223, 61
%225 = call i32 @getbitu(i8* %222, i32 %224, i32 4)
store i32 %225, i32* %10
%226 = load i32, i32* %10
%227 = mul nsw i32 %226, 74
%228 = add nsw i32 65, %227
store i32 %228, i32* %12
br label %284
229: ; preds = %17
%230 = load i8*, i8** %5
%231 = load i32, i32* %6
%232 = add nsw i32 %231, 61
%233 = call i32 @getbitu(i8* %230, i32 %232, i32 4)
store i32 %233, i32* %10
store i32 65, i32* %12
store i32 0, i32* %9
br label %234
234: ; preds = %249, %229
%235 = load i32, i32* %9
%236 = load i32, i32* %10
%237 = icmp slt i32 %235, %236
br i1 %237, label %238, label %252
238: ; preds = %234
%239 = load i8*, i8** %5
%240 = load i32, i32* %6
%241 = load i32, i32* %12
%242 = add nsw i32 %240, %241
%243 = add nsw i32 %242, 4
%244 = call i32 @getbitu(i8* %239, i32 %243, i32 5)
%245 = mul nsw i32 %244, 19
%246 = add nsw i32 9, %245
%247 = load i32, i32* %12
%248 = add nsw i32 %247, %246
store i32 %248, i32* %12
br label %249
249: ; preds = %238
%250 = load i32, i32* %9
%251 = add nsw i32 %250, 1
store i32 %251, i32* %9
br label %234
252: ; preds = %234
br label %284
253: ; preds = %17
%254 = load i8*, i8** %5
%255 = load i32, i32* %6
%256 = add nsw i32 %255, 62
%257 = call i32 @getbitu(i8* %254, i32 %256, i32 4)
store i32 %257, i32* %10
%258 = load i32, i32* %10
%259 = mul nsw i32 %258, 203
%260 = add nsw i32 66, %259
store i32 %260, i32* %12
br label %284
261: ; preds = %17
%262 = load i8*, i8** %5
%263 = load i32, i32* %6
%264 = add nsw i32 %263, 61
%265 = call i32 @getbitu(i8* %262, i32 %264, i32 4)
store i32 %265, i32* %10
%266 = load i32, i32* %10
%267 = mul nsw i32 %266, 10
%268 = add nsw i32 65, %267
store i32 %268, i32* %12
br label %284
269: ; preds = %17
%270 = load i8*, i8** %5
%271 = load i32, i32* %6
%272 = add nsw i32 %271, 61
%273 = call i32 @getbitu(i8* %270, i32 %272, i32 4)
store i32 %273, i32* %10
%274 = load i32, i32* %10
%275 = mul nsw i32 %274, 26
%276 = add nsw i32 65, %275
store i32 %276, i32* %12
br label %284
277: ; preds = %17
%278 = load i32, i32* %11
%279 = icmp ne i32 %278, 0
br i1 %279, label %280, label %283
280: ; preds = %277
%281 = load i32, i32* %11
%282 = call i32 @trace(i32 2, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str, i64 0, i64 0), i32 %281)
br label %283
283: ; preds = %280, %277
store i32 0, i32* %4
br label %336
284: ; preds = %269, %261, %253, %252, %221, %213, %205, %197, %189, %188, %157, %149, %141, %133, %125, %124, %93, %85, %77, %69, %61, %60, %29, %21
%285 = load i32, i32* %12
%286 = add nsw i32 %285, 7
%287 = sdiv i32 %286, 8
store i32 %287, i32* %12
%288 = load i32, i32* %6
%289 = load i32, i32* %12
%290 = mul nsw i32 %289, 8
%291 = add nsw i32 %288, %290
%292 = icmp sgt i32 %291, 1744
br i1 %292, label %293, label %296
293: ; preds = %284
%294 = load i32, i32* %12
%295 = call i32 @trace(i32 2, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.1, i64 0, i64 0), i32 %294)
store i32 0, i32* %4
br label %336
296: ; preds = %284
%297 = load i8*, i8** %7
%298 = call i32 @setbitu(i8* %297, i32 0, i32 8, i32 211)
%299 = load i8*, i8** %7
%300 = call i32 @setbitu(i8* %299, i32 8, i32 6, i32 0)
%301 = load i8*, i8** %7
%302 = load i32, i32* %12
%303 = call i32 @setbitu(i8* %301, i32 14, i32 10, i32 %302)
store i32 0, i32* %9
br label %304
304: ; preds = %321, %296
%305 = load i32, i32* %9
%306 = load i32, i32* %12
%307 = icmp slt i32 %305, %306
br i1 %307, label %308, label %324
308: ; preds = %304
%309 = load i8*, i8** %5
%310 = load i32, i32* %6
%311 = load i32, i32* %9
%312 = mul nsw i32 %311, 8
%313 = add nsw i32 %310, %312
%314 = call i32 @getbitu(i8* %309, i32 %313, i32 8)
%315 = trunc i32 %314 to i8
%316 = load i8*, i8** %7
%317 = load i32, i32* %9
%318 = add nsw i32 %317, 3
%319 = sext i32 %318 to i64
%320 = getelementptr inbounds i8, i8* %316, i64 %319
store i8 %315, i8* %320
br label %321
321: ; preds = %308
%322 = load i32, i32* %9
%323 = add nsw i32 %322, 1
store i32 %323, i32* %9
br label %304
324: ; preds = %304
%325 = load i8*, i8** %7
%326 = load i32, i32* %12
%327 = add nsw i32 3, %326
%328 = call i32 @crc24q(i8* %325, i32 %327)
store i32 %328, i32* %8
%329 = load i8*, i8** %7
%330 = load i32, i32* %12
%331 = mul nsw i32 %330, 8
%332 = add nsw i32 24, %331
%333 = load i32, i32* %8
%334 = call i32 @setbitu(i8* %329, i32 %332, i32 24, i32 %333)
%335 = load i32, i32* %12
store i32 %335, i32* %4
br label %336
336: ; preds = %324, %293, %283, %16
%337 = load i32, i32* %4
ret i32 %337
}

LLVM IR (-O2):
@.str = [30 x i8] c"lex 12: unsupported type=%4d\0A\00"
@.str.1 = [35 x i8] c"lex 12: invalid ssr size: len=%4d\0A\00"
define i32 @lex2rtcm(i8* %0, i32 %1, i8* %2) {
%4 = icmp sgt i32 %1, 1682
br i1 %4, label %133, label %5
5: ; preds = %3
%6 = tail call i32 @getbitu(i8* %0, i32 %1, i32 12)
switch i32 %6, label %89 [
i32 1057, label %91
i32 1058, label %7
i32 1059, label %8
i32 1060, label %24
i32 1061, label %25
i32 1062, label %26
i32 1063, label %27
i32 1064, label %28
i32 1065, label %29
i32 1066, label %45
i32 1067, label %46
i32 1068, label %47
i32 1240, label %91
i32 1241, label %48
i32 1242, label %49
i32 1243, label %65
i32 1244, label %66
i32 1245, label %67
i32 1246, label %68
i32 1247, label %69
i32 1248, label %70
i32 1249, label %86
i32 1250, label %87
i32 1251, label %88
i32 0, label %133
]
7: ; preds = %5
br label %91
8: ; preds = %5
%9 = add nsw i32 %1, 61
%10 = tail call i32 @getbitu(i8* %0, i32 %9, i32 6)
%11 = icmp sgt i32 %10, 0
br i1 %11, label %12, label %100
12: ; preds = %8
%13 = add nsw i32 %1, 6
br label %14
14: ; preds = %12, %14
%15 = phi i32 [ 67, %12 ], [ %21, %14 ]
%16 = phi i32 [ 0, %12 ], [ %22, %14 ]
%17 = add i32 %13, %15
%18 = tail call i32 @getbitu(i8* %0, i32 %17, i32 5)
%19 = mul nsw i32 %18, 19
%20 = add i32 %15, 11
%21 = add i32 %20, %19
%22 = add nuw nsw i32 %16, 1
%23 = icmp eq i32 %22, %10
br i1 %23, label %100, label %14
24: ; preds = %5
br label %91
25: ; preds = %5
br label %91
26: ; preds = %5
br label %91
27: ; preds = %5
br label %91
28: ; preds = %5
br label %91
29: ; preds = %5
%30 = add nsw i32 %1, 58
%31 = tail call i32 @getbitu(i8* %0, i32 %30, i32 6)
%32 = icmp sgt i32 %31, 0
br i1 %32, label %33, label %100
33: ; preds = %29
%34 = add nsw i32 %1, 5
br label %35
35: ; preds = %33, %35
%36 = phi i32 [ 64, %33 ], [ %42, %35 ]
%37 = phi i32 [ 0, %33 ], [ %43, %35 ]
%38 = add i32 %34, %36
%39 = tail call i32 @getbitu(i8* %0, i32 %38, i32 5)
%40 = mul nsw i32 %39, 19
%41 = add i32 %36, 10
%42 = add i32 %41, %40
%43 = add nuw nsw i32 %37, 1
%44 = icmp eq i32 %43, %31
br i1 %44, label %100, label %35
45: ; preds = %5
br label %91
46: ; preds = %5
br label %91
47: ; preds = %5
br label %91
48: ; preds = %5
br label %91
49: ; preds = %5
%50 = add nsw i32 %1, 61
%51 = tail call i32 @getbitu(i8* %0, i32 %50, i32 6)
%52 = icmp sgt i32 %51, 0
br i1 %52, label %53, label %100
53: ; preds = %49
%54 = add nsw i32 %1, 6
br label %55
55: ; preds = %53, %55
%56 = phi i32 [ 67, %53 ], [ %62, %55 ]
%57 = phi i32 [ 0, %53 ], [ %63, %55 ]
%58 = add i32 %54, %56
%59 = tail call i32 @getbitu(i8* %0, i32 %58, i32 5)
%60 = mul nsw i32 %59, 19
%61 = add i32 %56, 11
%62 = add i32 %61, %60
%63 = add nuw nsw i32 %57, 1
%64 = icmp eq i32 %63, %51
br i1 %64, label %100, label %55
65: ; preds = %5
br label %91
66: ; preds = %5
br label %91
67: ; preds = %5
br label %91
68: ; preds = %5
br label %91
69: ; preds = %5
br label %91
70: ; preds = %5
%71 = add nsw i32 %1, 61
%72 = tail call i32 @getbitu(i8* %0, i32 %71, i32 4)
%73 = icmp sgt i32 %72, 0
br i1 %73, label %74, label %100
74: ; preds = %70
%75 = add nsw i32 %1, 4
br label %76
76: ; preds = %74, %76
%77 = phi i32 [ 65, %74 ], [ %83, %76 ]
%78 = phi i32 [ 0, %74 ], [ %84, %76 ]
%79 = add i32 %75, %77
%80 = tail call i32 @getbitu(i8* %0, i32 %79, i32 5)
%81 = mul nsw i32 %80, 19
%82 = add i32 %77, 9
%83 = add i32 %82, %81
%84 = add nuw nsw i32 %78, 1
%85 = icmp eq i32 %84, %72
br i1 %85, label %100, label %76
86: ; preds = %5
br label %91
87: ; preds = %5
br label %91
88: ; preds = %5
br label %91
89: ; preds = %5
%90 = tail call i32 @trace(i32 2, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str, i64 0, i64 0), i32 %6)
br label %133
91: ; preds = %5, %5, %7, %24, %25, %26, %27, %28, %45, %46, %47, %48, %65, %66, %67, %68, %69, %86, %87, %88
%92 = phi i32 [ 61, %88 ], [ 61, %87 ], [ 62, %86 ], [ 61, %69 ], [ 62, %68 ], [ 61, %67 ], [ 61, %66 ], [ 62, %65 ], [ 61, %48 ], [ 58, %47 ], [ 58, %46 ], [ 59, %45 ], [ 58, %28 ], [ 59, %27 ], [ 61, %26 ], [ 61, %25 ], [ 62, %24 ], [ 61, %7 ], [ 62, %5 ], [ 62, %5 ]
%93 = phi i32 [ 4, %88 ], [ 4, %87 ], [ 4, %86 ], [ 4, %69 ], [ 4, %68 ], [ 6, %67 ], [ 6, %66 ], [ 6, %65 ], [ 6, %48 ], [ 6, %47 ], [ 6, %46 ], [ 6, %45 ], [ 6, %28 ], [ 6, %27 ], [ 6, %26 ], [ 6, %25 ], [ 6, %24 ], [ 6, %7 ], [ 6, %5 ], [ 6, %5 ]
%94 = phi i32 [ 26, %88 ], [ 10, %87 ], [ 203, %86 ], [ 74, %69 ], [ 133, %68 ], [ 28, %67 ], [ 12, %66 ], [ 205, %65 ], [ 76, %48 ], [ 27, %47 ], [ 11, %46 ], [ 204, %45 ], [ 75, %28 ], [ 134, %27 ], [ 28, %26 ], [ 12, %25 ], [ 205, %24 ], [ 76, %7 ], [ 135, %5 ], [ 135, %5 ]
%95 = phi i32 [ 65, %88 ], [ 65, %87 ], [ 66, %86 ], [ 65, %69 ], [ 66, %68 ], [ 67, %67 ], [ 67, %66 ], [ 68, %65 ], [ 67, %48 ], [ 64, %47 ], [ 64, %46 ], [ 65, %45 ], [ 64, %28 ], [ 65, %27 ], [ 67, %26 ], [ 67, %25 ], [ 68, %24 ], [ 67, %7 ], [ 68, %5 ], [ 68, %5 ]
%96 = add nsw i32 %92, %1
%97 = tail call i32 @getbitu(i8* %0, i32 %96, i32 %93)
%98 = mul nsw i32 %97, %94
%99 = add nsw i32 %98, %95
br label %100
100: ; preds = %76, %55, %35, %14, %91, %70, %49, %29, %8
%101 = phi i32 [ 67, %8 ], [ 64, %29 ], [ 67, %49 ], [ 65, %70 ], [ %99, %91 ], [ %21, %14 ], [ %42, %35 ], [ %62, %55 ], [ %83, %76 ]
%102 = add nsw i32 %101, 7
%103 = sdiv i32 %102, 8
%104 = shl nsw i32 %103, 3
%105 = add nsw i32 %104, %1
%106 = icmp sgt i32 %105, 1744
br i1 %106, label %107, label %109
107: ; preds = %100
%108 = tail call i32 @trace(i32 2, i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.1, i64 0, i64 0), i32 %103)
br label %133
109: ; preds = %100
%110 = tail call i32 @setbitu(i8* %2, i32 0, i32 8, i32 211)
%111 = tail call i32 @setbitu(i8* %2, i32 8, i32 6, i32 0)
%112 = tail call i32 @setbitu(i8* %2, i32 14, i32 10, i32 %103)
%113 = icmp sgt i32 %101, 0
br i1 %113, label %114, label %128
114: ; preds = %109
%115 = call i32 @llvm.smax.i32(i32 %103, i32 1)
%116 = zext i32 %115 to i64
br label %117
117: ; preds = %114, %117
%118 = phi i64 [ 0, %114 ], [ %126, %117 ]
%119 = trunc i64 %118 to i32
%120 = shl i32 %119, 3
%121 = add i32 %120, %1
%122 = tail call i32 @getbitu(i8* %0, i32 %121, i32 8)
%123 = trunc i32 %122 to i8
%124 = add nuw nsw i64 %118, 3
%125 = getelementptr inbounds i8, i8* %2, i64 %124
store i8 %123, i8* %125
%126 = add nuw nsw i64 %118, 1
%127 = icmp eq i64 %126, %116
br i1 %127, label %128, label %117
128: ; preds = %117, %109
%129 = add nsw i32 %103, 3
%130 = tail call i32 @crc24q(i8* %2, i32 %129)
%131 = add nsw i32 %104, 24
%132 = tail call i32 @setbitu(i8* %2, i32 %131, i32 24, i32 %130)
br label %133
133: ; preds = %89, %5, %3, %128, %107
%134 = phi i32 [ 0, %107 ], [ %103, %128 ], [ 0, %3 ], [ %6, %5 ], [ 0, %89 ]
ret i32 %134
}