debug_objinfo() {
  unsigned int t[11 * 3];
  char *objname[] = {"task  ", "sem   ", "event ", "mq    ", "mb    ", "mutex ",
                     "cond  ", "timer ", "?     ", "?     ", "?     "};
  int i, n;
  unsigned long *addr;
  int (*get_objinfo)(unsigned int) = (void *)0xFF079948;
  n = get_objinfo(t);
  {};
  for (i = 0; i < 11; i++) {
  };
}


x86 assembly (clang, -O0):
<debug_objinfo>:
push   %rbp
mov    %rsp,%rbp
sub    $0x110,%rsp
lea    -0xf0(%rbp),%rdi
lea    0x2c97(%rip),%rsi
mov    $0x58,%edx
call   1030 <memcpy@plt>
mov    $0xff079948,%eax
mov    %rax,-0x108(%rbp)
mov    -0x108(%rbp),%rax
lea    -0x90(%rbp),%rcx
mov    %ecx,%edi
call   *%rax
mov    %eax,-0xf8(%rbp)
movl   $0x0,-0xf4(%rbp)
cmpl   $0xb,-0xf4(%rbp)
jge    1187 <debug_objinfo+0x77>
jmp    1173 <debug_objinfo+0x63>
mov    -0xf4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf4(%rbp)
jmp    1161 <debug_objinfo+0x51>
mov    -0x4(%rbp),%eax
add    $0x110,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<debug_objinfo>:
sub    $0x88,%rsp
mov    %rsp,%rdi
mov    $0xff079948,%eax
call   *%rax
add    $0x88,%rsp
ret

LLVM IR (-O0):
@.str = [7 x i8] c"task \00"
@.str.1 = [7 x i8] c"sem \00"
@.str.2 = [7 x i8] c"event \00"
@.str.3 = [7 x i8] c"mq \00"
@.str.4 = [7 x i8] c"mb \00"
@.str.5 = [7 x i8] c"mutex \00"
@.str.6 = [7 x i8] c"cond \00"
@.str.7 = [7 x i8] c"timer \00"
@.str.8 = [7 x i8] c"? \00"
@__const.debug_objinfo.objname = [11 x i8*] [i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.2, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.3, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.4, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.5, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.6, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.7, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.8, i32 0, i32 0)]
define i32 @debug_objinfo() {
%1 = alloca i32
%2 = alloca [33 x i32]
%3 = alloca [11 x i8*]
%4 = alloca i32
%5 = alloca i32
%6 = alloca i64*
%7 = alloca i32 (i32)*
%8 = bitcast [11 x i8*]* %3 to i8*
store i32 (i32)* inttoptr (i64 4278688072 to i32 (i32)*), i32 (i32)** %7
%9 = load i32 (i32)*, i32 (i32)** %7
%10 = getelementptr inbounds [33 x i32], [33 x i32]* %2, i64 0, i64 0
%11 = ptrtoint i32* %10 to i32
%12 = call i32 %9(i32 %11)
store i32 %12, i32* %5
store i32 0, i32* %4
br label %13
13: ; preds = %17, %0
%14 = load i32, i32* %4
%15 = icmp slt i32 %14, 11
br i1 %15, label %16, label %20
16: ; preds = %13
br label %17
17: ; preds = %16
%18 = load i32, i32* %4
%19 = add nsw i32 %18, 1
store i32 %19, i32* %4
br label %13
20: ; preds = %13
%21 = load i32, i32* %1
ret i32 %21
}

LLVM IR (-O2):
define i32 @debug_objinfo() {
%1 = alloca [33 x i32]
%2 = bitcast [33 x i32]* %1 to i8*
%3 = ptrtoint [33 x i32]* %1 to i64
%4 = trunc i64 %3 to i32
%5 = call i32 inttoptr (i64 4278688072 to i32 (i32)*)(i32 %4)
ret i32 undef
}