char *gcvt(value, ndigit, buf)
double value;
char *buf;
int ndigit;
{
  int sign, dp;
  register char *s1, *s2;
  register int i;
  register int nndigit = ndigit;
  s1 = ecvt(value, ndigit, &dp, &sign);
  s2 = buf;
  if (sign)
    *s2++ = '-';
  for (i = nndigit - 1; i > 0 && s1[i] == '0'; i--)
    nndigit--;
  if (dp > ndigit || dp < -((((dp) >= 100 || (dp) <= -100) ? 3 : 2) + 1)) {
    dp--;
    *s2++ = *s1++;
    *s2++ = '.';
    while (--nndigit > 0)
      *s2++ = *s1++;
    *s2++ = 'e';
    if (dp < 0) {
      *s2++ = '-';
      dp = -dp;
    } else
      *s2++ = '+';
    s2 += (((dp) >= 100 || (dp) <= -100) ? 3 : 2);
    *s2 = 0;
    for (i = (((dp) >= 100 || (dp) <= -100) ? 3 : 2); i > 0; i--) {
      *--s2 = dp % 10 + '0';
      dp /= 10;
    }
    return buf;
  }
  if (dp <= 0) {
    if (*s1 != '0') {
      *s2++ = '0';
      *s2++ = '.';
    }
    while (dp < 0) {
      dp++;
      *s2++ = '0';
    }
  }
  for (i = 1; i <= nndigit; i++) {
    *s2++ = *s1++;
    if (i == dp)
      *s2++ = '.';
  }
  if (i <= dp) {
    while (i++ <= dp)
      *s2++ = '0';
    *s2++ = '.';
  }
  if (s2[-1] == '.')
    s2--;
  *s2 = '\0';
  return buf;
}


x86 assembly (clang, -O0):
<gcvt>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
movsd  %xmm0,-0x10(%rbp)
mov    %edi,-0x14(%rbp)
mov    %rsi,-0x20(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0x40(%rbp)
movsd  -0x10(%rbp),%xmm0
mov    -0x14(%rbp),%edi
lea    -0x28(%rbp),%rsi
lea    -0x24(%rbp),%rdx
mov    $0x1,%al
call   1030 <ecvt@plt>
cltq
mov    %rax,-0x30(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x38(%rbp)
cmpl   $0x0,-0x24(%rbp)
je     116b <gcvt+0x5b>
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0x2d,(%rax)
mov    -0x40(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x3c(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x3c(%rbp)
mov    %al,-0x41(%rbp)
jle    1198 <gcvt+0x88>
mov    -0x30(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
sete   %al
mov    %al,-0x41(%rbp)
mov    -0x41(%rbp),%al
test   $0x1,%al
jne    11a8 <gcvt+0x98>
jmp    11bf <gcvt+0xaf>
mov    -0x40(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x40(%rbp)
mov    -0x3c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x3c(%rbp)
jmp    1174 <gcvt+0x64>
mov    -0x28(%rbp),%eax
cmp    -0x14(%rbp),%eax
jg     1211 <gcvt+0x101>
mov    -0x28(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    $0x1,%al
cmpl   $0x64,-0x28(%rbp)
mov    %al,-0x42(%rbp)
jge    11ea <gcvt+0xda>
cmpl   $0xffffff9c,-0x28(%rbp)
setle  %al
mov    %al,-0x42(%rbp)
mov    -0x48(%rbp),%eax
mov    -0x42(%rbp),%sil
mov    $0x2,%edx
mov    $0x3,%ecx
test   $0x1,%sil
cmovne %ecx,%edx
add    $0x1,%edx
xor    %ecx,%ecx
sub    %edx,%ecx
cmp    %ecx,%eax
jge    1399 <gcvt+0x289>
mov    -0x28(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x28(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0x2e,(%rax)
mov    -0x40(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x40(%rbp)
cmp    $0x0,%eax
jle    1287 <gcvt+0x177>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
jmp    124e <gcvt+0x13e>
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0x65,(%rax)
cmpl   $0x0,-0x28(%rbp)
jge    12c2 <gcvt+0x1b2>
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0x2d,(%rax)
xor    %eax,%eax
sub    -0x28(%rbp),%eax
mov    %eax,-0x28(%rbp)
jmp    12d4 <gcvt+0x1c4>
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0x2b,(%rax)
mov    $0x1,%al
cmpl   $0x64,-0x28(%rbp)
mov    %al,-0x49(%rbp)
jge    12ed <gcvt+0x1dd>
cmpl   $0xffffff9c,-0x28(%rbp)
setle  %al
mov    %al,-0x49(%rbp)
mov    -0x49(%rbp),%dl
mov    $0x2,%ecx
mov    $0x3,%eax
test   $0x1,%dl
cmovne %eax,%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rax
movb   $0x0,(%rax)
mov    $0x1,%al
cmpl   $0x64,-0x28(%rbp)
mov    %al,-0x4a(%rbp)
jge    132e <gcvt+0x21e>
cmpl   $0xffffff9c,-0x28(%rbp)
setle  %al
mov    %al,-0x4a(%rbp)
mov    -0x4a(%rbp),%dl
mov    $0x2,%eax
mov    $0x3,%ecx
test   $0x1,%dl
cmovne %ecx,%eax
mov    %eax,-0x3c(%rbp)
cmpl   $0x0,-0x3c(%rbp)
jle    138c <gcvt+0x27c>
mov    -0x28(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
add    $0x30,%edx
mov    %dl,%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0xffffffffffffffff,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,-0x1(%rax)
mov    -0x28(%rbp),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %eax,-0x28(%rbp)
mov    -0x3c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x3c(%rbp)
jmp    1344 <gcvt+0x234>
mov    -0x20(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    14eb <gcvt+0x3db>
cmpl   $0x0,-0x28(%rbp)
jg     140b <gcvt+0x2fb>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
je     13d7 <gcvt+0x2c7>
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0x30,(%rax)
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0x2e,(%rax)
jmp    13dc <gcvt+0x2cc>
cmpl   $0x0,-0x28(%rbp)
jge    1406 <gcvt+0x2f6>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0x30,(%rax)
jmp    13dc <gcvt+0x2cc>
jmp    140b <gcvt+0x2fb>
movl   $0x1,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0x40(%rbp),%eax
jg     1471 <gcvt+0x361>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
mov    (%rax),%cl
mov    -0x38(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x38(%rbp)
mov    %cl,(%rax)
mov    -0x3c(%rbp),%eax
cmp    -0x28(%rbp),%eax
jne    145e <gcvt+0x34e>
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0x2e,(%rax)
jmp    1463 <gcvt+0x353>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1412 <gcvt+0x302>
mov    -0x3c(%rbp),%eax
cmp    -0x28(%rbp),%eax
jg     14bf <gcvt+0x3af>
jmp    1482 <gcvt+0x372>
mov    -0x3c(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x3c(%rbp)
cmp    -0x28(%rbp),%eax
jg     14ad <gcvt+0x39d>
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0x30,(%rax)
jmp    1482 <gcvt+0x372>
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movb   $0x2e,(%rax)
mov    -0x38(%rbp),%rax
movsbl -0x1(%rax),%eax
cmp    $0x2e,%eax
jne    14dc <gcvt+0x3cc>
mov    -0x38(%rbp),%rax
add    $0xffffffffffffffff,%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x20(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<gcvt>:
push   %rbp
push   %r14
push   %rbx
sub    $0x10,%rsp
mov    %rsi,%r14
mov    %edi,%ebp
lea    0x8(%rsp),%rsi
lea    0xc(%rsp),%rdx
mov    $0x1,%al
call   1030 <ecvt@plt>
cmpl   $0x0,0xc(%rsp)
mov    %r14,%rcx
je     1140 <gcvt+0x30>
lea    0x1(%r14),%rcx
movb   $0x2d,(%r14)
movslq %eax,%rdx
mov    %ebp,%eax
cmp    $0x2,%ebp
jl     116e <gcvt+0x5e>
mov    %ebp,%eax
nopl   0x0(%rax)
lea    -0x1(%rax),%rsi
mov    %esi,%edi
cmpb   $0x30,(%rdx,%rdi,1)
jne    116e <gcvt+0x5e>
lea    0x1(%rsi),%rdi
mov    %rsi,%rax
cmp    $0x2,%rdi
ja     1150 <gcvt+0x40>
mov    $0x1,%eax
mov    0x8(%rsp),%esi
cmp    %ebp,%esi
jg     118f <gcvt+0x7f>
lea    -0x64(%rsi),%edi
cmp    $0xffffff39,%edi
mov    $0xfffffffd,%edi
sbb    $0x0,%edi
cmp    %edi,%esi
jge    121c <gcvt+0x10c>
add    $0xffffffff,%esi
mov    %esi,0x8(%rsp)
mov    (%rdx),%bl
mov    %bl,(%rcx)
lea    0x2(%rcx),%rsi
movb   $0x2e,0x1(%rcx)
cmp    $0x2,%eax
jl     13f5 <gcvt+0x2e5>
xor    %edi,%edi
mov    %eax,%r9d
sub    $0x2,%r9d
cmovb  %edi,%r9d
cmp    $0x1f,%r9d
jb     13ca <gcvt+0x2ba>
mov    %eax,%ebp
sub    $0x2,%ebp
cmovb  %edi,%ebp
lea    (%rdx,%rbp,1),%rdi
add    $0x2,%rdi
cmp    %rdi,%rsi
jae    11ec <gcvt+0xdc>
lea    (%rcx,%rbp,1),%rdi
add    $0x3,%rdi
lea    0x1(%rdx),%rbp
cmp    %rdi,%rbp
jb     13ca <gcvt+0x2ba>
add    $0x1,%r9
mov    %r9,%r8
and    $0xffffffffffffffe0,%r8
lea    -0x20(%r8),%rdi
mov    %rdi,%rbp
shr    $0x5,%rbp
add    $0x1,%rbp
mov    %ebp,%ebx
and    $0x3,%ebx
cmp    $0x60,%rdi
jae    1316 <gcvt+0x206>
xor    %edi,%edi
jmp    137a <gcvt+0x26a>
test   %esi,%esi
jg     1256 <gcvt+0x146>
cmpb   $0x30,(%rdx)
je     122e <gcvt+0x11e>
movw   $0x2e30,(%rcx)
add    $0x2,%rcx
test   %esi,%esi
js     1240 <gcvt+0x130>
xor    %esi,%esi
jmp    1256 <gcvt+0x146>
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%esi
mov    %esi,0x8(%rsp)
movb   $0x30,(%rcx)
add    $0x1,%rcx
mov    0x8(%rsp),%esi
test   %esi,%esi
js     1240 <gcvt+0x130>
test   %eax,%eax
jle    1271 <gcvt+0x161>
cmp    $0x1,%eax
jne    1283 <gcvt+0x173>
mov    $0x1,%esi
test   $0x1,%al
jne    12fb <gcvt+0x1eb>
jmp    150b <gcvt+0x3fb>
mov    $0x1,%eax
cmp    %esi,%eax
jle    1516 <gcvt+0x406>
jmp    1535 <gcvt+0x425>
mov    %eax,%r8d
and    $0xfffffffe,%r8d
mov    $0x1,%ebp
jmp    12b4 <gcvt+0x1a4>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movb   $0x2e,0x1(%rcx)
add    $0x2,%rcx
lea    0x2(%rdi),%rdx
lea    0x1(%rbx),%ebp
cmp    %r8d,%ebx
je     12e9 <gcvt+0x1d9>
mov    %rdx,%rdi
mov    %ebp,%esi
movzbl (%rdx),%edx
mov    %dl,(%rcx)
cmp    0x8(%rsp),%ebp
jne    12d0 <gcvt+0x1c0>
movb   $0x2e,0x1(%rcx)
add    $0x2,%rcx
jmp    12d4 <gcvt+0x1c4>
xchg   %ax,%ax
add    $0x1,%rcx
movzbl 0x1(%rdi),%edx
mov    %dl,(%rcx)
lea    0x1(%rsi),%ebx
cmp    0x8(%rsp),%ebx
je     12a0 <gcvt+0x190>
add    $0x1,%rcx
jmp    12a8 <gcvt+0x198>
add    $0x2,%rdi
add    $0x2,%esi
mov    %rdi,%rdx
test   $0x1,%al
je     150b <gcvt+0x3fb>
mov    (%rdx),%dl
mov    %dl,(%rcx)
cmp    0x8(%rsp),%esi
jne    1507 <gcvt+0x3f7>
movb   $0x2e,0x1(%rcx)
add    $0x2,%rcx
jmp    150b <gcvt+0x3fb>
and    $0xfffffffffffffffc,%rbp
xor    %edi,%edi
nopl   0x0(%rax)
movups 0x1(%rdx,%rdi,1),%xmm0
movups 0x11(%rdx,%rdi,1),%xmm1
movups %xmm0,0x2(%rcx,%rdi,1)
movups %xmm1,0x12(%rcx,%rdi,1)
movups 0x21(%rdx,%rdi,1),%xmm0
movups 0x31(%rdx,%rdi,1),%xmm1
movups %xmm0,0x22(%rcx,%rdi,1)
movups %xmm1,0x32(%rcx,%rdi,1)
movups 0x41(%rdx,%rdi,1),%xmm0
movups 0x51(%rdx,%rdi,1),%xmm1
movups %xmm0,0x42(%rcx,%rdi,1)
movups %xmm1,0x52(%rcx,%rdi,1)
movups 0x61(%rdx,%rdi,1),%xmm0
movups 0x71(%rdx,%rdi,1),%xmm1
movups %xmm0,0x62(%rcx,%rdi,1)
movups %xmm1,0x72(%rcx,%rdi,1)
sub    $0xffffffffffffff80,%rdi
add    $0xfffffffffffffffc,%rbp
jne    1320 <gcvt+0x210>
test   %rbx,%rbx
je     13bc <gcvt+0x2ac>
lea    (%rdi,%rdx,1),%rbp
add    $0x11,%rbp
add    %rdi,%rcx
add    $0x12,%rcx
shl    $0x5,%rbx
xor    %edi,%edi
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movups -0x10(%rbp,%rdi,1),%xmm0
movups 0x0(%rbp,%rdi,1),%xmm1
movups %xmm0,-0x10(%rcx,%rdi,1)
movups %xmm1,(%rcx,%rdi,1)
add    $0x20,%rdi
cmp    %rdi,%rbx
jne    13a0 <gcvt+0x290>
add    %r8,%rsi
cmp    %r8,%r9
je     13f5 <gcvt+0x2e5>
add    %r8,%rdx
sub    %r8d,%eax
add    $0x1,%rdx
add    $0x1,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movzbl (%rdx),%ecx
mov    %cl,(%rsi)
add    $0x1,%rsi
add    $0x1,%rdx
add    $0xffffffff,%eax
cmp    $0x2,%eax
ja     13e0 <gcvt+0x2d0>
movb   $0x65,(%rsi)
cmpl   $0x0,0x8(%rsp)
js     1409 <gcvt+0x2f9>
movb   $0x2b,0x1(%rsi)
mov    0x8(%rsp),%ecx
jmp    1417 <gcvt+0x307>
movb   $0x2d,0x1(%rsi)
xor    %ecx,%ecx
sub    0x8(%rsp),%ecx
mov    %ecx,0x8(%rsp)
add    $0xffffff9c,%ecx
xor    %eax,%eax
cmp    $0xffffff39,%ecx
setb   %al
movb   $0x0,0x4(%rsi,%rax,1)
movslq 0x8(%rsp),%rcx
imul   $0x66666667,%rcx,%rdx
mov    %rdx,%rdi
shr    $0x3f,%rdi
sar    $0x22,%rdx
add    %edi,%edx
add    %edx,%edx
lea    (%rdx,%rdx,4),%edi
lea    -0x64(%rcx),%edx
sub    %edi,%ecx
add    $0x30,%cl
mov    %cl,0x3(%rsi,%rax,1)
movslq 0x8(%rsp),%rcx
imul   $0x66666667,%rcx,%rcx
mov    %rcx,%rdi
shr    $0x3f,%rdi
sar    $0x22,%rcx
add    %edi,%ecx
mov    %ecx,0x8(%rsp)
movslq %ecx,%rcx
imul   $0x66666667,%rcx,%rdi
mov    %rdi,%rbp
shr    $0x3f,%rbp
sar    $0x22,%rdi
add    %ebp,%edi
add    %edi,%edi
lea    (%rdi,%rdi,4),%edi
sub    %edi,%ecx
add    $0x30,%cl
mov    %cl,0x2(%rsi,%rax,1)
movslq 0x8(%rsp),%rcx
imul   $0x66666667,%rcx,%rcx
mov    %rcx,%rdi
shr    $0x3f,%rdi
sar    $0x22,%rcx
add    %edi,%ecx
mov    %ecx,0x8(%rsp)
cmp    $0xffffff38,%edx
ja     1544 <gcvt+0x434>
or     $0x2,%rax
movslq %ecx,%rdx
imul   $0x66666667,%rdx,%rdx
mov    %rdx,%rdi
shr    $0x3f,%rdi
shr    $0x22,%rdx
add    %edi,%edx
add    %edx,%edx
lea    (%rdx,%rdx,4),%edx
sub    %edx,%ecx
add    $0x30,%cl
mov    %cl,-0x1(%rsi,%rax,1)
movslq 0x8(%rsp),%rax
imul   $0x66666667,%rax,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x22,%rax
add    %ecx,%eax
mov    %eax,0x8(%rsp)
jmp    1544 <gcvt+0x434>
add    $0x1,%rcx
add    $0x1,%eax
mov    0x8(%rsp),%esi
cmp    %esi,%eax
jg     1535 <gcvt+0x425>
add    $0xffffffff,%eax
add    $0x1,%rcx
nopl   (%rax)
movb   $0x30,-0x1(%rcx)
add    $0x1,%eax
add    $0x1,%rcx
cmp    0x8(%rsp),%eax
jl     1520 <gcvt+0x410>
movb   $0x2e,-0x1(%rcx)
cmpb   $0x2e,-0x1(%rcx)
lea    -0x1(%rcx),%rax
cmovne %rcx,%rax
movb   $0x0,(%rax)
mov    %r14,%rax
add    $0x10,%rsp
pop    %rbx
pop    %r14
pop    %rbp
ret

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

LLVM IR (-O2):
define i8* @gcvt(double %0, i32 %1, i8* returned %2) {
%4 = alloca i32
%5 = alloca i32
%6 = bitcast i32* %4 to i8*
%7 = bitcast i32* %5 to i8*
%8 = call i32 (double, i32, i32*, i32*, ...) bitcast (i32 (...)* @ecvt to i32 (double, i32, i32*, i32*, ...)*)(double %0, i32 %1, i32* %5, i32* %4)
%9 = sext i32 %8 to i64
%10 = inttoptr i64 %9 to i8*
%11 = load i32, i32* %4
%12 = icmp eq i32 %11, 0
br i1 %12, label %15, label %13
13: ; preds = %3
%14 = getelementptr inbounds i8, i8* %2, i64 1
store i8 45, i8* %2
br label %15
15: ; preds = %13, %3
%16 = phi i8* [ %14, %13 ], [ %2, %3 ]
%17 = icmp sgt i32 %1, 1
br i1 %17, label %18, label %31
18: ; preds = %15
%19 = zext i32 %1 to i64
br label %20
20: ; preds = %18, %27
%21 = phi i64 [ %19, %18 ], [ %22, %27 ]
%22 = add nsw i64 %21, -1
%23 = and i64 %22, 4294967295
%24 = getelementptr inbounds i8, i8* %10, i64 %23
%25 = load i8, i8* %24
%26 = icmp eq i8 %25, 48
br i1 %26, label %27, label %29
27: ; preds = %20
%28 = icmp ugt i64 %21, 2
br i1 %28, label %20, label %31
29: ; preds = %20
%30 = trunc i64 %21 to i32
br label %31
31: ; preds = %27, %29, %15
%32 = phi i32 [ %1, %15 ], [ %30, %29 ], [ 1, %27 ]
%33 = load i32, i32* %5
%34 = icmp sgt i32 %33, %1
br i1 %34, label %40, label %35
35: ; preds = %31
%36 = add i32 %33, -100
%37 = icmp ult i32 %36, -199
%38 = select i1 %37, i32 -4, i32 -3
%39 = icmp slt i32 %33, %38
br i1 %39, label %40, label %205
40: ; preds = %35, %31
%41 = add nsw i32 %33, -1
store i32 %41, i32* %5
%42 = load i8, i8* %10
%43 = getelementptr inbounds i8, i8* %16, i64 1
store i8 %42, i8* %16
%44 = getelementptr i8, i8* %16, i64 2
store i8 46, i8* %43
%45 = icmp sgt i32 %32, 1
br i1 %45, label %46, label %166
46: ; preds = %40
%47 = call i32 @llvm.umin.i32(i32 %32, i32 2)
%48 = sub i32 %32, %47
%49 = zext i32 %48 to i64
%50 = add nuw nsw i64 %49, 1
%51 = icmp ult i32 %48, 31
br i1 %51, label %153, label %52
52: ; preds = %46
%53 = call i32 @llvm.umin.i32(i32 %32, i32 2)
%54 = sub i32 %32, %53
%55 = zext i32 %54 to i64
%56 = add nuw nsw i64 %55, 3
%57 = getelementptr i8, i8* %16, i64 %56
%58 = getelementptr i8, i8* %10, i64 1
%59 = add nuw nsw i64 %55, 2
%60 = getelementptr i8, i8* %10, i64 %59
%61 = icmp ult i8* %44, %60
%62 = icmp ult i8* %58, %57
%63 = and i1 %61, %62
br i1 %63, label %153, label %64
64: ; preds = %52
%65 = and i64 %50, 8589934560
%66 = getelementptr i8, i8* %10, i64 %65
%67 = trunc i64 %65 to i32
%68 = sub i32 %32, %67
%69 = getelementptr i8, i8* %44, i64 %65
%70 = add nsw i64 %65, -32
%71 = lshr exact i64 %70, 5
%72 = add nuw nsw i64 %71, 1
%73 = and i64 %72, 3
%74 = icmp ult i64 %70, 96
br i1 %74, label %130, label %75
75: ; preds = %64
%76 = and i64 %72, 1152921504606846972
%77 = getelementptr i8, i8* %10, i64 1
%78 = getelementptr i8, i8* %10, i64 1
%79 = getelementptr i8, i8* %10, i64 1
%80 = getelementptr i8, i8* %10, i64 1
br label %81
81: ; preds = %81, %75
%82 = phi i64 [ 0, %75 ], [ %127, %81 ]
%83 = phi i64 [ 0, %75 ], [ %128, %81 ]
%84 = getelementptr i8, i8* %44, i64 %82
%85 = getelementptr inbounds i8, i8* %77, i64 %82
%86 = bitcast i8* %85 to <16 x i8>*
%87 = load <16 x i8>, <16 x i8>* %86
%88 = getelementptr inbounds i8, i8* %85, i64 16
%89 = bitcast i8* %88 to <16 x i8>*
%90 = load <16 x i8>, <16 x i8>* %89
%91 = bitcast i8* %84 to <16 x i8>*
store <16 x i8> %87, <16 x i8>* %91
%92 = getelementptr i8, i8* %84, i64 16
%93 = bitcast i8* %92 to <16 x i8>*
store <16 x i8> %90, <16 x i8>* %93
%94 = or i64 %82, 32
%95 = getelementptr i8, i8* %44, i64 %94
%96 = getelementptr inbounds i8, i8* %78, i64 %94
%97 = bitcast i8* %96 to <16 x i8>*
%98 = load <16 x i8>, <16 x i8>* %97
%99 = getelementptr inbounds i8, i8* %96, i64 16
%100 = bitcast i8* %99 to <16 x i8>*
%101 = load <16 x i8>, <16 x i8>* %100
%102 = bitcast i8* %95 to <16 x i8>*
store <16 x i8> %98, <16 x i8>* %102
%103 = getelementptr i8, i8* %95, i64 16
%104 = bitcast i8* %103 to <16 x i8>*
store <16 x i8> %101, <16 x i8>* %104
%105 = or i64 %82, 64
%106 = getelementptr i8, i8* %44, i64 %105
%107 = getelementptr inbounds i8, i8* %79, i64 %105
%108 = bitcast i8* %107 to <16 x i8>*
%109 = load <16 x i8>, <16 x i8>* %108
%110 = getelementptr inbounds i8, i8* %107, i64 16
%111 = bitcast i8* %110 to <16 x i8>*
%112 = load <16 x i8>, <16 x i8>* %111
%113 = bitcast i8* %106 to <16 x i8>*
store <16 x i8> %109, <16 x i8>* %113
%114 = getelementptr i8, i8* %106, i64 16
%115 = bitcast i8* %114 to <16 x i8>*
store <16 x i8> %112, <16 x i8>* %115
%116 = or i64 %82, 96
%117 = getelementptr i8, i8* %44, i64 %116
%118 = getelementptr inbounds i8, i8* %80, i64 %116
%119 = bitcast i8* %118 to <16 x i8>*
%120 = load <16 x i8>, <16 x i8>* %119
%121 = getelementptr inbounds i8, i8* %118, i64 16
%122 = bitcast i8* %121 to <16 x i8>*
%123 = load <16 x i8>, <16 x i8>* %122
%124 = bitcast i8* %117 to <16 x i8>*
store <16 x i8> %120, <16 x i8>* %124
%125 = getelementptr i8, i8* %117, i64 16
%126 = bitcast i8* %125 to <16 x i8>*
store <16 x i8> %123, <16 x i8>* %126
%127 = add nuw i64 %82, 128
%128 = add i64 %83, 4
%129 = icmp eq i64 %128, %76
br i1 %129, label %130, label %81
130: ; preds = %81, %64
%131 = phi i64 [ 0, %64 ], [ %127, %81 ]
%132 = icmp eq i64 %73, 0
br i1 %132, label %151, label %133
133: ; preds = %130
%134 = getelementptr i8, i8* %10, i64 1
br label %135
135: ; preds = %135, %133
%136 = phi i64 [ %131, %133 ], [ %148, %135 ]
%137 = phi i64 [ 0, %133 ], [ %149, %135 ]
%138 = getelementptr i8, i8* %44, i64 %136
%139 = getelementptr inbounds i8, i8* %134, i64 %136
%140 = bitcast i8* %139 to <16 x i8>*
%141 = load <16 x i8>, <16 x i8>* %140
%142 = getelementptr inbounds i8, i8* %139, i64 16
%143 = bitcast i8* %142 to <16 x i8>*
%144 = load <16 x i8>, <16 x i8>* %143
%145 = bitcast i8* %138 to <16 x i8>*
store <16 x i8> %141, <16 x i8>* %145
%146 = getelementptr i8, i8* %138, i64 16
%147 = bitcast i8* %146 to <16 x i8>*
store <16 x i8> %144, <16 x i8>* %147
%148 = add nuw i64 %136, 32
%149 = add i64 %137, 1
%150 = icmp eq i64 %149, %73
br i1 %150, label %151, label %135
151: ; preds = %135, %130
%152 = icmp eq i64 %50, %65
br i1 %152, label %166, label %153
153: ; preds = %52, %46, %151
%154 = phi i8* [ %10, %52 ], [ %10, %46 ], [ %66, %151 ]
%155 = phi i32 [ %32, %52 ], [ %32, %46 ], [ %68, %151 ]
%156 = phi i8* [ %44, %52 ], [ %44, %46 ], [ %69, %151 ]
br label %157
157: ; preds = %153, %157
%158 = phi i8* [ %161, %157 ], [ %154, %153 ]
%159 = phi i32 [ %162, %157 ], [ %155, %153 ]
%160 = phi i8* [ %164, %157 ], [ %156, %153 ]
%161 = getelementptr inbounds i8, i8* %158, i64 1
%162 = add nsw i32 %159, -1
%163 = load i8, i8* %161
%164 = getelementptr inbounds i8, i8* %160, i64 1
store i8 %163, i8* %160
%165 = icmp ugt i32 %159, 2
br i1 %165, label %157, label %166
166: ; preds = %157, %151, %40
%167 = phi i8* [ %44, %40 ], [ %69, %151 ], [ %164, %157 ]
%168 = getelementptr inbounds i8, i8* %167, i64 1
store i8 101, i8* %167
%169 = load i32, i32* %5
%170 = icmp slt i32 %169, 0
br i1 %170, label %171, label %174
171: ; preds = %166
store i8 45, i8* %168
%172 = load i32, i32* %5
%173 = sub nsw i32 0, %172
store i32 %173, i32* %5
br label %176
174: ; preds = %166
store i8 43, i8* %168
%175 = load i32, i32* %5
br label %176
176: ; preds = %174, %171
%177 = phi i32 [ %175, %174 ], [ %173, %171 ]
%178 = getelementptr inbounds i8, i8* %167, i64 2
%179 = add i32 %177, -100
%180 = icmp ult i32 %179, -199
%181 = select i1 %180, i64 3, i64 2
%182 = getelementptr inbounds i8, i8* %178, i64 %181
store i8 0, i8* %182
%183 = load i32, i32* %5
%184 = srem i32 %183, 10
%185 = trunc i32 %184 to i8
%186 = add nsw i8 %185, 48
%187 = getelementptr inbounds i8, i8* %182, i64 -1
store i8 %186, i8* %187
%188 = load i32, i32* %5
%189 = sdiv i32 %188, 10
store i32 %189, i32* %5
%190 = add i32 %183, -100
%191 = icmp ult i32 %190, -199
%192 = srem i32 %189, 10
%193 = trunc i32 %192 to i8
%194 = add nsw i8 %193, 48
%195 = getelementptr inbounds i8, i8* %187, i64 -1
store i8 %194, i8* %195
%196 = load i32, i32* %5
%197 = sdiv i32 %196, 10
store i32 %197, i32* %5
br i1 %191, label %198, label %296
198: ; preds = %176
%199 = srem i32 %197, 10
%200 = trunc i32 %199 to i8
%201 = add nsw i8 %200, 48
%202 = getelementptr inbounds i8, i8* %195, i64 -1
store i8 %201, i8* %202
%203 = load i32, i32* %5
%204 = sdiv i32 %203, 10
store i32 %204, i32* %5
br label %296
205: ; preds = %35
%206 = icmp slt i32 %33, 1
br i1 %206, label %207, label %223
207: ; preds = %205
%208 = load i8, i8* %10
%209 = icmp eq i8 %208, 48
br i1 %209, label %213, label %210
210: ; preds = %207
%211 = getelementptr inbounds i8, i8* %16, i64 1
store i8 48, i8* %16
%212 = getelementptr inbounds i8, i8* %16, i64 2
store i8 46, i8* %211
br label %213
213: ; preds = %210, %207
%214 = phi i8* [ %212, %210 ], [ %16, %207 ]
%215 = icmp slt i32 %33, 0
br i1 %215, label %216, label %223
216: ; preds = %213, %216
%217 = phi i32 [ %221, %216 ], [ %33, %213 ]
%218 = phi i8* [ %220, %216 ], [ %214, %213 ]
%219 = add nsw i32 %217, 1
store i32 %219, i32* %5
%220 = getelementptr inbounds i8, i8* %218, i64 1
store i8 48, i8* %218
%221 = load i32, i32* %5
%222 = icmp slt i32 %221, 0
br i1 %222, label %216, label %223
223: ; preds = %216, %213, %205
%224 = phi i32 [ %33, %205 ], [ 0, %213 ], [ %221, %216 ]
%225 = phi i8* [ %16, %205 ], [ %214, %213 ], [ %220, %216 ]
%226 = icmp slt i32 %32, 1
br i1 %226, label %276, label %227
227: ; preds = %223
%228 = add nuw i32 %32, 1
%229 = and i32 %32, 1
%230 = icmp eq i32 %32, 1
br i1 %230, label %260, label %231
231: ; preds = %227
%232 = and i32 %32, -2
br label %233
233: ; preds = %255, %231
%234 = phi i32 [ 1, %231 ], [ %257, %255 ]
%235 = phi i8* [ %225, %231 ], [ %256, %255 ]
%236 = phi i8* [ %10, %231 ], [ %248, %255 ]
%237 = phi i32 [ 0, %231 ], [ %258, %255 ]
%238 = getelementptr inbounds i8, i8* %236, i64 1
%239 = load i8, i8* %236
%240 = getelementptr inbounds i8, i8* %235, i64 1
store i8 %239, i8* %235
%241 = load i32, i32* %5
%242 = icmp eq i32 %234, %241
br i1 %242, label %243, label %245
243: ; preds = %233
%244 = getelementptr inbounds i8, i8* %235, i64 2
store i8 46, i8* %240
br label %245
245: ; preds = %233, %243
%246 = phi i8* [ %244, %243 ], [ %240, %233 ]
%247 = add nuw i32 %234, 1
%248 = getelementptr inbounds i8, i8* %236, i64 2
%249 = load i8, i8* %238
%250 = getelementptr inbounds i8, i8* %246, i64 1
store i8 %249, i8* %246
%251 = load i32, i32* %5
%252 = icmp eq i32 %247, %251
br i1 %252, label %253, label %255
253: ; preds = %245
%254 = getelementptr inbounds i8, i8* %246, i64 2
store i8 46, i8* %250
br label %255
255: ; preds = %253, %245
%256 = phi i8* [ %254, %253 ], [ %250, %245 ]
%257 = add nuw i32 %234, 2
%258 = add i32 %237, 2
%259 = icmp eq i32 %258, %232
br i1 %259, label %260, label %233
260: ; preds = %255, %227
%261 = phi i8* [ undef, %227 ], [ %256, %255 ]
%262 = phi i32 [ 1, %227 ], [ %257, %255 ]
%263 = phi i8* [ %225, %227 ], [ %256, %255 ]
%264 = phi i8* [ %10, %227 ], [ %248, %255 ]
%265 = icmp eq i32 %229, 0
br i1 %265, label %273, label %266
266: ; preds = %260
%267 = load i8, i8* %264
%268 = getelementptr inbounds i8, i8* %263, i64 1
store i8 %267, i8* %263
%269 = load i32, i32* %5
%270 = icmp eq i32 %262, %269
br i1 %270, label %271, label %273
271: ; preds = %266
%272 = getelementptr inbounds i8, i8* %263, i64 2
store i8 46, i8* %268
br label %273
273: ; preds = %266, %271, %260
%274 = phi i8* [ %261, %260 ], [ %272, %271 ], [ %268, %266 ]
%275 = load i32, i32* %5
br label %276
276: ; preds = %273, %223
%277 = phi i32 [ %224, %223 ], [ %275, %273 ]
%278 = phi i8* [ %225, %223 ], [ %274, %273 ]
%279 = phi i32 [ 1, %223 ], [ %228, %273 ]
%280 = icmp sgt i32 %279, %277
br i1 %280, label %290, label %281
281: ; preds = %276, %281
%282 = phi i32 [ %284, %281 ], [ %279, %276 ]
%283 = phi i8* [ %285, %281 ], [ %278, %276 ]
%284 = add nuw nsw i32 %282, 1
%285 = getelementptr inbounds i8, i8* %283, i64 1
store i8 48, i8* %283
%286 = load i32, i32* %5
%287 = icmp slt i32 %282, %286
br i1 %287, label %281, label %288
288: ; preds = %281
%289 = getelementptr inbounds i8, i8* %283, i64 2
store i8 46, i8* %285
br label %290
290: ; preds = %288, %276
%291 = phi i8* [ %289, %288 ], [ %278, %276 ]
%292 = getelementptr inbounds i8, i8* %291, i64 -1
%293 = load i8, i8* %292
%294 = icmp eq i8 %293, 46
%295 = select i1 %294, i8* %292, i8* %291
store i8 0, i8* %295
br label %296
296: ; preds = %176, %198, %290
ret i8* %2
}