#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 auth_address_register();
int auth_globus_register();
int auth_hostname_register();
int auth_kerberos_register();
int auth_ticket_register();
int auth_unix_register();
int auth_register_all(void) {
  return auth_kerberos_register() + auth_globus_register() +
         auth_unix_register() + auth_ticket_register() +
         auth_hostname_register() + auth_address_register();
}


x86 assembly (clang, -O0):
<auth_register_all>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    $0x0,%al
call   1040 <auth_kerberos_register@plt>
mov    %eax,-0x14(%rbp)
mov    $0x0,%al
call   1050 <auth_globus_register@plt>
mov    %eax,%ecx
mov    -0x14(%rbp),%eax
add    %ecx,%eax
mov    %eax,-0x10(%rbp)
mov    $0x0,%al
call   1070 <auth_unix_register@plt>
mov    %eax,%ecx
mov    -0x10(%rbp),%eax
add    %ecx,%eax
mov    %eax,-0xc(%rbp)
mov    $0x0,%al
call   1080 <auth_ticket_register@plt>
mov    %eax,%ecx
mov    -0xc(%rbp),%eax
add    %ecx,%eax
mov    %eax,-0x8(%rbp)
mov    $0x0,%al
call   1030 <auth_hostname_register@plt>
mov    %eax,%ecx
mov    -0x8(%rbp),%eax
add    %ecx,%eax
mov    %eax,-0x4(%rbp)
mov    $0x0,%al
call   1060 <auth_address_register@plt>
mov    %eax,%ecx
mov    -0x4(%rbp),%eax
add    %ecx,%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<auth_register_all>:
push   %rbp
push   %rbx
push   %rax
xor    %eax,%eax
call   1040 <auth_kerberos_register@plt>
mov    %eax,%ebx
xor    %eax,%eax
call   1050 <auth_globus_register@plt>
mov    %eax,%ebp
add    %ebx,%ebp
xor    %eax,%eax
call   1070 <auth_unix_register@plt>
mov    %eax,%ebx
add    %ebp,%ebx
xor    %eax,%eax
call   1080 <auth_ticket_register@plt>
mov    %eax,%ebp
add    %ebx,%ebp
xor    %eax,%eax
call   1030 <auth_hostname_register@plt>
mov    %eax,%ebx
add    %ebp,%ebx
xor    %eax,%eax
call   1060 <auth_address_register@plt>
add    %ebx,%eax
add    $0x8,%rsp
pop    %rbx
pop    %rbp
ret

LLVM IR (-O0):
define i32 @auth_register_all() {
%1 = call i32 (...) @auth_kerberos_register()
%2 = call i32 (...) @auth_globus_register()
%3 = add nsw i32 %1, %2
%4 = call i32 (...) @auth_unix_register()
%5 = add nsw i32 %3, %4
%6 = call i32 (...) @auth_ticket_register()
%7 = add nsw i32 %5, %6
%8 = call i32 (...) @auth_hostname_register()
%9 = add nsw i32 %7, %8
%10 = call i32 (...) @auth_address_register()
%11 = add nsw i32 %9, %10
ret i32 %11
}

LLVM IR (-O2):
define i32 @auth_register_all() {
%1 = tail call i32 (...) @auth_kerberos_register()
%2 = tail call i32 (...) @auth_globus_register()
%3 = add nsw i32 %2, %1
%4 = tail call i32 (...) @auth_unix_register()
%5 = add nsw i32 %3, %4
%6 = tail call i32 (...) @auth_ticket_register()
%7 = add nsw i32 %5, %6
%8 = tail call i32 (...) @auth_hostname_register()
%9 = add nsw i32 %7, %8
%10 = tail call i32 (...) @auth_address_register()
%11 = add nsw i32 %9, %10
ret i32 %11
}