#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*/ RegReadA(int, unsigned char *);
int /*<<< orphan*/ RegWriteA(int, int);
int /*<<< orphan*/ StmvSetClAf();
void IniClAf(void) {
  unsigned char UcStbb0;
  RegWriteA(0x0088, 0x10);
  RegWriteA(0x0081, 0x10);
  RegWriteA(0x0082, 0x00);
  RegWriteA(0x0083, 0x40);
  RegWriteA(0x0090, 0x00);
  RegWriteA(0x00A1, 0x08);
  RegReadA(0x0250, &UcStbb0);
  UcStbb0 |= 0xA0;
  RegWriteA(0x0250, UcStbb0);
  RegWriteA(0x0264, 0x05);
  RegWriteA(0x00A0, 0x80);
  StmvSetClAf();
}


x86 assembly (clang, -O0):
<IniClAf>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    $0x88,%edi
mov    $0x10,%esi
call   1050 <RegWriteA@plt>
mov    $0x81,%edi
mov    $0x10,%esi
call   1050 <RegWriteA@plt>
mov    $0x82,%edi
xor    %esi,%esi
call   1050 <RegWriteA@plt>
mov    $0x83,%edi
mov    $0x40,%esi
call   1050 <RegWriteA@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1050 <RegWriteA@plt>
mov    $0xa1,%edi
mov    $0x8,%esi
call   1050 <RegWriteA@plt>
mov    $0x250,%edi
lea    -0x1(%rbp),%rsi
call   1040 <RegReadA@plt>
movzbl -0x1(%rbp),%eax
or     $0xa0,%eax
mov    %al,-0x1(%rbp)
movzbl -0x1(%rbp),%esi
mov    $0x250,%edi
call   1050 <RegWriteA@plt>
mov    $0x264,%edi
mov    $0x5,%esi
call   1050 <RegWriteA@plt>
mov    $0xa0,%edi
mov    $0x80,%esi
call   1050 <RegWriteA@plt>
mov    $0x0,%al
call   1030 <StmvSetClAf@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<IniClAf>:
push   %rax
mov    $0x88,%edi
mov    $0x10,%esi
call   1050 <RegWriteA@plt>
mov    $0x81,%edi
mov    $0x10,%esi
call   1050 <RegWriteA@plt>
mov    $0x82,%edi
xor    %esi,%esi
call   1050 <RegWriteA@plt>
mov    $0x83,%edi
mov    $0x40,%esi
call   1050 <RegWriteA@plt>
mov    $0x90,%edi
xor    %esi,%esi
call   1050 <RegWriteA@plt>
mov    $0xa1,%edi
mov    $0x8,%esi
call   1050 <RegWriteA@plt>
lea    0x7(%rsp),%rsi
mov    $0x250,%edi
call   1040 <RegReadA@plt>
movzbl 0x7(%rsp),%esi
or     $0xa0,%esi
mov    %sil,0x7(%rsp)
mov    $0x250,%edi
call   1050 <RegWriteA@plt>
mov    $0x264,%edi
mov    $0x5,%esi
call   1050 <RegWriteA@plt>
mov    $0xa0,%edi
mov    $0x80,%esi
call   1050 <RegWriteA@plt>
xor    %eax,%eax
call   1030 <StmvSetClAf@plt>
pop    %rax
ret

LLVM IR (-O0):
define void @IniClAf() {
%1 = alloca i8
%2 = call i32 @RegWriteA(i32 136, i32 16)
%3 = call i32 @RegWriteA(i32 129, i32 16)
%4 = call i32 @RegWriteA(i32 130, i32 0)
%5 = call i32 @RegWriteA(i32 131, i32 64)
%6 = call i32 @RegWriteA(i32 144, i32 0)
%7 = call i32 @RegWriteA(i32 161, i32 8)
%8 = call i32 @RegReadA(i32 592, i8* %1)
%9 = load i8, i8* %1
%10 = zext i8 %9 to i32
%11 = or i32 %10, 160
%12 = trunc i32 %11 to i8
store i8 %12, i8* %1
%13 = load i8, i8* %1
%14 = zext i8 %13 to i32
%15 = call i32 @RegWriteA(i32 592, i32 %14)
%16 = call i32 @RegWriteA(i32 612, i32 5)
%17 = call i32 @RegWriteA(i32 160, i32 128)
%18 = call i32 (...) @StmvSetClAf()
ret void
}

LLVM IR (-O2):
define void @IniClAf() {
%1 = alloca i8
%2 = tail call i32 @RegWriteA(i32 136, i32 16)
%3 = tail call i32 @RegWriteA(i32 129, i32 16)
%4 = tail call i32 @RegWriteA(i32 130, i32 0)
%5 = tail call i32 @RegWriteA(i32 131, i32 64)
%6 = tail call i32 @RegWriteA(i32 144, i32 0)
%7 = tail call i32 @RegWriteA(i32 161, i32 8)
%8 = call i32 @RegReadA(i32 592, i8* %1)
%9 = load i8, i8* %1
%10 = or i8 %9, -96
store i8 %10, i8* %1
%11 = zext i8 %10 to i32
%12 = call i32 @RegWriteA(i32 592, i32 %11)
%13 = call i32 @RegWriteA(i32 612, i32 5)
%14 = call i32 @RegWriteA(i32 160, i32 128)
%15 = call i32 (...) @StmvSetClAf()
ret void
}