#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 */
int *ai_rateres(int);
int /*<<< orphan*/ ai_vertsonhex(int, int *);
char *cat(char *, char *);
int /*<<< orphan*/ data_addcards(int, int, int);
scalar_t__ data_atvertex(int /*<<< orphan*/, int);
scalar_t__ data_getcards(int, int);
int data_getresource(int, int);
int /*<<< orphan*/ data_playeratvertex(int);
int /*<<< orphan*/ devcards_domonopoly(int, int);
char *itoa(int);
size_t map_getdat(int, int);
char *map_getresname(int);
int /*<<< orphan*/ map_setmessage(char *);
int /*<<< orphan*/ stats_getlast5rolls(int *);
int ai_playmonopoly(int player) {
  if (data_getcards(player, 2)) {
    data_addcards(player, 2, -1);
    int *res = ai_rateres(player);
    int nums[5];
    stats_getlast5rolls(nums);
    int i, j, k, max, maxi, verts[6];
    int resources[5];
    for (i = 0; i < 5; i++)
      resources[i] = 0;
    max = maxi = 0;
    for (i = 1; i < 22; i++) {
      for (j = 0; j < 5; j++) {
        if (nums[j] == map_getdat(i, 1)) {
          ai_vertsonhex(i, verts);
          for (k = 0; k < 6; k++) {
            if (data_atvertex(data_playeratvertex(verts[k]), verts[k]) > 0) {
              resources[map_getdat(i, 0)] +=
                  data_atvertex(data_playeratvertex(verts[k]), verts[k]);
            }
          }
        }
      }
    }
    for (i = 0; i < 5; i++) {
      if (max < resources[i] - data_getresource(player, i) && res[i] > 1) {
        max = resources[i] - data_getresource(player, i);
        maxi = i;
      }
    }
    if (max < 4)
      return 0;
    map_setmessage(cat(cat(cat("Player ", itoa(player + 1)), " monopolized "),
                       map_getresname(maxi)));
    devcards_domonopoly(player, maxi);
    return 1;
  }
  return 0;
}


x86 assembly (clang, -O0):
<ai_playmonopoly>:
push   %rbp
mov    %rsp,%rbp
sub    $0xb0,%rsp
mov    %edi,-0x8(%rbp)
mov    -0x8(%rbp),%edi
mov    $0x2,%esi
call   1080 <data_getcards@plt>
cmp    $0x0,%rax
je     1490 <ai_playmonopoly+0x2b0>
mov    -0x8(%rbp),%edi
mov    $0x2,%esi
mov    $0xffffffff,%edx
call   1090 <data_addcards@plt>
mov    -0x8(%rbp),%edi
call   1040 <ai_rateres@plt>
mov    %rax,-0x10(%rbp)
lea    -0x30(%rbp),%rdi
call   10d0 <stats_getlast5rolls@plt>
movl   $0x0,-0x34(%rbp)
cmpl   $0x5,-0x34(%rbp)
jge    1257 <ai_playmonopoly+0x77>
movslq -0x34(%rbp),%rax
movl   $0x0,-0x80(%rbp,%rax,4)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1233 <ai_playmonopoly+0x53>
movl   $0x0,-0x44(%rbp)
movl   $0x0,-0x40(%rbp)
movl   $0x1,-0x34(%rbp)
cmpl   $0x16,-0x34(%rbp)
jge    1378 <ai_playmonopoly+0x198>
movl   $0x0,-0x38(%rbp)
cmpl   $0x5,-0x38(%rbp)
jge    1365 <ai_playmonopoly+0x185>
movslq -0x38(%rbp),%rax
movslq -0x30(%rbp,%rax,4),%rax
mov    %rax,-0x88(%rbp)
mov    -0x34(%rbp),%edi
mov    $0x1,%esi
call   10e0 <map_getdat@plt>
mov    %rax,%rcx
mov    -0x88(%rbp),%rax
cmp    %rcx,%rax
jne    1352 <ai_playmonopoly+0x172>
mov    -0x34(%rbp),%edi
lea    -0x60(%rbp),%rsi
call   1030 <ai_vertsonhex@plt>
movl   $0x0,-0x3c(%rbp)
cmpl   $0x6,-0x3c(%rbp)
jge    134d <ai_playmonopoly+0x16d>
movslq -0x3c(%rbp),%rax
mov    -0x60(%rbp,%rax,4),%edi
call   1050 <data_playeratvertex@plt>
mov    %eax,%edi
movslq -0x3c(%rbp),%rax
mov    -0x60(%rbp,%rax,4),%esi
call   1060 <data_atvertex@plt>
cmp    $0x0,%rax
jle    133a <ai_playmonopoly+0x15a>
movslq -0x3c(%rbp),%rax
mov    -0x60(%rbp,%rax,4),%edi
call   1050 <data_playeratvertex@plt>
mov    %eax,%edi
movslq -0x3c(%rbp),%rax
mov    -0x60(%rbp,%rax,4),%esi
call   1060 <data_atvertex@plt>
mov    %rax,-0x90(%rbp)
mov    -0x34(%rbp),%edi
xor    %esi,%esi
call   10e0 <map_getdat@plt>
mov    -0x90(%rbp),%rdx
movslq -0x80(%rbp,%rax,4),%rcx
add    %rdx,%rcx
mov    %ecx,-0x80(%rbp,%rax,4)
jmp    133f <ai_playmonopoly+0x15f>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    12ca <ai_playmonopoly+0xea>
jmp    1352 <ai_playmonopoly+0x172>
jmp    1357 <ai_playmonopoly+0x177>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    127d <ai_playmonopoly+0x9d>
jmp    136a <ai_playmonopoly+0x18a>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    126c <ai_playmonopoly+0x8c>
movl   $0x0,-0x34(%rbp)
cmpl   $0x5,-0x34(%rbp)
jge    1414 <ai_playmonopoly+0x234>
mov    -0x40(%rbp),%eax
mov    %eax,-0x94(%rbp)
movslq -0x34(%rbp),%rax
mov    -0x80(%rbp,%rax,4),%eax
mov    %eax,-0x98(%rbp)
mov    -0x8(%rbp),%edi
mov    -0x34(%rbp),%esi
call   10a0 <data_getresource@plt>
mov    -0x98(%rbp),%ecx
mov    %eax,%edx
mov    -0x94(%rbp),%eax
sub    %edx,%ecx
cmp    %ecx,%eax
jge    1401 <ai_playmonopoly+0x221>
mov    -0x10(%rbp),%rax
movslq -0x34(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jle    1401 <ai_playmonopoly+0x221>
movslq -0x34(%rbp),%rax
mov    -0x80(%rbp,%rax,4),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x8(%rbp),%edi
mov    -0x34(%rbp),%esi
call   10a0 <data_getresource@plt>
mov    %eax,%ecx
mov    -0x9c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x40(%rbp)
mov    -0x34(%rbp),%eax
mov    %eax,-0x44(%rbp)
jmp    1406 <ai_playmonopoly+0x226>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    137f <ai_playmonopoly+0x19f>
cmpl   $0x4,-0x40(%rbp)
jge    142a <ai_playmonopoly+0x24a>
movl   $0x0,-0x4(%rbp)
jmp    1497 <ai_playmonopoly+0x2b7>
mov    -0x8(%rbp),%edi
add    $0x1,%edi
call   10f0 <itoa@plt>
mov    %rax,%rsi
lea    0xbc1(%rip),%rdi
call   1100 <cat@plt>
mov    %rax,%rdi
lea    0xbba(%rip),%rsi
call   1100 <cat@plt>
mov    %rax,-0xa8(%rbp)
mov    -0x44(%rbp),%edi
call   10c0 <map_getresname@plt>
mov    -0xa8(%rbp),%rdi
mov    %rax,%rsi
call   1100 <cat@plt>
mov    %rax,%rdi
call   10b0 <map_setmessage@plt>
mov    -0x8(%rbp),%edi
mov    -0x44(%rbp),%esi
call   1070 <devcards_domonopoly@plt>
movl   $0x1,-0x4(%rbp)
jmp    1497 <ai_playmonopoly+0x2b7>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0xb0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<ai_playmonopoly>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x58,%rsp
mov    %edi,%r15d
mov    $0x2,%esi
call   1080 <data_getcards@plt>
test   %rax,%rax
je     1462 <ai_playmonopoly+0x282>
mov    %r15d,%edi
mov    $0x2,%esi
mov    $0xffffffff,%edx
call   1090 <data_addcards@plt>
mov    %r15d,%edi
call   1040 <ai_rateres@plt>
mov    %rax,0x18(%rsp)
lea    0x40(%rsp),%rdi
call   10d0 <stats_getlast5rolls@plt>
xorps  %xmm0,%xmm0
movaps %xmm0,(%rsp)
movl   $0x0,0x10(%rsp)
mov    $0x1,%ebp
lea    0x20(%rsp),%r12
jmp    125c <ai_playmonopoly+0x7c>
nopl   0x0(%rax,%rax,1)
add    $0x1,%ebp
cmp    $0x16,%ebp
je     12ec <ai_playmonopoly+0x10c>
xor    %r13d,%r13d
jmp    127a <ai_playmonopoly+0x9a>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%r13
cmp    $0x5,%r13
je     1250 <ai_playmonopoly+0x70>
movslq 0x40(%rsp,%r13,4),%rbx
mov    %ebp,%edi
mov    $0x1,%esi
call   10e0 <map_getdat@plt>
cmp    %rbx,%rax
jne    1270 <ai_playmonopoly+0x90>
mov    %ebp,%edi
mov    %r12,%rsi
call   1030 <ai_vertsonhex@plt>
xor    %r14d,%r14d
jmp    12aa <ai_playmonopoly+0xca>
nop
add    $0x1,%r14
cmp    $0x6,%r14
je     1270 <ai_playmonopoly+0x90>
mov    0x20(%rsp,%r14,4),%edi
call   1050 <data_playeratvertex@plt>
mov    0x20(%rsp,%r14,4),%esi
mov    %eax,%edi
call   1060 <data_atvertex@plt>
test   %rax,%rax
jle    12a0 <ai_playmonopoly+0xc0>
mov    0x20(%rsp,%r14,4),%edi
call   1050 <data_playeratvertex@plt>
mov    0x20(%rsp,%r14,4),%esi
mov    %eax,%edi
call   1060 <data_atvertex@plt>
mov    %rax,%rbx
mov    %ebp,%edi
xor    %esi,%esi
call   10e0 <map_getdat@plt>
add    %ebx,(%rsp,%rax,4)
jmp    12a0 <ai_playmonopoly+0xc0>
mov    (%rsp),%ebp
xor    %r14d,%r14d
mov    %r15d,%edi
xor    %esi,%esi
call   10a0 <data_getresource@plt>
mov    $0x0,%ebx
cmp    %eax,%ebp
mov    0x18(%rsp),%r12
jle    1324 <ai_playmonopoly+0x144>
cmpl   $0x2,(%r12)
mov    $0x0,%ebx
jl     1324 <ai_playmonopoly+0x144>
mov    %r15d,%edi
xor    %esi,%esi
call   10a0 <data_getresource@plt>
sub    %eax,%ebp
mov    %ebp,%ebx
mov    0x4(%rsp),%ebp
mov    %r15d,%edi
mov    $0x1,%esi
call   10a0 <data_getresource@plt>
mov    %ebp,%ecx
sub    %eax,%ecx
cmp    %ecx,%ebx
jge    135c <ai_playmonopoly+0x17c>
cmpl   $0x2,0x4(%r12)
jl     135c <ai_playmonopoly+0x17c>
mov    $0x1,%r14d
mov    %r15d,%edi
mov    $0x1,%esi
call   10a0 <data_getresource@plt>
sub    %eax,%ebp
mov    %ebp,%ebx
mov    0x8(%rsp),%ebp
mov    %r15d,%edi
mov    $0x2,%esi
call   10a0 <data_getresource@plt>
mov    %ebp,%ecx
sub    %eax,%ecx
cmp    %ecx,%ebx
jge    1394 <ai_playmonopoly+0x1b4>
cmpl   $0x2,0x8(%r12)
jl     1394 <ai_playmonopoly+0x1b4>
mov    $0x2,%r14d
mov    %r15d,%edi
mov    $0x2,%esi
call   10a0 <data_getresource@plt>
sub    %eax,%ebp
mov    %ebp,%ebx
mov    0xc(%rsp),%ebp
mov    %r15d,%edi
mov    $0x3,%esi
call   10a0 <data_getresource@plt>
mov    %ebp,%ecx
sub    %eax,%ecx
cmp    %ecx,%ebx
jge    13cc <ai_playmonopoly+0x1ec>
cmpl   $0x2,0xc(%r12)
jl     13cc <ai_playmonopoly+0x1ec>
mov    $0x3,%r14d
mov    %r15d,%edi
mov    $0x3,%esi
call   10a0 <data_getresource@plt>
sub    %eax,%ebp
mov    %ebp,%ebx
mov    0x10(%rsp),%ebp
mov    %r15d,%edi
mov    $0x4,%esi
call   10a0 <data_getresource@plt>
mov    %ebp,%ecx
sub    %eax,%ecx
cmp    %ecx,%ebx
jge    1404 <ai_playmonopoly+0x224>
cmpl   $0x2,0x10(%r12)
jl     1404 <ai_playmonopoly+0x224>
mov    $0x4,%r14d
mov    %r15d,%edi
mov    $0x4,%esi
call   10a0 <data_getresource@plt>
sub    %eax,%ebp
mov    %ebp,%ebx
xor    %eax,%eax
cmp    $0x4,%ebx
jl     1464 <ai_playmonopoly+0x284>
lea    0x1(%r15),%edi
call   10f0 <itoa@plt>
lea    0xbe5(%rip),%rdi
mov    %rax,%rsi
call   1100 <cat@plt>
lea    0xbde(%rip),%rsi
mov    %rax,%rdi
call   1100 <cat@plt>
mov    %rax,%rbx
mov    %r14d,%edi
call   10c0 <map_getresname@plt>
mov    %rbx,%rdi
mov    %rax,%rsi
call   1100 <cat@plt>
mov    %rax,%rdi
call   10b0 <map_setmessage@plt>
mov    %r15d,%edi
mov    %r14d,%esi
call   1070 <devcards_domonopoly@plt>
mov    $0x1,%eax
jmp    1464 <ai_playmonopoly+0x284>
xor    %eax,%eax
add    $0x58,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [8 x i8] c"Player \00"
@.str.1 = [14 x i8] c" monopolized \00"
define i32 @ai_playmonopoly(i32 %0) {
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32*
%5 = alloca [5 x i32]
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca [6 x i32]
%12 = alloca [5 x i32]
store i32 %0, i32* %3
%13 = load i32, i32* %3
%14 = call i64 @data_getcards(i32 %13, i32 2)
%15 = icmp ne i64 %14, 0
br i1 %15, label %16, label %153
16: ; preds = %1
%17 = load i32, i32* %3
%18 = call i32 @data_addcards(i32 %17, i32 2, i32 -1)
%19 = load i32, i32* %3
%20 = call i32* @ai_rateres(i32 %19)
store i32* %20, i32** %4
%21 = getelementptr inbounds [5 x i32], [5 x i32]* %5, i64 0, i64 0
%22 = call i32 @stats_getlast5rolls(i32* %21)
store i32 0, i32* %6
br label %23
23: ; preds = %30, %16
%24 = load i32, i32* %6
%25 = icmp slt i32 %24, 5
br i1 %25, label %26, label %33
26: ; preds = %23
%27 = load i32, i32* %6
%28 = sext i32 %27 to i64
%29 = getelementptr inbounds [5 x i32], [5 x i32]* %12, i64 0, i64 %28
store i32 0, i32* %29
br label %30
30: ; preds = %26
%31 = load i32, i32* %6
%32 = add nsw i32 %31, 1
store i32 %32, i32* %6
br label %23
33: ; preds = %23
store i32 0, i32* %10
store i32 0, i32* %9
store i32 1, i32* %6
br label %34
34: ; preds = %97, %33
%35 = load i32, i32* %6
%36 = icmp slt i32 %35, 22
br i1 %36, label %37, label %100
37: ; preds = %34
store i32 0, i32* %7
br label %38
38: ; preds = %93, %37
%39 = load i32, i32* %7
%40 = icmp slt i32 %39, 5
br i1 %40, label %41, label %96
41: ; preds = %38
%42 = load i32, i32* %7
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds [5 x i32], [5 x i32]* %5, i64 0, i64 %43
%45 = load i32, i32* %44
%46 = sext i32 %45 to i64
%47 = load i32, i32* %6
%48 = call i64 @map_getdat(i32 %47, i32 1)
%49 = icmp eq i64 %46, %48
br i1 %49, label %50, label %92
50: ; preds = %41
%51 = load i32, i32* %6
%52 = getelementptr inbounds [6 x i32], [6 x i32]* %11, i64 0, i64 0
%53 = call i32 @ai_vertsonhex(i32 %51, i32* %52)
store i32 0, i32* %8
br label %54
54: ; preds = %88, %50
%55 = load i32, i32* %8
%56 = icmp slt i32 %55, 6
br i1 %56, label %57, label %91
57: ; preds = %54
%58 = load i32, i32* %8
%59 = sext i32 %58 to i64
%60 = getelementptr inbounds [6 x i32], [6 x i32]* %11, i64 0, i64 %59
%61 = load i32, i32* %60
%62 = call i32 @data_playeratvertex(i32 %61)
%63 = load i32, i32* %8
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds [6 x i32], [6 x i32]* %11, i64 0, i64 %64
%66 = load i32, i32* %65
%67 = call i64 @data_atvertex(i32 %62, i32 %66)
%68 = icmp sgt i64 %67, 0
br i1 %68, label %69, label %87
69: ; preds = %57
%70 = load i32, i32* %8
%71 = sext i32 %70 to i64
%72 = getelementptr inbounds [6 x i32], [6 x i32]* %11, i64 0, i64 %71
%73 = load i32, i32* %72
%74 = call i32 @data_playeratvertex(i32 %73)
%75 = load i32, i32* %8
%76 = sext i32 %75 to i64
%77 = getelementptr inbounds [6 x i32], [6 x i32]* %11, i64 0, i64 %76
%78 = load i32, i32* %77
%79 = call i64 @data_atvertex(i32 %74, i32 %78)
%80 = load i32, i32* %6
%81 = call i64 @map_getdat(i32 %80, i32 0)
%82 = getelementptr inbounds [5 x i32], [5 x i32]* %12, i64 0, i64 %81
%83 = load i32, i32* %82
%84 = sext i32 %83 to i64
%85 = add nsw i64 %84, %79
%86 = trunc i64 %85 to i32
store i32 %86, i32* %82
br label %87
87: ; preds = %69, %57
br label %88
88: ; preds = %87
%89 = load i32, i32* %8
%90 = add nsw i32 %89, 1
store i32 %90, i32* %8
br label %54
91: ; preds = %54
br label %92
92: ; preds = %91, %41
br label %93
93: ; preds = %92
%94 = load i32, i32* %7
%95 = add nsw i32 %94, 1
store i32 %95, i32* %7
br label %38
96: ; preds = %38
br label %97
97: ; preds = %96
%98 = load i32, i32* %6
%99 = add nsw i32 %98, 1
store i32 %99, i32* %6
br label %34
100: ; preds = %34
store i32 0, i32* %6
br label %101
101: ; preds = %133, %100
%102 = load i32, i32* %6
%103 = icmp slt i32 %102, 5
br i1 %103, label %104, label %136
104: ; preds = %101
%105 = load i32, i32* %9
%106 = load i32, i32* %6
%107 = sext i32 %106 to i64
%108 = getelementptr inbounds [5 x i32], [5 x i32]* %12, i64 0, i64 %107
%109 = load i32, i32* %108
%110 = load i32, i32* %3
%111 = load i32, i32* %6
%112 = call i32 @data_getresource(i32 %110, i32 %111)
%113 = sub nsw i32 %109, %112
%114 = icmp slt i32 %105, %113
br i1 %114, label %115, label %132
115: ; preds = %104
%116 = load i32*, i32** %4
%117 = load i32, i32* %6
%118 = sext i32 %117 to i64
%119 = getelementptr inbounds i32, i32* %116, i64 %118
%120 = load i32, i32* %119
%121 = icmp sgt i32 %120, 1
br i1 %121, label %122, label %132
122: ; preds = %115
%123 = load i32, i32* %6
%124 = sext i32 %123 to i64
%125 = getelementptr inbounds [5 x i32], [5 x i32]* %12, i64 0, i64 %124
%126 = load i32, i32* %125
%127 = load i32, i32* %3
%128 = load i32, i32* %6
%129 = call i32 @data_getresource(i32 %127, i32 %128)
%130 = sub nsw i32 %126, %129
store i32 %130, i32* %9
%131 = load i32, i32* %6
store i32 %131, i32* %10
br label %132
132: ; preds = %122, %115, %104
br label %133
133: ; preds = %132
%134 = load i32, i32* %6
%135 = add nsw i32 %134, 1
store i32 %135, i32* %6
br label %101
136: ; preds = %101
%137 = load i32, i32* %9
%138 = icmp slt i32 %137, 4
br i1 %138, label %139, label %140
139: ; preds = %136
store i32 0, i32* %2
br label %154
140: ; preds = %136
%141 = load i32, i32* %3
%142 = add nsw i32 %141, 1
%143 = call i8* @itoa(i32 %142)
%144 = call i8* @cat(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), i8* %143)
%145 = call i8* @cat(i8* %144, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.1, i64 0, i64 0))
%146 = load i32, i32* %10
%147 = call i8* @map_getresname(i32 %146)
%148 = call i8* @cat(i8* %145, i8* %147)
%149 = call i32 @map_setmessage(i8* %148)
%150 = load i32, i32* %3
%151 = load i32, i32* %10
%152 = call i32 @devcards_domonopoly(i32 %150, i32 %151)
store i32 1, i32* %2
br label %154
153: ; preds = %1
store i32 0, i32* %2
br label %154
154: ; preds = %153, %140, %139
%155 = load i32, i32* %2
ret i32 %155
}

LLVM IR (-O2):
@.str = [8 x i8] c"Player \00"
@.str.1 = [14 x i8] c" monopolized \00"
define i32 @ai_playmonopoly(i32 %0) {
%2 = alloca [5 x i32]
%3 = alloca [6 x i32]
%4 = alloca [5 x i32]
%5 = bitcast [5 x i32]* %4 to i8*
%6 = tail call i64 @data_getcards(i32 %0, i32 2)
%7 = icmp eq i64 %6, 0
br i1 %7, label %139, label %8
8: ; preds = %1
%9 = tail call i32 @data_addcards(i32 %0, i32 2, i32 -1)
%10 = tail call i32* @ai_rateres(i32 %0)
%11 = bitcast [5 x i32]* %2 to i8*
%12 = getelementptr inbounds [5 x i32], [5 x i32]* %2, i64 0, i64 0
%13 = call i32 @stats_getlast5rolls(i32* %12)
%14 = bitcast [6 x i32]* %3 to i8*
%15 = getelementptr inbounds [6 x i32], [6 x i32]* %3, i64 0, i64 0
br label %16
16: ; preds = %8, %51
%17 = phi i32 [ 1, %8 ], [ %52, %51 ]
br label %18
18: ; preds = %16, %48
%19 = phi i64 [ 0, %16 ], [ %49, %48 ]
%20 = getelementptr inbounds [5 x i32], [5 x i32]* %2, i64 0, i64 %19
%21 = load i32, i32* %20
%22 = sext i32 %21 to i64
%23 = call i64 @map_getdat(i32 %17, i32 1)
%24 = icmp eq i64 %23, %22
br i1 %24, label %25, label %48
25: ; preds = %18
%26 = call i32 @ai_vertsonhex(i32 %17, i32* %15)
br label %27
27: ; preds = %25, %45
%28 = phi i64 [ 0, %25 ], [ %46, %45 ]
%29 = getelementptr inbounds [6 x i32], [6 x i32]* %3, i64 0, i64 %28
%30 = load i32, i32* %29
%31 = call i32 @data_playeratvertex(i32 %30)
%32 = load i32, i32* %29
%33 = call i64 @data_atvertex(i32 %31, i32 %32)
%34 = icmp sgt i64 %33, 0
br i1 %34, label %35, label %45
35: ; preds = %27
%36 = load i32, i32* %29
%37 = call i32 @data_playeratvertex(i32 %36)
%38 = load i32, i32* %29
%39 = call i64 @data_atvertex(i32 %37, i32 %38)
%40 = call i64 @map_getdat(i32 %17, i32 0)
%41 = getelementptr inbounds [5 x i32], [5 x i32]* %4, i64 0, i64 %40
%42 = load i32, i32* %41
%43 = trunc i64 %39 to i32
%44 = add i32 %42, %43
store i32 %44, i32* %41
br label %45
45: ; preds = %27, %35
%46 = add nuw nsw i64 %28, 1
%47 = icmp eq i64 %46, 6
br i1 %47, label %48, label %27
48: ; preds = %45, %18
%49 = add nuw nsw i64 %19, 1
%50 = icmp eq i64 %49, 5
br i1 %50, label %51, label %18
51: ; preds = %48
%52 = add nuw nsw i32 %17, 1
%53 = icmp eq i32 %52, 22
br i1 %53, label %54, label %16
54: ; preds = %51
%55 = getelementptr inbounds [5 x i32], [5 x i32]* %4, i64 0, i64 0
%56 = load i32, i32* %55
%57 = call i32 @data_getresource(i32 %0, i32 0)
%58 = icmp sgt i32 %56, %57
br i1 %58, label %59, label %65
59: ; preds = %54
%60 = load i32, i32* %10
%61 = icmp sgt i32 %60, 1
br i1 %61, label %62, label %65
62: ; preds = %59
%63 = call i32 @data_getresource(i32 %0, i32 0)
%64 = sub nsw i32 %56, %63
br label %65
65: ; preds = %54, %59, %62
%66 = phi i32 [ %64, %62 ], [ 0, %59 ], [ 0, %54 ]
%67 = getelementptr inbounds [5 x i32], [5 x i32]* %4, i64 0, i64 1
%68 = load i32, i32* %67
%69 = call i32 @data_getresource(i32 %0, i32 1)
%70 = sub nsw i32 %68, %69
%71 = icmp slt i32 %66, %70
br i1 %71, label %72, label %79
72: ; preds = %65
%73 = getelementptr inbounds i32, i32* %10, i64 1
%74 = load i32, i32* %73
%75 = icmp sgt i32 %74, 1
br i1 %75, label %76, label %79
76: ; preds = %72
%77 = call i32 @data_getresource(i32 %0, i32 1)
%78 = sub nsw i32 %68, %77
br label %79
79: ; preds = %76, %72, %65
%80 = phi i32 [ %78, %76 ], [ %66, %72 ], [ %66, %65 ]
%81 = phi i32 [ 1, %76 ], [ 0, %72 ], [ 0, %65 ]
%82 = getelementptr inbounds [5 x i32], [5 x i32]* %4, i64 0, i64 2
%83 = load i32, i32* %82
%84 = call i32 @data_getresource(i32 %0, i32 2)
%85 = sub nsw i32 %83, %84
%86 = icmp slt i32 %80, %85
br i1 %86, label %87, label %94
87: ; preds = %79
%88 = getelementptr inbounds i32, i32* %10, i64 2
%89 = load i32, i32* %88
%90 = icmp sgt i32 %89, 1
br i1 %90, label %91, label %94
91: ; preds = %87
%92 = call i32 @data_getresource(i32 %0, i32 2)
%93 = sub nsw i32 %83, %92
br label %94
94: ; preds = %91, %87, %79
%95 = phi i32 [ %93, %91 ], [ %80, %87 ], [ %80, %79 ]
%96 = phi i32 [ 2, %91 ], [ %81, %87 ], [ %81, %79 ]
%97 = getelementptr inbounds [5 x i32], [5 x i32]* %4, i64 0, i64 3
%98 = load i32, i32* %97
%99 = call i32 @data_getresource(i32 %0, i32 3)
%100 = sub nsw i32 %98, %99
%101 = icmp slt i32 %95, %100
br i1 %101, label %102, label %109
102: ; preds = %94
%103 = getelementptr inbounds i32, i32* %10, i64 3
%104 = load i32, i32* %103
%105 = icmp sgt i32 %104, 1
br i1 %105, label %106, label %109
106: ; preds = %102
%107 = call i32 @data_getresource(i32 %0, i32 3)
%108 = sub nsw i32 %98, %107
br label %109
109: ; preds = %106, %102, %94
%110 = phi i32 [ %108, %106 ], [ %95, %102 ], [ %95, %94 ]
%111 = phi i32 [ 3, %106 ], [ %96, %102 ], [ %96, %94 ]
%112 = getelementptr inbounds [5 x i32], [5 x i32]* %4, i64 0, i64 4
%113 = load i32, i32* %112
%114 = call i32 @data_getresource(i32 %0, i32 4)
%115 = sub nsw i32 %113, %114
%116 = icmp slt i32 %110, %115
br i1 %116, label %117, label %124
117: ; preds = %109
%118 = getelementptr inbounds i32, i32* %10, i64 4
%119 = load i32, i32* %118
%120 = icmp sgt i32 %119, 1
br i1 %120, label %121, label %124
121: ; preds = %117
%122 = call i32 @data_getresource(i32 %0, i32 4)
%123 = sub nsw i32 %113, %122
br label %124
124: ; preds = %121, %117, %109
%125 = phi i32 [ %123, %121 ], [ %110, %117 ], [ %110, %109 ]
%126 = phi i32 [ 4, %121 ], [ %111, %117 ], [ %111, %109 ]
%127 = icmp slt i32 %125, 4
br i1 %127, label %137, label %128
128: ; preds = %124
%129 = add nsw i32 %0, 1
%130 = call i8* @itoa(i32 %129)
%131 = call i8* @cat(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), i8* %130)
%132 = call i8* @cat(i8* %131, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.1, i64 0, i64 0))
%133 = call i8* @map_getresname(i32 %126)
%134 = call i8* @cat(i8* %132, i8* %133)
%135 = call i32 @map_setmessage(i8* %134)
%136 = call i32 @devcards_domonopoly(i32 %0, i32 %126)
br label %137
137: ; preds = %124, %128
%138 = phi i32 [ 1, %128 ], [ 0, %124 ]
br label %139
139: ; preds = %1, %137
%140 = phi i32 [ %138, %137 ], [ 0, %1 ]
ret i32 %140
}