int incrPos(char *s, int pos, int len) {
  int i;
  if ((pos == 0) && (s[pos] == '9')) {
    for (i = len - 1; i >= 0; i--) {
      s[i + 1] = s[i];
    }
    s[0] = '0';
    return incrPos(s, 1, len + 1);
  }
  if (s[pos] != '9') {
    s[pos] += 1;
    return pos;
  } else {
    s[pos] = '0';
    return incrPos(s, pos - 1, len);
  }
}


x86 assembly (clang, -O0):
<incrPos>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %edx,-0x18(%rbp)
cmpl   $0x0,-0x14(%rbp)
jne    11a0 <incrPos+0x90>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
jne    11a0 <incrPos+0x90>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0x0,-0x1c(%rbp)
jl     117d <incrPos+0x6d>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
jmp    114a <incrPos+0x3a>
mov    -0x10(%rbp),%rax
movb   $0x30,(%rax)
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%edx
add    $0x1,%edx
mov    $0x1,%esi
call   1030 <incrPos@plt>
mov    %eax,-0x4(%rbp)
jmp    11f3 <incrPos+0xe3>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x39,%eax
je     11d2 <incrPos+0xc2>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%edx
add    $0x1,%edx
mov    %dl,(%rax,%rcx,1)
mov    -0x14(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    11f3 <incrPos+0xe3>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movb   $0x30,(%rax,%rcx,1)
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
sub    $0x1,%esi
mov    -0x18(%rbp),%edx
call   1030 <incrPos@plt>
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<incrPos>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %edx,%r12d
movabs $0x1fffffff0,%r8
mov    $0xffffffff,%edx
movslq %esi,%r9
lea    -0x1(%r12),%ebp
lea    0x1(%rdi),%rcx
lea    -0xf(%rdi),%rbx
lea    -0x3(%rdi),%rax
xor    %r14d,%r14d
mov    %ebp,%esi
mov    %rbp,-0x48(%rsp)
mov    %rcx,-0x50(%rsp)
mov    %rbx,-0x60(%rsp)
mov    %rax,-0x58(%rsp)
mov    %r12d,%r12d
add    %r12,%rax
mov    %rax,-0x20(%rsp)
lea    (%r12,%rdx,1),%rax
mov    %rax,-0x70(%rsp)
mov    %esi,-0x64(%rsp)
mov    %esi,%esi
add    $0x1,%rsi
mov    %rsi,%r10
and    $0xfffffffffffffffc,%r10
neg    %r10
and    $0xfffffffffffffff0,%rsi
add    $0xfffffffffffffff0,%rsi
shr    $0x4,%rsi
lea    0x1(%rsi),%eax
movzbl %al,%r11d
and    $0x3,%r11d
shl    $0x4,%r11
lea    (%rbx,%r12,1),%rax
mov    %rax,-0x28(%rsp)
lea    (%r12,%rdx,1),%rax
add    $0xffffffffffffffe0,%rax
mov    %rax,-0x30(%rsp)
lea    -0x10(%r12,%rdx,1),%rax
mov    %rax,-0x38(%rsp)
lea    (%r12,%rdx,1),%rax
add    $0xffffffffffffffd0,%rax
mov    %rax,-0x40(%rsp)
add    $0x1,%rsi
and    $0xfffffffffffffffc,%rsi
mov    %r14,-0x8(%rsp)
add    %r14d,%ebp
lea    0x1(%rbp),%rbx
mov    %rbx,-0x78(%rsp)
and    %r8,%rbx
lea    -0x10(%rbx),%r15
mov    %r15,%r13
shr    $0x4,%r13
add    $0x1,%r13
mov    %r12,%rdx
sub    %rbp,%rdx
add    %rdi,%rdx
lea    (%rcx,%r12,1),%rax
mov    %rax,-0x18(%rsp)
lea    (%rcx,%rbp,1),%rax
mov    %rax,-0x10(%rsp)
lea    (%rdi,%r12,1),%r14
lea    (%rdi,%rbp,1),%r8
mov    %r9,%rax
sub    $0x1,%rax
jae    1215 <incrPos+0x115>
cmpb   $0x39,(%rdi)
je     1240 <incrPos+0x140>
movzbl (%rdi,%r9,1),%ecx
cmp    $0x39,%cl
jne    141c <incrPos+0x31c>
movb   $0x30,(%rdi,%r9,1)
mov    %rax,%r9
sub    $0x1,%rax
jb     1210 <incrPos+0x110>
jmp    1215 <incrPos+0x115>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
test   %r12d,%r12d
jle    1273 <incrPos+0x173>
mov    %r12,%rax
cmp    $0x3,%ebp
jae    12b8 <incrPos+0x1b8>
lea    0x1(%rax),%ecx
mov    %rax,%rdx
add    %rdi,%rdx
add    $0xffffffff,%eax
add    %rdi,%rax
xor    %esi,%esi
xchg   %ax,%ax
movzbl (%rax,%rsi,1),%ebx
mov    %bl,(%rdx,%rsi,1)
add    $0xffffffffffffffff,%rsi
lea    (%rsi,%rcx,1),%ebp
cmp    $0x1,%ebp
jg     1260 <incrPos+0x160>
movb   $0x30,(%rdi)
add    $0x1,%r12d
mov    -0x8(%rsp),%r14
add    $0x1,%r14d
mov    -0x64(%rsp),%esi
add    $0x1,%esi
mov    $0x1,%r9d
movabs $0x1fffffff0,%r8
mov    $0xffffffff,%edx
mov    -0x48(%rsp),%rbp
mov    -0x50(%rsp),%rcx
mov    -0x60(%rsp),%rbx
mov    -0x58(%rsp),%rax
jmp    1149 <incrPos+0x49>
mov    %ebp,%r9d
mov    %r14,%rcx
sub    %r9,%rcx
mov    %r12,%rax
cmp    %r14,%rcx
ja     124d <incrPos+0x14d>
mov    %r8,%rcx
sub    %r9,%rcx
mov    %r12,%rax
cmp    %r8,%rcx
ja     124d <incrPos+0x14d>
cmp    -0x10(%rsp),%rdx
jae    12f0 <incrPos+0x1f0>
mov    %r12,%rax
cmp    %rdi,-0x18(%rsp)
ja     124d <incrPos+0x14d>
cmp    $0xf,%ebp
jae    1306 <incrPos+0x206>
xor    %ebx,%ebx
mov    -0x70(%rsp),%rbp
mov    -0x78(%rsp),%r8
jmp    13d1 <incrPos+0x2d1>
cmp    $0x30,%r15
mov    -0x70(%rsp),%r8
jae    1315 <incrPos+0x215>
xor    %eax,%eax
jmp    1374 <incrPos+0x274>
xor    %eax,%eax
mov    -0x28(%rsp),%rbp
mov    -0x30(%rsp),%r9
mov    -0x38(%rsp),%r14
mov    -0x40(%rsp),%rdx
nopl   0x0(%rax,%rax,1)
lea    (%r8,%rax,1),%ecx
movups -0xf(%rdi,%rcx,1),%xmm0
movups %xmm0,0x0(%rbp,%rax,1)
lea    (%r14,%rax,1),%ecx
movups -0xf(%rdi,%rcx,1),%xmm0
movups %xmm0,-0x10(%rbp,%rax,1)
lea    (%r9,%rax,1),%ecx
movups -0xf(%rdi,%rcx,1),%xmm0
movups %xmm0,-0x20(%rbp,%rax,1)
lea    (%rdx,%rax,1),%ecx
movups -0xf(%rdi,%rcx,1),%xmm0
movups %xmm0,-0x30(%rbp,%rax,1)
add    $0xffffffffffffffc0,%rax
add    $0xfffffffffffffffc,%rsi
jne    1330 <incrPos+0x230>
neg    %rax
mov    -0x78(%rsp),%rbp
test   $0x3,%r13b
je     13b8 <incrPos+0x2b8>
mov    %r12,%rcx
sub    %rax,%rcx
add    -0x60(%rsp),%rcx
mov    %r8,%rdx
sub    %rax,%rdx
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    (%rdx,%rax,1),%esi
movups -0xf(%rdi,%rsi,1),%xmm0
movups %xmm0,(%rcx,%rax,1)
add    $0xfffffffffffffff0,%rax
mov    %r11,%rsi
add    %rax,%rsi
jne    13a0 <incrPos+0x2a0>
cmp    %rbx,%rbp
je     1273 <incrPos+0x173>
mov    -0x78(%rsp),%r8
test   $0xc,%r8b
je     1411 <incrPos+0x311>
mov    -0x70(%rsp),%rbp
movabs $0x1fffffff0,%rax
lea    0xc(%rax),%rcx
and    %r8,%rcx
mov    %r12,%rax
sub    %rcx,%rax
neg    %rbx
mov    -0x20(%rsp),%rsi
lea    (%rbx,%rbp,1),%edx
mov    -0x3(%rdi,%rdx,1),%edx
mov    %edx,(%rsi,%rbx,1)
add    $0xfffffffffffffffc,%rbx
cmp    %rbx,%r10
jne    13f0 <incrPos+0x2f0>
cmp    %rcx,%r8
jne    124d <incrPos+0x14d>
jmp    1273 <incrPos+0x173>
mov    %r12,%rax
sub    %rbx,%rax
jmp    124d <incrPos+0x14d>
add    $0x1,%cl
mov    %cl,(%rdi,%r9,1)
mov    %r9d,%eax
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i32 @incrPos(i8* %0, i32 %1, i32 %2) {
%4 = alloca i32
%5 = alloca i8*
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
store i8* %0, i8** %5
store i32 %1, i32* %6
store i32 %2, i32* %7
%9 = load i32, i32* %6
%10 = icmp eq i32 %9, 0
br i1 %10, label %11, label %46
11: ; preds = %3
%12 = load i8*, i8** %5
%13 = load i32, i32* %6
%14 = sext i32 %13 to i64
%15 = getelementptr inbounds i8, i8* %12, i64 %14
%16 = load i8, i8* %15
%17 = sext i8 %16 to i32
%18 = icmp eq i32 %17, 57
br i1 %18, label %19, label %46
19: ; preds = %11
%20 = load i32, i32* %7
%21 = sub nsw i32 %20, 1
store i32 %21, i32* %8
br label %22
22: ; preds = %36, %19
%23 = load i32, i32* %8
%24 = icmp sge i32 %23, 0
br i1 %24, label %25, label %39
25: ; preds = %22
%26 = load i8*, i8** %5
%27 = load i32, i32* %8
%28 = sext i32 %27 to i64
%29 = getelementptr inbounds i8, i8* %26, i64 %28
%30 = load i8, i8* %29
%31 = load i8*, i8** %5
%32 = load i32, i32* %8
%33 = add nsw i32 %32, 1
%34 = sext i32 %33 to i64
%35 = getelementptr inbounds i8, i8* %31, i64 %34
store i8 %30, i8* %35
br label %36
36: ; preds = %25
%37 = load i32, i32* %8
%38 = add nsw i32 %37, -1
store i32 %38, i32* %8
br label %22
39: ; preds = %22
%40 = load i8*, i8** %5
%41 = getelementptr inbounds i8, i8* %40, i64 0
store i8 48, i8* %41
%42 = load i8*, i8** %5
%43 = load i32, i32* %7
%44 = add nsw i32 %43, 1
%45 = call i32 @incrPos(i8* %42, i32 1, i32 %44)
store i32 %45, i32* %4
br label %74
46: ; preds = %11, %3
%47 = load i8*, i8** %5
%48 = load i32, i32* %6
%49 = sext i32 %48 to i64
%50 = getelementptr inbounds i8, i8* %47, i64 %49
%51 = load i8, i8* %50
%52 = sext i8 %51 to i32
%53 = icmp ne i32 %52, 57
br i1 %53, label %54, label %64
54: ; preds = %46
%55 = load i8*, i8** %5
%56 = load i32, i32* %6
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds i8, i8* %55, i64 %57
%59 = load i8, i8* %58
%60 = sext i8 %59 to i32
%61 = add nsw i32 %60, 1
%62 = trunc i32 %61 to i8
store i8 %62, i8* %58
%63 = load i32, i32* %6
store i32 %63, i32* %4
br label %74
64: ; preds = %46
%65 = load i8*, i8** %5
%66 = load i32, i32* %6
%67 = sext i32 %66 to i64
%68 = getelementptr inbounds i8, i8* %65, i64 %67
store i8 48, i8* %68
%69 = load i8*, i8** %5
%70 = load i32, i32* %6
%71 = sub nsw i32 %70, 1
%72 = load i32, i32* %7
%73 = call i32 @incrPos(i8* %69, i32 %71, i32 %72)
store i32 %73, i32* %4
br label %74
74: ; preds = %64, %54, %39
%75 = load i32, i32* %4
ret i32 %75
}

LLVM IR (-O2):
define i32 @incrPos(i8* %0, i32 %1, i32 %2) {
%4 = sext i32 %1 to i64
%5 = add i32 %2, -1
%6 = getelementptr i8, i8* %0, i64 1
%7 = getelementptr i8, i8* %0, i64 1
%8 = getelementptr inbounds i8, i8* %0, i64 -15
%9 = getelementptr inbounds i8, i8* %0, i64 -15
%10 = getelementptr inbounds i8, i8* %0, i64 -15
%11 = getelementptr inbounds i8, i8* %0, i64 -15
%12 = getelementptr inbounds i8, i8* %0, i64 -15
%13 = getelementptr inbounds i8, i8* %0, i64 -15
%14 = getelementptr inbounds i8, i8* %0, i64 -15
%15 = getelementptr inbounds i8, i8* %0, i64 -15
%16 = getelementptr inbounds i8, i8* %0, i64 -15
%17 = getelementptr inbounds i8, i8* %0, i64 -15
%18 = getelementptr inbounds i8, i8* %0, i64 -3
%19 = getelementptr inbounds i8, i8* %0, i64 -3
br label %20
20: ; preds = %175, %3
%21 = phi i32 [ %177, %175 ], [ 0, %3 ]
%22 = phi i64 [ 1, %175 ], [ %4, %3 ]
%23 = phi i32 [ %176, %175 ], [ %2, %3 ]
%24 = add i32 %5, %21
%25 = zext i32 %24 to i64
%26 = add nuw nsw i64 %25, 1
%27 = and i64 %26, 8589934576
%28 = add nsw i64 %27, -16
%29 = lshr exact i64 %28, 4
%30 = add nuw nsw i64 %29, 1
%31 = add i32 %5, %21
%32 = zext i32 %31 to i64
%33 = add nuw nsw i64 %32, 1
%34 = add i32 %5, %21
%35 = zext i32 %34 to i64
%36 = add nuw nsw i64 %35, 1
%37 = zext i32 %23 to i64
%38 = add i32 %5, %21
%39 = zext i32 %38 to i64
%40 = sub nsw i64 %37, %39
%41 = getelementptr i8, i8* %0, i64 %40
%42 = getelementptr i8, i8* %6, i64 %37
%43 = getelementptr i8, i8* %7, i64 %39
%44 = add i32 %5, %21
%45 = zext i32 %23 to i64
%46 = getelementptr i8, i8* %0, i64 %45
%47 = zext i32 %44 to i64
%48 = getelementptr i8, i8* %0, i64 %47
%49 = zext i32 %23 to i64
br label %50
50: ; preds = %20, %185
%51 = phi i64 [ %22, %20 ], [ %186, %185 ]
%52 = icmp eq i64 %51, 0
br i1 %52, label %53, label %178
53: ; preds = %50
%54 = load i8, i8* %0
%55 = icmp eq i8 %54, 57
br i1 %55, label %56, label %178
56: ; preds = %53
%57 = icmp sgt i32 %23, 0
br i1 %57, label %58, label %175
58: ; preds = %56
%59 = icmp ult i32 %34, 3
br i1 %59, label %164, label %60
60: ; preds = %58
%61 = zext i32 %44 to i64
%62 = sub nsw i64 0, %61
%63 = getelementptr i8, i8* %46, i64 %62
%64 = icmp ugt i8* %63, %46
%65 = zext i32 %44 to i64
%66 = sub nsw i64 0, %65
%67 = getelementptr i8, i8* %48, i64 %66
%68 = icmp ugt i8* %67, %48
%69 = or i1 %64, %68
br i1 %69, label %164, label %70
70: ; preds = %60
%71 = icmp ult i8* %41, %43
%72 = icmp ugt i8* %42, %0
%73 = and i1 %71, %72
br i1 %73, label %164, label %74
74: ; preds = %70
%75 = icmp ult i32 %34, 15
br i1 %75, label %146, label %76
76: ; preds = %74
%77 = and i64 %36, 8589934576
%78 = and i64 %30, 3
%79 = icmp ult i64 %28, 48
br i1 %79, label %123, label %80
80: ; preds = %76
%81 = and i64 %30, 2305843009213693948
br label %82
82: ; preds = %82, %80
%83 = phi i64 [ 0, %80 ], [ %120, %82 ]
%84 = phi i64 [ 0, %80 ], [ %121, %82 ]
%85 = sub i64 %49, %83
%86 = add i64 %85, 4294967295
%87 = and i64 %86, 4294967295
%88 = getelementptr inbounds i8, i8* %8, i64 %87
%89 = bitcast i8* %88 to <16 x i8>*
%90 = load <16 x i8>, <16 x i8>* %89
%91 = getelementptr inbounds i8, i8* %9, i64 %85
%92 = bitcast i8* %91 to <16 x i8>*
store <16 x i8> %90, <16 x i8>* %92
%93 = or i64 %83, 16
%94 = sub i64 %49, %93
%95 = add i64 %94, 4294967295
%96 = and i64 %95, 4294967295
%97 = getelementptr inbounds i8, i8* %10, i64 %96
%98 = bitcast i8* %97 to <16 x i8>*
%99 = load <16 x i8>, <16 x i8>* %98
%100 = getelementptr inbounds i8, i8* %11, i64 %94
%101 = bitcast i8* %100 to <16 x i8>*
store <16 x i8> %99, <16 x i8>* %101
%102 = or i64 %83, 32
%103 = sub i64 %49, %102
%104 = add i64 %103, 4294967295
%105 = and i64 %104, 4294967295
%106 = getelementptr inbounds i8, i8* %12, i64 %105
%107 = bitcast i8* %106 to <16 x i8>*
%108 = load <16 x i8>, <16 x i8>* %107
%109 = getelementptr inbounds i8, i8* %13, i64 %103
%110 = bitcast i8* %109 to <16 x i8>*
store <16 x i8> %108, <16 x i8>* %110
%111 = or i64 %83, 48
%112 = sub i64 %49, %111
%113 = add i64 %112, 4294967295
%114 = and i64 %113, 4294967295
%115 = getelementptr inbounds i8, i8* %14, i64 %114
%116 = bitcast i8* %115 to <16 x i8>*
%117 = load <16 x i8>, <16 x i8>* %116
%118 = getelementptr inbounds i8, i8* %15, i64 %112
%119 = bitcast i8* %118 to <16 x i8>*
store <16 x i8> %117, <16 x i8>* %119
%120 = add nuw i64 %83, 64
%121 = add i64 %84, 4
%122 = icmp eq i64 %121, %81
br i1 %122, label %123, label %82
123: ; preds = %82, %76
%124 = phi i64 [ 0, %76 ], [ %120, %82 ]
%125 = icmp eq i64 %78, 0
br i1 %125, label %140, label %126
126: ; preds = %123, %126
%127 = phi i64 [ %137, %126 ], [ %124, %123 ]
%128 = phi i64 [ %138, %126 ], [ 0, %123 ]
%129 = sub i64 %49, %127
%130 = add i64 %129, 4294967295
%131 = and i64 %130, 4294967295
%132 = getelementptr inbounds i8, i8* %16, i64 %131
%133 = bitcast i8* %132 to <16 x i8>*
%134 = load <16 x i8>, <16 x i8>* %133
%135 = getelementptr inbounds i8, i8* %17, i64 %129
%136 = bitcast i8* %135 to <16 x i8>*
store <16 x i8> %134, <16 x i8>* %136
%137 = add nuw i64 %127, 16
%138 = add i64 %128, 1
%139 = icmp eq i64 %138, %78
br i1 %139, label %140, label %126
140: ; preds = %126, %123
%141 = icmp eq i64 %36, %77
br i1 %141, label %175, label %142
142: ; preds = %140
%143 = sub nsw i64 %49, %77
%144 = and i64 %36, 12
%145 = icmp eq i64 %144, 0
br i1 %145, label %164, label %146
146: ; preds = %74, %142
%147 = phi i64 [ %77, %142 ], [ 0, %74 ]
%148 = and i64 %33, 8589934588
%149 = sub nsw i64 %49, %148
br label %150
150: ; preds = %150, %146
%151 = phi i64 [ %147, %146 ], [ %160, %150 ]
%152 = sub i64 %49, %151
%153 = add i64 %152, 4294967295
%154 = and i64 %153, 4294967295
%155 = getelementptr inbounds i8, i8* %18, i64 %154
%156 = bitcast i8* %155 to <4 x i8>*
%157 = load <4 x i8>, <4 x i8>* %156
%158 = getelementptr inbounds i8, i8* %19, i64 %152
%159 = bitcast i8* %158 to <4 x i8>*
store <4 x i8> %157, <4 x i8>* %159
%160 = add nuw i64 %151, 4
%161 = icmp eq i64 %160, %148
br i1 %161, label %162, label %150
162: ; preds = %150
%163 = icmp eq i64 %33, %148
br i1 %163, label %175, label %164
164: ; preds = %70, %60, %58, %142, %162
%165 = phi i64 [ %49, %58 ], [ %49, %70 ], [ %49, %60 ], [ %143, %142 ], [ %149, %162 ]
br label %166
166: ; preds = %164, %166
%167 = phi i64 [ %168, %166 ], [ %165, %164 ]
%168 = add nsw i64 %167, -1
%169 = and i64 %168, 4294967295
%170 = getelementptr inbounds i8, i8* %0, i64 %169
%171 = load i8, i8* %170
%172 = getelementptr inbounds i8, i8* %0, i64 %167
store i8 %171, i8* %172
%173 = trunc i64 %167 to i32
%174 = icmp sgt i32 %173, 1
br i1 %174, label %166, label %175
175: ; preds = %166, %140, %162, %56
store i8 48, i8* %0
%176 = add nsw i32 %23, 1
%177 = add i32 %21, 1
br label %20
178: ; preds = %53, %50
%179 = getelementptr inbounds i8, i8* %0, i64 %51
%180 = load i8, i8* %179
%181 = icmp eq i8 %180, 57
br i1 %181, label %185, label %182
182: ; preds = %178
%183 = trunc i64 %51 to i32
%184 = add i8 %180, 1
store i8 %184, i8* %179
ret i32 %183
185: ; preds = %178
store i8 48, i8* %179
%186 = add i64 %51, -1
br label %50
}