#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*/ xsi_driver_first_trans_fast_port(char *);
void xilinxcorelib_a_3146741991_0543512595_p_0(char *t0) {
  unsigned char t1;
  unsigned char t2;
  unsigned char t3;
  unsigned char t4;
  unsigned char t5;
  char *t6;
  char *t7;
  unsigned char t8;
  char *t9;
  char *t10;
  char *t11;
  char *t12;
  char *t13;
  char *t14;
  char *t15;
  char *t16;
  char *t17;
  char *t18;
LAB0:
  t3 = (0 == 1);
  if (t3 == 1)
    goto LAB8;
LAB9:
  t2 = (unsigned char)0;
LAB10:
  if (t2 == 1)
    goto LAB5;
LAB6:
  t5 = (0 == 1);
  t1 = t5;
LAB7:
  if (t1 != 0)
    goto LAB3;
LAB4:
LAB11:
  t13 = (t0 + 30320);
  t14 = (t13 + 56U);
  t15 = *((char **)t14);
  t16 = (t15 + 56U);
  t17 = *((char **)t16);
  *((unsigned char *)t17) = (unsigned char)2;
  xsi_driver_first_trans_fast_port(t13);
LAB2:
  t18 = (t0 + 28288);
  *((int *)t18) = 1;
LAB1:
  return;
LAB3:
  t6 = (t0 + 5616U);
  t7 = *((char **)t6);
  t8 = *((unsigned char *)t7);
  t6 = (t0 + 30320);
  t9 = (t6 + 56U);
  t10 = *((char **)t9);
  t11 = (t10 + 56U);
  t12 = *((char **)t11);
  *((unsigned char *)t12) = t8;
  xsi_driver_first_trans_fast_port(t6);
  goto LAB2;
LAB5:
  t1 = (unsigned char)1;
  goto LAB7;
LAB8:
  t4 = (0 == 1);
  t2 = t4;
  goto LAB10;
LAB12:
  goto LAB2;
}


x86 assembly (clang, -O0):
<xilinxcorelib_a_3146741991_0543512595_p_0>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
mov    %rdi,-0x8(%rbp)
movb   $0x0,-0xb(%rbp)
movzbl -0xb(%rbp),%eax
cmp    $0x1,%eax
jne    1135 <xilinxcorelib_a_3146741991_0543512595_p_0+0x25>
jmp    1266 <xilinxcorelib_a_3146741991_0543512595_p_0+0x156>
jmp    113a <xilinxcorelib_a_3146741991_0543512595_p_0+0x2a>
movb   $0x0,-0xa(%rbp)
movzbl -0xa(%rbp),%eax
cmp    $0x1,%eax
jne    1150 <xilinxcorelib_a_3146741991_0543512595_p_0+0x40>
jmp    125d <xilinxcorelib_a_3146741991_0543512595_p_0+0x14d>
jmp    1155 <xilinxcorelib_a_3146741991_0543512595_p_0+0x45>
movb   $0x0,-0xd(%rbp)
mov    -0xd(%rbp),%al
mov    %al,-0x9(%rbp)
movzbl -0x9(%rbp),%eax
cmp    $0x0,%eax
je     1171 <xilinxcorelib_a_3146741991_0543512595_p_0+0x61>
jmp    11e8 <xilinxcorelib_a_3146741991_0543512595_p_0+0xd8>
jmp    1176 <xilinxcorelib_a_3146741991_0543512595_p_0+0x66>
jmp    117b <xilinxcorelib_a_3146741991_0543512595_p_0+0x6b>
mov    -0x8(%rbp),%rax
add    $0x7670,%rax
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0x58(%rbp)
mov    -0x58(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
movb   $0x2,(%rax)
mov    -0x50(%rbp),%rdi
call   1030 <xsi_driver_first_trans_fast_port@plt>
mov    -0x8(%rbp),%rax
add    $0x6e80,%rax
mov    %rax,-0x78(%rbp)
mov    -0x78(%rbp),%rax
movl   $0x1,(%rax)
add    $0x80,%rsp
pop    %rbp
ret
mov    -0x8(%rbp),%rax
add    $0x15f0,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x21(%rbp)
mov    -0x8(%rbp),%rax
add    $0x7670,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x48(%rbp)
mov    -0x21(%rbp),%cl
mov    -0x48(%rbp),%rax
mov    %cl,(%rax)
mov    -0x18(%rbp),%rdi
call   1030 <xsi_driver_first_trans_fast_port@plt>
jmp    11c7 <xilinxcorelib_a_3146741991_0543512595_p_0+0xb7>
movb   $0x1,-0x9(%rbp)
jmp    115f <xilinxcorelib_a_3146741991_0543512595_p_0+0x4f>
movb   $0x0,-0xc(%rbp)
mov    -0xc(%rbp),%al
mov    %al,-0xa(%rbp)
jmp    113e <xilinxcorelib_a_3146741991_0543512595_p_0+0x2e>

x86 assembly (clang, -O2):
<xilinxcorelib_a_3146741991_0543512595_p_0>:
push   %rbx
mov    %rdi,%rbx
add    $0x7670,%rdi
mov    0x76a8(%rbx),%rax
mov    0x38(%rax),%rax
movb   $0x2,(%rax)
call   1030 <xsi_driver_first_trans_fast_port@plt>
movl   $0x1,0x6e80(%rbx)
pop    %rbx
ret

LLVM IR (-O0):
define void @xilinxcorelib_a_3146741991_0543512595_p_0(i8* %0) {
%2 = alloca i8*
%3 = alloca i8
%4 = alloca i8
%5 = alloca i8
%6 = alloca i8
%7 = alloca i8
%8 = alloca i8*
%9 = alloca i8*
%10 = alloca i8
%11 = alloca i8*
%12 = alloca i8*
%13 = alloca i8*
%14 = alloca i8*
%15 = alloca i8*
%16 = alloca i8*
%17 = alloca i8*
%18 = alloca i8*
%19 = alloca i8*
%20 = alloca i8*
store i8* %0, i8** %2
br label %21
21: ; preds = %1
store i8 0, i8* %5
%22 = load i8, i8* %5
%23 = zext i8 %22 to i32
%24 = icmp eq i32 %23, 1
br i1 %24, label %25, label %26
25: ; preds = %21
br label %90
26: ; preds = %21
br label %27
27: ; preds = %26
store i8 0, i8* %4
br label %28
28: ; preds = %90, %27
%29 = load i8, i8* %4
%30 = zext i8 %29 to i32
%31 = icmp eq i32 %30, 1
br i1 %31, label %32, label %33
32: ; preds = %28
br label %89
33: ; preds = %28
br label %34
34: ; preds = %33
store i8 0, i8* %7
%35 = load i8, i8* %7
store i8 %35, i8* %3
br label %36
36: ; preds = %89, %34
%37 = load i8, i8* %3
%38 = zext i8 %37 to i32
%39 = icmp ne i32 %38, 0
br i1 %39, label %40, label %41
40: ; preds = %36
br label %65
41: ; preds = %36
br label %42
42: ; preds = %41
br label %43
43: ; preds = %42
%44 = load i8*, i8** %2
%45 = getelementptr inbounds i8, i8* %44, i64 30320
store i8* %45, i8** %15
%46 = load i8*, i8** %15
%47 = getelementptr inbounds i8, i8* %46, i64 56
store i8* %47, i8** %16
%48 = load i8*, i8** %16
%49 = bitcast i8* %48 to i8**
%50 = load i8*, i8** %49
store i8* %50, i8** %17
%51 = load i8*, i8** %17
%52 = getelementptr inbounds i8, i8* %51, i64 56
store i8* %52, i8** %18
%53 = load i8*, i8** %18
%54 = bitcast i8* %53 to i8**
%55 = load i8*, i8** %54
store i8* %55, i8** %19
%56 = load i8*, i8** %19
store i8 2, i8* %56
%57 = load i8*, i8** %15
%58 = call i32 @xsi_driver_first_trans_fast_port(i8* %57)
br label %59
59: ; preds = %92, %65, %43
%60 = load i8*, i8** %2
%61 = getelementptr inbounds i8, i8* %60, i64 28288
store i8* %61, i8** %20
%62 = load i8*, i8** %20
%63 = bitcast i8* %62 to i32*
store i32 1, i32* %63
br label %64
64: ; preds = %59
ret void
65: ; preds = %40
%66 = load i8*, i8** %2
%67 = getelementptr inbounds i8, i8* %66, i64 5616
store i8* %67, i8** %8
%68 = load i8*, i8** %8
%69 = bitcast i8* %68 to i8**
%70 = load i8*, i8** %69
store i8* %70, i8** %9
%71 = load i8*, i8** %9
%72 = load i8, i8* %71
store i8 %72, i8* %10
%73 = load i8*, i8** %2
%74 = getelementptr inbounds i8, i8* %73, i64 30320
store i8* %74, i8** %8
%75 = load i8*, i8** %8
%76 = getelementptr inbounds i8, i8* %75, i64 56
store i8* %76, i8** %11
%77 = load i8*, i8** %11
%78 = bitcast i8* %77 to i8**
%79 = load i8*, i8** %78
store i8* %79, i8** %12
%80 = load i8*, i8** %12
%81 = getelementptr inbounds i8, i8* %80, i64 56
store i8* %81, i8** %13
%82 = load i8*, i8** %13
%83 = bitcast i8* %82 to i8**
%84 = load i8*, i8** %83
store i8* %84, i8** %14
%85 = load i8, i8* %10
%86 = load i8*, i8** %14
store i8 %85, i8* %86
%87 = load i8*, i8** %8
%88 = call i32 @xsi_driver_first_trans_fast_port(i8* %87)
br label %59
89: ; preds = %32
store i8 1, i8* %3
br label %36
90: ; preds = %25
store i8 0, i8* %6
%91 = load i8, i8* %6
store i8 %91, i8* %4
br label %28
92: ; No predecessors!
br label %59
}

LLVM IR (-O2):
define void @xilinxcorelib_a_3146741991_0543512595_p_0(i8* %0) {
%2 = getelementptr inbounds i8, i8* %0, i64 30320
%3 = getelementptr inbounds i8, i8* %0, i64 30376
%4 = bitcast i8* %3 to i8**
%5 = load i8*, i8** %4
%6 = getelementptr inbounds i8, i8* %5, i64 56
%7 = bitcast i8* %6 to i8**
%8 = load i8*, i8** %7
store i8 2, i8* %8
%9 = tail call i32 @xsi_driver_first_trans_fast_port(i8* %2)
%10 = getelementptr inbounds i8, i8* %0, i64 28288
%11 = bitcast i8* %10 to i32*
store i32 1, i32* %11
ret void
}