#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*/ *);
char *fgets(char *, int, int /*<<< orphan*/ *);
int /*<<< orphan*/ *fopen(char *, char *);
int /*<<< orphan*/ get_predict();
int /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ strcpy(char *, char *);
int /*<<< orphan*/ strncpy(char *, char *, int);
int /*<<< orphan*/ *strstr(char *, char *);
int write_valid_weather_file(char *tmpfile) {
  FILE *fp;
  char rdstring[401];
  char *rtval;
  int flag = 0;
  int totalcount = 33;
  int citycount = 0;
  int i, windlen;
  char genbuf[84];
  int startpoint[6] = {12, 22, 32, 37, 44, 60};
  fp = fopen(tmpfile, "r");
  if (fp == NULL) {
    printf("Open temp file failed\n");
    return 1;
  }
  while (flag != 2) {
    if (flag == 0) {
      rtval = fgets(rdstring, 400, fp);
      if (rtval == NULL) {
        return -1;
      } else {
        if (strstr(rdstring, "ÔÂ") != NULL && strstr(rdstring, "ÈÕ") != NULL &&
            strstr(rdstring, "Ê±") != NULL && strstr(rdstring, "ÖÁ") != NULL) {
          printf("\n                         ¹úÄÚ³ÇÊÐ24Ð¡Ê±ÌìÆøÔ¤±¨\n");
          printf("                    %s\n", rdstring);
          printf("©³©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©"
                 "¥©¥©¥©¥©¥©¥©¥©¥©·\n");
          printf("©§  ³Ç ÊÐ       ÌìÆøÏÖÏó         ÎÂ¶È£¨C£©            "
                 "·çÏò·çÁ¦              ©§\n");
          printf("©§           Ò¹¼ä      °×Ìì     ×îµÍ ×î¸ß      Ò¹¼ä          "
                 "  °×Ìì         ©§\n");
          printf("©Ä©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©¤©"
                 "¤©¤©¤©¤©¤©¤©¤©¤©Ì\n");
        } else if ((rtval = (char *)strstr(rdstring, "±±¾©")) != NULL) {
          for (i = 0; i < 84; i++)
            genbuf[i] = ' ';
          strncpy(genbuf, "©§", 2);
          strcpy(genbuf + 4, "±±¾©");
          genbuf[8] = ' ';
          flag = 1;
          for (i = 0; i < 6; i++)
            for (i = 0; i < 6; i++) {
              fgets(rdstring, 400, fp);
              rtval = (char *)strstr(rdstring + 71, "</");
              if (rtval != NULL) {
                rdstring[rtval - rdstring] = '\0';
                strcpy(genbuf + startpoint[i], rdstring + 71);
                genbuf[startpoint[i] + rtval - rdstring - 71] = ' ';
              }
            }
          genbuf[75] = ' ';
          strcpy(genbuf + 76, "©§");
          printf("%s\n", genbuf);
          fgets(rdstring, 400, fp);
          fgets(rdstring, 400, fp);
        }
      }
    } else if (flag == 1) {
      for (; totalcount > 0; totalcount--) {
        for (i = 0; i < 84; i++)
          genbuf[i] = ' ';
        strncpy(genbuf, "©§", 2);
        fgets(rdstring, 400, fp);
        rtval = (char *)strstr(rdstring + 88, "</");
        rdstring[rtval - rdstring] = '\0';
        strcpy(genbuf + 3, rdstring + 88);
        genbuf[3 + rtval - rdstring - 88] = ' ';
        for (i = 0; i < 6; i++) {
          fgets(rdstring, 400, fp);
          rtval = (char *)strstr(rdstring + 71, "</");
          if (rtval != NULL) {
            rdstring[rtval - rdstring] = '\0';
            strcpy(genbuf + startpoint[i], rdstring + 71);
            genbuf[startpoint[i] + rtval - rdstring - 71] = ' ';
          }
        }
        genbuf[75] = ' ';
        strcpy(genbuf + 76, "©§");
        if (totalcount == 33) {
          printf("©§");
          printf("[1;34;47m");
          genbuf[76] = '\0';
          printf("%s", genbuf + 2);
          printf("[m©§");
          printf("\n");
        } else {
          printf("%s\n", genbuf);
        }
        fgets(rdstring, 400, fp);
        fgets(rdstring, 400, fp);
      }
      flag = 2;
    }
  }
  fclose(fp);
  printf("©»©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©¥©"
         "¥©¥©¥©¥©¿\n");
  printf("                 ÆøÏóÐÅÏ¢È¡×Ô ÖÐ¹úÆøÏóÔÚÏß(www.nmc.gov.cn) \n");
  return 0;
}
int main() {
  get_predict();
  return 0;
}


x86 assembly (clang, -O0):
<write_valid_weather_file>:
push   %rbp
mov    %rsp,%rbp
sub    $0x240,%rsp
mov    %rdi,-0x10(%rbp)
movl   $0x0,-0x1bc(%rbp)
movl   $0x21,-0x1c0(%rbp)
movl   $0x0,-0x1c4(%rbp)
mov    0xe4c(%rip),%rax
mov    %rax,-0x240(%rbp)
mov    0xe46(%rip),%rax
mov    %rax,-0x238(%rbp)
mov    0xe40(%rip),%rax
mov    %rax,-0x230(%rbp)
mov    -0x10(%rbp),%rdi
lea    0xe36(%rip),%rsi
call   1080 <fopen@plt>
mov    %rax,-0x18(%rbp)
cmpq   $0x0,-0x18(%rbp)
jne    1210 <write_valid_weather_file+0x90>
lea    0xe1d(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x1,-0x4(%rbp)
jmp    184f <write_valid_weather_file+0x6cf>
jmp    1215 <write_valid_weather_file+0x95>
cmpl   $0x2,-0x1bc(%rbp)
je     1823 <write_valid_weather_file+0x6a3>
cmpl   $0x0,-0x1bc(%rbp)
jne    1557 <write_valid_weather_file+0x3d7>
lea    -0x1b0(%rbp),%rdi
mov    -0x18(%rbp),%rdx
mov    $0x190,%esi
call   1070 <fgets@plt>
mov    %rax,-0x1b8(%rbp)
cmpq   $0x0,-0x1b8(%rbp)
jne    1265 <write_valid_weather_file+0xe5>
movl   $0xffffffff,-0x4(%rbp)
jmp    184f <write_valid_weather_file+0x6cf>
lea    -0x1b0(%rbp),%rdi
lea    0xdbe(%rip),%rsi
call   10a0 <strstr@plt>
cmp    $0x0,%rax
je     1339 <write_valid_weather_file+0x1b9>
lea    -0x1b0(%rbp),%rdi
lea    0xda6(%rip),%rsi
call   10a0 <strstr@plt>
cmp    $0x0,%rax
je     1339 <write_valid_weather_file+0x1b9>
lea    -0x1b0(%rbp),%rdi
lea    0xd8e(%rip),%rsi
call   10a0 <strstr@plt>
cmp    $0x0,%rax
je     1339 <write_valid_weather_file+0x1b9>
lea    -0x1b0(%rbp),%rdi
lea    0xd76(%rip),%rsi
call   10a0 <strstr@plt>
cmp    $0x0,%rax
je     1339 <write_valid_weather_file+0x1b9>
lea    0xd65(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    -0x1b0(%rbp),%rsi
lea    0xd96(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xda0(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xe30(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xe92(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xef0(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    154d <write_valid_weather_file+0x3cd>
lea    -0x1b0(%rbp),%rdi
lea    0xf74(%rip),%rsi
call   10a0 <strstr@plt>
mov    %rax,-0x1b8(%rbp)
cmp    $0x0,%rax
je     1548 <write_valid_weather_file+0x3c8>
movl   $0x0,-0x1c8(%rbp)
cmpl   $0x54,-0x1c8(%rbp)
jge    1397 <write_valid_weather_file+0x217>
movslq -0x1c8(%rbp),%rax
movb   $0x20,-0x220(%rbp,%rax,1)
20
mov    -0x1c8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c8(%rbp)
jmp    1367 <write_valid_weather_file+0x1e7>
lea    -0x220(%rbp),%rdi
lea    0xf33(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncpy@plt>
lea    -0x220(%rbp),%rdi
add    $0x4,%rdi
lea    0xefa(%rip),%rsi
call   1040 <strcpy@plt>
movb   $0x20,-0x218(%rbp)
movl   $0x1,-0x1bc(%rbp)
movl   $0x0,-0x1c8(%rbp)
cmpl   $0x6,-0x1c8(%rbp)
jge    14eb <write_valid_weather_file+0x36b>
movl   $0x0,-0x1c8(%rbp)
cmpl   $0x6,-0x1c8(%rbp)
jge    14d2 <write_valid_weather_file+0x352>
lea    -0x1b0(%rbp),%rdi
mov    -0x18(%rbp),%rdx
mov    $0x190,%esi
call   1070 <fgets@plt>
lea    -0x1b0(%rbp),%rdi
add    $0x47,%rdi
lea    0xe98(%rip),%rsi
call   10a0 <strstr@plt>
mov    %rax,-0x1b8(%rbp)
cmpq   $0x0,-0x1b8(%rbp)
je     14b9 <write_valid_weather_file+0x339>
mov    -0x1b8(%rbp),%rax
lea    -0x1b0(%rbp),%rcx
sub    %rcx,%rax
movb   $0x0,-0x1b0(%rbp,%rax,1)
lea    -0x220(%rbp),%rdi
movslq -0x1c8(%rbp),%rax
movslq -0x240(%rbp,%rax,4),%rax
ff
add    %rax,%rdi
lea    -0x1b0(%rbp),%rsi
add    $0x47,%rsi
call   1040 <strcpy@plt>
movslq -0x1c8(%rbp),%rax
mov    -0x240(%rbp,%rax,4),%ecx
mov    -0x1b8(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
lea    -0x1b0(%rbp),%rcx
sub    %rcx,%rax
sub    $0x47,%rax
movb   $0x20,-0x220(%rbp,%rax,1)
20
jmp    14be <write_valid_weather_file+0x33e>
mov    -0x1c8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c8(%rbp)
jmp    13f8 <write_valid_weather_file+0x278>
jmp    14d7 <write_valid_weather_file+0x357>
mov    -0x1c8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c8(%rbp)
jmp    13e1 <write_valid_weather_file+0x261>
movb   $0x20,-0x1d5(%rbp)
lea    -0x220(%rbp),%rdi
add    $0x4c,%rdi
lea    0xdd4(%rip),%rsi
call   1040 <strcpy@plt>
lea    -0x220(%rbp),%rsi
lea    0xb88(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    -0x1b0(%rbp),%rdi
mov    -0x18(%rbp),%rdx
mov    $0x190,%esi
call   1070 <fgets@plt>
lea    -0x1b0(%rbp),%rdi
mov    -0x18(%rbp),%rdx
mov    $0x190,%esi
call   1070 <fgets@plt>
jmp    154d <write_valid_weather_file+0x3cd>
jmp    1552 <write_valid_weather_file+0x3d2>
jmp    181e <write_valid_weather_file+0x69e>
cmpl   $0x1,-0x1bc(%rbp)
jne    1819 <write_valid_weather_file+0x699>
jmp    1569 <write_valid_weather_file+0x3e9>
cmpl   $0x0,-0x1c0(%rbp)
jle    180f <write_valid_weather_file+0x68f>
movl   $0x0,-0x1c8(%rbp)
cmpl   $0x54,-0x1c8(%rbp)
jge    15b0 <write_valid_weather_file+0x430>
movslq -0x1c8(%rbp),%rax
movb   $0x20,-0x220(%rbp,%rax,1)
20
mov    -0x1c8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c8(%rbp)
jmp    1580 <write_valid_weather_file+0x400>
lea    -0x220(%rbp),%rdi
lea    0xd1a(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncpy@plt>
lea    -0x1b0(%rbp),%rdi
mov    -0x18(%rbp),%rdx
mov    $0x190,%esi
call   1070 <fgets@plt>
lea    -0x1b0(%rbp),%rdi
add    $0x58,%rdi
lea    0xcd5(%rip),%rsi
call   10a0 <strstr@plt>
mov    %rax,-0x1b8(%rbp)
mov    -0x1b8(%rbp),%rax
lea    -0x1b0(%rbp),%rcx
sub    %rcx,%rax
movb   $0x0,-0x1b0(%rbp,%rax,1)
lea    -0x220(%rbp),%rdi
add    $0x3,%rdi
lea    -0x1b0(%rbp),%rsi
add    $0x58,%rsi
call   1040 <strcpy@plt>
mov    -0x1b8(%rbp),%rax
add    $0x3,%rax
lea    -0x1b0(%rbp),%rcx
sub    %rcx,%rax
sub    $0x58,%rax
movb   $0x20,-0x220(%rbp,%rax,1)
20
movl   $0x0,-0x1c8(%rbp)
cmpl   $0x6,-0x1c8(%rbp)
jge    1734 <write_valid_weather_file+0x5b4>
lea    -0x1b0(%rbp),%rdi
mov    -0x18(%rbp),%rdx
mov    $0x190,%esi
call   1070 <fgets@plt>
lea    -0x1b0(%rbp),%rdi
add    $0x47,%rdi
lea    0xc36(%rip),%rsi
call   10a0 <strstr@plt>
mov    %rax,-0x1b8(%rbp)
cmpq   $0x0,-0x1b8(%rbp)
je     171b <write_valid_weather_file+0x59b>
mov    -0x1b8(%rbp),%rax
lea    -0x1b0(%rbp),%rcx
sub    %rcx,%rax
movb   $0x0,-0x1b0(%rbp,%rax,1)
lea    -0x220(%rbp),%rdi
movslq -0x1c8(%rbp),%rax
movslq -0x240(%rbp,%rax,4),%rax
ff
add    %rax,%rdi
lea    -0x1b0(%rbp),%rsi
add    $0x47,%rsi
call   1040 <strcpy@plt>
movslq -0x1c8(%rbp),%rax
mov    -0x240(%rbp,%rax,4),%ecx
mov    -0x1b8(%rbp),%rax
movslq %ecx,%rcx
add    %rcx,%rax
lea    -0x1b0(%rbp),%rcx
sub    %rcx,%rax
sub    $0x47,%rax
movb   $0x20,-0x220(%rbp,%rax,1)
20
jmp    1720 <write_valid_weather_file+0x5a0>
mov    -0x1c8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c8(%rbp)
jmp    165a <write_valid_weather_file+0x4da>
movb   $0x20,-0x1d5(%rbp)
lea    -0x220(%rbp),%rdi
add    $0x4c,%rdi
lea    0xb8b(%rip),%rsi
call   1040 <strcpy@plt>
cmpl   $0x21,-0x1c0(%rbp)
jne    17bc <write_valid_weather_file+0x63c>
lea    0xb72(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xb53(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movb   $0x0,-0x1d4(%rbp)
lea    -0x220(%rbp),%rsi
add    $0x2,%rsi
lea    0xb3e(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xb33(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xc1e(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
jmp    17d1 <write_valid_weather_file+0x651>
lea    -0x220(%rbp),%rsi
lea    0x8d5(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    -0x1b0(%rbp),%rdi
mov    -0x18(%rbp),%rdx
mov    $0x190,%esi
call   1070 <fgets@plt>
lea    -0x1b0(%rbp),%rdi
mov    -0x18(%rbp),%rdx
mov    $0x190,%esi
call   1070 <fgets@plt>
mov    -0x1c0(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c0(%rbp)
jmp    1569 <write_valid_weather_file+0x3e9>
movl   $0x2,-0x1bc(%rbp)
jmp    181e <write_valid_weather_file+0x69e>
jmp    1215 <write_valid_weather_file+0x95>
mov    -0x18(%rbp),%rdi
call   1050 <fclose@plt>
lea    0xaaa(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
lea    0xb3a(%rip),%rdi
mov    $0x0,%al
call   1060 <printf@plt>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x240,%rsp
pop    %rbp
ret
nopl   0x0(%rax,%rax,1)

x86 assembly (clang, -O2):
<write_valid_weather_file>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x208,%rsp
lea    0xe58(%rip),%rsi
call   10a0 <fopen@plt>
test   %rax,%rax
je     183d <write_valid_weather_file+0x69d>
mov    %rax,%r15
lea    0x70(%rsp),%r12
mov    $0xffffffffffffffa8,%rax
sub    %r12,%rax
mov    %rax,0x68(%rsp)
mov    $0xffffffffffffffb9,%rax
sub    %r12,%rax
mov    %rax,(%rsp)
movl   $0x21,0xc(%rsp)
lea    0x10a3(%rip),%rbx
xor    %ebp,%ebp
xor    %r14d,%r14d
lea    0xe38(%rip),%r13
cs nopw 0x0(%rax,%rax,1)
test   %ebp,%ebp
je     1232 <write_valid_weather_file+0x92>
cmp    $0x2,%ebp
je     1819 <write_valid_weather_file+0x679>
cmp    $0x1,%ebp
jne    1210 <write_valid_weather_file+0x70>
mov    $0x2,%ebp
test   $0x1,%r14b
jne    1210 <write_valid_weather_file+0x70>
jmp    152c <write_valid_weather_file+0x38c>
mov    %r12,%rdi
mov    $0x190,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
test   %rax,%rax
je     1860 <write_valid_weather_file+0x6c0>
mov    %r12,%rdi
lea    0xdbd(%rip),%rsi
call   10c0 <strstr@plt>
test   %rax,%rax
je     12f3 <write_valid_weather_file+0x153>
mov    %r12,%rdi
lea    0xdaa(%rip),%rsi
call   10c0 <strstr@plt>
test   %rax,%rax
je     12f3 <write_valid_weather_file+0x153>
mov    %r12,%rdi
lea    0xd9b(%rip),%rsi
call   10c0 <strstr@plt>
test   %rax,%rax
je     12f3 <write_valid_weather_file+0x153>
mov    %r12,%rdi
lea    0xd8c(%rip),%rsi
call   10c0 <strstr@plt>
test   %rax,%rax
je     12f3 <write_valid_weather_file+0x153>
lea    0xeab(%rip),%rdi
call   1060 <puts@plt>
xor    %ebp,%ebp
lea    0xd72(%rip),%rdi
mov    %r12,%rsi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0xed1(%rip),%rdi
call   1060 <puts@plt>
lea    0xf62(%rip),%rdi
call   1060 <puts@plt>
lea    0xfc5(%rip),%rdi
call   1060 <puts@plt>
lea    0x1024(%rip),%rdi
call   1060 <puts@plt>
jmp    1210 <write_valid_weather_file+0x70>
mov    %r12,%rdi
mov    %r13,%rsi
call   10c0 <strstr@plt>
xor    %ebp,%ebp
test   %rax,%rax
je     1210 <write_valid_weather_file+0x70>
movaps 0xcf0(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps %xmm0,0x40(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x20(%rsp)
movaps %xmm0,0x10(%rsp)
movl   $0x20202020,0x60(%rsp)
20
lea    0x10(%rsp),%rdi
mov    %r13,%rbp
mov    %rbx,%r13
mov    %rbx,%rsi
mov    $0x2,%edx
call   1040 <strncpy@plt>
lea    0x14(%rsp),%rdi
mov    %rbp,%rsi
call   1050 <strcpy@plt>
movb   $0x20,0x18(%rsp)
mov    %r12,%rdi
mov    $0x190,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
lea    0xb7(%rsp),%rbx
mov    %rbx,%rdi
lea    0xcca(%rip),%rsi
call   10c0 <strstr@plt>
test   %rax,%rax
je     13a3 <write_valid_weather_file+0x203>
mov    %rax,%rbp
movb   $0x0,(%rax)
lea    0x1c(%rsp),%rdi
mov    %rbx,%rsi
call   1050 <strcpy@plt>
add    (%rsp),%rbp
movb   $0x20,0x1c(%rsp,%rbp,1)
mov    %r12,%rdi
mov    $0x190,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
mov    %rbx,%rdi
lea    0xc8a(%rip),%rsi
call   10c0 <strstr@plt>
test   %rax,%rax
je     13e3 <write_valid_weather_file+0x243>
mov    %rax,%rbp
movb   $0x0,(%rax)
lea    0x26(%rsp),%rdi
mov    %rbx,%rsi
call   1050 <strcpy@plt>
add    (%rsp),%rbp
movb   $0x20,0x26(%rsp,%rbp,1)
mov    %r12,%rdi
mov    $0x190,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
mov    %rbx,%rdi
lea    0xc4a(%rip),%rsi
call   10c0 <strstr@plt>
test   %rax,%rax
je     1423 <write_valid_weather_file+0x283>
mov    %rax,%rbp
movb   $0x0,(%rax)
lea    0x30(%rsp),%rdi
mov    %rbx,%rsi
call   1050 <strcpy@plt>
add    (%rsp),%rbp
movb   $0x20,0x30(%rsp,%rbp,1)
mov    %r12,%rdi
mov    $0x190,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
mov    %rbx,%rdi
lea    0xc0a(%rip),%rsi
call   10c0 <strstr@plt>
test   %rax,%rax
je     1463 <write_valid_weather_file+0x2c3>
mov    %rax,%rbp
movb   $0x0,(%rax)
lea    0x35(%rsp),%rdi
mov    %rbx,%rsi
call   1050 <strcpy@plt>
add    (%rsp),%rbp
movb   $0x20,0x35(%rsp,%rbp,1)
mov    %r12,%rdi
mov    $0x190,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
mov    %rbx,%rdi
lea    0xbca(%rip),%rsi
call   10c0 <strstr@plt>
test   %rax,%rax
je     14a3 <write_valid_weather_file+0x303>
mov    %rax,%rbp
movb   $0x0,(%rax)
lea    0x3c(%rsp),%rdi
mov    %rbx,%rsi
call   1050 <strcpy@plt>
add    (%rsp),%rbp
movb   $0x20,0x3c(%rsp,%rbp,1)
mov    %r12,%rdi
mov    $0x190,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
mov    %rbx,%rdi
lea    0xb8a(%rip),%rsi
call   10c0 <strstr@plt>
test   %rax,%rax
je     14e3 <write_valid_weather_file+0x343>
mov    %rax,%rbp
movb   $0x0,(%rax)
lea    0x4c(%rsp),%rdi
mov    %rbx,%rsi
call   1050 <strcpy@plt>
add    (%rsp),%rbp
movb   $0x20,0x4c(%rsp,%rbp,1)
movb   $0x20,0x5b(%rsp)
lea    0x5c(%rsp),%rdi
mov    %r13,%rbx
mov    %r13,%rsi
call   1050 <strcpy@plt>
lea    0x10(%rsp),%rdi
call   1060 <puts@plt>
mov    %r12,%rdi
mov    $0x190,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
mov    %r12,%rdi
mov    $0x190,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
mov    $0x1,%ebp
jmp    11ff <write_valid_weather_file+0x5f>
mov    0xc(%rsp),%eax
add    $0x1,%eax
mov    %eax,%r13d
jmp    1588 <write_valid_weather_file+0x3e8>
nopl   0x0(%rax,%rax,1)
lea    0x10(%rsp),%rdi
call   1060 <puts@plt>
mov    %r12,%rdi
mov    $0x190,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
mov    %r12,%rdi
mov    $0x190,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
add    $0xffffffff,%r13d
movl   $0x0,0xc(%rsp)
mov    $0x1,%r14b
mov    $0x2,%ebp
cmp    $0x1,%r13d
jle    11ff <write_valid_weather_file+0x5f>
mov    %r13d,0xc(%rsp)
movaps 0xa6c(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps %xmm0,0x40(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x20(%rsp)
movaps %xmm0,0x10(%rsp)
movl   $0x20202020,0x60(%rsp)
20
lea    0x10(%rsp),%rdi
mov    %rbx,%rsi
mov    $0x2,%edx
call   1040 <strncpy@plt>
mov    %r12,%rdi
mov    $0x190,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
lea    0xc8(%rsp),%rbx
mov    %rbx,%rdi
mov    %r15,%r13
mov    %r12,%r15
lea    0xa58(%rip),%r12
mov    %r12,%rsi
call   10c0 <strstr@plt>
mov    %rax,%rbp
movb   $0x0,(%rax)
lea    0x13(%rsp),%rdi
mov    %rbx,%rsi
mov    0x68(%rsp),%r14
call   1050 <strcpy@plt>
add    %r14,%rbp
movb   $0x20,0x13(%rsp,%rbp,1)
mov    %r15,%r14
mov    %r15,%rdi
mov    %r13,%r15
mov    $0x190,%esi
mov    %r13,%rdx
call   1090 <fgets@plt>
lea    0xb7(%rsp),%rbx
mov    %rbx,%rdi
mov    %r12,%rsi
call   10c0 <strstr@plt>
test   %rax,%rax
je     1661 <write_valid_weather_file+0x4c1>
mov    %rax,%rbp
movb   $0x0,(%rax)
lea    0x1c(%rsp),%rdi
mov    %rbx,%rsi
call   1050 <strcpy@plt>
add    (%rsp),%rbp
movb   $0x20,0x1c(%rsp,%rbp,1)
mov    %r14,%r12
mov    %r14,%rdi
mov    $0x190,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
mov    %rbx,%rdi
lea    0x9c9(%rip),%rsi
call   10c0 <strstr@plt>
test   %rax,%rax
je     16a4 <write_valid_weather_file+0x504>
mov    %rax,%rbp
movb   $0x0,(%rax)
lea    0x26(%rsp),%rdi
mov    %rbx,%rsi
call   1050 <strcpy@plt>
add    (%rsp),%rbp
movb   $0x20,0x26(%rsp,%rbp,1)
mov    %r12,%rdi
mov    $0x190,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
mov    %rbx,%rdi
lea    0x989(%rip),%rsi
call   10c0 <strstr@plt>
test   %rax,%rax
mov    0xc(%rsp),%r13d
je     16e9 <write_valid_weather_file+0x549>
mov    %rax,%rbp
movb   $0x0,(%rax)
lea    0x30(%rsp),%rdi
mov    %rbx,%rsi
call   1050 <strcpy@plt>
add    (%rsp),%rbp
movb   $0x20,0x30(%rsp,%rbp,1)
mov    %r12,%rdi
mov    $0x190,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
mov    %rbx,%rdi
lea    0x944(%rip),%rsi
call   10c0 <strstr@plt>
test   %rax,%rax
je     1729 <write_valid_weather_file+0x589>
mov    %rax,%rbp
movb   $0x0,(%rax)
lea    0x35(%rsp),%rdi
mov    %rbx,%rsi
call   1050 <strcpy@plt>
add    (%rsp),%rbp
movb   $0x20,0x35(%rsp,%rbp,1)
mov    %r12,%rdi
mov    $0x190,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
mov    %rbx,%rdi
lea    0x904(%rip),%rsi
call   10c0 <strstr@plt>
test   %rax,%rax
je     1769 <write_valid_weather_file+0x5c9>
mov    %rax,%rbp
movb   $0x0,(%rax)
lea    0x3c(%rsp),%rdi
mov    %rbx,%rsi
call   1050 <strcpy@plt>
add    (%rsp),%rbp
movb   $0x20,0x3c(%rsp,%rbp,1)
mov    %r12,%rdi
mov    $0x190,%esi
mov    %r15,%rdx
call   1090 <fgets@plt>
mov    %rbx,%rdi
lea    0x8c4(%rip),%rsi
call   10c0 <strstr@plt>
test   %rax,%rax
je     17a9 <write_valid_weather_file+0x609>
mov    %rax,%rbp
movb   $0x0,(%rax)
lea    0x4c(%rsp),%rdi
mov    %rbx,%rsi
call   1050 <strcpy@plt>
add    (%rsp),%rbp
movb   $0x20,0x4c(%rsp,%rbp,1)
movb   $0x20,0x5b(%rsp)
lea    0x5c(%rsp),%rdi
lea    0xae3(%rip),%rbx
mov    %rbx,%rsi
call   1050 <strcpy@plt>
cmp    $0x22,%r13d
jne    1540 <write_valid_weather_file+0x3a0>
mov    %rbx,%rdi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x86d(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
movb   $0x0,0x5c(%rsp)
lea    0x865(%rip),%rdi
lea    0x12(%rsp),%rsi
xor    %eax,%eax
call   1080 <printf@plt>
lea    0x855(%rip),%rdi
xor    %eax,%eax
call   1080 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
jmp    154a <write_valid_weather_file+0x3aa>
mov    %r15,%rdi
call   1070 <fclose@plt>
lea    0x838(%rip),%rdi
call   1060 <puts@plt>
lea    0x8c9(%rip),%rdi
call   1060 <puts@plt>
xor    %eax,%eax
jmp    184e <write_valid_weather_file+0x6ae>
lea    0xb66(%rip),%rdi
call   1060 <puts@plt>
mov    $0x1,%eax
add    $0x208,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    $0xffffffff,%eax
jmp    184e <write_valid_weather_file+0x6ae>
nopw   0x0(%rax,%rax,1)

LLVM IR (-O0):
@__const.write_valid_weather_file.startpoint = [6 x i32] [i32 12, i32 22, i32 32, i32 37, i32 44, i32 60]
@.str = [2 x i8] c"r\00"
@.str.1 = [23 x i8] c"Open temp file failed\0A\00"
@.str.2 = [5 x i8] c"\C3\94\C3\82\00"
@.str.3 = [5 x i8] c"\C3\88\C3\95\00"
@.str.4 = [5 x i8] c"\C3\8A\C2\B1\00"
@.str.5 = [5 x i8] c"\C3\96\C3\81\00"
@.str.6 = [70 x i8] c"\0A \C2\B9\C3\BA\C3\84\C3\9A\C2\B3\C3\87\C3\8A\C3\9024\C3\90\C2\A1\C3\8A\C2\B1\C3\8C\C3\AC\C3\86\C3\B8\C3\94\C2\A4\C2\B1\C2\A8\0A\00"
@.str.7 = [24 x i8] c" %s\0A\00"
@.str.8 = [158 x i8] c"\C2\A9\C2\B3\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\B7\0A\00"
@.str.9 = [112 x i8] c"\C2\A9\C2\A7 \C2\B3\C3\87 \C3\8A\C3\90 \C3\8C\C3\AC\C3\86\C3\B8\C3\8F\C3\96\C3\8F\C3\B3 \C3\8E\C3\82\C2\B6\C3\88\C2\A3\C2\A8C\C2\A3\C2\A9 \C2\B7\C3\A7\C3\8F\C3\B2\C2\B7\C3\A7\C3\81\C2\A6 \C2\A9\C2\A7\0A\00"
@.str.10 = [108 x i8] c"\C2\A9\C2\A7 \C3\92\C2\B9\C2\BC\C3\A4 \C2\B0\C3\97\C3\8C\C3\AC \C3\97\C3\AE\C2\B5\C3\8D \C3\97\C3\AE\C2\B8\C3\9F \C3\92\C2\B9\C2\BC\C3\A4 \C2\B0\C3\97\C3\8C\C3\AC \C2\A9\C2\A7\0A\00"
@.str.11 = [158 x i8] c"\C2\A9\C3\84\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C3\8C\0A\00"
@.str.12 = [9 x i8] c"\C2\B1\C2\B1\C2\BE\C2\A9\00"
@.str.13 = [5 x i8] c"\C2\A9\C2\A7\00"
@.str.14 = [3 x i8] c"</\00"
@.str.15 = [4 x i8] c"%s\0A\00"
@.str.16 = [11 x i8] c"\1B[1;34;47m\00"
@.str.17 = [3 x i8] c"%s\00"
@.str.18 = [8 x i8] c"\1B[m\C2\A9\C2\A7\00"
@.str.19 = [2 x i8] c"\0A\00"
@.str.20 = [158 x i8] c"\C2\A9\C2\BB\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\BF\0A\00"
@.str.21 = [85 x i8] c" \C3\86\C3\B8\C3\8F\C3\B3\C3\90\C3\85\C3\8F\C2\A2\C3\88\C2\A1\C3\97\C3\94 \C3\96\C3\90\C2\B9\C3\BA\C3\86\C3\B8\C3\8F\C3\B3\C3\94\C3\9A\C3\8F\C3\9F(www.nmc.gov.cn) \0A\00"
define i32 @write_valid_weather_file(i8* %0) {
%2 = alloca i32
%3 = alloca i8*
%4 = alloca i32*
%5 = alloca [401 x i8]
%6 = alloca i8*
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca [84 x i8]
%13 = alloca [6 x i32]
store i8* %0, i8** %3
store i32 0, i32* %7
store i32 33, i32* %8
store i32 0, i32* %9
%14 = bitcast [6 x i32]* %13 to i8*
%15 = load i8*, i8** %3
%16 = call i32* @fopen(i8* %15, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
store i32* %16, i32** %4
%17 = load i32*, i32** %4
%18 = icmp eq i32* %17, null
br i1 %18, label %19, label %21
19: ; preds = %1
%20 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.1, i64 0, i64 0))
store i32 1, i32* %2
br label %284
21: ; preds = %1
br label %22
22: ; preds = %278, %21
%23 = load i32, i32* %7
%24 = icmp ne i32 %23, 2
br i1 %24, label %25, label %279
25: ; preds = %22
%26 = load i32, i32* %7
%27 = icmp eq i32 %26, 0
br i1 %27, label %28, label %153
28: ; preds = %25
%29 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%30 = load i32*, i32** %4
%31 = call i8* @fgets(i8* %29, i32 400, i32* %30)
store i8* %31, i8** %6
%32 = load i8*, i8** %6
%33 = icmp eq i8* %32, null
br i1 %33, label %34, label %35
34: ; preds = %28
store i32 -1, i32* %2
br label %284
35: ; preds = %28
%36 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%37 = call i32* @strstr(i8* %36, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%38 = icmp ne i32* %37, null
br i1 %38, label %39, label %59
39: ; preds = %35
%40 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%41 = call i32* @strstr(i8* %40, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0))
%42 = icmp ne i32* %41, null
br i1 %42, label %43, label %59
43: ; preds = %39
%44 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%45 = call i32* @strstr(i8* %44, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
%46 = icmp ne i32* %45, null
br i1 %46, label %47, label %59
47: ; preds = %43
%48 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%49 = call i32* @strstr(i8* %48, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
%50 = icmp ne i32* %49, null
br i1 %50, label %51, label %59
51: ; preds = %47
%52 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([70 x i8], [70 x i8]* @.str.6, i64 0, i64 0))
%53 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%54 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.7, i64 0, i64 0), i8* %53)
%55 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([158 x i8], [158 x i8]* @.str.8, i64 0, i64 0))
%56 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([112 x i8], [112 x i8]* @.str.9, i64 0, i64 0))
%57 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([108 x i8], [108 x i8]* @.str.10, i64 0, i64 0))
%58 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([158 x i8], [158 x i8]* @.str.11, i64 0, i64 0))
br label %151
59: ; preds = %47, %43, %39, %35
%60 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%61 = call i32* @strstr(i8* %60, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.12, i64 0, i64 0))
%62 = bitcast i32* %61 to i8*
store i8* %62, i8** %6
%63 = icmp ne i8* %62, null
br i1 %63, label %64, label %150
64: ; preds = %59
store i32 0, i32* %10
br label %65
65: ; preds = %72, %64
%66 = load i32, i32* %10
%67 = icmp slt i32 %66, 84
br i1 %67, label %68, label %75
68: ; preds = %65
%69 = load i32, i32* %10
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 %70
store i8 32, i8* %71
br label %72
72: ; preds = %68
%73 = load i32, i32* %10
%74 = add nsw i32 %73, 1
store i32 %74, i32* %10
br label %65
75: ; preds = %65
%76 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 0
%77 = call i32 @strncpy(i8* %76, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0), i32 2)
%78 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 0
%79 = getelementptr inbounds i8, i8* %78, i64 4
%80 = call i32 @strcpy(i8* %79, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.12, i64 0, i64 0))
%81 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 8
store i8 32, i8* %81
store i32 1, i32* %7
store i32 0, i32* %10
br label %82
82: ; preds = %134, %75
%83 = load i32, i32* %10
%84 = icmp slt i32 %83, 6
br i1 %84, label %85, label %137
85: ; preds = %82
store i32 0, i32* %10
br label %86
86: ; preds = %130, %85
%87 = load i32, i32* %10
%88 = icmp slt i32 %87, 6
br i1 %88, label %89, label %133
89: ; preds = %86
%90 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%91 = load i32*, i32** %4
%92 = call i8* @fgets(i8* %90, i32 400, i32* %91)
%93 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%94 = getelementptr inbounds i8, i8* %93, i64 71
%95 = call i32* @strstr(i8* %94, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%96 = bitcast i32* %95 to i8*
store i8* %96, i8** %6
%97 = load i8*, i8** %6
%98 = icmp ne i8* %97, null
br i1 %98, label %99, label %129
99: ; preds = %89
%100 = load i8*, i8** %6
%101 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%102 = ptrtoint i8* %100 to i64
%103 = ptrtoint i8* %101 to i64
%104 = sub i64 %102, %103
%105 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 %104
store i8 0, i8* %105
%106 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 0
%107 = load i32, i32* %10
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds [6 x i32], [6 x i32]* %13, i64 0, i64 %108
%110 = load i32, i32* %109
%111 = sext i32 %110 to i64
%112 = getelementptr inbounds i8, i8* %106, i64 %111
%113 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%114 = getelementptr inbounds i8, i8* %113, i64 71
%115 = call i32 @strcpy(i8* %112, i8* %114)
%116 = load i32, i32* %10
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds [6 x i32], [6 x i32]* %13, i64 0, i64 %117
%119 = load i32, i32* %118
%120 = load i8*, i8** %6
%121 = sext i32 %119 to i64
%122 = getelementptr inbounds i8, i8* %120, i64 %121
%123 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%124 = ptrtoint i8* %122 to i64
%125 = ptrtoint i8* %123 to i64
%126 = sub i64 %124, %125
%127 = sub nsw i64 %126, 71
%128 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 %127
store i8 32, i8* %128
br label %129
129: ; preds = %99, %89
br label %130
130: ; preds = %129
%131 = load i32, i32* %10
%132 = add nsw i32 %131, 1
store i32 %132, i32* %10
br label %86
133: ; preds = %86
br label %134
134: ; preds = %133
%135 = load i32, i32* %10
%136 = add nsw i32 %135, 1
store i32 %136, i32* %10
br label %82
137: ; preds = %82
%138 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 75
store i8 32, i8* %138
%139 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 0
%140 = getelementptr inbounds i8, i8* %139, i64 76
%141 = call i32 @strcpy(i8* %140, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0))
%142 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 0
%143 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0), i8* %142)
%144 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%145 = load i32*, i32** %4
%146 = call i8* @fgets(i8* %144, i32 400, i32* %145)
%147 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%148 = load i32*, i32** %4
%149 = call i8* @fgets(i8* %147, i32 400, i32* %148)
br label %150
150: ; preds = %137, %59
br label %151
151: ; preds = %150, %51
br label %152
152: ; preds = %151
br label %278
153: ; preds = %25
%154 = load i32, i32* %7
%155 = icmp eq i32 %154, 1
br i1 %155, label %156, label %277
156: ; preds = %153
br label %157
157: ; preds = %273, %156
%158 = load i32, i32* %8
%159 = icmp sgt i32 %158, 0
br i1 %159, label %160, label %276
160: ; preds = %157
store i32 0, i32* %10
br label %161
161: ; preds = %168, %160
%162 = load i32, i32* %10
%163 = icmp slt i32 %162, 84
br i1 %163, label %164, label %171
164: ; preds = %161
%165 = load i32, i32* %10
%166 = sext i32 %165 to i64
%167 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 %166
store i8 32, i8* %167
br label %168
168: ; preds = %164
%169 = load i32, i32* %10
%170 = add nsw i32 %169, 1
store i32 %170, i32* %10
br label %161
171: ; preds = %161
%172 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 0
%173 = call i32 @strncpy(i8* %172, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0), i32 2)
%174 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%175 = load i32*, i32** %4
%176 = call i8* @fgets(i8* %174, i32 400, i32* %175)
%177 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%178 = getelementptr inbounds i8, i8* %177, i64 88
%179 = call i32* @strstr(i8* %178, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%180 = bitcast i32* %179 to i8*
store i8* %180, i8** %6
%181 = load i8*, i8** %6
%182 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%183 = ptrtoint i8* %181 to i64
%184 = ptrtoint i8* %182 to i64
%185 = sub i64 %183, %184
%186 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 %185
store i8 0, i8* %186
%187 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 0
%188 = getelementptr inbounds i8, i8* %187, i64 3
%189 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%190 = getelementptr inbounds i8, i8* %189, i64 88
%191 = call i32 @strcpy(i8* %188, i8* %190)
%192 = load i8*, i8** %6
%193 = getelementptr inbounds i8, i8* %192, i64 3
%194 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%195 = ptrtoint i8* %193 to i64
%196 = ptrtoint i8* %194 to i64
%197 = sub i64 %195, %196
%198 = sub nsw i64 %197, 88
%199 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 %198
store i8 32, i8* %199
store i32 0, i32* %10
br label %200
200: ; preds = %244, %171
%201 = load i32, i32* %10
%202 = icmp slt i32 %201, 6
br i1 %202, label %203, label %247
203: ; preds = %200
%204 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%205 = load i32*, i32** %4
%206 = call i8* @fgets(i8* %204, i32 400, i32* %205)
%207 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%208 = getelementptr inbounds i8, i8* %207, i64 71
%209 = call i32* @strstr(i8* %208, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%210 = bitcast i32* %209 to i8*
store i8* %210, i8** %6
%211 = load i8*, i8** %6
%212 = icmp ne i8* %211, null
br i1 %212, label %213, label %243
213: ; preds = %203
%214 = load i8*, i8** %6
%215 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%216 = ptrtoint i8* %214 to i64
%217 = ptrtoint i8* %215 to i64
%218 = sub i64 %216, %217
%219 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 %218
store i8 0, i8* %219
%220 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 0
%221 = load i32, i32* %10
%222 = sext i32 %221 to i64
%223 = getelementptr inbounds [6 x i32], [6 x i32]* %13, i64 0, i64 %222
%224 = load i32, i32* %223
%225 = sext i32 %224 to i64
%226 = getelementptr inbounds i8, i8* %220, i64 %225
%227 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%228 = getelementptr inbounds i8, i8* %227, i64 71
%229 = call i32 @strcpy(i8* %226, i8* %228)
%230 = load i32, i32* %10
%231 = sext i32 %230 to i64
%232 = getelementptr inbounds [6 x i32], [6 x i32]* %13, i64 0, i64 %231
%233 = load i32, i32* %232
%234 = load i8*, i8** %6
%235 = sext i32 %233 to i64
%236 = getelementptr inbounds i8, i8* %234, i64 %235
%237 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%238 = ptrtoint i8* %236 to i64
%239 = ptrtoint i8* %237 to i64
%240 = sub i64 %238, %239
%241 = sub nsw i64 %240, 71
%242 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 %241
store i8 32, i8* %242
br label %243
243: ; preds = %213, %203
br label %244
244: ; preds = %243
%245 = load i32, i32* %10
%246 = add nsw i32 %245, 1
store i32 %246, i32* %10
br label %200
247: ; preds = %200
%248 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 75
store i8 32, i8* %248
%249 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 0
%250 = getelementptr inbounds i8, i8* %249, i64 76
%251 = call i32 @strcpy(i8* %250, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0))
%252 = load i32, i32* %8
%253 = icmp eq i32 %252, 33
br i1 %253, label %254, label %263
254: ; preds = %247
%255 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0))
%256 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.16, i64 0, i64 0))
%257 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 76
store i8 0, i8* %257
%258 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 0
%259 = getelementptr inbounds i8, i8* %258, i64 2
%260 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %259)
%261 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.18, i64 0, i64 0))
%262 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.19, i64 0, i64 0))
br label %266
263: ; preds = %247
%264 = getelementptr inbounds [84 x i8], [84 x i8]* %12, i64 0, i64 0
%265 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0), i8* %264)
br label %266
266: ; preds = %263, %254
%267 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%268 = load i32*, i32** %4
%269 = call i8* @fgets(i8* %267, i32 400, i32* %268)
%270 = getelementptr inbounds [401 x i8], [401 x i8]* %5, i64 0, i64 0
%271 = load i32*, i32** %4
%272 = call i8* @fgets(i8* %270, i32 400, i32* %271)
br label %273
273: ; preds = %266
%274 = load i32, i32* %8
%275 = add nsw i32 %274, -1
store i32 %275, i32* %8
br label %157
276: ; preds = %157
store i32 2, i32* %7
br label %277
277: ; preds = %276, %153
br label %278
278: ; preds = %277, %152
br label %22
279: ; preds = %22
%280 = load i32*, i32** %4
%281 = call i32 @fclose(i32* %280)
%282 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([158 x i8], [158 x i8]* @.str.20, i64 0, i64 0))
%283 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([85 x i8], [85 x i8]* @.str.21, i64 0, i64 0))
store i32 0, i32* %2
br label %284
284: ; preds = %279, %34, %19
%285 = load i32, i32* %2
ret i32 %285
}
define i32 @main() {
%1 = alloca i32
store i32 0, i32* %1
%2 = call i32 (...) @get_predict()
ret i32 0
}

LLVM IR (-O2):
@.str = [2 x i8] c"r\00"
@.str.2 = [5 x i8] c"\C3\94\C3\82\00"
@.str.3 = [5 x i8] c"\C3\88\C3\95\00"
@.str.4 = [5 x i8] c"\C3\8A\C2\B1\00"
@.str.5 = [5 x i8] c"\C3\96\C3\81\00"
@.str.7 = [24 x i8] c" %s\0A\00"
@.str.12 = [9 x i8] c"\C2\B1\C2\B1\C2\BE\C2\A9\00"
@.str.13 = [5 x i8] c"\C2\A9\C2\A7\00"
@.str.14 = [3 x i8] c"</\00"
@.str.16 = [11 x i8] c"\1B[1;34;47m\00"
@.str.17 = [3 x i8] c"%s\00"
@.str.18 = [8 x i8] c"\1B[m\C2\A9\C2\A7\00"
@str = [157 x i8] c"\C2\A9\C2\BB\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\BF\00"
@str.22 = [84 x i8] c" \C3\86\C3\B8\C3\8F\C3\B3\C3\90\C3\85\C3\8F\C2\A2\C3\88\C2\A1\C3\97\C3\94 \C3\96\C3\90\C2\B9\C3\BA\C3\86\C3\B8\C3\8F\C3\B3\C3\94\C3\9A\C3\8F\C3\9F(www.nmc.gov.cn) \00"
@str.23 = [69 x i8] c"\0A \C2\B9\C3\BA\C3\84\C3\9A\C2\B3\C3\87\C3\8A\C3\9024\C3\90\C2\A1\C3\8A\C2\B1\C3\8C\C3\AC\C3\86\C3\B8\C3\94\C2\A4\C2\B1\C2\A8\00"
@str.24 = [157 x i8] c"\C2\A9\C2\B3\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\A5\C2\A9\C2\B7\00"
@str.25 = [111 x i8] c"\C2\A9\C2\A7 \C2\B3\C3\87 \C3\8A\C3\90 \C3\8C\C3\AC\C3\86\C3\B8\C3\8F\C3\96\C3\8F\C3\B3 \C3\8E\C3\82\C2\B6\C3\88\C2\A3\C2\A8C\C2\A3\C2\A9 \C2\B7\C3\A7\C3\8F\C3\B2\C2\B7\C3\A7\C3\81\C2\A6 \C2\A9\C2\A7\00"
@str.26 = [107 x i8] c"\C2\A9\C2\A7 \C3\92\C2\B9\C2\BC\C3\A4 \C2\B0\C3\97\C3\8C\C3\AC \C3\97\C3\AE\C2\B5\C3\8D \C3\97\C3\AE\C2\B8\C3\9F \C3\92\C2\B9\C2\BC\C3\A4 \C2\B0\C3\97\C3\8C\C3\AC \C2\A9\C2\A7\00"
@str.27 = [157 x i8] c"\C2\A9\C3\84\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C2\A4\C2\A9\C3\8C\00"
@str.28 = [22 x i8] c"Open temp file failed\00"
define i32 @write_valid_weather_file(i8* nocapture %0) {
%2 = alloca [401 x i8]
%3 = alloca [84 x i8]
%4 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 0
%5 = getelementptr inbounds [401 x i8], [401 x i8]* %2, i64 0, i64 0
%6 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 0
%7 = tail call i32* @fopen(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%8 = icmp eq i32* %7, null
br i1 %8, label %33, label %9
9: ; preds = %1
%10 = getelementptr inbounds [401 x i8], [401 x i8]* %2, i64 0, i64 88
%11 = ptrtoint [401 x i8]* %2 to i64
%12 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 3
%13 = sub i64 -88, %11
%14 = getelementptr inbounds [401 x i8], [401 x i8]* %2, i64 0, i64 71
%15 = sub i64 -71, %11
%16 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 75
%17 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 76
%18 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 2
%19 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 4
%20 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 8
%21 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 12
%22 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 22
%23 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 32
%24 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 37
%25 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 44
%26 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 60
%27 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 12
%28 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 22
%29 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 32
%30 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 37
%31 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 44
%32 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 60
br label %35
33: ; preds = %1
%34 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @str.28, i64 0, i64 0))
br label %270
35: ; preds = %261, %9
%36 = phi i32 [ 0, %9 ], [ 2, %261 ]
%37 = phi i1 [ false, %9 ], [ true, %261 ]
%38 = phi i32 [ 33, %9 ], [ 0, %261 ]
br label %39
39: ; preds = %65, %35
%40 = phi i32 [ %36, %35 ], [ %66, %65 ]
br label %41
41: ; preds = %39, %41
switch i32 %40, label %41 [
i32 2, label %266
i32 0, label %43
i32 1, label %42
]
42: ; preds = %41
br i1 %37, label %65, label %157
43: ; preds = %41
%44 = call i8* @fgets(i8* %5, i32 400, i32* %7)
%45 = icmp eq i8* %44, null
br i1 %45, label %270, label %46
46: ; preds = %43
%47 = call i32* @strstr(i8* %5, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
%48 = icmp eq i32* %47, null
br i1 %48, label %67, label %49
49: ; preds = %46
%50 = call i32* @strstr(i8* %5, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0))
%51 = icmp eq i32* %50, null
br i1 %51, label %67, label %52
52: ; preds = %49
%53 = call i32* @strstr(i8* %5, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
%54 = icmp eq i32* %53, null
br i1 %54, label %67, label %55
55: ; preds = %52
%56 = call i32* @strstr(i8* %5, i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
%57 = icmp eq i32* %56, null
br i1 %57, label %67, label %58
58: ; preds = %55
%59 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([69 x i8], [69 x i8]* @str.23, i64 0, i64 0))
%60 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([24 x i8], [24 x i8]* @.str.7, i64 0, i64 0), i8* %5)
%61 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([157 x i8], [157 x i8]* @str.24, i64 0, i64 0))
%62 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([111 x i8], [111 x i8]* @str.25, i64 0, i64 0))
%63 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([107 x i8], [107 x i8]* @str.26, i64 0, i64 0))
%64 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([157 x i8], [157 x i8]* @str.27, i64 0, i64 0))
br label %65
65: ; preds = %58, %152, %67, %42
%66 = phi i32 [ 2, %42 ], [ 0, %67 ], [ 1, %152 ], [ 0, %58 ]
br label %39
67: ; preds = %55, %52, %49, %46
%68 = call i32* @strstr(i8* %5, i8* dereferenceable(1) getelementptr inbounds ([9 x i8], [9 x i8]* @.str.12, i64 0, i64 0))
%69 = icmp eq i32* %68, null
br i1 %69, label %65, label %70
70: ; preds = %67
%71 = call i32 @strncpy(i8* %6, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0), i32 2)
%72 = call i32 @strcpy(i8* %19, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.12, i64 0, i64 0))
store i8 32, i8* %20
%73 = call i8* @fgets(i8* %5, i32 400, i32* %7)
%74 = call i32* @strstr(i8* %14, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%75 = icmp eq i32* %74, null
br i1 %75, label %85, label %76
76: ; preds = %70
%77 = ptrtoint i32* %74 to i64
%78 = sub i64 %77, %11
%79 = getelementptr inbounds [401 x i8], [401 x i8]* %2, i64 0, i64 %78
store i8 0, i8* %79
%80 = call i32 @strcpy(i8* %27, i8* %14)
%81 = getelementptr inbounds i32, i32* %74, i64 3
%82 = ptrtoint i32* %81 to i64
%83 = add i64 %15, %82
%84 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 %83
store i8 32, i8* %84
br label %85
85: ; preds = %70, %76
%86 = call i8* @fgets(i8* %5, i32 400, i32* %7)
%87 = call i32* @strstr(i8* %14, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%88 = icmp eq i32* %87, null
br i1 %88, label %99, label %89
89: ; preds = %85
%90 = bitcast i32* %87 to i8*
%91 = ptrtoint i32* %87 to i64
%92 = sub i64 %91, %11
%93 = getelementptr inbounds [401 x i8], [401 x i8]* %2, i64 0, i64 %92
store i8 0, i8* %93
%94 = call i32 @strcpy(i8* %28, i8* %14)
%95 = getelementptr inbounds i8, i8* %90, i64 22
%96 = ptrtoint i8* %95 to i64
%97 = add i64 %15, %96
%98 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 %97
store i8 32, i8* %98
br label %99
99: ; preds = %89, %85
%100 = call i8* @fgets(i8* %5, i32 400, i32* %7)
%101 = call i32* @strstr(i8* %14, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%102 = icmp eq i32* %101, null
br i1 %102, label %112, label %103
103: ; preds = %99
%104 = ptrtoint i32* %101 to i64
%105 = sub i64 %104, %11
%106 = getelementptr inbounds [401 x i8], [401 x i8]* %2, i64 0, i64 %105
store i8 0, i8* %106
%107 = call i32 @strcpy(i8* %29, i8* %14)
%108 = getelementptr inbounds i32, i32* %101, i64 8
%109 = ptrtoint i32* %108 to i64
%110 = add i64 %15, %109
%111 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 %110
store i8 32, i8* %111
br label %112
112: ; preds = %103, %99
%113 = call i8* @fgets(i8* %5, i32 400, i32* %7)
%114 = call i32* @strstr(i8* %14, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%115 = icmp eq i32* %114, null
br i1 %115, label %126, label %116
116: ; preds = %112
%117 = bitcast i32* %114 to i8*
%118 = ptrtoint i32* %114 to i64
%119 = sub i64 %118, %11
%120 = getelementptr inbounds [401 x i8], [401 x i8]* %2, i64 0, i64 %119
store i8 0, i8* %120
%121 = call i32 @strcpy(i8* %30, i8* %14)
%122 = getelementptr inbounds i8, i8* %117, i64 37
%123 = ptrtoint i8* %122 to i64
%124 = add i64 %15, %123
%125 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 %124
store i8 32, i8* %125
br label %126
126: ; preds = %116, %112
%127 = call i8* @fgets(i8* %5, i32 400, i32* %7)
%128 = call i32* @strstr(i8* %14, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%129 = icmp eq i32* %128, null
br i1 %129, label %139, label %130
130: ; preds = %126
%131 = ptrtoint i32* %128 to i64
%132 = sub i64 %131, %11
%133 = getelementptr inbounds [401 x i8], [401 x i8]* %2, i64 0, i64 %132
store i8 0, i8* %133
%134 = call i32 @strcpy(i8* %31, i8* %14)
%135 = getelementptr inbounds i32, i32* %128, i64 11
%136 = ptrtoint i32* %135 to i64
%137 = add i64 %15, %136
%138 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 %137
store i8 32, i8* %138
br label %139
139: ; preds = %130, %126
%140 = call i8* @fgets(i8* %5, i32 400, i32* %7)
%141 = call i32* @strstr(i8* %14, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%142 = icmp eq i32* %141, null
br i1 %142, label %152, label %143
143: ; preds = %139
%144 = ptrtoint i32* %141 to i64
%145 = sub i64 %144, %11
%146 = getelementptr inbounds [401 x i8], [401 x i8]* %2, i64 0, i64 %145
store i8 0, i8* %146
%147 = call i32 @strcpy(i8* %32, i8* %14)
%148 = getelementptr inbounds i32, i32* %141, i64 15
%149 = ptrtoint i32* %148 to i64
%150 = add i64 %15, %149
%151 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 %150
store i8 32, i8* %151
br label %152
152: ; preds = %143, %139
store i8 32, i8* %16
%153 = call i32 @strcpy(i8* %17, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0))
%154 = call i32 @puts(i8* %6)
%155 = call i8* @fgets(i8* %5, i32 400, i32* %7)
%156 = call i8* @fgets(i8* %5, i32 400, i32* %7)
br label %65
157: ; preds = %42, %261
%158 = phi i32 [ %264, %261 ], [ %38, %42 ]
%159 = call i32 @strncpy(i8* %6, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0), i32 2)
%160 = call i8* @fgets(i8* %5, i32 400, i32* %7)
%161 = call i32* @strstr(i8* %10, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%162 = bitcast i32* %161 to i8*
%163 = ptrtoint i32* %161 to i64
%164 = sub i64 %163, %11
%165 = getelementptr inbounds [401 x i8], [401 x i8]* %2, i64 0, i64 %164
store i8 0, i8* %165
%166 = call i32 @strcpy(i8* %12, i8* %10)
%167 = getelementptr inbounds i8, i8* %162, i64 3
%168 = ptrtoint i8* %167 to i64
%169 = add i64 %13, %168
%170 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 %169
store i8 32, i8* %170
%171 = call i8* @fgets(i8* %5, i32 400, i32* %7)
%172 = call i32* @strstr(i8* %14, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%173 = icmp eq i32* %172, null
br i1 %173, label %183, label %174
174: ; preds = %157
%175 = ptrtoint i32* %172 to i64
%176 = sub i64 %175, %11
%177 = getelementptr inbounds [401 x i8], [401 x i8]* %2, i64 0, i64 %176
store i8 0, i8* %177
%178 = call i32 @strcpy(i8* %21, i8* %14)
%179 = getelementptr inbounds i32, i32* %172, i64 3
%180 = ptrtoint i32* %179 to i64
%181 = add i64 %15, %180
%182 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 %181
store i8 32, i8* %182
br label %183
183: ; preds = %157, %174
%184 = call i8* @fgets(i8* %5, i32 400, i32* %7)
%185 = call i32* @strstr(i8* %14, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%186 = icmp eq i32* %185, null
br i1 %186, label %197, label %187
187: ; preds = %183
%188 = bitcast i32* %185 to i8*
%189 = ptrtoint i32* %185 to i64
%190 = sub i64 %189, %11
%191 = getelementptr inbounds [401 x i8], [401 x i8]* %2, i64 0, i64 %190
store i8 0, i8* %191
%192 = call i32 @strcpy(i8* %22, i8* %14)
%193 = getelementptr inbounds i8, i8* %188, i64 22
%194 = ptrtoint i8* %193 to i64
%195 = add i64 %15, %194
%196 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 %195
store i8 32, i8* %196
br label %197
197: ; preds = %187, %183
%198 = call i8* @fgets(i8* %5, i32 400, i32* %7)
%199 = call i32* @strstr(i8* %14, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%200 = icmp eq i32* %199, null
br i1 %200, label %210, label %201
201: ; preds = %197
%202 = ptrtoint i32* %199 to i64
%203 = sub i64 %202, %11
%204 = getelementptr inbounds [401 x i8], [401 x i8]* %2, i64 0, i64 %203
store i8 0, i8* %204
%205 = call i32 @strcpy(i8* %23, i8* %14)
%206 = getelementptr inbounds i32, i32* %199, i64 8
%207 = ptrtoint i32* %206 to i64
%208 = add i64 %15, %207
%209 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 %208
store i8 32, i8* %209
br label %210
210: ; preds = %201, %197
%211 = call i8* @fgets(i8* %5, i32 400, i32* %7)
%212 = call i32* @strstr(i8* %14, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%213 = icmp eq i32* %212, null
br i1 %213, label %224, label %214
214: ; preds = %210
%215 = bitcast i32* %212 to i8*
%216 = ptrtoint i32* %212 to i64
%217 = sub i64 %216, %11
%218 = getelementptr inbounds [401 x i8], [401 x i8]* %2, i64 0, i64 %217
store i8 0, i8* %218
%219 = call i32 @strcpy(i8* %24, i8* %14)
%220 = getelementptr inbounds i8, i8* %215, i64 37
%221 = ptrtoint i8* %220 to i64
%222 = add i64 %15, %221
%223 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 %222
store i8 32, i8* %223
br label %224
224: ; preds = %214, %210
%225 = call i8* @fgets(i8* %5, i32 400, i32* %7)
%226 = call i32* @strstr(i8* %14, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%227 = icmp eq i32* %226, null
br i1 %227, label %237, label %228
228: ; preds = %224
%229 = ptrtoint i32* %226 to i64
%230 = sub i64 %229, %11
%231 = getelementptr inbounds [401 x i8], [401 x i8]* %2, i64 0, i64 %230
store i8 0, i8* %231
%232 = call i32 @strcpy(i8* %25, i8* %14)
%233 = getelementptr inbounds i32, i32* %226, i64 11
%234 = ptrtoint i32* %233 to i64
%235 = add i64 %15, %234
%236 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 %235
store i8 32, i8* %236
br label %237
237: ; preds = %228, %224
%238 = call i8* @fgets(i8* %5, i32 400, i32* %7)
%239 = call i32* @strstr(i8* %14, i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%240 = icmp eq i32* %239, null
br i1 %240, label %250, label %241
241: ; preds = %237
%242 = ptrtoint i32* %239 to i64
%243 = sub i64 %242, %11
%244 = getelementptr inbounds [401 x i8], [401 x i8]* %2, i64 0, i64 %243
store i8 0, i8* %244
%245 = call i32 @strcpy(i8* %26, i8* %14)
%246 = getelementptr inbounds i32, i32* %239, i64 15
%247 = ptrtoint i32* %246 to i64
%248 = add i64 %15, %247
%249 = getelementptr inbounds [84 x i8], [84 x i8]* %3, i64 0, i64 %248
store i8 32, i8* %249
br label %250
250: ; preds = %241, %237
store i8 32, i8* %16
%251 = call i32 @strcpy(i8* %17, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0))
%252 = icmp eq i32 %158, 33
br i1 %252, label %253, label %259
253: ; preds = %250
%254 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str.13, i64 0, i64 0))
%255 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([11 x i8], [11 x i8]* @.str.16, i64 0, i64 0))
store i8 0, i8* %17
%256 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i8* %18)
%257 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([8 x i8], [8 x i8]* @.str.18, i64 0, i64 0))
%258 = call i32 @putchar(i32 10)
br label %261
259: ; preds = %250
%260 = call i32 @puts(i8* %6)
br label %261
261: ; preds = %259, %253
%262 = call i8* @fgets(i8* %5, i32 400, i32* %7)
%263 = call i8* @fgets(i8* %5, i32 400, i32* %7)
%264 = add nsw i32 %158, -1
%265 = icmp sgt i32 %158, 1
br i1 %265, label %157, label %35
266: ; preds = %41
%267 = call i32 @fclose(i32* %7)
%268 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([157 x i8], [157 x i8]* @str, i64 0, i64 0))
%269 = call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([84 x i8], [84 x i8]* @str.22, i64 0, i64 0))
br label %270
270: ; preds = %43, %266, %33
%271 = phi i32 [ 1, %33 ], [ 0, %266 ], [ -1, %43 ]
ret i32 %271
}
define i32 @main() {
%1 = tail call i32 (...) @get_predict()
ret i32 0
}