#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*/ printf(char *, ...);
void print_move_flash_results(int retc, int attn, int progress) {
  printf("  RETC: %x\n", retc);
  printf("  ATTN: %x ", attn);
  switch (attn) {
  case 0x0000:
    printf("OK\n");
    break;
  case 0x0001:
    printf("Parse Error (length wrong, addr bad, ...)\n");
    break;
  case 0x0002:
    printf("CRC Error (data)\n");
    break;
  case 0x0003:
    printf("Flash programmer timeout/sequence err.\n");
    break;
  case 0x0004:
    printf("DMA Timeout\n");
    break;
  case 0x0005:
    printf("Out of Bound (Addr. collision with images)\n");
    break;
  case 0xe001:
    printf("Allication logicIssued a RC not equal to "
           "0x102, 0x104, or 0x108\n");
    break;
  case 0xe002:
    printf("Allication violated SQB protocol\n");
    break;
  case 0xe003:
    printf("LEM Attention\n");
    break;
  case 0xe004:
    printf("Timeout (recoverable). Application quieced "
           "successfully.\n");
    break;
  case 0xe005:
    printf("Application times out, Quiece unsuccessful.\n");
    break;
  case 0xe006:
    printf("Queue Access Error\n");
    break;
  case 0xe007:
    printf("DMA engine override\n");
    break;
  case 0xf000:
    printf("Bad ICRC");
    break;
  case 0xf001:
    printf("Out of Sequence\n");
    break;
  case 0xf002:
    printf("Unsupported Preamble\n");
    break;
  case 0xf003:
    printf("Unsupported ACFUNC\n");
    break;
  case 0xf004:
    printf("SHI mis-sequenced\n");
    break;
  case 0xf005:
    printf("Illegal VF access\n");
    break;
  default:
    printf("unknown\n");
    break;
  }
  printf("  PROGRESS: %x ", progress);
  switch (progress) {
  case 0x0000:
    printf("Command Retrieved.\n");
    break;
  case 0x0100:
    printf("Sector Number N erased\n");
    break;
  case 0x0200:
    printf("All Secors Erased.\n");
    break;
  case 0x0201:
    printf("1st Block flashed.\n");
    break;
  case 0x0203:
    printf("Half Programmed.\n");
    break;
  }
}


x86 assembly (clang, -O0):
<print_move_flash_results>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    -0x4(%rbp),%esi
lea    0xed5(%rip),%rdi
xor    %eax,%eax
mov    %al,-0x11(%rbp)
call   1030 <printf@plt>
mov    -0x11(%rbp),%al
mov    -0x8(%rbp),%esi
lea    0xeca(%rip),%rdi
call   1030 <printf@plt>
mov    -0x8(%rbp),%eax
mov    %eax,-0x10(%rbp)
test   %eax,%eax
je     12a6 <print_move_flash_results+0x196>
jmp    115a <print_move_flash_results+0x4a>
mov    -0x10(%rbp),%eax
sub    $0x1,%eax
je     12b9 <print_move_flash_results+0x1a9>
jmp    116b <print_move_flash_results+0x5b>
mov    -0x10(%rbp),%eax
sub    $0x2,%eax
je     12cc <print_move_flash_results+0x1bc>
jmp    117c <print_move_flash_results+0x6c>
mov    -0x10(%rbp),%eax
sub    $0x3,%eax
je     12df <print_move_flash_results+0x1cf>
jmp    118d <print_move_flash_results+0x7d>
mov    -0x10(%rbp),%eax
sub    $0x4,%eax
je     12f2 <print_move_flash_results+0x1e2>
jmp    119e <print_move_flash_results+0x8e>
mov    -0x10(%rbp),%eax
sub    $0x5,%eax
je     1305 <print_move_flash_results+0x1f5>
jmp    11af <print_move_flash_results+0x9f>
mov    -0x10(%rbp),%eax
sub    $0xe001,%eax
je     1318 <print_move_flash_results+0x208>
jmp    11c2 <print_move_flash_results+0xb2>
mov    -0x10(%rbp),%eax
sub    $0xe002,%eax
je     132b <print_move_flash_results+0x21b>
jmp    11d5 <print_move_flash_results+0xc5>
mov    -0x10(%rbp),%eax
sub    $0xe003,%eax
je     133e <print_move_flash_results+0x22e>
jmp    11e8 <print_move_flash_results+0xd8>
mov    -0x10(%rbp),%eax
sub    $0xe004,%eax
je     1351 <print_move_flash_results+0x241>
jmp    11fb <print_move_flash_results+0xeb>
mov    -0x10(%rbp),%eax
sub    $0xe005,%eax
je     1364 <print_move_flash_results+0x254>
jmp    120e <print_move_flash_results+0xfe>
mov    -0x10(%rbp),%eax
sub    $0xe006,%eax
je     1377 <print_move_flash_results+0x267>
jmp    1221 <print_move_flash_results+0x111>
mov    -0x10(%rbp),%eax
sub    $0xe007,%eax
je     138a <print_move_flash_results+0x27a>
jmp    1234 <print_move_flash_results+0x124>
mov    -0x10(%rbp),%eax
sub    $0xf000,%eax
je     139d <print_move_flash_results+0x28d>
jmp    1247 <print_move_flash_results+0x137>
mov    -0x10(%rbp),%eax
sub    $0xf001,%eax
je     13b0 <print_move_flash_results+0x2a0>
jmp    125a <print_move_flash_results+0x14a>
mov    -0x10(%rbp),%eax
sub    $0xf002,%eax
je     13c3 <print_move_flash_results+0x2b3>
jmp    126d <print_move_flash_results+0x15d>
mov    -0x10(%rbp),%eax
sub    $0xf003,%eax
je     13d6 <print_move_flash_results+0x2c6>
jmp    1280 <print_move_flash_results+0x170>
mov    -0x10(%rbp),%eax
sub    $0xf004,%eax
je     13e9 <print_move_flash_results+0x2d9>
jmp    1293 <print_move_flash_results+0x183>
mov    -0x10(%rbp),%eax
sub    $0xf005,%eax
je     13fc <print_move_flash_results+0x2ec>
jmp    140f <print_move_flash_results+0x2ff>
lea    0xd6b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xd5c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xd74(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xd73(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xd88(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xd82(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xd9b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xdc9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xdd8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xdd4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xdfb(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xe15(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xe16(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xe18(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xe0e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xe0c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xe0f(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xe10(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xe10(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    141d <print_move_flash_results+0x30d>
lea    0xe10(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xc(%rbp),%esi
lea    0xe08(%rip),%rdi
xor    %eax,%eax
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
mov    %eax,-0x18(%rbp)
test   %eax,%eax
je     148d <print_move_flash_results+0x37d>
jmp    1441 <print_move_flash_results+0x331>
mov    -0x18(%rbp),%eax
sub    $0x100,%eax
je     14a0 <print_move_flash_results+0x390>
jmp    1454 <print_move_flash_results+0x344>
mov    -0x18(%rbp),%eax
sub    $0x200,%eax
je     14b3 <print_move_flash_results+0x3a3>
jmp    1467 <print_move_flash_results+0x357>
mov    -0x18(%rbp),%eax
sub    $0x201,%eax
je     14c6 <print_move_flash_results+0x3b6>
jmp    147a <print_move_flash_results+0x36a>
mov    -0x18(%rbp),%eax
sub    $0x203,%eax
je     14d9 <print_move_flash_results+0x3c9>
jmp    14e7 <print_move_flash_results+0x3d7>
lea    0xdab(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14e7 <print_move_flash_results+0x3d7>
lea    0xdac(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14e7 <print_move_flash_results+0x3d7>
lea    0xdb1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14e7 <print_move_flash_results+0x3d7>
lea    0xdb2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
jmp    14e7 <print_move_flash_results+0x3d7>
lea    0xdb3(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_move_flash_results>:
push   %rbp
push   %rbx
push   %rax
mov    %edx,%ebp
mov    %esi,%ebx
mov    %edi,%esi
lea    0xf1c(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xf1a(%rip),%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1040 <printf@plt>
lea    -0xe001(%rbx),%eax
cmp    $0x6,%eax
jbe    1185 <print_move_flash_results+0x65>
cmp    $0x5,%ebx
jbe    11a1 <print_move_flash_results+0x81>
add    $0xffff1000,%ebx
cmp    $0x5,%ebx
ja     11bf <print_move_flash_results+0x9f>
lea    0xecb(%rip),%rax
movslq (%rax,%rbx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
lea    0xeeb(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
jmp    1261 <print_move_flash_results+0x141>
lea    0xe8c(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1059(%rip),%rdi
jmp    125c <print_move_flash_results+0x13c>
mov    %ebx,%eax
lea    0xe56(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1114(%rip),%rdi
jmp    125c <print_move_flash_results+0x13c>
lea    0x110b(%rip),%rdi
jmp    125c <print_move_flash_results+0x13c>
lea    0xf58(%rip),%rdi
jmp    125c <print_move_flash_results+0x13c>
lea    0xf37(%rip),%rdi
jmp    125c <print_move_flash_results+0x13c>
lea    0xf1b(%rip),%rdi
jmp    125c <print_move_flash_results+0x13c>
lea    0xf00(%rip),%rdi
jmp    125c <print_move_flash_results+0x13c>
lea    0xe84(%rip),%rdi
jmp    125c <print_move_flash_results+0x13c>
lea    0xfd2(%rip),%rdi
jmp    125c <print_move_flash_results+0x13c>
lea    0xfbb(%rip),%rdi
jmp    125c <print_move_flash_results+0x13c>
lea    0xf79(%rip),%rdi
jmp    125c <print_move_flash_results+0x13c>
lea    0xf44(%rip),%rdi
jmp    125c <print_move_flash_results+0x13c>
lea    0xf28(%rip),%rdi
jmp    125c <print_move_flash_results+0x13c>
lea    0xf0b(%rip),%rdi
jmp    125c <print_move_flash_results+0x13c>
lea    0x106c(%rip),%rdi
jmp    125c <print_move_flash_results+0x13c>
lea    0x1052(%rip),%rdi
jmp    125c <print_move_flash_results+0x13c>
lea    0x1022(%rip),%rdi
jmp    125c <print_move_flash_results+0x13c>
lea    0x100d(%rip),%rdi
jmp    125c <print_move_flash_results+0x13c>
lea    0xfd9(%rip),%rdi
call   1030 <puts@plt>
lea    0xe05(%rip),%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1040 <printf@plt>
cmp    $0x1ff,%ebp
jle    129a <print_move_flash_results+0x17a>
cmp    $0x200,%ebp
je     12af <print_move_flash_results+0x18f>
cmp    $0x201,%ebp
je     12b8 <print_move_flash_results+0x198>
cmp    $0x203,%ebp
jne    12d3 <print_move_flash_results+0x1b3>
lea    0xdf7(%rip),%rdi
jmp    12c8 <print_move_flash_results+0x1a8>
test   %ebp,%ebp
je     12c1 <print_move_flash_results+0x1a1>
cmp    $0x100,%ebp
jne    12d3 <print_move_flash_results+0x1b3>
lea    0xe19(%rip),%rdi
jmp    12c8 <print_move_flash_results+0x1a8>
lea    0xdfd(%rip),%rdi
jmp    12c8 <print_move_flash_results+0x1a8>
lea    0xde1(%rip),%rdi
jmp    12c8 <print_move_flash_results+0x1a8>
lea    0xe15(%rip),%rdi
add    $0x8,%rsp
pop    %rbx
pop    %rbp
jmp    1030 <puts@plt>
add    $0x8,%rsp
pop    %rbx
pop    %rbp
ret

LLVM IR (-O0):
@.str = [12 x i8] c" RETC: %x\0A\00"
@.str.1 = [12 x i8] c" ATTN: %x \00"
@.str.2 = [4 x i8] c"OK\0A\00"
@.str.3 = [43 x i8] c"Parse Error (length wrong, addr bad, ...)\0A\00"
@.str.4 = [18 x i8] c"CRC Error (data)\0A\00"
@.str.5 = [40 x i8] c"Flash programmer timeout/sequence err.\0A\00"
@.str.6 = [13 x i8] c"DMA Timeout\0A\00"
@.str.7 = [44 x i8] c"Out of Bound (Addr. collision with images)\0A\00"
@.str.8 = [65 x i8] c"Allication logicIssued a RC not equal to 0x102, 0x104, or 0x108\0A\00"
@.str.9 = [34 x i8] c"Allication violated SQB protocol\0A\00"
@.str.10 = [15 x i8] c"LEM Attention\0A\00"
@.str.11 = [58 x i8] c"Timeout (recoverable). Application quieced successfully.\0A\00"
@.str.12 = [45 x i8] c"Application times out, Quiece unsuccessful.\0A\00"
@.str.13 = [20 x i8] c"Queue Access Error\0A\00"
@.str.14 = [21 x i8] c"DMA engine override\0A\00"
@.str.15 = [9 x i8] c"Bad ICRC\00"
@.str.16 = [17 x i8] c"Out of Sequence\0A\00"
@.str.17 = [22 x i8] c"Unsupported Preamble\0A\00"
@.str.18 = [20 x i8] c"Unsupported ACFUNC\0A\00"
@.str.19 = [19 x i8] c"SHI mis-sequenced\0A\00"
@.str.20 = [19 x i8] c"Illegal VF access\0A\00"
@.str.21 = [9 x i8] c"unknown\0A\00"
@.str.22 = [16 x i8] c" PROGRESS: %x \00"
@.str.23 = [20 x i8] c"Command Retrieved.\0A\00"
@.str.24 = [24 x i8] c"Sector Number N erased\0A\00"
@.str.25 = [20 x i8] c"All Secors Erased.\0A\00"
@.str.26 = [20 x i8] c"1st Block flashed.\0A\00"
@.str.27 = [18 x i8] c"Half Programmed.\0A\00"
define void @print_move_flash_results(i32 %0, i32 %1, i32 %2) {
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
store i32 %0, i32* %4
store i32 %1, i32* %5
store i32 %2, i32* %6
%7 = load i32, i32* %4
%8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0), i32 %7)
%9 = load i32, i32* %5
%10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0), i32 %9)
%11 = load i32, i32* %5
switch i32 %11, label %50 [
i32 0, label %12
i32 1, label %14
i32 2, label %16
i32 3, label %18
i32 4, label %20
i32 5, label %22
i32 57345, label %24
i32 57346, label %26
i32 57347, label %28
i32 57348, label %30
i32 57349, label %32
i32 57350, label %34
i32 57351, label %36
i32 61440, label %38
i32 61441, label %40
i32 61442, label %42
i32 61443, label %44
i32 61444, label %46
i32 61445, label %48
]
12: ; preds = %3
%13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0))
br label %52
14: ; preds = %3
%15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.3, i64 0, i64 0))
br label %52
16: ; preds = %3
%17 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.4, i64 0, i64 0))
br label %52
18: ; preds = %3
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.5, i64 0, i64 0))
br label %52
20: ; preds = %3
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.6, i64 0, i64 0))
br label %52
22: ; preds = %3
%23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.7, i64 0, i64 0))
br label %52
24: ; preds = %3
%25 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([65 x i8], [65 x i8]* @.str.8, i64 0, i64 0))
br label %52
26: ; preds = %3
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.9, i64 0, i64 0))
br label %52
28: ; preds = %3
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.10, i64 0, i64 0))
br label %52
30: ; preds = %3
%31 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.11, i64 0, i64 0))
br label %52
32: ; preds = %3
%33 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([45 x i8], [45 x i8]* @.str.12, i64 0, i64 0))
br label %52
34: ; preds = %3
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.13, i64 0, i64 0))
br label %52
36: ; preds = %3
%37 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.14, i64 0, i64 0))
br label %52
38: ; preds = %3
%39 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.15, i64 0, i64 0))
br label %52
40: ; preds = %3
%41 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.16, i64 0, i64 0))
br label %52
42: ; preds = %3
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.17, i64 0, i64 0))
br label %52
44: ; preds = %3
%45 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.18, i64 0, i64 0))
br label %52
46: ; preds = %3
%47 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.19, i64 0, i64 0))
br label %52
48: ; preds = %3
%49 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.20, i64 0, i64 0))
br label %52
50: ; preds = %3
%51 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.21, i64 0, i64 0))
br label %52
52: ; preds = %50, %48, %46, %44, %42, %40, %38, %36, %34, %32, %30, %28, %26, %24, %22, %20, %18, %16, %14, %12
%53 = load i32, i32* %6
%54 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.22, i64 0, i64 0), i32 %53)
%55 = load i32, i32* %6
switch i32 %55, label %66 [
i32 0, label %56
i32 256, label %58
i32 512, label %60
i32 513, label %62
i32 515, label %64
]
56: ; preds = %52
%57 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.23, i64 0, i64 0))
br label %66
58: ; preds = %52
%59 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.24, i64 0, i64 0))
br label %66
60: ; preds = %52
%61 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.25, i64 0, i64 0))
br label %66
62: ; preds = %52
%63 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.26, i64 0, i64 0))
br label %66
64: ; preds = %52
%65 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.27, i64 0, i64 0))
br label %66
66: ; preds = %52, %64, %62, %60, %58, %56
ret void
}

LLVM IR (-O2):
@.str = [12 x i8] c" RETC: %x\0A\00"
@.str.1 = [12 x i8] c" ATTN: %x \00"
@.str.15 = [9 x i8] c"Bad ICRC\00"
@.str.22 = [16 x i8] c" PROGRESS: %x \00"
@str = [18 x i8] c"Illegal VF access\00"
@str.28 = [17 x i8] c"Half Programmed.\00"
@str.29 = [19 x i8] c"1st Block flashed.\00"
@str.30 = [19 x i8] c"All Secors Erased.\00"
@str.31 = [23 x i8] c"Sector Number N erased\00"
@str.32 = [19 x i8] c"Command Retrieved.\00"
@str.33 = [18 x i8] c"SHI mis-sequenced\00"
@str.34 = [19 x i8] c"Unsupported ACFUNC\00"
@str.35 = [21 x i8] c"Unsupported Preamble\00"
@str.36 = [16 x i8] c"Out of Sequence\00"
@str.37 = [20 x i8] c"DMA engine override\00"
@str.38 = [19 x i8] c"Queue Access Error\00"
@str.39 = [44 x i8] c"Application times out, Quiece unsuccessful.\00"
@str.40 = [57 x i8] c"Timeout (recoverable). Application quieced successfully.\00"
@str.41 = [14 x i8] c"LEM Attention\00"
@str.42 = [33 x i8] c"Allication violated SQB protocol\00"
@str.43 = [64 x i8] c"Allication logicIssued a RC not equal to 0x102, 0x104, or 0x108\00"
@str.44 = [43 x i8] c"Out of Bound (Addr. collision with images)\00"
@str.45 = [12 x i8] c"DMA Timeout\00"
@str.46 = [39 x i8] c"Flash programmer timeout/sequence err.\00"
@str.47 = [17 x i8] c"CRC Error (data)\00"
@str.48 = [42 x i8] c"Parse Error (length wrong, addr bad, ...)\00"
@str.49 = [3 x i8] c"OK\00"
@str.50 = [8 x i8] c"unknown\00"
define void @print_move_flash_results(i32 %0, i32 %1, i32 %2) {
%4 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0), i32 %0)
%5 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0), i32 %1)
switch i32 %1, label %44 [
i32 0, label %6
i32 1, label %8
i32 2, label %10
i32 3, label %12
i32 4, label %14
i32 5, label %16
i32 57345, label %18
i32 57346, label %20
i32 57347, label %22
i32 57348, label %24
i32 57349, label %26
i32 57350, label %28
i32 57351, label %30
i32 61440, label %32
i32 61441, label %34
i32 61442, label %36
i32 61443, label %38
i32 61444, label %40
i32 61445, label %42
]
6: ; preds = %3
%7 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @str.49, i64 0, i64 0))
br label %46
8: ; preds = %3
%9 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @str.48, i64 0, i64 0))
br label %46
10: ; preds = %3
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([17 x i8], [17 x i8]* @str.47, i64 0, i64 0))
br label %46
12: ; preds = %3
%13 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([39 x i8], [39 x i8]* @str.46, i64 0, i64 0))
br label %46
14: ; preds = %3
%15 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @str.45, i64 0, i64 0))
br label %46
16: ; preds = %3
%17 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([43 x i8], [43 x i8]* @str.44, i64 0, i64 0))
br label %46
18: ; preds = %3
%19 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([64 x i8], [64 x i8]* @str.43, i64 0, i64 0))
br label %46
20: ; preds = %3
%21 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str.42, i64 0, i64 0))
br label %46
22: ; preds = %3
%23 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @str.41, i64 0, i64 0))
br label %46
24: ; preds = %3
%25 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.40, i64 0, i64 0))
br label %46
26: ; preds = %3
%27 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([44 x i8], [44 x i8]* @str.39, i64 0, i64 0))
br label %46
28: ; preds = %3
%29 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @str.38, i64 0, i64 0))
br label %46
30: ; preds = %3
%31 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @str.37, i64 0, i64 0))
br label %46
32: ; preds = %3
%33 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.15, i64 0, i64 0))
br label %46
34: ; preds = %3
%35 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.36, i64 0, i64 0))
br label %46
36: ; preds = %3
%37 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @str.35, i64 0, i64 0))
br label %46
38: ; preds = %3
%39 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @str.34, i64 0, i64 0))
br label %46
40: ; preds = %3
%41 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str.33, i64 0, i64 0))
br label %46
42: ; preds = %3
%43 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str, i64 0, i64 0))
br label %46
44: ; preds = %3
%45 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @str.50, i64 0, i64 0))
br label %46
46: ; preds = %44, %42, %40, %38, %36, %34, %32, %30, %28, %26, %24, %22, %20, %18, %16, %14, %12, %10, %8, %6
%47 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @.str.22, i64 0, i64 0), i32 %2)
switch i32 %2, label %55 [
i32 0, label %52
i32 256, label %48
i32 512, label %49
i32 513, label %50
i32 515, label %51
]
48: ; preds = %46
br label %52
49: ; preds = %46
br label %52
50: ; preds = %46
br label %52
51: ; preds = %46
br label %52
52: ; preds = %46, %48, %49, %50, %51
%53 = phi i8* [ getelementptr inbounds ([17 x i8], [17 x i8]* @str.28, i64 0, i64 0), %51 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @str.29, i64 0, i64 0), %50 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @str.30, i64 0, i64 0), %49 ], [ getelementptr inbounds ([23 x i8], [23 x i8]* @str.31, i64 0, i64 0), %48 ], [ getelementptr inbounds ([19 x i8], [19 x i8]* @str.32, i64 0, i64 0), %46 ]
%54 = tail call i32 @puts(i8* dereferenceable(1) %53)
br label %55
55: ; preds = %52, %46
ret void
}