#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*/ lcd_msg(char *);
void ipdisp(char temp) {
  char msg1[] = "7486 %";
  char msg2[] = "7482 %";
  char msg3[] = "7408 %";
  char msg4[] = "7432 %";
  char msg5[] = "7404 %";
  char msg6[] = "7400 %";
  char msg7[] = "7402 %";
  char msg8[] = "7410 %";
  char msg9[] = "7427 %";
  char msg10[] = "7476 %";
  char msg11[] = "7474 %";
  char msg12[] = "74151%";
  char msg13[] = "74138%";
  switch (temp) {
  case 'c':
    lcd_msg(msg1);
    break;
  case '0':
    lcd_msg(msg2);
    break;
  case '=':
    lcd_msg(msg3);
    break;
  case '+':
    lcd_msg(msg4);
    break;
  case '1':
    lcd_msg(msg5);
    break;
  case '2':
    lcd_msg(msg6);
    break;
  case '3':
    lcd_msg(msg7);
    break;
  case '-':
    lcd_msg(msg8);
    break;
  case '4':
    lcd_msg(msg9);
    break;
  case '5':
    lcd_msg(msg10);
    break;
  case '6':
    lcd_msg(msg11);
    break;
  case '*':
    lcd_msg(msg12);
    break;
  case '7':
    lcd_msg(msg13);
    break;
  default:
    return;
  }
}


x86 assembly (clang, -O0):
<ipdisp>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
mov    %dil,%al
mov    %al,-0x1(%rbp)
movl   $0x252036,-0x5(%rbp)
movl   $0x36383437,-0x8(%rbp)
movl   $0x252032,-0xd(%rbp)
movl   $0x32383437,-0x10(%rbp)
movl   $0x252038,-0x15(%rbp)
movl   $0x38303437,-0x18(%rbp)
movl   $0x252032,-0x1d(%rbp)
movl   $0x32333437,-0x20(%rbp)
movl   $0x252034,-0x25(%rbp)
movl   $0x34303437,-0x28(%rbp)
movl   $0x252030,-0x2d(%rbp)
movl   $0x30303437,-0x30(%rbp)
movl   $0x252032,-0x35(%rbp)
movl   $0x32303437,-0x38(%rbp)
movl   $0x252030,-0x3d(%rbp)
movl   $0x30313437,-0x40(%rbp)
movl   $0x252037,-0x45(%rbp)
movl   $0x37323437,-0x48(%rbp)
movl   $0x252036,-0x4d(%rbp)
movl   $0x36373437,-0x50(%rbp)
movl   $0x252034,-0x55(%rbp)
movl   $0x34373437,-0x58(%rbp)
movl   $0x253135,-0x5d(%rbp)
movl   $0x35313437,-0x60(%rbp)
movl   $0x253833,-0x65(%rbp)
movl   $0x33313437,-0x68(%rbp)
movsbl -0x1(%rbp),%eax
add    $0xffffffd6,%eax
mov    %eax,%ecx
mov    %rcx,-0x70(%rbp)
sub    $0x39,%eax
ja     12b4 <ipdisp+0x1a4>
mov    -0x70(%rbp),%rax
lea    0xe0b(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    -0x8(%rbp),%rdi
call   1030 <lcd_msg@plt>
jmp    12b9 <ipdisp+0x1a9>
lea    -0x10(%rbp),%rdi
call   1030 <lcd_msg@plt>
jmp    12b9 <ipdisp+0x1a9>
lea    -0x18(%rbp),%rdi
call   1030 <lcd_msg@plt>
jmp    12b9 <ipdisp+0x1a9>
lea    -0x20(%rbp),%rdi
call   1030 <lcd_msg@plt>
jmp    12b9 <ipdisp+0x1a9>
lea    -0x28(%rbp),%rdi
call   1030 <lcd_msg@plt>
jmp    12b9 <ipdisp+0x1a9>
lea    -0x30(%rbp),%rdi
call   1030 <lcd_msg@plt>
jmp    12b9 <ipdisp+0x1a9>
lea    -0x38(%rbp),%rdi
call   1030 <lcd_msg@plt>
jmp    12b9 <ipdisp+0x1a9>
lea    -0x40(%rbp),%rdi
call   1030 <lcd_msg@plt>
jmp    12b9 <ipdisp+0x1a9>
lea    -0x48(%rbp),%rdi
call   1030 <lcd_msg@plt>
jmp    12b9 <ipdisp+0x1a9>
lea    -0x50(%rbp),%rdi
call   1030 <lcd_msg@plt>
jmp    12b9 <ipdisp+0x1a9>
lea    -0x58(%rbp),%rdi
call   1030 <lcd_msg@plt>
jmp    12b9 <ipdisp+0x1a9>
lea    -0x60(%rbp),%rdi
call   1030 <lcd_msg@plt>
jmp    12b9 <ipdisp+0x1a9>
lea    -0x68(%rbp),%rdi
call   1030 <lcd_msg@plt>
jmp    12b9 <ipdisp+0x1a9>
jmp    12b9 <ipdisp+0x1a9>
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ipdisp>:
sub    $0x68,%rsp
mov    %edi,%eax
movl   $0x252036,0x63(%rsp)
movl   $0x36383437,0x60(%rsp)
36
movl   $0x252032,0x5b(%rsp)
movl   $0x32383437,0x58(%rsp)
32
movl   $0x252038,0x53(%rsp)
movl   $0x38303437,0x50(%rsp)
38
movl   $0x252032,0x4b(%rsp)
movl   $0x32333437,0x48(%rsp)
32
movl   $0x252034,0x43(%rsp)
movl   $0x34303437,0x40(%rsp)
34
movl   $0x252030,0x3b(%rsp)
movl   $0x30303437,0x38(%rsp)
30
movl   $0x252032,0x33(%rsp)
movl   $0x32303437,0x30(%rsp)
32
movl   $0x252030,0x2b(%rsp)
movl   $0x30313437,0x28(%rsp)
30
movl   $0x252037,0x23(%rsp)
movl   $0x37323437,0x20(%rsp)
37
movl   $0x252036,0x1b(%rsp)
movl   $0x36373437,0x18(%rsp)
36
movl   $0x252034,0x13(%rsp)
movl   $0x34373437,0x10(%rsp)
34
movl   $0x253135,0xb(%rsp)
movl   $0x35313437,0x8(%rsp)
35
movl   $0x253833,0x3(%rsp)
movl   $0x33313437,(%rsp)
add    $0xffffffd6,%eax
cmp    $0x39,%eax
ja     1257 <ipdisp+0x147>
lea    0x60(%rsp),%rdi
lea    0xe07(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x8(%rsp),%rdi
jmp    1252 <ipdisp+0x142>
lea    0x48(%rsp),%rdi
jmp    1252 <ipdisp+0x142>
lea    0x28(%rsp),%rdi
jmp    1252 <ipdisp+0x142>
lea    0x58(%rsp),%rdi
jmp    1252 <ipdisp+0x142>
lea    0x40(%rsp),%rdi
jmp    1252 <ipdisp+0x142>
lea    0x38(%rsp),%rdi
jmp    1252 <ipdisp+0x142>
lea    0x30(%rsp),%rdi
jmp    1252 <ipdisp+0x142>
lea    0x20(%rsp),%rdi
jmp    1252 <ipdisp+0x142>
lea    0x18(%rsp),%rdi
jmp    1252 <ipdisp+0x142>
lea    0x10(%rsp),%rdi
jmp    1252 <ipdisp+0x142>
mov    %rsp,%rdi
jmp    1252 <ipdisp+0x142>
lea    0x50(%rsp),%rdi
call   1030 <lcd_msg@plt>
add    $0x68,%rsp
ret

LLVM IR (-O0):
@__const.ipdisp.msg1 = [7 x i8] c"7486 %\00"
@__const.ipdisp.msg2 = [7 x i8] c"7482 %\00"
@__const.ipdisp.msg3 = [7 x i8] c"7408 %\00"
@__const.ipdisp.msg4 = [7 x i8] c"7432 %\00"
@__const.ipdisp.msg5 = [7 x i8] c"7404 %\00"
@__const.ipdisp.msg6 = [7 x i8] c"7400 %\00"
@__const.ipdisp.msg7 = [7 x i8] c"7402 %\00"
@__const.ipdisp.msg8 = [7 x i8] c"7410 %\00"
@__const.ipdisp.msg9 = [7 x i8] c"7427 %\00"
@__const.ipdisp.msg10 = [7 x i8] c"7476 %\00"
@__const.ipdisp.msg11 = [7 x i8] c"7474 %\00"
@__const.ipdisp.msg12 = [7 x i8] c"74151%\00"
@__const.ipdisp.msg13 = [7 x i8] c"74138%\00"
define void @ipdisp(i8 signext %0) {
%2 = alloca i8
%3 = alloca [7 x i8]
%4 = alloca [7 x i8]
%5 = alloca [7 x i8]
%6 = alloca [7 x i8]
%7 = alloca [7 x i8]
%8 = alloca [7 x i8]
%9 = alloca [7 x i8]
%10 = alloca [7 x i8]
%11 = alloca [7 x i8]
%12 = alloca [7 x i8]
%13 = alloca [7 x i8]
%14 = alloca [7 x i8]
%15 = alloca [7 x i8]
store i8 %0, i8* %2
%16 = bitcast [7 x i8]* %3 to i8*
%17 = bitcast [7 x i8]* %4 to i8*
%18 = bitcast [7 x i8]* %5 to i8*
%19 = bitcast [7 x i8]* %6 to i8*
%20 = bitcast [7 x i8]* %7 to i8*
%21 = bitcast [7 x i8]* %8 to i8*
%22 = bitcast [7 x i8]* %9 to i8*
%23 = bitcast [7 x i8]* %10 to i8*
%24 = bitcast [7 x i8]* %11 to i8*
%25 = bitcast [7 x i8]* %12 to i8*
%26 = bitcast [7 x i8]* %13 to i8*
%27 = bitcast [7 x i8]* %14 to i8*
%28 = bitcast [7 x i8]* %15 to i8*
%29 = load i8, i8* %2
%30 = sext i8 %29 to i32
switch i32 %30, label %70 [
i32 99, label %31
i32 48, label %34
i32 61, label %37
i32 43, label %40
i32 49, label %43
i32 50, label %46
i32 51, label %49
i32 45, label %52
i32 52, label %55
i32 53, label %58
i32 54, label %61
i32 42, label %64
i32 55, label %67
]
31: ; preds = %1
%32 = getelementptr inbounds [7 x i8], [7 x i8]* %3, i64 0, i64 0
%33 = call i32 @lcd_msg(i8* %32)
br label %71
34: ; preds = %1
%35 = getelementptr inbounds [7 x i8], [7 x i8]* %4, i64 0, i64 0
%36 = call i32 @lcd_msg(i8* %35)
br label %71
37: ; preds = %1
%38 = getelementptr inbounds [7 x i8], [7 x i8]* %5, i64 0, i64 0
%39 = call i32 @lcd_msg(i8* %38)
br label %71
40: ; preds = %1
%41 = getelementptr inbounds [7 x i8], [7 x i8]* %6, i64 0, i64 0
%42 = call i32 @lcd_msg(i8* %41)
br label %71
43: ; preds = %1
%44 = getelementptr inbounds [7 x i8], [7 x i8]* %7, i64 0, i64 0
%45 = call i32 @lcd_msg(i8* %44)
br label %71
46: ; preds = %1
%47 = getelementptr inbounds [7 x i8], [7 x i8]* %8, i64 0, i64 0
%48 = call i32 @lcd_msg(i8* %47)
br label %71
49: ; preds = %1
%50 = getelementptr inbounds [7 x i8], [7 x i8]* %9, i64 0, i64 0
%51 = call i32 @lcd_msg(i8* %50)
br label %71
52: ; preds = %1
%53 = getelementptr inbounds [7 x i8], [7 x i8]* %10, i64 0, i64 0
%54 = call i32 @lcd_msg(i8* %53)
br label %71
55: ; preds = %1
%56 = getelementptr inbounds [7 x i8], [7 x i8]* %11, i64 0, i64 0
%57 = call i32 @lcd_msg(i8* %56)
br label %71
58: ; preds = %1
%59 = getelementptr inbounds [7 x i8], [7 x i8]* %12, i64 0, i64 0
%60 = call i32 @lcd_msg(i8* %59)
br label %71
61: ; preds = %1
%62 = getelementptr inbounds [7 x i8], [7 x i8]* %13, i64 0, i64 0
%63 = call i32 @lcd_msg(i8* %62)
br label %71
64: ; preds = %1
%65 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 0
%66 = call i32 @lcd_msg(i8* %65)
br label %71
67: ; preds = %1
%68 = getelementptr inbounds [7 x i8], [7 x i8]* %15, i64 0, i64 0
%69 = call i32 @lcd_msg(i8* %68)
br label %71
70: ; preds = %1
br label %71
71: ; preds = %70, %67, %64, %61, %58, %55, %52, %49, %46, %43, %40, %37, %34, %31
ret void
}

LLVM IR (-O2):
@__const.ipdisp.msg1 = [7 x i8] c"7486 %\00"
@__const.ipdisp.msg2 = [7 x i8] c"7482 %\00"
@__const.ipdisp.msg3 = [7 x i8] c"7408 %\00"
@__const.ipdisp.msg4 = [7 x i8] c"7432 %\00"
@__const.ipdisp.msg5 = [7 x i8] c"7404 %\00"
@__const.ipdisp.msg6 = [7 x i8] c"7400 %\00"
@__const.ipdisp.msg7 = [7 x i8] c"7402 %\00"
@__const.ipdisp.msg8 = [7 x i8] c"7410 %\00"
@__const.ipdisp.msg9 = [7 x i8] c"7427 %\00"
@__const.ipdisp.msg10 = [7 x i8] c"7476 %\00"
@__const.ipdisp.msg11 = [7 x i8] c"7474 %\00"
@__const.ipdisp.msg12 = [7 x i8] c"74151%\00"
@__const.ipdisp.msg13 = [7 x i8] c"74138%\00"
define void @ipdisp(i8 signext %0) {
%2 = alloca [7 x i8]
%3 = alloca [7 x i8]
%4 = alloca [7 x i8]
%5 = alloca [7 x i8]
%6 = alloca [7 x i8]
%7 = alloca [7 x i8]
%8 = alloca [7 x i8]
%9 = alloca [7 x i8]
%10 = alloca [7 x i8]
%11 = alloca [7 x i8]
%12 = alloca [7 x i8]
%13 = alloca [7 x i8]
%14 = alloca [7 x i8]
%15 = getelementptr inbounds [7 x i8], [7 x i8]* %2, i64 0, i64 0
%16 = getelementptr inbounds [7 x i8], [7 x i8]* %3, i64 0, i64 0
%17 = getelementptr inbounds [7 x i8], [7 x i8]* %4, i64 0, i64 0
%18 = getelementptr inbounds [7 x i8], [7 x i8]* %5, i64 0, i64 0
%19 = getelementptr inbounds [7 x i8], [7 x i8]* %6, i64 0, i64 0
%20 = getelementptr inbounds [7 x i8], [7 x i8]* %7, i64 0, i64 0
%21 = getelementptr inbounds [7 x i8], [7 x i8]* %8, i64 0, i64 0
%22 = getelementptr inbounds [7 x i8], [7 x i8]* %9, i64 0, i64 0
%23 = getelementptr inbounds [7 x i8], [7 x i8]* %10, i64 0, i64 0
%24 = getelementptr inbounds [7 x i8], [7 x i8]* %11, i64 0, i64 0
%25 = getelementptr inbounds [7 x i8], [7 x i8]* %12, i64 0, i64 0
%26 = getelementptr inbounds [7 x i8], [7 x i8]* %13, i64 0, i64 0
%27 = getelementptr inbounds [7 x i8], [7 x i8]* %14, i64 0, i64 0
%28 = sext i8 %0 to i32
switch i32 %28, label %44 [
i32 99, label %41
i32 48, label %29
i32 61, label %30
i32 43, label %31
i32 49, label %32
i32 50, label %33
i32 51, label %34
i32 45, label %35
i32 52, label %36
i32 53, label %37
i32 54, label %38
i32 42, label %39
i32 55, label %40
]
29: ; preds = %1
br label %41
30: ; preds = %1
br label %41
31: ; preds = %1
br label %41
32: ; preds = %1
br label %41
33: ; preds = %1
br label %41
34: ; preds = %1
br label %41
35: ; preds = %1
br label %41
36: ; preds = %1
br label %41
37: ; preds = %1
br label %41
38: ; preds = %1
br label %41
39: ; preds = %1
br label %41
40: ; preds = %1
br label %41
41: ; preds = %1, %40, %39, %38, %37, %36, %35, %34, %33, %32, %31, %30, %29
%42 = phi i8* [ %16, %29 ], [ %17, %30 ], [ %18, %31 ], [ %19, %32 ], [ %20, %33 ], [ %21, %34 ], [ %22, %35 ], [ %23, %36 ], [ %24, %37 ], [ %25, %38 ], [ %26, %39 ], [ %27, %40 ], [ %15, %1 ]
%43 = call i32 @lcd_msg(i8* %42)
br label %44
44: ; preds = %41, %1
ret void
}