#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 */
typedef int /*<<< orphan*/ num3;

/* Variables and functions */
scalar_t__ EOF;
int /*<<< orphan*/ memset(int *, int /*<<< orphan*/, int);
int /*<<< orphan*/ printf(char *, ...);
scalar_t__ scanf(char *, char **, char **);
int strlen(char *);
int main() {
  char num1[1010], num2[1010];
  int num3[1010], len1, len2, i, j, index;
  while (scanf("%s%s", &num1, &num2) != EOF) {
    memset(num3, 0, sizeof(num3));
    index = 1009;
    len1 = strlen(num1);
    len2 = strlen(num2);
    for (i = len1 - 1, j = len2 - 1; i >= -1, j >= -1;) {
      if (i >= 0 && j >= 0) {
        num3[index] = (num1[i] - '0') + (num2[j] - '0');
        index--;
        i--;
        j--;
      } else if (i == -1 && j >= 0) {
        num3[index] += (num2[j] - '0');
        index--;
        j--;
      } else if (j == -1 && i >= 0) {
        num3[index] += (num1[i] - '0');
        index--;
        i--;
      } else if (i == -1 && j == -1)
        break;
    }
    for (i = 1009; i >= 0; i--) {
      if (num3[i] >= 10) {
        num3[i - 1] += num3[i] / 10;
        num3[i] = num3[i] % 10;
      }
    }
    j = 0;
    for (i = 0; i < 1010; i++) {
      if (j == 0 && !num3[i])
        continue;
      else {
        j = 1;
        printf("%d", num3[i]);
      }
    }
    if (j == 0)
      printf("0");
    printf("\n");
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x17f0,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x400(%rbp),%rsi
lea    -0x800(%rbp),%rdx
lea    0xe99(%rip),%rdi
call   1060 <scanf@plt>
mov    0x2e75(%rip),%rcx
cmp    (%rcx),%rax
je     14b5 <main+0x375>
lea    -0x17d0(%rbp),%rdi
xor    %esi,%esi
mov    $0xfc8,%edx
call   1050 <memset@plt>
movl   $0x3f1,-0x17e4(%rbp)
lea    -0x400(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0x17d4(%rbp)
lea    -0x800(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0x17d8(%rbp)
mov    -0x17d4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x17dc(%rbp)
mov    -0x17d8(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x17e0(%rbp)
cmpl   $0xffffffff,-0x17e0(%rbp)
jl     1363 <main+0x223>
cmpl   $0x0,-0x17dc(%rbp)
jl     1268 <main+0x128>
cmpl   $0x0,-0x17e0(%rbp)
jl     1268 <main+0x128>
movslq -0x17dc(%rbp),%rax
movsbl -0x400(%rbp,%rax,1),%ecx
ff
sub    $0x30,%ecx
movslq -0x17e0(%rbp),%rax
movsbl -0x800(%rbp,%rax,1),%eax
ff
sub    $0x30,%eax
add    %eax,%ecx
movslq -0x17e4(%rbp),%rax
mov    %ecx,-0x17d0(%rbp,%rax,4)
mov    -0x17e4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x17e4(%rbp)
mov    -0x17dc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x17dc(%rbp)
mov    -0x17e0(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x17e0(%rbp)
jmp    135e <main+0x21e>
cmpl   $0xffffffff,-0x17dc(%rbp)
jne    12cc <main+0x18c>
cmpl   $0x0,-0x17e0(%rbp)
jl     12cc <main+0x18c>
movslq -0x17e0(%rbp),%rax
movsbl -0x800(%rbp,%rax,1),%ecx
ff
sub    $0x30,%ecx
movslq -0x17e4(%rbp),%rax
add    -0x17d0(%rbp,%rax,4),%ecx
mov    %ecx,-0x17d0(%rbp,%rax,4)
mov    -0x17e4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x17e4(%rbp)
mov    -0x17e0(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x17e0(%rbp)
jmp    1359 <main+0x219>
cmpl   $0xffffffff,-0x17e0(%rbp)
jne    1330 <main+0x1f0>
cmpl   $0x0,-0x17dc(%rbp)
jl     1330 <main+0x1f0>
movslq -0x17dc(%rbp),%rax
movsbl -0x400(%rbp,%rax,1),%ecx
ff
sub    $0x30,%ecx
movslq -0x17e4(%rbp),%rax
add    -0x17d0(%rbp,%rax,4),%ecx
mov    %ecx,-0x17d0(%rbp,%rax,4)
mov    -0x17e4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x17e4(%rbp)
mov    -0x17dc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x17dc(%rbp)
jmp    1354 <main+0x214>
cmpl   $0xffffffff,-0x17dc(%rbp)
jne    134f <main+0x20f>
cmpl   $0xffffffff,-0x17e0(%rbp)
jne    134f <main+0x20f>
jmp    1363 <main+0x223>
jmp    1354 <main+0x214>
jmp    1359 <main+0x219>
jmp    135e <main+0x21e>
jmp    11db <main+0x9b>
movl   $0x3f1,-0x17dc(%rbp)
cmpl   $0x0,-0x17dc(%rbp)
jl     13fd <main+0x2bd>
movslq -0x17dc(%rbp),%rax
cmpl   $0xa,-0x17d0(%rbp,%rax,4)
0a
jl     13e4 <main+0x2a4>
movslq -0x17dc(%rbp),%rax
mov    -0x17d0(%rbp,%rax,4),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x17dc(%rbp),%eax
sub    $0x1,%eax
cltq
add    -0x17d0(%rbp,%rax,4),%ecx
mov    %ecx,-0x17d0(%rbp,%rax,4)
movslq -0x17dc(%rbp),%rax
mov    -0x17d0(%rbp,%rax,4),%eax
mov    $0xa,%ecx
cltd
idiv   %ecx
movslq -0x17dc(%rbp),%rax
mov    %edx,-0x17d0(%rbp,%rax,4)
jmp    13e9 <main+0x2a9>
mov    -0x17dc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x17dc(%rbp)
jmp    136d <main+0x22d>
movl   $0x0,-0x17e0(%rbp)
movl   $0x0,-0x17dc(%rbp)
cmpl   $0x3f2,-0x17dc(%rbp)
jge    1487 <main+0x347>
cmpl   $0x0,-0x17e0(%rbp)
jne    1448 <main+0x308>
movslq -0x17dc(%rbp),%rax
cmpl   $0x0,-0x17d0(%rbp,%rax,4)
jne    1448 <main+0x308>
jmp    1473 <main+0x333>
movl   $0x1,-0x17e0(%rbp)
movslq -0x17dc(%rbp),%rax
mov    -0x17d0(%rbp,%rax,4),%esi
lea    0xb9e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1473 <main+0x333>
mov    -0x17dc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x17dc(%rbp)
jmp    1411 <main+0x2d1>
cmpl   $0x0,-0x17e0(%rbp)
jne    14a2 <main+0x362>
lea    0xb6d(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xb61(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1152 <main+0x12>
xor    %eax,%eax
add    $0x17f0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x17c8,%rsp
lea    0xe98(%rip),%rdi
lea    0x400(%rsp),%rsi
mov    %rsp,%rdx
call   1070 <scanf@plt>
mov    0x2e69(%rip),%rcx
cmp    (%rcx),%rax
jne    1198 <main+0x48>
xor    %eax,%eax
add    $0x17c8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0x400(%rsp),%r15
mov    %rsp,%r13
mov    $0xcccccccd,%r12d
lea    0xe55(%rip),%rbx
jmp    11e8 <main+0x98>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xe2f(%rip),%rdi
mov    %r15,%rsi
mov    %r13,%rdx
call   1070 <scanf@plt>
mov    0x2e05(%rip),%rcx
cmp    (%rcx),%rax
je     1184 <main+0x34>
lea    0x800(%rsp),%rdi
xor    %esi,%esi
mov    $0xfc8,%edx
call   1060 <memset@plt>
mov    %r15,%rdi
call   1040 <strlen@plt>
mov    %eax,%ebp
mov    %r13,%rdi
call   1040 <strlen@plt>
test   %eax,%eax
js     12f0 <main+0x1a0>
add    $0xffffffff,%eax
add    $0xffffffff,%ebp
mov    $0x3f1,%ecx
jmp    1261 <main+0x111>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %ebp,%edx
movsbl 0x400(%rsp,%rdx,1),%edx
mov    %eax,%esi
movsbl (%rsp,%rsi,1),%esi
add    %esi,%edx
add    $0xffffffa0,%edx
movslq %ecx,%rsi
mov    %edx,0x800(%rsp,%rsi,4)
add    $0xffffffff,%ecx
add    $0xffffffff,%ebp
add    $0xffffffff,%eax
cmp    $0xfffffffe,%eax
jle    12f0 <main+0x1a0>
test   %ebp,%ebp
js     126a <main+0x11a>
cmp    $0xffffffff,%eax
jne    1230 <main+0xe0>
cmp    $0xffffffff,%ebp
jne    12a0 <main+0x150>
cmp    $0xffffffff,%eax
je     12a0 <main+0x150>
mov    %eax,%edx
movsbl (%rsp,%rdx,1),%edx
movslq %ecx,%rsi
mov    0x800(%rsp,%rsi,4),%edi
add    %edi,%edx
add    $0xffffffd0,%edx
mov    %edx,0x800(%rsp,%rsi,4)
add    $0xffffffff,%ecx
add    $0xffffffff,%eax
mov    $0xffffffff,%ebp
jmp    1258 <main+0x108>
nopl   (%rax)
cmp    $0xffffffff,%eax
jne    12d6 <main+0x186>
test   %ebp,%ebp
js     12d6 <main+0x186>
mov    %ebp,%eax
movsbl 0x400(%rsp,%rax,1),%eax
movslq %ecx,%rcx
mov    0x800(%rsp,%rcx,4),%edx
add    %edx,%eax
add    $0xffffffd0,%eax
mov    %eax,0x800(%rsp,%rcx,4)
add    $0xffffffff,%ecx
add    $0xffffffff,%ebp
mov    $0xffffffff,%eax
jmp    1258 <main+0x108>
cmp    $0xffffffff,%ebp
jne    1258 <main+0x108>
cmp    $0xffffffff,%eax
jne    1258 <main+0x108>
nopl   0x0(%rax,%rax,1)
mov    $0x3f1,%eax
jmp    1308 <main+0x1b8>
nopw   0x0(%rax,%rax,1)
test   %rax,%rax
mov    %rcx,%rax
je     1340 <main+0x1f0>
mov    0x800(%rsp,%rax,4),%edx
lea    -0x1(%rax),%rcx
cmp    $0x9,%edx
jle    1300 <main+0x1b0>
mov    %edx,%esi
imul   %r12,%rsi
shr    $0x23,%rsi
add    %esi,0x7fc(%rsp,%rax,4)
add    %esi,%esi
lea    (%rsi,%rsi,4),%esi
sub    %esi,%edx
mov    %edx,0x800(%rsp,%rax,4)
jmp    1300 <main+0x1b0>
nopl   0x0(%rax)
mov    $0x1,%r14b
xor    %ebp,%ebp
jmp    136b <main+0x21b>
nopw   0x0(%rax,%rax,1)
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
add    $0x1,%rbp
cmp    $0x3f2,%rbp
je     11c0 <main+0x70>
mov    %r14d,%eax
mov    0x800(%rsp,%rbp,4),%esi
test   %esi,%esi
sete   %r14b
and    %al,%r14b
cmp    $0x1,%r14b
jne    1350 <main+0x200>
add    $0x1,%rbp
cmp    $0x3f2,%rbp
jne    136b <main+0x21b>
mov    $0x30,%edi
call   1030 <putchar@plt>
jmp    11c0 <main+0x70>

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

LLVM IR (-O2):
@.str = [5 x i8] c"%s%s\00"
@EOF = global i64 0
@.str.1 = [3 x i8] c"%d\00"
define i32 @main() {
%1 = alloca [1010 x i8]
%2 = alloca [1010 x i8]
%3 = alloca [1010 x i32]
%4 = getelementptr inbounds [1010 x i8], [1010 x i8]* %1, i64 0, i64 0
%5 = getelementptr inbounds [1010 x i8], [1010 x i8]* %2, i64 0, i64 0
%6 = bitcast [1010 x i32]* %3 to i8*
%7 = bitcast [1010 x i8]* %1 to i8**
%8 = bitcast [1010 x i8]* %2 to i8**
%9 = call i64 @scanf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i8** %7, i8** %8)
%10 = load i64, i64* @EOF
%11 = icmp eq i64 %9, %10
br i1 %11, label %123, label %12
12: ; preds = %0
%13 = getelementptr inbounds [1010 x i32], [1010 x i32]* %3, i64 0, i64 0
br label %14
14: ; preds = %12, %118
%15 = call i32 @memset(i32* %13, i32 0, i32 4040)
%16 = call i32 @strlen(i8* %4)
%17 = call i32 @strlen(i8* %5)
%18 = icmp sgt i32 %17, -1
br i1 %18, label %19, label %82
19: ; preds = %14
%20 = add nsw i32 %17, -1
%21 = add nsw i32 %16, -1
br label %22
22: ; preds = %19, %77
%23 = phi i32 [ %80, %77 ], [ 1009, %19 ]
%24 = phi i32 [ %79, %77 ], [ %20, %19 ]
%25 = phi i32 [ %78, %77 ], [ %21, %19 ]
%26 = icmp sgt i32 %25, -1
%27 = icmp ne i32 %24, -1
%28 = select i1 %26, i1 %27, i1 false
br i1 %28, label %29, label %45
29: ; preds = %22
%30 = zext i32 %25 to i64
%31 = getelementptr inbounds [1010 x i8], [1010 x i8]* %1, i64 0, i64 %30
%32 = load i8, i8* %31
%33 = sext i8 %32 to i32
%34 = zext i32 %24 to i64
%35 = getelementptr inbounds [1010 x i8], [1010 x i8]* %2, i64 0, i64 %34
%36 = load i8, i8* %35
%37 = sext i8 %36 to i32
%38 = add nsw i32 %33, -96
%39 = add nsw i32 %38, %37
%40 = sext i32 %23 to i64
%41 = getelementptr inbounds [1010 x i32], [1010 x i32]* %3, i64 0, i64 %40
store i32 %39, i32* %41
%42 = add nsw i32 %23, -1
%43 = add nsw i32 %25, -1
%44 = add nsw i32 %24, -1
br label %77
45: ; preds = %22
%46 = icmp eq i32 %25, -1
%47 = select i1 %46, i1 %27, i1 false
br i1 %47, label %48, label %60
48: ; preds = %45
%49 = zext i32 %24 to i64
%50 = getelementptr inbounds [1010 x i8], [1010 x i8]* %2, i64 0, i64 %49
%51 = load i8, i8* %50
%52 = sext i8 %51 to i32
%53 = add nsw i32 %52, -48
%54 = sext i32 %23 to i64
%55 = getelementptr inbounds [1010 x i32], [1010 x i32]* %3, i64 0, i64 %54
%56 = load i32, i32* %55
%57 = add nsw i32 %53, %56
store i32 %57, i32* %55
%58 = add nsw i32 %23, -1
%59 = add nsw i32 %24, -1
br label %77
60: ; preds = %45
%61 = icmp eq i32 %24, -1
%62 = select i1 %61, i1 %26, i1 false
br i1 %62, label %63, label %75
63: ; preds = %60
%64 = zext i32 %25 to i64
%65 = getelementptr inbounds [1010 x i8], [1010 x i8]* %1, i64 0, i64 %64
%66 = load i8, i8* %65
%67 = sext i8 %66 to i32
%68 = add nsw i32 %67, -48
%69 = sext i32 %23 to i64
%70 = getelementptr inbounds [1010 x i32], [1010 x i32]* %3, i64 0, i64 %69
%71 = load i32, i32* %70
%72 = add nsw i32 %68, %71
store i32 %72, i32* %70
%73 = add nsw i32 %23, -1
%74 = add nsw i32 %25, -1
br label %77
75: ; preds = %60
%76 = select i1 %46, i1 %61, i1 false
br i1 %76, label %82, label %77
77: ; preds = %48, %75, %63, %29
%78 = phi i32 [ %43, %29 ], [ -1, %48 ], [ %74, %63 ], [ %25, %75 ]
%79 = phi i32 [ %44, %29 ], [ %59, %48 ], [ -1, %63 ], [ %24, %75 ]
%80 = phi i32 [ %42, %29 ], [ %58, %48 ], [ %73, %63 ], [ %23, %75 ]
%81 = icmp sgt i32 %79, -2
br i1 %81, label %22, label %82
82: ; preds = %77, %75, %14
br label %83
83: ; preds = %82, %97
%84 = phi i64 [ %98, %97 ], [ 1009, %82 ]
%85 = getelementptr inbounds [1010 x i32], [1010 x i32]* %3, i64 0, i64 %84
%86 = load i32, i32* %85
%87 = icmp sgt i32 %86, 9
br i1 %87, label %90, label %88
88: ; preds = %83
%89 = add nsw i64 %84, -1
br label %97
90: ; preds = %83
%91 = udiv i32 %86, 10
%92 = add nsw i64 %84, -1
%93 = getelementptr inbounds [1010 x i32], [1010 x i32]* %3, i64 0, i64 %92
%94 = load i32, i32* %93
%95 = add nsw i32 %94, %91
store i32 %95, i32* %93
%96 = urem i32 %86, 10
store i32 %96, i32* %85
br label %97
97: ; preds = %88, %90
%98 = phi i64 [ %89, %88 ], [ %92, %90 ]
%99 = icmp eq i64 %84, 0
br i1 %99, label %100, label %83
100: ; preds = %97, %110
%101 = phi i64 [ %111, %110 ], [ 0, %97 ]
%102 = phi i1 [ %106, %110 ], [ true, %97 ]
%103 = getelementptr inbounds [1010 x i32], [1010 x i32]* %3, i64 0, i64 %101
%104 = load i32, i32* %103
%105 = icmp eq i32 %104, 0
%106 = select i1 %102, i1 %105, i1 false
br i1 %106, label %107, label %112
107: ; preds = %100
%108 = add nuw nsw i64 %101, 1
%109 = icmp eq i64 %108, 1010
br i1 %109, label %116, label %110
110: ; preds = %107, %112
%111 = phi i64 [ %108, %107 ], [ %114, %112 ]
br label %100
112: ; preds = %100
%113 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32 %104)
%114 = add nuw nsw i64 %101, 1
%115 = icmp eq i64 %114, 1010
br i1 %115, label %118, label %110
116: ; preds = %107
%117 = call i32 @putchar(i32 48)
br label %118
118: ; preds = %112, %116
%119 = call i32 @putchar(i32 10)
%120 = call i64 @scanf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i8** %7, i8** %8)
%121 = load i64, i64* @EOF
%122 = icmp eq i64 %120, %121
br i1 %122, label %123, label %14
123: ; preds = %118, %0
ret i32 0
}