#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 uint8_t;
typedef int uint32_t;
typedef int uint16_t;

/* Variables and functions */
int checkDevice(int, int, int);
int f(int);
int inb(int);
int inl(int);
int inw(scalar_t__);
int /*<<< orphan*/ outb(int, int);
int /*<<< orphan*/ outl(int, int);
int /*<<< orphan*/ printf(char *, ...);
void checkAllBusesWright() {
  uint8_t bus;
  uint8_t device;
  uint8_t function;
  uint32_t got, bar2, base;
  uint16_t ven, dev;
  int i;
  for (bus = 0; bus < 256; bus++) {
    for (device = 0; device < 32; device++) {
      for (function = 0; function < 8; function++) {
        got = checkDevice(bus, device, function);
        if (got != 0xFFFFFFFF) {
          dev = (uint16_t)((got >> 16) & 0xffff);
          ven = (uint16_t)((got >> 0) & 0xffff);
          if (ven == 0x8086 && (dev == 0x1e02)) {
            outl(0x80000000 | (bus << 16) | (device << 11) | (function << 8) |
                     0x18 & 0xfc,
                 0xCF8);
            bar2 = inl(0xCFC);
            base = bar2 & 0xFFFC;
            outb(0x5A, base + 2);
            if (inb(base + 2) == 0x5A) {
              printf("register pritomen\n");
              outb(0xFFFFFFFF, bar2);
              printf("velikost bloku registru = %d\n",
                     f((inb(bar2) & 0xFFFFFFFC) ^ ((inb(bar2)))));
              outb(0x08d0, bar2);
              if (inb(bar2) == 0x08d0) {
                printf("register pritomen\n");
              }
              outb(0xE0, base + 6);
              if (inb(base + 7) & 0x80 == 1)
                break;
              outb(0xE0, base + 6);
              outb(0x01, base + 2);
              outb(0x00, base + 3);
              outb(0x00, base + 4);
              outb(0x00, base + 5);
              outb(0xE0, base + 6);
              outb(0x20, base + 7);
              while (inb(base + 7) & 0x80 == 1)
                ;
              if (inb(base + 7) & 0x80 == 0 && inb(base + 7) & 0x04 == 1) {
                for (i = 0; i < 256; i++) {
                  printf("0x%X\n", inw(base + 0));
                }
              }
              break;
            }
          }
        }
      }
    }
  }
}


x86 assembly (clang, -O0):
<checkAllBusesWright>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movl   $0x0,-0x4(%rbp)
cmpl   $0x100,-0x4(%rbp)
jge    1457 <checkAllBusesWright+0x2d7>
movl   $0x0,-0x8(%rbp)
cmpl   $0x20,-0x8(%rbp)
jge    1444 <checkAllBusesWright+0x2c4>
movl   $0x0,-0xc(%rbp)
cmpl   $0x8,-0xc(%rbp)
jge    1431 <checkAllBusesWright+0x2b1>
mov    -0x4(%rbp),%edi
mov    -0x8(%rbp),%esi
mov    -0xc(%rbp),%edx
call   10a0 <checkDevice@plt>
mov    %eax,-0x10(%rbp)
cmpl   $0xffffffff,-0x10(%rbp)
je     141e <checkAllBusesWright+0x29e>
mov    -0x10(%rbp),%eax
sar    $0x10,%eax
and    $0xffff,%eax
mov    %eax,-0x20(%rbp)
mov    -0x10(%rbp),%eax
sar    $0x0,%eax
and    $0xffff,%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0x8086,-0x1c(%rbp)
jne    1419 <checkAllBusesWright+0x299>
cmpl   $0x1e02,-0x20(%rbp)
jne    1419 <checkAllBusesWright+0x299>
mov    -0x4(%rbp),%edi
shl    $0x10,%edi
or     $0x80000000,%edi
mov    -0x8(%rbp),%eax
shl    $0xb,%eax
or     %eax,%edi
mov    -0xc(%rbp),%eax
shl    $0x8,%eax
or     %eax,%edi
or     $0x18,%edi
mov    $0xcf8,%esi
call   1070 <outl@plt>
mov    $0xcfc,%edi
call   1090 <inl@plt>
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
and    $0xfffc,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%esi
add    $0x2,%esi
mov    $0x5a,%edi
call   1060 <outb@plt>
mov    -0x18(%rbp),%edi
add    $0x2,%edi
call   1080 <inb@plt>
cmp    $0x5a,%eax
jne    1414 <checkAllBusesWright+0x294>
lea    0xd85(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x14(%rbp),%esi
mov    $0xffffffff,%edi
call   1060 <outb@plt>
mov    -0x14(%rbp),%edi
call   1080 <inb@plt>
and    $0xfffffffc,%eax
mov    %eax,-0x28(%rbp)
mov    -0x14(%rbp),%edi
call   1080 <inb@plt>
mov    -0x28(%rbp),%edi
xor    %eax,%edi
call   1040 <f@plt>
mov    %eax,%esi
lea    0xd5b(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x14(%rbp),%esi
mov    $0x8d0,%edi
call   1060 <outb@plt>
mov    -0x14(%rbp),%edi
call   1080 <inb@plt>
cmp    $0x8d0,%eax
jne    12ed <checkAllBusesWright+0x16d>
lea    0xd1a(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x18(%rbp),%esi
add    $0x6,%esi
mov    $0xe0,%edi
call   1060 <outb@plt>
mov    -0x18(%rbp),%edi
add    $0x7,%edi
call   1080 <inb@plt>
and    $0x0,%eax
cmp    $0x0,%eax
je     1319 <checkAllBusesWright+0x199>
jmp    1431 <checkAllBusesWright+0x2b1>
mov    -0x18(%rbp),%esi
add    $0x6,%esi
mov    $0xe0,%edi
call   1060 <outb@plt>
mov    -0x18(%rbp),%esi
add    $0x2,%esi
mov    $0x1,%edi
call   1060 <outb@plt>
mov    -0x18(%rbp),%esi
add    $0x3,%esi
xor    %edi,%edi
call   1060 <outb@plt>
mov    -0x18(%rbp),%esi
add    $0x4,%esi
xor    %edi,%edi
call   1060 <outb@plt>
mov    -0x18(%rbp),%esi
add    $0x5,%esi
xor    %edi,%edi
call   1060 <outb@plt>
mov    -0x18(%rbp),%esi
add    $0x6,%esi
mov    $0xe0,%edi
call   1060 <outb@plt>
mov    -0x18(%rbp),%esi
add    $0x7,%esi
mov    $0x20,%edi
call   1060 <outb@plt>
mov    -0x18(%rbp),%edi
add    $0x7,%edi
call   1080 <inb@plt>
and    $0x0,%eax
cmp    $0x0,%eax
je     139c <checkAllBusesWright+0x21c>
jmp    1380 <checkAllBusesWright+0x200>
mov    -0x18(%rbp),%edi
add    $0x7,%edi
call   1080 <inb@plt>
and    $0x0,%eax
cmp    $0x0,%eax
je     140f <checkAllBusesWright+0x28f>
mov    -0x18(%rbp),%edi
add    $0x7,%edi
call   1080 <inb@plt>
and    $0x0,%eax
cmp    $0x0,%eax
je     140f <checkAllBusesWright+0x28f>
movl   $0x0,-0x24(%rbp)
cmpl   $0x100,-0x24(%rbp)
jge    140a <checkAllBusesWright+0x28a>
mov    -0x18(%rbp),%eax
add    $0x0,%eax
movslq %eax,%rdi
call   1030 <inw@plt>
mov    %eax,%esi
lea    0xc3c(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    13d1 <checkAllBusesWright+0x251>
jmp    140f <checkAllBusesWright+0x28f>
jmp    1431 <checkAllBusesWright+0x2b1>
jmp    1419 <checkAllBusesWright+0x299>
jmp    141e <checkAllBusesWright+0x29e>
jmp    1423 <checkAllBusesWright+0x2a3>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    11b4 <checkAllBusesWright+0x34>
jmp    1436 <checkAllBusesWright+0x2b6>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    11a3 <checkAllBusesWright+0x23>
jmp    1449 <checkAllBusesWright+0x2c9>
mov    -0x4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    118f <checkAllBusesWright+0xf>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<checkAllBusesWright>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
xor    %edi,%edi
jmp    11af <checkAllBusesWright+0x2f>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x1,%edi
cmp    $0x100,%edi
je     136d <checkAllBusesWright+0x1ed>
mov    %edi,%eax
shl    $0x10,%eax
mov    %eax,0x10(%rsp)
xor    %esi,%esi
mov    %edi,0xc(%rsp)
jmp    1265 <checkAllBusesWright+0xe5>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    0x6(%rbp),%r15d
mov    $0xe0,%edi
mov    %r15d,%esi
call   1060 <outb@plt>
lea    0x7(%rbp),%r14d
mov    %r14d,%edi
call   1080 <inb@plt>
mov    $0xe0,%edi
mov    %r15d,%esi
call   1060 <outb@plt>
mov    $0x1,%edi
mov    %ebx,%esi
call   1060 <outb@plt>
mov    %ebp,%esi
or     $0x3,%esi
xor    %edi,%edi
call   1060 <outb@plt>
lea    0x4(%rbp),%esi
xor    %edi,%edi
call   1060 <outb@plt>
add    $0x5,%ebp
xor    %edi,%edi
mov    %ebp,%esi
call   1060 <outb@plt>
mov    $0xe0,%edi
mov    %r15d,%esi
call   1060 <outb@plt>
mov    $0x20,%edi
mov    %r14d,%esi
call   1060 <outb@plt>
mov    %r14d,%edi
call   1080 <inb@plt>
mov    %r14d,%edi
call   1080 <inb@plt>
mov    0xc(%rsp),%edi
mov    %r13d,%esi
add    $0x1,%esi
cmp    $0x20,%esi
je     11a0 <checkAllBusesWright+0x20>
mov    %esi,%eax
shl    $0xb,%eax
or     0x10(%rsp),%eax
mov    %eax,0x14(%rsp)
xor    %r12d,%r12d
xor    %r15d,%r15d
jmp    1298 <checkAllBusesWright+0x118>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r15d
add    $0x100,%r12d
cmp    $0x8,%r15d
mov    0xc(%rsp),%edi
mov    %r13d,%esi
je     1259 <checkAllBusesWright+0xd9>
mov    %esi,%r13d
mov    %r15d,%edx
call   10a0 <checkDevice@plt>
cmp    $0x1e028086,%eax
jne    1280 <checkAllBusesWright+0x100>
mov    0x14(%rsp),%edi
or     %r12d,%edi
or     $0x80000018,%edi
mov    $0xcf8,%esi
call   1070 <outl@plt>
mov    $0xcfc,%edi
call   1090 <inl@plt>
mov    %eax,%r14d
mov    %eax,%ebp
and    $0xfffc,%ebp
lea    0x2(%rbp),%ebx
mov    $0x5a,%edi
mov    %ebx,%esi
call   1060 <outb@plt>
mov    %ebx,%edi
call   1080 <inb@plt>
cmp    $0x5a,%eax
jne    1280 <checkAllBusesWright+0x100>
lea    0xd26(%rip),%rdi
call   1030 <puts@plt>
mov    $0xffffffff,%edi
mov    %r14d,%esi
call   1060 <outb@plt>
mov    %r14d,%edi
call   1080 <inb@plt>
mov    %eax,%r15d
and    $0xfffffffc,%r15d
mov    %r14d,%edi
call   1080 <inb@plt>
xor    %eax,%r15d
mov    %r15d,%edi
call   1040 <f@plt>
lea    0xccd(%rip),%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0x8d0,%edi
mov    %r14d,%esi
call   1060 <outb@plt>
mov    %r14d,%edi
call   1080 <inb@plt>
cmp    $0x8d0,%eax
jne    11d0 <checkAllBusesWright+0x50>
lea    0xcbb(%rip),%rdi
call   1030 <puts@plt>
jmp    11d0 <checkAllBusesWright+0x50>
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [19 x i8] c"register pritomen\0A\00"
@.str.1 = [30 x i8] c"velikost bloku registru = %d\0A\00"
@.str.2 = [6 x i8] c"0x%X\0A\00"
define void @checkAllBusesWright() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
store i32 0, i32* %1
br label %10
10: ; preds = %158, %0
%11 = load i32, i32* %1
%12 = icmp slt i32 %11, 256
br i1 %12, label %13, label %161
13: ; preds = %10
store i32 0, i32* %2
br label %14
14: ; preds = %154, %13
%15 = load i32, i32* %2
%16 = icmp slt i32 %15, 32
br i1 %16, label %17, label %157
17: ; preds = %14
store i32 0, i32* %3
br label %18
18: ; preds = %150, %17
%19 = load i32, i32* %3
%20 = icmp slt i32 %19, 8
br i1 %20, label %21, label %153
21: ; preds = %18
%22 = load i32, i32* %1
%23 = load i32, i32* %2
%24 = load i32, i32* %3
%25 = call i32 @checkDevice(i32 %22, i32 %23, i32 %24)
store i32 %25, i32* %4
%26 = load i32, i32* %4
%27 = icmp ne i32 %26, -1
br i1 %27, label %28, label %149
28: ; preds = %21
%29 = load i32, i32* %4
%30 = ashr i32 %29, 16
%31 = and i32 %30, 65535
store i32 %31, i32* %8
%32 = load i32, i32* %4
%33 = ashr i32 %32, 0
%34 = and i32 %33, 65535
store i32 %34, i32* %7
%35 = load i32, i32* %7
%36 = icmp eq i32 %35, 32902
br i1 %36, label %37, label %148
37: ; preds = %28
%38 = load i32, i32* %8
%39 = icmp eq i32 %38, 7682
br i1 %39, label %40, label %148
40: ; preds = %37
%41 = load i32, i32* %1
%42 = shl i32 %41, 16
%43 = or i32 -2147483648, %42
%44 = load i32, i32* %2
%45 = shl i32 %44, 11
%46 = or i32 %43, %45
%47 = load i32, i32* %3
%48 = shl i32 %47, 8
%49 = or i32 %46, %48
%50 = or i32 %49, 24
%51 = call i32 @outl(i32 %50, i32 3320)
%52 = call i32 @inl(i32 3324)
store i32 %52, i32* %5
%53 = load i32, i32* %5
%54 = and i32 %53, 65532
store i32 %54, i32* %6
%55 = load i32, i32* %6
%56 = add nsw i32 %55, 2
%57 = call i32 @outb(i32 90, i32 %56)
%58 = load i32, i32* %6
%59 = add nsw i32 %58, 2
%60 = call i32 @inb(i32 %59)
%61 = icmp eq i32 %60, 90
br i1 %61, label %62, label %147
62: ; preds = %40
%63 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0))
%64 = load i32, i32* %5
%65 = call i32 @outb(i32 -1, i32 %64)
%66 = load i32, i32* %5
%67 = call i32 @inb(i32 %66)
%68 = and i32 %67, -4
%69 = load i32, i32* %5
%70 = call i32 @inb(i32 %69)
%71 = xor i32 %68, %70
%72 = call i32 @f(i32 %71)
%73 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.1, i64 0, i64 0), i32 %72)
%74 = load i32, i32* %5
%75 = call i32 @outb(i32 2256, i32 %74)
%76 = load i32, i32* %5
%77 = call i32 @inb(i32 %76)
%78 = icmp eq i32 %77, 2256
br i1 %78, label %79, label %81
79: ; preds = %62
%80 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0))
br label %81
81: ; preds = %79, %62
%82 = load i32, i32* %6
%83 = add nsw i32 %82, 6
%84 = call i32 @outb(i32 224, i32 %83)
%85 = load i32, i32* %6
%86 = add nsw i32 %85, 7
%87 = call i32 @inb(i32 %86)
%88 = and i32 %87, 0
%89 = icmp ne i32 %88, 0
br i1 %89, label %90, label %91
90: ; preds = %81
br label %153
91: ; preds = %81
%92 = load i32, i32* %6
%93 = add nsw i32 %92, 6
%94 = call i32 @outb(i32 224, i32 %93)
%95 = load i32, i32* %6
%96 = add nsw i32 %95, 2
%97 = call i32 @outb(i32 1, i32 %96)
%98 = load i32, i32* %6
%99 = add nsw i32 %98, 3
%100 = call i32 @outb(i32 0, i32 %99)
%101 = load i32, i32* %6
%102 = add nsw i32 %101, 4
%103 = call i32 @outb(i32 0, i32 %102)
%104 = load i32, i32* %6
%105 = add nsw i32 %104, 5
%106 = call i32 @outb(i32 0, i32 %105)
%107 = load i32, i32* %6
%108 = add nsw i32 %107, 6
%109 = call i32 @outb(i32 224, i32 %108)
%110 = load i32, i32* %6
%111 = add nsw i32 %110, 7
%112 = call i32 @outb(i32 32, i32 %111)
br label %113
113: ; preds = %119, %91
%114 = load i32, i32* %6
%115 = add nsw i32 %114, 7
%116 = call i32 @inb(i32 %115)
%117 = and i32 %116, 0
%118 = icmp ne i32 %117, 0
br i1 %118, label %119, label %120
119: ; preds = %113
br label %113
120: ; preds = %113
%121 = load i32, i32* %6
%122 = add nsw i32 %121, 7
%123 = call i32 @inb(i32 %122)
%124 = and i32 %123, 0
%125 = icmp ne i32 %124, 0
br i1 %125, label %126, label %146
126: ; preds = %120
%127 = load i32, i32* %6
%128 = add nsw i32 %127, 7
%129 = call i32 @inb(i32 %128)
%130 = and i32 %129, 0
%131 = icmp ne i32 %130, 0
br i1 %131, label %132, label %146
132: ; preds = %126
store i32 0, i32* %9
br label %133
133: ; preds = %142, %132
%134 = load i32, i32* %9
%135 = icmp slt i32 %134, 256
br i1 %135, label %136, label %145
136: ; preds = %133
%137 = load i32, i32* %6
%138 = add nsw i32 %137, 0
%139 = sext i32 %138 to i64
%140 = call i32 @inw(i64 %139)
%141 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.2, i64 0, i64 0), i32 %140)
br label %142
142: ; preds = %136
%143 = load i32, i32* %9
%144 = add nsw i32 %143, 1
store i32 %144, i32* %9
br label %133
145: ; preds = %133
br label %146
146: ; preds = %145, %126, %120
br label %153
147: ; preds = %40
br label %148
148: ; preds = %147, %37, %28
br label %149
149: ; preds = %148, %21
br label %150
150: ; preds = %149
%151 = load i32, i32* %3
%152 = add nsw i32 %151, 1
store i32 %152, i32* %3
br label %18
153: ; preds = %146, %90, %18
br label %154
154: ; preds = %153
%155 = load i32, i32* %2
%156 = add nsw i32 %155, 1
store i32 %156, i32* %2
br label %14
157: ; preds = %14
br label %158
158: ; preds = %157
%159 = load i32, i32* %1
%160 = add nsw i32 %159, 1
store i32 %160, i32* %1
br label %10
161: ; preds = %10
ret void
}

LLVM IR (-O2):
@.str.1 = [30 x i8] c"velikost bloku registru = %d\0A\00"
@str.3 = [18 x i8] c"register pritomen\00"
define void @checkAllBusesWright() {
br label %1
1: ; preds = %0, %60
%2 = phi i32 [ 0, %0 ], [ %61, %60 ]
%3 = shl i32 %2, 16
br label %4
4: ; preds = %1, %57
%5 = phi i32 [ 0, %1 ], [ %58, %57 ]
%6 = shl i32 %5, 11
%7 = or i32 %3, %6
br label %8
8: ; preds = %4, %54
%9 = phi i32 [ 0, %4 ], [ %55, %54 ]
%10 = tail call i32 @checkDevice(i32 %2, i32 %5, i32 %9)
%11 = icmp eq i32 %10, 503480454
br i1 %11, label %12, label %54
12: ; preds = %8
%13 = shl nuw nsw i32 %9, 8
%14 = or i32 %7, %13
%15 = or i32 %14, -2147483624
%16 = tail call i32 @outl(i32 %15, i32 3320)
%17 = tail call i32 @inl(i32 3324)
%18 = and i32 %17, 65532
%19 = or i32 %18, 2
%20 = tail call i32 @outb(i32 90, i32 %19)
%21 = tail call i32 @inb(i32 %19)
%22 = icmp eq i32 %21, 90
br i1 %22, label %23, label %54
23: ; preds = %12
%24 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str.3, i64 0, i64 0))
%25 = tail call i32 @outb(i32 -1, i32 %17)
%26 = tail call i32 @inb(i32 %17)
%27 = and i32 %26, -4
%28 = tail call i32 @inb(i32 %17)
%29 = xor i32 %27, %28
%30 = tail call i32 @f(i32 %29)
%31 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([30 x i8], [30 x i8]* @.str.1, i64 0, i64 0), i32 %30)
%32 = tail call i32 @outb(i32 2256, i32 %17)
%33 = tail call i32 @inb(i32 %17)
%34 = icmp eq i32 %33, 2256
br i1 %34, label %35, label %37
35: ; preds = %23
%36 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str.3, i64 0, i64 0))
br label %37
37: ; preds = %35, %23
%38 = add nuw nsw i32 %18, 6
%39 = tail call i32 @outb(i32 224, i32 %38)
%40 = add nuw nsw i32 %18, 7
%41 = tail call i32 @inb(i32 %40)
%42 = tail call i32 @outb(i32 224, i32 %38)
%43 = tail call i32 @outb(i32 1, i32 %19)
%44 = or i32 %18, 3
%45 = tail call i32 @outb(i32 0, i32 %44)
%46 = add nuw nsw i32 %18, 4
%47 = tail call i32 @outb(i32 0, i32 %46)
%48 = add nuw nsw i32 %18, 5
%49 = tail call i32 @outb(i32 0, i32 %48)
%50 = tail call i32 @outb(i32 224, i32 %38)
%51 = tail call i32 @outb(i32 32, i32 %40)
%52 = tail call i32 @inb(i32 %40)
%53 = tail call i32 @inb(i32 %40)
br label %57
54: ; preds = %8, %12
%55 = add nuw nsw i32 %9, 1
%56 = icmp eq i32 %55, 8
br i1 %56, label %57, label %8
57: ; preds = %54, %37
%58 = add nuw nsw i32 %5, 1
%59 = icmp eq i32 %58, 32
br i1 %59, label %60, label %4
60: ; preds = %57
%61 = add nuw nsw i32 %2, 1
%62 = icmp eq i32 %61, 256
br i1 %62, label %63, label %1
63: ; preds = %60
ret void
}