char *ftoa(char *st, float f, int flags) {
  int i;
  int z;
  int exp = 0;
  if (f < 0) {
    (*(st++) = ('-'));
    f = -f;
  } else {
    if (flags & 1)
      (*(st++) = ('+'));
    if (flags & 2)
      (*(st++) = (' '));
  }
  if (f) {
    while (f < 1) {
      f *= 10;
      exp--;
    }
    while (f >= 10) {
      f /= 10;
      exp++;
    }
  }
  while ((exp > 0) && (exp < 7)) {
    (*(st++) = ('0' + f));
    z = f;
    f -= z;
    f *= 10;
    exp--;
  }
  (*(st++) = ('0' + f));
  z = f;
  f -= z;
  f *= 10;
  (*(st++) = ('.'));
  for (i = 0; i < 2; i++) {
    (*(st++) = ('0' + f));
    z = f;
    f -= z;
    f *= 10;
  }
  if (exp != 0) {
    (*(st++) = ('e'));
    if (exp < 0) {
      (*(st++) = ('-'));
      exp = -exp;
    } else {
      (*(st++) = ('+'));
    }
    (*(st++) = ('0' + exp / 10));
    exp -= (exp / 10) * 10;
    (*(st++) = ('0' + exp));
  }
  (*(st++) = (0));
  return st;
}


x86 assembly (clang, -O0):
<ftoa>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
movss  %xmm0,-0xc(%rbp)
mov    %esi,-0x10(%rbp)
movl   $0x0,-0x1c(%rbp)
xorps  %xmm0,%xmm0
ucomiss -0xc(%rbp),%xmm0
jbe    1152 <ftoa+0x52>
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
movb   $0x2d,(%rax)
movss  -0xc(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  %xmm0,-0xc(%rbp)
jmp    1199 <ftoa+0x99>
mov    -0x10(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1173 <ftoa+0x73>
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
movb   $0x2b,(%rax)
mov    -0x10(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     1194 <ftoa+0x94>
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
movb   $0x20,(%rax)
jmp    1199 <ftoa+0x99>
movss  -0xc(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    11b5 <ftoa+0xb5>
jp     11b5 <ftoa+0xb5>
jmp    1230 <ftoa+0x130>
jmp    11ba <ftoa+0xba>
movss  0xe3e(%rip),%xmm0
ucomiss -0xc(%rbp),%xmm0
jbe    11ec <ftoa+0xec>
movss  0xe30(%rip),%xmm0
mulss  -0xc(%rbp),%xmm0
movss  %xmm0,-0xc(%rbp)
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
jmp    11ba <ftoa+0xba>
jmp    11f1 <ftoa+0xf1>
movss  -0xc(%rbp),%xmm0
movss  0xe06(%rip),%xmm1
ucomiss %xmm1,%xmm0
jb     122b <ftoa+0x12b>
movss  -0xc(%rbp),%xmm0
movss  0xdf0(%rip),%xmm1
divss  %xmm1,%xmm0
movss  %xmm0,-0xc(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    11f1 <ftoa+0xf1>
jmp    1230 <ftoa+0x130>
jmp    1235 <ftoa+0x135>
xor    %eax,%eax
cmpl   $0x0,-0x1c(%rbp)
mov    %al,-0x1d(%rbp)
jle    124e <ftoa+0x14e>
cmpl   $0x7,-0x1c(%rbp)
setl   %al
mov    %al,-0x1d(%rbp)
mov    -0x1d(%rbp),%al
test   $0x1,%al
jne    125e <ftoa+0x15e>
jmp    12c1 <ftoa+0x1c1>
movss  -0xc(%rbp),%xmm0
movss  0xd9d(%rip),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
mov    %cl,(%rax)
cvttss2si -0xc(%rbp),%eax
mov    %eax,-0x18(%rbp)
cvtsi2ssl -0x18(%rbp),%xmm1
movss  -0xc(%rbp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,-0xc(%rbp)
movss  0xd5b(%rip),%xmm0
mulss  -0xc(%rbp),%xmm0
movss  %xmm0,-0xc(%rbp)
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
jmp    1235 <ftoa+0x135>
movss  -0xc(%rbp),%xmm0
movss  0xd3a(%rip),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
mov    %cl,(%rax)
cvttss2si -0xc(%rbp),%eax
mov    %eax,-0x18(%rbp)
cvtsi2ssl -0x18(%rbp),%xmm1
movss  -0xc(%rbp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,-0xc(%rbp)
movss  0xcf8(%rip),%xmm0
mulss  -0xc(%rbp),%xmm0
movss  %xmm0,-0xc(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
movb   $0x2e,(%rax)
movl   $0x0,-0x14(%rbp)
cmpl   $0x2,-0x14(%rbp)
jge    139c <ftoa+0x29c>
movss  -0xc(%rbp),%xmm0
movss  0xcc2(%rip),%xmm1
addss  %xmm1,%xmm0
cvttss2si %xmm0,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
mov    %cl,(%rax)
cvttss2si -0xc(%rbp),%eax
mov    %eax,-0x18(%rbp)
cvtsi2ssl -0x18(%rbp),%xmm1
movss  -0xc(%rbp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,-0xc(%rbp)
movss  0xc80(%rip),%xmm0
mulss  -0xc(%rbp),%xmm0
movss  %xmm0,-0xc(%rbp)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    132f <ftoa+0x22f>
cmpl   $0x0,-0x1c(%rbp)
je     1443 <ftoa+0x343>
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
movb   $0x65,(%rax)
cmpl   $0x0,-0x1c(%rbp)
jge    13e1 <ftoa+0x2e1>
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
movb   $0x2d,(%rax)
xor    %eax,%eax
sub    -0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
jmp    13f3 <ftoa+0x2f3>
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
movb   $0x2b,(%rax)
mov    -0x1c(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
add    $0x30,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
mov    %cl,(%rax)
mov    -0x1c(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
imul   $0xa,%eax,%ecx
mov    -0x1c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x30,%eax
mov    %al,%cl
mov    -0x8(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x8(%rbp)
mov    %cl,(%rax)
mov    -0x8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x8(%rbp)
movb   $0x0,(%rax)
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<ftoa>:
mov    %rdi,%rax
xorps  %xmm1,%xmm1
ucomiss %xmm0,%xmm1
jbe    111b <ftoa+0x1b>
movb   $0x2d,(%rax)
add    $0x1,%rax
xorps  0xee7(%rip),%xmm0
jmp    1135 <ftoa+0x35>
test   $0x1,%sil
je     1128 <ftoa+0x28>
movb   $0x2b,(%rax)
add    $0x1,%rax
test   $0x2,%sil
je     1135 <ftoa+0x35>
movb   $0x20,(%rax)
add    $0x1,%rax
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jne    1143 <ftoa+0x43>
jnp    11d8 <ftoa+0xd8>
xor    %ecx,%ecx
movss  0xec3(%rip),%xmm1
ucomiss %xmm0,%xmm1
jbe    116c <ftoa+0x6c>
xor    %ecx,%ecx
movss  0xeb8(%rip),%xmm2
nopl   0x0(%rax)
mulss  %xmm2,%xmm0
add    $0xffffffff,%ecx
ucomiss %xmm0,%xmm1
ja     1160 <ftoa+0x60>
ucomiss 0xea1(%rip),%xmm0
jb     118c <ftoa+0x8c>
movss  0xe97(%rip),%xmm1
nopl   (%rax)
divss  %xmm1,%xmm0
add    $0x1,%ecx
ucomiss %xmm1,%xmm0
jae    1180 <ftoa+0x80>
lea    -0x1(%rcx),%edx
cmp    $0x5,%edx
ja     11da <ftoa+0xda>
movss  0xe7c(%rip),%xmm1
movss  0xe70(%rip),%xmm2
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movaps %xmm0,%xmm3
addss  %xmm1,%xmm3
cvttss2si %xmm3,%ecx
mov    %cl,(%rax)
add    $0x1,%rax
cvttps2dq %xmm0,%xmm3
cvtdq2ps %xmm3,%xmm3
subss  %xmm3,%xmm0
mulss  %xmm2,%xmm0
add    $0xffffffff,%edx
cmp    $0x6,%edx
jb     11b0 <ftoa+0xb0>
xor    %ecx,%ecx
movss  0xe36(%rip),%xmm1
movaps %xmm0,%xmm2
addss  %xmm1,%xmm2
cvttss2si %xmm2,%edx
mov    %dl,(%rax)
cvttps2dq %xmm0,%xmm2
cvtdq2ps %xmm2,%xmm2
subss  %xmm2,%xmm0
movb   $0x2e,0x1(%rax)
movss  0xe0e(%rip),%xmm2
mulss  %xmm2,%xmm0
movaps %xmm0,%xmm3
addss  %xmm1,%xmm3
cvttss2si %xmm3,%edx
mov    %dl,0x2(%rax)
cvttps2dq %xmm0,%xmm3
cvtdq2ps %xmm3,%xmm3
subss  %xmm3,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
cvttss2si %xmm0,%edx
mov    %dl,0x3(%rax)
test   %ecx,%ecx
je     1242 <ftoa+0x142>
movb   $0x65,0x4(%rax)
js     1248 <ftoa+0x148>
movb   $0x2b,0x5(%rax)
jmp    124e <ftoa+0x14e>
add    $0x4,%rax
jmp    1277 <ftoa+0x177>
movb   $0x2d,0x5(%rax)
neg    %ecx
mov    %ecx,%edx
mov    $0xcccccccd,%esi
imul   %rdx,%rsi
shr    $0x23,%rsi
lea    (%rsi,%rsi,1),%edi
mov    %esi,%edx
add    $0x30,%dl
mov    %dl,0x6(%rax)
lea    (%rdi,%rdi,4),%edx
sub    %edx,%ecx
add    $0x30,%cl
mov    %cl,0x7(%rax)
add    $0x8,%rax
movb   $0x0,(%rax)
add    $0x1,%rax
ret

LLVM IR (-O0):
define i8* @ftoa(i8* %0, float %1, i32 %2) {
%4 = alloca i8*
%5 = alloca float
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
store i8* %0, i8** %4
store float %1, float* %5
store i32 %2, i32* %6
store i32 0, i32* %9
%10 = load float, float* %5
%11 = fcmp olt float %10, 0.000000e+00
br i1 %11, label %12, label %17
12: ; preds = %3
%13 = load i8*, i8** %4
%14 = getelementptr inbounds i8, i8* %13, i32 1
store i8* %14, i8** %4
store i8 45, i8* %13
%15 = load float, float* %5
%16 = fneg float %15
store float %16, float* %5
br label %32
17: ; preds = %3
%18 = load i32, i32* %6
%19 = and i32 %18, 1
%20 = icmp ne i32 %19, 0
br i1 %20, label %21, label %24
21: ; preds = %17
%22 = load i8*, i8** %4
%23 = getelementptr inbounds i8, i8* %22, i32 1
store i8* %23, i8** %4
store i8 43, i8* %22
br label %24
24: ; preds = %21, %17
%25 = load i32, i32* %6
%26 = and i32 %25, 2
%27 = icmp ne i32 %26, 0
br i1 %27, label %28, label %31
28: ; preds = %24
%29 = load i8*, i8** %4
%30 = getelementptr inbounds i8, i8* %29, i32 1
store i8* %30, i8** %4
store i8 32, i8* %29
br label %31
31: ; preds = %28, %24
br label %32
32: ; preds = %31, %12
%33 = load float, float* %5
%34 = fcmp une float %33, 0.000000e+00
br i1 %34, label %35, label %54
35: ; preds = %32
br label %36
36: ; preds = %39, %35
%37 = load float, float* %5
%38 = fcmp olt float %37, 1.000000e+00
br i1 %38, label %39, label %44
39: ; preds = %36
%40 = load float, float* %5
%41 = fmul float %40, 1.000000e+01
store float %41, float* %5
%42 = load i32, i32* %9
%43 = add nsw i32 %42, -1
store i32 %43, i32* %9
br label %36
44: ; preds = %36
br label %45
45: ; preds = %48, %44
%46 = load float, float* %5
%47 = fcmp oge float %46, 1.000000e+01
br i1 %47, label %48, label %53
48: ; preds = %45
%49 = load float, float* %5
%50 = fdiv float %49, 1.000000e+01
store float %50, float* %5
%51 = load i32, i32* %9
%52 = add nsw i32 %51, 1
store i32 %52, i32* %9
br label %45
53: ; preds = %45
br label %54
54: ; preds = %53, %32
br label %55
55: ; preds = %63, %54
%56 = load i32, i32* %9
%57 = icmp sgt i32 %56, 0
br i1 %57, label %58, label %61
58: ; preds = %55
%59 = load i32, i32* %9
%60 = icmp slt i32 %59, 7
br label %61
61: ; preds = %58, %55
%62 = phi i1 [ false, %55 ], [ %60, %58 ]
br i1 %62, label %63, label %79
63: ; preds = %61
%64 = load float, float* %5
%65 = fadd float 4.800000e+01, %64
%66 = fptosi float %65 to i8
%67 = load i8*, i8** %4
%68 = getelementptr inbounds i8, i8* %67, i32 1
store i8* %68, i8** %4
store i8 %66, i8* %67
%69 = load float, float* %5
%70 = fptosi float %69 to i32
store i32 %70, i32* %8
%71 = load i32, i32* %8
%72 = sitofp i32 %71 to float
%73 = load float, float* %5
%74 = fsub float %73, %72
store float %74, float* %5
%75 = load float, float* %5
%76 = fmul float %75, 1.000000e+01
store float %76, float* %5
%77 = load i32, i32* %9
%78 = add nsw i32 %77, -1
store i32 %78, i32* %9
br label %55
79: ; preds = %61
%80 = load float, float* %5
%81 = fadd float 4.800000e+01, %80
%82 = fptosi float %81 to i8
%83 = load i8*, i8** %4
%84 = getelementptr inbounds i8, i8* %83, i32 1
store i8* %84, i8** %4
store i8 %82, i8* %83
%85 = load float, float* %5
%86 = fptosi float %85 to i32
store i32 %86, i32* %8
%87 = load i32, i32* %8
%88 = sitofp i32 %87 to float
%89 = load float, float* %5
%90 = fsub float %89, %88
store float %90, float* %5
%91 = load float, float* %5
%92 = fmul float %91, 1.000000e+01
store float %92, float* %5
%93 = load i8*, i8** %4
%94 = getelementptr inbounds i8, i8* %93, i32 1
store i8* %94, i8** %4
store i8 46, i8* %93
store i32 0, i32* %7
br label %95
95: ; preds = %112, %79
%96 = load i32, i32* %7
%97 = icmp slt i32 %96, 2
br i1 %97, label %98, label %115
98: ; preds = %95
%99 = load float, float* %5
%100 = fadd float 4.800000e+01, %99
%101 = fptosi float %100 to i8
%102 = load i8*, i8** %4
%103 = getelementptr inbounds i8, i8* %102, i32 1
store i8* %103, i8** %4
store i8 %101, i8* %102
%104 = load float, float* %5
%105 = fptosi float %104 to i32
store i32 %105, i32* %8
%106 = load i32, i32* %8
%107 = sitofp i32 %106 to float
%108 = load float, float* %5
%109 = fsub float %108, %107
store float %109, float* %5
%110 = load float, float* %5
%111 = fmul float %110, 1.000000e+01
store float %111, float* %5
br label %112
112: ; preds = %98
%113 = load i32, i32* %7
%114 = add nsw i32 %113, 1
store i32 %114, i32* %7
br label %95
115: ; preds = %95
%116 = load i32, i32* %9
%117 = icmp ne i32 %116, 0
br i1 %117, label %118, label %148
118: ; preds = %115
%119 = load i8*, i8** %4
%120 = getelementptr inbounds i8, i8* %119, i32 1
store i8* %120, i8** %4
store i8 101, i8* %119
%121 = load i32, i32* %9
%122 = icmp slt i32 %121, 0
br i1 %122, label %123, label %128
123: ; preds = %118
%124 = load i8*, i8** %4
%125 = getelementptr inbounds i8, i8* %124, i32 1
store i8* %125, i8** %4
store i8 45, i8* %124
%126 = load i32, i32* %9
%127 = sub nsw i32 0, %126
store i32 %127, i32* %9
br label %131
128: ; preds = %118
%129 = load i8*, i8** %4
%130 = getelementptr inbounds i8, i8* %129, i32 1
store i8* %130, i8** %4
store i8 43, i8* %129
br label %131
131: ; preds = %128, %123
%132 = load i32, i32* %9
%133 = sdiv i32 %132, 10
%134 = add nsw i32 48, %133
%135 = trunc i32 %134 to i8
%136 = load i8*, i8** %4
%137 = getelementptr inbounds i8, i8* %136, i32 1
store i8* %137, i8** %4
store i8 %135, i8* %136
%138 = load i32, i32* %9
%139 = sdiv i32 %138, 10
%140 = mul nsw i32 %139, 10
%141 = load i32, i32* %9
%142 = sub nsw i32 %141, %140
store i32 %142, i32* %9
%143 = load i32, i32* %9
%144 = add nsw i32 48, %143
%145 = trunc i32 %144 to i8
%146 = load i8*, i8** %4
%147 = getelementptr inbounds i8, i8* %146, i32 1
store i8* %147, i8** %4
store i8 %145, i8* %146
br label %148
148: ; preds = %131, %115
%149 = load i8*, i8** %4
%150 = getelementptr inbounds i8, i8* %149, i32 1
store i8* %150, i8** %4
store i8 0, i8* %149
%151 = load i8*, i8** %4
ret i8* %151
}

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