void medianOfFour(void **ar, int left, int gap,
                  int (*cmp)(const void *, const void *)) {
  int pos1 = left, pos2, pos3, pos4;
  void *a1 = ar[pos1];
  void *a2 = ar[pos2 = pos1 + gap];
  void *a3 = ar[pos3 = pos2 + gap];
  void *a4 = ar[pos4 = pos3 + gap];
  if (cmp(a1, a2) <= 0) {
    if (cmp(a2, a3) <= 0) {
      if (cmp(a2, a4) <= 0) {
        if (cmp(a3, a4) > 0) {
          {
            void *_tmp__ = ar[pos3];
            ar[pos3] = ar[pos4];
            ar[pos4] = _tmp__;
          };
        }
      } else {
        {
          void *_tmp__ = ar[pos2];
          ar[pos2] = ar[pos3];
          ar[pos3] = _tmp__;
        };
      }
    } else {
      if (cmp(a1, a3) <= 0) {
        if (cmp(a3, a4) <= 0) {
          if (cmp(a2, a4) <= 0) {
            {
              void *_tmp__ = ar[pos2];
              ar[pos2] = ar[pos3];
              ar[pos3] = _tmp__;
            };
          } else {
            {
              void *_tmp__ = ar[pos3];
              ar[pos3] = ar[pos4];
              ar[pos4] = _tmp__;
            };
          }
        }
      } else {
        if (cmp(a1, a4) <= 0) {
          if (cmp(a2, a4) <= 0) {
            {
              void *_tmp__ = ar[pos2];
              ar[pos2] = ar[pos3];
              ar[pos3] = _tmp__;
            };
          } else {
            {
              void *_tmp__ = ar[pos3];
              ar[pos3] = ar[pos4];
              ar[pos4] = _tmp__;
            };
          }
        } else {
          {
            void *_tmp__ = ar[pos1];
            ar[pos1] = ar[pos3];
            ar[pos3] = _tmp__;
          };
        }
      }
    }
  } else {
    if (cmp(a1, a3) <= 0) {
      if (cmp(a1, a4) <= 0) {
        if (cmp(a3, a4) > 0) {
          {
            void *_tmp__ = ar[pos3];
            ar[pos3] = ar[pos4];
            ar[pos4] = _tmp__;
          };
        }
      } else {
        {
          void *_tmp__ = ar[pos1];
          ar[pos1] = ar[pos3];
          ar[pos3] = _tmp__;
        };
      }
    } else {
      if (cmp(a2, a3) <= 0) {
        if (cmp(a3, a4) <= 0) {
          if (cmp(a1, a4) <= 0) {
            {
              void *_tmp__ = ar[pos1];
              ar[pos1] = ar[pos3];
              ar[pos3] = _tmp__;
            };
          } else {
            {
              void *_tmp__ = ar[pos3];
              ar[pos3] = ar[pos4];
              ar[pos4] = _tmp__;
            };
          }
        }
      } else {
        if (cmp(a2, a4) <= 0) {
          if (cmp(a1, a4) <= 0) {
            {
              void *_tmp__ = ar[pos1];
              ar[pos1] = ar[pos3];
              ar[pos3] = _tmp__;
            };
          } else {
            {
              void *_tmp__ = ar[pos3];
              ar[pos3] = ar[pos4];
              ar[pos4] = _tmp__;
            };
          }
        } else {
          {
            void *_tmp__ = ar[pos2];
            ar[pos2] = ar[pos3];
            ar[pos3] = _tmp__;
          };
        }
      }
    }
  }
}


x86 assembly (clang, -O0):
<medianOfFour>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x30(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    -0x10(%rbp),%ecx
mov    %ecx,-0x20(%rbp)
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x38(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    -0x10(%rbp),%ecx
mov    %ecx,-0x24(%rbp)
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x40(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    -0x10(%rbp),%ecx
mov    %ecx,-0x28(%rbp)
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rdi
mov    -0x38(%rbp),%rsi
call   *%rax
cmp    $0x0,%eax
jg     1400 <medianOfFour+0x300>
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rdi
mov    -0x40(%rbp),%rsi
call   *%rax
cmp    $0x0,%eax
jg     124d <medianOfFour+0x14d>
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rdi
mov    -0x48(%rbp),%rsi
call   *%rax
cmp    $0x0,%eax
jg     1210 <medianOfFour+0x110>
mov    -0x18(%rbp),%rax
mov    -0x40(%rbp),%rdi
mov    -0x48(%rbp),%rsi
call   *%rax
cmp    $0x0,%eax
jle    120b <medianOfFour+0x10b>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x50(%rbp),%rdx
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
jmp    1248 <medianOfFour+0x148>
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x58(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x58(%rbp),%rdx
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
jmp    13fb <medianOfFour+0x2fb>
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rdi
mov    -0x40(%rbp),%rsi
call   *%rax
cmp    $0x0,%eax
jg     1311 <medianOfFour+0x211>
mov    -0x18(%rbp),%rax
mov    -0x40(%rbp),%rdi
mov    -0x48(%rbp),%rsi
call   *%rax
cmp    $0x0,%eax
jg     130c <medianOfFour+0x20c>
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rdi
mov    -0x48(%rbp),%rsi
call   *%rax
cmp    $0x0,%eax
jg     12cf <medianOfFour+0x1cf>
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x60(%rbp),%rdx
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
jmp    1307 <medianOfFour+0x207>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x68(%rbp),%rdx
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
jmp    130c <medianOfFour+0x20c>
jmp    13f6 <medianOfFour+0x2f6>
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rdi
mov    -0x48(%rbp),%rsi
call   *%rax
cmp    $0x0,%eax
jg     13b9 <medianOfFour+0x2b9>
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rdi
mov    -0x48(%rbp),%rsi
call   *%rax
cmp    $0x0,%eax
jg     137c <medianOfFour+0x27c>
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x70(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x70(%rbp),%rdx
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
jmp    13b4 <medianOfFour+0x2b4>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x78(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x78(%rbp),%rdx
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
jmp    13f1 <medianOfFour+0x2f1>
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x80(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x80(%rbp),%rdx
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
jmp    13f6 <medianOfFour+0x2f6>
jmp    13fb <medianOfFour+0x2fb>
jmp    169c <medianOfFour+0x59c>
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rdi
mov    -0x40(%rbp),%rsi
call   *%rax
cmp    $0x0,%eax
jg     14cb <medianOfFour+0x3cb>
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rdi
mov    -0x48(%rbp),%rsi
call   *%rax
cmp    $0x0,%eax
jg     1488 <medianOfFour+0x388>
mov    -0x18(%rbp),%rax
mov    -0x40(%rbp),%rdi
mov    -0x48(%rbp),%rsi
call   *%rax
cmp    $0x0,%eax
jle    1483 <medianOfFour+0x383>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x88(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x88(%rbp),%rdx
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
jmp    14c6 <medianOfFour+0x3c6>
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x90(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x90(%rbp),%rdx
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
jmp    1697 <medianOfFour+0x597>
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rdi
mov    -0x40(%rbp),%rsi
call   *%rax
cmp    $0x0,%eax
jg     159b <medianOfFour+0x49b>
mov    -0x18(%rbp),%rax
mov    -0x40(%rbp),%rdi
mov    -0x48(%rbp),%rsi
call   *%rax
cmp    $0x0,%eax
jg     1596 <medianOfFour+0x496>
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rdi
mov    -0x48(%rbp),%rsi
call   *%rax
cmp    $0x0,%eax
jg     1553 <medianOfFour+0x453>
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0x98(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0x98(%rbp),%rdx
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
jmp    1591 <medianOfFour+0x491>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0xa0(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0xa0(%rbp),%rdx
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
jmp    1596 <medianOfFour+0x496>
jmp    1692 <medianOfFour+0x592>
mov    -0x18(%rbp),%rax
mov    -0x38(%rbp),%rdi
mov    -0x48(%rbp),%rsi
call   *%rax
cmp    $0x0,%eax
jg     164f <medianOfFour+0x54f>
mov    -0x18(%rbp),%rax
mov    -0x30(%rbp),%rdi
mov    -0x48(%rbp),%rsi
call   *%rax
cmp    $0x0,%eax
jg     160c <medianOfFour+0x50c>
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0xa8(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0xa8(%rbp),%rdx
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
jmp    164a <medianOfFour+0x54a>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0xb0(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0xb0(%rbp),%rdx
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
jmp    168d <medianOfFour+0x58d>
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    %rax,-0xb8(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rdx
mov    -0x8(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
mov    -0xb8(%rbp),%rdx
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    %rdx,(%rax,%rcx,8)
jmp    1692 <medianOfFour+0x592>
jmp    1697 <medianOfFour+0x597>
jmp    169c <medianOfFour+0x59c>
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<medianOfFour>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %rcx,%r15
movslq %esi,%rax
lea    (%rdi,%rax,8),%rcx
mov    %rcx,0x10(%rsp)
mov    (%rdi,%rax,8),%r12
add    %edx,%eax
cltq
lea    (%rdi,%rax,8),%rcx
mov    %rcx,(%rsp)
mov    (%rdi,%rax,8),%rbx
add    %edx,%eax
cltq
lea    (%rdi,%rax,8),%rbp
mov    (%rdi,%rax,8),%r13
add    %edx,%eax
cltq
lea    (%rdi,%rax,8),%rcx
mov    %rcx,0x8(%rsp)
mov    (%rdi,%rax,8),%r14
mov    %r12,%rdi
mov    %rbx,%rsi
call   *%r15
test   %eax,%eax
jle    11a0 <medianOfFour+0xa0>
mov    %r12,%rdi
mov    %r13,%rsi
call   *%r15
test   %eax,%eax
jle    11f3 <medianOfFour+0xf3>
mov    %rbx,%rdi
mov    %r13,%rsi
call   *%r15
test   %eax,%eax
jle    120a <medianOfFour+0x10a>
mov    %rbx,%rdi
mov    %r14,%rsi
call   *%r15
test   %eax,%eax
jg     124f <medianOfFour+0x14f>
mov    %r12,%rdi
mov    %r14,%rsi
call   *%r15
test   %eax,%eax
mov    0x10(%rsp),%r14
jmp    11de <medianOfFour+0xde>
mov    %rbx,%rdi
mov    %r13,%rsi
call   *%r15
test   %eax,%eax
jle    1242 <medianOfFour+0x142>
mov    %r12,%rdi
mov    %r13,%rsi
call   *%r15
test   %eax,%eax
jle    126c <medianOfFour+0x16c>
mov    %r12,%rdi
mov    %r14,%rsi
call   *%r15
test   %eax,%eax
jg     1200 <medianOfFour+0x100>
mov    %rbx,%rdi
mov    %r14,%rsi
call   *%r15
test   %eax,%eax
mov    (%rsp),%r14
cmovg  %rbp,%r14
mov    %rbp,%rax
mov    0x8(%rsp),%rbp
cmovle %rax,%rbp
jmp    129b <medianOfFour+0x19b>
mov    %r12,%rdi
mov    %r14,%rsi
call   *%r15
test   %eax,%eax
jle    1255 <medianOfFour+0x155>
mov    0x10(%rsp),%r14
jmp    129b <medianOfFour+0x19b>
mov    %rbp,(%rsp)
mov    %r13,%rdi
mov    %r14,%rsi
call   *%r15
test   %eax,%eax
mov    0x8(%rsp),%rbp
jg     12a9 <medianOfFour+0x1a9>
mov    %r12,%rdi
mov    %r14,%rsi
call   *%r15
test   %eax,%eax
mov    (%rsp),%rbx
mov    0x10(%rsp),%r14
cmovg  %rbx,%r14
cmovle %rbx,%rbp
jmp    129b <medianOfFour+0x19b>
mov    %rbx,%rdi
mov    %r14,%rsi
call   *%r15
test   %eax,%eax
jle    1255 <medianOfFour+0x155>
mov    (%rsp),%r14
jmp    129b <medianOfFour+0x19b>
mov    %r13,%rdi
mov    %r14,%rsi
call   *%r15
mov    %rbp,%r14
test   %eax,%eax
mov    0x8(%rsp),%rbp
jg     129b <medianOfFour+0x19b>
jmp    12a9 <medianOfFour+0x1a9>
mov    %rbp,%r12
mov    %r13,%rdi
mov    %r14,%r13
mov    %r14,%rsi
call   *%r15
test   %eax,%eax
mov    0x8(%rsp),%rbp
mov    (%rsp),%r14
jg     12a9 <medianOfFour+0x1a9>
mov    %rbx,%rdi
mov    %r13,%rsi
call   *%r15
test   %eax,%eax
cmovg  %r12,%r14
cmovle %r12,%rbp
mov    (%r14),%rax
mov    0x0(%rbp),%rcx
mov    %rcx,(%r14)
mov    %rax,0x0(%rbp)
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @medianOfFour(i8** %0, i32 %1, i32 %2, i32 (i8*, i8*)* nocapture %3) {
%5 = sext i32 %1 to i64
%6 = getelementptr inbounds i8*, i8** %0, i64 %5
%7 = load i8*, i8** %6
%8 = add nsw i32 %2, %1
%9 = sext i32 %8 to i64
%10 = getelementptr inbounds i8*, i8** %0, i64 %9
%11 = load i8*, i8** %10
%12 = add nsw i32 %8, %2
%13 = sext i32 %12 to i64
%14 = getelementptr inbounds i8*, i8** %0, i64 %13
%15 = load i8*, i8** %14
%16 = add nsw i32 %12, %2
%17 = sext i32 %16 to i64
%18 = getelementptr inbounds i8*, i8** %0, i64 %17
%19 = load i8*, i8** %18
%20 = tail call i32 %3(i8* %7, i8* %11)
%21 = icmp slt i32 %20, 1
br i1 %21, label %22, label %50
22: ; preds = %4
%23 = tail call i32 %3(i8* %11, i8* %15)
%24 = icmp slt i32 %23, 1
br i1 %24, label %25, label %31
25: ; preds = %22
%26 = tail call i32 %3(i8* %11, i8* %19)
%27 = icmp slt i32 %26, 1
br i1 %27, label %28, label %78
28: ; preds = %25
%29 = tail call i32 %3(i8* %15, i8* %19)
%30 = icmp sgt i32 %29, 0
br i1 %30, label %78, label %83
31: ; preds = %22
%32 = tail call i32 %3(i8* %7, i8* %15)
%33 = icmp slt i32 %32, 1
br i1 %33, label %34, label %42
34: ; preds = %31
%35 = tail call i32 %3(i8* %15, i8* %19)
%36 = icmp slt i32 %35, 1
br i1 %36, label %37, label %83
37: ; preds = %34
%38 = tail call i32 %3(i8* %11, i8* %19)
%39 = icmp slt i32 %38, 1
%40 = select i1 %39, i8** %10, i8** %14
%41 = select i1 %39, i8** %14, i8** %18
br label %78
42: ; preds = %31
%43 = tail call i32 %3(i8* %7, i8* %19)
%44 = icmp slt i32 %43, 1
br i1 %44, label %45, label %78
45: ; preds = %42
%46 = tail call i32 %3(i8* %11, i8* %19)
%47 = icmp slt i32 %46, 1
%48 = select i1 %47, i8** %10, i8** %14
%49 = select i1 %47, i8** %14, i8** %18
br label %78
50: ; preds = %4
%51 = tail call i32 %3(i8* %7, i8* %15)
%52 = icmp slt i32 %51, 1
br i1 %52, label %53, label %59
53: ; preds = %50
%54 = tail call i32 %3(i8* %7, i8* %19)
%55 = icmp slt i32 %54, 1
br i1 %55, label %56, label %78
56: ; preds = %53
%57 = tail call i32 %3(i8* %15, i8* %19)
%58 = icmp sgt i32 %57, 0
br i1 %58, label %78, label %83
59: ; preds = %50
%60 = tail call i32 %3(i8* %11, i8* %15)
%61 = icmp slt i32 %60, 1
br i1 %61, label %62, label %70
62: ; preds = %59
%63 = tail call i32 %3(i8* %15, i8* %19)
%64 = icmp slt i32 %63, 1
br i1 %64, label %65, label %83
65: ; preds = %62
%66 = tail call i32 %3(i8* %7, i8* %19)
%67 = icmp slt i32 %66, 1
%68 = select i1 %67, i8** %6, i8** %14
%69 = select i1 %67, i8** %14, i8** %18
br label %78
70: ; preds = %59
%71 = tail call i32 %3(i8* %11, i8* %19)
%72 = icmp slt i32 %71, 1
br i1 %72, label %73, label %78
73: ; preds = %70
%74 = tail call i32 %3(i8* %7, i8* %19)
%75 = icmp slt i32 %74, 1
%76 = select i1 %75, i8** %6, i8** %14
%77 = select i1 %75, i8** %14, i8** %18
br label %78
78: ; preds = %70, %73, %65, %53, %56, %42, %45, %37, %25, %28
%79 = phi i8** [ %14, %28 ], [ %10, %25 ], [ %40, %37 ], [ %48, %45 ], [ %6, %42 ], [ %14, %56 ], [ %6, %53 ], [ %68, %65 ], [ %76, %73 ], [ %10, %70 ]
%80 = phi i8** [ %18, %28 ], [ %14, %25 ], [ %41, %37 ], [ %49, %45 ], [ %14, %42 ], [ %18, %56 ], [ %14, %53 ], [ %69, %65 ], [ %77, %73 ], [ %14, %70 ]
%81 = load i8*, i8** %79
%82 = load i8*, i8** %80
store i8* %82, i8** %79
store i8* %81, i8** %80
br label %83
83: ; preds = %78, %56, %62, %28, %34
ret void
}