#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 uint8_t;
typedef int uint16_t;

/* Variables and functions */
int /*<<< orphan*/ do_DrCC(int *, int *, int);
int /*<<< orphan*/ do_DrCN(int *, int *, int);
int /*<<< orphan*/ do_DrCP(int *, int *, int);
int /*<<< orphan*/ do_DrDA(int *, int *, int);
int /*<<< orphan*/ do_DrDM(int *, int *, int);
int /*<<< orphan*/ do_DrIC(int *, int *, int);
int /*<<< orphan*/ do_DrIR(int *, int *, int);
int /*<<< orphan*/ do_DrIn(int *, int *, int);
int /*<<< orphan*/ do_DrSP(int *, int *, int);
int /*<<< orphan*/ do_DrUL(int *, int *, int);
int /*<<< orphan*/ do_Drdr(int *, int *, int);
int /*<<< orphan*/ printf(char *, unsigned int, unsigned int, ...);
void replay_chan_rdpdr(uint8_t *p, uint8_t *max, int is_up) {
  if ((max - p) < 4)
    return;
  uint16_t comp = p[0] | p[1] << 8;
  uint16_t pid = p[2] | p[3] << 8;
  switch (comp) {
  case 0x4472:
    switch (pid) {
    case 0x4343:
      do_DrCC(p, max, is_up);
      break;
    case 0x434E:
      do_DrCN(p, max, is_up);
      break;
    case 0x4350:
      do_DrCP(p, max, is_up);
      break;
    case 0x4441:
      do_DrDA(p, max, is_up);
      break;
    case 0x444D:
      do_DrDM(p, max, is_up);
      break;
    case 0x4943:
      do_DrIC(p, max, is_up);
      break;
    case 0x4952:
      do_DrIR(p, max, is_up);
      break;
    case 0x496E:
      do_DrIn(p, max, is_up);
      break;
    case 0x5350:
      do_DrSP(p, max, is_up);
      break;
    case 0x554C:
      do_DrUL(p, max, is_up);
      break;
    case 0x6472:
      do_Drdr(p, max, is_up);
      break;
    default:
      printf("Unknown CORE message: %04x (%d bytes)\n", (unsigned)pid,
             (int)(max - p));
      break;
    }
    break;
  case 0x5052:
    switch (pid) {
    case 0x5043:
    case 0x5543:
      printf("Unprocessed PRN message: %04x (%d bytes)\n", (unsigned)pid,
             (int)(max - p));
      break;
    default:
      printf("Unknown PRN message: %04x (%d bytes)\n", (unsigned)pid,
             (int)(max - p));
      break;
    }
    break;
  default:
    printf("Unknown type/message %04x/%04x (%d bytes)\n", (unsigned)comp,
           (unsigned)pid, (int)(max - p));
    break;
  }
}


x86 assembly (clang, -O0):
<replay_chan_rdpdr>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    %rcx,%rax
sar    $0x2,%rax
cmp    $0x4,%rax
jge    11f1 <replay_chan_rdpdr+0x31>
jmp    14bb <replay_chan_rdpdr+0x2fb>
mov    -0x8(%rbp),%rcx
mov    (%rcx),%eax
mov    0x4(%rcx),%ecx
shl    $0x8,%ecx
or     %ecx,%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%rcx
mov    0x8(%rcx),%eax
mov    0xc(%rcx),%ecx
shl    $0x8,%ecx
or     %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x20(%rbp)
sub    $0x4472,%eax
je     123d <replay_chan_rdpdr+0x7d>
jmp    122a <replay_chan_rdpdr+0x6a>
mov    -0x20(%rbp),%eax
sub    $0x5052,%eax
je     141f <replay_chan_rdpdr+0x25f>
jmp    1496 <replay_chan_rdpdr+0x2d6>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x24(%rbp)
sub    $0x4343,%eax
je     1311 <replay_chan_rdpdr+0x151>
jmp    1253 <replay_chan_rdpdr+0x93>
mov    -0x24(%rbp),%eax
sub    $0x434e,%eax
je     1326 <replay_chan_rdpdr+0x166>
jmp    1266 <replay_chan_rdpdr+0xa6>
mov    -0x24(%rbp),%eax
sub    $0x4350,%eax
je     133b <replay_chan_rdpdr+0x17b>
jmp    1279 <replay_chan_rdpdr+0xb9>
mov    -0x24(%rbp),%eax
sub    $0x4441,%eax
je     1350 <replay_chan_rdpdr+0x190>
jmp    128c <replay_chan_rdpdr+0xcc>
mov    -0x24(%rbp),%eax
sub    $0x444d,%eax
je     1365 <replay_chan_rdpdr+0x1a5>
jmp    129f <replay_chan_rdpdr+0xdf>
mov    -0x24(%rbp),%eax
sub    $0x4943,%eax
je     137a <replay_chan_rdpdr+0x1ba>
jmp    12b2 <replay_chan_rdpdr+0xf2>
mov    -0x24(%rbp),%eax
sub    $0x4952,%eax
je     138f <replay_chan_rdpdr+0x1cf>
jmp    12c5 <replay_chan_rdpdr+0x105>
mov    -0x24(%rbp),%eax
sub    $0x496e,%eax
je     13a4 <replay_chan_rdpdr+0x1e4>
jmp    12d8 <replay_chan_rdpdr+0x118>
mov    -0x24(%rbp),%eax
sub    $0x5350,%eax
je     13b9 <replay_chan_rdpdr+0x1f9>
jmp    12eb <replay_chan_rdpdr+0x12b>
mov    -0x24(%rbp),%eax
sub    $0x554c,%eax
je     13ce <replay_chan_rdpdr+0x20e>
jmp    12fe <replay_chan_rdpdr+0x13e>
mov    -0x24(%rbp),%eax
sub    $0x6472,%eax
je     13e3 <replay_chan_rdpdr+0x223>
jmp    13f8 <replay_chan_rdpdr+0x238>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
call   1050 <do_DrCC@plt>
jmp    141a <replay_chan_rdpdr+0x25a>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
call   10b0 <do_DrCN@plt>
jmp    141a <replay_chan_rdpdr+0x25a>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
call   10a0 <do_DrCP@plt>
jmp    141a <replay_chan_rdpdr+0x25a>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
call   1030 <do_DrDA@plt>
jmp    141a <replay_chan_rdpdr+0x25a>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
call   1040 <do_DrDM@plt>
jmp    141a <replay_chan_rdpdr+0x25a>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
call   10d0 <do_DrIC@plt>
jmp    141a <replay_chan_rdpdr+0x25a>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
call   1080 <do_DrIR@plt>
jmp    141a <replay_chan_rdpdr+0x25a>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
call   1070 <do_DrIn@plt>
jmp    141a <replay_chan_rdpdr+0x25a>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
call   10c0 <do_DrSP@plt>
jmp    141a <replay_chan_rdpdr+0x25a>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
call   10e0 <do_DrUL@plt>
jmp    141a <replay_chan_rdpdr+0x25a>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
call   1090 <do_Drdr@plt>
jmp    141a <replay_chan_rdpdr+0x25a>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    %rcx,%rax
sar    $0x2,%rax
mov    %eax,%edx
lea    0xbed(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    14bb <replay_chan_rdpdr+0x2fb>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x28(%rbp)
sub    $0x5043,%eax
je     1448 <replay_chan_rdpdr+0x288>
jmp    1435 <replay_chan_rdpdr+0x275>
mov    -0x28(%rbp),%eax
sub    $0x5543,%eax
jne    146f <replay_chan_rdpdr+0x2af>
jmp    1448 <replay_chan_rdpdr+0x288>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    %rcx,%rax
sar    $0x2,%rax
mov    %eax,%edx
lea    0xbc4(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    1491 <replay_chan_rdpdr+0x2d1>
mov    -0x1c(%rbp),%esi
mov    -0x10(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    %rcx,%rax
sar    $0x2,%rax
mov    %eax,%edx
lea    0xbc7(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    14bb <replay_chan_rdpdr+0x2fb>
mov    -0x18(%rbp),%esi
mov    -0x1c(%rbp),%edx
mov    -0x10(%rbp),%rax
mov    -0x8(%rbp),%rcx
sub    %rcx,%rax
sar    $0x2,%rax
mov    %eax,%ecx
lea    0xbc3(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<replay_chan_rdpdr>:
mov    %rsi,%rcx
sub    %rdi,%rcx
cmp    $0x10,%rcx
jge    11cd <replay_chan_rdpdr+0xd>
ret
sar    $0x2,%rcx
mov    0x4(%rdi),%eax
mov    0xc(%rdi),%r8d
shl    $0x8,%eax
or     (%rdi),%eax
shl    $0x8,%r8d
or     0x8(%rdi),%r8d
cmp    $0x5052,%eax
je     1235 <replay_chan_rdpdr+0x75>
cmp    $0x4472,%eax
jne    1253 <replay_chan_rdpdr+0x93>
cmp    $0x4942,%r8d
jle    1266 <replay_chan_rdpdr+0xa6>
cmp    $0x534f,%r8d
jg     1298 <replay_chan_rdpdr+0xd8>
cmp    $0x4943,%r8d
je     12cf <replay_chan_rdpdr+0x10f>
cmp    $0x4952,%r8d
je     12d4 <replay_chan_rdpdr+0x114>
cmp    $0x496e,%r8d
jne    12f2 <replay_chan_rdpdr+0x132>
jmp    1070 <do_DrIn@plt>
cmp    $0x5543,%r8d
je     1247 <replay_chan_rdpdr+0x87>
cmp    $0x5043,%r8d
jne    128f <replay_chan_rdpdr+0xcf>
lea    0xdd9(%rip),%rdi
jmp    12f9 <replay_chan_rdpdr+0x139>
lea    0xe1d(%rip),%rdi
mov    %eax,%esi
mov    %r8d,%edx
xor    %eax,%eax
jmp    1060 <printf@plt>
cmp    $0x434f,%r8d
jle    12b8 <replay_chan_rdpdr+0xf8>
cmp    $0x4350,%r8d
je     12d9 <replay_chan_rdpdr+0x119>
cmp    $0x4441,%r8d
je     12de <replay_chan_rdpdr+0x11e>
cmp    $0x444d,%r8d
jne    12f2 <replay_chan_rdpdr+0x132>
jmp    1040 <do_DrDM@plt>
lea    0xdbb(%rip),%rdi
jmp    12f9 <replay_chan_rdpdr+0x139>
cmp    $0x5350,%r8d
je     12e3 <replay_chan_rdpdr+0x123>
cmp    $0x554c,%r8d
je     12e8 <replay_chan_rdpdr+0x128>
cmp    $0x6472,%r8d
jne    12f2 <replay_chan_rdpdr+0x132>
jmp    1090 <do_Drdr@plt>
cmp    $0x4343,%r8d
je     12ed <replay_chan_rdpdr+0x12d>
cmp    $0x434e,%r8d
jne    12f2 <replay_chan_rdpdr+0x132>
jmp    10b0 <do_DrCN@plt>
jmp    10d0 <do_DrIC@plt>
jmp    1080 <do_DrIR@plt>
jmp    10a0 <do_DrCP@plt>
jmp    1030 <do_DrDA@plt>
jmp    10c0 <do_DrSP@plt>
jmp    10e0 <do_DrUL@plt>
jmp    1050 <do_DrCC@plt>
lea    0xd07(%rip),%rdi
mov    %r8d,%esi
mov    %ecx,%edx
xor    %eax,%eax
jmp    1060 <printf@plt>

LLVM IR (-O0):
@.str = [39 x i8] c"Unknown CORE message: %04x (%d bytes)\0A\00"
@.str.1 = [42 x i8] c"Unprocessed PRN message: %04x (%d bytes)\0A\00"
@.str.2 = [38 x i8] c"Unknown PRN message: %04x (%d bytes)\0A\00"
@.str.3 = [43 x i8] c"Unknown type/message %04x/%04x (%d bytes)\0A\00"
define void @replay_chan_rdpdr(i32* %0, i32* %1, i32 %2) {
%4 = alloca i32*
%5 = alloca i32*
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
store i32* %0, i32** %4
store i32* %1, i32** %5
store i32 %2, i32* %6
%9 = load i32*, i32** %5
%10 = load i32*, i32** %4
%11 = ptrtoint i32* %9 to i64
%12 = ptrtoint i32* %10 to i64
%13 = sub i64 %11, %12
%14 = sdiv exact i64 %13, 4
%15 = icmp slt i64 %14, 4
br i1 %15, label %16, label %17
16: ; preds = %3
br label %137
17: ; preds = %3
%18 = load i32*, i32** %4
%19 = getelementptr inbounds i32, i32* %18, i64 0
%20 = load i32, i32* %19
%21 = load i32*, i32** %4
%22 = getelementptr inbounds i32, i32* %21, i64 1
%23 = load i32, i32* %22
%24 = shl i32 %23, 8
%25 = or i32 %20, %24
store i32 %25, i32* %7
%26 = load i32*, i32** %4
%27 = getelementptr inbounds i32, i32* %26, i64 2
%28 = load i32, i32* %27
%29 = load i32*, i32** %4
%30 = getelementptr inbounds i32, i32* %29, i64 3
%31 = load i32, i32* %30
%32 = shl i32 %31, 8
%33 = or i32 %28, %32
store i32 %33, i32* %8
%34 = load i32, i32* %7
switch i32 %34, label %126 [
i32 17522, label %35
i32 20562, label %103
]
35: ; preds = %17
%36 = load i32, i32* %8
switch i32 %36, label %92 [
i32 17219, label %37
i32 17230, label %42
i32 17232, label %47
i32 17473, label %52
i32 17485, label %57
i32 18755, label %62
i32 18770, label %67
i32 18798, label %72
i32 21328, label %77
i32 21836, label %82
i32 25714, label %87
]
37: ; preds = %35
%38 = load i32*, i32** %4
%39 = load i32*, i32** %5
%40 = load i32, i32* %6
%41 = call i32 @do_DrCC(i32* %38, i32* %39, i32 %40)
br label %102
42: ; preds = %35
%43 = load i32*, i32** %4
%44 = load i32*, i32** %5
%45 = load i32, i32* %6
%46 = call i32 @do_DrCN(i32* %43, i32* %44, i32 %45)
br label %102
47: ; preds = %35
%48 = load i32*, i32** %4
%49 = load i32*, i32** %5
%50 = load i32, i32* %6
%51 = call i32 @do_DrCP(i32* %48, i32* %49, i32 %50)
br label %102
52: ; preds = %35
%53 = load i32*, i32** %4
%54 = load i32*, i32** %5
%55 = load i32, i32* %6
%56 = call i32 @do_DrDA(i32* %53, i32* %54, i32 %55)
br label %102
57: ; preds = %35
%58 = load i32*, i32** %4
%59 = load i32*, i32** %5
%60 = load i32, i32* %6
%61 = call i32 @do_DrDM(i32* %58, i32* %59, i32 %60)
br label %102
62: ; preds = %35
%63 = load i32*, i32** %4
%64 = load i32*, i32** %5
%65 = load i32, i32* %6
%66 = call i32 @do_DrIC(i32* %63, i32* %64, i32 %65)
br label %102
67: ; preds = %35
%68 = load i32*, i32** %4
%69 = load i32*, i32** %5
%70 = load i32, i32* %6
%71 = call i32 @do_DrIR(i32* %68, i32* %69, i32 %70)
br label %102
72: ; preds = %35
%73 = load i32*, i32** %4
%74 = load i32*, i32** %5
%75 = load i32, i32* %6
%76 = call i32 @do_DrIn(i32* %73, i32* %74, i32 %75)
br label %102
77: ; preds = %35
%78 = load i32*, i32** %4
%79 = load i32*, i32** %5
%80 = load i32, i32* %6
%81 = call i32 @do_DrSP(i32* %78, i32* %79, i32 %80)
br label %102
82: ; preds = %35
%83 = load i32*, i32** %4
%84 = load i32*, i32** %5
%85 = load i32, i32* %6
%86 = call i32 @do_DrUL(i32* %83, i32* %84, i32 %85)
br label %102
87: ; preds = %35
%88 = load i32*, i32** %4
%89 = load i32*, i32** %5
%90 = load i32, i32* %6
%91 = call i32 @do_Drdr(i32* %88, i32* %89, i32 %90)
br label %102
92: ; preds = %35
%93 = load i32, i32* %8
%94 = load i32*, i32** %5
%95 = load i32*, i32** %4
%96 = ptrtoint i32* %94 to i64
%97 = ptrtoint i32* %95 to i64
%98 = sub i64 %96, %97
%99 = sdiv exact i64 %98, 4
%100 = trunc i64 %99 to i32
%101 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str, i64 0, i64 0), i32 %93, i32 %100)
br label %102
102: ; preds = %92, %87, %82, %77, %72, %67, %62, %57, %52, %47, %42, %37
br label %137
103: ; preds = %17
%104 = load i32, i32* %8
switch i32 %104, label %115 [
i32 20547, label %105
i32 21827, label %105
]
105: ; preds = %103, %103
%106 = load i32, i32* %8
%107 = load i32*, i32** %5
%108 = load i32*, i32** %4
%109 = ptrtoint i32* %107 to i64
%110 = ptrtoint i32* %108 to i64
%111 = sub i64 %109, %110
%112 = sdiv exact i64 %111, 4
%113 = trunc i64 %112 to i32
%114 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.1, i64 0, i64 0), i32 %106, i32 %113)
br label %125
115: ; preds = %103
%116 = load i32, i32* %8
%117 = load i32*, i32** %5
%118 = load i32*, i32** %4
%119 = ptrtoint i32* %117 to i64
%120 = ptrtoint i32* %118 to i64
%121 = sub i64 %119, %120
%122 = sdiv exact i64 %121, 4
%123 = trunc i64 %122 to i32
%124 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.2, i64 0, i64 0), i32 %116, i32 %123)
br label %125
125: ; preds = %115, %105
br label %137
126: ; preds = %17
%127 = load i32, i32* %7
%128 = load i32, i32* %8
%129 = load i32*, i32** %5
%130 = load i32*, i32** %4
%131 = ptrtoint i32* %129 to i64
%132 = ptrtoint i32* %130 to i64
%133 = sub i64 %131, %132
%134 = sdiv exact i64 %133, 4
%135 = trunc i64 %134 to i32
%136 = call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.3, i64 0, i64 0), i32 %127, i32 %128, i32 %135)
br label %137
137: ; preds = %16, %126, %125, %102
ret void
}

LLVM IR (-O2):
@.str = [39 x i8] c"Unknown CORE message: %04x (%d bytes)\0A\00"
@.str.1 = [42 x i8] c"Unprocessed PRN message: %04x (%d bytes)\0A\00"
@.str.2 = [38 x i8] c"Unknown PRN message: %04x (%d bytes)\0A\00"
@.str.3 = [43 x i8] c"Unknown type/message %04x/%04x (%d bytes)\0A\00"
define void @replay_chan_rdpdr(i32* %0, i32* %1, i32 %2) {
%4 = ptrtoint i32* %1 to i64
%5 = ptrtoint i32* %0 to i64
%6 = sub i64 %4, %5
%7 = ashr exact i64 %6, 2
%8 = icmp slt i64 %6, 16
br i1 %8, label %57, label %9
9: ; preds = %3
%10 = load i32, i32* %0
%11 = getelementptr inbounds i32, i32* %0, i64 1
%12 = load i32, i32* %11
%13 = shl i32 %12, 8
%14 = or i32 %13, %10
%15 = getelementptr inbounds i32, i32* %0, i64 2
%16 = load i32, i32* %15
%17 = getelementptr inbounds i32, i32* %0, i64 3
%18 = load i32, i32* %17
%19 = shl i32 %18, 8
%20 = or i32 %19, %16
switch i32 %14, label %54 [
i32 17522, label %21
i32 20562, label %47
]
21: ; preds = %9
switch i32 %20, label %44 [
i32 17219, label %22
i32 17230, label %24
i32 17232, label %26
i32 17473, label %28
i32 17485, label %30
i32 18755, label %32
i32 18770, label %34
i32 18798, label %36
i32 21328, label %38
i32 21836, label %40
i32 25714, label %42
]
22: ; preds = %21
%23 = tail call i32 @do_DrCC(i32* %0, i32* %1, i32 %2)
br label %57
24: ; preds = %21
%25 = tail call i32 @do_DrCN(i32* %0, i32* %1, i32 %2)
br label %57
26: ; preds = %21
%27 = tail call i32 @do_DrCP(i32* %0, i32* %1, i32 %2)
br label %57
28: ; preds = %21
%29 = tail call i32 @do_DrDA(i32* %0, i32* %1, i32 %2)
br label %57
30: ; preds = %21
%31 = tail call i32 @do_DrDM(i32* %0, i32* %1, i32 %2)
br label %57
32: ; preds = %21
%33 = tail call i32 @do_DrIC(i32* %0, i32* %1, i32 %2)
br label %57
34: ; preds = %21
%35 = tail call i32 @do_DrIR(i32* %0, i32* %1, i32 %2)
br label %57
36: ; preds = %21
%37 = tail call i32 @do_DrIn(i32* %0, i32* %1, i32 %2)
br label %57
38: ; preds = %21
%39 = tail call i32 @do_DrSP(i32* %0, i32* %1, i32 %2)
br label %57
40: ; preds = %21
%41 = tail call i32 @do_DrUL(i32* %0, i32* %1, i32 %2)
br label %57
42: ; preds = %21
%43 = tail call i32 @do_Drdr(i32* %0, i32* %1, i32 %2)
br label %57
44: ; preds = %21
%45 = trunc i64 %7 to i32
%46 = tail call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str, i64 0, i64 0), i32 %20, i32 %45)
br label %57
47: ; preds = %9
switch i32 %20, label %51 [
i32 20547, label %48
i32 21827, label %48
]
48: ; preds = %47, %47
%49 = trunc i64 %7 to i32
%50 = tail call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([42 x i8], [42 x i8]* @.str.1, i64 0, i64 0), i32 %20, i32 %49)
br label %57
51: ; preds = %47
%52 = trunc i64 %7 to i32
%53 = tail call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.2, i64 0, i64 0), i32 %20, i32 %52)
br label %57
54: ; preds = %9
%55 = trunc i64 %7 to i32
%56 = tail call i32 (i8*, i32, i32, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.3, i64 0, i64 0), i32 %14, i32 %20, i32 %55)
br label %57
57: ; preds = %54, %44, %42, %40, %38, %36, %34, %32, %30, %28, %26, %24, %22, %51, %48, %3
ret void
}