#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 /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
void aan_normalizar_canal_unsigned_char(unsigned char *canal_input,
                                        unsigned char *canal_output, int width,
                                        int height) {
  int i;
  unsigned char max = 0, min = 255;
  if (!canal_input || !canal_output) {
    fprintf(stderr, "Ninguno de los canales puede ser NULL");
    return;
  }
  if (width < 1 || height < 1) {
    fprintf(stderr, "La anchura y la altura del canal deben ser mayores que 0");
    return;
  }
  for (i = 0; i < (width * height); i++) {
    if (canal_input[i] > max)
      max = canal_input[i];
    if (canal_input[i] < min)
      min = canal_input[i];
  }
  for (i = 0; i < (width * height); i++) {
    canal_output[i] = (unsigned char)(255.0 * ((float)(canal_input[i] - min) /
                                               (float)(max - min)));
  }
}


x86 assembly (clang, -O0):
<aan_normalizar_canal_unsigned_char>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
movb   $0x0,-0x1d(%rbp)
movb   $0xff,-0x1e(%rbp)
cmpq   $0x0,-0x8(%rbp)
je     1144 <aan_normalizar_canal_unsigned_char+0x34>
cmpq   $0x0,-0x10(%rbp)
jne    115e <aan_normalizar_canal_unsigned_char+0x4e>
mov    0x2e95(%rip),%rax
mov    (%rax),%edi
lea    0xeb4(%rip),%rsi
call   1030 <fprintf@plt>
jmp    1270 <aan_normalizar_canal_unsigned_char+0x160>
cmpl   $0x1,-0x14(%rbp)
jl     1172 <aan_normalizar_canal_unsigned_char+0x62>
cmpl   $0x1,-0x18(%rbp)
jge    118c <aan_normalizar_canal_unsigned_char+0x7c>
mov    0x2e67(%rip),%rax
mov    (%rax),%edi
lea    0xeac(%rip),%rsi
call   1030 <fprintf@plt>
jmp    1270 <aan_normalizar_canal_unsigned_char+0x160>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x14(%rbp),%ecx
imul   -0x18(%rbp),%ecx
cmp    %ecx,%eax
jge    1204 <aan_normalizar_canal_unsigned_char+0xf4>
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
movzbl -0x1d(%rbp),%ecx
cmp    %ecx,%eax
jle    11cb <aan_normalizar_canal_unsigned_char+0xbb>
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x1d(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
movzbl -0x1e(%rbp),%ecx
cmp    %ecx,%eax
jge    11f1 <aan_normalizar_canal_unsigned_char+0xe1>
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x1e(%rbp)
jmp    11f6 <aan_normalizar_canal_unsigned_char+0xe6>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1193 <aan_normalizar_canal_unsigned_char+0x83>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x14(%rbp),%ecx
imul   -0x18(%rbp),%ecx
cmp    %ecx,%eax
jge    1270 <aan_normalizar_canal_unsigned_char+0x160>
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movzbl (%rax,%rcx,1),%eax
movzbl -0x1e(%rbp),%ecx
sub    %ecx,%eax
cvtsi2ss %eax,%xmm0
movzbl -0x1d(%rbp),%eax
sub    %ecx,%eax
cvtsi2ss %eax,%xmm1
divss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xdb3(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %al,%dl
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    120b <aan_normalizar_canal_unsigned_char+0xfb>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<aan_normalizar_canal_unsigned_char>:
lea    0xf01(%rip),%rax
test   %rdi,%rdi
je     1150 <aan_normalizar_canal_unsigned_char+0x40>
test   %rsi,%rsi
je     1150 <aan_normalizar_canal_unsigned_char+0x40>
lea    0xf16(%rip),%rax
test   %edx,%edx
jle    1150 <aan_normalizar_canal_unsigned_char+0x40>
test   %ecx,%ecx
jle    1150 <aan_normalizar_canal_unsigned_char+0x40>
imul   %edx,%ecx
test   %ecx,%ecx
jle    142f <aan_normalizar_canal_unsigned_char+0x31f>
mov    %ecx,%r10d
cmp    $0x8,%ecx
jae    1161 <aan_normalizar_canal_unsigned_char+0x51>
mov    $0xff,%dl
xor    %r8d,%r8d
xor    %r11d,%r11d
jmp    1340 <aan_normalizar_canal_unsigned_char+0x230>
mov    0x2e89(%rip),%rcx
mov    (%rcx),%edi
mov    %rax,%rsi
jmp    1030 <fprintf@plt>
cmp    $0x20,%ecx
jae    1173 <aan_normalizar_canal_unsigned_char+0x63>
mov    $0xff,%dl
xor    %r11d,%r11d
xor    %r8d,%r8d
jmp    12a2 <aan_normalizar_canal_unsigned_char+0x192>
mov    %r10d,%r8d
and    $0xffffffe0,%r8d
lea    -0x20(%r8),%rax
mov    %rax,%r9
shr    $0x5,%r9
add    $0x1,%r9
test   %rax,%rax
je     11f3 <aan_normalizar_canal_unsigned_char+0xe3>
mov    %r9,%rax
and    $0xfffffffffffffffe,%rax
pxor   %xmm1,%xmm1
pcmpeqd %xmm0,%xmm0
xor    %edx,%edx
pcmpeqd %xmm2,%xmm2
pxor   %xmm3,%xmm3
nopw   0x0(%rax,%rax,1)
movdqu (%rdi,%rdx,1),%xmm4
movdqu 0x10(%rdi,%rdx,1),%xmm5
movdqu 0x20(%rdi,%rdx,1),%xmm6
movdqu 0x30(%rdi,%rdx,1),%xmm7
pmaxub %xmm4,%xmm1
pmaxub %xmm5,%xmm3
pminub %xmm4,%xmm0
pminub %xmm5,%xmm2
pmaxub %xmm6,%xmm1
pmaxub %xmm7,%xmm3
pminub %xmm6,%xmm0
pminub %xmm7,%xmm2
add    $0x40,%rdx
add    $0xfffffffffffffffe,%rax
jne    11b0 <aan_normalizar_canal_unsigned_char+0xa0>
jmp    1205 <aan_normalizar_canal_unsigned_char+0xf5>
pxor   %xmm1,%xmm1
pcmpeqd %xmm0,%xmm0
xor    %edx,%edx
pcmpeqd %xmm2,%xmm2
pxor   %xmm3,%xmm3
test   $0x1,%r9b
je     1226 <aan_normalizar_canal_unsigned_char+0x116>
movdqu (%rdi,%rdx,1),%xmm4
movdqu 0x10(%rdi,%rdx,1),%xmm5
pmaxub %xmm4,%xmm1
pmaxub %xmm5,%xmm3
pminub %xmm4,%xmm0
pminub %xmm5,%xmm2
pminub %xmm2,%xmm0
pmaxub %xmm3,%xmm1
pshufd $0xee,%xmm1,%xmm2
pmaxub %xmm1,%xmm2
pshufd $0x55,%xmm2,%xmm1
pmaxub %xmm2,%xmm1
movdqa %xmm1,%xmm2
psrld  $0x10,%xmm2
pmaxub %xmm1,%xmm2
movdqa %xmm2,%xmm1
psrlw  $0x8,%xmm1
pmaxub %xmm2,%xmm1
movd   %xmm1,%r11d
pshufd $0xee,%xmm0,%xmm1
pminub %xmm0,%xmm1
pshufd $0x55,%xmm1,%xmm0
pminub %xmm1,%xmm0
movdqa %xmm0,%xmm1
psrld  $0x10,%xmm1
pminub %xmm0,%xmm1
movdqa %xmm1,%xmm0
psrlw  $0x8,%xmm0
pminub %xmm1,%xmm0
movd   %xmm0,%edx
cmp    %r10,%r8
je     1361 <aan_normalizar_canal_unsigned_char+0x251>
test   $0x18,%r10b
je     1340 <aan_normalizar_canal_unsigned_char+0x230>
mov    %r8,%r9
mov    %r10d,%r8d
and    $0xfffffff8,%r8d
movzbl %dl,%edx
movd   %edx,%xmm0
punpcklbw %xmm0,%xmm0
pshuflw $0x0,%xmm0,%xmm0
movzbl %r11b,%eax
movd   %eax,%xmm1
punpcklbw %xmm1,%xmm1
pshuflw $0x0,%xmm1,%xmm1
nopl   (%rax)
movq   (%rdi,%r9,1),%xmm2
pmaxub %xmm2,%xmm1
pminub %xmm2,%xmm0
add    $0x8,%r9
cmp    %r9,%r8
jne    12d0 <aan_normalizar_canal_unsigned_char+0x1c0>
pshufd $0x55,%xmm1,%xmm2
pmaxub %xmm1,%xmm2
movdqa %xmm2,%xmm1
psrld  $0x10,%xmm1
pmaxub %xmm2,%xmm1
movdqa %xmm1,%xmm2
psrlw  $0x8,%xmm2
pmaxub %xmm1,%xmm2
movd   %xmm2,%r11d
pshufd $0x55,%xmm0,%xmm1
pminub %xmm0,%xmm1
movdqa %xmm1,%xmm0
psrld  $0x10,%xmm0
pminub %xmm1,%xmm0
movdqa %xmm0,%xmm1
psrlw  $0x8,%xmm1
pminub %xmm0,%xmm1
movd   %xmm1,%edx
cmp    %r10,%r8
je     1361 <aan_normalizar_canal_unsigned_char+0x251>
nopl   0x0(%rax,%rax,1)
movzbl (%rdi,%r8,1),%eax
cmp    %r11b,%al
movzbl %r11b,%r11d
cmova  %eax,%r11d
cmp    %dl,%al
movzbl %dl,%edx
cmovb  %eax,%edx
add    $0x1,%r8
cmp    %r8,%r10
jne    1340 <aan_normalizar_canal_unsigned_char+0x230>
test   %ecx,%ecx
jle    142f <aan_normalizar_canal_unsigned_char+0x31f>
movzbl %dl,%r8d
movzbl %r11b,%eax
sub    %r8d,%eax
cvtsi2ss %eax,%xmm9
cmp    $0x8,%ecx
jb     1398 <aan_normalizar_canal_unsigned_char+0x288>
lea    (%rdi,%r10,1),%rax
cmp    %rsi,%rax
jbe    1430 <aan_normalizar_canal_unsigned_char+0x320>
lea    (%rsi,%r10,1),%rax
cmp    %rdi,%rax
jbe    1430 <aan_normalizar_canal_unsigned_char+0x320>
xor    %ecx,%ecx
mov    %rcx,%rax
not    %rax
test   $0x1,%r10b
je     13d0 <aan_normalizar_canal_unsigned_char+0x2c0>
movzbl (%rdi,%rcx,1),%edx
sub    %r8d,%edx
xorps  %xmm0,%xmm0
cvtsi2ss %edx,%xmm0
divss  %xmm9,%xmm0
cvtss2sd %xmm0,%xmm0
mulsd  0xc4b(%rip),%xmm0
cvttsd2si %xmm0,%edx
mov    %dl,(%rsi,%rcx,1)
or     $0x1,%rcx
add    %r10,%rax
je     142f <aan_normalizar_canal_unsigned_char+0x31f>
movsd  0xc33(%rip),%xmm1
nopl   (%rax)
movzbl (%rdi,%rcx,1),%eax
sub    %r8d,%eax
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
divss  %xmm9,%xmm0
cvtss2sd %xmm0,%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %al,(%rsi,%rcx,1)
movzbl 0x1(%rdi,%rcx,1),%eax
sub    %r8d,%eax
xorps  %xmm0,%xmm0
cvtsi2ss %eax,%xmm0
divss  %xmm9,%xmm0
cvtss2sd %xmm0,%xmm0
mulsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %al,0x1(%rsi,%rcx,1)
add    $0x2,%rcx
cmp    %rcx,%r10
jne    13e0 <aan_normalizar_canal_unsigned_char+0x2d0>
ret
movd   %r8d,%xmm8
cmp    $0x10,%ecx
jae    14f7 <aan_normalizar_canal_unsigned_char+0x3e7>
xor    %ecx,%ecx
mov    %rcx,%rax
mov    %r10d,%ecx
and    $0xfffffff8,%ecx
pshufd $0x0,%xmm8,%xmm1
movaps %xmm9,%xmm2
shufps $0x0,%xmm9,%xmm2
pxor   %xmm3,%xmm3
movapd 0xb9c(%rip),%xmm4
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movq   (%rdi,%rax,1),%xmm0
punpcklbw %xmm3,%xmm0
movdqa %xmm0,%xmm5
punpckhwd %xmm3,%xmm5
punpcklwd %xmm3,%xmm0
psubd  %xmm1,%xmm0
psubd  %xmm1,%xmm5
cvtdq2ps %xmm5,%xmm5
cvtdq2ps %xmm0,%xmm0
divps  %xmm2,%xmm0
divps  %xmm2,%xmm5
cvtps2pd %xmm5,%xmm6
movhlps %xmm5,%xmm5
cvtps2pd %xmm5,%xmm5
cvtps2pd %xmm0,%xmm7
movhlps %xmm0,%xmm0
cvtps2pd %xmm0,%xmm0
mulpd  %xmm4,%xmm0
mulpd  %xmm4,%xmm5
mulpd  %xmm4,%xmm6
cvttpd2dq %xmm6,%xmm6
cvttpd2dq %xmm5,%xmm5
mulpd  %xmm4,%xmm7
unpcklpd %xmm5,%xmm6
cvttpd2dq %xmm7,%xmm5
cvttpd2dq %xmm0,%xmm0
unpcklpd %xmm0,%xmm5
packssdw %xmm6,%xmm5
packuswb %xmm5,%xmm5
movq   %xmm5,(%rsi,%rax,1)
add    $0x8,%rax
cmp    %rax,%rcx
jne    1470 <aan_normalizar_canal_unsigned_char+0x360>
cmp    %r10,%rcx
jne    139a <aan_normalizar_canal_unsigned_char+0x28a>
jmp    142f <aan_normalizar_canal_unsigned_char+0x31f>
mov    %r10d,%ecx
and    $0xfffffff0,%ecx
pshufd $0x0,%xmm8,%xmm12
movaps %xmm9,%xmm11
shufps $0x0,%xmm9,%xmm11
lea    -0x10(%rcx),%rax
mov    %rax,%r9
shr    $0x4,%r9
add    $0x1,%r9
test   %rax,%rax
je     172a <aan_normalizar_canal_unsigned_char+0x61a>
mov    %r9,%rax
and    $0xfffffffffffffffe,%rax
xor    %edx,%edx
pxor   %xmm10,%xmm10
movapd 0xac5(%rip),%xmm13
nopl   0x0(%rax,%rax,1)
movdqu (%rdi,%rdx,1),%xmm6
movdqa %xmm6,%xmm7
punpckhbw %xmm10,%xmm7
movdqa %xmm7,%xmm1
punpckhwd %xmm10,%xmm1
punpcklwd %xmm10,%xmm7
punpcklbw %xmm10,%xmm6
movdqa %xmm6,%xmm0
punpckhwd %xmm10,%xmm0
punpcklwd %xmm10,%xmm6
psubd  %xmm12,%xmm6
psubd  %xmm12,%xmm0
psubd  %xmm12,%xmm7
psubd  %xmm12,%xmm1
cvtdq2ps %xmm1,%xmm1
cvtdq2ps %xmm7,%xmm7
cvtdq2ps %xmm0,%xmm0
cvtdq2ps %xmm6,%xmm4
divps  %xmm11,%xmm7
divps  %xmm11,%xmm1
cvtps2pd %xmm1,%xmm2
movhlps %xmm1,%xmm1
cvtps2pd %xmm1,%xmm1
cvtps2pd %xmm7,%xmm3
divps  %xmm11,%xmm4
movhlps %xmm7,%xmm7
cvtps2pd %xmm7,%xmm5
divps  %xmm11,%xmm0
cvtps2pd %xmm0,%xmm7
movhlps %xmm0,%xmm0
cvtps2pd %xmm0,%xmm0
cvtps2pd %xmm4,%xmm6
movhlps %xmm4,%xmm4
cvtps2pd %xmm4,%xmm4
mulpd  %xmm13,%xmm4
mulpd  %xmm13,%xmm6
mulpd  %xmm13,%xmm0
mulpd  %xmm13,%xmm7
mulpd  %xmm13,%xmm5
mulpd  %xmm13,%xmm3
mulpd  %xmm13,%xmm2
cvttpd2dq %xmm2,%xmm2
mulpd  %xmm13,%xmm1
cvttpd2dq %xmm1,%xmm1
unpcklpd %xmm1,%xmm2
cvttpd2dq %xmm3,%xmm1
cvttpd2dq %xmm5,%xmm3
unpcklpd %xmm3,%xmm1
packssdw %xmm2,%xmm1
cvttpd2dq %xmm7,%xmm2
cvttpd2dq %xmm0,%xmm0
cvttpd2dq %xmm6,%xmm3
unpcklpd %xmm0,%xmm2
cvttpd2dq %xmm4,%xmm0
unpcklpd %xmm0,%xmm3
packssdw %xmm2,%xmm3
packuswb %xmm1,%xmm3
movdqu %xmm3,(%rsi,%rdx,1)
movdqu 0x10(%rdi,%rdx,1),%xmm6
movdqa %xmm6,%xmm0
punpckhbw %xmm10,%xmm0
movdqa %xmm0,%xmm1
punpckhwd %xmm10,%xmm1
punpcklwd %xmm10,%xmm0
punpcklbw %xmm10,%xmm6
movdqa %xmm6,%xmm2
punpckhwd %xmm10,%xmm2
punpcklwd %xmm10,%xmm6
psubd  %xmm12,%xmm6
psubd  %xmm12,%xmm2
psubd  %xmm12,%xmm0
psubd  %xmm12,%xmm1
cvtdq2ps %xmm1,%xmm1
cvtdq2ps %xmm0,%xmm0
cvtdq2ps %xmm2,%xmm2
divps  %xmm11,%xmm1
cvtps2pd %xmm1,%xmm3
divps  %xmm11,%xmm2
movhlps %xmm1,%xmm1
cvtps2pd %xmm1,%xmm1
divps  %xmm11,%xmm0
cvtps2pd %xmm0,%xmm4
movhlps %xmm0,%xmm0
cvtps2pd %xmm0,%xmm0
cvtps2pd %xmm2,%xmm7
cvtdq2ps %xmm6,%xmm5
movhlps %xmm2,%xmm2
cvtps2pd %xmm2,%xmm2
divps  %xmm11,%xmm5
cvtps2pd %xmm5,%xmm6
movhlps %xmm5,%xmm5
cvtps2pd %xmm5,%xmm5
mulpd  %xmm13,%xmm5
mulpd  %xmm13,%xmm6
mulpd  %xmm13,%xmm2
mulpd  %xmm13,%xmm7
mulpd  %xmm13,%xmm0
mulpd  %xmm13,%xmm4
mulpd  %xmm13,%xmm1
mulpd  %xmm13,%xmm3
cvttpd2dq %xmm3,%xmm3
cvttpd2dq %xmm1,%xmm1
cvttpd2dq %xmm4,%xmm4
unpcklpd %xmm1,%xmm3
cvttpd2dq %xmm0,%xmm0
unpcklpd %xmm0,%xmm4
cvttpd2dq %xmm7,%xmm0
cvttpd2dq %xmm2,%xmm1
packssdw %xmm3,%xmm4
unpcklpd %xmm1,%xmm0
cvttpd2dq %xmm6,%xmm1
cvttpd2dq %xmm5,%xmm2
unpcklpd %xmm2,%xmm1
packssdw %xmm0,%xmm1
packuswb %xmm4,%xmm1
movdqu %xmm1,0x10(%rsi,%rdx,1)
add    $0x20,%rdx
add    $0xfffffffffffffffe,%rax
jne    1540 <aan_normalizar_canal_unsigned_char+0x430>
jmp    172c <aan_normalizar_canal_unsigned_char+0x61c>
xor    %edx,%edx
test   $0x1,%r9b
je     1823 <aan_normalizar_canal_unsigned_char+0x713>
movdqu (%rdi,%rdx,1),%xmm0
pxor   %xmm1,%xmm1
movdqa %xmm0,%xmm2
punpckhbw %xmm1,%xmm2
movdqa %xmm2,%xmm3
punpckhwd %xmm1,%xmm3
punpcklwd %xmm1,%xmm2
punpcklbw %xmm1,%xmm0
movdqa %xmm0,%xmm4
punpckhwd %xmm1,%xmm4
punpcklwd %xmm1,%xmm0
psubd  %xmm12,%xmm0
psubd  %xmm12,%xmm4
psubd  %xmm12,%xmm2
psubd  %xmm12,%xmm3
cvtdq2ps %xmm3,%xmm1
cvtdq2ps %xmm2,%xmm2
cvtdq2ps %xmm4,%xmm4
cvtdq2ps %xmm0,%xmm0
divps  %xmm11,%xmm2
divps  %xmm11,%xmm1
cvtps2pd %xmm1,%xmm7
movhlps %xmm1,%xmm1
cvtps2pd %xmm1,%xmm1
cvtps2pd %xmm2,%xmm6
divps  %xmm11,%xmm0
movhlps %xmm2,%xmm2
cvtps2pd %xmm2,%xmm2
divps  %xmm11,%xmm4
cvtps2pd %xmm4,%xmm3
movhlps %xmm4,%xmm4
cvtps2pd %xmm4,%xmm5
cvtps2pd %xmm0,%xmm10
movhlps %xmm0,%xmm0
cvtps2pd %xmm0,%xmm4
movapd 0x840(%rip),%xmm0
mulpd  %xmm0,%xmm4
mulpd  %xmm0,%xmm10
mulpd  %xmm0,%xmm5
mulpd  %xmm0,%xmm3
mulpd  %xmm0,%xmm2
mulpd  %xmm0,%xmm6
mulpd  %xmm0,%xmm1
mulpd  %xmm0,%xmm7
cvttpd2dq %xmm7,%xmm0
cvttpd2dq %xmm1,%xmm1
cvttpd2dq %xmm6,%xmm6
cvttpd2dq %xmm2,%xmm2
unpcklpd %xmm1,%xmm0
unpcklpd %xmm2,%xmm6
cvttpd2dq %xmm3,%xmm1
packssdw %xmm0,%xmm6
cvttpd2dq %xmm5,%xmm0
unpcklpd %xmm0,%xmm1
cvttpd2dq %xmm10,%xmm0
cvttpd2dq %xmm4,%xmm2
unpcklpd %xmm2,%xmm0
packssdw %xmm1,%xmm0
packuswb %xmm6,%xmm0
movdqu %xmm0,(%rsi,%rdx,1)
cmp    %r10,%rcx
je     142f <aan_normalizar_canal_unsigned_char+0x31f>
test   $0x8,%r10b
jne    1440 <aan_normalizar_canal_unsigned_char+0x330>
jmp    139a <aan_normalizar_canal_unsigned_char+0x28a>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [38 x i8] c"Ninguno de los canales puede ser NULL\00"
@.str.1 = [57 x i8] c"La anchura y la altura del canal deben ser mayores que 0\00"
define void @aan_normalizar_canal_unsigned_char(i8* %0, i8* %1, i32 %2, i32 %3) {
%5 = alloca i8*
%6 = alloca i8*
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i8
%11 = alloca i8
store i8* %0, i8** %5
store i8* %1, i8** %6
store i32 %2, i32* %7
store i32 %3, i32* %8
store i8 0, i8* %10
store i8 -1, i8* %11
%12 = load i8*, i8** %5
%13 = icmp ne i8* %12, null
br i1 %13, label %14, label %17
14: ; preds = %4
%15 = load i8*, i8** %6
%16 = icmp ne i8* %15, null
br i1 %16, label %20, label %17
17: ; preds = %14, %4
%18 = load i32, i32* @stderr
%19 = call i32 @fprintf(i32 %18, i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0))
br label %107
20: ; preds = %14
%21 = load i32, i32* %7
%22 = icmp slt i32 %21, 1
br i1 %22, label %26, label %23
23: ; preds = %20
%24 = load i32, i32* %8
%25 = icmp slt i32 %24, 1
br i1 %25, label %26, label %29
26: ; preds = %23, %20
%27 = load i32, i32* @stderr
%28 = call i32 @fprintf(i32 %27, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.1, i64 0, i64 0))
br label %107
29: ; preds = %23
store i32 0, i32* %9
br label %30
30: ; preds = %69, %29
%31 = load i32, i32* %9
%32 = load i32, i32* %7
%33 = load i32, i32* %8
%34 = mul nsw i32 %32, %33
%35 = icmp slt i32 %31, %34
br i1 %35, label %36, label %72
36: ; preds = %30
%37 = load i8*, i8** %5
%38 = load i32, i32* %9
%39 = sext i32 %38 to i64
%40 = getelementptr inbounds i8, i8* %37, i64 %39
%41 = load i8, i8* %40
%42 = zext i8 %41 to i32
%43 = load i8, i8* %10
%44 = zext i8 %43 to i32
%45 = icmp sgt i32 %42, %44
br i1 %45, label %46, label %52
46: ; preds = %36
%47 = load i8*, i8** %5
%48 = load i32, i32* %9
%49 = sext i32 %48 to i64
%50 = getelementptr inbounds i8, i8* %47, i64 %49
%51 = load i8, i8* %50
store i8 %51, i8* %10
br label %52
52: ; preds = %46, %36
%53 = load i8*, i8** %5
%54 = load i32, i32* %9
%55 = sext i32 %54 to i64
%56 = getelementptr inbounds i8, i8* %53, i64 %55
%57 = load i8, i8* %56
%58 = zext i8 %57 to i32
%59 = load i8, i8* %11
%60 = zext i8 %59 to i32
%61 = icmp slt i32 %58, %60
br i1 %61, label %62, label %68
62: ; preds = %52
%63 = load i8*, i8** %5
%64 = load i32, i32* %9
%65 = sext i32 %64 to i64
%66 = getelementptr inbounds i8, i8* %63, i64 %65
%67 = load i8, i8* %66
store i8 %67, i8* %11
br label %68
68: ; preds = %62, %52
br label %69
69: ; preds = %68
%70 = load i32, i32* %9
%71 = add nsw i32 %70, 1
store i32 %71, i32* %9
br label %30
72: ; preds = %30
store i32 0, i32* %9
br label %73
73: ; preds = %104, %72
%74 = load i32, i32* %9
%75 = load i32, i32* %7
%76 = load i32, i32* %8
%77 = mul nsw i32 %75, %76
%78 = icmp slt i32 %74, %77
br i1 %78, label %79, label %107
79: ; preds = %73
%80 = load i8*, i8** %5
%81 = load i32, i32* %9
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds i8, i8* %80, i64 %82
%84 = load i8, i8* %83
%85 = zext i8 %84 to i32
%86 = load i8, i8* %11
%87 = zext i8 %86 to i32
%88 = sub nsw i32 %85, %87
%89 = sitofp i32 %88 to float
%90 = load i8, i8* %10
%91 = zext i8 %90 to i32
%92 = load i8, i8* %11
%93 = zext i8 %92 to i32
%94 = sub nsw i32 %91, %93
%95 = sitofp i32 %94 to float
%96 = fdiv float %89, %95
%97 = fpext float %96 to double
%98 = fmul double 2.550000e+02, %97
%99 = fptoui double %98 to i8
%100 = load i8*, i8** %6
%101 = load i32, i32* %9
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds i8, i8* %100, i64 %102
store i8 %99, i8* %103
br label %104
104: ; preds = %79
%105 = load i32, i32* %9
%106 = add nsw i32 %105, 1
store i32 %106, i32* %9
br label %73
107: ; preds = %17, %26, %73
ret void
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [38 x i8] c"Ninguno de los canales puede ser NULL\00"
@.str.1 = [57 x i8] c"La anchura y la altura del canal deben ser mayores que 0\00"
define void @aan_normalizar_canal_unsigned_char(i8* %0, i8* writeonly %1, i32 %2, i32 %3) {
%5 = icmp ne i8* %0, null
%6 = icmp ne i8* %1, null
%7 = and i1 %5, %6
br i1 %7, label %8, label %305
8: ; preds = %4
%9 = icmp slt i32 %2, 1
%10 = icmp slt i32 %3, 1
%11 = or i1 %9, %10
br i1 %11, label %305, label %12
12: ; preds = %8
%13 = mul i32 %3, %2
%14 = icmp sgt i32 %13, 0
br i1 %14, label %15, label %309
15: ; preds = %12
%16 = zext i32 %13 to i64
%17 = icmp ult i32 %13, 8
br i1 %17, label %135, label %18
18: ; preds = %15
%19 = icmp ult i32 %13, 32
br i1 %19, label %109, label %20
20: ; preds = %18
%21 = and i64 %16, 4294967264
%22 = add nsw i64 %21, -32
%23 = lshr exact i64 %22, 5
%24 = add nuw nsw i64 %23, 1
%25 = and i64 %24, 1
%26 = icmp eq i64 %22, 0
br i1 %26, label %68, label %27
27: ; preds = %20
%28 = and i64 %24, 1152921504606846974
br label %29
29: ; preds = %29, %27
%30 = phi i64 [ 0, %27 ], [ %65, %29 ]
%31 = phi <16 x i8> [ <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>, %27 ], [ %63, %29 ]
%32 = phi <16 x i8> [ <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>, %27 ], [ %64, %29 ]
%33 = phi <16 x i8> [ zeroinitializer, %27 ], [ %59, %29 ]
%34 = phi <16 x i8> [ zeroinitializer, %27 ], [ %60, %29 ]
%35 = phi i64 [ 0, %27 ], [ %66, %29 ]
%36 = getelementptr inbounds i8, i8* %0, i64 %30
%37 = bitcast i8* %36 to <16 x i8>*
%38 = load <16 x i8>, <16 x i8>* %37
%39 = getelementptr inbounds i8, i8* %36, i64 16
%40 = bitcast i8* %39 to <16 x i8>*
%41 = load <16 x i8>, <16 x i8>* %40
%42 = icmp ugt <16 x i8> %38, %33
%43 = icmp ugt <16 x i8> %41, %34
%44 = select <16 x i1> %42, <16 x i8> %38, <16 x i8> %33
%45 = select <16 x i1> %43, <16 x i8> %41, <16 x i8> %34
%46 = icmp ult <16 x i8> %38, %31
%47 = icmp ult <16 x i8> %41, %32
%48 = select <16 x i1> %46, <16 x i8> %38, <16 x i8> %31
%49 = select <16 x i1> %47, <16 x i8> %41, <16 x i8> %32
%50 = or i64 %30, 32
%51 = getelementptr inbounds i8, i8* %0, i64 %50
%52 = bitcast i8* %51 to <16 x i8>*
%53 = load <16 x i8>, <16 x i8>* %52
%54 = getelementptr inbounds i8, i8* %51, i64 16
%55 = bitcast i8* %54 to <16 x i8>*
%56 = load <16 x i8>, <16 x i8>* %55
%57 = icmp ugt <16 x i8> %53, %44
%58 = icmp ugt <16 x i8> %56, %45
%59 = select <16 x i1> %57, <16 x i8> %53, <16 x i8> %44
%60 = select <16 x i1> %58, <16 x i8> %56, <16 x i8> %45
%61 = icmp ult <16 x i8> %53, %48
%62 = icmp ult <16 x i8> %56, %49
%63 = select <16 x i1> %61, <16 x i8> %53, <16 x i8> %48
%64 = select <16 x i1> %62, <16 x i8> %56, <16 x i8> %49
%65 = add nuw i64 %30, 64
%66 = add i64 %35, 2
%67 = icmp eq i64 %66, %28
br i1 %67, label %68, label %29
68: ; preds = %29, %20
%69 = phi <16 x i8> [ undef, %20 ], [ %59, %29 ]
%70 = phi <16 x i8> [ undef, %20 ], [ %60, %29 ]
%71 = phi <16 x i8> [ undef, %20 ], [ %63, %29 ]
%72 = phi <16 x i8> [ undef, %20 ], [ %64, %29 ]
%73 = phi i64 [ 0, %20 ], [ %65, %29 ]
%74 = phi <16 x i8> [ <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>, %20 ], [ %63, %29 ]
%75 = phi <16 x i8> [ <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>, %20 ], [ %64, %29 ]
%76 = phi <16 x i8> [ zeroinitializer, %20 ], [ %59, %29 ]
%77 = phi <16 x i8> [ zeroinitializer, %20 ], [ %60, %29 ]
%78 = icmp eq i64 %25, 0
br i1 %78, label %94, label %79
79: ; preds = %68
%80 = getelementptr inbounds i8, i8* %0, i64 %73
%81 = bitcast i8* %80 to <16 x i8>*
%82 = load <16 x i8>, <16 x i8>* %81
%83 = getelementptr inbounds i8, i8* %80, i64 16
%84 = bitcast i8* %83 to <16 x i8>*
%85 = load <16 x i8>, <16 x i8>* %84
%86 = icmp ugt <16 x i8> %82, %76
%87 = icmp ugt <16 x i8> %85, %77
%88 = select <16 x i1> %86, <16 x i8> %82, <16 x i8> %76
%89 = select <16 x i1> %87, <16 x i8> %85, <16 x i8> %77
%90 = icmp ult <16 x i8> %82, %74
%91 = icmp ult <16 x i8> %85, %75
%92 = select <16 x i1> %90, <16 x i8> %82, <16 x i8> %74
%93 = select <16 x i1> %91, <16 x i8> %85, <16 x i8> %75
br label %94
94: ; preds = %68, %79
%95 = phi <16 x i8> [ %69, %68 ], [ %88, %79 ]
%96 = phi <16 x i8> [ %70, %68 ], [ %89, %79 ]
%97 = phi <16 x i8> [ %71, %68 ], [ %92, %79 ]
%98 = phi <16 x i8> [ %72, %68 ], [ %93, %79 ]
%99 = icmp ugt <16 x i8> %95, %96
%100 = select <16 x i1> %99, <16 x i8> %95, <16 x i8> %96
%101 = call i8 @llvm.vector.reduce.umax.v16i8(<16 x i8> %100)
%102 = icmp ult <16 x i8> %97, %98
%103 = select <16 x i1> %102, <16 x i8> %97, <16 x i8> %98
%104 = call i8 @llvm.vector.reduce.umin.v16i8(<16 x i8> %103)
%105 = icmp eq i64 %21, %16
br i1 %105, label %139, label %106
106: ; preds = %94
%107 = and i64 %16, 24
%108 = icmp eq i64 %107, 0
br i1 %108, label %135, label %109
109: ; preds = %18, %106
%110 = phi i8 [ -1, %18 ], [ %104, %106 ]
%111 = phi i8 [ 0, %18 ], [ %101, %106 ]
%112 = phi i64 [ 0, %18 ], [ %21, %106 ]
%113 = and i64 %16, 4294967288
%114 = insertelement <8 x i8> poison, i8 %110, i64 0
%115 = shufflevector <8 x i8> %114, <8 x i8> poison, <8 x i32> zeroinitializer
%116 = insertelement <8 x i8> poison, i8 %111, i64 0
%117 = shufflevector <8 x i8> %116, <8 x i8> poison, <8 x i32> zeroinitializer
br label %118
118: ; preds = %118, %109
%119 = phi i64 [ %112, %109 ], [ %129, %118 ]
%120 = phi <8 x i8> [ %115, %109 ], [ %128, %118 ]
%121 = phi <8 x i8> [ %117, %109 ], [ %126, %118 ]
%122 = getelementptr inbounds i8, i8* %0, i64 %119
%123 = bitcast i8* %122 to <8 x i8>*
%124 = load <8 x i8>, <8 x i8>* %123
%125 = icmp ugt <8 x i8> %124, %121
%126 = select <8 x i1> %125, <8 x i8> %124, <8 x i8> %121
%127 = icmp ult <8 x i8> %124, %120
%128 = select <8 x i1> %127, <8 x i8> %124, <8 x i8> %120
%129 = add nuw i64 %119, 8
%130 = icmp eq i64 %129, %113
br i1 %130, label %131, label %118
131: ; preds = %118
%132 = call i8 @llvm.vector.reduce.umax.v8i8(<8 x i8> %126)
%133 = call i8 @llvm.vector.reduce.umin.v8i8(<8 x i8> %128)
%134 = icmp eq i64 %113, %16
br i1 %134, label %139, label %135
135: ; preds = %15, %106, %131
%136 = phi i64 [ 0, %15 ], [ %21, %106 ], [ %113, %131 ]
%137 = phi i8 [ -1, %15 ], [ %104, %106 ], [ %133, %131 ]
%138 = phi i8 [ 0, %15 ], [ %101, %106 ], [ %132, %131 ]
br label %268
139: ; preds = %268, %131, %94
%140 = phi i8 [ %101, %94 ], [ %132, %131 ], [ %275, %268 ]
%141 = phi i8 [ %104, %94 ], [ %133, %131 ], [ %277, %268 ]
%142 = zext i8 %141 to i32
br i1 %14, label %143, label %309
143: ; preds = %139
%144 = zext i8 %140 to i32
%145 = sub nsw i32 %144, %142
%146 = sitofp i32 %145 to float
%147 = zext i32 %13 to i64
%148 = icmp ult i32 %13, 8
br i1 %148, label %247, label %149
149: ; preds = %143
%150 = getelementptr i8, i8* %1, i64 %16
%151 = getelementptr i8, i8* %0, i64 %16
%152 = icmp ugt i8* %151, %1
%153 = icmp ugt i8* %150, %0
%154 = and i1 %152, %153
br i1 %154, label %247, label %155
155: ; preds = %149
%156 = icmp ult i32 %13, 16
br i1 %156, label %222, label %157
157: ; preds = %155
%158 = and i64 %16, 4294967280
%159 = insertelement <16 x i32> poison, i32 %142, i64 0
%160 = shufflevector <16 x i32> %159, <16 x i32> poison, <16 x i32> zeroinitializer
%161 = insertelement <16 x float> poison, float %146, i64 0
%162 = shufflevector <16 x float> %161, <16 x float> poison, <16 x i32> zeroinitializer
%163 = add nsw i64 %158, -16
%164 = lshr exact i64 %163, 4
%165 = add nuw nsw i64 %164, 1
%166 = and i64 %165, 1
%167 = icmp eq i64 %163, 0
br i1 %167, label %201, label %168
168: ; preds = %157
%169 = and i64 %165, 2305843009213693950
br label %170
170: ; preds = %170, %168
%171 = phi i64 [ 0, %168 ], [ %198, %170 ]
%172 = phi i64 [ 0, %168 ], [ %199, %170 ]
%173 = getelementptr inbounds i8, i8* %0, i64 %171
%174 = bitcast i8* %173 to <16 x i8>*
%175 = load <16 x i8>, <16 x i8>* %174
%176 = zext <16 x i8> %175 to <16 x i32>
%177 = sub nsw <16 x i32> %176, %160
%178 = sitofp <16 x i32> %177 to <16 x float>
%179 = fdiv <16 x float> %178, %162
%180 = fpext <16 x float> %179 to <16 x double>
%181 = fmul <16 x double> %180, <double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02>
%182 = fptoui <16 x double> %181 to <16 x i8>
%183 = getelementptr inbounds i8, i8* %1, i64 %171
%184 = bitcast i8* %183 to <16 x i8>*
store <16 x i8> %182, <16 x i8>* %184
%185 = or i64 %171, 16
%186 = getelementptr inbounds i8, i8* %0, i64 %185
%187 = bitcast i8* %186 to <16 x i8>*
%188 = load <16 x i8>, <16 x i8>* %187
%189 = zext <16 x i8> %188 to <16 x i32>
%190 = sub nsw <16 x i32> %189, %160
%191 = sitofp <16 x i32> %190 to <16 x float>
%192 = fdiv <16 x float> %191, %162
%193 = fpext <16 x float> %192 to <16 x double>
%194 = fmul <16 x double> %193, <double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02>
%195 = fptoui <16 x double> %194 to <16 x i8>
%196 = getelementptr inbounds i8, i8* %1, i64 %185
%197 = bitcast i8* %196 to <16 x i8>*
store <16 x i8> %195, <16 x i8>* %197
%198 = add nuw i64 %171, 32
%199 = add i64 %172, 2
%200 = icmp eq i64 %199, %169
br i1 %200, label %201, label %170
201: ; preds = %170, %157
%202 = phi i64 [ 0, %157 ], [ %198, %170 ]
%203 = icmp eq i64 %166, 0
br i1 %203, label %217, label %204
204: ; preds = %201
%205 = getelementptr inbounds i8, i8* %0, i64 %202
%206 = bitcast i8* %205 to <16 x i8>*
%207 = load <16 x i8>, <16 x i8>* %206
%208 = zext <16 x i8> %207 to <16 x i32>
%209 = sub nsw <16 x i32> %208, %160
%210 = sitofp <16 x i32> %209 to <16 x float>
%211 = fdiv <16 x float> %210, %162
%212 = fpext <16 x float> %211 to <16 x double>
%213 = fmul <16 x double> %212, <double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02>
%214 = fptoui <16 x double> %213 to <16 x i8>
%215 = getelementptr inbounds i8, i8* %1, i64 %202
%216 = bitcast i8* %215 to <16 x i8>*
store <16 x i8> %214, <16 x i8>* %216
br label %217
217: ; preds = %201, %204
%218 = icmp eq i64 %158, %16
br i1 %218, label %309, label %219
219: ; preds = %217
%220 = and i64 %16, 8
%221 = icmp eq i64 %220, 0
br i1 %221, label %247, label %222
222: ; preds = %155, %219
%223 = phi i64 [ %158, %219 ], [ 0, %155 ]
%224 = and i64 %16, 4294967288
%225 = insertelement <8 x i32> poison, i32 %142, i64 0
%226 = shufflevector <8 x i32> %225, <8 x i32> poison, <8 x i32> zeroinitializer
%227 = insertelement <8 x float> poison, float %146, i64 0
%228 = shufflevector <8 x float> %227, <8 x float> poison, <8 x i32> zeroinitializer
br label %229
229: ; preds = %229, %222
%230 = phi i64 [ %223, %222 ], [ %243, %229 ]
%231 = getelementptr inbounds i8, i8* %0, i64 %230
%232 = bitcast i8* %231 to <8 x i8>*
%233 = load <8 x i8>, <8 x i8>* %232
%234 = zext <8 x i8> %233 to <8 x i32>
%235 = sub nsw <8 x i32> %234, %226
%236 = sitofp <8 x i32> %235 to <8 x float>
%237 = fdiv <8 x float> %236, %228
%238 = fpext <8 x float> %237 to <8 x double>
%239 = fmul <8 x double> %238, <double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02, double 2.550000e+02>
%240 = fptoui <8 x double> %239 to <8 x i8>
%241 = getelementptr inbounds i8, i8* %1, i64 %230
%242 = bitcast i8* %241 to <8 x i8>*
store <8 x i8> %240, <8 x i8>* %242
%243 = add nuw i64 %230, 8
%244 = icmp eq i64 %243, %224
br i1 %244, label %245, label %229
245: ; preds = %229
%246 = icmp eq i64 %224, %16
br i1 %246, label %309, label %247
247: ; preds = %149, %143, %219, %245
%248 = phi i64 [ 0, %143 ], [ 0, %149 ], [ %158, %219 ], [ %224, %245 ]
%249 = xor i64 %248, -1
%250 = and i64 %16, 1
%251 = icmp eq i64 %250, 0
br i1 %251, label %264, label %252
252: ; preds = %247
%253 = getelementptr inbounds i8, i8* %0, i64 %248
%254 = load i8, i8* %253
%255 = zext i8 %254 to i32
%256 = sub nsw i32 %255, %142
%257 = sitofp i32 %256 to float
%258 = fdiv float %257, %146
%259 = fpext float %258 to double
%260 = fmul double %259, 2.550000e+02
%261 = fptoui double %260 to i8
%262 = getelementptr inbounds i8, i8* %1, i64 %248
store i8 %261, i8* %262
%263 = or i64 %248, 1
br label %264
264: ; preds = %252, %247
%265 = phi i64 [ %248, %247 ], [ %263, %252 ]
%266 = sub nsw i64 0, %16
%267 = icmp eq i64 %249, %266
br i1 %267, label %309, label %280
268: ; preds = %135, %268
%269 = phi i64 [ %278, %268 ], [ %136, %135 ]
%270 = phi i8 [ %277, %268 ], [ %137, %135 ]
%271 = phi i8 [ %275, %268 ], [ %138, %135 ]
%272 = getelementptr inbounds i8, i8* %0, i64 %269
%273 = load i8, i8* %272
%274 = icmp ugt i8 %273, %271
%275 = select i1 %274, i8 %273, i8 %271
%276 = icmp ult i8 %273, %270
%277 = select i1 %276, i8 %273, i8 %270
%278 = add nuw nsw i64 %269, 1
%279 = icmp eq i64 %278, %16
br i1 %279, label %139, label %268
280: ; preds = %264, %280
%281 = phi i64 [ %303, %280 ], [ %265, %264 ]
%282 = getelementptr inbounds i8, i8* %0, i64 %281
%283 = load i8, i8* %282
%284 = zext i8 %283 to i32
%285 = sub nsw i32 %284, %142
%286 = sitofp i32 %285 to float
%287 = fdiv float %286, %146
%288 = fpext float %287 to double
%289 = fmul double %288, 2.550000e+02
%290 = fptoui double %289 to i8
%291 = getelementptr inbounds i8, i8* %1, i64 %281
store i8 %290, i8* %291
%292 = add nuw nsw i64 %281, 1
%293 = getelementptr inbounds i8, i8* %0, i64 %292
%294 = load i8, i8* %293
%295 = zext i8 %294 to i32
%296 = sub nsw i32 %295, %142
%297 = sitofp i32 %296 to float
%298 = fdiv float %297, %146
%299 = fpext float %298 to double
%300 = fmul double %299, 2.550000e+02
%301 = fptoui double %300 to i8
%302 = getelementptr inbounds i8, i8* %1, i64 %292
store i8 %301, i8* %302
%303 = add nuw nsw i64 %281, 2
%304 = icmp eq i64 %303, %147
br i1 %304, label %309, label %280
305: ; preds = %8, %4
%306 = phi i8* [ getelementptr inbounds ([38 x i8], [38 x i8]* @.str, i64 0, i64 0), %4 ], [ getelementptr inbounds ([57 x i8], [57 x i8]* @.str.1, i64 0, i64 0), %8 ]
%307 = load i32, i32* @stderr
%308 = tail call i32 @fprintf(i32 %307, i8* %306)
br label %309
309: ; preds = %264, %280, %217, %245, %305, %12, %139
ret void
}