#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 */
scalar_t__ prec(char);
void paraPosfixa(const char *exp, char *out) {
  char p[1024];
  int i, o = 0, t = -1;
  char c;
  for (i = 0; exp[i] != '\n' && exp[i] != '\0'; i++) {
    c = exp[i];
    if (c == ' ')
      continue;
    if (c == '(') {
      p[++t] = c;
    } else if (c == ')') {
      while (t > -1 && p[t] != '(') {
        out[o++] = p[t--];
      }
      t--;
    } else if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') ||
               (c >= 'A' && c <= 'Z')) {
      out[o++] = c;
    } else {
      while (t > -1 && p[t] != '(' && prec(p[t]) >= prec(c)) {
        out[o++] = p[t--];
      }
      p[++t] = c;
    }
  }
  while (t > -1)
    out[o++] = p[t--];
  out[o++] = '\0';
}


x86 assembly (clang, -O0):
<paraPosfixa>:
push   %rbp
mov    %rsp,%rbp
sub    $0x430,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0x418(%rbp)
movl   $0xffffffff,-0x41c(%rbp)
ff ff ff
movl   $0x0,-0x414(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x414(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0xa,%ecx
mov    %al,-0x41e(%rbp)
je     117c <paraPosfixa+0x6c>
mov    -0x8(%rbp),%rax
movslq -0x414(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
setne  %al
mov    %al,-0x41e(%rbp)
mov    -0x41e(%rbp),%al
test   $0x1,%al
jne    118f <paraPosfixa+0x7f>
jmp    141c <paraPosfixa+0x30c>
mov    -0x8(%rbp),%rax
movslq -0x414(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x41d(%rbp)
movsbl -0x41d(%rbp),%eax
cmp    $0x20,%eax
jne    11b8 <paraPosfixa+0xa8>
jmp    1408 <paraPosfixa+0x2f8>
movsbl -0x41d(%rbp),%eax
cmp    $0x28,%eax
jne    11eb <paraPosfixa+0xdb>
mov    -0x41d(%rbp),%cl
mov    -0x41c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x41c(%rbp)
cltq
mov    %cl,-0x410(%rbp,%rax,1)
jmp    1403 <paraPosfixa+0x2f3>
movsbl -0x41d(%rbp),%eax
cmp    $0x29,%eax
jne    1291 <paraPosfixa+0x181>
jmp    1200 <paraPosfixa+0xf0>
xor    %eax,%eax
cmpl   $0xffffffff,-0x41c(%rbp)
mov    %al,-0x41f(%rbp)
jle    1230 <paraPosfixa+0x120>
movslq -0x41c(%rbp),%rax
movsbl -0x410(%rbp,%rax,1),%eax
ff
cmp    $0x28,%eax
setne  %al
mov    %al,-0x41f(%rbp)
mov    -0x41f(%rbp),%al
test   $0x1,%al
jne    1243 <paraPosfixa+0x133>
jmp    127d <paraPosfixa+0x16d>
mov    -0x41c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x41c(%rbp)
cltq
mov    -0x410(%rbp,%rax,1),%dl
mov    -0x10(%rbp),%rax
mov    -0x418(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x418(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    1200 <paraPosfixa+0xf0>
mov    -0x41c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x41c(%rbp)
jmp    13fe <paraPosfixa+0x2ee>
movsbl -0x41d(%rbp),%eax
cmp    $0x30,%eax
jl     12b1 <paraPosfixa+0x1a1>
movsbl -0x41d(%rbp),%eax
cmp    $0x39,%eax
jle    12f1 <paraPosfixa+0x1e1>
movsbl -0x41d(%rbp),%eax
cmp    $0x61,%eax
jl     12d1 <paraPosfixa+0x1c1>
movsbl -0x41d(%rbp),%eax
cmp    $0x7a,%eax
jle    12f1 <paraPosfixa+0x1e1>
movsbl -0x41d(%rbp),%eax
cmp    $0x41,%eax
jl     1317 <paraPosfixa+0x207>
movsbl -0x41d(%rbp),%eax
cmp    $0x5a,%eax
jg     1317 <paraPosfixa+0x207>
mov    -0x41d(%rbp),%dl
mov    -0x10(%rbp),%rax
mov    -0x418(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x418(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    13f9 <paraPosfixa+0x2e9>
jmp    131c <paraPosfixa+0x20c>
xor    %eax,%eax
cmpl   $0xffffffff,-0x41c(%rbp)
mov    %al,-0x420(%rbp)
jle    138e <paraPosfixa+0x27e>
movslq -0x41c(%rbp),%rax
movsbl -0x410(%rbp,%rax,1),%ecx
ff
xor    %eax,%eax
cmp    $0x28,%ecx
mov    %al,-0x420(%rbp)
je     138e <paraPosfixa+0x27e>
movslq -0x41c(%rbp),%rax
movsbl -0x410(%rbp,%rax,1),%edi
ff
call   1030 <prec@plt>
mov    %rax,-0x428(%rbp)
movsbl -0x41d(%rbp),%edi
call   1030 <prec@plt>
mov    %rax,%rcx
mov    -0x428(%rbp),%rax
cmp    %rcx,%rax
setge  %al
mov    %al,-0x420(%rbp)
mov    -0x420(%rbp),%al
test   $0x1,%al
jne    13a1 <paraPosfixa+0x291>
jmp    13db <paraPosfixa+0x2cb>
mov    -0x41c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x41c(%rbp)
cltq
mov    -0x410(%rbp,%rax,1),%dl
mov    -0x10(%rbp),%rax
mov    -0x418(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x418(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    131c <paraPosfixa+0x20c>
mov    -0x41d(%rbp),%cl
mov    -0x41c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x41c(%rbp)
cltq
mov    %cl,-0x410(%rbp,%rax,1)
jmp    13fe <paraPosfixa+0x2ee>
jmp    1403 <paraPosfixa+0x2f3>
jmp    1408 <paraPosfixa+0x2f8>
mov    -0x414(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x414(%rbp)
jmp    1141 <paraPosfixa+0x31>
jmp    1421 <paraPosfixa+0x311>
cmpl   $0xffffffff,-0x41c(%rbp)
jle    1468 <paraPosfixa+0x358>
mov    -0x41c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x41c(%rbp)
cltq
mov    -0x410(%rbp,%rax,1),%dl
mov    -0x10(%rbp),%rax
mov    -0x418(%rbp),%ecx
mov    %ecx,%esi
add    $0x1,%esi
mov    %esi,-0x418(%rbp)
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
jmp    1421 <paraPosfixa+0x311>
mov    -0x10(%rbp),%rax
mov    -0x418(%rbp),%ecx
mov    %ecx,%edx
add    $0x1,%edx
mov    %edx,-0x418(%rbp)
movslq %ecx,%rcx
movb   $0x0,(%rax,%rcx,1)
add    $0x430,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<paraPosfixa>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x428,%rsp
mov    $0xffffffff,%ebp
xor    %r9d,%r9d
lea    0xed0(%rip),%r10
xor    %ebx,%ebx
mov    %rsi,0x8(%rsp)
mov    %rdi,(%rsp)
jmp    1166 <paraPosfixa+0x56>
mov    %ebx,%eax
mov    0x8(%rsp),%rsi
mov    (%rsp),%rdi
mov    0x10(%rsp),%r9
lea    0xeac(%rip),%r10
movslq %ebp,%rbp
mov    %r14b,0x21(%rsp,%rbp,1)
add    $0x1,%rbp
mov    %eax,%ebx
add    $0x1,%r9
movzbl (%rdi,%r9,1),%r14d
cmp    $0x29,%r14
ja     1190 <paraPosfixa+0x80>
movslq (%r10,%r14,4),%rax
add    %r10,%rax
jmp    *%rax
movslq %ebp,%rbp
movb   $0x28,0x21(%rsp,%rbp,1)
add    $0x1,%rbp
add    $0x1,%r9
jmp    1166 <paraPosfixa+0x56>
nopl   0x0(%rax)
lea    -0x30(%r14),%eax
cmp    $0xa,%al
jb     12a7 <paraPosfixa+0x197>
lea    -0x61(%r14),%eax
cmp    $0x1a,%al
jb     12a7 <paraPosfixa+0x197>
lea    -0x41(%r14),%eax
cmp    $0x1a,%al
jb     12a7 <paraPosfixa+0x197>
test   %ebp,%ebp
js     12ba <paraPosfixa+0x1aa>
mov    %r9,0x10(%rsp)
movslq %ebx,%r15
lea    (%rbx,%rbp,1),%eax
add    $0x1,%eax
mov    %eax,0x1c(%rsp)
add    %rsi,%r15
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %ebp,%eax
movzbl 0x20(%rsp,%rax,1),%r13d
cmp    $0x28,%r13b
je     113d <paraPosfixa+0x2d>
movsbl %r13b,%edi
call   1030 <prec@plt>
mov    %rax,%r12
movsbl %r14b,%edi
call   1030 <prec@plt>
cmp    %rax,%r12
jl     113d <paraPosfixa+0x2d>
lea    -0x1(%rbp),%eax
mov    %r13b,(%r15)
add    $0x1,%ebx
add    $0x1,%r15
test   %ebp,%ebp
mov    %eax,%ebp
jg     11e0 <paraPosfixa+0xd0>
mov    $0xffffffff,%ebp
mov    0x8(%rsp),%rsi
mov    (%rsp),%rdi
mov    0x10(%rsp),%r9
lea    0xdc3(%rip),%r10
mov    0x1c(%rsp),%eax
jmp    1154 <paraPosfixa+0x44>
cs nopw 0x0(%rax,%rax,1)
test   %ebp,%ebp
js     1295 <paraPosfixa+0x185>
movslq %ebx,%rcx
lea    (%rcx,%rbp,1),%r8d
add    $0x1,%r8d
add    %rsi,%rcx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %ebp,%edx
movzbl 0x20(%rsp,%rdx,1),%edx
cmp    $0x28,%dl
je     1295 <paraPosfixa+0x185>
lea    -0x1(%rbp),%eax
mov    %dl,(%rcx)
add    $0x1,%ebx
add    $0x1,%rcx
test   %ebp,%ebp
mov    %eax,%ebp
jg     1270 <paraPosfixa+0x160>
mov    $0xffffffff,%ebp
jmp    1298 <paraPosfixa+0x188>
mov    %ebx,%r8d
add    $0xffffffff,%ebp
mov    %r8d,%ebx
add    $0x1,%r9
jmp    1166 <paraPosfixa+0x56>
movslq %ebx,%rax
add    $0x1,%ebx
mov    %r14b,(%rsi,%rax,1)
add    $0x1,%r9
jmp    1166 <paraPosfixa+0x56>
mov    %ebx,%eax
jmp    1154 <paraPosfixa+0x44>
test   %ebp,%ebp
js     13b5 <paraPosfixa+0x2a5>
mov    %ebp,%eax
movslq %ebx,%rcx
cmp    $0x1f,%ebp
jae    12db <paraPosfixa+0x1cb>
mov    %rcx,%rbx
jmp    1393 <paraPosfixa+0x283>
lea    0x1(%rax),%r8
mov    %r8,%r9
and    $0xffffffffffffffe0,%r9
lea    (%r9,%rcx,1),%rbx
mov    %r9,%rdx
neg    %rdx
lea    (%rsp,%rax,1),%rdi
add    $0x11,%rdi
sub    %r9,%rax
lea    (%rsi,%rcx,1),%rbp
add    $0x10,%rbp
xor    %ecx,%ecx
pxor   %xmm0,%xmm0
nopl   0x0(%rax)
movdqu -0x10(%rdi,%rcx,1),%xmm1
movdqu (%rdi,%rcx,1),%xmm2
movdqa %xmm2,%xmm3
punpcklbw %xmm0,%xmm3
pshufd $0x4e,%xmm3,%xmm3
pshuflw $0x1b,%xmm3,%xmm3
pshufhw $0x1b,%xmm3,%xmm3
punpckhbw %xmm0,%xmm2
pshufd $0x4e,%xmm2,%xmm2
pshuflw $0x1b,%xmm2,%xmm2
pshufhw $0x1b,%xmm2,%xmm2
packuswb %xmm3,%xmm2
movdqa %xmm1,%xmm3
punpcklbw %xmm0,%xmm3
pshufd $0x4e,%xmm3,%xmm3
pshuflw $0x1b,%xmm3,%xmm3
pshufhw $0x1b,%xmm3,%xmm3
punpckhbw %xmm0,%xmm1
pshufd $0x4e,%xmm1,%xmm1
pshuflw $0x1b,%xmm1,%xmm1
pshufhw $0x1b,%xmm1,%xmm1
packuswb %xmm3,%xmm1
movdqu %xmm2,-0x10(%rbp)
movdqu %xmm1,0x0(%rbp)
add    $0xffffffffffffffe0,%rcx
add    $0x20,%rbp
cmp    %rcx,%rdx
jne    1310 <paraPosfixa+0x200>
cmp    %r9,%r8
je     13b5 <paraPosfixa+0x2a5>
mov    %rbx,%rcx
cs nopw 0x0(%rax,%rax,1)
lea    0x1(%rcx),%rbx
movzbl 0x20(%rsp,%rax,1),%edx
mov    %dl,(%rsi,%rcx,1)
mov    %rbx,%rcx
add    $0xffffffffffffffff,%rax
jb     13a0 <paraPosfixa+0x290>
movslq %ebx,%rax
movb   $0x0,(%rsi,%rax,1)
add    $0x428,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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