void paint_rval_text(str, rval, len, x, y) unsigned char *str;
int rval;
int len, x, y;
{
  unsigned char *buf;
  int overstrike;
  int i;
  int b = 0, inverso = 0;
  if (rval & 0x08) {
    inverso = 1;
  }
  overstrike = 0;
  if (rval & 0x01) {
    b = 1;
    if (0) {
      y += 11;
    } else {
      overstrike = 1;
      y += 11;
    }
  } else
    y += 11;
  if ((rval & 0x30) == 0x00) {
    omshell_terminaldrawimagestring(x, y, str, len, b, inverso, 0);
    if (overstrike) {
      omshell_terminaldrawimagestring(x + 1, y, str, len, b, inverso, 0);
    }
  } else {
    buf = (unsigned char *)cmalloc(len);
    if ((rval & 0x30) == 0x10) {
      for (i = 0; i < len; i++)
        buf[i] = (str[i] == '#') ? 036 : str[i];
    } else if ((rval & 0x30) == 0x20) {
      for (i = 0; i < len; i++)
        if (str[i] >= 0140 && str[i] <= 0176)
          buf[i] = (str[i] & 037) + 1;
        else
          buf[i] = str[i];
    }
    omshell_terminaldrawimagestring(x, y, str, len, b, inverso, 1);
    if (overstrike)
      omshell_terminaldrawimagestring(x + 1, y, str, len, b, inverso, 1);
    free((void *)buf);
  }
  y++;
  if (rval & 0x02) {
  }
  if (rval & 0x08) {
  }
  if (rval & 0x01) {
  }
}


x86 assembly (clang, -O0):
<paint_rval_text>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    %r8d,-0x18(%rbp)
movl   $0x0,-0x2c(%rbp)
movl   $0x0,-0x30(%rbp)
mov    -0xc(%rbp),%eax
and    $0x8,%eax
cmp    $0x0,%eax
je     116d <paint_rval_text+0x3d>
movl   $0x1,-0x30(%rbp)
movl   $0x0,-0x24(%rbp)
mov    -0xc(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     119f <paint_rval_text+0x6f>
movl   $0x1,-0x2c(%rbp)
movl   $0x1,-0x24(%rbp)
mov    -0x18(%rbp),%eax
add    $0xb,%eax
mov    %eax,-0x18(%rbp)
jmp    11a8 <paint_rval_text+0x78>
mov    -0x18(%rbp),%eax
add    $0xb,%eax
mov    %eax,-0x18(%rbp)
mov    -0xc(%rbp),%eax
and    $0x30,%eax
cmp    $0x0,%eax
jne    1213 <paint_rval_text+0xe3>
mov    -0x14(%rbp),%edi
mov    -0x18(%rbp),%esi
mov    -0x8(%rbp),%rdx
mov    -0x10(%rbp),%ecx
mov    -0x2c(%rbp),%r8d
mov    -0x30(%rbp),%r9d
xor    %eax,%eax
movl   $0x0,(%rsp)
mov    $0x0,%al
call   1040 <omshell_terminaldrawimagestring@plt>
cmpl   $0x0,-0x24(%rbp)
je     120e <paint_rval_text+0xde>
mov    -0x14(%rbp),%edi
add    $0x1,%edi
mov    -0x18(%rbp),%esi
mov    -0x8(%rbp),%rdx
mov    -0x10(%rbp),%ecx
mov    -0x2c(%rbp),%r8d
mov    -0x30(%rbp),%r9d
xor    %eax,%eax
movl   $0x0,(%rsp)
mov    $0x0,%al
call   1040 <omshell_terminaldrawimagestring@plt>
jmp    1398 <paint_rval_text+0x268>
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1050 <cmalloc@plt>
cltq
mov    %rax,-0x20(%rbp)
mov    -0xc(%rbp),%eax
and    $0x30,%eax
cmp    $0x10,%eax
jne    1299 <paint_rval_text+0x169>
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1294 <paint_rval_text+0x164>
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x23,%eax
jne    1267 <paint_rval_text+0x137>
mov    $0x1e,%eax
mov    %eax,-0x34(%rbp)
jmp    1276 <paint_rval_text+0x146>
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    %al,%dl
mov    -0x20(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1239 <paint_rval_text+0x109>
jmp    133c <paint_rval_text+0x20c>
mov    -0xc(%rbp),%eax
and    $0x30,%eax
cmp    $0x20,%eax
jne    1337 <paint_rval_text+0x207>
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1332 <paint_rval_text+0x202>
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x60,%eax
jl     1309 <paint_rval_text+0x1d9>
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x7e,%eax
jg     1309 <paint_rval_text+0x1d9>
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
and    $0x1f,%eax
add    $0x1,%eax
mov    %al,%dl
mov    -0x20(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
jmp    131f <paint_rval_text+0x1ef>
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x20(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
jmp    1324 <paint_rval_text+0x1f4>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    12af <paint_rval_text+0x17f>
jmp    1337 <paint_rval_text+0x207>
jmp    133c <paint_rval_text+0x20c>
mov    -0x14(%rbp),%edi
mov    -0x18(%rbp),%esi
mov    -0x8(%rbp),%rdx
mov    -0x10(%rbp),%ecx
mov    -0x2c(%rbp),%r8d
mov    -0x30(%rbp),%r9d
movl   $0x1,(%rsp)
mov    $0x0,%al
call   1040 <omshell_terminaldrawimagestring@plt>
cmpl   $0x0,-0x24(%rbp)
je     138f <paint_rval_text+0x25f>
mov    -0x14(%rbp),%edi
add    $0x1,%edi
mov    -0x18(%rbp),%esi
mov    -0x8(%rbp),%rdx
mov    -0x10(%rbp),%ecx
mov    -0x2c(%rbp),%r8d
mov    -0x30(%rbp),%r9d
movl   $0x1,(%rsp)
mov    $0x0,%al
call   1040 <omshell_terminaldrawimagestring@plt>
mov    -0x20(%rbp),%rdi
call   1030 <free@plt>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0xc(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     13b5 <paint_rval_text+0x285>
jmp    13b5 <paint_rval_text+0x285>
mov    -0xc(%rbp),%eax
and    $0x8,%eax
cmp    $0x0,%eax
je     13c9 <paint_rval_text+0x299>
jmp    13c9 <paint_rval_text+0x299>
mov    -0xc(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     13dd <paint_rval_text+0x2ad>
jmp    13dd <paint_rval_text+0x2ad>
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<paint_rval_text>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %r8d,%ebp
mov    %edx,%r13d
mov    %esi,%r14d
mov    %esi,%ebx
shr    $0x3,%ebx
and    $0x1,%ebx
mov    %esi,%r15d
and    $0x1,%r15d
add    $0xb,%ebp
mov    %esi,%r12d
and    $0x30,%r12d
mov    %rdi,0x8(%rsp)
je     125a <paint_rval_text+0x12a>
mov    %r14d,0x18(%rsp)
mov    %ecx,0x1c(%rsp)
mov    %ebx,0x20(%rsp)
mov    %r15d,0x24(%rsp)
mov    %r13d,%edi
xor    %eax,%eax
call   1050 <cmalloc@plt>
movslq %eax,%r14
cmp    $0x10,%r12d
mov    %r13d,%r9d
je     12b8 <paint_rval_text+0x188>
cmp    $0x20,%r12d
mov    0x8(%rsp),%r15
jne    1387 <paint_rval_text+0x257>
test   %r9d,%r9d
jle    1387 <paint_rval_text+0x257>
mov    %r9d,%edi
cmp    $0x8,%r9d
jb     11d5 <paint_rval_text+0xa5>
mov    %r9d,%eax
lea    (%r15,%rdi,1),%rcx
cmp    %r14,%rcx
jbe    13fc <paint_rval_text+0x2cc>
lea    (%r14,%rdi,1),%rcx
cmp    %r15,%rcx
jbe    13fc <paint_rval_text+0x2cc>
xor    %ecx,%ecx
mov    %rcx,%rdx
not    %rdx
test   $0x1,%dil
je     1204 <paint_rval_text+0xd4>
movzbl (%r15,%rcx,1),%esi
lea    -0x60(%rsi),%r8d
mov    %esi,%eax
and    $0x1f,%al
add    $0x1,%al
cmp    $0x1f,%r8b
movzbl %al,%eax
cmovae %esi,%eax
mov    %al,(%r14,%rcx,1)
or     $0x1,%rcx
add    %rdi,%rdx
je     1387 <paint_rval_text+0x257>
nopl   (%rax)
movzbl (%r15,%rcx,1),%eax
lea    -0x60(%rax),%edx
mov    %eax,%ebx
and    $0x1f,%bl
add    $0x1,%bl
cmp    $0x1f,%dl
movzbl %bl,%edx
cmovae %eax,%edx
mov    %dl,(%r14,%rcx,1)
movzbl 0x1(%r15,%rcx,1),%eax
lea    -0x60(%rax),%edx
mov    %eax,%ebx
and    $0x1f,%bl
add    $0x1,%bl
cmp    $0x1f,%dl
movzbl %bl,%edx
cmovae %eax,%edx
mov    %dl,0x1(%r14,%rcx,1)
add    $0x2,%rcx
cmp    %rcx,%rdi
jne    1210 <paint_rval_text+0xe0>
jmp    1387 <paint_rval_text+0x257>
mov    %rdi,%rax
movl   $0x0,(%rsp)
mov    %ecx,%edi
mov    %ebp,%esi
mov    %rax,%rdx
mov    %ecx,%r12d
mov    %r13d,%ecx
mov    %r15d,%r8d
mov    %ebx,%r9d
xor    %eax,%eax
call   1040 <omshell_terminaldrawimagestring@plt>
test   $0x1,%r14b
je     12a9 <paint_rval_text+0x179>
add    $0x1,%r12d
movl   $0x0,(%rsp)
mov    %r12d,%edi
mov    %ebp,%esi
mov    0x8(%rsp),%rdx
mov    %r13d,%ecx
mov    %r15d,%r8d
mov    %ebx,%r9d
xor    %eax,%eax
call   1040 <omshell_terminaldrawimagestring@plt>
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
test   %r13d,%r13d
mov    0x8(%rsp),%r15
jle    1387 <paint_rval_text+0x257>
mov    %r9d,%r8d
cmp    $0x8,%r9d
jb     12ec <paint_rval_text+0x1bc>
mov    %r9d,%eax
lea    (%r15,%r8,1),%rcx
cmp    %r14,%rcx
jbe    1408 <paint_rval_text+0x2d8>
lea    (%r14,%r8,1),%rcx
cmp    %r15,%rcx
jbe    1408 <paint_rval_text+0x2d8>
xor    %ecx,%ecx
mov    %rcx,%rdx
not    %rdx
add    %r8,%rdx
mov    %r8,%rsi
and    $0x3,%rsi
je     1328 <paint_rval_text+0x1f8>
mov    $0x1e,%edi
cs nopw 0x0(%rax,%rax,1)
nop
movzbl (%r15,%rcx,1),%eax
cmp    $0x23,%al
cmove  %edi,%eax
mov    %al,(%r14,%rcx,1)
add    $0x1,%rcx
add    $0xffffffffffffffff,%rsi
jne    1310 <paint_rval_text+0x1e0>
cmp    $0x3,%rdx
jb     1387 <paint_rval_text+0x257>
mov    $0x1e,%edx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movzbl (%r15,%rcx,1),%eax
cmp    $0x23,%al
cmove  %edx,%eax
mov    %al,(%r14,%rcx,1)
movzbl 0x1(%r15,%rcx,1),%eax
cmp    $0x23,%al
cmove  %edx,%eax
mov    %al,0x1(%r14,%rcx,1)
movzbl 0x2(%r15,%rcx,1),%eax
cmp    $0x23,%al
cmove  %edx,%eax
mov    %al,0x2(%r14,%rcx,1)
movzbl 0x3(%r15,%rcx,1),%eax
cmp    $0x23,%al
cmove  %edx,%eax
mov    %al,0x3(%r14,%rcx,1)
add    $0x4,%rcx
cmp    %rcx,%r8
jne    1340 <paint_rval_text+0x210>
mov    %ebp,0x14(%rsp)
movl   $0x1,(%rsp)
mov    0x1c(%rsp),%r12d
mov    %r12d,%edi
mov    %ebp,%esi
mov    %r15,%rdx
mov    %r9d,%ebx
mov    %r9d,%ecx
mov    0x24(%rsp),%ebp
mov    %ebp,%r8d
mov    0x20(%rsp),%r13d
mov    %r13d,%r9d
xor    %eax,%eax
call   1040 <omshell_terminaldrawimagestring@plt>
testb  $0x1,0x18(%rsp)
je     13e6 <paint_rval_text+0x2b6>
add    $0x1,%r12d
movl   $0x1,(%rsp)
mov    %r12d,%edi
mov    0x14(%rsp),%esi
mov    %r15,%rdx
mov    %ebx,%ecx
mov    %ebp,%r8d
mov    %r13d,%r9d
xor    %eax,%eax
call   1040 <omshell_terminaldrawimagestring@plt>
mov    %r14,%rdi
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <free@plt>
cmp    $0x20,%eax
jae    1418 <paint_rval_text+0x2e8>
xor    %ecx,%ecx
jmp    14d2 <paint_rval_text+0x3a2>
cmp    $0x20,%eax
jae    153f <paint_rval_text+0x40f>
xor    %ecx,%ecx
jmp    1697 <paint_rval_text+0x567>
mov    %edi,%ecx
and    $0xffffffe0,%ecx
xor    %edx,%edx
movdqa 0xbd8(%rip),%xmm8
movdqa 0xbdf(%rip),%xmm9
movdqa 0xbe7(%rip),%xmm2
pcmpeqd %xmm3,%xmm3
nopl   (%rax)
movdqu (%r15,%rdx,1),%xmm4
movdqu 0x10(%r15,%rdx,1),%xmm5
movdqa %xmm4,%xmm6
paddb  %xmm8,%xmm6
movdqa %xmm5,%xmm7
paddb  %xmm8,%xmm7
movdqa %xmm6,%xmm0
pminub %xmm9,%xmm0
pcmpeqb %xmm6,%xmm0
movdqa %xmm7,%xmm6
pminub %xmm9,%xmm6
pcmpeqb %xmm7,%xmm6
movdqa %xmm0,%xmm7
pandn  %xmm4,%xmm7
pand   %xmm2,%xmm4
movdqa %xmm6,%xmm1
pandn  %xmm5,%xmm1
pand   %xmm2,%xmm5
psubb  %xmm3,%xmm4
psubb  %xmm3,%xmm5
pand   %xmm0,%xmm4
por    %xmm7,%xmm4
pand   %xmm6,%xmm5
por    %xmm1,%xmm5
movdqu %xmm4,(%r14,%rdx,1)
movdqu %xmm5,0x10(%r14,%rdx,1)
add    $0x20,%rdx
cmp    %rdx,%rcx
jne    1440 <paint_rval_text+0x310>
cmp    %rdi,%rcx
je     1387 <paint_rval_text+0x257>
test   $0x18,%dil
je     11d7 <paint_rval_text+0xa7>
mov    %rcx,%rdx
mov    %edi,%ecx
and    $0xfffffff8,%ecx
movdqa 0xb4e(%rip),%xmm0
movdqa 0xb56(%rip),%xmm1
pcmpeqd %xmm2,%xmm2
xchg   %ax,%ax
movq   (%r15,%rdx,1),%xmm3
movdqa %xmm3,%xmm4
paddb  %xmm0,%xmm4
movdqa %xmm4,%xmm5
pmaxub %xmm1,%xmm5
pcmpeqb %xmm4,%xmm5
movdqa %xmm5,%xmm4
pand   %xmm3,%xmm4
pand   %xmm1,%xmm3
psubb  %xmm2,%xmm3
pandn  %xmm3,%xmm5
por    %xmm4,%xmm5
movq   %xmm5,(%r14,%rdx,1)
add    $0x8,%rdx
cmp    %rdx,%rcx
jne    14f0 <paint_rval_text+0x3c0>
cmp    %rdi,%rcx
je     1387 <paint_rval_text+0x257>
jmp    11d7 <paint_rval_text+0xa7>
mov    %r8d,%ecx
and    $0xffffffe0,%ecx
lea    -0x20(%rcx),%rdx
mov    %rdx,%rsi
shr    $0x5,%rsi
add    $0x1,%rsi
test   %rdx,%rdx
je     1626 <paint_rval_text+0x4f6>
mov    %rsi,%rdi
and    $0xfffffffffffffffe,%rdi
xor    %edx,%edx
movdqa 0xae2(%rip),%xmm0
movdqa 0xa9a(%rip),%xmm1
cs nopw 0x0(%rax,%rax,1)
movdqu (%r15,%rdx,1),%xmm2
movdqu 0x10(%r15,%rdx,1),%xmm3
movdqa %xmm2,%xmm4
pcmpeqb %xmm0,%xmm4
movdqa %xmm3,%xmm5
pcmpeqb %xmm0,%xmm5
movdqa %xmm4,%xmm6
pandn  %xmm2,%xmm6
pand   %xmm1,%xmm4
por    %xmm6,%xmm4
movdqa %xmm5,%xmm2
pandn  %xmm3,%xmm2
pand   %xmm1,%xmm5
por    %xmm2,%xmm5
movdqu %xmm4,(%r14,%rdx,1)
movdqu %xmm5,0x10(%r14,%rdx,1)
movdqu 0x20(%r15,%rdx,1),%xmm2
movdqu 0x30(%r15,%rdx,1),%xmm3
movdqa %xmm2,%xmm4
pcmpeqb %xmm0,%xmm4
movdqa %xmm3,%xmm5
pcmpeqb %xmm0,%xmm5
movdqa %xmm4,%xmm6
pandn  %xmm2,%xmm6
pand   %xmm1,%xmm4
por    %xmm6,%xmm4
movdqa %xmm5,%xmm2
pandn  %xmm3,%xmm2
pand   %xmm1,%xmm5
por    %xmm2,%xmm5
movdqu %xmm4,0x20(%r14,%rdx,1)
movdqu %xmm5,0x30(%r14,%rdx,1)
add    $0x40,%rdx
add    $0xfffffffffffffffe,%rdi
jne    1580 <paint_rval_text+0x450>
jmp    1628 <paint_rval_text+0x4f8>
xor    %edx,%edx
test   $0x1,%sil
je     1684 <paint_rval_text+0x554>
movdqu (%r15,%rdx,1),%xmm0
movdqu 0x10(%r15,%rdx,1),%xmm1
movdqa 0xa0d(%rip),%xmm2
movdqa %xmm0,%xmm3
pcmpeqb %xmm2,%xmm3
pcmpeqb %xmm1,%xmm2
movdqa %xmm3,%xmm4
pandn  %xmm0,%xmm4
movdqa 0x9b1(%rip),%xmm0
pand   %xmm0,%xmm3
por    %xmm4,%xmm3
movdqa %xmm2,%xmm4
pandn  %xmm1,%xmm4
pand   %xmm0,%xmm2
por    %xmm4,%xmm2
movdqu %xmm3,(%r14,%rdx,1)
movdqu %xmm2,0x10(%r14,%rdx,1)
cmp    %r8,%rcx
je     1387 <paint_rval_text+0x257>
test   $0x18,%r8b
je     12ee <paint_rval_text+0x1be>
mov    %rcx,%rdx
mov    %r8d,%ecx
and    $0xfffffff8,%ecx
movdqa 0x9b8(%rip),%xmm0
movdqa 0x9c0(%rip),%xmm1
movq   (%r15,%rdx,1),%xmm2
movdqa %xmm2,%xmm3
pcmpeqb %xmm0,%xmm3
movdqa %xmm3,%xmm4
pandn  %xmm2,%xmm4
pand   %xmm1,%xmm3
por    %xmm4,%xmm3
movq   %xmm3,(%r14,%rdx,1)
add    $0x8,%rdx
cmp    %rdx,%rcx
jne    16b0 <paint_rval_text+0x580>
cmp    %r8,%rcx
je     1387 <paint_rval_text+0x257>
jmp    12ee <paint_rval_text+0x1be>

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

LLVM IR (-O2):
define void @paint_rval_text(i8* %0, i32 %1, i32 %2, i32 %3, i32 %4) {
%6 = lshr i32 %1, 3
%7 = and i32 %6, 1
%8 = and i32 %1, 1
%9 = icmp eq i32 %8, 0
%10 = xor i1 %9, true
%11 = zext i1 %10 to i32
%12 = add nsw i32 %4, 11
%13 = and i32 %1, 48
%14 = icmp eq i32 %13, 0
br i1 %14, label %15, label %20
15: ; preds = %5
%16 = tail call i32 (i32, i32, i8*, i32, i32, i32, i32, ...) bitcast (i32 (...)* @omshell_terminaldrawimagestring to i32 (i32, i32, i8*, i32, i32, i32, i32, ...)*)(i32 %3, i32 %12, i8* %0, i32 %2, i32 %11, i32 %7, i32 0)
br i1 %9, label %276, label %17
17: ; preds = %15
%18 = add nsw i32 %3, 1
%19 = tail call i32 (i32, i32, i8*, i32, i32, i32, i32, ...) bitcast (i32 (...)* @omshell_terminaldrawimagestring to i32 (i32, i32, i8*, i32, i32, i32, i32, ...)*)(i32 %18, i32 %12, i8* %0, i32 %2, i32 %11, i32 %7, i32 0)
br label %276
20: ; preds = %5
%21 = tail call i32 (i32, ...) bitcast (i32 (...)* @cmalloc to i32 (i32, ...)*)(i32 %2)
%22 = sext i32 %21 to i64
%23 = inttoptr i64 %22 to i8*
switch i32 %13, label %270 [
i32 16, label %106
i32 32, label %24
]
24: ; preds = %20
%25 = icmp sgt i32 %2, 0
br i1 %25, label %26, label %270
26: ; preds = %24
%27 = zext i32 %2 to i64
%28 = icmp ult i32 %2, 8
br i1 %28, label %87, label %29
29: ; preds = %26
%30 = getelementptr i8, i8* %23, i64 %27
%31 = getelementptr i8, i8* %0, i64 %27
%32 = icmp ugt i8* %31, %23
%33 = icmp ugt i8* %30, %0
%34 = and i1 %32, %33
br i1 %34, label %87, label %35
35: ; preds = %29
%36 = icmp ult i32 %2, 32
br i1 %36, label %68, label %37
37: ; preds = %35
%38 = and i64 %27, 4294967264
br label %39
39: ; preds = %39, %37
%40 = phi i64 [ 0, %37 ], [ %61, %39 ]
%41 = getelementptr inbounds i8, i8* %0, i64 %40
%42 = bitcast i8* %41 to <16 x i8>*
%43 = load <16 x i8>, <16 x i8>* %42
%44 = getelementptr inbounds i8, i8* %41, i64 16
%45 = bitcast i8* %44 to <16 x i8>*
%46 = load <16 x i8>, <16 x i8>* %45
%47 = add <16 x i8> %43, <i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96>
%48 = add <16 x i8> %46, <i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96>
%49 = icmp ult <16 x i8> %47, <i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31>
%50 = icmp ult <16 x i8> %48, <i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31>
%51 = and <16 x i8> %43, <i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31>
%52 = and <16 x i8> %46, <i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31>
%53 = add nuw nsw <16 x i8> %51, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
%54 = add nuw nsw <16 x i8> %52, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
%55 = select <16 x i1> %49, <16 x i8> %53, <16 x i8> %43
%56 = select <16 x i1> %50, <16 x i8> %54, <16 x i8> %46
%57 = getelementptr inbounds i8, i8* %23, i64 %40
%58 = bitcast i8* %57 to <16 x i8>*
store <16 x i8> %55, <16 x i8>* %58
%59 = getelementptr inbounds i8, i8* %57, i64 16
%60 = bitcast i8* %59 to <16 x i8>*
store <16 x i8> %56, <16 x i8>* %60
%61 = add nuw i64 %40, 32
%62 = icmp eq i64 %61, %38
br i1 %62, label %63, label %39
63: ; preds = %39
%64 = icmp eq i64 %38, %27
br i1 %64, label %270, label %65
65: ; preds = %63
%66 = and i64 %27, 24
%67 = icmp eq i64 %66, 0
br i1 %67, label %87, label %68
68: ; preds = %35, %65
%69 = phi i64 [ %38, %65 ], [ 0, %35 ]
%70 = and i64 %27, 4294967288
br label %71
71: ; preds = %71, %68
%72 = phi i64 [ %69, %68 ], [ %83, %71 ]
%73 = getelementptr inbounds i8, i8* %0, i64 %72
%74 = bitcast i8* %73 to <8 x i8>*
%75 = load <8 x i8>, <8 x i8>* %74
%76 = add <8 x i8> %75, <i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96, i8 -96>
%77 = icmp ult <8 x i8> %76, <i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31>
%78 = and <8 x i8> %75, <i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31>
%79 = add nuw nsw <8 x i8> %78, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
%80 = select <8 x i1> %77, <8 x i8> %79, <8 x i8> %75
%81 = getelementptr inbounds i8, i8* %23, i64 %72
%82 = bitcast i8* %81 to <8 x i8>*
store <8 x i8> %80, <8 x i8>* %82
%83 = add nuw i64 %72, 8
%84 = icmp eq i64 %83, %70
br i1 %84, label %85, label %71
85: ; preds = %71
%86 = icmp eq i64 %70, %27
br i1 %86, label %270, label %87
87: ; preds = %29, %26, %65, %85
%88 = phi i64 [ 0, %26 ], [ 0, %29 ], [ %38, %65 ], [ %70, %85 ]
%89 = xor i64 %88, -1
%90 = and i64 %27, 1
%91 = icmp eq i64 %90, 0
br i1 %91, label %102, label %92
92: ; preds = %87
%93 = getelementptr inbounds i8, i8* %0, i64 %88
%94 = load i8, i8* %93
%95 = add i8 %94, -96
%96 = icmp ult i8 %95, 31
%97 = and i8 %94, 31
%98 = add nuw nsw i8 %97, 1
%99 = select i1 %96, i8 %98, i8 %94
%100 = getelementptr inbounds i8, i8* %23, i64 %88
store i8 %99, i8* %100
%101 = or i64 %88, 1
br label %102
102: ; preds = %92, %87
%103 = phi i64 [ %88, %87 ], [ %101, %92 ]
%104 = sub nsw i64 0, %27
%105 = icmp eq i64 %89, %104
br i1 %105, label %270, label %249
106: ; preds = %20
%107 = icmp sgt i32 %2, 0
br i1 %107, label %108, label %270
108: ; preds = %106
%109 = zext i32 %2 to i64
%110 = icmp ult i32 %2, 8
br i1 %110, label %202, label %111
111: ; preds = %108
%112 = getelementptr i8, i8* %23, i64 %109
%113 = getelementptr i8, i8* %0, i64 %109
%114 = icmp ugt i8* %113, %23
%115 = icmp ugt i8* %112, %0
%116 = and i1 %114, %115
br i1 %116, label %202, label %117
117: ; preds = %111
%118 = icmp ult i32 %2, 32
br i1 %118, label %186, label %119
119: ; preds = %117
%120 = and i64 %109, 4294967264
%121 = add nsw i64 %120, -32
%122 = lshr exact i64 %121, 5
%123 = add nuw nsw i64 %122, 1
%124 = and i64 %123, 1
%125 = icmp eq i64 %121, 0
br i1 %125, label %163, label %126
126: ; preds = %119
%127 = and i64 %123, 1152921504606846974
br label %128
128: ; preds = %128, %126
%129 = phi i64 [ 0, %126 ], [ %160, %128 ]
%130 = phi i64 [ 0, %126 ], [ %161, %128 ]
%131 = getelementptr inbounds i8, i8* %0, i64 %129
%132 = bitcast i8* %131 to <16 x i8>*
%133 = load <16 x i8>, <16 x i8>* %132
%134 = getelementptr inbounds i8, i8* %131, i64 16
%135 = bitcast i8* %134 to <16 x i8>*
%136 = load <16 x i8>, <16 x i8>* %135
%137 = icmp eq <16 x i8> %133, <i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35>
%138 = icmp eq <16 x i8> %136, <i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35>
%139 = select <16 x i1> %137, <16 x i8> <i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30>, <16 x i8> %133
%140 = select <16 x i1> %138, <16 x i8> <i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30>, <16 x i8> %136
%141 = getelementptr inbounds i8, i8* %23, i64 %129
%142 = bitcast i8* %141 to <16 x i8>*
store <16 x i8> %139, <16 x i8>* %142
%143 = getelementptr inbounds i8, i8* %141, i64 16
%144 = bitcast i8* %143 to <16 x i8>*
store <16 x i8> %140, <16 x i8>* %144
%145 = or i64 %129, 32
%146 = getelementptr inbounds i8, i8* %0, i64 %145
%147 = bitcast i8* %146 to <16 x i8>*
%148 = load <16 x i8>, <16 x i8>* %147
%149 = getelementptr inbounds i8, i8* %146, i64 16
%150 = bitcast i8* %149 to <16 x i8>*
%151 = load <16 x i8>, <16 x i8>* %150
%152 = icmp eq <16 x i8> %148, <i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35>
%153 = icmp eq <16 x i8> %151, <i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35>
%154 = select <16 x i1> %152, <16 x i8> <i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30>, <16 x i8> %148
%155 = select <16 x i1> %153, <16 x i8> <i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30>, <16 x i8> %151
%156 = getelementptr inbounds i8, i8* %23, i64 %145
%157 = bitcast i8* %156 to <16 x i8>*
store <16 x i8> %154, <16 x i8>* %157
%158 = getelementptr inbounds i8, i8* %156, i64 16
%159 = bitcast i8* %158 to <16 x i8>*
store <16 x i8> %155, <16 x i8>* %159
%160 = add nuw i64 %129, 64
%161 = add i64 %130, 2
%162 = icmp eq i64 %161, %127
br i1 %162, label %163, label %128
163: ; preds = %128, %119
%164 = phi i64 [ 0, %119 ], [ %160, %128 ]
%165 = icmp eq i64 %124, 0
br i1 %165, label %181, label %166
166: ; preds = %163
%167 = getelementptr inbounds i8, i8* %0, i64 %164
%168 = bitcast i8* %167 to <16 x i8>*
%169 = load <16 x i8>, <16 x i8>* %168
%170 = getelementptr inbounds i8, i8* %167, i64 16
%171 = bitcast i8* %170 to <16 x i8>*
%172 = load <16 x i8>, <16 x i8>* %171
%173 = icmp eq <16 x i8> %169, <i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35>
%174 = icmp eq <16 x i8> %172, <i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35>
%175 = select <16 x i1> %173, <16 x i8> <i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30>, <16 x i8> %169
%176 = select <16 x i1> %174, <16 x i8> <i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30>, <16 x i8> %172
%177 = getelementptr inbounds i8, i8* %23, i64 %164
%178 = bitcast i8* %177 to <16 x i8>*
store <16 x i8> %175, <16 x i8>* %178
%179 = getelementptr inbounds i8, i8* %177, i64 16
%180 = bitcast i8* %179 to <16 x i8>*
store <16 x i8> %176, <16 x i8>* %180
br label %181
181: ; preds = %163, %166
%182 = icmp eq i64 %120, %109
br i1 %182, label %270, label %183
183: ; preds = %181
%184 = and i64 %109, 24
%185 = icmp eq i64 %184, 0
br i1 %185, label %202, label %186
186: ; preds = %117, %183
%187 = phi i64 [ %120, %183 ], [ 0, %117 ]
%188 = and i64 %109, 4294967288
br label %189
189: ; preds = %189, %186
%190 = phi i64 [ %187, %186 ], [ %198, %189 ]
%191 = getelementptr inbounds i8, i8* %0, i64 %190
%192 = bitcast i8* %191 to <8 x i8>*
%193 = load <8 x i8>, <8 x i8>* %192
%194 = icmp eq <8 x i8> %193, <i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35, i8 35>
%195 = select <8 x i1> %194, <8 x i8> <i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30, i8 30>, <8 x i8> %193
%196 = getelementptr inbounds i8, i8* %23, i64 %190
%197 = bitcast i8* %196 to <8 x i8>*
store <8 x i8> %195, <8 x i8>* %197
%198 = add nuw i64 %190, 8
%199 = icmp eq i64 %198, %188
br i1 %199, label %200, label %189
200: ; preds = %189
%201 = icmp eq i64 %188, %109
br i1 %201, label %270, label %202
202: ; preds = %111, %108, %183, %200
%203 = phi i64 [ 0, %108 ], [ 0, %111 ], [ %120, %183 ], [ %188, %200 ]
%204 = xor i64 %203, -1
%205 = add nsw i64 %204, %109
%206 = and i64 %109, 3
%207 = icmp eq i64 %206, 0
br i1 %207, label %219, label %208
208: ; preds = %202, %208
%209 = phi i64 [ %216, %208 ], [ %203, %202 ]
%210 = phi i64 [ %217, %208 ], [ 0, %202 ]
%211 = getelementptr inbounds i8, i8* %0, i64 %209
%212 = load i8, i8* %211
%213 = icmp eq i8 %212, 35
%214 = select i1 %213, i8 30, i8 %212
%215 = getelementptr inbounds i8, i8* %23, i64 %209
store i8 %214, i8* %215
%216 = add nuw nsw i64 %209, 1
%217 = add i64 %210, 1
%218 = icmp eq i64 %217, %206
br i1 %218, label %219, label %208
219: ; preds = %208, %202
%220 = phi i64 [ %203, %202 ], [ %216, %208 ]
%221 = icmp ult i64 %205, 3
br i1 %221, label %270, label %222
222: ; preds = %219, %222
%223 = phi i64 [ %247, %222 ], [ %220, %219 ]
%224 = getelementptr inbounds i8, i8* %0, i64 %223
%225 = load i8, i8* %224
%226 = icmp eq i8 %225, 35
%227 = select i1 %226, i8 30, i8 %225
%228 = getelementptr inbounds i8, i8* %23, i64 %223
store i8 %227, i8* %228
%229 = add nuw nsw i64 %223, 1
%230 = getelementptr inbounds i8, i8* %0, i64 %229
%231 = load i8, i8* %230
%232 = icmp eq i8 %231, 35
%233 = select i1 %232, i8 30, i8 %231
%234 = getelementptr inbounds i8, i8* %23, i64 %229
store i8 %233, i8* %234
%235 = add nuw nsw i64 %223, 2
%236 = getelementptr inbounds i8, i8* %0, i64 %235
%237 = load i8, i8* %236
%238 = icmp eq i8 %237, 35
%239 = select i1 %238, i8 30, i8 %237
%240 = getelementptr inbounds i8, i8* %23, i64 %235
store i8 %239, i8* %240
%241 = add nuw nsw i64 %223, 3
%242 = getelementptr inbounds i8, i8* %0, i64 %241
%243 = load i8, i8* %242
%244 = icmp eq i8 %243, 35
%245 = select i1 %244, i8 30, i8 %243
%246 = getelementptr inbounds i8, i8* %23, i64 %241
store i8 %245, i8* %246
%247 = add nuw nsw i64 %223, 4
%248 = icmp eq i64 %247, %109
br i1 %248, label %270, label %222
249: ; preds = %102, %249
%250 = phi i64 [ %268, %249 ], [ %103, %102 ]
%251 = getelementptr inbounds i8, i8* %0, i64 %250
%252 = load i8, i8* %251
%253 = add i8 %252, -96
%254 = icmp ult i8 %253, 31
%255 = and i8 %252, 31
%256 = add nuw nsw i8 %255, 1
%257 = select i1 %254, i8 %256, i8 %252
%258 = getelementptr inbounds i8, i8* %23, i64 %250
store i8 %257, i8* %258
%259 = add nuw nsw i64 %250, 1
%260 = getelementptr inbounds i8, i8* %0, i64 %259
%261 = load i8, i8* %260
%262 = add i8 %261, -96
%263 = icmp ult i8 %262, 31
%264 = and i8 %261, 31
%265 = add nuw nsw i8 %264, 1
%266 = select i1 %263, i8 %265, i8 %261
%267 = getelementptr inbounds i8, i8* %23, i64 %259
store i8 %266, i8* %267
%268 = add nuw nsw i64 %250, 2
%269 = icmp eq i64 %268, %27
br i1 %269, label %270, label %249
270: ; preds = %102, %249, %219, %222, %63, %85, %181, %200, %24, %106, %20
%271 = tail call i32 (i32, i32, i8*, i32, i32, i32, i32, ...) bitcast (i32 (...)* @omshell_terminaldrawimagestring to i32 (i32, i32, i8*, i32, i32, i32, i32, ...)*)(i32 %3, i32 %12, i8* %0, i32 %2, i32 %11, i32 %7, i32 1)
br i1 %9, label %275, label %272
272: ; preds = %270
%273 = add nsw i32 %3, 1
%274 = tail call i32 (i32, i32, i8*, i32, i32, i32, i32, ...) bitcast (i32 (...)* @omshell_terminaldrawimagestring to i32 (i32, i32, i8*, i32, i32, i32, i32, ...)*)(i32 %273, i32 %12, i8* %0, i32 %2, i32 %11, i32 %7, i32 1)
br label %275
275: ; preds = %272, %270
tail call void @free(i8* %23)
br label %276
276: ; preds = %15, %17, %275
ret void
}