#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 */
struct bplus_tree {
  int dummy;
};

/* Variables and functions */
#define EOF 128
int /*<<< orphan*/ bplus_tree_dump(struct bplus_tree *);
int /*<<< orphan*/ command_tips();
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *);
char getchar();
int /*<<< orphan*/ number_process(struct bplus_tree *, float);
int /*<<< orphan*/ stderr;
void command_process(struct bplus_tree *tree) {
  int c;
  for (;;) {
    fprintf(stderr,
            "Please input operational command ('h' or \"help\" for help): ");
    switch (c = getchar()) {
    case EOF:
      fprintf(stderr, "\n");
      return;
    case 'q':
      if ((c = getchar()) == '\n' ||
          (c == 'u' && getchar() == 'i' && getchar() == 't' &&
           ((c = getchar()) == ' ' || c == '\t' || c == '\n'))) {
        return;
      }
      break;
    case 'h':
      if ((c = getchar()) == '\n' ||
          (c == 'e' && getchar() == 'l' && getchar() == 'p' &&
           ((c = getchar()) == ' ' || c == '\t' || c == '\n'))) {
        command_tips();
      }
      break;
    case 'i':
      if (((c = getchar()) == ' ' || c == '\t') ||
          ((c = getchar()) == 'n' && getchar() == 's' && getchar() == 'e' &&
           getchar() == 'r' && getchar() == 't' &&
           ((c = getchar()) == ' ' || c == '\t'))) {
        if (number_process(tree, 'i') < 0) {
          return;
        }
      }
      break;
    case 'r':
      if (((c = getchar()) == ' ' || c == '\t') ||
          (c == 'e' && getchar() == 'm' && getchar() == 'o' &&
           getchar() == 'v' && getchar() == 'e' &&
           ((c = getchar()) == ' ' || c == '\t'))) {
        if (number_process(tree, 'r') < 0) {
          return;
        }
      }
      break;
    case 'f':
      if (((c = getchar()) == ' ' || c == '\t') ||
          (c == 'i' && getchar() == 'n' && getchar() == 'd' &&
           ((c = getchar()) == ' ' || c == '\t'))) {
        if (number_process(tree, 'f') < 0) {
          return;
        }
      }
      break;
    case 'd':
      if ((c = getchar()) == '\n' ||
          (c == 'u' && getchar() == 'm' && getchar() == 'p' &&
           ((c = getchar()) == ' ' || c == '\t' || c == '\n'))) {
        bplus_tree_dump(tree);
      }
      break;
    default:
      break;
    }
  }
}


x86 assembly (clang, -O0):
<command_process>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x8(%rbp)
mov    0x2e7d(%rip),%rax
mov    (%rax),%edi
lea    0xf14(%rip),%rsi
call   1050 <fprintf@plt>
xor    %eax,%eax
call   1040 <getchar@plt>
movsbl %al,%eax
mov    %eax,-0xc(%rbp)
add    $0xffffff9c,%eax
mov    %eax,%ecx
mov    %rcx,-0x18(%rbp)
sub    $0x1c,%eax
ja     1555 <command_process+0x405>
mov    -0x18(%rbp),%rax
lea    0xe71(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    0x2e35(%rip),%rax
mov    (%rax),%edi
lea    0xf08(%rip),%rsi
call   1050 <fprintf@plt>
jmp    155f <command_process+0x40f>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
mov    %eax,-0xc(%rbp)
cmp    $0xa,%eax
je     122e <command_process+0xde>
cmpl   $0x75,-0xc(%rbp)
jne    1233 <command_process+0xe3>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
cmp    $0x69,%eax
jne    1233 <command_process+0xe3>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
cmp    $0x74,%eax
jne    1233 <command_process+0xe3>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
mov    %eax,-0xc(%rbp)
cmp    $0x20,%eax
je     122e <command_process+0xde>
cmpl   $0x9,-0xc(%rbp)
je     122e <command_process+0xde>
cmpl   $0xa,-0xc(%rbp)
jne    1233 <command_process+0xe3>
jmp    155f <command_process+0x40f>
jmp    155a <command_process+0x40a>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
mov    %eax,-0xc(%rbp)
cmp    $0xa,%eax
je     12a8 <command_process+0x158>
cmpl   $0x65,-0xc(%rbp)
jne    12af <command_process+0x15f>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
cmp    $0x6c,%eax
jne    12af <command_process+0x15f>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
cmp    $0x70,%eax
jne    12af <command_process+0x15f>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
mov    %eax,-0xc(%rbp)
cmp    $0x20,%eax
je     12a8 <command_process+0x158>
cmpl   $0x9,-0xc(%rbp)
je     12a8 <command_process+0x158>
cmpl   $0xa,-0xc(%rbp)
jne    12af <command_process+0x15f>
mov    $0x0,%al
call   1070 <command_tips@plt>
jmp    155a <command_process+0x40a>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
mov    %eax,-0xc(%rbp)
cmp    $0x20,%eax
je     1356 <command_process+0x206>
cmpl   $0x9,-0xc(%rbp)
je     1356 <command_process+0x206>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
mov    %eax,-0xc(%rbp)
cmp    $0x6e,%eax
jne    137a <command_process+0x22a>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
cmp    $0x73,%eax
jne    137a <command_process+0x22a>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
cmp    $0x65,%eax
jne    137a <command_process+0x22a>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
cmp    $0x72,%eax
jne    137a <command_process+0x22a>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
cmp    $0x74,%eax
jne    137a <command_process+0x22a>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
mov    %eax,-0xc(%rbp)
cmp    $0x20,%eax
je     1356 <command_process+0x206>
cmpl   $0x9,-0xc(%rbp)
jne    137a <command_process+0x22a>
mov    -0x8(%rbp),%rdi
movss  0xca6(%rip),%xmm0
call   1060 <number_process@plt>
cmp    $0x0,%eax
jge    1375 <command_process+0x225>
jmp    155f <command_process+0x40f>
jmp    137a <command_process+0x22a>
jmp    155a <command_process+0x40a>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
mov    %eax,-0xc(%rbp)
cmp    $0x20,%eax
je     1415 <command_process+0x2c5>
cmpl   $0x9,-0xc(%rbp)
je     1415 <command_process+0x2c5>
cmpl   $0x65,-0xc(%rbp)
jne    1439 <command_process+0x2e9>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
cmp    $0x6d,%eax
jne    1439 <command_process+0x2e9>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
cmp    $0x6f,%eax
jne    1439 <command_process+0x2e9>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
cmp    $0x76,%eax
jne    1439 <command_process+0x2e9>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
cmp    $0x65,%eax
jne    1439 <command_process+0x2e9>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
mov    %eax,-0xc(%rbp)
cmp    $0x20,%eax
je     1415 <command_process+0x2c5>
cmpl   $0x9,-0xc(%rbp)
jne    1439 <command_process+0x2e9>
mov    -0x8(%rbp),%rdi
movss  0xbe3(%rip),%xmm0
call   1060 <number_process@plt>
cmp    $0x0,%eax
jge    1434 <command_process+0x2e4>
jmp    155f <command_process+0x40f>
jmp    1439 <command_process+0x2e9>
jmp    155a <command_process+0x40a>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
mov    %eax,-0xc(%rbp)
cmp    $0x20,%eax
je     14ae <command_process+0x35e>
cmpl   $0x9,-0xc(%rbp)
je     14ae <command_process+0x35e>
cmpl   $0x69,-0xc(%rbp)
jne    14d2 <command_process+0x382>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
cmp    $0x6e,%eax
jne    14d2 <command_process+0x382>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
cmp    $0x64,%eax
jne    14d2 <command_process+0x382>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
mov    %eax,-0xc(%rbp)
cmp    $0x20,%eax
je     14ae <command_process+0x35e>
cmpl   $0x9,-0xc(%rbp)
jne    14d2 <command_process+0x382>
mov    -0x8(%rbp),%rdi
movss  0xb46(%rip),%xmm0
call   1060 <number_process@plt>
cmp    $0x0,%eax
jge    14cd <command_process+0x37d>
jmp    155f <command_process+0x40f>
jmp    14d2 <command_process+0x382>
jmp    155a <command_process+0x40a>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
mov    %eax,-0xc(%rbp)
cmp    $0xa,%eax
je     1547 <command_process+0x3f7>
cmpl   $0x75,-0xc(%rbp)
jne    1550 <command_process+0x400>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
cmp    $0x6d,%eax
jne    1550 <command_process+0x400>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
cmp    $0x70,%eax
jne    1550 <command_process+0x400>
mov    $0x0,%al
call   1040 <getchar@plt>
movsbl %al,%eax
mov    %eax,-0xc(%rbp)
cmp    $0x20,%eax
je     1547 <command_process+0x3f7>
cmpl   $0x9,-0xc(%rbp)
je     1547 <command_process+0x3f7>
cmpl   $0xa,-0xc(%rbp)
jne    1550 <command_process+0x400>
mov    -0x8(%rbp),%rdi
call   1030 <bplus_tree_dump@plt>
jmp    155a <command_process+0x40a>
jmp    155a <command_process+0x40a>
jmp    115c <command_process+0xc>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<command_process>:
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %rdi,%r14
mov    0x2e7d(%rip),%r15
lea    0xede(%rip),%r12
lea    0xe9b(%rip),%rbx
movabs $0x100000600,%r13
jmp    1195 <command_process+0x45>
mov    %r14,%rdi
movss  0xe80(%rip),%xmm0
call   1060 <number_process@plt>
test   %eax,%eax
js     13f5 <command_process+0x2a5>
mov    (%r15),%edi
mov    %r12,%rsi
call   1050 <fprintf@plt>
xor    %eax,%eax
call   1040 <getchar@plt>
movsbl %al,%eax
add    $0xffffff9c,%eax
cmp    $0xe,%eax
ja     1195 <command_process+0x45>
movslq (%rbx,%rax,4),%rax
add    %rbx,%rax
jmp    *%rax
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0xa,%al
je     11f4 <command_process+0xa4>
cmp    $0x75,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x6d,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x70,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x20,%al
ja     1195 <command_process+0x45>
movzbl %al,%eax
bt     %rax,%r13
jae    1195 <command_process+0x45>
mov    %r14,%rdi
call   1030 <bplus_tree_dump@plt>
jmp    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x9,%al
je     1242 <command_process+0xf2>
cmp    $0x20,%al
je     1242 <command_process+0xf2>
cmp    $0x69,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x6e,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x64,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x20,%al
je     1242 <command_process+0xf2>
cmp    $0x9,%al
jne    1195 <command_process+0x45>
mov    %r14,%rdi
movss  0xdb3(%rip),%xmm0
jmp    1188 <command_process+0x38>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0xa,%al
je     129f <command_process+0x14f>
cmp    $0x65,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x6c,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x70,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x20,%al
ja     1195 <command_process+0x45>
movzbl %al,%eax
bt     %rax,%r13
jae    1195 <command_process+0x45>
xor    %eax,%eax
call   1070 <command_tips@plt>
jmp    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x9,%al
je     117d <command_process+0x2d>
cmp    $0x20,%al
je     117d <command_process+0x2d>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x6e,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x73,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x65,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x72,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x74,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x20,%al
je     117d <command_process+0x2d>
cmp    $0x9,%al
je     117d <command_process+0x2d>
jmp    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x75,%al
je     13bb <command_process+0x26b>
cmp    $0xa,%al
jne    1195 <command_process+0x45>
jmp    13f5 <command_process+0x2a5>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x9,%al
je     13ab <command_process+0x25b>
cmp    $0x20,%al
je     13ab <command_process+0x25b>
cmp    $0x65,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x6d,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x6f,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x76,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x65,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x20,%al
je     13ab <command_process+0x25b>
cmp    $0x9,%al
jne    1195 <command_process+0x45>
mov    %r14,%rdi
movss  0xc4e(%rip),%xmm0
jmp    1188 <command_process+0x38>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x69,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x74,%al
jne    1195 <command_process+0x45>
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    $0x20,%al
ja     1195 <command_process+0x45>
movzbl %al,%eax
bt     %rax,%r13
jae    1195 <command_process+0x45>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
%struct.bplus_tree = type { i32 }
@stderr = global i32 0
@.str = [60 x i8] c"Please input operational command ('h' or \22help\22 for help): \00"
@.str.1 = [2 x i8] c"\0A\00"
define void @command_process(%struct.bplus_tree* %0) {
%2 = alloca %struct.bplus_tree*
%3 = alloca i32
store %struct.bplus_tree* %0, %struct.bplus_tree** %2
br label %4
4: ; preds = %210, %1
%5 = load i32, i32* @stderr
%6 = call i32 @fprintf(i32 %5, i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str, i64 0, i64 0))
%7 = call signext i8 (...) @getchar()
%8 = sext i8 %7 to i32
store i32 %8, i32* %3
switch i32 %8, label %209 [
i32 128, label %9
i32 113, label %12
i32 104, label %39
i32 105, label %67
i32 114, label %108
i32 102, label %148
i32 100, label %180
]
9: ; preds = %4
%10 = load i32, i32* @stderr
%11 = call i32 @fprintf(i32 %10, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %211
12: ; preds = %4
%13 = call signext i8 (...) @getchar()
%14 = sext i8 %13 to i32
store i32 %14, i32* %3
%15 = icmp eq i32 %14, 10
br i1 %15, label %37, label %16
16: ; preds = %12
%17 = load i32, i32* %3
%18 = icmp eq i32 %17, 117
br i1 %18, label %19, label %38
19: ; preds = %16
%20 = call signext i8 (...) @getchar()
%21 = sext i8 %20 to i32
%22 = icmp eq i32 %21, 105
br i1 %22, label %23, label %38
23: ; preds = %19
%24 = call signext i8 (...) @getchar()
%25 = sext i8 %24 to i32
%26 = icmp eq i32 %25, 116
br i1 %26, label %27, label %38
27: ; preds = %23
%28 = call signext i8 (...) @getchar()
%29 = sext i8 %28 to i32
store i32 %29, i32* %3
%30 = icmp eq i32 %29, 32
br i1 %30, label %37, label %31
31: ; preds = %27
%32 = load i32, i32* %3
%33 = icmp eq i32 %32, 9
br i1 %33, label %37, label %34
34: ; preds = %31
%35 = load i32, i32* %3
%36 = icmp eq i32 %35, 10
br i1 %36, label %37, label %38
37: ; preds = %34, %31, %27, %12
br label %211
38: ; preds = %34, %23, %19, %16
br label %210
39: ; preds = %4
%40 = call signext i8 (...) @getchar()
%41 = sext i8 %40 to i32
store i32 %41, i32* %3
%42 = icmp eq i32 %41, 10
br i1 %42, label %64, label %43
43: ; preds = %39
%44 = load i32, i32* %3
%45 = icmp eq i32 %44, 101
br i1 %45, label %46, label %66
46: ; preds = %43
%47 = call signext i8 (...) @getchar()
%48 = sext i8 %47 to i32
%49 = icmp eq i32 %48, 108
br i1 %49, label %50, label %66
50: ; preds = %46
%51 = call signext i8 (...) @getchar()
%52 = sext i8 %51 to i32
%53 = icmp eq i32 %52, 112
br i1 %53, label %54, label %66
54: ; preds = %50
%55 = call signext i8 (...) @getchar()
%56 = sext i8 %55 to i32
store i32 %56, i32* %3
%57 = icmp eq i32 %56, 32
br i1 %57, label %64, label %58
58: ; preds = %54
%59 = load i32, i32* %3
%60 = icmp eq i32 %59, 9
br i1 %60, label %64, label %61
61: ; preds = %58
%62 = load i32, i32* %3
%63 = icmp eq i32 %62, 10
br i1 %63, label %64, label %66
64: ; preds = %61, %58, %54, %39
%65 = call i32 (...) @command_tips()
br label %66
66: ; preds = %64, %61, %50, %46, %43
br label %210
67: ; preds = %4
%68 = call signext i8 (...) @getchar()
%69 = sext i8 %68 to i32
store i32 %69, i32* %3
%70 = icmp eq i32 %69, 32
br i1 %70, label %101, label %71
71: ; preds = %67
%72 = load i32, i32* %3
%73 = icmp eq i32 %72, 9
br i1 %73, label %101, label %74
74: ; preds = %71
%75 = call signext i8 (...) @getchar()
%76 = sext i8 %75 to i32
store i32 %76, i32* %3
%77 = icmp eq i32 %76, 110
br i1 %77, label %78, label %107
78: ; preds = %74
%79 = call signext i8 (...) @getchar()
%80 = sext i8 %79 to i32
%81 = icmp eq i32 %80, 115
br i1 %81, label %82, label %107
82: ; preds = %78
%83 = call signext i8 (...) @getchar()
%84 = sext i8 %83 to i32
%85 = icmp eq i32 %84, 101
br i1 %85, label %86, label %107
86: ; preds = %82
%87 = call signext i8 (...) @getchar()
%88 = sext i8 %87 to i32
%89 = icmp eq i32 %88, 114
br i1 %89, label %90, label %107
90: ; preds = %86
%91 = call signext i8 (...) @getchar()
%92 = sext i8 %91 to i32
%93 = icmp eq i32 %92, 116
br i1 %93, label %94, label %107
94: ; preds = %90
%95 = call signext i8 (...) @getchar()
%96 = sext i8 %95 to i32
store i32 %96, i32* %3
%97 = icmp eq i32 %96, 32
br i1 %97, label %101, label %98
98: ; preds = %94
%99 = load i32, i32* %3
%100 = icmp eq i32 %99, 9
br i1 %100, label %101, label %107
101: ; preds = %98, %94, %71, %67
%102 = load %struct.bplus_tree*, %struct.bplus_tree** %2
%103 = call i32 @number_process(%struct.bplus_tree* %102, float 1.050000e+02)
%104 = icmp slt i32 %103, 0
br i1 %104, label %105, label %106
105: ; preds = %101
br label %211
106: ; preds = %101
br label %107
107: ; preds = %106, %98, %90, %86, %82, %78, %74
br label %210
108: ; preds = %4
%109 = call signext i8 (...) @getchar()
%110 = sext i8 %109 to i32
store i32 %110, i32* %3
%111 = icmp eq i32 %110, 32
br i1 %111, label %141, label %112
112: ; preds = %108
%113 = load i32, i32* %3
%114 = icmp eq i32 %113, 9
br i1 %114, label %141, label %115
115: ; preds = %112
%116 = load i32, i32* %3
%117 = icmp eq i32 %116, 101
br i1 %117, label %118, label %147
118: ; preds = %115
%119 = call signext i8 (...) @getchar()
%120 = sext i8 %119 to i32
%121 = icmp eq i32 %120, 109
br i1 %121, label %122, label %147
122: ; preds = %118
%123 = call signext i8 (...) @getchar()
%124 = sext i8 %123 to i32
%125 = icmp eq i32 %124, 111
br i1 %125, label %126, label %147
126: ; preds = %122
%127 = call signext i8 (...) @getchar()
%128 = sext i8 %127 to i32
%129 = icmp eq i32 %128, 118
br i1 %129, label %130, label %147
130: ; preds = %126
%131 = call signext i8 (...) @getchar()
%132 = sext i8 %131 to i32
%133 = icmp eq i32 %132, 101
br i1 %133, label %134, label %147
134: ; preds = %130
%135 = call signext i8 (...) @getchar()
%136 = sext i8 %135 to i32
store i32 %136, i32* %3
%137 = icmp eq i32 %136, 32
br i1 %137, label %141, label %138
138: ; preds = %134
%139 = load i32, i32* %3
%140 = icmp eq i32 %139, 9
br i1 %140, label %141, label %147
141: ; preds = %138, %134, %112, %108
%142 = load %struct.bplus_tree*, %struct.bplus_tree** %2
%143 = call i32 @number_process(%struct.bplus_tree* %142, float 1.140000e+02)
%144 = icmp slt i32 %143, 0
br i1 %144, label %145, label %146
145: ; preds = %141
br label %211
146: ; preds = %141
br label %147
147: ; preds = %146, %138, %130, %126, %122, %118, %115
br label %210
148: ; preds = %4
%149 = call signext i8 (...) @getchar()
%150 = sext i8 %149 to i32
store i32 %150, i32* %3
%151 = icmp eq i32 %150, 32
br i1 %151, label %173, label %152
152: ; preds = %148
%153 = load i32, i32* %3
%154 = icmp eq i32 %153, 9
br i1 %154, label %173, label %155
155: ; preds = %152
%156 = load i32, i32* %3
%157 = icmp eq i32 %156, 105
br i1 %157, label %158, label %179
158: ; preds = %155
%159 = call signext i8 (...) @getchar()
%160 = sext i8 %159 to i32
%161 = icmp eq i32 %160, 110
br i1 %161, label %162, label %179
162: ; preds = %158
%163 = call signext i8 (...) @getchar()
%164 = sext i8 %163 to i32
%165 = icmp eq i32 %164, 100
br i1 %165, label %166, label %179
166: ; preds = %162
%167 = call signext i8 (...) @getchar()
%168 = sext i8 %167 to i32
store i32 %168, i32* %3
%169 = icmp eq i32 %168, 32
br i1 %169, label %173, label %170
170: ; preds = %166
%171 = load i32, i32* %3
%172 = icmp eq i32 %171, 9
br i1 %172, label %173, label %179
173: ; preds = %170, %166, %152, %148
%174 = load %struct.bplus_tree*, %struct.bplus_tree** %2
%175 = call i32 @number_process(%struct.bplus_tree* %174, float 1.020000e+02)
%176 = icmp slt i32 %175, 0
br i1 %176, label %177, label %178
177: ; preds = %173
br label %211
178: ; preds = %173
br label %179
179: ; preds = %178, %170, %162, %158, %155
br label %210
180: ; preds = %4
%181 = call signext i8 (...) @getchar()
%182 = sext i8 %181 to i32
store i32 %182, i32* %3
%183 = icmp eq i32 %182, 10
br i1 %183, label %205, label %184
184: ; preds = %180
%185 = load i32, i32* %3
%186 = icmp eq i32 %185, 117
br i1 %186, label %187, label %208
187: ; preds = %184
%188 = call signext i8 (...) @getchar()
%189 = sext i8 %188 to i32
%190 = icmp eq i32 %189, 109
br i1 %190, label %191, label %208
191: ; preds = %187
%192 = call signext i8 (...) @getchar()
%193 = sext i8 %192 to i32
%194 = icmp eq i32 %193, 112
br i1 %194, label %195, label %208
195: ; preds = %191
%196 = call signext i8 (...) @getchar()
%197 = sext i8 %196 to i32
store i32 %197, i32* %3
%198 = icmp eq i32 %197, 32
br i1 %198, label %205, label %199
199: ; preds = %195
%200 = load i32, i32* %3
%201 = icmp eq i32 %200, 9
br i1 %201, label %205, label %202
202: ; preds = %199
%203 = load i32, i32* %3
%204 = icmp eq i32 %203, 10
br i1 %204, label %205, label %208
205: ; preds = %202, %199, %195, %180
%206 = load %struct.bplus_tree*, %struct.bplus_tree** %2
%207 = call i32 @bplus_tree_dump(%struct.bplus_tree* %206)
br label %208
208: ; preds = %205, %202, %191, %187, %184
br label %210
209: ; preds = %4
br label %210
210: ; preds = %209, %208, %179, %147, %107, %66, %38
br label %4
211: ; preds = %177, %145, %105, %37, %9
ret void
}

LLVM IR (-O2):
%struct.bplus_tree = type { i32 }
@stderr = global i32 0
@.str = [60 x i8] c"Please input operational command ('h' or \22help\22 for help): \00"
define void @command_process(%struct.bplus_tree* %0) {
br label %2
2: ; preds = %93, %1
%3 = load i32, i32* @stderr
%4 = tail call i32 @fprintf(i32 %3, i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str, i64 0, i64 0))
%5 = tail call signext i8 (...) @getchar()
%6 = sext i8 %5 to i32
switch i32 %6, label %93 [
i32 100, label %83
i32 113, label %7
i32 104, label %17
i32 105, label %29
i32 114, label %51
i32 102, label %70
]
7: ; preds = %2
%8 = tail call signext i8 (...) @getchar()
switch i8 %8, label %93 [
i8 10, label %96
i8 117, label %9
]
9: ; preds = %7
%10 = tail call signext i8 (...) @getchar()
%11 = icmp eq i8 %10, 105
br i1 %11, label %12, label %93
12: ; preds = %9
%13 = tail call signext i8 (...) @getchar()
%14 = icmp eq i8 %13, 116
br i1 %14, label %15, label %93
15: ; preds = %12
%16 = tail call signext i8 (...) @getchar()
switch i8 %16, label %93 [
i8 32, label %96
i8 10, label %96
i8 9, label %96
]
17: ; preds = %2
%18 = tail call signext i8 (...) @getchar()
switch i8 %18, label %93 [
i8 10, label %27
i8 101, label %19
]
19: ; preds = %17
%20 = tail call signext i8 (...) @getchar()
%21 = icmp eq i8 %20, 108
br i1 %21, label %22, label %93
22: ; preds = %19
%23 = tail call signext i8 (...) @getchar()
%24 = icmp eq i8 %23, 112
br i1 %24, label %25, label %93
25: ; preds = %22
%26 = tail call signext i8 (...) @getchar()
switch i8 %26, label %93 [
i8 32, label %27
i8 10, label %27
i8 9, label %27
]
27: ; preds = %25, %25, %25, %17
%28 = tail call i32 (...) @command_tips()
br label %93
29: ; preds = %2
%30 = tail call signext i8 (...) @getchar()
switch i8 %30, label %31 [
i8 32, label %48
i8 9, label %48
]
31: ; preds = %29
%32 = tail call signext i8 (...) @getchar()
%33 = icmp eq i8 %32, 110
br i1 %33, label %34, label %93
34: ; preds = %31
%35 = tail call signext i8 (...) @getchar()
%36 = icmp eq i8 %35, 115
br i1 %36, label %37, label %93
37: ; preds = %34
%38 = tail call signext i8 (...) @getchar()
%39 = icmp eq i8 %38, 101
br i1 %39, label %40, label %93
40: ; preds = %37
%41 = tail call signext i8 (...) @getchar()
%42 = icmp eq i8 %41, 114
br i1 %42, label %43, label %93
43: ; preds = %40
%44 = tail call signext i8 (...) @getchar()
%45 = icmp eq i8 %44, 116
br i1 %45, label %46, label %93
46: ; preds = %43
%47 = tail call signext i8 (...) @getchar()
switch i8 %47, label %93 [
i8 32, label %48
i8 9, label %48
]
48: ; preds = %46, %46, %29, %29
%49 = tail call i32 @number_process(%struct.bplus_tree* %0, float 1.050000e+02)
%50 = icmp slt i32 %49, 0
br i1 %50, label %96, label %93
51: ; preds = %2
%52 = tail call signext i8 (...) @getchar()
switch i8 %52, label %93 [
i8 32, label %67
i8 9, label %67
i8 101, label %53
]
53: ; preds = %51
%54 = tail call signext i8 (...) @getchar()
%55 = icmp eq i8 %54, 109
br i1 %55, label %56, label %93
56: ; preds = %53
%57 = tail call signext i8 (...) @getchar()
%58 = icmp eq i8 %57, 111
br i1 %58, label %59, label %93
59: ; preds = %56
%60 = tail call signext i8 (...) @getchar()
%61 = icmp eq i8 %60, 118
br i1 %61, label %62, label %93
62: ; preds = %59
%63 = tail call signext i8 (...) @getchar()
%64 = icmp eq i8 %63, 101
br i1 %64, label %65, label %93
65: ; preds = %62
%66 = tail call signext i8 (...) @getchar()
switch i8 %66, label %93 [
i8 32, label %67
i8 9, label %67
]
67: ; preds = %65, %65, %51, %51
%68 = tail call i32 @number_process(%struct.bplus_tree* %0, float 1.140000e+02)
%69 = icmp slt i32 %68, 0
br i1 %69, label %96, label %93
70: ; preds = %2
%71 = tail call signext i8 (...) @getchar()
switch i8 %71, label %93 [
i8 32, label %80
i8 9, label %80
i8 105, label %72
]
72: ; preds = %70
%73 = tail call signext i8 (...) @getchar()
%74 = icmp eq i8 %73, 110
br i1 %74, label %75, label %93
75: ; preds = %72
%76 = tail call signext i8 (...) @getchar()
%77 = icmp eq i8 %76, 100
br i1 %77, label %78, label %93
78: ; preds = %75
%79 = tail call signext i8 (...) @getchar()
switch i8 %79, label %93 [
i8 32, label %80
i8 9, label %80
]
80: ; preds = %78, %78, %70, %70
%81 = tail call i32 @number_process(%struct.bplus_tree* %0, float 1.020000e+02)
%82 = icmp slt i32 %81, 0
br i1 %82, label %96, label %93
83: ; preds = %2
%84 = tail call signext i8 (...) @getchar()
switch i8 %84, label %93 [
i8 10, label %94
i8 117, label %85
]
85: ; preds = %83
%86 = tail call signext i8 (...) @getchar()
%87 = icmp eq i8 %86, 109
br i1 %87, label %88, label %93
88: ; preds = %85
%89 = tail call signext i8 (...) @getchar()
%90 = icmp eq i8 %89, 112
br i1 %90, label %91, label %93
91: ; preds = %88
%92 = tail call signext i8 (...) @getchar()
switch i8 %92, label %93 [
i8 32, label %94
i8 10, label %94
i8 9, label %94
]
93: ; preds = %91, %83, %78, %70, %65, %51, %46, %25, %17, %15, %7, %2, %85, %88, %94, %72, %75, %80, %53, %56, %59, %62, %67, %31, %34, %37, %40, %43, %48, %19, %22, %27, %9, %12
br label %2
94: ; preds = %91, %91, %91, %83
%95 = tail call i32 @bplus_tree_dump(%struct.bplus_tree* %0)
br label %93
96: ; preds = %80, %67, %48, %7, %15, %15, %15
ret void
}