#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*/ free(unsigned char *);
int /*<<< orphan*/ fwrite(unsigned char *, int, int, int /*<<< orphan*/ *);
scalar_t__ malloc(int);
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ sprintf(char *, char *, int, int);
int gen_allcolor_video() {
  unsigned char *data = NULL;
  char filename[100] = {0};
  FILE *fp = NULL;
  int width = 256, height = 256, frames = 256;
  int i = 0, j = 0, k = 0;
  data = (unsigned char *)malloc(width * height * 3);
  sprintf(filename, "allcolor_xr_yg_zb_%dx%d_rgb24.rgb", width, height);
  if ((fp = fopen(filename, "wb+")) == NULL) {
    printf("Error: Cannot create file!");
    return -1;
  }
  for (k = 0; k < frames; k++) {
    for (j = 0; j < height; j++) {
      for (i = 0; i < width; i++) {
        data[(j * width + i) * 3 + 0] = i;
        data[(j * width + i) * 3 + 1] = j;
        data[(j * width + i) * 3 + 2] = k;
      }
    }
    fwrite(data, width * height * 3, 1, fp);
    printf("Finish generate frame %d!\n", k);
  }
  fclose(fp);
  free(data);
  printf("Finish generate %s!\n", filename);
  data = (unsigned char *)malloc(width * height);
  sprintf(filename, "allcolor_xu_yv_zy_%dx%d_yuv444p.yuv", width, height);
  if ((fp = fopen(filename, "wb+")) == NULL) {
    printf("Error: Cannot create file!");
    return -1;
  }
  for (k = 0; k < frames; k++) {
    for (j = 0; j < height; j++) {
      for (i = 0; i < width; i++) {
        data[j * width + i] = k;
      }
    }
    fwrite(data, width * height, 1, fp);
    for (j = 0; j < height; j++) {
      for (i = 0; i < width; i++) {
        data[j * width + i] = i;
      }
    }
    fwrite(data, width * height, 1, fp);
    for (j = 0; j < height; j++) {
      for (i = 0; i < width; i++) {
        data[j * width + i] = j;
      }
    }
    fwrite(data, width * height, 1, fp);
    printf("Finish generate frame %d!\n", k);
  }
  fclose(fp);
  free(data);
  printf("Finish generate %s!\n", filename);
  return 0;
}


x86 assembly (clang, -O0):
<gen_allcolor_video>:
push   %rbp
mov    %rsp,%rbp
sub    $0xa0,%rsp
movq   $0x0,-0x10(%rbp)
lea    -0x80(%rbp),%rdi
xor    %esi,%esi
mov    $0x64,%edx
call   1060 <memset@plt>
movq   $0x0,-0x88(%rbp)
movl   $0x100,-0x8c(%rbp)
movl   $0x100,-0x90(%rbp)
movl   $0x100,-0x94(%rbp)
movl   $0x0,-0x98(%rbp)
movl   $0x0,-0x9c(%rbp)
movl   $0x0,-0xa0(%rbp)
mov    -0x8c(%rbp),%eax
imul   -0x90(%rbp),%eax
imul   $0x3,%eax,%edi
call   1070 <malloc@plt>
mov    %rax,-0x10(%rbp)
lea    -0x80(%rbp),%rdi
mov    -0x8c(%rbp),%edx
mov    -0x90(%rbp),%ecx
lea    0xde6(%rip),%rsi
call   1090 <sprintf@plt>
lea    -0x80(%rbp),%rdi
lea    0xdf8(%rip),%rsi
call   1080 <fopen@plt>
mov    %rax,-0x88(%rbp)
cmp    $0x0,%rax
jne    125a <gen_allcolor_video+0xda>
lea    0xddf(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    16b3 <gen_allcolor_video+0x533>
movl   $0x0,-0xa0(%rbp)
mov    -0xa0(%rbp),%eax
cmp    -0x94(%rbp),%eax
jge    13a9 <gen_allcolor_video+0x229>
movl   $0x0,-0x9c(%rbp)
mov    -0x9c(%rbp),%eax
cmp    -0x90(%rbp),%eax
jge    135c <gen_allcolor_video+0x1dc>
movl   $0x0,-0x98(%rbp)
mov    -0x98(%rbp),%eax
cmp    -0x8c(%rbp),%eax
jge    1343 <gen_allcolor_video+0x1c3>
mov    -0x98(%rbp),%eax
mov    %al,%dl
mov    -0x10(%rbp),%rax
mov    -0x9c(%rbp),%ecx
imul   -0x8c(%rbp),%ecx
add    -0x98(%rbp),%ecx
imul   $0x3,%ecx,%ecx
add    $0x0,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x9c(%rbp),%eax
mov    %al,%dl
mov    -0x10(%rbp),%rax
mov    -0x9c(%rbp),%ecx
imul   -0x8c(%rbp),%ecx
add    -0x98(%rbp),%ecx
imul   $0x3,%ecx,%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0xa0(%rbp),%eax
mov    %al,%dl
mov    -0x10(%rbp),%rax
mov    -0x9c(%rbp),%ecx
imul   -0x8c(%rbp),%ecx
add    -0x98(%rbp),%ecx
imul   $0x3,%ecx,%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x98(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x98(%rbp)
jmp    129c <gen_allcolor_video+0x11c>
jmp    1348 <gen_allcolor_video+0x1c8>
mov    -0x9c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9c(%rbp)
jmp    1280 <gen_allcolor_video+0x100>
mov    -0x10(%rbp),%rdi
mov    -0x8c(%rbp),%eax
imul   -0x90(%rbp),%eax
imul   $0x3,%eax,%esi
mov    -0x88(%rbp),%rcx
mov    $0x1,%edx
call   10a0 <fwrite@plt>
mov    -0xa0(%rbp),%esi
lea    0xcb3(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0xa0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa0(%rbp)
jmp    1264 <gen_allcolor_video+0xe4>
mov    -0x88(%rbp),%rdi
call   1040 <fclose@plt>
mov    -0x10(%rbp),%rdi
call   1030 <free@plt>
lea    -0x80(%rbp),%rsi
lea    0xc93(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x8c(%rbp),%edi
imul   -0x90(%rbp),%edi
call   1070 <malloc@plt>
mov    %rax,-0x10(%rbp)
lea    -0x80(%rbp),%rdi
mov    -0x8c(%rbp),%edx
mov    -0x90(%rbp),%ecx
lea    0xc74(%rip),%rsi
call   1090 <sprintf@plt>
lea    -0x80(%rbp),%rdi
lea    0xc15(%rip),%rsi
call   1080 <fopen@plt>
mov    %rax,-0x88(%rbp)
cmp    $0x0,%rax
jne    143d <gen_allcolor_video+0x2bd>
lea    0xbfc(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0xffffffff,-0x4(%rbp)
jmp    16b3 <gen_allcolor_video+0x533>
movl   $0x0,-0xa0(%rbp)
mov    -0xa0(%rbp),%eax
cmp    -0x94(%rbp),%eax
jge    1685 <gen_allcolor_video+0x505>
movl   $0x0,-0x9c(%rbp)
mov    -0x9c(%rbp),%eax
cmp    -0x90(%rbp),%eax
jge    14e3 <gen_allcolor_video+0x363>
movl   $0x0,-0x98(%rbp)
mov    -0x98(%rbp),%eax
cmp    -0x8c(%rbp),%eax
jge    14ca <gen_allcolor_video+0x34a>
mov    -0xa0(%rbp),%eax
mov    %al,%dl
mov    -0x10(%rbp),%rax
mov    -0x9c(%rbp),%ecx
imul   -0x8c(%rbp),%ecx
add    -0x98(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x98(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x98(%rbp)
jmp    147f <gen_allcolor_video+0x2ff>
jmp    14cf <gen_allcolor_video+0x34f>
mov    -0x9c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9c(%rbp)
jmp    1463 <gen_allcolor_video+0x2e3>
mov    -0x10(%rbp),%rdi
mov    -0x8c(%rbp),%esi
imul   -0x90(%rbp),%esi
mov    -0x88(%rbp),%rcx
mov    $0x1,%edx
call   10a0 <fwrite@plt>
movl   $0x0,-0x9c(%rbp)
mov    -0x9c(%rbp),%eax
cmp    -0x90(%rbp),%eax
jge    158f <gen_allcolor_video+0x40f>
movl   $0x0,-0x98(%rbp)
mov    -0x98(%rbp),%eax
cmp    -0x8c(%rbp),%eax
jge    1576 <gen_allcolor_video+0x3f6>
mov    -0x98(%rbp),%eax
mov    %al,%dl
mov    -0x10(%rbp),%rax
mov    -0x9c(%rbp),%ecx
imul   -0x8c(%rbp),%ecx
add    -0x98(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x98(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x98(%rbp)
jmp    152b <gen_allcolor_video+0x3ab>
jmp    157b <gen_allcolor_video+0x3fb>
mov    -0x9c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9c(%rbp)
jmp    150f <gen_allcolor_video+0x38f>
mov    -0x10(%rbp),%rdi
mov    -0x8c(%rbp),%esi
imul   -0x90(%rbp),%esi
mov    -0x88(%rbp),%rcx
mov    $0x1,%edx
call   10a0 <fwrite@plt>
movl   $0x0,-0x9c(%rbp)
mov    -0x9c(%rbp),%eax
cmp    -0x90(%rbp),%eax
jge    163b <gen_allcolor_video+0x4bb>
movl   $0x0,-0x98(%rbp)
mov    -0x98(%rbp),%eax
cmp    -0x8c(%rbp),%eax
jge    1622 <gen_allcolor_video+0x4a2>
mov    -0x9c(%rbp),%eax
mov    %al,%dl
mov    -0x10(%rbp),%rax
mov    -0x9c(%rbp),%ecx
imul   -0x8c(%rbp),%ecx
add    -0x98(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x98(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x98(%rbp)
jmp    15d7 <gen_allcolor_video+0x457>
jmp    1627 <gen_allcolor_video+0x4a7>
mov    -0x9c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9c(%rbp)
jmp    15bb <gen_allcolor_video+0x43b>
mov    -0x10(%rbp),%rdi
mov    -0x8c(%rbp),%esi
imul   -0x90(%rbp),%esi
mov    -0x88(%rbp),%rcx
mov    $0x1,%edx
call   10a0 <fwrite@plt>
mov    -0xa0(%rbp),%esi
lea    0x9d7(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0xa0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa0(%rbp)
jmp    1447 <gen_allcolor_video+0x2c7>
mov    -0x88(%rbp),%rdi
call   1040 <fclose@plt>
mov    -0x10(%rbp),%rdi
call   1030 <free@plt>
lea    -0x80(%rbp),%rsi
lea    0x9b7(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0xa0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<gen_allcolor_video>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x70,%rsp
pxor   %xmm0,%xmm0
movdqa %xmm0,0x50(%rsp)
movdqa %xmm0,0x40(%rsp)
movdqa %xmm0,0x30(%rsp)
movdqa %xmm0,0x20(%rsp)
movdqa %xmm0,0x10(%rsp)
movdqa %xmm0,(%rsp)
movl   $0x0,0x60(%rsp)
mov    $0x30000,%edi
call   1070 <malloc@plt>
mov    %rax,%r15
lea    0xf31(%rip),%rsi
mov    %rsp,%rbx
mov    %rbx,%rdi
mov    $0x100,%edx
mov    $0x100,%ecx
call   1090 <sprintf@plt>
lea    0xf37(%rip),%rsi
mov    %rbx,%rdi
call   1080 <fopen@plt>
test   %rax,%rax
je     1973 <gen_allcolor_video+0x7f3>
mov    %rax,%r12
mov    %r15,%rbp
add    $0x5,%rbp
lea    0xf34(%rip),%r14
xor    %ebx,%ebx
nop
mov    %rbp,%rdi
xor    %ecx,%ecx
cs nopw 0x0(%rax,%rax,1)
nop
mov    %rdi,%rdx
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
nop
mov    %sil,-0x5(%rdx)
mov    %cl,-0x4(%rdx)
mov    %bl,-0x3(%rdx)
mov    %esi,%eax
or     $0x1,%al
mov    %al,-0x2(%rdx)
mov    %cl,-0x1(%rdx)
mov    %bl,(%rdx)
add    $0x2,%rsi
add    $0x6,%rdx
cmp    $0x100,%rsi
jne    1230 <gen_allcolor_video+0xb0>
add    $0x1,%rcx
add    $0x300,%rdi
cmp    $0x100,%rcx
jne    1220 <gen_allcolor_video+0xa0>
mov    %r15,%rdi
mov    $0x30000,%esi
mov    $0x1,%edx
mov    %r12,%rcx
call   10a0 <fwrite@plt>
mov    %r14,%rdi
mov    %ebx,%esi
xor    %eax,%eax
call   1050 <printf@plt>
add    $0x1,%ebx
cmp    $0x100,%ebx
jne    1210 <gen_allcolor_video+0x90>
mov    %r12,%rdi
call   1040 <fclose@plt>
mov    %r15,%rdi
call   1030 <free@plt>
lea    0xeaa(%rip),%rdi
mov    %rsp,%rbp
mov    %rbp,%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x10000,%edi
call   1070 <malloc@plt>
mov    %rax,%rbx
lea    0xe9e(%rip),%rsi
mov    %rbp,%rdi
mov    $0x100,%edx
mov    $0x100,%ecx
call   1090 <sprintf@plt>
lea    0xe36(%rip),%rsi
mov    %rbp,%rdi
call   1080 <fopen@plt>
test   %rax,%rax
je     1973 <gen_allcolor_video+0x7f3>
mov    %rax,%r14
mov    %rbx,%r12
add    $0x700,%r12
lea    0xe30(%rip),%r15
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    $0x10000,%edx
mov    %rbx,%rdi
mov    %ebp,%esi
call   1060 <memset@plt>
mov    %rbx,%rdi
mov    $0x10000,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   10a0 <fwrite@plt>
mov    $0xf0,%eax
movaps 0xcaf(%rip),%xmm8
movaps 0xcb7(%rip),%xmm9
movaps 0xcbf(%rip),%xmm10
movaps 0xcc7(%rip),%xmm11
movaps 0xccf(%rip),%xmm12
movaps 0xcd7(%rip),%xmm13
movaps 0xcdf(%rip),%xmm14
movaps 0xce7(%rip),%xmm15
movdqa 0xcef(%rip),%xmm0
movaps 0xcf8(%rip),%xmm1
movaps 0xd01(%rip),%xmm2
movaps 0xd0a(%rip),%xmm3
movaps 0xd13(%rip),%xmm4
movaps 0xd1c(%rip),%xmm5
movaps 0xd25(%rip),%xmm6
movaps 0xd2e(%rip),%xmm7
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movups %xmm8,-0xf0(%rbx,%rax,1)
ff ff
movups %xmm9,-0xe0(%rbx,%rax,1)
ff ff
movups %xmm10,-0xd0(%rbx,%rax,1)
ff ff
movups %xmm11,-0xc0(%rbx,%rax,1)
ff ff
movups %xmm12,-0xb0(%rbx,%rax,1)
ff ff
movups %xmm13,-0xa0(%rbx,%rax,1)
ff ff
movups %xmm14,-0x90(%rbx,%rax,1)
ff ff
movups %xmm15,-0x80(%rbx,%rax,1)
movdqu %xmm0,-0x70(%rbx,%rax,1)
movups %xmm1,-0x60(%rbx,%rax,1)
movups %xmm2,-0x50(%rbx,%rax,1)
movups %xmm3,-0x40(%rbx,%rax,1)
movups %xmm4,-0x30(%rbx,%rax,1)
movups %xmm5,-0x20(%rbx,%rax,1)
movups %xmm6,-0x10(%rbx,%rax,1)
movups %xmm7,(%rbx,%rax,1)
add    $0x100,%rax
cmp    $0x100f0,%rax
jne    13d0 <gen_allcolor_video+0x250>
mov    %rbx,%rdi
mov    $0x10000,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   10a0 <fwrite@plt>
mov    %r12,%rax
xor    %ecx,%ecx
cs nopw 0x0(%rax,%rax,1)
nop
movd   %ecx,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqu %xmm0,-0x610(%rax)
ff
movdqu %xmm0,-0x620(%rax)
ff
movdqu %xmm0,-0x630(%rax)
ff
movdqu %xmm0,-0x640(%rax)
ff
movdqu %xmm0,-0x650(%rax)
ff
movdqu %xmm0,-0x660(%rax)
ff
movdqu %xmm0,-0x670(%rax)
ff
movdqu %xmm0,-0x680(%rax)
ff
movdqu %xmm0,-0x690(%rax)
ff
movdqu %xmm0,-0x6a0(%rax)
ff
movdqu %xmm0,-0x6b0(%rax)
ff
movdqu %xmm0,-0x6c0(%rax)
ff
movdqu %xmm0,-0x6d0(%rax)
ff
movdqu %xmm0,-0x6e0(%rax)
ff
movdqu %xmm0,-0x6f0(%rax)
ff
movdqu %xmm0,-0x700(%rax)
ff
mov    %ecx,%edx
or     $0x1,%dl
movzbl %dl,%edx
movd   %edx,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqu %xmm0,-0x600(%rax)
ff
movdqu %xmm0,-0x5f0(%rax)
ff
movdqu %xmm0,-0x5e0(%rax)
ff
movdqu %xmm0,-0x5d0(%rax)
ff
movdqu %xmm0,-0x5c0(%rax)
ff
movdqu %xmm0,-0x5b0(%rax)
ff
movdqu %xmm0,-0x5a0(%rax)
ff
movdqu %xmm0,-0x590(%rax)
ff
movdqu %xmm0,-0x580(%rax)
ff
movdqu %xmm0,-0x570(%rax)
ff
movdqu %xmm0,-0x560(%rax)
ff
movdqu %xmm0,-0x550(%rax)
ff
movdqu %xmm0,-0x540(%rax)
ff
movdqu %xmm0,-0x530(%rax)
ff
movdqu %xmm0,-0x520(%rax)
ff
movdqu %xmm0,-0x510(%rax)
ff
mov    %ecx,%edx
or     $0x2,%dl
movzbl %dl,%edx
movd   %edx,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqu %xmm0,-0x410(%rax)
ff
movdqu %xmm0,-0x420(%rax)
ff
movdqu %xmm0,-0x430(%rax)
ff
movdqu %xmm0,-0x440(%rax)
ff
movdqu %xmm0,-0x450(%rax)
ff
movdqu %xmm0,-0x460(%rax)
ff
movdqu %xmm0,-0x470(%rax)
ff
movdqu %xmm0,-0x480(%rax)
ff
movdqu %xmm0,-0x490(%rax)
ff
movdqu %xmm0,-0x4a0(%rax)
ff
movdqu %xmm0,-0x4b0(%rax)
ff
movdqu %xmm0,-0x4c0(%rax)
ff
movdqu %xmm0,-0x4d0(%rax)
ff
movdqu %xmm0,-0x4e0(%rax)
ff
movdqu %xmm0,-0x4f0(%rax)
ff
movdqu %xmm0,-0x500(%rax)
ff
mov    %ecx,%edx
or     $0x3,%dl
movzbl %dl,%edx
movd   %edx,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqu %xmm0,-0x400(%rax)
ff
movdqu %xmm0,-0x3f0(%rax)
ff
movdqu %xmm0,-0x3e0(%rax)
ff
movdqu %xmm0,-0x3d0(%rax)
ff
movdqu %xmm0,-0x3c0(%rax)
ff
movdqu %xmm0,-0x3b0(%rax)
ff
movdqu %xmm0,-0x3a0(%rax)
ff
movdqu %xmm0,-0x390(%rax)
ff
movdqu %xmm0,-0x380(%rax)
ff
movdqu %xmm0,-0x370(%rax)
ff
movdqu %xmm0,-0x360(%rax)
ff
movdqu %xmm0,-0x350(%rax)
ff
movdqu %xmm0,-0x340(%rax)
ff
movdqu %xmm0,-0x330(%rax)
ff
movdqu %xmm0,-0x320(%rax)
ff
movdqu %xmm0,-0x310(%rax)
ff
mov    %ecx,%edx
or     $0x4,%dl
movzbl %dl,%edx
movd   %edx,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqu %xmm0,-0x210(%rax)
ff
movdqu %xmm0,-0x220(%rax)
ff
movdqu %xmm0,-0x230(%rax)
ff
movdqu %xmm0,-0x240(%rax)
ff
movdqu %xmm0,-0x250(%rax)
ff
movdqu %xmm0,-0x260(%rax)
ff
movdqu %xmm0,-0x270(%rax)
ff
movdqu %xmm0,-0x280(%rax)
ff
movdqu %xmm0,-0x290(%rax)
ff
movdqu %xmm0,-0x2a0(%rax)
ff
movdqu %xmm0,-0x2b0(%rax)
ff
movdqu %xmm0,-0x2c0(%rax)
ff
movdqu %xmm0,-0x2d0(%rax)
ff
movdqu %xmm0,-0x2e0(%rax)
ff
movdqu %xmm0,-0x2f0(%rax)
ff
movdqu %xmm0,-0x300(%rax)
ff
mov    %ecx,%edx
or     $0x5,%dl
movzbl %dl,%edx
movd   %edx,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqu %xmm0,-0x110(%rax)
ff
movdqu %xmm0,-0x120(%rax)
ff
movdqu %xmm0,-0x130(%rax)
ff
movdqu %xmm0,-0x140(%rax)
ff
movdqu %xmm0,-0x150(%rax)
ff
movdqu %xmm0,-0x160(%rax)
ff
movdqu %xmm0,-0x170(%rax)
ff
movdqu %xmm0,-0x180(%rax)
ff
movdqu %xmm0,-0x190(%rax)
ff
movdqu %xmm0,-0x1a0(%rax)
ff
movdqu %xmm0,-0x1b0(%rax)
ff
movdqu %xmm0,-0x1c0(%rax)
ff
movdqu %xmm0,-0x1d0(%rax)
ff
movdqu %xmm0,-0x1e0(%rax)
ff
movdqu %xmm0,-0x1f0(%rax)
ff
movdqu %xmm0,-0x200(%rax)
ff
mov    %ecx,%edx
or     $0x6,%dl
movzbl %dl,%edx
movd   %edx,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqu %xmm0,-0x10(%rax)
movdqu %xmm0,-0x20(%rax)
movdqu %xmm0,-0x30(%rax)
movdqu %xmm0,-0x40(%rax)
movdqu %xmm0,-0x50(%rax)
movdqu %xmm0,-0x60(%rax)
movdqu %xmm0,-0x70(%rax)
movdqu %xmm0,-0x80(%rax)
movdqu %xmm0,-0x90(%rax)
ff
movdqu %xmm0,-0xa0(%rax)
ff
movdqu %xmm0,-0xb0(%rax)
ff
movdqu %xmm0,-0xc0(%rax)
ff
movdqu %xmm0,-0xd0(%rax)
ff
movdqu %xmm0,-0xe0(%rax)
ff
movdqu %xmm0,-0xf0(%rax)
ff
movdqu %xmm0,-0x100(%rax)
ff
mov    %ecx,%edx
or     $0x7,%dl
movzbl %dl,%edx
movd   %edx,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqu %xmm0,0xf0(%rax)
movdqu %xmm0,0xe0(%rax)
movdqu %xmm0,0xd0(%rax)
movdqu %xmm0,0xc0(%rax)
movdqu %xmm0,0xb0(%rax)
movdqu %xmm0,0xa0(%rax)
movdqu %xmm0,0x90(%rax)
movdqu %xmm0,0x80(%rax)
movdqu %xmm0,0x70(%rax)
movdqu %xmm0,0x60(%rax)
movdqu %xmm0,0x50(%rax)
movdqu %xmm0,0x40(%rax)
movdqu %xmm0,0x30(%rax)
movdqu %xmm0,0x20(%rax)
movdqu %xmm0,0x10(%rax)
movdqu %xmm0,(%rax)
add    $0x8,%rcx
add    $0x800,%rax
cmp    $0x100,%rcx
jne    1470 <gen_allcolor_video+0x2f0>
mov    %rbx,%rdi
mov    $0x10000,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   10a0 <fwrite@plt>
mov    %r15,%rdi
mov    %ebp,%esi
xor    %eax,%eax
call   1050 <printf@plt>
add    $0x1,%ebp
cmp    $0x100,%ebp
jne    1320 <gen_allcolor_video+0x1a0>
mov    %r14,%rdi
call   1040 <fclose@plt>
mov    %rbx,%rdi
call   1030 <free@plt>
lea    0x7f7(%rip),%rdi
xor    %ebx,%ebx
mov    %rsp,%rsi
xor    %eax,%eax
call   1050 <printf@plt>
jmp    1986 <gen_allcolor_video+0x806>
lea    0x7ac(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xffffffff,%ebx
mov    %ebx,%eax
add    $0x70,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [34 x i8] c"allcolor_xr_yg_zb_%dx%d_rgb24.rgb\00"
@.str.1 = [4 x i8] c"wb+\00"
@.str.2 = [27 x i8] c"Error: Cannot create file!\00"
@.str.3 = [27 x i8] c"Finish generate frame %d!\0A\00"
@.str.4 = [21 x i8] c"Finish generate %s!\0A\00"
@.str.5 = [36 x i8] c"allcolor_xu_yv_zy_%dx%d_yuv444p.yuv\00"
define i32 @gen_allcolor_video() {
%1 = alloca i32
%2 = alloca i8*
%3 = alloca [100 x i8]
%4 = alloca i32*
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
store i8* null, i8** %2
%11 = bitcast [100 x i8]* %3 to i8*
store i32* null, i32** %4
store i32 256, i32* %5
store i32 256, i32* %6
store i32 256, i32* %7
store i32 0, i32* %8
store i32 0, i32* %9
store i32 0, i32* %10
%12 = load i32, i32* %5
%13 = load i32, i32* %6
%14 = mul nsw i32 %12, %13
%15 = mul nsw i32 %14, 3
%16 = call i64 @malloc(i32 %15)
%17 = inttoptr i64 %16 to i8*
store i8* %17, i8** %2
%18 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 0
%19 = load i32, i32* %5
%20 = load i32, i32* %6
%21 = call i32 @sprintf(i8* %18, i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str, i64 0, i64 0), i32 %19, i32 %20)
%22 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 0
%23 = call i32* @fopen(i8* %22, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0))
store i32* %23, i32** %4
%24 = icmp eq i32* %23, null
br i1 %24, label %25, label %27
25: ; preds = %0
%26 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.2, i64 0, i64 0))
store i32 -1, i32* %1
br label %240
27: ; preds = %0
store i32 0, i32* %10
br label %28
28: ; preds = %96, %27
%29 = load i32, i32* %10
%30 = load i32, i32* %7
%31 = icmp slt i32 %29, %30
br i1 %31, label %32, label %99
32: ; preds = %28
store i32 0, i32* %9
br label %33
33: ; preds = %83, %32
%34 = load i32, i32* %9
%35 = load i32, i32* %6
%36 = icmp slt i32 %34, %35
br i1 %36, label %37, label %86
37: ; preds = %33
store i32 0, i32* %8
br label %38
38: ; preds = %79, %37
%39 = load i32, i32* %8
%40 = load i32, i32* %5
%41 = icmp slt i32 %39, %40
br i1 %41, label %42, label %82
42: ; preds = %38
%43 = load i32, i32* %8
%44 = trunc i32 %43 to i8
%45 = load i8*, i8** %2
%46 = load i32, i32* %9
%47 = load i32, i32* %5
%48 = mul nsw i32 %46, %47
%49 = load i32, i32* %8
%50 = add nsw i32 %48, %49
%51 = mul nsw i32 %50, 3
%52 = add nsw i32 %51, 0
%53 = sext i32 %52 to i64
%54 = getelementptr inbounds i8, i8* %45, i64 %53
store i8 %44, i8* %54
%55 = load i32, i32* %9
%56 = trunc i32 %55 to i8
%57 = load i8*, i8** %2
%58 = load i32, i32* %9
%59 = load i32, i32* %5
%60 = mul nsw i32 %58, %59
%61 = load i32, i32* %8
%62 = add nsw i32 %60, %61
%63 = mul nsw i32 %62, 3
%64 = add nsw i32 %63, 1
%65 = sext i32 %64 to i64
%66 = getelementptr inbounds i8, i8* %57, i64 %65
store i8 %56, i8* %66
%67 = load i32, i32* %10
%68 = trunc i32 %67 to i8
%69 = load i8*, i8** %2
%70 = load i32, i32* %9
%71 = load i32, i32* %5
%72 = mul nsw i32 %70, %71
%73 = load i32, i32* %8
%74 = add nsw i32 %72, %73
%75 = mul nsw i32 %74, 3
%76 = add nsw i32 %75, 2
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds i8, i8* %69, i64 %77
store i8 %68, i8* %78
br label %79
79: ; preds = %42
%80 = load i32, i32* %8
%81 = add nsw i32 %80, 1
store i32 %81, i32* %8
br label %38
82: ; preds = %38
br label %83
83: ; preds = %82
%84 = load i32, i32* %9
%85 = add nsw i32 %84, 1
store i32 %85, i32* %9
br label %33
86: ; preds = %33
%87 = load i8*, i8** %2
%88 = load i32, i32* %5
%89 = load i32, i32* %6
%90 = mul nsw i32 %88, %89
%91 = mul nsw i32 %90, 3
%92 = load i32*, i32** %4
%93 = call i32 @fwrite(i8* %87, i32 %91, i32 1, i32* %92)
%94 = load i32, i32* %10
%95 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.3, i64 0, i64 0), i32 %94)
br label %96
96: ; preds = %86
%97 = load i32, i32* %10
%98 = add nsw i32 %97, 1
store i32 %98, i32* %10
br label %28
99: ; preds = %28
%100 = load i32*, i32** %4
%101 = call i32 @fclose(i32* %100)
%102 = load i8*, i8** %2
%103 = call i32 @free(i8* %102)
%104 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 0
%105 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.4, i64 0, i64 0), i8* %104)
%106 = load i32, i32* %5
%107 = load i32, i32* %6
%108 = mul nsw i32 %106, %107
%109 = call i64 @malloc(i32 %108)
%110 = inttoptr i64 %109 to i8*
store i8* %110, i8** %2
%111 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 0
%112 = load i32, i32* %5
%113 = load i32, i32* %6
%114 = call i32 @sprintf(i8* %111, i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.5, i64 0, i64 0), i32 %112, i32 %113)
%115 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 0
%116 = call i32* @fopen(i8* %115, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0))
store i32* %116, i32** %4
%117 = icmp eq i32* %116, null
br i1 %117, label %118, label %120
118: ; preds = %99
%119 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.2, i64 0, i64 0))
store i32 -1, i32* %1
br label %240
120: ; preds = %99
store i32 0, i32* %10
br label %121
121: ; preds = %230, %120
%122 = load i32, i32* %10
%123 = load i32, i32* %7
%124 = icmp slt i32 %122, %123
br i1 %124, label %125, label %233
125: ; preds = %121
store i32 0, i32* %9
br label %126
126: ; preds = %150, %125
%127 = load i32, i32* %9
%128 = load i32, i32* %6
%129 = icmp slt i32 %127, %128
br i1 %129, label %130, label %153
130: ; preds = %126
store i32 0, i32* %8
br label %131
131: ; preds = %146, %130
%132 = load i32, i32* %8
%133 = load i32, i32* %5
%134 = icmp slt i32 %132, %133
br i1 %134, label %135, label %149
135: ; preds = %131
%136 = load i32, i32* %10
%137 = trunc i32 %136 to i8
%138 = load i8*, i8** %2
%139 = load i32, i32* %9
%140 = load i32, i32* %5
%141 = mul nsw i32 %139, %140
%142 = load i32, i32* %8
%143 = add nsw i32 %141, %142
%144 = sext i32 %143 to i64
%145 = getelementptr inbounds i8, i8* %138, i64 %144
store i8 %137, i8* %145
br label %146
146: ; preds = %135
%147 = load i32, i32* %8
%148 = add nsw i32 %147, 1
store i32 %148, i32* %8
br label %131
149: ; preds = %131
br label %150
150: ; preds = %149
%151 = load i32, i32* %9
%152 = add nsw i32 %151, 1
store i32 %152, i32* %9
br label %126
153: ; preds = %126
%154 = load i8*, i8** %2
%155 = load i32, i32* %5
%156 = load i32, i32* %6
%157 = mul nsw i32 %155, %156
%158 = load i32*, i32** %4
%159 = call i32 @fwrite(i8* %154, i32 %157, i32 1, i32* %158)
store i32 0, i32* %9
br label %160
160: ; preds = %184, %153
%161 = load i32, i32* %9
%162 = load i32, i32* %6
%163 = icmp slt i32 %161, %162
br i1 %163, label %164, label %187
164: ; preds = %160
store i32 0, i32* %8
br label %165
165: ; preds = %180, %164
%166 = load i32, i32* %8
%167 = load i32, i32* %5
%168 = icmp slt i32 %166, %167
br i1 %168, label %169, label %183
169: ; preds = %165
%170 = load i32, i32* %8
%171 = trunc i32 %170 to i8
%172 = load i8*, i8** %2
%173 = load i32, i32* %9
%174 = load i32, i32* %5
%175 = mul nsw i32 %173, %174
%176 = load i32, i32* %8
%177 = add nsw i32 %175, %176
%178 = sext i32 %177 to i64
%179 = getelementptr inbounds i8, i8* %172, i64 %178
store i8 %171, i8* %179
br label %180
180: ; preds = %169
%181 = load i32, i32* %8
%182 = add nsw i32 %181, 1
store i32 %182, i32* %8
br label %165
183: ; preds = %165
br label %184
184: ; preds = %183
%185 = load i32, i32* %9
%186 = add nsw i32 %185, 1
store i32 %186, i32* %9
br label %160
187: ; preds = %160
%188 = load i8*, i8** %2
%189 = load i32, i32* %5
%190 = load i32, i32* %6
%191 = mul nsw i32 %189, %190
%192 = load i32*, i32** %4
%193 = call i32 @fwrite(i8* %188, i32 %191, i32 1, i32* %192)
store i32 0, i32* %9
br label %194
194: ; preds = %218, %187
%195 = load i32, i32* %9
%196 = load i32, i32* %6
%197 = icmp slt i32 %195, %196
br i1 %197, label %198, label %221
198: ; preds = %194
store i32 0, i32* %8
br label %199
199: ; preds = %214, %198
%200 = load i32, i32* %8
%201 = load i32, i32* %5
%202 = icmp slt i32 %200, %201
br i1 %202, label %203, label %217
203: ; preds = %199
%204 = load i32, i32* %9
%205 = trunc i32 %204 to i8
%206 = load i8*, i8** %2
%207 = load i32, i32* %9
%208 = load i32, i32* %5
%209 = mul nsw i32 %207, %208
%210 = load i32, i32* %8
%211 = add nsw i32 %209, %210
%212 = sext i32 %211 to i64
%213 = getelementptr inbounds i8, i8* %206, i64 %212
store i8 %205, i8* %213
br label %214
214: ; preds = %203
%215 = load i32, i32* %8
%216 = add nsw i32 %215, 1
store i32 %216, i32* %8
br label %199
217: ; preds = %199
br label %218
218: ; preds = %217
%219 = load i32, i32* %9
%220 = add nsw i32 %219, 1
store i32 %220, i32* %9
br label %194
221: ; preds = %194
%222 = load i8*, i8** %2
%223 = load i32, i32* %5
%224 = load i32, i32* %6
%225 = mul nsw i32 %223, %224
%226 = load i32*, i32** %4
%227 = call i32 @fwrite(i8* %222, i32 %225, i32 1, i32* %226)
%228 = load i32, i32* %10
%229 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.3, i64 0, i64 0), i32 %228)
br label %230
230: ; preds = %221
%231 = load i32, i32* %10
%232 = add nsw i32 %231, 1
store i32 %232, i32* %10
br label %121
233: ; preds = %121
%234 = load i32*, i32** %4
%235 = call i32 @fclose(i32* %234)
%236 = load i8*, i8** %2
%237 = call i32 @free(i8* %236)
%238 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 0
%239 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.4, i64 0, i64 0), i8* %238)
store i32 0, i32* %1
br label %240
240: ; preds = %233, %118, %25
%241 = load i32, i32* %1
ret i32 %241
}

LLVM IR (-O2):
@.str = [34 x i8] c"allcolor_xr_yg_zb_%dx%d_rgb24.rgb\00"
@.str.1 = [4 x i8] c"wb+\00"
@.str.2 = [27 x i8] c"Error: Cannot create file!\00"
@.str.3 = [27 x i8] c"Finish generate frame %d!\0A\00"
@.str.4 = [21 x i8] c"Finish generate %s!\0A\00"
@.str.5 = [36 x i8] c"allcolor_xu_yv_zy_%dx%d_yuv444p.yuv\00"
define i32 @gen_allcolor_video() {
%1 = alloca [100 x i8]
%2 = getelementptr inbounds [100 x i8], [100 x i8]* %1, i64 0, i64 0
%3 = tail call i64 @malloc(i32 196608)
%4 = inttoptr i64 %3 to i8*
%5 = call i32 @sprintf(i8* %2, i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @.str, i64 0, i64 0), i32 256, i32 256)
%6 = call i32* @fopen(i8* %2, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0))
%7 = icmp eq i32* %6, null
br i1 %7, label %8, label %10
8: ; preds = %0
%9 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.2, i64 0, i64 0))
br label %151
10: ; preds = %0, %41
%11 = phi i32 [ %44, %41 ], [ 0, %0 ]
%12 = trunc i32 %11 to i8
br label %13
13: ; preds = %10, %38
%14 = phi i64 [ 0, %10 ], [ %39, %38 ]
%15 = shl nsw i64 %14, 8
%16 = trunc i64 %14 to i8
br label %17
17: ; preds = %17, %13
%18 = phi i64 [ 0, %13 ], [ %36, %17 ]
%19 = trunc i64 %18 to i8
%20 = add nuw nsw i64 %18, %15
%21 = mul nuw nsw i64 %20, 3
%22 = getelementptr inbounds i8, i8* %4, i64 %21
store i8 %19, i8* %22
%23 = or i64 %21, 1
%24 = getelementptr inbounds i8, i8* %4, i64 %23
store i8 %16, i8* %24
%25 = add nuw nsw i64 %21, 2
%26 = getelementptr inbounds i8, i8* %4, i64 %25
store i8 %12, i8* %26
%27 = or i64 %18, 1
%28 = trunc i64 %27 to i8
%29 = add nuw nsw i64 %27, %15
%30 = mul nuw nsw i64 %29, 3
%31 = getelementptr inbounds i8, i8* %4, i64 %30
store i8 %28, i8* %31
%32 = add nuw nsw i64 %30, 1
%33 = getelementptr inbounds i8, i8* %4, i64 %32
store i8 %16, i8* %33
%34 = add nuw nsw i64 %30, 2
%35 = getelementptr inbounds i8, i8* %4, i64 %34
store i8 %12, i8* %35
%36 = add nuw nsw i64 %18, 2
%37 = icmp eq i64 %36, 256
br i1 %37, label %38, label %17
38: ; preds = %17
%39 = add nuw nsw i64 %14, 1
%40 = icmp eq i64 %39, 256
br i1 %40, label %41, label %13
41: ; preds = %38
%42 = tail call i32 @fwrite(i8* %4, i32 196608, i32 1, i32* %6)
%43 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.3, i64 0, i64 0), i32 %11)
%44 = add nuw nsw i32 %11, 1
%45 = icmp eq i32 %44, 256
br i1 %45, label %46, label %10
46: ; preds = %41
%47 = tail call i32 @fclose(i32* %6)
%48 = tail call i32 @free(i8* %4)
%49 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.4, i64 0, i64 0), i8* %2)
%50 = call i64 @malloc(i32 65536)
%51 = inttoptr i64 %50 to i8*
%52 = call i32 @sprintf(i8* %2, i8* dereferenceable(1) getelementptr inbounds ([36 x i8], [36 x i8]* @.str.5, i64 0, i64 0), i32 256, i32 256)
%53 = call i32* @fopen(i8* %2, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0))
%54 = icmp eq i32* %53, null
br i1 %54, label %55, label %57
55: ; preds = %46
%56 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.2, i64 0, i64 0))
br label %151
57: ; preds = %46, %142
%58 = phi i32 [ %145, %142 ], [ 0, %46 ]
%59 = trunc i32 %58 to i8
%60 = call i32 @fwrite(i8* %51, i32 65536, i32 1, i32* %53)
br label %61
61: ; preds = %57, %61
%62 = phi i64 [ 0, %57 ], [ %103, %61 ]
%63 = shl nsw i64 %62, 8
%64 = getelementptr inbounds i8, i8* %51, i64 %63
%65 = bitcast i8* %64 to <16 x i8>*
store <16 x i8> <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15>, <16 x i8>* %65
%66 = getelementptr inbounds i8, i8* %64, i64 16
%67 = bitcast i8* %66 to <16 x i8>*
store <16 x i8> <i8 16, i8 17, i8 18, i8 19, i8 20, i8 21, i8 22, i8 23, i8 24, i8 25, i8 26, i8 27, i8 28, i8 29, i8 30, i8 31>, <16 x i8>* %67
%68 = or i64 %63, 32
%69 = getelementptr inbounds i8, i8* %51, i64 %68
%70 = bitcast i8* %69 to <16 x i8>*
store <16 x i8> <i8 32, i8 33, i8 34, i8 35, i8 36, i8 37, i8 38, i8 39, i8 40, i8 41, i8 42, i8 43, i8 44, i8 45, i8 46, i8 47>, <16 x i8>* %70
%71 = getelementptr inbounds i8, i8* %69, i64 16
%72 = bitcast i8* %71 to <16 x i8>*
store <16 x i8> <i8 48, i8 49, i8 50, i8 51, i8 52, i8 53, i8 54, i8 55, i8 56, i8 57, i8 58, i8 59, i8 60, i8 61, i8 62, i8 63>, <16 x i8>* %72
%73 = or i64 %63, 64
%74 = getelementptr inbounds i8, i8* %51, i64 %73
%75 = bitcast i8* %74 to <16 x i8>*
store <16 x i8> <i8 64, i8 65, i8 66, i8 67, i8 68, i8 69, i8 70, i8 71, i8 72, i8 73, i8 74, i8 75, i8 76, i8 77, i8 78, i8 79>, <16 x i8>* %75
%76 = getelementptr inbounds i8, i8* %74, i64 16
%77 = bitcast i8* %76 to <16 x i8>*
store <16 x i8> <i8 80, i8 81, i8 82, i8 83, i8 84, i8 85, i8 86, i8 87, i8 88, i8 89, i8 90, i8 91, i8 92, i8 93, i8 94, i8 95>, <16 x i8>* %77
%78 = or i64 %63, 96
%79 = getelementptr inbounds i8, i8* %51, i64 %78
%80 = bitcast i8* %79 to <16 x i8>*
store <16 x i8> <i8 96, i8 97, i8 98, i8 99, i8 100, i8 101, i8 102, i8 103, i8 104, i8 105, i8 106, i8 107, i8 108, i8 109, i8 110, i8 111>, <16 x i8>* %80
%81 = getelementptr inbounds i8, i8* %79, i64 16
%82 = bitcast i8* %81 to <16 x i8>*
store <16 x i8> <i8 112, i8 113, i8 114, i8 115, i8 116, i8 117, i8 118, i8 119, i8 120, i8 121, i8 122, i8 123, i8 124, i8 125, i8 126, i8 127>, <16 x i8>* %82
%83 = or i64 %63, 128
%84 = getelementptr inbounds i8, i8* %51, i64 %83
%85 = bitcast i8* %84 to <16 x i8>*
store <16 x i8> <i8 -128, i8 -127, i8 -126, i8 -125, i8 -124, i8 -123, i8 -122, i8 -121, i8 -120, i8 -119, i8 -118, i8 -117, i8 -116, i8 -115, i8 -114, i8 -113>, <16 x i8>* %85
%86 = getelementptr inbounds i8, i8* %84, i64 16
%87 = bitcast i8* %86 to <16 x i8>*
store <16 x i8> <i8 -112, i8 -111, i8 -110, i8 -109, i8 -108, i8 -107, i8 -106, i8 -105, i8 -104, i8 -103, i8 -102, i8 -101, i8 -100, i8 -99, i8 -98, i8 -97>, <16 x i8>* %87
%88 = or i64 %63, 160
%89 = getelementptr inbounds i8, i8* %51, i64 %88
%90 = bitcast i8* %89 to <16 x i8>*
store <16 x i8> <i8 -96, i8 -95, i8 -94, i8 -93, i8 -92, i8 -91, i8 -90, i8 -89, i8 -88, i8 -87, i8 -86, i8 -85, i8 -84, i8 -83, i8 -82, i8 -81>, <16 x i8>* %90
%91 = getelementptr inbounds i8, i8* %89, i64 16
%92 = bitcast i8* %91 to <16 x i8>*
store <16 x i8> <i8 -80, i8 -79, i8 -78, i8 -77, i8 -76, i8 -75, i8 -74, i8 -73, i8 -72, i8 -71, i8 -70, i8 -69, i8 -68, i8 -67, i8 -66, i8 -65>, <16 x i8>* %92
%93 = or i64 %63, 192
%94 = getelementptr inbounds i8, i8* %51, i64 %93
%95 = bitcast i8* %94 to <16 x i8>*
store <16 x i8> <i8 -64, i8 -63, i8 -62, i8 -61, i8 -60, i8 -59, i8 -58, i8 -57, i8 -56, i8 -55, i8 -54, i8 -53, i8 -52, i8 -51, i8 -50, i8 -49>, <16 x i8>* %95
%96 = getelementptr inbounds i8, i8* %94, i64 16
%97 = bitcast i8* %96 to <16 x i8>*
store <16 x i8> <i8 -48, i8 -47, i8 -46, i8 -45, i8 -44, i8 -43, i8 -42, i8 -41, i8 -40, i8 -39, i8 -38, i8 -37, i8 -36, i8 -35, i8 -34, i8 -33>, <16 x i8>* %97
%98 = or i64 %63, 224
%99 = getelementptr inbounds i8, i8* %51, i64 %98
%100 = bitcast i8* %99 to <16 x i8>*
store <16 x i8> <i8 -32, i8 -31, i8 -30, i8 -29, i8 -28, i8 -27, i8 -26, i8 -25, i8 -24, i8 -23, i8 -22, i8 -21, i8 -20, i8 -19, i8 -18, i8 -17>, <16 x i8>* %100
%101 = getelementptr inbounds i8, i8* %99, i64 16
%102 = bitcast i8* %101 to <16 x i8>*
store <16 x i8> <i8 -16, i8 -15, i8 -14, i8 -13, i8 -12, i8 -11, i8 -10, i8 -9, i8 -8, i8 -7, i8 -6, i8 -5, i8 -4, i8 -3, i8 -2, i8 -1>, <16 x i8>* %102
%103 = add nuw nsw i64 %62, 1
%104 = icmp eq i64 %103, 256
br i1 %104, label %105, label %61
105: ; preds = %61
%106 = call i32 @fwrite(i8* %51, i32 65536, i32 1, i32* %53)
br label %107
107: ; preds = %107, %105
%108 = phi i64 [ 0, %105 ], [ %140, %107 ]
%109 = shl nuw nsw i64 %108, 8
%110 = getelementptr i8, i8* %51, i64 %109
%111 = trunc i64 %108 to i8
%112 = or i64 %108, 1
%113 = shl nuw nsw i64 %112, 8
%114 = getelementptr i8, i8* %51, i64 %113
%115 = trunc i64 %112 to i8
%116 = or i64 %108, 2
%117 = shl nuw nsw i64 %116, 8
%118 = getelementptr i8, i8* %51, i64 %117
%119 = trunc i64 %116 to i8
%120 = or i64 %108, 3
%121 = shl nuw nsw i64 %120, 8
%122 = getelementptr i8, i8* %51, i64 %121
%123 = trunc i64 %120 to i8
%124 = or i64 %108, 4
%125 = shl nuw nsw i64 %124, 8
%126 = getelementptr i8, i8* %51, i64 %125
%127 = trunc i64 %124 to i8
%128 = or i64 %108, 5
%129 = shl nuw nsw i64 %128, 8
%130 = getelementptr i8, i8* %51, i64 %129
%131 = trunc i64 %128 to i8
%132 = or i64 %108, 6
%133 = shl nuw nsw i64 %132, 8
%134 = getelementptr i8, i8* %51, i64 %133
%135 = trunc i64 %132 to i8
%136 = or i64 %108, 7
%137 = shl nuw nsw i64 %136, 8
%138 = getelementptr i8, i8* %51, i64 %137
%139 = trunc i64 %136 to i8
%140 = add nuw nsw i64 %108, 8
%141 = icmp eq i64 %140, 256
br i1 %141, label %142, label %107
142: ; preds = %107
%143 = call i32 @fwrite(i8* %51, i32 65536, i32 1, i32* %53)
%144 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([27 x i8], [27 x i8]* @.str.3, i64 0, i64 0), i32 %58)
%145 = add nuw nsw i32 %58, 1
%146 = icmp eq i32 %145, 256
br i1 %146, label %147, label %57
147: ; preds = %142
%148 = call i32 @fclose(i32* %53)
%149 = call i32 @free(i8* %51)
%150 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @.str.4, i64 0, i64 0), i8* %2)
br label %151
151: ; preds = %147, %55, %8
%152 = phi i32 [ -1, %8 ], [ -1, %55 ], [ 0, %147 ]
ret i32 %152
}