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

/* Variables and functions */
int /*<<< orphan*/ fclose(int /*<<< orphan*/ *);
int /*<<< orphan*/ *fgets(char *, int, int /*<<< orphan*/ *);
int /*<<< orphan*/ *fopen(char *, char *);
int /*<<< orphan*/ memset(int *, int /*<<< orphan*/, int);
int /*<<< orphan*/ printf(char *, ...);
char *strchr(char *, char);
char *strstr(char *, char *);
void create_file(void) {
  char git_info[20][100], *p, *q;
  char head_name[100], branch_local[100];
  char config_info[200];
  FILE *fp, *cfg_fp;
  int i = 0, j, git_info_len[20], git_info_num = 11;
  fp = fopen(".git/HEAD", "r");
  if (fp) {
    if (fgets(head_name, 100, fp) == NULL)
      printf("/* warning: no head found! */\n");
    fclose(fp);
  }
  p = strstr(head_name, "refs/heads/");
  if (p) {
    p += sizeof("refs/heads/") - 1;
    q = strchr(head_name, '\n');
    while (p < q)
      branch_local[i++] = *p++;
  }
  printf("/* branch_local:%s */\n", branch_local);
  memset(git_info_len, 0, sizeof(git_info_len));
  cfg_fp = fopen(".git/config", "r");
  if (cfg_fp) {
    while (fgets(config_info, 200, cfg_fp)) {
      if (strstr(config_info, "branch") && strstr(config_info, branch_local)) {
        if (fgets(config_info, 200, cfg_fp) == NULL)
          printf("/* Warning: no origin config 				"
                 "			for the branch:%s */\n",
                 branch_local);
        if (fgets(config_info, 200, cfg_fp) == NULL)
          printf("/* Warning: no refs config for 			"
                 "				the branch:%s */\n",
                 branch_local);
        i = 0;
        p = strstr(config_info, "refs/heads/");
        if (p) {
          p += sizeof("refs/heads/") - 1;
          q = strchr(config_info, '\n');
          while (p < q)
            git_info[0][i++] = *p++;
        }
        git_info_len[0] = i;
        break;
      }
    }
    if (!git_info_len[0])
      printf("/* warning: no branch found! */\n");
    fclose(cfg_fp);
  }
  printf("/* branch_origin:%s */\n\n", git_info[0]);
  fp = fopen(".git/gitcommit_top10", "r");
  if (fp) {
    for (i = 1; i < 11; i++) {
      if (fgets(git_info[i], 50, fp) == NULL)
        printf("/* warning: no commint:%d found */\n", i);
      p = strchr(git_info[i], '\n');
      if (p)
        git_info_len[i] = p - git_info[i];
      else
        git_info_len[i] = 0;
    }
    fclose(fp);
  }
  printf("#include <asm/types.h>\n");
  printf("#if BITS_PER_LONG == 64\n");
  printf("#define PTR .quad\n");
  printf("#define ALGN .align 8\n");
  printf("#else\n");
  printf("#define PTR .long\n");
  printf("#define ALGN .align 4\n");
  printf("#endif\n");
  printf("\t.section .rodata, \"a\"\n");
  printf(".globl git_info_num\n");
  printf("\tALGN\n");
  printf("git_info_num:\n");
  printf("\tPTR\t%d\n", git_info_num);
  printf("\n");
  printf(".globl git_info\n");
  printf("\tALGN\n");
  printf("git_info:\n");
  for (i = 0; i < 11; i++) {
    printf("\t.byte 0x%02x", git_info_len[i]);
    for (j = 0; j < git_info_len[i]; j++)
      printf(", 0x%02x", git_info[i][j]);
    printf("\n");
  }
  printf("\n");
}


x86 assembly (clang, -O0):
<create_file>:
push   %rbp
mov    %rsp,%rbp
sub    $0xa10,%rsp
movl   $0x0,-0x9a4(%rbp)
movl   $0xb,-0xa04(%rbp)
lea    0xe6a(%rip),%rdi
lea    0xe6d(%rip),%rsi
call   1080 <fopen@plt>
mov    %rax,-0x998(%rbp)
cmpq   $0x0,-0x998(%rbp)
je     11f3 <create_file+0x83>
lea    -0x850(%rbp),%rdi
mov    -0x998(%rbp),%rdx
mov    $0x64,%esi
call   1070 <fgets@plt>
cmp    $0x0,%rax
jne    11e7 <create_file+0x77>
lea    0xe2c(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x998(%rbp),%rdi
call   1030 <fclose@plt>
lea    -0x850(%rbp),%rdi
lea    0xe2a(%rip),%rsi
call   1090 <strstr@plt>
mov    %rax,-0x7d8(%rbp)
cmpq   $0x0,-0x7d8(%rbp)
je     1294 <create_file+0x124>
mov    -0x7d8(%rbp),%rax
add    $0xb,%rax
mov    %rax,-0x7d8(%rbp)
lea    -0x850(%rbp),%rdi
mov    $0xa,%esi
call   1040 <strchr@plt>
mov    %rax,-0x7e0(%rbp)
mov    -0x7d8(%rbp),%rax
cmp    -0x7e0(%rbp),%rax
jae    128f <create_file+0x11f>
mov    -0x7d8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x7d8(%rbp)
mov    (%rax),%cl
mov    -0x9a4(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x9a4(%rbp)
cltq
mov    %cl,-0x8c0(%rbp,%rax,1)
jmp    1245 <create_file+0xd5>
jmp    1294 <create_file+0x124>
lea    -0x8c0(%rbp),%rsi
lea    0xd95(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    -0xa00(%rbp),%rdi
xor    %esi,%esi
mov    $0x50,%edx
call   1060 <memset@plt>
lea    0xd8b(%rip),%rdi
lea    0xd40(%rip),%rsi
call   1080 <fopen@plt>
mov    %rax,-0x9a0(%rbp)
cmpq   $0x0,-0x9a0(%rbp)
je     149b <create_file+0x32b>
jmp    12e9 <create_file+0x179>
lea    -0x990(%rbp),%rdi
mov    -0x9a0(%rbp),%rdx
mov    $0xc8,%esi
call   1070 <fgets@plt>
cmp    $0x0,%rax
je     1474 <create_file+0x304>
lea    -0x990(%rbp),%rdi
lea    0xd41(%rip),%rsi
call   1090 <strstr@plt>
cmp    $0x0,%rax
je     146f <create_file+0x2ff>
lea    -0x990(%rbp),%rdi
lea    -0x8c0(%rbp),%rsi
call   1090 <strstr@plt>
cmp    $0x0,%rax
je     146f <create_file+0x2ff>
lea    -0x990(%rbp),%rdi
mov    -0x9a0(%rbp),%rdx
mov    $0xc8,%esi
call   1070 <fgets@plt>
cmp    $0x0,%rax
jne    137c <create_file+0x20c>
lea    -0x8c0(%rbp),%rsi
lea    0xcec(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    -0x990(%rbp),%rdi
mov    -0x9a0(%rbp),%rdx
mov    $0xc8,%esi
call   1070 <fgets@plt>
cmp    $0x0,%rax
jne    13b3 <create_file+0x243>
lea    -0x8c0(%rbp),%rsi
lea    0xcef(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x9a4(%rbp)
lea    -0x990(%rbp),%rdi
lea    0xc60(%rip),%rsi
call   1090 <strstr@plt>
mov    %rax,-0x7d8(%rbp)
cmpq   $0x0,-0x7d8(%rbp)
je     145e <create_file+0x2ee>
mov    -0x7d8(%rbp),%rax
add    $0xb,%rax
mov    %rax,-0x7d8(%rbp)
lea    -0x990(%rbp),%rdi
mov    $0xa,%esi
call   1040 <strchr@plt>
mov    %rax,-0x7e0(%rbp)
mov    -0x7d8(%rbp),%rax
cmp    -0x7e0(%rbp),%rax
jae    1459 <create_file+0x2e9>
mov    -0x7d8(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x7d8(%rbp)
mov    (%rax),%cl
mov    -0x9a4(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x9a4(%rbp)
cltq
mov    %cl,-0x7d0(%rbp,%rax,1)
jmp    140f <create_file+0x29f>
jmp    145e <create_file+0x2ee>
mov    -0x9a4(%rbp),%eax
mov    %eax,-0xa00(%rbp)
jmp    1474 <create_file+0x304>
jmp    12e9 <create_file+0x179>
cmpl   $0x0,-0xa00(%rbp)
jne    148f <create_file+0x31f>
lea    0xc4b(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x9a0(%rbp),%rdi
call   1030 <fclose@plt>
lea    -0x7d0(%rbp),%rsi
lea    0xc4b(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xc56(%rip),%rdi
lea    0xb4c(%rip),%rsi
call   1080 <fopen@plt>
mov    %rax,-0x998(%rbp)
cmpq   $0x0,-0x998(%rbp)
je     15d2 <create_file+0x462>
movl   $0x1,-0x9a4(%rbp)
cmpl   $0xb,-0x9a4(%rbp)
jge    15c6 <create_file+0x456>
movslq -0x9a4(%rbp),%rax
lea    -0x7d0(%rbp),%rdi
imul   $0x64,%rax,%rax
add    %rax,%rdi
mov    -0x998(%rbp),%rdx
mov    $0x32,%esi
call   1070 <fgets@plt>
cmp    $0x0,%rax
jne    1533 <create_file+0x3c3>
mov    -0x9a4(%rbp),%esi
lea    0xbf6(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movslq -0x9a4(%rbp),%rax
lea    -0x7d0(%rbp),%rdi
imul   $0x64,%rax,%rax
add    %rax,%rdi
mov    $0xa,%esi
call   1040 <strchr@plt>
mov    %rax,-0x7d8(%rbp)
cmpq   $0x0,-0x7d8(%rbp)
je     159b <create_file+0x42b>
mov    -0x7d8(%rbp),%rax
movslq -0x9a4(%rbp),%rdx
lea    -0x7d0(%rbp),%rcx
imul   $0x64,%rdx,%rdx
add    %rdx,%rcx
sub    %rcx,%rax
mov    %eax,%ecx
movslq -0x9a4(%rbp),%rax
mov    %ecx,-0xa00(%rbp,%rax,4)
jmp    15ad <create_file+0x43d>
movslq -0x9a4(%rbp),%rax
movl   $0x0,-0xa00(%rbp,%rax,4)
jmp    15b2 <create_file+0x442>
mov    -0x9a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9a4(%rbp)
jmp    14e2 <create_file+0x372>
mov    -0x998(%rbp),%rdi
call   1030 <fclose@plt>
lea    0xb6d(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xb77(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xb82(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xb87(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xb90(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xb89(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xb8e(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xb97(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xb91(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xb9b(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xba2(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xb9b(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0xa04(%rbp),%esi
lea    0xb96(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xa76(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xb83(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xb56(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
lea    0xb78(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x9a4(%rbp)
cmpl   $0xb,-0x9a4(%rbp)
jge    1781 <create_file+0x611>
movslq -0x9a4(%rbp),%rax
mov    -0xa00(%rbp,%rax,4),%esi
lea    0xb50(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
movl   $0x0,-0x9a8(%rbp)
mov    -0x9a8(%rbp),%eax
movslq -0x9a4(%rbp),%rcx
cmp    -0xa00(%rbp,%rcx,4),%eax
jge    175f <create_file+0x5ef>
movslq -0x9a4(%rbp),%rcx
lea    -0x7d0(%rbp),%rax
imul   $0x64,%rcx,%rcx
add    %rcx,%rax
movslq -0x9a8(%rbp),%rcx
movsbl (%rax,%rcx,1),%esi
lea    0xb0c(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x9a8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9a8(%rbp)
jmp    1703 <create_file+0x593>
lea    0x9a5(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x9a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9a4(%rbp)
jmp    16d0 <create_file+0x560>
lea    0x983(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
add    $0xa10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<create_file>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x9d8,%rsp
lea    0xe58(%rip),%rdi
lea    0xe5b(%rip),%rsi
call   10a0 <fopen@plt>
test   %rax,%rax
je     11ea <create_file+0x5a>
mov    %rax,%rbx
lea    0x190(%rsp),%rdi
mov    $0x64,%esi
mov    %rax,%rdx
call   1090 <fgets@plt>
test   %rax,%rax
jne    11e2 <create_file+0x52>
lea    0x104e(%rip),%rdi
call   1040 <puts@plt>
mov    %rbx,%rdi
call   1050 <fclose@plt>
lea    0xe1b(%rip),%rsi
lea    0x190(%rsp),%rdi
call   10b0 <strstr@plt>
test   %rax,%rax
je     1270 <create_file+0xe0>
mov    %rax,%rbx
lea    0xb(%rax),%rbp
lea    0x190(%rsp),%rdi
mov    $0xa,%esi
call   1060 <strchr@plt>
cmp    %rax,%rbp
jae    1270 <create_file+0xe0>
mov    %rax,%r10
sub    %rbx,%r10
add    $0xfffffffffffffff5,%r10
cmp    $0x8,%r10
jb     124a <create_file+0xba>
mov    %rsp,%r8
cmp    %rax,%r8
jae    165b <create_file+0x4cb>
lea    (%rsp,%r10,1),%rcx
cmp    %rcx,%rbp
jae    165b <create_file+0x4cb>
xor    %ecx,%ecx
mov    %rbp,%rsi
lea    (%rsp,%rcx,1),%rdx
sub    %rcx,%rax
sub    %rbx,%rax
add    $0xfffffffffffffff5,%rax
xor    %ecx,%ecx
nop
movzbl (%rsi,%rcx,1),%ebx
mov    %bl,(%rdx,%rcx,1)
add    $0x1,%rcx
cmp    %rcx,%rax
jne    1260 <create_file+0xd0>
lea    0xda1(%rip),%rdi
mov    %rsp,%rsi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0x70(%rsp),%rdi
xor    %esi,%esi
mov    $0x50,%edx
call   1080 <memset@plt>
lea    0xd96(%rip),%rdi
lea    0xd6a(%rip),%rsi
call   10a0 <fopen@plt>
test   %rax,%rax
je     1446 <create_file+0x2b6>
mov    %rax,%r15
lea    0xc0(%rsp),%rdi
mov    $0xc8,%esi
mov    %rax,%rdx
call   1090 <fgets@plt>
test   %rax,%rax
je     142a <create_file+0x29a>
lea    0xd65(%rip),%rbp
lea    0xc0(%rsp),%rbx
mov    %rsp,%r14
jmp    1309 <create_file+0x179>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %rbx,%rdi
mov    $0xc8,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
test   %rax,%rax
je     142a <create_file+0x29a>
mov    %rbx,%rdi
mov    %rbp,%rsi
call   10b0 <strstr@plt>
test   %rax,%rax
je     12f0 <create_file+0x160>
mov    %rbx,%rdi
mov    %r14,%rsi
call   10b0 <strstr@plt>
test   %rax,%rax
je     12f0 <create_file+0x160>
lea    0xc0(%rsp),%rdi
mov    $0xc8,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
test   %rax,%rax
jne    1354 <create_file+0x1c4>
lea    0xcf8(%rip),%rdi
mov    %rsp,%rsi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0xc0(%rsp),%rdi
mov    $0xc8,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
test   %rax,%rax
jne    137f <create_file+0x1ef>
lea    0xd07(%rip),%rdi
mov    %rsp,%rsi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0xc86(%rip),%rsi
lea    0xc0(%rsp),%rdi
call   10b0 <strstr@plt>
xor    %ebp,%ebp
test   %rax,%rax
je     1420 <create_file+0x290>
mov    %rax,%r14
lea    0xb(%rax),%rbx
lea    0xc0(%rsp),%rdi
mov    $0xa,%esi
call   1060 <strchr@plt>
cmp    %rax,%rbx
jae    1420 <create_file+0x290>
mov    %rax,%rbp
sub    %r14,%rbp
add    $0xfffffffffffffff5,%rbp
cmp    $0x8,%rbp
jb     13f1 <create_file+0x261>
lea    0x200(%rsp),%r8
cmp    %rax,%r8
jae    1780 <create_file+0x5f0>
lea    (%rsp,%rbp,1),%rcx
add    $0x200,%rcx
cmp    %rcx,%rbx
jae    1780 <create_file+0x5f0>
xor    %ecx,%ecx
mov    %rbx,%rdx
lea    (%rsp,%rcx,1),%rsi
add    $0x200,%rsi
sub    %rcx,%rax
sub    %r14,%rax
add    $0xfffffffffffffff5,%rax
xor    %ecx,%ecx
nopl   (%rax)
movzbl (%rdx,%rcx,1),%ebx
mov    %bl,(%rsi,%rcx,1)
add    $0x1,%rcx
cmp    %rcx,%rax
jne    1410 <create_file+0x280>
mov    %ebp,0x70(%rsp)
test   %ebp,%ebp
jne    143e <create_file+0x2ae>
jmp    1432 <create_file+0x2a2>
mov    0x70(%rsp),%ebp
test   %ebp,%ebp
jne    143e <create_file+0x2ae>
lea    0xdd2(%rip),%rdi
call   1040 <puts@plt>
mov    %r15,%rdi
call   1050 <fclose@plt>
lea    0xc67(%rip),%rdi
xor    %ebx,%ebx
lea    0x200(%rsp),%r14
mov    %r14,%rsi
xor    %eax,%eax
call   1070 <printf@plt>
lea    0xc65(%rip),%rdi
lea    0xb9b(%rip),%rsi
call   10a0 <fopen@plt>
test   %rax,%rax
je     150e <create_file+0x37e>
mov    %rax,%rbp
lea    0x264(%rsp),%r15
lea    0x200(%rsp),%rax
mov    $0xffffff9c,%r13d
sub    %eax,%r13d
mov    $0x1,%r12d
jmp    14de <create_file+0x34e>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %r15,%rdi
mov    $0xa,%esi
call   1060 <strchr@plt>
lea    (%rax,%r13,1),%ecx
test   %rax,%rax
cmove  %ebx,%ecx
mov    %ecx,0x70(%rsp,%r12,4)
add    $0x1,%r12
add    $0x64,%r15
add    $0xffffff9c,%r13d
cmp    $0xb,%r12
je     1506 <create_file+0x376>
mov    %r15,%rdi
mov    $0x32,%esi
mov    %rbp,%rdx
call   1090 <fgets@plt>
test   %rax,%rax
jne    14b0 <create_file+0x320>
lea    0xbe8(%rip),%rdi
mov    %r12d,%esi
xor    %eax,%eax
call   1070 <printf@plt>
jmp    14b0 <create_file+0x320>
mov    %rbp,%rdi
call   1050 <fclose@plt>
lea    0xc11(%rip),%rdi
call   1040 <puts@plt>
lea    0xc1c(%rip),%rdi
call   1040 <puts@plt>
lea    0xc28(%rip),%rdi
call   1040 <puts@plt>
lea    0xc2e(%rip),%rdi
call   1040 <puts@plt>
lea    0xc38(%rip),%rdi
call   1040 <puts@plt>
lea    0xc32(%rip),%rdi
call   1040 <puts@plt>
lea    0xc38(%rip),%rdi
call   1040 <puts@plt>
lea    0xc42(%rip),%rdi
call   1040 <puts@plt>
lea    0xc3d(%rip),%rdi
call   1040 <puts@plt>
lea    0xc48(%rip),%rdi
call   1040 <puts@plt>
lea    0xc6e(%rip),%rbx
mov    %rbx,%rdi
call   1040 <puts@plt>
lea    0xc41(%rip),%rdi
call   1040 <puts@plt>
lea    0xb5e(%rip),%rdi
mov    $0xb,%esi
xor    %eax,%eax
call   1070 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
lea    0xc26(%rip),%rdi
call   1040 <puts@plt>
mov    %rbx,%rdi
call   1040 <puts@plt>
lea    0xc28(%rip),%rdi
call   1040 <puts@plt>
lea    0xb2a(%rip),%r15
lea    0xb31(%rip),%r12
xor    %ebp,%ebp
jmp    1608 <create_file+0x478>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x1,%rbp
add    $0x64,%r14
cmp    $0xb,%rbp
je     163f <create_file+0x4af>
mov    0x70(%rsp,%rbp,4),%esi
mov    %r15,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
cmpl   $0x0,0x70(%rsp,%rbp,4)
jle    15f0 <create_file+0x460>
xor    %ebx,%ebx
nop
movsbl (%r14,%rbx,1),%esi
mov    %r12,%rdi
xor    %eax,%eax
call   1070 <printf@plt>
add    $0x1,%rbx
movslq 0x70(%rsp,%rbp,4),%rax
cmp    %rax,%rbx
jl     1620 <create_file+0x490>
jmp    15f0 <create_file+0x460>
mov    $0xa,%edi
call   1030 <putchar@plt>
add    $0x9d8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
cmp    $0x20,%r10
jae    1668 <create_file+0x4d8>
xor    %ecx,%ecx
jmp    174a <create_file+0x5ba>
mov    %r10,%rcx
and    $0xffffffffffffffe0,%rcx
lea    -0x20(%rcx),%rdx
mov    %rdx,%rdi
shr    $0x5,%rdi
add    $0x1,%rdi
mov    %edi,%r9d
and    $0x3,%r9d
cmp    $0x60,%rdx
jae    168f <create_file+0x4ff>
xor    %esi,%esi
jmp    16f9 <create_file+0x569>
and    $0xfffffffffffffffc,%rdi
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
nop
movups 0xb(%rbx,%rsi,1),%xmm0
movups 0x1b(%rbx,%rsi,1),%xmm1
movaps %xmm0,(%rsp,%rsi,1)
movaps %xmm1,0x10(%rsp,%rsi,1)
movups 0x2b(%rbx,%rsi,1),%xmm0
movups 0x3b(%rbx,%rsi,1),%xmm1
movaps %xmm0,0x20(%rsp,%rsi,1)
movaps %xmm1,0x30(%rsp,%rsi,1)
movups 0x4b(%rbx,%rsi,1),%xmm0
movups 0x5b(%rbx,%rsi,1),%xmm1
movaps %xmm0,0x40(%rsp,%rsi,1)
movaps %xmm1,0x50(%rsp,%rsi,1)
movups 0x6b(%rbx,%rsi,1),%xmm0
movups 0x7b(%rbx,%rsi,1),%xmm1
movaps %xmm0,0x60(%rsp,%rsi,1)
movaps %xmm1,0x70(%rsp,%rsi,1)
sub    $0xffffffffffffff80,%rsi
add    $0xfffffffffffffffc,%rdi
jne    16a0 <create_file+0x510>
test   %r9,%r9
je     173b <create_file+0x5ab>
lea    (%rsi,%r8,1),%rdi
add    $0x10,%rdi
add    %rbx,%rsi
add    $0x1b,%rsi
shl    $0x5,%r9
xor    %edx,%edx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movups -0x10(%rsi,%rdx,1),%xmm0
movups (%rsi,%rdx,1),%xmm1
movaps %xmm0,-0x10(%rdi,%rdx,1)
movaps %xmm1,(%rdi,%rdx,1)
add    $0x20,%rdx
cmp    %rdx,%r9
jne    1720 <create_file+0x590>
cmp    %rcx,%r10
je     1270 <create_file+0xe0>
test   $0x18,%r10b
je     178d <create_file+0x5fd>
mov    %rcx,%rdx
mov    %r10,%rcx
and    $0xfffffffffffffff8,%rcx
lea    (%rcx,%rbp,1),%rsi
nopl   0x0(%rax,%rax,1)
mov    0x0(%rbp,%rdx,1),%rdi
mov    %rdi,(%rsp,%rdx,1)
add    $0x8,%rdx
cmp    %rdx,%rcx
jne    1760 <create_file+0x5d0>
cmp    %rcx,%r10
jne    124f <create_file+0xbf>
jmp    1270 <create_file+0xe0>
cmp    $0x20,%rbp
jae    1795 <create_file+0x605>
xor    %ecx,%ecx
jmp    1883 <create_file+0x6f3>
add    %rcx,%rbp
jmp    124c <create_file+0xbc>
mov    %rbp,%rcx
and    $0xffffffffffffffe0,%rcx
lea    -0x20(%rcx),%rdx
mov    %rdx,%rdi
shr    $0x5,%rdi
add    $0x1,%rdi
mov    %edi,%r9d
and    $0x3,%r9d
cmp    $0x60,%rdx
jae    17bf <create_file+0x62f>
xor    %edx,%edx
jmp    183f <create_file+0x6af>
and    $0xfffffffffffffffc,%rdi
xor    %edx,%edx
movups 0xb(%r14,%rdx,1),%xmm0
movups 0x1b(%r14,%rdx,1),%xmm1
movaps %xmm0,0x200(%rsp,%rdx,1)
movaps %xmm1,0x210(%rsp,%rdx,1)
movups 0x2b(%r14,%rdx,1),%xmm0
movups 0x3b(%r14,%rdx,1),%xmm1
movaps %xmm0,0x220(%rsp,%rdx,1)
movaps %xmm1,0x230(%rsp,%rdx,1)
movups 0x4b(%r14,%rdx,1),%xmm0
movups 0x5b(%r14,%rdx,1),%xmm1
movaps %xmm0,0x240(%rsp,%rdx,1)
movaps %xmm1,0x250(%rsp,%rdx,1)
movups 0x6b(%r14,%rdx,1),%xmm0
movups 0x7b(%r14,%rdx,1),%xmm1
movaps %xmm0,0x260(%rsp,%rdx,1)
movaps %xmm1,0x270(%rsp,%rdx,1)
sub    $0xffffffffffffff80,%rdx
add    $0xfffffffffffffffc,%rdi
jne    17c5 <create_file+0x635>
test   %r9,%r9
je     1874 <create_file+0x6e4>
lea    (%rdx,%r8,1),%rdi
add    $0x10,%rdi
add    %r14,%rdx
add    $0x1b,%rdx
shl    $0x5,%r9
xor    %esi,%esi
movups -0x10(%rdx,%rsi,1),%xmm0
movups (%rdx,%rsi,1),%xmm1
movaps %xmm0,-0x10(%rdi,%rsi,1)
movaps %xmm1,(%rdi,%rsi,1)
add    $0x20,%rsi
cmp    %rsi,%r9
jne    1859 <create_file+0x6c9>
cmp    %rcx,%rbp
je     1420 <create_file+0x290>
test   $0x18,%bpl
je     18c3 <create_file+0x733>
mov    %rcx,%rsi
mov    %rbp,%rcx
and    $0xfffffffffffffff8,%rcx
lea    (%rbx,%rcx,1),%rdx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    (%rbx,%rsi,1),%rdi
mov    %rdi,0x200(%rsp,%rsi,1)
add    $0x8,%rsi
cmp    %rsi,%rcx
jne    18a0 <create_file+0x710>
cmp    %rcx,%rbp
jne    13f6 <create_file+0x266>
jmp    1420 <create_file+0x290>
add    %rcx,%rbx
jmp    13f3 <create_file+0x263>

LLVM IR (-O0):
@.str = [10 x i8] c".git/HEAD\00"
@.str.1 = [2 x i8] c"r\00"
@.str.2 = [31 x i8] c"/* warning: no head found! */\0A\00"
@.str.3 = [12 x i8] c"refs/heads/\00"
@.str.4 = [23 x i8] c"/* branch_local:%s */\0A\00"
@.str.5 = [12 x i8] c".git/config\00"
@.str.6 = [7 x i8] c"branch\00"
@.str.7 = [58 x i8] c"/* Warning: no origin config \09\09\09\09\09\09\09for the branch:%s */\0A\00"
@.str.8 = [56 x i8] c"/* Warning: no refs config for \09\09\09\09\09\09\09the branch:%s */\0A\00"
@.str.9 = [33 x i8] c"/* warning: no branch found! */\0A\00"
@.str.10 = [25 x i8] c"/* branch_origin:%s */\0A\0A\00"
@.str.11 = [21 x i8] c".git/gitcommit_top10\00"
@.str.12 = [36 x i8] c"/* warning: no commint:%d found */\0A\00"
@.str.13 = [24 x i8] c"#include <asm/types.h>\0A\00"
@.str.14 = [25 x i8] c"#if BITS_PER_LONG == 64\0A\00"
@.str.15 = [19 x i8] c"#define PTR .quad\0A\00"
@.str.16 = [23 x i8] c"#define ALGN .align 8\0A\00"
@.str.17 = [7 x i8] c"#else\0A\00"
@.str.18 = [19 x i8] c"#define PTR .long\0A\00"
@.str.19 = [23 x i8] c"#define ALGN .align 4\0A\00"
@.str.20 = [8 x i8] c"#endif\0A\00"
@.str.21 = [24 x i8] c"\09.section .rodata, \22a\22\0A\00"
@.str.22 = [21 x i8] c".globl git_info_num\0A\00"
@.str.23 = [7 x i8] c"\09ALGN\0A\00"
@.str.24 = [15 x i8] c"git_info_num:\0A\00"
@.str.25 = [9 x i8] c"\09PTR\09%d\0A\00"
@.str.26 = [2 x i8] c"\0A\00"
@.str.27 = [17 x i8] c".globl git_info\0A\00"
@.str.28 = [11 x i8] c"git_info:\0A\00"
@.str.29 = [14 x i8] c"\09.byte 0x%02x\00"
@.str.30 = [9 x i8] c", 0x%02x\00"
define void @create_file() {
%1 = alloca [20 x [100 x i8]]
%2 = alloca i8*
%3 = alloca i8*
%4 = alloca [100 x i8]
%5 = alloca [100 x i8]
%6 = alloca [200 x i8]
%7 = alloca i32*
%8 = alloca i32*
%9 = alloca i32
%10 = alloca i32
%11 = alloca [20 x i32]
%12 = alloca i32
store i32 0, i32* %9
store i32 11, i32* %12
%13 = call i32* @fopen(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
store i32* %13, i32** %7
%14 = load i32*, i32** %7
%15 = icmp ne i32* %14, null
br i1 %15, label %16, label %26
16: ; preds = %0
%17 = getelementptr inbounds [100 x i8], [100 x i8]* %4, i64 0, i64 0
%18 = load i32*, i32** %7
%19 = call i32* @fgets(i8* %17, i32 100, i32* %18)
%20 = icmp eq i32* %19, null
br i1 %20, label %21, label %23
21: ; preds = %16
%22 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.2, i64 0, i64 0))
br label %23
23: ; preds = %21, %16
%24 = load i32*, i32** %7
%25 = call i32 @fclose(i32* %24)
br label %26
26: ; preds = %23, %0
%27 = getelementptr inbounds [100 x i8], [100 x i8]* %4, i64 0, i64 0
%28 = call i8* @strstr(i8* %27, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 0))
store i8* %28, i8** %2
%29 = load i8*, i8** %2
%30 = icmp ne i8* %29, null
br i1 %30, label %31, label %49
31: ; preds = %26
%32 = load i8*, i8** %2
%33 = getelementptr inbounds i8, i8* %32, i64 11
store i8* %33, i8** %2
%34 = getelementptr inbounds [100 x i8], [100 x i8]* %4, i64 0, i64 0
%35 = call i8* @strchr(i8* %34, i8 signext 10)
store i8* %35, i8** %3
br label %36
36: ; preds = %40, %31
%37 = load i8*, i8** %2
%38 = load i8*, i8** %3
%39 = icmp ult i8* %37, %38
br i1 %39, label %40, label %48
40: ; preds = %36
%41 = load i8*, i8** %2
%42 = getelementptr inbounds i8, i8* %41, i32 1
store i8* %42, i8** %2
%43 = load i8, i8* %41
%44 = load i32, i32* %9
%45 = add nsw i32 %44, 1
store i32 %45, i32* %9
%46 = sext i32 %44 to i64
%47 = getelementptr inbounds [100 x i8], [100 x i8]* %5, i64 0, i64 %46
store i8 %43, i8* %47
br label %36
48: ; preds = %36
br label %49
49: ; preds = %48, %26
%50 = getelementptr inbounds [100 x i8], [100 x i8]* %5, i64 0, i64 0
%51 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.4, i64 0, i64 0), i8* %50)
%52 = getelementptr inbounds [20 x i32], [20 x i32]* %11, i64 0, i64 0
%53 = call i32 @memset(i32* %52, i32 0, i32 80)
%54 = call i32* @fopen(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
store i32* %54, i32** %8
%55 = load i32*, i32** %8
%56 = icmp ne i32* %55, null
br i1 %56, label %57, label %125
57: ; preds = %49
br label %58
58: ; preds = %115, %57
%59 = getelementptr inbounds [200 x i8], [200 x i8]* %6, i64 0, i64 0
%60 = load i32*, i32** %8
%61 = call i32* @fgets(i8* %59, i32 200, i32* %60)
%62 = icmp ne i32* %61, null
br i1 %62, label %63, label %116
63: ; preds = %58
%64 = getelementptr inbounds [200 x i8], [200 x i8]* %6, i64 0, i64 0
%65 = call i8* @strstr(i8* %64, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.6, i64 0, i64 0))
%66 = icmp ne i8* %65, null
br i1 %66, label %67, label %115
67: ; preds = %63
%68 = getelementptr inbounds [200 x i8], [200 x i8]* %6, i64 0, i64 0
%69 = getelementptr inbounds [100 x i8], [100 x i8]* %5, i64 0, i64 0
%70 = call i8* @strstr(i8* %68, i8* %69)
%71 = icmp ne i8* %70, null
br i1 %71, label %72, label %115
72: ; preds = %67
%73 = getelementptr inbounds [200 x i8], [200 x i8]* %6, i64 0, i64 0
%74 = load i32*, i32** %8
%75 = call i32* @fgets(i8* %73, i32 200, i32* %74)
%76 = icmp eq i32* %75, null
br i1 %76, label %77, label %80
77: ; preds = %72
%78 = getelementptr inbounds [100 x i8], [100 x i8]* %5, i64 0, i64 0
%79 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.7, i64 0, i64 0), i8* %78)
br label %80
80: ; preds = %77, %72
%81 = getelementptr inbounds [200 x i8], [200 x i8]* %6, i64 0, i64 0
%82 = load i32*, i32** %8
%83 = call i32* @fgets(i8* %81, i32 200, i32* %82)
%84 = icmp eq i32* %83, null
br i1 %84, label %85, label %88
85: ; preds = %80
%86 = getelementptr inbounds [100 x i8], [100 x i8]* %5, i64 0, i64 0
%87 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str.8, i64 0, i64 0), i8* %86)
br label %88
88: ; preds = %85, %80
store i32 0, i32* %9
%89 = getelementptr inbounds [200 x i8], [200 x i8]* %6, i64 0, i64 0
%90 = call i8* @strstr(i8* %89, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 0))
store i8* %90, i8** %2
%91 = load i8*, i8** %2
%92 = icmp ne i8* %91, null
br i1 %92, label %93, label %112
93: ; preds = %88
%94 = load i8*, i8** %2
%95 = getelementptr inbounds i8, i8* %94, i64 11
store i8* %95, i8** %2
%96 = getelementptr inbounds [200 x i8], [200 x i8]* %6, i64 0, i64 0
%97 = call i8* @strchr(i8* %96, i8 signext 10)
store i8* %97, i8** %3
br label %98
98: ; preds = %102, %93
%99 = load i8*, i8** %2
%100 = load i8*, i8** %3
%101 = icmp ult i8* %99, %100
br i1 %101, label %102, label %111
102: ; preds = %98
%103 = load i8*, i8** %2
%104 = getelementptr inbounds i8, i8* %103, i32 1
store i8* %104, i8** %2
%105 = load i8, i8* %103
%106 = getelementptr inbounds [20 x [100 x i8]], [20 x [100 x i8]]* %1, i64 0, i64 0
%107 = load i32, i32* %9
%108 = add nsw i32 %107, 1
store i32 %108, i32* %9
%109 = sext i32 %107 to i64
%110 = getelementptr inbounds [100 x i8], [100 x i8]* %106, i64 0, i64 %109
store i8 %105, i8* %110
br label %98
111: ; preds = %98
br label %112
112: ; preds = %111, %88
%113 = load i32, i32* %9
%114 = getelementptr inbounds [20 x i32], [20 x i32]* %11, i64 0, i64 0
store i32 %113, i32* %114
br label %116
115: ; preds = %67, %63
br label %58
116: ; preds = %112, %58
%117 = getelementptr inbounds [20 x i32], [20 x i32]* %11, i64 0, i64 0
%118 = load i32, i32* %117
%119 = icmp ne i32 %118, 0
br i1 %119, label %122, label %120
120: ; preds = %116
%121 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str.9, i64 0, i64 0))
br label %122
122: ; preds = %120, %116
%123 = load i32*, i32** %8
%124 = call i32 @fclose(i32* %123)
br label %125
125: ; preds = %122, %49
%126 = getelementptr inbounds [20 x [100 x i8]], [20 x [100 x i8]]* %1, i64 0, i64 0
%127 = getelementptr inbounds [100 x i8], [100 x i8]* %126, i64 0, i64 0
%128 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.10, i64 0, i64 0), i8* %127)
%129 = call i32* @fopen(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
store i32* %129, i32** %7
%130 = load i32*, i32** %7
%131 = icmp ne i32* %130, null
br i1 %131, label %132, label %179
132: ; preds = %125
store i32 1, i32* %9
br label %133
133: ; preds = %173, %132
%134 = load i32, i32* %9
%135 = icmp slt i32 %134, 11
br i1 %135, label %136, label %176
136: ; preds = %133
%137 = load i32, i32* %9
%138 = sext i32 %137 to i64
%139 = getelementptr inbounds [20 x [100 x i8]], [20 x [100 x i8]]* %1, i64 0, i64 %138
%140 = getelementptr inbounds [100 x i8], [100 x i8]* %139, i64 0, i64 0
%141 = load i32*, i32** %7
%142 = call i32* @fgets(i8* %140, i32 50, i32* %141)
%143 = icmp eq i32* %142, null
br i1 %143, label %144, label %147
144: ; preds = %136
%145 = load i32, i32* %9
%146 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.12, i64 0, i64 0), i32 %145)
br label %147
147: ; preds = %144, %136
%148 = load i32, i32* %9
%149 = sext i32 %148 to i64
%150 = getelementptr inbounds [20 x [100 x i8]], [20 x [100 x i8]]* %1, i64 0, i64 %149
%151 = getelementptr inbounds [100 x i8], [100 x i8]* %150, i64 0, i64 0
%152 = call i8* @strchr(i8* %151, i8 signext 10)
store i8* %152, i8** %2
%153 = load i8*, i8** %2
%154 = icmp ne i8* %153, null
br i1 %154, label %155, label %168
155: ; preds = %147
%156 = load i8*, i8** %2
%157 = load i32, i32* %9
%158 = sext i32 %157 to i64
%159 = getelementptr inbounds [20 x [100 x i8]], [20 x [100 x i8]]* %1, i64 0, i64 %158
%160 = getelementptr inbounds [100 x i8], [100 x i8]* %159, i64 0, i64 0
%161 = ptrtoint i8* %156 to i64
%162 = ptrtoint i8* %160 to i64
%163 = sub i64 %161, %162
%164 = trunc i64 %163 to i32
%165 = load i32, i32* %9
%166 = sext i32 %165 to i64
%167 = getelementptr inbounds [20 x i32], [20 x i32]* %11, i64 0, i64 %166
store i32 %164, i32* %167
br label %172
168: ; preds = %147
%169 = load i32, i32* %9
%170 = sext i32 %169 to i64
%171 = getelementptr inbounds [20 x i32], [20 x i32]* %11, i64 0, i64 %170
store i32 0, i32* %171
br label %172
172: ; preds = %168, %155
br label %173
173: ; preds = %172
%174 = load i32, i32* %9
%175 = add nsw i32 %174, 1
store i32 %175, i32* %9
br label %133
176: ; preds = %133
%177 = load i32*, i32** %7
%178 = call i32 @fclose(i32* %177)
br label %179
179: ; preds = %176, %125
%180 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.13, i64 0, i64 0))
%181 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.14, i64 0, i64 0))
%182 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.15, i64 0, i64 0))
%183 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.16, i64 0, i64 0))
%184 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.17, i64 0, i64 0))
%185 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.18, i64 0, i64 0))
%186 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.19, i64 0, i64 0))
%187 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.20, i64 0, i64 0))
%188 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.21, i64 0, i64 0))
%189 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.22, i64 0, i64 0))
%190 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.23, i64 0, i64 0))
%191 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.24, i64 0, i64 0))
%192 = load i32, i32* %12
%193 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.25, i64 0, i64 0), i32 %192)
%194 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.26, i64 0, i64 0))
%195 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.27, i64 0, i64 0))
%196 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.23, i64 0, i64 0))
%197 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.28, i64 0, i64 0))
store i32 0, i32* %9
br label %198
198: ; preds = %229, %179
%199 = load i32, i32* %9
%200 = icmp slt i32 %199, 11
br i1 %200, label %201, label %232
201: ; preds = %198
%202 = load i32, i32* %9
%203 = sext i32 %202 to i64
%204 = getelementptr inbounds [20 x i32], [20 x i32]* %11, i64 0, i64 %203
%205 = load i32, i32* %204
%206 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.29, i64 0, i64 0), i32 %205)
store i32 0, i32* %10
br label %207
207: ; preds = %224, %201
%208 = load i32, i32* %10
%209 = load i32, i32* %9
%210 = sext i32 %209 to i64
%211 = getelementptr inbounds [20 x i32], [20 x i32]* %11, i64 0, i64 %210
%212 = load i32, i32* %211
%213 = icmp slt i32 %208, %212
br i1 %213, label %214, label %227
214: ; preds = %207
%215 = load i32, i32* %9
%216 = sext i32 %215 to i64
%217 = getelementptr inbounds [20 x [100 x i8]], [20 x [100 x i8]]* %1, i64 0, i64 %216
%218 = load i32, i32* %10
%219 = sext i32 %218 to i64
%220 = getelementptr inbounds [100 x i8], [100 x i8]* %217, i64 0, i64 %219
%221 = load i8, i8* %220
%222 = sext i8 %221 to i32
%223 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.30, i64 0, i64 0), i32 %222)
br label %224
224: ; preds = %214
%225 = load i32, i32* %10
%226 = add nsw i32 %225, 1
store i32 %226, i32* %10
br label %207
227: ; preds = %207
%228 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.26, i64 0, i64 0))
br label %229
229: ; preds = %227
%230 = load i32, i32* %9
%231 = add nsw i32 %230, 1
store i32 %231, i32* %9
br label %198
232: ; preds = %198
%233 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.26, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [10 x i8] c".git/HEAD\00"
@.str.1 = [2 x i8] c"r\00"
@.str.3 = [12 x i8] c"refs/heads/\00"
@.str.4 = [23 x i8] c"/* branch_local:%s */\0A\00"
@.str.5 = [12 x i8] c".git/config\00"
@.str.6 = [7 x i8] c"branch\00"
@.str.7 = [58 x i8] c"/* Warning: no origin config \09\09\09\09\09\09\09for the branch:%s */\0A\00"
@.str.8 = [56 x i8] c"/* Warning: no refs config for \09\09\09\09\09\09\09the branch:%s */\0A\00"
@.str.10 = [25 x i8] c"/* branch_origin:%s */\0A\0A\00"
@.str.11 = [21 x i8] c".git/gitcommit_top10\00"
@.str.12 = [36 x i8] c"/* warning: no commint:%d found */\0A\00"
@.str.25 = [9 x i8] c"\09PTR\09%d\0A\00"
@.str.29 = [14 x i8] c"\09.byte 0x%02x\00"
@.str.30 = [9 x i8] c", 0x%02x\00"
@str = [23 x i8] c"#include <asm/types.h>\00"
@str.31 = [24 x i8] c"#if BITS_PER_LONG == 64\00"
@str.32 = [18 x i8] c"#define PTR .quad\00"
@str.33 = [22 x i8] c"#define ALGN .align 8\00"
@str.34 = [6 x i8] c"#else\00"
@str.35 = [18 x i8] c"#define PTR .long\00"
@str.36 = [22 x i8] c"#define ALGN .align 4\00"
@str.37 = [7 x i8] c"#endif\00"
@str.38 = [23 x i8] c"\09.section .rodata, \22a\22\00"
@str.39 = [20 x i8] c".globl git_info_num\00"
@str.41 = [14 x i8] c"git_info_num:\00"
@str.42 = [16 x i8] c".globl git_info\00"
@str.43 = [6 x i8] c"\09ALGN\00"
@str.44 = [10 x i8] c"git_info:\00"
@str.45 = [32 x i8] c"/* warning: no branch found! */\00"
@str.46 = [30 x i8] c"/* warning: no head found! */\00"
define void @create_file() {
%1 = alloca [20 x [100 x i8]]
%2 = getelementptr inbounds [20 x [100 x i8]], [20 x [100 x i8]]* %1, i64 0, i64 0, i64 0
%3 = alloca [100 x i8]
%4 = alloca [100 x i8]
%5 = getelementptr inbounds [100 x i8], [100 x i8]* %4, i64 0, i64 0
%6 = alloca [200 x i8]
%7 = alloca [20 x i32]
%8 = getelementptr inbounds [20 x [100 x i8]], [20 x [100 x i8]]* %1, i64 0, i64 0, i64 0
%9 = getelementptr inbounds [100 x i8], [100 x i8]* %3, i64 0, i64 0
%10 = getelementptr inbounds [100 x i8], [100 x i8]* %4, i64 0, i64 0
%11 = getelementptr inbounds [200 x i8], [200 x i8]* %6, i64 0, i64 0
%12 = bitcast [20 x i32]* %7 to i8*
%13 = tail call i32* @fopen(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%14 = icmp eq i32* %13, null
br i1 %14, label %22, label %15
15: ; preds = %0
%16 = call i32* @fgets(i8* %9, i32 100, i32* %13)
%17 = icmp eq i32* %16, null
br i1 %17, label %18, label %20
18: ; preds = %15
%19 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @str.46, i64 0, i64 0))
br label %20
20: ; preds = %18, %15
%21 = call i32 @fclose(i32* %13)
br label %22
22: ; preds = %20, %0
%23 = call i8* @strstr(i8* %9, i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 0))
%24 = ptrtoint i8* %23 to i64
%25 = icmp eq i8* %23, null
br i1 %25, label %153, label %26
26: ; preds = %22
%27 = getelementptr i8, i8* %23, i64 11
%28 = call i8* @strchr(i8* %9, i8 signext 10)
%29 = icmp ult i8* %27, %28
br i1 %29, label %30, label %153
30: ; preds = %26
%31 = ptrtoint i8* %28 to i64
%32 = add i64 %31, -11
%33 = sub i64 %32, %24
%34 = icmp ult i64 %33, 8
br i1 %34, label %142, label %35
35: ; preds = %30
%36 = getelementptr [100 x i8], [100 x i8]* %4, i64 0, i64 %33
%37 = sub i64 %31, %24
%38 = getelementptr i8, i8* %23, i64 %37
%39 = icmp ult i8* %5, %38
%40 = icmp ult i8* %27, %36
%41 = and i1 %39, %40
br i1 %41, label %142, label %42
42: ; preds = %35
%43 = icmp ult i64 %33, 32
br i1 %43, label %127, label %44
44: ; preds = %42
%45 = and i64 %33, -32
%46 = add i64 %45, -32
%47 = lshr exact i64 %46, 5
%48 = add nuw nsw i64 %47, 1
%49 = and i64 %48, 3
%50 = icmp ult i64 %46, 96
br i1 %50, label %102, label %51
51: ; preds = %44
%52 = and i64 %48, 1152921504606846972
br label %53
53: ; preds = %53, %51
%54 = phi i64 [ 0, %51 ], [ %99, %53 ]
%55 = phi i64 [ 0, %51 ], [ %100, %53 ]
%56 = getelementptr i8, i8* %27, i64 %54
%57 = bitcast i8* %56 to <16 x i8>*
%58 = load <16 x i8>, <16 x i8>* %57
%59 = getelementptr i8, i8* %56, i64 16
%60 = bitcast i8* %59 to <16 x i8>*
%61 = load <16 x i8>, <16 x i8>* %60
%62 = getelementptr inbounds [100 x i8], [100 x i8]* %4, i64 0, i64 %54
%63 = bitcast i8* %62 to <16 x i8>*
store <16 x i8> %58, <16 x i8>* %63
%64 = getelementptr inbounds i8, i8* %62, i64 16
%65 = bitcast i8* %64 to <16 x i8>*
store <16 x i8> %61, <16 x i8>* %65
%66 = or i64 %54, 32
%67 = getelementptr i8, i8* %27, i64 %66
%68 = bitcast i8* %67 to <16 x i8>*
%69 = load <16 x i8>, <16 x i8>* %68
%70 = getelementptr i8, i8* %67, i64 16
%71 = bitcast i8* %70 to <16 x i8>*
%72 = load <16 x i8>, <16 x i8>* %71
%73 = getelementptr inbounds [100 x i8], [100 x i8]* %4, i64 0, i64 %66
%74 = bitcast i8* %73 to <16 x i8>*
store <16 x i8> %69, <16 x i8>* %74
%75 = getelementptr inbounds i8, i8* %73, i64 16
%76 = bitcast i8* %75 to <16 x i8>*
store <16 x i8> %72, <16 x i8>* %76
%77 = or i64 %54, 64
%78 = getelementptr i8, i8* %27, i64 %77
%79 = bitcast i8* %78 to <16 x i8>*
%80 = load <16 x i8>, <16 x i8>* %79
%81 = getelementptr i8, i8* %78, i64 16
%82 = bitcast i8* %81 to <16 x i8>*
%83 = load <16 x i8>, <16 x i8>* %82
%84 = getelementptr inbounds [100 x i8], [100 x i8]* %4, i64 0, i64 %77
%85 = bitcast i8* %84 to <16 x i8>*
store <16 x i8> %80, <16 x i8>* %85
%86 = getelementptr inbounds i8, i8* %84, i64 16
%87 = bitcast i8* %86 to <16 x i8>*
store <16 x i8> %83, <16 x i8>* %87
%88 = or i64 %54, 96
%89 = getelementptr i8, i8* %27, i64 %88
%90 = bitcast i8* %89 to <16 x i8>*
%91 = load <16 x i8>, <16 x i8>* %90
%92 = getelementptr i8, i8* %89, i64 16
%93 = bitcast i8* %92 to <16 x i8>*
%94 = load <16 x i8>, <16 x i8>* %93
%95 = getelementptr inbounds [100 x i8], [100 x i8]* %4, i64 0, i64 %88
%96 = bitcast i8* %95 to <16 x i8>*
store <16 x i8> %91, <16 x i8>* %96
%97 = getelementptr inbounds i8, i8* %95, i64 16
%98 = bitcast i8* %97 to <16 x i8>*
store <16 x i8> %94, <16 x i8>* %98
%99 = add nuw i64 %54, 128
%100 = add i64 %55, 4
%101 = icmp eq i64 %100, %52
br i1 %101, label %102, label %53
102: ; preds = %53, %44
%103 = phi i64 [ 0, %44 ], [ %99, %53 ]
%104 = icmp eq i64 %49, 0
br i1 %104, label %121, label %105
105: ; preds = %102, %105
%106 = phi i64 [ %118, %105 ], [ %103, %102 ]
%107 = phi i64 [ %119, %105 ], [ 0, %102 ]
%108 = getelementptr i8, i8* %27, i64 %106
%109 = bitcast i8* %108 to <16 x i8>*
%110 = load <16 x i8>, <16 x i8>* %109
%111 = getelementptr i8, i8* %108, i64 16
%112 = bitcast i8* %111 to <16 x i8>*
%113 = load <16 x i8>, <16 x i8>* %112
%114 = getelementptr inbounds [100 x i8], [100 x i8]* %4, i64 0, i64 %106
%115 = bitcast i8* %114 to <16 x i8>*
store <16 x i8> %110, <16 x i8>* %115
%116 = getelementptr inbounds i8, i8* %114, i64 16
%117 = bitcast i8* %116 to <16 x i8>*
store <16 x i8> %113, <16 x i8>* %117
%118 = add nuw i64 %106, 32
%119 = add i64 %107, 1
%120 = icmp eq i64 %119, %49
br i1 %120, label %121, label %105
121: ; preds = %105, %102
%122 = icmp eq i64 %33, %45
br i1 %122, label %153, label %123
123: ; preds = %121
%124 = getelementptr i8, i8* %27, i64 %45
%125 = and i64 %33, 24
%126 = icmp eq i64 %125, 0
br i1 %126, label %142, label %127
127: ; preds = %42, %123
%128 = phi i64 [ %45, %123 ], [ 0, %42 ]
%129 = and i64 %33, -8
%130 = getelementptr i8, i8* %27, i64 %129
br label %131
131: ; preds = %131, %127
%132 = phi i64 [ %128, %127 ], [ %138, %131 ]
%133 = getelementptr i8, i8* %27, i64 %132
%134 = bitcast i8* %133 to <8 x i8>*
%135 = load <8 x i8>, <8 x i8>* %134
%136 = getelementptr inbounds [100 x i8], [100 x i8]* %4, i64 0, i64 %132
%137 = bitcast i8* %136 to <8 x i8>*
store <8 x i8> %135, <8 x i8>* %137
%138 = add nuw i64 %132, 8
%139 = icmp eq i64 %138, %129
br i1 %139, label %140, label %131
140: ; preds = %131
%141 = icmp eq i64 %33, %129
br i1 %141, label %153, label %142
142: ; preds = %35, %30, %123, %140
%143 = phi i64 [ 0, %30 ], [ 0, %35 ], [ %45, %123 ], [ %129, %140 ]
%144 = phi i8* [ %27, %30 ], [ %27, %35 ], [ %124, %123 ], [ %130, %140 ]
br label %145
145: ; preds = %142, %145
%146 = phi i64 [ %150, %145 ], [ %143, %142 ]
%147 = phi i8* [ %148, %145 ], [ %144, %142 ]
%148 = getelementptr inbounds i8, i8* %147, i64 1
%149 = load i8, i8* %147
%150 = add nuw i64 %146, 1
%151 = getelementptr inbounds [100 x i8], [100 x i8]* %4, i64 0, i64 %146
store i8 %149, i8* %151
%152 = icmp eq i64 %150, %33
br i1 %152, label %153, label %145
153: ; preds = %145, %121, %140, %26, %22
%154 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.4, i64 0, i64 0), i8* %10)
%155 = getelementptr inbounds [20 x i32], [20 x i32]* %7, i64 0, i64 0
%156 = call i32 @memset(i32* %155, i32 0, i32 80)
%157 = call i32* @fopen(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%158 = icmp eq i32* %157, null
br i1 %158, label %325, label %159
159: ; preds = %153
%160 = call i32* @fgets(i8* %11, i32 200, i32* %157)
%161 = icmp eq i32* %160, null
br i1 %161, label %316, label %162
162: ; preds = %159, %313
%163 = call i8* @strstr(i8* %11, i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @.str.6, i64 0, i64 0))
%164 = icmp eq i8* %163, null
br i1 %164, label %313, label %165
165: ; preds = %162
%166 = call i8* @strstr(i8* %11, i8* %10)
%167 = icmp eq i8* %166, null
br i1 %167, label %313, label %168
168: ; preds = %165
%169 = call i32* @fgets(i8* %11, i32 200, i32* %157)
%170 = icmp eq i32* %169, null
br i1 %170, label %171, label %173
171: ; preds = %168
%172 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([58 x i8], [58 x i8]* @.str.7, i64 0, i64 0), i8* %10)
br label %173
173: ; preds = %171, %168
%174 = call i32* @fgets(i8* %11, i32 200, i32* %157)
%175 = icmp eq i32* %174, null
br i1 %175, label %176, label %178
176: ; preds = %173
%177 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([56 x i8], [56 x i8]* @.str.8, i64 0, i64 0), i8* %10)
br label %178
178: ; preds = %176, %173
%179 = call i8* @strstr(i8* %11, i8* dereferenceable(1) getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 0))
%180 = ptrtoint i8* %179 to i64
%181 = icmp eq i8* %179, null
br i1 %181, label %311, label %182
182: ; preds = %178
%183 = getelementptr i8, i8* %179, i64 11
%184 = call i8* @strchr(i8* %11, i8 signext 10)
%185 = icmp ult i8* %183, %184
br i1 %185, label %186, label %311
186: ; preds = %182
%187 = ptrtoint i8* %184 to i64
%188 = add i64 %187, -11
%189 = sub i64 %188, %180
%190 = icmp ult i64 %189, 8
br i1 %190, label %298, label %191
191: ; preds = %186
%192 = getelementptr [20 x [100 x i8]], [20 x [100 x i8]]* %1, i64 0, i64 0, i64 %189
%193 = sub i64 %187, %180
%194 = getelementptr i8, i8* %179, i64 %193
%195 = icmp ult i8* %2, %194
%196 = icmp ult i8* %183, %192
%197 = and i1 %195, %196
br i1 %197, label %298, label %198
198: ; preds = %191
%199 = icmp ult i64 %189, 32
br i1 %199, label %283, label %200
200: ; preds = %198
%201 = and i64 %189, -32
%202 = add i64 %201, -32
%203 = lshr exact i64 %202, 5
%204 = add nuw nsw i64 %203, 1
%205 = and i64 %204, 3
%206 = icmp ult i64 %202, 96
br i1 %206, label %258, label %207
207: ; preds = %200
%208 = and i64 %204, 1152921504606846972
br label %209
209: ; preds = %209, %207
%210 = phi i64 [ 0, %207 ], [ %255, %209 ]
%211 = phi i64 [ 0, %207 ], [ %256, %209 ]
%212 = getelementptr i8, i8* %183, i64 %210
%213 = bitcast i8* %212 to <16 x i8>*
%214 = load <16 x i8>, <16 x i8>* %213
%215 = getelementptr i8, i8* %212, i64 16
%216 = bitcast i8* %215 to <16 x i8>*
%217 = load <16 x i8>, <16 x i8>* %216
%218 = getelementptr inbounds [20 x [100 x i8]], [20 x [100 x i8]]* %1, i64 0, i64 0, i64 %210
%219 = bitcast i8* %218 to <16 x i8>*
store <16 x i8> %214, <16 x i8>* %219
%220 = getelementptr inbounds i8, i8* %218, i64 16
%221 = bitcast i8* %220 to <16 x i8>*
store <16 x i8> %217, <16 x i8>* %221
%222 = or i64 %210, 32
%223 = getelementptr i8, i8* %183, i64 %222
%224 = bitcast i8* %223 to <16 x i8>*
%225 = load <16 x i8>, <16 x i8>* %224
%226 = getelementptr i8, i8* %223, i64 16
%227 = bitcast i8* %226 to <16 x i8>*
%228 = load <16 x i8>, <16 x i8>* %227
%229 = getelementptr inbounds [20 x [100 x i8]], [20 x [100 x i8]]* %1, i64 0, i64 0, i64 %222
%230 = bitcast i8* %229 to <16 x i8>*
store <16 x i8> %225, <16 x i8>* %230
%231 = getelementptr inbounds i8, i8* %229, i64 16
%232 = bitcast i8* %231 to <16 x i8>*
store <16 x i8> %228, <16 x i8>* %232
%233 = or i64 %210, 64
%234 = getelementptr i8, i8* %183, i64 %233
%235 = bitcast i8* %234 to <16 x i8>*
%236 = load <16 x i8>, <16 x i8>* %235
%237 = getelementptr i8, i8* %234, i64 16
%238 = bitcast i8* %237 to <16 x i8>*
%239 = load <16 x i8>, <16 x i8>* %238
%240 = getelementptr inbounds [20 x [100 x i8]], [20 x [100 x i8]]* %1, i64 0, i64 0, i64 %233
%241 = bitcast i8* %240 to <16 x i8>*
store <16 x i8> %236, <16 x i8>* %241
%242 = getelementptr inbounds i8, i8* %240, i64 16
%243 = bitcast i8* %242 to <16 x i8>*
store <16 x i8> %239, <16 x i8>* %243
%244 = or i64 %210, 96
%245 = getelementptr i8, i8* %183, i64 %244
%246 = bitcast i8* %245 to <16 x i8>*
%247 = load <16 x i8>, <16 x i8>* %246
%248 = getelementptr i8, i8* %245, i64 16
%249 = bitcast i8* %248 to <16 x i8>*
%250 = load <16 x i8>, <16 x i8>* %249
%251 = getelementptr inbounds [20 x [100 x i8]], [20 x [100 x i8]]* %1, i64 0, i64 0, i64 %244
%252 = bitcast i8* %251 to <16 x i8>*
store <16 x i8> %247, <16 x i8>* %252
%253 = getelementptr inbounds i8, i8* %251, i64 16
%254 = bitcast i8* %253 to <16 x i8>*
store <16 x i8> %250, <16 x i8>* %254
%255 = add nuw i64 %210, 128
%256 = add i64 %211, 4
%257 = icmp eq i64 %256, %208
br i1 %257, label %258, label %209
258: ; preds = %209, %200
%259 = phi i64 [ 0, %200 ], [ %255, %209 ]
%260 = icmp eq i64 %205, 0
br i1 %260, label %277, label %261
261: ; preds = %258, %261
%262 = phi i64 [ %274, %261 ], [ %259, %258 ]
%263 = phi i64 [ %275, %261 ], [ 0, %258 ]
%264 = getelementptr i8, i8* %183, i64 %262
%265 = bitcast i8* %264 to <16 x i8>*
%266 = load <16 x i8>, <16 x i8>* %265
%267 = getelementptr i8, i8* %264, i64 16
%268 = bitcast i8* %267 to <16 x i8>*
%269 = load <16 x i8>, <16 x i8>* %268
%270 = getelementptr inbounds [20 x [100 x i8]], [20 x [100 x i8]]* %1, i64 0, i64 0, i64 %262
%271 = bitcast i8* %270 to <16 x i8>*
store <16 x i8> %266, <16 x i8>* %271
%272 = getelementptr inbounds i8, i8* %270, i64 16
%273 = bitcast i8* %272 to <16 x i8>*
store <16 x i8> %269, <16 x i8>* %273
%274 = add nuw i64 %262, 32
%275 = add i64 %263, 1
%276 = icmp eq i64 %275, %205
br i1 %276, label %277, label %261
277: ; preds = %261, %258
%278 = icmp eq i64 %189, %201
br i1 %278, label %309, label %279
279: ; preds = %277
%280 = getelementptr i8, i8* %183, i64 %201
%281 = and i64 %189, 24
%282 = icmp eq i64 %281, 0
br i1 %282, label %298, label %283
283: ; preds = %198, %279
%284 = phi i64 [ %201, %279 ], [ 0, %198 ]
%285 = and i64 %189, -8
%286 = getelementptr i8, i8* %183, i64 %285
br label %287
287: ; preds = %287, %283
%288 = phi i64 [ %284, %283 ], [ %294, %287 ]
%289 = getelementptr i8, i8* %183, i64 %288
%290 = bitcast i8* %289 to <8 x i8>*
%291 = load <8 x i8>, <8 x i8>* %290
%292 = getelementptr inbounds [20 x [100 x i8]], [20 x [100 x i8]]* %1, i64 0, i64 0, i64 %288
%293 = bitcast i8* %292 to <8 x i8>*
store <8 x i8> %291, <8 x i8>* %293
%294 = add nuw i64 %288, 8
%295 = icmp eq i64 %294, %285
br i1 %295, label %296, label %287
296: ; preds = %287
%297 = icmp eq i64 %189, %285
br i1 %297, label %309, label %298
298: ; preds = %191, %186, %279, %296
%299 = phi i64 [ 0, %186 ], [ 0, %191 ], [ %201, %279 ], [ %285, %296 ]
%300 = phi i8* [ %183, %186 ], [ %183, %191 ], [ %280, %279 ], [ %286, %296 ]
br label %301
301: ; preds = %298, %301
%302 = phi i64 [ %306, %301 ], [ %299, %298 ]
%303 = phi i8* [ %304, %301 ], [ %300, %298 ]
%304 = getelementptr inbounds i8, i8* %303, i64 1
%305 = load i8, i8* %303
%306 = add nuw i64 %302, 1
%307 = getelementptr inbounds [20 x [100 x i8]], [20 x [100 x i8]]* %1, i64 0, i64 0, i64 %302
store i8 %305, i8* %307
%308 = icmp eq i64 %306, %189
br i1 %308, label %309, label %301
309: ; preds = %301, %296, %277
%310 = trunc i64 %189 to i32
br label %311
311: ; preds = %309, %182, %178
%312 = phi i32 [ 0, %178 ], [ 0, %182 ], [ %310, %309 ]
store i32 %312, i32* %155
br label %318
313: ; preds = %165, %162
%314 = call i32* @fgets(i8* %11, i32 200, i32* %157)
%315 = icmp eq i32* %314, null
br i1 %315, label %316, label %162
316: ; preds = %313, %159
%317 = load i32, i32* %155
br label %318
318: ; preds = %316, %311
%319 = phi i32 [ %317, %316 ], [ %312, %311 ]
%320 = icmp eq i32 %319, 0
br i1 %320, label %321, label %323
321: ; preds = %318
%322 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([32 x i8], [32 x i8]* @str.45, i64 0, i64 0))
br label %323
323: ; preds = %321, %318
%324 = call i32 @fclose(i32* %157)
br label %325
325: ; preds = %323, %153
%326 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([25 x i8], [25 x i8]* @.str.10, i64 0, i64 0), i8* %8)
%327 = call i32* @fopen(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%328 = icmp eq i32* %327, null
br i1 %328, label %350, label %329
329: ; preds = %325, %337
%330 = phi i64 [ %346, %337 ], [ 1, %325 ]
%331 = getelementptr inbounds [20 x [100 x i8]], [20 x [100 x i8]]* %1, i64 0, i64 %330, i64 0
%332 = call i32* @fgets(i8* %331, i32 50, i32* %327)
%333 = icmp eq i32* %332, null
br i1 %333, label %334, label %337
334: ; preds = %329
%335 = trunc i64 %330 to i32
%336 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([36 x i8], [36 x i8]* @.str.12, i64 0, i64 0), i32 %335)
br label %337
337: ; preds = %334, %329
%338 = call i8* @strchr(i8* %331, i8 signext 10)
%339 = icmp eq i8* %338, null
%340 = ptrtoint i8* %338 to i64
%341 = ptrtoint i8* %331 to i64
%342 = sub i64 %340, %341
%343 = trunc i64 %342 to i32
%344 = select i1 %339, i32 0, i32 %343
%345 = getelementptr inbounds [20 x i32], [20 x i32]* %7, i64 0, i64 %330
store i32 %344, i32* %345
%346 = add nuw nsw i64 %330, 1
%347 = icmp eq i64 %346, 11
br i1 %347, label %348, label %329
348: ; preds = %337
%349 = call i32 @fclose(i32* %327)
br label %350
350: ; preds = %348, %325
%351 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @str, i64 0, i64 0))
%352 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @str.31, i64 0, i64 0))
%353 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str.32, i64 0, i64 0))
%354 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @str.33, i64 0, i64 0))
%355 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @str.34, i64 0, i64 0))
%356 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str.35, i64 0, i64 0))
%357 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @str.36, i64 0, i64 0))
%358 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([7 x i8], [7 x i8]* @str.37, i64 0, i64 0))
%359 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @str.38, i64 0, i64 0))
%360 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([20 x i8], [20 x i8]* @str.39, i64 0, i64 0))
%361 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @str.43, i64 0, i64 0))
%362 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @str.41, i64 0, i64 0))
%363 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.25, i64 0, i64 0), i32 11)
%364 = call i32 @putchar(i32 10)
%365 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([16 x i8], [16 x i8]* @str.42, i64 0, i64 0))
%366 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([6 x i8], [6 x i8]* @str.43, i64 0, i64 0))
%367 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @str.44, i64 0, i64 0))
br label %368
368: ; preds = %350, %385
%369 = phi i64 [ 0, %350 ], [ %387, %385 ]
%370 = getelementptr inbounds [20 x i32], [20 x i32]* %7, i64 0, i64 %369
%371 = load i32, i32* %370
%372 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str.29, i64 0, i64 0), i32 %371)
%373 = load i32, i32* %370
%374 = icmp sgt i32 %373, 0
br i1 %374, label %375, label %385
375: ; preds = %368, %375
%376 = phi i64 [ %381, %375 ], [ 0, %368 ]
%377 = getelementptr inbounds [20 x [100 x i8]], [20 x [100 x i8]]* %1, i64 0, i64 %369, i64 %376
%378 = load i8, i8* %377
%379 = sext i8 %378 to i32
%380 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.30, i64 0, i64 0), i32 %379)
%381 = add nuw nsw i64 %376, 1
%382 = load i32, i32* %370
%383 = sext i32 %382 to i64
%384 = icmp slt i64 %381, %383
br i1 %384, label %375, label %385
385: ; preds = %375, %368
%386 = call i32 @putchar(i32 10)
%387 = add nuw nsw i64 %369, 1
%388 = icmp eq i64 %387, 11
br i1 %388, label %389, label %368
389: ; preds = %385
%390 = call i32 @putchar(i32 10)
ret void
}