void figdisp_convbufout(buf, len) unsigned short *buf;
int len;
{
  unsigned short testshort = 0x1234;
  unsigned short realcom;
  if (testshort == htons(testshort))
    return;
  while (len > 0) {
    realcom = *buf;
    *buf = htons(*buf);
    ++buf;
    --len;
    switch (realcom) {
    case 25:
      if (len < 1) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      *buf = htons(*buf);
      ++buf;
      --len;
    case 29:
      if (len < 1) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      *buf = htons(*buf);
      ++buf;
      --len;
    case 5:
    case 14:
    case 27:
    case 33:
      if (len < 1) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      *buf = htons(*buf);
      ++buf;
      --len;
    case 23:
      if (len < 1) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      *buf = htons(*buf);
      ++buf;
      --len;
    case 3:
    case 11:
    case 12:
    case 18:
      if (len < 1) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      *buf = htons(*buf);
      ++buf;
      --len;
    case 1:
    case 4:
    case 15:
    case 16:
      if (len < 1) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      *buf = htons(*buf);
      ++buf;
      --len;
    case 0:
    case 7:
    case 8:
    case 9:
    case 10:
    case 19:
    case 20:
    case 21:
    case 22:
    case 28:
      break;
    case 2: {
      int nluts;
      if (len < 2) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      *buf = htons(*buf);
      ++buf;
      nluts = *buf;
      *buf = htons(*buf);
      ++buf;
      nluts *= 3;
      if (len < nluts + 2) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      len -= (nluts + 2);
      while (nluts-- > 0) {
        *buf = htons(*buf);
        ++buf;
      }
    } break;
    case 6:
    case 13: {
      int npts;
      if (len < 1) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      npts = *buf;
      *buf = htons(*buf);
      ++buf;
      npts *= 2;
      if (len < npts + 1) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      len -= (npts + 1);
      while (npts-- > 0) {
        *buf = htons(*buf);
        ++buf;
      }
    } break;
    case 17: {
      int nluts, affluts;
      if (len < 4) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      *buf = htons(*buf);
      ++buf;
      *buf = htons(*buf);
      ++buf;
      nluts = *buf;
      *buf = htons(*buf);
      ++buf;
      affluts = *buf & 0x7;
      *buf = htons(*buf);
      ++buf;
      len -= 4;
      if (!affluts)
        nluts *= 3;
      if (len < nluts) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      len -= nluts;
      while (nluts-- > 0) {
        *buf = htons(*buf);
        ++buf;
      }
    } break;
    case 24: {
      int bppix, npix;
      if (len < 6) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      bppix = *buf;
      *buf = htons(*buf);
      ++buf;
      *buf = htons(*buf);
      ++buf;
      *buf = htons(*buf);
      ++buf;
      npix = *buf;
      *buf = htons(*buf);
      ++buf;
      npix *= *buf;
      *buf = htons(*buf);
      ++buf;
      len -= 5;
      if (bppix == 16 && len < npix || len < (npix + 1) / 2) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      if (bppix == 16) {
        len -= npix;
        while (npix-- > 0) {
          *buf = htons(*buf);
          ++buf;
        }
      } else {
        len -= (npix + 1) / 2;
        buf += (npix + 1) / 2;
      }
      break;
    }
    case 26: {
      char *cbuf = (char *)buf;
      int i = 0;
      int nnul = 0;
      while (nnul < 2 && i++ < len * 2) {
        if (*cbuf++ == '\0')
          ++nnul;
      }
      if (nnul < 2) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      buf += (i + 1) / 2;
      len -= (i + 1) / 2;
    } break;
    case 30: {
      int npix;
      if (len < 4) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      npix = *buf;
      *buf = htons(*buf);
      ++buf;
      *buf = htons(*buf);
      ++buf;
      *buf = htons(*buf);
      ++buf;
      len -= 3;
      if (len < npix) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      len -= npix;
      while (npix-- > 0) {
        *buf = htons(*buf);
        ++buf;
      }
    } break;
    case 31: {
      char *cbuf = (char *)buf;
      int i = 0;
      int nnul = 0;
      while (nnul < 4 && i++ < len * 2) {
        if (*cbuf++ == '\0')
          ++nnul;
      }
      if (nnul < 4) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      buf += (i + 1) / 2;
      len -= (i + 1) / 2;
    } break;
    case 32: {
      int type;
      if (len < 5) {
        printf("Incomplete command %d detected!\n", realcom);
        return;
      }
      for (type = 0; type < 3; ++type) {
        *buf = htons(*buf);
        ++buf;
      }
      type = *buf;
      *buf = htons(*buf);
      buf++;
      len -= 4;
      switch (type) {
      case 1:
        if (len < 2) {
          printf("Incomplete command %d detected!\n", realcom);
          return;
        } else {
          *buf = htons(*buf);
          ++buf;
          *buf = htons(*buf);
          ++buf;
          len -= 2;
        }
      }
    } break;
    default:
      printf("Unknown command %d detected!\n", realcom);
      break;
    }
  }
  return;
}


x86 assembly (clang, -O0):
<figdisp_convbufout>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
movw   $0x1234,-0xe(%rbp)
movzwl -0xe(%rbp),%eax
mov    %eax,-0x58(%rbp)
movzwl -0xe(%rbp),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %eax,%ecx
mov    -0x58(%rbp),%eax
cmp    %ecx,%eax
jne    1159 <figdisp_convbufout+0x39>
jmp    1c99 <figdisp_convbufout+0xb79>
jmp    115e <figdisp_convbufout+0x3e>
cmpl   $0x0,-0xc(%rbp)
jle    1c94 <figdisp_convbufout+0xb74>
mov    -0x8(%rbp),%rax
mov    (%rax),%ax
mov    %ax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0xc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xc(%rbp)
movzwl -0x10(%rbp),%eax
mov    %rax,-0x60(%rbp)
sub    $0x21,%rax
ja     1c7d <figdisp_convbufout+0xb5d>
mov    -0x60(%rbp),%rax
lea    0xe43(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
cmpl   $0x1,-0xc(%rbp)
jge    11e7 <figdisp_convbufout+0xc7>
movzwl -0x10(%rbp),%esi
lea    0xead(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0xc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xc(%rbp)
cmpl   $0x1,-0xc(%rbp)
jge    1235 <figdisp_convbufout+0x115>
movzwl -0x10(%rbp),%esi
lea    0xe5f(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0xc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xc(%rbp)
cmpl   $0x1,-0xc(%rbp)
jge    1283 <figdisp_convbufout+0x163>
movzwl -0x10(%rbp),%esi
lea    0xe11(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0xc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xc(%rbp)
cmpl   $0x1,-0xc(%rbp)
jge    12d1 <figdisp_convbufout+0x1b1>
movzwl -0x10(%rbp),%esi
lea    0xdc3(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0xc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xc(%rbp)
cmpl   $0x1,-0xc(%rbp)
jge    131f <figdisp_convbufout+0x1ff>
movzwl -0x10(%rbp),%esi
lea    0xd75(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0xc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xc(%rbp)
cmpl   $0x1,-0xc(%rbp)
jge    136d <figdisp_convbufout+0x24d>
movzwl -0x10(%rbp),%esi
lea    0xd27(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0xc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xc(%rbp)
jmp    1c8f <figdisp_convbufout+0xb6f>
cmpl   $0x2,-0xc(%rbp)
jge    13c0 <figdisp_convbufout+0x2a0>
movzwl -0x10(%rbp),%esi
lea    0xcd4(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
imul   $0x3,-0x14(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0xc(%rbp),%eax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
cmp    %ecx,%eax
jge    1441 <figdisp_convbufout+0x321>
movzwl -0x10(%rbp),%esi
lea    0xc53(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
mov    -0xc(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xc(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x14(%rbp)
cmp    $0x0,%eax
jle    148c <figdisp_convbufout+0x36c>
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
jmp    144f <figdisp_convbufout+0x32f>
jmp    1c8f <figdisp_convbufout+0xb6f>
cmpl   $0x1,-0xc(%rbp)
jge    14b2 <figdisp_convbufout+0x392>
movzwl -0x10(%rbp),%esi
lea    0xbe2(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
mov    -0x8(%rbp),%rax
movzwl (%rax),%eax
mov    %eax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0x18(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0xc(%rbp),%eax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jge    1511 <figdisp_convbufout+0x3f1>
movzwl -0x10(%rbp),%esi
lea    0xb83(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
mov    -0xc(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xc(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x18(%rbp)
cmp    $0x0,%eax
jle    155c <figdisp_convbufout+0x43c>
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
jmp    151f <figdisp_convbufout+0x3ff>
jmp    1c8f <figdisp_convbufout+0xb6f>
cmpl   $0x4,-0xc(%rbp)
jge    1582 <figdisp_convbufout+0x462>
movzwl -0x10(%rbp),%esi
lea    0xb12(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%eax
and    $0x7,%eax
mov    %eax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0xc(%rbp),%eax
sub    $0x4,%eax
mov    %eax,-0xc(%rbp)
cmpl   $0x0,-0x20(%rbp)
jne    1643 <figdisp_convbufout+0x523>
imul   $0x3,-0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1666 <figdisp_convbufout+0x546>
movzwl -0x10(%rbp),%esi
lea    0xa2e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
mov    -0x1c(%rbp),%ecx
mov    -0xc(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xc(%rbp)
mov    -0x1c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x1c(%rbp)
cmp    $0x0,%eax
jle    16ae <figdisp_convbufout+0x58e>
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
jmp    1671 <figdisp_convbufout+0x551>
jmp    1c8f <figdisp_convbufout+0xb6f>
cmpl   $0x6,-0xc(%rbp)
jge    16d4 <figdisp_convbufout+0x5b4>
movzwl -0x10(%rbp),%esi
lea    0x9c0(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
mov    -0x8(%rbp),%rax
movzwl (%rax),%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%eax
mov    %eax,-0x28(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%eax
imul   -0x28(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0xc(%rbp),%eax
sub    $0x5,%eax
mov    %eax,-0xc(%rbp)
cmpl   $0x10,-0x24(%rbp)
jne    17c9 <figdisp_convbufout+0x6a9>
mov    -0xc(%rbp),%eax
cmp    -0x28(%rbp),%eax
jl     17ea <figdisp_convbufout+0x6ca>
mov    -0xc(%rbp),%eax
mov    %eax,-0x64(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x64(%rbp),%eax
cmp    %ecx,%eax
jge    1801 <figdisp_convbufout+0x6e1>
movzwl -0x10(%rbp),%esi
lea    0x893(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
cmpl   $0x10,-0x24(%rbp)
jne    1858 <figdisp_convbufout+0x738>
mov    -0x28(%rbp),%ecx
mov    -0xc(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xc(%rbp)
mov    -0x28(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x28(%rbp)
cmp    $0x0,%eax
jle    1853 <figdisp_convbufout+0x733>
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
jmp    1816 <figdisp_convbufout+0x6f6>
jmp    1892 <figdisp_convbufout+0x772>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xc(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xc(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x8(%rbp),%rax
movslq %ecx,%rcx
shl    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x8(%rbp)
jmp    1c8f <figdisp_convbufout+0xb6f>
mov    -0x8(%rbp),%rax
mov    %rax,-0x30(%rbp)
movl   $0x0,-0x34(%rbp)
movl   $0x0,-0x38(%rbp)
xor    %eax,%eax
cmpl   $0x2,-0x38(%rbp)
mov    %al,-0x65(%rbp)
jge    18d5 <figdisp_convbufout+0x7b5>
mov    -0x34(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x34(%rbp)
mov    -0xc(%rbp),%ecx
shl    $0x1,%ecx
cmp    %ecx,%eax
setl   %al
mov    %al,-0x65(%rbp)
mov    -0x65(%rbp),%al
test   $0x1,%al
jne    18e5 <figdisp_convbufout+0x7c5>
jmp    190e <figdisp_convbufout+0x7ee>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    1909 <figdisp_convbufout+0x7e9>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    18ad <figdisp_convbufout+0x78d>
cmpl   $0x2,-0x38(%rbp)
jge    192f <figdisp_convbufout+0x80f>
movzwl -0x10(%rbp),%esi
lea    0x765(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x8(%rbp),%rax
movslq %ecx,%rcx
shl    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x8(%rbp)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xc(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xc(%rbp)
jmp    1c8f <figdisp_convbufout+0xb6f>
cmpl   $0x4,-0xc(%rbp)
jge    198f <figdisp_convbufout+0x86f>
movzwl -0x10(%rbp),%esi
lea    0x705(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
mov    -0x8(%rbp),%rax
movzwl (%rax),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0xc(%rbp),%eax
sub    $0x3,%eax
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jge    1a31 <figdisp_convbufout+0x911>
movzwl -0x10(%rbp),%esi
lea    0x663(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
mov    -0x3c(%rbp),%ecx
mov    -0xc(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xc(%rbp)
mov    -0x3c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x3c(%rbp)
cmp    $0x0,%eax
jle    1a79 <figdisp_convbufout+0x959>
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
jmp    1a3c <figdisp_convbufout+0x91c>
jmp    1c8f <figdisp_convbufout+0xb6f>
mov    -0x8(%rbp),%rax
mov    %rax,-0x48(%rbp)
movl   $0x0,-0x4c(%rbp)
movl   $0x0,-0x50(%rbp)
xor    %eax,%eax
cmpl   $0x4,-0x50(%rbp)
mov    %al,-0x66(%rbp)
jge    1abc <figdisp_convbufout+0x99c>
mov    -0x4c(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x4c(%rbp)
mov    -0xc(%rbp),%ecx
shl    $0x1,%ecx
cmp    %ecx,%eax
setl   %al
mov    %al,-0x66(%rbp)
mov    -0x66(%rbp),%al
test   $0x1,%al
jne    1acc <figdisp_convbufout+0x9ac>
jmp    1af5 <figdisp_convbufout+0x9d5>
mov    -0x48(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x48(%rbp)
movsbl (%rax),%eax
cmp    $0x0,%eax
jne    1af0 <figdisp_convbufout+0x9d0>
mov    -0x50(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x50(%rbp)
jmp    1a94 <figdisp_convbufout+0x974>
cmpl   $0x4,-0x50(%rbp)
jge    1b16 <figdisp_convbufout+0x9f6>
movzwl -0x10(%rbp),%esi
lea    0x57e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x8(%rbp),%rax
movslq %ecx,%rcx
shl    $0x1,%rcx
add    %rcx,%rax
mov    %rax,-0x8(%rbp)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0xc(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xc(%rbp)
jmp    1c8f <figdisp_convbufout+0xb6f>
cmpl   $0x5,-0xc(%rbp)
jge    1b76 <figdisp_convbufout+0xa56>
movzwl -0x10(%rbp),%esi
lea    0x51e(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
movl   $0x0,-0x54(%rbp)
cmpl   $0x3,-0x54(%rbp)
jge    1bb9 <figdisp_convbufout+0xa99>
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    1b7d <figdisp_convbufout+0xa5d>
mov    -0x8(%rbp),%rax
movzwl (%rax),%eax
mov    %eax,-0x54(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0xc(%rbp),%eax
add    $0xfffffffc,%eax
mov    %eax,-0xc(%rbp)
mov    -0x54(%rbp),%eax
sub    $0x1,%eax
jne    1c78 <figdisp_convbufout+0xb58>
jmp    1c01 <figdisp_convbufout+0xae1>
cmpl   $0x2,-0xc(%rbp)
jge    1c22 <figdisp_convbufout+0xb02>
movzwl -0x10(%rbp),%esi
lea    0x472(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    1c99 <figdisp_convbufout+0xb79>
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movzwl (%rax),%edi
mov    $0x0,%al
call   1030 <htons@plt>
mov    %ax,%cx
mov    -0x8(%rbp),%rax
mov    %cx,(%rax)
mov    -0x8(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x8(%rbp)
mov    -0xc(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0xc(%rbp)
jmp    1c78 <figdisp_convbufout+0xb58>
jmp    1c8f <figdisp_convbufout+0xb6f>
movzwl -0x10(%rbp),%esi
lea    0x421(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
jmp    115e <figdisp_convbufout+0x3e>
jmp    1c99 <figdisp_convbufout+0xb79>
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<figdisp_convbufout>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %esi,%r12d
mov    %rdi,%rbx
mov    $0x1234,%edi
xor    %eax,%eax
call   1030 <htons@plt>
cmp    $0x1234,%eax
je     1149 <figdisp_convbufout+0x29>
test   %r12d,%r12d
jg     116b <figdisp_convbufout+0x4b>
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    %rbx,%r14
nopl   0x0(%rax,%rax,1)
mov    %r14,%rbx
mov    %r13d,%r12d
test   %r13d,%r13d
jle    1149 <figdisp_convbufout+0x29>
movzwl (%rbx),%r15d
mov    %r15d,%edi
xor    %eax,%eax
call   1030 <htons@plt>
lea    0x2(%rbx),%r14
lea    -0x1(%r12),%r13d
mov    %ax,(%rbx)
cmp    $0x21,%r15
ja     1565 <figdisp_convbufout+0x445>
lea    0xe6a(%rip),%rcx
movslq (%rcx,%r15,4),%rax
add    %rcx,%rax
jmp    *%rax
cmp    $0x2,%r12d
jb     166d <figdisp_convbufout+0x54d>
movzwl (%r14),%eax
mov    %ax,0x6(%rsp)
movzwl %ax,%ebp
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,(%r14)
add    %ebp,%ebp
add    $0x1,%ebp
cmp    %ebp,%r12d
jle    166d <figdisp_convbufout+0x54d>
add    $0x4,%rbx
sub    %ebp,%r13d
cmpw   $0x0,0x6(%rsp)
je     1158 <figdisp_convbufout+0x38>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movzwl (%rbx),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,(%rbx)
add    $0x2,%rbx
add    $0xffffffff,%ebp
cmp    $0x1,%ebp
ja     11f0 <figdisp_convbufout+0xd0>
jmp    1158 <figdisp_convbufout+0x38>
mov    $0x2,%r15w
cmp    $0x3,%r12d
jb     166d <figdisp_convbufout+0x54d>
movzwl 0x2(%rbx),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0x2(%rbx)
movzwl 0x4(%rbx),%r14d
movzwl %r14w,%ebp
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0x4(%rbx)
lea    0x2(%rbp,%rbp,2),%eax
cmp    %eax,%r12d
jbe    166d <figdisp_convbufout+0x54d>
add    $0x6,%rbx
sub    %eax,%r13d
test   %r14w,%r14w
je     1158 <figdisp_convbufout+0x38>
lea    0x0(%rbp,%rbp,2),%ebp
add    $0x1,%ebp
nopw   0x0(%rax,%rax,1)
movzwl (%rbx),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,(%rbx)
add    $0x2,%rbx
add    $0xffffffff,%ebp
cmp    $0x1,%ebp
ja     1270 <figdisp_convbufout+0x150>
jmp    1158 <figdisp_convbufout+0x38>
mov    $0x11,%r15w
cmp    $0x5,%r12d
jb     166d <figdisp_convbufout+0x54d>
movzwl 0x2(%rbx),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0x2(%rbx)
movzwl 0x4(%rbx),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0x4(%rbx)
movzwl 0x6(%rbx),%r13d
mov    %r13d,%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0x6(%rbx)
movzwl 0x8(%rbx),%ebp
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0x8(%rbx)
add    $0xfffffffb,%r12d
test   $0x7,%bpl
lea    0x0(%r13,%r13,2),%ebp
cmovne %r13d,%ebp
mov    %r12d,%r13d
sub    %ebp,%r13d
jb     166d <figdisp_convbufout+0x54d>
add    $0xa,%rbx
test   %ebp,%ebp
je     1158 <figdisp_convbufout+0x38>
add    $0x1,%ebp
nopl   0x0(%rax,%rax,1)
movzwl (%rbx),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,(%rbx)
add    $0x2,%rbx
add    $0xffffffff,%ebp
cmp    $0x1,%ebp
ja     1310 <figdisp_convbufout+0x1f0>
jmp    1158 <figdisp_convbufout+0x38>
mov    $0x18,%r15w
cmp    $0x7,%r12d
jb     166d <figdisp_convbufout+0x54d>
movzwl 0x2(%rbx),%r14d
mov    %r14d,%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0x2(%rbx)
movzwl 0x4(%rbx),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0x4(%rbx)
movzwl 0x6(%rbx),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0x6(%rbx)
movzwl 0x8(%rbx),%r13d
mov    %r13d,%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0x8(%rbx)
movzwl 0xa(%rbx),%edi
imul   %edi,%r13d
xor    %eax,%eax
call   1030 <htons@plt>
add    $0xfffffffa,%r12d
mov    %ax,0xa(%rbx)
cmp    $0x10,%r14d
jne    13a7 <figdisp_convbufout+0x287>
cmp    %r13d,%r12d
jl     166d <figdisp_convbufout+0x54d>
lea    0x1(%r13),%ebp
mov    %ebp,%eax
shr    %eax
cmp    %eax,%r12d
jb     166d <figdisp_convbufout+0x54d>
add    $0xc,%rbx
cmp    $0x10,%r14w
jne    1649 <figdisp_convbufout+0x529>
test   %r13d,%r13d
je     1651 <figdisp_convbufout+0x531>
movzwl (%rbx),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,(%rbx)
add    $0x2,%rbx
add    $0xffffffff,%ebp
cmp    $0x1,%ebp
jg     13d0 <figdisp_convbufout+0x2b0>
mov    %r13d,%eax
jmp    1653 <figdisp_convbufout+0x533>
lea    0x0(%r13,%r13,1),%ecx
xor    %eax,%eax
test   %ecx,%ecx
cmovle %eax,%ecx
xor    %edx,%edx
nop
cmp    %eax,%ecx
je     1661 <figdisp_convbufout+0x541>
cmpb   $0x1,(%r14,%rax,1)
adc    $0x0,%edx
add    $0x1,%rax
cmp    $0x2,%edx
jb     1400 <figdisp_convbufout+0x2e0>
jmp    14c9 <figdisp_convbufout+0x3a9>
mov    $0x1e,%r15w
cmp    $0x5,%r12d
jb     166d <figdisp_convbufout+0x54d>
movzwl 0x2(%rbx),%ebp
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0x2(%rbx)
movzwl 0x4(%rbx),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0x4(%rbx)
movzwl 0x6(%rbx),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0x6(%rbx)
add    $0xfffffffc,%r12d
mov    %r12d,%r13d
sub    %ebp,%r13d
jb     166d <figdisp_convbufout+0x54d>
add    $0x8,%rbx
test   %ebp,%ebp
je     1158 <figdisp_convbufout+0x38>
add    $0x1,%ebp
nopl   0x0(%rax,%rax,1)
movzwl (%rbx),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,(%rbx)
add    $0x2,%rbx
add    $0xffffffff,%ebp
cmp    $0x1,%ebp
ja     1480 <figdisp_convbufout+0x360>
jmp    1158 <figdisp_convbufout+0x38>
lea    0x0(%r13,%r13,1),%ecx
xor    %eax,%eax
test   %ecx,%ecx
cmovle %eax,%ecx
xor    %edx,%edx
nopl   0x0(%rax)
cmp    %eax,%ecx
je     1668 <figdisp_convbufout+0x548>
cmpb   $0x1,(%r14,%rax,1)
adc    $0x0,%edx
add    $0x1,%rax
cmp    $0x4,%edx
jb     14b0 <figdisp_convbufout+0x390>
add    $0x1,%eax
shr    %eax
lea    (%r14,%rax,2),%r14
sub    %eax,%r13d
jmp    1160 <figdisp_convbufout+0x40>
mov    $0x20,%r15w
cmp    $0x6,%r12d
jb     166d <figdisp_convbufout+0x54d>
movzwl 0x2(%rbx),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0x2(%rbx)
movzwl 0x4(%rbx),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0x4(%rbx)
movzwl 0x6(%rbx),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0x6(%rbx)
movzwl 0x8(%rbx),%ebp
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0x8(%rbx)
cmp    $0x1,%ebp
jne    163f <figdisp_convbufout+0x51f>
cmp    $0x7,%r12d
jb     166d <figdisp_convbufout+0x54d>
movzwl 0xa(%rbx),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0xa(%rbx)
movzwl 0xc(%rbx),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0xc(%rbx)
add    $0xe,%rbx
add    $0xfffffff9,%r12d
jmp    1656 <figdisp_convbufout+0x536>
lea    0xb3d(%rip),%rdi
mov    %r15d,%esi
xor    %eax,%eax
call   1040 <printf@plt>
jmp    1160 <figdisp_convbufout+0x40>
cmp    $0x2,%r12d
jb     168d <figdisp_convbufout+0x56d>
movzwl 0x2(%rbx),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,0x2(%rbx)
add    $0x4,%rbx
add    $0xfffffffe,%r12d
mov    %r12d,%r13d
mov    %rbx,%r14
test   %r13d,%r13d
je     166d <figdisp_convbufout+0x54d>
movzwl (%r14),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,(%r14)
add    $0x2,%r14
add    $0xffffffff,%r13d
test   %r13d,%r13d
je     166d <figdisp_convbufout+0x54d>
movzwl (%r14),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,(%r14)
add    $0x2,%r14
add    $0xffffffff,%r13d
test   %r13d,%r13d
je     166d <figdisp_convbufout+0x54d>
movzwl (%r14),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,(%r14)
add    $0x2,%r14
add    $0xffffffff,%r13d
test   %r13d,%r13d
je     166d <figdisp_convbufout+0x54d>
movzwl (%r14),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,(%r14)
add    $0x2,%r14
add    $0xffffffff,%r13d
test   %r13d,%r13d
je     166d <figdisp_convbufout+0x54d>
movzwl (%r14),%edi
xor    %eax,%eax
call   1030 <htons@plt>
mov    %ax,(%r14)
add    $0x2,%r14
add    $0xffffffff,%r13d
jmp    1160 <figdisp_convbufout+0x40>
add    $0xa,%rbx
add    $0xfffffffb,%r12d
jmp    1656 <figdisp_convbufout+0x536>
mov    %eax,%ecx
lea    (%rbx,%rcx,2),%rbx
jmp    1653 <figdisp_convbufout+0x533>
xor    %eax,%eax
sub    %eax,%r12d
mov    %r12d,%r13d
mov    %rbx,%r14
jmp    1160 <figdisp_convbufout+0x40>
mov    $0x1a,%r15w
jmp    166d <figdisp_convbufout+0x54d>
mov    $0x1f,%r15w
movzwl %r15w,%esi
lea    0xa10(%rip),%rdi
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1040 <printf@plt>
mov    $0x19,%r15w
jmp    166d <figdisp_convbufout+0x54d>

LLVM IR (-O0):
@.str = [33 x i8] c"Incomplete command %d detected!\0A\00"
@.str.1 = [30 x i8] c"Unknown command %d detected!\0A\00"
define void @figdisp_convbufout(i16* %0, i32 %1) {
%3 = alloca i16*
%4 = alloca i32
%5 = alloca i16
%6 = alloca i16
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i8*
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i8*
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
store i16* %0, i16** %3
store i32 %1, i32* %4
store i16 4660, i16* %5
%21 = load i16, i16* %5
%22 = zext i16 %21 to i32
%23 = load i16, i16* %5
%24 = zext i16 %23 to i32
%25 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %24)
%26 = icmp eq i32 %22, %25
br i1 %26, label %27, label %28
27: ; preds = %2
br label %671
28: ; preds = %2
br label %29
29: ; preds = %669, %28
%30 = load i32, i32* %4
%31 = icmp sgt i32 %30, 0
br i1 %31, label %32, label %670
32: ; preds = %29
%33 = load i16*, i16** %3
%34 = load i16, i16* %33
store i16 %34, i16* %6
%35 = load i16*, i16** %3
%36 = load i16, i16* %35
%37 = zext i16 %36 to i32
%38 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %37)
%39 = trunc i32 %38 to i16
%40 = load i16*, i16** %3
store i16 %39, i16* %40
%41 = load i16*, i16** %3
%42 = getelementptr inbounds i16, i16* %41, i32 1
store i16* %42, i16** %3
%43 = load i32, i32* %4
%44 = add nsw i32 %43, -1
store i32 %44, i32* %4
%45 = load i16, i16* %6
%46 = zext i16 %45 to i32
switch i32 %46, label %665 [
i32 25, label %47
i32 29, label %65
i32 5, label %83
i32 14, label %83
i32 27, label %83
i32 33, label %83
i32 23, label %101
i32 3, label %119
i32 11, label %119
i32 12, label %119
i32 18, label %119
i32 1, label %137
i32 4, label %137
i32 15, label %137
i32 16, label %137
i32 0, label %155
i32 7, label %155
i32 8, label %155
i32 9, label %155
i32 10, label %155
i32 19, label %155
i32 20, label %155
i32 21, label %155
i32 22, label %155
i32 28, label %155
i32 2, label %156
i32 6, label %212
i32 13, label %212
i32 17, label %260
i32 24, label %340
i32 26, label %451
i32 30, label %494
i32 31, label %556
i32 32, label %599
]
47: ; preds = %32
%48 = load i32, i32* %4
%49 = icmp slt i32 %48, 1
br i1 %49, label %50, label %54
50: ; preds = %47
%51 = load i16, i16* %6
%52 = zext i16 %51 to i32
%53 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %52)
br label %671
54: ; preds = %47
%55 = load i16*, i16** %3
%56 = load i16, i16* %55
%57 = zext i16 %56 to i32
%58 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %57)
%59 = trunc i32 %58 to i16
%60 = load i16*, i16** %3
store i16 %59, i16* %60
%61 = load i16*, i16** %3
%62 = getelementptr inbounds i16, i16* %61, i32 1
store i16* %62, i16** %3
%63 = load i32, i32* %4
%64 = add nsw i32 %63, -1
store i32 %64, i32* %4
br label %65
65: ; preds = %32, %54
%66 = load i32, i32* %4
%67 = icmp slt i32 %66, 1
br i1 %67, label %68, label %72
68: ; preds = %65
%69 = load i16, i16* %6
%70 = zext i16 %69 to i32
%71 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %70)
br label %671
72: ; preds = %65
%73 = load i16*, i16** %3
%74 = load i16, i16* %73
%75 = zext i16 %74 to i32
%76 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %75)
%77 = trunc i32 %76 to i16
%78 = load i16*, i16** %3
store i16 %77, i16* %78
%79 = load i16*, i16** %3
%80 = getelementptr inbounds i16, i16* %79, i32 1
store i16* %80, i16** %3
%81 = load i32, i32* %4
%82 = add nsw i32 %81, -1
store i32 %82, i32* %4
br label %83
83: ; preds = %32, %32, %32, %32, %72
%84 = load i32, i32* %4
%85 = icmp slt i32 %84, 1
br i1 %85, label %86, label %90
86: ; preds = %83
%87 = load i16, i16* %6
%88 = zext i16 %87 to i32
%89 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %88)
br label %671
90: ; preds = %83
%91 = load i16*, i16** %3
%92 = load i16, i16* %91
%93 = zext i16 %92 to i32
%94 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %93)
%95 = trunc i32 %94 to i16
%96 = load i16*, i16** %3
store i16 %95, i16* %96
%97 = load i16*, i16** %3
%98 = getelementptr inbounds i16, i16* %97, i32 1
store i16* %98, i16** %3
%99 = load i32, i32* %4
%100 = add nsw i32 %99, -1
store i32 %100, i32* %4
br label %101
101: ; preds = %32, %90
%102 = load i32, i32* %4
%103 = icmp slt i32 %102, 1
br i1 %103, label %104, label %108
104: ; preds = %101
%105 = load i16, i16* %6
%106 = zext i16 %105 to i32
%107 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %106)
br label %671
108: ; preds = %101
%109 = load i16*, i16** %3
%110 = load i16, i16* %109
%111 = zext i16 %110 to i32
%112 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %111)
%113 = trunc i32 %112 to i16
%114 = load i16*, i16** %3
store i16 %113, i16* %114
%115 = load i16*, i16** %3
%116 = getelementptr inbounds i16, i16* %115, i32 1
store i16* %116, i16** %3
%117 = load i32, i32* %4
%118 = add nsw i32 %117, -1
store i32 %118, i32* %4
br label %119
119: ; preds = %32, %32, %32, %32, %108
%120 = load i32, i32* %4
%121 = icmp slt i32 %120, 1
br i1 %121, label %122, label %126
122: ; preds = %119
%123 = load i16, i16* %6
%124 = zext i16 %123 to i32
%125 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %124)
br label %671
126: ; preds = %119
%127 = load i16*, i16** %3
%128 = load i16, i16* %127
%129 = zext i16 %128 to i32
%130 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %129)
%131 = trunc i32 %130 to i16
%132 = load i16*, i16** %3
store i16 %131, i16* %132
%133 = load i16*, i16** %3
%134 = getelementptr inbounds i16, i16* %133, i32 1
store i16* %134, i16** %3
%135 = load i32, i32* %4
%136 = add nsw i32 %135, -1
store i32 %136, i32* %4
br label %137
137: ; preds = %32, %32, %32, %32, %126
%138 = load i32, i32* %4
%139 = icmp slt i32 %138, 1
br i1 %139, label %140, label %144
140: ; preds = %137
%141 = load i16, i16* %6
%142 = zext i16 %141 to i32
%143 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %142)
br label %671
144: ; preds = %137
%145 = load i16*, i16** %3
%146 = load i16, i16* %145
%147 = zext i16 %146 to i32
%148 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %147)
%149 = trunc i32 %148 to i16
%150 = load i16*, i16** %3
store i16 %149, i16* %150
%151 = load i16*, i16** %3
%152 = getelementptr inbounds i16, i16* %151, i32 1
store i16* %152, i16** %3
%153 = load i32, i32* %4
%154 = add nsw i32 %153, -1
store i32 %154, i32* %4
br label %155
155: ; preds = %32, %32, %32, %32, %32, %32, %32, %32, %32, %32, %144
br label %669
156: ; preds = %32
%157 = load i32, i32* %4
%158 = icmp slt i32 %157, 2
br i1 %158, label %159, label %163
159: ; preds = %156
%160 = load i16, i16* %6
%161 = zext i16 %160 to i32
%162 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %161)
br label %671
163: ; preds = %156
%164 = load i16*, i16** %3
%165 = load i16, i16* %164
%166 = zext i16 %165 to i32
%167 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %166)
%168 = trunc i32 %167 to i16
%169 = load i16*, i16** %3
store i16 %168, i16* %169
%170 = load i16*, i16** %3
%171 = getelementptr inbounds i16, i16* %170, i32 1
store i16* %171, i16** %3
%172 = load i16*, i16** %3
%173 = load i16, i16* %172
%174 = zext i16 %173 to i32
store i32 %174, i32* %7
%175 = load i16*, i16** %3
%176 = load i16, i16* %175
%177 = zext i16 %176 to i32
%178 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %177)
%179 = trunc i32 %178 to i16
%180 = load i16*, i16** %3
store i16 %179, i16* %180
%181 = load i16*, i16** %3
%182 = getelementptr inbounds i16, i16* %181, i32 1
store i16* %182, i16** %3
%183 = load i32, i32* %7
%184 = mul nsw i32 %183, 3
store i32 %184, i32* %7
%185 = load i32, i32* %4
%186 = load i32, i32* %7
%187 = add nsw i32 %186, 2
%188 = icmp slt i32 %185, %187
br i1 %188, label %189, label %193
189: ; preds = %163
%190 = load i16, i16* %6
%191 = zext i16 %190 to i32
%192 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %191)
br label %671
193: ; preds = %163
%194 = load i32, i32* %7
%195 = add nsw i32 %194, 2
%196 = load i32, i32* %4
%197 = sub nsw i32 %196, %195
store i32 %197, i32* %4
br label %198
198: ; preds = %202, %193
%199 = load i32, i32* %7
%200 = add nsw i32 %199, -1
store i32 %200, i32* %7
%201 = icmp sgt i32 %199, 0
br i1 %201, label %202, label %211
202: ; preds = %198
%203 = load i16*, i16** %3
%204 = load i16, i16* %203
%205 = zext i16 %204 to i32
%206 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %205)
%207 = trunc i32 %206 to i16
%208 = load i16*, i16** %3
store i16 %207, i16* %208
%209 = load i16*, i16** %3
%210 = getelementptr inbounds i16, i16* %209, i32 1
store i16* %210, i16** %3
br label %198
211: ; preds = %198
br label %669
212: ; preds = %32, %32
%213 = load i32, i32* %4
%214 = icmp slt i32 %213, 1
br i1 %214, label %215, label %219
215: ; preds = %212
%216 = load i16, i16* %6
%217 = zext i16 %216 to i32
%218 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %217)
br label %671
219: ; preds = %212
%220 = load i16*, i16** %3
%221 = load i16, i16* %220
%222 = zext i16 %221 to i32
store i32 %222, i32* %8
%223 = load i16*, i16** %3
%224 = load i16, i16* %223
%225 = zext i16 %224 to i32
%226 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %225)
%227 = trunc i32 %226 to i16
%228 = load i16*, i16** %3
store i16 %227, i16* %228
%229 = load i16*, i16** %3
%230 = getelementptr inbounds i16, i16* %229, i32 1
store i16* %230, i16** %3
%231 = load i32, i32* %8
%232 = mul nsw i32 %231, 2
store i32 %232, i32* %8
%233 = load i32, i32* %4
%234 = load i32, i32* %8
%235 = add nsw i32 %234, 1
%236 = icmp slt i32 %233, %235
br i1 %236, label %237, label %241
237: ; preds = %219
%238 = load i16, i16* %6
%239 = zext i16 %238 to i32
%240 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %239)
br label %671
241: ; preds = %219
%242 = load i32, i32* %8
%243 = add nsw i32 %242, 1
%244 = load i32, i32* %4
%245 = sub nsw i32 %244, %243
store i32 %245, i32* %4
br label %246
246: ; preds = %250, %241
%247 = load i32, i32* %8
%248 = add nsw i32 %247, -1
store i32 %248, i32* %8
%249 = icmp sgt i32 %247, 0
br i1 %249, label %250, label %259
250: ; preds = %246
%251 = load i16*, i16** %3
%252 = load i16, i16* %251
%253 = zext i16 %252 to i32
%254 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %253)
%255 = trunc i32 %254 to i16
%256 = load i16*, i16** %3
store i16 %255, i16* %256
%257 = load i16*, i16** %3
%258 = getelementptr inbounds i16, i16* %257, i32 1
store i16* %258, i16** %3
br label %246
259: ; preds = %246
br label %669
260: ; preds = %32
%261 = load i32, i32* %4
%262 = icmp slt i32 %261, 4
br i1 %262, label %263, label %267
263: ; preds = %260
%264 = load i16, i16* %6
%265 = zext i16 %264 to i32
%266 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %265)
br label %671
267: ; preds = %260
%268 = load i16*, i16** %3
%269 = load i16, i16* %268
%270 = zext i16 %269 to i32
%271 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %270)
%272 = trunc i32 %271 to i16
%273 = load i16*, i16** %3
store i16 %272, i16* %273
%274 = load i16*, i16** %3
%275 = getelementptr inbounds i16, i16* %274, i32 1
store i16* %275, i16** %3
%276 = load i16*, i16** %3
%277 = load i16, i16* %276
%278 = zext i16 %277 to i32
%279 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %278)
%280 = trunc i32 %279 to i16
%281 = load i16*, i16** %3
store i16 %280, i16* %281
%282 = load i16*, i16** %3
%283 = getelementptr inbounds i16, i16* %282, i32 1
store i16* %283, i16** %3
%284 = load i16*, i16** %3
%285 = load i16, i16* %284
%286 = zext i16 %285 to i32
store i32 %286, i32* %9
%287 = load i16*, i16** %3
%288 = load i16, i16* %287
%289 = zext i16 %288 to i32
%290 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %289)
%291 = trunc i32 %290 to i16
%292 = load i16*, i16** %3
store i16 %291, i16* %292
%293 = load i16*, i16** %3
%294 = getelementptr inbounds i16, i16* %293, i32 1
store i16* %294, i16** %3
%295 = load i16*, i16** %3
%296 = load i16, i16* %295
%297 = zext i16 %296 to i32
%298 = and i32 %297, 7
store i32 %298, i32* %10
%299 = load i16*, i16** %3
%300 = load i16, i16* %299
%301 = zext i16 %300 to i32
%302 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %301)
%303 = trunc i32 %302 to i16
%304 = load i16*, i16** %3
store i16 %303, i16* %304
%305 = load i16*, i16** %3
%306 = getelementptr inbounds i16, i16* %305, i32 1
store i16* %306, i16** %3
%307 = load i32, i32* %4
%308 = sub nsw i32 %307, 4
store i32 %308, i32* %4
%309 = load i32, i32* %10
%310 = icmp ne i32 %309, 0
br i1 %310, label %314, label %311
311: ; preds = %267
%312 = load i32, i32* %9
%313 = mul nsw i32 %312, 3
store i32 %313, i32* %9
br label %314
314: ; preds = %311, %267
%315 = load i32, i32* %4
%316 = load i32, i32* %9
%317 = icmp slt i32 %315, %316
br i1 %317, label %318, label %322
318: ; preds = %314
%319 = load i16, i16* %6
%320 = zext i16 %319 to i32
%321 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %320)
br label %671
322: ; preds = %314
%323 = load i32, i32* %9
%324 = load i32, i32* %4
%325 = sub nsw i32 %324, %323
store i32 %325, i32* %4
br label %326
326: ; preds = %330, %322
%327 = load i32, i32* %9
%328 = add nsw i32 %327, -1
store i32 %328, i32* %9
%329 = icmp sgt i32 %327, 0
br i1 %329, label %330, label %339
330: ; preds = %326
%331 = load i16*, i16** %3
%332 = load i16, i16* %331
%333 = zext i16 %332 to i32
%334 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %333)
%335 = trunc i32 %334 to i16
%336 = load i16*, i16** %3
store i16 %335, i16* %336
%337 = load i16*, i16** %3
%338 = getelementptr inbounds i16, i16* %337, i32 1
store i16* %338, i16** %3
br label %326
339: ; preds = %326
br label %669
340: ; preds = %32
%341 = load i32, i32* %4
%342 = icmp slt i32 %341, 6
br i1 %342, label %343, label %347
343: ; preds = %340
%344 = load i16, i16* %6
%345 = zext i16 %344 to i32
%346 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %345)
br label %671
347: ; preds = %340
%348 = load i16*, i16** %3
%349 = load i16, i16* %348
%350 = zext i16 %349 to i32
store i32 %350, i32* %11
%351 = load i16*, i16** %3
%352 = load i16, i16* %351
%353 = zext i16 %352 to i32
%354 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %353)
%355 = trunc i32 %354 to i16
%356 = load i16*, i16** %3
store i16 %355, i16* %356
%357 = load i16*, i16** %3
%358 = getelementptr inbounds i16, i16* %357, i32 1
store i16* %358, i16** %3
%359 = load i16*, i16** %3
%360 = load i16, i16* %359
%361 = zext i16 %360 to i32
%362 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %361)
%363 = trunc i32 %362 to i16
%364 = load i16*, i16** %3
store i16 %363, i16* %364
%365 = load i16*, i16** %3
%366 = getelementptr inbounds i16, i16* %365, i32 1
store i16* %366, i16** %3
%367 = load i16*, i16** %3
%368 = load i16, i16* %367
%369 = zext i16 %368 to i32
%370 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %369)
%371 = trunc i32 %370 to i16
%372 = load i16*, i16** %3
store i16 %371, i16* %372
%373 = load i16*, i16** %3
%374 = getelementptr inbounds i16, i16* %373, i32 1
store i16* %374, i16** %3
%375 = load i16*, i16** %3
%376 = load i16, i16* %375
%377 = zext i16 %376 to i32
store i32 %377, i32* %12
%378 = load i16*, i16** %3
%379 = load i16, i16* %378
%380 = zext i16 %379 to i32
%381 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %380)
%382 = trunc i32 %381 to i16
%383 = load i16*, i16** %3
store i16 %382, i16* %383
%384 = load i16*, i16** %3
%385 = getelementptr inbounds i16, i16* %384, i32 1
store i16* %385, i16** %3
%386 = load i16*, i16** %3
%387 = load i16, i16* %386
%388 = zext i16 %387 to i32
%389 = load i32, i32* %12
%390 = mul nsw i32 %389, %388
store i32 %390, i32* %12
%391 = load i16*, i16** %3
%392 = load i16, i16* %391
%393 = zext i16 %392 to i32
%394 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %393)
%395 = trunc i32 %394 to i16
%396 = load i16*, i16** %3
store i16 %395, i16* %396
%397 = load i16*, i16** %3
%398 = getelementptr inbounds i16, i16* %397, i32 1
store i16* %398, i16** %3
%399 = load i32, i32* %4
%400 = sub nsw i32 %399, 5
store i32 %400, i32* %4
%401 = load i32, i32* %11
%402 = icmp eq i32 %401, 16
br i1 %402, label %403, label %407
403: ; preds = %347
%404 = load i32, i32* %4
%405 = load i32, i32* %12
%406 = icmp slt i32 %404, %405
br i1 %406, label %413, label %407
407: ; preds = %403, %347
%408 = load i32, i32* %4
%409 = load i32, i32* %12
%410 = add nsw i32 %409, 1
%411 = sdiv i32 %410, 2
%412 = icmp slt i32 %408, %411
br i1 %412, label %413, label %417
413: ; preds = %407, %403
%414 = load i16, i16* %6
%415 = zext i16 %414 to i32
%416 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %415)
br label %671
417: ; preds = %407
%418 = load i32, i32* %11
%419 = icmp eq i32 %418, 16
br i1 %419, label %420, label %438
420: ; preds = %417
%421 = load i32, i32* %12
%422 = load i32, i32* %4
%423 = sub nsw i32 %422, %421
store i32 %423, i32* %4
br label %424
424: ; preds = %428, %420
%425 = load i32, i32* %12
%426 = add nsw i32 %425, -1
store i32 %426, i32* %12
%427 = icmp sgt i32 %425, 0
br i1 %427, label %428, label %437
428: ; preds = %424
%429 = load i16*, i16** %3
%430 = load i16, i16* %429
%431 = zext i16 %430 to i32
%432 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %431)
%433 = trunc i32 %432 to i16
%434 = load i16*, i16** %3
store i16 %433, i16* %434
%435 = load i16*, i16** %3
%436 = getelementptr inbounds i16, i16* %435, i32 1
store i16* %436, i16** %3
br label %424
437: ; preds = %424
br label %450
438: ; preds = %417
%439 = load i32, i32* %12
%440 = add nsw i32 %439, 1
%441 = sdiv i32 %440, 2
%442 = load i32, i32* %4
%443 = sub nsw i32 %442, %441
store i32 %443, i32* %4
%444 = load i32, i32* %12
%445 = add nsw i32 %444, 1
%446 = sdiv i32 %445, 2
%447 = load i16*, i16** %3
%448 = sext i32 %446 to i64
%449 = getelementptr inbounds i16, i16* %447, i64 %448
store i16* %449, i16** %3
br label %450
450: ; preds = %438, %437
br label %669
451: ; preds = %32
%452 = load i16*, i16** %3
%453 = bitcast i16* %452 to i8*
store i8* %453, i8** %13
store i32 0, i32* %14
store i32 0, i32* %15
br label %454
454: ; preds = %474, %451
%455 = load i32, i32* %15
%456 = icmp slt i32 %455, 2
br i1 %456, label %457, label %463
457: ; preds = %454
%458 = load i32, i32* %14
%459 = add nsw i32 %458, 1
store i32 %459, i32* %14
%460 = load i32, i32* %4
%461 = mul nsw i32 %460, 2
%462 = icmp slt i32 %458, %461
br label %463
463: ; preds = %457, %454
%464 = phi i1 [ false, %454 ], [ %462, %457 ]
br i1 %464, label %465, label %475
465: ; preds = %463
%466 = load i8*, i8** %13
%467 = getelementptr inbounds i8, i8* %466, i32 1
store i8* %467, i8** %13
%468 = load i8, i8* %466
%469 = sext i8 %468 to i32
%470 = icmp eq i32 %469, 0
br i1 %470, label %471, label %474
471: ; preds = %465
%472 = load i32, i32* %15
%473 = add nsw i32 %472, 1
store i32 %473, i32* %15
br label %474
474: ; preds = %471, %465
br label %454
475: ; preds = %463
%476 = load i32, i32* %15
%477 = icmp slt i32 %476, 2
br i1 %477, label %478, label %482
478: ; preds = %475
%479 = load i16, i16* %6
%480 = zext i16 %479 to i32
%481 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %480)
br label %671
482: ; preds = %475
%483 = load i32, i32* %14
%484 = add nsw i32 %483, 1
%485 = sdiv i32 %484, 2
%486 = load i16*, i16** %3
%487 = sext i32 %485 to i64
%488 = getelementptr inbounds i16, i16* %486, i64 %487
store i16* %488, i16** %3
%489 = load i32, i32* %14
%490 = add nsw i32 %489, 1
%491 = sdiv i32 %490, 2
%492 = load i32, i32* %4
%493 = sub nsw i32 %492, %491
store i32 %493, i32* %4
br label %669
494: ; preds = %32
%495 = load i32, i32* %4
%496 = icmp slt i32 %495, 4
br i1 %496, label %497, label %501
497: ; preds = %494
%498 = load i16, i16* %6
%499 = zext i16 %498 to i32
%500 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %499)
br label %671
501: ; preds = %494
%502 = load i16*, i16** %3
%503 = load i16, i16* %502
%504 = zext i16 %503 to i32
store i32 %504, i32* %16
%505 = load i16*, i16** %3
%506 = load i16, i16* %505
%507 = zext i16 %506 to i32
%508 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %507)
%509 = trunc i32 %508 to i16
%510 = load i16*, i16** %3
store i16 %509, i16* %510
%511 = load i16*, i16** %3
%512 = getelementptr inbounds i16, i16* %511, i32 1
store i16* %512, i16** %3
%513 = load i16*, i16** %3
%514 = load i16, i16* %513
%515 = zext i16 %514 to i32
%516 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %515)
%517 = trunc i32 %516 to i16
%518 = load i16*, i16** %3
store i16 %517, i16* %518
%519 = load i16*, i16** %3
%520 = getelementptr inbounds i16, i16* %519, i32 1
store i16* %520, i16** %3
%521 = load i16*, i16** %3
%522 = load i16, i16* %521
%523 = zext i16 %522 to i32
%524 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %523)
%525 = trunc i32 %524 to i16
%526 = load i16*, i16** %3
store i16 %525, i16* %526
%527 = load i16*, i16** %3
%528 = getelementptr inbounds i16, i16* %527, i32 1
store i16* %528, i16** %3
%529 = load i32, i32* %4
%530 = sub nsw i32 %529, 3
store i32 %530, i32* %4
%531 = load i32, i32* %4
%532 = load i32, i32* %16
%533 = icmp slt i32 %531, %532
br i1 %533, label %534, label %538
534: ; preds = %501
%535 = load i16, i16* %6
%536 = zext i16 %535 to i32
%537 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %536)
br label %671
538: ; preds = %501
%539 = load i32, i32* %16
%540 = load i32, i32* %4
%541 = sub nsw i32 %540, %539
store i32 %541, i32* %4
br label %542
542: ; preds = %546, %538
%543 = load i32, i32* %16
%544 = add nsw i32 %543, -1
store i32 %544, i32* %16
%545 = icmp sgt i32 %543, 0
br i1 %545, label %546, label %555
546: ; preds = %542
%547 = load i16*, i16** %3
%548 = load i16, i16* %547
%549 = zext i16 %548 to i32
%550 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %549)
%551 = trunc i32 %550 to i16
%552 = load i16*, i16** %3
store i16 %551, i16* %552
%553 = load i16*, i16** %3
%554 = getelementptr inbounds i16, i16* %553, i32 1
store i16* %554, i16** %3
br label %542
555: ; preds = %542
br label %669
556: ; preds = %32
%557 = load i16*, i16** %3
%558 = bitcast i16* %557 to i8*
store i8* %558, i8** %17
store i32 0, i32* %18
store i32 0, i32* %19
br label %559
559: ; preds = %579, %556
%560 = load i32, i32* %19
%561 = icmp slt i32 %560, 4
br i1 %561, label %562, label %568
562: ; preds = %559
%563 = load i32, i32* %18
%564 = add nsw i32 %563, 1
store i32 %564, i32* %18
%565 = load i32, i32* %4
%566 = mul nsw i32 %565, 2
%567 = icmp slt i32 %563, %566
br label %568
568: ; preds = %562, %559
%569 = phi i1 [ false, %559 ], [ %567, %562 ]
br i1 %569, label %570, label %580
570: ; preds = %568
%571 = load i8*, i8** %17
%572 = getelementptr inbounds i8, i8* %571, i32 1
store i8* %572, i8** %17
%573 = load i8, i8* %571
%574 = sext i8 %573 to i32
%575 = icmp eq i32 %574, 0
br i1 %575, label %576, label %579
576: ; preds = %570
%577 = load i32, i32* %19
%578 = add nsw i32 %577, 1
store i32 %578, i32* %19
br label %579
579: ; preds = %576, %570
br label %559
580: ; preds = %568
%581 = load i32, i32* %19
%582 = icmp slt i32 %581, 4
br i1 %582, label %583, label %587
583: ; preds = %580
%584 = load i16, i16* %6
%585 = zext i16 %584 to i32
%586 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %585)
br label %671
587: ; preds = %580
%588 = load i32, i32* %18
%589 = add nsw i32 %588, 1
%590 = sdiv i32 %589, 2
%591 = load i16*, i16** %3
%592 = sext i32 %590 to i64
%593 = getelementptr inbounds i16, i16* %591, i64 %592
store i16* %593, i16** %3
%594 = load i32, i32* %18
%595 = add nsw i32 %594, 1
%596 = sdiv i32 %595, 2
%597 = load i32, i32* %4
%598 = sub nsw i32 %597, %596
store i32 %598, i32* %4
br label %669
599: ; preds = %32
%600 = load i32, i32* %4
%601 = icmp slt i32 %600, 5
br i1 %601, label %602, label %606
602: ; preds = %599
%603 = load i16, i16* %6
%604 = zext i16 %603 to i32
%605 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %604)
br label %671
606: ; preds = %599
store i32 0, i32* %20
br label %607
607: ; preds = %619, %606
%608 = load i32, i32* %20
%609 = icmp slt i32 %608, 3
br i1 %609, label %610, label %622
610: ; preds = %607
%611 = load i16*, i16** %3
%612 = load i16, i16* %611
%613 = zext i16 %612 to i32
%614 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %613)
%615 = trunc i32 %614 to i16
%616 = load i16*, i16** %3
store i16 %615, i16* %616
%617 = load i16*, i16** %3
%618 = getelementptr inbounds i16, i16* %617, i32 1
store i16* %618, i16** %3
br label %619
619: ; preds = %610
%620 = load i32, i32* %20
%621 = add nsw i32 %620, 1
store i32 %621, i32* %20
br label %607
622: ; preds = %607
%623 = load i16*, i16** %3
%624 = load i16, i16* %623
%625 = zext i16 %624 to i32
store i32 %625, i32* %20
%626 = load i16*, i16** %3
%627 = load i16, i16* %626
%628 = zext i16 %627 to i32
%629 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %628)
%630 = trunc i32 %629 to i16
%631 = load i16*, i16** %3
store i16 %630, i16* %631
%632 = load i16*, i16** %3
%633 = getelementptr inbounds i16, i16* %632, i32 1
store i16* %633, i16** %3
%634 = load i32, i32* %4
%635 = sub nsw i32 %634, 4
store i32 %635, i32* %4
%636 = load i32, i32* %20
switch i32 %636, label %664 [
i32 1, label %637
]
637: ; preds = %622
%638 = load i32, i32* %4
%639 = icmp slt i32 %638, 2
br i1 %639, label %640, label %644
640: ; preds = %637
%641 = load i16, i16* %6
%642 = zext i16 %641 to i32
%643 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([33 x i8], [33 x i8]* @.str, i64 0, i64 0), i32 %642)
br label %671
644: ; preds = %637
%645 = load i16*, i16** %3
%646 = load i16, i16* %645
%647 = zext i16 %646 to i32
%648 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %647)
%649 = trunc i32 %648 to i16
%650 = load i16*, i16** %3
store i16 %649, i16* %650
%651 = load i16*, i16** %3
%652 = getelementptr inbounds i16, i16* %651, i32 1
store i16* %652, i16** %3
%653 = load i16*, i16** %3
%654 = load i16, i16* %653
%655 = zext i16 %654 to i32
%656 = call i32 (i32, ...) bitcast (i32 (...)* @htons to i32 (i32, ...)*)(i32 %655)
%657 = trunc i32 %656 to i16
%658 = load i16*, i16** %3
store i16 %657, i16* %658
%659 = load i16*, i16** %3
%660 = getelementptr inbounds i16, i16* %659, i32 1
store i16* %660, i16** %3
%661 = load i32, i32* %4
%662 = sub nsw i32 %661, 2
store i32 %662, i32* %4
br label %663
663: ; preds = %644
br label %664
664: ; preds = %663, %622
br label %669
665: ; preds = %32
%666 = load i16, i16* %6
%667 = zext i16 %666 to i32
%668 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.1, i64 0, i64 0), i32 %667)
br label %669
669: ; preds = %665, %664, %587, %555, %482, %450, %339, %259, %211, %155
br label %29
670: ; preds = %29
br label %671
671: ; preds = %670, %640, %602, %583, %534, %497, %478, %413, %343, %318, %263, %237, %215, %189, %159, %140, %122, %104, %86, %68, %50, %27
ret void
}

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