void diskd0(void) {
  char Buffer[512];
  char str[256];
  int drive, sec, head, trk, i, ii, c, line;
  puts0("Drive, hex? ");
  getsn(str, 256);
  drive = htoi(str);
  puts0("\r\nsec? (1-..., dec) ");
  getsn(str, 256);
  sec = atoi(str);
  puts0("\r\nhead, dec? ");
  getsn(str, 256);
  head = atoi(str);
  puts0("\r\ntrk (cyl), dec? ");
  getsn(str, 256);
  trk = atoi(str);
  puts0("\r\nDrive = 0x");
  puthex_b(drive);
  puts0(" sec = ");
  putdec(sec);
  puts0(" head = ");
  putdec(head);
  puts0(" trk = ");
  putdec(trk);
  for (i = 0; i < 512; i++)
    Buffer[i] = 0;
  i = readsec0(drive, sec, head, trk, Buffer);
  if (i == 1)
    puts0(" OK");
  else {
    puts0(" err code = ");
    puthex(i);
  }
  puts0("\r\n");
  ii = 0;
  for (line = 0; line < 32; line++) {
    if (line == 15) {
      puts0(" press any key ");
      getch();
      putch('\r');
    }
    for (i = 0; i < 16; i++) {
      c = Buffer[ii++];
      puthex_b(c);
      putch(' ');
    }
    ii = ii - 16;
    for (i = 0; i < 16; i++) {
      c = (Buffer[ii++]) & 0xFFU;
      if (c < ' ')
        putch('.');
      else
        putch(c);
    }
    puts0("\r\n");
  }
}


x86 assembly (clang, -O0):
<diskd0>:
push   %rbp
mov    %rsp,%rbp
sub    $0x320,%rsp
lea    0xe4e(%rip),%rdi
mov    $0x0,%al
call   10a0 <puts0@plt>
lea    -0x300(%rbp),%rdi
mov    $0x100,%esi
mov    $0x0,%al
call   1030 <getsn@plt>
lea    -0x300(%rbp),%rdi
mov    $0x0,%al
call   1080 <htoi@plt>
mov    %eax,-0x304(%rbp)
lea    0xe26(%rip),%rdi
mov    $0x0,%al
call   10a0 <puts0@plt>
lea    -0x300(%rbp),%rdi
mov    $0x100,%esi
mov    $0x0,%al
call   1030 <getsn@plt>
lea    -0x300(%rbp),%rdi
mov    $0x0,%al
call   10b0 <atoi@plt>
mov    %eax,-0x308(%rbp)
lea    0xe06(%rip),%rdi
mov    $0x0,%al
call   10a0 <puts0@plt>
lea    -0x300(%rbp),%rdi
mov    $0x100,%esi
mov    $0x0,%al
call   1030 <getsn@plt>
lea    -0x300(%rbp),%rdi
mov    $0x0,%al
call   10b0 <atoi@plt>
mov    %eax,-0x30c(%rbp)
lea    0xddf(%rip),%rdi
mov    $0x0,%al
call   10a0 <puts0@plt>
lea    -0x300(%rbp),%rdi
mov    $0x100,%esi
mov    $0x0,%al
call   1030 <getsn@plt>
lea    -0x300(%rbp),%rdi
mov    $0x0,%al
call   10b0 <atoi@plt>
mov    %eax,-0x310(%rbp)
lea    0xdbd(%rip),%rdi
mov    $0x0,%al
call   10a0 <puts0@plt>
mov    -0x304(%rbp),%edi
mov    $0x0,%al
call   1040 <puthex_b@plt>
lea    0xdaf(%rip),%rdi
mov    $0x0,%al
call   10a0 <puts0@plt>
mov    -0x308(%rbp),%edi
mov    $0x0,%al
call   1060 <putdec@plt>
lea    0xd9c(%rip),%rdi
mov    $0x0,%al
call   10a0 <puts0@plt>
mov    -0x30c(%rbp),%edi
mov    $0x0,%al
call   1060 <putdec@plt>
lea    0xd8a(%rip),%rdi
mov    $0x0,%al
call   10a0 <puts0@plt>
mov    -0x310(%rbp),%edi
mov    $0x0,%al
call   1060 <putdec@plt>
movl   $0x0,-0x314(%rbp)
cmpl   $0x200,-0x314(%rbp)
jge    1328 <diskd0+0x188>
movslq -0x314(%rbp),%rax
movb   $0x0,-0x200(%rbp,%rax,1)
mov    -0x314(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x314(%rbp)
jmp    12f5 <diskd0+0x155>
mov    -0x304(%rbp),%edi
mov    -0x308(%rbp),%esi
mov    -0x30c(%rbp),%edx
mov    -0x310(%rbp),%ecx
lea    -0x200(%rbp),%r8
mov    $0x0,%al
call   1050 <readsec0@plt>
mov    %eax,-0x314(%rbp)
cmpl   $0x1,-0x314(%rbp)
jne    1374 <diskd0+0x1d4>
lea    0xd01(%rip),%rdi
mov    $0x0,%al
call   10a0 <puts0@plt>
jmp    138f <diskd0+0x1ef>
lea    0xcf2(%rip),%rdi
mov    $0x0,%al
call   10a0 <puts0@plt>
mov    -0x314(%rbp),%edi
mov    $0x0,%al
call   1070 <puthex@plt>
lea    0xce4(%rip),%rdi
mov    $0x0,%al
call   10a0 <puts0@plt>
movl   $0x0,-0x318(%rbp)
movl   $0x0,-0x320(%rbp)
cmpl   $0x20,-0x320(%rbp)
jge    1503 <diskd0+0x363>
cmpl   $0xf,-0x320(%rbp)
jne    13ec <diskd0+0x24c>
lea    0xcab(%rip),%rdi
mov    $0x0,%al
call   10a0 <puts0@plt>
mov    $0x0,%al
call   1090 <getch@plt>
mov    $0xd,%edi
mov    $0x0,%al
call   10c0 <putch@plt>
movl   $0x0,-0x314(%rbp)
cmpl   $0x10,-0x314(%rbp)
jge    1451 <diskd0+0x2b1>
mov    -0x318(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x318(%rbp)
cltq
movsbl -0x200(%rbp,%rax,1),%eax
ff
mov    %eax,-0x31c(%rbp)
mov    -0x31c(%rbp),%edi
mov    $0x0,%al
call   1040 <puthex_b@plt>
mov    $0x20,%edi
mov    $0x0,%al
call   10c0 <putch@plt>
mov    -0x314(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x314(%rbp)
jmp    13f6 <diskd0+0x256>
mov    -0x318(%rbp),%eax
sub    $0x10,%eax
mov    %eax,-0x318(%rbp)
movl   $0x0,-0x314(%rbp)
cmpl   $0x10,-0x314(%rbp)
jge    14e1 <diskd0+0x341>
mov    -0x318(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x318(%rbp)
cltq
movsbl -0x200(%rbp,%rax,1),%eax
ff
and    $0xff,%eax
mov    %eax,-0x31c(%rbp)
cmpl   $0x20,-0x31c(%rbp)
jge    14bb <diskd0+0x31b>
mov    $0x2e,%edi
mov    $0x0,%al
call   10c0 <putch@plt>
jmp    14c8 <diskd0+0x328>
mov    -0x31c(%rbp),%edi
mov    $0x0,%al
call   10c0 <putch@plt>
jmp    14cd <diskd0+0x32d>
mov    -0x314(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x314(%rbp)
jmp    146a <diskd0+0x2ca>
lea    0xb92(%rip),%rdi
mov    $0x0,%al
call   10a0 <puts0@plt>
mov    -0x320(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x320(%rbp)
jmp    13b1 <diskd0+0x211>
add    $0x320,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<diskd0>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x300,%rsp
lea    0xe3a(%rip),%rdi
xor    %eax,%eax
call   10b0 <puts0@plt>
lea    0x200(%rsp),%rbp
mov    %rbp,%rdi
mov    $0x100,%esi
xor    %eax,%eax
call   1030 <getsn@plt>
mov    %rbp,%rdi
xor    %eax,%eax
call   1090 <htoi@plt>
mov    %eax,%r14d
lea    0xe15(%rip),%rdi
xor    %eax,%eax
call   10b0 <puts0@plt>
mov    %rbp,%rdi
mov    $0x100,%esi
xor    %eax,%eax
call   1030 <getsn@plt>
mov    %rbp,%rdi
xor    %eax,%eax
call   10c0 <atoi@plt>
mov    %eax,%r15d
lea    0xe00(%rip),%rdi
xor    %eax,%eax
call   10b0 <puts0@plt>
mov    %rbp,%rdi
mov    $0x100,%esi
xor    %eax,%eax
call   1030 <getsn@plt>
mov    %rbp,%rdi
xor    %eax,%eax
call   10c0 <atoi@plt>
mov    %eax,%r12d
lea    0xde4(%rip),%rdi
xor    %eax,%eax
call   10b0 <puts0@plt>
mov    %rbp,%rdi
mov    $0x100,%esi
xor    %eax,%eax
call   1030 <getsn@plt>
mov    %rbp,%rdi
xor    %eax,%eax
call   10c0 <atoi@plt>
mov    %eax,%ebp
lea    0xdce(%rip),%rdi
xor    %eax,%eax
call   10b0 <puts0@plt>
mov    %r14d,%edi
xor    %eax,%eax
call   1040 <puthex_b@plt>
lea    0xdc3(%rip),%rdi
xor    %eax,%eax
call   10b0 <puts0@plt>
mov    %r15d,%edi
xor    %eax,%eax
call   1070 <putdec@plt>
lea    0xdb3(%rip),%rdi
xor    %eax,%eax
call   10b0 <puts0@plt>
mov    %r12d,%edi
xor    %eax,%eax
call   1070 <putdec@plt>
lea    0xda4(%rip),%rdi
xor    %eax,%eax
call   10b0 <puts0@plt>
mov    %ebp,%edi
xor    %eax,%eax
call   1070 <putdec@plt>
mov    %rsp,%rbx
mov    $0x200,%edx
mov    %rbx,%rdi
xor    %esi,%esi
call   1060 <memset@plt>
mov    %r14d,%edi
mov    %r15d,%esi
mov    %r12d,%edx
mov    %ebp,%ecx
mov    %rbx,%r8
xor    %eax,%eax
call   1050 <readsec0@plt>
cmp    $0x1,%eax
jne    1309 <diskd0+0x159>
lea    0xd69(%rip),%rdi
xor    %eax,%eax
call   10b0 <puts0@plt>
jmp    1322 <diskd0+0x172>
mov    %eax,%ebx
lea    0xd5b(%rip),%rdi
xor    %eax,%eax
call   10b0 <puts0@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1080 <puthex@plt>
lea    0xd51(%rip),%r15
mov    %r15,%rdi
xor    %eax,%eax
call   10b0 <puts0@plt>
lea    0xd43(%rip),%r14
mov    $0x2e,%ebp
xor    %ebx,%ebx
jmp    1620 <diskd0+0x470>
cs nopw 0x0(%rax,%rax,1)
movsbl (%rsp,%rbx,1),%edi
xor    %eax,%eax
call   1040 <puthex_b@plt>
mov    $0x20,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movsbl 0x1(%rsp,%rbx,1),%edi
xor    %eax,%eax
call   1040 <puthex_b@plt>
mov    $0x20,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movsbl 0x2(%rsp,%rbx,1),%edi
xor    %eax,%eax
call   1040 <puthex_b@plt>
mov    $0x20,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movsbl 0x3(%rsp,%rbx,1),%edi
xor    %eax,%eax
call   1040 <puthex_b@plt>
mov    $0x20,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movsbl 0x4(%rsp,%rbx,1),%edi
xor    %eax,%eax
call   1040 <puthex_b@plt>
mov    $0x20,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movsbl 0x5(%rsp,%rbx,1),%edi
xor    %eax,%eax
call   1040 <puthex_b@plt>
mov    $0x20,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movsbl 0x6(%rsp,%rbx,1),%edi
xor    %eax,%eax
call   1040 <puthex_b@plt>
mov    $0x20,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movsbl 0x7(%rsp,%rbx,1),%edi
xor    %eax,%eax
call   1040 <puthex_b@plt>
mov    $0x20,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movsbl 0x8(%rsp,%rbx,1),%edi
xor    %eax,%eax
call   1040 <puthex_b@plt>
mov    $0x20,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movsbl 0x9(%rsp,%rbx,1),%edi
xor    %eax,%eax
call   1040 <puthex_b@plt>
mov    $0x20,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movsbl 0xa(%rsp,%rbx,1),%edi
xor    %eax,%eax
call   1040 <puthex_b@plt>
mov    $0x20,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movsbl 0xb(%rsp,%rbx,1),%edi
xor    %eax,%eax
call   1040 <puthex_b@plt>
mov    $0x20,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movsbl 0xc(%rsp,%rbx,1),%edi
xor    %eax,%eax
call   1040 <puthex_b@plt>
mov    $0x20,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movsbl 0xd(%rsp,%rbx,1),%edi
xor    %eax,%eax
call   1040 <puthex_b@plt>
mov    $0x20,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movsbl 0xe(%rsp,%rbx,1),%edi
xor    %eax,%eax
call   1040 <puthex_b@plt>
mov    $0x20,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movsbl 0xf(%rsp,%rbx,1),%edi
xor    %eax,%eax
call   1040 <puthex_b@plt>
mov    $0x20,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
mov    (%rsp,%rbx,1),%eax
cmp    $0x20,%al
cmovb  %ebp,%eax
movzbl %al,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movzbl 0x1(%rsp,%rbx,1),%eax
cmp    $0x20,%al
cmovb  %ebp,%eax
movzbl %al,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movzbl 0x2(%rsp,%rbx,1),%eax
cmp    $0x20,%al
cmovb  %ebp,%eax
movzbl %al,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movzbl 0x3(%rsp,%rbx,1),%eax
cmp    $0x20,%al
cmovb  %ebp,%eax
movzbl %al,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
mov    0x4(%rsp,%rbx,1),%eax
cmp    $0x20,%al
cmovb  %ebp,%eax
movzbl %al,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movzbl 0x5(%rsp,%rbx,1),%eax
cmp    $0x20,%al
cmovb  %ebp,%eax
movzbl %al,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movzbl 0x6(%rsp,%rbx,1),%eax
cmp    $0x20,%al
cmovb  %ebp,%eax
movzbl %al,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movzbl 0x7(%rsp,%rbx,1),%eax
cmp    $0x20,%al
cmovb  %ebp,%eax
movzbl %al,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
mov    0x8(%rsp,%rbx,1),%eax
cmp    $0x20,%al
cmovb  %ebp,%eax
movzbl %al,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movzbl 0x9(%rsp,%rbx,1),%eax
cmp    $0x20,%al
cmovb  %ebp,%eax
movzbl %al,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movzbl 0xa(%rsp,%rbx,1),%eax
cmp    $0x20,%al
cmovb  %ebp,%eax
movzbl %al,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movzbl 0xb(%rsp,%rbx,1),%eax
cmp    $0x20,%al
cmovb  %ebp,%eax
movzbl %al,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
mov    0xc(%rsp,%rbx,1),%eax
cmp    $0x20,%al
cmovb  %ebp,%eax
movzbl %al,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movzbl 0xd(%rsp,%rbx,1),%eax
cmp    $0x20,%al
cmovb  %ebp,%eax
movzbl %al,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movzbl 0xe(%rsp,%rbx,1),%eax
cmp    $0x20,%al
cmovb  %ebp,%eax
movzbl %al,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
movzbl 0xf(%rsp,%rbx,1),%eax
cmp    $0x20,%al
cmovb  %ebp,%eax
movzbl %al,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
mov    %r15,%rdi
xor    %eax,%eax
call   10b0 <puts0@plt>
add    $0x10,%rbx
cmp    $0x200,%ebx
je     164e <diskd0+0x49e>
cmp    $0xf0,%ebx
jne    1350 <diskd0+0x1a0>
mov    %r14,%rdi
xor    %eax,%eax
call   10b0 <puts0@plt>
xor    %eax,%eax
call   10a0 <getch@plt>
mov    $0xd,%edi
xor    %eax,%eax
call   10d0 <putch@plt>
jmp    1350 <diskd0+0x1a0>
add    $0x300,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [13 x i8] c"Drive, hex? \00"
@.str.1 = [21 x i8] c"\0D\0Asec? (1-..., dec) \00"
@.str.2 = [14 x i8] c"\0D\0Ahead, dec? \00"
@.str.3 = [19 x i8] c"\0D\0Atrk (cyl), dec? \00"
@.str.4 = [13 x i8] c"\0D\0ADrive = 0x\00"
@.str.5 = [8 x i8] c" sec = \00"
@.str.6 = [9 x i8] c" head = \00"
@.str.7 = [8 x i8] c" trk = \00"
@.str.8 = [4 x i8] c" OK\00"
@.str.9 = [13 x i8] c" err code = \00"
@.str.10 = [3 x i8] c"\0D\0A\00"
@.str.11 = [16 x i8] c" press any key \00"
define void @diskd0() {
%1 = alloca [512 x i8]
%2 = alloca [256 x i8]
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = call i32 (i8*, ...) bitcast (i32 (...)* @puts0 to i32 (i8*, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str, i64 0, i64 0))
%12 = getelementptr inbounds [256 x i8], [256 x i8]* %2, i64 0, i64 0
%13 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @getsn to i32 (i8*, i32, ...)*)(i8* %12, i32 256)
%14 = getelementptr inbounds [256 x i8], [256 x i8]* %2, i64 0, i64 0
%15 = call i32 (i8*, ...) bitcast (i32 (...)* @htoi to i32 (i8*, ...)*)(i8* %14)
store i32 %15, i32* %3
%16 = call i32 (i8*, ...) bitcast (i32 (...)* @puts0 to i32 (i8*, ...)*)(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.1, i64 0, i64 0))
%17 = getelementptr inbounds [256 x i8], [256 x i8]* %2, i64 0, i64 0
%18 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @getsn to i32 (i8*, i32, ...)*)(i8* %17, i32 256)
%19 = getelementptr inbounds [256 x i8], [256 x i8]* %2, i64 0, i64 0
%20 = call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %19)
store i32 %20, i32* %4
%21 = call i32 (i8*, ...) bitcast (i32 (...)* @puts0 to i32 (i8*, ...)*)(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0))
%22 = getelementptr inbounds [256 x i8], [256 x i8]* %2, i64 0, i64 0
%23 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @getsn to i32 (i8*, i32, ...)*)(i8* %22, i32 256)
%24 = getelementptr inbounds [256 x i8], [256 x i8]* %2, i64 0, i64 0
%25 = call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %24)
store i32 %25, i32* %5
%26 = call i32 (i8*, ...) bitcast (i32 (...)* @puts0 to i32 (i8*, ...)*)(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.3, i64 0, i64 0))
%27 = getelementptr inbounds [256 x i8], [256 x i8]* %2, i64 0, i64 0
%28 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @getsn to i32 (i8*, i32, ...)*)(i8* %27, i32 256)
%29 = getelementptr inbounds [256 x i8], [256 x i8]* %2, i64 0, i64 0
%30 = call i32 (i8*, ...) bitcast (i32 (...)* @atoi to i32 (i8*, ...)*)(i8* %29)
store i32 %30, i32* %6
%31 = call i32 (i8*, ...) bitcast (i32 (...)* @puts0 to i32 (i8*, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.4, i64 0, i64 0))
%32 = load i32, i32* %3
%33 = call i32 (i32, ...) bitcast (i32 (...)* @puthex_b to i32 (i32, ...)*)(i32 %32)
%34 = call i32 (i8*, ...) bitcast (i32 (...)* @puts0 to i32 (i8*, ...)*)(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0))
%35 = load i32, i32* %4
%36 = call i32 (i32, ...) bitcast (i32 (...)* @putdec to i32 (i32, ...)*)(i32 %35)
%37 = call i32 (i8*, ...) bitcast (i32 (...)* @puts0 to i32 (i8*, ...)*)(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.6, i64 0, i64 0))
%38 = load i32, i32* %5
%39 = call i32 (i32, ...) bitcast (i32 (...)* @putdec to i32 (i32, ...)*)(i32 %38)
%40 = call i32 (i8*, ...) bitcast (i32 (...)* @puts0 to i32 (i8*, ...)*)(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.7, i64 0, i64 0))
%41 = load i32, i32* %6
%42 = call i32 (i32, ...) bitcast (i32 (...)* @putdec to i32 (i32, ...)*)(i32 %41)
store i32 0, i32* %7
br label %43
43: ; preds = %50, %0
%44 = load i32, i32* %7
%45 = icmp slt i32 %44, 512
br i1 %45, label %46, label %53
46: ; preds = %43
%47 = load i32, i32* %7
%48 = sext i32 %47 to i64
%49 = getelementptr inbounds [512 x i8], [512 x i8]* %1, i64 0, i64 %48
store i8 0, i8* %49
br label %50
50: ; preds = %46
%51 = load i32, i32* %7
%52 = add nsw i32 %51, 1
store i32 %52, i32* %7
br label %43
53: ; preds = %43
%54 = load i32, i32* %3
%55 = load i32, i32* %4
%56 = load i32, i32* %5
%57 = load i32, i32* %6
%58 = getelementptr inbounds [512 x i8], [512 x i8]* %1, i64 0, i64 0
%59 = call i32 (i32, i32, i32, i32, i8*, ...) bitcast (i32 (...)* @readsec0 to i32 (i32, i32, i32, i32, i8*, ...)*)(i32 %54, i32 %55, i32 %56, i32 %57, i8* %58)
store i32 %59, i32* %7
%60 = load i32, i32* %7
%61 = icmp eq i32 %60, 1
br i1 %61, label %62, label %64
62: ; preds = %53
%63 = call i32 (i8*, ...) bitcast (i32 (...)* @puts0 to i32 (i8*, ...)*)(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0))
br label %68
64: ; preds = %53
%65 = call i32 (i8*, ...) bitcast (i32 (...)* @puts0 to i32 (i8*, ...)*)(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.9, i64 0, i64 0))
%66 = load i32, i32* %7
%67 = call i32 (i32, ...) bitcast (i32 (...)* @puthex to i32 (i32, ...)*)(i32 %66)
br label %68
68: ; preds = %64, %62
%69 = call i32 (i8*, ...) bitcast (i32 (...)* @puts0 to i32 (i8*, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
store i32 0, i32* %8
store i32 0, i32* %10
br label %70
70: ; preds = %124, %68
%71 = load i32, i32* %10
%72 = icmp slt i32 %71, 32
br i1 %72, label %73, label %127
73: ; preds = %70
%74 = load i32, i32* %10
%75 = icmp eq i32 %74, 15
br i1 %75, label %76, label %80
76: ; preds = %73
%77 = call i32 (i8*, ...) bitcast (i32 (...)* @puts0 to i32 (i8*, ...)*)(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.11, i64 0, i64 0))
%78 = call i32 (...) @getch()
%79 = call i32 (i32, ...) bitcast (i32 (...)* @putch to i32 (i32, ...)*)(i32 13)
br label %80
80: ; preds = %76, %73
store i32 0, i32* %7
br label %81
81: ; preds = %94, %80
%82 = load i32, i32* %7
%83 = icmp slt i32 %82, 16
br i1 %83, label %84, label %97
84: ; preds = %81
%85 = load i32, i32* %8
%86 = add nsw i32 %85, 1
store i32 %86, i32* %8
%87 = sext i32 %85 to i64
%88 = getelementptr inbounds [512 x i8], [512 x i8]* %1, i64 0, i64 %87
%89 = load i8, i8* %88
%90 = sext i8 %89 to i32
store i32 %90, i32* %9
%91 = load i32, i32* %9
%92 = call i32 (i32, ...) bitcast (i32 (...)* @puthex_b to i32 (i32, ...)*)(i32 %91)
%93 = call i32 (i32, ...) bitcast (i32 (...)* @putch to i32 (i32, ...)*)(i32 32)
br label %94
94: ; preds = %84
%95 = load i32, i32* %7
%96 = add nsw i32 %95, 1
store i32 %96, i32* %7
br label %81
97: ; preds = %81
%98 = load i32, i32* %8
%99 = sub nsw i32 %98, 16
store i32 %99, i32* %8
store i32 0, i32* %7
br label %100
100: ; preds = %119, %97
%101 = load i32, i32* %7
%102 = icmp slt i32 %101, 16
br i1 %102, label %103, label %122
103: ; preds = %100
%104 = load i32, i32* %8
%105 = add nsw i32 %104, 1
store i32 %105, i32* %8
%106 = sext i32 %104 to i64
%107 = getelementptr inbounds [512 x i8], [512 x i8]* %1, i64 0, i64 %106
%108 = load i8, i8* %107
%109 = sext i8 %108 to i32
%110 = and i32 %109, 255
store i32 %110, i32* %9
%111 = load i32, i32* %9
%112 = icmp slt i32 %111, 32
br i1 %112, label %113, label %115
113: ; preds = %103
%114 = call i32 (i32, ...) bitcast (i32 (...)* @putch to i32 (i32, ...)*)(i32 46)
br label %118
115: ; preds = %103
%116 = load i32, i32* %9
%117 = call i32 (i32, ...) bitcast (i32 (...)* @putch to i32 (i32, ...)*)(i32 %116)
br label %118
118: ; preds = %115, %113
br label %119
119: ; preds = %118
%120 = load i32, i32* %7
%121 = add nsw i32 %120, 1
store i32 %121, i32* %7
br label %100
122: ; preds = %100
%123 = call i32 (i8*, ...) bitcast (i32 (...)* @puts0 to i32 (i8*, ...)*)(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.10, i64 0, i64 0))
br label %124
124: ; preds = %122
%125 = load i32, i32* %10
%126 = add nsw i32 %125, 1
store i32 %126, i32* %10
br label %70
127: ; preds = %70
ret void
}

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