#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__ _xstrcasecmp(char *, char *, char *, int);
scalar_t__ _xstrcmp(char *, char *, char *, int);
int /*<<< orphan*/ _xstrcpy(char *, char *, char *, int);
char *_xstrdup(char *, char *, int);
scalar_t__ _xstrncasecmp(char *, char *, int, char *, int);
scalar_t__ _xstrncmp(char *, char *, int, char *, int);
int /*<<< orphan*/ _xstrncpy(char *, char *, int, char *, int);
char *calloc(int, int);
int /*<<< orphan*/ printf(char *, char *);
int /*<<< orphan*/ sprintf(char *, char *);
scalar_t__ strcmp(char *, char *);
int /*<<< orphan*/ xfree(char *);
char *xmalloc(int);
char *xrealloc(char *, int);
int main() {
  char t0[64];
  char t1[64];
  char *t2;
  sprintf(t0, "testing");
  sprintf(t1, "testing");
  if ((_xstrcmp(t0, t1,
                "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                "outputs/2022-01-22/02-19-57/repos/sdague/miau/refs/heads/"
                "master/src/test_common.c",
                32) == 0) != 1) {
    printf("%s fails!\n", "xstrcmp");
  };
  sprintf(t1, "testXXX");
  if ((_xstrcmp(t0, t1,
                "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                "outputs/2022-01-22/02-19-57/repos/sdague/miau/refs/heads/"
                "master/src/test_common.c",
                35) == 0) != 0) {
    printf("%s fails!\n", "xstrcmp");
  };
  if ((_xstrncmp(t0, t1, 4,
                 "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                 "outputs/2022-01-22/02-19-57/repos/sdague/miau/refs/heads/"
                 "master/src/test_common.c",
                 38) == 0) != 1) {
    printf("%s fails!\n", "xstrncmp");
  };
  if ((_xstrncmp(t0, t1, 6,
                 "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                 "outputs/2022-01-22/02-19-57/repos/sdague/miau/refs/heads/"
                 "master/src/test_common.c",
                 40) == 0) != 0) {
    printf("%s fails!\n", "xstrncmp");
  };
  if ((_xstrcasecmp(t0, t1,
                    "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                    "outputs/2022-01-22/02-19-57/repos/sdague/miau/refs/heads/"
                    "master/src/test_common.c",
                    43) == 0) != 0) {
    printf("%s fails!\n", "xstrcasecmp");
  };
  sprintf(t1, "TeStInG");
  if ((_xstrcasecmp(t0, t1,
                    "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                    "outputs/2022-01-22/02-19-57/repos/sdague/miau/refs/heads/"
                    "master/src/test_common.c",
                    46) == 0) != 1) {
    printf("%s fails!\n", "xstrcasecmp");
  };
  sprintf(t1, "TeStIXXX");
  if ((_xstrncasecmp(t0, t1, 6,
                     "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                     "outputs/2022-01-22/02-19-57/repos/sdague/miau/refs/heads/"
                     "master/src/test_common.c",
                     50) == 0) != 0) {
    printf("%s fails!\n", "xstrncasecmp");
  };
  if ((_xstrncasecmp(t0, t1, 4,
                     "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                     "outputs/2022-01-22/02-19-57/repos/sdague/miau/refs/heads/"
                     "master/src/test_common.c",
                     51) == 0) != 1) {
    printf("%s fails!\n", "xstrncasecmp");
  };
  _xstrcpy(t1, t0,
           "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
           "2022-01-22/02-19-57/repos/sdague/miau/refs/heads/master/src/"
           "test_common.c",
           53);
  if ((strcmp(t0, t1) == 0) != 1) {
    printf("%s fails!\n", "xstrcpy");
  };
  _xstrncpy(t1, "TESTING", 4,
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/sdague/miau/refs/heads/master/src/"
            "test_common.c",
            57);
  if ((strcmp(t1, "TESTing") == 0) != 1) {
    printf("%s fails!\n", "xstrncpy");
  };
  t2 = _xstrdup(t0,
                "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/"
                "outputs/2022-01-22/02-19-57/repos/sdague/miau/refs/heads/"
                "master/src/test_common.c",
                61);
  if ((strcmp(t0, t2) == 0) != 1) {
    printf("%s fails!\n", "xstrdup");
  };
  if ((strcmp(t1, t2) == 0) != 0) {
    printf("%s fails!\n", "xstrdup");
  };
  xfree(t2);
  t2 = xmalloc(16);
  xfree(t2);
  t2 = calloc(16, 16);
  t2 = xrealloc(t2, 128);
  xfree(t2);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xa0,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x50(%rbp),%rdi
lea    0xe03(%rip),%rsi
call   1100 <sprintf@plt>
lea    -0x90(%rbp),%rdi
lea    0xdf0(%rip),%rsi
call   1100 <sprintf@plt>
lea    -0x50(%rbp),%rdi
lea    -0x90(%rbp),%rsi
lea    0xde1(%rip),%rdx
mov    $0x20,%ecx
call   10f0 <_xstrcmp@plt>
cmp    $0x0,%rax
sete   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x1,%eax
je     1259 <main+0x79>
lea    0xe45(%rip),%rdi
lea    0xe49(%rip),%rsi
call   1070 <printf@plt>
lea    -0x90(%rbp),%rdi
lea    0xe3e(%rip),%rsi
call   1100 <sprintf@plt>
lea    -0x50(%rbp),%rdi
lea    -0x90(%rbp),%rsi
lea    0xd8a(%rip),%rdx
mov    $0x23,%ecx
call   10f0 <_xstrcmp@plt>
cmp    $0x0,%rax
sete   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
je     12b0 <main+0xd0>
lea    0xdee(%rip),%rdi
lea    0xdf2(%rip),%rsi
call   1070 <printf@plt>
lea    -0x50(%rbp),%rdi
lea    -0x90(%rbp),%rsi
mov    $0x4,%edx
lea    0xd41(%rip),%rcx
mov    $0x26,%r8d
call   1050 <_xstrncmp@plt>
cmp    $0x0,%rax
sete   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x1,%eax
je     12fa <main+0x11a>
lea    0xda4(%rip),%rdi
lea    0xdb8(%rip),%rsi
call   1070 <printf@plt>
lea    -0x50(%rbp),%rdi
lea    -0x90(%rbp),%rsi
mov    $0x6,%edx
lea    0xcf7(%rip),%rcx
mov    $0x28,%r8d
call   1050 <_xstrncmp@plt>
cmp    $0x0,%rax
sete   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
je     1344 <main+0x164>
lea    0xd5a(%rip),%rdi
lea    0xd6e(%rip),%rsi
call   1070 <printf@plt>
lea    -0x50(%rbp),%rdi
lea    -0x90(%rbp),%rsi
lea    0xcb2(%rip),%rdx
mov    $0x2b,%ecx
call   1030 <_xstrcasecmp@plt>
cmp    $0x0,%rax
sete   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
je     1388 <main+0x1a8>
lea    0xd16(%rip),%rdi
lea    0xd33(%rip),%rsi
call   1070 <printf@plt>
lea    -0x90(%rbp),%rdi
lea    0xd2c(%rip),%rsi
call   1100 <sprintf@plt>
lea    -0x50(%rbp),%rdi
lea    -0x90(%rbp),%rsi
lea    0xc5b(%rip),%rdx
mov    $0x2e,%ecx
call   1030 <_xstrcasecmp@plt>
cmp    $0x0,%rax
sete   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x1,%eax
je     13df <main+0x1ff>
lea    0xcbf(%rip),%rdi
lea    0xcdc(%rip),%rsi
call   1070 <printf@plt>
lea    -0x90(%rbp),%rdi
lea    0xcdd(%rip),%rsi
call   1100 <sprintf@plt>
lea    -0x50(%rbp),%rdi
lea    -0x90(%rbp),%rsi
mov    $0x6,%edx
lea    0xbff(%rip),%rcx
mov    $0x32,%r8d
call   1060 <_xstrncasecmp@plt>
cmp    $0x0,%rax
sete   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
je     143c <main+0x25c>
lea    0xc62(%rip),%rdi
lea    0xc9c(%rip),%rsi
call   1070 <printf@plt>
lea    -0x50(%rbp),%rdi
lea    -0x90(%rbp),%rsi
mov    $0x4,%edx
lea    0xbb5(%rip),%rcx
mov    $0x33,%r8d
call   1060 <_xstrncasecmp@plt>
cmp    $0x0,%rax
sete   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x1,%eax
je     1486 <main+0x2a6>
lea    0xc18(%rip),%rdi
lea    0xc52(%rip),%rsi
call   1070 <printf@plt>
lea    -0x90(%rbp),%rdi
lea    -0x50(%rbp),%rsi
lea    0xb70(%rip),%rdx
mov    $0x35,%ecx
call   10c0 <_xstrcpy@plt>
lea    -0x50(%rbp),%rdi
lea    -0x90(%rbp),%rsi
call   10e0 <strcmp@plt>
cmp    $0x0,%rax
sete   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x1,%eax
je     14da <main+0x2fa>
lea    0xbc4(%rip),%rdi
lea    0xc0b(%rip),%rsi
call   1070 <printf@plt>
lea    -0x90(%rbp),%rdi
lea    0xc00(%rip),%rsi
mov    $0x4,%edx
lea    0xb14(%rip),%rcx
mov    $0x39,%r8d
call   10b0 <_xstrncpy@plt>
lea    -0x90(%rbp),%rdi
lea    0xbe3(%rip),%rsi
call   10e0 <strcmp@plt>
cmp    $0x0,%rax
sete   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x1,%eax
je     153a <main+0x35a>
lea    0xb64(%rip),%rdi
lea    0xbc3(%rip),%rsi
call   1070 <printf@plt>
lea    -0x50(%rbp),%rdi
lea    0xac3(%rip),%rsi
mov    $0x3d,%edx
call   1040 <_xstrdup@plt>
mov    %rax,-0x98(%rbp)
lea    -0x50(%rbp),%rdi
mov    -0x98(%rbp),%rsi
call   10e0 <strcmp@plt>
cmp    $0x0,%rax
sete   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x1,%eax
je     158e <main+0x3ae>
lea    0xb10(%rip),%rdi
lea    0xb78(%rip),%rsi
call   1070 <printf@plt>
lea    -0x90(%rbp),%rdi
mov    -0x98(%rbp),%rsi
call   10e0 <strcmp@plt>
cmp    $0x0,%rax
sete   %al
and    $0x1,%al
movzbl %al,%eax
cmp    $0x0,%eax
je     15c9 <main+0x3e9>
lea    0xad5(%rip),%rdi
lea    0xb3d(%rip),%rsi
call   1070 <printf@plt>
mov    -0x98(%rbp),%rdi
call   1080 <xfree@plt>
mov    $0x10,%edi
call   10a0 <xmalloc@plt>
mov    %rax,-0x98(%rbp)
mov    -0x98(%rbp),%rdi
call   1080 <xfree@plt>
mov    $0x10,%esi
mov    %esi,%edi
call   10d0 <calloc@plt>
mov    %rax,-0x98(%rbp)
mov    -0x98(%rbp),%rdi
mov    $0x80,%esi
call   1090 <xrealloc@plt>
mov    %rax,-0x98(%rbp)
mov    -0x98(%rbp),%rdi
call   1080 <xfree@plt>
xor    %eax,%eax
add    $0xa0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r14
push   %rbx
sub    $0x88,%rsp
movabs $0x676e6974736574,%rax
mov    %rax,0x40(%rsp)
mov    %rax,(%rsp)
lea    0xe0c(%rip),%rdx
lea    0x40(%rsp),%rdi
mov    %rsp,%rsi
mov    $0x20,%ecx
call   10f0 <_xstrcmp@plt>
test   %rax,%rax
je     121e <main+0x4e>
lea    0xe78(%rip),%rdi
lea    0xe7c(%rip),%rsi
call   1070 <printf@plt>
movabs $0x58585874736574,%rax
mov    %rax,(%rsp)
lea    0xdcd(%rip),%rdx
lea    0x40(%rsp),%rdi
mov    %rsp,%rsi
mov    $0x23,%ecx
call   10f0 <_xstrcmp@plt>
test   %rax,%rax
jne    125d <main+0x8d>
lea    0xe39(%rip),%rdi
lea    0xe3d(%rip),%rsi
call   1070 <printf@plt>
lea    0xd9c(%rip),%rcx
lea    0x40(%rsp),%rdi
mov    %rsp,%rsi
mov    $0x4,%edx
mov    $0x26,%r8d
call   1050 <_xstrncmp@plt>
test   %rax,%rax
je     1294 <main+0xc4>
lea    0xe02(%rip),%rdi
lea    0xe0e(%rip),%rsi
call   1070 <printf@plt>
lea    0xd65(%rip),%rcx
lea    0x40(%rsp),%rdi
mov    %rsp,%rsi
mov    $0x6,%edx
mov    $0x28,%r8d
call   1050 <_xstrncmp@plt>
test   %rax,%rax
jne    12cb <main+0xfb>
lea    0xdcb(%rip),%rdi
lea    0xdd7(%rip),%rsi
call   1070 <printf@plt>
lea    0xd2e(%rip),%rdx
lea    0x40(%rsp),%rdi
mov    %rsp,%rsi
mov    $0x2b,%ecx
call   1030 <_xstrcasecmp@plt>
test   %rax,%rax
jne    12fc <main+0x12c>
lea    0xd9a(%rip),%rdi
lea    0xdaf(%rip),%rsi
call   1070 <printf@plt>
movabs $0x476e4974536554,%rax
mov    %rax,(%rsp)
lea    0xcef(%rip),%rdx
lea    0x40(%rsp),%rdi
mov    %rsp,%rsi
mov    $0x2e,%ecx
call   1030 <_xstrcasecmp@plt>
test   %rax,%rax
je     133b <main+0x16b>
lea    0xd5b(%rip),%rdi
lea    0xd70(%rip),%rsi
call   1070 <printf@plt>
movabs $0x5858584974536554,%rax
58 58 58
mov    %rax,(%rsp)
movb   $0x0,0x8(%rsp)
lea    0xcab(%rip),%rcx
lea    0x40(%rsp),%rdi
mov    %rsp,%rsi
mov    $0x6,%edx
mov    $0x32,%r8d
call   1060 <_xstrncasecmp@plt>
test   %rax,%rax
jne    1385 <main+0x1b5>
lea    0xd11(%rip),%rdi
lea    0xd3b(%rip),%rsi
call   1070 <printf@plt>
lea    0xc74(%rip),%rcx
lea    0x40(%rsp),%rdi
mov    %rsp,%rsi
mov    $0x4,%edx
mov    $0x33,%r8d
call   1060 <_xstrncasecmp@plt>
test   %rax,%rax
je     13bc <main+0x1ec>
lea    0xcda(%rip),%rdi
lea    0xd04(%rip),%rsi
call   1070 <printf@plt>
lea    0xc3d(%rip),%rdx
mov    %rsp,%r14
lea    0x40(%rsp),%rbx
mov    %r14,%rdi
mov    %rbx,%rsi
mov    $0x35,%ecx
call   10c0 <_xstrcpy@plt>
mov    %rbx,%rdi
mov    %r14,%rsi
call   10e0 <strcmp@plt>
test   %rax,%rax
je     13fe <main+0x22e>
lea    0xc98(%rip),%rdi
lea    0xccf(%rip),%rsi
call   1070 <printf@plt>
lea    0xccb(%rip),%rsi
lea    0xbf4(%rip),%rcx
mov    %rsp,%rbx
mov    %rbx,%rdi
mov    $0x4,%edx
mov    $0x39,%r8d
call   10b0 <_xstrncpy@plt>
lea    0xcaf(%rip),%rsi
mov    %rbx,%rdi
call   10e0 <strcmp@plt>
test   %rax,%rax
je     1449 <main+0x279>
lea    0xc4d(%rip),%rdi
lea    0xc9c(%rip),%rsi
call   1070 <printf@plt>
lea    0xbb0(%rip),%rsi
lea    0x40(%rsp),%r14
mov    %r14,%rdi
mov    $0x3d,%edx
call   1040 <_xstrdup@plt>
mov    %rax,%rbx
mov    %r14,%rdi
mov    %rax,%rsi
call   10e0 <strcmp@plt>
test   %rax,%rax
je     1488 <main+0x2b8>
lea    0xc0e(%rip),%rdi
lea    0xc66(%rip),%rsi
call   1070 <printf@plt>
mov    %rsp,%rdi
mov    %rbx,%rsi
call   10e0 <strcmp@plt>
test   %rax,%rax
jne    14ab <main+0x2db>
lea    0xbeb(%rip),%rdi
lea    0xc43(%rip),%rsi
call   1070 <printf@plt>
mov    %rbx,%rdi
call   1080 <xfree@plt>
mov    $0x10,%edi
call   10a0 <xmalloc@plt>
mov    %rax,%rdi
call   1080 <xfree@plt>
mov    $0x10,%edi
mov    $0x10,%esi
call   10d0 <calloc@plt>
mov    %rax,%rdi
mov    $0x80,%esi
call   1090 <xrealloc@plt>
mov    %rax,%rdi
call   1080 <xfree@plt>
xor    %eax,%eax
add    $0x88,%rsp
pop    %rbx
pop    %r14
ret

LLVM IR (-O0):
@.str = [8 x i8] c"testing\00"
@.str.1 = [138 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/sdague/miau/refs/heads/master/src/test_common.c\00"
@.str.2 = [11 x i8] c"%s fails!\0A\00"
@.str.3 = [8 x i8] c"xstrcmp\00"
@.str.4 = [8 x i8] c"testXXX\00"
@.str.5 = [9 x i8] c"xstrncmp\00"
@.str.6 = [12 x i8] c"xstrcasecmp\00"
@.str.7 = [8 x i8] c"TeStInG\00"
@.str.8 = [9 x i8] c"TeStIXXX\00"
@.str.9 = [13 x i8] c"xstrncasecmp\00"
@.str.10 = [8 x i8] c"xstrcpy\00"
@.str.11 = [8 x i8] c"TESTING\00"
@.str.12 = [8 x i8] c"TESTing\00"
@.str.13 = [9 x i8] c"xstrncpy\00"
@.str.14 = [8 x i8] c"xstrdup\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [64 x i8]
%3 = alloca [64 x i8]
%4 = alloca i8*
store i32 0, i32* %1
%5 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%6 = call i32 @sprintf(i8* %5, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0))
%7 = getelementptr inbounds [64 x i8], [64 x i8]* %3, i64 0, i64 0
%8 = call i32 @sprintf(i8* %7, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0))
%9 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%10 = getelementptr inbounds [64 x i8], [64 x i8]* %3, i64 0, i64 0
%11 = call i64 @_xstrcmp(i8* %9, i8* %10, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 32)
%12 = icmp eq i64 %11, 0
%13 = zext i1 %12 to i32
%14 = icmp ne i32 %13, 1
br i1 %14, label %15, label %17
15: ; preds = %0
%16 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i64 0, i64 0))
br label %17
17: ; preds = %15, %0
%18 = getelementptr inbounds [64 x i8], [64 x i8]* %3, i64 0, i64 0
%19 = call i32 @sprintf(i8* %18, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0))
%20 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%21 = getelementptr inbounds [64 x i8], [64 x i8]* %3, i64 0, i64 0
%22 = call i64 @_xstrcmp(i8* %20, i8* %21, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 35)
%23 = icmp eq i64 %22, 0
%24 = zext i1 %23 to i32
%25 = icmp ne i32 %24, 0
br i1 %25, label %26, label %28
26: ; preds = %17
%27 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i64 0, i64 0))
br label %28
28: ; preds = %26, %17
%29 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%30 = getelementptr inbounds [64 x i8], [64 x i8]* %3, i64 0, i64 0
%31 = call i64 @_xstrncmp(i8* %29, i8* %30, i32 4, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 38)
%32 = icmp eq i64 %31, 0
%33 = zext i1 %32 to i32
%34 = icmp ne i32 %33, 1
br i1 %34, label %35, label %37
35: ; preds = %28
%36 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.5, i64 0, i64 0))
br label %37
37: ; preds = %35, %28
%38 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%39 = getelementptr inbounds [64 x i8], [64 x i8]* %3, i64 0, i64 0
%40 = call i64 @_xstrncmp(i8* %38, i8* %39, i32 6, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 40)
%41 = icmp eq i64 %40, 0
%42 = zext i1 %41 to i32
%43 = icmp ne i32 %42, 0
br i1 %43, label %44, label %46
44: ; preds = %37
%45 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.5, i64 0, i64 0))
br label %46
46: ; preds = %44, %37
%47 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%48 = getelementptr inbounds [64 x i8], [64 x i8]* %3, i64 0, i64 0
%49 = call i64 @_xstrcasecmp(i8* %47, i8* %48, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 43)
%50 = icmp eq i64 %49, 0
%51 = zext i1 %50 to i32
%52 = icmp ne i32 %51, 0
br i1 %52, label %53, label %55
53: ; preds = %46
%54 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.6, i64 0, i64 0))
br label %55
55: ; preds = %53, %46
%56 = getelementptr inbounds [64 x i8], [64 x i8]* %3, i64 0, i64 0
%57 = call i32 @sprintf(i8* %56, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.7, i64 0, i64 0))
%58 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%59 = getelementptr inbounds [64 x i8], [64 x i8]* %3, i64 0, i64 0
%60 = call i64 @_xstrcasecmp(i8* %58, i8* %59, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 46)
%61 = icmp eq i64 %60, 0
%62 = zext i1 %61 to i32
%63 = icmp ne i32 %62, 1
br i1 %63, label %64, label %66
64: ; preds = %55
%65 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.6, i64 0, i64 0))
br label %66
66: ; preds = %64, %55
%67 = getelementptr inbounds [64 x i8], [64 x i8]* %3, i64 0, i64 0
%68 = call i32 @sprintf(i8* %67, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.8, i64 0, i64 0))
%69 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%70 = getelementptr inbounds [64 x i8], [64 x i8]* %3, i64 0, i64 0
%71 = call i64 @_xstrncasecmp(i8* %69, i8* %70, i32 6, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 50)
%72 = icmp eq i64 %71, 0
%73 = zext i1 %72 to i32
%74 = icmp ne i32 %73, 0
br i1 %74, label %75, label %77
75: ; preds = %66
%76 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.9, i64 0, i64 0))
br label %77
77: ; preds = %75, %66
%78 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%79 = getelementptr inbounds [64 x i8], [64 x i8]* %3, i64 0, i64 0
%80 = call i64 @_xstrncasecmp(i8* %78, i8* %79, i32 4, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 51)
%81 = icmp eq i64 %80, 0
%82 = zext i1 %81 to i32
%83 = icmp ne i32 %82, 1
br i1 %83, label %84, label %86
84: ; preds = %77
%85 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.9, i64 0, i64 0))
br label %86
86: ; preds = %84, %77
%87 = getelementptr inbounds [64 x i8], [64 x i8]* %3, i64 0, i64 0
%88 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%89 = call i32 @_xstrcpy(i8* %87, i8* %88, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 53)
%90 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%91 = getelementptr inbounds [64 x i8], [64 x i8]* %3, i64 0, i64 0
%92 = call i64 @strcmp(i8* %90, i8* %91)
%93 = icmp eq i64 %92, 0
%94 = zext i1 %93 to i32
%95 = icmp ne i32 %94, 1
br i1 %95, label %96, label %98
96: ; preds = %86
%97 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.10, i64 0, i64 0))
br label %98
98: ; preds = %96, %86
%99 = getelementptr inbounds [64 x i8], [64 x i8]* %3, i64 0, i64 0
%100 = call i32 @_xstrncpy(i8* %99, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.11, i64 0, i64 0), i32 4, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 57)
%101 = getelementptr inbounds [64 x i8], [64 x i8]* %3, i64 0, i64 0
%102 = call i64 @strcmp(i8* %101, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.12, i64 0, i64 0))
%103 = icmp eq i64 %102, 0
%104 = zext i1 %103 to i32
%105 = icmp ne i32 %104, 1
br i1 %105, label %106, label %108
106: ; preds = %98
%107 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.13, i64 0, i64 0))
br label %108
108: ; preds = %106, %98
%109 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%110 = call i8* @_xstrdup(i8* %109, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 61)
store i8* %110, i8** %4
%111 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%112 = load i8*, i8** %4
%113 = call i64 @strcmp(i8* %111, i8* %112)
%114 = icmp eq i64 %113, 0
%115 = zext i1 %114 to i32
%116 = icmp ne i32 %115, 1
br i1 %116, label %117, label %119
117: ; preds = %108
%118 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.14, i64 0, i64 0))
br label %119
119: ; preds = %117, %108
%120 = getelementptr inbounds [64 x i8], [64 x i8]* %3, i64 0, i64 0
%121 = load i8*, i8** %4
%122 = call i64 @strcmp(i8* %120, i8* %121)
%123 = icmp eq i64 %122, 0
%124 = zext i1 %123 to i32
%125 = icmp ne i32 %124, 0
br i1 %125, label %126, label %128
126: ; preds = %119
%127 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.14, i64 0, i64 0))
br label %128
128: ; preds = %126, %119
%129 = load i8*, i8** %4
%130 = call i32 @xfree(i8* %129)
%131 = call i8* @xmalloc(i32 16)
store i8* %131, i8** %4
%132 = load i8*, i8** %4
%133 = call i32 @xfree(i8* %132)
%134 = call i8* @calloc(i32 16, i32 16)
store i8* %134, i8** %4
%135 = load i8*, i8** %4
%136 = call i8* @xrealloc(i8* %135, i32 128)
store i8* %136, i8** %4
%137 = load i8*, i8** %4
%138 = call i32 @xfree(i8* %137)
ret i32 0
}

LLVM IR (-O2):
@.str.1 = [138 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/sdague/miau/refs/heads/master/src/test_common.c\00"
@.str.2 = [11 x i8] c"%s fails!\0A\00"
@.str.3 = [8 x i8] c"xstrcmp\00"
@.str.5 = [9 x i8] c"xstrncmp\00"
@.str.6 = [12 x i8] c"xstrcasecmp\00"
@.str.8 = [9 x i8] c"TeStIXXX\00"
@.str.9 = [13 x i8] c"xstrncasecmp\00"
@.str.10 = [8 x i8] c"xstrcpy\00"
@.str.11 = [8 x i8] c"TESTING\00"
@.str.12 = [8 x i8] c"TESTing\00"
@.str.13 = [9 x i8] c"xstrncpy\00"
@.str.14 = [8 x i8] c"xstrdup\00"
define i32 @main() {
%1 = alloca [64 x i8]
%2 = alloca [64 x i8]
%3 = getelementptr inbounds [64 x i8], [64 x i8]* %1, i64 0, i64 0
%4 = getelementptr inbounds [64 x i8], [64 x i8]* %2, i64 0, i64 0
%5 = bitcast [64 x i8]* %1 to i64*
store i64 29113321805538676, i64* %5
%6 = bitcast [64 x i8]* %2 to i64*
store i64 29113321805538676, i64* %6
%7 = call i64 @_xstrcmp(i8* %3, i8* %4, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 32)
%8 = icmp eq i64 %7, 0
br i1 %8, label %11, label %9
9: ; preds = %0
%10 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i64 0, i64 0))
br label %11
11: ; preds = %9, %0
store i64 24866934884623732, i64* %6
%12 = call i64 @_xstrcmp(i8* %3, i8* %4, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 35)
%13 = icmp eq i64 %12, 0
br i1 %13, label %14, label %16
14: ; preds = %11
%15 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.3, i64 0, i64 0))
br label %16
16: ; preds = %14, %11
%17 = call i64 @_xstrncmp(i8* %3, i8* %4, i32 4, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 38)
%18 = icmp eq i64 %17, 0
br i1 %18, label %21, label %19
19: ; preds = %16
%20 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.5, i64 0, i64 0))
br label %21
21: ; preds = %19, %16
%22 = call i64 @_xstrncmp(i8* %3, i8* %4, i32 6, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 40)
%23 = icmp eq i64 %22, 0
br i1 %23, label %24, label %26
24: ; preds = %21
%25 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.5, i64 0, i64 0))
br label %26
26: ; preds = %24, %21
%27 = call i64 @_xstrcasecmp(i8* %3, i8* %4, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 43)
%28 = icmp eq i64 %27, 0
br i1 %28, label %29, label %31
29: ; preds = %26
%30 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.6, i64 0, i64 0))
br label %31
31: ; preds = %29, %26
store i64 20105985109747028, i64* %6
%32 = call i64 @_xstrcasecmp(i8* %3, i8* %4, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 46)
%33 = icmp eq i64 %32, 0
br i1 %33, label %36, label %34
34: ; preds = %31
%35 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.6, i64 0, i64 0))
br label %36
36: ; preds = %34, %31
%37 = call i64 @_xstrncasecmp(i8* %3, i8* %4, i32 6, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 50)
%38 = icmp eq i64 %37, 0
br i1 %38, label %39, label %41
39: ; preds = %36
%40 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.9, i64 0, i64 0))
br label %41
41: ; preds = %39, %36
%42 = call i64 @_xstrncasecmp(i8* %3, i8* %4, i32 4, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 51)
%43 = icmp eq i64 %42, 0
br i1 %43, label %46, label %44
44: ; preds = %41
%45 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.9, i64 0, i64 0))
br label %46
46: ; preds = %44, %41
%47 = call i32 @_xstrcpy(i8* %4, i8* %3, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 53)
%48 = call i64 @strcmp(i8* %3, i8* %4)
%49 = icmp eq i64 %48, 0
br i1 %49, label %52, label %50
50: ; preds = %46
%51 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.10, i64 0, i64 0))
br label %52
52: ; preds = %50, %46
%53 = call i32 @_xstrncpy(i8* %4, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.11, i64 0, i64 0), i32 4, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 57)
%54 = call i64 @strcmp(i8* %4, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.12, i64 0, i64 0))
%55 = icmp eq i64 %54, 0
br i1 %55, label %58, label %56
56: ; preds = %52
%57 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.13, i64 0, i64 0))
br label %58
58: ; preds = %56, %52
%59 = call i8* @_xstrdup(i8* %3, i8* getelementptr inbounds ([138 x i8], [138 x i8]* @.str.1, i64 0, i64 0), i32 61)
%60 = call i64 @strcmp(i8* %3, i8* %59)
%61 = icmp eq i64 %60, 0
br i1 %61, label %64, label %62
62: ; preds = %58
%63 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.14, i64 0, i64 0))
br label %64
64: ; preds = %62, %58
%65 = call i64 @strcmp(i8* %4, i8* %59)
%66 = icmp eq i64 %65, 0
br i1 %66, label %67, label %69
67: ; preds = %64
%68 = call i32 @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.14, i64 0, i64 0))
br label %69
69: ; preds = %67, %64
%70 = call i32 @xfree(i8* %59)
%71 = call i8* @xmalloc(i32 16)
%72 = call i32 @xfree(i8* %71)
%73 = call dereferenceable_or_null(256) i8* @calloc(i32 16, i32 16)
%74 = call i8* @xrealloc(i8* %73, i32 128)
%75 = call i32 @xfree(i8* %74)
ret i32 0
}