#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
size_t convert_char_int(char);
char convert_int_char(int /*<<< orphan*/);
int general_is_close(int, int, char *, char);
char get_cell(int, int);
int is_close(int, int, char);
scalar_t__ is_color(int, int);
int /*<<< orphan*/ max_array(int *);
char max_letter(char player) {
  char board_copy[25 * 25] = {0};
  for (int x = 0; x < 25; x++) {
    for (int y = 0; y < 25; y++) {
      board_copy[y * 25 + x] = 'Z';
    }
  }
  int nb_of_colors[7] = {0};
  for (int i = 0; i < 25; i++) {
    for (int j = 0; j < 25; j++) {
      if (is_color(i, j) && board_copy[j * 25 + i] == 'Z' &&
          (is_close(i, j, player) |
           general_is_close(i, j, board_copy, get_cell(i, j)))) {
        board_copy[j * 25 + i] = get_cell(i, j);
        nb_of_colors[convert_char_int(get_cell(i, j))]++;
        j = 0;
        i = 0;
      }
    }
  }
  return (convert_int_char(max_array(nb_of_colors)));
}


x86 assembly (clang, -O0):
<max_letter>:
push   %rbp
mov    %rsp,%rbp
sub    $0x2d0,%rsp
mov    %dil,%al
mov    %al,-0x1(%rbp)
lea    -0x280(%rbp),%rdi
xor    %esi,%esi
mov    $0x271,%edx
call   1040 <memset@plt>
movl   $0x0,-0x284(%rbp)
cmpl   $0x19,-0x284(%rbp)
jge    1216 <max_letter+0x96>
movl   $0x0,-0x288(%rbp)
cmpl   $0x19,-0x288(%rbp)
jge    11fd <max_letter+0x7d>
imul   $0x19,-0x288(%rbp),%eax
add    -0x284(%rbp),%eax
cltq
movb   $0x5a,-0x280(%rbp,%rax,1)
5a
mov    -0x288(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x288(%rbp)
jmp    11c5 <max_letter+0x45>
jmp    1202 <max_letter+0x82>
mov    -0x284(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x284(%rbp)
jmp    11ae <max_letter+0x2e>
lea    -0x2b0(%rbp),%rdi
xor    %esi,%esi
mov    $0x1c,%edx
call   1040 <memset@plt>
movl   $0x0,-0x2b4(%rbp)
cmpl   $0x19,-0x2b4(%rbp)
jge    13ab <max_letter+0x22b>
movl   $0x0,-0x2b8(%rbp)
cmpl   $0x19,-0x2b8(%rbp)
jge    1392 <max_letter+0x212>
mov    -0x2b4(%rbp),%edi
mov    -0x2b8(%rbp),%esi
call   1060 <is_color@plt>
cmp    $0x0,%rax
je     1379 <max_letter+0x1f9>
imul   $0x19,-0x2b8(%rbp),%eax
add    -0x2b4(%rbp),%eax
cltq
movsbl -0x280(%rbp,%rax,1),%eax
ff
cmp    $0x5a,%eax
jne    1379 <max_letter+0x1f9>
mov    -0x2b4(%rbp),%edi
mov    -0x2b8(%rbp),%esi
movsbl -0x1(%rbp),%edx
call   10a0 <is_close@plt>
mov    %eax,-0x2bc(%rbp)
mov    -0x2b4(%rbp),%eax
mov    %eax,-0x2d0(%rbp)
mov    -0x2b8(%rbp),%eax
mov    %eax,-0x2cc(%rbp)
lea    -0x280(%rbp),%rax
mov    %rax,-0x2c8(%rbp)
mov    -0x2b4(%rbp),%edi
mov    -0x2b8(%rbp),%esi
call   1050 <get_cell@plt>
mov    -0x2d0(%rbp),%edi
mov    -0x2cc(%rbp),%esi
mov    -0x2c8(%rbp),%rdx
movsbl %al,%ecx
call   1030 <general_is_close@plt>
mov    %eax,%ecx
mov    -0x2bc(%rbp),%eax
or     %ecx,%eax
cmp    $0x0,%eax
je     1379 <max_letter+0x1f9>
mov    -0x2b4(%rbp),%edi
mov    -0x2b8(%rbp),%esi
call   1050 <get_cell@plt>
mov    %al,%cl
imul   $0x19,-0x2b8(%rbp),%eax
add    -0x2b4(%rbp),%eax
cltq
mov    %cl,-0x280(%rbp,%rax,1)
mov    -0x2b4(%rbp),%edi
mov    -0x2b8(%rbp),%esi
call   1050 <get_cell@plt>
movsbl %al,%edi
call   1080 <convert_char_int@plt>
mov    -0x2b0(%rbp,%rax,4),%ecx
add    $0x1,%ecx
mov    %ecx,-0x2b0(%rbp,%rax,4)
movl   $0x0,-0x2b8(%rbp)
movl   $0x0,-0x2b4(%rbp)
jmp    137e <max_letter+0x1fe>
mov    -0x2b8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2b8(%rbp)
jmp    124a <max_letter+0xca>
jmp    1397 <max_letter+0x217>
mov    -0x2b4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2b4(%rbp)
jmp    1233 <max_letter+0xb3>
lea    -0x2b0(%rbp),%rdi
call   1090 <max_array@plt>
mov    %eax,%edi
call   1070 <convert_int_char@plt>
movsbl %al,%eax
add    $0x2d0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<max_letter>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x298,%rsp
mov    %edi,%ebp
lea    0x20(%rsp),%r14
xor    %ebx,%ebx
mov    $0x271,%edx
mov    %r14,%rdi
xor    %esi,%esi
call   1040 <memset@plt>
movaps 0xe50(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movups %xmm0,0x39(%rsp)
movups %xmm0,0x52(%rsp)
movups %xmm0,0x6b(%rsp)
movups %xmm0,0x84(%rsp)
movups %xmm0,0x9d(%rsp)
movups %xmm0,0xb6(%rsp)
movups %xmm0,0xcf(%rsp)
movups %xmm0,0xe8(%rsp)
movups %xmm0,0x101(%rsp)
movups %xmm0,0x11a(%rsp)
movups %xmm0,0x133(%rsp)
movups %xmm0,0x14c(%rsp)
movups %xmm0,0x165(%rsp)
movups %xmm0,0x17e(%rsp)
movups %xmm0,0x197(%rsp)
movaps %xmm0,0x1b0(%rsp)
movups %xmm0,0x1c9(%rsp)
movups %xmm0,0x1e2(%rsp)
movups %xmm0,0x1fb(%rsp)
movups %xmm0,0x214(%rsp)
movups %xmm0,0x22d(%rsp)
movups %xmm0,0x246(%rsp)
movups %xmm0,0x25f(%rsp)
movups %xmm0,0x278(%rsp)
movabs $0x5a5a5a5a5a5a5a5a,%rax
5a 5a 5a
mov    %rax,0x30(%rsp)
mov    %rax,0x49(%rsp)
mov    %rax,0x62(%rsp)
mov    %rax,0x7b(%rsp)
mov    %rax,0x94(%rsp)
mov    %rax,0xad(%rsp)
mov    %rax,0xc6(%rsp)
mov    %rax,0xdf(%rsp)
mov    %rax,0xf8(%rsp)
mov    %rax,0x111(%rsp)
mov    %rax,0x12a(%rsp)
mov    %rax,0x143(%rsp)
mov    %rax,0x15c(%rsp)
mov    %rax,0x175(%rsp)
mov    %rax,0x18e(%rsp)
mov    %rax,0x1a7(%rsp)
mov    %rax,0x1c0(%rsp)
mov    %rax,0x1d9(%rsp)
mov    %rax,0x1f2(%rsp)
mov    %rax,0x20b(%rsp)
mov    %rax,0x224(%rsp)
mov    %rax,0x23d(%rsp)
mov    %rax,0x256(%rsp)
mov    %rax,0x26f(%rsp)
mov    %rax,0x288(%rsp)
movb   $0x5a,0x38(%rsp)
movb   $0x5a,0x51(%rsp)
movb   $0x5a,0x6a(%rsp)
movb   $0x5a,0x83(%rsp)
5a
movb   $0x5a,0x9c(%rsp)
5a
movb   $0x5a,0xb5(%rsp)
5a
movb   $0x5a,0xce(%rsp)
5a
movb   $0x5a,0xe7(%rsp)
5a
movb   $0x5a,0x100(%rsp)
5a
movb   $0x5a,0x119(%rsp)
5a
movb   $0x5a,0x132(%rsp)
5a
movb   $0x5a,0x14b(%rsp)
5a
movb   $0x5a,0x164(%rsp)
5a
movb   $0x5a,0x17d(%rsp)
5a
movb   $0x5a,0x196(%rsp)
5a
movb   $0x5a,0x1af(%rsp)
5a
movb   $0x5a,0x1c8(%rsp)
5a
movb   $0x5a,0x1e1(%rsp)
5a
movb   $0x5a,0x1fa(%rsp)
5a
movb   $0x5a,0x213(%rsp)
5a
movb   $0x5a,0x22c(%rsp)
5a
movb   $0x5a,0x245(%rsp)
5a
movb   $0x5a,0x25e(%rsp)
5a
movb   $0x5a,0x277(%rsp)
5a
movb   $0x5a,0x290(%rsp)
5a
xorps  %xmm0,%xmm0
movups %xmm0,0xc(%rsp)
movaps %xmm0,(%rsp)
movsbl %bpl,%r15d
xor    %ebp,%ebp
jmp    141a <max_letter+0x29a>
cs nopw 0x0(%rax,%rax,1)
nop
lea    0x1(%rbx),%eax
cmp    $0x18,%ebx
mov    %eax,%ebx
jge    1490 <max_letter+0x310>
mov    %ebp,%edi
mov    %ebx,%esi
call   1060 <is_color@plt>
test   %rax,%rax
je     1410 <max_letter+0x290>
lea    (%rbx,%rbx,4),%eax
lea    (%rax,%rax,4),%eax
add    %ebp,%eax
movslq %eax,%r13
cmpb   $0x5a,0x20(%rsp,%r13,1)
jne    1410 <max_letter+0x290>
mov    %ebp,%edi
mov    %ebx,%esi
mov    %r15d,%edx
call   10a0 <is_close@plt>
mov    %eax,%r12d
mov    %ebp,%edi
mov    %ebx,%esi
call   1050 <get_cell@plt>
movsbl %al,%ecx
mov    %ebp,%edi
mov    %ebx,%esi
mov    %r14,%rdx
call   1030 <general_is_close@plt>
or     %r12d,%eax
je     1410 <max_letter+0x290>
mov    %ebp,%edi
mov    %ebx,%esi
call   1050 <get_cell@plt>
mov    %al,0x20(%rsp,%r13,1)
mov    %ebp,%edi
mov    %ebx,%esi
call   1050 <get_cell@plt>
movsbl %al,%edi
call   1080 <convert_char_int@plt>
addl   $0x1,(%rsp,%rax,4)
xor    %ebp,%ebp
xor    %ebx,%ebx
jmp    1410 <max_letter+0x290>
lea    0x1(%rbp),%eax
mov    $0x0,%ebx
cmp    $0x17,%ebp
mov    %eax,%ebp
jle    141a <max_letter+0x29a>
mov    %rsp,%rdi
call   1090 <max_array@plt>
mov    %eax,%edi
call   1070 <convert_int_char@plt>
add    $0x298,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define signext i8 @max_letter(i8 signext %0) {
%2 = alloca i8
%3 = alloca [625 x i8]
%4 = alloca i32
%5 = alloca i32
%6 = alloca [7 x i32]
%7 = alloca i32
%8 = alloca i32
store i8 %0, i8* %2
%9 = bitcast [625 x i8]* %3 to i8*
store i32 0, i32* %4
br label %10
10: ; preds = %28, %1
%11 = load i32, i32* %4
%12 = icmp slt i32 %11, 25
br i1 %12, label %13, label %31
13: ; preds = %10
store i32 0, i32* %5
br label %14
14: ; preds = %24, %13
%15 = load i32, i32* %5
%16 = icmp slt i32 %15, 25
br i1 %16, label %17, label %27
17: ; preds = %14
%18 = load i32, i32* %5
%19 = mul nsw i32 %18, 25
%20 = load i32, i32* %4
%21 = add nsw i32 %19, %20
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds [625 x i8], [625 x i8]* %3, i64 0, i64 %22
store i8 90, i8* %23
br label %24
24: ; preds = %17
%25 = load i32, i32* %5
%26 = add nsw i32 %25, 1
store i32 %26, i32* %5
br label %14
27: ; preds = %14
br label %28
28: ; preds = %27
%29 = load i32, i32* %4
%30 = add nsw i32 %29, 1
store i32 %30, i32* %4
br label %10
31: ; preds = %10
%32 = bitcast [7 x i32]* %6 to i8*
store i32 0, i32* %7
br label %33
33: ; preds = %91, %31
%34 = load i32, i32* %7
%35 = icmp slt i32 %34, 25
br i1 %35, label %36, label %94
36: ; preds = %33
store i32 0, i32* %8
br label %37
37: ; preds = %87, %36
%38 = load i32, i32* %8
%39 = icmp slt i32 %38, 25
br i1 %39, label %40, label %90
40: ; preds = %37
%41 = load i32, i32* %7
%42 = load i32, i32* %8
%43 = call i64 @is_color(i32 %41, i32 %42)
%44 = icmp ne i64 %43, 0
br i1 %44, label %45, label %86
45: ; preds = %40
%46 = load i32, i32* %8
%47 = mul nsw i32 %46, 25
%48 = load i32, i32* %7
%49 = add nsw i32 %47, %48
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds [625 x i8], [625 x i8]* %3, i64 0, i64 %50
%52 = load i8, i8* %51
%53 = sext i8 %52 to i32
%54 = icmp eq i32 %53, 90
br i1 %54, label %55, label %86
55: ; preds = %45
%56 = load i32, i32* %7
%57 = load i32, i32* %8
%58 = load i8, i8* %2
%59 = call i32 @is_close(i32 %56, i32 %57, i8 signext %58)
%60 = load i32, i32* %7
%61 = load i32, i32* %8
%62 = getelementptr inbounds [625 x i8], [625 x i8]* %3, i64 0, i64 0
%63 = load i32, i32* %7
%64 = load i32, i32* %8
%65 = call signext i8 @get_cell(i32 %63, i32 %64)
%66 = call i32 @general_is_close(i32 %60, i32 %61, i8* %62, i8 signext %65)
%67 = or i32 %59, %66
%68 = icmp ne i32 %67, 0
br i1 %68, label %69, label %86
69: ; preds = %55
%70 = load i32, i32* %7
%71 = load i32, i32* %8
%72 = call signext i8 @get_cell(i32 %70, i32 %71)
%73 = load i32, i32* %8
%74 = mul nsw i32 %73, 25
%75 = load i32, i32* %7
%76 = add nsw i32 %74, %75
%77 = sext i32 %76 to i64
%78 = getelementptr inbounds [625 x i8], [625 x i8]* %3, i64 0, i64 %77
store i8 %72, i8* %78
%79 = load i32, i32* %7
%80 = load i32, i32* %8
%81 = call signext i8 @get_cell(i32 %79, i32 %80)
%82 = call i64 @convert_char_int(i8 signext %81)
%83 = getelementptr inbounds [7 x i32], [7 x i32]* %6, i64 0, i64 %82
%84 = load i32, i32* %83
%85 = add nsw i32 %84, 1
store i32 %85, i32* %83
store i32 0, i32* %8
store i32 0, i32* %7
br label %86
86: ; preds = %69, %55, %45, %40
br label %87
87: ; preds = %86
%88 = load i32, i32* %8
%89 = add nsw i32 %88, 1
store i32 %89, i32* %8
br label %37
90: ; preds = %37
br label %91
91: ; preds = %90
%92 = load i32, i32* %7
%93 = add nsw i32 %92, 1
store i32 %93, i32* %7
br label %33
94: ; preds = %33
%95 = getelementptr inbounds [7 x i32], [7 x i32]* %6, i64 0, i64 0
%96 = call i32 @max_array(i32* %95)
%97 = call signext i8 @convert_int_char(i32 %96)
ret i8 %97
}

LLVM IR (-O2):
define signext i8 @max_letter(i8 signext %0) {
%2 = alloca [625 x i8]
%3 = alloca [7 x i32]
%4 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 0
%5 = bitcast [625 x i8]* %2 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %5
%6 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 25
%7 = bitcast i8* %6 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %7
%8 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 50
%9 = bitcast i8* %8 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %9
%10 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 75
%11 = bitcast i8* %10 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %11
%12 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 100
%13 = bitcast i8* %12 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %13
%14 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 125
%15 = bitcast i8* %14 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %15
%16 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 150
%17 = bitcast i8* %16 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %17
%18 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 175
%19 = bitcast i8* %18 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %19
%20 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 200
%21 = bitcast i8* %20 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %21
%22 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 225
%23 = bitcast i8* %22 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %23
%24 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 250
%25 = bitcast i8* %24 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %25
%26 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 275
%27 = bitcast i8* %26 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %27
%28 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 300
%29 = bitcast i8* %28 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %29
%30 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 325
%31 = bitcast i8* %30 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %31
%32 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 350
%33 = bitcast i8* %32 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %33
%34 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 375
%35 = bitcast i8* %34 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %35
%36 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 400
%37 = bitcast i8* %36 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %37
%38 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 425
%39 = bitcast i8* %38 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %39
%40 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 450
%41 = bitcast i8* %40 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %41
%42 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 475
%43 = bitcast i8* %42 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %43
%44 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 500
%45 = bitcast i8* %44 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %45
%46 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 525
%47 = bitcast i8* %46 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %47
%48 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 550
%49 = bitcast i8* %48 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %49
%50 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 575
%51 = bitcast i8* %50 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %51
%52 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 600
%53 = bitcast i8* %52 to <16 x i8>*
store <16 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <16 x i8>* %53
%54 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 16
%55 = bitcast i8* %54 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %55
%56 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 41
%57 = bitcast i8* %56 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %57
%58 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 66
%59 = bitcast i8* %58 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %59
%60 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 91
%61 = bitcast i8* %60 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %61
%62 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 116
%63 = bitcast i8* %62 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %63
%64 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 141
%65 = bitcast i8* %64 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %65
%66 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 166
%67 = bitcast i8* %66 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %67
%68 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 191
%69 = bitcast i8* %68 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %69
%70 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 216
%71 = bitcast i8* %70 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %71
%72 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 241
%73 = bitcast i8* %72 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %73
%74 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 266
%75 = bitcast i8* %74 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %75
%76 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 291
%77 = bitcast i8* %76 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %77
%78 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 316
%79 = bitcast i8* %78 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %79
%80 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 341
%81 = bitcast i8* %80 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %81
%82 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 366
%83 = bitcast i8* %82 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %83
%84 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 391
%85 = bitcast i8* %84 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %85
%86 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 416
%87 = bitcast i8* %86 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %87
%88 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 441
%89 = bitcast i8* %88 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %89
%90 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 466
%91 = bitcast i8* %90 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %91
%92 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 491
%93 = bitcast i8* %92 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %93
%94 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 516
%95 = bitcast i8* %94 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %95
%96 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 541
%97 = bitcast i8* %96 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %97
%98 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 566
%99 = bitcast i8* %98 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %99
%100 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 591
%101 = bitcast i8* %100 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %101
%102 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 616
%103 = bitcast i8* %102 to <8 x i8>*
store <8 x i8> <i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90, i8 90>, <8 x i8>* %103
%104 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 24
store i8 90, i8* %104
%105 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 49
store i8 90, i8* %105
%106 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 74
store i8 90, i8* %106
%107 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 99
store i8 90, i8* %107
%108 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 124
store i8 90, i8* %108
%109 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 149
store i8 90, i8* %109
%110 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 174
store i8 90, i8* %110
%111 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 199
store i8 90, i8* %111
%112 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 224
store i8 90, i8* %112
%113 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 249
store i8 90, i8* %113
%114 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 274
store i8 90, i8* %114
%115 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 299
store i8 90, i8* %115
%116 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 324
store i8 90, i8* %116
%117 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 349
store i8 90, i8* %117
%118 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 374
store i8 90, i8* %118
%119 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 399
store i8 90, i8* %119
%120 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 424
store i8 90, i8* %120
%121 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 449
store i8 90, i8* %121
%122 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 474
store i8 90, i8* %122
%123 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 499
store i8 90, i8* %123
%124 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 524
store i8 90, i8* %124
%125 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 549
store i8 90, i8* %125
%126 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 574
store i8 90, i8* %126
%127 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 599
store i8 90, i8* %127
%128 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 624
store i8 90, i8* %128
%129 = bitcast [7 x i32]* %3 to i8*
br label %137
130: ; preds = %134
%131 = getelementptr inbounds [7 x i32], [7 x i32]* %3, i64 0, i64 0
%132 = call i32 @max_array(i32* %131)
%133 = call signext i8 @convert_int_char(i32 %132)
ret i8 %133
134: ; preds = %162
%135 = add nsw i32 %163, 1
%136 = icmp slt i32 %163, 24
br i1 %136, label %167, label %130
137: ; preds = %167, %1
%138 = phi i32 [ 0, %1 ], [ %168, %167 ]
%139 = phi i32 [ 0, %1 ], [ %169, %167 ]
%140 = call i64 @is_color(i32 %139, i32 %138)
%141 = icmp eq i64 %140, 0
br i1 %141, label %162, label %142
142: ; preds = %137
%143 = mul nsw i32 %138, 25
%144 = add nsw i32 %143, %139
%145 = sext i32 %144 to i64
%146 = getelementptr inbounds [625 x i8], [625 x i8]* %2, i64 0, i64 %145
%147 = load i8, i8* %146
%148 = icmp eq i8 %147, 90
br i1 %148, label %149, label %162
149: ; preds = %142
%150 = call i32 @is_close(i32 %139, i32 %138, i8 signext %0)
%151 = call signext i8 @get_cell(i32 %139, i32 %138)
%152 = call i32 @general_is_close(i32 %139, i32 %138, i8* %4, i8 signext %151)
%153 = or i32 %152, %150
%154 = icmp eq i32 %153, 0
br i1 %154, label %162, label %155
155: ; preds = %149
%156 = call signext i8 @get_cell(i32 %139, i32 %138)
store i8 %156, i8* %146
%157 = call signext i8 @get_cell(i32 %139, i32 %138)
%158 = call i64 @convert_char_int(i8 signext %157)
%159 = getelementptr inbounds [7 x i32], [7 x i32]* %3, i64 0, i64 %158
%160 = load i32, i32* %159
%161 = add nsw i32 %160, 1
store i32 %161, i32* %159
br label %162
162: ; preds = %137, %142, %149, %155
%163 = phi i32 [ 0, %155 ], [ %139, %149 ], [ %139, %142 ], [ %139, %137 ]
%164 = phi i32 [ 0, %155 ], [ %138, %149 ], [ %138, %142 ], [ %138, %137 ]
%165 = add nsw i32 %164, 1
%166 = icmp slt i32 %164, 24
br i1 %166, label %167, label %134
167: ; preds = %162, %134
%168 = phi i32 [ %165, %162 ], [ 0, %134 ]
%169 = phi i32 [ %163, %162 ], [ %135, %134 ]
br label %137
}