#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 */
short read_ZIGBEE_short(int);
int /*<<< orphan*/ write_ZIGBEE_short(int, short);
void set_IFS_recomended() {
  short int temp = 0;
  write_ZIGBEE_short(0x00, 0x93);
  temp = read_ZIGBEE_short(0x21);
  temp = temp | 0x7C;
  write_ZIGBEE_short(0x21, temp);
  temp = read_ZIGBEE_short(0x2E);
  temp = temp | 0x90;
  write_ZIGBEE_short(0x2E, temp);
  temp = read_ZIGBEE_short(0x27);
  temp = temp | 0x31;
  write_ZIGBEE_short(0x27, temp);
}


x86 assembly (clang, -O0):
<set_IFS_recomended>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movw   $0x0,-0x2(%rbp)
xor    %edi,%edi
mov    $0x93,%esi
call   1040 <write_ZIGBEE_short@plt>
mov    $0x21,%edi
call   1030 <read_ZIGBEE_short@plt>
mov    %ax,-0x2(%rbp)
movswl -0x2(%rbp),%eax
or     $0x7c,%eax
mov    %ax,-0x2(%rbp)
mov    $0x21,%edi
movswl -0x2(%rbp),%esi
call   1040 <write_ZIGBEE_short@plt>
mov    $0x2e,%edi
call   1030 <read_ZIGBEE_short@plt>
mov    %ax,-0x2(%rbp)
movswl -0x2(%rbp),%eax
or     $0x90,%eax
mov    %ax,-0x2(%rbp)
mov    $0x2e,%edi
movswl -0x2(%rbp),%esi
call   1040 <write_ZIGBEE_short@plt>
mov    $0x27,%edi
call   1030 <read_ZIGBEE_short@plt>
mov    %ax,-0x2(%rbp)
movswl -0x2(%rbp),%eax
or     $0x31,%eax
mov    %ax,-0x2(%rbp)
mov    $0x27,%edi
movswl -0x2(%rbp),%esi
call   1040 <write_ZIGBEE_short@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<set_IFS_recomended>:
push   %rax
xor    %edi,%edi
mov    $0x93,%esi
call   1040 <write_ZIGBEE_short@plt>
mov    $0x21,%edi
call   1030 <read_ZIGBEE_short@plt>
or     $0x7c,%eax
movswl %ax,%esi
mov    $0x21,%edi
call   1040 <write_ZIGBEE_short@plt>
mov    $0x2e,%edi
call   1030 <read_ZIGBEE_short@plt>
or     $0x90,%eax
movswl %ax,%esi
mov    $0x2e,%edi
call   1040 <write_ZIGBEE_short@plt>
mov    $0x27,%edi
call   1030 <read_ZIGBEE_short@plt>
or     $0x31,%eax
movswl %ax,%esi
mov    $0x27,%edi
pop    %rax
jmp    1040 <write_ZIGBEE_short@plt>

LLVM IR (-O0):
define void @set_IFS_recomended() {
%1 = alloca i16
store i16 0, i16* %1
%2 = call i32 @write_ZIGBEE_short(i32 0, i16 signext 147)
%3 = call signext i16 @read_ZIGBEE_short(i32 33)
store i16 %3, i16* %1
%4 = load i16, i16* %1
%5 = sext i16 %4 to i32
%6 = or i32 %5, 124
%7 = trunc i32 %6 to i16
store i16 %7, i16* %1
%8 = load i16, i16* %1
%9 = call i32 @write_ZIGBEE_short(i32 33, i16 signext %8)
%10 = call signext i16 @read_ZIGBEE_short(i32 46)
store i16 %10, i16* %1
%11 = load i16, i16* %1
%12 = sext i16 %11 to i32
%13 = or i32 %12, 144
%14 = trunc i32 %13 to i16
store i16 %14, i16* %1
%15 = load i16, i16* %1
%16 = call i32 @write_ZIGBEE_short(i32 46, i16 signext %15)
%17 = call signext i16 @read_ZIGBEE_short(i32 39)
store i16 %17, i16* %1
%18 = load i16, i16* %1
%19 = sext i16 %18 to i32
%20 = or i32 %19, 49
%21 = trunc i32 %20 to i16
store i16 %21, i16* %1
%22 = load i16, i16* %1
%23 = call i32 @write_ZIGBEE_short(i32 39, i16 signext %22)
ret void
}

LLVM IR (-O2):
define void @set_IFS_recomended() {
%1 = tail call i32 @write_ZIGBEE_short(i32 0, i16 signext 147)
%2 = tail call signext i16 @read_ZIGBEE_short(i32 33)
%3 = or i16 %2, 124
%4 = tail call i32 @write_ZIGBEE_short(i32 33, i16 signext %3)
%5 = tail call signext i16 @read_ZIGBEE_short(i32 46)
%6 = or i16 %5, 144
%7 = tail call i32 @write_ZIGBEE_short(i32 46, i16 signext %6)
%8 = tail call signext i16 @read_ZIGBEE_short(i32 39)
%9 = or i16 %8, 49
%10 = tail call i32 @write_ZIGBEE_short(i32 39, i16 signext %9)
ret void
}