#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 */
double cdouble(char *, long *);
long cint(char *, long *);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, double, double, long,
                           long);
scalar_t__ malloc(int);
int scanf(char *, char *, ...);
int /*<<< orphan*/ stderr;
scalar_t__ strcmp(char *, char *);
int main(int argc, char *argv[]) {
  char *s;
  long int d, e, dout;
  double f, fout;
  long int nerr;
  int flag = 0;
  s = (char *)malloc(sizeof(char) * 100);
  if (strcmp(argv[1], "int") == 0) {
    while (scanf("%s %ld %ld\n", s, &d, &e) == 3) {
      dout = cint(s, &nerr);
      if (e != nerr) {
        fprintf(stderr, "int: %10ld <=> %ld err: %4ld <=> %4ld\n", d, dout, e,
                nerr);
        flag = 1;
      } else if (e == 0 && d != dout) {
        fprintf(stderr, "int: %10ld <=> %ld err: %4ld <=> %4ld\n", d, dout, e,
                nerr);
        flag = 1;
      } else if (e != 0 && d != dout) {
        fprintf(stderr, "int: %10ld <=> %ld err: %4ld <=> %4ld\n", d, dout, e,
                nerr);
        flag = 1;
      }
    }
  }
  if (strcmp(argv[1], "float") == 0) {
    while (scanf("%s %lf %ld\n", s, &f, &e) == 3) {
      fout = cdouble(s, &nerr);
      if (e != nerr) {
        fprintf(stderr, "flt: %14.6e <=> %14.6e err: %4ld <=> %4ld\n", f, fout,
                e, nerr);
        flag = 1;
      } else if (e == 0 && f != fout) {
        fprintf(stderr, "flt: %14.6e <=> %14.6e err: %4ld <=> %4ld\n", f, fout,
                e, nerr);
        flag = 1;
      } else if (e != 0 && f != fout) {
        fprintf(stderr, "flt: %14.6e <=> %14.6e err: %4ld <=> %4ld\n", f, fout,
                e, nerr);
        flag = 1;
      }
    }
  }
  return (flag);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0x4c(%rbp)
mov    $0x64,%edi
call   1070 <malloc@plt>
mov    %rax,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xe66(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    12d0 <main+0x170>
jmp    11ae <main+0x4e>
mov    -0x18(%rbp),%rsi
lea    0xe4b(%rip),%rdi
lea    -0x20(%rbp),%rdx
lea    -0x28(%rbp),%rcx
mov    $0x0,%al
call   1080 <scanf@plt>
cmp    $0x3,%eax
jne    12cb <main+0x16b>
mov    -0x18(%rbp),%rdi
lea    -0x48(%rbp),%rsi
call   1050 <cint@plt>
mov    %rax,-0x30(%rbp)
mov    -0x28(%rbp),%rax
cmp    -0x48(%rbp),%rax
je     1225 <main+0xc5>
mov    0x2de9(%rip),%rax
mov    (%rax),%edi
cvtsi2sdq -0x20(%rbp),%xmm0
cvtsi2sdq -0x30(%rbp),%xmm1
mov    -0x28(%rbp),%rdx
mov    -0x48(%rbp),%rcx
lea    0xdfc(%rip),%rsi
call   1060 <fprintf@plt>
movl   $0x1,-0x4c(%rbp)
jmp    12c6 <main+0x166>
cmpq   $0x0,-0x28(%rbp)
jne    1273 <main+0x113>
mov    -0x20(%rbp),%rax
cmp    -0x30(%rbp),%rax
je     1273 <main+0x113>
mov    0x2d9b(%rip),%rax
mov    (%rax),%edi
cvtsi2sdq -0x20(%rbp),%xmm0
cvtsi2sdq -0x30(%rbp),%xmm1
mov    -0x28(%rbp),%rdx
mov    -0x48(%rbp),%rcx
lea    0xdae(%rip),%rsi
call   1060 <fprintf@plt>
movl   $0x1,-0x4c(%rbp)
jmp    12c1 <main+0x161>
cmpq   $0x0,-0x28(%rbp)
je     12bc <main+0x15c>
mov    -0x20(%rbp),%rax
cmp    -0x30(%rbp),%rax
je     12bc <main+0x15c>
mov    0x2d4d(%rip),%rax
mov    (%rax),%edi
cvtsi2sdq -0x20(%rbp),%xmm0
cvtsi2sdq -0x30(%rbp),%xmm1
mov    -0x28(%rbp),%rdx
mov    -0x48(%rbp),%rcx
lea    0xd60(%rip),%rsi
call   1060 <fprintf@plt>
movl   $0x1,-0x4c(%rbp)
jmp    12c1 <main+0x161>
jmp    12c6 <main+0x166>
jmp    11ae <main+0x4e>
jmp    12d0 <main+0x170>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xd58(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    142a <main+0x2ca>
jmp    12f3 <main+0x193>
mov    -0x18(%rbp),%rsi
lea    0xd3f(%rip),%rdi
lea    -0x38(%rbp),%rdx
lea    -0x28(%rbp),%rcx
mov    $0x0,%al
call   1080 <scanf@plt>
cmp    $0x3,%eax
jne    1425 <main+0x2c5>
mov    -0x18(%rbp),%rdi
lea    -0x48(%rbp),%rsi
call   1030 <cdouble@plt>
movsd  %xmm0,-0x40(%rbp)
mov    -0x28(%rbp),%rax
cmp    -0x48(%rbp),%rax
je     1369 <main+0x209>
mov    0x2ca3(%rip),%rax
mov    (%rax),%edi
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm1
mov    -0x28(%rbp),%rdx
mov    -0x48(%rbp),%rcx
lea    0xcf1(%rip),%rsi
call   1060 <fprintf@plt>
movl   $0x1,-0x4c(%rbp)
jmp    1420 <main+0x2c0>
cmpq   $0x0,-0x28(%rbp)
jne    13c2 <main+0x262>
movsd  -0x38(%rbp),%xmm0
ucomisd -0x40(%rbp),%xmm0
jne    138f <main+0x22f>
jp     138f <main+0x22f>
jmp    13c2 <main+0x262>
mov    0x2c4a(%rip),%rax
mov    (%rax),%edi
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm1
mov    -0x28(%rbp),%rdx
mov    -0x48(%rbp),%rcx
lea    0xc98(%rip),%rsi
call   1060 <fprintf@plt>
movl   $0x1,-0x4c(%rbp)
jmp    141b <main+0x2bb>
cmpq   $0x0,-0x28(%rbp)
je     1416 <main+0x2b6>
movsd  -0x38(%rbp),%xmm0
ucomisd -0x40(%rbp),%xmm0
jne    13e8 <main+0x288>
jp     13e8 <main+0x288>
jmp    1416 <main+0x2b6>
mov    0x2bf1(%rip),%rax
mov    (%rax),%edi
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm1
mov    -0x28(%rbp),%rdx
mov    -0x48(%rbp),%rcx
lea    0xc3f(%rip),%rsi
call   1060 <fprintf@plt>
movl   $0x1,-0x4c(%rbp)
jmp    141b <main+0x2bb>
jmp    1420 <main+0x2c0>
jmp    12f3 <main+0x193>
jmp    142a <main+0x2ca>
mov    -0x4c(%rbp),%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %rsi,%rbp
mov    $0x64,%edi
call   1070 <malloc@plt>
mov    %rax,%rbx
mov    %rbp,0x20(%rsp)
mov    0x8(%rbp),%rdi
lea    0xe72(%rip),%rsi
call   1040 <strcmp@plt>
xor    %ebp,%ebp
test   %rax,%rax
jne    129f <main+0x13f>
lea    0xe5f(%rip),%rdi
xor    %ebp,%ebp
lea    0x18(%rsp),%rdx
mov    %rsp,%rcx
mov    %rbx,%rsi
xor    %eax,%eax
call   1080 <scanf@plt>
cmp    $0x3,%eax
jne    129f <main+0x13f>
lea    0x8(%rsp),%r15
lea    0xe36(%rip),%r13
lea    0x18(%rsp),%r14
mov    %rsp,%r12
xor    %ebp,%ebp
jmp    1224 <main+0xc4>
nopw   0x0(%rax,%rax,1)
mov    0x2df9(%rip),%rsi
mov    (%rsi),%edi
xorps  %xmm0,%xmm0
cvtsi2sdq 0x18(%rsp),%xmm0
xorps  %xmm1,%xmm1
cvtsi2sd %rax,%xmm1
lea    0xe0e(%rip),%rsi
call   1060 <fprintf@plt>
mov    $0x1,%ebp
mov    %r13,%rdi
mov    %rbx,%rsi
mov    %r14,%rdx
mov    %r12,%rcx
xor    %eax,%eax
call   1080 <scanf@plt>
cmp    $0x3,%eax
jne    129f <main+0x13f>
mov    %rbx,%rdi
mov    %r15,%rsi
call   1050 <cint@plt>
mov    (%rsp),%rdx
mov    0x8(%rsp),%rcx
cmp    %rcx,%rdx
jne    11e0 <main+0x80>
mov    0x18(%rsp),%rcx
test   %rdx,%rdx
je     1271 <main+0x111>
cmp    %rax,%rcx
je     120c <main+0xac>
mov    0x2d8d(%rip),%rsi
mov    (%rsi),%edi
xorps  %xmm0,%xmm0
cvtsi2sd %rcx,%xmm0
xorps  %xmm1,%xmm1
cvtsi2sd %rax,%xmm1
lea    0xda4(%rip),%rsi
mov    %rdx,%rcx
jmp    1202 <main+0xa2>
cmp    %rax,%rcx
je     120c <main+0xac>
mov    0x2d63(%rip),%rdx
mov    (%rdx),%edi
xorps  %xmm0,%xmm0
cvtsi2sd %rcx,%xmm0
xorps  %xmm1,%xmm1
cvtsi2sd %rax,%xmm1
lea    0xd7a(%rip),%rsi
xor    %edx,%edx
xor    %ecx,%ecx
jmp    1202 <main+0xa2>
mov    0x20(%rsp),%rax
mov    0x8(%rax),%rdi
lea    0xd88(%rip),%rsi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    139e <main+0x23e>
lea    0xd79(%rip),%rdi
lea    0x10(%rsp),%rdx
mov    %rsp,%rcx
mov    %rbx,%rsi
xor    %eax,%eax
call   1080 <scanf@plt>
cmp    $0x3,%eax
jne    139e <main+0x23e>
lea    0x8(%rsp),%r14
lea    0xd52(%rip),%r12
lea    0x10(%rsp),%r13
mov    %rsp,%r15
jmp    1338 <main+0x1d8>
cs nopw 0x0(%rax,%rax,1)
nop
mov    0x2cd9(%rip),%rax
mov    (%rax),%edi
movsd  0x10(%rsp),%xmm0
lea    0xd33(%rip),%rsi
call   1060 <fprintf@plt>
mov    $0x1,%ebp
mov    %r12,%rdi
mov    %rbx,%rsi
mov    %r13,%rdx
mov    %r15,%rcx
xor    %eax,%eax
call   1080 <scanf@plt>
cmp    $0x3,%eax
jne    139e <main+0x23e>
mov    %rbx,%rdi
mov    %r14,%rsi
call   1030 <cdouble@plt>
movapd %xmm0,%xmm1
mov    (%rsp),%rdx
mov    0x8(%rsp),%rcx
cmp    %rcx,%rdx
jne    1300 <main+0x1a0>
movsd  0x10(%rsp),%xmm0
test   %rdx,%rdx
je     137d <main+0x21d>
ucomisd %xmm1,%xmm0
jne    1368 <main+0x208>
jnp    1320 <main+0x1c0>
mov    0x2c71(%rip),%rax
mov    (%rax),%edi
lea    0xcd1(%rip),%rsi
mov    %rdx,%rcx
jmp    1316 <main+0x1b6>
ucomisd %xmm1,%xmm0
jne    1385 <main+0x225>
jnp    1320 <main+0x1c0>
mov    0x2c54(%rip),%rax
mov    (%rax),%edi
lea    0xcb4(%rip),%rsi
xor    %edx,%edx
xor    %ecx,%ecx
jmp    1316 <main+0x1b6>
mov    %ebp,%eax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [4 x i8] c"int\00"
@.str.1 = [12 x i8] c"%s %ld %ld\0A\00"
@stderr = global i32 0
@.str.2 = [39 x i8] c"int: %10ld <=> %ld err: %4ld <=> %4ld\0A\00"
@.str.3 = [6 x i8] c"float\00"
@.str.4 = [12 x i8] c"%s %lf %ld\0A\00"
@.str.5 = [43 x i8] c"flt: %14.6e <=> %14.6e err: %4ld <=> %4ld\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i8*
%7 = alloca i64
%8 = alloca i64
%9 = alloca i64
%10 = alloca double
%11 = alloca double
%12 = alloca i64
%13 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
store i32 0, i32* %13
%14 = call i64 @malloc(i32 100)
%15 = inttoptr i64 %14 to i8*
store i8* %15, i8** %6
%16 = load i8**, i8*** %5
%17 = getelementptr inbounds i8*, i8** %16, i64 1
%18 = load i8*, i8** %17
%19 = call i64 @strcmp(i8* %18, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
%20 = icmp eq i64 %19, 0
br i1 %20, label %21, label %77
21: ; preds = %2
br label %22
22: ; preds = %75, %21
%23 = load i8*, i8** %6
%24 = call i32 (i8*, i8*, ...) @scanf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0), i8* %23, i64* %7, i64* %8)
%25 = icmp eq i32 %24, 3
br i1 %25, label %26, label %76
26: ; preds = %22
%27 = load i8*, i8** %6
%28 = call i64 @cint(i8* %27, i64* %12)
store i64 %28, i64* %9
%29 = load i64, i64* %8
%30 = load i64, i64* %12
%31 = icmp ne i64 %29, %30
br i1 %31, label %32, label %41
32: ; preds = %26
%33 = load i32, i32* @stderr
%34 = load i64, i64* %7
%35 = sitofp i64 %34 to double
%36 = load i64, i64* %9
%37 = sitofp i64 %36 to double
%38 = load i64, i64* %8
%39 = load i64, i64* %12
%40 = call i32 @fprintf(i32 %33, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.2, i64 0, i64 0), double %35, double %37, i64 %38, i64 %39)
store i32 1, i32* %13
br label %75
41: ; preds = %26
%42 = load i64, i64* %8
%43 = icmp eq i64 %42, 0
br i1 %43, label %44, label %57
44: ; preds = %41
%45 = load i64, i64* %7
%46 = load i64, i64* %9
%47 = icmp ne i64 %45, %46
br i1 %47, label %48, label %57
48: ; preds = %44
%49 = load i32, i32* @stderr
%50 = load i64, i64* %7
%51 = sitofp i64 %50 to double
%52 = load i64, i64* %9
%53 = sitofp i64 %52 to double
%54 = load i64, i64* %8
%55 = load i64, i64* %12
%56 = call i32 @fprintf(i32 %49, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.2, i64 0, i64 0), double %51, double %53, i64 %54, i64 %55)
store i32 1, i32* %13
br label %74
57: ; preds = %44, %41
%58 = load i64, i64* %8
%59 = icmp ne i64 %58, 0
br i1 %59, label %60, label %73
60: ; preds = %57
%61 = load i64, i64* %7
%62 = load i64, i64* %9
%63 = icmp ne i64 %61, %62
br i1 %63, label %64, label %73
64: ; preds = %60
%65 = load i32, i32* @stderr
%66 = load i64, i64* %7
%67 = sitofp i64 %66 to double
%68 = load i64, i64* %9
%69 = sitofp i64 %68 to double
%70 = load i64, i64* %8
%71 = load i64, i64* %12
%72 = call i32 @fprintf(i32 %65, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.2, i64 0, i64 0), double %67, double %69, i64 %70, i64 %71)
store i32 1, i32* %13
br label %73
73: ; preds = %64, %60, %57
br label %74
74: ; preds = %73, %48
br label %75
75: ; preds = %74, %32
br label %22
76: ; preds = %22
br label %77
77: ; preds = %76, %2
%78 = load i8**, i8*** %5
%79 = getelementptr inbounds i8*, i8** %78, i64 1
%80 = load i8*, i8** %79
%81 = call i64 @strcmp(i8* %80, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0))
%82 = icmp eq i64 %81, 0
br i1 %82, label %83, label %133
83: ; preds = %77
br label %84
84: ; preds = %131, %83
%85 = load i8*, i8** %6
%86 = call i32 (i8*, i8*, ...) @scanf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.4, i64 0, i64 0), i8* %85, double* %10, i64* %8)
%87 = icmp eq i32 %86, 3
br i1 %87, label %88, label %132
88: ; preds = %84
%89 = load i8*, i8** %6
%90 = call double @cdouble(i8* %89, i64* %12)
store double %90, double* %11
%91 = load i64, i64* %8
%92 = load i64, i64* %12
%93 = icmp ne i64 %91, %92
br i1 %93, label %94, label %101
94: ; preds = %88
%95 = load i32, i32* @stderr
%96 = load double, double* %10
%97 = load double, double* %11
%98 = load i64, i64* %8
%99 = load i64, i64* %12
%100 = call i32 @fprintf(i32 %95, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.5, i64 0, i64 0), double %96, double %97, i64 %98, i64 %99)
store i32 1, i32* %13
br label %131
101: ; preds = %88
%102 = load i64, i64* %8
%103 = icmp eq i64 %102, 0
br i1 %103, label %104, label %115
104: ; preds = %101
%105 = load double, double* %10
%106 = load double, double* %11
%107 = fcmp une double %105, %106
br i1 %107, label %108, label %115
108: ; preds = %104
%109 = load i32, i32* @stderr
%110 = load double, double* %10
%111 = load double, double* %11
%112 = load i64, i64* %8
%113 = load i64, i64* %12
%114 = call i32 @fprintf(i32 %109, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.5, i64 0, i64 0), double %110, double %111, i64 %112, i64 %113)
store i32 1, i32* %13
br label %130
115: ; preds = %104, %101
%116 = load i64, i64* %8
%117 = icmp ne i64 %116, 0
br i1 %117, label %118, label %129
118: ; preds = %115
%119 = load double, double* %10
%120 = load double, double* %11
%121 = fcmp une double %119, %120
br i1 %121, label %122, label %129
122: ; preds = %118
%123 = load i32, i32* @stderr
%124 = load double, double* %10
%125 = load double, double* %11
%126 = load i64, i64* %8
%127 = load i64, i64* %12
%128 = call i32 @fprintf(i32 %123, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.5, i64 0, i64 0), double %124, double %125, i64 %126, i64 %127)
store i32 1, i32* %13
br label %129
129: ; preds = %122, %118, %115
br label %130
130: ; preds = %129, %108
br label %131
131: ; preds = %130, %94
br label %84
132: ; preds = %84
br label %133
133: ; preds = %132, %77
%134 = load i32, i32* %13
ret i32 %134
}

LLVM IR (-O2):
@.str = [4 x i8] c"int\00"
@.str.1 = [12 x i8] c"%s %ld %ld\0A\00"
@stderr = global i32 0
@.str.2 = [39 x i8] c"int: %10ld <=> %ld err: %4ld <=> %4ld\0A\00"
@.str.3 = [6 x i8] c"float\00"
@.str.4 = [12 x i8] c"%s %lf %ld\0A\00"
@.str.5 = [43 x i8] c"flt: %14.6e <=> %14.6e err: %4ld <=> %4ld\0A\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = alloca i64
%4 = alloca i64
%5 = alloca double
%6 = alloca i64
%7 = bitcast i64* %3 to i8*
%8 = bitcast i64* %4 to i8*
%9 = bitcast double* %5 to i8*
%10 = bitcast i64* %6 to i8*
%11 = tail call i64 @malloc(i32 100)
%12 = inttoptr i64 %11 to i8*
%13 = getelementptr inbounds i8*, i8** %1, i64 1
%14 = load i8*, i8** %13
%15 = tail call i64 @strcmp(i8* %14, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0))
%16 = icmp eq i64 %15, 0
br i1 %16, label %17, label %52
17: ; preds = %2
%18 = call i32 (i8*, i8*, ...) @scanf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0), i8* %12, i64* %3, i64* %4)
%19 = icmp eq i32 %18, 3
br i1 %19, label %20, label %52
20: ; preds = %17, %48
%21 = phi i32 [ %49, %48 ], [ 0, %17 ]
%22 = call i64 @cint(i8* %12, i64* %6)
%23 = load i64, i64* %4
%24 = load i64, i64* %6
%25 = icmp eq i64 %23, %24
br i1 %25, label %32, label %26
26: ; preds = %20
%27 = load i32, i32* @stderr
%28 = load i64, i64* %3
%29 = sitofp i64 %28 to double
%30 = sitofp i64 %22 to double
%31 = call i32 @fprintf(i32 %27, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.2, i64 0, i64 0), double %29, double %30, i64 %23, i64 %24)
br label %48
32: ; preds = %20
%33 = icmp eq i64 %23, 0
%34 = load i64, i64* %3
%35 = icmp eq i64 %34, %22
br i1 %33, label %36, label %42
36: ; preds = %32
br i1 %35, label %48, label %37
37: ; preds = %36
%38 = load i32, i32* @stderr
%39 = sitofp i64 %34 to double
%40 = sitofp i64 %22 to double
%41 = call i32 @fprintf(i32 %38, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.2, i64 0, i64 0), double %39, double %40, i64 0, i64 0)
br label %48
42: ; preds = %32
br i1 %35, label %48, label %43
43: ; preds = %42
%44 = load i32, i32* @stderr
%45 = sitofp i64 %34 to double
%46 = sitofp i64 %22 to double
%47 = call i32 @fprintf(i32 %44, i8* getelementptr inbounds ([39 x i8], [39 x i8]* @.str.2, i64 0, i64 0), double %45, double %46, i64 %23, i64 %23)
br label %48
48: ; preds = %36, %37, %43, %42, %26
%49 = phi i32 [ 1, %26 ], [ 1, %37 ], [ 1, %43 ], [ %21, %42 ], [ %21, %36 ]
%50 = call i32 (i8*, i8*, ...) @scanf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.1, i64 0, i64 0), i8* %12, i64* %3, i64* %4)
%51 = icmp eq i32 %50, 3
br i1 %51, label %20, label %52
52: ; preds = %48, %17, %2
%53 = phi i32 [ 0, %2 ], [ 0, %17 ], [ %49, %48 ]
%54 = load i8*, i8** %13
%55 = call i64 @strcmp(i8* %54, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.3, i64 0, i64 0))
%56 = icmp eq i64 %55, 0
br i1 %56, label %57, label %86
57: ; preds = %52
%58 = call i32 (i8*, i8*, ...) @scanf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.4, i64 0, i64 0), i8* %12, double* %5, i64* %4)
%59 = icmp eq i32 %58, 3
br i1 %59, label %60, label %86
60: ; preds = %57, %82
%61 = phi i32 [ %83, %82 ], [ %53, %57 ]
%62 = call double @cdouble(i8* %12, i64* %6)
%63 = load i64, i64* %4
%64 = load i64, i64* %6
%65 = icmp eq i64 %63, %64
br i1 %65, label %70, label %66
66: ; preds = %60
%67 = load i32, i32* @stderr
%68 = load double, double* %5
%69 = call i32 @fprintf(i32 %67, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.5, i64 0, i64 0), double %68, double %62, i64 %63, i64 %64)
br label %82
70: ; preds = %60
%71 = icmp eq i64 %63, 0
%72 = load double, double* %5
%73 = fcmp une double %72, %62
br i1 %71, label %74, label %78
74: ; preds = %70
br i1 %73, label %75, label %82
75: ; preds = %74
%76 = load i32, i32* @stderr
%77 = call i32 @fprintf(i32 %76, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.5, i64 0, i64 0), double %72, double %62, i64 0, i64 0)
br label %82
78: ; preds = %70
br i1 %73, label %79, label %82
79: ; preds = %78
%80 = load i32, i32* @stderr
%81 = call i32 @fprintf(i32 %80, i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str.5, i64 0, i64 0), double %72, double %62, i64 %63, i64 %63)
br label %82
82: ; preds = %74, %75, %79, %78, %66
%83 = phi i32 [ 1, %66 ], [ 1, %75 ], [ 1, %79 ], [ %61, %78 ], [ %61, %74 ]
%84 = call i32 (i8*, i8*, ...) @scanf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.4, i64 0, i64 0), i8* %12, double* %5, i64* %4)
%85 = icmp eq i32 %84, 3
br i1 %85, label %60, label %86
86: ; preds = %82, %57, %52
%87 = phi i32 [ %53, %52 ], [ %53, %57 ], [ %83, %82 ]
ret i32 %87
}