#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef int uint32_t;

/* Variables and functions */
int /*<<< orphan*/ snprintf(char *, int, char *, int, char const *, ...);
void ilk_debug_blc_pwm_cpu_ctl2(char *result, int len, int reg, uint32_t val,
                                uint32_t devid) {
  int enable, blinking, granularity;
  const char *pipe;
  enable = (val >> 31) & 1;
  if ((((devid) == 0x0042) || ((devid) == 0x0046)) ||
      ((devid) == 0x0102 || (devid) == 0x0112 || (devid) == 0x0122 ||
       (devid) == 0x0106 || (devid) == 0x0116 || (devid) == 0x0126 ||
       (devid) == 0x010A)) {
    pipe = ((val >> 29) & 1) ? "B" : "A";
  } else {
    switch ((val >> 29) & 3) {
    case 0:
      pipe = "A";
      break;
    case 1:
      pipe = "B";
      break;
    case 2:
      pipe = "C";
      break;
    case 3:
      if (((devid) == 0x0152 || (devid) == 0x0162 || (devid) == 0x0156 ||
           (devid) == 0x0166 || (devid) == 0x015a || (devid) == 0x016a))
        pipe = "reserved";
      else
        pipe = "EDP";
      break;
    }
  }
  if ((((devid) == 0x0042) || ((devid) == 0x0046)) ||
      ((devid) == 0x0102 || (devid) == 0x0112 || (devid) == 0x0122 ||
       (devid) == 0x0106 || (devid) == 0x0116 || (devid) == 0x0126 ||
       (devid) == 0x010A) ||
      ((devid) == 0x0152 || (devid) == 0x0162 || (devid) == 0x0156 ||
       (devid) == 0x0166 || (devid) == 0x015a || (devid) == 0x016a)) {
    snprintf(result, len, "enable %d, pipe %s", enable, pipe);
  } else {
    blinking = (val >> 28) & 1;
    granularity = ((val >> 27) & 1) ? 8 : 128;
    snprintf(result, len,
             "enable %d, pipe %s, blinking %d, "
             "granularity %d",
             enable, pipe, blinking, granularity);
  }
}


x86 assembly (clang, -O0):
<ilk_debug_blc_pwm_cpu_ctl2>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    %r8d,-0x18(%rbp)
mov    -0x14(%rbp),%eax
sar    $0x1f,%eax
and    $0x1,%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0x42,-0x18(%rbp)
je     11a4 <ilk_debug_blc_pwm_cpu_ctl2+0x94>
cmpl   $0x46,-0x18(%rbp)
je     11a4 <ilk_debug_blc_pwm_cpu_ctl2+0x94>
cmpl   $0x102,-0x18(%rbp)
je     11a4 <ilk_debug_blc_pwm_cpu_ctl2+0x94>
cmpl   $0x112,-0x18(%rbp)
je     11a4 <ilk_debug_blc_pwm_cpu_ctl2+0x94>
cmpl   $0x122,-0x18(%rbp)
je     11a4 <ilk_debug_blc_pwm_cpu_ctl2+0x94>
cmpl   $0x106,-0x18(%rbp)
je     11a4 <ilk_debug_blc_pwm_cpu_ctl2+0x94>
cmpl   $0x116,-0x18(%rbp)
je     11a4 <ilk_debug_blc_pwm_cpu_ctl2+0x94>
cmpl   $0x126,-0x18(%rbp)
je     11a4 <ilk_debug_blc_pwm_cpu_ctl2+0x94>
cmpl   $0x10a,-0x18(%rbp)
jne    11cb <ilk_debug_blc_pwm_cpu_ctl2+0xbb>
mov    -0x14(%rbp),%edx
sar    $0x1d,%edx
and    $0x1,%edx
lea    0xe5e(%rip),%rax
lea    0xe55(%rip),%rcx
cmp    $0x0,%edx
cmovne %rcx,%rax
mov    %rax,-0x30(%rbp)
jmp    129a <ilk_debug_blc_pwm_cpu_ctl2+0x18a>
mov    -0x14(%rbp),%eax
shr    $0x1d,%eax
and    $0x3,%eax
mov    %eax,%ecx
mov    %rcx,-0x38(%rbp)
sub    $0x3,%eax
ja     1295 <ilk_debug_blc_pwm_cpu_ctl2+0x185>
mov    -0x38(%rbp),%rax
lea    0xe12(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xe14(%rip),%rax
mov    %rax,-0x30(%rbp)
jmp    1295 <ilk_debug_blc_pwm_cpu_ctl2+0x185>
lea    0xe02(%rip),%rax
mov    %rax,-0x30(%rbp)
jmp    1295 <ilk_debug_blc_pwm_cpu_ctl2+0x185>
lea    0xdf6(%rip),%rax
mov    %rax,-0x30(%rbp)
jmp    1295 <ilk_debug_blc_pwm_cpu_ctl2+0x185>
cmpl   $0x152,-0x18(%rbp)
je     1275 <ilk_debug_blc_pwm_cpu_ctl2+0x165>
cmpl   $0x162,-0x18(%rbp)
je     1275 <ilk_debug_blc_pwm_cpu_ctl2+0x165>
cmpl   $0x156,-0x18(%rbp)
je     1275 <ilk_debug_blc_pwm_cpu_ctl2+0x165>
cmpl   $0x166,-0x18(%rbp)
je     1275 <ilk_debug_blc_pwm_cpu_ctl2+0x165>
cmpl   $0x15a,-0x18(%rbp)
je     1275 <ilk_debug_blc_pwm_cpu_ctl2+0x165>
cmpl   $0x16a,-0x18(%rbp)
jne    1285 <ilk_debug_blc_pwm_cpu_ctl2+0x175>
lea    0xd9a(%rip),%rax
mov    %rax,-0x30(%rbp)
jmp    1290 <ilk_debug_blc_pwm_cpu_ctl2+0x180>
lea    0xd93(%rip),%rax
mov    %rax,-0x30(%rbp)
jmp    1295 <ilk_debug_blc_pwm_cpu_ctl2+0x185>
jmp    129a <ilk_debug_blc_pwm_cpu_ctl2+0x18a>
cmpl   $0x42,-0x18(%rbp)
je     1357 <ilk_debug_blc_pwm_cpu_ctl2+0x247>
cmpl   $0x46,-0x18(%rbp)
je     1357 <ilk_debug_blc_pwm_cpu_ctl2+0x247>
cmpl   $0x102,-0x18(%rbp)
je     1357 <ilk_debug_blc_pwm_cpu_ctl2+0x247>
cmpl   $0x112,-0x18(%rbp)
je     1357 <ilk_debug_blc_pwm_cpu_ctl2+0x247>
cmpl   $0x122,-0x18(%rbp)
je     1357 <ilk_debug_blc_pwm_cpu_ctl2+0x247>
cmpl   $0x106,-0x18(%rbp)
je     1357 <ilk_debug_blc_pwm_cpu_ctl2+0x247>
cmpl   $0x116,-0x18(%rbp)
je     1357 <ilk_debug_blc_pwm_cpu_ctl2+0x247>
cmpl   $0x126,-0x18(%rbp)
je     1357 <ilk_debug_blc_pwm_cpu_ctl2+0x247>
cmpl   $0x10a,-0x18(%rbp)
je     1357 <ilk_debug_blc_pwm_cpu_ctl2+0x247>
cmpl   $0x152,-0x18(%rbp)
je     1357 <ilk_debug_blc_pwm_cpu_ctl2+0x247>
cmpl   $0x162,-0x18(%rbp)
je     1357 <ilk_debug_blc_pwm_cpu_ctl2+0x247>
cmpl   $0x156,-0x18(%rbp)
je     1357 <ilk_debug_blc_pwm_cpu_ctl2+0x247>
cmpl   $0x166,-0x18(%rbp)
je     1357 <ilk_debug_blc_pwm_cpu_ctl2+0x247>
cmpl   $0x15a,-0x18(%rbp)
je     1357 <ilk_debug_blc_pwm_cpu_ctl2+0x247>
cmpl   $0x16a,-0x18(%rbp)
jne    1378 <ilk_debug_blc_pwm_cpu_ctl2+0x268>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x1c(%rbp),%ecx
mov    -0x30(%rbp),%r8
lea    0xcb7(%rip),%rdx
mov    $0x0,%al
call   1030 <snprintf@plt>
jmp    13c6 <ilk_debug_blc_pwm_cpu_ctl2+0x2b6>
mov    -0x14(%rbp),%eax
sar    $0x1c,%eax
and    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x14(%rbp),%edx
sar    $0x1b,%edx
and    $0x1,%edx
mov    $0x80,%eax
mov    $0x8,%ecx
cmp    $0x0,%edx
cmovne %ecx,%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
mov    -0x1c(%rbp),%ecx
mov    -0x30(%rbp),%r8
mov    -0x20(%rbp),%r9d
mov    -0x24(%rbp),%eax
lea    0xc7a(%rip),%rdx
mov    %eax,(%rsp)
mov    $0x0,%al
call   1030 <snprintf@plt>
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ilk_debug_blc_pwm_cpu_ctl2>:
push   %rax
lea    -0x102(%r8),%edx
cmp    $0x24,%edx
ja     1174 <ilk_debug_blc_pwm_cpu_ctl2+0x64>
movabs $0x1100110111,%rax
bt     %rdx,%rax
jae    1174 <ilk_debug_blc_pwm_cpu_ctl2+0x64>
test   $0x20000000,%ecx
lea    0x1098(%rip),%rax
lea    0x108f(%rip),%r10
cmove  %rax,%r10
mov    %ecx,%eax
shr    $0x1f,%eax
cmp    $0x68,%edx
ja     11a8 <ilk_debug_blc_pwm_cpu_ctl2+0x98>
lea    0xeba(%rip),%r8
movslq (%r8,%rdx,4),%rdx
add    %r8,%rdx
jmp    *%rdx
lea    0x107d(%rip),%rdx
mov    %eax,%ecx
mov    %r10,%r8
xor    %eax,%eax
pop    %r9
jmp    1030 <snprintf@plt>
cmp    $0x46,%r8d
je     112d <ilk_debug_blc_pwm_cpu_ctl2+0x1d>
cmp    $0x42,%r8d
je     112d <ilk_debug_blc_pwm_cpu_ctl2+0x1d>
mov    %ecx,%eax
shr    $0x1d,%eax
and    $0x3,%eax
lea    0x1043(%rip),%r10
lea    0xe6a(%rip),%r9
movslq (%r9,%rax,4),%rax
add    %r9,%rax
jmp    *%rax
lea    0x102a(%rip),%r10
jmp    1145 <ilk_debug_blc_pwm_cpu_ctl2+0x35>
cmp    $0x46,%r8d
je     115f <ilk_debug_blc_pwm_cpu_ctl2+0x4f>
cmp    $0x42,%r8d
je     115f <ilk_debug_blc_pwm_cpu_ctl2+0x4f>
mov    %ecx,%r9d
shr    $0x1c,%r9d
and    $0x1,%r9d
test   $0x8000000,%ecx
mov    $0x80,%ecx
mov    $0x8,%edx
cmove  %ecx,%edx
mov    %edx,(%rsp)
lea    0x101a(%rip),%rdx
mov    %eax,%ecx
mov    %r10,%r8
xor    %eax,%eax
call   1030 <snprintf@plt>
pop    %rax
ret
lea    0xfe3(%rip),%r10
jmp    1145 <ilk_debug_blc_pwm_cpu_ctl2+0x35>
lea    -0x152(%r8),%eax
rol    $0x1e,%eax
cmp    $0x7,%eax
jae    121a <ilk_debug_blc_pwm_cpu_ctl2+0x10a>
cltq
lea    0xfa6(%rip),%r9
movslq (%r9,%rax,4),%r10
add    %r9,%r10
jmp    1145 <ilk_debug_blc_pwm_cpu_ctl2+0x35>
lea    0xfbe(%rip),%r10
jmp    1145 <ilk_debug_blc_pwm_cpu_ctl2+0x35>

LLVM IR (-O0):
@.str = [2 x i8] c"B\00"
@.str.1 = [2 x i8] c"A\00"
@.str.2 = [2 x i8] c"C\00"
@.str.3 = [9 x i8] c"reserved\00"
@.str.4 = [4 x i8] c"EDP\00"
@.str.5 = [19 x i8] c"enable %d, pipe %s\00"
@.str.6 = [48 x i8] c"enable %d, pipe %s, blinking %d, granularity %d\00"
define void @ilk_debug_blc_pwm_cpu_ctl2(i8* %0, i32 %1, i32 %2, i32 %3, i32 %4) {
%6 = alloca i8*
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i8*
store i8* %0, i8** %6
store i32 %1, i32* %7
store i32 %2, i32* %8
store i32 %3, i32* %9
store i32 %4, i32* %10
%15 = load i32, i32* %9
%16 = ashr i32 %15, 31
%17 = and i32 %16, 1
store i32 %17, i32* %11
%18 = load i32, i32* %10
%19 = icmp eq i32 %18, 66
br i1 %19, label %44, label %20
20: ; preds = %5
%21 = load i32, i32* %10
%22 = icmp eq i32 %21, 70
br i1 %22, label %44, label %23
23: ; preds = %20
%24 = load i32, i32* %10
%25 = icmp eq i32 %24, 258
br i1 %25, label %44, label %26
26: ; preds = %23
%27 = load i32, i32* %10
%28 = icmp eq i32 %27, 274
br i1 %28, label %44, label %29
29: ; preds = %26
%30 = load i32, i32* %10
%31 = icmp eq i32 %30, 290
br i1 %31, label %44, label %32
32: ; preds = %29
%33 = load i32, i32* %10
%34 = icmp eq i32 %33, 262
br i1 %34, label %44, label %35
35: ; preds = %32
%36 = load i32, i32* %10
%37 = icmp eq i32 %36, 278
br i1 %37, label %44, label %38
38: ; preds = %35
%39 = load i32, i32* %10
%40 = icmp eq i32 %39, 294
br i1 %40, label %44, label %41
41: ; preds = %38
%42 = load i32, i32* %10
%43 = icmp eq i32 %42, 266
br i1 %43, label %44, label %51
44: ; preds = %41, %38, %35, %32, %29, %26, %23, %20, %5
%45 = load i32, i32* %9
%46 = ashr i32 %45, 29
%47 = and i32 %46, 1
%48 = icmp ne i32 %47, 0
%49 = zext i1 %48 to i64
%50 = select i1 %48, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0)
store i8* %50, i8** %14
br label %80
51: ; preds = %41
%52 = load i32, i32* %9
%53 = ashr i32 %52, 29
%54 = and i32 %53, 3
switch i32 %54, label %79 [
i32 0, label %55
i32 1, label %56
i32 2, label %57
i32 3, label %58
]
55: ; preds = %51
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8** %14
br label %79
56: ; preds = %51
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %14
br label %79
57: ; preds = %51
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i8** %14
br label %79
58: ; preds = %51
%59 = load i32, i32* %10
%60 = icmp eq i32 %59, 338
br i1 %60, label %76, label %61
61: ; preds = %58
%62 = load i32, i32* %10
%63 = icmp eq i32 %62, 354
br i1 %63, label %76, label %64
64: ; preds = %61
%65 = load i32, i32* %10
%66 = icmp eq i32 %65, 342
br i1 %66, label %76, label %67
67: ; preds = %64
%68 = load i32, i32* %10
%69 = icmp eq i32 %68, 358
br i1 %69, label %76, label %70
70: ; preds = %67
%71 = load i32, i32* %10
%72 = icmp eq i32 %71, 346
br i1 %72, label %76, label %73
73: ; preds = %70
%74 = load i32, i32* %10
%75 = icmp eq i32 %74, 362
br i1 %75, label %76, label %77
76: ; preds = %73, %70, %67, %64, %61, %58
store i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.3, i64 0, i64 0), i8** %14
br label %78
77: ; preds = %73
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0), i8** %14
br label %78
78: ; preds = %77, %76
br label %79
79: ; preds = %51, %78, %57, %56, %55
br label %80
80: ; preds = %79, %44
%81 = load i32, i32* %10
%82 = icmp eq i32 %81, 66
br i1 %82, label %125, label %83
83: ; preds = %80
%84 = load i32, i32* %10
%85 = icmp eq i32 %84, 70
br i1 %85, label %125, label %86
86: ; preds = %83
%87 = load i32, i32* %10
%88 = icmp eq i32 %87, 258
br i1 %88, label %125, label %89
89: ; preds = %86
%90 = load i32, i32* %10
%91 = icmp eq i32 %90, 274
br i1 %91, label %125, label %92
92: ; preds = %89
%93 = load i32, i32* %10
%94 = icmp eq i32 %93, 290
br i1 %94, label %125, label %95
95: ; preds = %92
%96 = load i32, i32* %10
%97 = icmp eq i32 %96, 262
br i1 %97, label %125, label %98
98: ; preds = %95
%99 = load i32, i32* %10
%100 = icmp eq i32 %99, 278
br i1 %100, label %125, label %101
101: ; preds = %98
%102 = load i32, i32* %10
%103 = icmp eq i32 %102, 294
br i1 %103, label %125, label %104
104: ; preds = %101
%105 = load i32, i32* %10
%106 = icmp eq i32 %105, 266
br i1 %106, label %125, label %107
107: ; preds = %104
%108 = load i32, i32* %10
%109 = icmp eq i32 %108, 338
br i1 %109, label %125, label %110
110: ; preds = %107
%111 = load i32, i32* %10
%112 = icmp eq i32 %111, 354
br i1 %112, label %125, label %113
113: ; preds = %110
%114 = load i32, i32* %10
%115 = icmp eq i32 %114, 342
br i1 %115, label %125, label %116
116: ; preds = %113
%117 = load i32, i32* %10
%118 = icmp eq i32 %117, 358
br i1 %118, label %125, label %119
119: ; preds = %116
%120 = load i32, i32* %10
%121 = icmp eq i32 %120, 346
br i1 %121, label %125, label %122
122: ; preds = %119
%123 = load i32, i32* %10
%124 = icmp eq i32 %123, 362
br i1 %124, label %125, label %131
125: ; preds = %122, %119, %116, %113, %110, %107, %104, %101, %98, %95, %92, %89, %86, %83, %80
%126 = load i8*, i8** %6
%127 = load i32, i32* %7
%128 = load i32, i32* %11
%129 = load i8*, i8** %14
%130 = call i32 (i8*, i32, i8*, i32, i8*, ...) @snprintf(i8* %126, i32 %127, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.5, i64 0, i64 0), i32 %128, i8* %129)
br label %148
131: ; preds = %122
%132 = load i32, i32* %9
%133 = ashr i32 %132, 28
%134 = and i32 %133, 1
store i32 %134, i32* %12
%135 = load i32, i32* %9
%136 = ashr i32 %135, 27
%137 = and i32 %136, 1
%138 = icmp ne i32 %137, 0
%139 = zext i1 %138 to i64
%140 = select i1 %138, i32 8, i32 128
store i32 %140, i32* %13
%141 = load i8*, i8** %6
%142 = load i32, i32* %7
%143 = load i32, i32* %11
%144 = load i8*, i8** %14
%145 = load i32, i32* %12
%146 = load i32, i32* %13
%147 = call i32 (i8*, i32, i8*, i32, i8*, ...) @snprintf(i8* %141, i32 %142, i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.6, i64 0, i64 0), i32 %143, i8* %144, i32 %145, i32 %146)
br label %148
148: ; preds = %131, %125
ret void
}

LLVM IR (-O2):
@.str = [2 x i8] c"B\00"
@.str.1 = [2 x i8] c"A\00"
@.str.2 = [2 x i8] c"C\00"
@.str.3 = [9 x i8] c"reserved\00"
@.str.4 = [4 x i8] c"EDP\00"
@.str.5 = [19 x i8] c"enable %d, pipe %s\00"
@.str.6 = [48 x i8] c"enable %d, pipe %s, blinking %d, granularity %d\00"
@reltable.ilk_debug_blc_pwm_cpu_ctl2 = [7 x i32] [i32 trunc (i64 sub (i64 ptrtoint ([9 x i8]* @.str.3 to i64), i64 ptrtoint ([7 x i32]* @reltable.ilk_debug_blc_pwm_cpu_ctl2 to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([9 x i8]* @.str.3 to i64), i64 ptrtoint ([7 x i32]* @reltable.ilk_debug_blc_pwm_cpu_ctl2 to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([9 x i8]* @.str.3 to i64), i64 ptrtoint ([7 x i32]* @reltable.ilk_debug_blc_pwm_cpu_ctl2 to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.4 to i64), i64 ptrtoint ([7 x i32]* @reltable.ilk_debug_blc_pwm_cpu_ctl2 to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([9 x i8]* @.str.3 to i64), i64 ptrtoint ([7 x i32]* @reltable.ilk_debug_blc_pwm_cpu_ctl2 to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([9 x i8]* @.str.3 to i64), i64 ptrtoint ([7 x i32]* @reltable.ilk_debug_blc_pwm_cpu_ctl2 to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([9 x i8]* @.str.3 to i64), i64 ptrtoint ([7 x i32]* @reltable.ilk_debug_blc_pwm_cpu_ctl2 to i64)) to i32)]
define void @ilk_debug_blc_pwm_cpu_ctl2(i8* %0, i32 %1, i32 %2, i32 %3, i32 %4) {
%6 = lshr i32 %3, 31
switch i32 %4, label %11 [
i32 294, label %7
i32 290, label %7
i32 278, label %7
i32 274, label %7
i32 266, label %7
i32 262, label %7
i32 258, label %7
i32 70, label %7
i32 66, label %7
]
7: ; preds = %5, %5, %5, %5, %5, %5, %5, %5, %5
%8 = and i32 %3, 536870912
%9 = icmp eq i32 %8, 0
%10 = select i1 %9, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0)
br label %25
11: ; preds = %5
%12 = lshr i32 %3, 29
%13 = and i32 %12, 3
switch i32 %13, label %20 [
i32 0, label %25
i32 1, label %14
i32 2, label %15
i32 3, label %16
]
14: ; preds = %11
br label %25
15: ; preds = %11
br label %25
16: ; preds = %11
%17 = add i32 %4, -338
%18 = tail call i32 @llvm.fshl.i32(i32 %17, i32 %17, i32 30)
%19 = icmp ult i32 %18, 7
br i1 %19, label %21, label %25
20: ; preds = %11
unreachable
21: ; preds = %16
%22 = sext i32 %18 to i64
%23 = shl i64 %22, 2
%24 = call i8* @llvm.load.relative.i64(i8* bitcast ([7 x i32]* @reltable.ilk_debug_blc_pwm_cpu_ctl2 to i8*), i64 %23)
br label %25
25: ; preds = %16, %21, %11, %14, %15, %7
%26 = phi i8* [ %10, %7 ], [ getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), %15 ], [ getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), %14 ], [ getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0), %11 ], [ %24, %21 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0), %16 ]
switch i32 %4, label %29 [
i32 362, label %27
i32 358, label %27
i32 354, label %27
i32 346, label %27
i32 342, label %27
i32 338, label %27
i32 294, label %27
i32 290, label %27
i32 278, label %27
i32 274, label %27
i32 266, label %27
i32 262, label %27
i32 258, label %27
i32 70, label %27
i32 66, label %27
]
27: ; preds = %25, %25, %25, %25, %25, %25, %25, %25, %25, %25, %25, %25, %25, %25, %25
%28 = tail call i32 (i8*, i32, i8*, i32, i8*, ...) @snprintf(i8* %0, i32 %1, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.5, i64 0, i64 0), i32 %6, i8* %26)
br label %36
29: ; preds = %25
%30 = lshr i32 %3, 28
%31 = and i32 %30, 1
%32 = and i32 %3, 134217728
%33 = icmp eq i32 %32, 0
%34 = select i1 %33, i32 128, i32 8
%35 = tail call i32 (i8*, i32, i8*, i32, i8*, ...) @snprintf(i8* %0, i32 %1, i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.6, i64 0, i64 0), i32 %6, i8* %26, i32 %31, i32 %34)
br label %36
36: ; preds = %29, %27
ret void
}