#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 */
int /*<<< orphan*/ sprintf(char *, char *, ...);
scalar_t__ strchr(char *, int);
scalar_t__ strcmp(char *, char *);
int /*<<< orphan*/ strcpy(char *, char *);
scalar_t__ strncmp(char *, char *, int);
int /*<<< orphan*/ strncpy(char *, char *, int);
int spctyp(const char ctypei[9], char stype[], char scode[], char sname[],
           char units[], char *ptype, char *xtype, int *restreq) {
  char ctype[9], ptype_t, sname_t[32], units_t[8], xtype_t;
  int restreq_t = 0;
  sprintf(ctype, "%-8s", ctypei);
  ctype[8] = '\0';
  if (ctype[4] == '-') {
    if (strcmp(ctype + 5, "LSR") == 0 || strcmp(ctype + 5, "HEL") == 0 ||
        strcmp(ctype + 5, "OBS") == 0) {
      if (strncmp(ctype, "FREQ", 4) == 0 || strncmp(ctype, "VELO", 4) == 0) {
        strcpy(ctype + 4, "    ");
      } else if (strncmp(ctype, "FELO", 4) == 0) {
        strcpy(ctype, "VOPT-F2W");
      }
    }
  }
  if (strncmp(ctype, "FREQ", 4) == 0) {
    strcpy(sname_t, "Frequency");
    strcpy(units_t, "Hz");
    ptype_t = 'F';
  } else if (strncmp(ctype, "AFRQ", 4) == 0) {
    strcpy(sname_t, "Angular frequency");
    strcpy(units_t, "deg/s");
    ptype_t = 'F';
  } else if (strncmp(ctype, "ENER", 4) == 0) {
    strcpy(sname_t, "Photon energy");
    strcpy(units_t, "J");
    ptype_t = 'F';
  } else if (strncmp(ctype, "WAVN", 4) == 0) {
    strcpy(sname_t, "Wavenumber");
    strcpy(units_t, "1/m");
    ptype_t = 'F';
  } else if (strncmp(ctype, "VRAD", 4) == 0) {
    strcpy(sname_t, "Radio velocity");
    strcpy(units_t, "m/s");
    ptype_t = 'F';
    restreq_t = 1;
  } else if (strncmp(ctype, "WAVE", 4) == 0) {
    strcpy(sname_t, "Vacuum wavelength");
    strcpy(units_t, "m");
    ptype_t = 'W';
  } else if (strncmp(ctype, "VOPT", 4) == 0) {
    strcpy(sname_t, "Optical velocity");
    strcpy(units_t, "m/s");
    ptype_t = 'W';
    restreq_t = 1;
  } else if (strncmp(ctype, "ZOPT", 4) == 0) {
    strcpy(sname_t, "Redshift");
    strcpy(units_t, "");
    ptype_t = 'W';
    restreq_t = 1;
  } else if (strncmp(ctype, "AWAV", 4) == 0) {
    strcpy(sname_t, "Air wavelength");
    strcpy(units_t, "m");
    ptype_t = 'A';
  } else if (strncmp(ctype, "VELO", 4) == 0) {
    strcpy(sname_t, "Relativistic velocity");
    strcpy(units_t, "m/s");
    ptype_t = 'V';
  } else if (strncmp(ctype, "BETA", 4) == 0) {
    strcpy(sname_t, "Velocity ratio (v/c)");
    strcpy(units_t, "");
    ptype_t = 'V';
  } else {
    return 2;
  }
  if ((xtype_t = ctype[5]) == ' ') {
    if (strcmp(ctype + 4, "    ") != 0) {
      return 2;
    }
    xtype_t = ptype_t;
  } else if (ctype[4] != '-') {
    return 2;
  } else if (strcmp(ctype + 5, "LOG") == 0 || strcmp(ctype + 5, "TAB") == 0) {
  } else if (xtype_t == 'G') {
    if (ctype[6] != 'R') {
      return 2;
    }
    if (ctype[7] == 'I') {
      xtype_t = 'w';
    } else if (ctype[7] == 'A') {
      xtype_t = 'a';
    } else {
      return 2;
    }
  } else if (ctype[6] != '2') {
    return 2;
  } else if (ctype[7] != ptype_t && ctype[7] != '?') {
    return 2;
  } else if (ctype[7] == ctype[5]) {
    sprintf(ctype + 4, "    ");
  }
  if (strchr("FWAwa", (int)xtype_t)) {
    if (ptype_t == 'V') {
      restreq_t += 2;
    }
  } else if (xtype_t == 'V') {
    if (strchr("FWAwa", (int)ptype_t)) {
      restreq_t += 2;
    }
  } else if (strchr("LT", (int)xtype_t) == 0) {
    return 2;
  }
  if (stype) {
    strncpy(stype, ctype, 4);
    stype[4] = '\0';
  }
  if (scode)
    strcpy(scode, ctype + 5);
  if (sname)
    strcpy(sname, sname_t);
  if (units)
    strcpy(units, units_t);
  if (ptype)
    *ptype = ptype_t;
  if (xtype)
    *xtype = xtype_t;
  if (restreq)
    *restreq = restreq_t;
  return 0;
}


x86 assembly (clang, -O0):
<spctyp>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
mov    %r9,-0x38(%rbp)
movl   $0x0,-0x80(%rbp)
lea    -0x41(%rbp),%rdi
mov    -0x10(%rbp),%rdx
lea    0xe5f(%rip),%rsi
mov    $0x0,%al
call   1080 <sprintf@plt>
movb   $0x0,-0x39(%rbp)
movsbl -0x3d(%rbp),%eax
cmp    $0x2d,%eax
jne    12a8 <spctyp+0x148>
lea    -0x41(%rbp),%rdi
add    $0x5,%rdi
lea    0xe3d(%rip),%rsi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
je     1213 <spctyp+0xb3>
lea    -0x41(%rbp),%rdi
add    $0x5,%rdi
lea    0xe23(%rip),%rsi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
je     1213 <spctyp+0xb3>
lea    -0x41(%rbp),%rdi
add    $0x5,%rdi
lea    0xe09(%rip),%rsi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    12a3 <spctyp+0x143>
lea    -0x41(%rbp),%rdi
lea    0xdf3(%rip),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
je     1251 <spctyp+0xf1>
lea    -0x41(%rbp),%rdi
lea    0xdd9(%rip),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    126a <spctyp+0x10a>
lea    -0x41(%rbp),%rdi
add    $0x4,%rdi
lea    0xdbb(%rip),%rsi
call   1050 <strcpy@plt>
jmp    129e <spctyp+0x13e>
lea    -0x41(%rbp),%rdi
lea    0xdab(%rip),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    1299 <spctyp+0x139>
lea    -0x41(%rbp),%rdi
lea    0xd91(%rip),%rsi
call   1050 <strcpy@plt>
jmp    129e <spctyp+0x13e>
jmp    12a3 <spctyp+0x143>
jmp    12a8 <spctyp+0x148>
lea    -0x41(%rbp),%rdi
lea    0xd5e(%rip),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    12f0 <spctyp+0x190>
lea    -0x70(%rbp),%rdi
lea    0xd5c(%rip),%rsi
call   1050 <strcpy@plt>
lea    -0x78(%rbp),%rdi
lea    0xd56(%rip),%rsi
call   1050 <strcpy@plt>
movb   $0x46,-0x42(%rbp)
jmp    1613 <spctyp+0x4b3>
lea    -0x41(%rbp),%rdi
lea    0xd40(%rip),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    1338 <spctyp+0x1d8>
lea    -0x70(%rbp),%rdi
lea    0xd26(%rip),%rsi
call   1050 <strcpy@plt>
lea    -0x78(%rbp),%rdi
lea    0xd28(%rip),%rsi
call   1050 <strcpy@plt>
movb   $0x46,-0x42(%rbp)
jmp    160e <spctyp+0x4ae>
lea    -0x41(%rbp),%rdi
lea    0xd15(%rip),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    1380 <spctyp+0x220>
lea    -0x70(%rbp),%rdi
lea    0xcfb(%rip),%rsi
call   1050 <strcpy@plt>
lea    -0x78(%rbp),%rdi
lea    0xcf9(%rip),%rsi
call   1050 <strcpy@plt>
movb   $0x46,-0x42(%rbp)
jmp    1609 <spctyp+0x4a9>
lea    -0x41(%rbp),%rdi
lea    0xce2(%rip),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    13c8 <spctyp+0x268>
lea    -0x70(%rbp),%rdi
lea    0xcc8(%rip),%rsi
call   1050 <strcpy@plt>
lea    -0x78(%rbp),%rdi
lea    0xcc3(%rip),%rsi
call   1050 <strcpy@plt>
movb   $0x46,-0x42(%rbp)
jmp    1604 <spctyp+0x4a4>
lea    -0x41(%rbp),%rdi
lea    0xcae(%rip),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    1417 <spctyp+0x2b7>
lea    -0x70(%rbp),%rdi
lea    0xc94(%rip),%rsi
call   1050 <strcpy@plt>
lea    -0x78(%rbp),%rdi
lea    0xc93(%rip),%rsi
call   1050 <strcpy@plt>
movb   $0x46,-0x42(%rbp)
movl   $0x1,-0x80(%rbp)
jmp    15ff <spctyp+0x49f>
lea    -0x41(%rbp),%rdi
lea    0xc77(%rip),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    145f <spctyp+0x2ff>
lea    -0x70(%rbp),%rdi
lea    0xc5d(%rip),%rsi
call   1050 <strcpy@plt>
lea    -0x78(%rbp),%rdi
lea    0xc2e(%rip),%rsi
call   1050 <strcpy@plt>
movb   $0x57,-0x42(%rbp)
jmp    15fa <spctyp+0x49a>
lea    -0x41(%rbp),%rdi
lea    0xc46(%rip),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    14ae <spctyp+0x34e>
lea    -0x70(%rbp),%rdi
lea    0xc2c(%rip),%rsi
call   1050 <strcpy@plt>
lea    -0x78(%rbp),%rdi
lea    0xbfc(%rip),%rsi
call   1050 <strcpy@plt>
movb   $0x57,-0x42(%rbp)
movl   $0x1,-0x80(%rbp)
jmp    15f5 <spctyp+0x495>
lea    -0x41(%rbp),%rdi
lea    0xc0d(%rip),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    14fd <spctyp+0x39d>
lea    -0x70(%rbp),%rdi
lea    0xbf3(%rip),%rsi
call   1050 <strcpy@plt>
lea    -0x78(%rbp),%rdi
lea    0xb37(%rip),%rsi
call   1050 <strcpy@plt>
movb   $0x57,-0x42(%rbp)
movl   $0x1,-0x80(%rbp)
jmp    15f0 <spctyp+0x490>
lea    -0x41(%rbp),%rdi
lea    0xbcc(%rip),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    1545 <spctyp+0x3e5>
lea    -0x70(%rbp),%rdi
lea    0xbb2(%rip),%rsi
call   1050 <strcpy@plt>
lea    -0x78(%rbp),%rdi
lea    0xb48(%rip),%rsi
call   1050 <strcpy@plt>
movb   $0x41,-0x42(%rbp)
jmp    15eb <spctyp+0x48b>
lea    -0x41(%rbp),%rdi
lea    0xac6(%rip),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    158d <spctyp+0x42d>
lea    -0x70(%rbp),%rdi
lea    0xb79(%rip),%rsi
call   1050 <strcpy@plt>
lea    -0x78(%rbp),%rdi
lea    0xb16(%rip),%rsi
call   1050 <strcpy@plt>
movb   $0x56,-0x42(%rbp)
jmp    15e6 <spctyp+0x486>
lea    -0x41(%rbp),%rdi
lea    0xb66(%rip),%rsi
mov    $0x4,%edx
call   1040 <strncmp@plt>
cmp    $0x0,%rax
jne    15d5 <spctyp+0x475>
lea    -0x70(%rbp),%rdi
lea    0xb4c(%rip),%rsi
call   1050 <strcpy@plt>
lea    -0x78(%rbp),%rdi
lea    0xa58(%rip),%rsi
call   1050 <strcpy@plt>
movb   $0x56,-0x42(%rbp)
jmp    15e1 <spctyp+0x481>
movl   $0x2,-0x4(%rbp)
jmp    18f0 <spctyp+0x790>
jmp    15e6 <spctyp+0x486>
jmp    15eb <spctyp+0x48b>
jmp    15f0 <spctyp+0x490>
jmp    15f5 <spctyp+0x495>
jmp    15fa <spctyp+0x49a>
jmp    15ff <spctyp+0x49f>
jmp    1604 <spctyp+0x4a4>
jmp    1609 <spctyp+0x4a9>
jmp    160e <spctyp+0x4ae>
jmp    1613 <spctyp+0x4b3>
mov    -0x3c(%rbp),%al
mov    %al,-0x79(%rbp)
movsbl %al,%eax
cmp    $0x20,%eax
jne    165a <spctyp+0x4fa>
lea    -0x41(%rbp),%rdi
add    $0x4,%rdi
lea    0x9e7(%rip),%rsi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
je     164f <spctyp+0x4ef>
movl   $0x2,-0x4(%rbp)
jmp    18f0 <spctyp+0x790>
mov    -0x42(%rbp),%al
mov    %al,-0x79(%rbp)
jmp    17a2 <spctyp+0x642>
movsbl -0x3d(%rbp),%eax
cmp    $0x2d,%eax
je     1673 <spctyp+0x513>
movl   $0x2,-0x4(%rbp)
jmp    18f0 <spctyp+0x790>
lea    -0x41(%rbp),%rdi
add    $0x5,%rdi
lea    0xa96(%rip),%rsi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
je     16af <spctyp+0x54f>
lea    -0x41(%rbp),%rdi
add    $0x5,%rdi
lea    0xa7c(%rip),%rsi
call   1070 <strcmp@plt>
cmp    $0x0,%rax
jne    16b4 <spctyp+0x554>
jmp    1798 <spctyp+0x638>
movsbl -0x79(%rbp),%eax
cmp    $0x47,%eax
jne    171c <spctyp+0x5bc>
movsbl -0x3b(%rbp),%eax
cmp    $0x52,%eax
je     16da <spctyp+0x57a>
movl   $0x2,-0x4(%rbp)
jmp    18f0 <spctyp+0x790>
movsbl -0x3a(%rbp),%eax
cmp    $0x49,%eax
jne    16f0 <spctyp+0x590>
movb   $0x77,-0x79(%rbp)
jmp    1717 <spctyp+0x5b7>
movsbl -0x3a(%rbp),%eax
cmp    $0x41,%eax
jne    1706 <spctyp+0x5a6>
movb   $0x61,-0x79(%rbp)
jmp    1712 <spctyp+0x5b2>
movl   $0x2,-0x4(%rbp)
jmp    18f0 <spctyp+0x790>
jmp    1717 <spctyp+0x5b7>
jmp    1793 <spctyp+0x633>
movsbl -0x3b(%rbp),%eax
cmp    $0x32,%eax
je     1735 <spctyp+0x5d5>
movl   $0x2,-0x4(%rbp)
jmp    18f0 <spctyp+0x790>
movsbl -0x3a(%rbp),%eax
movsbl -0x42(%rbp),%ecx
cmp    %ecx,%eax
je     175e <spctyp+0x5fe>
movsbl -0x3a(%rbp),%eax
cmp    $0x3f,%eax
je     175e <spctyp+0x5fe>
movl   $0x2,-0x4(%rbp)
jmp    18f0 <spctyp+0x790>
movsbl -0x3a(%rbp),%eax
movsbl -0x3c(%rbp),%ecx
cmp    %ecx,%eax
jne    1784 <spctyp+0x624>
lea    -0x41(%rbp),%rdi
add    $0x4,%rdi
lea    0x89e(%rip),%rsi
mov    $0x0,%al
call   1080 <sprintf@plt>
jmp    1789 <spctyp+0x629>
jmp    178e <spctyp+0x62e>
jmp    1793 <spctyp+0x633>
jmp    1798 <spctyp+0x638>
jmp    179d <spctyp+0x63d>
jmp    17a2 <spctyp+0x642>
movsbl -0x79(%rbp),%esi
lea    0x973(%rip),%rdi
call   1060 <strchr@plt>
cmp    $0x0,%rax
je     17d7 <spctyp+0x677>
movsbl -0x42(%rbp),%eax
cmp    $0x56,%eax
jne    17d2 <spctyp+0x672>
mov    -0x80(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x80(%rbp)
jmp    183c <spctyp+0x6dc>
movsbl -0x79(%rbp),%eax
cmp    $0x56,%eax
jne    180c <spctyp+0x6ac>
movsbl -0x42(%rbp),%esi
lea    0x931(%rip),%rdi
call   1060 <strchr@plt>
cmp    $0x0,%rax
je     1807 <spctyp+0x6a7>
mov    -0x80(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x80(%rbp)
jmp    1837 <spctyp+0x6d7>
movsbl -0x79(%rbp),%esi
lea    0x90f(%rip),%rdi
call   1060 <strchr@plt>
cmp    $0x0,%rax
jne    1832 <spctyp+0x6d2>
movl   $0x2,-0x4(%rbp)
jmp    18f0 <spctyp+0x790>
jmp    1837 <spctyp+0x6d7>
jmp    183c <spctyp+0x6dc>
cmpq   $0x0,-0x18(%rbp)
je     1861 <spctyp+0x701>
mov    -0x18(%rbp),%rdi
lea    -0x41(%rbp),%rsi
mov    $0x4,%edx
call   1030 <strncpy@plt>
mov    -0x18(%rbp),%rax
movb   $0x0,0x4(%rax)
cmpq   $0x0,-0x20(%rbp)
je     187d <spctyp+0x71d>
mov    -0x20(%rbp),%rdi
lea    -0x41(%rbp),%rsi
add    $0x5,%rsi
call   1050 <strcpy@plt>
cmpq   $0x0,-0x28(%rbp)
je     1895 <spctyp+0x735>
mov    -0x28(%rbp),%rdi
lea    -0x70(%rbp),%rsi
call   1050 <strcpy@plt>
cmpq   $0x0,-0x30(%rbp)
je     18ad <spctyp+0x74d>
mov    -0x30(%rbp),%rdi
lea    -0x78(%rbp),%rsi
call   1050 <strcpy@plt>
cmpq   $0x0,-0x38(%rbp)
je     18c1 <spctyp+0x761>
mov    -0x42(%rbp),%cl
mov    -0x38(%rbp),%rax
mov    %cl,(%rax)
cmpq   $0x0,0x10(%rbp)
je     18d5 <spctyp+0x775>
mov    -0x79(%rbp),%cl
mov    0x10(%rbp),%rax
mov    %cl,(%rax)
cmpq   $0x0,0x18(%rbp)
je     18e9 <spctyp+0x789>
mov    -0x80(%rbp),%ecx
mov    0x18(%rbp),%rax
mov    %ecx,(%rax)
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<spctyp>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x68,%rsp
mov    %r9,%r15
mov    %r8,0x30(%rsp)
mov    %rcx,0x28(%rsp)
mov    %rdx,0x20(%rsp)
mov    %rsi,0x18(%rsp)
mov    %rdi,%rdx
lea    0xe71(%rip),%rsi
xor    %r12d,%r12d
lea    0xb(%rsp),%rdi
xor    %eax,%eax
call   1080 <sprintf@plt>
movb   $0x0,0x13(%rsp)
lea    0xf(%rsp),%rbx
cmpb   $0x2d,0xf(%rsp)
jne    1262 <spctyp+0x102>
lea    0x10(%rsp),%rbp
lea    0xe46(%rip),%rsi
mov    %rbp,%rdi
call   1070 <strcmp@plt>
test   %rax,%rax
je     11f4 <spctyp+0x94>
lea    0xe36(%rip),%rsi
mov    %rbp,%rdi
call   1070 <strcmp@plt>
test   %rax,%rax
je     11f4 <spctyp+0x94>
lea    0xe26(%rip),%rsi
mov    %rbp,%rdi
call   1070 <strcmp@plt>
test   %rax,%rax
jne    1262 <spctyp+0x102>
lea    0xe16(%rip),%rsi
lea    0xb(%rsp),%rdi
mov    $0x4,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     1253 <spctyp+0xf3>
lea    0xe00(%rip),%rsi
lea    0xb(%rsp),%rdi
mov    $0x4,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     1253 <spctyp+0xf3>
lea    0xdef(%rip),%rsi
lea    0xb(%rsp),%rdi
mov    $0x4,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
jne    1262 <spctyp+0x102>
lea    0xdd9(%rip),%rsi
lea    0xb(%rsp),%rdi
jmp    125d <spctyp+0xfd>
lea    0xdc1(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcpy@plt>
lea    0xda8(%rip),%rsi
lea    0xb(%rsp),%rdi
mov    $0x4,%edx
call   1040 <strncmp@plt>
movb   $0x46,0xa(%rsp)
test   %rax,%rax
je     140e <spctyp+0x2ae>
lea    0xdae(%rip),%rsi
lea    0xb(%rsp),%rdi
mov    $0x4,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     1429 <spctyp+0x2c9>
lea    0xdac(%rip),%rsi
lea    0xb(%rsp),%rdi
mov    $0x4,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     1447 <spctyp+0x2e7>
lea    0xda2(%rip),%rsi
lea    0xb(%rsp),%rdi
mov    $0x4,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     1462 <spctyp+0x302>
lea    0xd97(%rip),%rsi
lea    0xb(%rsp),%rdi
mov    $0x4,%edx
call   1040 <strncmp@plt>
mov    $0x1,%r12d
lea    0xd8f(%rip),%rbp
test   %rax,%rax
je     147d <spctyp+0x31d>
mov    %rbx,%r13
mov    %r15,%rbx
lea    0xd7d(%rip),%rsi
lea    0xb(%rsp),%rdi
mov    $0x4,%edx
call   1040 <strncmp@plt>
movb   $0x57,0xa(%rsp)
lea    0xd48(%rip),%r14
test   %rax,%rax
je     148e <spctyp+0x32e>
lea    0xd69(%rip),%rsi
lea    0xb(%rsp),%rdi
mov    $0x4,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     14a5 <spctyp+0x345>
lea    0xd60(%rip),%rsi
lea    0xb(%rsp),%rdi
mov    $0x4,%edx
call   1040 <strncmp@plt>
lea    0xca3(%rip),%r15
test   %rax,%rax
je     14b6 <spctyp+0x356>
lea    0xd48(%rip),%rsi
lea    0xb(%rsp),%rdi
mov    $0x4,%edx
call   1040 <strncmp@plt>
test   %rax,%rax
je     15b2 <spctyp+0x452>
lea    0xc6b(%rip),%rsi
lea    0xb(%rsp),%rdi
mov    $0x4,%edx
call   1040 <strncmp@plt>
movb   $0x56,0xa(%rsp)
test   %rax,%rax
je     16dd <spctyp+0x57d>
mov    $0x1,%al
mov    %eax,0x14(%rsp)
lea    0xd29(%rip),%rsi
lea    0xb(%rsp),%rdi
mov    $0x4,%edx
call   1040 <strncmp@plt>
mov    $0x2,%r14d
test   %rax,%rax
jne    16c3 <spctyp+0x563>
mov    %rbx,%rax
lea    0xd06(%rip),%rsi
mov    %r15,%rbp
xor    %r12d,%r12d
mov    %r13,%rbx
mov    %rax,%r15
jmp    14ce <spctyp+0x36e>
lea    0xc23(%rip),%rbp
lea    0xc12(%rip),%rsi
movl   $0x0,0x14(%rsp)
jmp    14ce <spctyp+0x36e>
movl   $0x0,0x14(%rsp)
lea    0xc1a(%rip),%rbp
lea    0xc01(%rip),%rsi
xor    %r12d,%r12d
jmp    14ce <spctyp+0x36e>
movl   $0x0,0x14(%rsp)
lea    0xc15(%rip),%rbp
lea    0xc00(%rip),%rsi
xor    %r12d,%r12d
jmp    14ce <spctyp+0x36e>
movl   $0x0,0x14(%rsp)
lea    0xc0c(%rip),%rbp
lea    0xbfa(%rip),%rsi
xor    %r12d,%r12d
jmp    14ce <spctyp+0x36e>
movl   $0x0,0x14(%rsp)
lea    0xbfa(%rip),%rsi
jmp    14ce <spctyp+0x36e>
movl   $0x0,0x14(%rsp)
lea    0xc01(%rip),%rsi
mov    %r14,%rbp
xor    %r12d,%r12d
jmp    14c8 <spctyp+0x368>
lea    0xc09(%rip),%rsi
movl   $0x0,0x14(%rsp)
jmp    14c8 <spctyp+0x368>
movl   $0x0,0x14(%rsp)
lea    0xc06(%rip),%rsi
mov    %r15,%rbp
mov    %rbx,%r15
mov    %r13,%rbx
lea    0x40(%rsp),%rdi
call   1050 <strcpy@plt>
lea    0x38(%rsp),%rdi
mov    %rbp,%rsi
call   1050 <strcpy@plt>
lea    0x10(%rsp),%rbp
mov    0x10(%rsp),%r13b
cmp    $0x20,%r13b
jne    151d <spctyp+0x3bd>
lea    0xb1f(%rip),%rsi
mov    %rbx,%rdi
call   1070 <strcmp@plt>
mov    $0x2,%r14d
mov    0xa(%rsp),%r13b
test   %rax,%rax
jne    16c3 <spctyp+0x563>
jmp    15ce <spctyp+0x46e>
mov    $0x2,%r14d
cmpb   $0x2d,0xf(%rsp)
jne    16c3 <spctyp+0x563>
lea    0xbe3(%rip),%rsi
mov    %rbp,%rdi
call   1070 <strcmp@plt>
test   %rax,%rax
je     15ce <spctyp+0x46e>
lea    0xbcf(%rip),%rsi
mov    %rbp,%rdi
call   1070 <strcmp@plt>
test   %rax,%rax
je     15ce <spctyp+0x46e>
mov    0x11(%rsp),%al
cmp    $0x47,%r13b
jne    1581 <spctyp+0x421>
cmp    $0x52,%al
jne    16c3 <spctyp+0x563>
mov    0x12(%rsp),%al
cmp    $0x49,%al
je     15cb <spctyp+0x46b>
cmp    $0x41,%al
jne    16c3 <spctyp+0x563>
mov    $0x61,%r13b
jmp    15ce <spctyp+0x46e>
cmp    $0x32,%al
jne    16c3 <spctyp+0x563>
movsbl 0x12(%rsp),%eax
cmp    $0x3f,%eax
je     15a0 <spctyp+0x440>
movzbl 0xa(%rsp),%ecx
cmp    %ecx,%eax
jne    16c3 <spctyp+0x563>
cmp    0x10(%rsp),%al
jne    15ce <spctyp+0x46e>
movb   $0x0,0x4(%rbx)
movl   $0x20202020,(%rbx)
jmp    15ce <spctyp+0x46e>
movl   $0x0,0x14(%rsp)
movb   $0x41,0xa(%rsp)
lea    0xb13(%rip),%rsi
jmp    149d <spctyp+0x33d>
mov    $0x77,%r13b
mov    %rbp,%r14
movsbl %r13b,%ebx
lea    0xb44(%rip),%rdi
mov    %ebx,%esi
call   1060 <strchr@plt>
test   %rax,%rax
je     15fb <spctyp+0x49b>
lea    0x2(%r12),%eax
cmpb   $0x0,0x14(%rsp)
cmove  %r12d,%eax
mov    %eax,%r12d
jmp    163a <spctyp+0x4da>
cmp    $0x56,%r13b
jne    1623 <spctyp+0x4c3>
movzbl 0xa(%rsp),%esi
lea    0xb13(%rip),%rdi
call   1060 <strchr@plt>
lea    0x2(%r12),%ecx
test   %rax,%rax
cmove  %r12d,%ecx
mov    %ecx,%r12d
jmp    163a <spctyp+0x4da>
lea    0xafc(%rip),%rdi
mov    %ebx,%esi
call   1060 <strchr@plt>
test   %rax,%rax
je     16d5 <spctyp+0x575>
mov    0x18(%rsp),%rbp
test   %rbp,%rbp
je     165a <spctyp+0x4fa>
lea    0xb(%rsp),%rsi
mov    %rbp,%rdi
mov    $0x4,%edx
call   1030 <strncpy@plt>
movb   $0x0,0x4(%rbp)
mov    0x20(%rsp),%rdi
test   %rdi,%rdi
je     166c <spctyp+0x50c>
mov    %r14,%rsi
call   1050 <strcpy@plt>
mov    0x28(%rsp),%rdi
test   %rdi,%rdi
je     1680 <spctyp+0x520>
lea    0x40(%rsp),%rsi
call   1050 <strcpy@plt>
mov    0x30(%rsp),%rdi
test   %rdi,%rdi
je     1694 <spctyp+0x534>
lea    0x38(%rsp),%rsi
call   1050 <strcpy@plt>
mov    0xa0(%rsp),%rax
test   %r15,%r15
je     16a8 <spctyp+0x548>
mov    0xa(%rsp),%cl
mov    %cl,(%r15)
mov    0xa8(%rsp),%rcx
test   %rax,%rax
je     16b8 <spctyp+0x558>
mov    %r13b,(%rax)
xor    %r14d,%r14d
test   %rcx,%rcx
je     16c3 <spctyp+0x563>
mov    %r12d,(%rcx)
mov    %r14d,%eax
add    $0x68,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    $0x2,%r14d
jmp    16c3 <spctyp+0x563>
mov    $0x1,%al
mov    %eax,0x14(%rsp)
lea    0x9fe(%rip),%rsi
jmp    14a0 <spctyp+0x340>

LLVM IR (-O0):
@.str = [5 x i8] c"%-8s\00"
@.str.1 = [4 x i8] c"LSR\00"
@.str.2 = [4 x i8] c"HEL\00"
@.str.3 = [4 x i8] c"OBS\00"
@.str.4 = [5 x i8] c"FREQ\00"
@.str.5 = [5 x i8] c"VELO\00"
@.str.6 = [5 x i8] c" \00"
@.str.7 = [5 x i8] c"FELO\00"
@.str.8 = [9 x i8] c"VOPT-F2W\00"
@.str.9 = [10 x i8] c"Frequency\00"
@.str.10 = [3 x i8] c"Hz\00"
@.str.11 = [5 x i8] c"AFRQ\00"
@.str.12 = [18 x i8] c"Angular frequency\00"
@.str.13 = [6 x i8] c"deg/s\00"
@.str.14 = [5 x i8] c"ENER\00"
@.str.15 = [14 x i8] c"Photon energy\00"
@.str.16 = [2 x i8] c"J\00"
@.str.17 = [5 x i8] c"WAVN\00"
@.str.18 = [11 x i8] c"Wavenumber\00"
@.str.19 = [4 x i8] c"1/m\00"
@.str.20 = [5 x i8] c"VRAD\00"
@.str.21 = [15 x i8] c"Radio velocity\00"
@.str.22 = [4 x i8] c"m/s\00"
@.str.23 = [5 x i8] c"WAVE\00"
@.str.24 = [18 x i8] c"Vacuum wavelength\00"
@.str.25 = [2 x i8] c"m\00"
@.str.26 = [5 x i8] c"VOPT\00"
@.str.27 = [17 x i8] c"Optical velocity\00"
@.str.28 = [5 x i8] c"ZOPT\00"
@.str.29 = [9 x i8] c"Redshift\00"
@.str.30 = [1 x i8] zeroinitializer
@.str.31 = [5 x i8] c"AWAV\00"
@.str.32 = [15 x i8] c"Air wavelength\00"
@.str.33 = [22 x i8] c"Relativistic velocity\00"
@.str.34 = [5 x i8] c"BETA\00"
@.str.35 = [21 x i8] c"Velocity ratio (v/c)\00"
@.str.36 = [4 x i8] c"LOG\00"
@.str.37 = [4 x i8] c"TAB\00"
@.str.38 = [6 x i8] c"FWAwa\00"
@.str.39 = [3 x i8] c"LT\00"
define i32 @spctyp(i8* %0, i8* %1, i8* %2, i8* %3, i8* %4, i8* %5, i8* %6, i32* %7) {
%9 = alloca i32
%10 = alloca i8*
%11 = alloca i8*
%12 = alloca i8*
%13 = alloca i8*
%14 = alloca i8*
%15 = alloca i8*
%16 = alloca i8*
%17 = alloca i32*
%18 = alloca [9 x i8]
%19 = alloca i8
%20 = alloca [32 x i8]
%21 = alloca [8 x i8]
%22 = alloca i8
%23 = alloca i32
store i8* %0, i8** %10
store i8* %1, i8** %11
store i8* %2, i8** %12
store i8* %3, i8** %13
store i8* %4, i8** %14
store i8* %5, i8** %15
store i8* %6, i8** %16
store i32* %7, i32** %17
store i32 0, i32* %23
%24 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%25 = load i8*, i8** %10
%26 = call i32 (i8*, i8*, ...) @sprintf(i8* %24, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i8* %25)
%27 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 8
store i8 0, i8* %27
%28 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 4
%29 = load i8, i8* %28
%30 = sext i8 %29 to i32
%31 = icmp eq i32 %30, 45
br i1 %31, label %32, label %69
32: ; preds = %8
%33 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%34 = getelementptr inbounds i8, i8* %33, i64 5
%35 = call i64 @strcmp(i8* %34, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0))
%36 = icmp eq i64 %35, 0
br i1 %36, label %47, label %37
37: ; preds = %32
%38 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%39 = getelementptr inbounds i8, i8* %38, i64 5
%40 = call i64 @strcmp(i8* %39, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0))
%41 = icmp eq i64 %40, 0
br i1 %41, label %47, label %42
42: ; preds = %37
%43 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%44 = getelementptr inbounds i8, i8* %43, i64 5
%45 = call i64 @strcmp(i8* %44, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
%46 = icmp eq i64 %45, 0
br i1 %46, label %47, label %68
47: ; preds = %42, %37, %32
%48 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%49 = call i64 @strncmp(i8* %48, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0), i32 4)
%50 = icmp eq i64 %49, 0
br i1 %50, label %55, label %51
51: ; preds = %47
%52 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%53 = call i64 @strncmp(i8* %52, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 4)
%54 = icmp eq i64 %53, 0
br i1 %54, label %55, label %59
55: ; preds = %51, %47
%56 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%57 = getelementptr inbounds i8, i8* %56, i64 4
%58 = call i32 @strcpy(i8* %57, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
br label %67
59: ; preds = %51
%60 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%61 = call i64 @strncmp(i8* %60, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.7, i64 0, i64 0), i32 4)
%62 = icmp eq i64 %61, 0
br i1 %62, label %63, label %66
63: ; preds = %59
%64 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%65 = call i32 @strcpy(i8* %64, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.8, i64 0, i64 0))
br label %66
66: ; preds = %63, %59
br label %67
67: ; preds = %66, %55
br label %68
68: ; preds = %67, %42
br label %69
69: ; preds = %68, %8
%70 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%71 = call i64 @strncmp(i8* %70, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0), i32 4)
%72 = icmp eq i64 %71, 0
br i1 %72, label %73, label %78
73: ; preds = %69
%74 = getelementptr inbounds [32 x i8], [32 x i8]* %20, i64 0, i64 0
%75 = call i32 @strcpy(i8* %74, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0))
%76 = getelementptr inbounds [8 x i8], [8 x i8]* %21, i64 0, i64 0
%77 = call i32 @strcpy(i8* %76, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
store i8 70, i8* %19
br label %179
78: ; preds = %69
%79 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%80 = call i64 @strncmp(i8* %79, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), i32 4)
%81 = icmp eq i64 %80, 0
br i1 %81, label %82, label %87
82: ; preds = %78
%83 = getelementptr inbounds [32 x i8], [32 x i8]* %20, i64 0, i64 0
%84 = call i32 @strcpy(i8* %83, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.12, i64 0, i64 0))
%85 = getelementptr inbounds [8 x i8], [8 x i8]* %21, i64 0, i64 0
%86 = call i32 @strcpy(i8* %85, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.13, i64 0, i64 0))
store i8 70, i8* %19
br label %178
87: ; preds = %78
%88 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%89 = call i64 @strncmp(i8* %88, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), i32 4)
%90 = icmp eq i64 %89, 0
br i1 %90, label %91, label %96
91: ; preds = %87
%92 = getelementptr inbounds [32 x i8], [32 x i8]* %20, i64 0, i64 0
%93 = call i32 @strcpy(i8* %92, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.15, i64 0, i64 0))
%94 = getelementptr inbounds [8 x i8], [8 x i8]* %21, i64 0, i64 0
%95 = call i32 @strcpy(i8* %94, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.16, i64 0, i64 0))
store i8 70, i8* %19
br label %177
96: ; preds = %87
%97 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%98 = call i64 @strncmp(i8* %97, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.17, i64 0, i64 0), i32 4)
%99 = icmp eq i64 %98, 0
br i1 %99, label %100, label %105
100: ; preds = %96
%101 = getelementptr inbounds [32 x i8], [32 x i8]* %20, i64 0, i64 0
%102 = call i32 @strcpy(i8* %101, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.18, i64 0, i64 0))
%103 = getelementptr inbounds [8 x i8], [8 x i8]* %21, i64 0, i64 0
%104 = call i32 @strcpy(i8* %103, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.19, i64 0, i64 0))
store i8 70, i8* %19
br label %176
105: ; preds = %96
%106 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%107 = call i64 @strncmp(i8* %106, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.20, i64 0, i64 0), i32 4)
%108 = icmp eq i64 %107, 0
br i1 %108, label %109, label %114
109: ; preds = %105
%110 = getelementptr inbounds [32 x i8], [32 x i8]* %20, i64 0, i64 0
%111 = call i32 @strcpy(i8* %110, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0))
%112 = getelementptr inbounds [8 x i8], [8 x i8]* %21, i64 0, i64 0
%113 = call i32 @strcpy(i8* %112, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0))
store i8 70, i8* %19
store i32 1, i32* %23
br label %175
114: ; preds = %105
%115 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%116 = call i64 @strncmp(i8* %115, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.23, i64 0, i64 0), i32 4)
%117 = icmp eq i64 %116, 0
br i1 %117, label %118, label %123
118: ; preds = %114
%119 = getelementptr inbounds [32 x i8], [32 x i8]* %20, i64 0, i64 0
%120 = call i32 @strcpy(i8* %119, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.24, i64 0, i64 0))
%121 = getelementptr inbounds [8 x i8], [8 x i8]* %21, i64 0, i64 0
%122 = call i32 @strcpy(i8* %121, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.25, i64 0, i64 0))
store i8 87, i8* %19
br label %174
123: ; preds = %114
%124 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%125 = call i64 @strncmp(i8* %124, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.26, i64 0, i64 0), i32 4)
%126 = icmp eq i64 %125, 0
br i1 %126, label %127, label %132
127: ; preds = %123
%128 = getelementptr inbounds [32 x i8], [32 x i8]* %20, i64 0, i64 0
%129 = call i32 @strcpy(i8* %128, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.27, i64 0, i64 0))
%130 = getelementptr inbounds [8 x i8], [8 x i8]* %21, i64 0, i64 0
%131 = call i32 @strcpy(i8* %130, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0))
store i8 87, i8* %19
store i32 1, i32* %23
br label %173
132: ; preds = %123
%133 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%134 = call i64 @strncmp(i8* %133, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.28, i64 0, i64 0), i32 4)
%135 = icmp eq i64 %134, 0
br i1 %135, label %136, label %141
136: ; preds = %132
%137 = getelementptr inbounds [32 x i8], [32 x i8]* %20, i64 0, i64 0
%138 = call i32 @strcpy(i8* %137, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.29, i64 0, i64 0))
%139 = getelementptr inbounds [8 x i8], [8 x i8]* %21, i64 0, i64 0
%140 = call i32 @strcpy(i8* %139, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.30, i64 0, i64 0))
store i8 87, i8* %19
store i32 1, i32* %23
br label %172
141: ; preds = %132
%142 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%143 = call i64 @strncmp(i8* %142, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.31, i64 0, i64 0), i32 4)
%144 = icmp eq i64 %143, 0
br i1 %144, label %145, label %150
145: ; preds = %141
%146 = getelementptr inbounds [32 x i8], [32 x i8]* %20, i64 0, i64 0
%147 = call i32 @strcpy(i8* %146, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.32, i64 0, i64 0))
%148 = getelementptr inbounds [8 x i8], [8 x i8]* %21, i64 0, i64 0
%149 = call i32 @strcpy(i8* %148, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.25, i64 0, i64 0))
store i8 65, i8* %19
br label %171
150: ; preds = %141
%151 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%152 = call i64 @strncmp(i8* %151, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 4)
%153 = icmp eq i64 %152, 0
br i1 %153, label %154, label %159
154: ; preds = %150
%155 = getelementptr inbounds [32 x i8], [32 x i8]* %20, i64 0, i64 0
%156 = call i32 @strcpy(i8* %155, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.33, i64 0, i64 0))
%157 = getelementptr inbounds [8 x i8], [8 x i8]* %21, i64 0, i64 0
%158 = call i32 @strcpy(i8* %157, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0))
store i8 86, i8* %19
br label %170
159: ; preds = %150
%160 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%161 = call i64 @strncmp(i8* %160, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.34, i64 0, i64 0), i32 4)
%162 = icmp eq i64 %161, 0
br i1 %162, label %163, label %168
163: ; preds = %159
%164 = getelementptr inbounds [32 x i8], [32 x i8]* %20, i64 0, i64 0
%165 = call i32 @strcpy(i8* %164, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.35, i64 0, i64 0))
%166 = getelementptr inbounds [8 x i8], [8 x i8]* %21, i64 0, i64 0
%167 = call i32 @strcpy(i8* %166, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.30, i64 0, i64 0))
store i8 86, i8* %19
br label %169
168: ; preds = %159
store i32 2, i32* %9
br label %355
169: ; preds = %163
br label %170
170: ; preds = %169, %154
br label %171
171: ; preds = %170, %145
br label %172
172: ; preds = %171, %136
br label %173
173: ; preds = %172, %127
br label %174
174: ; preds = %173, %118
br label %175
175: ; preds = %174, %109
br label %176
176: ; preds = %175, %100
br label %177
177: ; preds = %176, %91
br label %178
178: ; preds = %177, %82
br label %179
179: ; preds = %178, %73
%180 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 5
%181 = load i8, i8* %180
store i8 %181, i8* %22
%182 = sext i8 %181 to i32
%183 = icmp eq i32 %182, 32
br i1 %183, label %184, label %192
184: ; preds = %179
%185 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%186 = getelementptr inbounds i8, i8* %185, i64 4
%187 = call i64 @strcmp(i8* %186, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%188 = icmp ne i64 %187, 0
br i1 %188, label %189, label %190
189: ; preds = %184
store i32 2, i32* %9
br label %355
190: ; preds = %184
%191 = load i8, i8* %19
store i8 %191, i8* %22
br label %271
192: ; preds = %179
%193 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 4
%194 = load i8, i8* %193
%195 = sext i8 %194 to i32
%196 = icmp ne i32 %195, 45
br i1 %196, label %197, label %198
197: ; preds = %192
store i32 2, i32* %9
br label %355
198: ; preds = %192
%199 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%200 = getelementptr inbounds i8, i8* %199, i64 5
%201 = call i64 @strcmp(i8* %200, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.36, i64 0, i64 0))
%202 = icmp eq i64 %201, 0
br i1 %202, label %208, label %203
203: ; preds = %198
%204 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%205 = getelementptr inbounds i8, i8* %204, i64 5
%206 = call i64 @strcmp(i8* %205, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.37, i64 0, i64 0))
%207 = icmp eq i64 %206, 0
br i1 %207, label %208, label %209
208: ; preds = %203, %198
br label %269
209: ; preds = %203
%210 = load i8, i8* %22
%211 = sext i8 %210 to i32
%212 = icmp eq i32 %211, 71
br i1 %212, label %213, label %234
213: ; preds = %209
%214 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 6
%215 = load i8, i8* %214
%216 = sext i8 %215 to i32
%217 = icmp ne i32 %216, 82
br i1 %217, label %218, label %219
218: ; preds = %213
store i32 2, i32* %9
br label %355
219: ; preds = %213
%220 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 7
%221 = load i8, i8* %220
%222 = sext i8 %221 to i32
%223 = icmp eq i32 %222, 73
br i1 %223, label %224, label %225
224: ; preds = %219
store i8 119, i8* %22
br label %233
225: ; preds = %219
%226 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 7
%227 = load i8, i8* %226
%228 = sext i8 %227 to i32
%229 = icmp eq i32 %228, 65
br i1 %229, label %230, label %231
230: ; preds = %225
store i8 97, i8* %22
br label %232
231: ; preds = %225
store i32 2, i32* %9
br label %355
232: ; preds = %230
br label %233
233: ; preds = %232, %224
br label %268
234: ; preds = %209
%235 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 6
%236 = load i8, i8* %235
%237 = sext i8 %236 to i32
%238 = icmp ne i32 %237, 50
br i1 %238, label %239, label %240
239: ; preds = %234
store i32 2, i32* %9
br label %355
240: ; preds = %234
%241 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 7
%242 = load i8, i8* %241
%243 = sext i8 %242 to i32
%244 = load i8, i8* %19
%245 = sext i8 %244 to i32
%246 = icmp ne i32 %243, %245
br i1 %246, label %247, label %253
247: ; preds = %240
%248 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 7
%249 = load i8, i8* %248
%250 = sext i8 %249 to i32
%251 = icmp ne i32 %250, 63
br i1 %251, label %252, label %253
252: ; preds = %247
store i32 2, i32* %9
br label %355
253: ; preds = %247, %240
%254 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 7
%255 = load i8, i8* %254
%256 = sext i8 %255 to i32
%257 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 5
%258 = load i8, i8* %257
%259 = sext i8 %258 to i32
%260 = icmp eq i32 %256, %259
br i1 %260, label %261, label %265
261: ; preds = %253
%262 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%263 = getelementptr inbounds i8, i8* %262, i64 4
%264 = call i32 (i8*, i8*, ...) @sprintf(i8* %263, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
br label %265
265: ; preds = %261, %253
br label %266
266: ; preds = %265
br label %267
267: ; preds = %266
br label %268
268: ; preds = %267, %233
br label %269
269: ; preds = %268, %208
br label %270
270: ; preds = %269
br label %271
271: ; preds = %270, %190
%272 = load i8, i8* %22
%273 = sext i8 %272 to i32
%274 = call i64 @strchr(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.38, i64 0, i64 0), i32 %273)
%275 = icmp ne i64 %274, 0
br i1 %275, label %276, label %284
276: ; preds = %271
%277 = load i8, i8* %19
%278 = sext i8 %277 to i32
%279 = icmp eq i32 %278, 86
br i1 %279, label %280, label %283
280: ; preds = %276
%281 = load i32, i32* %23
%282 = add nsw i32 %281, 2
store i32 %282, i32* %23
br label %283
283: ; preds = %280, %276
br label %305
284: ; preds = %271
%285 = load i8, i8* %22
%286 = sext i8 %285 to i32
%287 = icmp eq i32 %286, 86
br i1 %287, label %288, label %297
288: ; preds = %284
%289 = load i8, i8* %19
%290 = sext i8 %289 to i32
%291 = call i64 @strchr(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.38, i64 0, i64 0), i32 %290)
%292 = icmp ne i64 %291, 0
br i1 %292, label %293, label %296
293: ; preds = %288
%294 = load i32, i32* %23
%295 = add nsw i32 %294, 2
store i32 %295, i32* %23
br label %296
296: ; preds = %293, %288
br label %304
297: ; preds = %284
%298 = load i8, i8* %22
%299 = sext i8 %298 to i32
%300 = call i64 @strchr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.39, i64 0, i64 0), i32 %299)
%301 = icmp eq i64 %300, 0
br i1 %301, label %302, label %303
302: ; preds = %297
store i32 2, i32* %9
br label %355
303: ; preds = %297
br label %304
304: ; preds = %303, %296
br label %305
305: ; preds = %304, %283
%306 = load i8*, i8** %11
%307 = icmp ne i8* %306, null
br i1 %307, label %308, label %314
308: ; preds = %305
%309 = load i8*, i8** %11
%310 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%311 = call i32 @strncpy(i8* %309, i8* %310, i32 4)
%312 = load i8*, i8** %11
%313 = getelementptr inbounds i8, i8* %312, i64 4
store i8 0, i8* %313
br label %314
314: ; preds = %308, %305
%315 = load i8*, i8** %12
%316 = icmp ne i8* %315, null
br i1 %316, label %317, label %322
317: ; preds = %314
%318 = load i8*, i8** %12
%319 = getelementptr inbounds [9 x i8], [9 x i8]* %18, i64 0, i64 0
%320 = getelementptr inbounds i8, i8* %319, i64 5
%321 = call i32 @strcpy(i8* %318, i8* %320)
br label %322
322: ; preds = %317, %314
%323 = load i8*, i8** %13
%324 = icmp ne i8* %323, null
br i1 %324, label %325, label %329
325: ; preds = %322
%326 = load i8*, i8** %13
%327 = getelementptr inbounds [32 x i8], [32 x i8]* %20, i64 0, i64 0
%328 = call i32 @strcpy(i8* %326, i8* %327)
br label %329
329: ; preds = %325, %322
%330 = load i8*, i8** %14
%331 = icmp ne i8* %330, null
br i1 %331, label %332, label %336
332: ; preds = %329
%333 = load i8*, i8** %14
%334 = getelementptr inbounds [8 x i8], [8 x i8]* %21, i64 0, i64 0
%335 = call i32 @strcpy(i8* %333, i8* %334)
br label %336
336: ; preds = %332, %329
%337 = load i8*, i8** %15
%338 = icmp ne i8* %337, null
br i1 %338, label %339, label %342
339: ; preds = %336
%340 = load i8, i8* %19
%341 = load i8*, i8** %15
store i8 %340, i8* %341
br label %342
342: ; preds = %339, %336
%343 = load i8*, i8** %16
%344 = icmp ne i8* %343, null
br i1 %344, label %345, label %348
345: ; preds = %342
%346 = load i8, i8* %22
%347 = load i8*, i8** %16
store i8 %346, i8* %347
br label %348
348: ; preds = %345, %342
%349 = load i32*, i32** %17
%350 = icmp ne i32* %349, null
br i1 %350, label %351, label %354
351: ; preds = %348
%352 = load i32, i32* %23
%353 = load i32*, i32** %17
store i32 %352, i32* %353
br label %354
354: ; preds = %351, %348
store i32 0, i32* %9
br label %355
355: ; preds = %354, %302, %252, %239, %231, %218, %197, %189, %168
%356 = load i32, i32* %9
ret i32 %356
}

LLVM IR (-O2):
@.str = [5 x i8] c"%-8s\00"
@.str.1 = [4 x i8] c"LSR\00"
@.str.2 = [4 x i8] c"HEL\00"
@.str.3 = [4 x i8] c"OBS\00"
@.str.4 = [5 x i8] c"FREQ\00"
@.str.5 = [5 x i8] c"VELO\00"
@.str.6 = [5 x i8] c" \00"
@.str.7 = [5 x i8] c"FELO\00"
@.str.8 = [9 x i8] c"VOPT-F2W\00"
@.str.9 = [10 x i8] c"Frequency\00"
@.str.10 = [3 x i8] c"Hz\00"
@.str.11 = [5 x i8] c"AFRQ\00"
@.str.12 = [18 x i8] c"Angular frequency\00"
@.str.13 = [6 x i8] c"deg/s\00"
@.str.14 = [5 x i8] c"ENER\00"
@.str.15 = [14 x i8] c"Photon energy\00"
@.str.16 = [2 x i8] c"J\00"
@.str.17 = [5 x i8] c"WAVN\00"
@.str.18 = [11 x i8] c"Wavenumber\00"
@.str.19 = [4 x i8] c"1/m\00"
@.str.20 = [5 x i8] c"VRAD\00"
@.str.21 = [15 x i8] c"Radio velocity\00"
@.str.22 = [4 x i8] c"m/s\00"
@.str.23 = [5 x i8] c"WAVE\00"
@.str.24 = [18 x i8] c"Vacuum wavelength\00"
@.str.25 = [2 x i8] c"m\00"
@.str.26 = [5 x i8] c"VOPT\00"
@.str.27 = [17 x i8] c"Optical velocity\00"
@.str.28 = [5 x i8] c"ZOPT\00"
@.str.29 = [9 x i8] c"Redshift\00"
@.str.30 = [1 x i8] zeroinitializer
@.str.31 = [5 x i8] c"AWAV\00"
@.str.32 = [15 x i8] c"Air wavelength\00"
@.str.33 = [22 x i8] c"Relativistic velocity\00"
@.str.34 = [5 x i8] c"BETA\00"
@.str.35 = [21 x i8] c"Velocity ratio (v/c)\00"
@.str.36 = [4 x i8] c"LOG\00"
@.str.37 = [4 x i8] c"TAB\00"
@.str.38 = [6 x i8] c"FWAwa\00"
@.str.39 = [3 x i8] c"LT\00"
define i32 @spctyp(i8* %0, i8* %1, i8* %2, i8* %3, i8* %4, i8* writeonly %5, i8* writeonly %6, i32* writeonly %7) {
%9 = alloca [9 x i8]
%10 = alloca [32 x i8]
%11 = alloca [8 x i8]
%12 = getelementptr inbounds [9 x i8], [9 x i8]* %9, i64 0, i64 0
%13 = getelementptr inbounds [32 x i8], [32 x i8]* %10, i64 0, i64 0
%14 = getelementptr inbounds [8 x i8], [8 x i8]* %11, i64 0, i64 0
%15 = call i32 (i8*, i8*, ...) @sprintf(i8* %12, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i8* %0)
%16 = getelementptr inbounds [9 x i8], [9 x i8]* %9, i64 0, i64 8
store i8 0, i8* %16
%17 = getelementptr inbounds [9 x i8], [9 x i8]* %9, i64 0, i64 4
%18 = load i8, i8* %17
%19 = icmp eq i8 %18, 45
br i1 %19, label %20, label %43
20: ; preds = %8
%21 = getelementptr inbounds [9 x i8], [9 x i8]* %9, i64 0, i64 5
%22 = call i64 @strcmp(i8* %21, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0))
%23 = icmp eq i64 %22, 0
br i1 %23, label %30, label %24
24: ; preds = %20
%25 = call i64 @strcmp(i8* %21, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0))
%26 = icmp eq i64 %25, 0
br i1 %26, label %30, label %27
27: ; preds = %24
%28 = call i64 @strcmp(i8* %21, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
%29 = icmp eq i64 %28, 0
br i1 %29, label %30, label %43
30: ; preds = %27, %24, %20
%31 = call i64 @strncmp(i8* %12, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0), i32 4)
%32 = icmp eq i64 %31, 0
br i1 %32, label %36, label %33
33: ; preds = %30
%34 = call i64 @strncmp(i8* %12, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 4)
%35 = icmp eq i64 %34, 0
br i1 %35, label %36, label %38
36: ; preds = %33, %30
%37 = call i32 @strcpy(i8* %17, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
br label %43
38: ; preds = %33
%39 = call i64 @strncmp(i8* %12, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.7, i64 0, i64 0), i32 4)
%40 = icmp eq i64 %39, 0
br i1 %40, label %41, label %43
41: ; preds = %38
%42 = call i32 @strcpy(i8* %12, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.8, i64 0, i64 0))
br label %43
43: ; preds = %27, %38, %41, %36, %8
%44 = call i64 @strncmp(i8* %12, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0), i32 4)
%45 = icmp eq i64 %44, 0
br i1 %45, label %76, label %46
46: ; preds = %43
%47 = call i64 @strncmp(i8* %12, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), i32 4)
%48 = icmp eq i64 %47, 0
br i1 %48, label %76, label %49
49: ; preds = %46
%50 = call i64 @strncmp(i8* %12, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.14, i64 0, i64 0), i32 4)
%51 = icmp eq i64 %50, 0
br i1 %51, label %76, label %52
52: ; preds = %49
%53 = call i64 @strncmp(i8* %12, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.17, i64 0, i64 0), i32 4)
%54 = icmp eq i64 %53, 0
br i1 %54, label %76, label %55
55: ; preds = %52
%56 = call i64 @strncmp(i8* %12, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.20, i64 0, i64 0), i32 4)
%57 = icmp eq i64 %56, 0
br i1 %57, label %76, label %58
58: ; preds = %55
%59 = call i64 @strncmp(i8* %12, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.23, i64 0, i64 0), i32 4)
%60 = icmp eq i64 %59, 0
br i1 %60, label %76, label %61
61: ; preds = %58
%62 = call i64 @strncmp(i8* %12, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.26, i64 0, i64 0), i32 4)
%63 = icmp eq i64 %62, 0
br i1 %63, label %76, label %64
64: ; preds = %61
%65 = call i64 @strncmp(i8* %12, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.28, i64 0, i64 0), i32 4)
%66 = icmp eq i64 %65, 0
br i1 %66, label %76, label %67
67: ; preds = %64
%68 = call i64 @strncmp(i8* %12, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.31, i64 0, i64 0), i32 4)
%69 = icmp eq i64 %68, 0
br i1 %69, label %76, label %70
70: ; preds = %67
%71 = call i64 @strncmp(i8* %12, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), i32 4)
%72 = icmp eq i64 %71, 0
br i1 %72, label %76, label %73
73: ; preds = %70
%74 = call i64 @strncmp(i8* %12, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.34, i64 0, i64 0), i32 4)
%75 = icmp eq i64 %74, 0
br i1 %75, label %76, label %169
76: ; preds = %73, %70, %67, %64, %61, %58, %55, %52, %49, %46, %43
%77 = phi i8* [ getelementptr inbounds ([10 x i8], [10 x i8]* @.str.9, i64 0, i64 0), %43 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.12, i64 0, i64 0), %46 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.15, i64 0, i64 0), %49 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.18, i64 0, i64 0), %52 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.21, i64 0, i64 0), %55 ], [ getelementptr inbounds ([18 x i8], [18 x i8]* @.str.24, i64 0, i64 0), %58 ], [ getelementptr inbounds ([17 x i8], [17 x i8]* @.str.27, i64 0, i64 0), %61 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str.29, i64 0, i64 0), %64 ], [ getelementptr inbounds ([15 x i8], [15 x i8]* @.str.32, i64 0, i64 0), %67 ], [ getelementptr inbounds ([22 x i8], [22 x i8]* @.str.33, i64 0, i64 0), %70 ], [ getelementptr inbounds ([21 x i8], [21 x i8]* @.str.35, i64 0, i64 0), %73 ]
%78 = phi i8* [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0), %43 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.13, i64 0, i64 0), %46 ], [ getelementptr inbounds ([2 x i8], [2 x i8]* @.str.16, i64 0, i64 0), %49 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.19, i64 0, i64 0), %52 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0), %55 ], [ getelementptr inbounds ([2 x i8], [2 x i8]* @.str.25, i64 0, i64 0), %58 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0), %61 ], [ getelementptr inbounds ([1 x i8], [1 x i8]* @.str.30, i64 0, i64 0), %64 ], [ getelementptr inbounds ([2 x i8], [2 x i8]* @.str.25, i64 0, i64 0), %67 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0), %70 ], [ getelementptr inbounds ([1 x i8], [1 x i8]* @.str.30, i64 0, i64 0), %73 ]
%79 = phi i1 [ false, %43 ], [ false, %46 ], [ false, %49 ], [ false, %52 ], [ false, %55 ], [ false, %58 ], [ false, %61 ], [ false, %64 ], [ false, %67 ], [ true, %70 ], [ true, %73 ]
%80 = phi i8 [ 70, %43 ], [ 70, %46 ], [ 70, %49 ], [ 70, %52 ], [ 70, %55 ], [ 87, %58 ], [ 87, %61 ], [ 87, %64 ], [ 65, %67 ], [ 86, %70 ], [ 86, %73 ]
%81 = phi i32 [ 0, %43 ], [ 0, %46 ], [ 0, %49 ], [ 0, %52 ], [ 1, %55 ], [ 0, %58 ], [ 1, %61 ], [ 1, %64 ], [ 0, %67 ], [ 0, %70 ], [ 0, %73 ]
%82 = call i32 @strcpy(i8* %13, i8* %77)
%83 = call i32 @strcpy(i8* %14, i8* %78)
%84 = getelementptr inbounds [9 x i8], [9 x i8]* %9, i64 0, i64 5
%85 = load i8, i8* %84
%86 = icmp eq i8 %85, 32
br i1 %86, label %87, label %90
87: ; preds = %76
%88 = call i64 @strcmp(i8* %17, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%89 = icmp eq i64 %88, 0
br i1 %89, label %123, label %169
90: ; preds = %76
%91 = load i8, i8* %17
%92 = icmp eq i8 %91, 45
br i1 %92, label %93, label %169
93: ; preds = %90
%94 = call i64 @strcmp(i8* %84, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.36, i64 0, i64 0))
%95 = icmp eq i64 %94, 0
br i1 %95, label %123, label %96
96: ; preds = %93
%97 = call i64 @strcmp(i8* %84, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.37, i64 0, i64 0))
%98 = icmp eq i64 %97, 0
br i1 %98, label %123, label %99
99: ; preds = %96
%100 = icmp eq i8 %85, 71
%101 = getelementptr inbounds [9 x i8], [9 x i8]* %9, i64 0, i64 6
%102 = load i8, i8* %101
br i1 %100, label %103, label %109
103: ; preds = %99
%104 = icmp eq i8 %102, 82
br i1 %104, label %105, label %169
105: ; preds = %103
%106 = getelementptr inbounds [9 x i8], [9 x i8]* %9, i64 0, i64 7
%107 = load i8, i8* %106
switch i8 %107, label %169 [
i8 73, label %123
i8 65, label %108
]
108: ; preds = %105
br label %123
109: ; preds = %99
%110 = icmp eq i8 %102, 50
br i1 %110, label %111, label %169
111: ; preds = %109
%112 = getelementptr inbounds [9 x i8], [9 x i8]* %9, i64 0, i64 7
%113 = load i8, i8* %112
%114 = sext i8 %113 to i32
%115 = zext i8 %80 to i32
%116 = icmp ne i32 %114, %115
%117 = icmp ne i8 %113, 63
%118 = and i1 %117, %116
br i1 %118, label %169, label %119
119: ; preds = %111
%120 = load i8, i8* %84
%121 = icmp eq i8 %113, %120
br i1 %121, label %122, label %123
122: ; preds = %119
br label %123
123: ; preds = %105, %87, %108, %122, %119, %93, %96
%124 = phi i8 [ %85, %93 ], [ %85, %96 ], [ 97, %108 ], [ %85, %122 ], [ %85, %119 ], [ %80, %87 ], [ 119, %105 ]
%125 = sext i8 %124 to i32
%126 = call i64 @strchr(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.38, i64 0, i64 0), i32 %125)
%127 = icmp eq i64 %126, 0
br i1 %127, label %131, label %128
128: ; preds = %123
%129 = or i32 %81, 2
%130 = select i1 %79, i32 %129, i32 %81
br label %142
131: ; preds = %123
%132 = icmp eq i8 %124, 86
br i1 %132, label %133, label %139
133: ; preds = %131
%134 = zext i8 %80 to i32
%135 = call i64 @strchr(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.38, i64 0, i64 0), i32 %134)
%136 = icmp eq i64 %135, 0
%137 = or i32 %81, 2
%138 = select i1 %136, i32 %81, i32 %137
br label %142
139: ; preds = %131
%140 = call i64 @strchr(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.39, i64 0, i64 0), i32 %125)
%141 = icmp eq i64 %140, 0
br i1 %141, label %169, label %142
142: ; preds = %133, %128, %139
%143 = phi i32 [ %81, %139 ], [ %130, %128 ], [ %138, %133 ]
%144 = icmp eq i8* %1, null
br i1 %144, label %148, label %145
145: ; preds = %142
%146 = call i32 @strncpy(i8* %1, i8* %12, i32 4)
%147 = getelementptr inbounds i8, i8* %1, i64 4
store i8 0, i8* %147
br label %148
148: ; preds = %145, %142
%149 = icmp eq i8* %2, null
br i1 %149, label %152, label %150
150: ; preds = %148
%151 = call i32 @strcpy(i8* %2, i8* %84)
br label %152
152: ; preds = %150, %148
%153 = icmp eq i8* %3, null
br i1 %153, label %156, label %154
154: ; preds = %152
%155 = call i32 @strcpy(i8* %3, i8* %13)
br label %156
156: ; preds = %154, %152
%157 = icmp eq i8* %4, null
br i1 %157, label %160, label %158
158: ; preds = %156
%159 = call i32 @strcpy(i8* %4, i8* %14)
br label %160
160: ; preds = %158, %156
%161 = icmp eq i8* %5, null
br i1 %161, label %163, label %162
162: ; preds = %160
store i8 %80, i8* %5
br label %163
163: ; preds = %162, %160
%164 = icmp eq i8* %6, null
br i1 %164, label %166, label %165
165: ; preds = %163
store i8 %124, i8* %6
br label %166
166: ; preds = %165, %163
%167 = icmp eq i32* %7, null
br i1 %167, label %169, label %168
168: ; preds = %166
store i32 %143, i32* %7
br label %169
169: ; preds = %166, %168, %139, %111, %109, %105, %103, %90, %87, %73
%170 = phi i32 [ 2, %73 ], [ 2, %87 ], [ 2, %90 ], [ 2, %103 ], [ 2, %105 ], [ 2, %109 ], [ 2, %111 ], [ 2, %139 ], [ 0, %168 ], [ 0, %166 ]
ret i32 %170
}