#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 */
struct s_write {
  int dummy;
};

/* Variables and functions */
int /*<<< orphan*/ handle_command(unsigned char, unsigned char,
                                  struct s_write *);
int /*<<< orphan*/ handle_double(unsigned char, unsigned char,
                                 struct s_write *);
int /*<<< orphan*/ handle_extended(unsigned char, unsigned char,
                                   struct s_write *);
int /*<<< orphan*/ handle_pac(unsigned char, unsigned char, struct s_write *);
int /*<<< orphan*/ handle_text_attr(unsigned char, unsigned char,
                                    struct s_write *);
int disCommand(unsigned char hi, unsigned char lo, struct s_write *wb) {
  int wrote_to_screen = 0;
  if (hi >= 0x18 && hi <= 0x1f)
    hi = hi - 8;
  switch (hi) {
  case 0x10:
    if (lo >= 0x40 && lo <= 0x5f)
      handle_pac(hi, lo, wb);
    break;
  case 0x11:
    if (lo >= 0x20 && lo <= 0x2f)
      handle_text_attr(hi, lo, wb);
    if (lo >= 0x30 && lo <= 0x3f) {
      wrote_to_screen = 1;
      handle_double(hi, lo, wb);
    }
    if (lo >= 0x40 && lo <= 0x7f)
      handle_pac(hi, lo, wb);
    break;
  case 0x12:
  case 0x13:
    if (lo >= 0x20 && lo <= 0x3f) {
      handle_extended(hi, lo, wb);
      wrote_to_screen = 1;
    }
    if (lo >= 0x40 && lo <= 0x7f)
      handle_pac(hi, lo, wb);
    break;
  case 0x14:
  case 0x15:
    if (lo >= 0x20 && lo <= 0x2f)
      handle_command(hi, lo, wb);
    if (lo >= 0x40 && lo <= 0x7f)
      handle_pac(hi, lo, wb);
    break;
  case 0x16:
    if (lo >= 0x40 && lo <= 0x7f)
      handle_pac(hi, lo, wb);
    break;
  case 0x17:
    if (lo >= 0x21 && lo <= 0x22)
      handle_command(hi, lo, wb);
    if (lo >= 0x2e && lo <= 0x2f)
      handle_text_attr(hi, lo, wb);
    if (lo >= 0x40 && lo <= 0x7f)
      handle_pac(hi, lo, wb);
    break;
  }
  return wrote_to_screen;
}


x86 assembly (clang, -O0):
<disCommand>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %sil,%al
mov    %dil,%cl
mov    %cl,-0x1(%rbp)
mov    %al,-0x2(%rbp)
mov    %rdx,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
movzbl -0x1(%rbp),%eax
cmp    $0x18,%eax
jl     1193 <disCommand+0x43>
movzbl -0x1(%rbp),%eax
cmp    $0x1f,%eax
jg     1193 <disCommand+0x43>
movzbl -0x1(%rbp),%eax
sub    $0x8,%eax
mov    %al,-0x1(%rbp)
movzbl -0x1(%rbp),%eax
add    $0xfffffff0,%eax
mov    %eax,%ecx
mov    %rcx,-0x20(%rbp)
sub    $0x7,%eax
ja     141d <disCommand+0x2cd>
mov    -0x20(%rbp),%rax
lea    0xe4c(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movzbl -0x2(%rbp),%eax
cmp    $0x40,%eax
jl     11ec <disCommand+0x9c>
movzbl -0x2(%rbp),%eax
cmp    $0x5f,%eax
jg     11ec <disCommand+0x9c>
mov    -0x1(%rbp),%cl
mov    -0x2(%rbp),%al
mov    -0x10(%rbp),%rdx
movzbl %cl,%edi
movzbl %al,%esi
call   1050 <handle_pac@plt>
jmp    141d <disCommand+0x2cd>
movzbl -0x2(%rbp),%eax
cmp    $0x20,%eax
jl     1220 <disCommand+0xd0>
movzbl -0x2(%rbp),%eax
cmp    $0x2f,%eax
jg     1220 <disCommand+0xd0>
mov    -0x1(%rbp),%cl
mov    -0x2(%rbp),%al
mov    -0x10(%rbp),%rdx
movzbl %cl,%edi
movzbl %al,%esi
call   1040 <handle_text_attr@plt>
movzbl -0x2(%rbp),%eax
cmp    $0x30,%eax
jl     1256 <disCommand+0x106>
movzbl -0x2(%rbp),%eax
cmp    $0x3f,%eax
jg     1256 <disCommand+0x106>
movl   $0x1,-0x14(%rbp)
mov    -0x1(%rbp),%cl
mov    -0x2(%rbp),%al
mov    -0x10(%rbp),%rdx
movzbl %cl,%edi
movzbl %al,%esi
call   1070 <handle_double@plt>
movzbl -0x2(%rbp),%eax
cmp    $0x40,%eax
jl     1285 <disCommand+0x135>
movzbl -0x2(%rbp),%eax
cmp    $0x7f,%eax
jg     1285 <disCommand+0x135>
mov    -0x1(%rbp),%cl
mov    -0x2(%rbp),%al
mov    -0x10(%rbp),%rdx
movzbl %cl,%edi
movzbl %al,%esi
call   1050 <handle_pac@plt>
jmp    141d <disCommand+0x2cd>
movzbl -0x2(%rbp),%eax
cmp    $0x20,%eax
jl     12c0 <disCommand+0x170>
movzbl -0x2(%rbp),%eax
cmp    $0x3f,%eax
jg     12c0 <disCommand+0x170>
mov    -0x1(%rbp),%cl
mov    -0x2(%rbp),%al
mov    -0x10(%rbp),%rdx
movzbl %cl,%edi
movzbl %al,%esi
call   1060 <handle_extended@plt>
movl   $0x1,-0x14(%rbp)
movzbl -0x2(%rbp),%eax
cmp    $0x40,%eax
jl     12ef <disCommand+0x19f>
movzbl -0x2(%rbp),%eax
cmp    $0x7f,%eax
jg     12ef <disCommand+0x19f>
mov    -0x1(%rbp),%cl
mov    -0x2(%rbp),%al
mov    -0x10(%rbp),%rdx
movzbl %cl,%edi
movzbl %al,%esi
call   1050 <handle_pac@plt>
jmp    141d <disCommand+0x2cd>
movzbl -0x2(%rbp),%eax
cmp    $0x20,%eax
jl     1323 <disCommand+0x1d3>
movzbl -0x2(%rbp),%eax
cmp    $0x2f,%eax
jg     1323 <disCommand+0x1d3>
mov    -0x1(%rbp),%cl
mov    -0x2(%rbp),%al
mov    -0x10(%rbp),%rdx
movzbl %cl,%edi
movzbl %al,%esi
call   1030 <handle_command@plt>
movzbl -0x2(%rbp),%eax
cmp    $0x40,%eax
jl     1352 <disCommand+0x202>
movzbl -0x2(%rbp),%eax
cmp    $0x7f,%eax
jg     1352 <disCommand+0x202>
mov    -0x1(%rbp),%cl
mov    -0x2(%rbp),%al
mov    -0x10(%rbp),%rdx
movzbl %cl,%edi
movzbl %al,%esi
call   1050 <handle_pac@plt>
jmp    141d <disCommand+0x2cd>
movzbl -0x2(%rbp),%eax
cmp    $0x40,%eax
jl     1386 <disCommand+0x236>
movzbl -0x2(%rbp),%eax
cmp    $0x7f,%eax
jg     1386 <disCommand+0x236>
mov    -0x1(%rbp),%cl
mov    -0x2(%rbp),%al
mov    -0x10(%rbp),%rdx
movzbl %cl,%edi
movzbl %al,%esi
call   1050 <handle_pac@plt>
jmp    141d <disCommand+0x2cd>
movzbl -0x2(%rbp),%eax
cmp    $0x21,%eax
jl     13ba <disCommand+0x26a>
movzbl -0x2(%rbp),%eax
cmp    $0x22,%eax
jg     13ba <disCommand+0x26a>
mov    -0x1(%rbp),%cl
mov    -0x2(%rbp),%al
mov    -0x10(%rbp),%rdx
movzbl %cl,%edi
movzbl %al,%esi
call   1030 <handle_command@plt>
movzbl -0x2(%rbp),%eax
cmp    $0x2e,%eax
jl     13e9 <disCommand+0x299>
movzbl -0x2(%rbp),%eax
cmp    $0x2f,%eax
jg     13e9 <disCommand+0x299>
mov    -0x1(%rbp),%cl
mov    -0x2(%rbp),%al
mov    -0x10(%rbp),%rdx
movzbl %cl,%edi
movzbl %al,%esi
call   1040 <handle_text_attr@plt>
movzbl -0x2(%rbp),%eax
cmp    $0x40,%eax
jl     1418 <disCommand+0x2c8>
movzbl -0x2(%rbp),%eax
cmp    $0x7f,%eax
jg     1418 <disCommand+0x2c8>
mov    -0x1(%rbp),%cl
mov    -0x2(%rbp),%al
mov    -0x10(%rbp),%rdx
movzbl %cl,%edi
movzbl %al,%esi
call   1050 <handle_pac@plt>
jmp    141d <disCommand+0x2cd>
mov    -0x14(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<disCommand>:
push   %rbp
push   %r14
push   %rbx
mov    %edi,%eax
and    $0xf8,%al
lea    -0x8(%rdi),%ecx
cmp    $0x18,%al
movzbl %cl,%eax
cmovne %edi,%eax
xor    %r14d,%r14d
lea    -0x10(%rax),%ecx
cmp    $0x7,%cl
ja     1298 <disCommand+0x148>
mov    %rdx,%rbx
mov    %esi,%ebp
movzbl %cl,%ecx
lea    0xe7f(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    %ebp,%ecx
and    $0xe0,%cl
cmp    $0x20,%cl
jne    11cc <disCommand+0x7c>
movzbl %al,%edi
movzbl %bpl,%esi
mov    %rbx,%rdx
call   1060 <handle_extended@plt>
mov    $0x1,%r14d
jmp    1298 <disCommand+0x148>
mov    %ebp,%ecx
and    $0xf0,%cl
cmp    $0x20,%cl
jne    11cc <disCommand+0x7c>
movzbl %al,%edi
movzbl %bpl,%esi
mov    %rbx,%rdx
call   1030 <handle_command@plt>
jmp    1298 <disCommand+0x148>
cmp    $0x40,%bpl
jl     1298 <disCommand+0x148>
movzbl %al,%edi
movzbl %bpl,%esi
jmp    1290 <disCommand+0x140>
mov    %ebp,%eax
and    $0xe0,%al
cmp    $0x40,%al
jne    1298 <disCommand+0x148>
movzbl %bpl,%esi
mov    $0x10,%edi
jmp    1290 <disCommand+0x140>
mov    %ebp,%eax
and    $0xf0,%al
cmp    $0x30,%al
je     1268 <disCommand+0x118>
cmp    $0x20,%al
jne    1281 <disCommand+0x131>
movzbl %bpl,%esi
mov    $0x11,%edi
jmp    124d <disCommand+0xfd>
cmp    $0x40,%bpl
jl     1298 <disCommand+0x148>
movzbl %bpl,%esi
mov    $0x16,%edi
jmp    1290 <disCommand+0x140>
lea    -0x21(%rbp),%eax
cmp    $0x1,%al
ja     123c <disCommand+0xec>
movzbl %bpl,%esi
mov    $0x17,%edi
mov    %rbx,%rdx
call   1030 <handle_command@plt>
mov    %ebp,%eax
and    $0xfe,%al
cmp    $0x2e,%al
jne    1257 <disCommand+0x107>
movzbl %bpl,%esi
mov    $0x17,%edi
mov    %rbx,%rdx
call   1040 <handle_text_attr@plt>
jmp    1298 <disCommand+0x148>
cmp    $0x40,%bpl
jl     1298 <disCommand+0x148>
movzbl %bpl,%esi
mov    $0x17,%edi
jmp    1290 <disCommand+0x140>
movzbl %bpl,%esi
mov    $0x11,%edi
mov    %rbx,%rdx
call   1070 <handle_double@plt>
mov    $0x1,%r14d
jmp    1298 <disCommand+0x148>
cmp    $0x40,%bpl
jl     1298 <disCommand+0x148>
movzbl %bpl,%esi
mov    $0x11,%edi
mov    %rbx,%rdx
call   1050 <handle_pac@plt>
mov    %r14d,%eax
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
%struct.s_write = type { i32 }
define i32 @disCommand(i8 zeroext %0, i8 zeroext %1, %struct.s_write* %2) {
%4 = alloca i8
%5 = alloca i8
%6 = alloca %struct.s_write*
%7 = alloca i32
store i8 %0, i8* %4
store i8 %1, i8* %5
store %struct.s_write* %2, %struct.s_write** %6
store i32 0, i32* %7
%8 = load i8, i8* %4
%9 = zext i8 %8 to i32
%10 = icmp sge i32 %9, 24
br i1 %10, label %11, label %20
11: ; preds = %3
%12 = load i8, i8* %4
%13 = zext i8 %12 to i32
%14 = icmp sle i32 %13, 31
br i1 %14, label %15, label %20
15: ; preds = %11
%16 = load i8, i8* %4
%17 = zext i8 %16 to i32
%18 = sub nsw i32 %17, 8
%19 = trunc i32 %18 to i8
store i8 %19, i8* %4
br label %20
20: ; preds = %15, %11, %3
%21 = load i8, i8* %4
%22 = zext i8 %21 to i32
switch i32 %22, label %185 [
i32 16, label %23
i32 17, label %37
i32 18, label %77
i32 19, label %77
i32 20, label %104
i32 21, label %104
i32 22, label %131
i32 23, label %145
]
23: ; preds = %20
%24 = load i8, i8* %5
%25 = zext i8 %24 to i32
%26 = icmp sge i32 %25, 64
br i1 %26, label %27, label %36
27: ; preds = %23
%28 = load i8, i8* %5
%29 = zext i8 %28 to i32
%30 = icmp sle i32 %29, 95
br i1 %30, label %31, label %36
31: ; preds = %27
%32 = load i8, i8* %4
%33 = load i8, i8* %5
%34 = load %struct.s_write*, %struct.s_write** %6
%35 = call i32 @handle_pac(i8 zeroext %32, i8 zeroext %33, %struct.s_write* %34)
br label %36
36: ; preds = %31, %27, %23
br label %185
37: ; preds = %20
%38 = load i8, i8* %5
%39 = zext i8 %38 to i32
%40 = icmp sge i32 %39, 32
br i1 %40, label %41, label %50
41: ; preds = %37
%42 = load i8, i8* %5
%43 = zext i8 %42 to i32
%44 = icmp sle i32 %43, 47
br i1 %44, label %45, label %50
45: ; preds = %41
%46 = load i8, i8* %4
%47 = load i8, i8* %5
%48 = load %struct.s_write*, %struct.s_write** %6
%49 = call i32 @handle_text_attr(i8 zeroext %46, i8 zeroext %47, %struct.s_write* %48)
br label %50
50: ; preds = %45, %41, %37
%51 = load i8, i8* %5
%52 = zext i8 %51 to i32
%53 = icmp sge i32 %52, 48
br i1 %53, label %54, label %63
54: ; preds = %50
%55 = load i8, i8* %5
%56 = zext i8 %55 to i32
%57 = icmp sle i32 %56, 63
br i1 %57, label %58, label %63
58: ; preds = %54
store i32 1, i32* %7
%59 = load i8, i8* %4
%60 = load i8, i8* %5
%61 = load %struct.s_write*, %struct.s_write** %6
%62 = call i32 @handle_double(i8 zeroext %59, i8 zeroext %60, %struct.s_write* %61)
br label %63
63: ; preds = %58, %54, %50
%64 = load i8, i8* %5
%65 = zext i8 %64 to i32
%66 = icmp sge i32 %65, 64
br i1 %66, label %67, label %76
67: ; preds = %63
%68 = load i8, i8* %5
%69 = zext i8 %68 to i32
%70 = icmp sle i32 %69, 127
br i1 %70, label %71, label %76
71: ; preds = %67
%72 = load i8, i8* %4
%73 = load i8, i8* %5
%74 = load %struct.s_write*, %struct.s_write** %6
%75 = call i32 @handle_pac(i8 zeroext %72, i8 zeroext %73, %struct.s_write* %74)
br label %76
76: ; preds = %71, %67, %63
br label %185
77: ; preds = %20, %20
%78 = load i8, i8* %5
%79 = zext i8 %78 to i32
%80 = icmp sge i32 %79, 32
br i1 %80, label %81, label %90
81: ; preds = %77
%82 = load i8, i8* %5
%83 = zext i8 %82 to i32
%84 = icmp sle i32 %83, 63
br i1 %84, label %85, label %90
85: ; preds = %81
%86 = load i8, i8* %4
%87 = load i8, i8* %5
%88 = load %struct.s_write*, %struct.s_write** %6
%89 = call i32 @handle_extended(i8 zeroext %86, i8 zeroext %87, %struct.s_write* %88)
store i32 1, i32* %7
br label %90
90: ; preds = %85, %81, %77
%91 = load i8, i8* %5
%92 = zext i8 %91 to i32
%93 = icmp sge i32 %92, 64
br i1 %93, label %94, label %103
94: ; preds = %90
%95 = load i8, i8* %5
%96 = zext i8 %95 to i32
%97 = icmp sle i32 %96, 127
br i1 %97, label %98, label %103
98: ; preds = %94
%99 = load i8, i8* %4
%100 = load i8, i8* %5
%101 = load %struct.s_write*, %struct.s_write** %6
%102 = call i32 @handle_pac(i8 zeroext %99, i8 zeroext %100, %struct.s_write* %101)
br label %103
103: ; preds = %98, %94, %90
br label %185
104: ; preds = %20, %20
%105 = load i8, i8* %5
%106 = zext i8 %105 to i32
%107 = icmp sge i32 %106, 32
br i1 %107, label %108, label %117
108: ; preds = %104
%109 = load i8, i8* %5
%110 = zext i8 %109 to i32
%111 = icmp sle i32 %110, 47
br i1 %111, label %112, label %117
112: ; preds = %108
%113 = load i8, i8* %4
%114 = load i8, i8* %5
%115 = load %struct.s_write*, %struct.s_write** %6
%116 = call i32 @handle_command(i8 zeroext %113, i8 zeroext %114, %struct.s_write* %115)
br label %117
117: ; preds = %112, %108, %104
%118 = load i8, i8* %5
%119 = zext i8 %118 to i32
%120 = icmp sge i32 %119, 64
br i1 %120, label %121, label %130
121: ; preds = %117
%122 = load i8, i8* %5
%123 = zext i8 %122 to i32
%124 = icmp sle i32 %123, 127
br i1 %124, label %125, label %130
125: ; preds = %121
%126 = load i8, i8* %4
%127 = load i8, i8* %5
%128 = load %struct.s_write*, %struct.s_write** %6
%129 = call i32 @handle_pac(i8 zeroext %126, i8 zeroext %127, %struct.s_write* %128)
br label %130
130: ; preds = %125, %121, %117
br label %185
131: ; preds = %20
%132 = load i8, i8* %5
%133 = zext i8 %132 to i32
%134 = icmp sge i32 %133, 64
br i1 %134, label %135, label %144
135: ; preds = %131
%136 = load i8, i8* %5
%137 = zext i8 %136 to i32
%138 = icmp sle i32 %137, 127
br i1 %138, label %139, label %144
139: ; preds = %135
%140 = load i8, i8* %4
%141 = load i8, i8* %5
%142 = load %struct.s_write*, %struct.s_write** %6
%143 = call i32 @handle_pac(i8 zeroext %140, i8 zeroext %141, %struct.s_write* %142)
br label %144
144: ; preds = %139, %135, %131
br label %185
145: ; preds = %20
%146 = load i8, i8* %5
%147 = zext i8 %146 to i32
%148 = icmp sge i32 %147, 33
br i1 %148, label %149, label %158
149: ; preds = %145
%150 = load i8, i8* %5
%151 = zext i8 %150 to i32
%152 = icmp sle i32 %151, 34
br i1 %152, label %153, label %158
153: ; preds = %149
%154 = load i8, i8* %4
%155 = load i8, i8* %5
%156 = load %struct.s_write*, %struct.s_write** %6
%157 = call i32 @handle_command(i8 zeroext %154, i8 zeroext %155, %struct.s_write* %156)
br label %158
158: ; preds = %153, %149, %145
%159 = load i8, i8* %5
%160 = zext i8 %159 to i32
%161 = icmp sge i32 %160, 46
br i1 %161, label %162, label %171
162: ; preds = %158
%163 = load i8, i8* %5
%164 = zext i8 %163 to i32
%165 = icmp sle i32 %164, 47
br i1 %165, label %166, label %171
166: ; preds = %162
%167 = load i8, i8* %4
%168 = load i8, i8* %5
%169 = load %struct.s_write*, %struct.s_write** %6
%170 = call i32 @handle_text_attr(i8 zeroext %167, i8 zeroext %168, %struct.s_write* %169)
br label %171
171: ; preds = %166, %162, %158
%172 = load i8, i8* %5
%173 = zext i8 %172 to i32
%174 = icmp sge i32 %173, 64
br i1 %174, label %175, label %184
175: ; preds = %171
%176 = load i8, i8* %5
%177 = zext i8 %176 to i32
%178 = icmp sle i32 %177, 127
br i1 %178, label %179, label %184
179: ; preds = %175
%180 = load i8, i8* %4
%181 = load i8, i8* %5
%182 = load %struct.s_write*, %struct.s_write** %6
%183 = call i32 @handle_pac(i8 zeroext %180, i8 zeroext %181, %struct.s_write* %182)
br label %184
184: ; preds = %179, %175, %171
br label %185
185: ; preds = %20, %184, %144, %130, %103, %76, %36
%186 = load i32, i32* %7
ret i32 %186
}

LLVM IR (-O2):
%struct.s_write = type { i32 }
define i32 @disCommand(i8 zeroext %0, i8 zeroext %1, %struct.s_write* %2) {
%4 = and i8 %0, -8
%5 = icmp eq i8 %4, 24
%6 = add i8 %0, -8
%7 = select i1 %5, i8 %6, i8 %0
switch i8 %7, label %59 [
i8 16, label %8
i8 17, label %13
i8 18, label %23
i8 19, label %23
i8 20, label %32
i8 21, label %32
i8 22, label %41
i8 23, label %45
]
8: ; preds = %3
%9 = and i8 %1, -32
%10 = icmp eq i8 %9, 64
br i1 %10, label %11, label %59
11: ; preds = %8
%12 = tail call i32 @handle_pac(i8 zeroext 16, i8 zeroext %1, %struct.s_write* %2)
br label %59
13: ; preds = %3
%14 = and i8 %1, -16
switch i8 %14, label %19 [
i8 32, label %15
i8 48, label %17
]
15: ; preds = %13
%16 = tail call i32 @handle_text_attr(i8 zeroext 17, i8 zeroext %1, %struct.s_write* %2)
br label %59
17: ; preds = %13
%18 = tail call i32 @handle_double(i8 zeroext 17, i8 zeroext %1, %struct.s_write* %2)
br label %59
19: ; preds = %13
%20 = icmp sgt i8 %1, 63
br i1 %20, label %21, label %59
21: ; preds = %19
%22 = tail call i32 @handle_pac(i8 zeroext 17, i8 zeroext %1, %struct.s_write* %2)
br label %59
23: ; preds = %3, %3
%24 = and i8 %1, -32
%25 = icmp eq i8 %24, 32
br i1 %25, label %26, label %28
26: ; preds = %23
%27 = tail call i32 @handle_extended(i8 zeroext %7, i8 zeroext %1, %struct.s_write* %2)
br label %59
28: ; preds = %23
%29 = icmp sgt i8 %1, 63
br i1 %29, label %30, label %59
30: ; preds = %28
%31 = tail call i32 @handle_pac(i8 zeroext %7, i8 zeroext %1, %struct.s_write* %2)
br label %59
32: ; preds = %3, %3
%33 = and i8 %1, -16
%34 = icmp eq i8 %33, 32
br i1 %34, label %35, label %37
35: ; preds = %32
%36 = tail call i32 @handle_command(i8 zeroext %7, i8 zeroext %1, %struct.s_write* %2)
br label %59
37: ; preds = %32
%38 = icmp sgt i8 %1, 63
br i1 %38, label %39, label %59
39: ; preds = %37
%40 = tail call i32 @handle_pac(i8 zeroext %7, i8 zeroext %1, %struct.s_write* %2)
br label %59
41: ; preds = %3
%42 = icmp sgt i8 %1, 63
br i1 %42, label %43, label %59
43: ; preds = %41
%44 = tail call i32 @handle_pac(i8 zeroext 22, i8 zeroext %1, %struct.s_write* %2)
br label %59
45: ; preds = %3
%46 = add i8 %1, -33
%47 = icmp ult i8 %46, 2
br i1 %47, label %48, label %50
48: ; preds = %45
%49 = tail call i32 @handle_command(i8 zeroext 23, i8 zeroext %1, %struct.s_write* %2)
br label %50
50: ; preds = %48, %45
%51 = and i8 %1, -2
%52 = icmp eq i8 %51, 46
br i1 %52, label %53, label %55
53: ; preds = %50
%54 = tail call i32 @handle_text_attr(i8 zeroext 23, i8 zeroext %1, %struct.s_write* %2)
br label %59
55: ; preds = %50
%56 = icmp sgt i8 %1, 63
br i1 %56, label %57, label %59
57: ; preds = %55
%58 = tail call i32 @handle_pac(i8 zeroext 23, i8 zeroext %1, %struct.s_write* %2)
br label %59
59: ; preds = %17, %15, %53, %35, %26, %55, %57, %41, %43, %37, %39, %28, %30, %19, %21, %8, %11, %3
%60 = phi i32 [ 0, %3 ], [ 0, %57 ], [ 0, %55 ], [ 0, %43 ], [ 0, %41 ], [ 0, %39 ], [ 0, %37 ], [ 0, %30 ], [ 0, %28 ], [ 0, %21 ], [ 0, %19 ], [ 0, %11 ], [ 0, %8 ], [ 1, %26 ], [ 0, %35 ], [ 0, %53 ], [ 0, %15 ], [ 1, %17 ]
ret i32 %60
}