#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ siBubbleSort(int *, int);
int /*<<< orphan*/ uiBubbleSort(unsigned int *, int);
int main() {
  signed int siinput[21];
  unsigned int uiinput[21];
  signed char i;
  unsigned char j;
  int count, errorsi, errorui;
  siinput[0] = 0xF234F5DF;
  siinput[1] = 0x23512444;
  siinput[2] = 0x34565612;
  siinput[3] = 0x1234F645;
  siinput[4] = 0x8901FF80;
  siinput[5] = 0x789012DD;
  siinput[6] = 0x23454343;
  siinput[7] = 0x8965F167;
  siinput[8] = 0x00000000;
  siinput[9] = 0x45670123;
  siinput[10] = 0x23453301;
  siinput[11] = 0x543212F7;
  siinput[12] = 0x76548745;
  siinput[13] = 0x23458286;
  siinput[14] = 0x87651296;
  siinput[15] = 0xD3453452;
  siinput[16] = 0xC432E3FF;
  siinput[17] = 0x22222456;
  siinput[18] = 0x12346723;
  siinput[19] = 0xD4567510;
  siinput[20] = 0x00000005;
  uiinput[0] = 0xF234F5DF;
  uiinput[1] = 0x23512444;
  uiinput[2] = 0x34565612;
  uiinput[3] = 0x1234F645;
  uiinput[4] = 0x8901FF80;
  uiinput[5] = 0x789012DD;
  uiinput[6] = 0x23454343;
  uiinput[7] = 0x8965F167;
  uiinput[8] = 0x00000000;
  uiinput[9] = 0x45670123;
  uiinput[10] = 0x23453301;
  uiinput[11] = 0x543212F7;
  uiinput[12] = 0x76548745;
  uiinput[13] = 0x23458286;
  uiinput[14] = 0x87651296;
  uiinput[15] = 0xD3453452;
  uiinput[16] = 0xC432E3FF;
  uiinput[17] = 0x22222456;
  uiinput[18] = 0x12346723;
  uiinput[19] = 0xD4567510;
  uiinput[20] = 0x00000005;
  siBubbleSort(siinput, 21);
  uiBubbleSort(uiinput, 21);
  errorsi = 0;
  for (count = 0; count < 20; count++)
    if (siinput[count] > siinput[count + 1])
      errorui = 1;
  errorui = 0;
  for (count = 0; count < 20; count++)
    if (uiinput[count] > uiinput[count + 1])
      errorui = 1;
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0xf234f5df,-0x60(%rbp)
movl   $0x23512444,-0x5c(%rbp)
movl   $0x34565612,-0x58(%rbp)
movl   $0x1234f645,-0x54(%rbp)
movl   $0x8901ff80,-0x50(%rbp)
movl   $0x789012dd,-0x4c(%rbp)
movl   $0x23454343,-0x48(%rbp)
movl   $0x8965f167,-0x44(%rbp)
movl   $0x0,-0x40(%rbp)
movl   $0x45670123,-0x3c(%rbp)
movl   $0x23453301,-0x38(%rbp)
movl   $0x543212f7,-0x34(%rbp)
movl   $0x76548745,-0x30(%rbp)
movl   $0x23458286,-0x2c(%rbp)
movl   $0x87651296,-0x28(%rbp)
movl   $0xd3453452,-0x24(%rbp)
movl   $0xc432e3ff,-0x20(%rbp)
movl   $0x22222456,-0x1c(%rbp)
movl   $0x12346723,-0x18(%rbp)
movl   $0xd4567510,-0x14(%rbp)
movl   $0x5,-0x10(%rbp)
movl   $0xf234f5df,-0xc0(%rbp)
f5 34 f2
movl   $0x23512444,-0xbc(%rbp)
24 51 23
movl   $0x34565612,-0xb8(%rbp)
56 56 34
movl   $0x1234f645,-0xb4(%rbp)
f6 34 12
movl   $0x8901ff80,-0xb0(%rbp)
ff 01 89
movl   $0x789012dd,-0xac(%rbp)
12 90 78
movl   $0x23454343,-0xa8(%rbp)
43 45 23
movl   $0x8965f167,-0xa4(%rbp)
f1 65 89
movl   $0x0,-0xa0(%rbp)
movl   $0x45670123,-0x9c(%rbp)
01 67 45
movl   $0x23453301,-0x98(%rbp)
33 45 23
movl   $0x543212f7,-0x94(%rbp)
12 32 54
movl   $0x76548745,-0x90(%rbp)
87 54 76
movl   $0x23458286,-0x8c(%rbp)
82 45 23
movl   $0x87651296,-0x88(%rbp)
12 65 87
movl   $0xd3453452,-0x84(%rbp)
34 45 d3
movl   $0xc432e3ff,-0x80(%rbp)
movl   $0x22222456,-0x7c(%rbp)
movl   $0x12346723,-0x78(%rbp)
movl   $0xd4567510,-0x74(%rbp)
movl   $0x5,-0x70(%rbp)
lea    -0x60(%rbp),%rdi
mov    $0x15,%esi
call   1030 <siBubbleSort@plt>
lea    -0xc0(%rbp),%rdi
mov    $0x15,%esi
call   1040 <uiBubbleSort@plt>
movl   $0x0,-0xcc(%rbp)
movl   $0x0,-0xc8(%rbp)
cmpl   $0x14,-0xc8(%rbp)
jge    130c <main+0x1ec>
movslq -0xc8(%rbp),%rax
mov    -0x60(%rbp,%rax,4),%eax
mov    -0xc8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmp    -0x60(%rbp,%rcx,4),%eax
jle    12f3 <main+0x1d3>
movl   $0x1,-0xd0(%rbp)
jmp    12f8 <main+0x1d8>
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
jmp    12bb <main+0x19b>
movl   $0x0,-0xd0(%rbp)
movl   $0x0,-0xc8(%rbp)
cmpl   $0x14,-0xc8(%rbp)
jge    1377 <main+0x257>
movslq -0xc8(%rbp),%rax
mov    -0xc0(%rbp,%rax,4),%eax
mov    -0xc8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmp    -0xc0(%rbp,%rcx,4),%eax
jbe    135e <main+0x23e>
movl   $0x1,-0xd0(%rbp)
jmp    1363 <main+0x243>
mov    -0xc8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc8(%rbp)
jmp    1320 <main+0x200>
xor    %eax,%eax
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
sub    $0xb8,%rsp
movaps 0xed2(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0xed6(%rip),%xmm1
movaps %xmm1,0x70(%rsp)
movaps 0xeda(%rip),%xmm2
movaps %xmm2,0x80(%rsp)
movaps 0xedb(%rip),%xmm3
movaps %xmm3,0x90(%rsp)
movaps 0xedc(%rip),%xmm4
movaps %xmm4,0xa0(%rsp)
movl   $0x5,0xb0(%rsp)
movaps %xmm0,(%rsp)
movaps %xmm1,0x10(%rsp)
movaps %xmm2,0x20(%rsp)
movaps %xmm3,0x30(%rsp)
movaps %xmm4,0x40(%rsp)
movl   $0x5,0x50(%rsp)
lea    0x60(%rsp),%rdi
mov    $0x15,%esi
call   1030 <siBubbleSort@plt>
mov    %rsp,%rdi
mov    $0x15,%esi
call   1040 <uiBubbleSort@plt>
xor    %eax,%eax
add    $0xb8,%rsp
ret

LLVM IR (-O0):
define i32 @main() {
%1 = alloca i32
%2 = alloca [21 x i32]
%3 = alloca [21 x i32]
%4 = alloca i8
%5 = alloca i8
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
store i32 0, i32* %1
%9 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 0
store i32 -231410209, i32* %9
%10 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 1
store i32 592520260, i32* %10
%11 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 2
store i32 878073362, i32* %11
%12 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 3
store i32 305460805, i32* %12
%13 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 4
store i32 -1996357760, i32* %13
%14 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 5
store i32 2022707933, i32* %14
%15 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 6
store i32 591741763, i32* %15
%16 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 7
store i32 -1989807769, i32* %16
%17 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 8
store i32 0, i32* %17
%18 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 9
store i32 1164378403, i32* %18
%19 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 10
store i32 591737601, i32* %19
%20 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 11
store i32 1412567799, i32* %20
%21 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 12
store i32 1985251141, i32* %21
%22 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 13
store i32 591757958, i32* %22
%23 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 14
store i32 -2023419242, i32* %23
%24 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 15
store i32 -750439342, i32* %24
%25 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 16
store i32 -1003297793, i32* %25
%26 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 17
store i32 572662870, i32* %26
%27 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 18
store i32 305424163, i32* %27
%28 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 19
store i32 -732531440, i32* %28
%29 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 20
store i32 5, i32* %29
%30 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 0
store i32 -231410209, i32* %30
%31 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 1
store i32 592520260, i32* %31
%32 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 2
store i32 878073362, i32* %32
%33 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 3
store i32 305460805, i32* %33
%34 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 4
store i32 -1996357760, i32* %34
%35 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 5
store i32 2022707933, i32* %35
%36 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 6
store i32 591741763, i32* %36
%37 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 7
store i32 -1989807769, i32* %37
%38 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 8
store i32 0, i32* %38
%39 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 9
store i32 1164378403, i32* %39
%40 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 10
store i32 591737601, i32* %40
%41 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 11
store i32 1412567799, i32* %41
%42 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 12
store i32 1985251141, i32* %42
%43 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 13
store i32 591757958, i32* %43
%44 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 14
store i32 -2023419242, i32* %44
%45 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 15
store i32 -750439342, i32* %45
%46 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 16
store i32 -1003297793, i32* %46
%47 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 17
store i32 572662870, i32* %47
%48 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 18
store i32 305424163, i32* %48
%49 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 19
store i32 -732531440, i32* %49
%50 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 20
store i32 5, i32* %50
%51 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 0
%52 = call i32 @siBubbleSort(i32* %51, i32 21)
%53 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 0
%54 = call i32 @uiBubbleSort(i32* %53, i32 21)
store i32 0, i32* %7
store i32 0, i32* %6
br label %55
55: ; preds = %71, %0
%56 = load i32, i32* %6
%57 = icmp slt i32 %56, 20
br i1 %57, label %58, label %74
58: ; preds = %55
%59 = load i32, i32* %6
%60 = sext i32 %59 to i64
%61 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 %60
%62 = load i32, i32* %61
%63 = load i32, i32* %6
%64 = add nsw i32 %63, 1
%65 = sext i32 %64 to i64
%66 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 %65
%67 = load i32, i32* %66
%68 = icmp sgt i32 %62, %67
br i1 %68, label %69, label %70
69: ; preds = %58
store i32 1, i32* %8
br label %70
70: ; preds = %69, %58
br label %71
71: ; preds = %70
%72 = load i32, i32* %6
%73 = add nsw i32 %72, 1
store i32 %73, i32* %6
br label %55
74: ; preds = %55
store i32 0, i32* %8
store i32 0, i32* %6
br label %75
75: ; preds = %91, %74
%76 = load i32, i32* %6
%77 = icmp slt i32 %76, 20
br i1 %77, label %78, label %94
78: ; preds = %75
%79 = load i32, i32* %6
%80 = sext i32 %79 to i64
%81 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 %80
%82 = load i32, i32* %81
%83 = load i32, i32* %6
%84 = add nsw i32 %83, 1
%85 = sext i32 %84 to i64
%86 = getelementptr inbounds [21 x i32], [21 x i32]* %3, i64 0, i64 %85
%87 = load i32, i32* %86
%88 = icmp ugt i32 %82, %87
br i1 %88, label %89, label %90
89: ; preds = %78
store i32 1, i32* %8
br label %90
90: ; preds = %89, %78
br label %91
91: ; preds = %90
%92 = load i32, i32* %6
%93 = add nsw i32 %92, 1
store i32 %93, i32* %6
br label %75
94: ; preds = %75
ret i32 0
}

LLVM IR (-O2):
define i32 @main() {
%1 = alloca [21 x i32]
%2 = alloca [21 x i32]
%3 = bitcast [21 x i32]* %1 to i8*
%4 = bitcast [21 x i32]* %2 to i8*
%5 = getelementptr inbounds [21 x i32], [21 x i32]* %1, i64 0, i64 0
%6 = bitcast [21 x i32]* %1 to <4 x i32>*
store <4 x i32> <i32 -231410209, i32 592520260, i32 878073362, i32 305460805>, <4 x i32>* %6
%7 = getelementptr inbounds [21 x i32], [21 x i32]* %1, i64 0, i64 4
%8 = bitcast i32* %7 to <4 x i32>*
store <4 x i32> <i32 -1996357760, i32 2022707933, i32 591741763, i32 -1989807769>, <4 x i32>* %8
%9 = getelementptr inbounds [21 x i32], [21 x i32]* %1, i64 0, i64 8
%10 = bitcast i32* %9 to <4 x i32>*
store <4 x i32> <i32 0, i32 1164378403, i32 591737601, i32 1412567799>, <4 x i32>* %10
%11 = getelementptr inbounds [21 x i32], [21 x i32]* %1, i64 0, i64 12
%12 = bitcast i32* %11 to <4 x i32>*
store <4 x i32> <i32 1985251141, i32 591757958, i32 -2023419242, i32 -750439342>, <4 x i32>* %12
%13 = getelementptr inbounds [21 x i32], [21 x i32]* %1, i64 0, i64 16
%14 = bitcast i32* %13 to <4 x i32>*
store <4 x i32> <i32 -1003297793, i32 572662870, i32 305424163, i32 -732531440>, <4 x i32>* %14
%15 = getelementptr inbounds [21 x i32], [21 x i32]* %1, i64 0, i64 20
store i32 5, i32* %15
%16 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 0
%17 = bitcast [21 x i32]* %2 to <4 x i32>*
store <4 x i32> <i32 -231410209, i32 592520260, i32 878073362, i32 305460805>, <4 x i32>* %17
%18 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 4
%19 = bitcast i32* %18 to <4 x i32>*
store <4 x i32> <i32 -1996357760, i32 2022707933, i32 591741763, i32 -1989807769>, <4 x i32>* %19
%20 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 8
%21 = bitcast i32* %20 to <4 x i32>*
store <4 x i32> <i32 0, i32 1164378403, i32 591737601, i32 1412567799>, <4 x i32>* %21
%22 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 12
%23 = bitcast i32* %22 to <4 x i32>*
store <4 x i32> <i32 1985251141, i32 591757958, i32 -2023419242, i32 -750439342>, <4 x i32>* %23
%24 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 16
%25 = bitcast i32* %24 to <4 x i32>*
store <4 x i32> <i32 -1003297793, i32 572662870, i32 305424163, i32 -732531440>, <4 x i32>* %25
%26 = getelementptr inbounds [21 x i32], [21 x i32]* %2, i64 0, i64 20
store i32 5, i32* %26
%27 = call i32 @siBubbleSort(i32* %5, i32 21)
%28 = call i32 @uiBubbleSort(i32* %16, i32 21)
ret i32 0
}