#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*/ app_init();
int /*<<< orphan*/ cert_init();
int /*<<< orphan*/ conf_init();
int /*<<< orphan*/ connection_init();
int /*<<< orphan*/ crl_init();
int /*<<< orphan*/ doi_init();
int /*<<< orphan*/ exchange_init();
int /*<<< orphan*/ group_init();
int /*<<< orphan*/ ipsec_init();
int /*<<< orphan*/ isakmp_doi_init();
int /*<<< orphan*/ libcrypto_init();
int /*<<< orphan*/ log_reinit();
int /*<<< orphan*/ nat_t_init();
int /*<<< orphan*/ policy_init();
int /*<<< orphan*/ sa_init();
int /*<<< orphan*/ timer_init();
int /*<<< orphan*/ transport_init();
int /*<<< orphan*/ udp_encap_init();
int /*<<< orphan*/ udp_init();
int /*<<< orphan*/ vendor_init();
int /*<<< orphan*/ virtual_init();
void init(void) {
  app_init();
  doi_init();
  exchange_init();
  group_init();
  ipsec_init();
  isakmp_doi_init();
  libcrypto_init();
  timer_init();
  conf_init();
  connection_init();
  log_reinit();
  policy_init();
  cert_init();
  crl_init();
  sa_init();
  transport_init();
  virtual_init();
  udp_init();
  nat_t_init();
  udp_encap_init();
  vendor_init();
}


x86 assembly (clang, -O0):
<init>:
push   %rbp
mov    %rsp,%rbp
mov    $0x0,%al
call   1050 <app_init@plt>
mov    $0x0,%al
call   1030 <doi_init@plt>
mov    $0x0,%al
call   1150 <exchange_init@plt>
mov    $0x0,%al
call   10f0 <group_init@plt>
mov    $0x0,%al
call   1140 <ipsec_init@plt>
mov    $0x0,%al
call   1060 <isakmp_doi_init@plt>
mov    $0x0,%al
call   1170 <libcrypto_init@plt>
mov    $0x0,%al
call   10d0 <timer_init@plt>
mov    $0x0,%al
call   1110 <conf_init@plt>
mov    $0x0,%al
call   1040 <connection_init@plt>
mov    $0x0,%al
call   10b0 <log_reinit@plt>
mov    $0x0,%al
call   10c0 <policy_init@plt>
mov    $0x0,%al
call   10e0 <cert_init@plt>
mov    $0x0,%al
call   1080 <crl_init@plt>
mov    $0x0,%al
call   1070 <sa_init@plt>
mov    $0x0,%al
call   1100 <transport_init@plt>
mov    $0x0,%al
call   1120 <virtual_init@plt>
mov    $0x0,%al
call   1160 <udp_init@plt>
mov    $0x0,%al
call   10a0 <nat_t_init@plt>
mov    $0x0,%al
call   1090 <udp_encap_init@plt>
mov    $0x0,%al
call   1130 <vendor_init@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<init>:
push   %rax
xor    %eax,%eax
call   1050 <app_init@plt>
xor    %eax,%eax
call   1030 <doi_init@plt>
xor    %eax,%eax
call   1150 <exchange_init@plt>
xor    %eax,%eax
call   10f0 <group_init@plt>
xor    %eax,%eax
call   1140 <ipsec_init@plt>
xor    %eax,%eax
call   1060 <isakmp_doi_init@plt>
xor    %eax,%eax
call   1170 <libcrypto_init@plt>
xor    %eax,%eax
call   10d0 <timer_init@plt>
xor    %eax,%eax
call   1110 <conf_init@plt>
xor    %eax,%eax
call   1040 <connection_init@plt>
xor    %eax,%eax
call   10b0 <log_reinit@plt>
xor    %eax,%eax
call   10c0 <policy_init@plt>
xor    %eax,%eax
call   10e0 <cert_init@plt>
xor    %eax,%eax
call   1080 <crl_init@plt>
xor    %eax,%eax
call   1070 <sa_init@plt>
xor    %eax,%eax
call   1100 <transport_init@plt>
xor    %eax,%eax
call   1120 <virtual_init@plt>
xor    %eax,%eax
call   1160 <udp_init@plt>
xor    %eax,%eax
call   10a0 <nat_t_init@plt>
xor    %eax,%eax
call   1090 <udp_encap_init@plt>
xor    %eax,%eax
pop    %rcx
jmp    1130 <vendor_init@plt>

LLVM IR (-O0):
define void @init() {
%1 = call i32 (...) @app_init()
%2 = call i32 (...) @doi_init()
%3 = call i32 (...) @exchange_init()
%4 = call i32 (...) @group_init()
%5 = call i32 (...) @ipsec_init()
%6 = call i32 (...) @isakmp_doi_init()
%7 = call i32 (...) @libcrypto_init()
%8 = call i32 (...) @timer_init()
%9 = call i32 (...) @conf_init()
%10 = call i32 (...) @connection_init()
%11 = call i32 (...) @log_reinit()
%12 = call i32 (...) @policy_init()
%13 = call i32 (...) @cert_init()
%14 = call i32 (...) @crl_init()
%15 = call i32 (...) @sa_init()
%16 = call i32 (...) @transport_init()
%17 = call i32 (...) @virtual_init()
%18 = call i32 (...) @udp_init()
%19 = call i32 (...) @nat_t_init()
%20 = call i32 (...) @udp_encap_init()
%21 = call i32 (...) @vendor_init()
ret void
}

LLVM IR (-O2):
define void @init() {
%1 = tail call i32 (...) @app_init()
%2 = tail call i32 (...) @doi_init()
%3 = tail call i32 (...) @exchange_init()
%4 = tail call i32 (...) @group_init()
%5 = tail call i32 (...) @ipsec_init()
%6 = tail call i32 (...) @isakmp_doi_init()
%7 = tail call i32 (...) @libcrypto_init()
%8 = tail call i32 (...) @timer_init()
%9 = tail call i32 (...) @conf_init()
%10 = tail call i32 (...) @connection_init()
%11 = tail call i32 (...) @log_reinit()
%12 = tail call i32 (...) @policy_init()
%13 = tail call i32 (...) @cert_init()
%14 = tail call i32 (...) @crl_init()
%15 = tail call i32 (...) @sa_init()
%16 = tail call i32 (...) @transport_init()
%17 = tail call i32 (...) @virtual_init()
%18 = tail call i32 (...) @udp_init()
%19 = tail call i32 (...) @nat_t_init()
%20 = tail call i32 (...) @udp_encap_init()
%21 = tail call i32 (...) @vendor_init()
ret void
}