int is_branch_cond(const char *cond) {
  if (cond[0] == '\0')
    return 1;
  if (cond[0] == 'a' && cond[1] == '\0')
    return 1;
  if (cond[0] == 'c' && (cond[1] == 'c' || cond[1] == 's') && cond[2] == '\0')
    return 1;
  if (cond[0] == 'e' &&
      (cond[1] == '\0' || (cond[1] == 'q' && cond[2] == '\0')))
    return 1;
  if (cond[0] == 'g' &&
      (cond[1] == '\0' || (cond[1] == 't' && cond[2] == '\0') ||
       (cond[1] == 'e' && cond[2] == '\0') ||
       (cond[1] == 'e' && cond[2] == 'u' && cond[3] == '\0')))
    return 1;
  if (cond[0] == 'l' &&
      (cond[1] == '\0' || (cond[1] == 't' && cond[2] == '\0') ||
       (cond[1] == 'u' && cond[2] == '\0') ||
       (cond[1] == 'e' && cond[2] == '\0') ||
       (cond[1] == 'e' && cond[2] == 'u' && cond[3] == '\0')))
    return 1;
  if (cond[0] == 'n' &&
      (cond[1] == '\0' || (cond[1] == 'e' && cond[2] == '\0') ||
       (cond[1] == 'z' && cond[2] == '\0') ||
       (cond[1] == 'e' && cond[2] == 'g' && cond[3] == '\0')))
    return 1;
  if (cond[0] == 'b' && cond[1] == 'p' && cond[2] == 'o' && cond[3] == 's' &&
      cond[4] == '\0')
    return 1;
  if (cond[0] == 'v' && (cond[1] == 'c' || cond[1] == 's') && cond[2] == '\0')
    return 1;
  if (cond[0] == 'b' && cond[1] == 'z' && cond[2] == '\0')
    return 1;
  return 0;
}


x86 assembly (clang, -O0):
<is_branch_cond>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    1124 <is_branch_cond+0x24>
movl   $0x1,-0x4(%rbp)
jmp    14f1 <is_branch_cond+0x3f1>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x61,%eax
jne    1151 <is_branch_cond+0x51>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x0,%eax
jne    1151 <is_branch_cond+0x51>
movl   $0x1,-0x4(%rbp)
jmp    14f1 <is_branch_cond+0x3f1>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x63,%eax
jne    11a0 <is_branch_cond+0xa0>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x63,%eax
je     1183 <is_branch_cond+0x83>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x73,%eax
jne    11a0 <is_branch_cond+0xa0>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x0,%eax
jne    11a0 <is_branch_cond+0xa0>
movl   $0x1,-0x4(%rbp)
jmp    14f1 <is_branch_cond+0x3f1>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x65,%eax
jne    11ef <is_branch_cond+0xef>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x0,%eax
je     11e3 <is_branch_cond+0xe3>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x71,%eax
jne    11ef <is_branch_cond+0xef>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x0,%eax
jne    11ef <is_branch_cond+0xef>
movl   $0x1,-0x4(%rbp)
jmp    14f1 <is_branch_cond+0x3f1>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x67,%eax
jne    1293 <is_branch_cond+0x193>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x0,%eax
je     1287 <is_branch_cond+0x187>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x74,%eax
jne    1232 <is_branch_cond+0x132>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x0,%eax
je     1287 <is_branch_cond+0x187>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x65,%eax
jne    1254 <is_branch_cond+0x154>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x0,%eax
je     1287 <is_branch_cond+0x187>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x65,%eax
jne    1293 <is_branch_cond+0x193>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x75,%eax
jne    1293 <is_branch_cond+0x193>
mov    -0x10(%rbp),%rax
movsbl 0x3(%rax),%eax
cmp    $0x0,%eax
jne    1293 <is_branch_cond+0x193>
movl   $0x1,-0x4(%rbp)
jmp    14f1 <is_branch_cond+0x3f1>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x6c,%eax
jne    1359 <is_branch_cond+0x259>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x0,%eax
je     134d <is_branch_cond+0x24d>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x74,%eax
jne    12d6 <is_branch_cond+0x1d6>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x0,%eax
je     134d <is_branch_cond+0x24d>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x75,%eax
jne    12f8 <is_branch_cond+0x1f8>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x0,%eax
je     134d <is_branch_cond+0x24d>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x65,%eax
jne    131a <is_branch_cond+0x21a>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x0,%eax
je     134d <is_branch_cond+0x24d>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x65,%eax
jne    1359 <is_branch_cond+0x259>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x75,%eax
jne    1359 <is_branch_cond+0x259>
mov    -0x10(%rbp),%rax
movsbl 0x3(%rax),%eax
cmp    $0x0,%eax
jne    1359 <is_branch_cond+0x259>
movl   $0x1,-0x4(%rbp)
jmp    14f1 <is_branch_cond+0x3f1>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x6e,%eax
jne    13fd <is_branch_cond+0x2fd>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x0,%eax
je     13f1 <is_branch_cond+0x2f1>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x65,%eax
jne    139c <is_branch_cond+0x29c>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x0,%eax
je     13f1 <is_branch_cond+0x2f1>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x7a,%eax
jne    13be <is_branch_cond+0x2be>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x0,%eax
je     13f1 <is_branch_cond+0x2f1>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x65,%eax
jne    13fd <is_branch_cond+0x2fd>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x67,%eax
jne    13fd <is_branch_cond+0x2fd>
mov    -0x10(%rbp),%rax
movsbl 0x3(%rax),%eax
cmp    $0x0,%eax
jne    13fd <is_branch_cond+0x2fd>
movl   $0x1,-0x4(%rbp)
jmp    14f1 <is_branch_cond+0x3f1>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x62,%eax
jne    145d <is_branch_cond+0x35d>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x70,%eax
jne    145d <is_branch_cond+0x35d>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x6f,%eax
jne    145d <is_branch_cond+0x35d>
mov    -0x10(%rbp),%rax
movsbl 0x3(%rax),%eax
cmp    $0x73,%eax
jne    145d <is_branch_cond+0x35d>
mov    -0x10(%rbp),%rax
movsbl 0x4(%rax),%eax
cmp    $0x0,%eax
jne    145d <is_branch_cond+0x35d>
movl   $0x1,-0x4(%rbp)
jmp    14f1 <is_branch_cond+0x3f1>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x76,%eax
jne    14ac <is_branch_cond+0x3ac>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x63,%eax
je     148f <is_branch_cond+0x38f>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x73,%eax
jne    14ac <is_branch_cond+0x3ac>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x0,%eax
jne    14ac <is_branch_cond+0x3ac>
movl   $0x1,-0x4(%rbp)
jmp    14f1 <is_branch_cond+0x3f1>
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x62,%eax
jne    14ea <is_branch_cond+0x3ea>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x7a,%eax
jne    14ea <is_branch_cond+0x3ea>
mov    -0x10(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x0,%eax
jne    14ea <is_branch_cond+0x3ea>
movl   $0x1,-0x4(%rbp)
jmp    14f1 <is_branch_cond+0x3f1>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<is_branch_cond>:
mov    (%rdi),%cl
mov    $0x1,%eax
lea    -0x61(%rcx),%edx
cmp    $0x15,%dl
ja     1136 <is_branch_cond+0x36>
movzbl %dl,%ecx
lea    0xee7(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    0x1(%rdi),%cl
or     $0x10,%cl
cmp    $0x73,%cl
je     11ed <is_branch_cond+0xed>
jmp    11f7 <is_branch_cond+0xf7>
test   %cl,%cl
jne    11f7 <is_branch_cond+0xf7>
ret
cmpb   $0x0,0x1(%rdi)
jne    11f7 <is_branch_cond+0xf7>
jmp    113e <is_branch_cond+0x3e>
mov    0x1(%rdi),%cl
cmp    $0x7a,%cl
je     11ed <is_branch_cond+0xed>
cmp    $0x70,%cl
jne    11f7 <is_branch_cond+0xf7>
cmpb   $0x6f,0x2(%rdi)
jne    11f7 <is_branch_cond+0xf7>
cmpb   $0x73,0x3(%rdi)
jne    11f7 <is_branch_cond+0xf7>
cmpb   $0x0,0x4(%rdi)
jne    11f7 <is_branch_cond+0xf7>
jmp    113e <is_branch_cond+0x3e>
mov    0x1(%rdi),%cl
test   %cl,%cl
je     113e <is_branch_cond+0x3e>
cmp    $0x71,%cl
je     11ed <is_branch_cond+0xed>
jmp    11f7 <is_branch_cond+0xf7>
mov    0x1(%rdi),%cl
test   %cl,%cl
je     113e <is_branch_cond+0x3e>
cmp    $0x65,%cl
jne    11e8 <is_branch_cond+0xe8>
jmp    11a9 <is_branch_cond+0xa9>
mov    0x1(%rdi),%cl
cmp    $0x73,%cl
jg     11e3 <is_branch_cond+0xe3>
test   %cl,%cl
je     113e <is_branch_cond+0x3e>
cmp    $0x65,%cl
jne    11f7 <is_branch_cond+0xf7>
mov    0x2(%rdi),%cl
test   %cl,%cl
je     113e <is_branch_cond+0x3e>
cmp    $0x75,%cl
je     11d8 <is_branch_cond+0xd8>
jmp    11f7 <is_branch_cond+0xf7>
mov    0x1(%rdi),%cl
test   %cl,%cl
je     113e <is_branch_cond+0x3e>
cmp    $0x7a,%cl
je     11ed <is_branch_cond+0xed>
cmp    $0x65,%cl
jne    11f7 <is_branch_cond+0xf7>
mov    0x2(%rdi),%cl
test   %cl,%cl
je     113e <is_branch_cond+0x3e>
cmp    $0x67,%cl
jne    11f7 <is_branch_cond+0xf7>
cmpb   $0x0,0x3(%rdi)
jne    11f7 <is_branch_cond+0xf7>
jmp    113e <is_branch_cond+0x3e>
cmp    $0x75,%cl
je     11ed <is_branch_cond+0xed>
cmp    $0x74,%cl
jne    11f7 <is_branch_cond+0xf7>
cmpb   $0x0,0x2(%rdi)
je     113e <is_branch_cond+0x3e>
xor    %eax,%eax
ret

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

LLVM IR (-O2):
define i32 @is_branch_cond(i8* %0) {
%2 = load i8, i8* %0
switch i8 %2, label %93 [
i8 0, label %94
i8 97, label %3
i8 99, label %7
i8 101, label %14
i8 103, label %21
i8 108, label %35
i8 110, label %53
i8 98, label %67
i8 118, label %82
]
3: ; preds = %1
%4 = getelementptr inbounds i8, i8* %0, i64 1
%5 = load i8, i8* %4
%6 = icmp eq i8 %5, 0
br i1 %6, label %94, label %93
7: ; preds = %1
%8 = getelementptr inbounds i8, i8* %0, i64 1
%9 = load i8, i8* %8
switch i8 %9, label %93 [
i8 99, label %10
i8 115, label %10
]
10: ; preds = %7, %7
%11 = getelementptr inbounds i8, i8* %0, i64 2
%12 = load i8, i8* %11
%13 = icmp eq i8 %12, 0
br i1 %13, label %94, label %93
14: ; preds = %1
%15 = getelementptr inbounds i8, i8* %0, i64 1
%16 = load i8, i8* %15
switch i8 %16, label %93 [
i8 0, label %94
i8 113, label %17
]
17: ; preds = %14
%18 = getelementptr inbounds i8, i8* %0, i64 2
%19 = load i8, i8* %18
%20 = icmp eq i8 %19, 0
br i1 %20, label %94, label %93
21: ; preds = %1
%22 = getelementptr inbounds i8, i8* %0, i64 1
%23 = load i8, i8* %22
switch i8 %23, label %93 [
i8 0, label %94
i8 116, label %24
i8 101, label %28
]
24: ; preds = %21
%25 = getelementptr inbounds i8, i8* %0, i64 2
%26 = load i8, i8* %25
%27 = icmp eq i8 %26, 0
br i1 %27, label %94, label %93
28: ; preds = %21
%29 = getelementptr inbounds i8, i8* %0, i64 2
%30 = load i8, i8* %29
switch i8 %30, label %93 [
i8 0, label %94
i8 117, label %31
]
31: ; preds = %28
%32 = getelementptr inbounds i8, i8* %0, i64 3
%33 = load i8, i8* %32
%34 = icmp eq i8 %33, 0
br i1 %34, label %94, label %93
35: ; preds = %1
%36 = getelementptr inbounds i8, i8* %0, i64 1
%37 = load i8, i8* %36
switch i8 %37, label %93 [
i8 0, label %94
i8 116, label %38
i8 117, label %42
i8 101, label %46
]
38: ; preds = %35
%39 = getelementptr inbounds i8, i8* %0, i64 2
%40 = load i8, i8* %39
%41 = icmp eq i8 %40, 0
br i1 %41, label %94, label %93
42: ; preds = %35
%43 = getelementptr inbounds i8, i8* %0, i64 2
%44 = load i8, i8* %43
%45 = icmp eq i8 %44, 0
br i1 %45, label %94, label %93
46: ; preds = %35
%47 = getelementptr inbounds i8, i8* %0, i64 2
%48 = load i8, i8* %47
switch i8 %48, label %93 [
i8 0, label %94
i8 117, label %49
]
49: ; preds = %46
%50 = getelementptr inbounds i8, i8* %0, i64 3
%51 = load i8, i8* %50
%52 = icmp eq i8 %51, 0
br i1 %52, label %94, label %93
53: ; preds = %1
%54 = getelementptr inbounds i8, i8* %0, i64 1
%55 = load i8, i8* %54
switch i8 %55, label %93 [
i8 0, label %94
i8 101, label %56
i8 122, label %59
]
56: ; preds = %53
%57 = getelementptr inbounds i8, i8* %0, i64 2
%58 = load i8, i8* %57
switch i8 %58, label %93 [
i8 0, label %94
i8 103, label %63
]
59: ; preds = %53
%60 = getelementptr inbounds i8, i8* %0, i64 2
%61 = load i8, i8* %60
%62 = icmp eq i8 %61, 0
br i1 %62, label %94, label %93
63: ; preds = %56
%64 = getelementptr inbounds i8, i8* %0, i64 3
%65 = load i8, i8* %64
%66 = icmp eq i8 %65, 0
br i1 %66, label %94, label %93
67: ; preds = %1
%68 = getelementptr inbounds i8, i8* %0, i64 1
%69 = load i8, i8* %68
switch i8 %69, label %93 [
i8 112, label %70
i8 122, label %89
]
70: ; preds = %67
%71 = getelementptr inbounds i8, i8* %0, i64 2
%72 = load i8, i8* %71
%73 = icmp eq i8 %72, 111
br i1 %73, label %74, label %93
74: ; preds = %70
%75 = getelementptr inbounds i8, i8* %0, i64 3
%76 = load i8, i8* %75
%77 = icmp eq i8 %76, 115
br i1 %77, label %78, label %93
78: ; preds = %74
%79 = getelementptr inbounds i8, i8* %0, i64 4
%80 = load i8, i8* %79
%81 = icmp eq i8 %80, 0
br i1 %81, label %94, label %93
82: ; preds = %1
%83 = getelementptr inbounds i8, i8* %0, i64 1
%84 = load i8, i8* %83
switch i8 %84, label %93 [
i8 99, label %85
i8 115, label %85
]
85: ; preds = %82, %82
%86 = getelementptr inbounds i8, i8* %0, i64 2
%87 = load i8, i8* %86
%88 = icmp eq i8 %87, 0
br i1 %88, label %94, label %93
89: ; preds = %67
%90 = getelementptr inbounds i8, i8* %0, i64 2
%91 = load i8, i8* %90
%92 = icmp eq i8 %91, 0
br i1 %92, label %94, label %93
93: ; preds = %67, %56, %46, %28, %78, %74, %70, %1, %53, %35, %21, %38, %3, %10, %7, %17, %14, %31, %24, %49, %42, %85, %82, %59, %63, %89
br label %94
94: ; preds = %56, %46, %28, %1, %53, %35, %21, %89, %85, %78, %59, %63, %38, %42, %49, %24, %31, %17, %14, %10, %3, %93
%95 = phi i32 [ 0, %93 ], [ 1, %1 ], [ 1, %3 ], [ 1, %10 ], [ 1, %14 ], [ 1, %17 ], [ 1, %21 ], [ 1, %31 ], [ 1, %28 ], [ 1, %24 ], [ 1, %35 ], [ 1, %49 ], [ 1, %46 ], [ 1, %42 ], [ 1, %38 ], [ 1, %53 ], [ 1, %63 ], [ 1, %59 ], [ 1, %56 ], [ 1, %78 ], [ 1, %85 ], [ 1, %89 ]
ret i32 %95
}