#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 check_float(char *);
int get_point(char *);
int strlen(char *);
float get_num(char a[]) {
  int i = 0, n, j, l;
  float f = 0;
  l = strlen(a);
  if (check_float(a) == 1) {
    n = get_point(a);
    for (j = 0; j < n; j++) {
      i = i * 10;
      i += a[j] - 48;
    }
    for (j = n + 1; j < l; j++) {
      f = f * 10;
      f += a[j] - 48;
    }
    for (j = 0; j < (l - n - 1); j++) {
      f = f / 10;
    }
    f = i + f;
    return f;
  } else {
    for (j = 0; j < l; j++) {
      i = i * 10;
      i += a[j] - 48;
    }
    f = i;
    return f;
  }
}


x86 assembly (clang, -O0):
<get_num>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x24(%rbp)
mov    -0x10(%rbp),%rdi
call   1040 <strlen@plt>
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%rdi
call   1030 <check_float@plt>
cmp    $0x1,%eax
jne    1261 <get_num+0x131>
mov    -0x10(%rbp),%rdi
call   1050 <get_point@plt>
mov    %eax,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x18(%rbp),%eax
jge    11b2 <get_num+0x82>
imul   $0xa,-0x14(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
add    -0x14(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    117c <get_num+0x4c>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    1204 <get_num+0xd4>
movss  0xe31(%rip),%xmm0
mulss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
cvtsi2ss %eax,%xmm0
addss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    11bb <get_num+0x8b>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x20(%rbp),%ecx
sub    -0x18(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1243 <get_num+0x113>
movss  -0x24(%rbp),%xmm0
movss  0xdd4(%rip),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0x24(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    120b <get_num+0xdb>
cvtsi2ssl -0x14(%rbp),%xmm0
addss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    12b2 <get_num+0x182>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x20(%rbp),%eax
jge    129e <get_num+0x16e>
imul   $0xa,-0x14(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
add    -0x14(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1268 <get_num+0x138>
cvtsi2ssl -0x14(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x4(%rbp)
movss  -0x4(%rbp),%xmm0
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<get_num>:
push   %r14
push   %rbx
push   %rax
mov    %rdi,%rbx
call   1040 <strlen@plt>
mov    %eax,%r14d
mov    %rbx,%rdi
call   1030 <check_float@plt>
cmp    $0x1,%eax
jne    117b <get_num+0x4b>
mov    %rbx,%rdi
call   1050 <get_point@plt>
xorps  %xmm0,%xmm0
xorps  %xmm1,%xmm1
test   %eax,%eax
jle    121d <get_num+0xed>
mov    %eax,%esi
lea    -0x1(%rsi),%rdx
mov    %esi,%r8d
and    $0x3,%r8d
cmp    $0x3,%rdx
jae    11a7 <get_num+0x77>
xor    %edx,%edx
xor    %edi,%edi
jmp    11ea <get_num+0xba>
test   %r14d,%r14d
jle    119f <get_num+0x6f>
mov    %r14d,%edx
lea    -0x1(%rdx),%rcx
mov    %edx,%eax
and    $0x3,%eax
cmp    $0x3,%rcx
jae    134f <get_num+0x21f>
xor    %ecx,%ecx
xor    %esi,%esi
jmp    139a <get_num+0x26a>
xorps  %xmm0,%xmm0
jmp    13ca <get_num+0x29a>
and    $0xfffffffc,%esi
xor    %edx,%edx
xor    %edi,%edi
xchg   %ax,%ax
lea    (%rdi,%rdi,4),%ecx
movsbl (%rbx,%rdx,1),%edi
lea    (%rdi,%rcx,2),%ecx
lea    (%rcx,%rcx,4),%ecx
movsbl 0x1(%rbx,%rdx,1),%edi
lea    (%rdi,%rcx,2),%ecx
lea    (%rcx,%rcx,4),%ecx
movsbl 0x2(%rbx,%rdx,1),%edi
lea    (%rdi,%rcx,2),%ecx
lea    (%rcx,%rcx,4),%ecx
movsbl 0x3(%rbx,%rdx,1),%edi
lea    (%rdi,%rcx,2),%edi
add    $0xffff2fb0,%edi
add    $0x4,%rdx
cmp    %rdx,%rsi
jne    11b0 <get_num+0x80>
test   %r8,%r8
je     1216 <get_num+0xe6>
add    %rbx,%rdx
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    (%rdi,%rdi,4),%edi
movsbl (%rdx,%rsi,1),%ecx
lea    (%rcx,%rdi,2),%edi
add    $0xffffffd0,%edi
add    $0x1,%rsi
cmp    %rsi,%r8
jne    1200 <get_num+0xd0>
xorps  %xmm1,%xmm1
cvtsi2ss %edi,%xmm1
lea    0x1(%rax),%edx
mov    %eax,%ecx
not    %ecx
cmp    %r14d,%edx
jge    12e3 <get_num+0x1b3>
movslq %edx,%rdx
lea    (%r14,%rcx,1),%edi
mov    %r14d,%r8d
sub    %eax,%r8d
add    $0xfffffffe,%r8d
xorps  %xmm0,%xmm0
and    $0x3,%edi
je     126f <get_num+0x13f>
movss  0xdb2(%rip),%xmm2
xchg   %ax,%ax
movsbl (%rbx,%rdx,1),%esi
add    $0xffffffd0,%esi
xorps  %xmm3,%xmm3
cvtsi2ss %esi,%xmm3
mulss  %xmm2,%xmm0
addss  %xmm3,%xmm0
add    $0x1,%rdx
add    $0xffffffff,%edi
jne    1250 <get_num+0x120>
cmp    $0x3,%r8d
jb     12e3 <get_num+0x1b3>
mov    %r14d,%esi
movss  0xd80(%rip),%xmm2
mulss  %xmm2,%xmm0
movsbl (%rbx,%rdx,1),%edi
add    $0xffffffd0,%edi
xorps  %xmm3,%xmm3
cvtsi2ss %edi,%xmm3
addss  %xmm0,%xmm3
mulss  %xmm2,%xmm3
movsbl 0x1(%rbx,%rdx,1),%edi
add    $0xffffffd0,%edi
xorps  %xmm0,%xmm0
cvtsi2ss %edi,%xmm0
movsbl 0x2(%rbx,%rdx,1),%edi
add    $0xffffffd0,%edi
xorps  %xmm4,%xmm4
cvtsi2ss %edi,%xmm4
addss  %xmm3,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm0,%xmm4
movsbl 0x3(%rbx,%rdx,1),%edi
add    $0xffffffd0,%edi
xorps  %xmm0,%xmm0
cvtsi2ss %edi,%xmm0
mulss  %xmm2,%xmm4
addss  %xmm4,%xmm0
add    $0x4,%rdx
cmp    %edx,%esi
jne    1280 <get_num+0x150>
add    %r14d,%ecx
test   %ecx,%ecx
jle    1349 <get_num+0x219>
sub    %eax,%r14d
add    $0xfffffffe,%r14d
mov    %ecx,%eax
and    $0x3,%eax
cmp    $0x3,%r14d
jb     1325 <get_num+0x1f5>
and    $0xfffffffc,%ecx
movss  0xcf9(%rip),%xmm2
nopw   0x0(%rax,%rax,1)
divss  %xmm2,%xmm0
divss  %xmm2,%xmm0
divss  %xmm2,%xmm0
divss  %xmm2,%xmm0
add    $0xfffffffc,%ecx
jne    1310 <get_num+0x1e0>
test   %eax,%eax
je     1349 <get_num+0x219>
movss  0xccf(%rip),%xmm2
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
divss  %xmm2,%xmm0
add    $0xffffffff,%eax
jne    1340 <get_num+0x210>
addss  %xmm1,%xmm0
jmp    13ca <get_num+0x29a>
and    $0xfffffffc,%edx
xor    %ecx,%ecx
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
lea    (%rsi,%rsi,4),%esi
movsbl (%rbx,%rcx,1),%edi
lea    (%rdi,%rsi,2),%esi
lea    (%rsi,%rsi,4),%esi
movsbl 0x1(%rbx,%rcx,1),%edi
lea    (%rdi,%rsi,2),%esi
lea    (%rsi,%rsi,4),%esi
movsbl 0x2(%rbx,%rcx,1),%edi
lea    (%rdi,%rsi,2),%esi
lea    (%rsi,%rsi,4),%esi
movsbl 0x3(%rbx,%rcx,1),%edi
lea    (%rdi,%rsi,2),%esi
add    $0xffff2fb0,%esi
add    $0x4,%rcx
cmp    %rcx,%rdx
jne    1360 <get_num+0x230>
test   %rax,%rax
je     13c6 <get_num+0x296>
add    %rcx,%rbx
xor    %ecx,%ecx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    (%rsi,%rsi,4),%edx
movsbl (%rbx,%rcx,1),%esi
lea    (%rsi,%rdx,2),%esi
add    $0xffffffd0,%esi
add    $0x1,%rcx
cmp    %rcx,%rax
jne    13b0 <get_num+0x280>
cvtsi2ss %esi,%xmm0
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
define float @get_num(i8* %0) {
%2 = alloca float
%3 = alloca i8*
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca float
store i8* %0, i8** %3
store i32 0, i32* %4
store float 0.000000e+00, float* %8
%9 = load i8*, i8** %3
%10 = call i32 @strlen(i8* %9)
store i32 %10, i32* %7
%11 = load i8*, i8** %3
%12 = call i32 @check_float(i8* %11)
%13 = icmp eq i32 %12, 1
br i1 %13, label %14, label %79
14: ; preds = %1
%15 = load i8*, i8** %3
%16 = call i32 @get_point(i8* %15)
store i32 %16, i32* %5
store i32 0, i32* %6
br label %17
17: ; preds = %33, %14
%18 = load i32, i32* %6
%19 = load i32, i32* %5
%20 = icmp slt i32 %18, %19
br i1 %20, label %21, label %36
21: ; preds = %17
%22 = load i32, i32* %4
%23 = mul nsw i32 %22, 10
store i32 %23, i32* %4
%24 = load i8*, i8** %3
%25 = load i32, i32* %6
%26 = sext i32 %25 to i64
%27 = getelementptr inbounds i8, i8* %24, i64 %26
%28 = load i8, i8* %27
%29 = sext i8 %28 to i32
%30 = sub nsw i32 %29, 48
%31 = load i32, i32* %4
%32 = add nsw i32 %31, %30
store i32 %32, i32* %4
br label %33
33: ; preds = %21
%34 = load i32, i32* %6
%35 = add nsw i32 %34, 1
store i32 %35, i32* %6
br label %17
36: ; preds = %17
%37 = load i32, i32* %5
%38 = add nsw i32 %37, 1
store i32 %38, i32* %6
br label %39
39: ; preds = %56, %36
%40 = load i32, i32* %6
%41 = load i32, i32* %7
%42 = icmp slt i32 %40, %41
br i1 %42, label %43, label %59
43: ; preds = %39
%44 = load float, float* %8
%45 = fmul float %44, 1.000000e+01
store float %45, float* %8
%46 = load i8*, i8** %3
%47 = load i32, i32* %6
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds i8, i8* %46, i64 %48
%50 = load i8, i8* %49
%51 = sext i8 %50 to i32
%52 = sub nsw i32 %51, 48
%53 = sitofp i32 %52 to float
%54 = load float, float* %8
%55 = fadd float %54, %53
store float %55, float* %8
br label %56
56: ; preds = %43
%57 = load i32, i32* %6
%58 = add nsw i32 %57, 1
store i32 %58, i32* %6
br label %39
59: ; preds = %39
store i32 0, i32* %6
br label %60
60: ; preds = %70, %59
%61 = load i32, i32* %6
%62 = load i32, i32* %7
%63 = load i32, i32* %5
%64 = sub nsw i32 %62, %63
%65 = sub nsw i32 %64, 1
%66 = icmp slt i32 %61, %65
br i1 %66, label %67, label %73
67: ; preds = %60
%68 = load float, float* %8
%69 = fdiv float %68, 1.000000e+01
store float %69, float* %8
br label %70
70: ; preds = %67
%71 = load i32, i32* %6
%72 = add nsw i32 %71, 1
store i32 %72, i32* %6
br label %60
73: ; preds = %60
%74 = load i32, i32* %4
%75 = sitofp i32 %74 to float
%76 = load float, float* %8
%77 = fadd float %75, %76
store float %77, float* %8
%78 = load float, float* %8
store float %78, float* %2
br label %103
79: ; preds = %1
store i32 0, i32* %6
br label %80
80: ; preds = %96, %79
%81 = load i32, i32* %6
%82 = load i32, i32* %7
%83 = icmp slt i32 %81, %82
br i1 %83, label %84, label %99
84: ; preds = %80
%85 = load i32, i32* %4
%86 = mul nsw i32 %85, 10
store i32 %86, i32* %4
%87 = load i8*, i8** %3
%88 = load i32, i32* %6
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds i8, i8* %87, i64 %89
%91 = load i8, i8* %90
%92 = sext i8 %91 to i32
%93 = sub nsw i32 %92, 48
%94 = load i32, i32* %4
%95 = add nsw i32 %94, %93
store i32 %95, i32* %4
br label %96
96: ; preds = %84
%97 = load i32, i32* %6
%98 = add nsw i32 %97, 1
store i32 %98, i32* %6
br label %80
99: ; preds = %80
%100 = load i32, i32* %4
%101 = sitofp i32 %100 to float
store float %101, float* %8
%102 = load float, float* %8
store float %102, float* %2
br label %103
103: ; preds = %99, %73
%104 = load float, float* %2
ret float %104
}

LLVM IR (-O2):
define float @get_num(i8* %0) {
%2 = tail call i32 @strlen(i8* %0)
%3 = tail call i32 @check_float(i8* %0)
%4 = icmp eq i32 %3, 1
br i1 %4, label %14, label %5
5: ; preds = %1
%6 = icmp sgt i32 %2, 0
br i1 %6, label %7, label %236
7: ; preds = %5
%8 = zext i32 %2 to i64
%9 = add nsw i64 %8, -1
%10 = and i64 %8, 3
%11 = icmp ult i64 %9, 3
br i1 %11, label %215, label %12
12: ; preds = %7
%13 = and i64 %8, 4294967292
br label %181
14: ; preds = %1
%15 = tail call i32 @get_point(i8* %0)
%16 = icmp sgt i32 %15, 0
br i1 %16, label %17, label %45
17: ; preds = %14
%18 = zext i32 %15 to i64
%19 = add nsw i64 %18, -1
%20 = and i64 %18, 3
%21 = icmp ult i64 %19, 3
br i1 %21, label %24, label %22
22: ; preds = %17
%23 = and i64 %18, 4294967292
br label %76
24: ; preds = %76, %17
%25 = phi i32 [ undef, %17 ], [ %106, %76 ]
%26 = phi i64 [ 0, %17 ], [ %107, %76 ]
%27 = phi i32 [ 0, %17 ], [ %106, %76 ]
%28 = icmp eq i64 %20, 0
br i1 %28, label %42, label %29
29: ; preds = %24, %29
%30 = phi i64 [ %39, %29 ], [ %26, %24 ]
%31 = phi i32 [ %38, %29 ], [ %27, %24 ]
%32 = phi i64 [ %40, %29 ], [ 0, %24 ]
%33 = mul nsw i32 %31, 10
%34 = getelementptr inbounds i8, i8* %0, i64 %30
%35 = load i8, i8* %34
%36 = sext i8 %35 to i32
%37 = add i32 %33, -48
%38 = add i32 %37, %36
%39 = add nuw nsw i64 %30, 1
%40 = add i64 %32, 1
%41 = icmp eq i64 %40, %20
br i1 %41, label %42, label %29
42: ; preds = %29, %24
%43 = phi i32 [ %25, %24 ], [ %38, %29 ]
%44 = sitofp i32 %43 to float
br label %45
45: ; preds = %42, %14
%46 = phi float [ 0.000000e+00, %14 ], [ %44, %42 ]
%47 = add i32 %15, 1
%48 = icmp slt i32 %47, %2
br i1 %48, label %49, label %110
49: ; preds = %45
%50 = sext i32 %47 to i64
%51 = xor i32 %15, -1
%52 = add i32 %2, %51
%53 = add i32 %2, -2
%54 = sub i32 %53, %15
%55 = and i32 %52, 3
%56 = icmp eq i32 %55, 0
br i1 %56, label %71, label %57
57: ; preds = %49, %57
%58 = phi i64 [ %68, %57 ], [ %50, %49 ]
%59 = phi float [ %67, %57 ], [ 0.000000e+00, %49 ]
%60 = phi i32 [ %69, %57 ], [ 0, %49 ]
%61 = fmul float %59, 1.000000e+01
%62 = getelementptr inbounds i8, i8* %0, i64 %58
%63 = load i8, i8* %62
%64 = sext i8 %63 to i32
%65 = add nsw i32 %64, -48
%66 = sitofp i32 %65 to float
%67 = fadd float %61, %66
%68 = add nsw i64 %58, 1
%69 = add i32 %60, 1
%70 = icmp eq i32 %69, %55
br i1 %70, label %71, label %57
71: ; preds = %57, %49
%72 = phi float [ undef, %49 ], [ %67, %57 ]
%73 = phi i64 [ %50, %49 ], [ %68, %57 ]
%74 = phi float [ 0.000000e+00, %49 ], [ %67, %57 ]
%75 = icmp ult i32 %54, 3
br i1 %75, label %110, label %122
76: ; preds = %76, %22
%77 = phi i64 [ 0, %22 ], [ %107, %76 ]
%78 = phi i32 [ 0, %22 ], [ %106, %76 ]
%79 = phi i64 [ 0, %22 ], [ %108, %76 ]
%80 = mul nsw i32 %78, 10
%81 = getelementptr inbounds i8, i8* %0, i64 %77
%82 = load i8, i8* %81
%83 = sext i8 %82 to i32
%84 = add i32 %80, -48
%85 = add i32 %84, %83
%86 = or i64 %77, 1
%87 = mul nsw i32 %85, 10
%88 = getelementptr inbounds i8, i8* %0, i64 %86
%89 = load i8, i8* %88
%90 = sext i8 %89 to i32
%91 = add i32 %87, -48
%92 = add i32 %91, %90
%93 = or i64 %77, 2
%94 = mul nsw i32 %92, 10
%95 = getelementptr inbounds i8, i8* %0, i64 %93
%96 = load i8, i8* %95
%97 = sext i8 %96 to i32
%98 = add i32 %94, -48
%99 = add i32 %98, %97
%100 = or i64 %77, 3
%101 = mul nsw i32 %99, 10
%102 = getelementptr inbounds i8, i8* %0, i64 %100
%103 = load i8, i8* %102
%104 = sext i8 %103 to i32
%105 = add i32 %101, -48
%106 = add i32 %105, %104
%107 = add nuw nsw i64 %77, 4
%108 = add i64 %79, 4
%109 = icmp eq i64 %108, %23
br i1 %109, label %24, label %76
110: ; preds = %71, %122, %45
%111 = phi float [ 0.000000e+00, %45 ], [ %72, %71 ], [ %155, %122 ]
%112 = xor i32 %15, -1
%113 = add i32 %2, %112
%114 = icmp sgt i32 %113, 0
br i1 %114, label %115, label %178
115: ; preds = %110
%116 = add i32 %2, -2
%117 = sub i32 %116, %15
%118 = and i32 %113, 3
%119 = icmp ult i32 %117, 3
br i1 %119, label %168, label %120
120: ; preds = %115
%121 = and i32 %113, -4
br label %159
122: ; preds = %71, %122
%123 = phi i64 [ %156, %122 ], [ %73, %71 ]
%124 = phi float [ %155, %122 ], [ %74, %71 ]
%125 = fmul float %124, 1.000000e+01
%126 = getelementptr inbounds i8, i8* %0, i64 %123
%127 = load i8, i8* %126
%128 = sext i8 %127 to i32
%129 = add nsw i32 %128, -48
%130 = sitofp i32 %129 to float
%131 = fadd float %125, %130
%132 = add nsw i64 %123, 1
%133 = fmul float %131, 1.000000e+01
%134 = getelementptr inbounds i8, i8* %0, i64 %132
%135 = load i8, i8* %134
%136 = sext i8 %135 to i32
%137 = add nsw i32 %136, -48
%138 = sitofp i32 %137 to float
%139 = fadd float %133, %138
%140 = add nsw i64 %123, 2
%141 = fmul float %139, 1.000000e+01
%142 = getelementptr inbounds i8, i8* %0, i64 %140
%143 = load i8, i8* %142
%144 = sext i8 %143 to i32
%145 = add nsw i32 %144, -48
%146 = sitofp i32 %145 to float
%147 = fadd float %141, %146
%148 = add nsw i64 %123, 3
%149 = fmul float %147, 1.000000e+01
%150 = getelementptr inbounds i8, i8* %0, i64 %148
%151 = load i8, i8* %150
%152 = sext i8 %151 to i32
%153 = add nsw i32 %152, -48
%154 = sitofp i32 %153 to float
%155 = fadd float %149, %154
%156 = add nsw i64 %123, 4
%157 = trunc i64 %156 to i32
%158 = icmp eq i32 %2, %157
br i1 %158, label %110, label %122
159: ; preds = %159, %120
%160 = phi float [ %111, %120 ], [ %165, %159 ]
%161 = phi i32 [ 0, %120 ], [ %166, %159 ]
%162 = fdiv float %160, 1.000000e+01
%163 = fdiv float %162, 1.000000e+01
%164 = fdiv float %163, 1.000000e+01
%165 = fdiv float %164, 1.000000e+01
%166 = add i32 %161, 4
%167 = icmp eq i32 %166, %121
br i1 %167, label %168, label %159
168: ; preds = %159, %115
%169 = phi float [ undef, %115 ], [ %165, %159 ]
%170 = phi float [ %111, %115 ], [ %165, %159 ]
%171 = icmp eq i32 %118, 0
br i1 %171, label %178, label %172
172: ; preds = %168, %172
%173 = phi float [ %175, %172 ], [ %170, %168 ]
%174 = phi i32 [ %176, %172 ], [ 0, %168 ]
%175 = fdiv float %173, 1.000000e+01
%176 = add i32 %174, 1
%177 = icmp eq i32 %176, %118
br i1 %177, label %178, label %172
178: ; preds = %168, %172, %110
%179 = phi float [ %111, %110 ], [ %169, %168 ], [ %175, %172 ]
%180 = fadd float %179, %46
br label %236
181: ; preds = %181, %12
%182 = phi i64 [ 0, %12 ], [ %212, %181 ]
%183 = phi i32 [ 0, %12 ], [ %211, %181 ]
%184 = phi i64 [ 0, %12 ], [ %213, %181 ]
%185 = mul nsw i32 %183, 10
%186 = getelementptr inbounds i8, i8* %0, i64 %182
%187 = load i8, i8* %186
%188 = sext i8 %187 to i32
%189 = add i32 %185, -48
%190 = add i32 %189, %188
%191 = or i64 %182, 1
%192 = mul nsw i32 %190, 10
%193 = getelementptr inbounds i8, i8* %0, i64 %191
%194 = load i8, i8* %193
%195 = sext i8 %194 to i32
%196 = add i32 %192, -48
%197 = add i32 %196, %195
%198 = or i64 %182, 2
%199 = mul nsw i32 %197, 10
%200 = getelementptr inbounds i8, i8* %0, i64 %198
%201 = load i8, i8* %200
%202 = sext i8 %201 to i32
%203 = add i32 %199, -48
%204 = add i32 %203, %202
%205 = or i64 %182, 3
%206 = mul nsw i32 %204, 10
%207 = getelementptr inbounds i8, i8* %0, i64 %205
%208 = load i8, i8* %207
%209 = sext i8 %208 to i32
%210 = add i32 %206, -48
%211 = add i32 %210, %209
%212 = add nuw nsw i64 %182, 4
%213 = add i64 %184, 4
%214 = icmp eq i64 %213, %13
br i1 %214, label %215, label %181
215: ; preds = %181, %7
%216 = phi i32 [ undef, %7 ], [ %211, %181 ]
%217 = phi i64 [ 0, %7 ], [ %212, %181 ]
%218 = phi i32 [ 0, %7 ], [ %211, %181 ]
%219 = icmp eq i64 %10, 0
br i1 %219, label %233, label %220
220: ; preds = %215, %220
%221 = phi i64 [ %230, %220 ], [ %217, %215 ]
%222 = phi i32 [ %229, %220 ], [ %218, %215 ]
%223 = phi i64 [ %231, %220 ], [ 0, %215 ]
%224 = mul nsw i32 %222, 10
%225 = getelementptr inbounds i8, i8* %0, i64 %221
%226 = load i8, i8* %225
%227 = sext i8 %226 to i32
%228 = add i32 %224, -48
%229 = add i32 %228, %227
%230 = add nuw nsw i64 %221, 1
%231 = add i64 %223, 1
%232 = icmp eq i64 %231, %10
br i1 %232, label %233, label %220
233: ; preds = %220, %215
%234 = phi i32 [ %216, %215 ], [ %229, %220 ]
%235 = sitofp i32 %234 to float
br label %236
236: ; preds = %5, %233, %178
%237 = phi float [ %180, %178 ], [ 0.000000e+00, %5 ], [ %235, %233 ]
ret float %237
}