char *ieee_p_2592010699_sub_24166140421859237_503743352(char *t1, char *t2,
                                                        char *t3, char *t4) {
  char t5[128];
  char t6[24];
  char t7[16];
  char t18[16];
  char *t0;
  char *t8;
  unsigned int t9;
  int t10;
  char *t11;
  char *t12;
  int t13;
  unsigned int t14;
  int t15;
  int t16;
  unsigned int t17;
  char *t19;
  unsigned int t20;
  int t21;
  char *t22;
  char *t23;
  int t24;
  unsigned int t25;
  char *t26;
  char *t27;
  char *t28;
  char *t29;
  char *t30;
  char *t31;
  char *t32;
  unsigned char t33;
  char *t34;
  char *t35;
  int t36;
  char *t37;
  int t38;
  char *t39;
  int t40;
  int t41;
  int t42;
  int t43;
  int t44;
  char *t45;
  char *t46;
  int t47;
  char *t48;
  int t49;
  int t50;
  char *t51;
  int t52;
  unsigned int t53;
  unsigned int t54;
  char *t55;
  unsigned char t56;
  char *t57;
  char *t58;
  char *t59;
  int t60;
  char *t61;
  int t62;
  int t63;
  unsigned int t64;
  unsigned int t65;
  unsigned int t66;
  char *t67;
  static char *nl0[] = {&&LAB9, &&LAB10};
LAB0:
  t8 = (t4 + 12U);
  t9 = *((unsigned int *)t8);
  t10 = (t9 - 1);
  t11 = (t7 + 0U);
  t12 = (t11 + 0U);
  *((int *)t12) = t10;
  t12 = (t11 + 4U);
  *((int *)t12) = 0;
  t12 = (t11 + 8U);
  *((int *)t12) = -1;
  t13 = (0 - t10);
  t14 = (t13 * -1);
  t14 = (t14 + 1);
  t12 = (t11 + 12U);
  *((unsigned int *)t12) = t14;
  t12 = (t4 + 12U);
  t14 = *((unsigned int *)t12);
  t15 = (t14 - 1);
  t16 = (0 - t15);
  t17 = (t16 * -1);
  t17 = (t17 + 1);
  t17 = (t17 * 1U);
  t19 = (t4 + 12U);
  t20 = *((unsigned int *)t19);
  t21 = (t20 - 1);
  t22 = (t18 + 0U);
  t23 = (t22 + 0U);
  *((int *)t23) = t21;
  t23 = (t22 + 4U);
  *((int *)t23) = 0;
  t23 = (t22 + 8U);
  *((int *)t23) = -1;
  t24 = (0 - t21);
  t25 = (t24 * -1);
  t25 = (t25 + 1);
  t23 = (t22 + 12U);
  *((unsigned int *)t23) = t25;
  t23 = (t5 + 4U);
  t26 = (t1 + 4000);
  t27 = (t23 + 88U);
  *((char **)t27) = t26;
  t28 = (char *)alloca(t17);
  t29 = (t23 + 56U);
  *((char **)t29) = t28;
  xsi_type_set_default_value(t26, t28, t18);
  t30 = (t23 + 64U);
  *((char **)t30) = t18;
  t31 = (t23 + 80U);
  *((unsigned int *)t31) = t17;
  t32 = (t6 + 4U);
  t33 = (t3 != 0);
  if (t33 == 1)
    goto LAB3;
LAB2:
  t34 = (t6 + 12U);
  *((char **)t34) = t4;
  t35 = (t18 + 8U);
  t36 = *((int *)t35);
  t37 = (t18 + 4U);
  t38 = *((int *)t37);
  t39 = (t18 + 0U);
  t40 = *((int *)t39);
  t41 = t40;
  t42 = t38;
LAB4:
  t43 = (t42 * t36);
  t44 = (t41 * t36);
  if (t44 <= t43)
    goto LAB5;
LAB7:
  t8 = (t23 + 56U);
  t11 = *((char **)t8);
  t8 = (t18 + 12U);
  t9 = *((unsigned int *)t8);
  t9 = (t9 * 1U);
  t0 = xsi_get_transient_memory(t9);
  memcpy(t0, t11, t9);
  t12 = (t18 + 0U);
  t10 = *((int *)t12);
  t19 = (t18 + 4U);
  t13 = *((int *)t19);
  t22 = (t18 + 8U);
  t15 = *((int *)t22);
  t26 = (t2 + 0U);
  t27 = (t26 + 0U);
  *((int *)t27) = t10;
  t27 = (t26 + 4U);
  *((int *)t27) = t13;
  t27 = (t26 + 8U);
  *((int *)t27) = t15;
  t16 = (t13 - t10);
  t14 = (t16 * t15);
  t14 = (t14 + 1);
  t27 = (t26 + 12U);
  *((unsigned int *)t27) = t14;
LAB1:
  return t0;
LAB3:
  *((char **)t32) = t3;
  goto LAB2;
LAB5:
  t45 = (t3 + 0);
  t46 = (t7 + 0U);
  t47 = *((int *)t46);
  t48 = (t7 + 8U);
  t49 = *((int *)t48);
  t50 = (t41 - t47);
  t25 = (t50 * t49);
  t51 = (t7 + 4U);
  t52 = *((int *)t51);
  xsi_vhdl_check_range_of_index(t47, t52, t49, t41);
  t53 = (1U * t25);
  t54 = (0 + t53);
  t55 = (t45 + t54);
  t56 = *((unsigned char *)t55);
  t57 = (char *)((nl0) + t56);
  goto **((char **)t57);
LAB6:
  if (t41 == t42)
    goto LAB7;
LAB11:
  t10 = (t41 + t36);
  t41 = t10;
  goto LAB4;
LAB8:
  goto LAB6;
LAB9:
  t58 = (t23 + 56U);
  t59 = *((char **)t58);
  t58 = (t18 + 0U);
  t60 = *((int *)t58);
  t61 = (t18 + 8U);
  t62 = *((int *)t61);
  t63 = (t41 - t60);
  t64 = (t63 * t62);
  t65 = (1U * t64);
  t66 = (0 + t65);
  t67 = (t59 + t66);
  *((unsigned char *)t67) = (unsigned char)2;
  goto LAB8;
LAB10:
  t8 = (t23 + 56U);
  t11 = *((char **)t8);
  t8 = (t18 + 0U);
  t10 = *((int *)t8);
  t12 = (t18 + 8U);
  t13 = *((int *)t12);
  t15 = (t41 - t10);
  t9 = (t15 * t13);
  t14 = (1U * t9);
  t17 = (0 + t14);
  t19 = (t11 + t17);
  *((unsigned char *)t19) = (unsigned char)3;
  goto LAB8;
LAB12:;
}


x86 assembly (clang, -O0):
<ieee_p_2592010699_sub_24166140421859237_503743352>:
push   %rbp
mov    %rsp,%rbp
sub    $0x280,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    -0x28(%rbp),%rax
add    $0xc,%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x108(%rbp)
lea    -0xe0(%rbp),%rax
mov    %rax,-0x110(%rbp)
mov    -0x110(%rbp),%rax
mov    %rax,-0x118(%rbp)
mov    -0x108(%rbp),%ecx
mov    -0x118(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x110(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x118(%rbp)
mov    -0x118(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x110(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x118(%rbp)
mov    -0x118(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x108(%rbp),%eax
neg    %eax
mov    %eax,-0x11c(%rbp)
mov    -0x11c(%rbp),%eax
neg    %eax
mov    %eax,-0x120(%rbp)
mov    -0x120(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x120(%rbp)
mov    -0x110(%rbp),%rax
add    $0xc,%rax
mov    %rax,-0x118(%rbp)
mov    -0x120(%rbp),%ecx
mov    -0x118(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x28(%rbp),%rax
add    $0xc,%rax
mov    %rax,-0x118(%rbp)
mov    -0x118(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x120(%rbp)
mov    -0x120(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x124(%rbp)
mov    -0x124(%rbp),%eax
neg    %eax
mov    %eax,-0x128(%rbp)
mov    -0x128(%rbp),%eax
neg    %eax
mov    %eax,-0x12c(%rbp)
mov    -0x12c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x12c(%rbp)
mov    -0x28(%rbp),%rax
add    $0xc,%rax
mov    %rax,-0x138(%rbp)
mov    -0x138(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x13c(%rbp)
mov    -0x13c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x140(%rbp)
lea    -0xf0(%rbp),%rax
mov    %rax,-0x148(%rbp)
mov    -0x148(%rbp),%rax
mov    %rax,-0x150(%rbp)
mov    -0x140(%rbp),%ecx
mov    -0x150(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x148(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x150(%rbp)
mov    -0x150(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x148(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x150(%rbp)
mov    -0x150(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x140(%rbp),%eax
neg    %eax
mov    %eax,-0x154(%rbp)
mov    -0x154(%rbp),%eax
neg    %eax
mov    %eax,-0x158(%rbp)
mov    -0x158(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x158(%rbp)
mov    -0x148(%rbp),%rax
add    $0xc,%rax
mov    %rax,-0x150(%rbp)
mov    -0x158(%rbp),%ecx
mov    -0x150(%rbp),%rax
mov    %ecx,(%rax)
lea    -0xac(%rbp),%rax
mov    %rax,-0x150(%rbp)
mov    -0x10(%rbp),%rax
add    $0xfa0,%rax
mov    %rax,-0x160(%rbp)
mov    -0x150(%rbp),%rax
add    $0x58,%rax
mov    %rax,-0x168(%rbp)
mov    -0x160(%rbp),%rcx
mov    -0x168(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x12c(%rbp),%eax
mov    %eax,%ecx
add    $0xf,%rcx
and    $0xfffffffffffffff0,%rcx
mov    %rsp,%rax
sub    %rcx,%rax
mov    %rax,%rsp
mov    %rax,-0x170(%rbp)
mov    -0x150(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0x178(%rbp)
mov    -0x170(%rbp),%rcx
mov    -0x178(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x160(%rbp),%rdi
mov    -0x170(%rbp),%rsi
lea    -0xf0(%rbp),%rdx
mov    $0x0,%al
call   1030 <xsi_type_set_default_value@plt>
mov    -0x150(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0x180(%rbp)
lea    -0xf0(%rbp),%rcx
mov    -0x180(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x150(%rbp),%rax
add    $0x50,%rax
mov    %rax,-0x188(%rbp)
mov    -0x12c(%rbp),%ecx
mov    -0x188(%rbp),%rax
mov    %ecx,(%rax)
lea    -0xd0(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x190(%rbp)
cmpq   $0x0,-0x20(%rbp)
setne  %al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x191(%rbp)
movzbl -0x191(%rbp),%eax
cmp    $0x1,%eax
jne    1496 <ieee_p_2592010699_sub_24166140421859237_503743352+0x356>
jmp    1726 <ieee_p_2592010699_sub_24166140421859237_503743352+0x5e6>
jmp    149b <ieee_p_2592010699_sub_24166140421859237_503743352+0x35b>
lea    -0xd0(%rbp),%rax
add    $0xc,%rax
mov    %rax,-0x1a0(%rbp)
mov    -0x28(%rbp),%rcx
mov    -0x1a0(%rbp),%rax
mov    %rcx,(%rax)
lea    -0xf0(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x1a8(%rbp)
mov    -0x1a8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x1ac(%rbp)
lea    -0xf0(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x1b8(%rbp)
mov    -0x1b8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x1bc(%rbp)
lea    -0xf0(%rbp),%rax
mov    %rax,-0x1c8(%rbp)
mov    -0x1c8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x1cc(%rbp)
mov    -0x1cc(%rbp),%eax
mov    %eax,-0x1d0(%rbp)
mov    -0x1bc(%rbp),%eax
mov    %eax,-0x1d4(%rbp)
mov    -0x1d4(%rbp),%eax
imul   -0x1ac(%rbp),%eax
mov    %eax,-0x1d8(%rbp)
mov    -0x1d0(%rbp),%eax
imul   -0x1ac(%rbp),%eax
mov    %eax,-0x1dc(%rbp)
mov    -0x1dc(%rbp),%eax
cmp    -0x1d8(%rbp),%eax
jg     156f <ieee_p_2592010699_sub_24166140421859237_503743352+0x42f>
jmp    1739 <ieee_p_2592010699_sub_24166140421859237_503743352+0x5f9>
jmp    1574 <ieee_p_2592010699_sub_24166140421859237_503743352+0x434>
mov    -0x150(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x110(%rbp)
lea    -0xf0(%rbp),%rax
add    $0xc,%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%edi
mov    $0x0,%al
call   1060 <xsi_get_transient_memory@plt>
cltq
mov    %rax,-0xf8(%rbp)
mov    -0xf8(%rbp),%rdi
mov    -0x110(%rbp),%rsi
mov    -0x104(%rbp),%eax
mov    %eax,%edx
call   1040 <memcpy@plt>
lea    -0xf0(%rbp),%rax
mov    %rax,-0x118(%rbp)
mov    -0x118(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x108(%rbp)
lea    -0xf0(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x138(%rbp)
mov    -0x138(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x11c(%rbp)
lea    -0xf0(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x148(%rbp)
mov    -0x148(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x124(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x160(%rbp)
mov    -0x160(%rbp),%rax
mov    %rax,-0x168(%rbp)
mov    -0x108(%rbp),%ecx
mov    -0x168(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x160(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x168(%rbp)
mov    -0x11c(%rbp),%ecx
mov    -0x168(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x160(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x168(%rbp)
mov    -0x124(%rbp),%ecx
mov    -0x168(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x11c(%rbp),%eax
sub    -0x108(%rbp),%eax
mov    %eax,-0x128(%rbp)
mov    -0x128(%rbp),%eax
imul   -0x124(%rbp),%eax
mov    %eax,-0x120(%rbp)
mov    -0x120(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x120(%rbp)
mov    -0x160(%rbp),%rax
add    $0xc,%rax
mov    %rax,-0x168(%rbp)
mov    -0x120(%rbp),%ecx
mov    -0x168(%rbp),%rax
mov    %ecx,(%rax)
mov    -0xf8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1a38 <ieee_p_2592010699_sub_24166140421859237_503743352+0x8f8>
mov    -0x20(%rbp),%rcx
mov    -0x190(%rbp),%rax
mov    %rcx,(%rax)
jmp    149b <ieee_p_2592010699_sub_24166140421859237_503743352+0x35b>
mov    -0x20(%rbp),%rax
mov    %rax,-0x1e8(%rbp)
lea    -0xe0(%rbp),%rax
mov    %rax,-0x1f0(%rbp)
mov    -0x1f0(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x1f4(%rbp)
lea    -0xe0(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x200(%rbp)
mov    -0x200(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x204(%rbp)
mov    -0x1d0(%rbp),%eax
sub    -0x1f4(%rbp),%eax
mov    %eax,-0x208(%rbp)
mov    -0x208(%rbp),%eax
imul   -0x204(%rbp),%eax
mov    %eax,-0x158(%rbp)
lea    -0xe0(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x210(%rbp)
mov    -0x210(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x214(%rbp)
mov    -0x1f4(%rbp),%edi
mov    -0x214(%rbp),%esi
mov    -0x204(%rbp),%edx
mov    -0x1d0(%rbp),%ecx
mov    $0x0,%al
call   1050 <xsi_vhdl_check_range_of_index@plt>
mov    -0x158(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x218(%rbp)
mov    -0x218(%rbp),%eax
add    $0x0,%eax
mov    %eax,-0x21c(%rbp)
mov    -0x1e8(%rbp),%rax
mov    -0x21c(%rbp),%ecx
add    %rcx,%rax
mov    %rax,-0x228(%rbp)
mov    -0x228(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x229(%rbp)
movzbl -0x229(%rbp),%eax
movslq %eax,%rcx
lea    0x2814(%rip),%rax
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x238(%rbp)
mov    -0x238(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x280(%rbp)
jmp    1a41 <ieee_p_2592010699_sub_24166140421859237_503743352+0x901>
mov    -0x1d0(%rbp),%eax
cmp    -0x1d4(%rbp),%eax
jne    1877 <ieee_p_2592010699_sub_24166140421859237_503743352+0x737>
jmp    1574 <ieee_p_2592010699_sub_24166140421859237_503743352+0x434>
jmp    187c <ieee_p_2592010699_sub_24166140421859237_503743352+0x73c>
mov    -0x1d0(%rbp),%eax
add    -0x1ac(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
mov    %eax,-0x1d0(%rbp)
jmp    1532 <ieee_p_2592010699_sub_24166140421859237_503743352+0x3f2>
jmp    1860 <ieee_p_2592010699_sub_24166140421859237_503743352+0x720>
mov    -0x150(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0x240(%rbp)
mov    -0x240(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x248(%rbp)
lea    -0xf0(%rbp),%rax
mov    %rax,-0x240(%rbp)
mov    -0x240(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x24c(%rbp)
lea    -0xf0(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x258(%rbp)
mov    -0x258(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x25c(%rbp)
mov    -0x1d0(%rbp),%eax
sub    -0x24c(%rbp),%eax
mov    %eax,-0x260(%rbp)
mov    -0x260(%rbp),%eax
imul   -0x25c(%rbp),%eax
mov    %eax,-0x264(%rbp)
mov    -0x264(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x268(%rbp)
mov    -0x268(%rbp),%eax
add    $0x0,%eax
mov    %eax,-0x26c(%rbp)
mov    -0x248(%rbp),%rax
mov    -0x26c(%rbp),%ecx
add    %rcx,%rax
mov    %rax,-0x278(%rbp)
mov    -0x278(%rbp),%rax
movb   $0x2,(%rax)
jmp    189f <ieee_p_2592010699_sub_24166140421859237_503743352+0x75f>
mov    -0x150(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x110(%rbp)
lea    -0xf0(%rbp),%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x108(%rbp)
lea    -0xf0(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x118(%rbp)
mov    -0x118(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x11c(%rbp)
mov    -0x1d0(%rbp),%eax
sub    -0x108(%rbp),%eax
mov    %eax,-0x124(%rbp)
mov    -0x124(%rbp),%eax
imul   -0x11c(%rbp),%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x120(%rbp)
mov    -0x120(%rbp),%eax
add    $0x0,%eax
mov    %eax,-0x12c(%rbp)
mov    -0x110(%rbp),%rax
mov    -0x12c(%rbp),%ecx
add    %rcx,%rax
mov    %rax,-0x138(%rbp)
mov    -0x138(%rbp),%rax
movb   $0x3,(%rax)
jmp    189f <ieee_p_2592010699_sub_24166140421859237_503743352+0x75f>
mov    -0x8(%rbp),%rax
mov    %rbp,%rsp
pop    %rbp
ret
mov    -0x280(%rbp),%rax
jmp    *%rax

x86 assembly (clang, -O2):
<ieee_p_2592010699_sub_24166140421859237_503743352>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    %rdx,-0x68(%rbp)
mov    %rsi,-0x60(%rbp)
mov    0xc(%rcx),%r15d
lea    -0x1(%r15),%eax
mov    %eax,-0x4c(%rbp)
mov    %eax,-0x40(%rbp)
movabs $0xffffffff00000000,%rax
ff ff ff
mov    %rax,-0x3c(%rbp)
mov    %r15d,-0x34(%rbp)
add    $0xfa0,%rdi
mov    %rsp,%rsi
mov    %r15,%rax
add    $0xf,%rax
and    $0xfffffffffffffff0,%rax
sub    %rax,%rsi
mov    %rsi,%rsp
lea    -0x40(%rbp),%rdx
mov    %rsi,-0x58(%rbp)
xor    %eax,%eax
call   1030 <xsi_type_set_default_value@plt>
mov    -0x38(%rbp),%r14d
mov    -0x40(%rbp),%ebx
mov    -0x3c(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    %eax,%ecx
imul   %r14d,%ecx
mov    %ebx,%eax
imul   %r14d,%eax
mov    %ecx,-0x44(%rbp)
cmp    %ecx,%eax
jg     123a <ieee_p_2592010699_sub_24166140421859237_503743352+0xfa>
lea    (%rbx,%r14,1),%r13d
imul   %r14d,%r13d
mov    %r14d,%r12d
imul   %r12d,%r12d
mov    %r15,%rax
mov    %ebx,%r15d
not    %r15d
add    %eax,%r15d
xchg   %ax,%ax
mov    -0x4c(%rbp),%edi
xor    %esi,%esi
mov    $0xffffffff,%edx
mov    %ebx,%ecx
xor    %eax,%eax
call   1050 <xsi_vhdl_check_range_of_index@plt>
mov    %r15d,%eax
mov    -0x68(%rbp),%rcx
movzbl (%rcx,%rax,1),%eax
lea    0x2c0b(%rip),%rcx
jmp    *(%rcx,%rax,8)
mov    $0x2,%al
jmp    1212 <ieee_p_2592010699_sub_24166140421859237_503743352+0xd2>
nopl   0x0(%rax)
mov    $0x3,%al
mov    %ebx,%ecx
sub    -0x40(%rbp),%ecx
imul   -0x38(%rbp),%ecx
mov    -0x58(%rbp),%rdx
mov    %al,(%rdx,%rcx,1)
cmp    %ebx,-0x48(%rbp)
je     123a <ieee_p_2592010699_sub_24166140421859237_503743352+0xfa>
add    %r14d,%ebx
lea    (%r12,%r13,1),%eax
sub    %r14d,%r15d
cmp    -0x44(%rbp),%r13d
mov    %eax,%r13d
jle    11e0 <ieee_p_2592010699_sub_24166140421859237_503743352+0xa0>
mov    -0x34(%rbp),%ebx
mov    %ebx,%edi
xor    %eax,%eax
call   1060 <xsi_get_transient_memory@plt>
movslq %eax,%r15
mov    %r15,%rdi
mov    -0x58(%rbp),%rsi
mov    %rbx,%rdx
call   1040 <memcpy@plt>
mov    -0x40(%rbp),%eax
mov    -0x3c(%rbp),%ecx
mov    -0x38(%rbp),%edx
mov    -0x60(%rbp),%rsi
mov    %eax,(%rsi)
mov    %ecx,0x4(%rsi)
mov    %edx,0x8(%rsi)
sub    %eax,%ecx
imul   %edx,%ecx
add    $0x1,%ecx
mov    %ecx,0xc(%rsi)
mov    %r15,%rax
lea    -0x28(%rbp),%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@ieee_p_2592010699_sub_24166140421859237_503743352.nl0 = internal global [2 x i8*] [i8* blockaddress(@ieee_p_2592010699_sub_24166140421859237_503743352, %364), i8* blockaddress(@ieee_p_2592010699_sub_24166140421859237_503743352, %395)]
define i8* @ieee_p_2592010699_sub_24166140421859237_503743352(i8* %0, i8* %1, i8* %2, i8* %3) {
%5 = alloca i8*
%6 = alloca i8*
%7 = alloca i8*
%8 = alloca i8*
%9 = alloca i8*
%10 = alloca [128 x i8]
%11 = alloca [24 x i8]
%12 = alloca [16 x i8]
%13 = alloca [16 x i8]
%14 = alloca i8*
%15 = alloca i8*
%16 = alloca i32
%17 = alloca i32
%18 = alloca i8*
%19 = alloca i8*
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i8*
%26 = alloca i32
%27 = alloca i32
%28 = alloca i8*
%29 = alloca i8*
%30 = alloca i32
%31 = alloca i32
%32 = alloca i8*
%33 = alloca i8*
%34 = alloca i8*
%35 = alloca i8*
%36 = alloca i8*
%37 = alloca i8*
%38 = alloca i8*
%39 = alloca i8
%40 = alloca i8*
%41 = alloca i8*
%42 = alloca i32
%43 = alloca i8*
%44 = alloca i32
%45 = alloca i8*
%46 = alloca i32
%47 = alloca i32
%48 = alloca i32
%49 = alloca i32
%50 = alloca i32
%51 = alloca i8*
%52 = alloca i8*
%53 = alloca i32
%54 = alloca i8*
%55 = alloca i32
%56 = alloca i32
%57 = alloca i8*
%58 = alloca i32
%59 = alloca i32
%60 = alloca i32
%61 = alloca i8*
%62 = alloca i8
%63 = alloca i8*
%64 = alloca i8*
%65 = alloca i8*
%66 = alloca i32
%67 = alloca i8*
%68 = alloca i32
%69 = alloca i32
%70 = alloca i32
%71 = alloca i32
%72 = alloca i32
%73 = alloca i8*
store i8* %0, i8** %6
store i8* %1, i8** %7
store i8* %2, i8** %8
store i8* %3, i8** %9
br label %74
74: ; preds = %4
%75 = load i8*, i8** %9
%76 = getelementptr inbounds i8, i8* %75, i64 12
store i8* %76, i8** %15
%77 = load i8*, i8** %15
%78 = bitcast i8* %77 to i32*
%79 = load i32, i32* %78
store i32 %79, i32* %16
%80 = load i32, i32* %16
%81 = sub i32 %80, 1
store i32 %81, i32* %17
%82 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%83 = getelementptr inbounds i8, i8* %82, i64 0
store i8* %83, i8** %18
%84 = load i8*, i8** %18
%85 = getelementptr inbounds i8, i8* %84, i64 0
store i8* %85, i8** %19
%86 = load i32, i32* %17
%87 = load i8*, i8** %19
%88 = bitcast i8* %87 to i32*
store i32 %86, i32* %88
%89 = load i8*, i8** %18
%90 = getelementptr inbounds i8, i8* %89, i64 4
store i8* %90, i8** %19
%91 = load i8*, i8** %19
%92 = bitcast i8* %91 to i32*
store i32 0, i32* %92
%93 = load i8*, i8** %18
%94 = getelementptr inbounds i8, i8* %93, i64 8
store i8* %94, i8** %19
%95 = load i8*, i8** %19
%96 = bitcast i8* %95 to i32*
store i32 -1, i32* %96
%97 = load i32, i32* %17
%98 = sub nsw i32 0, %97
store i32 %98, i32* %20
%99 = load i32, i32* %20
%100 = mul nsw i32 %99, -1
store i32 %100, i32* %21
%101 = load i32, i32* %21
%102 = add i32 %101, 1
store i32 %102, i32* %21
%103 = load i8*, i8** %18
%104 = getelementptr inbounds i8, i8* %103, i64 12
store i8* %104, i8** %19
%105 = load i32, i32* %21
%106 = load i8*, i8** %19
%107 = bitcast i8* %106 to i32*
store i32 %105, i32* %107
%108 = load i8*, i8** %9
%109 = getelementptr inbounds i8, i8* %108, i64 12
store i8* %109, i8** %19
%110 = load i8*, i8** %19
%111 = bitcast i8* %110 to i32*
%112 = load i32, i32* %111
store i32 %112, i32* %21
%113 = load i32, i32* %21
%114 = sub i32 %113, 1
store i32 %114, i32* %22
%115 = load i32, i32* %22
%116 = sub nsw i32 0, %115
store i32 %116, i32* %23
%117 = load i32, i32* %23
%118 = mul nsw i32 %117, -1
store i32 %118, i32* %24
%119 = load i32, i32* %24
%120 = add i32 %119, 1
store i32 %120, i32* %24
%121 = load i32, i32* %24
%122 = mul i32 %121, 1
store i32 %122, i32* %24
%123 = load i8*, i8** %9
%124 = getelementptr inbounds i8, i8* %123, i64 12
store i8* %124, i8** %25
%125 = load i8*, i8** %25
%126 = bitcast i8* %125 to i32*
%127 = load i32, i32* %126
store i32 %127, i32* %26
%128 = load i32, i32* %26
%129 = sub i32 %128, 1
store i32 %129, i32* %27
%130 = getelementptr inbounds [16 x i8], [16 x i8]* %13, i64 0, i64 0
%131 = getelementptr inbounds i8, i8* %130, i64 0
store i8* %131, i8** %28
%132 = load i8*, i8** %28
%133 = getelementptr inbounds i8, i8* %132, i64 0
store i8* %133, i8** %29
%134 = load i32, i32* %27
%135 = load i8*, i8** %29
%136 = bitcast i8* %135 to i32*
store i32 %134, i32* %136
%137 = load i8*, i8** %28
%138 = getelementptr inbounds i8, i8* %137, i64 4
store i8* %138, i8** %29
%139 = load i8*, i8** %29
%140 = bitcast i8* %139 to i32*
store i32 0, i32* %140
%141 = load i8*, i8** %28
%142 = getelementptr inbounds i8, i8* %141, i64 8
store i8* %142, i8** %29
%143 = load i8*, i8** %29
%144 = bitcast i8* %143 to i32*
store i32 -1, i32* %144
%145 = load i32, i32* %27
%146 = sub nsw i32 0, %145
store i32 %146, i32* %30
%147 = load i32, i32* %30
%148 = mul nsw i32 %147, -1
store i32 %148, i32* %31
%149 = load i32, i32* %31
%150 = add i32 %149, 1
store i32 %150, i32* %31
%151 = load i8*, i8** %28
%152 = getelementptr inbounds i8, i8* %151, i64 12
store i8* %152, i8** %29
%153 = load i32, i32* %31
%154 = load i8*, i8** %29
%155 = bitcast i8* %154 to i32*
store i32 %153, i32* %155
%156 = getelementptr inbounds [128 x i8], [128 x i8]* %10, i64 0, i64 0
%157 = getelementptr inbounds i8, i8* %156, i64 4
store i8* %157, i8** %29
%158 = load i8*, i8** %6
%159 = getelementptr inbounds i8, i8* %158, i64 4000
store i8* %159, i8** %32
%160 = load i8*, i8** %29
%161 = getelementptr inbounds i8, i8* %160, i64 88
store i8* %161, i8** %33
%162 = load i8*, i8** %32
%163 = load i8*, i8** %33
%164 = bitcast i8* %163 to i8**
store i8* %162, i8** %164
%165 = load i32, i32* %24
%166 = zext i32 %165 to i64
%167 = alloca i8, i64 %166
store i8* %167, i8** %34
%168 = load i8*, i8** %29
%169 = getelementptr inbounds i8, i8* %168, i64 56
store i8* %169, i8** %35
%170 = load i8*, i8** %34
%171 = load i8*, i8** %35
%172 = bitcast i8* %171 to i8**
store i8* %170, i8** %172
%173 = load i8*, i8** %32
%174 = load i8*, i8** %34
%175 = getelementptr inbounds [16 x i8], [16 x i8]* %13, i64 0, i64 0
%176 = call i32 (i8*, i8*, i8*, ...) bitcast (i32 (...)* @xsi_type_set_default_value to i32 (i8*, i8*, i8*, ...)*)(i8* %173, i8* %174, i8* %175)
%177 = load i8*, i8** %29
%178 = getelementptr inbounds i8, i8* %177, i64 64
store i8* %178, i8** %36
%179 = getelementptr inbounds [16 x i8], [16 x i8]* %13, i64 0, i64 0
%180 = load i8*, i8** %36
%181 = bitcast i8* %180 to i8**
store i8* %179, i8** %181
%182 = load i8*, i8** %29
%183 = getelementptr inbounds i8, i8* %182, i64 80
store i8* %183, i8** %37
%184 = load i32, i32* %24
%185 = load i8*, i8** %37
%186 = bitcast i8* %185 to i32*
store i32 %184, i32* %186
%187 = getelementptr inbounds [24 x i8], [24 x i8]* %11, i64 0, i64 0
%188 = getelementptr inbounds i8, i8* %187, i64 4
store i8* %188, i8** %38
%189 = load i8*, i8** %8
%190 = icmp ne i8* %189, null
%191 = zext i1 %190 to i32
%192 = trunc i32 %191 to i8
store i8 %192, i8* %39
%193 = load i8, i8* %39
%194 = zext i8 %193 to i32
%195 = icmp eq i32 %194, 1
br i1 %195, label %196, label %197
196: ; preds = %74
br label %301
197: ; preds = %74
br label %198
198: ; preds = %301, %197
%199 = getelementptr inbounds [24 x i8], [24 x i8]* %11, i64 0, i64 0
%200 = getelementptr inbounds i8, i8* %199, i64 12
store i8* %200, i8** %40
%201 = load i8*, i8** %9
%202 = load i8*, i8** %40
%203 = bitcast i8* %202 to i8**
store i8* %201, i8** %203
%204 = getelementptr inbounds [16 x i8], [16 x i8]* %13, i64 0, i64 0
%205 = getelementptr inbounds i8, i8* %204, i64 8
store i8* %205, i8** %41
%206 = load i8*, i8** %41
%207 = bitcast i8* %206 to i32*
%208 = load i32, i32* %207
store i32 %208, i32* %42
%209 = getelementptr inbounds [16 x i8], [16 x i8]* %13, i64 0, i64 0
%210 = getelementptr inbounds i8, i8* %209, i64 4
store i8* %210, i8** %43
%211 = load i8*, i8** %43
%212 = bitcast i8* %211 to i32*
%213 = load i32, i32* %212
store i32 %213, i32* %44
%214 = getelementptr inbounds [16 x i8], [16 x i8]* %13, i64 0, i64 0
%215 = getelementptr inbounds i8, i8* %214, i64 0
store i8* %215, i8** %45
%216 = load i8*, i8** %45
%217 = bitcast i8* %216 to i32*
%218 = load i32, i32* %217
store i32 %218, i32* %46
%219 = load i32, i32* %46
store i32 %219, i32* %47
%220 = load i32, i32* %44
store i32 %220, i32* %48
br label %221
221: ; preds = %358, %198
%222 = load i32, i32* %48
%223 = load i32, i32* %42
%224 = mul nsw i32 %222, %223
store i32 %224, i32* %49
%225 = load i32, i32* %47
%226 = load i32, i32* %42
%227 = mul nsw i32 %225, %226
store i32 %227, i32* %50
%228 = load i32, i32* %50
%229 = load i32, i32* %49
%230 = icmp sle i32 %228, %229
br i1 %230, label %231, label %232
231: ; preds = %221
br label %305
232: ; preds = %221
br label %233
233: ; preds = %356, %232
%234 = load i8*, i8** %29
%235 = getelementptr inbounds i8, i8* %234, i64 56
store i8* %235, i8** %15
%236 = load i8*, i8** %15
%237 = bitcast i8* %236 to i8**
%238 = load i8*, i8** %237
store i8* %238, i8** %18
%239 = getelementptr inbounds [16 x i8], [16 x i8]* %13, i64 0, i64 0
%240 = getelementptr inbounds i8, i8* %239, i64 12
store i8* %240, i8** %15
%241 = load i8*, i8** %15
%242 = bitcast i8* %241 to i32*
%243 = load i32, i32* %242
store i32 %243, i32* %16
%244 = load i32, i32* %16
%245 = mul i32 %244, 1
store i32 %245, i32* %16
%246 = load i32, i32* %16
%247 = call i32 (i32, ...) bitcast (i32 (...)* @xsi_get_transient_memory to i32 (i32, ...)*)(i32 %246)
%248 = sext i32 %247 to i64
%249 = inttoptr i64 %248 to i8*
store i8* %249, i8** %14
%250 = load i8*, i8** %14
%251 = load i8*, i8** %18
%252 = load i32, i32* %16
%253 = zext i32 %252 to i64
%254 = getelementptr inbounds [16 x i8], [16 x i8]* %13, i64 0, i64 0
%255 = getelementptr inbounds i8, i8* %254, i64 0
store i8* %255, i8** %19
%256 = load i8*, i8** %19
%257 = bitcast i8* %256 to i32*
%258 = load i32, i32* %257
store i32 %258, i32* %17
%259 = getelementptr inbounds [16 x i8], [16 x i8]* %13, i64 0, i64 0
%260 = getelementptr inbounds i8, i8* %259, i64 4
store i8* %260, i8** %25
%261 = load i8*, i8** %25
%262 = bitcast i8* %261 to i32*
%263 = load i32, i32* %262
store i32 %263, i32* %20
%264 = getelementptr inbounds [16 x i8], [16 x i8]* %13, i64 0, i64 0
%265 = getelementptr inbounds i8, i8* %264, i64 8
store i8* %265, i8** %28
%266 = load i8*, i8** %28
%267 = bitcast i8* %266 to i32*
%268 = load i32, i32* %267
store i32 %268, i32* %22
%269 = load i8*, i8** %7
%270 = getelementptr inbounds i8, i8* %269, i64 0
store i8* %270, i8** %32
%271 = load i8*, i8** %32
%272 = getelementptr inbounds i8, i8* %271, i64 0
store i8* %272, i8** %33
%273 = load i32, i32* %17
%274 = load i8*, i8** %33
%275 = bitcast i8* %274 to i32*
store i32 %273, i32* %275
%276 = load i8*, i8** %32
%277 = getelementptr inbounds i8, i8* %276, i64 4
store i8* %277, i8** %33
%278 = load i32, i32* %20
%279 = load i8*, i8** %33
%280 = bitcast i8* %279 to i32*
store i32 %278, i32* %280
%281 = load i8*, i8** %32
%282 = getelementptr inbounds i8, i8* %281, i64 8
store i8* %282, i8** %33
%283 = load i32, i32* %22
%284 = load i8*, i8** %33
%285 = bitcast i8* %284 to i32*
store i32 %283, i32* %285
%286 = load i32, i32* %20
%287 = load i32, i32* %17
%288 = sub nsw i32 %286, %287
store i32 %288, i32* %23
%289 = load i32, i32* %23
%290 = load i32, i32* %22
%291 = mul nsw i32 %289, %290
store i32 %291, i32* %21
%292 = load i32, i32* %21
%293 = add i32 %292, 1
store i32 %293, i32* %21
%294 = load i8*, i8** %32
%295 = getelementptr inbounds i8, i8* %294, i64 12
store i8* %295, i8** %33
%296 = load i32, i32* %21
%297 = load i8*, i8** %33
%298 = bitcast i8* %297 to i32*
store i32 %296, i32* %298
br label %299
299: ; preds = %233
%300 = load i8*, i8** %14
store i8* %300, i8** %5
br label %427
301: ; preds = %196
%302 = load i8*, i8** %8
%303 = load i8*, i8** %38
%304 = bitcast i8* %303 to i8**
store i8* %302, i8** %304
br label %198
305: ; preds = %231
%306 = load i8*, i8** %8
%307 = getelementptr inbounds i8, i8* %306, i64 0
store i8* %307, i8** %51
%308 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%309 = getelementptr inbounds i8, i8* %308, i64 0
store i8* %309, i8** %52
%310 = load i8*, i8** %52
%311 = bitcast i8* %310 to i32*
%312 = load i32, i32* %311
store i32 %312, i32* %53
%313 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%314 = getelementptr inbounds i8, i8* %313, i64 8
store i8* %314, i8** %54
%315 = load i8*, i8** %54
%316 = bitcast i8* %315 to i32*
%317 = load i32, i32* %316
store i32 %317, i32* %55
%318 = load i32, i32* %47
%319 = load i32, i32* %53
%320 = sub nsw i32 %318, %319
store i32 %320, i32* %56
%321 = load i32, i32* %56
%322 = load i32, i32* %55
%323 = mul nsw i32 %321, %322
store i32 %323, i32* %31
%324 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%325 = getelementptr inbounds i8, i8* %324, i64 4
store i8* %325, i8** %57
%326 = load i8*, i8** %57
%327 = bitcast i8* %326 to i32*
%328 = load i32, i32* %327
store i32 %328, i32* %58
%329 = load i32, i32* %53
%330 = load i32, i32* %58
%331 = load i32, i32* %55
%332 = load i32, i32* %47
%333 = call i32 (i32, i32, i32, i32, ...) bitcast (i32 (...)* @xsi_vhdl_check_range_of_index to i32 (i32, i32, i32, i32, ...)*)(i32 %329, i32 %330, i32 %331, i32 %332)
%334 = load i32, i32* %31
%335 = mul i32 1, %334
store i32 %335, i32* %59
%336 = load i32, i32* %59
%337 = add i32 0, %336
store i32 %337, i32* %60
%338 = load i8*, i8** %51
%339 = load i32, i32* %60
%340 = zext i32 %339 to i64
%341 = getelementptr inbounds i8, i8* %338, i64 %340
store i8* %341, i8** %61
%342 = load i8*, i8** %61
%343 = load i8, i8* %342
store i8 %343, i8* %62
%344 = load i8, i8* %62
%345 = zext i8 %344 to i32
%346 = sext i32 %345 to i64
%347 = getelementptr inbounds i8*, i8** getelementptr inbounds ([2 x i8*], [2 x i8*]* @ieee_p_2592010699_sub_24166140421859237_503743352.nl0, i64 0, i64 0), i64 %346
%348 = bitcast i8** %347 to i8*
store i8* %348, i8** %63
%349 = load i8*, i8** %63
%350 = bitcast i8* %349 to i8**
%351 = load i8*, i8** %350
br label %429
352: ; preds = %363
%353 = load i32, i32* %47
%354 = load i32, i32* %48
%355 = icmp eq i32 %353, %354
br i1 %355, label %356, label %357
356: ; preds = %352
br label %233
357: ; preds = %352
br label %358
358: ; preds = %357
%359 = load i32, i32* %47
%360 = load i32, i32* %42
%361 = add nsw i32 %359, %360
store i32 %361, i32* %17
%362 = load i32, i32* %17
store i32 %362, i32* %47
br label %221
363: ; preds = %395, %364
br label %352
364: ; preds = %429
%365 = load i8*, i8** %29
%366 = getelementptr inbounds i8, i8* %365, i64 56
store i8* %366, i8** %64
%367 = load i8*, i8** %64
%368 = bitcast i8* %367 to i8**
%369 = load i8*, i8** %368
store i8* %369, i8** %65
%370 = getelementptr inbounds [16 x i8], [16 x i8]* %13, i64 0, i64 0
%371 = getelementptr inbounds i8, i8* %370, i64 0
store i8* %371, i8** %64
%372 = load i8*, i8** %64
%373 = bitcast i8* %372 to i32*
%374 = load i32, i32* %373
store i32 %374, i32* %66
%375 = getelementptr inbounds [16 x i8], [16 x i8]* %13, i64 0, i64 0
%376 = getelementptr inbounds i8, i8* %375, i64 8
store i8* %376, i8** %67
%377 = load i8*, i8** %67
%378 = bitcast i8* %377 to i32*
%379 = load i32, i32* %378
store i32 %379, i32* %68
%380 = load i32, i32* %47
%381 = load i32, i32* %66
%382 = sub nsw i32 %380, %381
store i32 %382, i32* %69
%383 = load i32, i32* %69
%384 = load i32, i32* %68
%385 = mul nsw i32 %383, %384
store i32 %385, i32* %70
%386 = load i32, i32* %70
%387 = mul i32 1, %386
store i32 %387, i32* %71
%388 = load i32, i32* %71
%389 = add i32 0, %388
store i32 %389, i32* %72
%390 = load i8*, i8** %65
%391 = load i32, i32* %72
%392 = zext i32 %391 to i64
%393 = getelementptr inbounds i8, i8* %390, i64 %392
store i8* %393, i8** %73
%394 = load i8*, i8** %73
store i8 2, i8* %394
br label %363
395: ; preds = %429
%396 = load i8*, i8** %29
%397 = getelementptr inbounds i8, i8* %396, i64 56
store i8* %397, i8** %15
%398 = load i8*, i8** %15
%399 = bitcast i8* %398 to i8**
%400 = load i8*, i8** %399
store i8* %400, i8** %18
%401 = getelementptr inbounds [16 x i8], [16 x i8]* %13, i64 0, i64 0
%402 = getelementptr inbounds i8, i8* %401, i64 0
store i8* %402, i8** %15
%403 = load i8*, i8** %15
%404 = bitcast i8* %403 to i32*
%405 = load i32, i32* %404
store i32 %405, i32* %17
%406 = getelementptr inbounds [16 x i8], [16 x i8]* %13, i64 0, i64 0
%407 = getelementptr inbounds i8, i8* %406, i64 8
store i8* %407, i8** %19
%408 = load i8*, i8** %19
%409 = bitcast i8* %408 to i32*
%410 = load i32, i32* %409
store i32 %410, i32* %20
%411 = load i32, i32* %47
%412 = load i32, i32* %17
%413 = sub nsw i32 %411, %412
store i32 %413, i32* %22
%414 = load i32, i32* %22
%415 = load i32, i32* %20
%416 = mul nsw i32 %414, %415
store i32 %416, i32* %16
%417 = load i32, i32* %16
%418 = mul i32 1, %417
store i32 %418, i32* %21
%419 = load i32, i32* %21
%420 = add i32 0, %419
store i32 %420, i32* %24
%421 = load i8*, i8** %18
%422 = load i32, i32* %24
%423 = zext i32 %422 to i64
%424 = getelementptr inbounds i8, i8* %421, i64 %423
store i8* %424, i8** %25
%425 = load i8*, i8** %25
store i8 3, i8* %425
br label %363
426: ; No predecessors!
br label %427
427: ; preds = %426, %299
%428 = load i8*, i8** %5
ret i8* %428
429: ; preds = %305
%430 = phi i8* [ %351, %305 ]
indirectbr i8* %430, [label %364, label %395]
}

LLVM IR (-O2):
@ieee_p_2592010699_sub_24166140421859237_503743352.nl0 = internal unnamed_addr constant [2 x i8*] [i8* blockaddress(@ieee_p_2592010699_sub_24166140421859237_503743352, %57), i8* blockaddress(@ieee_p_2592010699_sub_24166140421859237_503743352, %70)]
define i8* @ieee_p_2592010699_sub_24166140421859237_503743352(i8* %0, i8* nocapture writeonly %1, i8* nocapture %2, i8* nocapture %3) {
%5 = alloca [16 x i8]
%6 = getelementptr inbounds i8, i8* %3, i64 12
%7 = bitcast i8* %6 to i32*
%8 = load i32, i32* %7
%9 = add i32 %8, -1
%10 = getelementptr inbounds [16 x i8], [16 x i8]* %5, i64 0, i64 0
%11 = bitcast [16 x i8]* %5 to i32*
store i32 %9, i32* %11
%12 = getelementptr inbounds [16 x i8], [16 x i8]* %5, i64 0, i64 4
%13 = bitcast i8* %12 to i32*
store i32 0, i32* %13
%14 = getelementptr inbounds [16 x i8], [16 x i8]* %5, i64 0, i64 8
%15 = bitcast i8* %14 to i32*
store i32 -1, i32* %15
%16 = getelementptr inbounds [16 x i8], [16 x i8]* %5, i64 0, i64 12
%17 = bitcast i8* %16 to i32*
store i32 %8, i32* %17
%18 = getelementptr inbounds i8, i8* %0, i64 4000
%19 = zext i32 %8 to i64
%20 = alloca i8, i64 %19
%21 = call i32 (i8*, i8*, i8*, ...) bitcast (i32 (...)* @xsi_type_set_default_value to i32 (i8*, i8*, i8*, ...)*)(i8* %18, i8* %20, i8* %10)
%22 = load i32, i32* %15
%23 = load i32, i32* %13
%24 = load i32, i32* %11
%25 = mul nsw i32 %23, %22
%26 = mul nsw i32 %24, %22
%27 = icmp sgt i32 %26, %25
br i1 %27, label %28, label %47
28: ; preds = %57, %4
%29 = load i32, i32* %17
%30 = call i32 (i32, ...) bitcast (i32 (...)* @xsi_get_transient_memory to i32 (i32, ...)*)(i32 %29)
%31 = sext i32 %30 to i64
%32 = inttoptr i64 %31 to i8*
%33 = zext i32 %29 to i64
%34 = load i32, i32* %11
%35 = load i32, i32* %13
%36 = load i32, i32* %15
%37 = bitcast i8* %1 to i32*
store i32 %34, i32* %37
%38 = getelementptr inbounds i8, i8* %1, i64 4
%39 = bitcast i8* %38 to i32*
store i32 %35, i32* %39
%40 = getelementptr inbounds i8, i8* %1, i64 8
%41 = bitcast i8* %40 to i32*
store i32 %36, i32* %41
%42 = sub nsw i32 %35, %34
%43 = mul nsw i32 %42, %36
%44 = add i32 %43, 1
%45 = getelementptr inbounds i8, i8* %1, i64 12
%46 = bitcast i8* %45 to i32*
store i32 %44, i32* %46
ret i8* %32
47: ; preds = %4, %57
%48 = phi i32 [ %66, %57 ], [ %24, %4 ]
%49 = sub i32 %9, %48
%50 = call i32 (i32, i32, i32, i32, ...) bitcast (i32 (...)* @xsi_vhdl_check_range_of_index to i32 (i32, i32, i32, i32, ...)*)(i32 %9, i32 0, i32 -1, i32 %48)
%51 = zext i32 %49 to i64
%52 = getelementptr inbounds i8, i8* %2, i64 %51
%53 = load i8, i8* %52
%54 = zext i8 %53 to i64
%55 = getelementptr inbounds [2 x i8*], [2 x i8*]* @ieee_p_2592010699_sub_24166140421859237_503743352.nl0, i64 0, i64 %54
%56 = load i8*, i8** %55
indirectbr i8* %56, [label %57, label %70]
57: ; preds = %47, %70
%58 = phi i8 [ 3, %70 ], [ 2, %47 ]
%59 = load i32, i32* %11
%60 = load i32, i32* %15
%61 = sub nsw i32 %48, %59
%62 = mul nsw i32 %61, %60
%63 = zext i32 %62 to i64
%64 = getelementptr inbounds i8, i8* %20, i64 %63
store i8 %58, i8* %64
%65 = icmp eq i32 %48, %23
%66 = add nsw i32 %48, %22
%67 = mul nsw i32 %66, %22
%68 = icmp sgt i32 %67, %25
%69 = select i1 %65, i1 true, i1 %68
br i1 %69, label %28, label %47
70: ; preds = %47
br label %57
}