#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*/ trace(int, char *, int, ...);
int decode_trackstat(unsigned int stat, int *sys, int *code, int *track,
                     int *plock, int *clock, int *parity, int *halfc) {
  int satsys, sigtype, freq = 0;
  *track = stat & 0x1F;
  *plock = (stat >> 10) & 1;
  *parity = (stat >> 11) & 1;
  *clock = (stat >> 12) & 1;
  satsys = (stat >> 16) & 7;
  *halfc = (stat >> 28) & 1;
  sigtype = (stat >> 21) & 0x1F;
  switch (satsys) {
  case 0:
    *sys = 0x01;
    break;
  case 1:
    *sys = 0x04;
    break;
  case 2:
    *sys = 0x02;
    break;
  case 3:
    *sys = 0x08;
    break;
  case 5:
    *sys = 0x10;
    break;
  default:
    trace(2, "oem4 unknown system: sys=%d\n", satsys);
    return -1;
  }
  if (*sys == 0x01 || *sys == 0x10) {
    switch (sigtype) {
    case 0:
      freq = 0;
      *code = 1;
      break;
    case 5:
      freq = 0;
      *code = 2;
      break;
    case 9:
      freq = 1;
      *code = 15;
      break;
    case 14:
      freq = 2;
      *code = 25;
      break;
    case 17:
      freq = 1;
      *code = 18;
      break;
    default:
      freq = -1;
      break;
    }
  } else if (*sys == 0x04) {
    switch (sigtype) {
    case 0:
      freq = 0;
      *code = 1;
      break;
    case 1:
      freq = 1;
      *code = 14;
      break;
    case 5:
      freq = 1;
      *code = 19;
      break;
    default:
      freq = -1;
      break;
    }
  } else if (*sys == 0x08) {
    switch (sigtype) {
    case 1:
      freq = 0;
      *code = 11;
      break;
    case 2:
      freq = 0;
      *code = 1;
      break;
    case 12:
      freq = 2;
      *code = 25;
      break;
    case 17:
      freq = 4;
      *code = 28;
      break;
    case 20:
      freq = 5;
      *code = 38;
      break;
    default:
      freq = -1;
      break;
    }
  } else if (*sys == 0x02) {
    switch (sigtype) {
    case 0:
      freq = 0;
      *code = 1;
      break;
    case 6:
      freq = 2;
      *code = 24;
      break;
    default:
      freq = -1;
      break;
    }
  }
  if (freq < 0) {
    trace(2, "oem4 signal type error: sys=%d sigtype=%d\n", *sys, sigtype);
    return -1;
  }
  return freq;
}


x86 assembly (clang, -O0):
<decode_trackstat>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movl   $0x0,-0x3c(%rbp)
mov    -0x8(%rbp),%ecx
and    $0x1f,%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x8(%rbp),%ecx
shr    $0xa,%ecx
and    $0x1,%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x8(%rbp),%ecx
shr    $0xb,%ecx
and    $0x1,%ecx
mov    0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x8(%rbp),%ecx
shr    $0xc,%ecx
and    $0x1,%ecx
mov    -0x30(%rbp),%rax
mov    %ecx,(%rax)
movzwl -0x6(%rbp),%eax
and    $0x7,%eax
mov    %eax,-0x34(%rbp)
mov    -0x8(%rbp),%ecx
shr    $0x1c,%ecx
and    $0x1,%ecx
mov    0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x8(%rbp),%eax
shr    $0x15,%eax
and    $0x1f,%eax
mov    %eax,-0x38(%rbp)
mov    -0x34(%rbp),%eax
mov    %rax,-0x48(%rbp)
sub    $0x5,%rax
ja     120c <decode_trackstat+0xfc>
mov    -0x48(%rbp),%rax
lea    0xe48(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x10(%rbp),%rax
movl   $0x1,(%rax)
jmp    122e <decode_trackstat+0x11e>
mov    -0x10(%rbp),%rax
movl   $0x4,(%rax)
jmp    122e <decode_trackstat+0x11e>
mov    -0x10(%rbp),%rax
movl   $0x2,(%rax)
jmp    122e <decode_trackstat+0x11e>
mov    -0x10(%rbp),%rax
movl   $0x8,(%rax)
jmp    122e <decode_trackstat+0x11e>
mov    -0x10(%rbp),%rax
movl   $0x10,(%rax)
jmp    122e <decode_trackstat+0x11e>
mov    -0x34(%rbp),%edx
mov    $0x2,%edi
lea    0xe95(%rip),%rsi
mov    $0x0,%al
call   1030 <trace@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    14d7 <decode_trackstat+0x3c7>
mov    -0x10(%rbp),%rax
cmpl   $0x1,(%rax)
je     1248 <decode_trackstat+0x138>
mov    -0x10(%rbp),%rax
cmpl   $0x10,(%rax)
jne    12e7 <decode_trackstat+0x1d7>
mov    -0x38(%rbp),%eax
mov    %rax,-0x50(%rbp)
sub    $0x11,%rax
ja     12db <decode_trackstat+0x1cb>
mov    -0x50(%rbp),%rax
lea    0xe04(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x0,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x1,(%rax)
jmp    12e2 <decode_trackstat+0x1d2>
movl   $0x0,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x2,(%rax)
jmp    12e2 <decode_trackstat+0x1d2>
movl   $0x1,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movl   $0xf,(%rax)
jmp    12e2 <decode_trackstat+0x1d2>
movl   $0x2,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x19,(%rax)
jmp    12e2 <decode_trackstat+0x1d2>
movl   $0x1,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x12,(%rax)
jmp    12e2 <decode_trackstat+0x1d2>
movl   $0xffffffff,-0x3c(%rbp)
jmp    149f <decode_trackstat+0x38f>
mov    -0x10(%rbp),%rax
cmpl   $0x4,(%rax)
jne    1377 <decode_trackstat+0x267>
mov    -0x38(%rbp),%eax
mov    %eax,-0x54(%rbp)
test   %eax,%eax
je     1329 <decode_trackstat+0x219>
jmp    1307 <decode_trackstat+0x1f7>
mov    -0x54(%rbp),%eax
sub    $0x1,%eax
je     133f <decode_trackstat+0x22f>
jmp    1318 <decode_trackstat+0x208>
mov    -0x54(%rbp),%eax
sub    $0x5,%eax
je     1355 <decode_trackstat+0x245>
jmp    136b <decode_trackstat+0x25b>
movl   $0x0,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x1,(%rax)
jmp    1372 <decode_trackstat+0x262>
movl   $0x1,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movl   $0xe,(%rax)
jmp    1372 <decode_trackstat+0x262>
movl   $0x1,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x13,(%rax)
jmp    1372 <decode_trackstat+0x262>
movl   $0xffffffff,-0x3c(%rbp)
jmp    149a <decode_trackstat+0x38a>
mov    -0x10(%rbp),%rax
cmpl   $0x8,(%rax)
jne    1427 <decode_trackstat+0x317>
mov    -0x38(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x60(%rbp)
sub    $0x13,%eax
ja     141b <decode_trackstat+0x30b>
mov    -0x60(%rbp),%rax
lea    0xc74(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x0,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movl   $0xb,(%rax)
jmp    1422 <decode_trackstat+0x312>
movl   $0x0,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x1,(%rax)
jmp    1422 <decode_trackstat+0x312>
movl   $0x2,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x19,(%rax)
jmp    1422 <decode_trackstat+0x312>
movl   $0x4,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x1c,(%rax)
jmp    1422 <decode_trackstat+0x312>
movl   $0x5,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x26,(%rax)
jmp    1422 <decode_trackstat+0x312>
movl   $0xffffffff,-0x3c(%rbp)
jmp    1495 <decode_trackstat+0x385>
mov    -0x10(%rbp),%rax
cmpl   $0x2,(%rax)
jne    1490 <decode_trackstat+0x380>
mov    -0x38(%rbp),%eax
mov    %eax,-0x64(%rbp)
test   %eax,%eax
je     1458 <decode_trackstat+0x348>
jmp    1447 <decode_trackstat+0x337>
mov    -0x64(%rbp),%eax
sub    $0x6,%eax
je     146e <decode_trackstat+0x35e>
jmp    1484 <decode_trackstat+0x374>
movl   $0x0,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x1,(%rax)
jmp    148b <decode_trackstat+0x37b>
movl   $0x2,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
movl   $0x18,(%rax)
jmp    148b <decode_trackstat+0x37b>
movl   $0xffffffff,-0x3c(%rbp)
jmp    1490 <decode_trackstat+0x380>
jmp    1495 <decode_trackstat+0x385>
jmp    149a <decode_trackstat+0x38a>
jmp    149f <decode_trackstat+0x38f>
cmpl   $0x0,-0x3c(%rbp)
jge    14d1 <decode_trackstat+0x3c1>
mov    -0x10(%rbp),%rax
mov    (%rax),%edx
mov    -0x38(%rbp),%ecx
mov    $0x2,%edi
lea    0xc0f(%rip),%rsi
mov    $0x0,%al
call   1030 <trace@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    14d7 <decode_trackstat+0x3c7>
mov    -0x3c(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<decode_trackstat>:
push   %rax
mov    %edi,%eax
mov    0x18(%rsp),%r10
mov    0x10(%rsp),%r11
and    $0x1f,%edi
mov    %edi,(%rcx)
mov    %eax,%ecx
shr    $0xa,%ecx
and    $0x1,%ecx
mov    %ecx,(%r8)
mov    %eax,%ecx
shr    $0xb,%ecx
and    $0x1,%ecx
mov    %ecx,(%r11)
mov    %eax,%ecx
shr    $0xc,%ecx
and    $0x1,%ecx
mov    %ecx,(%r9)
mov    %eax,%ecx
shr    $0x10,%ecx
and    $0x7,%ecx
mov    %eax,%edi
shr    $0x1c,%edi
and    $0x1,%edi
mov    %edi,(%r10)
cmp    $0x5,%ecx
ja     11ed <decode_trackstat+0xdd>
shr    $0x15,%eax
and    $0x1f,%eax
mov    $0x1,%r8d
lea    0xe8e(%rip),%r9
movslq (%r9,%rcx,4),%rdi
add    %r9,%rdi
jmp    *%rdi
movl   $0x4,(%rsi)
cmp    $0x5,%eax
je     127a <decode_trackstat+0x16a>
cmp    $0x1,%eax
je     1282 <decode_trackstat+0x172>
mov    $0x4,%r8d
test   %eax,%eax
je     1224 <decode_trackstat+0x114>
jmp    122c <decode_trackstat+0x11c>
movl   $0x2,(%rsi)
cmp    $0x6,%eax
je     1253 <decode_trackstat+0x143>
mov    $0x2,%r8d
test   %eax,%eax
jne    122c <decode_trackstat+0x11c>
jmp    1224 <decode_trackstat+0x114>
movl   $0x8,(%rsi)
mov    $0x8,%r8d
lea    -0x1(%rax),%ecx
cmp    $0x13,%ecx
ja     122c <decode_trackstat+0x11c>
lea    0xe3c(%rip),%rsi
movslq (%rsi,%rcx,4),%rcx
add    %rsi,%rcx
jmp    *%rcx
movl   $0xb,(%rdx)
jmp    1266 <decode_trackstat+0x156>
lea    0xebc(%rip),%rsi
mov    $0x2,%edi
mov    %ecx,%edx
xor    %eax,%eax
call   1030 <trace@plt>
jmp    1244 <decode_trackstat+0x134>
mov    $0x10,%r8d
mov    %r8d,(%rsi)
cmp    $0x11,%eax
ja     122c <decode_trackstat+0x11c>
mov    %eax,%ecx
lea    0xe4d(%rip),%rsi
movslq (%rsi,%rcx,4),%rcx
add    %rsi,%rcx
jmp    *%rcx
movl   $0x1,(%rdx)
jmp    1266 <decode_trackstat+0x156>
lea    0xe9a(%rip),%rsi
mov    $0x2,%edi
mov    %r8d,%edx
mov    %eax,%ecx
xor    %eax,%eax
call   1030 <trace@plt>
mov    $0xffffffff,%eax
pop    %rcx
ret
movl   $0x19,(%rdx)
jmp    1259 <decode_trackstat+0x149>
movl   $0x18,(%rdx)
mov    $0x2,%eax
pop    %rcx
ret
movl   $0x2,(%rdx)
xor    %eax,%eax
pop    %rcx
ret
movl   $0xf,(%rdx)
jmp    1288 <decode_trackstat+0x178>
movl   $0x12,(%rdx)
jmp    1288 <decode_trackstat+0x178>
movl   $0x13,(%rdx)
jmp    1288 <decode_trackstat+0x178>
movl   $0xe,(%rdx)
mov    $0x1,%eax
pop    %rcx
ret
movl   $0x1c,(%rdx)
mov    $0x4,%eax
pop    %rcx
ret
movl   $0x26,(%rdx)
mov    $0x5,%eax
pop    %rcx
ret

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

LLVM IR (-O2):
@.str = [29 x i8] c"oem4 unknown system: sys=%d\0A\00"
@.str.1 = [43 x i8] c"oem4 signal type error: sys=%d sigtype=%d\0A\00"
define i32 @decode_trackstat(i32 %0, i32* nocapture %1, i32* nocapture writeonly %2, i32* nocapture writeonly %3, i32* nocapture writeonly %4, i32* nocapture writeonly %5, i32* nocapture writeonly %6, i32* nocapture writeonly %7) {
%9 = and i32 %0, 31
store i32 %9, i32* %3
%10 = lshr i32 %0, 10
%11 = and i32 %10, 1
store i32 %11, i32* %4
%12 = lshr i32 %0, 11
%13 = and i32 %12, 1
store i32 %13, i32* %6
%14 = lshr i32 %0, 12
%15 = and i32 %14, 1
store i32 %15, i32* %5
%16 = lshr i32 %0, 16
%17 = and i32 %16, 7
%18 = lshr i32 %0, 28
%19 = and i32 %18, 1
store i32 %19, i32* %7
%20 = lshr i32 %0, 21
%21 = and i32 %20, 31
switch i32 %17, label %23 [
i32 0, label %25
i32 1, label %32
i32 2, label %42
i32 3, label %36
i32 5, label %22
]
22: ; preds = %8
br label %25
23: ; preds = %8
%24 = tail call i32 (i32, i8*, i32, ...) @trace(i32 2, i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str, i64 0, i64 0), i32 %17)
br label %48
25: ; preds = %8, %22
%26 = phi i32 [ 16, %22 ], [ 1, %8 ]
store i32 %26, i32* %1
switch i32 %21, label %45 [
i32 0, label %27
i32 5, label %28
i32 9, label %29
i32 14, label %30
i32 17, label %31
]
27: ; preds = %25
store i32 1, i32* %2
br label %48
28: ; preds = %25
store i32 2, i32* %2
br label %48
29: ; preds = %25
store i32 15, i32* %2
br label %48
30: ; preds = %25
store i32 25, i32* %2
br label %48
31: ; preds = %25
store i32 18, i32* %2
br label %48
32: ; preds = %8
store i32 4, i32* %1
switch i32 %21, label %45 [
i32 0, label %33
i32 1, label %34
i32 5, label %35
]
33: ; preds = %32
store i32 1, i32* %2
br label %48
34: ; preds = %32
store i32 14, i32* %2
br label %48
35: ; preds = %32
store i32 19, i32* %2
br label %48
36: ; preds = %8
store i32 8, i32* %1
switch i32 %21, label %45 [
i32 1, label %37
i32 2, label %38
i32 12, label %39
i32 17, label %40
i32 20, label %41
]
37: ; preds = %36
store i32 11, i32* %2
br label %48
38: ; preds = %36
store i32 1, i32* %2
br label %48
39: ; preds = %36
store i32 25, i32* %2
br label %48
40: ; preds = %36
store i32 28, i32* %2
br label %48
41: ; preds = %36
store i32 38, i32* %2
br label %48
42: ; preds = %8
store i32 2, i32* %1
switch i32 %21, label %45 [
i32 0, label %43
i32 6, label %44
]
43: ; preds = %42
store i32 1, i32* %2
br label %48
44: ; preds = %42
store i32 24, i32* %2
br label %48
45: ; preds = %25, %32, %36, %42
%46 = phi i32 [ %26, %25 ], [ 4, %32 ], [ 8, %36 ], [ 2, %42 ]
%47 = tail call i32 (i32, i8*, i32, ...) @trace(i32 2, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.1, i64 0, i64 0), i32 %46, i32 %21)
br label %48
48: ; preds = %31, %30, %29, %28, %27, %41, %40, %39, %38, %37, %43, %44, %33, %34, %35, %45, %23
%49 = phi i32 [ -1, %23 ], [ -1, %45 ], [ 1, %31 ], [ 2, %30 ], [ 1, %29 ], [ 0, %28 ], [ 0, %27 ], [ 5, %41 ], [ 4, %40 ], [ 2, %39 ], [ 0, %38 ], [ 0, %37 ], [ 0, %43 ], [ 2, %44 ], [ 0, %33 ], [ 1, %34 ], [ 1, %35 ]
ret i32 %49
}