#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*/ Init_Array();
int /*<<< orphan*/ Init_Bignum();
int /*<<< orphan*/ Init_Binding();
int /*<<< orphan*/ Init_Comparable();
int /*<<< orphan*/ Init_Dir();
int /*<<< orphan*/ Init_Enumerable();
int /*<<< orphan*/ Init_Enumerator();
int /*<<< orphan*/ Init_Exception();
int /*<<< orphan*/ Init_GC();
int /*<<< orphan*/ Init_Hash();
int /*<<< orphan*/ Init_IO();
int /*<<< orphan*/ Init_Math();
int /*<<< orphan*/ Init_Numeric();
int /*<<< orphan*/ Init_Object();
int /*<<< orphan*/ Init_Precision();
int /*<<< orphan*/ Init_Proc();
int /*<<< orphan*/ Init_Random();
int /*<<< orphan*/ Init_Range();
int /*<<< orphan*/ Init_Regexp();
int /*<<< orphan*/ Init_String();
int /*<<< orphan*/ Init_Struct();
int /*<<< orphan*/ Init_Thread();
int /*<<< orphan*/ Init_Time();
int /*<<< orphan*/ Init_eval();
int /*<<< orphan*/ Init_load();
int /*<<< orphan*/ Init_marshal();
int /*<<< orphan*/ Init_pack();
int /*<<< orphan*/ Init_process();
int /*<<< orphan*/ Init_signal();
int /*<<< orphan*/ Init_sym();
int /*<<< orphan*/ Init_syserr();
int /*<<< orphan*/ Init_var_tables();
int /*<<< orphan*/ Init_version();
void rb_call_inits() {
  Init_sym();
  Init_var_tables();
  Init_Object();
  Init_Comparable();
  Init_Enumerable();
  Init_Precision();
  Init_eval();
  Init_String();
  Init_Exception();
  Init_Thread();
  Init_Numeric();
  Init_Bignum();
  Init_syserr();
  Init_Array();
  Init_Hash();
  Init_Struct();
  Init_Regexp();
  Init_pack();
  Init_Range();
  Init_IO();
  Init_Dir();
  Init_Time();
  Init_Random();
  Init_signal();
  Init_process();
  Init_load();
  Init_Proc();
  Init_Binding();
  Init_Math();
  Init_GC();
  Init_Enumerator();
  Init_marshal();
  Init_version();
}


x86 assembly (clang, -O0):
<rb_call_inits>:
push   %rbp
mov    %rsp,%rbp
mov    $0x0,%al
call   1030 <Init_sym@plt>
mov    $0x0,%al
call   10f0 <Init_var_tables@plt>
mov    $0x0,%al
call   10e0 <Init_Object@plt>
mov    $0x0,%al
call   11c0 <Init_Comparable@plt>
mov    $0x0,%al
call   1200 <Init_Enumerable@plt>
mov    $0x0,%al
call   1160 <Init_Precision@plt>
mov    $0x0,%al
call   1050 <Init_eval@plt>
mov    $0x0,%al
call   1170 <Init_String@plt>
mov    $0x0,%al
call   1140 <Init_Exception@plt>
mov    $0x0,%al
call   1040 <Init_Thread@plt>
mov    $0x0,%al
call   10d0 <Init_Numeric@plt>
mov    $0x0,%al
call   11d0 <Init_Bignum@plt>
mov    $0x0,%al
call   1220 <Init_syserr@plt>
mov    $0x0,%al
call   1060 <Init_Array@plt>
mov    $0x0,%al
call   11f0 <Init_Hash@plt>
mov    $0x0,%al
call   1190 <Init_Struct@plt>
mov    $0x0,%al
call   11a0 <Init_Regexp@plt>
mov    $0x0,%al
call   1150 <Init_pack@plt>
mov    $0x0,%al
call   1130 <Init_Range@plt>
mov    $0x0,%al
call   1180 <Init_IO@plt>
mov    $0x0,%al
call   10b0 <Init_Dir@plt>
mov    $0x0,%al
call   1100 <Init_Time@plt>
mov    $0x0,%al
call   1230 <Init_Random@plt>
mov    $0x0,%al
call   1210 <Init_signal@plt>
mov    $0x0,%al
call   1090 <Init_process@plt>
mov    $0x0,%al
call   10a0 <Init_load@plt>
mov    $0x0,%al
call   1070 <Init_Proc@plt>
mov    $0x0,%al
call   11e0 <Init_Binding@plt>
mov    $0x0,%al
call   10c0 <Init_Math@plt>
mov    $0x0,%al
call   1120 <Init_GC@plt>
mov    $0x0,%al
call   1080 <Init_Enumerator@plt>
mov    $0x0,%al
call   1110 <Init_marshal@plt>
mov    $0x0,%al
call   11b0 <Init_version@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<rb_call_inits>:
push   %rax
xor    %eax,%eax
call   1030 <Init_sym@plt>
xor    %eax,%eax
call   10f0 <Init_var_tables@plt>
xor    %eax,%eax
call   10e0 <Init_Object@plt>
xor    %eax,%eax
call   11c0 <Init_Comparable@plt>
xor    %eax,%eax
call   1200 <Init_Enumerable@plt>
xor    %eax,%eax
call   1160 <Init_Precision@plt>
xor    %eax,%eax
call   1050 <Init_eval@plt>
xor    %eax,%eax
call   1170 <Init_String@plt>
xor    %eax,%eax
call   1140 <Init_Exception@plt>
xor    %eax,%eax
call   1040 <Init_Thread@plt>
xor    %eax,%eax
call   10d0 <Init_Numeric@plt>
xor    %eax,%eax
call   11d0 <Init_Bignum@plt>
xor    %eax,%eax
call   1220 <Init_syserr@plt>
xor    %eax,%eax
call   1060 <Init_Array@plt>
xor    %eax,%eax
call   11f0 <Init_Hash@plt>
xor    %eax,%eax
call   1190 <Init_Struct@plt>
xor    %eax,%eax
call   11a0 <Init_Regexp@plt>
xor    %eax,%eax
call   1150 <Init_pack@plt>
xor    %eax,%eax
call   1130 <Init_Range@plt>
xor    %eax,%eax
call   1180 <Init_IO@plt>
xor    %eax,%eax
call   10b0 <Init_Dir@plt>
xor    %eax,%eax
call   1100 <Init_Time@plt>
xor    %eax,%eax
call   1230 <Init_Random@plt>
xor    %eax,%eax
call   1210 <Init_signal@plt>
xor    %eax,%eax
call   1090 <Init_process@plt>
xor    %eax,%eax
call   10a0 <Init_load@plt>
xor    %eax,%eax
call   1070 <Init_Proc@plt>
xor    %eax,%eax
call   11e0 <Init_Binding@plt>
xor    %eax,%eax
call   10c0 <Init_Math@plt>
xor    %eax,%eax
call   1120 <Init_GC@plt>
xor    %eax,%eax
call   1080 <Init_Enumerator@plt>
xor    %eax,%eax
call   1110 <Init_marshal@plt>
xor    %eax,%eax
pop    %rcx
jmp    11b0 <Init_version@plt>

LLVM IR (-O0):
define void @rb_call_inits() {
%1 = call i32 (...) @Init_sym()
%2 = call i32 (...) @Init_var_tables()
%3 = call i32 (...) @Init_Object()
%4 = call i32 (...) @Init_Comparable()
%5 = call i32 (...) @Init_Enumerable()
%6 = call i32 (...) @Init_Precision()
%7 = call i32 (...) @Init_eval()
%8 = call i32 (...) @Init_String()
%9 = call i32 (...) @Init_Exception()
%10 = call i32 (...) @Init_Thread()
%11 = call i32 (...) @Init_Numeric()
%12 = call i32 (...) @Init_Bignum()
%13 = call i32 (...) @Init_syserr()
%14 = call i32 (...) @Init_Array()
%15 = call i32 (...) @Init_Hash()
%16 = call i32 (...) @Init_Struct()
%17 = call i32 (...) @Init_Regexp()
%18 = call i32 (...) @Init_pack()
%19 = call i32 (...) @Init_Range()
%20 = call i32 (...) @Init_IO()
%21 = call i32 (...) @Init_Dir()
%22 = call i32 (...) @Init_Time()
%23 = call i32 (...) @Init_Random()
%24 = call i32 (...) @Init_signal()
%25 = call i32 (...) @Init_process()
%26 = call i32 (...) @Init_load()
%27 = call i32 (...) @Init_Proc()
%28 = call i32 (...) @Init_Binding()
%29 = call i32 (...) @Init_Math()
%30 = call i32 (...) @Init_GC()
%31 = call i32 (...) @Init_Enumerator()
%32 = call i32 (...) @Init_marshal()
%33 = call i32 (...) @Init_version()
ret void
}

LLVM IR (-O2):
define void @rb_call_inits() {
%1 = tail call i32 (...) @Init_sym()
%2 = tail call i32 (...) @Init_var_tables()
%3 = tail call i32 (...) @Init_Object()
%4 = tail call i32 (...) @Init_Comparable()
%5 = tail call i32 (...) @Init_Enumerable()
%6 = tail call i32 (...) @Init_Precision()
%7 = tail call i32 (...) @Init_eval()
%8 = tail call i32 (...) @Init_String()
%9 = tail call i32 (...) @Init_Exception()
%10 = tail call i32 (...) @Init_Thread()
%11 = tail call i32 (...) @Init_Numeric()
%12 = tail call i32 (...) @Init_Bignum()
%13 = tail call i32 (...) @Init_syserr()
%14 = tail call i32 (...) @Init_Array()
%15 = tail call i32 (...) @Init_Hash()
%16 = tail call i32 (...) @Init_Struct()
%17 = tail call i32 (...) @Init_Regexp()
%18 = tail call i32 (...) @Init_pack()
%19 = tail call i32 (...) @Init_Range()
%20 = tail call i32 (...) @Init_IO()
%21 = tail call i32 (...) @Init_Dir()
%22 = tail call i32 (...) @Init_Time()
%23 = tail call i32 (...) @Init_Random()
%24 = tail call i32 (...) @Init_signal()
%25 = tail call i32 (...) @Init_process()
%26 = tail call i32 (...) @Init_load()
%27 = tail call i32 (...) @Init_Proc()
%28 = tail call i32 (...) @Init_Binding()
%29 = tail call i32 (...) @Init_Math()
%30 = tail call i32 (...) @Init_GC()
%31 = tail call i32 (...) @Init_Enumerator()
%32 = tail call i32 (...) @Init_marshal()
%33 = tail call i32 (...) @Init_version()
ret void
}