void debug_ps() {
  unsigned int a = 0;
  unsigned int b;
  int n, r;
  unsigned int c;
  unsigned int t[0x60];
  int i;
  unsigned int *addr;
  int (*get_max_task)(unsigned int *, unsigned int *) = (void *)0xFF0154b0;
  int (*get_task_info)(int *, unsigned int *) = (void *)0xFF017b4c;
  n = get_max_task(&a, &b);
  {};
  c = 0;
  for (i = 0; i < 0x60; i++)
    t[i] = 0xdeadbeef;
  for (addr = a; addr < b; addr++) {
  };
  r = get_task_info(&c, t);
  {};
  r = get_task_info(&a, &c);
  {};
  for (i = 0; i < 0x60; i++) {
  };
  char ps_str[] = " NAME            ID   STATE PRI         WAIT(ID)      STACK "
                  " %        SP";
}


x86 assembly (clang, -O0):
<debug_ps>:
push   %rbp
mov    %rsp,%rbp
sub    $0x210,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0xff0154b0,%eax
mov    %rax,-0x1b8(%rbp)
mov    $0xff017b4c,%eax
mov    %rax,-0x1c0(%rbp)
lea    -0x4(%rbp),%rdi
lea    -0x8(%rbp),%rsi
call   *-0x1b8(%rbp)
mov    %eax,-0xc(%rbp)
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x1a4(%rbp)
cmpl   $0x60,-0x1a4(%rbp)
jge    118f <debug_ps+0x7f>
movslq -0x1a4(%rbp),%rax
movl   $0xdeadbeef,-0x1a0(%rbp,%rax,4)
ef be ad de
mov    -0x1a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1a4(%rbp)
jmp    115c <debug_ps+0x4c>
mov    -0x4(%rbp),%eax
mov    %rax,-0x1b0(%rbp)
mov    -0x1b0(%rbp),%rax
mov    -0x8(%rbp),%ecx
cmp    %rcx,%rax
jae    11c8 <debug_ps+0xb8>
jmp    11b1 <debug_ps+0xa1>
mov    -0x1b0(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x1b0(%rbp)
jmp    1199 <debug_ps+0x89>
mov    -0x1c0(%rbp),%rax
lea    -0x1a0(%rbp),%rsi
lea    -0x14(%rbp),%rdi
call   *%rax
mov    %eax,-0x10(%rbp)
lea    -0x4(%rbp),%rdi
lea    -0x14(%rbp),%rsi
call   *-0x1c0(%rbp)
mov    %eax,-0x10(%rbp)
movl   $0x0,-0x1a4(%rbp)
cmpl   $0x60,-0x1a4(%rbp)
jge    1220 <debug_ps+0x110>
jmp    120c <debug_ps+0xfc>
mov    -0x1a4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1a4(%rbp)
jmp    11fa <debug_ps+0xea>
lea    -0x210(%rbp),%rdi
lea    0xdd2(%rip),%rsi
mov    $0x49,%edx
call   1030 <memcpy@plt>
add    $0x210,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<debug_ps>:
push   %r15
push   %r14
push   %rbx
sub    $0x190,%rsp
movl   $0x0,0x8(%rsp)
mov    $0xff017b4c,%r15d
lea    -0x269c(%r15),%rax
lea    0x8(%rsp),%r14
lea    0xc(%rsp),%rsi
mov    %r14,%rdi
call   *%rax
movl   $0x0,0x4(%rsp)
movaps 0xec1(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps %xmm0,0x20(%rsp)
movaps %xmm0,0x30(%rsp)
movaps %xmm0,0x40(%rsp)
movaps %xmm0,0x50(%rsp)
movaps %xmm0,0x60(%rsp)
movaps %xmm0,0x70(%rsp)
movaps %xmm0,0x80(%rsp)
movaps %xmm0,0x90(%rsp)
movaps %xmm0,0xa0(%rsp)
movaps %xmm0,0xb0(%rsp)
movaps %xmm0,0xc0(%rsp)
movaps %xmm0,0xd0(%rsp)
movaps %xmm0,0xe0(%rsp)
movaps %xmm0,0xf0(%rsp)
movaps %xmm0,0x100(%rsp)
movaps %xmm0,0x110(%rsp)
movaps %xmm0,0x120(%rsp)
movaps %xmm0,0x130(%rsp)
movaps %xmm0,0x140(%rsp)
movaps %xmm0,0x150(%rsp)
movaps %xmm0,0x160(%rsp)
movaps %xmm0,0x170(%rsp)
movaps %xmm0,0x180(%rsp)
lea    0x4(%rsp),%rbx
lea    0x10(%rsp),%rsi
mov    %rbx,%rdi
call   *%r15
mov    %r14,%rdi
mov    %rbx,%rsi
call   *%r15
add    $0x190,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@__const.debug_ps.ps_str = [73 x i8] c" NAME ID STATE PRI WAIT(ID) STACK % SP\00"
define void @debug_ps() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca [96 x i32]
%7 = alloca i32
%8 = alloca i32*
%9 = alloca i32 (i32*, i32*)*
%10 = alloca i32 (i32*, i32*)*
%11 = alloca [73 x i8]
store i32 0, i32* %1
store i32 (i32*, i32*)* inttoptr (i64 4278277296 to i32 (i32*, i32*)*), i32 (i32*, i32*)** %9
store i32 (i32*, i32*)* inttoptr (i64 4278287180 to i32 (i32*, i32*)*), i32 (i32*, i32*)** %10
%12 = load i32 (i32*, i32*)*, i32 (i32*, i32*)** %9
%13 = call i32 %12(i32* %1, i32* %2)
store i32 %13, i32* %3
store i32 0, i32* %5
store i32 0, i32* %7
br label %14
14: ; preds = %21, %0
%15 = load i32, i32* %7
%16 = icmp slt i32 %15, 96
br i1 %16, label %17, label %24
17: ; preds = %14
%18 = load i32, i32* %7
%19 = sext i32 %18 to i64
%20 = getelementptr inbounds [96 x i32], [96 x i32]* %6, i64 0, i64 %19
store i32 -559038737, i32* %20
br label %21
21: ; preds = %17
%22 = load i32, i32* %7
%23 = add nsw i32 %22, 1
store i32 %23, i32* %7
br label %14
24: ; preds = %14
%25 = load i32, i32* %1
%26 = zext i32 %25 to i64
%27 = inttoptr i64 %26 to i32*
store i32* %27, i32** %8
br label %28
28: ; preds = %35, %24
%29 = load i32*, i32** %8
%30 = load i32, i32* %2
%31 = zext i32 %30 to i64
%32 = inttoptr i64 %31 to i32*
%33 = icmp ult i32* %29, %32
br i1 %33, label %34, label %38
34: ; preds = %28
br label %35
35: ; preds = %34
%36 = load i32*, i32** %8
%37 = getelementptr inbounds i32, i32* %36, i32 1
store i32* %37, i32** %8
br label %28
38: ; preds = %28
%39 = load i32 (i32*, i32*)*, i32 (i32*, i32*)** %10
%40 = getelementptr inbounds [96 x i32], [96 x i32]* %6, i64 0, i64 0
%41 = call i32 %39(i32* %5, i32* %40)
store i32 %41, i32* %4
%42 = load i32 (i32*, i32*)*, i32 (i32*, i32*)** %10
%43 = call i32 %42(i32* %1, i32* %5)
store i32 %43, i32* %4
store i32 0, i32* %7
br label %44
44: ; preds = %48, %38
%45 = load i32, i32* %7
%46 = icmp slt i32 %45, 96
br i1 %46, label %47, label %51
47: ; preds = %44
br label %48
48: ; preds = %47
%49 = load i32, i32* %7
%50 = add nsw i32 %49, 1
store i32 %50, i32* %7
br label %44
51: ; preds = %44
%52 = bitcast [73 x i8]* %11 to i8*
ret void
}

LLVM IR (-O2):
define void @debug_ps() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca [96 x i32]
%5 = bitcast i32* %1 to i8*
store i32 0, i32* %1
%6 = bitcast i32* %2 to i8*
%7 = bitcast i32* %3 to i8*
%8 = bitcast [96 x i32]* %4 to i8*
%9 = call i32 inttoptr (i64 4278277296 to i32 (i32*, i32*)*)(i32* %1, i32* %2)
store i32 0, i32* %3
%10 = bitcast [96 x i32]* %4 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %10
%11 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 4
%12 = bitcast i32* %11 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %12
%13 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 8
%14 = bitcast i32* %13 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %14
%15 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 12
%16 = bitcast i32* %15 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %16
%17 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 16
%18 = bitcast i32* %17 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %18
%19 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 20
%20 = bitcast i32* %19 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %20
%21 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 24
%22 = bitcast i32* %21 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %22
%23 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 28
%24 = bitcast i32* %23 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %24
%25 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 32
%26 = bitcast i32* %25 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %26
%27 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 36
%28 = bitcast i32* %27 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %28
%29 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 40
%30 = bitcast i32* %29 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %30
%31 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 44
%32 = bitcast i32* %31 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %32
%33 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 48
%34 = bitcast i32* %33 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %34
%35 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 52
%36 = bitcast i32* %35 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %36
%37 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 56
%38 = bitcast i32* %37 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %38
%39 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 60
%40 = bitcast i32* %39 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %40
%41 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 64
%42 = bitcast i32* %41 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %42
%43 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 68
%44 = bitcast i32* %43 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %44
%45 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 72
%46 = bitcast i32* %45 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %46
%47 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 76
%48 = bitcast i32* %47 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %48
%49 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 80
%50 = bitcast i32* %49 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %50
%51 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 84
%52 = bitcast i32* %51 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %52
%53 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 88
%54 = bitcast i32* %53 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %54
%55 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 92
%56 = bitcast i32* %55 to <4 x i32>*
store <4 x i32> <i32 -559038737, i32 -559038737, i32 -559038737, i32 -559038737>, <4 x i32>* %56
%57 = getelementptr inbounds [96 x i32], [96 x i32]* %4, i64 0, i64 0
%58 = call i32 inttoptr (i64 4278287180 to i32 (i32*, i32*)*)(i32* %3, i32* %57)
%59 = call i32 inttoptr (i64 4278287180 to i32 (i32*, i32*)*)(i32* %1, i32* %3)
ret void
}