#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*/ mbus_pmu_register_write(int, int);
void set_pmu_optimization() {
  mbus_pmu_register_write(0x17,
                          ((3 << 14) | (0 << 13) | (1 << 9) | (0 << 5) | (15)));
  mbus_pmu_register_write(0x18,
                          ((3 << 14) | (0 << 13) | (1 << 9) | (2 << 5) | (10)));
  mbus_pmu_register_write(0x19, ((0 << 13) | (1 << 9) | (0 << 5) | (15)));
  mbus_pmu_register_write(0x1A, ((0 << 13) | (8 << 9) | (4 << 5) | (8)));
  mbus_pmu_register_write(0x15, ((0 << 19) | (0 << 18) | (0 << 17) | (3 << 14) |
                                 (0 << 13) | (1 << 9) | (0 << 5) | (15)));
  mbus_pmu_register_write(0x16, ((0 << 19) | (0 << 18) | (0 << 17) | (3 << 14) |
                                 (0 << 13) | (8 << 9) | (8 << 5) | (15)));
  mbus_pmu_register_write(0x05, ((0 << 13) | (0 << 12) | (1 << 11) | (0 << 10) |
                                 (1 << 9) | (0 << 8) | (1 << 7) | (44)));
  mbus_pmu_register_write(0x36, (0xFFFFFFFF));
  mbus_pmu_register_write(0x37, 2000);
  mbus_pmu_register_write(
      0x3A, ((0 << 0) | (0 << 1) | (0 << 2) | (0 << 3) | (0 << 4) | (0 << 5) |
             (0 << 6) | (0 << 7) | (0 << 8) | (0 << 9) | (0 << 10) | (1 << 11) |
             (0 << 12) | (0 << 13) | (0 << 14) | (0 << 15) | (0 << 16) |
             (0 << 17) | (0 << 18) | (1 << 19)));
  mbus_pmu_register_write(
      0x3B, ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) | (1 << 4) | (1 << 5) |
             (1 << 6) | (1 << 7) | (1 << 8) | (1 << 9) | (1 << 10) | (1 << 11) |
             (0 << 12) | (1 << 13) | (1 << 14) | (1 << 15) | (1 << 16) |
             (1 << 17) | (1 << 18) | (1 << 19)));
  mbus_pmu_register_write(
      0x3C, ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) | (1 << 4) | (1 << 5) |
             (1 << 6) | (1 << 7) | (1 << 8) | (1 << 9) | (1 << 10) | (1 << 11) |
             (0 << 12) | (0 << 13) | (1 << 14) | (1 << 15) | (1 << 16) |
             (1 << 17) | (1 << 18) | (0 << 19)));
}


x86 assembly (clang, -O0):
<set_pmu_optimization>:
push   %rbp
mov    %rsp,%rbp
mov    $0x17,%edi
mov    $0xc20f,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x18,%edi
mov    $0xc24a,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x19,%edi
mov    $0x20f,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x1a,%edi
mov    $0x1088,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x15,%edi
mov    $0xc20f,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x16,%edi
mov    $0xd10f,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x5,%edi
mov    $0xaac,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x36,%edi
mov    $0xffffffff,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x37,%edi
mov    $0x7d0,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x3a,%edi
mov    $0x80800,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x3b,%edi
mov    $0xfefff,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x3c,%edi
mov    $0x7cfff,%esi
call   1030 <mbus_pmu_register_write@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<set_pmu_optimization>:
push   %rax
mov    $0x17,%edi
mov    $0xc20f,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x18,%edi
mov    $0xc24a,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x19,%edi
mov    $0x20f,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x1a,%edi
mov    $0x1088,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x15,%edi
mov    $0xc20f,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x16,%edi
mov    $0xd10f,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x5,%edi
mov    $0xaac,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x36,%edi
mov    $0xffffffff,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x37,%edi
mov    $0x7d0,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x3a,%edi
mov    $0x80800,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x3b,%edi
mov    $0xfefff,%esi
call   1030 <mbus_pmu_register_write@plt>
mov    $0x3c,%edi
mov    $0x7cfff,%esi
pop    %rax
jmp    1030 <mbus_pmu_register_write@plt>

LLVM IR (-O0):
define void @set_pmu_optimization() {
%1 = call i32 @mbus_pmu_register_write(i32 23, i32 49679)
%2 = call i32 @mbus_pmu_register_write(i32 24, i32 49738)
%3 = call i32 @mbus_pmu_register_write(i32 25, i32 527)
%4 = call i32 @mbus_pmu_register_write(i32 26, i32 4232)
%5 = call i32 @mbus_pmu_register_write(i32 21, i32 49679)
%6 = call i32 @mbus_pmu_register_write(i32 22, i32 53519)
%7 = call i32 @mbus_pmu_register_write(i32 5, i32 2732)
%8 = call i32 @mbus_pmu_register_write(i32 54, i32 -1)
%9 = call i32 @mbus_pmu_register_write(i32 55, i32 2000)
%10 = call i32 @mbus_pmu_register_write(i32 58, i32 526336)
%11 = call i32 @mbus_pmu_register_write(i32 59, i32 1044479)
%12 = call i32 @mbus_pmu_register_write(i32 60, i32 511999)
ret void
}

LLVM IR (-O2):
define void @set_pmu_optimization() {
%1 = tail call i32 @mbus_pmu_register_write(i32 23, i32 49679)
%2 = tail call i32 @mbus_pmu_register_write(i32 24, i32 49738)
%3 = tail call i32 @mbus_pmu_register_write(i32 25, i32 527)
%4 = tail call i32 @mbus_pmu_register_write(i32 26, i32 4232)
%5 = tail call i32 @mbus_pmu_register_write(i32 21, i32 49679)
%6 = tail call i32 @mbus_pmu_register_write(i32 22, i32 53519)
%7 = tail call i32 @mbus_pmu_register_write(i32 5, i32 2732)
%8 = tail call i32 @mbus_pmu_register_write(i32 54, i32 -1)
%9 = tail call i32 @mbus_pmu_register_write(i32 55, i32 2000)
%10 = tail call i32 @mbus_pmu_register_write(i32 58, i32 526336)
%11 = tail call i32 @mbus_pmu_register_write(i32 59, i32 1044479)
%12 = tail call i32 @mbus_pmu_register_write(i32 60, i32 511999)
ret void
}