#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 EOF;
int getchar();
int /*<<< orphan*/ putchar(int);
int main() {
  int c, d, i, c1;
  static int latin1[] = {
      ('8' << 8) | '0',  ('8' << 8) | '1',   ('8' << 8) | '2',
      ('8' << 8) | '3',  ('8' << 8) | '4',   ('8' << 8) | '5',
      ('8' << 8) | '6',  ('8' << 8) | '7',   ('8' << 8) | '8',
      ('8' << 8) | '9',  ('8' << 8) | 'A',   ('8' << 8) | 'B',
      ('8' << 8) | 'C',  ('8' << 8) | 'D',   ('8' << 8) | 'E',
      ('8' << 8) | 'F',  ('9' << 8) | '0',   ('9' << 8) | '1',
      ('9' << 8) | '2',  ('9' << 8) | '3',   ('9' << 8) | '4',
      ('9' << 8) | '5',  ('9' << 8) | '6',   ('9' << 8) | '7',
      ('9' << 8) | '8',  ('9' << 8) | '9',   ('9' << 8) | 'A',
      ('9' << 8) | 'B',  ('9' << 8) | 'C',   ('9' << 8) | 'D',
      ('9' << 8) | 'E',  ('9' << 8) | 'F',   ('\0' << 8) | ' ',
      ('!' << 8) | '!',  ('c' << 8) | '|',   ('L' << 8) | '-',
      ('x' << 8) | 'o',  ('Y' << 8) | '-',   ('|' << 8) | '|',
      ('s' << 8) | 'o',  ('"' << 8) | '"',   ('c' << 8) | 'o',
      ('a' << 8) | '_',  ('<' << 8) | '<',   ('-' << 8) | ',',
      ('-' << 8) | '-',  ('r' << 8) | 'o',   ('-' << 8) | '^',
      ('0' << 8) | '^',  ('+' << 8) | '-',   ('2' << 8) | '^',
      ('3' << 8) | '^',  ('\0' << 8) | '\'', ('/' << 8) | 'u',
      ('P' << 8) | '!',  ('.' << 8) | '^',   (',' << 8) | ',',
      ('1' << 8) | '^',  ('o' << 8) | '_',   ('>' << 8) | '>',
      ('1' << 8) | '4',  ('1' << 8) | '2',   ('3' << 8) | '4',
      ('?' << 8) | '?',  ('A' << 8) | '`',   ('A' << 8) | '\'',
      ('A' << 8) | '^',  ('A' << 8) | '~',   ('A' << 8) | '"',
      ('A' << 8) | '*',  ('A' << 8) | 'E',   ('C' << 8) | ',',
      ('E' << 8) | '`',  ('E' << 8) | '\'',  ('E' << 8) | '^',
      ('E' << 8) | '"',  ('I' << 8) | '`',   ('I' << 8) | '\'',
      ('I' << 8) | '^',  ('I' << 8) | '"',   ('D' << 8) | '-',
      ('N' << 8) | '~',  ('O' << 8) | '`',   ('O' << 8) | '\'',
      ('O' << 8) | '^',  ('O' << 8) | '~',   ('O' << 8) | '"',
      ('x' << 8) | 'x',  ('O' << 8) | '/',   ('U' << 8) | '`',
      ('U' << 8) | '\'', ('U' << 8) | '^',   ('U' << 8) | '"',
      ('Y' << 8) | '\'', ('T' << 8) | 'H',   ('s' << 8) | 's',
      ('a' << 8) | '`',  ('a' << 8) | '\'',  ('a' << 8) | '^',
      ('a' << 8) | '~',  ('a' << 8) | '"',   ('a' << 8) | '*',
      ('a' << 8) | 'e',  ('c' << 8) | ',',   ('e' << 8) | '`',
      ('e' << 8) | '\'', ('e' << 8) | '^',   ('e' << 8) | '"',
      ('i' << 8) | '`',  ('i' << 8) | '\'',  ('i' << 8) | '^',
      ('i' << 8) | '"',  ('d' << 8) | '-',   ('n' << 8) | '~',
      ('o' << 8) | '`',  ('o' << 8) | '\'',  ('o' << 8) | '^',
      ('o' << 8) | '~',  ('o' << 8) | '"',   ('-' << 8) | ':',
      ('o' << 8) | '/',  ('u' << 8) | '`',   ('u' << 8) | '\'',
      ('u' << 8) | '^',  ('u' << 8) | '"',   ('y' << 8) | '\'',
      ('t' << 8) | 'h',  ('y' << 8) | '"'};
  while ((c = getchar()) != EOF) {
    if (c == '\\') {
      if ((c = getchar()) == '(') {
        c1 = getchar();
        c = getchar();
      } else
        c1 = '\0';
      d = (c1 << 8) | c;
      for (i = 0; i < (signed long)(sizeof latin1 / sizeof latin1[0]); i++)
        if (d == latin1[i])
          break;
      if (i >= (signed long)(sizeof latin1 / sizeof latin1[0])) {
        putchar('\\');
        if (c1 != '\0') {
          putchar('(');
          putchar(c1);
        }
      } else
        c = i + 0200;
    }
    putchar(c);
  }
  return (0);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0x0,%al
call   1040 <getchar@plt>
mov    %eax,-0x8(%rbp)
mov    0x2ea8(%rip),%rcx
cmp    (%rcx),%eax
je     122f <main+0x10f>
cmpl   $0x5c,-0x8(%rbp)
jne    1222 <main+0x102>
mov    $0x0,%al
call   1040 <getchar@plt>
mov    %eax,-0x8(%rbp)
cmp    $0x28,%eax
jne    117e <main+0x5e>
mov    $0x0,%al
call   1040 <getchar@plt>
mov    %eax,-0x14(%rbp)
mov    $0x0,%al
call   1040 <getchar@plt>
mov    %eax,-0x8(%rbp)
jmp    1185 <main+0x65>
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
shl    $0x8,%eax
or     -0x8(%rbp),%eax
mov    %eax,-0xc(%rbp)
movl   $0x0,-0x10(%rbp)
movslq -0x10(%rbp),%rax
cmp    $0x80,%rax
jge    11d7 <main+0xb7>
mov    -0xc(%rbp),%eax
movslq -0x10(%rbp),%rdx
lea    0x2e8a(%rip),%rcx
cmp    (%rcx,%rdx,4),%eax
jne    11c4 <main+0xa4>
jmp    11d7 <main+0xb7>
jmp    11c9 <main+0xa9>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1198 <main+0x78>
movslq -0x10(%rbp),%rax
cmp    $0x80,%rax
jl     1212 <main+0xf2>
mov    $0x5c,%edi
call   1030 <putchar@plt>
cmpl   $0x0,-0x14(%rbp)
je     120d <main+0xed>
mov    $0x28,%edi
call   1030 <putchar@plt>
mov    -0x14(%rbp),%edi
call   1030 <putchar@plt>
jmp    121d <main+0xfd>
mov    -0x10(%rbp),%eax
add    $0x80,%eax
mov    %eax,-0x8(%rbp)
jmp    1222 <main+0x102>
mov    -0x8(%rbp),%edi
call   1030 <putchar@plt>
jmp    112f <main+0xf>
xor    %eax,%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %rbx
push   %rax
xor    %eax,%eax
call   1040 <getchar@plt>
mov    0x2eb3(%rip),%r14
cmp    (%r14),%eax
jne    1147 <main+0x27>
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret
mov    %eax,%ebx
lea    0xeb0(%rip),%rbp
jmp    1170 <main+0x50>
add    $0x1,%rax
sub    $0xffffff80,%eax
mov    %eax,%ebx
mov    %ebx,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
call   1040 <getchar@plt>
mov    %eax,%ebx
cmp    (%r14),%eax
je     113a <main+0x1a>
cmp    $0x5c,%ebx
jne    115b <main+0x3b>
xor    %r15d,%r15d
xor    %eax,%eax
call   1040 <getchar@plt>
mov    %eax,%ebx
cmp    $0x28,%eax
jne    1199 <main+0x79>
xor    %eax,%eax
call   1040 <getchar@plt>
mov    %eax,%r15d
xor    %eax,%eax
call   1040 <getchar@plt>
mov    %eax,%ebx
mov    %r15d,%ecx
shl    $0x8,%ecx
or     %ebx,%ecx
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cmp    0x0(%rbp,%rax,4),%ecx
je     1156 <main+0x36>
cmp    0x4(%rbp,%rax,4),%ecx
je     1152 <main+0x32>
cmp    0x8(%rbp,%rax,4),%ecx
je     11fe <main+0xde>
cmp    0xc(%rbp,%rax,4),%ecx
je     1207 <main+0xe7>
add    $0x4,%rax
cmp    $0x80,%rax
jne    11b0 <main+0x90>
mov    $0x5c,%edi
call   1030 <putchar@plt>
test   %r15d,%r15d
je     115b <main+0x3b>
mov    $0x28,%edi
call   1030 <putchar@plt>
mov    %r15d,%edi
call   1030 <putchar@plt>
jmp    115b <main+0x3b>
add    $0x2,%rax
jmp    1156 <main+0x36>
add    $0x3,%rax
jmp    1156 <main+0x36>

LLVM IR (-O0):
@main.latin1 = internal global [128 x i32] [i32 14384, i32 14385, i32 14386, i32 14387, i32 14388, i32 14389, i32 14390, i32 14391, i32 14392, i32 14393, i32 14401, i32 14402, i32 14403, i32 14404, i32 14405, i32 14406, i32 14640, i32 14641, i32 14642, i32 14643, i32 14644, i32 14645, i32 14646, i32 14647, i32 14648, i32 14649, i32 14657, i32 14658, i32 14659, i32 14660, i32 14661, i32 14662, i32 32, i32 8481, i32 25468, i32 19501, i32 30831, i32 22829, i32 31868, i32 29551, i32 8738, i32 25455, i32 24927, i32 15420, i32 11564, i32 11565, i32 29295, i32 11614, i32 12382, i32 11053, i32 12894, i32 13150, i32 39, i32 12149, i32 20513, i32 11870, i32 11308, i32 12638, i32 28511, i32 15934, i32 12596, i32 12594, i32 13108, i32 16191, i32 16736, i32 16679, i32 16734, i32 16766, i32 16674, i32 16682, i32 16709, i32 17196, i32 17760, i32 17703, i32 17758, i32 17698, i32 18784, i32 18727, i32 18782, i32 18722, i32 17453, i32 20094, i32 20320, i32 20263, i32 20318, i32 20350, i32 20258, i32 30840, i32 20271, i32 21856, i32 21799, i32 21854, i32 21794, i32 22823, i32 21576, i32 29555, i32 24928, i32 24871, i32 24926, i32 24958, i32 24866, i32 24874, i32 24933, i32 25388, i32 25952, i32 25895, i32 25950, i32 25890, i32 26976, i32 26919, i32 26974, i32 26914, i32 25645, i32 28286, i32 28512, i32 28455, i32 28510, i32 28542, i32 28450, i32 11578, i32 28463, i32 30048, i32 29991, i32 30046, i32 29986, i32 31015, i32 29800, i32 31010]
@EOF = global i32 0
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
store i32 0, i32* %1
br label %6
6: ; preds = %58, %0
%7 = call i32 (...) @getchar()
store i32 %7, i32* %2
%8 = load i32, i32* @EOF
%9 = icmp ne i32 %7, %8
br i1 %9, label %10, label %61
10: ; preds = %6
%11 = load i32, i32* %2
%12 = icmp eq i32 %11, 92
br i1 %12, label %13, label %58
13: ; preds = %10
%14 = call i32 (...) @getchar()
store i32 %14, i32* %2
%15 = icmp eq i32 %14, 40
br i1 %15, label %16, label %19
16: ; preds = %13
%17 = call i32 (...) @getchar()
store i32 %17, i32* %5
%18 = call i32 (...) @getchar()
store i32 %18, i32* %2
br label %20
19: ; preds = %13
store i32 0, i32* %5
br label %20
20: ; preds = %19, %16
%21 = load i32, i32* %5
%22 = shl i32 %21, 8
%23 = load i32, i32* %2
%24 = or i32 %22, %23
store i32 %24, i32* %3
store i32 0, i32* %4
br label %25
25: ; preds = %38, %20
%26 = load i32, i32* %4
%27 = sext i32 %26 to i64
%28 = icmp slt i64 %27, 128
br i1 %28, label %29, label %41
29: ; preds = %25
%30 = load i32, i32* %3
%31 = load i32, i32* %4
%32 = sext i32 %31 to i64
%33 = getelementptr inbounds [128 x i32], [128 x i32]* @main.latin1, i64 0, i64 %32
%34 = load i32, i32* %33
%35 = icmp eq i32 %30, %34
br i1 %35, label %36, label %37
36: ; preds = %29
br label %41
37: ; preds = %29
br label %38
38: ; preds = %37
%39 = load i32, i32* %4
%40 = add nsw i32 %39, 1
store i32 %40, i32* %4
br label %25
41: ; preds = %36, %25
%42 = load i32, i32* %4
%43 = sext i32 %42 to i64
%44 = icmp sge i64 %43, 128
br i1 %44, label %45, label %54
45: ; preds = %41
%46 = call i32 @putchar(i32 92)
%47 = load i32, i32* %5
%48 = icmp ne i32 %47, 0
br i1 %48, label %49, label %53
49: ; preds = %45
%50 = call i32 @putchar(i32 40)
%51 = load i32, i32* %5
%52 = call i32 @putchar(i32 %51)
br label %53
53: ; preds = %49, %45
br label %57
54: ; preds = %41
%55 = load i32, i32* %4
%56 = add nsw i32 %55, 128
store i32 %56, i32* %2
br label %57
57: ; preds = %54, %53
br label %58
58: ; preds = %57, %10
%59 = load i32, i32* %2
%60 = call i32 @putchar(i32 %59)
br label %6
61: ; preds = %6
ret i32 0
}

LLVM IR (-O2):
@main.latin1 = internal unnamed_addr constant [128 x i32] [i32 14384, i32 14385, i32 14386, i32 14387, i32 14388, i32 14389, i32 14390, i32 14391, i32 14392, i32 14393, i32 14401, i32 14402, i32 14403, i32 14404, i32 14405, i32 14406, i32 14640, i32 14641, i32 14642, i32 14643, i32 14644, i32 14645, i32 14646, i32 14647, i32 14648, i32 14649, i32 14657, i32 14658, i32 14659, i32 14660, i32 14661, i32 14662, i32 32, i32 8481, i32 25468, i32 19501, i32 30831, i32 22829, i32 31868, i32 29551, i32 8738, i32 25455, i32 24927, i32 15420, i32 11564, i32 11565, i32 29295, i32 11614, i32 12382, i32 11053, i32 12894, i32 13150, i32 39, i32 12149, i32 20513, i32 11870, i32 11308, i32 12638, i32 28511, i32 15934, i32 12596, i32 12594, i32 13108, i32 16191, i32 16736, i32 16679, i32 16734, i32 16766, i32 16674, i32 16682, i32 16709, i32 17196, i32 17760, i32 17703, i32 17758, i32 17698, i32 18784, i32 18727, i32 18782, i32 18722, i32 17453, i32 20094, i32 20320, i32 20263, i32 20318, i32 20350, i32 20258, i32 30840, i32 20271, i32 21856, i32 21799, i32 21854, i32 21794, i32 22823, i32 21576, i32 29555, i32 24928, i32 24871, i32 24926, i32 24958, i32 24866, i32 24874, i32 24933, i32 25388, i32 25952, i32 25895, i32 25950, i32 25890, i32 26976, i32 26919, i32 26974, i32 26914, i32 25645, i32 28286, i32 28512, i32 28455, i32 28510, i32 28542, i32 28450, i32 11578, i32 28463, i32 30048, i32 29991, i32 30046, i32 29986, i32 31015, i32 29800, i32 31010]
@EOF = global i32 0
define i32 @main() {
%1 = tail call i32 (...) @getchar()
%2 = load i32, i32* @EOF
%3 = icmp eq i32 %1, %2
br i1 %3, label %57, label %4
4: ; preds = %0, %51
%5 = phi i32 [ %54, %51 ], [ %1, %0 ]
%6 = icmp eq i32 %5, 92
br i1 %6, label %7, label %51
7: ; preds = %4
%8 = tail call i32 (...) @getchar()
%9 = icmp eq i32 %8, 40
br i1 %9, label %10, label %13
10: ; preds = %7
%11 = tail call i32 (...) @getchar()
%12 = tail call i32 (...) @getchar()
br label %13
13: ; preds = %7, %10
%14 = phi i32 [ %12, %10 ], [ %8, %7 ]
%15 = phi i32 [ %11, %10 ], [ 0, %7 ]
%16 = shl i32 %15, 8
%17 = or i32 %16, %14
br label %18
18: ; preds = %38, %13
%19 = phi i64 [ 0, %13 ], [ %39, %38 ]
%20 = getelementptr inbounds [128 x i32], [128 x i32]* @main.latin1, i64 0, i64 %19
%21 = load i32, i32* %20
%22 = icmp eq i32 %17, %21
br i1 %22, label %47, label %23
23: ; preds = %18
%24 = or i64 %19, 1
%25 = getelementptr inbounds [128 x i32], [128 x i32]* @main.latin1, i64 0, i64 %24
%26 = load i32, i32* %25
%27 = icmp eq i32 %17, %26
br i1 %27, label %47, label %28
28: ; preds = %23
%29 = or i64 %19, 2
%30 = getelementptr inbounds [128 x i32], [128 x i32]* @main.latin1, i64 0, i64 %29
%31 = load i32, i32* %30
%32 = icmp eq i32 %17, %31
br i1 %32, label %47, label %33
33: ; preds = %28
%34 = or i64 %19, 3
%35 = getelementptr inbounds [128 x i32], [128 x i32]* @main.latin1, i64 0, i64 %34
%36 = load i32, i32* %35
%37 = icmp eq i32 %17, %36
br i1 %37, label %47, label %38
38: ; preds = %33
%39 = add nuw nsw i64 %19, 4
%40 = icmp eq i64 %39, 128
br i1 %40, label %41, label %18
41: ; preds = %38
%42 = tail call i32 @putchar(i32 92)
%43 = icmp eq i32 %15, 0
br i1 %43, label %51, label %44
44: ; preds = %41
%45 = tail call i32 @putchar(i32 40)
%46 = tail call i32 @putchar(i32 %15)
br label %51
47: ; preds = %33, %28, %23, %18
%48 = phi i64 [ %19, %18 ], [ %24, %23 ], [ %29, %28 ], [ %34, %33 ]
%49 = trunc i64 %48 to i32
%50 = add nuw nsw i32 %49, 128
br label %51
51: ; preds = %47, %44, %41, %4
%52 = phi i32 [ %14, %44 ], [ %14, %41 ], [ %50, %47 ], [ %5, %4 ]
%53 = tail call i32 @putchar(i32 %52)
%54 = tail call i32 (...) @getchar()
%55 = load i32, i32* @EOF
%56 = icmp eq i32 %54, %55
br i1 %56, label %57, label %4
57: ; preds = %51, %0
ret i32 0
}