#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 */
typedef int /*<<< orphan*/ FILE;

/* Variables and functions */
int /*<<< orphan*/ fclose(int /*<<< orphan*/ *);
int /*<<< orphan*/ *fopen(char *, char *);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *, int, int);
int /*<<< orphan*/ fread(unsigned char **, int, int, int /*<<< orphan*/ *);
int /*<<< orphan*/ fwrite(unsigned char **, int, int, int /*<<< orphan*/ *);
int /*<<< orphan*/ printf(char *);
int /*<<< orphan*/ scanf(char *, int *);
scalar_t__ strcmp(char *, char *);
char *strtok(char *, char *);
int /*<<< orphan*/ system(char *);
int main(int argc, char *argv[]) {
  unsigned char image[256][256];
  unsigned char image_w[256][256];
  int histgram[256] = {0};
  int mode;
  char *fn;
  FILE *fp;
  if (argc < 2) {
    printf("don't read filename\n");
    return 0;
  } else if (argc > 2) {
    printf("many arguments\n");
    return 0;
  } else {
    fp = fopen(argv[1], "rb");
    fread(image, sizeof(unsigned char), 256 * 256, fp);
    fclose(fp);
    fn = strtok(argv[1], ".");
    printf("input theta value\n");
    scanf("%d", &mode);
    int newhist[256];
    for (int i = 0; i < 256; i++) {
      if (i < mode) {
        newhist[0]++;
      } else {
        newhist[255]++;
      }
    }
    for (int i = 0; i < 256; i++) {
      for (int j = 0; j < 256; j++) {
        if (image[i][j] > mode) {
          image_w[i][j] = 255;
        } else {
          image_w[i][j] = 0;
        }
      }
    }
    if (strcmp(fn, "girl") == 0) {
      fp = fopen("plot_ex1girl.dat", "wb");
    } else {
      fp = fopen("plot_ex1ei.dat", "wb");
    }
    for (int i = 0; i < 256; i++) {
      fprintf(fp, "%3d %3d\n", i, newhist[i]);
    }
    fclose(fp);
    if (strcmp(fn, "girl") == 0) {
      fp = fopen("girlex1_binary.dat", "wb");
    } else {
      fp = fopen("eiex1_binary.dat", "wb");
    }
    fwrite(image_w, sizeof(unsigned char), 256 * 256, fp);
    fclose(fp);
    if (strcmp(fn, "girl") == 0) {
      system("zsh mode_girl.sh");
    } else {
      system("zsh mode_ei.sh");
    }
    return 0;
  }
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20840,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
lea    -0x20410(%rbp),%rdi
xor    %esi,%esi
mov    $0x400,%edx
call   1070 <memset@plt>
cmpl   $0x2,-0x8(%rbp)
jge    11fe <main+0x4e>
lea    0xe13(%rip),%rdi
call   1060 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1554 <main+0x3a4>
cmpl   $0x2,-0x8(%rbp)
jle    1220 <main+0x70>
lea    0xe06(%rip),%rdi
call   1060 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    1554 <main+0x3a4>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xdf6(%rip),%rsi
call   10b0 <fopen@plt>
mov    %rax,-0x20428(%rbp)
lea    -0x10010(%rbp),%rdi
mov    -0x20428(%rbp),%rcx
mov    $0x1,%esi
mov    $0x10000,%edx
call   1030 <fread@plt>
mov    -0x20428(%rbp),%rdi
call   1040 <fclose@plt>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xdb5(%rip),%rsi
call   10c0 <strtok@plt>
mov    %rax,-0x20420(%rbp)
lea    0xda4(%rip),%rdi
call   1060 <printf@plt>
lea    0xdab(%rip),%rdi
lea    -0x20414(%rbp),%rsi
call   10a0 <scanf@plt>
movl   $0x0,-0x20834(%rbp)
cmpl   $0x100,-0x20834(%rbp)
jge    1306 <main+0x156>
mov    -0x20834(%rbp),%eax
cmp    -0x20414(%rbp),%eax
jge    12de <main+0x12e>
mov    -0x20830(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20830(%rbp)
jmp    12ed <main+0x13d>
mov    -0x20434(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20434(%rbp)
jmp    12f2 <main+0x142>
mov    -0x20834(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20834(%rbp)
jmp    12a8 <main+0xf8>
movl   $0x0,-0x20838(%rbp)
cmpl   $0x100,-0x20838(%rbp)
jge    13dd <main+0x22d>
movl   $0x0,-0x2083c(%rbp)
cmpl   $0x100,-0x2083c(%rbp)
jge    13c4 <main+0x214>
movslq -0x20838(%rbp),%rcx
lea    -0x10010(%rbp),%rax
shl    $0x8,%rcx
add    %rcx,%rax
movslq -0x2083c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    -0x20414(%rbp),%eax
jle    138b <main+0x1db>
movslq -0x20838(%rbp),%rcx
lea    -0x20010(%rbp),%rax
shl    $0x8,%rcx
add    %rcx,%rax
movslq -0x2083c(%rbp),%rcx
movb   $0xff,(%rax,%rcx,1)
jmp    13ab <main+0x1fb>
movslq -0x20838(%rbp),%rcx
lea    -0x20010(%rbp),%rax
shl    $0x8,%rcx
add    %rcx,%rax
movslq -0x2083c(%rbp),%rcx
movb   $0x0,(%rax,%rcx,1)
jmp    13b0 <main+0x200>
mov    -0x2083c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2083c(%rbp)
jmp    132a <main+0x17a>
jmp    13c9 <main+0x219>
mov    -0x20838(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20838(%rbp)
jmp    1310 <main+0x160>
mov    -0x20420(%rbp),%rdi
lea    0xc55(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    1419 <main+0x269>
lea    0xc44(%rip),%rdi
lea    0xc4e(%rip),%rsi
call   10b0 <fopen@plt>
mov    %rax,-0x20428(%rbp)
jmp    1433 <main+0x283>
lea    0xc39(%rip),%rdi
lea    0xc2f(%rip),%rsi
call   10b0 <fopen@plt>
mov    %rax,-0x20428(%rbp)
movl   $0x0,-0x20840(%rbp)
cmpl   $0x100,-0x20840(%rbp)
jge    1488 <main+0x2d8>
mov    -0x20428(%rbp),%rdi
mov    -0x20840(%rbp),%edx
movslq -0x20840(%rbp),%rax
mov    -0x20830(%rbp,%rax,4),%ecx
lea    0xbf9(%rip),%rsi
call   1090 <fprintf@plt>
mov    -0x20840(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20840(%rbp)
jmp    143d <main+0x28d>
mov    -0x20428(%rbp),%rdi
call   1040 <fclose@plt>
mov    -0x20420(%rbp),%rdi
lea    0xb9e(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    14d0 <main+0x320>
lea    0xbb9(%rip),%rdi
lea    0xb97(%rip),%rsi
call   10b0 <fopen@plt>
mov    %rax,-0x20428(%rbp)
jmp    14ea <main+0x33a>
lea    0xbad(%rip),%rdi
lea    0xb78(%rip),%rsi
call   10b0 <fopen@plt>
mov    %rax,-0x20428(%rbp)
lea    -0x20010(%rbp),%rdi
mov    -0x20428(%rbp),%rcx
mov    $0x1,%esi
mov    $0x10000,%edx
call   10d0 <fwrite@plt>
mov    -0x20428(%rbp),%rdi
call   1040 <fclose@plt>
mov    -0x20420(%rbp),%rdi
lea    0xb1f(%rip),%rsi
call   1080 <strcmp@plt>
cmp    $0x0,%rax
jne    1541 <main+0x391>
lea    0xb5e(%rip),%rdi
call   1050 <system@plt>
jmp    154d <main+0x39d>
lea    0xb5e(%rip),%rdi
call   1050 <system@plt>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x20840,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x20410,%rsp
cmp    $0x1,%edi
jg     11c0 <main+0x20>
lea    0xf13(%rip),%rdi
jmp    19fc <main+0x85c>
cmp    $0x2,%edi
jne    19f5 <main+0x855>
mov    %rsi,%rbx
mov    0x8(%rsi),%rdi
lea    0xe59(%rip),%rsi
call   10a0 <fopen@plt>
mov    %rax,%rbp
lea    0x10410(%rsp),%rdi
mov    $0x1,%esi
mov    $0x10000,%edx
mov    %rax,%rcx
call   1040 <fread@plt>
mov    %rbp,%rdi
call   1050 <fclose@plt>
mov    0x8(%rbx),%rdi
lea    0xe27(%rip),%rsi
call   10b0 <strtok@plt>
mov    %rax,%r15
lea    0xe92(%rip),%rdi
call   1030 <puts@plt>
lea    0xe0e(%rip),%rdi
lea    0xc(%rsp),%rsi
call   1090 <scanf@plt>
movd   0xc(%rsp),%xmm0
pshufd $0x0,%xmm0,%xmm11
movdqa 0xdbb(%rip),%xmm7
pxor   %xmm5,%xmm5
mov    $0x100,%eax
movdqa 0xdb9(%rip),%xmm8
pcmpeqd %xmm10,%xmm10
movdqa 0xdbb(%rip),%xmm9
pxor   %xmm2,%xmm2
pxor   %xmm4,%xmm4
pxor   %xmm6,%xmm6
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movdqa %xmm7,%xmm3
paddd  %xmm8,%xmm3
movdqa %xmm11,%xmm0
pcmpgtd %xmm7,%xmm0
movdqa %xmm11,%xmm1
pcmpgtd %xmm3,%xmm1
psubd  %xmm0,%xmm5
psubd  %xmm1,%xmm2
paddd  %xmm0,%xmm4
psubd  %xmm10,%xmm4
paddd  %xmm1,%xmm6
psubd  %xmm10,%xmm6
paddd  %xmm9,%xmm7
add    $0xfffffff8,%eax
jne    1280 <main+0xe0>
paddd  %xmm4,%xmm6
pshufd $0xee,%xmm6,%xmm0
paddd  %xmm6,%xmm0
pshufd $0x55,%xmm0,%xmm1
paddd  %xmm0,%xmm1
paddd  %xmm5,%xmm2
pshufd $0xee,%xmm2,%xmm0
paddd  %xmm2,%xmm0
pshufd $0x55,%xmm0,%xmm2
paddd  %xmm0,%xmm2
movd   %xmm2,%r14d
movd   %xmm1,0x40c(%rsp)
movd   %xmm2,0x10(%rsp)
xor    %eax,%eax
pxor   %xmm10,%xmm10
cs nopw 0x0(%rax,%rax,1)
movdqa 0x10410(%rsp,%rax,1),%xmm4
movdqa 0x10420(%rsp,%rax,1),%xmm0
movdqa 0x10430(%rsp,%rax,1),%xmm9
movdqa 0x10440(%rsp,%rax,1),%xmm8
movdqa %xmm4,%xmm2
punpcklbw %xmm10,%xmm2
movdqa %xmm2,%xmm3
punpcklwd %xmm10,%xmm3
punpckhwd %xmm10,%xmm2
punpckhbw %xmm10,%xmm4
movdqa %xmm4,%xmm1
punpcklwd %xmm10,%xmm1
punpckhwd %xmm10,%xmm4
movdqa %xmm0,%xmm7
punpcklbw %xmm10,%xmm7
movdqa %xmm7,%xmm6
punpcklwd %xmm10,%xmm6
punpckhwd %xmm10,%xmm7
punpckhbw %xmm10,%xmm0
movdqa %xmm0,%xmm5
punpcklwd %xmm10,%xmm5
punpckhwd %xmm10,%xmm0
pcmpgtd %xmm11,%xmm4
pcmpgtd %xmm11,%xmm1
packssdw %xmm4,%xmm1
pcmpgtd %xmm11,%xmm2
pcmpgtd %xmm11,%xmm3
packssdw %xmm2,%xmm3
packsswb %xmm1,%xmm3
pcmpgtd %xmm11,%xmm0
pcmpgtd %xmm11,%xmm5
packssdw %xmm0,%xmm5
pcmpgtd %xmm11,%xmm7
pcmpgtd %xmm11,%xmm6
packssdw %xmm7,%xmm6
packsswb %xmm5,%xmm6
movdqa %xmm3,0x410(%rsp,%rax,1)
movdqa %xmm6,0x420(%rsp,%rax,1)
movdqa %xmm9,%xmm2
punpcklbw %xmm10,%xmm2
movdqa %xmm2,%xmm4
punpcklwd %xmm10,%xmm4
punpckhwd %xmm10,%xmm2
punpckhbw %xmm10,%xmm9
movdqa %xmm9,%xmm0
punpcklwd %xmm10,%xmm0
punpckhwd %xmm10,%xmm9
movdqa %xmm8,%xmm6
punpcklbw %xmm10,%xmm6
movdqa %xmm6,%xmm5
punpcklwd %xmm10,%xmm5
punpckhwd %xmm10,%xmm6
punpckhbw %xmm10,%xmm8
movdqa %xmm8,%xmm1
punpcklwd %xmm10,%xmm1
punpckhwd %xmm10,%xmm8
pcmpgtd %xmm11,%xmm9
pcmpgtd %xmm11,%xmm0
packssdw %xmm9,%xmm0
pcmpgtd %xmm11,%xmm2
pcmpgtd %xmm11,%xmm4
packssdw %xmm2,%xmm4
packsswb %xmm0,%xmm4
pcmpgtd %xmm11,%xmm8
pcmpgtd %xmm11,%xmm1
packssdw %xmm8,%xmm1
pcmpgtd %xmm11,%xmm6
pcmpgtd %xmm11,%xmm5
packssdw %xmm6,%xmm5
packsswb %xmm1,%xmm5
movdqa %xmm4,0x430(%rsp,%rax,1)
movdqa %xmm5,0x440(%rsp,%rax,1)
movdqa 0x10450(%rsp,%rax,1),%xmm0
movdqa 0x10460(%rsp,%rax,1),%xmm3
movdqa %xmm0,%xmm6
punpcklbw %xmm10,%xmm6
movdqa %xmm6,%xmm2
punpcklwd %xmm10,%xmm2
punpckhwd %xmm10,%xmm6
punpckhbw %xmm10,%xmm0
movdqa %xmm0,%xmm1
punpcklwd %xmm10,%xmm1
punpckhwd %xmm10,%xmm0
movdqa %xmm3,%xmm5
punpcklbw %xmm10,%xmm5
movdqa %xmm5,%xmm4
punpcklwd %xmm10,%xmm4
punpckhwd %xmm10,%xmm5
punpckhbw %xmm10,%xmm3
movdqa %xmm3,%xmm7
punpcklwd %xmm10,%xmm7
punpckhwd %xmm10,%xmm3
pcmpgtd %xmm11,%xmm0
pcmpgtd %xmm11,%xmm1
packssdw %xmm0,%xmm1
pcmpgtd %xmm11,%xmm6
pcmpgtd %xmm11,%xmm2
packssdw %xmm6,%xmm2
packsswb %xmm1,%xmm2
pcmpgtd %xmm11,%xmm3
pcmpgtd %xmm11,%xmm7
packssdw %xmm3,%xmm7
pcmpgtd %xmm11,%xmm5
pcmpgtd %xmm11,%xmm4
packssdw %xmm5,%xmm4
packsswb %xmm7,%xmm4
movdqa %xmm2,0x450(%rsp,%rax,1)
movdqa %xmm4,0x460(%rsp,%rax,1)
movdqa 0x10470(%rsp,%rax,1),%xmm0
movdqa 0x10480(%rsp,%rax,1),%xmm3
movdqa %xmm0,%xmm6
punpcklbw %xmm10,%xmm6
movdqa %xmm6,%xmm2
punpcklwd %xmm10,%xmm2
punpckhwd %xmm10,%xmm6
punpckhbw %xmm10,%xmm0
movdqa %xmm0,%xmm1
punpcklwd %xmm10,%xmm1
punpckhwd %xmm10,%xmm0
movdqa %xmm3,%xmm5
punpcklbw %xmm10,%xmm5
movdqa %xmm5,%xmm4
punpcklwd %xmm10,%xmm4
punpckhwd %xmm10,%xmm5
punpckhbw %xmm10,%xmm3
movdqa %xmm3,%xmm7
punpcklwd %xmm10,%xmm7
punpckhwd %xmm10,%xmm3
pcmpgtd %xmm11,%xmm0
pcmpgtd %xmm11,%xmm1
packssdw %xmm0,%xmm1
pcmpgtd %xmm11,%xmm6
pcmpgtd %xmm11,%xmm2
packssdw %xmm6,%xmm2
packsswb %xmm1,%xmm2
pcmpgtd %xmm11,%xmm3
pcmpgtd %xmm11,%xmm7
packssdw %xmm3,%xmm7
pcmpgtd %xmm11,%xmm5
pcmpgtd %xmm11,%xmm4
packssdw %xmm5,%xmm4
packsswb %xmm7,%xmm4
movdqa %xmm2,0x470(%rsp,%rax,1)
movdqa %xmm4,0x480(%rsp,%rax,1)
movdqa 0x10490(%rsp,%rax,1),%xmm0
movdqa 0x104a0(%rsp,%rax,1),%xmm3
movdqa %xmm0,%xmm6
punpcklbw %xmm10,%xmm6
movdqa %xmm6,%xmm2
punpcklwd %xmm10,%xmm2
punpckhwd %xmm10,%xmm6
punpckhbw %xmm10,%xmm0
movdqa %xmm0,%xmm1
punpcklwd %xmm10,%xmm1
punpckhwd %xmm10,%xmm0
movdqa %xmm3,%xmm5
punpcklbw %xmm10,%xmm5
movdqa %xmm5,%xmm4
punpcklwd %xmm10,%xmm4
punpckhwd %xmm10,%xmm5
punpckhbw %xmm10,%xmm3
movdqa %xmm3,%xmm7
punpcklwd %xmm10,%xmm7
punpckhwd %xmm10,%xmm3
pcmpgtd %xmm11,%xmm0
pcmpgtd %xmm11,%xmm1
packssdw %xmm0,%xmm1
pcmpgtd %xmm11,%xmm6
pcmpgtd %xmm11,%xmm2
packssdw %xmm6,%xmm2
packsswb %xmm1,%xmm2
pcmpgtd %xmm11,%xmm3
pcmpgtd %xmm11,%xmm7
packssdw %xmm3,%xmm7
pcmpgtd %xmm11,%xmm5
pcmpgtd %xmm11,%xmm4
packssdw %xmm5,%xmm4
packsswb %xmm7,%xmm4
movdqa %xmm2,0x490(%rsp,%rax,1)
movdqa %xmm4,0x4a0(%rsp,%rax,1)
movdqa 0x104b0(%rsp,%rax,1),%xmm4
movdqa 0x104c0(%rsp,%rax,1),%xmm5
movdqa 0x104d0(%rsp,%rax,1),%xmm9
movdqa 0x104e0(%rsp,%rax,1),%xmm8
movdqa %xmm4,%xmm2
punpcklbw %xmm10,%xmm2
movdqa %xmm2,%xmm3
punpcklwd %xmm10,%xmm3
punpckhwd %xmm10,%xmm2
punpckhbw %xmm10,%xmm4
movdqa %xmm4,%xmm0
punpcklwd %xmm10,%xmm0
punpckhwd %xmm10,%xmm4
movdqa %xmm5,%xmm7
punpcklbw %xmm10,%xmm7
movdqa %xmm7,%xmm6
punpcklwd %xmm10,%xmm6
punpckhwd %xmm10,%xmm7
punpckhbw %xmm10,%xmm5
movdqa %xmm5,%xmm1
punpcklwd %xmm10,%xmm1
punpckhwd %xmm10,%xmm5
pcmpgtd %xmm11,%xmm4
pcmpgtd %xmm11,%xmm0
packssdw %xmm4,%xmm0
pcmpgtd %xmm11,%xmm2
pcmpgtd %xmm11,%xmm3
packssdw %xmm2,%xmm3
packsswb %xmm0,%xmm3
pcmpgtd %xmm11,%xmm5
pcmpgtd %xmm11,%xmm1
packssdw %xmm5,%xmm1
pcmpgtd %xmm11,%xmm7
pcmpgtd %xmm11,%xmm6
packssdw %xmm7,%xmm6
packsswb %xmm1,%xmm6
movdqa %xmm3,0x4b0(%rsp,%rax,1)
movdqa %xmm6,0x4c0(%rsp,%rax,1)
movdqa %xmm9,%xmm2
punpcklbw %xmm10,%xmm2
movdqa %xmm2,%xmm4
punpcklwd %xmm10,%xmm4
punpckhwd %xmm10,%xmm2
punpckhbw %xmm10,%xmm9
movdqa %xmm9,%xmm0
punpcklwd %xmm10,%xmm0
punpckhwd %xmm10,%xmm9
movdqa %xmm8,%xmm6
punpcklbw %xmm10,%xmm6
movdqa %xmm6,%xmm5
punpcklwd %xmm10,%xmm5
punpckhwd %xmm10,%xmm6
punpckhbw %xmm10,%xmm8
movdqa %xmm8,%xmm1
punpcklwd %xmm10,%xmm1
punpckhwd %xmm10,%xmm8
pcmpgtd %xmm11,%xmm9
pcmpgtd %xmm11,%xmm0
packssdw %xmm9,%xmm0
pcmpgtd %xmm11,%xmm2
pcmpgtd %xmm11,%xmm4
packssdw %xmm2,%xmm4
packsswb %xmm0,%xmm4
pcmpgtd %xmm11,%xmm8
pcmpgtd %xmm11,%xmm1
packssdw %xmm8,%xmm1
pcmpgtd %xmm11,%xmm6
pcmpgtd %xmm11,%xmm5
packssdw %xmm6,%xmm5
packsswb %xmm1,%xmm5
movdqa %xmm4,0x4d0(%rsp,%rax,1)
movdqa %xmm5,0x4e0(%rsp,%rax,1)
movdqa 0x104f0(%rsp,%rax,1),%xmm0
movdqa 0x10500(%rsp,%rax,1),%xmm3
movdqa %xmm0,%xmm6
punpcklbw %xmm10,%xmm6
movdqa %xmm6,%xmm2
punpcklwd %xmm10,%xmm2
punpckhwd %xmm10,%xmm6
punpckhbw %xmm10,%xmm0
movdqa %xmm0,%xmm1
punpcklwd %xmm10,%xmm1
punpckhwd %xmm10,%xmm0
movdqa %xmm3,%xmm5
punpcklbw %xmm10,%xmm5
movdqa %xmm5,%xmm4
punpcklwd %xmm10,%xmm4
punpckhwd %xmm10,%xmm5
punpckhbw %xmm10,%xmm3
movdqa %xmm3,%xmm7
punpcklwd %xmm10,%xmm7
punpckhwd %xmm10,%xmm3
pcmpgtd %xmm11,%xmm0
pcmpgtd %xmm11,%xmm1
packssdw %xmm0,%xmm1
pcmpgtd %xmm11,%xmm6
pcmpgtd %xmm11,%xmm2
packssdw %xmm6,%xmm2
packsswb %xmm1,%xmm2
pcmpgtd %xmm11,%xmm3
pcmpgtd %xmm11,%xmm7
packssdw %xmm3,%xmm7
pcmpgtd %xmm11,%xmm5
pcmpgtd %xmm11,%xmm4
packssdw %xmm5,%xmm4
packsswb %xmm7,%xmm4
movdqa %xmm2,0x4f0(%rsp,%rax,1)
movdqa %xmm4,0x500(%rsp,%rax,1)
add    $0x100,%rax
cmp    $0x10000,%rax
jne    1310 <main+0x170>
lea    0x73f(%rip),%rsi
mov    %r15,%rdi
call   1070 <strcmp@plt>
test   %rax,%rax
lea    0x732(%rip),%rax
lea    0x73f(%rip),%rdi
cmove  %rax,%rdi
lea    0x731(%rip),%rsi
call   10a0 <fopen@plt>
mov    %rax,%rbp
lea    0x734(%rip),%r12
mov    %rax,%rdi
mov    %r12,%rsi
xor    %edx,%edx
mov    %r14d,%ecx
call   1080 <fprintf@plt>
mov    $0x1,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    0x10(%rsp,%rbx,4),%ecx
mov    %rbp,%rdi
mov    %r12,%rsi
mov    %ebx,%edx
call   1080 <fprintf@plt>
add    $0x1,%rbx
cmp    $0x100,%rbx
jne    1950 <main+0x7b0>
mov    %rbp,%rdi
call   1050 <fclose@plt>
lea    0x6bb(%rip),%rbp
mov    %r15,%rdi
mov    %rbp,%rsi
call   1070 <strcmp@plt>
test   %rax,%rax
lea    0x6d7(%rip),%rax
lea    0x6e3(%rip),%rdi
cmove  %rax,%rdi
lea    0x6aa(%rip),%rsi
call   10a0 <fopen@plt>
mov    %rax,%rbx
lea    0x410(%rsp),%rdi
mov    $0x1,%esi
mov    $0x10000,%edx
mov    %rax,%rcx
call   10c0 <fwrite@plt>
mov    %rbx,%rdi
call   1050 <fclose@plt>
mov    %r15,%rdi
mov    %rbp,%rsi
call   1070 <strcmp@plt>
test   %rax,%rax
lea    0x6aa(%rip),%rax
lea    0x6b4(%rip),%rdi
cmove  %rax,%rdi
call   1060 <system@plt>
jmp    1a01 <main+0x861>
lea    0x6c3(%rip),%rdi
call   1030 <puts@plt>
xor    %eax,%eax
add    $0x20410,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [21 x i8] c"don't read filename\0A\00"
@.str.1 = [16 x i8] c"many arguments\0A\00"
@.str.2 = [3 x i8] c"rb\00"
@.str.3 = [2 x i8] c".\00"
@.str.4 = [19 x i8] c"input theta value\0A\00"
@.str.5 = [3 x i8] c"%d\00"
@.str.6 = [5 x i8] c"girl\00"
@.str.7 = [17 x i8] c"plot_ex1girl.dat\00"
@.str.8 = [3 x i8] c"wb\00"
@.str.9 = [15 x i8] c"plot_ex1ei.dat\00"
@.str.10 = [9 x i8] c"%3d %3d\0A\00"
@.str.11 = [19 x i8] c"girlex1_binary.dat\00"
@.str.12 = [17 x i8] c"eiex1_binary.dat\00"
@.str.13 = [17 x i8] c"zsh mode_girl.sh\00"
@.str.14 = [15 x i8] c"zsh mode_ei.sh\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca [256 x [256 x i8]]
%7 = alloca [256 x [256 x i8]]
%8 = alloca [256 x i32]
%9 = alloca i32
%10 = alloca i8*
%11 = alloca i32*
%12 = alloca [256 x i32]
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%17 = bitcast [256 x i32]* %8 to i8*
%18 = load i32, i32* %4
%19 = icmp slt i32 %18, 2
br i1 %19, label %20, label %22
20: ; preds = %2
%21 = call i32 @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str, i64 0, i64 0))
store i32 0, i32* %3
br label %152
22: ; preds = %2
%23 = load i32, i32* %4
%24 = icmp sgt i32 %23, 2
br i1 %24, label %25, label %27
25: ; preds = %22
%26 = call i32 @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.1, i64 0, i64 0))
store i32 0, i32* %3
br label %152
27: ; preds = %22
%28 = load i8**, i8*** %5
%29 = getelementptr inbounds i8*, i8** %28, i64 1
%30 = load i8*, i8** %29
%31 = call i32* @fopen(i8* %30, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0))
store i32* %31, i32** %11
%32 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %6, i64 0, i64 0
%33 = bitcast [256 x i8]* %32 to i8**
%34 = load i32*, i32** %11
%35 = call i32 @fread(i8** %33, i32 1, i32 65536, i32* %34)
%36 = load i32*, i32** %11
%37 = call i32 @fclose(i32* %36)
%38 = load i8**, i8*** %5
%39 = getelementptr inbounds i8*, i8** %38, i64 1
%40 = load i8*, i8** %39
%41 = call i8* @strtok(i8* %40, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
store i8* %41, i8** %10
%42 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.4, i64 0, i64 0))
%43 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %9)
store i32 0, i32* %13
br label %44
44: ; preds = %60, %27
%45 = load i32, i32* %13
%46 = icmp slt i32 %45, 256
br i1 %46, label %47, label %63
47: ; preds = %44
%48 = load i32, i32* %13
%49 = load i32, i32* %9
%50 = icmp slt i32 %48, %49
br i1 %50, label %51, label %55
51: ; preds = %47
%52 = getelementptr inbounds [256 x i32], [256 x i32]* %12, i64 0, i64 0
%53 = load i32, i32* %52
%54 = add nsw i32 %53, 1
store i32 %54, i32* %52
br label %59
55: ; preds = %47
%56 = getelementptr inbounds [256 x i32], [256 x i32]* %12, i64 0, i64 255
%57 = load i32, i32* %56
%58 = add nsw i32 %57, 1
store i32 %58, i32* %56
br label %59
59: ; preds = %55, %51
br label %60
60: ; preds = %59
%61 = load i32, i32* %13
%62 = add nsw i32 %61, 1
store i32 %62, i32* %13
br label %44
63: ; preds = %44
store i32 0, i32* %14
br label %64
64: ; preds = %101, %63
%65 = load i32, i32* %14
%66 = icmp slt i32 %65, 256
br i1 %66, label %67, label %104
67: ; preds = %64
store i32 0, i32* %15
br label %68
68: ; preds = %97, %67
%69 = load i32, i32* %15
%70 = icmp slt i32 %69, 256
br i1 %70, label %71, label %100
71: ; preds = %68
%72 = load i32, i32* %14
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %6, i64 0, i64 %73
%75 = load i32, i32* %15
%76 = sext i32 %75 to i64
%77 = getelementptr inbounds [256 x i8], [256 x i8]* %74, i64 0, i64 %76
%78 = load i8, i8* %77
%79 = zext i8 %78 to i32
%80 = load i32, i32* %9
%81 = icmp sgt i32 %79, %80
br i1 %81, label %82, label %89
82: ; preds = %71
%83 = load i32, i32* %14
%84 = sext i32 %83 to i64
%85 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %7, i64 0, i64 %84
%86 = load i32, i32* %15
%87 = sext i32 %86 to i64
%88 = getelementptr inbounds [256 x i8], [256 x i8]* %85, i64 0, i64 %87
store i8 -1, i8* %88
br label %96
89: ; preds = %71
%90 = load i32, i32* %14
%91 = sext i32 %90 to i64
%92 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %7, i64 0, i64 %91
%93 = load i32, i32* %15
%94 = sext i32 %93 to i64
%95 = getelementptr inbounds [256 x i8], [256 x i8]* %92, i64 0, i64 %94
store i8 0, i8* %95
br label %96
96: ; preds = %89, %82
br label %97
97: ; preds = %96
%98 = load i32, i32* %15
%99 = add nsw i32 %98, 1
store i32 %99, i32* %15
br label %68
100: ; preds = %68
br label %101
101: ; preds = %100
%102 = load i32, i32* %14
%103 = add nsw i32 %102, 1
store i32 %103, i32* %14
br label %64
104: ; preds = %64
%105 = load i8*, i8** %10
%106 = call i64 @strcmp(i8* %105, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%107 = icmp eq i64 %106, 0
br i1 %107, label %108, label %110
108: ; preds = %104
%109 = call i32* @fopen(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
store i32* %109, i32** %11
br label %112
110: ; preds = %104
%111 = call i32* @fopen(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
store i32* %111, i32** %11
br label %112
112: ; preds = %110, %108
store i32 0, i32* %16
br label %113
113: ; preds = %124, %112
%114 = load i32, i32* %16
%115 = icmp slt i32 %114, 256
br i1 %115, label %116, label %127
116: ; preds = %113
%117 = load i32*, i32** %11
%118 = load i32, i32* %16
%119 = load i32, i32* %16
%120 = sext i32 %119 to i64
%121 = getelementptr inbounds [256 x i32], [256 x i32]* %12, i64 0, i64 %120
%122 = load i32, i32* %121
%123 = call i32 @fprintf(i32* %117, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.10, i64 0, i64 0), i32 %118, i32 %122)
br label %124
124: ; preds = %116
%125 = load i32, i32* %16
%126 = add nsw i32 %125, 1
store i32 %126, i32* %16
br label %113
127: ; preds = %113
%128 = load i32*, i32** %11
%129 = call i32 @fclose(i32* %128)
%130 = load i8*, i8** %10
%131 = call i64 @strcmp(i8* %130, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%132 = icmp eq i64 %131, 0
br i1 %132, label %133, label %135
133: ; preds = %127
%134 = call i32* @fopen(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
store i32* %134, i32** %11
br label %137
135: ; preds = %127
%136 = call i32* @fopen(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.12, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
store i32* %136, i32** %11
br label %137
137: ; preds = %135, %133
%138 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %7, i64 0, i64 0
%139 = bitcast [256 x i8]* %138 to i8**
%140 = load i32*, i32** %11
%141 = call i32 @fwrite(i8** %139, i32 1, i32 65536, i32* %140)
%142 = load i32*, i32** %11
%143 = call i32 @fclose(i32* %142)
%144 = load i8*, i8** %10
%145 = call i64 @strcmp(i8* %144, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%146 = icmp eq i64 %145, 0
br i1 %146, label %147, label %149
147: ; preds = %137
%148 = call i32 @system(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.13, i64 0, i64 0))
br label %151
149: ; preds = %137
%150 = call i32 @system(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.14, i64 0, i64 0))
br label %151
151: ; preds = %149, %147
store i32 0, i32* %3
br label %152
152: ; preds = %151, %25, %20
%153 = load i32, i32* %3
ret i32 %153
}

LLVM IR (-O2):
@.str.2 = [3 x i8] c"rb\00"
@.str.3 = [2 x i8] c".\00"
@.str.5 = [3 x i8] c"%d\00"
@.str.6 = [5 x i8] c"girl\00"
@.str.7 = [17 x i8] c"plot_ex1girl.dat\00"
@.str.8 = [3 x i8] c"wb\00"
@.str.9 = [15 x i8] c"plot_ex1ei.dat\00"
@.str.10 = [9 x i8] c"%3d %3d\0A\00"
@.str.11 = [19 x i8] c"girlex1_binary.dat\00"
@.str.12 = [17 x i8] c"eiex1_binary.dat\00"
@.str.13 = [17 x i8] c"zsh mode_girl.sh\00"
@.str.14 = [15 x i8] c"zsh mode_ei.sh\00"
@str = [18 x i8] c"input theta value\00"
@str.15 = [15 x i8] c"many arguments\00"
@str.16 = [20 x i8] c"don't read filename\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = alloca [256 x [256 x i8]]
%4 = alloca [256 x [256 x i8]]
%5 = alloca i32
%6 = alloca [256 x i32]
%7 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %3, i64 0, i64 0, i64 0
%8 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %4, i64 0, i64 0, i64 0
%9 = bitcast i32* %5 to i8*
%10 = icmp slt i32 %0, 2
br i1 %10, label %11, label %13
11: ; preds = %2
%12 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @str.16, i64 0, i64 0))
br label %227
13: ; preds = %2
%14 = icmp eq i32 %0, 2
br i1 %14, label %17, label %15
15: ; preds = %13
%16 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @str.15, i64 0, i64 0))
br label %227
17: ; preds = %13
%18 = getelementptr inbounds i8*, i8** %1, i64 1
%19 = load i8*, i8** %18
%20 = tail call i32* @fopen(i8* %19, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0))
%21 = bitcast [256 x [256 x i8]]* %3 to i8**
%22 = call i32 @fread(i8** %21, i32 1, i32 65536, i32* %20)
%23 = tail call i32 @fclose(i32* %20)
%24 = load i8*, i8** %18
%25 = tail call i8* @strtok(i8* %24, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%26 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str, i64 0, i64 0))
%27 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %5)
%28 = bitcast [256 x i32]* %6 to i8*
%29 = load i32, i32* %5
%30 = getelementptr inbounds [256 x i32], [256 x i32]* %6, i64 0, i64 255
%31 = getelementptr inbounds [256 x i32], [256 x i32]* %6, i64 0, i64 0
%32 = insertelement <4 x i32> poison, i32 %29, i64 0
%33 = shufflevector <4 x i32> %32, <4 x i32> poison, <4 x i32> zeroinitializer
%34 = insertelement <4 x i32> poison, i32 %29, i64 0
%35 = shufflevector <4 x i32> %34, <4 x i32> poison, <4 x i32> zeroinitializer
br label %36
36: ; preds = %36, %17
%37 = phi i32 [ 0, %17 ], [ %56, %36 ]
%38 = phi <4 x i32> [ <i32 undef, i32 0, i32 0, i32 0>, %17 ], [ %48, %36 ]
%39 = phi <4 x i32> [ zeroinitializer, %17 ], [ %49, %36 ]
%40 = phi <4 x i32> [ <i32 undef, i32 0, i32 0, i32 0>, %17 ], [ %54, %36 ]
%41 = phi <4 x i32> [ zeroinitializer, %17 ], [ %55, %36 ]
%42 = phi <4 x i32> [ <i32 0, i32 1, i32 2, i32 3>, %17 ], [ %57, %36 ]
%43 = add <4 x i32> %42, <i32 4, i32 4, i32 4, i32 4>
%44 = icmp slt <4 x i32> %42, %33
%45 = icmp slt <4 x i32> %43, %35
%46 = zext <4 x i1> %44 to <4 x i32>
%47 = zext <4 x i1> %45 to <4 x i32>
%48 = add <4 x i32> %38, %46
%49 = add <4 x i32> %39, %47
%50 = xor <4 x i1> %44, <i1 true, i1 true, i1 true, i1 true>
%51 = xor <4 x i1> %45, <i1 true, i1 true, i1 true, i1 true>
%52 = zext <4 x i1> %50 to <4 x i32>
%53 = zext <4 x i1> %51 to <4 x i32>
%54 = add <4 x i32> %40, %52
%55 = add <4 x i32> %41, %53
%56 = add nuw i32 %37, 8
%57 = add <4 x i32> %42, <i32 8, i32 8, i32 8, i32 8>
%58 = icmp eq i32 %56, 256
br i1 %58, label %59, label %36
59: ; preds = %36
%60 = add <4 x i32> %55, %54
%61 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %60)
%62 = add <4 x i32> %49, %48
%63 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %62)
store i32 %61, i32* %30
store i32 %63, i32* %31
%64 = insertelement <16 x i32> poison, i32 %29, i64 0
%65 = shufflevector <16 x i32> %64, <16 x i32> poison, <16 x i32> zeroinitializer
%66 = insertelement <16 x i32> poison, i32 %29, i64 0
%67 = shufflevector <16 x i32> %66, <16 x i32> poison, <16 x i32> zeroinitializer
br label %68
68: ; preds = %59, %68
%69 = phi i64 [ 0, %59 ], [ %198, %68 ]
%70 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %3, i64 0, i64 %69, i64 0
%71 = bitcast i8* %70 to <16 x i8>*
%72 = load <16 x i8>, <16 x i8>* %71
%73 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %3, i64 0, i64 %69, i64 16
%74 = bitcast i8* %73 to <16 x i8>*
%75 = load <16 x i8>, <16 x i8>* %74
%76 = zext <16 x i8> %72 to <16 x i32>
%77 = zext <16 x i8> %75 to <16 x i32>
%78 = icmp slt <16 x i32> %65, %76
%79 = icmp slt <16 x i32> %67, %77
%80 = sext <16 x i1> %78 to <16 x i8>
%81 = sext <16 x i1> %79 to <16 x i8>
%82 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %4, i64 0, i64 %69, i64 0
%83 = bitcast i8* %82 to <16 x i8>*
store <16 x i8> %80, <16 x i8>* %83
%84 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %4, i64 0, i64 %69, i64 16
%85 = bitcast i8* %84 to <16 x i8>*
store <16 x i8> %81, <16 x i8>* %85
%86 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %3, i64 0, i64 %69, i64 32
%87 = bitcast i8* %86 to <16 x i8>*
%88 = load <16 x i8>, <16 x i8>* %87
%89 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %3, i64 0, i64 %69, i64 48
%90 = bitcast i8* %89 to <16 x i8>*
%91 = load <16 x i8>, <16 x i8>* %90
%92 = zext <16 x i8> %88 to <16 x i32>
%93 = zext <16 x i8> %91 to <16 x i32>
%94 = icmp slt <16 x i32> %65, %92
%95 = icmp slt <16 x i32> %67, %93
%96 = sext <16 x i1> %94 to <16 x i8>
%97 = sext <16 x i1> %95 to <16 x i8>
%98 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %4, i64 0, i64 %69, i64 32
%99 = bitcast i8* %98 to <16 x i8>*
store <16 x i8> %96, <16 x i8>* %99
%100 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %4, i64 0, i64 %69, i64 48
%101 = bitcast i8* %100 to <16 x i8>*
store <16 x i8> %97, <16 x i8>* %101
%102 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %3, i64 0, i64 %69, i64 64
%103 = bitcast i8* %102 to <16 x i8>*
%104 = load <16 x i8>, <16 x i8>* %103
%105 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %3, i64 0, i64 %69, i64 80
%106 = bitcast i8* %105 to <16 x i8>*
%107 = load <16 x i8>, <16 x i8>* %106
%108 = zext <16 x i8> %104 to <16 x i32>
%109 = zext <16 x i8> %107 to <16 x i32>
%110 = icmp slt <16 x i32> %65, %108
%111 = icmp slt <16 x i32> %67, %109
%112 = sext <16 x i1> %110 to <16 x i8>
%113 = sext <16 x i1> %111 to <16 x i8>
%114 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %4, i64 0, i64 %69, i64 64
%115 = bitcast i8* %114 to <16 x i8>*
store <16 x i8> %112, <16 x i8>* %115
%116 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %4, i64 0, i64 %69, i64 80
%117 = bitcast i8* %116 to <16 x i8>*
store <16 x i8> %113, <16 x i8>* %117
%118 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %3, i64 0, i64 %69, i64 96
%119 = bitcast i8* %118 to <16 x i8>*
%120 = load <16 x i8>, <16 x i8>* %119
%121 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %3, i64 0, i64 %69, i64 112
%122 = bitcast i8* %121 to <16 x i8>*
%123 = load <16 x i8>, <16 x i8>* %122
%124 = zext <16 x i8> %120 to <16 x i32>
%125 = zext <16 x i8> %123 to <16 x i32>
%126 = icmp slt <16 x i32> %65, %124
%127 = icmp slt <16 x i32> %67, %125
%128 = sext <16 x i1> %126 to <16 x i8>
%129 = sext <16 x i1> %127 to <16 x i8>
%130 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %4, i64 0, i64 %69, i64 96
%131 = bitcast i8* %130 to <16 x i8>*
store <16 x i8> %128, <16 x i8>* %131
%132 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %4, i64 0, i64 %69, i64 112
%133 = bitcast i8* %132 to <16 x i8>*
store <16 x i8> %129, <16 x i8>* %133
%134 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %3, i64 0, i64 %69, i64 128
%135 = bitcast i8* %134 to <16 x i8>*
%136 = load <16 x i8>, <16 x i8>* %135
%137 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %3, i64 0, i64 %69, i64 144
%138 = bitcast i8* %137 to <16 x i8>*
%139 = load <16 x i8>, <16 x i8>* %138
%140 = zext <16 x i8> %136 to <16 x i32>
%141 = zext <16 x i8> %139 to <16 x i32>
%142 = icmp slt <16 x i32> %65, %140
%143 = icmp slt <16 x i32> %67, %141
%144 = sext <16 x i1> %142 to <16 x i8>
%145 = sext <16 x i1> %143 to <16 x i8>
%146 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %4, i64 0, i64 %69, i64 128
%147 = bitcast i8* %146 to <16 x i8>*
store <16 x i8> %144, <16 x i8>* %147
%148 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %4, i64 0, i64 %69, i64 144
%149 = bitcast i8* %148 to <16 x i8>*
store <16 x i8> %145, <16 x i8>* %149
%150 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %3, i64 0, i64 %69, i64 160
%151 = bitcast i8* %150 to <16 x i8>*
%152 = load <16 x i8>, <16 x i8>* %151
%153 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %3, i64 0, i64 %69, i64 176
%154 = bitcast i8* %153 to <16 x i8>*
%155 = load <16 x i8>, <16 x i8>* %154
%156 = zext <16 x i8> %152 to <16 x i32>
%157 = zext <16 x i8> %155 to <16 x i32>
%158 = icmp slt <16 x i32> %65, %156
%159 = icmp slt <16 x i32> %67, %157
%160 = sext <16 x i1> %158 to <16 x i8>
%161 = sext <16 x i1> %159 to <16 x i8>
%162 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %4, i64 0, i64 %69, i64 160
%163 = bitcast i8* %162 to <16 x i8>*
store <16 x i8> %160, <16 x i8>* %163
%164 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %4, i64 0, i64 %69, i64 176
%165 = bitcast i8* %164 to <16 x i8>*
store <16 x i8> %161, <16 x i8>* %165
%166 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %3, i64 0, i64 %69, i64 192
%167 = bitcast i8* %166 to <16 x i8>*
%168 = load <16 x i8>, <16 x i8>* %167
%169 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %3, i64 0, i64 %69, i64 208
%170 = bitcast i8* %169 to <16 x i8>*
%171 = load <16 x i8>, <16 x i8>* %170
%172 = zext <16 x i8> %168 to <16 x i32>
%173 = zext <16 x i8> %171 to <16 x i32>
%174 = icmp slt <16 x i32> %65, %172
%175 = icmp slt <16 x i32> %67, %173
%176 = sext <16 x i1> %174 to <16 x i8>
%177 = sext <16 x i1> %175 to <16 x i8>
%178 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %4, i64 0, i64 %69, i64 192
%179 = bitcast i8* %178 to <16 x i8>*
store <16 x i8> %176, <16 x i8>* %179
%180 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %4, i64 0, i64 %69, i64 208
%181 = bitcast i8* %180 to <16 x i8>*
store <16 x i8> %177, <16 x i8>* %181
%182 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %3, i64 0, i64 %69, i64 224
%183 = bitcast i8* %182 to <16 x i8>*
%184 = load <16 x i8>, <16 x i8>* %183
%185 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %3, i64 0, i64 %69, i64 240
%186 = bitcast i8* %185 to <16 x i8>*
%187 = load <16 x i8>, <16 x i8>* %186
%188 = zext <16 x i8> %184 to <16 x i32>
%189 = zext <16 x i8> %187 to <16 x i32>
%190 = icmp slt <16 x i32> %65, %188
%191 = icmp slt <16 x i32> %67, %189
%192 = sext <16 x i1> %190 to <16 x i8>
%193 = sext <16 x i1> %191 to <16 x i8>
%194 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %4, i64 0, i64 %69, i64 224
%195 = bitcast i8* %194 to <16 x i8>*
store <16 x i8> %192, <16 x i8>* %195
%196 = getelementptr inbounds [256 x [256 x i8]], [256 x [256 x i8]]* %4, i64 0, i64 %69, i64 240
%197 = bitcast i8* %196 to <16 x i8>*
store <16 x i8> %193, <16 x i8>* %197
%198 = add nuw nsw i64 %69, 1
%199 = icmp eq i64 %198, 256
br i1 %199, label %200, label %68
200: ; preds = %68
%201 = call i64 @strcmp(i8* %25, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%202 = icmp eq i64 %201, 0
%203 = select i1 %202, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.9, i64 0, i64 0)
%204 = call i32* @fopen(i8* %203, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
%205 = call i32 @fprintf(i32* %204, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.10, i64 0, i64 0), i32 0, i32 %63)
br label %219
206: ; preds = %219
%207 = call i32 @fclose(i32* %204)
%208 = call i64 @strcmp(i8* %25, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%209 = icmp eq i64 %208, 0
%210 = select i1 %209, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.12, i64 0, i64 0)
%211 = call i32* @fopen(i8* %210, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
%212 = bitcast [256 x [256 x i8]]* %4 to i8**
%213 = call i32 @fwrite(i8** %212, i32 1, i32 65536, i32* %211)
%214 = call i32 @fclose(i32* %211)
%215 = call i64 @strcmp(i8* %25, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
%216 = icmp eq i64 %215, 0
%217 = select i1 %216, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.13, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.14, i64 0, i64 0)
%218 = call i32 @system(i8* %217)
br label %227
219: ; preds = %200, %219
%220 = phi i64 [ 1, %200 ], [ %225, %219 ]
%221 = getelementptr inbounds [256 x i32], [256 x i32]* %6, i64 0, i64 %220
%222 = load i32, i32* %221
%223 = trunc i64 %220 to i32
%224 = call i32 @fprintf(i32* %204, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.10, i64 0, i64 0), i32 %223, i32 %222)
%225 = add nuw nsw i64 %220, 1
%226 = icmp eq i64 %225, 256
br i1 %226, label %206, label %219
227: ; preds = %206, %15, %11
ret i32 0
}