#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 simprim_a_3215534263_2810828532_p_8(char *t0) {
  char *t1;
  char *t2;
  char *t3;
  unsigned char t5;
  unsigned int t6;
  char *t7;
  char *t8;
  char *t9;
  char *t10;
  char *t11;
  char *t12;
  char *t13;
  char *t14;
  char *t15;
  char *t16;
  char *t17;
  char *t18;
LAB0:
  t1 = (t0 + 10344U);
  t2 = (t1 + 56U);
  t3 = *((char **)t2);
  t2 = (t0 + 26576);
  t5 = 1;
  if (4U == 5U)
    goto LAB5;
LAB6:
  t5 = 0;
LAB7:
  if (t5 != 0)
    goto LAB3;
LAB4:
LAB11:
  t14 = (t0 + 16520);
  t15 = (t14 + 56U);
  t16 = *((char **)t15);
  t17 = (t16 + 56U);
  t18 = *((char **)t17);
  *((unsigned char *)t18) = (unsigned char)2;
  xsi_driver_first_trans_fast(t14);
LAB2:
LAB1:
  return;
LAB3:
  t9 = (t0 + 16520);
  t10 = (t9 + 56U);
  t11 = *((char **)t10);
  t12 = (t11 + 56U);
  t13 = *((char **)t12);
  *((unsigned char *)t13) = (unsigned char)3;
  xsi_driver_first_trans_fast(t9);
  goto LAB2;
LAB5:
  t6 = 0;
LAB8:
  if (t6 < 4U)
    goto LAB9;
  else
    goto LAB7;
LAB9:
  t7 = (t3 + t6);
  t8 = (t2 + t6);
  if (*((unsigned char *)t7) != *((unsigned char *)t8))
    goto LAB6;
LAB10:
  t6 = (t6 + 1);
  goto LAB8;
LAB12:
  goto LAB2;
}


x86 assembly (clang, -O0):
<simprim_a_3215534263_2810828532_p_8>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x2868,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
add    $0x67d0,%rax
mov    %rax,-0x18(%rbp)
movb   $0x1,-0x21(%rbp)
movb   $0x0,-0x21(%rbp)
movzbl -0x21(%rbp),%eax
cmp    $0x0,%eax
je     116c <simprim_a_3215534263_2810828532_p_8+0x5c>
jmp    11d6 <simprim_a_3215534263_2810828532_p_8+0xc6>
jmp    1171 <simprim_a_3215534263_2810828532_p_8+0x61>
jmp    1176 <simprim_a_3215534263_2810828532_p_8+0x66>
mov    -0x8(%rbp),%rax
add    $0x4088,%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x78(%rbp)
mov    -0x78(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0x80(%rbp)
mov    -0x80(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x88(%rbp)
mov    -0x88(%rbp),%rax
movb   $0x2,(%rax)
mov    -0x68(%rbp),%rdi
call   1030 <xsi_driver_first_trans_fast@plt>
jmp    11cd <simprim_a_3215534263_2810828532_p_8+0xbd>
add    $0x90,%rsp
pop    %rbp
ret
mov    -0x8(%rbp),%rax
add    $0x4088,%rax
mov    %rax,-0x40(%rbp)
mov    -0x40(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0x48(%rbp)
mov    -0x48(%rbp),%rax
mov    (%rax),%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
movb   $0x3,(%rax)
mov    -0x40(%rbp),%rdi
call   1030 <xsi_driver_first_trans_fast@plt>
jmp    11c8 <simprim_a_3215534263_2810828532_p_8+0xb8>

x86 assembly (clang, -O2):
<simprim_a_3215534263_2810828532_p_8>:
mov    0x40c0(%rdi),%rax
add    $0x4088,%rdi
mov    0x38(%rax),%rax
movb   $0x2,(%rax)
jmp    1030 <xsi_driver_first_trans_fast@plt>

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

LLVM IR (-O2):
define void @simprim_a_3215534263_2810828532_p_8(i8* %0) {
%2 = getelementptr inbounds i8, i8* %0, i64 16520
%3 = getelementptr inbounds i8, i8* %0, i64 16576
%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(i8* %2)
ret void
}