#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 */
typedef int /*<<< orphan*/ data;
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
scalar_t__ advance(char **);
int /*<<< orphan*/ dump_record(int /*<<< orphan*/ *, unsigned int, int,
                               unsigned char *);
int /*<<< orphan*/ exit(int);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, ...);
int /*<<< orphan*/ isalnum(char);
int sscanf(char *, char *, unsigned int *);
int /*<<< orphan*/ stderr;
scalar_t__ strncmp(char *, char *, int);
void process_line(FILE *file_out, char *buf, char *buffer) {
  do {
    if (strncmp(buf, "Send_", 5) != 0) {
      fprintf(stderr, "Not expecting: %s\n", buffer);
      exit(1);
    }
  } while (0);
  unsigned int opcode;
  do {
    if (advance(&buf)) {
      fprintf(stderr, "Could not find opcode in: %s\n", buffer);
      exit(1);
    }
  } while (0);
  do {
    if (sscanf(buf, "0x%04x\n", &opcode) != 1) {
      fprintf(stderr, "Could not find opcode in: %s\n", buffer);
      exit(1);
    }
  } while (0);
  unsigned char data[1024];
  unsigned char *dp = data;
  while (!advance(&buf)) {
    switch (*buf) {
    case '"':
      buf++;
      while (*buf != '"' && *buf != 0) {
        do {
          if (dp > data + sizeof(data)) {
            fprintf(stderr, "Too much data: %s\n", buffer);
            exit(1);
          }
        } while (0);
        do {
          if (sscanf(buf, "%02x", (unsigned int *)dp) != 1) {
            fprintf(stderr, "Error parsing (%d): %s\n", 98, buffer);
            exit(1);
          }
        } while (0);
        dp++;
        buf += 2;
        if (*buf == ':')
          buf++;
      }
      break;
    case '0':
      buf++;
      do {
        if (*buf != 'x') {
          fprintf(stderr, "Error parsing: %s\n", buffer);
          exit(1);
        }
      } while (0);
      buf++;
      char *end = buf;
      while (isalnum(*end))
        end++;
      switch ((unsigned int)end - (unsigned int)buf) {
      case 2:
        do {
          if (sscanf(buf, "%02x", (unsigned int *)dp) != 1) {
            fprintf(stderr, "Error parsing (%d): %s\n", 119, buffer);
            exit(1);
          }
        } while (0);
        buf += 2;
        dp += 1;
        break;
      case 4:
        do {
          if (sscanf(buf, "%04x", (unsigned int *)dp) != 1) {
            fprintf(stderr, "Error parsing (%d): %s\n", 125, buffer);
            exit(1);
          }
        } while (0);
        buf += 4;
        dp += 2;
        break;
      case 6:
        do {
          if (sscanf(buf, "%06x", (unsigned int *)dp) != 1) {
            fprintf(stderr, "Error parsing (%d): %s\n", 131, buffer);
            exit(1);
          }
        } while (0);
        buf += 6;
        dp += 3;
        break;
      case 8:
        do {
          if (sscanf(buf, "%08x", (unsigned int *)dp) != 1) {
            fprintf(stderr, "Error parsing (%d): %s\n", 137, buffer);
            exit(1);
          }
        } while (0);
        buf += 8;
        dp += 4;
        break;
      case 16:
        dp += 4;
        do {
          if (sscanf(buf, "%08x", (unsigned int *)dp) != 1) {
            fprintf(stderr, "Error parsing (%d): %s\n", 144, buffer);
            exit(1);
          }
        } while (0);
        buf += 8;
        dp -= 4;
        do {
          if (sscanf(buf, "%08x", (unsigned int *)dp) != 1) {
            fprintf(stderr, "Error parsing (%d): %s\n", 148, buffer);
            exit(1);
          }
        } while (0);
        buf += 8;
        dp += 8;
        break;
      default:
        do {
          if (1) {
            fprintf(stderr, "Error parsing (%d): %s\n", 154, buffer);
            exit(1);
          }
        } while (0);
      }
      break;
    default:
      do {
        if (1) {
          fprintf(stderr, "Error parsing (%d): %s\n", 158, buffer);
          exit(1);
        }
      } while (0);
    }
  }
  dump_record(file_out, opcode, dp - data, data);
}


x86 assembly (clang, -O0):
<process_line>:
push   %rbp
mov    %rsp,%rbp
sub    $0x440,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0x10(%rbp),%rdi
lea    0xeaa(%rip),%rsi
mov    $0x5,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
je     11cb <process_line+0x5b>
mov    0x2e33(%rip),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rdx
lea    0xe88(%rip),%rsi
mov    $0x0,%al
call   1050 <fprintf@plt>
mov    $0x1,%edi
call   1090 <exit@plt>
jmp    11d0 <process_line+0x60>
jmp    11d5 <process_line+0x65>
lea    -0x10(%rbp),%rdi
call   1060 <advance@plt>
cmp    $0x0,%rax
je     120d <process_line+0x9d>
mov    0x2df1(%rip),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rdx
lea    0xe59(%rip),%rsi
mov    $0x0,%al
call   1050 <fprintf@plt>
mov    $0x1,%edi
call   1090 <exit@plt>
jmp    1212 <process_line+0xa2>
jmp    1217 <process_line+0xa7>
mov    -0x10(%rbp),%rdi
lea    0xe51(%rip),%rsi
lea    -0x1c(%rbp),%rdx
call   1080 <sscanf@plt>
cmp    $0x1,%eax
je     1259 <process_line+0xe9>
mov    0x2da5(%rip),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rdx
lea    0xe0d(%rip),%rsi
mov    $0x0,%al
call   1050 <fprintf@plt>
mov    $0x1,%edi
call   1090 <exit@plt>
jmp    125e <process_line+0xee>
lea    -0x420(%rbp),%rax
mov    %rax,-0x428(%rbp)
lea    -0x10(%rbp),%rdi
call   1060 <advance@plt>
cmp    $0x0,%rax
setne  %al
xor    $0xff,%al
test   $0x1,%al
jne    128b <process_line+0x11b>
jmp    17e1 <process_line+0x671>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
mov    %eax,-0x434(%rbp)
sub    $0x22,%eax
je     12ba <process_line+0x14a>
jmp    12a6 <process_line+0x136>
mov    -0x434(%rbp),%eax
sub    $0x30,%eax
je     13e9 <process_line+0x279>
jmp    17ad <process_line+0x63d>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%ecx
xor    %eax,%eax
cmp    $0x22,%ecx
mov    %al,-0x435(%rbp)
je     12f1 <process_line+0x181>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x435(%rbp)
mov    -0x435(%rbp),%al
test   $0x1,%al
jne    1304 <process_line+0x194>
jmp    13e4 <process_line+0x274>
jmp    1309 <process_line+0x199>
mov    -0x428(%rbp),%rax
lea    -0x420(%rbp),%rcx
add    $0x400,%rcx
cmp    %rcx,%rax
jbe    134c <process_line+0x1dc>
mov    0x2cb2(%rip),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rdx
lea    0xd40(%rip),%rsi
mov    $0x0,%al
call   1050 <fprintf@plt>
mov    $0x1,%edi
call   1090 <exit@plt>
jmp    1351 <process_line+0x1e1>
jmp    1356 <process_line+0x1e6>
mov    -0x10(%rbp),%rdi
mov    -0x428(%rbp),%rdx
lea    0xd26(%rip),%rsi
call   1080 <sscanf@plt>
cmp    $0x1,%eax
je     13a0 <process_line+0x230>
mov    0x2c63(%rip),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rcx
lea    0xd09(%rip),%rsi
mov    $0x62,%edx
mov    $0x0,%al
call   1050 <fprintf@plt>
mov    $0x1,%edi
call   1090 <exit@plt>
jmp    13a5 <process_line+0x235>
mov    -0x428(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x428(%rbp)
mov    -0x10(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x3a,%eax
jne    13df <process_line+0x26f>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    12c6 <process_line+0x156>
jmp    17dc <process_line+0x66c>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x78,%eax
je     142a <process_line+0x2ba>
mov    0x2bd4(%rip),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rdx
lea    0xc92(%rip),%rsi
mov    $0x0,%al
call   1050 <fprintf@plt>
mov    $0x1,%edi
call   1090 <exit@plt>
jmp    142f <process_line+0x2bf>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x430(%rbp)
mov    -0x430(%rbp),%rax
movsbl (%rax),%edi
call   1040 <isalnum@plt>
cmp    $0x0,%eax
je     1475 <process_line+0x305>
mov    -0x430(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x430(%rbp)
jmp    1446 <process_line+0x2d6>
mov    -0x430(%rbp),%eax
mov    -0x10(%rbp),%ecx
sub    %ecx,%eax
add    $0xfffffffe,%eax
mov    %eax,%ecx
mov    %rcx,-0x440(%rbp)
sub    $0xe,%eax
ja     1779 <process_line+0x609>
mov    -0x440(%rbp),%rax
lea    0xb5d(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
jmp    14b1 <process_line+0x341>
mov    -0x10(%rbp),%rdi
mov    -0x428(%rbp),%rdx
lea    0xbcb(%rip),%rsi
call   1080 <sscanf@plt>
cmp    $0x1,%eax
je     14fb <process_line+0x38b>
mov    0x2b08(%rip),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rcx
lea    0xbae(%rip),%rsi
mov    $0x77,%edx
mov    $0x0,%al
call   1050 <fprintf@plt>
mov    $0x1,%edi
call   1090 <exit@plt>
jmp    1500 <process_line+0x390>
mov    -0x10(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x10(%rbp)
mov    -0x428(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x428(%rbp)
jmp    17a8 <process_line+0x638>
jmp    1528 <process_line+0x3b8>
mov    -0x10(%rbp),%rdi
mov    -0x428(%rbp),%rdx
lea    0xb84(%rip),%rsi
call   1080 <sscanf@plt>
cmp    $0x1,%eax
je     1572 <process_line+0x402>
mov    0x2a91(%rip),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rcx
lea    0xb37(%rip),%rsi
mov    $0x7d,%edx
mov    $0x0,%al
call   1050 <fprintf@plt>
mov    $0x1,%edi
call   1090 <exit@plt>
jmp    1577 <process_line+0x407>
mov    -0x10(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x10(%rbp)
mov    -0x428(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x428(%rbp)
jmp    17a8 <process_line+0x638>
jmp    159f <process_line+0x42f>
mov    -0x10(%rbp),%rdi
mov    -0x428(%rbp),%rdx
lea    0xb12(%rip),%rsi
call   1080 <sscanf@plt>
cmp    $0x1,%eax
je     15e9 <process_line+0x479>
mov    0x2a1a(%rip),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rcx
lea    0xac0(%rip),%rsi
mov    $0x83,%edx
mov    $0x0,%al
call   1050 <fprintf@plt>
mov    $0x1,%edi
call   1090 <exit@plt>
jmp    15ee <process_line+0x47e>
mov    -0x10(%rbp),%rax
add    $0x6,%rax
mov    %rax,-0x10(%rbp)
mov    -0x428(%rbp),%rax
add    $0x3,%rax
mov    %rax,-0x428(%rbp)
jmp    17a8 <process_line+0x638>
jmp    1616 <process_line+0x4a6>
mov    -0x10(%rbp),%rdi
mov    -0x428(%rbp),%rdx
lea    0xaa0(%rip),%rsi
call   1080 <sscanf@plt>
cmp    $0x1,%eax
je     1660 <process_line+0x4f0>
mov    0x29a3(%rip),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rcx
lea    0xa49(%rip),%rsi
mov    $0x89,%edx
mov    $0x0,%al
call   1050 <fprintf@plt>
mov    $0x1,%edi
call   1090 <exit@plt>
jmp    1665 <process_line+0x4f5>
mov    -0x10(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x10(%rbp)
mov    -0x428(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x428(%rbp)
jmp    17a8 <process_line+0x638>
mov    -0x428(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x428(%rbp)
mov    -0x10(%rbp),%rdi
mov    -0x428(%rbp),%rdx
lea    0xa1c(%rip),%rsi
call   1080 <sscanf@plt>
cmp    $0x1,%eax
je     16e4 <process_line+0x574>
mov    0x291f(%rip),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rcx
lea    0x9c5(%rip),%rsi
mov    $0x90,%edx
mov    $0x0,%al
call   1050 <fprintf@plt>
mov    $0x1,%edi
call   1090 <exit@plt>
jmp    16e9 <process_line+0x579>
mov    -0x10(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x10(%rbp)
mov    -0x428(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x428(%rbp)
mov    -0x10(%rbp),%rdi
mov    -0x428(%rbp),%rdx
lea    0x9af(%rip),%rsi
call   1080 <sscanf@plt>
cmp    $0x1,%eax
je     1751 <process_line+0x5e1>
mov    0x28b2(%rip),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rcx
lea    0x958(%rip),%rsi
mov    $0x94,%edx
mov    $0x0,%al
call   1050 <fprintf@plt>
mov    $0x1,%edi
call   1090 <exit@plt>
jmp    1756 <process_line+0x5e6>
mov    -0x10(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x10(%rbp)
mov    -0x428(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x428(%rbp)
jmp    17a8 <process_line+0x638>
jmp    177e <process_line+0x60e>
mov    0x285b(%rip),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rcx
lea    0x901(%rip),%rsi
mov    $0x9a,%edx
mov    $0x0,%al
call   1050 <fprintf@plt>
mov    $0x1,%edi
call   1090 <exit@plt>
jmp    17dc <process_line+0x66c>
jmp    17b2 <process_line+0x642>
mov    0x2827(%rip),%rax
mov    (%rax),%edi
mov    -0x18(%rbp),%rcx
lea    0x8cd(%rip),%rsi
mov    $0x9e,%edx
mov    $0x0,%al
call   1050 <fprintf@plt>
mov    $0x1,%edi
call   1090 <exit@plt>
jmp    126c <process_line+0xfc>
mov    -0x8(%rbp),%rdi
mov    -0x1c(%rbp),%esi
mov    -0x428(%rbp),%rax
lea    -0x420(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,%edx
lea    -0x420(%rbp),%rcx
call   1070 <dump_record@plt>
add    $0x440,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<process_line>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x428,%rsp
mov    %rdx,%rbx
mov    %rsi,%rax
mov    %rdi,%rbp
mov    %rsi,(%rsp)
lea    0xe8b(%rip),%rsi
mov    %rax,%rdi
mov    $0x5,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
jne    1537 <process_line+0x3c7>
mov    %rsp,%rdi
call   1060 <advance@plt>
test   %rax,%rax
jne    146f <process_line+0x2ff>
mov    %rbp,0x18(%rsp)
mov    (%rsp),%rdi
lea    0xe8b(%rip),%rsi
lea    0x14(%rsp),%rdx
call   1080 <sscanf@plt>
cmp    $0x1,%eax
jne    146f <process_line+0x2ff>
mov    %rsp,%rdi
call   1060 <advance@plt>
test   %rax,%rax
je     121a <process_line+0xaa>
lea    0x20(%rsp),%rbx
mov    0x14(%rsp),%esi
lea    0x20(%rsp),%rcx
sub    %ecx,%ebx
mov    0x18(%rsp),%rdi
mov    %ebx,%edx
call   1070 <dump_record@plt>
add    $0x428,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    %rbx,0x8(%rsp)
lea    0x20(%rsp),%rbx
lea    0x420(%rsp),%r15
lea    0xe3f(%rip),%r12
lea    0xe72(%rip),%r14
mov    %rsp,%r13
jmp    126f <process_line+0xff>
mov    %r13,%r14
mov    %r13,%rsi
mov    %rbx,%rdx
call   1080 <sscanf@plt>
cmp    $0x1,%eax
jne    1484 <process_line+0x314>
addq   $0x8,(%rsp)
add    $0x4,%rbx
mov    %rsp,%r13
mov    %r13,%rdi
call   1060 <advance@plt>
test   %rax,%rax
jne    11f1 <process_line+0x81>
mov    (%rsp),%rbp
movsbl 0x0(%rbp),%eax
cmp    $0x30,%eax
je     12e0 <process_line+0x170>
cmp    $0x22,%eax
jne    1446 <process_line+0x2d6>
add    $0x1,%rbp
mov    %rbp,(%rsp)
nopl   (%rax)
movzbl 0x0(%rbp),%eax
test   %al,%al
je     1262 <process_line+0xf2>
cmp    $0x22,%al
je     1262 <process_line+0xf2>
cmp    %r15,%rbx
ja     13f5 <process_line+0x285>
mov    %rbp,%rdi
mov    %r12,%rsi
mov    %rbx,%rdx
call   1080 <sscanf@plt>
cmp    $0x1,%eax
jne    141b <process_line+0x2ab>
add    $0x1,%rbx
mov    (%rsp),%rax
lea    0x2(%rax),%rbp
mov    %rbp,(%rsp)
cmpb   $0x3a,0x2(%rax)
jne    1290 <process_line+0x120>
add    $0x3,%rax
mov    %rax,(%rsp)
mov    %rax,%rbp
jmp    1290 <process_line+0x120>
nop
lea    0x1(%rbp),%rax
mov    %rax,(%rsp)
cmpb   $0x78,0x1(%rbp)
jne    145d <process_line+0x2ed>
mov    %r14,%r13
lea    0x2(%rbp),%r14
mov    %r14,(%rsp)
add    $0xffffffff,%ebp
movsbl (%r14),%edi
call   1040 <isalnum@plt>
add    $0x1,%r14
add    $0x1,%ebp
test   %eax,%eax
jne    1300 <process_line+0x190>
mov    (%rsp),%rdi
sub    %edi,%ebp
ror    %ebp
cmp    $0x7,%ebp
ja     149b <process_line+0x32b>
lea    0xcd4(%rip),%rcx
movslq (%rcx,%rbp,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    %r12,%rsi
mov    %rbx,%rdx
call   1080 <sscanf@plt>
cmp    $0x1,%eax
jne    14b5 <process_line+0x345>
mov    %r13,%r14
addq   $0x2,(%rsp)
add    $0x1,%rbx
jmp    125f <process_line+0xef>
lea    0xd41(%rip),%rsi
mov    %rbx,%rdx
call   1080 <sscanf@plt>
cmp    $0x1,%eax
jne    14cf <process_line+0x35f>
mov    %r13,%r14
addq   $0x4,(%rsp)
add    $0x2,%rbx
jmp    125f <process_line+0xef>
lea    0xd1d(%rip),%rsi
mov    %rbx,%rdx
call   1080 <sscanf@plt>
cmp    $0x1,%eax
jne    14e9 <process_line+0x379>
mov    %r13,%r14
addq   $0x6,(%rsp)
add    $0x3,%rbx
jmp    125f <process_line+0xef>
lea    0x4(%rbx),%rdx
mov    %r13,%r14
mov    %r13,%rsi
call   1080 <sscanf@plt>
cmp    $0x1,%eax
jne    1503 <process_line+0x393>
mov    (%rsp),%rdi
add    $0x8,%rdi
mov    %rdi,(%rsp)
mov    %r14,%rsi
mov    %rbx,%rdx
call   1080 <sscanf@plt>
cmp    $0x1,%eax
mov    %rsp,%r13
jne    151d <process_line+0x3ad>
addq   $0x8,(%rsp)
add    $0x8,%rbx
jmp    1262 <process_line+0xf2>
mov    0x2be4(%rip),%rax
mov    (%rax),%edi
lea    0xc5a(%rip),%rsi
mov    0x8(%rsp),%rdx
xor    %eax,%eax
call   1050 <fprintf@plt>
mov    $0x1,%edi
call   1090 <exit@plt>
mov    0x2bbe(%rip),%rax
mov    (%rax),%edi
lea    0xc4c(%rip),%rsi
mov    $0x62,%edx
mov    0x8(%rsp),%rcx
xor    %eax,%eax
call   1050 <fprintf@plt>
mov    $0x1,%edi
call   1090 <exit@plt>
mov    0x2b93(%rip),%rax
mov    (%rax),%edi
lea    0xc21(%rip),%rsi
mov    $0x9e,%edx
jmp    1430 <process_line+0x2c0>
mov    0x2b7c(%rip),%rax
mov    (%rax),%edi
lea    0xc22(%rip),%rsi
jmp    1405 <process_line+0x295>
mov    0x2b6a(%rip),%rax
mov    (%rax),%edi
lea    0xbba(%rip),%rsi
jmp    1547 <process_line+0x3d7>
mov    0x2b55(%rip),%rax
mov    (%rax),%edi
lea    0xbe3(%rip),%rsi
mov    $0x89,%edx
jmp    1430 <process_line+0x2c0>
mov    0x2b3e(%rip),%rax
mov    (%rax),%edi
lea    0xbcc(%rip),%rsi
mov    $0x9a,%edx
jmp    1430 <process_line+0x2c0>
mov    0x2b24(%rip),%rax
mov    (%rax),%edi
lea    0xbb2(%rip),%rsi
mov    $0x77,%edx
jmp    1430 <process_line+0x2c0>
mov    0x2b0a(%rip),%rax
mov    (%rax),%edi
lea    0xb98(%rip),%rsi
mov    $0x7d,%edx
jmp    1430 <process_line+0x2c0>
mov    0x2af0(%rip),%rax
mov    (%rax),%edi
lea    0xb7e(%rip),%rsi
mov    $0x83,%edx
jmp    1430 <process_line+0x2c0>
mov    0x2ad6(%rip),%rax
mov    (%rax),%edi
lea    0xb64(%rip),%rsi
mov    $0x90,%edx
jmp    1430 <process_line+0x2c0>
mov    0x2abc(%rip),%rax
mov    (%rax),%edi
lea    0xb4a(%rip),%rsi
mov    $0x94,%edx
jmp    1430 <process_line+0x2c0>
mov    0x2aa2(%rip),%rax
mov    (%rax),%edi
lea    0xadf(%rip),%rsi
mov    %rbx,%rdx
jmp    140a <process_line+0x29a>

LLVM IR (-O0):
@.str = [6 x i8] c"Send_\00"
@stderr = global i32 0
@.str.1 = [19 x i8] c"Not expecting: %s\0A\00"
@.str.2 = [30 x i8] c"Could not find opcode in: %s\0A\00"
@.str.3 = [8 x i8] c"0x%04x\0A\00"
@.str.4 = [19 x i8] c"Too much data: %s\0A\00"
@.str.5 = [5 x i8] c"%02x\00"
@.str.6 = [24 x i8] c"Error parsing (%d): %s\0A\00"
@.str.7 = [19 x i8] c"Error parsing: %s\0A\00"
@.str.8 = [5 x i8] c"%04x\00"
@.str.9 = [5 x i8] c"%06x\00"
@.str.10 = [5 x i8] c"%08x\00"
define void @process_line(i32* %0, i8* %1, i8* %2) {
%4 = alloca i32*
%5 = alloca i8*
%6 = alloca i8*
%7 = alloca i32
%8 = alloca [1024 x i8]
%9 = alloca i8*
%10 = alloca i8*
store i32* %0, i32** %4
store i8* %1, i8** %5
store i8* %2, i8** %6
br label %11
11: ; preds = %3
%12 = load i8*, i8** %5
%13 = call i64 @strncmp(i8* %12, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0), i32 5)
%14 = icmp ne i64 %13, 0
br i1 %14, label %15, label %20
15: ; preds = %11
%16 = load i32, i32* @stderr
%17 = load i8*, i8** %6
%18 = call i32 (i32, i8*, ...) @fprintf(i32 %16, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.1, i64 0, i64 0), i8* %17)
%19 = call i32 @exit(i32 1)
unreachable
20: ; preds = %11
br label %21
21: ; preds = %20
br label %22
22: ; preds = %21
%23 = call i64 @advance(i8** %5)
%24 = icmp ne i64 %23, 0
br i1 %24, label %25, label %30
25: ; preds = %22
%26 = load i32, i32* @stderr
%27 = load i8*, i8** %6
%28 = call i32 (i32, i8*, ...) @fprintf(i32 %26, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.2, i64 0, i64 0), i8* %27)
%29 = call i32 @exit(i32 1)
unreachable
30: ; preds = %22
br label %31
31: ; preds = %30
br label %32
32: ; preds = %31
%33 = load i8*, i8** %5
%34 = call i32 @sscanf(i8* %33, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i64 0, i64 0), i32* %7)
%35 = icmp ne i32 %34, 1
br i1 %35, label %36, label %41
36: ; preds = %32
%37 = load i32, i32* @stderr
%38 = load i8*, i8** %6
%39 = call i32 (i32, i8*, ...) @fprintf(i32 %37, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.2, i64 0, i64 0), i8* %38)
%40 = call i32 @exit(i32 1)
unreachable
41: ; preds = %32
br label %42
42: ; preds = %41
%43 = getelementptr inbounds [1024 x i8], [1024 x i8]* %8, i64 0, i64 0
store i8* %43, i8** %9
br label %44
44: ; preds = %262, %42
%45 = call i64 @advance(i8** %5)
%46 = icmp ne i64 %45, 0
%47 = xor i1 %46, true
br i1 %47, label %48, label %263
48: ; preds = %44
%49 = load i8*, i8** %5
%50 = load i8, i8* %49
%51 = sext i8 %50 to i32
switch i32 %51, label %255 [
i32 34, label %52
i32 48, label %106
]
52: ; preds = %48
%53 = load i8*, i8** %5
%54 = getelementptr inbounds i8, i8* %53, i32 1
store i8* %54, i8** %5
br label %55
55: ; preds = %104, %52
%56 = load i8*, i8** %5
%57 = load i8, i8* %56
%58 = sext i8 %57 to i32
%59 = icmp ne i32 %58, 34
br i1 %59, label %60, label %65
60: ; preds = %55
%61 = load i8*, i8** %5
%62 = load i8, i8* %61
%63 = sext i8 %62 to i32
%64 = icmp ne i32 %63, 0
br label %65
65: ; preds = %60, %55
%66 = phi i1 [ false, %55 ], [ %64, %60 ]
br i1 %66, label %67, label %105
67: ; preds = %65
br label %68
68: ; preds = %67
%69 = load i8*, i8** %9
%70 = getelementptr inbounds [1024 x i8], [1024 x i8]* %8, i64 0, i64 0
%71 = getelementptr inbounds i8, i8* %70, i64 1024
%72 = icmp ugt i8* %69, %71
br i1 %72, label %73, label %78
73: ; preds = %68
%74 = load i32, i32* @stderr
%75 = load i8*, i8** %6
%76 = call i32 (i32, i8*, ...) @fprintf(i32 %74, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.4, i64 0, i64 0), i8* %75)
%77 = call i32 @exit(i32 1)
unreachable
78: ; preds = %68
br label %79
79: ; preds = %78
br label %80
80: ; preds = %79
%81 = load i8*, i8** %5
%82 = load i8*, i8** %9
%83 = bitcast i8* %82 to i32*
%84 = call i32 @sscanf(i8* %81, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32* %83)
%85 = icmp ne i32 %84, 1
br i1 %85, label %86, label %91
86: ; preds = %80
%87 = load i32, i32* @stderr
%88 = load i8*, i8** %6
%89 = call i32 (i32, i8*, ...) @fprintf(i32 %87, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0), i32 98, i8* %88)
%90 = call i32 @exit(i32 1)
unreachable
91: ; preds = %80
br label %92
92: ; preds = %91
%93 = load i8*, i8** %9
%94 = getelementptr inbounds i8, i8* %93, i32 1
store i8* %94, i8** %9
%95 = load i8*, i8** %5
%96 = getelementptr inbounds i8, i8* %95, i64 2
store i8* %96, i8** %5
%97 = load i8*, i8** %5
%98 = load i8, i8* %97
%99 = sext i8 %98 to i32
%100 = icmp eq i32 %99, 58
br i1 %100, label %101, label %104
101: ; preds = %92
%102 = load i8*, i8** %5
%103 = getelementptr inbounds i8, i8* %102, i32 1
store i8* %103, i8** %5
br label %104
104: ; preds = %101, %92
br label %55
105: ; preds = %65
br label %262
106: ; preds = %48
%107 = load i8*, i8** %5
%108 = getelementptr inbounds i8, i8* %107, i32 1
store i8* %108, i8** %5
br label %109
109: ; preds = %106
%110 = load i8*, i8** %5
%111 = load i8, i8* %110
%112 = sext i8 %111 to i32
%113 = icmp ne i32 %112, 120
br i1 %113, label %114, label %119
114: ; preds = %109
%115 = load i32, i32* @stderr
%116 = load i8*, i8** %6
%117 = call i32 (i32, i8*, ...) @fprintf(i32 %115, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.7, i64 0, i64 0), i8* %116)
%118 = call i32 @exit(i32 1)
unreachable
119: ; preds = %109
br label %120
120: ; preds = %119
%121 = load i8*, i8** %5
%122 = getelementptr inbounds i8, i8* %121, i32 1
store i8* %122, i8** %5
%123 = load i8*, i8** %5
store i8* %123, i8** %10
br label %124
124: ; preds = %129, %120
%125 = load i8*, i8** %10
%126 = load i8, i8* %125
%127 = call i32 @isalnum(i8 signext %126)
%128 = icmp ne i32 %127, 0
br i1 %128, label %129, label %132
129: ; preds = %124
%130 = load i8*, i8** %10
%131 = getelementptr inbounds i8, i8* %130, i32 1
store i8* %131, i8** %10
br label %124
132: ; preds = %124
%133 = load i8*, i8** %10
%134 = ptrtoint i8* %133 to i32
%135 = load i8*, i8** %5
%136 = ptrtoint i8* %135 to i32
%137 = sub i32 %134, %136
switch i32 %137, label %247 [
i32 2, label %138
i32 4, label %156
i32 6, label %174
i32 8, label %192
i32 16, label %210
]
138: ; preds = %132
br label %139
139: ; preds = %138
%140 = load i8*, i8** %5
%141 = load i8*, i8** %9
%142 = bitcast i8* %141 to i32*
%143 = call i32 @sscanf(i8* %140, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32* %142)
%144 = icmp ne i32 %143, 1
br i1 %144, label %145, label %150
145: ; preds = %139
%146 = load i32, i32* @stderr
%147 = load i8*, i8** %6
%148 = call i32 (i32, i8*, ...) @fprintf(i32 %146, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0), i32 119, i8* %147)
%149 = call i32 @exit(i32 1)
unreachable
150: ; preds = %139
br label %151
151: ; preds = %150
%152 = load i8*, i8** %5
%153 = getelementptr inbounds i8, i8* %152, i64 2
store i8* %153, i8** %5
%154 = load i8*, i8** %9
%155 = getelementptr inbounds i8, i8* %154, i64 1
store i8* %155, i8** %9
br label %254
156: ; preds = %132
br label %157
157: ; preds = %156
%158 = load i8*, i8** %5
%159 = load i8*, i8** %9
%160 = bitcast i8* %159 to i32*
%161 = call i32 @sscanf(i8* %158, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i32* %160)
%162 = icmp ne i32 %161, 1
br i1 %162, label %163, label %168
163: ; preds = %157
%164 = load i32, i32* @stderr
%165 = load i8*, i8** %6
%166 = call i32 (i32, i8*, ...) @fprintf(i32 %164, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0), i32 125, i8* %165)
%167 = call i32 @exit(i32 1)
unreachable
168: ; preds = %157
br label %169
169: ; preds = %168
%170 = load i8*, i8** %5
%171 = getelementptr inbounds i8, i8* %170, i64 4
store i8* %171, i8** %5
%172 = load i8*, i8** %9
%173 = getelementptr inbounds i8, i8* %172, i64 2
store i8* %173, i8** %9
br label %254
174: ; preds = %132
br label %175
175: ; preds = %174
%176 = load i8*, i8** %5
%177 = load i8*, i8** %9
%178 = bitcast i8* %177 to i32*
%179 = call i32 @sscanf(i8* %176, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i64 0, i64 0), i32* %178)
%180 = icmp ne i32 %179, 1
br i1 %180, label %181, label %186
181: ; preds = %175
%182 = load i32, i32* @stderr
%183 = load i8*, i8** %6
%184 = call i32 (i32, i8*, ...) @fprintf(i32 %182, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0), i32 131, i8* %183)
%185 = call i32 @exit(i32 1)
unreachable
186: ; preds = %175
br label %187
187: ; preds = %186
%188 = load i8*, i8** %5
%189 = getelementptr inbounds i8, i8* %188, i64 6
store i8* %189, i8** %5
%190 = load i8*, i8** %9
%191 = getelementptr inbounds i8, i8* %190, i64 3
store i8* %191, i8** %9
br label %254
192: ; preds = %132
br label %193
193: ; preds = %192
%194 = load i8*, i8** %5
%195 = load i8*, i8** %9
%196 = bitcast i8* %195 to i32*
%197 = call i32 @sscanf(i8* %194, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i32* %196)
%198 = icmp ne i32 %197, 1
br i1 %198, label %199, label %204
199: ; preds = %193
%200 = load i32, i32* @stderr
%201 = load i8*, i8** %6
%202 = call i32 (i32, i8*, ...) @fprintf(i32 %200, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0), i32 137, i8* %201)
%203 = call i32 @exit(i32 1)
unreachable
204: ; preds = %193
br label %205
205: ; preds = %204
%206 = load i8*, i8** %5
%207 = getelementptr inbounds i8, i8* %206, i64 8
store i8* %207, i8** %5
%208 = load i8*, i8** %9
%209 = getelementptr inbounds i8, i8* %208, i64 4
store i8* %209, i8** %9
br label %254
210: ; preds = %132
%211 = load i8*, i8** %9
%212 = getelementptr inbounds i8, i8* %211, i64 4
store i8* %212, i8** %9
br label %213
213: ; preds = %210
%214 = load i8*, i8** %5
%215 = load i8*, i8** %9
%216 = bitcast i8* %215 to i32*
%217 = call i32 @sscanf(i8* %214, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i32* %216)
%218 = icmp ne i32 %217, 1
br i1 %218, label %219, label %224
219: ; preds = %213
%220 = load i32, i32* @stderr
%221 = load i8*, i8** %6
%222 = call i32 (i32, i8*, ...) @fprintf(i32 %220, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0), i32 144, i8* %221)
%223 = call i32 @exit(i32 1)
unreachable
224: ; preds = %213
br label %225
225: ; preds = %224
%226 = load i8*, i8** %5
%227 = getelementptr inbounds i8, i8* %226, i64 8
store i8* %227, i8** %5
%228 = load i8*, i8** %9
%229 = getelementptr inbounds i8, i8* %228, i64 -4
store i8* %229, i8** %9
br label %230
230: ; preds = %225
%231 = load i8*, i8** %5
%232 = load i8*, i8** %9
%233 = bitcast i8* %232 to i32*
%234 = call i32 @sscanf(i8* %231, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i32* %233)
%235 = icmp ne i32 %234, 1
br i1 %235, label %236, label %241
236: ; preds = %230
%237 = load i32, i32* @stderr
%238 = load i8*, i8** %6
%239 = call i32 (i32, i8*, ...) @fprintf(i32 %237, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0), i32 148, i8* %238)
%240 = call i32 @exit(i32 1)
unreachable
241: ; preds = %230
br label %242
242: ; preds = %241
%243 = load i8*, i8** %5
%244 = getelementptr inbounds i8, i8* %243, i64 8
store i8* %244, i8** %5
%245 = load i8*, i8** %9
%246 = getelementptr inbounds i8, i8* %245, i64 8
store i8* %246, i8** %9
br label %254
247: ; preds = %132
br label %248
248: ; preds = %247
%249 = load i32, i32* @stderr
%250 = load i8*, i8** %6
%251 = call i32 (i32, i8*, ...) @fprintf(i32 %249, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0), i32 154, i8* %250)
%252 = call i32 @exit(i32 1)
unreachable
253: ; No predecessors!
br label %254
254: ; preds = %253, %242, %205, %187, %169, %151
br label %262
255: ; preds = %48
br label %256
256: ; preds = %255
%257 = load i32, i32* @stderr
%258 = load i8*, i8** %6
%259 = call i32 (i32, i8*, ...) @fprintf(i32 %257, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0), i32 158, i8* %258)
%260 = call i32 @exit(i32 1)
unreachable
261: ; No predecessors!
br label %262
262: ; preds = %261, %254, %105
br label %44
263: ; preds = %44
%264 = load i32*, i32** %4
%265 = load i32, i32* %7
%266 = load i8*, i8** %9
%267 = getelementptr inbounds [1024 x i8], [1024 x i8]* %8, i64 0, i64 0
%268 = ptrtoint i8* %266 to i64
%269 = ptrtoint i8* %267 to i64
%270 = sub i64 %268, %269
%271 = trunc i64 %270 to i32
%272 = getelementptr inbounds [1024 x i8], [1024 x i8]* %8, i64 0, i64 0
%273 = call i32 @dump_record(i32* %264, i32 %265, i32 %271, i8* %272)
ret void
}

LLVM IR (-O2):
@.str = [6 x i8] c"Send_\00"
@stderr = global i32 0
@.str.1 = [19 x i8] c"Not expecting: %s\0A\00"
@.str.2 = [30 x i8] c"Could not find opcode in: %s\0A\00"
@.str.3 = [8 x i8] c"0x%04x\0A\00"
@.str.4 = [19 x i8] c"Too much data: %s\0A\00"
@.str.5 = [5 x i8] c"%02x\00"
@.str.6 = [24 x i8] c"Error parsing (%d): %s\0A\00"
@.str.7 = [19 x i8] c"Error parsing: %s\0A\00"
@.str.8 = [5 x i8] c"%04x\00"
@.str.9 = [5 x i8] c"%06x\00"
@.str.10 = [5 x i8] c"%08x\00"
define void @process_line(i32* %0, i8* %1, i8* %2) {
%4 = alloca i8*
%5 = alloca i32
%6 = alloca [1024 x i8]
store i8* %1, i8** %4
%7 = tail call i64 @strncmp(i8* %1, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i64 0, i64 0), i32 5)
%8 = icmp eq i64 %7, 0
br i1 %8, label %13, label %9
9: ; preds = %3
%10 = load i32, i32* @stderr
%11 = tail call i32 (i32, i8*, ...) @fprintf(i32 %10, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.1, i64 0, i64 0), i8* %2)
%12 = tail call i32 @exit(i32 1)
unreachable
13: ; preds = %3
%14 = bitcast i32* %5 to i8*
%15 = call i64 @advance(i8** %4)
%16 = icmp eq i64 %15, 0
br i1 %16, label %21, label %17
17: ; preds = %13
%18 = load i32, i32* @stderr
%19 = call i32 (i32, i8*, ...) @fprintf(i32 %18, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.2, i64 0, i64 0), i8* %2)
%20 = call i32 @exit(i32 1)
unreachable
21: ; preds = %13
%22 = load i8*, i8** %4
%23 = call i32 @sscanf(i8* %22, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i64 0, i64 0), i32* %5)
%24 = icmp eq i32 %23, 1
br i1 %24, label %29, label %25
25: ; preds = %21
%26 = load i32, i32* @stderr
%27 = call i32 (i32, i8*, ...) @fprintf(i32 %26, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.2, i64 0, i64 0), i8* %2)
%28 = call i32 @exit(i32 1)
unreachable
29: ; preds = %21
%30 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 0
%31 = call i64 @advance(i8** %4)
%32 = icmp eq i64 %31, 0
br i1 %32, label %33, label %178
33: ; preds = %29
%34 = getelementptr inbounds [1024 x i8], [1024 x i8]* %6, i64 0, i64 1024
br label %35
35: ; preds = %33, %174
%36 = phi i8* [ %30, %33 ], [ %175, %174 ]
%37 = load i8*, i8** %4
%38 = load i8, i8* %37
%39 = sext i8 %38 to i32
switch i32 %39, label %170 [
i32 34, label %40
i32 48, label %70
]
40: ; preds = %35
%41 = getelementptr inbounds i8, i8* %37, i64 1
store i8* %41, i8** %4
br label %42
42: ; preds = %68, %40
%43 = phi i8* [ %41, %40 ], [ %69, %68 ]
%44 = phi i8* [ %36, %40 ], [ %61, %68 ]
%45 = load i8, i8* %43
switch i8 %45, label %46 [
i8 34, label %174
i8 0, label %174
]
46: ; preds = %42
%47 = icmp ugt i8* %44, %34
br i1 %47, label %48, label %52
48: ; preds = %46
%49 = load i32, i32* @stderr
%50 = call i32 (i32, i8*, ...) @fprintf(i32 %49, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.4, i64 0, i64 0), i8* %2)
%51 = call i32 @exit(i32 1)
unreachable
52: ; preds = %46
%53 = bitcast i8* %44 to i32*
%54 = call i32 @sscanf(i8* %43, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32* %53)
%55 = icmp eq i32 %54, 1
br i1 %55, label %60, label %56
56: ; preds = %52
%57 = load i32, i32* @stderr
%58 = call i32 (i32, i8*, ...) @fprintf(i32 %57, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0), i32 98, i8* %2)
%59 = call i32 @exit(i32 1)
unreachable
60: ; preds = %52
%61 = getelementptr inbounds i8, i8* %44, i64 1
%62 = load i8*, i8** %4
%63 = getelementptr inbounds i8, i8* %62, i64 2
store i8* %63, i8** %4
%64 = load i8, i8* %63
%65 = icmp eq i8 %64, 58
br i1 %65, label %66, label %68
66: ; preds = %60
%67 = getelementptr inbounds i8, i8* %62, i64 3
store i8* %67, i8** %4
br label %68
68: ; preds = %66, %60
%69 = phi i8* [ %67, %66 ], [ %63, %60 ]
br label %42
70: ; preds = %35
%71 = getelementptr inbounds i8, i8* %37, i64 1
store i8* %71, i8** %4
%72 = load i8, i8* %71
%73 = icmp eq i8 %72, 120
br i1 %73, label %78, label %74
74: ; preds = %70
%75 = load i32, i32* @stderr
%76 = call i32 (i32, i8*, ...) @fprintf(i32 %75, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.7, i64 0, i64 0), i8* %2)
%77 = call i32 @exit(i32 1)
unreachable
78: ; preds = %70
%79 = getelementptr inbounds i8, i8* %37, i64 2
store i8* %79, i8** %4
br label %80
80: ; preds = %80, %78
%81 = phi i8* [ %79, %78 ], [ %85, %80 ]
%82 = load i8, i8* %81
%83 = call i32 @isalnum(i8 signext %82)
%84 = icmp eq i32 %83, 0
%85 = getelementptr inbounds i8, i8* %81, i64 1
br i1 %84, label %86, label %80
86: ; preds = %80
%87 = ptrtoint i8* %81 to i64
%88 = trunc i64 %87 to i32
%89 = load i8*, i8** %4
%90 = ptrtoint i8* %89 to i64
%91 = trunc i64 %90 to i32
%92 = sub i32 %88, %91
%93 = add i32 %92, -2
%94 = call i32 @llvm.fshl.i32(i32 %93, i32 %93, i32 31)
switch i32 %94, label %166 [
i32 0, label %95
i32 1, label %107
i32 2, label %119
i32 3, label %131
i32 7, label %143
]
95: ; preds = %86
%96 = bitcast i8* %36 to i32*
%97 = call i32 @sscanf(i8* %89, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32* %96)
%98 = icmp eq i32 %97, 1
br i1 %98, label %103, label %99
99: ; preds = %95
%100 = load i32, i32* @stderr
%101 = call i32 (i32, i8*, ...) @fprintf(i32 %100, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0), i32 119, i8* %2)
%102 = call i32 @exit(i32 1)
unreachable
103: ; preds = %95
%104 = load i8*, i8** %4
%105 = getelementptr inbounds i8, i8* %104, i64 2
store i8* %105, i8** %4
%106 = getelementptr inbounds i8, i8* %36, i64 1
br label %174
107: ; preds = %86
%108 = bitcast i8* %36 to i32*
%109 = call i32 @sscanf(i8* %89, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0), i32* %108)
%110 = icmp eq i32 %109, 1
br i1 %110, label %115, label %111
111: ; preds = %107
%112 = load i32, i32* @stderr
%113 = call i32 (i32, i8*, ...) @fprintf(i32 %112, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0), i32 125, i8* %2)
%114 = call i32 @exit(i32 1)
unreachable
115: ; preds = %107
%116 = load i8*, i8** %4
%117 = getelementptr inbounds i8, i8* %116, i64 4
store i8* %117, i8** %4
%118 = getelementptr inbounds i8, i8* %36, i64 2
br label %174
119: ; preds = %86
%120 = bitcast i8* %36 to i32*
%121 = call i32 @sscanf(i8* %89, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.9, i64 0, i64 0), i32* %120)
%122 = icmp eq i32 %121, 1
br i1 %122, label %127, label %123
123: ; preds = %119
%124 = load i32, i32* @stderr
%125 = call i32 (i32, i8*, ...) @fprintf(i32 %124, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0), i32 131, i8* %2)
%126 = call i32 @exit(i32 1)
unreachable
127: ; preds = %119
%128 = load i8*, i8** %4
%129 = getelementptr inbounds i8, i8* %128, i64 6
store i8* %129, i8** %4
%130 = getelementptr inbounds i8, i8* %36, i64 3
br label %174
131: ; preds = %86
%132 = bitcast i8* %36 to i32*
%133 = call i32 @sscanf(i8* %89, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i32* %132)
%134 = icmp eq i32 %133, 1
br i1 %134, label %139, label %135
135: ; preds = %131
%136 = load i32, i32* @stderr
%137 = call i32 (i32, i8*, ...) @fprintf(i32 %136, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0), i32 137, i8* %2)
%138 = call i32 @exit(i32 1)
unreachable
139: ; preds = %131
%140 = load i8*, i8** %4
%141 = getelementptr inbounds i8, i8* %140, i64 8
store i8* %141, i8** %4
%142 = getelementptr inbounds i8, i8* %36, i64 4
br label %174
143: ; preds = %86
%144 = getelementptr inbounds i8, i8* %36, i64 4
%145 = bitcast i8* %144 to i32*
%146 = call i32 @sscanf(i8* %89, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i32* %145)
%147 = icmp eq i32 %146, 1
br i1 %147, label %152, label %148
148: ; preds = %143
%149 = load i32, i32* @stderr
%150 = call i32 (i32, i8*, ...) @fprintf(i32 %149, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0), i32 144, i8* %2)
%151 = call i32 @exit(i32 1)
unreachable
152: ; preds = %143
%153 = load i8*, i8** %4
%154 = getelementptr inbounds i8, i8* %153, i64 8
store i8* %154, i8** %4
%155 = bitcast i8* %36 to i32*
%156 = call i32 @sscanf(i8* %154, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.10, i64 0, i64 0), i32* %155)
%157 = icmp eq i32 %156, 1
br i1 %157, label %162, label %158
158: ; preds = %152
%159 = load i32, i32* @stderr
%160 = call i32 (i32, i8*, ...) @fprintf(i32 %159, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0), i32 148, i8* %2)
%161 = call i32 @exit(i32 1)
unreachable
162: ; preds = %152
%163 = load i8*, i8** %4
%164 = getelementptr inbounds i8, i8* %163, i64 8
store i8* %164, i8** %4
%165 = getelementptr inbounds i8, i8* %36, i64 8
br label %174
166: ; preds = %86
%167 = load i32, i32* @stderr
%168 = call i32 (i32, i8*, ...) @fprintf(i32 %167, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0), i32 154, i8* %2)
%169 = call i32 @exit(i32 1)
unreachable
170: ; preds = %35
%171 = load i32, i32* @stderr
%172 = call i32 (i32, i8*, ...) @fprintf(i32 %171, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0), i32 158, i8* %2)
%173 = call i32 @exit(i32 1)
unreachable
174: ; preds = %42, %42, %103, %115, %127, %139, %162
%175 = phi i8* [ %165, %162 ], [ %142, %139 ], [ %130, %127 ], [ %118, %115 ], [ %106, %103 ], [ %44, %42 ], [ %44, %42 ]
%176 = call i64 @advance(i8** %4)
%177 = icmp eq i64 %176, 0
br i1 %177, label %35, label %178
178: ; preds = %174, %29
%179 = phi i8* [ %30, %29 ], [ %175, %174 ]
%180 = load i32, i32* %5
%181 = ptrtoint i8* %179 to i64
%182 = ptrtoint [1024 x i8]* %6 to i64
%183 = sub i64 %181, %182
%184 = trunc i64 %183 to i32
%185 = call i32 @dump_record(i32* %0, i32 %180, i32 %184, i8* %30)
ret void
}