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

/* Variables and functions */
int /*<<< orphan*/ exit(int);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, int);
int fread(void *, int, int, int /*<<< orphan*/ *);
int /*<<< orphan*/ stderr;
void get_binary_item(FILE *fp, int type, int *int_val, unsigned int *uint_val,
                     double *double_val, int file_type) {
  char c[8];
  void *ptr;
  short word;
  char *byte;
  int my_endianness;
  ptr = c;
  word = 1;
  byte = (char *)&word;
  my_endianness = byte[0] ? 3 : 2;
  switch (type) {
  case 1:
    if (fread(ptr, 1, 1, fp) != 1)
      fprintf(stderr,
              "get_binary_item: problem occured in fread in switch(%d)\n",
              type);
    *int_val = *((char *)ptr);
    *uint_val = *int_val;
    *double_val = *int_val;
    break;
  case 4:
    if (fread(ptr, 1, 1, fp) != 1)
      fprintf(stderr,
              "get_binary_item: problem occured in fread in switch(%d)\n",
              type);
    *uint_val = *((unsigned char *)ptr);
    *int_val = *uint_val;
    *double_val = *uint_val;
    break;
  case 2:
    if (my_endianness != file_type) {
      unsigned char *cptr;
      cptr = (unsigned char *)ptr;
      if (fread(cptr + 1, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
      if (fread(cptr, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
    } else if (fread(ptr, 1, 2, fp) != 2)
      fprintf(stderr,
              "get_binary_item: problem occured in fread in switch(%d)\n",
              type);
    *int_val = *((short *)ptr);
    *uint_val = *int_val;
    *double_val = *int_val;
    break;
  case 5:
    if (my_endianness != file_type) {
      unsigned char *cptr;
      cptr = (unsigned char *)ptr;
      if (fread(cptr + 1, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
      if (fread(cptr, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
    } else if (fread(ptr, 1, 2, fp) != 2)
      fprintf(stderr,
              "get_binary_item: problem occured in fread in switch(%d)\n",
              type);
    *uint_val = *((unsigned short *)ptr);
    *int_val = *uint_val;
    *double_val = *uint_val;
    break;
  case 3:
    if (my_endianness != file_type) {
      unsigned char *cptr;
      cptr = (unsigned char *)ptr;
      if (fread(cptr + 3, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
      if (fread(cptr + 2, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
      if (fread(cptr + 1, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
      if (fread(cptr, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
    } else if (fread(ptr, 1, 4, fp) != 4)
      fprintf(stderr,
              "get_binary_item: problem occured in fread in switch(%d)\n",
              type);
    *int_val = *((int *)ptr);
    *uint_val = *int_val;
    *double_val = *int_val;
    break;
  case 6:
    if (my_endianness != file_type) {
      unsigned char *cptr;
      cptr = (unsigned char *)ptr;
      if (fread(cptr + 3, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
      if (fread(cptr + 2, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
      if (fread(cptr + 1, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
      if (fread(cptr, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
    } else if (fread(ptr, 1, 4, fp) != 4)
      fprintf(stderr,
              "get_binary_item: problem occured in fread in switch(%d)\n",
              type);
    *uint_val = *((unsigned int *)ptr);
    *int_val = *uint_val;
    *double_val = *uint_val;
    break;
  case 7:
    if (my_endianness != file_type) {
      unsigned char *cptr;
      cptr = (unsigned char *)ptr;
      if (fread(cptr + 3, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
      if (fread(cptr + 2, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
      if (fread(cptr + 1, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
      if (fread(cptr, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
    } else if (fread(ptr, 1, 4, fp) != 4)
      fprintf(stderr,
              "get_binary_item: problem occured in fread in switch(%d)\n",
              type);
    *double_val = *((float *)ptr);
    *int_val = (int)(*double_val);
    *uint_val = (unsigned int)(*double_val);
    break;
  case 8:
    if (my_endianness != file_type) {
      unsigned char *cptr;
      cptr = (unsigned char *)ptr;
      if (fread(cptr + 7, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
      if (fread(cptr + 6, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
      if (fread(cptr + 5, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
      if (fread(cptr + 4, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
      if (fread(cptr + 3, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
      if (fread(cptr + 2, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
      if (fread(cptr + 1, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
      if (fread(cptr, 1, 1, fp) != 1)
        fprintf(stderr,
                "get_binary_item: problem occured in fread in switch(%d)\n",
                type);
    } else if (fread(ptr, 1, 8, fp) != 8)
      fprintf(stderr,
              "get_binary_item: problem occured in fread in switch(%d)\n",
              type);
    *double_val = *((double *)ptr);
    *int_val = (int)(*double_val);
    *uint_val = (unsigned int)(*double_val);
    break;
  default:
    fprintf(stderr, "get_binary_item: bad type = %d\n", type);
    exit(-1);
  }
}


x86 assembly (clang, -O0):
<get_binary_item>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9d,-0x2c(%rbp)
lea    -0x34(%rbp),%rax
mov    %rax,-0x40(%rbp)
movw   $0x1,-0x42(%rbp)
lea    -0x42(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rax
mov    (%rax),%al
test   %al,%al
setne  %al
movzbl %al,%eax
or     $0x2,%eax
mov    %eax,-0x54(%rbp)
mov    -0xc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x90(%rbp)
sub    $0x7,%eax
ja     1afb <get_binary_item+0x9cb>
mov    -0x90(%rbp),%rax
lea    0xe5e(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x40(%rbp),%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     11e0 <get_binary_item+0xb0>
mov    0x2e11(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0xe45(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x40(%rbp),%rax
movsbl (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
cvtsi2sdl (%rax),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1b1d <get_binary_item+0x9ed>
mov    -0x40(%rbp),%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1243 <get_binary_item+0x113>
mov    0x2dae(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0xde2(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x40(%rbp),%rax
movzbl (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
cvtsi2sd %rax,%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1b1d <get_binary_item+0x9ed>
mov    -0x54(%rbp),%eax
cmp    -0x2c(%rbp),%eax
je     12fb <get_binary_item+0x1cb>
mov    -0x40(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rdi
add    $0x1,%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     12c1 <get_binary_item+0x191>
mov    0x2d30(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0xd64(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x60(%rbp),%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     12f6 <get_binary_item+0x1c6>
mov    0x2cfb(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0xd2f(%rip),%rsi
call   1040 <fprintf@plt>
jmp    1338 <get_binary_item+0x208>
mov    -0x40(%rbp),%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%esi
mov    $0x2,%edx
call   1030 <fread@plt>
cmp    $0x2,%eax
je     1333 <get_binary_item+0x203>
mov    0x2cbe(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0xcf2(%rip),%rsi
call   1040 <fprintf@plt>
jmp    1338 <get_binary_item+0x208>
mov    -0x40(%rbp),%rax
movswl (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
cvtsi2sdl (%rax),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1b1d <get_binary_item+0x9ed>
mov    -0x54(%rbp),%eax
cmp    -0x2c(%rbp),%eax
je     13ed <get_binary_item+0x2bd>
mov    -0x40(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rdi
add    $0x1,%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     13b3 <get_binary_item+0x283>
mov    0x2c3e(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0xc72(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x68(%rbp),%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     13e8 <get_binary_item+0x2b8>
mov    0x2c09(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0xc3d(%rip),%rsi
call   1040 <fprintf@plt>
jmp    142a <get_binary_item+0x2fa>
mov    -0x40(%rbp),%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%esi
mov    $0x2,%edx
call   1030 <fread@plt>
cmp    $0x2,%eax
je     1425 <get_binary_item+0x2f5>
mov    0x2bcc(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0xc00(%rip),%rsi
call   1040 <fprintf@plt>
jmp    142a <get_binary_item+0x2fa>
mov    -0x40(%rbp),%rax
movzwl (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
cvtsi2sd %rax,%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1b1d <get_binary_item+0x9ed>
mov    -0x54(%rbp),%eax
cmp    -0x2c(%rbp),%eax
je     1554 <get_binary_item+0x424>
mov    -0x40(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rdi
add    $0x3,%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     14a8 <get_binary_item+0x378>
mov    0x2b49(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0xb7d(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x70(%rbp),%rdi
add    $0x2,%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     14e1 <get_binary_item+0x3b1>
mov    0x2b10(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0xb44(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x70(%rbp),%rdi
add    $0x1,%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     151a <get_binary_item+0x3ea>
mov    0x2ad7(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0xb0b(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x70(%rbp),%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     154f <get_binary_item+0x41f>
mov    0x2aa2(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0xad6(%rip),%rsi
call   1040 <fprintf@plt>
jmp    1591 <get_binary_item+0x461>
mov    -0x40(%rbp),%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%esi
mov    $0x4,%edx
call   1030 <fread@plt>
cmp    $0x4,%eax
je     158c <get_binary_item+0x45c>
mov    0x2a65(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0xa99(%rip),%rsi
call   1040 <fprintf@plt>
jmp    1591 <get_binary_item+0x461>
mov    -0x40(%rbp),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
cvtsi2sdl (%rax),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1b1d <get_binary_item+0x9ed>
mov    -0x54(%rbp),%eax
cmp    -0x2c(%rbp),%eax
je     16b7 <get_binary_item+0x587>
mov    -0x40(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x78(%rbp),%rdi
add    $0x3,%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     160b <get_binary_item+0x4db>
mov    0x29e6(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0xa1a(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x78(%rbp),%rdi
add    $0x2,%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1644 <get_binary_item+0x514>
mov    0x29ad(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x9e1(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x78(%rbp),%rdi
add    $0x1,%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     167d <get_binary_item+0x54d>
mov    0x2974(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x9a8(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x78(%rbp),%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     16b2 <get_binary_item+0x582>
mov    0x293f(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x973(%rip),%rsi
call   1040 <fprintf@plt>
jmp    16f4 <get_binary_item+0x5c4>
mov    -0x40(%rbp),%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%esi
mov    $0x4,%edx
call   1030 <fread@plt>
cmp    $0x4,%eax
je     16ef <get_binary_item+0x5bf>
mov    0x2902(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x936(%rip),%rsi
call   1040 <fprintf@plt>
jmp    16f4 <get_binary_item+0x5c4>
mov    -0x40(%rbp),%rax
mov    (%rax),%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
cvtsi2sd %rax,%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1b1d <get_binary_item+0x9ed>
mov    -0x54(%rbp),%eax
cmp    -0x2c(%rbp),%eax
je     181d <get_binary_item+0x6ed>
mov    -0x40(%rbp),%rax
mov    %rax,-0x80(%rbp)
mov    -0x80(%rbp),%rdi
add    $0x3,%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1771 <get_binary_item+0x641>
mov    0x2880(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x8b4(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x80(%rbp),%rdi
add    $0x2,%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     17aa <get_binary_item+0x67a>
mov    0x2847(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x87b(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x80(%rbp),%rdi
add    $0x1,%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     17e3 <get_binary_item+0x6b3>
mov    0x280e(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x842(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x80(%rbp),%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1818 <get_binary_item+0x6e8>
mov    0x27d9(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x80d(%rip),%rsi
call   1040 <fprintf@plt>
jmp    185a <get_binary_item+0x72a>
mov    -0x40(%rbp),%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%esi
mov    $0x4,%edx
call   1030 <fread@plt>
cmp    $0x4,%eax
je     1855 <get_binary_item+0x725>
mov    0x279c(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x7d0(%rip),%rsi
call   1040 <fprintf@plt>
jmp    185a <get_binary_item+0x72a>
mov    -0x40(%rbp),%rax
movss  (%rax),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
cvttsd2si (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
cvttsd2si (%rax),%rax
mov    %eax,%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
jmp    1b1d <get_binary_item+0x9ed>
mov    -0x54(%rbp),%eax
cmp    -0x2c(%rbp),%eax
je     1a8a <get_binary_item+0x95a>
mov    -0x40(%rbp),%rax
mov    %rax,-0x88(%rbp)
mov    -0x88(%rbp),%rdi
add    $0x7,%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     18e5 <get_binary_item+0x7b5>
mov    0x270c(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x740(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x88(%rbp),%rdi
add    $0x6,%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1921 <get_binary_item+0x7f1>
mov    0x26d0(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x704(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x88(%rbp),%rdi
add    $0x5,%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     195d <get_binary_item+0x82d>
mov    0x2694(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x6c8(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x88(%rbp),%rdi
add    $0x4,%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1999 <get_binary_item+0x869>
mov    0x2658(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x68c(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x88(%rbp),%rdi
add    $0x3,%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     19d5 <get_binary_item+0x8a5>
mov    0x261c(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x650(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x88(%rbp),%rdi
add    $0x2,%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1a11 <get_binary_item+0x8e1>
mov    0x25e0(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x614(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x88(%rbp),%rdi
add    $0x1,%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1a4d <get_binary_item+0x91d>
mov    0x25a4(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x5d8(%rip),%rsi
call   1040 <fprintf@plt>
mov    -0x88(%rbp),%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%edx
mov    %edx,%esi
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1a85 <get_binary_item+0x955>
mov    0x256c(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x5a0(%rip),%rsi
call   1040 <fprintf@plt>
jmp    1ac7 <get_binary_item+0x997>
mov    -0x40(%rbp),%rdi
mov    -0x8(%rbp),%rcx
mov    $0x1,%esi
mov    $0x8,%edx
call   1030 <fread@plt>
cmp    $0x8,%eax
je     1ac2 <get_binary_item+0x992>
mov    0x252f(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x563(%rip),%rsi
call   1040 <fprintf@plt>
jmp    1ac7 <get_binary_item+0x997>
mov    -0x40(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
cvttsd2si (%rax),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
cvttsd2si (%rax),%rax
mov    %eax,%ecx
mov    -0x20(%rbp),%rax
mov    %ecx,(%rax)
jmp    1b1d <get_binary_item+0x9ed>
mov    0x24de(%rip),%rax
mov    (%rax),%edi
mov    -0xc(%rbp),%edx
lea    0x54b(%rip),%rsi
call   1040 <fprintf@plt>
mov    $0xffffffff,%edi
call   1050 <exit@plt>
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<get_binary_item>:
push   %r15
push   %r14
push   %r12
push   %rbx
push   %rax
mov    %rdx,%r12
mov    %esi,%edx
lea    -0x1(%rdx),%eax
cmp    $0x7,%eax
ja     187c <get_binary_item+0x74c>
mov    %r8,%r14
mov    %rcx,%r15
mov    %rdi,%rbx
lea    0xea7(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    %rsp,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1196 <get_binary_item+0x66>
mov    0x2e5d(%rip),%rax
mov    (%rax),%edi
lea    0xe94(%rip),%rsi
mov    $0x1,%edx
call   1040 <fprintf@plt>
movsbl (%rsp),%eax
jmp    14a9 <get_binary_item+0x379>
cmp    $0x3,%r9d
jne    12ea <get_binary_item+0x1ba>
mov    %rsp,%rdi
mov    $0x1,%esi
mov    $0x4,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x4,%eax
jne    13a6 <get_binary_item+0x276>
jmp    13c0 <get_binary_item+0x290>
mov    %rsp,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1200 <get_binary_item+0xd0>
mov    0x2df3(%rip),%rax
mov    (%rax),%edi
lea    0xe2a(%rip),%rsi
mov    $0x4,%edx
call   1040 <fprintf@plt>
movzbl (%rsp),%eax
jmp    1599 <get_binary_item+0x469>
cmp    $0x3,%r9d
jne    13c8 <get_binary_item+0x298>
mov    %rsp,%rdi
mov    $0x1,%esi
mov    $0x2,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x2,%eax
jne    1418 <get_binary_item+0x2e8>
jmp    1432 <get_binary_item+0x302>
cmp    $0x3,%r9d
jne    143b <get_binary_item+0x30b>
mov    %rsp,%rdi
mov    $0x1,%esi
mov    $0x2,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x2,%eax
jne    148b <get_binary_item+0x35b>
jmp    14a5 <get_binary_item+0x375>
cmp    $0x3,%r9d
jne    14c0 <get_binary_item+0x390>
mov    %rsp,%rdi
mov    $0x1,%esi
mov    $0x4,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x4,%eax
jne    157c <get_binary_item+0x44c>
jmp    1596 <get_binary_item+0x466>
cmp    $0x3,%r9d
jne    15b2 <get_binary_item+0x482>
mov    %rsp,%rdi
mov    $0x1,%esi
mov    $0x4,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x4,%eax
jne    166e <get_binary_item+0x53e>
jmp    1688 <get_binary_item+0x558>
cmp    $0x3,%r9d
jne    16a8 <get_binary_item+0x578>
mov    %rsp,%rdi
mov    $0x1,%esi
mov    $0x8,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x8,%eax
jne    183c <get_binary_item+0x70c>
jmp    1856 <get_binary_item+0x726>
lea    0x3(%rsp),%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1320 <get_binary_item+0x1f0>
mov    0x2cd3(%rip),%rax
mov    (%rax),%edi
lea    0xd0a(%rip),%rsi
mov    $0x3,%edx
call   1040 <fprintf@plt>
lea    0x2(%rsp),%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1356 <get_binary_item+0x226>
mov    0x2c9d(%rip),%rax
mov    (%rax),%edi
lea    0xcd4(%rip),%rsi
mov    $0x3,%edx
call   1040 <fprintf@plt>
lea    0x1(%rsp),%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     138c <get_binary_item+0x25c>
mov    0x2c67(%rip),%rax
mov    (%rax),%edi
lea    0xc9e(%rip),%rsi
mov    $0x3,%edx
call   1040 <fprintf@plt>
mov    %rsp,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     13c0 <get_binary_item+0x290>
mov    0x2c33(%rip),%rax
mov    (%rax),%edi
lea    0xc6a(%rip),%rsi
mov    $0x3,%edx
call   1040 <fprintf@plt>
mov    (%rsp),%eax
jmp    14a9 <get_binary_item+0x379>
lea    0x1(%rsp),%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     13fe <get_binary_item+0x2ce>
mov    0x2bf5(%rip),%rax
mov    (%rax),%edi
lea    0xc2c(%rip),%rsi
mov    $0x5,%edx
call   1040 <fprintf@plt>
mov    %rsp,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1432 <get_binary_item+0x302>
mov    0x2bc1(%rip),%rax
mov    (%rax),%edi
lea    0xbf8(%rip),%rsi
mov    $0x5,%edx
call   1040 <fprintf@plt>
movzwl (%rsp),%eax
jmp    1599 <get_binary_item+0x469>
lea    0x1(%rsp),%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1471 <get_binary_item+0x341>
mov    0x2b82(%rip),%rax
mov    (%rax),%edi
lea    0xbb9(%rip),%rsi
mov    $0x2,%edx
call   1040 <fprintf@plt>
mov    %rsp,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     14a5 <get_binary_item+0x375>
mov    0x2b4e(%rip),%rax
mov    (%rax),%edi
lea    0xb85(%rip),%rsi
mov    $0x2,%edx
call   1040 <fprintf@plt>
movswl (%rsp),%eax
mov    %eax,(%r12)
mov    %eax,(%r15)
cvtsi2sdl (%r12),%xmm0
movsd  %xmm0,(%r14)
jmp    1870 <get_binary_item+0x740>
lea    0x3(%rsp),%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     14f6 <get_binary_item+0x3c6>
mov    0x2afd(%rip),%rax
mov    (%rax),%edi
lea    0xb34(%rip),%rsi
mov    $0x6,%edx
call   1040 <fprintf@plt>
lea    0x2(%rsp),%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     152c <get_binary_item+0x3fc>
mov    0x2ac7(%rip),%rax
mov    (%rax),%edi
lea    0xafe(%rip),%rsi
mov    $0x6,%edx
call   1040 <fprintf@plt>
lea    0x1(%rsp),%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1562 <get_binary_item+0x432>
mov    0x2a91(%rip),%rax
mov    (%rax),%edi
lea    0xac8(%rip),%rsi
mov    $0x6,%edx
call   1040 <fprintf@plt>
mov    %rsp,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1596 <get_binary_item+0x466>
mov    0x2a5d(%rip),%rax
mov    (%rax),%edi
lea    0xa94(%rip),%rsi
mov    $0x6,%edx
call   1040 <fprintf@plt>
mov    (%rsp),%eax
mov    %eax,(%r15)
mov    %eax,(%r12)
mov    (%r15),%eax
cvtsi2sd %rax,%xmm0
movsd  %xmm0,(%r14)
jmp    1870 <get_binary_item+0x740>
lea    0x3(%rsp),%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     15e8 <get_binary_item+0x4b8>
mov    0x2a0b(%rip),%rax
mov    (%rax),%edi
lea    0xa42(%rip),%rsi
mov    $0x7,%edx
call   1040 <fprintf@plt>
lea    0x2(%rsp),%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     161e <get_binary_item+0x4ee>
mov    0x29d5(%rip),%rax
mov    (%rax),%edi
lea    0xa0c(%rip),%rsi
mov    $0x7,%edx
call   1040 <fprintf@plt>
lea    0x1(%rsp),%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1654 <get_binary_item+0x524>
mov    0x299f(%rip),%rax
mov    (%rax),%edi
lea    0x9d6(%rip),%rsi
mov    $0x7,%edx
call   1040 <fprintf@plt>
mov    %rsp,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1688 <get_binary_item+0x558>
mov    0x296b(%rip),%rax
mov    (%rax),%edi
lea    0x9a2(%rip),%rsi
mov    $0x7,%edx
call   1040 <fprintf@plt>
movss  (%rsp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  %xmm1,(%r14)
cvttss2si %xmm0,%eax
mov    %eax,(%r12)
cvttss2si %xmm0,%rax
jmp    186d <get_binary_item+0x73d>
lea    0x7(%rsp),%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     16de <get_binary_item+0x5ae>
mov    0x2915(%rip),%rax
mov    (%rax),%edi
lea    0x94c(%rip),%rsi
mov    $0x8,%edx
call   1040 <fprintf@plt>
lea    0x6(%rsp),%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1714 <get_binary_item+0x5e4>
mov    0x28df(%rip),%rax
mov    (%rax),%edi
lea    0x916(%rip),%rsi
mov    $0x8,%edx
call   1040 <fprintf@plt>
lea    0x5(%rsp),%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     174a <get_binary_item+0x61a>
mov    0x28a9(%rip),%rax
mov    (%rax),%edi
lea    0x8e0(%rip),%rsi
mov    $0x8,%edx
call   1040 <fprintf@plt>
lea    0x4(%rsp),%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1780 <get_binary_item+0x650>
mov    0x2873(%rip),%rax
mov    (%rax),%edi
lea    0x8aa(%rip),%rsi
mov    $0x8,%edx
call   1040 <fprintf@plt>
lea    0x3(%rsp),%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     17b6 <get_binary_item+0x686>
mov    0x283d(%rip),%rax
mov    (%rax),%edi
lea    0x874(%rip),%rsi
mov    $0x8,%edx
call   1040 <fprintf@plt>
lea    0x2(%rsp),%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     17ec <get_binary_item+0x6bc>
mov    0x2807(%rip),%rax
mov    (%rax),%edi
lea    0x83e(%rip),%rsi
mov    $0x8,%edx
call   1040 <fprintf@plt>
lea    0x1(%rsp),%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1822 <get_binary_item+0x6f2>
mov    0x27d1(%rip),%rax
mov    (%rax),%edi
lea    0x808(%rip),%rsi
mov    $0x8,%edx
call   1040 <fprintf@plt>
mov    %rsp,%rdi
mov    $0x1,%esi
mov    $0x1,%edx
mov    %rbx,%rcx
call   1030 <fread@plt>
cmp    $0x1,%eax
je     1856 <get_binary_item+0x726>
mov    0x279d(%rip),%rax
mov    (%rax),%edi
lea    0x7d4(%rip),%rsi
mov    $0x8,%edx
call   1040 <fprintf@plt>
movsd  (%rsp),%xmm0
movsd  %xmm0,(%r14)
cvttsd2si %xmm0,%eax
mov    %eax,(%r12)
cvttsd2si %xmm0,%rax
mov    %eax,(%r15)
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
ret
mov    0x275d(%rip),%rax
mov    (%rax),%edi
lea    0x7cd(%rip),%rsi
call   1040 <fprintf@plt>
mov    $0xffffffff,%edi
call   1050 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [57 x i8] c"get_binary_item: problem occured in fread in switch(%d)\0A\00"
@.str.1 = [32 x i8] c"get_binary_item: bad type = %d\0A\00"
define void @get_binary_item(i32* %0, i32 %1, i32* %2, i32* %3, double* %4, i32 %5) {
%7 = alloca i32*
%8 = alloca i32
%9 = alloca i32*
%10 = alloca i32*
%11 = alloca double*
%12 = alloca i32
%13 = alloca [8 x i8]
%14 = alloca i8*
%15 = alloca i16
%16 = alloca i8*
%17 = alloca i32
%18 = alloca i8*
%19 = alloca i8*
%20 = alloca i8*
%21 = alloca i8*
%22 = alloca i8*
%23 = alloca i8*
store i32* %0, i32** %7
store i32 %1, i32* %8
store i32* %2, i32** %9
store i32* %3, i32** %10
store double* %4, double** %11
store i32 %5, i32* %12
%24 = getelementptr inbounds [8 x i8], [8 x i8]* %13, i64 0, i64 0
store i8* %24, i8** %14
store i16 1, i16* %15
%25 = bitcast i16* %15 to i8*
store i8* %25, i8** %16
%26 = load i8*, i8** %16
%27 = getelementptr inbounds i8, i8* %26, i64 0
%28 = load i8, i8* %27
%29 = sext i8 %28 to i32
%30 = icmp ne i32 %29, 0
%31 = zext i1 %30 to i64
%32 = select i1 %30, i32 3, i32 2
store i32 %32, i32* %17
%33 = load i32, i32* %8
switch i32 %33, label %483 [
i32 1, label %34
i32 4, label %55
i32 2, label %76
i32 5, label %124
i32 3, label %172
i32 6, label %239
i32 7, label %306
i32 8, label %375
]
34: ; preds = %6
%35 = load i8*, i8** %14
%36 = load i32*, i32** %7
%37 = call i32 @fread(i8* %35, i32 1, i32 1, i32* %36)
%38 = icmp ne i32 %37, 1
br i1 %38, label %39, label %43
39: ; preds = %34
%40 = load i32, i32* @stderr
%41 = load i32, i32* %8
%42 = call i32 @fprintf(i32 %40, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %41)
br label %43
43: ; preds = %39, %34
%44 = load i8*, i8** %14
%45 = load i8, i8* %44
%46 = sext i8 %45 to i32
%47 = load i32*, i32** %9
store i32 %46, i32* %47
%48 = load i32*, i32** %9
%49 = load i32, i32* %48
%50 = load i32*, i32** %10
store i32 %49, i32* %50
%51 = load i32*, i32** %9
%52 = load i32, i32* %51
%53 = sitofp i32 %52 to double
%54 = load double*, double** %11
store double %53, double* %54
br label %488
55: ; preds = %6
%56 = load i8*, i8** %14
%57 = load i32*, i32** %7
%58 = call i32 @fread(i8* %56, i32 1, i32 1, i32* %57)
%59 = icmp ne i32 %58, 1
br i1 %59, label %60, label %64
60: ; preds = %55
%61 = load i32, i32* @stderr
%62 = load i32, i32* %8
%63 = call i32 @fprintf(i32 %61, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %62)
br label %64
64: ; preds = %60, %55
%65 = load i8*, i8** %14
%66 = load i8, i8* %65
%67 = zext i8 %66 to i32
%68 = load i32*, i32** %10
store i32 %67, i32* %68
%69 = load i32*, i32** %10
%70 = load i32, i32* %69
%71 = load i32*, i32** %9
store i32 %70, i32* %71
%72 = load i32*, i32** %10
%73 = load i32, i32* %72
%74 = uitofp i32 %73 to double
%75 = load double*, double** %11
store double %74, double* %75
br label %488
76: ; preds = %6
%77 = load i32, i32* %17
%78 = load i32, i32* %12
%79 = icmp ne i32 %77, %78
br i1 %79, label %80, label %101
80: ; preds = %76
%81 = load i8*, i8** %14
store i8* %81, i8** %18
%82 = load i8*, i8** %18
%83 = getelementptr inbounds i8, i8* %82, i64 1
%84 = load i32*, i32** %7
%85 = call i32 @fread(i8* %83, i32 1, i32 1, i32* %84)
%86 = icmp ne i32 %85, 1
br i1 %86, label %87, label %91
87: ; preds = %80
%88 = load i32, i32* @stderr
%89 = load i32, i32* %8
%90 = call i32 @fprintf(i32 %88, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %89)
br label %91
91: ; preds = %87, %80
%92 = load i8*, i8** %18
%93 = load i32*, i32** %7
%94 = call i32 @fread(i8* %92, i32 1, i32 1, i32* %93)
%95 = icmp ne i32 %94, 1
br i1 %95, label %96, label %100
96: ; preds = %91
%97 = load i32, i32* @stderr
%98 = load i32, i32* %8
%99 = call i32 @fprintf(i32 %97, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %98)
br label %100
100: ; preds = %96, %91
br label %111
101: ; preds = %76
%102 = load i8*, i8** %14
%103 = load i32*, i32** %7
%104 = call i32 @fread(i8* %102, i32 1, i32 2, i32* %103)
%105 = icmp ne i32 %104, 2
br i1 %105, label %106, label %110
106: ; preds = %101
%107 = load i32, i32* @stderr
%108 = load i32, i32* %8
%109 = call i32 @fprintf(i32 %107, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %108)
br label %110
110: ; preds = %106, %101
br label %111
111: ; preds = %110, %100
%112 = load i8*, i8** %14
%113 = bitcast i8* %112 to i16*
%114 = load i16, i16* %113
%115 = sext i16 %114 to i32
%116 = load i32*, i32** %9
store i32 %115, i32* %116
%117 = load i32*, i32** %9
%118 = load i32, i32* %117
%119 = load i32*, i32** %10
store i32 %118, i32* %119
%120 = load i32*, i32** %9
%121 = load i32, i32* %120
%122 = sitofp i32 %121 to double
%123 = load double*, double** %11
store double %122, double* %123
br label %488
124: ; preds = %6
%125 = load i32, i32* %17
%126 = load i32, i32* %12
%127 = icmp ne i32 %125, %126
br i1 %127, label %128, label %149
128: ; preds = %124
%129 = load i8*, i8** %14
store i8* %129, i8** %19
%130 = load i8*, i8** %19
%131 = getelementptr inbounds i8, i8* %130, i64 1
%132 = load i32*, i32** %7
%133 = call i32 @fread(i8* %131, i32 1, i32 1, i32* %132)
%134 = icmp ne i32 %133, 1
br i1 %134, label %135, label %139
135: ; preds = %128
%136 = load i32, i32* @stderr
%137 = load i32, i32* %8
%138 = call i32 @fprintf(i32 %136, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %137)
br label %139
139: ; preds = %135, %128
%140 = load i8*, i8** %19
%141 = load i32*, i32** %7
%142 = call i32 @fread(i8* %140, i32 1, i32 1, i32* %141)
%143 = icmp ne i32 %142, 1
br i1 %143, label %144, label %148
144: ; preds = %139
%145 = load i32, i32* @stderr
%146 = load i32, i32* %8
%147 = call i32 @fprintf(i32 %145, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %146)
br label %148
148: ; preds = %144, %139
br label %159
149: ; preds = %124
%150 = load i8*, i8** %14
%151 = load i32*, i32** %7
%152 = call i32 @fread(i8* %150, i32 1, i32 2, i32* %151)
%153 = icmp ne i32 %152, 2
br i1 %153, label %154, label %158
154: ; preds = %149
%155 = load i32, i32* @stderr
%156 = load i32, i32* %8
%157 = call i32 @fprintf(i32 %155, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %156)
br label %158
158: ; preds = %154, %149
br label %159
159: ; preds = %158, %148
%160 = load i8*, i8** %14
%161 = bitcast i8* %160 to i16*
%162 = load i16, i16* %161
%163 = zext i16 %162 to i32
%164 = load i32*, i32** %10
store i32 %163, i32* %164
%165 = load i32*, i32** %10
%166 = load i32, i32* %165
%167 = load i32*, i32** %9
store i32 %166, i32* %167
%168 = load i32*, i32** %10
%169 = load i32, i32* %168
%170 = uitofp i32 %169 to double
%171 = load double*, double** %11
store double %170, double* %171
br label %488
172: ; preds = %6
%173 = load i32, i32* %17
%174 = load i32, i32* %12
%175 = icmp ne i32 %173, %174
br i1 %175, label %176, label %217
176: ; preds = %172
%177 = load i8*, i8** %14
store i8* %177, i8** %20
%178 = load i8*, i8** %20
%179 = getelementptr inbounds i8, i8* %178, i64 3
%180 = load i32*, i32** %7
%181 = call i32 @fread(i8* %179, i32 1, i32 1, i32* %180)
%182 = icmp ne i32 %181, 1
br i1 %182, label %183, label %187
183: ; preds = %176
%184 = load i32, i32* @stderr
%185 = load i32, i32* %8
%186 = call i32 @fprintf(i32 %184, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %185)
br label %187
187: ; preds = %183, %176
%188 = load i8*, i8** %20
%189 = getelementptr inbounds i8, i8* %188, i64 2
%190 = load i32*, i32** %7
%191 = call i32 @fread(i8* %189, i32 1, i32 1, i32* %190)
%192 = icmp ne i32 %191, 1
br i1 %192, label %193, label %197
193: ; preds = %187
%194 = load i32, i32* @stderr
%195 = load i32, i32* %8
%196 = call i32 @fprintf(i32 %194, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %195)
br label %197
197: ; preds = %193, %187
%198 = load i8*, i8** %20
%199 = getelementptr inbounds i8, i8* %198, i64 1
%200 = load i32*, i32** %7
%201 = call i32 @fread(i8* %199, i32 1, i32 1, i32* %200)
%202 = icmp ne i32 %201, 1
br i1 %202, label %203, label %207
203: ; preds = %197
%204 = load i32, i32* @stderr
%205 = load i32, i32* %8
%206 = call i32 @fprintf(i32 %204, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %205)
br label %207
207: ; preds = %203, %197
%208 = load i8*, i8** %20
%209 = load i32*, i32** %7
%210 = call i32 @fread(i8* %208, i32 1, i32 1, i32* %209)
%211 = icmp ne i32 %210, 1
br i1 %211, label %212, label %216
212: ; preds = %207
%213 = load i32, i32* @stderr
%214 = load i32, i32* %8
%215 = call i32 @fprintf(i32 %213, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %214)
br label %216
216: ; preds = %212, %207
br label %227
217: ; preds = %172
%218 = load i8*, i8** %14
%219 = load i32*, i32** %7
%220 = call i32 @fread(i8* %218, i32 1, i32 4, i32* %219)
%221 = icmp ne i32 %220, 4
br i1 %221, label %222, label %226
222: ; preds = %217
%223 = load i32, i32* @stderr
%224 = load i32, i32* %8
%225 = call i32 @fprintf(i32 %223, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %224)
br label %226
226: ; preds = %222, %217
br label %227
227: ; preds = %226, %216
%228 = load i8*, i8** %14
%229 = bitcast i8* %228 to i32*
%230 = load i32, i32* %229
%231 = load i32*, i32** %9
store i32 %230, i32* %231
%232 = load i32*, i32** %9
%233 = load i32, i32* %232
%234 = load i32*, i32** %10
store i32 %233, i32* %234
%235 = load i32*, i32** %9
%236 = load i32, i32* %235
%237 = sitofp i32 %236 to double
%238 = load double*, double** %11
store double %237, double* %238
br label %488
239: ; preds = %6
%240 = load i32, i32* %17
%241 = load i32, i32* %12
%242 = icmp ne i32 %240, %241
br i1 %242, label %243, label %284
243: ; preds = %239
%244 = load i8*, i8** %14
store i8* %244, i8** %21
%245 = load i8*, i8** %21
%246 = getelementptr inbounds i8, i8* %245, i64 3
%247 = load i32*, i32** %7
%248 = call i32 @fread(i8* %246, i32 1, i32 1, i32* %247)
%249 = icmp ne i32 %248, 1
br i1 %249, label %250, label %254
250: ; preds = %243
%251 = load i32, i32* @stderr
%252 = load i32, i32* %8
%253 = call i32 @fprintf(i32 %251, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %252)
br label %254
254: ; preds = %250, %243
%255 = load i8*, i8** %21
%256 = getelementptr inbounds i8, i8* %255, i64 2
%257 = load i32*, i32** %7
%258 = call i32 @fread(i8* %256, i32 1, i32 1, i32* %257)
%259 = icmp ne i32 %258, 1
br i1 %259, label %260, label %264
260: ; preds = %254
%261 = load i32, i32* @stderr
%262 = load i32, i32* %8
%263 = call i32 @fprintf(i32 %261, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %262)
br label %264
264: ; preds = %260, %254
%265 = load i8*, i8** %21
%266 = getelementptr inbounds i8, i8* %265, i64 1
%267 = load i32*, i32** %7
%268 = call i32 @fread(i8* %266, i32 1, i32 1, i32* %267)
%269 = icmp ne i32 %268, 1
br i1 %269, label %270, label %274
270: ; preds = %264
%271 = load i32, i32* @stderr
%272 = load i32, i32* %8
%273 = call i32 @fprintf(i32 %271, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %272)
br label %274
274: ; preds = %270, %264
%275 = load i8*, i8** %21
%276 = load i32*, i32** %7
%277 = call i32 @fread(i8* %275, i32 1, i32 1, i32* %276)
%278 = icmp ne i32 %277, 1
br i1 %278, label %279, label %283
279: ; preds = %274
%280 = load i32, i32* @stderr
%281 = load i32, i32* %8
%282 = call i32 @fprintf(i32 %280, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %281)
br label %283
283: ; preds = %279, %274
br label %294
284: ; preds = %239
%285 = load i8*, i8** %14
%286 = load i32*, i32** %7
%287 = call i32 @fread(i8* %285, i32 1, i32 4, i32* %286)
%288 = icmp ne i32 %287, 4
br i1 %288, label %289, label %293
289: ; preds = %284
%290 = load i32, i32* @stderr
%291 = load i32, i32* %8
%292 = call i32 @fprintf(i32 %290, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %291)
br label %293
293: ; preds = %289, %284
br label %294
294: ; preds = %293, %283
%295 = load i8*, i8** %14
%296 = bitcast i8* %295 to i32*
%297 = load i32, i32* %296
%298 = load i32*, i32** %10
store i32 %297, i32* %298
%299 = load i32*, i32** %10
%300 = load i32, i32* %299
%301 = load i32*, i32** %9
store i32 %300, i32* %301
%302 = load i32*, i32** %10
%303 = load i32, i32* %302
%304 = uitofp i32 %303 to double
%305 = load double*, double** %11
store double %304, double* %305
br label %488
306: ; preds = %6
%307 = load i32, i32* %17
%308 = load i32, i32* %12
%309 = icmp ne i32 %307, %308
br i1 %309, label %310, label %351
310: ; preds = %306
%311 = load i8*, i8** %14
store i8* %311, i8** %22
%312 = load i8*, i8** %22
%313 = getelementptr inbounds i8, i8* %312, i64 3
%314 = load i32*, i32** %7
%315 = call i32 @fread(i8* %313, i32 1, i32 1, i32* %314)
%316 = icmp ne i32 %315, 1
br i1 %316, label %317, label %321
317: ; preds = %310
%318 = load i32, i32* @stderr
%319 = load i32, i32* %8
%320 = call i32 @fprintf(i32 %318, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %319)
br label %321
321: ; preds = %317, %310
%322 = load i8*, i8** %22
%323 = getelementptr inbounds i8, i8* %322, i64 2
%324 = load i32*, i32** %7
%325 = call i32 @fread(i8* %323, i32 1, i32 1, i32* %324)
%326 = icmp ne i32 %325, 1
br i1 %326, label %327, label %331
327: ; preds = %321
%328 = load i32, i32* @stderr
%329 = load i32, i32* %8
%330 = call i32 @fprintf(i32 %328, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %329)
br label %331
331: ; preds = %327, %321
%332 = load i8*, i8** %22
%333 = getelementptr inbounds i8, i8* %332, i64 1
%334 = load i32*, i32** %7
%335 = call i32 @fread(i8* %333, i32 1, i32 1, i32* %334)
%336 = icmp ne i32 %335, 1
br i1 %336, label %337, label %341
337: ; preds = %331
%338 = load i32, i32* @stderr
%339 = load i32, i32* %8
%340 = call i32 @fprintf(i32 %338, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %339)
br label %341
341: ; preds = %337, %331
%342 = load i8*, i8** %22
%343 = load i32*, i32** %7
%344 = call i32 @fread(i8* %342, i32 1, i32 1, i32* %343)
%345 = icmp ne i32 %344, 1
br i1 %345, label %346, label %350
346: ; preds = %341
%347 = load i32, i32* @stderr
%348 = load i32, i32* %8
%349 = call i32 @fprintf(i32 %347, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %348)
br label %350
350: ; preds = %346, %341
br label %361
351: ; preds = %306
%352 = load i8*, i8** %14
%353 = load i32*, i32** %7
%354 = call i32 @fread(i8* %352, i32 1, i32 4, i32* %353)
%355 = icmp ne i32 %354, 4
br i1 %355, label %356, label %360
356: ; preds = %351
%357 = load i32, i32* @stderr
%358 = load i32, i32* %8
%359 = call i32 @fprintf(i32 %357, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %358)
br label %360
360: ; preds = %356, %351
br label %361
361: ; preds = %360, %350
%362 = load i8*, i8** %14
%363 = bitcast i8* %362 to float*
%364 = load float, float* %363
%365 = fpext float %364 to double
%366 = load double*, double** %11
store double %365, double* %366
%367 = load double*, double** %11
%368 = load double, double* %367
%369 = fptosi double %368 to i32
%370 = load i32*, i32** %9
store i32 %369, i32* %370
%371 = load double*, double** %11
%372 = load double, double* %371
%373 = fptoui double %372 to i32
%374 = load i32*, i32** %10
store i32 %373, i32* %374
br label %488
375: ; preds = %6
%376 = load i32, i32* %17
%377 = load i32, i32* %12
%378 = icmp ne i32 %376, %377
br i1 %378, label %379, label %460
379: ; preds = %375
%380 = load i8*, i8** %14
store i8* %380, i8** %23
%381 = load i8*, i8** %23
%382 = getelementptr inbounds i8, i8* %381, i64 7
%383 = load i32*, i32** %7
%384 = call i32 @fread(i8* %382, i32 1, i32 1, i32* %383)
%385 = icmp ne i32 %384, 1
br i1 %385, label %386, label %390
386: ; preds = %379
%387 = load i32, i32* @stderr
%388 = load i32, i32* %8
%389 = call i32 @fprintf(i32 %387, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %388)
br label %390
390: ; preds = %386, %379
%391 = load i8*, i8** %23
%392 = getelementptr inbounds i8, i8* %391, i64 6
%393 = load i32*, i32** %7
%394 = call i32 @fread(i8* %392, i32 1, i32 1, i32* %393)
%395 = icmp ne i32 %394, 1
br i1 %395, label %396, label %400
396: ; preds = %390
%397 = load i32, i32* @stderr
%398 = load i32, i32* %8
%399 = call i32 @fprintf(i32 %397, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %398)
br label %400
400: ; preds = %396, %390
%401 = load i8*, i8** %23
%402 = getelementptr inbounds i8, i8* %401, i64 5
%403 = load i32*, i32** %7
%404 = call i32 @fread(i8* %402, i32 1, i32 1, i32* %403)
%405 = icmp ne i32 %404, 1
br i1 %405, label %406, label %410
406: ; preds = %400
%407 = load i32, i32* @stderr
%408 = load i32, i32* %8
%409 = call i32 @fprintf(i32 %407, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %408)
br label %410
410: ; preds = %406, %400
%411 = load i8*, i8** %23
%412 = getelementptr inbounds i8, i8* %411, i64 4
%413 = load i32*, i32** %7
%414 = call i32 @fread(i8* %412, i32 1, i32 1, i32* %413)
%415 = icmp ne i32 %414, 1
br i1 %415, label %416, label %420
416: ; preds = %410
%417 = load i32, i32* @stderr
%418 = load i32, i32* %8
%419 = call i32 @fprintf(i32 %417, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %418)
br label %420
420: ; preds = %416, %410
%421 = load i8*, i8** %23
%422 = getelementptr inbounds i8, i8* %421, i64 3
%423 = load i32*, i32** %7
%424 = call i32 @fread(i8* %422, i32 1, i32 1, i32* %423)
%425 = icmp ne i32 %424, 1
br i1 %425, label %426, label %430
426: ; preds = %420
%427 = load i32, i32* @stderr
%428 = load i32, i32* %8
%429 = call i32 @fprintf(i32 %427, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %428)
br label %430
430: ; preds = %426, %420
%431 = load i8*, i8** %23
%432 = getelementptr inbounds i8, i8* %431, i64 2
%433 = load i32*, i32** %7
%434 = call i32 @fread(i8* %432, i32 1, i32 1, i32* %433)
%435 = icmp ne i32 %434, 1
br i1 %435, label %436, label %440
436: ; preds = %430
%437 = load i32, i32* @stderr
%438 = load i32, i32* %8
%439 = call i32 @fprintf(i32 %437, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %438)
br label %440
440: ; preds = %436, %430
%441 = load i8*, i8** %23
%442 = getelementptr inbounds i8, i8* %441, i64 1
%443 = load i32*, i32** %7
%444 = call i32 @fread(i8* %442, i32 1, i32 1, i32* %443)
%445 = icmp ne i32 %444, 1
br i1 %445, label %446, label %450
446: ; preds = %440
%447 = load i32, i32* @stderr
%448 = load i32, i32* %8
%449 = call i32 @fprintf(i32 %447, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %448)
br label %450
450: ; preds = %446, %440
%451 = load i8*, i8** %23
%452 = load i32*, i32** %7
%453 = call i32 @fread(i8* %451, i32 1, i32 1, i32* %452)
%454 = icmp ne i32 %453, 1
br i1 %454, label %455, label %459
455: ; preds = %450
%456 = load i32, i32* @stderr
%457 = load i32, i32* %8
%458 = call i32 @fprintf(i32 %456, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %457)
br label %459
459: ; preds = %455, %450
br label %470
460: ; preds = %375
%461 = load i8*, i8** %14
%462 = load i32*, i32** %7
%463 = call i32 @fread(i8* %461, i32 1, i32 8, i32* %462)
%464 = icmp ne i32 %463, 8
br i1 %464, label %465, label %469
465: ; preds = %460
%466 = load i32, i32* @stderr
%467 = load i32, i32* %8
%468 = call i32 @fprintf(i32 %466, i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str, i64 0, i64 0), i32 %467)
br label %469
469: ; preds = %465, %460
br label %470
470: ; preds = %469, %459
%471 = load i8*, i8** %14
%472 = bitcast i8* %471 to double*
%473 = load double, double* %472
%474 = load double*, double** %11
store double %473, double* %474
%475 = load double*, double** %11
%476 = load double, double* %475
%477 = fptosi double %476 to i32
%478 = load i32*, i32** %9
store i32 %477, i32* %478
%479 = load double*, double** %11
%480 = load double, double* %479
%481 = fptoui double %480 to i32
%482 = load i32*, i32** %10
store i32 %481, i32* %482
br label %488
483: ; preds = %6
%484 = load i32, i32* @stderr
%485 = load i32, i32* %8
%486 = call i32 @fprintf(i32 %484, i8* getelementptr inbounds ([32 x i8], [32 x i8]* @.str.1, i64 0, i64 0), i32 %485)
%487 = call i32 @exit(i32 -1)
unreachable
488: ; preds = %470, %361, %294, %227, %159, %111, %64, %43
ret void
}

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