#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 /*<<< orphan*/ fbuf;

/* Variables and functions */
int AFMT_S16_LE;
int AFMT_U8;
scalar_t__ EAGAIN;
int /*<<< orphan*/ O_RDONLY;
int /*<<< orphan*/ SNDCTL_DSP_SETFMT;
int /*<<< orphan*/ SNDCTL_DSP_SPEED;
int /*<<< orphan*/ SNDCTL_DSP_STEREO;
int abs(int);
int /*<<< orphan*/ close(int);
scalar_t__ errno;
int /*<<< orphan*/ exit(int);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, ...);
int ioctl(int, int /*<<< orphan*/, int *);
int /*<<< orphan*/ memmove(float *, float *, unsigned int);
int open(char const *, int /*<<< orphan*/);
int /*<<< orphan*/ perror(char *);
int /*<<< orphan*/ process_buffer(float *, unsigned int);
int read(int, ...);
int /*<<< orphan*/ stderr;
void input_sound(unsigned int sample_rate, unsigned int overlap,
                 const char *ifname) {
  int sndparam;
  int fd;
  union {
    short s[8192];
    unsigned char b[8192];
  } b;
  float fbuf[16384];
  unsigned int fbuf_cnt = 0;
  int i;
  short *sp;
  unsigned char *bp;
  int fmt = 0;
  int stereo = 0;
  if ((fd = open(ifname ? ifname : "/dev/dsp", O_RDONLY)) < 0) {
    perror("open");
    exit(10);
  }
  sndparam = AFMT_S16_LE;
  if (ioctl(fd, SNDCTL_DSP_SETFMT, &sndparam) == -1) {
    perror("ioctl: SNDCTL_DSP_SETFMT");
    exit(10);
  }
  if (sndparam != AFMT_S16_LE) {
    fmt = 1;
    sndparam = AFMT_U8;
    if (ioctl(fd, SNDCTL_DSP_SETFMT, &sndparam) == -1) {
      perror("ioctl: SNDCTL_DSP_SETFMT");
      exit(10);
    }
    if (sndparam != AFMT_U8) {
      perror("ioctl: SNDCTL_DSP_SETFMT");
      exit(10);
    }
  }
  sndparam = 0;
  if (ioctl(fd, SNDCTL_DSP_STEREO, &sndparam) == -1) {
    perror("ioctl: SNDCTL_DSP_STEREO");
    exit(10);
  }
  if (sndparam == 1) {
    fprintf(stderr, "soundif: Warning, cannot set the channel "
                    "number to 1, will use stereo\n");
    stereo = 1;
  } else if (sndparam != 0) {
    fprintf(stderr, "soundif: Error, cannot set the channel "
                    "number to 1\n");
    exit(10);
  }
  sndparam = sample_rate;
  if (ioctl(fd, SNDCTL_DSP_SPEED, &sndparam) == -1) {
    perror("ioctl: SNDCTL_DSP_SPEED");
    exit(10);
  }
  if ((10 * abs(sndparam - sample_rate)) > sample_rate) {
    perror("ioctl: SNDCTL_DSP_SPEED");
    exit(10);
  }
  if (sndparam != sample_rate) {
    fprintf(stderr,
            "Warning: Sampling rate is %u, "
            "requested %u\n",
            sndparam, sample_rate);
  }
  for (;;) {
    if (fmt) {
      i = read(fd, bp = b.b, sizeof(b.b));
      if (i < 0 && errno != EAGAIN) {
        perror("read");
        exit(4);
      }
      if (!i)
        break;
      if (i > 0) {
        for (; i >= sizeof(b.b[0]); i -= sizeof(b.b[0]), sp++)
          fbuf[fbuf_cnt++] = ((int)(*bp) - 0x80) * (1.0 / 128.0);
        if (i)
          fprintf(stderr, "warning: noninteger number of samples read\n");
        if (fbuf_cnt > overlap) {
          process_buffer(fbuf, fbuf_cnt - overlap);
          memmove(fbuf, fbuf + fbuf_cnt - overlap, overlap * sizeof(fbuf[0]));
          fbuf_cnt = overlap;
        }
      }
    } else {
      i = read(fd, sp = b.s, sizeof(b.s));
      if (i < 0 && errno != EAGAIN) {
        perror("read");
        exit(4);
      }
      if (!i)
        break;
      if (i > 0) {
        if (stereo) {
          for (; i >= sizeof(b.s[0]); i -= (sizeof(b.s[0]) * 2), sp += 2)
            fbuf[fbuf_cnt++] = (*sp) * (1.0 / 32768.0);
        } else {
          for (; i >= sizeof(b.s[0]); i -= sizeof(b.s[0]), sp++)
            fbuf[fbuf_cnt++] = (*sp) * (1.0 / 32768.0);
        }
        if (i)
          fprintf(stderr, "warning: noninteger number of samples read\n");
        if (fbuf_cnt > overlap) {
          process_buffer(fbuf, fbuf_cnt - overlap);
          memmove(fbuf, fbuf + fbuf_cnt - overlap, overlap * sizeof(fbuf[0]));
          fbuf_cnt = overlap;
        }
      }
    }
  }
  close(fd);
}


x86 assembly (clang, -O0):
<input_sound>:
push   %rbp
mov    %rsp,%rbp
sub    $0x14050,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
movl   $0x0,-0x14024(%rbp)
movl   $0x0,-0x1403c(%rbp)
movl   $0x0,-0x14040(%rbp)
cmpq   $0x0,-0x10(%rbp)
je     11ee <input_sound+0x4e>
mov    -0x10(%rbp),%rax
mov    %rax,-0x14048(%rbp)
jmp    1201 <input_sound+0x61>
lea    0xe1b(%rip),%rax
mov    %rax,-0x14048(%rbp)
jmp    1201 <input_sound+0x61>
mov    -0x14048(%rbp),%rdi
mov    0x2dd1(%rip),%rax
mov    (%rax),%esi
call   10a0 <open@plt>
mov    %eax,-0x18(%rbp)
cmp    $0x0,%eax
jge    1238 <input_sound+0x98>
lea    0xdf0(%rip),%rdi
call   10b0 <perror@plt>
mov    $0xa,%edi
call   10c0 <exit@plt>
mov    0x2d91(%rip),%rax
mov    (%rax),%eax
mov    %eax,-0x14(%rbp)
mov    -0x18(%rbp),%edi
mov    0x2d62(%rip),%rax
mov    (%rax),%esi
lea    -0x14(%rbp),%rdx
call   1040 <ioctl@plt>
cmp    $0xffffffff,%eax
jne    1278 <input_sound+0xd8>
lea    0xdb5(%rip),%rdi
call   10b0 <perror@plt>
mov    $0xa,%edi
call   10c0 <exit@plt>
mov    -0x14(%rbp),%eax
mov    0x2d4e(%rip),%rcx
cmp    (%rcx),%eax
je     1301 <input_sound+0x161>
movl   $0x1,-0x1403c(%rbp)
mov    0x2cfd(%rip),%rax
mov    (%rax),%eax
mov    %eax,-0x14(%rbp)
mov    -0x18(%rbp),%edi
mov    0x2d06(%rip),%rax
mov    (%rax),%esi
lea    -0x14(%rbp),%rdx
call   1040 <ioctl@plt>
cmp    $0xffffffff,%eax
jne    12d4 <input_sound+0x134>
lea    0xd59(%rip),%rdi
call   10b0 <perror@plt>
mov    $0xa,%edi
call   10c0 <exit@plt>
mov    -0x14(%rbp),%eax
mov    0x2cba(%rip),%rcx
cmp    (%rcx),%eax
je     12fc <input_sound+0x15c>
lea    0xd31(%rip),%rdi
call   10b0 <perror@plt>
mov    $0xa,%edi
call   10c0 <exit@plt>
jmp    1301 <input_sound+0x161>
movl   $0x0,-0x14(%rbp)
mov    -0x18(%rbp),%edi
mov    0x2cd6(%rip),%rax
mov    (%rax),%esi
lea    -0x14(%rbp),%rdx
call   1040 <ioctl@plt>
cmp    $0xffffffff,%eax
jne    133c <input_sound+0x19c>
lea    0xd0a(%rip),%rdi
call   10b0 <perror@plt>
mov    $0xa,%edi
call   10c0 <exit@plt>
cmpl   $0x1,-0x14(%rbp)
jne    136c <input_sound+0x1cc>
mov    0x2c73(%rip),%rax
mov    (%rax),%edi
lea    0xcfa(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
movl   $0x1,-0x14040(%rbp)
jmp    139c <input_sound+0x1fc>
cmpl   $0x0,-0x14(%rbp)
je     1397 <input_sound+0x1f7>
mov    0x2c43(%rip),%rax
mov    (%rax),%edi
lea    0xd11(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    $0xa,%edi
call   10c0 <exit@plt>
jmp    139c <input_sound+0x1fc>
mov    -0x4(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x18(%rbp),%edi
mov    0x2c1c(%rip),%rax
mov    (%rax),%esi
lea    -0x14(%rbp),%rdx
call   1040 <ioctl@plt>
cmp    $0xffffffff,%eax
jne    13d6 <input_sound+0x236>
lea    0xd04(%rip),%rdi
call   10b0 <perror@plt>
mov    $0xa,%edi
call   10c0 <exit@plt>
mov    -0x14(%rbp),%edi
sub    -0x4(%rbp),%edi
call   1030 <abs@plt>
imul   $0xa,%eax,%eax
cmp    -0x4(%rbp),%eax
jbe    1403 <input_sound+0x263>
lea    0xcd7(%rip),%rdi
call   10b0 <perror@plt>
mov    $0xa,%edi
call   10c0 <exit@plt>
mov    -0x14(%rbp),%eax
cmp    -0x4(%rbp),%eax
je     142c <input_sound+0x28c>
mov    0x2baa(%rip),%rax
mov    (%rax),%edi
mov    -0x14(%rbp),%edx
mov    -0x4(%rbp),%ecx
lea    0xcbe(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
jmp    1431 <input_sound+0x291>
cmpl   $0x0,-0x1403c(%rbp)
je     15cf <input_sound+0x42f>
mov    -0x18(%rbp),%edi
lea    -0x4018(%rbp),%rsi
mov    %rsi,-0x14038(%rbp)
mov    $0x2000,%edx
mov    $0x0,%al
call   1060 <read@plt>
mov    %eax,-0x14028(%rbp)
cmpl   $0x0,-0x14028(%rbp)
jge    149e <input_sound+0x2fe>
mov    0x2b43(%rip),%rax
mov    (%rax),%rax
mov    0x2b21(%rip),%rcx
cmp    (%rcx),%rax
je     149e <input_sound+0x2fe>
lea    0xc80(%rip),%rdi
call   10b0 <perror@plt>
mov    $0x4,%edi
call   10c0 <exit@plt>
cmpl   $0x0,-0x14028(%rbp)
jne    14b0 <input_sound+0x310>
jmp    17ef <input_sound+0x64f>
cmpl   $0x0,-0x14028(%rbp)
jle    15ca <input_sound+0x42a>
jmp    14c2 <input_sound+0x322>
movslq -0x14028(%rbp),%rax
cmp    $0x1,%rax
jb     153a <input_sound+0x39a>
mov    -0x14038(%rbp),%rax
movzbl (%rax),%eax
sub    $0x80,%eax
cvtsi2sd %eax,%xmm0
movsd  0xb1a(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x14024(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x14024(%rbp)
mov    %eax,%eax
movss  %xmm0,-0x14020(%rbp,%rax,4)
fe ff
movslq -0x14028(%rbp),%rax
sub    $0x1,%rax
mov    %eax,-0x14028(%rbp)
mov    -0x14030(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x14030(%rbp)
jmp    14c2 <input_sound+0x322>
cmpl   $0x0,-0x14028(%rbp)
je     155e <input_sound+0x3be>
mov    0x2a72(%rip),%rax
mov    (%rax),%edi
lea    0xbbd(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x14024(%rbp),%eax
cmp    -0x8(%rbp),%eax
jbe    15c5 <input_sound+0x425>
lea    -0x14020(%rbp),%rdi
mov    -0x14024(%rbp),%esi
sub    -0x8(%rbp),%esi
call   1080 <process_buffer@plt>
lea    -0x14020(%rbp),%rdi
lea    -0x14020(%rbp),%rsi
mov    -0x14024(%rbp),%eax
shl    $0x2,%rax
add    %rax,%rsi
mov    -0x8(%rbp),%eax
mov    %eax,%ecx
xor    %eax,%eax
sub    %rcx,%rax
shl    $0x2,%rax
add    %rax,%rsi
mov    -0x8(%rbp),%eax
shl    $0x2,%rax
mov    %eax,%edx
call   1090 <memmove@plt>
mov    -0x8(%rbp),%eax
mov    %eax,-0x14024(%rbp)
jmp    15ca <input_sound+0x42a>
jmp    17ea <input_sound+0x64a>
mov    -0x18(%rbp),%edi
lea    -0x4018(%rbp),%rsi
mov    %rsi,-0x14030(%rbp)
mov    $0x4000,%edx
mov    $0x0,%al
call   1060 <read@plt>
mov    %eax,-0x14028(%rbp)
cmpl   $0x0,-0x14028(%rbp)
jge    162f <input_sound+0x48f>
mov    0x29b2(%rip),%rax
mov    (%rax),%rax
mov    0x2990(%rip),%rcx
cmp    (%rcx),%rax
je     162f <input_sound+0x48f>
lea    0xaef(%rip),%rdi
call   10b0 <perror@plt>
mov    $0x4,%edi
call   10c0 <exit@plt>
cmpl   $0x0,-0x14028(%rbp)
jne    1641 <input_sound+0x4a1>
jmp    17ef <input_sound+0x64f>
cmpl   $0x0,-0x14028(%rbp)
jle    17e5 <input_sound+0x645>
cmpl   $0x0,-0x14040(%rbp)
je     16d8 <input_sound+0x538>
jmp    1660 <input_sound+0x4c0>
movslq -0x14028(%rbp),%rax
cmp    $0x2,%rax
jb     16d3 <input_sound+0x533>
mov    -0x14030(%rbp),%rax
movswl (%rax),%eax
cvtsi2sd %eax,%xmm0
movsd  0x979(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x14024(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x14024(%rbp)
mov    %eax,%eax
movss  %xmm0,-0x14020(%rbp,%rax,4)
fe ff
movslq -0x14028(%rbp),%rax
sub    $0x4,%rax
mov    %eax,-0x14028(%rbp)
mov    -0x14030(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x14030(%rbp)
jmp    1660 <input_sound+0x4c0>
jmp    1755 <input_sound+0x5b5>
jmp    16dd <input_sound+0x53d>
movslq -0x14028(%rbp),%rax
cmp    $0x2,%rax
jb     1750 <input_sound+0x5b0>
mov    -0x14030(%rbp),%rax
movswl (%rax),%eax
cvtsi2sd %eax,%xmm0
movsd  0x8fc(%rip),%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x14024(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x14024(%rbp)
mov    %eax,%eax
movss  %xmm0,-0x14020(%rbp,%rax,4)
fe ff
movslq -0x14028(%rbp),%rax
sub    $0x2,%rax
mov    %eax,-0x14028(%rbp)
mov    -0x14030(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x14030(%rbp)
jmp    16dd <input_sound+0x53d>
jmp    1755 <input_sound+0x5b5>
cmpl   $0x0,-0x14028(%rbp)
je     1779 <input_sound+0x5d9>
mov    0x2857(%rip),%rax
mov    (%rax),%edi
lea    0x9a2(%rip),%rsi
mov    $0x0,%al
call   1070 <fprintf@plt>
mov    -0x14024(%rbp),%eax
cmp    -0x8(%rbp),%eax
jbe    17e0 <input_sound+0x640>
lea    -0x14020(%rbp),%rdi
mov    -0x14024(%rbp),%esi
sub    -0x8(%rbp),%esi
call   1080 <process_buffer@plt>
lea    -0x14020(%rbp),%rdi
lea    -0x14020(%rbp),%rsi
mov    -0x14024(%rbp),%eax
shl    $0x2,%rax
add    %rax,%rsi
mov    -0x8(%rbp),%eax
mov    %eax,%ecx
xor    %eax,%eax
sub    %rcx,%rax
shl    $0x2,%rax
add    %rax,%rsi
mov    -0x8(%rbp),%eax
shl    $0x2,%rax
mov    %eax,%edx
call   1090 <memmove@plt>
mov    -0x8(%rbp),%eax
mov    %eax,-0x14024(%rbp)
jmp    17e5 <input_sound+0x645>
jmp    17ea <input_sound+0x64a>
jmp    1431 <input_sound+0x291>
mov    -0x18(%rbp),%edi
call   1050 <close@plt>
add    $0x14050,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<input_sound>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x14028,%rsp
mov    %rsi,0x8(%rsp)
mov    %edi,%r15d
test   %rdx,%rdx
lea    0xe6d(%rip),%rdi
cmovne %rdx,%rdi
mov    0x2e22(%rip),%rax
mov    (%rax),%esi
call   1090 <open@plt>
test   %eax,%eax
js     1787 <input_sound+0x5f7>
mov    %eax,%ebp
mov    0x2dfa(%rip),%rbx
mov    (%rbx),%eax
mov    %eax,0x4(%rsp)
mov    0x2dcd(%rip),%r14
mov    (%r14),%esi
lea    0x4(%rsp),%rdx
mov    %ebp,%edi
call   1030 <ioctl@plt>
cmp    $0xffffffff,%eax
je     1775 <input_sound+0x5e5>
mov    0x4(%rsp),%r12d
mov    (%rbx),%r13d
cmp    %r13d,%r12d
je     1239 <input_sound+0xa9>
mov    0x2d89(%rip),%rbx
mov    (%rbx),%eax
mov    %eax,0x4(%rsp)
mov    (%r14),%esi
lea    0x4(%rsp),%rdx
mov    %ebp,%edi
call   1030 <ioctl@plt>
cmp    $0xffffffff,%eax
je     1775 <input_sound+0x5e5>
mov    0x4(%rsp),%eax
cmp    (%rbx),%eax
jne    1775 <input_sound+0x5e5>
movl   $0x0,0x4(%rsp)
mov    0x2da0(%rip),%rax
mov    (%rax),%esi
lea    0x4(%rsp),%rdx
mov    %ebp,%edi
call   1030 <ioctl@plt>
cmp    $0xffffffff,%eax
je     1790 <input_sound+0x600>
mov    0x4(%rsp),%r14d
cmp    $0x1,%r14d
mov    0x8(%rsp),%rbx
jne    1288 <input_sound+0xf8>
mov    0x2d4a(%rip),%rax
mov    (%rax),%edi
lea    0xde1(%rip),%rsi
xor    %eax,%eax
call   1060 <fprintf@plt>
jmp    1291 <input_sound+0x101>
test   %r14d,%r14d
jne    17a6 <input_sound+0x616>
mov    %r15d,0x4(%rsp)
mov    0x2d2b(%rip),%rax
mov    (%rax),%esi
lea    0x4(%rsp),%rdx
mov    %ebp,%edi
call   1030 <ioctl@plt>
cmp    $0xffffffff,%eax
je     177e <input_sound+0x5ee>
mov    0x4(%rsp),%edx
mov    %edx,%eax
sub    %r15d,%eax
mov    %eax,%ecx
neg    %ecx
cmovs  %eax,%ecx
add    %ecx,%ecx
lea    (%rcx,%rcx,4),%eax
cmp    %r15d,%eax
ja     177e <input_sound+0x5ee>
mov    %r14d,0x14(%rsp)
cmp    %r15d,%edx
je     12f6 <input_sound+0x166>
mov    0x2cdd(%rip),%rax
mov    (%rax),%edi
lea    0xe07(%rip),%rsi
mov    %r15d,%ecx
xor    %eax,%eax
call   1060 <fprintf@plt>
mov    %ebx,%eax
neg    %rax
mov    %rax,0x18(%rsp)
lea    0x0(,%rbx,4),%eax
mov    %eax,0x10(%rsp)
lea    0x20(%rsp),%r15
xor    %r14d,%r14d
jmp    1353 <input_sound+0x1c3>
cs nopw 0x0(%rax,%rax,1)
nop
mov    $0x2000,%edx
mov    %ebp,%edi
mov    %r15,%rsi
xor    %eax,%eax
call   1050 <read@plt>
test   %eax,%eax
jns    13d3 <input_sound+0x243>
mov    0x2c78(%rip),%rax
mov    (%rax),%rax
mov    0x2c56(%rip),%rcx
cmp    (%rcx),%rax
jne    175f <input_sound+0x5cf>
cmp    %r13d,%r12d
jne    1320 <input_sound+0x190>
mov    $0x4000,%edx
mov    %ebp,%edi
mov    %r15,%rsi
xor    %eax,%eax
call   1050 <read@plt>
test   %eax,%eax
js     1339 <input_sound+0x1a9>
movsd  0xc93(%rip),%xmm3
je     1746 <input_sound+0x5b6>
cmpl   $0x1,0x14(%rsp)
jne    1551 <input_sound+0x3c1>
cmp    $0x1,%eax
je     16e2 <input_sound+0x552>
mov    %r15,%rcx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movswl (%rcx),%edx
xorps  %xmm0,%xmm0
cvtsi2sd %edx,%xmm0
mulsd  %xmm3,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    %r14d,%edx
add    $0x1,%r14d
movss  %xmm0,0x4020(%rsp,%rdx,4)
add    $0xfffffffc,%eax
add    $0x4,%rcx
cmp    $0x1,%eax
ja     13a0 <input_sound+0x210>
jmp    16de <input_sound+0x54e>
je     1746 <input_sound+0x5b6>
movzbl 0x20(%rsp),%ecx
add    $0xffffff80,%ecx
xorps  %xmm0,%xmm0
cvtsi2sd %ecx,%xmm0
mulsd  0xc10(%rip),%xmm0
cvtsd2ss %xmm0,%xmm0
cmp    $0x8,%eax
jb     14ce <input_sound+0x33e>
lea    -0x1(%rax),%ecx
add    %r14d,%ecx
jb     14ce <input_sound+0x33e>
mov    %eax,%r8d
and    $0xfffffff8,%r8d
movaps %xmm0,%xmm1
shufps $0x0,%xmm0,%xmm1
lea    -0x8(%r8),%ecx
mov    %ecx,%edi
shr    $0x3,%edi
add    $0x1,%edi
mov    %edi,%edx
and    $0x3,%edx
xor    %esi,%esi
cmp    $0x18,%ecx
jb     1496 <input_sound+0x306>
and    $0xfffffffc,%edi
xor    %esi,%esi
mov    %r14d,%ecx
nopw   0x0(%rax,%rax,1)
mov    %ecx,%ebx
movups %xmm1,0x4020(%rsp,%rbx,4)
movups %xmm1,0x4030(%rsp,%rbx,4)
lea    0x8(%rcx),%ebx
movups %xmm1,0x4020(%rsp,%rbx,4)
movups %xmm1,0x4030(%rsp,%rbx,4)
lea    0x10(%rcx),%ebx
movups %xmm1,0x4020(%rsp,%rbx,4)
movups %xmm1,0x4030(%rsp,%rbx,4)
lea    0x18(%rcx),%ebx
movups %xmm1,0x4020(%rsp,%rbx,4)
movups %xmm1,0x4030(%rsp,%rbx,4)
add    $0x20,%esi
add    $0x20,%ecx
add    $0xfffffffc,%edi
jne    1440 <input_sound+0x2b0>
test   %edx,%edx
je     14ba <input_sound+0x32a>
add    %r14d,%esi
nopl   (%rax)
mov    %esi,%ecx
movups %xmm1,0x4020(%rsp,%rcx,4)
movups %xmm1,0x4030(%rsp,%rcx,4)
add    $0x8,%esi
add    $0xffffffff,%edx
jne    14a0 <input_sound+0x310>
add    %r8d,%r14d
cmp    %r8d,%eax
mov    0x8(%rsp),%rbx
je     16f9 <input_sound+0x569>
and    $0x7,%eax
lea    -0x1(%rax),%ecx
mov    %eax,%esi
and    $0x3,%esi
je     14f9 <input_sound+0x369>
xor    %edx,%edx
nopw   0x0(%rax,%rax,1)
lea    (%r14,%rdx,1),%edi
movss  %xmm0,0x4020(%rsp,%rdi,4)
add    $0x1,%edx
cmp    %edx,%esi
jne    14e0 <input_sound+0x350>
add    %edx,%r14d
sub    %edx,%eax
cmp    $0x3,%ecx
jb     16f9 <input_sound+0x569>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
lea    0x1(%r14),%ecx
mov    %r14d,%edx
movss  %xmm0,0x4020(%rsp,%rdx,4)
lea    0x2(%r14),%edx
movss  %xmm0,0x4020(%rsp,%rcx,4)
lea    0x3(%r14),%ecx
movss  %xmm0,0x4020(%rsp,%rdx,4)
add    $0x4,%r14d
movss  %xmm0,0x4020(%rsp,%rcx,4)
add    $0xfffffffc,%eax
jne    1510 <input_sound+0x380>
jmp    16f9 <input_sound+0x569>
cmp    $0x1,%eax
je     16e2 <input_sound+0x552>
lea    -0x2(%rax),%ecx
cmp    $0x6,%ecx
jae    156a <input_sound+0x3da>
mov    %r15,%rcx
jmp    16b0 <input_sound+0x520>
shr    %ecx
mov    %r14d,%edx
add    %ecx,%edx
jae    157b <input_sound+0x3eb>
mov    %r15,%rcx
jmp    16b0 <input_sound+0x520>
add    $0x1,%ecx
mov    %ecx,%r8d
and    $0xfffffffc,%r8d
lea    -0x4(%r8),%rdx
mov    %rdx,%r9
shr    $0x2,%r9
add    $0x1,%r9
test   %rdx,%rdx
movapd 0xa71(%rip),%xmm4
je     164a <input_sound+0x4ba>
mov    %r9,%rsi
and    $0xfffffffffffffffe,%rsi
mov    %r14d,%edx
xor    %edi,%edi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movq   0x20(%rsp,%rdi,2),%xmm0
punpcklwd %xmm0,%xmm0
psrad  $0x10,%xmm0
cvtdq2pd %xmm0,%xmm1
pshufd $0xee,%xmm0,%xmm0
cvtdq2pd %xmm0,%xmm0
mulpd  %xmm4,%xmm0
mulpd  %xmm4,%xmm1
cvtpd2ps %xmm1,%xmm1
cvtpd2ps %xmm0,%xmm0
unpcklpd %xmm0,%xmm1
mov    %edx,%ebx
movq   0x28(%rsp,%rdi,2),%xmm0
punpcklwd %xmm0,%xmm0
psrad  $0x10,%xmm0
cvtdq2pd %xmm0,%xmm2
movupd %xmm1,0x4020(%rsp,%rbx,4)
pshufd $0xee,%xmm0,%xmm0
cvtdq2pd %xmm0,%xmm0
lea    0x4(%rdx),%ebx
mulpd  %xmm4,%xmm2
cvtpd2ps %xmm2,%xmm1
mulpd  %xmm4,%xmm0
cvtpd2ps %xmm0,%xmm0
unpcklpd %xmm0,%xmm1
movupd %xmm1,0x4020(%rsp,%rbx,4)
add    $0x8,%rdi
add    $0x8,%edx
add    $0xfffffffffffffffe,%rsi
jne    15c0 <input_sound+0x430>
jmp    164c <input_sound+0x4bc>
xor    %edi,%edi
lea    (%r8,%r8,1),%edx
test   $0x1,%r9b
je     1693 <input_sound+0x503>
movq   0x20(%rsp,%rdi,2),%xmm0
punpcklwd %xmm0,%xmm0
psrad  $0x10,%xmm0
cvtdq2pd %xmm0,%xmm1
lea    (%r14,%rdi,1),%esi
pshufd $0xee,%xmm0,%xmm0
cvtdq2pd %xmm0,%xmm0
mulpd  %xmm4,%xmm0
mulpd  %xmm4,%xmm1
cvtpd2ps %xmm1,%xmm1
cvtpd2ps %xmm0,%xmm0
unpcklpd %xmm0,%xmm1
movupd %xmm1,0x4020(%rsp,%rsi,4)
add    %r8d,%r14d
sub    %edx,%eax
cmp    %rcx,%r8
mov    0x8(%rsp),%rbx
je     16de <input_sound+0x54e>
lea    (%rsp,%r8,2),%rcx
add    $0x20,%rcx
nopw   0x0(%rax,%rax,1)
movswl (%rcx),%edx
xorps  %xmm0,%xmm0
cvtsi2sd %edx,%xmm0
mulsd  %xmm3,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    %r14d,%edx
add    $0x1,%r14d
movss  %xmm0,0x4020(%rsp,%rdx,4)
add    $0xfffffffe,%eax
add    $0x2,%rcx
cmp    $0x1,%eax
ja     16b0 <input_sound+0x520>
test   %eax,%eax
je     16f9 <input_sound+0x569>
mov    0x28d7(%rip),%rax
mov    (%rax),%edi
lea    0xa32(%rip),%rsi
xor    %eax,%eax
call   1060 <fprintf@plt>
cmp    %ebx,%r14d
jbe    1353 <input_sound+0x1c3>
mov    %r14d,%esi
sub    %ebx,%esi
lea    0x4020(%rsp),%rbx
mov    %rbx,%rdi
call   1070 <process_buffer@plt>
mov    %r14d,%eax
lea    (%rsp,%rax,4),%rax
add    $0x4020,%rax
mov    0x18(%rsp),%rcx
lea    (%rax,%rcx,4),%rsi
mov    %rbx,%rdi
mov    0x8(%rsp),%rbx
mov    0x10(%rsp),%edx
call   1080 <memmove@plt>
mov    %ebx,%r14d
jmp    1353 <input_sound+0x1c3>
mov    %ebp,%edi
call   1040 <close@plt>
add    $0x14028,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0x9b9(%rip),%rdi
call   10a0 <perror@plt>
mov    $0x4,%edi
call   10b0 <exit@plt>
lea    0x8b2(%rip),%rdi
jmp    1797 <input_sound+0x607>
lea    0x956(%rip),%rdi
jmp    1797 <input_sound+0x607>
lea    0x89b(%rip),%rdi
jmp    1797 <input_sound+0x607>
lea    0x8b0(%rip),%rdi
call   10a0 <perror@plt>
mov    $0xa,%edi
call   10b0 <exit@plt>
mov    0x2813(%rip),%rax
mov    (%rax),%edi
lea    0x8f1(%rip),%rsi
xor    %eax,%eax
call   1060 <fprintf@plt>
mov    $0xa,%edi
call   10b0 <exit@plt>

LLVM IR (-O0):
%union.anon = type { [8192 x i16] }
@.str = [9 x i8] c"/dev/dsp\00"
@O_RDONLY = global i32 0
@.str.1 = [5 x i8] c"open\00"
@AFMT_S16_LE = global i32 0
@SNDCTL_DSP_SETFMT = global i32 0
@.str.2 = [25 x i8] c"ioctl: SNDCTL_DSP_SETFMT\00"
@AFMT_U8 = global i32 0
@SNDCTL_DSP_STEREO = global i32 0
@.str.3 = [25 x i8] c"ioctl: SNDCTL_DSP_STEREO\00"
@stderr = global i32 0
@.str.4 = [71 x i8] c"soundif: Warning, cannot set the channel number to 1, will use stereo\0A\00"
@.str.5 = [52 x i8] c"soundif: Error, cannot set the channel number to 1\0A\00"
@SNDCTL_DSP_SPEED = global i32 0
@.str.6 = [24 x i8] c"ioctl: SNDCTL_DSP_SPEED\00"
@.str.7 = [44 x i8] c"Warning: Sampling rate is %u, requested %u\0A\00"
@errno = global i64 0
@EAGAIN = global i64 0
@.str.8 = [5 x i8] c"read\00"
@.str.9 = [44 x i8] c"warning: noninteger number of samples read\0A\00"
define void @input_sound(i32 %0, i32 %1, i8* %2) {
%4 = alloca i32
%5 = alloca i32
%6 = alloca i8*
%7 = alloca i32
%8 = alloca i32
%9 = alloca %union.anon
%10 = alloca [16384 x float]
%11 = alloca i32
%12 = alloca i32
%13 = alloca i16*
%14 = alloca i8*
%15 = alloca i32
%16 = alloca i32
store i32 %0, i32* %4
store i32 %1, i32* %5
store i8* %2, i8** %6
store i32 0, i32* %11
store i32 0, i32* %15
store i32 0, i32* %16
%17 = load i8*, i8** %6
%18 = icmp ne i8* %17, null
br i1 %18, label %19, label %21
19: ; preds = %3
%20 = load i8*, i8** %6
br label %22
21: ; preds = %3
br label %22
22: ; preds = %21, %19
%23 = phi i8* [ %20, %19 ], [ getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i64 0, i64 0), %21 ]
%24 = load i32, i32* @O_RDONLY
%25 = call i32 @open(i8* %23, i32 %24)
store i32 %25, i32* %8
%26 = icmp slt i32 %25, 0
br i1 %26, label %27, label %30
27: ; preds = %22
%28 = call i32 @perror(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0))
%29 = call i32 @exit(i32 10)
unreachable
30: ; preds = %22
%31 = load i32, i32* @AFMT_S16_LE
store i32 %31, i32* %7
%32 = load i32, i32* %8
%33 = load i32, i32* @SNDCTL_DSP_SETFMT
%34 = call i32 @ioctl(i32 %32, i32 %33, i32* %7)
%35 = icmp eq i32 %34, -1
br i1 %35, label %36, label %39
36: ; preds = %30
%37 = call i32 @perror(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i64 0, i64 0))
%38 = call i32 @exit(i32 10)
unreachable
39: ; preds = %30
%40 = load i32, i32* %7
%41 = load i32, i32* @AFMT_S16_LE
%42 = icmp ne i32 %40, %41
br i1 %42, label %43, label %60
43: ; preds = %39
store i32 1, i32* %15
%44 = load i32, i32* @AFMT_U8
store i32 %44, i32* %7
%45 = load i32, i32* %8
%46 = load i32, i32* @SNDCTL_DSP_SETFMT
%47 = call i32 @ioctl(i32 %45, i32 %46, i32* %7)
%48 = icmp eq i32 %47, -1
br i1 %48, label %49, label %52
49: ; preds = %43
%50 = call i32 @perror(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i64 0, i64 0))
%51 = call i32 @exit(i32 10)
unreachable
52: ; preds = %43
%53 = load i32, i32* %7
%54 = load i32, i32* @AFMT_U8
%55 = icmp ne i32 %53, %54
br i1 %55, label %56, label %59
56: ; preds = %52
%57 = call i32 @perror(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i64 0, i64 0))
%58 = call i32 @exit(i32 10)
unreachable
59: ; preds = %52
br label %60
60: ; preds = %59, %39
store i32 0, i32* %7
%61 = load i32, i32* %8
%62 = load i32, i32* @SNDCTL_DSP_STEREO
%63 = call i32 @ioctl(i32 %61, i32 %62, i32* %7)
%64 = icmp eq i32 %63, -1
br i1 %64, label %65, label %68
65: ; preds = %60
%66 = call i32 @perror(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.3, i64 0, i64 0))
%67 = call i32 @exit(i32 10)
unreachable
68: ; preds = %60
%69 = load i32, i32* %7
%70 = icmp eq i32 %69, 1
br i1 %70, label %71, label %74
71: ; preds = %68
%72 = load i32, i32* @stderr
%73 = call i32 (i32, i8*, ...) @fprintf(i32 %72, i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.4, i64 0, i64 0))
store i32 1, i32* %16
br label %82
74: ; preds = %68
%75 = load i32, i32* %7
%76 = icmp ne i32 %75, 0
br i1 %76, label %77, label %81
77: ; preds = %74
%78 = load i32, i32* @stderr
%79 = call i32 (i32, i8*, ...) @fprintf(i32 %78, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.5, i64 0, i64 0))
%80 = call i32 @exit(i32 10)
unreachable
81: ; preds = %74
br label %82
82: ; preds = %81, %71
%83 = load i32, i32* %4
store i32 %83, i32* %7
%84 = load i32, i32* %8
%85 = load i32, i32* @SNDCTL_DSP_SPEED
%86 = call i32 @ioctl(i32 %84, i32 %85, i32* %7)
%87 = icmp eq i32 %86, -1
br i1 %87, label %88, label %91
88: ; preds = %82
%89 = call i32 @perror(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0))
%90 = call i32 @exit(i32 10)
unreachable
91: ; preds = %82
%92 = load i32, i32* %7
%93 = load i32, i32* %4
%94 = sub i32 %92, %93
%95 = call i32 @abs(i32 %94)
%96 = mul nsw i32 10, %95
%97 = load i32, i32* %4
%98 = icmp ugt i32 %96, %97
br i1 %98, label %99, label %102
99: ; preds = %91
%100 = call i32 @perror(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0))
%101 = call i32 @exit(i32 10)
unreachable
102: ; preds = %91
%103 = load i32, i32* %7
%104 = load i32, i32* %4
%105 = icmp ne i32 %103, %104
br i1 %105, label %106, label %111
106: ; preds = %102
%107 = load i32, i32* @stderr
%108 = load i32, i32* %7
%109 = load i32, i32* %4
%110 = call i32 (i32, i8*, ...) @fprintf(i32 %107, i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.7, i64 0, i64 0), i32 %108, i32 %109)
br label %111
111: ; preds = %106, %102
br label %112
112: ; preds = %298, %111
%113 = load i32, i32* %15
%114 = icmp ne i32 %113, 0
br i1 %114, label %115, label %193
115: ; preds = %112
%116 = load i32, i32* %8
%117 = bitcast %union.anon* %9 to [8192 x i8]*
%118 = getelementptr inbounds [8192 x i8], [8192 x i8]* %117, i64 0, i64 0
store i8* %118, i8** %14
%119 = call i32 (i32, ...) @read(i32 %116, i8* %118, i64 8192)
store i32 %119, i32* %12
%120 = load i32, i32* %12
%121 = icmp slt i32 %120, 0
br i1 %121, label %122, label %129
122: ; preds = %115
%123 = load i64, i64* @errno
%124 = load i64, i64* @EAGAIN
%125 = icmp ne i64 %123, %124
br i1 %125, label %126, label %129
126: ; preds = %122
%127 = call i32 @perror(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0))
%128 = call i32 @exit(i32 4)
unreachable
129: ; preds = %122, %115
%130 = load i32, i32* %12
%131 = icmp ne i32 %130, 0
br i1 %131, label %133, label %132
132: ; preds = %129
br label %299
133: ; preds = %129
%134 = load i32, i32* %12
%135 = icmp sgt i32 %134, 0
br i1 %135, label %136, label %192
136: ; preds = %133
br label %137
137: ; preds = %153, %136
%138 = load i32, i32* %12
%139 = sext i32 %138 to i64
%140 = icmp uge i64 %139, 1
br i1 %140, label %141, label %160
141: ; preds = %137
%142 = load i8*, i8** %14
%143 = load i8, i8* %142
%144 = zext i8 %143 to i32
%145 = sub nsw i32 %144, 128
%146 = sitofp i32 %145 to double
%147 = fmul double %146, 7.812500e-03
%148 = fptrunc double %147 to float
%149 = load i32, i32* %11
%150 = add i32 %149, 1
store i32 %150, i32* %11
%151 = zext i32 %149 to i64
%152 = getelementptr inbounds [16384 x float], [16384 x float]* %10, i64 0, i64 %151
store float %148, float* %152
br label %153
153: ; preds = %141
%154 = load i32, i32* %12
%155 = sext i32 %154 to i64
%156 = sub i64 %155, 1
%157 = trunc i64 %156 to i32
store i32 %157, i32* %12
%158 = load i16*, i16** %13
%159 = getelementptr inbounds i16, i16* %158, i32 1
store i16* %159, i16** %13
br label %137
160: ; preds = %137
%161 = load i32, i32* %12
%162 = icmp ne i32 %161, 0
br i1 %162, label %163, label %166
163: ; preds = %160
%164 = load i32, i32* @stderr
%165 = call i32 (i32, i8*, ...) @fprintf(i32 %164, i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.9, i64 0, i64 0))
br label %166
166: ; preds = %163, %160
%167 = load i32, i32* %11
%168 = load i32, i32* %5
%169 = icmp ugt i32 %167, %168
br i1 %169, label %170, label %191
170: ; preds = %166
%171 = getelementptr inbounds [16384 x float], [16384 x float]* %10, i64 0, i64 0
%172 = load i32, i32* %11
%173 = load i32, i32* %5
%174 = sub i32 %172, %173
%175 = call i32 @process_buffer(float* %171, i32 %174)
%176 = getelementptr inbounds [16384 x float], [16384 x float]* %10, i64 0, i64 0
%177 = getelementptr inbounds [16384 x float], [16384 x float]* %10, i64 0, i64 0
%178 = load i32, i32* %11
%179 = zext i32 %178 to i64
%180 = getelementptr inbounds float, float* %177, i64 %179
%181 = load i32, i32* %5
%182 = zext i32 %181 to i64
%183 = sub i64 0, %182
%184 = getelementptr inbounds float, float* %180, i64 %183
%185 = load i32, i32* %5
%186 = zext i32 %185 to i64
%187 = mul i64 %186, 4
%188 = trunc i64 %187 to i32
%189 = call i32 @memmove(float* %176, float* %184, i32 %188)
%190 = load i32, i32* %5
store i32 %190, i32* %11
br label %191
191: ; preds = %170, %166
br label %192
192: ; preds = %191, %133
br label %298
193: ; preds = %112
%194 = load i32, i32* %8
%195 = bitcast %union.anon* %9 to [8192 x i16]*
%196 = getelementptr inbounds [8192 x i16], [8192 x i16]* %195, i64 0, i64 0
store i16* %196, i16** %13
%197 = call i32 (i32, ...) @read(i32 %194, i16* %196, i64 16384)
store i32 %197, i32* %12
%198 = load i32, i32* %12
%199 = icmp slt i32 %198, 0
br i1 %199, label %200, label %207
200: ; preds = %193
%201 = load i64, i64* @errno
%202 = load i64, i64* @EAGAIN
%203 = icmp ne i64 %201, %202
br i1 %203, label %204, label %207
204: ; preds = %200
%205 = call i32 @perror(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0))
%206 = call i32 @exit(i32 4)
unreachable
207: ; preds = %200, %193
%208 = load i32, i32* %12
%209 = icmp ne i32 %208, 0
br i1 %209, label %211, label %210
210: ; preds = %207
br label %299
211: ; preds = %207
%212 = load i32, i32* %12
%213 = icmp sgt i32 %212, 0
br i1 %213, label %214, label %297
214: ; preds = %211
%215 = load i32, i32* %16
%216 = icmp ne i32 %215, 0
br i1 %216, label %217, label %241
217: ; preds = %214
br label %218
218: ; preds = %233, %217
%219 = load i32, i32* %12
%220 = sext i32 %219 to i64
%221 = icmp uge i64 %220, 2
br i1 %221, label %222, label %240
222: ; preds = %218
%223 = load i16*, i16** %13
%224 = load i16, i16* %223
%225 = sext i16 %224 to i32
%226 = sitofp i32 %225 to double
%227 = fmul double %226, 0x3F00000000000000
%228 = fptrunc double %227 to float
%229 = load i32, i32* %11
%230 = add i32 %229, 1
store i32 %230, i32* %11
%231 = zext i32 %229 to i64
%232 = getelementptr inbounds [16384 x float], [16384 x float]* %10, i64 0, i64 %231
store float %228, float* %232
br label %233
233: ; preds = %222
%234 = load i32, i32* %12
%235 = sext i32 %234 to i64
%236 = sub i64 %235, 4
%237 = trunc i64 %236 to i32
store i32 %237, i32* %12
%238 = load i16*, i16** %13
%239 = getelementptr inbounds i16, i16* %238, i64 2
store i16* %239, i16** %13
br label %218
240: ; preds = %218
br label %265
241: ; preds = %214
br label %242
242: ; preds = %257, %241
%243 = load i32, i32* %12
%244 = sext i32 %243 to i64
%245 = icmp uge i64 %244, 2
br i1 %245, label %246, label %264
246: ; preds = %242
%247 = load i16*, i16** %13
%248 = load i16, i16* %247
%249 = sext i16 %248 to i32
%250 = sitofp i32 %249 to double
%251 = fmul double %250, 0x3F00000000000000
%252 = fptrunc double %251 to float
%253 = load i32, i32* %11
%254 = add i32 %253, 1
store i32 %254, i32* %11
%255 = zext i32 %253 to i64
%256 = getelementptr inbounds [16384 x float], [16384 x float]* %10, i64 0, i64 %255
store float %252, float* %256
br label %257
257: ; preds = %246
%258 = load i32, i32* %12
%259 = sext i32 %258 to i64
%260 = sub i64 %259, 2
%261 = trunc i64 %260 to i32
store i32 %261, i32* %12
%262 = load i16*, i16** %13
%263 = getelementptr inbounds i16, i16* %262, i32 1
store i16* %263, i16** %13
br label %242
264: ; preds = %242
br label %265
265: ; preds = %264, %240
%266 = load i32, i32* %12
%267 = icmp ne i32 %266, 0
br i1 %267, label %268, label %271
268: ; preds = %265
%269 = load i32, i32* @stderr
%270 = call i32 (i32, i8*, ...) @fprintf(i32 %269, i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.9, i64 0, i64 0))
br label %271
271: ; preds = %268, %265
%272 = load i32, i32* %11
%273 = load i32, i32* %5
%274 = icmp ugt i32 %272, %273
br i1 %274, label %275, label %296
275: ; preds = %271
%276 = getelementptr inbounds [16384 x float], [16384 x float]* %10, i64 0, i64 0
%277 = load i32, i32* %11
%278 = load i32, i32* %5
%279 = sub i32 %277, %278
%280 = call i32 @process_buffer(float* %276, i32 %279)
%281 = getelementptr inbounds [16384 x float], [16384 x float]* %10, i64 0, i64 0
%282 = getelementptr inbounds [16384 x float], [16384 x float]* %10, i64 0, i64 0
%283 = load i32, i32* %11
%284 = zext i32 %283 to i64
%285 = getelementptr inbounds float, float* %282, i64 %284
%286 = load i32, i32* %5
%287 = zext i32 %286 to i64
%288 = sub i64 0, %287
%289 = getelementptr inbounds float, float* %285, i64 %288
%290 = load i32, i32* %5
%291 = zext i32 %290 to i64
%292 = mul i64 %291, 4
%293 = trunc i64 %292 to i32
%294 = call i32 @memmove(float* %281, float* %289, i32 %293)
%295 = load i32, i32* %5
store i32 %295, i32* %11
br label %296
296: ; preds = %275, %271
br label %297
297: ; preds = %296, %211
br label %298
298: ; preds = %297, %192
br label %112
299: ; preds = %210, %132
%300 = load i32, i32* %8
%301 = call i32 @close(i32 %300)
ret void
}

LLVM IR (-O2):
%union.anon = type { [8192 x i16] }
@.str = [9 x i8] c"/dev/dsp\00"
@O_RDONLY = global i32 0
@.str.1 = [5 x i8] c"open\00"
@AFMT_S16_LE = global i32 0
@SNDCTL_DSP_SETFMT = global i32 0
@.str.2 = [25 x i8] c"ioctl: SNDCTL_DSP_SETFMT\00"
@AFMT_U8 = global i32 0
@SNDCTL_DSP_STEREO = global i32 0
@.str.3 = [25 x i8] c"ioctl: SNDCTL_DSP_STEREO\00"
@stderr = global i32 0
@.str.4 = [71 x i8] c"soundif: Warning, cannot set the channel number to 1, will use stereo\0A\00"
@.str.5 = [52 x i8] c"soundif: Error, cannot set the channel number to 1\0A\00"
@SNDCTL_DSP_SPEED = global i32 0
@.str.6 = [24 x i8] c"ioctl: SNDCTL_DSP_SPEED\00"
@.str.7 = [44 x i8] c"Warning: Sampling rate is %u, requested %u\0A\00"
@errno = global i64 0
@EAGAIN = global i64 0
@.str.8 = [5 x i8] c"read\00"
@.str.9 = [44 x i8] c"warning: noninteger number of samples read\0A\00"
define void @input_sound(i32 %0, i32 %1, i8* %2) {
%4 = alloca i32
%5 = alloca %union.anon
%6 = alloca [16384 x float]
%7 = bitcast i32* %4 to i8*
%8 = bitcast %union.anon* %5 to i8*
%9 = bitcast [16384 x float]* %6 to i8*
%10 = icmp eq i8* %2, null
%11 = select i1 %10, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str, i64 0, i64 0), i8* %2
%12 = load i32, i32* @O_RDONLY
%13 = tail call i32 @open(i8* %11, i32 %12)
%14 = icmp slt i32 %13, 0
br i1 %14, label %15, label %18
15: ; preds = %3
%16 = tail call i32 @perror(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0))
%17 = tail call i32 @exit(i32 10)
unreachable
18: ; preds = %3
%19 = load i32, i32* @AFMT_S16_LE
store i32 %19, i32* %4
%20 = load i32, i32* @SNDCTL_DSP_SETFMT
%21 = call i32 @ioctl(i32 %13, i32 %20, i32* %4)
%22 = icmp eq i32 %21, -1
br i1 %22, label %23, label %26
23: ; preds = %18
%24 = call i32 @perror(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i64 0, i64 0))
%25 = call i32 @exit(i32 10)
unreachable
26: ; preds = %18
%27 = load i32, i32* %4
%28 = load i32, i32* @AFMT_S16_LE
%29 = icmp eq i32 %27, %28
br i1 %29, label %45, label %30
30: ; preds = %26
%31 = load i32, i32* @AFMT_U8
store i32 %31, i32* %4
%32 = load i32, i32* @SNDCTL_DSP_SETFMT
%33 = call i32 @ioctl(i32 %13, i32 %32, i32* %4)
%34 = icmp eq i32 %33, -1
br i1 %34, label %35, label %38
35: ; preds = %30
%36 = call i32 @perror(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i64 0, i64 0))
%37 = call i32 @exit(i32 10)
unreachable
38: ; preds = %30
%39 = load i32, i32* %4
%40 = load i32, i32* @AFMT_U8
%41 = icmp eq i32 %39, %40
br i1 %41, label %45, label %42
42: ; preds = %38
%43 = call i32 @perror(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.2, i64 0, i64 0))
%44 = call i32 @exit(i32 10)
unreachable
45: ; preds = %38, %26
store i32 0, i32* %4
%46 = load i32, i32* @SNDCTL_DSP_STEREO
%47 = call i32 @ioctl(i32 %13, i32 %46, i32* %4)
%48 = icmp eq i32 %47, -1
br i1 %48, label %49, label %52
49: ; preds = %45
%50 = call i32 @perror(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.3, i64 0, i64 0))
%51 = call i32 @exit(i32 10)
unreachable
52: ; preds = %45
%53 = load i32, i32* %4
%54 = icmp eq i32 %53, 1
br i1 %54, label %55, label %58
55: ; preds = %52
%56 = load i32, i32* @stderr
%57 = call i32 (i32, i8*, ...) @fprintf(i32 %56, i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.4, i64 0, i64 0))
br label %64
58: ; preds = %52
%59 = icmp eq i32 %53, 0
br i1 %59, label %64, label %60
60: ; preds = %58
%61 = load i32, i32* @stderr
%62 = call i32 (i32, i8*, ...) @fprintf(i32 %61, i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.5, i64 0, i64 0))
%63 = call i32 @exit(i32 10)
unreachable
64: ; preds = %58, %55
store i32 %0, i32* %4
%65 = load i32, i32* @SNDCTL_DSP_SPEED
%66 = call i32 @ioctl(i32 %13, i32 %65, i32* %4)
%67 = icmp eq i32 %66, -1
br i1 %67, label %68, label %71
68: ; preds = %64
%69 = call i32 @perror(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0))
%70 = call i32 @exit(i32 10)
unreachable
71: ; preds = %64
%72 = load i32, i32* %4
%73 = sub i32 %72, %0
%74 = call i32 @llvm.abs.i32(i32 %73, i1 true)
%75 = mul nsw i32 %74, 10
%76 = icmp ugt i32 %75, %0
br i1 %76, label %77, label %80
77: ; preds = %71
%78 = call i32 @perror(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.6, i64 0, i64 0))
%79 = call i32 @exit(i32 10)
unreachable
80: ; preds = %71
%81 = icmp eq i32 %72, %0
br i1 %81, label %85, label %82
82: ; preds = %80
%83 = load i32, i32* @stderr
%84 = call i32 (i32, i8*, ...) @fprintf(i32 %83, i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.7, i64 0, i64 0), i32 %72, i32 %0)
br label %85
85: ; preds = %82, %80
%86 = getelementptr inbounds [16384 x float], [16384 x float]* %6, i64 0, i64 0
%87 = zext i32 %1 to i64
%88 = sub nsw i64 0, %87
%89 = shl i32 %1, 2
%90 = getelementptr inbounds %union.anon, %union.anon* %5, i64 0, i32 0, i64 0
br label %91
91: ; preds = %225, %85
%92 = phi i32 [ 0, %85 ], [ %226, %225 ]
br label %93
93: ; preds = %101, %91
br i1 %29, label %227, label %94
94: ; preds = %93
%95 = call i32 (i32, ...) @read(i32 %13, %union.anon* %5, i64 8192)
%96 = icmp slt i32 %95, 0
br i1 %96, label %97, label %105
97: ; preds = %94
%98 = load i64, i64* @errno
%99 = load i64, i64* @EAGAIN
%100 = icmp eq i64 %98, %99
br i1 %100, label %101, label %102
101: ; preds = %97, %230
br label %93
102: ; preds = %97
%103 = call i32 @perror(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0))
%104 = call i32 @exit(i32 4)
unreachable
105: ; preds = %94
%106 = icmp eq i32 %95, 0
br i1 %106, label %366, label %107
107: ; preds = %105
%108 = load i8, i8* %8
%109 = zext i8 %108 to i32
%110 = add nsw i32 %109, -128
%111 = sitofp i32 %110 to double
%112 = fmul double %111, 7.812500e-03
%113 = fptrunc double %112 to float
%114 = icmp ult i32 %95, 8
br i1 %114, label %184, label %115
115: ; preds = %107
%116 = add i32 %95, -1
%117 = xor i32 %92, -1
%118 = icmp ugt i32 %116, %117
br i1 %118, label %184, label %119
119: ; preds = %115
%120 = and i32 %95, -8
%121 = add i32 %92, %120
%122 = and i32 %95, 7
%123 = insertelement <4 x float> poison, float %113, i64 0
%124 = shufflevector <4 x float> %123, <4 x float> poison, <4 x i32> zeroinitializer
%125 = insertelement <4 x float> poison, float %113, i64 0
%126 = shufflevector <4 x float> %125, <4 x float> poison, <4 x i32> zeroinitializer
%127 = add i32 %120, -8
%128 = lshr exact i32 %127, 3
%129 = add nuw nsw i32 %128, 1
%130 = and i32 %129, 3
%131 = icmp ult i32 %127, 24
br i1 %131, label %167, label %132
132: ; preds = %119
%133 = and i32 %129, 1073741820
br label %134
134: ; preds = %134, %132
%135 = phi i32 [ 0, %132 ], [ %164, %134 ]
%136 = phi i32 [ 0, %132 ], [ %165, %134 ]
%137 = add i32 %92, %135
%138 = zext i32 %137 to i64
%139 = getelementptr inbounds [16384 x float], [16384 x float]* %6, i64 0, i64 %138
%140 = bitcast float* %139 to <4 x float>*
store <4 x float> %124, <4 x float>* %140
%141 = getelementptr inbounds float, float* %139, i64 4
%142 = bitcast float* %141 to <4 x float>*
store <4 x float> %126, <4 x float>* %142
%143 = or i32 %135, 8
%144 = add i32 %92, %143
%145 = zext i32 %144 to i64
%146 = getelementptr inbounds [16384 x float], [16384 x float]* %6, i64 0, i64 %145
%147 = bitcast float* %146 to <4 x float>*
store <4 x float> %124, <4 x float>* %147
%148 = getelementptr inbounds float, float* %146, i64 4
%149 = bitcast float* %148 to <4 x float>*
store <4 x float> %126, <4 x float>* %149
%150 = or i32 %135, 16
%151 = add i32 %92, %150
%152 = zext i32 %151 to i64
%153 = getelementptr inbounds [16384 x float], [16384 x float]* %6, i64 0, i64 %152
%154 = bitcast float* %153 to <4 x float>*
store <4 x float> %124, <4 x float>* %154
%155 = getelementptr inbounds float, float* %153, i64 4
%156 = bitcast float* %155 to <4 x float>*
store <4 x float> %126, <4 x float>* %156
%157 = or i32 %135, 24
%158 = add i32 %92, %157
%159 = zext i32 %158 to i64
%160 = getelementptr inbounds [16384 x float], [16384 x float]* %6, i64 0, i64 %159
%161 = bitcast float* %160 to <4 x float>*
store <4 x float> %124, <4 x float>* %161
%162 = getelementptr inbounds float, float* %160, i64 4
%163 = bitcast float* %162 to <4 x float>*
store <4 x float> %126, <4 x float>* %163
%164 = add nuw i32 %135, 32
%165 = add i32 %136, 4
%166 = icmp eq i32 %165, %133
br i1 %166, label %167, label %134
167: ; preds = %134, %119
%168 = phi i32 [ 0, %119 ], [ %164, %134 ]
%169 = icmp eq i32 %130, 0
br i1 %169, label %182, label %170
170: ; preds = %167, %170
%171 = phi i32 [ %179, %170 ], [ %168, %167 ]
%172 = phi i32 [ %180, %170 ], [ 0, %167 ]
%173 = add i32 %92, %171
%174 = zext i32 %173 to i64
%175 = getelementptr inbounds [16384 x float], [16384 x float]* %6, i64 0, i64 %174
%176 = bitcast float* %175 to <4 x float>*
store <4 x float> %124, <4 x float>* %176
%177 = getelementptr inbounds float, float* %175, i64 4
%178 = bitcast float* %177 to <4 x float>*
store <4 x float> %126, <4 x float>* %178
%179 = add nuw i32 %171, 8
%180 = add i32 %172, 1
%181 = icmp eq i32 %180, %130
br i1 %181, label %182, label %170
182: ; preds = %170, %167
%183 = icmp eq i32 %95, %120
br i1 %183, label %222, label %184
184: ; preds = %115, %107, %182
%185 = phi i32 [ %92, %115 ], [ %92, %107 ], [ %121, %182 ]
%186 = phi i32 [ %95, %115 ], [ %95, %107 ], [ %122, %182 ]
%187 = add i32 %186, -1
%188 = and i32 %186, 3
%189 = icmp eq i32 %188, 0
br i1 %189, label %200, label %190
190: ; preds = %184, %190
%191 = phi i32 [ %194, %190 ], [ %185, %184 ]
%192 = phi i32 [ %197, %190 ], [ %186, %184 ]
%193 = phi i32 [ %198, %190 ], [ 0, %184 ]
%194 = add i32 %191, 1
%195 = zext i32 %191 to i64
%196 = getelementptr inbounds [16384 x float], [16384 x float]* %6, i64 0, i64 %195
store float %113, float* %196
%197 = add i32 %192, -1
%198 = add i32 %193, 1
%199 = icmp eq i32 %198, %188
br i1 %199, label %200, label %190
200: ; preds = %190, %184
%201 = phi i32 [ undef, %184 ], [ %194, %190 ]
%202 = phi i32 [ %185, %184 ], [ %194, %190 ]
%203 = phi i32 [ %186, %184 ], [ %197, %190 ]
%204 = icmp ult i32 %187, 3
br i1 %204, label %222, label %205
205: ; preds = %200, %205
%206 = phi i32 [ %217, %205 ], [ %202, %200 ]
%207 = phi i32 [ %220, %205 ], [ %203, %200 ]
%208 = add i32 %206, 1
%209 = zext i32 %206 to i64
%210 = getelementptr inbounds [16384 x float], [16384 x float]* %6, i64 0, i64 %209
store float %113, float* %210
%211 = add i32 %206, 2
%212 = zext i32 %208 to i64
%213 = getelementptr inbounds [16384 x float], [16384 x float]* %6, i64 0, i64 %212
store float %113, float* %213
%214 = add i32 %206, 3
%215 = zext i32 %211 to i64
%216 = getelementptr inbounds [16384 x float], [16384 x float]* %6, i64 0, i64 %215
store float %113, float* %216
%217 = add i32 %206, 4
%218 = zext i32 %214 to i64
%219 = getelementptr inbounds [16384 x float], [16384 x float]* %6, i64 0, i64 %218
store float %113, float* %219
%220 = add i32 %207, -4
%221 = icmp eq i32 %220, 0
br i1 %221, label %222, label %205
222: ; preds = %200, %205, %182
%223 = phi i32 [ %121, %182 ], [ %201, %200 ], [ %217, %205 ]
%224 = icmp ugt i32 %223, %1
br i1 %224, label %358, label %225
225: ; preds = %222, %355, %358
%226 = phi i32 [ %1, %358 ], [ %356, %355 ], [ %223, %222 ]
br label %91
227: ; preds = %93
%228 = call i32 (i32, ...) @read(i32 %13, i16* %90, i64 16384)
%229 = icmp slt i32 %228, 0
br i1 %229, label %230, label %237
230: ; preds = %227
%231 = load i64, i64* @errno
%232 = load i64, i64* @EAGAIN
%233 = icmp eq i64 %231, %232
br i1 %233, label %101, label %234
234: ; preds = %230
%235 = call i32 @perror(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.8, i64 0, i64 0))
%236 = call i32 @exit(i32 4)
unreachable
237: ; preds = %227
%238 = icmp eq i32 %228, 0
br i1 %238, label %366, label %239
239: ; preds = %237
%240 = icmp eq i32 %228, 1
br i1 %54, label %318, label %241
241: ; preds = %239
br i1 %240, label %351, label %242
242: ; preds = %241
%243 = add i32 %228, -2
%244 = lshr i32 %243, 1
%245 = add nuw i32 %244, 1
%246 = zext i32 %245 to i64
%247 = icmp ult i32 %243, 6
br i1 %247, label %314, label %248
248: ; preds = %242
%249 = add i32 %228, -2
%250 = lshr i32 %249, 1
%251 = xor i32 %92, -1
%252 = icmp ugt i32 %250, %251
br i1 %252, label %314, label %253
253: ; preds = %248
%254 = and i64 %246, 4294967292
%255 = trunc i64 %254 to i32
%256 = add i32 %92, %255
%257 = getelementptr %union.anon, %union.anon* %5, i64 0, i32 0, i64 %254
%258 = trunc i64 %254 to i32
%259 = mul i32 %258, -2
%260 = add i32 %228, %259
%261 = add nsw i64 %254, -4
%262 = lshr exact i64 %261, 2
%263 = add nuw nsw i64 %262, 1
%264 = and i64 %263, 1
%265 = icmp eq i64 %261, 0
br i1 %265, label %297, label %266
266: ; preds = %253
%267 = and i64 %263, 9223372036854775806
br label %268
268: ; preds = %268, %266
%269 = phi i64 [ 0, %266 ], [ %294, %268 ]
%270 = phi i64 [ 0, %266 ], [ %295, %268 ]
%271 = trunc i64 %269 to i32
%272 = add i32 %92, %271
%273 = getelementptr %union.anon, %union.anon* %5, i64 0, i32 0, i64 %269
%274 = bitcast i16* %273 to <4 x i16>*
%275 = load <4 x i16>, <4 x i16>* %274
%276 = sitofp <4 x i16> %275 to <4 x double>
%277 = fmul <4 x double> %276, <double 0x3F00000000000000, double 0x3F00000000000000, double 0x3F00000000000000, double 0x3F00000000000000>
%278 = fptrunc <4 x double> %277 to <4 x float>
%279 = zext i32 %272 to i64
%280 = getelementptr inbounds [16384 x float], [16384 x float]* %6, i64 0, i64 %279
%281 = bitcast float* %280 to <4 x float>*
store <4 x float> %278, <4 x float>* %281
%282 = or i64 %269, 4
%283 = trunc i64 %282 to i32
%284 = add i32 %92, %283
%285 = getelementptr %union.anon, %union.anon* %5, i64 0, i32 0, i64 %282
%286 = bitcast i16* %285 to <4 x i16>*
%287 = load <4 x i16>, <4 x i16>* %286
%288 = sitofp <4 x i16> %287 to <4 x double>
%289 = fmul <4 x double> %288, <double 0x3F00000000000000, double 0x3F00000000000000, double 0x3F00000000000000, double 0x3F00000000000000>
%290 = fptrunc <4 x double> %289 to <4 x float>
%291 = zext i32 %284 to i64
%292 = getelementptr inbounds [16384 x float], [16384 x float]* %6, i64 0, i64 %291
%293 = bitcast float* %292 to <4 x float>*
store <4 x float> %290, <4 x float>* %293
%294 = add nuw i64 %269, 8
%295 = add i64 %270, 2
%296 = icmp eq i64 %295, %267
br i1 %296, label %297, label %268
297: ; preds = %268, %253
%298 = phi i64 [ 0, %253 ], [ %294, %268 ]
%299 = icmp eq i64 %264, 0
br i1 %299, label %312, label %300
300: ; preds = %297
%301 = trunc i64 %298 to i32
%302 = add i32 %92, %301
%303 = getelementptr %union.anon, %union.anon* %5, i64 0, i32 0, i64 %298
%304 = bitcast i16* %303 to <4 x i16>*
%305 = load <4 x i16>, <4 x i16>* %304
%306 = sitofp <4 x i16> %305 to <4 x double>
%307 = fmul <4 x double> %306, <double 0x3F00000000000000, double 0x3F00000000000000, double 0x3F00000000000000, double 0x3F00000000000000>
%308 = fptrunc <4 x double> %307 to <4 x float>
%309 = zext i32 %302 to i64
%310 = getelementptr inbounds [16384 x float], [16384 x float]* %6, i64 0, i64 %309
%311 = bitcast float* %310 to <4 x float>*
store <4 x float> %308, <4 x float>* %311
br label %312
312: ; preds = %297, %300
%313 = icmp eq i64 %254, %246
br i1 %313, label %347, label %314
314: ; preds = %248, %242, %312
%315 = phi i32 [ %92, %248 ], [ %92, %242 ], [ %256, %312 ]
%316 = phi i16* [ %90, %248 ], [ %90, %242 ], [ %257, %312 ]
%317 = phi i32 [ %228, %248 ], [ %228, %242 ], [ %260, %312 ]
br label %333
318: ; preds = %239
br i1 %240, label %351, label %319
319: ; preds = %318, %319
%320 = phi i32 [ %327, %319 ], [ %92, %318 ]
%321 = phi i16* [ %331, %319 ], [ %90, %318 ]
%322 = phi i32 [ %330, %319 ], [ %228, %318 ]
%323 = load i16, i16* %321
%324 = sitofp i16 %323 to double
%325 = fmul double %324, 0x3F00000000000000
%326 = fptrunc double %325 to float
%327 = add i32 %320, 1
%328 = zext i32 %320 to i64
%329 = getelementptr inbounds [16384 x float], [16384 x float]* %6, i64 0, i64 %328
store float %326, float* %329
%330 = add i32 %322, -4
%331 = getelementptr inbounds i16, i16* %321, i64 2
%332 = icmp ugt i32 %330, 1
br i1 %332, label %319, label %347
333: ; preds = %314, %333
%334 = phi i32 [ %341, %333 ], [ %315, %314 ]
%335 = phi i16* [ %345, %333 ], [ %316, %314 ]
%336 = phi i32 [ %344, %333 ], [ %317, %314 ]
%337 = load i16, i16* %335
%338 = sitofp i16 %337 to double
%339 = fmul double %338, 0x3F00000000000000
%340 = fptrunc double %339 to float
%341 = add i32 %334, 1
%342 = zext i32 %334 to i64
%343 = getelementptr inbounds [16384 x float], [16384 x float]* %6, i64 0, i64 %342
store float %340, float* %343
%344 = add i32 %336, -2
%345 = getelementptr inbounds i16, i16* %335, i64 1
%346 = icmp ugt i32 %344, 1
br i1 %346, label %333, label %347
347: ; preds = %333, %319, %312
%348 = phi i32 [ %260, %312 ], [ %330, %319 ], [ %344, %333 ]
%349 = phi i32 [ %256, %312 ], [ %327, %319 ], [ %341, %333 ]
%350 = icmp eq i32 %348, 0
br i1 %350, label %355, label %351
351: ; preds = %241, %318, %347
%352 = phi i32 [ %349, %347 ], [ %92, %318 ], [ %92, %241 ]
%353 = load i32, i32* @stderr
%354 = call i32 (i32, i8*, ...) @fprintf(i32 %353, i8* getelementptr inbounds ([44 x i8], [44 x i8]* @.str.9, i64 0, i64 0))
br label %355
355: ; preds = %351, %347
%356 = phi i32 [ %352, %351 ], [ %349, %347 ]
%357 = icmp ugt i32 %356, %1
br i1 %357, label %358, label %225
358: ; preds = %355, %222
%359 = phi i32 [ %223, %222 ], [ %356, %355 ]
%360 = sub i32 %359, %1
%361 = call i32 @process_buffer(float* %86, i32 %360)
%362 = zext i32 %359 to i64
%363 = getelementptr inbounds [16384 x float], [16384 x float]* %6, i64 0, i64 %362
%364 = getelementptr inbounds float, float* %363, i64 %88
%365 = call i32 @memmove(float* %86, float* %364, i32 %89)
br label %225
366: ; preds = %237, %105
%367 = call i32 @close(i32 %13)
ret void
}