#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 /*<<< orphan*/ drop(char *, int);
void escapeSeq(char s1[]) {
  int i;
  int escapePlace;
  for (i = 0; s1[i] != '\0'; i++) {
    if (s1[i] == '\\') {
      escapePlace = i + 1;
      if (s1[escapePlace] == 'a') {
        s1[i] = '\a';
        drop(s1, escapePlace);
      } else if (s1[escapePlace] == 'b') {
        s1[i] = '\b';
        drop(s1, i + 1);
      } else if (s1[escapePlace] == 'f') {
        s1[i] = '\f';
        drop(s1, escapePlace);
      } else if (s1[escapePlace] == 'n') {
        s1[i] = '\n';
        drop(s1, escapePlace);
      } else if (s1[escapePlace] == 'r') {
        s1[i] = '\r';
        drop(s1, escapePlace);
      } else if (s1[escapePlace] == 't') {
        s1[i] = '\t';
        drop(s1, escapePlace);
      } else if (s1[escapePlace] == 'v') {
        s1[i] = '\v';
        drop(s1, escapePlace);
      } else if (s1[escapePlace] == '\\') {
        s1[i] = '\\';
        drop(s1, escapePlace);
      } else if (s1[escapePlace] == '\'') {
        s1[i] = '\'';
        drop(s1, escapePlace);
      } else if (s1[escapePlace] == '\"') {
        s1[i] = '\"';
        drop(s1, escapePlace);
      } else if (s1[escapePlace] == '\?') {
        s1[i] = '\?';
        drop(s1, escapePlace);
      }
    }
  }
}


x86 assembly (clang, -O0):
<escapeSeq>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0xc(%rbp)
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
je     13c4 <escapeSeq+0x2b4>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x5c,%eax
jne    13b1 <escapeSeq+0x2a1>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
jne    1188 <escapeSeq+0x78>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movb   $0x7,(%rax,%rcx,1)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%esi
call   1030 <drop@plt>
jmp    13ac <escapeSeq+0x29c>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x62,%eax
jne    11bd <escapeSeq+0xad>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movb   $0x8,(%rax,%rcx,1)
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%esi
add    $0x1,%esi
call   1030 <drop@plt>
jmp    13a7 <escapeSeq+0x297>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x66,%eax
jne    11ef <escapeSeq+0xdf>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movb   $0xc,(%rax,%rcx,1)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%esi
call   1030 <drop@plt>
jmp    13a2 <escapeSeq+0x292>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6e,%eax
jne    1221 <escapeSeq+0x111>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movb   $0xa,(%rax,%rcx,1)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%esi
call   1030 <drop@plt>
jmp    139d <escapeSeq+0x28d>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x72,%eax
jne    1253 <escapeSeq+0x143>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movb   $0xd,(%rax,%rcx,1)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%esi
call   1030 <drop@plt>
jmp    1398 <escapeSeq+0x288>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x74,%eax
jne    1285 <escapeSeq+0x175>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movb   $0x9,(%rax,%rcx,1)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%esi
call   1030 <drop@plt>
jmp    1393 <escapeSeq+0x283>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x76,%eax
jne    12b7 <escapeSeq+0x1a7>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movb   $0xb,(%rax,%rcx,1)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%esi
call   1030 <drop@plt>
jmp    138e <escapeSeq+0x27e>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x5c,%eax
jne    12e9 <escapeSeq+0x1d9>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movb   $0x5c,(%rax,%rcx,1)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%esi
call   1030 <drop@plt>
jmp    1389 <escapeSeq+0x279>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x27,%eax
jne    131b <escapeSeq+0x20b>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movb   $0x27,(%rax,%rcx,1)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%esi
call   1030 <drop@plt>
jmp    1384 <escapeSeq+0x274>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x22,%eax
jne    134d <escapeSeq+0x23d>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movb   $0x22,(%rax,%rcx,1)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%esi
call   1030 <drop@plt>
jmp    137f <escapeSeq+0x26f>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x3f,%eax
jne    137a <escapeSeq+0x26a>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
movb   $0x3f,(%rax,%rcx,1)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%esi
call   1030 <drop@plt>
jmp    137f <escapeSeq+0x26f>
jmp    1384 <escapeSeq+0x274>
jmp    1389 <escapeSeq+0x279>
jmp    138e <escapeSeq+0x27e>
jmp    1393 <escapeSeq+0x283>
jmp    1398 <escapeSeq+0x288>
jmp    139d <escapeSeq+0x28d>
jmp    13a2 <escapeSeq+0x292>
jmp    13a7 <escapeSeq+0x297>
jmp    13ac <escapeSeq+0x29c>
jmp    13b1 <escapeSeq+0x2a1>
jmp    13b6 <escapeSeq+0x2a6>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1123 <escapeSeq+0x13>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<escapeSeq>:
push   %r15
push   %r14
push   %rbx
mov    %rdi,%r14
xor    %ebx,%ebx
lea    0xedf(%rip),%r15
jmp    113a <escapeSeq+0x2a>
movb   $0x7,(%r14,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %r14,%rdi
mov    %ebx,%esi
call   1030 <drop@plt>
mov    %rbx,%rax
movzbl (%r14,%rbx,1),%ecx
cmp    $0x5c,%cl
je     1160 <escapeSeq+0x50>
test   %cl,%cl
je     11cd <escapeSeq+0xbd>
add    $0x1,%rax
mov    %rax,%rbx
jmp    113a <escapeSeq+0x2a>
nopl   0x0(%rax,%rax,1)
lea    0x1(%rax),%rbx
movzbl 0x1(%r14,%rax,1),%ecx
add    $0xde,%cl
cmp    $0x54,%cl
ja     113a <escapeSeq+0x2a>
movzbl %cl,%ecx
movslq (%r15,%rcx,4),%rcx
add    %r15,%rcx
jmp    *%rcx
movb   $0x22,(%r14,%rax,1)
jmp    1130 <escapeSeq+0x20>
movb   $0x27,(%r14,%rax,1)
jmp    1130 <escapeSeq+0x20>
movb   $0x3f,(%r14,%rax,1)
jmp    1130 <escapeSeq+0x20>
movb   $0x5c,(%r14,%rax,1)
jmp    1130 <escapeSeq+0x20>
movb   $0x8,(%r14,%rax,1)
jmp    1130 <escapeSeq+0x20>
movb   $0xc,(%r14,%rax,1)
jmp    1130 <escapeSeq+0x20>
movb   $0xa,(%r14,%rax,1)
jmp    1130 <escapeSeq+0x20>
movb   $0xd,(%r14,%rax,1)
jmp    1130 <escapeSeq+0x20>
movb   $0x9,(%r14,%rax,1)
jmp    1130 <escapeSeq+0x20>
movb   $0xb,(%r14,%rax,1)
jmp    1130 <escapeSeq+0x20>
pop    %rbx
pop    %r14
pop    %r15
ret

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

LLVM IR (-O2):
define void @escapeSeq(i8* %0) {
br label %2
2: ; preds = %8, %1
%3 = phi i64 [ 0, %1 ], [ %9, %8 ]
%4 = getelementptr inbounds i8, i8* %0, i64 %3
%5 = load i8, i8* %4
switch i8 %5, label %6 [
i8 0, label %47
i8 92, label %10
]
6: ; preds = %2
%7 = add nuw i64 %3, 1
br label %8
8: ; preds = %6, %10, %17, %23, %29, %35, %41, %44, %38, %32, %26, %20, %14
%9 = phi i64 [ %7, %6 ], [ %11, %10 ], [ %11, %17 ], [ %11, %23 ], [ %11, %29 ], [ %11, %35 ], [ %11, %41 ], [ %11, %44 ], [ %11, %38 ], [ %11, %32 ], [ %11, %26 ], [ %11, %20 ], [ %11, %14 ]
br label %2
10: ; preds = %2
%11 = add nuw i64 %3, 1
%12 = getelementptr inbounds i8, i8* %0, i64 %11
%13 = load i8, i8* %12
switch i8 %13, label %8 [
i8 97, label %14
i8 98, label %17
i8 102, label %20
i8 110, label %23
i8 114, label %26
i8 116, label %29
i8 118, label %32
i8 92, label %35
i8 39, label %38
i8 34, label %41
i8 63, label %44
]
14: ; preds = %10
store i8 7, i8* %4
%15 = trunc i64 %11 to i32
%16 = tail call i32 @drop(i8* %0, i32 %15)
br label %8
17: ; preds = %10
store i8 8, i8* %4
%18 = trunc i64 %11 to i32
%19 = tail call i32 @drop(i8* %0, i32 %18)
br label %8
20: ; preds = %10
store i8 12, i8* %4
%21 = trunc i64 %11 to i32
%22 = tail call i32 @drop(i8* %0, i32 %21)
br label %8
23: ; preds = %10
store i8 10, i8* %4
%24 = trunc i64 %11 to i32
%25 = tail call i32 @drop(i8* %0, i32 %24)
br label %8
26: ; preds = %10
store i8 13, i8* %4
%27 = trunc i64 %11 to i32
%28 = tail call i32 @drop(i8* %0, i32 %27)
br label %8
29: ; preds = %10
store i8 9, i8* %4
%30 = trunc i64 %11 to i32
%31 = tail call i32 @drop(i8* %0, i32 %30)
br label %8
32: ; preds = %10
store i8 11, i8* %4
%33 = trunc i64 %11 to i32
%34 = tail call i32 @drop(i8* %0, i32 %33)
br label %8
35: ; preds = %10
store i8 92, i8* %4
%36 = trunc i64 %11 to i32
%37 = tail call i32 @drop(i8* %0, i32 %36)
br label %8
38: ; preds = %10
store i8 39, i8* %4
%39 = trunc i64 %11 to i32
%40 = tail call i32 @drop(i8* %0, i32 %39)
br label %8
41: ; preds = %10
store i8 34, i8* %4
%42 = trunc i64 %11 to i32
%43 = tail call i32 @drop(i8* %0, i32 %42)
br label %8
44: ; preds = %10
store i8 63, i8* %4
%45 = trunc i64 %11 to i32
%46 = tail call i32 @drop(i8* %0, i32 %45)
br label %8
47: ; preds = %2
ret void
}