#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 EXIT_SUCCESS;
int /*<<< orphan*/ test_array(int /*<<< orphan*/ *);
int /*<<< orphan*/ test_bin(int /*<<< orphan*/ *);
int /*<<< orphan*/ test_boolean(int /*<<< orphan*/ *);
int /*<<< orphan*/ test_conversions(int /*<<< orphan*/ *);
int /*<<< orphan*/ test_deprecated_limited_skipping(int /*<<< orphan*/ *);
int /*<<< orphan*/ test_errors(int /*<<< orphan*/ *);
int /*<<< orphan*/ test_ext(int /*<<< orphan*/ *);
int /*<<< orphan*/ test_fixedint(int /*<<< orphan*/ *);
int /*<<< orphan*/ test_float_flip(int /*<<< orphan*/ *);
int /*<<< orphan*/ test_map(int /*<<< orphan*/ *);
int /*<<< orphan*/ test_msgpack(int /*<<< orphan*/ *);
int /*<<< orphan*/ test_nil(int /*<<< orphan*/ *);
int /*<<< orphan*/ test_numbers(int /*<<< orphan*/ *);
int /*<<< orphan*/ test_obj(int /*<<< orphan*/ *);
int /*<<< orphan*/ test_skipping(int /*<<< orphan*/ *);
int /*<<< orphan*/ test_string(int /*<<< orphan*/ *);
int /*<<< orphan*/ test_version(int /*<<< orphan*/ *);
int main(void) {
  test_msgpack(NULL);
  test_fixedint(NULL);
  test_numbers(NULL);
  test_nil(NULL);
  test_boolean(NULL);
  test_bin(NULL);
  test_string(NULL);
  test_array(NULL);
  test_map(NULL);
  test_ext(NULL);
  test_obj(NULL);
  test_float_flip(NULL);
  test_skipping(NULL);
  test_deprecated_limited_skipping(NULL);
  test_errors(NULL);
  test_version(NULL);
  test_conversions(NULL);
  return EXIT_SUCCESS;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
xor    %eax,%eax
mov    %eax,%edi
call   1100 <test_msgpack@plt>
xor    %eax,%eax
mov    %eax,%edi
call   10a0 <test_fixedint@plt>
xor    %eax,%eax
mov    %eax,%edi
call   1030 <test_numbers@plt>
xor    %eax,%eax
mov    %eax,%edi
call   1110 <test_nil@plt>
xor    %eax,%eax
mov    %eax,%edi
call   1130 <test_boolean@plt>
xor    %eax,%eax
mov    %eax,%edi
call   10c0 <test_bin@plt>
xor    %eax,%eax
mov    %eax,%edi
call   10b0 <test_string@plt>
xor    %eax,%eax
mov    %eax,%edi
call   10e0 <test_array@plt>
xor    %eax,%eax
mov    %eax,%edi
call   10d0 <test_map@plt>
xor    %eax,%eax
mov    %eax,%edi
call   1120 <test_ext@plt>
xor    %eax,%eax
mov    %eax,%edi
call   1040 <test_obj@plt>
xor    %eax,%eax
mov    %eax,%edi
call   10f0 <test_float_flip@plt>
xor    %eax,%eax
mov    %eax,%edi
call   1080 <test_skipping@plt>
xor    %eax,%eax
mov    %eax,%edi
call   1060 <test_deprecated_limited_skipping@plt>
xor    %eax,%eax
mov    %eax,%edi
call   1050 <test_errors@plt>
xor    %eax,%eax
mov    %eax,%edi
call   1090 <test_version@plt>
xor    %eax,%eax
mov    %eax,%edi
call   1070 <test_conversions@plt>
mov    0x2d21(%rip),%rax
mov    (%rax),%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rax
xor    %edi,%edi
call   1100 <test_msgpack@plt>
xor    %edi,%edi
call   10a0 <test_fixedint@plt>
xor    %edi,%edi
call   1030 <test_numbers@plt>
xor    %edi,%edi
call   1110 <test_nil@plt>
xor    %edi,%edi
call   1130 <test_boolean@plt>
xor    %edi,%edi
call   10c0 <test_bin@plt>
xor    %edi,%edi
call   10b0 <test_string@plt>
xor    %edi,%edi
call   10e0 <test_array@plt>
xor    %edi,%edi
call   10d0 <test_map@plt>
xor    %edi,%edi
call   1120 <test_ext@plt>
xor    %edi,%edi
call   1040 <test_obj@plt>
xor    %edi,%edi
call   10f0 <test_float_flip@plt>
xor    %edi,%edi
call   1080 <test_skipping@plt>
xor    %edi,%edi
call   1060 <test_deprecated_limited_skipping@plt>
xor    %edi,%edi
call   1050 <test_errors@plt>
xor    %edi,%edi
call   1090 <test_version@plt>
xor    %edi,%edi
call   1070 <test_conversions@plt>
mov    0x2d51(%rip),%rax
mov    (%rax),%eax
pop    %rcx
ret

LLVM IR (-O0):
@EXIT_SUCCESS = global i32 0
define i32 @main() {
%1 = alloca i32
store i32 0, i32* %1
%2 = call i32 @test_msgpack(i32* null)
%3 = call i32 @test_fixedint(i32* null)
%4 = call i32 @test_numbers(i32* null)
%5 = call i32 @test_nil(i32* null)
%6 = call i32 @test_boolean(i32* null)
%7 = call i32 @test_bin(i32* null)
%8 = call i32 @test_string(i32* null)
%9 = call i32 @test_array(i32* null)
%10 = call i32 @test_map(i32* null)
%11 = call i32 @test_ext(i32* null)
%12 = call i32 @test_obj(i32* null)
%13 = call i32 @test_float_flip(i32* null)
%14 = call i32 @test_skipping(i32* null)
%15 = call i32 @test_deprecated_limited_skipping(i32* null)
%16 = call i32 @test_errors(i32* null)
%17 = call i32 @test_version(i32* null)
%18 = call i32 @test_conversions(i32* null)
%19 = load i32, i32* @EXIT_SUCCESS
ret i32 %19
}

LLVM IR (-O2):
@EXIT_SUCCESS = global i32 0
define i32 @main() {
%1 = tail call i32 @test_msgpack(i32* null)
%2 = tail call i32 @test_fixedint(i32* null)
%3 = tail call i32 @test_numbers(i32* null)
%4 = tail call i32 @test_nil(i32* null)
%5 = tail call i32 @test_boolean(i32* null)
%6 = tail call i32 @test_bin(i32* null)
%7 = tail call i32 @test_string(i32* null)
%8 = tail call i32 @test_array(i32* null)
%9 = tail call i32 @test_map(i32* null)
%10 = tail call i32 @test_ext(i32* null)
%11 = tail call i32 @test_obj(i32* null)
%12 = tail call i32 @test_float_flip(i32* null)
%13 = tail call i32 @test_skipping(i32* null)
%14 = tail call i32 @test_deprecated_limited_skipping(i32* null)
%15 = tail call i32 @test_errors(i32* null)
%16 = tail call i32 @test_version(i32* null)
%17 = tail call i32 @test_conversions(i32* null)
%18 = load i32, i32* @EXIT_SUCCESS
ret i32 %18
}