#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*/ E2BIG;
int EFAULT;
int /*<<< orphan*/ ccache_path();
int /*<<< orphan*/ errno;
int libc_execve(int /*<<< orphan*/, char **, char **);
int /*<<< orphan*/ strlen(char *);
scalar_t__ strncmp(char *, char *, int /*<<< orphan*/);
int ccache_exec(const char *path, char *const argv[], char *const envv[]) {
  int retval;
  char *new_envv[4096];
  char *new_argv[4096];
  char **sp = (char **)envv;
  char **dp = (char **)new_envv;
  while (*sp != NULL) {
    if ((dp - new_envv) >= 4096) {
      errno = E2BIG;
      return -1;
    }
    if (strncmp(*sp, "LD_PRELOAD", strlen("LD_PRELOAD")) == 0) {
    } else if (strncmp(*sp, "CCACHE_DIR", strlen("CCACHE_DIR")) == 0) {
    } else {
      *dp++ = *sp;
    }
    sp++;
  }
  *dp = NULL;
  sp = (char **)argv;
  dp = (char **)new_argv;
  *dp++ = ccache_path();
  *dp++ = (char *)path;
  if (*sp == NULL) {
    return EFAULT;
  }
  sp++;
  while (*sp != NULL) {
    if ((dp - new_argv) >= 4096) {
      errno = E2BIG;
      return -1;
    }
    *dp++ = *sp++;
  }
  *dp = NULL;
  ;
  retval = libc_execve(ccache_path(), new_argv, new_envv);
  if (retval != 0) {
    ;
    ;
    dp = new_argv;
    while (*dp != NULL) {
      ;
    }
    dp = new_envv;
    while (*dp != NULL) {
      ;
    }
  }
  return retval;
}


x86 assembly (clang, -O0):
<ccache_exec>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10050,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x10038(%rbp)
lea    -0x8030(%rbp),%rax
mov    %rax,-0x10040(%rbp)
mov    -0x10038(%rbp),%rax
cmpq   $0x0,(%rax)
je     1280 <ccache_exec+0x140>
mov    -0x10040(%rbp),%rax
lea    -0x8030(%rbp),%rcx
sub    %rcx,%rax
sar    $0x3,%rax
cmp    $0x1000,%rax
jl     11c0 <ccache_exec+0x80>
mov    0x2e37(%rip),%rax
mov    (%rax),%ecx
mov    0x2e1e(%rip),%rax
mov    %ecx,(%rax)
movl   $0xffffffff,-0x4(%rbp)
jmp    1428 <ccache_exec+0x2e8>
mov    -0x10038(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x10048(%rbp)
lea    0xe28(%rip),%rdi
call   1040 <strlen@plt>
mov    -0x10048(%rbp),%rdi
mov    %eax,%edx
lea    0xe13(%rip),%rsi
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1201 <ccache_exec+0xc1>
jmp    1269 <ccache_exec+0x129>
mov    -0x10038(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x10050(%rbp)
lea    0xdf2(%rip),%rdi
call   1040 <strlen@plt>
mov    -0x10050(%rbp),%rdi
mov    %eax,%edx
lea    0xddd(%rip),%rsi
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1242 <ccache_exec+0x102>
jmp    1264 <ccache_exec+0x124>
mov    -0x10038(%rbp),%rax
mov    (%rax),%rcx
mov    -0x10040(%rbp),%rax
mov    %rax,%rdx
add    $0x8,%rdx
mov    %rdx,-0x10040(%rbp)
mov    %rcx,(%rax)
jmp    1269 <ccache_exec+0x129>
mov    -0x10038(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x10038(%rbp)
jmp    1170 <ccache_exec+0x30>
mov    -0x10040(%rbp),%rax
movq   $0x0,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,-0x10038(%rbp)
lea    -0x10030(%rbp),%rax
mov    %rax,-0x10040(%rbp)
mov    $0x0,%al
call   1050 <ccache_path@plt>
movslq %eax,%rcx
mov    -0x10040(%rbp),%rax
mov    %rax,%rdx
add    $0x8,%rdx
mov    %rdx,-0x10040(%rbp)
mov    %rcx,(%rax)
mov    -0x10(%rbp),%rcx
mov    -0x10040(%rbp),%rax
mov    %rax,%rdx
add    $0x8,%rdx
mov    %rdx,-0x10040(%rbp)
mov    %rcx,(%rax)
mov    -0x10038(%rbp),%rax
cmpq   $0x0,(%rax)
jne    1307 <ccache_exec+0x1c7>
mov    0x2cfb(%rip),%rax
mov    (%rax),%eax
mov    %eax,-0x4(%rbp)
jmp    1428 <ccache_exec+0x2e8>
mov    -0x10038(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x10038(%rbp)
mov    -0x10038(%rbp),%rax
cmpq   $0x0,(%rax)
je     139e <ccache_exec+0x25e>
mov    -0x10040(%rbp),%rax
lea    -0x10030(%rbp),%rcx
sub    %rcx,%rax
sar    $0x3,%rax
cmp    $0x1000,%rax
jl     1369 <ccache_exec+0x229>
mov    0x2c8e(%rip),%rax
mov    (%rax),%ecx
mov    0x2c75(%rip),%rax
mov    %ecx,(%rax)
movl   $0xffffffff,-0x4(%rbp)
jmp    1428 <ccache_exec+0x2e8>
mov    -0x10038(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x10038(%rbp)
mov    (%rax),%rcx
mov    -0x10040(%rbp),%rax
mov    %rax,%rdx
add    $0x8,%rdx
mov    %rdx,-0x10040(%rbp)
mov    %rcx,(%rax)
jmp    1319 <ccache_exec+0x1d9>
mov    -0x10040(%rbp),%rax
movq   $0x0,(%rax)
mov    $0x0,%al
call   1050 <ccache_path@plt>
mov    %eax,%edi
lea    -0x10030(%rbp),%rsi
lea    -0x8030(%rbp),%rdx
call   1060 <libc_execve@plt>
mov    %eax,-0x24(%rbp)
cmpl   $0x0,-0x24(%rbp)
je     1422 <ccache_exec+0x2e2>
lea    -0x10030(%rbp),%rax
mov    %rax,-0x10040(%rbp)
mov    -0x10040(%rbp),%rax
cmpq   $0x0,(%rax)
je     13f9 <ccache_exec+0x2b9>
jmp    13e3 <ccache_exec+0x2a3>
lea    -0x8030(%rbp),%rax
mov    %rax,-0x10040(%rbp)
mov    -0x10040(%rbp),%rax
cmpq   $0x0,(%rax)
je     141d <ccache_exec+0x2dd>
jmp    1407 <ccache_exec+0x2c7>
jmp    1422 <ccache_exec+0x2e2>
mov    -0x24(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x10050,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ccache_exec>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x10018,%rsp
mov    %rsi,0x8(%rsp)
mov    %rdi,(%rsp)
mov    (%rdx),%rbp
test   %rbp,%rbp
je     11f2 <ccache_exec+0xb2>
mov    %rdx,%rbx
lea    0x8010(%rsp),%r15
lea    0xe88(%rip),%r12
lea    0xe8c(%rip),%r13
mov    %r15,%r14
jmp    119d <ccache_exec+0x5d>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    0x8(%rbx),%rbp
add    $0x8,%rbx
test   %rbp,%rbp
je     11fa <ccache_exec+0xba>
mov    %r14,%rax
sub    %r15,%rax
cmp    $0x7ff9,%rax
jge    12a9 <ccache_exec+0x169>
mov    %r12,%rdi
call   1040 <strlen@plt>
mov    %rbp,%rdi
mov    %r12,%rsi
mov    %eax,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1190 <ccache_exec+0x50>
mov    (%rbx),%rbp
mov    %r13,%rdi
call   1040 <strlen@plt>
mov    %rbp,%rdi
mov    %r13,%rsi
mov    %eax,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1190 <ccache_exec+0x50>
mov    (%rbx),%rax
mov    %rax,(%r14)
add    $0x8,%r14
jmp    1190 <ccache_exec+0x50>
lea    0x8010(%rsp),%r14
movq   $0x0,(%r14)
xor    %eax,%eax
call   1050 <ccache_path@plt>
cltq
mov    %rax,0x10(%rsp)
mov    (%rsp),%rax
mov    %rax,0x18(%rsp)
mov    0x8(%rsp),%rsi
cmpq   $0x0,(%rsi)
je     12c5 <ccache_exec+0x185>
mov    0x8(%rsi),%rcx
test   %rcx,%rcx
je     12d0 <ccache_exec+0x190>
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
mov    %rcx,0x20(%rsp,%rax,1)
mov    0x10(%rsi,%rax,1),%rcx
test   %rcx,%rcx
je     12d7 <ccache_exec+0x197>
mov    %rcx,0x28(%rsp,%rax,1)
mov    0x18(%rsi,%rax,1),%rcx
test   %rcx,%rcx
je     12e0 <ccache_exec+0x1a0>
mov    %rcx,0x30(%rsp,%rax,1)
mov    0x20(%rsi,%rax,1),%rcx
test   %rcx,%rcx
je     12e9 <ccache_exec+0x1a9>
mov    %rcx,0x38(%rsp,%rax,1)
mov    0x28(%rsi,%rax,1),%rcx
test   %rcx,%rcx
je     12f2 <ccache_exec+0x1b2>
lea    0x30(%rax),%rdx
cmp    $0x7ff8,%rdx
ja     12a9 <ccache_exec+0x169>
mov    %rcx,0x40(%rsp,%rax,1)
mov    0x30(%rsi,%rax,1),%rcx
add    $0x28,%rax
test   %rcx,%rcx
jne    1240 <ccache_exec+0x100>
add    %rsp,%rax
add    $0x20,%rax
jmp    12f9 <ccache_exec+0x1b9>
mov    0x2d30(%rip),%rax
mov    (%rax),%eax
mov    0x2d17(%rip),%rcx
mov    %eax,(%rcx)
mov    $0xffffffff,%ebx
jmp    1344 <ccache_exec+0x204>
mov    0x2d2c(%rip),%rax
mov    (%rax),%ebx
jmp    1344 <ccache_exec+0x204>
lea    0x20(%rsp),%rax
jmp    12f9 <ccache_exec+0x1b9>
add    %rsp,%rax
add    $0x28,%rax
jmp    12f9 <ccache_exec+0x1b9>
add    %rsp,%rax
add    $0x30,%rax
jmp    12f9 <ccache_exec+0x1b9>
add    %rsp,%rax
add    $0x38,%rax
jmp    12f9 <ccache_exec+0x1b9>
add    %rsp,%rax
add    $0x40,%rax
movq   $0x0,(%rax)
xor    %ebx,%ebx
xor    %eax,%eax
call   1050 <ccache_path@plt>
lea    0x10(%rsp),%rsi
lea    0x8010(%rsp),%rdx
mov    %eax,%edi
call   1060 <libc_execve@plt>
test   %eax,%eax
je     1344 <ccache_exec+0x204>
cmpq   $0x0,0x10(%rsp)
je     1332 <ccache_exec+0x1f2>
nopl   0x0(%rax)
jmp    1330 <ccache_exec+0x1f0>
cmpq   $0x0,0x8010(%rsp)
je     1342 <ccache_exec+0x202>
nopl   (%rax)
jmp    1340 <ccache_exec+0x200>
mov    %eax,%ebx
mov    %ebx,%eax
add    $0x10018,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@E2BIG = global i32 0
@errno = global i32 0
@.str = [11 x i8] c"LD_PRELOAD\00"
@.str.1 = [11 x i8] c"CCACHE_DIR\00"
@EFAULT = global i32 0
define i32 @ccache_exec(i8* %0, i8** %1, i8** %2) {
%4 = alloca i32
%5 = alloca i8*
%6 = alloca i8**
%7 = alloca i8**
%8 = alloca i32
%9 = alloca [4096 x i8*]
%10 = alloca [4096 x i8*]
%11 = alloca i8**
%12 = alloca i8**
store i8* %0, i8** %5
store i8** %1, i8*** %6
store i8** %2, i8*** %7
%13 = load i8**, i8*** %7
store i8** %13, i8*** %11
%14 = getelementptr inbounds [4096 x i8*], [4096 x i8*]* %9, i64 0, i64 0
store i8** %14, i8*** %12
br label %15
15: ; preds = %49, %3
%16 = load i8**, i8*** %11
%17 = load i8*, i8** %16
%18 = icmp ne i8* %17, null
br i1 %18, label %19, label %52
19: ; preds = %15
%20 = load i8**, i8*** %12
%21 = getelementptr inbounds [4096 x i8*], [4096 x i8*]* %9, i64 0, i64 0
%22 = ptrtoint i8** %20 to i64
%23 = ptrtoint i8** %21 to i64
%24 = sub i64 %22, %23
%25 = sdiv exact i64 %24, 8
%26 = icmp sge i64 %25, 4096
br i1 %26, label %27, label %29
27: ; preds = %19
%28 = load i32, i32* @E2BIG
store i32 %28, i32* @errno
store i32 -1, i32* %4
br label %117
29: ; preds = %19
%30 = load i8**, i8*** %11
%31 = load i8*, i8** %30
%32 = call i32 @strlen(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0))
%33 = call i64 @strncmp(i8* %31, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i32 %32)
%34 = icmp eq i64 %33, 0
br i1 %34, label %35, label %36
35: ; preds = %29
br label %49
36: ; preds = %29
%37 = load i8**, i8*** %11
%38 = load i8*, i8** %37
%39 = call i32 @strlen(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0))
%40 = call i64 @strncmp(i8* %38, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 %39)
%41 = icmp eq i64 %40, 0
br i1 %41, label %42, label %43
42: ; preds = %36
br label %48
43: ; preds = %36
%44 = load i8**, i8*** %11
%45 = load i8*, i8** %44
%46 = load i8**, i8*** %12
%47 = getelementptr inbounds i8*, i8** %46, i32 1
store i8** %47, i8*** %12
store i8* %45, i8** %46
br label %48
48: ; preds = %43, %42
br label %49
49: ; preds = %48, %35
%50 = load i8**, i8*** %11
%51 = getelementptr inbounds i8*, i8** %50, i32 1
store i8** %51, i8*** %11
br label %15
52: ; preds = %15
%53 = load i8**, i8*** %12
store i8* null, i8** %53
%54 = load i8**, i8*** %6
store i8** %54, i8*** %11
%55 = getelementptr inbounds [4096 x i8*], [4096 x i8*]* %10, i64 0, i64 0
store i8** %55, i8*** %12
%56 = call i32 (...) @ccache_path()
%57 = sext i32 %56 to i64
%58 = inttoptr i64 %57 to i8*
%59 = load i8**, i8*** %12
%60 = getelementptr inbounds i8*, i8** %59, i32 1
store i8** %60, i8*** %12
store i8* %58, i8** %59
%61 = load i8*, i8** %5
%62 = load i8**, i8*** %12
%63 = getelementptr inbounds i8*, i8** %62, i32 1
store i8** %63, i8*** %12
store i8* %61, i8** %62
%64 = load i8**, i8*** %11
%65 = load i8*, i8** %64
%66 = icmp eq i8* %65, null
br i1 %66, label %67, label %69
67: ; preds = %52
%68 = load i32, i32* @EFAULT
store i32 %68, i32* %4
br label %117
69: ; preds = %52
%70 = load i8**, i8*** %11
%71 = getelementptr inbounds i8*, i8** %70, i32 1
store i8** %71, i8*** %11
br label %72
72: ; preds = %86, %69
%73 = load i8**, i8*** %11
%74 = load i8*, i8** %73
%75 = icmp ne i8* %74, null
br i1 %75, label %76, label %92
76: ; preds = %72
%77 = load i8**, i8*** %12
%78 = getelementptr inbounds [4096 x i8*], [4096 x i8*]* %10, i64 0, i64 0
%79 = ptrtoint i8** %77 to i64
%80 = ptrtoint i8** %78 to i64
%81 = sub i64 %79, %80
%82 = sdiv exact i64 %81, 8
%83 = icmp sge i64 %82, 4096
br i1 %83, label %84, label %86
84: ; preds = %76
%85 = load i32, i32* @E2BIG
store i32 %85, i32* @errno
store i32 -1, i32* %4
br label %117
86: ; preds = %76
%87 = load i8**, i8*** %11
%88 = getelementptr inbounds i8*, i8** %87, i32 1
store i8** %88, i8*** %11
%89 = load i8*, i8** %87
%90 = load i8**, i8*** %12
%91 = getelementptr inbounds i8*, i8** %90, i32 1
store i8** %91, i8*** %12
store i8* %89, i8** %90
br label %72
92: ; preds = %72
%93 = load i8**, i8*** %12
store i8* null, i8** %93
%94 = call i32 (...) @ccache_path()
%95 = getelementptr inbounds [4096 x i8*], [4096 x i8*]* %10, i64 0, i64 0
%96 = getelementptr inbounds [4096 x i8*], [4096 x i8*]* %9, i64 0, i64 0
%97 = call i32 @libc_execve(i32 %94, i8** %95, i8** %96)
store i32 %97, i32* %8
%98 = load i32, i32* %8
%99 = icmp ne i32 %98, 0
br i1 %99, label %100, label %115
100: ; preds = %92
%101 = getelementptr inbounds [4096 x i8*], [4096 x i8*]* %10, i64 0, i64 0
store i8** %101, i8*** %12
br label %102
102: ; preds = %106, %100
%103 = load i8**, i8*** %12
%104 = load i8*, i8** %103
%105 = icmp ne i8* %104, null
br i1 %105, label %106, label %107
106: ; preds = %102
br label %102
107: ; preds = %102
%108 = getelementptr inbounds [4096 x i8*], [4096 x i8*]* %9, i64 0, i64 0
store i8** %108, i8*** %12
br label %109
109: ; preds = %113, %107
%110 = load i8**, i8*** %12
%111 = load i8*, i8** %110
%112 = icmp ne i8* %111, null
br i1 %112, label %113, label %114
113: ; preds = %109
br label %109
114: ; preds = %109
br label %115
115: ; preds = %114, %92
%116 = load i32, i32* %8
store i32 %116, i32* %4
br label %117
117: ; preds = %115, %84, %67, %27
%118 = load i32, i32* %4
ret i32 %118
}

LLVM IR (-O2):
@E2BIG = global i32 0
@errno = global i32 0
@.str = [11 x i8] c"LD_PRELOAD\00"
@.str.1 = [11 x i8] c"CCACHE_DIR\00"
@EFAULT = global i32 0
define i32 @ccache_exec(i8* %0, i8** nocapture %1, i8** nocapture %2) {
%4 = alloca [4096 x i8*]
%5 = alloca [4096 x i8*]
%6 = bitcast [4096 x i8*]* %4 to i8*
%7 = bitcast [4096 x i8*]* %5 to i8*
%8 = getelementptr inbounds [4096 x i8*], [4096 x i8*]* %4, i64 0, i64 0
%9 = load i8*, i8** %2
%10 = icmp eq i8* %9, null
br i1 %10, label %39, label %11
11: ; preds = %3
%12 = ptrtoint [4096 x i8*]* %4 to i64
br label %13
13: ; preds = %11, %34
%14 = phi i8* [ %9, %11 ], [ %37, %34 ]
%15 = phi i8** [ %8, %11 ], [ %35, %34 ]
%16 = phi i8** [ %2, %11 ], [ %36, %34 ]
%17 = ptrtoint i8** %15 to i64
%18 = sub i64 %17, %12
%19 = icmp sgt i64 %18, 32760
br i1 %19, label %20, label %22
20: ; preds = %13
%21 = load i32, i32* @E2BIG
store i32 %21, i32* @errno
br label %104
22: ; preds = %13
%23 = call i32 @strlen(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0))
%24 = call i64 @strncmp(i8* %14, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str, i64 0, i64 0), i32 %23)
%25 = icmp eq i64 %24, 0
br i1 %25, label %34, label %26
26: ; preds = %22
%27 = load i8*, i8** %16
%28 = call i32 @strlen(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0))
%29 = call i64 @strncmp(i8* %27, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0), i32 %28)
%30 = icmp eq i64 %29, 0
br i1 %30, label %34, label %31
31: ; preds = %26
%32 = load i8*, i8** %16
%33 = getelementptr inbounds i8*, i8** %15, i64 1
store i8* %32, i8** %15
br label %34
34: ; preds = %31, %26, %22
%35 = phi i8** [ %15, %22 ], [ %15, %26 ], [ %33, %31 ]
%36 = getelementptr inbounds i8*, i8** %16, i64 1
%37 = load i8*, i8** %36
%38 = icmp eq i8* %37, null
br i1 %38, label %39, label %13
39: ; preds = %34, %3
%40 = phi i8** [ %8, %3 ], [ %35, %34 ]
store i8* null, i8** %40
%41 = getelementptr inbounds [4096 x i8*], [4096 x i8*]* %5, i64 0, i64 0
%42 = call i32 (...) @ccache_path()
%43 = sext i32 %42 to i64
%44 = inttoptr i64 %43 to i8*
%45 = getelementptr inbounds [4096 x i8*], [4096 x i8*]* %5, i64 0, i64 1
store i8* %44, i8** %41
store i8* %0, i8** %45
%46 = load i8*, i8** %1
%47 = icmp eq i8* %46, null
br i1 %47, label %48, label %50
48: ; preds = %39
%49 = load i32, i32* @EFAULT
br label %104
50: ; preds = %39
%51 = getelementptr inbounds [4096 x i8*], [4096 x i8*]* %5, i64 0, i64 2
%52 = getelementptr inbounds i8*, i8** %1, i64 1
%53 = load i8*, i8** %52
%54 = icmp eq i8* %53, null
br i1 %54, label %91, label %55
55: ; preds = %50
%56 = ptrtoint [4096 x i8*]* %5 to i64
br label %57
57: ; preds = %86, %55
%58 = phi i8* [ %53, %55 ], [ %89, %86 ]
%59 = phi i8** [ %1, %55 ], [ %79, %86 ]
%60 = phi i8** [ %51, %55 ], [ %87, %86 ]
%61 = getelementptr inbounds i8*, i8** %60, i64 1
store i8* %58, i8** %60
%62 = getelementptr inbounds i8*, i8** %59, i64 2
%63 = load i8*, i8** %62
%64 = icmp eq i8* %63, null
br i1 %64, label %91, label %67
65: ; preds = %82
%66 = load i32, i32* @E2BIG
store i32 %66, i32* @errno
br label %104
67: ; preds = %57
%68 = getelementptr inbounds i8*, i8** %60, i64 2
store i8* %63, i8** %61
%69 = getelementptr inbounds i8*, i8** %59, i64 3
%70 = load i8*, i8** %69
%71 = icmp eq i8* %70, null
br i1 %71, label %91, label %72
72: ; preds = %67
%73 = getelementptr inbounds i8*, i8** %60, i64 3
store i8* %70, i8** %68
%74 = getelementptr inbounds i8*, i8** %59, i64 4
%75 = load i8*, i8** %74
%76 = icmp eq i8* %75, null
br i1 %76, label %91, label %77
77: ; preds = %72
%78 = getelementptr inbounds i8*, i8** %60, i64 4
store i8* %75, i8** %73
%79 = getelementptr inbounds i8*, i8** %59, i64 5
%80 = load i8*, i8** %79
%81 = icmp eq i8* %80, null
br i1 %81, label %91, label %82
82: ; preds = %77
%83 = ptrtoint i8** %78 to i64
%84 = sub i64 %83, %56
%85 = icmp ugt i64 %84, 32760
br i1 %85, label %65, label %86
86: ; preds = %82
%87 = getelementptr inbounds i8*, i8** %60, i64 5
store i8* %80, i8** %78
%88 = getelementptr inbounds i8*, i8** %59, i64 6
%89 = load i8*, i8** %88
%90 = icmp eq i8* %89, null
br i1 %90, label %91, label %57
91: ; preds = %57, %67, %72, %77, %86, %50
%92 = phi i8** [ %51, %50 ], [ %61, %57 ], [ %68, %67 ], [ %73, %72 ], [ %78, %77 ], [ %87, %86 ]
store i8* null, i8** %92
%93 = call i32 (...) @ccache_path()
%94 = call i32 @libc_execve(i32 %93, i8** %41, i8** %8)
%95 = icmp eq i32 %94, 0
br i1 %95, label %104, label %96
96: ; preds = %91
%97 = load i8*, i8** %41
%98 = icmp eq i8* %97, null
br i1 %98, label %100, label %99
99: ; preds = %96, %99
br label %99
100: ; preds = %96
%101 = load i8*, i8** %8
%102 = icmp eq i8* %101, null
br i1 %102, label %104, label %103
103: ; preds = %100, %103
br label %103
104: ; preds = %100, %91, %65, %48, %20
%105 = phi i32 [ -1, %20 ], [ %49, %48 ], [ -1, %65 ], [ 0, %91 ], [ %94, %100 ]
ret i32 %105
}