#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*/ m68k_set_bkpt_ack_callback(void *);
int /*<<< orphan*/ m68k_set_fc_callback(void *);
int /*<<< orphan*/ m68k_set_instr_hook_callback(void *);
int /*<<< orphan*/ m68k_set_int_ack_callback(void *);
int /*<<< orphan*/ m68k_set_pc_changed_callback(void *);
int /*<<< orphan*/ m68k_set_reset_instr_callback(void *);
int /*<<< orphan*/ m68ki_build_opcode_table();
void m68k_init(void) {
  static unsigned int emulation_initialized = 0;
  if (!emulation_initialized) {
    m68ki_build_opcode_table();
    emulation_initialized = 1;
  }
  m68k_set_int_ack_callback(((void *)0));
  m68k_set_bkpt_ack_callback(((void *)0));
  m68k_set_reset_instr_callback(((void *)0));
  m68k_set_pc_changed_callback(((void *)0));
  m68k_set_fc_callback(((void *)0));
  m68k_set_instr_hook_callback(((void *)0));
}


x86 assembly (clang, -O0):
<m68k_init>:
push   %rbp
mov    %rsp,%rbp
cmpl   $0x0,0x2ee1(%rip)
jne    1192 <m68k_init+0x22>
mov    $0x0,%al
call   1090 <m68ki_build_opcode_table@plt>
movl   $0x1,0x2eca(%rip)
xor    %eax,%eax
mov    %eax,%edi
call   1060 <m68k_set_int_ack_callback@plt>
xor    %eax,%eax
mov    %eax,%edi
call   1080 <m68k_set_bkpt_ack_callback@plt>
xor    %eax,%eax
mov    %eax,%edi
call   1050 <m68k_set_reset_instr_callback@plt>
xor    %eax,%eax
mov    %eax,%edi
call   1030 <m68k_set_pc_changed_callback@plt>
xor    %eax,%eax
mov    %eax,%edi
call   1070 <m68k_set_fc_callback@plt>
xor    %eax,%eax
mov    %eax,%edi
call   1040 <m68k_set_instr_hook_callback@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<m68k_init>:
push   %rax
cmpb   $0x0,0x2ee4(%rip)
jne    1188 <m68k_init+0x18>
xor    %eax,%eax
call   1090 <m68ki_build_opcode_table@plt>
movb   $0x1,0x2ed4(%rip)
xor    %edi,%edi
call   1060 <m68k_set_int_ack_callback@plt>
xor    %edi,%edi
call   1080 <m68k_set_bkpt_ack_callback@plt>
xor    %edi,%edi
call   1050 <m68k_set_reset_instr_callback@plt>
xor    %edi,%edi
call   1030 <m68k_set_pc_changed_callback@plt>
xor    %edi,%edi
call   1070 <m68k_set_fc_callback@plt>
xor    %edi,%edi
pop    %rax
jmp    1040 <m68k_set_instr_hook_callback@plt>

LLVM IR (-O0):
@m68k_init.emulation_initialized = internal global i32 0
define void @m68k_init() {
%1 = load i32, i32* @m68k_init.emulation_initialized
%2 = icmp ne i32 %1, 0
br i1 %2, label %5, label %3
3: ; preds = %0
%4 = call i32 (...) @m68ki_build_opcode_table()
store i32 1, i32* @m68k_init.emulation_initialized
br label %5
5: ; preds = %3, %0
%6 = call i32 @m68k_set_int_ack_callback(i8* null)
%7 = call i32 @m68k_set_bkpt_ack_callback(i8* null)
%8 = call i32 @m68k_set_reset_instr_callback(i8* null)
%9 = call i32 @m68k_set_pc_changed_callback(i8* null)
%10 = call i32 @m68k_set_fc_callback(i8* null)
%11 = call i32 @m68k_set_instr_hook_callback(i8* null)
ret void
}

LLVM IR (-O2):
@m68k_init.emulation_initialized = internal unnamed_addr global i1 false
define void @m68k_init() {
%1 = load i1, i1* @m68k_init.emulation_initialized
br i1 %1, label %4, label %2
2: ; preds = %0
%3 = tail call i32 (...) @m68ki_build_opcode_table()
store i1 true, i1* @m68k_init.emulation_initialized
br label %4
4: ; preds = %2, %0
%5 = tail call i32 @m68k_set_int_ack_callback(i8* null)
%6 = tail call i32 @m68k_set_bkpt_ack_callback(i8* null)
%7 = tail call i32 @m68k_set_reset_instr_callback(i8* null)
%8 = tail call i32 @m68k_set_pc_changed_callback(i8* null)
%9 = tail call i32 @m68k_set_fc_callback(i8* null)
%10 = tail call i32 @m68k_set_instr_hook_callback(i8* null)
ret void
}