#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*/ cronsh_log(int, char *, char *);
int /*<<< orphan*/ free(char *);
int /*<<< orphan*/ strcmp(char *, char *);
char *strdup(char const *);
scalar_t__ strlen(char *);
char *strsep(char **, char *);
unsigned int cronsh_options(unsigned int inoptions, const char *options) {
  int negate, exclusive;
  unsigned int outoptions = inoptions, toption;
  char *ref, *string, *token;
  if (options == NULL) {
    return outoptions;
  }
  ref = string = strdup(options);
  if (ref == NULL) {
    return outoptions;
  }
  while ((token = strsep(&string, " ")) != NULL) {
    negate = 0;
    exclusive = 0;
    if (token[0] == '!' || token[0] == '*') {
      if (token[0] == '!') {
        negate = 1;
      } else if (token[0] == '*') {
        exclusive = 1;
      }
      token = &token[1];
    }
    if (strlen(token) == 0) {
      continue;
    }
    if (!strcmp(token, "silent")) {
      toption = (1 << 0);
    } else if (!strcmp(token, "crondefault")) {
      toption = (((1 << 1) | (1 << 2)) | (1 << 3) | (1 << 11) | (1 << 13));
    } else if (!strcmp(token, "capture-stdout")) {
      toption = (1 << 1);
    } else if (!strcmp(token, "capture-stderr")) {
      toption = (1 << 2);
    } else if (!strcmp(token, "capture-all")) {
      toption = ((1 << 1) | (1 << 2));
    } else if (!strcmp(token, "sendto-stdout")) {
      toption = (1 << 3);
    } else if (!strcmp(token, "sendto-file")) {
      toption = (1 << 4);
    } else if (!strcmp(token, "sendto-pipe")) {
      toption = (1 << 5);
    } else if (!strcmp(token, "sendto-all")) {
      toption = ((1 << 3) | (1 << 4) | (1 << 5));
    } else if (!strcmp(token, "sendto-fallback")) {
      toption = (1 << 6);
    } else if (!strcmp(token, "sendif-status")) {
      toption = (1 << 7);
    } else if (!strcmp(token, "sendif-status-ok")) {
      toption = (1 << 8);
    } else if (!strcmp(token, "sendif-status-any")) {
      toption = ((1 << 8) | (1 << 7));
    } else if (!strcmp(token, "sendif-signal")) {
      toption = (1 << 9);
    } else if (!strcmp(token, "sendif-signal-ok")) {
      toption = (1 << 10);
    } else if (!strcmp(token, "sendif-signal-any")) {
      toption = ((1 << 10) | (1 << 9));
    } else if (!strcmp(token, "sendif-stdout")) {
      toption = (1 << 11);
    } else if (!strcmp(token, "sendif-stdout-none")) {
      toption = (1 << 12);
    } else if (!strcmp(token, "sendif-stdout-any")) {
      toption = ((1 << 11) | (1 << 12));
    } else if (!strcmp(token, "sendif-stderr")) {
      toption = (1 << 13);
    } else if (!strcmp(token, "sendif-stderr-none")) {
      toption = (1 << 14);
    } else if (!strcmp(token, "sendif-stderr-any")) {
      toption = ((1 << 13) | (1 << 14));
    } else if (!strcmp(token, "sendif-any")) {
      toption = (((1 << 8) | (1 << 7)) | ((1 << 10) | (1 << 9)) |
                 ((1 << 11) | (1 << 12)) | ((1 << 13) | (1 << 14)));
    } else {
      toption = 0;
      cronsh_log(2, "unknown option: %s", token);
    }
    if (negate == 1) {
      outoptions &= ~toption;
    } else if (exclusive == 1) {
      outoptions = toption;
    } else {
      outoptions |= toption;
    }
  }
  free(ref);
  return outoptions;
}


x86 assembly (clang, -O0):
<cronsh_options>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%eax
mov    %eax,-0x1c(%rbp)
cmpq   $0x0,-0x10(%rbp)
jne    118b <cronsh_options+0x2b>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    168e <cronsh_options+0x52e>
mov    -0x10(%rbp),%rdi
call   1080 <strdup@plt>
mov    %rax,-0x30(%rbp)
mov    %rax,-0x28(%rbp)
cmpq   $0x0,-0x28(%rbp)
jne    11b2 <cronsh_options+0x52>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    168e <cronsh_options+0x52e>
jmp    11b7 <cronsh_options+0x57>
lea    -0x30(%rbp),%rdi
lea    0xe3e(%rip),%rsi
call   1060 <strsep@plt>
mov    %rax,-0x38(%rbp)
cmp    $0x0,%rax
je     167f <cronsh_options+0x51f>
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x21,%eax
je     1203 <cronsh_options+0xa3>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
jne    1247 <cronsh_options+0xe7>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x21,%eax
jne    121f <cronsh_options+0xbf>
movl   $0x1,-0x14(%rbp)
jmp    123b <cronsh_options+0xdb>
mov    -0x38(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2a,%eax
jne    1236 <cronsh_options+0xd6>
movl   $0x1,-0x18(%rbp)
jmp    123b <cronsh_options+0xdb>
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%rax
jne    125f <cronsh_options+0xff>
jmp    11b7 <cronsh_options+0x57>
mov    -0x38(%rbp),%rdi
lea    0xd98(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    1284 <cronsh_options+0x124>
movl   $0x1,-0x20(%rbp)
jmp    163c <cronsh_options+0x4dc>
mov    -0x38(%rbp),%rdi
lea    0xd7a(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    12a9 <cronsh_options+0x149>
movl   $0x280e,-0x20(%rbp)
jmp    1637 <cronsh_options+0x4d7>
mov    -0x38(%rbp),%rdi
lea    0xd61(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    12ce <cronsh_options+0x16e>
movl   $0x2,-0x20(%rbp)
jmp    1632 <cronsh_options+0x4d2>
mov    -0x38(%rbp),%rdi
lea    0xd4b(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    12f3 <cronsh_options+0x193>
movl   $0x4,-0x20(%rbp)
jmp    162d <cronsh_options+0x4cd>
mov    -0x38(%rbp),%rdi
lea    0xd35(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    1318 <cronsh_options+0x1b8>
movl   $0x6,-0x20(%rbp)
jmp    1628 <cronsh_options+0x4c8>
mov    -0x38(%rbp),%rdi
lea    0xd1c(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    133d <cronsh_options+0x1dd>
movl   $0x8,-0x20(%rbp)
jmp    1623 <cronsh_options+0x4c3>
mov    -0x38(%rbp),%rdi
lea    0xd05(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    1362 <cronsh_options+0x202>
movl   $0x10,-0x20(%rbp)
jmp    161e <cronsh_options+0x4be>
mov    -0x38(%rbp),%rdi
lea    0xcec(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    1387 <cronsh_options+0x227>
movl   $0x20,-0x20(%rbp)
jmp    1619 <cronsh_options+0x4b9>
mov    -0x38(%rbp),%rdi
lea    0xcd3(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    13ac <cronsh_options+0x24c>
movl   $0x38,-0x20(%rbp)
jmp    1614 <cronsh_options+0x4b4>
mov    -0x38(%rbp),%rdi
lea    0xcb9(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    13d1 <cronsh_options+0x271>
movl   $0x40,-0x20(%rbp)
jmp    160f <cronsh_options+0x4af>
mov    -0x38(%rbp),%rdi
lea    0xca4(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    13f6 <cronsh_options+0x296>
movl   $0x80,-0x20(%rbp)
jmp    160a <cronsh_options+0x4aa>
mov    -0x38(%rbp),%rdi
lea    0xc8d(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    141b <cronsh_options+0x2bb>
movl   $0x100,-0x20(%rbp)
jmp    1605 <cronsh_options+0x4a5>
mov    -0x38(%rbp),%rdi
lea    0xc79(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    1440 <cronsh_options+0x2e0>
movl   $0x180,-0x20(%rbp)
jmp    1600 <cronsh_options+0x4a0>
mov    -0x38(%rbp),%rdi
lea    0xc66(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    1465 <cronsh_options+0x305>
movl   $0x200,-0x20(%rbp)
jmp    15fb <cronsh_options+0x49b>
mov    -0x38(%rbp),%rdi
lea    0xc4f(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    148a <cronsh_options+0x32a>
movl   $0x400,-0x20(%rbp)
jmp    15f6 <cronsh_options+0x496>
mov    -0x38(%rbp),%rdi
lea    0xc3b(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    14af <cronsh_options+0x34f>
movl   $0x600,-0x20(%rbp)
jmp    15f1 <cronsh_options+0x491>
mov    -0x38(%rbp),%rdi
lea    0xc28(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    14d4 <cronsh_options+0x374>
movl   $0x800,-0x20(%rbp)
jmp    15ec <cronsh_options+0x48c>
mov    -0x38(%rbp),%rdi
lea    0xc11(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    14f9 <cronsh_options+0x399>
movl   $0x1000,-0x20(%rbp)
jmp    15e7 <cronsh_options+0x487>
mov    -0x38(%rbp),%rdi
lea    0xbff(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    151e <cronsh_options+0x3be>
movl   $0x1800,-0x20(%rbp)
jmp    15e2 <cronsh_options+0x482>
mov    -0x38(%rbp),%rdi
lea    0xbec(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    1543 <cronsh_options+0x3e3>
movl   $0x2000,-0x20(%rbp)
jmp    15dd <cronsh_options+0x47d>
mov    -0x38(%rbp),%rdi
lea    0xbd5(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    1568 <cronsh_options+0x408>
movl   $0x4000,-0x20(%rbp)
jmp    15d8 <cronsh_options+0x478>
mov    -0x38(%rbp),%rdi
lea    0xbc3(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    158d <cronsh_options+0x42d>
movl   $0x6000,-0x20(%rbp)
jmp    15d3 <cronsh_options+0x473>
mov    -0x38(%rbp),%rdi
lea    0xbb0(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    15b2 <cronsh_options+0x452>
movl   $0x7f80,-0x20(%rbp)
jmp    15ce <cronsh_options+0x46e>
movl   $0x0,-0x20(%rbp)
mov    -0x38(%rbp),%rdx
mov    $0x2,%edi
lea    0xb8a(%rip),%rsi
call   1070 <cronsh_log@plt>
jmp    15d3 <cronsh_options+0x473>
jmp    15d8 <cronsh_options+0x478>
jmp    15dd <cronsh_options+0x47d>
jmp    15e2 <cronsh_options+0x482>
jmp    15e7 <cronsh_options+0x487>
jmp    15ec <cronsh_options+0x48c>
jmp    15f1 <cronsh_options+0x491>
jmp    15f6 <cronsh_options+0x496>
jmp    15fb <cronsh_options+0x49b>
jmp    1600 <cronsh_options+0x4a0>
jmp    1605 <cronsh_options+0x4a5>
jmp    160a <cronsh_options+0x4aa>
jmp    160f <cronsh_options+0x4af>
jmp    1614 <cronsh_options+0x4b4>
jmp    1619 <cronsh_options+0x4b9>
jmp    161e <cronsh_options+0x4be>
jmp    1623 <cronsh_options+0x4c3>
jmp    1628 <cronsh_options+0x4c8>
jmp    162d <cronsh_options+0x4cd>
jmp    1632 <cronsh_options+0x4d2>
jmp    1637 <cronsh_options+0x4d7>
jmp    163c <cronsh_options+0x4dc>
cmpl   $0x1,-0x14(%rbp)
jne    1657 <cronsh_options+0x4f7>
mov    -0x20(%rbp),%eax
xor    $0xffffffff,%eax
and    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
jmp    167a <cronsh_options+0x51a>
cmpl   $0x1,-0x18(%rbp)
jne    166c <cronsh_options+0x50c>
mov    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
jmp    1675 <cronsh_options+0x515>
mov    -0x20(%rbp),%eax
or     -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
jmp    167a <cronsh_options+0x51a>
jmp    11b7 <cronsh_options+0x57>
mov    -0x28(%rbp),%rdi
call   1030 <free@plt>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cronsh_options>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %edi,%r15d
test   %rsi,%rsi
je     14fb <cronsh_options+0x3ab>
mov    %rsi,%rdi
call   1070 <strdup@plt>
mov    %rax,0x10(%rsp)
test   %rax,%rax
je     14fb <cronsh_options+0x3ab>
mov    %rax,0x8(%rsp)
lea    0xe74(%rip),%rbx
lea    0x10(%rsp),%rbp
jmp    11b8 <cronsh_options+0x68>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    $0x1,%ecx
mov    %r12d,%r14d
movzbl 0x1(%r13),%eax
add    $0x1,%r13
mov    %ecx,%r12d
test   %al,%al
jne    11f7 <cronsh_options+0xa7>
mov    %rbp,%rdi
mov    %rbx,%rsi
call   1050 <strsep@plt>
test   %rax,%rax
je     14f1 <cronsh_options+0x3a1>
mov    %rax,%r13
movzbl (%rax),%eax
xor    %r12d,%r12d
cmp    $0x21,%al
je     11a0 <cronsh_options+0x50>
cmp    $0x2a,%al
jne    11f0 <cronsh_options+0xa0>
mov    $0x1,%r12d
xor    %ecx,%ecx
jmp    11a5 <cronsh_options+0x55>
nopw   0x0(%rax,%rax,1)
xor    %r14d,%r14d
test   %al,%al
je     11b8 <cronsh_options+0x68>
mov    %r13,%rdi
lea    0xe01(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1423 <cronsh_options+0x2d3>
mov    %r13,%rdi
lea    0xdf1(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     142d <cronsh_options+0x2dd>
mov    %r13,%rdi
lea    0xde6(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1437 <cronsh_options+0x2e7>
mov    %r13,%rdi
lea    0xdde(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1441 <cronsh_options+0x2f1>
mov    %r13,%rdi
lea    0xdd6(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     144b <cronsh_options+0x2fb>
mov    %r13,%rdi
lea    0xdcb(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1452 <cronsh_options+0x302>
mov    %r13,%rdi
lea    0xdc2(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1459 <cronsh_options+0x309>
mov    %r13,%rdi
lea    0xdb7(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1460 <cronsh_options+0x310>
mov    %r13,%rdi
lea    0xdac(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1467 <cronsh_options+0x317>
mov    %r13,%rdi
lea    0xda0(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     146e <cronsh_options+0x31e>
mov    %r13,%rdi
lea    0xd99(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1475 <cronsh_options+0x325>
mov    %r13,%rdi
lea    0xd90(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     147c <cronsh_options+0x32c>
mov    %r13,%rdi
lea    0xd8a(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1483 <cronsh_options+0x333>
mov    %r13,%rdi
lea    0xd85(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     148a <cronsh_options+0x33a>
mov    %r13,%rdi
lea    0xd7c(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1491 <cronsh_options+0x341>
mov    %r13,%rdi
lea    0xd76(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     1498 <cronsh_options+0x348>
mov    %r13,%rdi
lea    0xd71(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     149f <cronsh_options+0x34f>
mov    %r13,%rdi
lea    0xd68(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     14a6 <cronsh_options+0x356>
mov    %r13,%rdi
lea    0xd64(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     14ad <cronsh_options+0x35d>
mov    %r13,%rdi
lea    0xd5f(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     14b4 <cronsh_options+0x364>
mov    %r13,%rdi
lea    0xd56(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     14bb <cronsh_options+0x36b>
mov    %r13,%rdi
lea    0xd52(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     14c2 <cronsh_options+0x372>
mov    %r13,%rdi
lea    0xd4d(%rip),%rsi
call   1040 <strcmp@plt>
test   %eax,%eax
je     14c9 <cronsh_options+0x379>
mov    $0x2,%edi
lea    0xd3f(%rip),%rsi
mov    %r13,%rdx
call   1060 <cronsh_log@plt>
xor    %eax,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x1,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x280e,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x2,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x4,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x6,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x8,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x10,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x20,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x38,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x40,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x80,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x100,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x180,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x200,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x400,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x600,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x800,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x1000,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x1800,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x2000,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x4000,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x6000,%eax
jmp    14ce <cronsh_options+0x37e>
mov    $0x7f80,%eax
test   %r12d,%r12d
je     14dd <cronsh_options+0x38d>
not    %eax
and    %eax,%r15d
jmp    11b8 <cronsh_options+0x68>
test   %r14d,%r14d
mov    $0x0,%ecx
cmovne %ecx,%r15d
or     %eax,%r15d
jmp    11b8 <cronsh_options+0x68>
mov    0x8(%rsp),%rdi
call   1030 <free@plt>
mov    %r15d,%eax
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [2 x i8] c" \00"
@.str.1 = [7 x i8] c"silent\00"
@.str.2 = [12 x i8] c"crondefault\00"
@.str.3 = [15 x i8] c"capture-stdout\00"
@.str.4 = [15 x i8] c"capture-stderr\00"
@.str.5 = [12 x i8] c"capture-all\00"
@.str.6 = [14 x i8] c"sendto-stdout\00"
@.str.7 = [12 x i8] c"sendto-file\00"
@.str.8 = [12 x i8] c"sendto-pipe\00"
@.str.9 = [11 x i8] c"sendto-all\00"
@.str.10 = [16 x i8] c"sendto-fallback\00"
@.str.11 = [14 x i8] c"sendif-status\00"
@.str.12 = [17 x i8] c"sendif-status-ok\00"
@.str.13 = [18 x i8] c"sendif-status-any\00"
@.str.14 = [14 x i8] c"sendif-signal\00"
@.str.15 = [17 x i8] c"sendif-signal-ok\00"
@.str.16 = [18 x i8] c"sendif-signal-any\00"
@.str.17 = [14 x i8] c"sendif-stdout\00"
@.str.18 = [19 x i8] c"sendif-stdout-none\00"
@.str.19 = [18 x i8] c"sendif-stdout-any\00"
@.str.20 = [14 x i8] c"sendif-stderr\00"
@.str.21 = [19 x i8] c"sendif-stderr-none\00"
@.str.22 = [18 x i8] c"sendif-stderr-any\00"
@.str.23 = [11 x i8] c"sendif-any\00"
@.str.24 = [19 x i8] c"unknown option: %s\00"
define i32 @cronsh_options(i32 %0, i8* %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8*
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i8*
%11 = alloca i8*
%12 = alloca i8*
store i32 %0, i32* %4
store i8* %1, i8** %5
%13 = load i32, i32* %4
store i32 %13, i32* %8
%14 = load i8*, i8** %5
%15 = icmp eq i8* %14, null
br i1 %15, label %16, label %18
16: ; preds = %2
%17 = load i32, i32* %8
store i32 %17, i32* %3
br label %227
18: ; preds = %2
%19 = load i8*, i8** %5
%20 = call i8* @strdup(i8* %19)
store i8* %20, i8** %11
store i8* %20, i8** %10
%21 = load i8*, i8** %10
%22 = icmp eq i8* %21, null
br i1 %22, label %23, label %25
23: ; preds = %18
%24 = load i32, i32* %8
store i32 %24, i32* %3
br label %227
25: ; preds = %18
br label %26
26: ; preds = %222, %63, %25
%27 = call i8* @strsep(i8** %11, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
store i8* %27, i8** %12
%28 = icmp ne i8* %27, null
br i1 %28, label %29, label %223
29: ; preds = %26
store i32 0, i32* %6
store i32 0, i32* %7
%30 = load i8*, i8** %12
%31 = getelementptr inbounds i8, i8* %30, i64 0
%32 = load i8, i8* %31
%33 = sext i8 %32 to i32
%34 = icmp eq i32 %33, 33
br i1 %34, label %41, label %35
35: ; preds = %29
%36 = load i8*, i8** %12
%37 = getelementptr inbounds i8, i8* %36, i64 0
%38 = load i8, i8* %37
%39 = sext i8 %38 to i32
%40 = icmp eq i32 %39, 42
br i1 %40, label %41, label %59
41: ; preds = %35, %29
%42 = load i8*, i8** %12
%43 = getelementptr inbounds i8, i8* %42, i64 0
%44 = load i8, i8* %43
%45 = sext i8 %44 to i32
%46 = icmp eq i32 %45, 33
br i1 %46, label %47, label %48
47: ; preds = %41
store i32 1, i32* %6
br label %56
48: ; preds = %41
%49 = load i8*, i8** %12
%50 = getelementptr inbounds i8, i8* %49, i64 0
%51 = load i8, i8* %50
%52 = sext i8 %51 to i32
%53 = icmp eq i32 %52, 42
br i1 %53, label %54, label %55
54: ; preds = %48
store i32 1, i32* %7
br label %55
55: ; preds = %54, %48
br label %56
56: ; preds = %55, %47
%57 = load i8*, i8** %12
%58 = getelementptr inbounds i8, i8* %57, i64 1
store i8* %58, i8** %12
br label %59
59: ; preds = %56, %35
%60 = load i8*, i8** %12
%61 = call i64 @strlen(i8* %60)
%62 = icmp eq i64 %61, 0
br i1 %62, label %63, label %64
63: ; preds = %59
br label %26
64: ; preds = %59
%65 = load i8*, i8** %12
%66 = call i32 @strcmp(i8* %65, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0))
%67 = icmp ne i32 %66, 0
br i1 %67, label %69, label %68
68: ; preds = %64
store i32 1, i32* %9
br label %204
69: ; preds = %64
%70 = load i8*, i8** %12
%71 = call i32 @strcmp(i8* %70, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.2, i64 0, i64 0))
%72 = icmp ne i32 %71, 0
br i1 %72, label %74, label %73
73: ; preds = %69
store i32 10254, i32* %9
br label %203
74: ; preds = %69
%75 = load i8*, i8** %12
%76 = call i32 @strcmp(i8* %75, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.3, i64 0, i64 0))
%77 = icmp ne i32 %76, 0
br i1 %77, label %79, label %78
78: ; preds = %74
store i32 2, i32* %9
br label %202
79: ; preds = %74
%80 = load i8*, i8** %12
%81 = call i32 @strcmp(i8* %80, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.4, i64 0, i64 0))
%82 = icmp ne i32 %81, 0
br i1 %82, label %84, label %83
83: ; preds = %79
store i32 4, i32* %9
br label %201
84: ; preds = %79
%85 = load i8*, i8** %12
%86 = call i32 @strcmp(i8* %85, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.5, i64 0, i64 0))
%87 = icmp ne i32 %86, 0
br i1 %87, label %89, label %88
88: ; preds = %84
store i32 6, i32* %9
br label %200
89: ; preds = %84
%90 = load i8*, i8** %12
%91 = call i32 @strcmp(i8* %90, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.6, i64 0, i64 0))
%92 = icmp ne i32 %91, 0
br i1 %92, label %94, label %93
93: ; preds = %89
store i32 8, i32* %9
br label %199
94: ; preds = %89
%95 = load i8*, i8** %12
%96 = call i32 @strcmp(i8* %95, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.7, i64 0, i64 0))
%97 = icmp ne i32 %96, 0
br i1 %97, label %99, label %98
98: ; preds = %94
store i32 16, i32* %9
br label %198
99: ; preds = %94
%100 = load i8*, i8** %12
%101 = call i32 @strcmp(i8* %100, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.8, i64 0, i64 0))
%102 = icmp ne i32 %101, 0
br i1 %102, label %104, label %103
103: ; preds = %99
store i32 32, i32* %9
br label %197
104: ; preds = %99
%105 = load i8*, i8** %12
%106 = call i32 @strcmp(i8* %105, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.9, i64 0, i64 0))
%107 = icmp ne i32 %106, 0
br i1 %107, label %109, label %108
108: ; preds = %104
store i32 56, i32* %9
br label %196
109: ; preds = %104
%110 = load i8*, i8** %12
%111 = call i32 @strcmp(i8* %110, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.10, i64 0, i64 0))
%112 = icmp ne i32 %111, 0
br i1 %112, label %114, label %113
113: ; preds = %109
store i32 64, i32* %9
br label %195
114: ; preds = %109
%115 = load i8*, i8** %12
%116 = call i32 @strcmp(i8* %115, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.11, i64 0, i64 0))
%117 = icmp ne i32 %116, 0
br i1 %117, label %119, label %118
118: ; preds = %114
store i32 128, i32* %9
br label %194
119: ; preds = %114
%120 = load i8*, i8** %12
%121 = call i32 @strcmp(i8* %120, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.12, i64 0, i64 0))
%122 = icmp ne i32 %121, 0
br i1 %122, label %124, label %123
123: ; preds = %119
store i32 256, i32* %9
br label %193
124: ; preds = %119
%125 = load i8*, i8** %12
%126 = call i32 @strcmp(i8* %125, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.13, i64 0, i64 0))
%127 = icmp ne i32 %126, 0
br i1 %127, label %129, label %128
128: ; preds = %124
store i32 384, i32* %9
br label %192
129: ; preds = %124
%130 = load i8*, i8** %12
%131 = call i32 @strcmp(i8* %130, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.14, i64 0, i64 0))
%132 = icmp ne i32 %131, 0
br i1 %132, label %134, label %133
133: ; preds = %129
store i32 512, i32* %9
br label %191
134: ; preds = %129
%135 = load i8*, i8** %12
%136 = call i32 @strcmp(i8* %135, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0))
%137 = icmp ne i32 %136, 0
br i1 %137, label %139, label %138
138: ; preds = %134
store i32 1024, i32* %9
br label %190
139: ; preds = %134
%140 = load i8*, i8** %12
%141 = call i32 @strcmp(i8* %140, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.16, i64 0, i64 0))
%142 = icmp ne i32 %141, 0
br i1 %142, label %144, label %143
143: ; preds = %139
store i32 1536, i32* %9
br label %189
144: ; preds = %139
%145 = load i8*, i8** %12
%146 = call i32 @strcmp(i8* %145, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.17, i64 0, i64 0))
%147 = icmp ne i32 %146, 0
br i1 %147, label %149, label %148
148: ; preds = %144
store i32 2048, i32* %9
br label %188
149: ; preds = %144
%150 = load i8*, i8** %12
%151 = call i32 @strcmp(i8* %150, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.18, i64 0, i64 0))
%152 = icmp ne i32 %151, 0
br i1 %152, label %154, label %153
153: ; preds = %149
store i32 4096, i32* %9
br label %187
154: ; preds = %149
%155 = load i8*, i8** %12
%156 = call i32 @strcmp(i8* %155, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.19, i64 0, i64 0))
%157 = icmp ne i32 %156, 0
br i1 %157, label %159, label %158
158: ; preds = %154
store i32 6144, i32* %9
br label %186
159: ; preds = %154
%160 = load i8*, i8** %12
%161 = call i32 @strcmp(i8* %160, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.20, i64 0, i64 0))
%162 = icmp ne i32 %161, 0
br i1 %162, label %164, label %163
163: ; preds = %159
store i32 8192, i32* %9
br label %185
164: ; preds = %159
%165 = load i8*, i8** %12
%166 = call i32 @strcmp(i8* %165, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.21, i64 0, i64 0))
%167 = icmp ne i32 %166, 0
br i1 %167, label %169, label %168
168: ; preds = %164
store i32 16384, i32* %9
br label %184
169: ; preds = %164
%170 = load i8*, i8** %12
%171 = call i32 @strcmp(i8* %170, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.22, i64 0, i64 0))
%172 = icmp ne i32 %171, 0
br i1 %172, label %174, label %173
173: ; preds = %169
store i32 24576, i32* %9
br label %183
174: ; preds = %169
%175 = load i8*, i8** %12
%176 = call i32 @strcmp(i8* %175, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.23, i64 0, i64 0))
%177 = icmp ne i32 %176, 0
br i1 %177, label %179, label %178
178: ; preds = %174
store i32 32640, i32* %9
br label %182
179: ; preds = %174
store i32 0, i32* %9
%180 = load i8*, i8** %12
%181 = call i32 @cronsh_log(i32 2, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.24, i64 0, i64 0), i8* %180)
br label %182
182: ; preds = %179, %178
br label %183
183: ; preds = %182, %173
br label %184
184: ; preds = %183, %168
br label %185
185: ; preds = %184, %163
br label %186
186: ; preds = %185, %158
br label %187
187: ; preds = %186, %153
br label %188
188: ; preds = %187, %148
br label %189
189: ; preds = %188, %143
br label %190
190: ; preds = %189, %138
br label %191
191: ; preds = %190, %133
br label %192
192: ; preds = %191, %128
br label %193
193: ; preds = %192, %123
br label %194
194: ; preds = %193, %118
br label %195
195: ; preds = %194, %113
br label %196
196: ; preds = %195, %108
br label %197
197: ; preds = %196, %103
br label %198
198: ; preds = %197, %98
br label %199
199: ; preds = %198, %93
br label %200
200: ; preds = %199, %88
br label %201
201: ; preds = %200, %83
br label %202
202: ; preds = %201, %78
br label %203
203: ; preds = %202, %73
br label %204
204: ; preds = %203, %68
%205 = load i32, i32* %6
%206 = icmp eq i32 %205, 1
br i1 %206, label %207, label %212
207: ; preds = %204
%208 = load i32, i32* %9
%209 = xor i32 %208, -1
%210 = load i32, i32* %8
%211 = and i32 %210, %209
store i32 %211, i32* %8
br label %222
212: ; preds = %204
%213 = load i32, i32* %7
%214 = icmp eq i32 %213, 1
br i1 %214, label %215, label %217
215: ; preds = %212
%216 = load i32, i32* %9
store i32 %216, i32* %8
br label %221
217: ; preds = %212
%218 = load i32, i32* %9
%219 = load i32, i32* %8
%220 = or i32 %219, %218
store i32 %220, i32* %8
br label %221
221: ; preds = %217, %215
br label %222
222: ; preds = %221, %207
br label %26
223: ; preds = %26
%224 = load i8*, i8** %10
%225 = call i32 @free(i8* %224)
%226 = load i32, i32* %8
store i32 %226, i32* %3
br label %227
227: ; preds = %223, %23, %16
%228 = load i32, i32* %3
ret i32 %228
}

LLVM IR (-O2):
@.str = [2 x i8] c" \00"
@.str.1 = [7 x i8] c"silent\00"
@.str.2 = [12 x i8] c"crondefault\00"
@.str.3 = [15 x i8] c"capture-stdout\00"
@.str.4 = [15 x i8] c"capture-stderr\00"
@.str.5 = [12 x i8] c"capture-all\00"
@.str.6 = [14 x i8] c"sendto-stdout\00"
@.str.7 = [12 x i8] c"sendto-file\00"
@.str.8 = [12 x i8] c"sendto-pipe\00"
@.str.9 = [11 x i8] c"sendto-all\00"
@.str.10 = [16 x i8] c"sendto-fallback\00"
@.str.11 = [14 x i8] c"sendif-status\00"
@.str.12 = [17 x i8] c"sendif-status-ok\00"
@.str.13 = [18 x i8] c"sendif-status-any\00"
@.str.14 = [14 x i8] c"sendif-signal\00"
@.str.15 = [17 x i8] c"sendif-signal-ok\00"
@.str.16 = [18 x i8] c"sendif-signal-any\00"
@.str.17 = [14 x i8] c"sendif-stdout\00"
@.str.18 = [19 x i8] c"sendif-stdout-none\00"
@.str.19 = [18 x i8] c"sendif-stdout-any\00"
@.str.20 = [14 x i8] c"sendif-stderr\00"
@.str.21 = [19 x i8] c"sendif-stderr-none\00"
@.str.22 = [18 x i8] c"sendif-stderr-any\00"
@.str.23 = [11 x i8] c"sendif-any\00"
@.str.24 = [19 x i8] c"unknown option: %s\00"
define i32 @cronsh_options(i32 %0, i8* %1) {
%3 = alloca i8*
%4 = bitcast i8** %3 to i8*
%5 = icmp eq i8* %1, null
br i1 %5, label %113, label %6
6: ; preds = %2
%7 = tail call i8* @strdup(i8* %1)
store i8* %7, i8** %3
%8 = icmp eq i8* %7, null
br i1 %8, label %113, label %9
9: ; preds = %6, %109
%10 = phi i32 [ %110, %109 ], [ %0, %6 ]
br label %11
11: ; preds = %9, %22
%12 = call i8* @strsep(i8** %3, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%13 = icmp eq i8* %12, null
br i1 %13, label %111, label %14
14: ; preds = %11
%15 = load i8, i8* %12
switch i8 %15, label %22 [
i8 33, label %17
i8 42, label %16
]
16: ; preds = %14
br label %17
17: ; preds = %14, %16
%18 = phi i32 [ 0, %16 ], [ 1, %14 ]
%19 = phi i32 [ 1, %16 ], [ 0, %14 ]
%20 = getelementptr inbounds i8, i8* %12, i64 1
%21 = load i8, i8* %20
br label %22
22: ; preds = %14, %17
%23 = phi i8 [ %15, %14 ], [ %21, %17 ]
%24 = phi i32 [ 0, %14 ], [ %18, %17 ]
%25 = phi i32 [ 0, %14 ], [ %19, %17 ]
%26 = phi i8* [ %12, %14 ], [ %20, %17 ]
%27 = icmp eq i8 %23, 0
br i1 %27, label %11, label %28
28: ; preds = %22
%29 = call i32 @strcmp(i8* %26, i8* dereferenceable(7) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0))
%30 = icmp eq i32 %29, 0
br i1 %30, label %99, label %31
31: ; preds = %28
%32 = call i32 @strcmp(i8* %26, i8* dereferenceable(12) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.2, i64 0, i64 0))
%33 = icmp eq i32 %32, 0
br i1 %33, label %99, label %34
34: ; preds = %31
%35 = call i32 @strcmp(i8* %26, i8* dereferenceable(15) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.3, i64 0, i64 0))
%36 = icmp eq i32 %35, 0
br i1 %36, label %99, label %37
37: ; preds = %34
%38 = call i32 @strcmp(i8* %26, i8* dereferenceable(15) getelementptr inbounds ([15 x i8], [15 x i8]* @.str.4, i64 0, i64 0))
%39 = icmp eq i32 %38, 0
br i1 %39, label %99, label %40
40: ; preds = %37
%41 = call i32 @strcmp(i8* %26, i8* dereferenceable(12) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.5, i64 0, i64 0))
%42 = icmp eq i32 %41, 0
br i1 %42, label %99, label %43
43: ; preds = %40
%44 = call i32 @strcmp(i8* %26, i8* dereferenceable(14) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.6, i64 0, i64 0))
%45 = icmp eq i32 %44, 0
br i1 %45, label %99, label %46
46: ; preds = %43
%47 = call i32 @strcmp(i8* %26, i8* dereferenceable(12) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.7, i64 0, i64 0))
%48 = icmp eq i32 %47, 0
br i1 %48, label %99, label %49
49: ; preds = %46
%50 = call i32 @strcmp(i8* %26, i8* dereferenceable(12) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.8, i64 0, i64 0))
%51 = icmp eq i32 %50, 0
br i1 %51, label %99, label %52
52: ; preds = %49
%53 = call i32 @strcmp(i8* %26, i8* dereferenceable(11) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.9, i64 0, i64 0))
%54 = icmp eq i32 %53, 0
br i1 %54, label %99, label %55
55: ; preds = %52
%56 = call i32 @strcmp(i8* %26, i8* dereferenceable(16) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.10, i64 0, i64 0))
%57 = icmp eq i32 %56, 0
br i1 %57, label %99, label %58
58: ; preds = %55
%59 = call i32 @strcmp(i8* %26, i8* dereferenceable(14) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.11, i64 0, i64 0))
%60 = icmp eq i32 %59, 0
br i1 %60, label %99, label %61
61: ; preds = %58
%62 = call i32 @strcmp(i8* %26, i8* dereferenceable(17) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.12, i64 0, i64 0))
%63 = icmp eq i32 %62, 0
br i1 %63, label %99, label %64
64: ; preds = %61
%65 = call i32 @strcmp(i8* %26, i8* dereferenceable(18) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.13, i64 0, i64 0))
%66 = icmp eq i32 %65, 0
br i1 %66, label %99, label %67
67: ; preds = %64
%68 = call i32 @strcmp(i8* %26, i8* dereferenceable(14) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.14, i64 0, i64 0))
%69 = icmp eq i32 %68, 0
br i1 %69, label %99, label %70
70: ; preds = %67
%71 = call i32 @strcmp(i8* %26, i8* dereferenceable(17) getelementptr inbounds ([17 x i8], [17 x i8]* @.str.15, i64 0, i64 0))
%72 = icmp eq i32 %71, 0
br i1 %72, label %99, label %73
73: ; preds = %70
%74 = call i32 @strcmp(i8* %26, i8* dereferenceable(18) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.16, i64 0, i64 0))
%75 = icmp eq i32 %74, 0
br i1 %75, label %99, label %76
76: ; preds = %73
%77 = call i32 @strcmp(i8* %26, i8* dereferenceable(14) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.17, i64 0, i64 0))
%78 = icmp eq i32 %77, 0
br i1 %78, label %99, label %79
79: ; preds = %76
%80 = call i32 @strcmp(i8* %26, i8* dereferenceable(19) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.18, i64 0, i64 0))
%81 = icmp eq i32 %80, 0
br i1 %81, label %99, label %82
82: ; preds = %79
%83 = call i32 @strcmp(i8* %26, i8* dereferenceable(18) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.19, i64 0, i64 0))
%84 = icmp eq i32 %83, 0
br i1 %84, label %99, label %85
85: ; preds = %82
%86 = call i32 @strcmp(i8* %26, i8* dereferenceable(14) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.20, i64 0, i64 0))
%87 = icmp eq i32 %86, 0
br i1 %87, label %99, label %88
88: ; preds = %85
%89 = call i32 @strcmp(i8* %26, i8* dereferenceable(19) getelementptr inbounds ([19 x i8], [19 x i8]* @.str.21, i64 0, i64 0))
%90 = icmp eq i32 %89, 0
br i1 %90, label %99, label %91
91: ; preds = %88
%92 = call i32 @strcmp(i8* %26, i8* dereferenceable(18) getelementptr inbounds ([18 x i8], [18 x i8]* @.str.22, i64 0, i64 0))
%93 = icmp eq i32 %92, 0
br i1 %93, label %99, label %94
94: ; preds = %91
%95 = call i32 @strcmp(i8* %26, i8* dereferenceable(11) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.23, i64 0, i64 0))
%96 = icmp eq i32 %95, 0
br i1 %96, label %99, label %97
97: ; preds = %94
%98 = call i32 @cronsh_log(i32 2, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.24, i64 0, i64 0), i8* %26)
br label %99
99: ; preds = %94, %91, %88, %85, %82, %79, %76, %73, %70, %67, %64, %61, %58, %55, %52, %49, %46, %43, %40, %37, %34, %31, %28, %97
%100 = phi i32 [ 0, %97 ], [ 1, %28 ], [ 10254, %31 ], [ 2, %34 ], [ 4, %37 ], [ 6, %40 ], [ 8, %43 ], [ 16, %46 ], [ 32, %49 ], [ 56, %52 ], [ 64, %55 ], [ 128, %58 ], [ 256, %61 ], [ 384, %64 ], [ 512, %67 ], [ 1024, %70 ], [ 1536, %73 ], [ 2048, %76 ], [ 4096, %79 ], [ 6144, %82 ], [ 8192, %85 ], [ 16384, %88 ], [ 24576, %91 ], [ 32640, %94 ]
%101 = icmp eq i32 %24, 1
br i1 %101, label %102, label %105
102: ; preds = %99
%103 = xor i32 %100, -1
%104 = and i32 %10, %103
br label %109
105: ; preds = %99
%106 = icmp eq i32 %25, 1
%107 = select i1 %106, i32 0, i32 %10
%108 = or i32 %100, %107
br label %109
109: ; preds = %105, %102
%110 = phi i32 [ %104, %102 ], [ %108, %105 ]
br label %9
111: ; preds = %11
%112 = call i32 @free(i8* %7)
br label %113
113: ; preds = %6, %2, %111
%114 = phi i32 [ %10, %111 ], [ %0, %2 ], [ %0, %6 ]
ret i32 %114
}