#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 */
char *crontab_getword(char *, int *, int *);
int /*<<< orphan*/ crontab_setval(char *, int, int, int);
char *crontab_parse_1(int range_min, int range_max, char *crontabstr,
                      char *flagarray, int *status) {
  int cjbst = 0;
  char *crontabptr;
  int wordtype;
  int number;
  int val_min, val_max, val_step;
  crontabptr = crontabstr;
  val_min = -1;
  val_max = -1;
  val_step = 1;
  cjbst = 1;
  while (cjbst > 0) {
    crontabptr = crontab_getword(crontabptr, &wordtype, &number);
    if (cjbst == 1) {
      switch (wordtype) {
      case 0:
        if ((number < range_min) || (number > range_max)) {
          cjbst = -2;
        } else {
          val_min = number;
          cjbst = 2;
        }
        break;
      case 2:
        val_min = range_min;
        val_max = range_max;
        cjbst = 2;
        break;
      case 10:
        break;
      default:
        cjbst = -1;
        break;
      }
    } else if (cjbst == 2) {
      switch (wordtype) {
      case 11:
      case 10:
        crontab_setval(flagarray, val_min, val_max, val_step);
        cjbst = 0;
        break;
      case 1:
        crontab_setval(flagarray, val_min, val_max, val_step);
        val_min = -1;
        val_max = -1;
        val_step = 1;
        cjbst = 1;
        break;
      case 3:
        cjbst = 3;
        break;
      case 4:
        cjbst = 5;
        break;
      default:
        cjbst = -1;
        break;
      }
    } else if (cjbst == 3) {
      switch (wordtype) {
      case 0:
        if ((val_min > number) || (number > range_max)) {
          cjbst = -2;
        } else {
          val_max = number;
          cjbst = 4;
        }
        break;
      default:
        cjbst = -1;
        break;
      }
    } else if (cjbst == 4) {
      switch (wordtype) {
      case 4:
        cjbst = 5;
        break;
      case 1:
        crontab_setval(flagarray, val_min, val_max, val_step);
        val_min = -1;
        val_max = -1;
        val_step = 1;
        cjbst = 1;
        break;
      case 11:
      case 10:
        crontab_setval(flagarray, val_min, val_max, val_step);
        cjbst = 0;
        break;
      default:
        cjbst = -1;
        break;
      }
    } else if (cjbst == 5) {
      switch (wordtype) {
      case 0:
        val_step = number;
        cjbst = 6;
        break;
      default:
        cjbst = -1;
        break;
      }
    } else if (cjbst == 6) {
      switch (wordtype) {
      case 1:
        crontab_setval(flagarray, val_min, val_max, val_step);
        val_min = -1;
        val_max = -1;
        val_step = 1;
        cjbst = 1;
        break;
      case 11:
      case 10:
        crontab_setval(flagarray, val_min, val_max, val_step);
        cjbst = 0;
        break;
      default:
        cjbst = -1;
        break;
      }
    }
  }
  *status = cjbst;
  return crontabptr;
}


x86 assembly (clang, -O0):
<crontab_parse_1>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x30(%rbp)
movl   $0xffffffff,-0x3c(%rbp)
movl   $0xffffffff,-0x40(%rbp)
movl   $0x1,-0x44(%rbp)
movl   $0x1,-0x24(%rbp)
cmpl   $0x0,-0x24(%rbp)
jle    14b7 <crontab_parse_1+0x397>
mov    -0x30(%rbp),%rdi
lea    -0x34(%rbp),%rsi
lea    -0x38(%rbp),%rdx
call   1030 <crontab_getword@plt>
mov    %rax,-0x30(%rbp)
cmpl   $0x1,-0x24(%rbp)
jne    1222 <crontab_parse_1+0x102>
mov    -0x34(%rbp),%eax
mov    %eax,-0x48(%rbp)
test   %eax,%eax
je     11c3 <crontab_parse_1+0xa3>
jmp    11a1 <crontab_parse_1+0x81>
mov    -0x48(%rbp),%eax
sub    $0x2,%eax
je     11f9 <crontab_parse_1+0xd9>
jmp    11b2 <crontab_parse_1+0x92>
mov    -0x48(%rbp),%eax
sub    $0xa,%eax
je     1211 <crontab_parse_1+0xf1>
jmp    1216 <crontab_parse_1+0xf6>
mov    -0x38(%rbp),%eax
cmp    -0x4(%rbp),%eax
jl     11db <crontab_parse_1+0xbb>
mov    -0x38(%rbp),%eax
cmp    -0x8(%rbp),%eax
jle    11e7 <crontab_parse_1+0xc7>
movl   $0xfffffffe,-0x24(%rbp)
jmp    11f4 <crontab_parse_1+0xd4>
mov    -0x38(%rbp),%eax
mov    %eax,-0x3c(%rbp)
movl   $0x2,-0x24(%rbp)
jmp    121d <crontab_parse_1+0xfd>
mov    -0x4(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x8(%rbp),%eax
mov    %eax,-0x40(%rbp)
movl   $0x2,-0x24(%rbp)
jmp    121d <crontab_parse_1+0xfd>
jmp    121d <crontab_parse_1+0xfd>
movl   $0xffffffff,-0x24(%rbp)
jmp    14b2 <crontab_parse_1+0x392>
cmpl   $0x2,-0x24(%rbp)
jne    12ca <crontab_parse_1+0x1aa>
mov    -0x34(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x50(%rbp)
sub    $0xa,%eax
ja     12be <crontab_parse_1+0x19e>
mov    -0x50(%rbp),%rax
lea    0xdb4(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x18(%rbp),%rdi
mov    -0x3c(%rbp),%esi
mov    -0x40(%rbp),%edx
mov    -0x44(%rbp),%ecx
call   1040 <crontab_setval@plt>
movl   $0x0,-0x24(%rbp)
jmp    12c5 <crontab_parse_1+0x1a5>
mov    -0x18(%rbp),%rdi
mov    -0x3c(%rbp),%esi
mov    -0x40(%rbp),%edx
mov    -0x44(%rbp),%ecx
call   1040 <crontab_setval@plt>
movl   $0xffffffff,-0x3c(%rbp)
movl   $0xffffffff,-0x40(%rbp)
movl   $0x1,-0x44(%rbp)
movl   $0x1,-0x24(%rbp)
jmp    12c5 <crontab_parse_1+0x1a5>
movl   $0x3,-0x24(%rbp)
jmp    12c5 <crontab_parse_1+0x1a5>
movl   $0x5,-0x24(%rbp)
jmp    12c5 <crontab_parse_1+0x1a5>
movl   $0xffffffff,-0x24(%rbp)
jmp    14ad <crontab_parse_1+0x38d>
cmpl   $0x3,-0x24(%rbp)
jne    1326 <crontab_parse_1+0x206>
mov    -0x34(%rbp),%eax
test   %eax,%eax
jne    131a <crontab_parse_1+0x1fa>
jmp    12e4 <crontab_parse_1+0x1c4>
mov    -0x3c(%rbp),%eax
cmp    -0x38(%rbp),%eax
jg     12fc <crontab_parse_1+0x1dc>
mov    -0x38(%rbp),%eax
cmp    -0x8(%rbp),%eax
jle    1308 <crontab_parse_1+0x1e8>
movl   $0xfffffffe,-0x24(%rbp)
jmp    1315 <crontab_parse_1+0x1f5>
mov    -0x38(%rbp),%eax
mov    %eax,-0x40(%rbp)
movl   $0x4,-0x24(%rbp)
jmp    1321 <crontab_parse_1+0x201>
movl   $0xffffffff,-0x24(%rbp)
jmp    14a8 <crontab_parse_1+0x388>
cmpl   $0x4,-0x24(%rbp)
jne    13d2 <crontab_parse_1+0x2b2>
mov    -0x34(%rbp),%eax
mov    %eax,-0x54(%rbp)
sub    $0x1,%eax
je     1375 <crontab_parse_1+0x255>
jmp    1344 <crontab_parse_1+0x224>
mov    -0x54(%rbp),%eax
sub    $0x4,%eax
je     1369 <crontab_parse_1+0x249>
jmp    1355 <crontab_parse_1+0x235>
mov    -0x54(%rbp),%eax
add    $0xfffffff6,%eax
sub    $0x2,%eax
jb     13a8 <crontab_parse_1+0x288>
jmp    13c6 <crontab_parse_1+0x2a6>
movl   $0x5,-0x24(%rbp)
jmp    13cd <crontab_parse_1+0x2ad>
mov    -0x18(%rbp),%rdi
mov    -0x3c(%rbp),%esi
mov    -0x40(%rbp),%edx
mov    -0x44(%rbp),%ecx
call   1040 <crontab_setval@plt>
movl   $0xffffffff,-0x3c(%rbp)
movl   $0xffffffff,-0x40(%rbp)
movl   $0x1,-0x44(%rbp)
movl   $0x1,-0x24(%rbp)
jmp    13cd <crontab_parse_1+0x2ad>
mov    -0x18(%rbp),%rdi
mov    -0x3c(%rbp),%esi
mov    -0x40(%rbp),%edx
mov    -0x44(%rbp),%ecx
call   1040 <crontab_setval@plt>
movl   $0x0,-0x24(%rbp)
jmp    13cd <crontab_parse_1+0x2ad>
movl   $0xffffffff,-0x24(%rbp)
jmp    14a3 <crontab_parse_1+0x383>
cmpl   $0x5,-0x24(%rbp)
jne    140a <crontab_parse_1+0x2ea>
mov    -0x34(%rbp),%eax
test   %eax,%eax
jne    13fe <crontab_parse_1+0x2de>
jmp    13ec <crontab_parse_1+0x2cc>
mov    -0x38(%rbp),%eax
mov    %eax,-0x44(%rbp)
movl   $0x6,-0x24(%rbp)
jmp    1405 <crontab_parse_1+0x2e5>
movl   $0xffffffff,-0x24(%rbp)
jmp    149e <crontab_parse_1+0x37e>
cmpl   $0x6,-0x24(%rbp)
jne    1499 <crontab_parse_1+0x379>
mov    -0x34(%rbp),%eax
mov    %eax,-0x58(%rbp)
sub    $0x1,%eax
je     143c <crontab_parse_1+0x31c>
jmp    1428 <crontab_parse_1+0x308>
mov    -0x58(%rbp),%eax
add    $0xfffffff6,%eax
sub    $0x2,%eax
jb     146f <crontab_parse_1+0x34f>
jmp    148d <crontab_parse_1+0x36d>
mov    -0x18(%rbp),%rdi
mov    -0x3c(%rbp),%esi
mov    -0x40(%rbp),%edx
mov    -0x44(%rbp),%ecx
call   1040 <crontab_setval@plt>
movl   $0xffffffff,-0x3c(%rbp)
movl   $0xffffffff,-0x40(%rbp)
movl   $0x1,-0x44(%rbp)
movl   $0x1,-0x24(%rbp)
jmp    1494 <crontab_parse_1+0x374>
mov    -0x18(%rbp),%rdi
mov    -0x3c(%rbp),%esi
mov    -0x40(%rbp),%edx
mov    -0x44(%rbp),%ecx
call   1040 <crontab_setval@plt>
movl   $0x0,-0x24(%rbp)
jmp    1494 <crontab_parse_1+0x374>
movl   $0xffffffff,-0x24(%rbp)
jmp    1499 <crontab_parse_1+0x379>
jmp    149e <crontab_parse_1+0x37e>
jmp    14a3 <crontab_parse_1+0x383>
jmp    14a8 <crontab_parse_1+0x388>
jmp    14ad <crontab_parse_1+0x38d>
jmp    14b2 <crontab_parse_1+0x392>
jmp    1165 <crontab_parse_1+0x45>
mov    -0x24(%rbp),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x30(%rbp),%rax
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<crontab_parse_1>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %r8,0x20(%rsp)
mov    %rcx,0x18(%rsp)
mov    %rdx,%rbx
mov    %esi,0xc(%rsp)
mov    %edi,0x14(%rsp)
mov    $0xffffffff,%r13d
mov    $0x1,%ebp
lea    0xeab(%rip),%r14
jmp    118a <crontab_parse_1+0x6a>
nopw   0x0(%rax,%rax,1)
mov    0x8(%rsp),%eax
cmp    $0x1,%eax
jne    12b3 <crontab_parse_1+0x193>
mov    0x18(%rsp),%rdi
mov    %r15d,%esi
mov    %r13d,%edx
mov    %ebp,%ecx
call   1040 <crontab_setval@plt>
mov    $0xffffffff,%r13d
mov    $0x1,%ebp
mov    $0xffffffff,%r15d
mov    $0x1,%r12d
mov    %rbx,%rdi
lea    0x8(%rsp),%rsi
lea    0x10(%rsp),%rdx
call   1030 <crontab_getword@plt>
mov    %rax,%rbx
lea    -0x1(%r12),%eax
cmp    $0x5,%eax
ja     1196 <crontab_parse_1+0x76>
movslq (%r14,%rax,4),%rax
add    %r14,%rax
jmp    *%rax
mov    0x8(%rsp),%eax
mov    $0x1,%r12d
cmp    $0xa,%eax
je     1196 <crontab_parse_1+0x76>
cmp    $0x2,%eax
je     129e <crontab_parse_1+0x17e>
test   %eax,%eax
jne    12d1 <crontab_parse_1+0x1b1>
mov    0x10(%rsp),%r15d
mov    $0xfffffffe,%eax
cmp    0x14(%rsp),%r15d
jl     12d6 <crontab_parse_1+0x1b6>
mov    $0x2,%r12d
cmp    0xc(%rsp),%r15d
jle    1196 <crontab_parse_1+0x76>
jmp    12d6 <crontab_parse_1+0x1b6>
mov    $0xffffffff,%eax
mov    0x8(%rsp),%r12d
lea    -0x1(%r12),%ecx
cmp    $0xa,%ecx
ja     12d6 <crontab_parse_1+0x1b6>
lea    0xdf4(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x5,%r12d
jmp    1196 <crontab_parse_1+0x76>
cmpl   $0x0,0x8(%rsp)
jne    12d1 <crontab_parse_1+0x1b1>
mov    0x10(%rsp),%r13d
mov    $0xfffffffe,%eax
cmp    %r13d,%r15d
jg     12d6 <crontab_parse_1+0x1b6>
mov    $0x4,%r12d
cmp    0xc(%rsp),%r13d
jle    1196 <crontab_parse_1+0x76>
jmp    12d6 <crontab_parse_1+0x1b6>
mov    0x8(%rsp),%eax
cmp    $0x1,%eax
je     116d <crontab_parse_1+0x4d>
mov    $0x5,%r12d
cmp    $0x4,%eax
je     1196 <crontab_parse_1+0x76>
jmp    12b3 <crontab_parse_1+0x193>
cmpl   $0x0,0x8(%rsp)
mov    $0x6,%r12d
mov    0x10(%rsp),%ebp
je     1196 <crontab_parse_1+0x76>
jmp    12d1 <crontab_parse_1+0x1b1>
mov    $0x2,%r12d
mov    0xc(%rsp),%r13d
mov    0x14(%rsp),%r15d
jmp    1196 <crontab_parse_1+0x76>
add    $0xfffffff6,%eax
cmp    $0x2,%eax
jae    12d1 <crontab_parse_1+0x1b1>
mov    0x18(%rsp),%rdi
mov    %r15d,%esi
mov    %r13d,%edx
mov    %ebp,%ecx
call   1040 <crontab_setval@plt>
xor    %eax,%eax
jmp    12d6 <crontab_parse_1+0x1b6>
mov    $0xffffffff,%eax
mov    0x20(%rsp),%rcx
mov    %eax,(%rcx)
mov    %rbx,%rax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i8* @crontab_parse_1(i32 %0, i32 %1, i8* %2, i8* %3, i32* %4) {
%6 = alloca i32
%7 = alloca i32
%8 = alloca i8*
%9 = alloca i8*
%10 = alloca i32*
%11 = alloca i32
%12 = alloca i8*
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
store i32 %0, i32* %6
store i32 %1, i32* %7
store i8* %2, i8** %8
store i8* %3, i8** %9
store i32* %4, i32** %10
store i32 0, i32* %11
%18 = load i8*, i8** %8
store i8* %18, i8** %12
store i32 -1, i32* %15
store i32 -1, i32* %16
store i32 1, i32* %17
store i32 1, i32* %11
br label %19
19: ; preds = %140, %5
%20 = load i32, i32* %11
%21 = icmp sgt i32 %20, 0
br i1 %21, label %22, label %141
22: ; preds = %19
%23 = load i8*, i8** %12
%24 = call i8* @crontab_getword(i8* %23, i32* %13, i32* %14)
store i8* %24, i8** %12
%25 = load i32, i32* %11
%26 = icmp eq i32 %25, 1
br i1 %26, label %27, label %47
27: ; preds = %22
%28 = load i32, i32* %13
switch i32 %28, label %45 [
i32 0, label %29
i32 2, label %41
i32 10, label %44
]
29: ; preds = %27
%30 = load i32, i32* %14
%31 = load i32, i32* %6
%32 = icmp slt i32 %30, %31
br i1 %32, label %37, label %33
33: ; preds = %29
%34 = load i32, i32* %14
%35 = load i32, i32* %7
%36 = icmp sgt i32 %34, %35
br i1 %36, label %37, label %38
37: ; preds = %33, %29
store i32 -2, i32* %11
br label %40
38: ; preds = %33
%39 = load i32, i32* %14
store i32 %39, i32* %15
store i32 2, i32* %11
br label %40
40: ; preds = %38, %37
br label %46
41: ; preds = %27
%42 = load i32, i32* %6
store i32 %42, i32* %15
%43 = load i32, i32* %7
store i32 %43, i32* %16
store i32 2, i32* %11
br label %46
44: ; preds = %27
br label %46
45: ; preds = %27
store i32 -1, i32* %11
br label %46
46: ; preds = %45, %44, %41, %40
br label %140
47: ; preds = %22
%48 = load i32, i32* %11
%49 = icmp eq i32 %48, 2
br i1 %49, label %50, label %68
50: ; preds = %47
%51 = load i32, i32* %13
switch i32 %51, label %66 [
i32 11, label %52
i32 10, label %52
i32 1, label %58
i32 3, label %64
i32 4, label %65
]
52: ; preds = %50, %50
%53 = load i8*, i8** %9
%54 = load i32, i32* %15
%55 = load i32, i32* %16
%56 = load i32, i32* %17
%57 = call i32 @crontab_setval(i8* %53, i32 %54, i32 %55, i32 %56)
store i32 0, i32* %11
br label %67
58: ; preds = %50
%59 = load i8*, i8** %9
%60 = load i32, i32* %15
%61 = load i32, i32* %16
%62 = load i32, i32* %17
%63 = call i32 @crontab_setval(i8* %59, i32 %60, i32 %61, i32 %62)
store i32 -1, i32* %15
store i32 -1, i32* %16
store i32 1, i32* %17
store i32 1, i32* %11
br label %67
64: ; preds = %50
store i32 3, i32* %11
br label %67
65: ; preds = %50
store i32 5, i32* %11
br label %67
66: ; preds = %50
store i32 -1, i32* %11
br label %67
67: ; preds = %66, %65, %64, %58, %52
br label %139
68: ; preds = %47
%69 = load i32, i32* %11
%70 = icmp eq i32 %69, 3
br i1 %70, label %71, label %87
71: ; preds = %68
%72 = load i32, i32* %13
switch i32 %72, label %85 [
i32 0, label %73
]
73: ; preds = %71
%74 = load i32, i32* %15
%75 = load i32, i32* %14
%76 = icmp sgt i32 %74, %75
br i1 %76, label %81, label %77
77: ; preds = %73
%78 = load i32, i32* %14
%79 = load i32, i32* %7
%80 = icmp sgt i32 %78, %79
br i1 %80, label %81, label %82
81: ; preds = %77, %73
store i32 -2, i32* %11
br label %84
82: ; preds = %77
%83 = load i32, i32* %14
store i32 %83, i32* %16
store i32 4, i32* %11
br label %84
84: ; preds = %82, %81
br label %86
85: ; preds = %71
store i32 -1, i32* %11
br label %86
86: ; preds = %85, %84
br label %138
87: ; preds = %68
%88 = load i32, i32* %11
%89 = icmp eq i32 %88, 4
br i1 %89, label %90, label %107
90: ; preds = %87
%91 = load i32, i32* %13
switch i32 %91, label %105 [
i32 4, label %92
i32 1, label %93
i32 11, label %99
i32 10, label %99
]
92: ; preds = %90
store i32 5, i32* %11
br label %106
93: ; preds = %90
%94 = load i8*, i8** %9
%95 = load i32, i32* %15
%96 = load i32, i32* %16
%97 = load i32, i32* %17
%98 = call i32 @crontab_setval(i8* %94, i32 %95, i32 %96, i32 %97)
store i32 -1, i32* %15
store i32 -1, i32* %16
store i32 1, i32* %17
store i32 1, i32* %11
br label %106
99: ; preds = %90, %90
%100 = load i8*, i8** %9
%101 = load i32, i32* %15
%102 = load i32, i32* %16
%103 = load i32, i32* %17
%104 = call i32 @crontab_setval(i8* %100, i32 %101, i32 %102, i32 %103)
store i32 0, i32* %11
br label %106
105: ; preds = %90
store i32 -1, i32* %11
br label %106
106: ; preds = %105, %99, %93, %92
br label %137
107: ; preds = %87
%108 = load i32, i32* %11
%109 = icmp eq i32 %108, 5
br i1 %109, label %110, label %116
110: ; preds = %107
%111 = load i32, i32* %13
switch i32 %111, label %114 [
i32 0, label %112
]
112: ; preds = %110
%113 = load i32, i32* %14
store i32 %113, i32* %17
store i32 6, i32* %11
br label %115
114: ; preds = %110
store i32 -1, i32* %11
br label %115
115: ; preds = %114, %112
br label %136
116: ; preds = %107
%117 = load i32, i32* %11
%118 = icmp eq i32 %117, 6
br i1 %118, label %119, label %135
119: ; preds = %116
%120 = load i32, i32* %13
switch i32 %120, label %133 [
i32 1, label %121
i32 11, label %127
i32 10, label %127
]
121: ; preds = %119
%122 = load i8*, i8** %9
%123 = load i32, i32* %15
%124 = load i32, i32* %16
%125 = load i32, i32* %17
%126 = call i32 @crontab_setval(i8* %122, i32 %123, i32 %124, i32 %125)
store i32 -1, i32* %15
store i32 -1, i32* %16
store i32 1, i32* %17
store i32 1, i32* %11
br label %134
127: ; preds = %119, %119
%128 = load i8*, i8** %9
%129 = load i32, i32* %15
%130 = load i32, i32* %16
%131 = load i32, i32* %17
%132 = call i32 @crontab_setval(i8* %128, i32 %129, i32 %130, i32 %131)
store i32 0, i32* %11
br label %134
133: ; preds = %119
store i32 -1, i32* %11
br label %134
134: ; preds = %133, %127, %121
br label %135
135: ; preds = %134, %116
br label %136
136: ; preds = %135, %115
br label %137
137: ; preds = %136, %106
br label %138
138: ; preds = %137, %86
br label %139
139: ; preds = %138, %67
br label %140
140: ; preds = %139, %46
br label %19
141: ; preds = %19
%142 = load i32, i32* %11
%143 = load i32*, i32** %10
store i32 %142, i32* %143
%144 = load i8*, i8** %12
ret i8* %144
}

LLVM IR (-O2):
define i8* @crontab_parse_1(i32 %0, i32 %1, i8* %2, i8* %3, i32* nocapture writeonly %4) {
%6 = alloca i32
%7 = alloca i32
%8 = bitcast i32* %6 to i8*
%9 = bitcast i32* %7 to i8*
br label %10
10: ; preds = %46, %5
%11 = phi i32 [ 1, %5 ], [ %47, %46 ]
%12 = phi i32 [ -1, %5 ], [ %48, %46 ]
%13 = phi i32 [ -1, %5 ], [ %49, %46 ]
%14 = phi i8* [ %2, %5 ], [ %16, %46 ]
%15 = phi i32 [ 1, %5 ], [ %50, %46 ]
%16 = call i8* @crontab_getword(i8* %14, i32* %6, i32* %7)
switch i32 %15, label %46 [
i32 1, label %17
i32 2, label %25
i32 3, label %30
i32 4, label %38
i32 5, label %42
i32 6, label %51
]
17: ; preds = %10
%18 = load i32, i32* %6
switch i32 %18, label %57 [
i32 0, label %19
i32 2, label %24
i32 10, label %46
]
19: ; preds = %17
%20 = load i32, i32* %7
%21 = icmp slt i32 %20, %0
%22 = icmp sgt i32 %20, %1
%23 = or i1 %21, %22
br i1 %23, label %57, label %46
24: ; preds = %17
br label %46
25: ; preds = %10
%26 = load i32, i32* %6
switch i32 %26, label %57 [
i32 11, label %55
i32 10, label %55
i32 1, label %27
i32 3, label %46
i32 4, label %29
]
27: ; preds = %25
%28 = call i32 @crontab_setval(i8* %3, i32 %13, i32 %12, i32 %11)
br label %46
29: ; preds = %25
br label %46
30: ; preds = %10
%31 = load i32, i32* %6
%32 = icmp eq i32 %31, 0
br i1 %32, label %33, label %57
33: ; preds = %30
%34 = load i32, i32* %7
%35 = icmp sgt i32 %13, %34
%36 = icmp sgt i32 %34, %1
%37 = or i1 %35, %36
br i1 %37, label %57, label %46
38: ; preds = %10
%39 = load i32, i32* %6
switch i32 %39, label %57 [
i32 4, label %46
i32 1, label %40
i32 11, label %55
i32 10, label %55
]
40: ; preds = %38
%41 = call i32 @crontab_setval(i8* %3, i32 %13, i32 %12, i32 %11)
br label %46
42: ; preds = %10
%43 = load i32, i32* %6
%44 = icmp eq i32 %43, 0
%45 = load i32, i32* %7
br i1 %44, label %46, label %57
46: ; preds = %42, %33, %19, %10, %38, %25, %29, %27, %40, %53, %24, %17
%47 = phi i32 [ %11, %17 ], [ %11, %24 ], [ %11, %29 ], [ 1, %27 ], [ 1, %40 ], [ 1, %53 ], [ %11, %25 ], [ %11, %38 ], [ %11, %10 ], [ %11, %19 ], [ %11, %33 ], [ %45, %42 ]
%48 = phi i32 [ %12, %17 ], [ %1, %24 ], [ %12, %29 ], [ -1, %27 ], [ -1, %40 ], [ -1, %53 ], [ %12, %25 ], [ %12, %38 ], [ %12, %10 ], [ %12, %19 ], [ %34, %33 ], [ %12, %42 ]
%49 = phi i32 [ %13, %17 ], [ %0, %24 ], [ %13, %29 ], [ -1, %27 ], [ -1, %40 ], [ -1, %53 ], [ %13, %25 ], [ %13, %38 ], [ %13, %10 ], [ %20, %19 ], [ %13, %33 ], [ %13, %42 ]
%50 = phi i32 [ 1, %17 ], [ 2, %24 ], [ 5, %29 ], [ 1, %27 ], [ 1, %40 ], [ 1, %53 ], [ %26, %25 ], [ 5, %38 ], [ %15, %10 ], [ 2, %19 ], [ 4, %33 ], [ 6, %42 ]
br label %10
51: ; preds = %10
%52 = load i32, i32* %6
switch i32 %52, label %57 [
i32 1, label %53
i32 11, label %55
i32 10, label %55
]
53: ; preds = %51
%54 = call i32 @crontab_setval(i8* %3, i32 %13, i32 %12, i32 %11)
br label %46
55: ; preds = %51, %51, %38, %38, %25, %25
%56 = call i32 @crontab_setval(i8* %3, i32 %13, i32 %12, i32 %11)
br label %57
57: ; preds = %33, %19, %38, %25, %17, %30, %51, %42, %55
%58 = phi i32 [ 0, %55 ], [ -2, %33 ], [ -2, %19 ], [ -1, %38 ], [ -1, %25 ], [ -1, %17 ], [ -1, %30 ], [ -1, %51 ], [ -1, %42 ]
store i32 %58, i32* %4
ret i8* %16
}