void genlongbmp(int bitarray[0x10000][16], int dpi, int tinynum) {
  char header_string[17];
  int header[16][16];
  int hdrlen;
  int startcol;
  unsigned leftcol[0x1000][16];
  int d1, d2, d3, d4;
  int codept;
  int thisrow;
  unsigned toprow[16][16];
  char hexdigit[16][5] = {{0x6, 0x9, 0x9, 0x9, 0x6}, {0x2, 0x6, 0x2, 0x2, 0x7},
                          {0xF, 0x1, 0xF, 0x8, 0xF}, {0xE, 0x1, 0x7, 0x1, 0xE},
                          {0x9, 0x9, 0xF, 0x1, 0x1}, {0xF, 0x8, 0xF, 0x1, 0xF},
                          {0x6, 0x8, 0xE, 0x9, 0x6}, {0xF, 0x1, 0x2, 0x4, 0x4},
                          {0x6, 0x9, 0x6, 0x9, 0x6}, {0x6, 0x9, 0x7, 0x1, 0x6},
                          {0xF, 0x9, 0xF, 0x9, 0x9}, {0xE, 0x9, 0xE, 0x9, 0xE},
                          {0x7, 0x8, 0x8, 0x8, 0x7}, {0xE, 0x9, 0x9, 0x9, 0xE},
                          {0xF, 0x8, 0xE, 0x8, 0xF}, {0xF, 0x8, 0xE, 0x8, 0x8}};
  int digitrow;
  int DataOffset = 14 + 40 + 8;
  int ImageSize;
  int FileSize;
  int Width, Height;
  int ppm;
  int i, j, k;
  unsigned bytesout;
  void output4(int), output2(int);
  Width = 18 * 16;
  Height = 4099 * 16;
  ImageSize = Height * (Width / 8);
  FileSize = DataOffset + ImageSize;
  if (dpi == 0)
    dpi = 96;
  ppm = (int)((double)dpi * 100.0 / 2.54 + 0.5);
  putchar('B');
  putchar('M');
  output4(FileSize);
  output4(0x0000);
  output4(DataOffset);
  output4(40);
  output4(Width);
  output4(Height);
  output2(1);
  output2(1);
  output4(0);
  output4(ImageSize);
  output4(ppm);
  output4(ppm);
  output4(2);
  output4(2);
  output4(0x00000000);
  output4(0x00FFFFFF);
  memset((void *)header, 0, 16 * 16 * sizeof(int));
  memset((void *)header_string, ' ', 16 * sizeof(char));
  header_string[16] = '\0';
  hdrlen = strlen("GNU Unifont 6.3");
  if (hdrlen > 16)
    hdrlen = 16;
  startcol = 8 - ((hdrlen + 1) >> 1);
  strncpy(&header_string[startcol], "GNU Unifont 6.3", hdrlen);
  for (j = 0; j < 16; j++) {
    for (i = 0; i < 16; i++) {
      header[i][j] = bitarray[(unsigned)header_string[j]][i];
    }
  }
  memset((void *)leftcol, 0, 4096 * 16 * sizeof(unsigned));
  for (codept = 0x0000; codept < 0x10000; codept += 0x10) {
    d1 = (codept >> 12) & 0xF;
    d2 = (codept >> 8) & 0xF;
    d3 = (codept >> 4) & 0xF;
    thisrow = codept >> 4;
    for (digitrow = 0; digitrow < 5; digitrow++) {
      leftcol[thisrow][2 + digitrow] =
          (hexdigit[d1][digitrow] << 10) | (hexdigit[d2][digitrow] << 4);
    }
    for (digitrow = 0; digitrow < 5; digitrow++) {
      leftcol[thisrow][9 + digitrow] = hexdigit[d3][digitrow] << 10;
    }
    leftcol[thisrow][9 + 4] |= 0xF << 4;
    for (i = 0; i < 15; i++) {
      leftcol[thisrow][i] |= 0x00000002;
    }
    leftcol[thisrow][15] = 0x0000FFFE;
    if (d3 == 0xF) {
      leftcol[thisrow][15] |= 0x00FF0000;
    }
    if ((thisrow % 0x40) == 0x3F) {
      leftcol[thisrow][15] |= 0xFFFF0000;
    }
  }
  memset((void *)toprow, 0, 16 * 16 * sizeof(unsigned));
  for (codept = 0x0; codept <= 0xF; codept++) {
    d1 = (codept >> 12) & 0xF;
    d2 = (codept >> 8) & 0xF;
    d3 = (codept >> 4) & 0xF;
    d4 = codept & 0xF;
    for (digitrow = 0; digitrow < 5; digitrow++) {
      toprow[6 + digitrow][codept] = hexdigit[d4][digitrow] << 6;
    }
  }
  for (j = 0; j < 16; j++) {
    toprow[15][j] = 0x0000;
  }
  for (j = 0; j < 16; j++) {
    toprow[14][j] |= 0xFFFF;
  }
  for (i = 13; i >= 0; i--) {
    for (j = 0; j < 16; j++) {
      toprow[i][j] |= 0x0001;
    }
  }
  for (i = 0xFFF0; i >= 0; i -= 0x10) {
    thisrow = i >> 4;
    for (j = 15; j >= 0; j--) {
      putchar((~leftcol[thisrow][j] >> 24) & 0xFF);
      putchar((~leftcol[thisrow][j] >> 16) & 0xFF);
      putchar((~leftcol[thisrow][j] >> 8) & 0xFF);
      putchar(~leftcol[thisrow][j] & 0xFF);
      for (k = 0; k < 16; k++) {
        bytesout = ~bitarray[i + k][j] & 0xFFFF;
        putchar((bytesout >> 8) & 0xFF);
        putchar(bytesout & 0xFF);
      }
    }
  }
  putchar(0x00);
  putchar(0x00);
  putchar(0x00);
  putchar(0x01);
  for (j = 0; j < 16; j++) {
    putchar((~toprow[15][j] >> 8) & 0xFF);
    putchar(~toprow[15][j] & 0xFF);
  }
  putchar(0xFF);
  putchar(0xFF);
  putchar(0xFF);
  putchar(0xFC);
  for (j = 0; j < 16; j++) {
    putchar((~toprow[14][j] >> 8) & 0xFF);
    putchar(~toprow[14][j] & 0xFF);
  }
  for (i = 13; i >= 0; i--) {
    putchar(0xFF);
    putchar(0xFF);
    putchar(0xFF);
    putchar(0xFD);
    for (j = 0; j < 16; j++) {
      putchar((~toprow[i][j] >> 8) & 0xFF);
      putchar(~toprow[i][j] & 0xFF);
    }
  }
  for (i = 7; i >= 0; i--) {
    for (j = 0; j < 18; j++) {
      putchar(0xFF);
      putchar(0xFF);
    }
  }
  for (i = 15; i >= 0; i--) {
    putchar(0xFF);
    putchar(0xFF);
    putchar(0xFF);
    putchar(0xFF);
    for (j = 0; j < 16; j++) {
      bytesout = ~header[i][j] & 0xFFFF;
      putchar((bytesout >> 8) & 0xFF);
      putchar(bytesout & 0xFF);
    }
  }
  for (i = 7; i >= 0; i--) {
    for (j = 0; j < 18; j++) {
      putchar(0xFF);
      putchar(0xFF);
    }
  }
  return;
}


x86 assembly (clang, -O0):
<genlongbmp>:
push   %rbp
mov    %rsp,%rbp
sub    $0x408e0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
lea    -0x408b0(%rbp),%rdi
lea    0xe9d(%rip),%rsi
mov    $0x50,%edx
call   1060 <memcpy@plt>
movl   $0x3e,-0x408b8(%rbp)
movl   $0x120,-0x408c4(%rbp)
movl   $0x10030,-0x408c8(%rbp)
mov    -0x408c8(%rbp),%eax
mov    %eax,-0x408e0(%rbp)
mov    -0x408c4(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x408e0(%rbp),%eax
imul   %ecx,%eax
mov    %eax,-0x408bc(%rbp)
mov    -0x408b8(%rbp),%eax
add    -0x408bc(%rbp),%eax
mov    %eax,-0x408c0(%rbp)
cmpl   $0x0,-0xc(%rbp)
jne    11f9 <genlongbmp+0x99>
movl   $0x60,-0xc(%rbp)
cvtsi2sdl -0xc(%rbp),%xmm0
movsd  0xe0a(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xdf6(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  0xde2(%rip),%xmm1
addsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x408cc(%rbp)
mov    $0x42,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0x4d,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x408c0(%rbp),%edi
call   1070 <output4@plt>
xor    %edi,%edi
call   1070 <output4@plt>
mov    -0x408b8(%rbp),%edi
call   1070 <output4@plt>
mov    $0x28,%edi
call   1070 <output4@plt>
mov    -0x408c4(%rbp),%edi
call   1070 <output4@plt>
mov    -0x408c8(%rbp),%edi
call   1070 <output4@plt>
mov    $0x1,%edi
call   1080 <output2@plt>
mov    $0x1,%edi
call   1080 <output2@plt>
xor    %edi,%edi
call   1070 <output4@plt>
mov    -0x408bc(%rbp),%edi
call   1070 <output4@plt>
mov    -0x408cc(%rbp),%edi
call   1070 <output4@plt>
mov    -0x408cc(%rbp),%edi
call   1070 <output4@plt>
mov    $0x2,%edi
call   1070 <output4@plt>
mov    $0x2,%edi
call   1070 <output4@plt>
xor    %edi,%edi
call   1070 <output4@plt>
mov    $0xffffff,%edi
call   1070 <output4@plt>
lea    -0x430(%rbp),%rdi
xor    %esi,%esi
mov    $0x400,%edx
call   1050 <memset@plt>
lea    -0x30(%rbp),%rdi
mov    $0x20,%esi
mov    $0x10,%edx
call   1050 <memset@plt>
movb   $0x0,-0x20(%rbp)
movl   $0xf,-0x434(%rbp)
cmpl   $0x10,-0x434(%rbp)
jle    132d <genlongbmp+0x1cd>
movl   $0x10,-0x434(%rbp)
mov    -0x434(%rbp),%ecx
add    $0x1,%ecx
sar    $0x1,%ecx
mov    $0x8,%eax
sub    %ecx,%eax
mov    %eax,-0x438(%rbp)
movslq -0x438(%rbp),%rax
lea    -0x30(%rbp),%rdi
add    %rax,%rdi
movslq -0x434(%rbp),%rdx
lea    0xd0e(%rip),%rsi
call   1040 <strncpy@plt>
movl   $0x0,-0x408d4(%rbp)
cmpl   $0x10,-0x408d4(%rbp)
jge    1404 <genlongbmp+0x2a4>
movl   $0x0,-0x408d0(%rbp)
cmpl   $0x10,-0x408d0(%rbp)
jge    13eb <genlongbmp+0x28b>
mov    -0x8(%rbp),%rax
movslq -0x408d4(%rbp),%rcx
movsbl -0x30(%rbp,%rcx,1),%ecx
mov    %ecx,%ecx
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x408d0(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
movslq -0x408d0(%rbp),%rcx
lea    -0x430(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x408d4(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x408d0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x408d0(%rbp)
jmp    1388 <genlongbmp+0x228>
jmp    13f0 <genlongbmp+0x290>
mov    -0x408d4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x408d4(%rbp)
jmp    1371 <genlongbmp+0x211>
lea    -0x40440(%rbp),%rdi
xor    %esi,%esi
mov    $0x40000,%edx
call   1050 <memset@plt>
movl   $0x0,-0x40454(%rbp)
cmpl   $0x10000,-0x40454(%rbp)
jge    168b <genlongbmp+0x52b>
mov    -0x40454(%rbp),%eax
sar    $0xc,%eax
and    $0xf,%eax
mov    %eax,-0x40444(%rbp)
mov    -0x40454(%rbp),%eax
sar    $0x8,%eax
and    $0xf,%eax
mov    %eax,-0x40448(%rbp)
mov    -0x40454(%rbp),%eax
sar    $0x4,%eax
and    $0xf,%eax
mov    %eax,-0x4044c(%rbp)
mov    -0x40454(%rbp),%eax
sar    $0x4,%eax
mov    %eax,-0x40458(%rbp)
movl   $0x0,-0x408b4(%rbp)
cmpl   $0x5,-0x408b4(%rbp)
jge    150d <genlongbmp+0x3ad>
movslq -0x40444(%rbp),%rcx
lea    -0x408b0(%rbp),%rax
imul   $0x5,%rcx,%rcx
add    %rcx,%rax
movslq -0x408b4(%rbp),%rcx
movsbl (%rax,%rcx,1),%edx
shl    $0xa,%edx
movslq -0x40448(%rbp),%rcx
lea    -0x408b0(%rbp),%rax
imul   $0x5,%rcx,%rcx
add    %rcx,%rax
movslq -0x408b4(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
shl    $0x4,%eax
or     %eax,%edx
movslq -0x40458(%rbp),%rcx
lea    -0x40440(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
mov    -0x408b4(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x408b4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x408b4(%rbp)
jmp    1480 <genlongbmp+0x320>
movl   $0x0,-0x408b4(%rbp)
cmpl   $0x5,-0x408b4(%rbp)
jge    157f <genlongbmp+0x41f>
movslq -0x4044c(%rbp),%rcx
lea    -0x408b0(%rbp),%rax
imul   $0x5,%rcx,%rcx
add    %rcx,%rax
movslq -0x408b4(%rbp),%rcx
movsbl (%rax,%rcx,1),%edx
shl    $0xa,%edx
movslq -0x40458(%rbp),%rcx
lea    -0x40440(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
mov    -0x408b4(%rbp),%ecx
add    $0x9,%ecx
movslq %ecx,%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x408b4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x408b4(%rbp)
jmp    1517 <genlongbmp+0x3b7>
movslq -0x40458(%rbp),%rcx
lea    -0x40440(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
mov    0x34(%rax),%ecx
or     $0xf0,%ecx
mov    %ecx,0x34(%rax)
movl   $0x0,-0x408d0(%rbp)
cmpl   $0xf,-0x408d0(%rbp)
jge    15f0 <genlongbmp+0x490>
movslq -0x40458(%rbp),%rcx
lea    -0x40440(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x408d0(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
or     $0x2,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x408d0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x408d0(%rbp)
jmp    15aa <genlongbmp+0x44a>
movslq -0x40458(%rbp),%rcx
lea    -0x40440(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
movl   $0xfffe,0x3c(%rax)
cmpl   $0xf,-0x4044c(%rbp)
jne    163a <genlongbmp+0x4da>
movslq -0x40458(%rbp),%rcx
lea    -0x40440(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
mov    0x3c(%rax),%ecx
or     $0xff0000,%ecx
mov    %ecx,0x3c(%rax)
mov    -0x40458(%rbp),%eax
mov    $0x40,%ecx
cltd
idiv   %ecx
cmp    $0x3f,%edx
jne    1672 <genlongbmp+0x512>
movslq -0x40458(%rbp),%rcx
lea    -0x40440(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
mov    0x3c(%rax),%ecx
or     $0xffff0000,%ecx
mov    %ecx,0x3c(%rax)
jmp    1677 <genlongbmp+0x517>
mov    -0x40454(%rbp),%eax
add    $0x10,%eax
mov    %eax,-0x40454(%rbp)
jmp    1421 <genlongbmp+0x2c1>
lea    -0x40860(%rbp),%rdi
xor    %esi,%esi
mov    $0x400,%edx
call   1050 <memset@plt>
movl   $0x0,-0x40454(%rbp)
cmpl   $0xf,-0x40454(%rbp)
jg     1785 <genlongbmp+0x625>
mov    -0x40454(%rbp),%eax
sar    $0xc,%eax
and    $0xf,%eax
mov    %eax,-0x40444(%rbp)
mov    -0x40454(%rbp),%eax
sar    $0x8,%eax
and    $0xf,%eax
mov    %eax,-0x40448(%rbp)
mov    -0x40454(%rbp),%eax
sar    $0x4,%eax
and    $0xf,%eax
mov    %eax,-0x4044c(%rbp)
mov    -0x40454(%rbp),%eax
and    $0xf,%eax
mov    %eax,-0x40450(%rbp)
movl   $0x0,-0x408b4(%rbp)
cmpl   $0x5,-0x408b4(%rbp)
jge    176c <genlongbmp+0x60c>
movslq -0x40450(%rbp),%rcx
lea    -0x408b0(%rbp),%rax
imul   $0x5,%rcx,%rcx
add    %rcx,%rax
movslq -0x408b4(%rbp),%rcx
movsbl (%rax,%rcx,1),%edx
shl    $0x6,%edx
mov    -0x408b4(%rbp),%eax
add    $0x6,%eax
movslq %eax,%rcx
lea    -0x40860(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x40454(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x408b4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x408b4(%rbp)
jmp    1704 <genlongbmp+0x5a4>
jmp    1771 <genlongbmp+0x611>
mov    -0x40454(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40454(%rbp)
jmp    16a8 <genlongbmp+0x548>
movl   $0x0,-0x408d4(%rbp)
cmpl   $0x10,-0x408d4(%rbp)
jge    17c2 <genlongbmp+0x662>
movslq -0x408d4(%rbp),%rax
movl   $0x0,-0x404a0(%rbp,%rax,4)
mov    -0x408d4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x408d4(%rbp)
jmp    178f <genlongbmp+0x62f>
movl   $0x0,-0x408d4(%rbp)
cmpl   $0x10,-0x408d4(%rbp)
jge    1808 <genlongbmp+0x6a8>
movslq -0x408d4(%rbp),%rax
mov    -0x404e0(%rbp,%rax,4),%ecx
or     $0xffff,%ecx
mov    %ecx,-0x404e0(%rbp,%rax,4)
mov    -0x408d4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x408d4(%rbp)
jmp    17cc <genlongbmp+0x66c>
movl   $0xd,-0x408d0(%rbp)
cmpl   $0x0,-0x408d0(%rbp)
jl     1888 <genlongbmp+0x728>
movl   $0x0,-0x408d4(%rbp)
cmpl   $0x10,-0x408d4(%rbp)
jge    186f <genlongbmp+0x70f>
movslq -0x408d0(%rbp),%rcx
lea    -0x40860(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x408d4(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
or     $0x1,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x408d4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x408d4(%rbp)
jmp    1829 <genlongbmp+0x6c9>
jmp    1874 <genlongbmp+0x714>
mov    -0x408d0(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x408d0(%rbp)
jmp    1812 <genlongbmp+0x6b2>
movl   $0xfff0,-0x408d0(%rbp)
cmpl   $0x0,-0x408d0(%rbp)
jl     1a42 <genlongbmp+0x8e2>
mov    -0x408d0(%rbp),%eax
sar    $0x4,%eax
mov    %eax,-0x40458(%rbp)
movl   $0xf,-0x408d4(%rbp)
cmpl   $0x0,-0x408d4(%rbp)
jl     1a29 <genlongbmp+0x8c9>
movslq -0x40458(%rbp),%rcx
lea    -0x40440(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x408d4(%rbp),%rcx
mov    (%rax,%rcx,4),%edi
xor    $0xffffffff,%edi
shr    $0x18,%edi
and    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
movslq -0x40458(%rbp),%rcx
lea    -0x40440(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x408d4(%rbp),%rcx
mov    (%rax,%rcx,4),%edi
xor    $0xffffffff,%edi
shr    $0x10,%edi
and    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
movslq -0x40458(%rbp),%rcx
lea    -0x40440(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x408d4(%rbp),%rcx
mov    (%rax,%rcx,4),%edi
xor    $0xffffffff,%edi
shr    $0x8,%edi
and    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
movslq -0x40458(%rbp),%rcx
lea    -0x40440(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x408d4(%rbp),%rcx
mov    (%rax,%rcx,4),%edi
xor    $0xffffffff,%edi
and    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
movl   $0x0,-0x408d8(%rbp)
cmpl   $0x10,-0x408d8(%rbp)
jge    1a10 <genlongbmp+0x8b0>
mov    -0x8(%rbp),%rax
mov    -0x408d0(%rbp),%ecx
add    -0x408d8(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x408d4(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
xor    $0xffffffff,%eax
and    $0xffff,%eax
mov    %eax,-0x408dc(%rbp)
mov    -0x408dc(%rbp),%edi
shr    $0x8,%edi
and    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x408dc(%rbp),%edi
and    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x408d8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x408d8(%rbp)
jmp    1994 <genlongbmp+0x834>
jmp    1a15 <genlongbmp+0x8b5>
mov    -0x408d4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x408d4(%rbp)
jmp    18b8 <genlongbmp+0x758>
jmp    1a2e <genlongbmp+0x8ce>
mov    -0x408d0(%rbp),%eax
sub    $0x10,%eax
mov    %eax,-0x408d0(%rbp)
jmp    1892 <genlongbmp+0x732>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
xor    %edi,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
movl   $0x0,-0x408d4(%rbp)
cmpl   $0x10,-0x408d4(%rbp)
jge    1ad3 <genlongbmp+0x973>
movslq -0x408d4(%rbp),%rax
mov    -0x404a0(%rbp,%rax,4),%edi
xor    $0xffffffff,%edi
shr    $0x8,%edi
and    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
movslq -0x408d4(%rbp),%rax
mov    -0x404a0(%rbp,%rax,4),%edi
xor    $0xffffffff,%edi
and    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x408d4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x408d4(%rbp)
jmp    1a73 <genlongbmp+0x913>
mov    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0xfc,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
movl   $0x0,-0x408d4(%rbp)
cmpl   $0x10,-0x408d4(%rbp)
jge    1b6d <genlongbmp+0xa0d>
movslq -0x408d4(%rbp),%rax
mov    -0x404e0(%rbp,%rax,4),%edi
xor    $0xffffffff,%edi
shr    $0x8,%edi
and    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
movslq -0x408d4(%rbp),%rax
mov    -0x404e0(%rbp,%rax,4),%edi
xor    $0xffffffff,%edi
and    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x408d4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x408d4(%rbp)
jmp    1b0d <genlongbmp+0x9ad>
movl   $0xd,-0x408d0(%rbp)
cmpl   $0x0,-0x408d0(%rbp)
jl     1c59 <genlongbmp+0xaf9>
mov    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0xfd,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
movl   $0x0,-0x408d4(%rbp)
cmpl   $0x10,-0x408d4(%rbp)
jge    1c40 <genlongbmp+0xae0>
movslq -0x408d0(%rbp),%rcx
lea    -0x40860(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x408d4(%rbp),%rcx
mov    (%rax,%rcx,4),%edi
xor    $0xffffffff,%edi
shr    $0x8,%edi
and    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
movslq -0x408d0(%rbp),%rcx
lea    -0x40860(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x408d4(%rbp),%rcx
mov    (%rax,%rcx,4),%edi
xor    $0xffffffff,%edi
and    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x408d4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x408d4(%rbp)
jmp    1bbe <genlongbmp+0xa5e>
jmp    1c45 <genlongbmp+0xae5>
mov    -0x408d0(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x408d0(%rbp)
jmp    1b77 <genlongbmp+0xa17>
movl   $0x7,-0x408d0(%rbp)
cmpl   $0x0,-0x408d0(%rbp)
jl     1ccc <genlongbmp+0xb6c>
movl   $0x0,-0x408d4(%rbp)
cmpl   $0x12,-0x408d4(%rbp)
jge    1cb3 <genlongbmp+0xb53>
mov    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x408d4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x408d4(%rbp)
jmp    1c7a <genlongbmp+0xb1a>
jmp    1cb8 <genlongbmp+0xb58>
mov    -0x408d0(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x408d0(%rbp)
jmp    1c63 <genlongbmp+0xb03>
movl   $0xf,-0x408d0(%rbp)
cmpl   $0x0,-0x408d0(%rbp)
jl     1dad <genlongbmp+0xc4d>
mov    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
movl   $0x0,-0x408d4(%rbp)
cmpl   $0x10,-0x408d4(%rbp)
jge    1d94 <genlongbmp+0xc34>
movslq -0x408d0(%rbp),%rcx
lea    -0x430(%rbp),%rax
shl    $0x6,%rcx
add    %rcx,%rax
movslq -0x408d4(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
xor    $0xffffffff,%eax
and    $0xffff,%eax
mov    %eax,-0x408dc(%rbp)
mov    -0x408dc(%rbp),%edi
shr    $0x8,%edi
and    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x408dc(%rbp),%edi
and    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x408d4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x408d4(%rbp)
jmp    1d1d <genlongbmp+0xbbd>
jmp    1d99 <genlongbmp+0xc39>
mov    -0x408d0(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x408d0(%rbp)
jmp    1cd6 <genlongbmp+0xb76>
movl   $0x7,-0x408d0(%rbp)
cmpl   $0x0,-0x408d0(%rbp)
jl     1e20 <genlongbmp+0xcc0>
movl   $0x0,-0x408d4(%rbp)
cmpl   $0x12,-0x408d4(%rbp)
jge    1e07 <genlongbmp+0xca7>
mov    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    $0xff,%edi
mov    $0x0,%al
call   1030 <putchar@plt>
mov    -0x408d4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x408d4(%rbp)
jmp    1dce <genlongbmp+0xc6e>
jmp    1e0c <genlongbmp+0xcac>
mov    -0x408d0(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x408d0(%rbp)
jmp    1db7 <genlongbmp+0xc57>
add    $0x408e0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<genlongbmp>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x40838,%rsp
mov    %rdi,%r15
test   %esi,%esi
mov    $0x60,%eax
cmovne %esi,%eax
cvtsi2sd %eax,%xmm0
mulsd  0xe96(%rip),%xmm0
divsd  0xe96(%rip),%xmm0
addsd  0xe96(%rip),%xmm0
cvttsd2si %xmm0,%r14d
xor    %ebp,%ebp
mov    $0x42,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0x4d,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0x2406fe,%edi
call   1050 <output4@plt>
xor    %edi,%edi
call   1050 <output4@plt>
mov    $0x3e,%edi
call   1050 <output4@plt>
mov    $0x28,%edi
call   1050 <output4@plt>
mov    $0x120,%edi
call   1050 <output4@plt>
mov    $0x10030,%edi
call   1050 <output4@plt>
mov    $0x1,%edi
call   1060 <output2@plt>
mov    $0x1,%edi
call   1060 <output2@plt>
xor    %edi,%edi
call   1050 <output4@plt>
mov    $0x2406c0,%edi
call   1050 <output4@plt>
mov    %r14d,%edi
call   1050 <output4@plt>
mov    %r14d,%edi
call   1050 <output4@plt>
mov    $0x2,%edi
call   1050 <output4@plt>
mov    $0x2,%edi
call   1050 <output4@plt>
xor    %edi,%edi
call   1050 <output4@plt>
mov    $0xffffff,%edi
call   1050 <output4@plt>
lea    0x430(%rsp),%rdi
mov    $0x400,%edx
xor    %esi,%esi
call   1040 <memset@plt>
movw   $0x20,0x1f(%rsp)
movabs $0x66696e5520554e47,%rax
6e 69 66
mov    %rax,0x10(%rsp)
movabs $0x332e3620746e6f66,%rax
36 2e 33
mov    %rax,0x17(%rsp)
mov    $0x47,%al
nopw   0x0(%rax,%rax,1)
movsbq %al,%rax
mov    %eax,%eax
shl    $0x6,%rax
mov    (%r15,%rax,1),%ecx
mov    %ecx,0x430(%rsp,%rbp,4)
mov    0x4(%r15,%rax,1),%ecx
mov    %ecx,0x470(%rsp,%rbp,4)
mov    0x8(%r15,%rax,1),%ecx
mov    %ecx,0x4b0(%rsp,%rbp,4)
mov    0xc(%r15,%rax,1),%ecx
mov    %ecx,0x4f0(%rsp,%rbp,4)
mov    0x10(%r15,%rax,1),%ecx
mov    %ecx,0x530(%rsp,%rbp,4)
mov    0x14(%r15,%rax,1),%ecx
mov    %ecx,0x570(%rsp,%rbp,4)
mov    0x18(%r15,%rax,1),%ecx
mov    %ecx,0x5b0(%rsp,%rbp,4)
mov    0x1c(%r15,%rax,1),%ecx
mov    %ecx,0x5f0(%rsp,%rbp,4)
mov    0x20(%r15,%rax,1),%ecx
mov    %ecx,0x630(%rsp,%rbp,4)
mov    0x24(%r15,%rax,1),%ecx
mov    %ecx,0x670(%rsp,%rbp,4)
mov    0x28(%r15,%rax,1),%ecx
mov    %ecx,0x6b0(%rsp,%rbp,4)
mov    0x2c(%r15,%rax,1),%ecx
mov    %ecx,0x6f0(%rsp,%rbp,4)
mov    0x30(%r15,%rax,1),%ecx
mov    %ecx,0x730(%rsp,%rbp,4)
mov    0x34(%r15,%rax,1),%ecx
mov    %ecx,0x770(%rsp,%rbp,4)
mov    0x38(%r15,%rax,1),%ecx
mov    %ecx,0x7b0(%rsp,%rbp,4)
mov    0x3c(%r15,%rax,1),%eax
mov    %eax,0x7f0(%rsp,%rbp,4)
cmp    $0xf,%rbp
je     134d <genlongbmp+0x20d>
movzbl 0x11(%rsp,%rbp,1),%eax
add    $0x1,%rbp
jmp    1270 <genlongbmp+0x130>
lea    0x830(%rsp),%rdi
xor    %r14d,%r14d
mov    $0x40000,%edx
xor    %esi,%esi
call   1040 <memset@plt>
lea    0xce5(%rip),%r10
movdqa 0xcad(%rip),%xmm0
mov    $0xfffffe,%r8d
mov    $0xfffffffe,%r9d
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %rsi,%rax
shr    $0xc,%rax
mov    %esi,%ecx
shr    $0x8,%ecx
and    $0xf,%ecx
lea    (%rax,%rax,4),%rax
movsbl (%r10,%rax,1),%edx
shl    $0xa,%edx
lea    (%rcx,%rcx,4),%rbp
movsbl (%r10,%rbp,1),%r12d
shl    $0x4,%r12d
or     %edx,%r12d
movsbl 0x1(%r10,%rax,1),%ecx
shl    $0xa,%ecx
movsbl 0x1(%r10,%rbp,1),%ebx
shl    $0x4,%ebx
or     %ecx,%ebx
movsbl 0x2(%r10,%rax,1),%edx
shl    $0xa,%edx
movsbl 0x2(%r10,%rbp,1),%ecx
shl    $0x4,%ecx
or     %edx,%ecx
movsbl 0x3(%r10,%rax,1),%edi
shl    $0xa,%edi
movsbl 0x3(%r10,%rbp,1),%edx
shl    $0x4,%edx
or     %edi,%edx
movsbl 0x4(%r10,%rax,1),%edi
shl    $0xa,%edi
movsbl 0x4(%r10,%rbp,1),%eax
shl    $0x4,%eax
or     %edi,%eax
mov    %r14d,%ebp
and    $0xf,%ebp
lea    0x0(,%rbp,4),%r11
add    %rbp,%r11
movd   (%r10,%r11,1),%xmm1
punpcklbw %xmm1,%xmm1
punpcklwd %xmm1,%xmm1
psrad  $0x18,%xmm1
pslld  $0xa,%xmm1
orb    $0x2,0x830(%rsp,%rsi,4)
02
orb    $0x2,0x834(%rsp,%rsi,4)
02
or     $0x2,%r12d
mov    %r12d,0x838(%rsp,%rsi,4)
or     $0x2,%ebx
mov    %ebx,0x83c(%rsp,%rsi,4)
or     $0x2,%ecx
mov    %ecx,0x840(%rsp,%rsi,4)
or     $0x2,%edx
mov    %edx,0x844(%rsp,%rsi,4)
or     $0x2,%eax
mov    %eax,0x848(%rsp,%rsi,4)
orb    $0x2,0x84c(%rsp,%rsi,4)
02
por    %xmm0,%xmm1
orb    $0x2,0x850(%rsp,%rsi,4)
02
movsbl 0x4(%r10,%r11,1),%eax
shl    $0xa,%eax
movdqu %xmm1,0x854(%rsp,%rsi,4)
or     $0xf2,%eax
mov    %eax,0x864(%rsp,%rsi,4)
orb    $0x2,0x868(%rsp,%rsi,4)
02
cmp    $0xf,%ebp
mov    $0xfffe,%eax
cmove  %r8d,%eax
mov    %esi,%ecx
not    %ecx
test   $0x3f0,%ecx
cmove  %r9d,%eax
mov    %eax,0x86c(%rsp,%rsi,4)
lea    0x10(%rsi),%rax
add    $0x1,%r14d
cmp    $0xfff0,%rsi
mov    %rax,%rsi
jb     1390 <genlongbmp+0x250>
lea    0x30(%rsp),%rdi
mov    $0x3c0,%edx
xor    %esi,%esi
call   1040 <memset@plt>
mov    $0xfffffffffffffff0,%rax
lea    0xb4a(%rip),%rcx
nopw   0x0(%rax,%rax,1)
movsbl -0x4(%rcx),%edx
shl    $0x6,%edx
mov    %edx,0x1f0(%rsp,%rax,4)
movsbl -0x3(%rcx),%edx
shl    $0x6,%edx
mov    %edx,0x230(%rsp,%rax,4)
movsbl -0x2(%rcx),%edx
shl    $0x6,%edx
mov    %edx,0x270(%rsp,%rax,4)
movsbl -0x1(%rcx),%edx
shl    $0x6,%edx
mov    %edx,0x2b0(%rsp,%rax,4)
movsbl (%rcx),%edx
shl    $0x6,%edx
mov    %edx,0x2f0(%rsp,%rax,4)
add    $0x5,%rcx
inc    %rax
jne    1510 <genlongbmp+0x3d0>
pxor   %xmm0,%xmm0
movdqa %xmm0,0x420(%rsp)
movdqa %xmm0,0x410(%rsp)
movdqa %xmm0,0x400(%rsp)
movdqa %xmm0,0x3f0(%rsp)
movaps 0xaa3(%rip),%xmm0
movaps 0x3b0(%rsp),%xmm1
orps   %xmm0,%xmm1
movaps %xmm1,0x3b0(%rsp)
movaps 0x3c0(%rsp),%xmm1
orps   %xmm0,%xmm1
movaps %xmm1,0x3c0(%rsp)
movaps 0x3d0(%rsp),%xmm1
orps   %xmm0,%xmm1
movaps %xmm1,0x3d0(%rsp)
orps   0x3e0(%rsp),%xmm0
movaps %xmm0,0x3e0(%rsp)
xor    %eax,%eax
movaps 0xa61(%rip),%xmm0
nop
movaps 0x370(%rsp,%rax,1),%xmm1
orps   %xmm0,%xmm1
movaps %xmm1,0x370(%rsp,%rax,1)
movaps 0x380(%rsp,%rax,1),%xmm1
orps   %xmm0,%xmm1
movaps %xmm1,0x380(%rsp,%rax,1)
movaps 0x390(%rsp,%rax,1),%xmm1
orps   %xmm0,%xmm1
movaps %xmm1,0x390(%rsp,%rax,1)
movaps 0x3a0(%rsp,%rax,1),%xmm1
orps   %xmm0,%xmm1
movaps %xmm1,0x3a0(%rsp,%rax,1)
add    $0xffffffffffffffc0,%rax
cmp    $0xfffffffffffffc80,%rax
jne    15e0 <genlongbmp+0x4a0>
add    $0x3ffc3c,%r15
mov    $0xfff0,%r14d
cs nopw 0x0(%rax,%rax,1)
nop
mov    %r14d,%r12d
shr    $0x4,%r12d
mov    $0xf,%r13d
mov    %r15,0x8(%rsp)
mov    %r15,%rbp
cs nopw 0x0(%rax,%rax,1)
nop
mov    %r12,%rax
shl    $0x6,%rax
add    %rsp,%rax
add    $0x830,%rax
mov    (%rax,%r13,4),%ebx
not    %ebx
mov    %ebx,%eax
shr    $0x18,%eax
mov    %eax,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    %ebx,%eax
shr    $0x10,%eax
movzbl %al,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
movzbl %bh,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
movzbl %bl,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
xor    %ebx,%ebx
nopl   0x0(%rax)
mov    0x0(%rbp,%rbx,1),%eax
not    %eax
movzbl %ah,%edi
mov    %eax,%r15d
xor    %eax,%eax
call   1030 <putchar@plt>
movzbl %r15b,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
add    $0x40,%rbx
cmp    $0x400,%rbx
jne    16c0 <genlongbmp+0x580>
add    $0xfffffffffffffffc,%rbp
sub    $0x1,%r13
jae    1670 <genlongbmp+0x530>
lea    -0x10(%r14),%rax
mov    0x8(%rsp),%r15
add    $0xfffffffffffffc00,%r15
test   %r14,%r14
mov    %rax,%r14
jne    1650 <genlongbmp+0x510>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
xor    %edi,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
xor    %ebx,%ebx
xchg   %ax,%ax
mov    0x3f0(%rsp,%rbx,4),%eax
not    %eax
movzbl %ah,%edi
mov    %eax,%ebp
xor    %eax,%eax
call   1030 <putchar@plt>
movzbl %bpl,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
add    $0x1,%rbx
cmp    $0x10,%rbx
jne    1740 <genlongbmp+0x600>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xfc,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
xor    %ebx,%ebx
nopl   0x0(%rax)
mov    0x3b0(%rsp,%rbx,4),%eax
not    %eax
movzbl %ah,%edi
mov    %eax,%ebp
xor    %eax,%eax
call   1030 <putchar@plt>
movzbl %bpl,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
add    $0x1,%rbx
cmp    $0x10,%rbx
jne    17a0 <genlongbmp+0x660>
lea    0x370(%rsp),%r15
mov    $0xd,%r14d
nopl   0x0(%rax,%rax,1)
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xfd,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    (%r15,%rbp,4),%ebx
not    %ebx
movzbl %bh,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
movzbl %bl,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
add    $0x1,%rbp
cmp    $0x10,%rbp
jne    1820 <genlongbmp+0x6e0>
add    $0xffffffffffffffc0,%r15
sub    $0x1,%r14
jae    17e0 <genlongbmp+0x6a0>
mov    $0xfffffff8,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
inc    %ebx
jne    1860 <genlongbmp+0x720>
lea    0x7f0(%rsp),%r15
mov    $0xf,%r14d
cs nopw 0x0(%rax,%rax,1)
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    (%r15,%rbp,4),%ebx
not    %ebx
movzbl %bh,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
movzbl %bl,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
add    $0x1,%rbp
cmp    $0x10,%rbp
jne    1a70 <genlongbmp+0x930>
add    $0xffffffffffffffc0,%r15
sub    $0x1,%r14
jae    1a30 <genlongbmp+0x8f0>
mov    $0xfffffff8,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
mov    $0xff,%edi
xor    %eax,%eax
call   1030 <putchar@plt>
inc    %ebx
jne    1ab0 <genlongbmp+0x970>
add    $0x40838,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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