#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(char *);
void xilinxcorelib_a_1600189650_0543512595_p_4(char *t0) {
  unsigned char t1;
  unsigned char t2;
  char *t3;
  char *t4;
  int t5;
  unsigned 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:
  t2 = (0 == 1);
  if (t2 == 1)
    goto LAB5;
LAB6:
  t1 = (unsigned char)0;
LAB7:
  if (t1 != 0)
    goto LAB3;
LAB4:
LAB8:
  t13 = (t0 + 30576);
  t14 = (t13 + 56U);
  t15 = *((char **)t14);
  t16 = (t15 + 56U);
  t17 = *((char **)t16);
  *((unsigned char *)t17) = (unsigned char)3;
  xsi_driver_first_trans_fast(t13);
LAB2:
  t18 = (t0 + 28352);
  *((int *)t18) = 1;
LAB1:
  return;
LAB3:
  t3 = (t0 + 2896U);
  t7 = *((char **)t3);
  t8 = *((unsigned char *)t7);
  t3 = (t0 + 30576);
  t9 = (t3 + 56U);
  t10 = *((char **)t9);
  t11 = (t10 + 56U);
  t12 = *((char **)t11);
  *((unsigned char *)t12) = t8;
  xsi_driver_first_trans_fast(t3);
  goto LAB2;
LAB5:
  t3 = (t0 + 19312U);
  t4 = *((char **)t3);
  t5 = *((int *)t4);
  t6 = (t5 == 1);
  t1 = t6;
  goto LAB7;
LAB9:
  goto LAB2;
}


x86 assembly (clang, -O0):
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    %rdi,-0x8(%rbp)
movb   $0x0,-0xa(%rbp)
movzbl -0xa(%rbp),%eax
cmp    $0x1,%eax
jne    1135 <xilinxcorelib_a_1600189650_0543512595_p_4+0x25>
jmp    1242 <xilinxcorelib_a_1600189650_0543512595_p_4+0x132>
jmp    113a <xilinxcorelib_a_1600189650_0543512595_p_4+0x2a>
movb   $0x0,-0x9(%rbp)
movzbl -0x9(%rbp),%eax
cmp    $0x0,%eax
je     1150 <xilinxcorelib_a_1600189650_0543512595_p_4+0x40>
jmp    11cd <xilinxcorelib_a_1600189650_0543512595_p_4+0xbd>
jmp    1155 <xilinxcorelib_a_1600189650_0543512595_p_4+0x45>
jmp    115a <xilinxcorelib_a_1600189650_0543512595_p_4+0x4a>
mov    -0x8(%rbp),%rax
add    $0x7770,%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
add    $0x38,%rax
mov    %rax,-0x78(%rbp)
mov    -0x78(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x80(%rbp)
mov    -0x80(%rbp),%rax
movb   $0x3,(%rax)
mov    -0x60(%rbp),%rdi
call   1030 <xsi_driver_first_trans_fast@plt>
mov    -0x8(%rbp),%rax
add    $0x6ec0,%rax
mov    %rax,-0x88(%rbp)
mov    -0x88(%rbp),%rax
movl   $0x1,(%rax)
add    $0x90,%rsp
pop    %rbp
ret
mov    -0x8(%rbp),%rax
add    $0xb50,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x31(%rbp)
mov    -0x8(%rbp),%rax
add    $0x7770,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x58(%rbp)
mov    -0x31(%rbp),%cl
mov    -0x58(%rbp),%rax
mov    %cl,(%rax)
mov    -0x18(%rbp),%rdi
call   1030 <xsi_driver_first_trans_fast@plt>
jmp    11a6 <xilinxcorelib_a_1600189650_0543512595_p_4+0x96>
mov    -0x8(%rbp),%rax
add    $0x4b70,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x20(%rbp)
mov    -0x20(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x1,-0x24(%rbp)
sete   %al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x25(%rbp)
mov    -0x25(%rbp),%al
mov    %al,-0x9(%rbp)
jmp    113e <xilinxcorelib_a_1600189650_0543512595_p_4+0x2e>

x86 assembly (clang, -O2):
push   %rbx
mov    %rdi,%rbx
add    $0x7770,%rdi
mov    0x77a8(%rbx),%rax
mov    0x38(%rax),%rax
movb   $0x3,(%rax)
call   1030 <xsi_driver_first_trans_fast@plt>
movl   $0x1,0x6ec0(%rbx)
pop    %rbx
ret

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

LLVM IR (-O2):
define void @xilinxcorelib_a_1600189650_0543512595_p_4(i8* %0) {
%2 = getelementptr inbounds i8, i8* %0, i64 30576
%3 = getelementptr inbounds i8, i8* %0, i64 30632
%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 3, i8* %8
%9 = tail call i32 @xsi_driver_first_trans_fast(i8* %2)
%10 = getelementptr inbounds i8, i8* %0, i64 28352
%11 = bitcast i8* %10 to i32*
store i32 1, i32* %11
ret void
}