#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 strlen(char *);
long long edflib_get_long_time(char *str) {
  int i, len, hasdot = 0, dotposition = 0, neg = 0;
  long long value = 0, radix;
  if (str[0] == '+') {
    str++;
  } else if (str[0] == '-') {
    neg = 1;
    str++;
  }
  len = strlen(str);
  for (i = 0; i < len; i++) {
    if (str[i] == '.') {
      hasdot = 1;
      dotposition = i;
      break;
    }
  }
  if (hasdot) {
    radix = (10000000LL);
    for (i = dotposition - 1; i >= 0; i--) {
      value += ((long long)(str[i] - 48)) * radix;
      radix *= 10;
    }
    radix = (10000000LL) / 10;
    for (i = dotposition + 1; i < len; i++) {
      value += ((long long)(str[i] - 48)) * radix;
      radix /= 10;
    }
  } else {
    radix = (10000000LL);
    for (i = len - 1; i >= 0; i--) {
      value += ((long long)(str[i] - 48)) * radix;
      radix *= 10;
    }
  }
  if (neg)
    value = -value;
  return value;
}


x86 assembly (clang, -O0):
<edflib_get_long_time>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
movq   $0x0,-0x28(%rbp)
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2b,%eax
jne    115a <edflib_get_long_time+0x4a>
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
jmp    1182 <edflib_get_long_time+0x72>
mov    -0x8(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2d,%eax
jne    117d <edflib_get_long_time+0x6d>
movl   $0x1,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x8(%rbp)
jmp    1182 <edflib_get_long_time+0x72>
mov    -0x8(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0x10(%rbp)
movl   $0x0,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    11db <edflib_get_long_time+0xcb>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
jne    11c8 <edflib_get_long_time+0xb8>
movl   $0x1,-0x14(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x18(%rbp)
jmp    11db <edflib_get_long_time+0xcb>
jmp    11cd <edflib_get_long_time+0xbd>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1195 <edflib_get_long_time+0x85>
cmpl   $0x0,-0x14(%rbp)
je     1295 <edflib_get_long_time+0x185>
movq   $0x989680,-0x30(%rbp)
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xc(%rbp)
cmpl   $0x0,-0xc(%rbp)
jl     1235 <edflib_get_long_time+0x125>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
cltq
imul   -0x30(%rbp),%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
imul   $0xa,-0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0xc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xc(%rbp)
jmp    11f6 <edflib_get_long_time+0xe6>
movq   $0xf4240,-0x30(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1290 <edflib_get_long_time+0x180>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
cltq
imul   -0x30(%rbp),%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x30(%rbp),%rax
mov    $0xa,%ecx
cqto
idiv   %rcx
mov    %rax,-0x30(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1246 <edflib_get_long_time+0x136>
jmp    12ea <edflib_get_long_time+0x1da>
movq   $0x989680,-0x30(%rbp)
mov    -0x10(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xc(%rbp)
cmpl   $0x0,-0xc(%rbp)
jl     12e5 <edflib_get_long_time+0x1d5>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
sub    $0x30,%eax
cltq
imul   -0x30(%rbp),%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
imul   $0xa,-0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0xc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xc(%rbp)
jmp    12a6 <edflib_get_long_time+0x196>
jmp    12ea <edflib_get_long_time+0x1da>
cmpl   $0x0,-0x1c(%rbp)
je     12fe <edflib_get_long_time+0x1ee>
xor    %eax,%eax
sub    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x28(%rbp),%rax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<edflib_get_long_time>:
push   %rbp
push   %r15
push   %r14
push   %rbx
push   %rax
mov    %rdi,%r15
mov    (%rdi),%al
cmp    $0x2d,%al
je     112d <edflib_get_long_time+0x1d>
mov    $0x1,%r14b
cmp    $0x2b,%al
jne    1134 <edflib_get_long_time+0x24>
add    $0x1,%r15
jmp    1134 <edflib_get_long_time+0x24>
add    $0x1,%r15
xor    %r14d,%r14d
mov    %r15,%rdi
call   1030 <strlen@plt>
test   %eax,%eax
jle    11c8 <edflib_get_long_time+0xb8>
mov    %eax,%ebp
cmpb   $0x2e,(%r15)
jne    1156 <edflib_get_long_time+0x46>
mov    $0x1,%cl
xor    %edx,%edx
test   %cl,%cl
jne    1181 <edflib_get_long_time+0x71>
jmp    11b3 <edflib_get_long_time+0xa3>
mov    $0x1,%ecx
nopl   0x0(%rax,%rax,1)
cmp    %rcx,%rbp
je     11a8 <edflib_get_long_time+0x98>
lea    0x1(%rcx),%rdx
cmpb   $0x2e,(%r15,%rcx,1)
mov    %rdx,%rcx
jne    1160 <edflib_get_long_time+0x50>
add    $0xffffffffffffffff,%rdx
cmp    %rbp,%rdx
setb   %cl
test   %cl,%cl
je     11b3 <edflib_get_long_time+0xa3>
test   %edx,%edx
je     11aa <edflib_get_long_time+0x9a>
mov    %edx,%ebp
lea    -0x1(%rdx),%rcx
mov    %edx,%r8d
and    $0x3,%r8d
cmp    $0x3,%rcx
jae    124e <edflib_get_long_time+0x13e>
mov    $0x989680,%edi
xor    %esi,%esi
jmp    12c5 <edflib_get_long_time+0x1b5>
jbe    11b3 <edflib_get_long_time+0xa3>
xor    %edx,%edx
xor    %esi,%esi
jmp    1300 <edflib_get_long_time+0x1f0>
test   %eax,%eax
jle    11c8 <edflib_get_long_time+0xb8>
cmp    $0x1,%eax
jne    11cf <edflib_get_long_time+0xbf>
mov    $0x989680,%eax
xor    %esi,%esi
mov    %rbp,%rcx
jmp    1228 <edflib_get_long_time+0x118>
xor    %esi,%esi
jmp    13be <edflib_get_long_time+0x2ae>
mov    $0xffffffff,%edx
mov    %ebp,%edi
and    $0xfffffffe,%edi
mov    $0x989680,%eax
xor    %esi,%esi
mov    %rbp,%rcx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    (%rcx,%rdx,1),%ebx
movsbq (%r15,%rbx,1),%rbx
add    $0xffffffffffffffd0,%rbx
imul   %rax,%rbx
add    %rsi,%rbx
add    $0xfffffffffffffffe,%rcx
mov    %ecx,%esi
movsbq (%r15,%rsi,1),%rsi
add    $0xffffffffffffffd0,%rsi
imul   %rax,%rsi
lea    (%rsi,%rsi,4),%rsi
lea    (%rbx,%rsi,2),%rsi
imul   $0x64,%rax,%rax
add    $0xfffffffffffffffe,%rdi
jne    11f0 <edflib_get_long_time+0xe0>
test   $0x1,%bpl
je     13be <edflib_get_long_time+0x2ae>
mov    $0xffffffff,%edx
add    %edx,%ecx
movsbq (%r15,%rcx,1),%rcx
add    $0xffffffffffffffd0,%rcx
imul   %rax,%rcx
add    %rcx,%rsi
jmp    13be <edflib_get_long_time+0x2ae>
mov    %rdx,%rcx
and    $0xfffffffffffffffc,%rcx
mov    $0x989680,%edi
xor    %esi,%esi
nopl   0x0(%rax)
movsbq -0x1(%r15,%rbp,1),%rbx
add    $0xffffffffffffffd0,%rbx
imul   %rdi,%rbx
add    %rsi,%rbx
movsbq -0x2(%r15,%rbp,1),%rsi
add    $0xffffffffffffffd0,%rsi
imul   %rdi,%rsi
lea    (%rsi,%rsi,4),%rsi
lea    (%rbx,%rsi,2),%rsi
movsbq -0x3(%r15,%rbp,1),%rbx
add    $0xffffffffffffffd0,%rbx
imul   %rdi,%rbx
imul   $0x64,%rbx,%rbx
add    %rsi,%rbx
movsbq -0x4(%r15,%rbp,1),%rsi
add    $0xffffffffffffffd0,%rsi
imul   %rdi,%rsi
add    $0xfffffffffffffffc,%rbp
imul   $0x3e8,%rsi,%rsi
add    %rbx,%rsi
imul   $0x2710,%rdi,%rdi
add    $0xfffffffffffffffc,%rcx
jne    1260 <edflib_get_long_time+0x150>
test   %r8,%r8
je     1300 <edflib_get_long_time+0x1f0>
lea    (%r15,%rbp,1),%r9
add    $0xffffffffffffffff,%r9
neg    %r8
xor    %ebp,%ebp
nopw   0x0(%rax,%rax,1)
movsbq (%r9,%rbp,1),%rcx
add    $0xffffffffffffffd0,%rcx
imul   %rdi,%rcx
add    %rcx,%rsi
add    %rdi,%rdi
lea    (%rdi,%rdi,4),%rdi
add    $0xffffffffffffffff,%rbp
cmp    %rbp,%r8
jne    12e0 <edflib_get_long_time+0x1d0>
lea    0x1(%rdx),%ecx
cmp    %eax,%ecx
jge    13be <edflib_get_long_time+0x2ae>
mov    %edx,%edi
add    $0x1,%rdi
mov    %edx,%r8d
not    %r8d
add    %eax,%r8d
add    $0xfffffffe,%eax
cmp    %edx,%eax
jne    132b <edflib_get_long_time+0x21b>
mov    $0xf4240,%edx
jmp    13a8 <edflib_get_long_time+0x298>
mov    %r8d,%ebp
and    $0xfffffffe,%ebp
mov    $0xf4240,%ecx
movabs $0x6666666666666667,%r9
66 66 66
movabs $0xa3d70a3d70a3d70b,%r10
0a d7 a3
nopw   0x0(%rax,%rax,1)
movsbq (%r15,%rdi,1),%rbx
add    $0xffffffffffffffd0,%rbx
imul   %rcx,%rbx
mov    %rcx,%rax
imul   %r9
add    %rsi,%rbx
mov    %rdx,%rax
shr    $0x3f,%rax
sar    $0x2,%rdx
add    %rax,%rdx
movsbq 0x1(%r15,%rdi,1),%rsi
add    $0xffffffffffffffd0,%rsi
imul   %rdx,%rsi
add    %rbx,%rsi
mov    %rcx,%rax
imul   %r10
add    %rcx,%rdx
mov    %rdx,%rax
shr    $0x3f,%rax
sar    $0x6,%rdx
add    %rax,%rdx
add    $0x2,%rdi
mov    %rdx,%rcx
add    $0xfffffffe,%ebp
jne    1350 <edflib_get_long_time+0x240>
test   $0x1,%r8b
je     13be <edflib_get_long_time+0x2ae>
movsbq (%r15,%rdi,1),%rax
add    $0xffffffffffffffd0,%rax
imul   %rdx,%rax
add    %rax,%rsi
mov    %rsi,%rax
neg    %rax
test   %r14b,%r14b
cmovne %rsi,%rax
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i64 @edflib_get_long_time(i8* %0) {
%2 = alloca i8*
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i64
%9 = alloca i64
store i8* %0, i8** %2
store i32 0, i32* %5
store i32 0, i32* %6
store i32 0, i32* %7
store i64 0, i64* %8
%10 = load i8*, i8** %2
%11 = getelementptr inbounds i8, i8* %10, i64 0
%12 = load i8, i8* %11
%13 = sext i8 %12 to i32
%14 = icmp eq i32 %13, 43
br i1 %14, label %15, label %18
15: ; preds = %1
%16 = load i8*, i8** %2
%17 = getelementptr inbounds i8, i8* %16, i32 1
store i8* %17, i8** %2
br label %28
18: ; preds = %1
%19 = load i8*, i8** %2
%20 = getelementptr inbounds i8, i8* %19, i64 0
%21 = load i8, i8* %20
%22 = sext i8 %21 to i32
%23 = icmp eq i32 %22, 45
br i1 %23, label %24, label %27
24: ; preds = %18
store i32 1, i32* %7
%25 = load i8*, i8** %2
%26 = getelementptr inbounds i8, i8* %25, i32 1
store i8* %26, i8** %2
br label %27
27: ; preds = %24, %18
br label %28
28: ; preds = %27, %15
%29 = load i8*, i8** %2
%30 = call i32 @strlen(i8* %29)
store i32 %30, i32* %4
store i32 0, i32* %3
br label %31
31: ; preds = %46, %28
%32 = load i32, i32* %3
%33 = load i32, i32* %4
%34 = icmp slt i32 %32, %33
br i1 %34, label %35, label %49
35: ; preds = %31
%36 = load i8*, i8** %2
%37 = load i32, i32* %3
%38 = sext i32 %37 to i64
%39 = getelementptr inbounds i8, i8* %36, i64 %38
%40 = load i8, i8* %39
%41 = sext i8 %40 to i32
%42 = icmp eq i32 %41, 46
br i1 %42, label %43, label %45
43: ; preds = %35
store i32 1, i32* %5
%44 = load i32, i32* %3
store i32 %44, i32* %6
br label %49
45: ; preds = %35
br label %46
46: ; preds = %45
%47 = load i32, i32* %3
%48 = add nsw i32 %47, 1
store i32 %48, i32* %3
br label %31
49: ; preds = %43, %31
%50 = load i32, i32* %5
%51 = icmp ne i32 %50, 0
br i1 %51, label %52, label %102
52: ; preds = %49
store i64 10000000, i64* %9
%53 = load i32, i32* %6
%54 = sub nsw i32 %53, 1
store i32 %54, i32* %3
br label %55
55: ; preds = %73, %52
%56 = load i32, i32* %3
%57 = icmp sge i32 %56, 0
br i1 %57, label %58, label %76
58: ; preds = %55
%59 = load i8*, i8** %2
%60 = load i32, i32* %3
%61 = sext i32 %60 to i64
%62 = getelementptr inbounds i8, i8* %59, i64 %61
%63 = load i8, i8* %62
%64 = sext i8 %63 to i32
%65 = sub nsw i32 %64, 48
%66 = sext i32 %65 to i64
%67 = load i64, i64* %9
%68 = mul nsw i64 %66, %67
%69 = load i64, i64* %8
%70 = add nsw i64 %69, %68
store i64 %70, i64* %8
%71 = load i64, i64* %9
%72 = mul nsw i64 %71, 10
store i64 %72, i64* %9
br label %73
73: ; preds = %58
%74 = load i32, i32* %3
%75 = add nsw i32 %74, -1
store i32 %75, i32* %3
br label %55
76: ; preds = %55
store i64 1000000, i64* %9
%77 = load i32, i32* %6
%78 = add nsw i32 %77, 1
store i32 %78, i32* %3
br label %79
79: ; preds = %98, %76
%80 = load i32, i32* %3
%81 = load i32, i32* %4
%82 = icmp slt i32 %80, %81
br i1 %82, label %83, label %101
83: ; preds = %79
%84 = load i8*, i8** %2
%85 = load i32, i32* %3
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds i8, i8* %84, i64 %86
%88 = load i8, i8* %87
%89 = sext i8 %88 to i32
%90 = sub nsw i32 %89, 48
%91 = sext i32 %90 to i64
%92 = load i64, i64* %9
%93 = mul nsw i64 %91, %92
%94 = load i64, i64* %8
%95 = add nsw i64 %94, %93
store i64 %95, i64* %8
%96 = load i64, i64* %9
%97 = sdiv i64 %96, 10
store i64 %97, i64* %9
br label %98
98: ; preds = %83
%99 = load i32, i32* %3
%100 = add nsw i32 %99, 1
store i32 %100, i32* %3
br label %79
101: ; preds = %79
br label %127
102: ; preds = %49
store i64 10000000, i64* %9
%103 = load i32, i32* %4
%104 = sub nsw i32 %103, 1
store i32 %104, i32* %3
br label %105
105: ; preds = %123, %102
%106 = load i32, i32* %3
%107 = icmp sge i32 %106, 0
br i1 %107, label %108, label %126
108: ; preds = %105
%109 = load i8*, i8** %2
%110 = load i32, i32* %3
%111 = sext i32 %110 to i64
%112 = getelementptr inbounds i8, i8* %109, i64 %111
%113 = load i8, i8* %112
%114 = sext i8 %113 to i32
%115 = sub nsw i32 %114, 48
%116 = sext i32 %115 to i64
%117 = load i64, i64* %9
%118 = mul nsw i64 %116, %117
%119 = load i64, i64* %8
%120 = add nsw i64 %119, %118
store i64 %120, i64* %8
%121 = load i64, i64* %9
%122 = mul nsw i64 %121, 10
store i64 %122, i64* %9
br label %123
123: ; preds = %108
%124 = load i32, i32* %3
%125 = add nsw i32 %124, -1
store i32 %125, i32* %3
br label %105
126: ; preds = %105
br label %127
127: ; preds = %126, %101
%128 = load i32, i32* %7
%129 = icmp ne i32 %128, 0
br i1 %129, label %130, label %133
130: ; preds = %127
%131 = load i64, i64* %8
%132 = sub nsw i64 0, %131
store i64 %132, i64* %8
br label %133
133: ; preds = %130, %127
%134 = load i64, i64* %8
ret i64 %134
}

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