char *ieee_p_3499444699_sub_12492700571167055362_3536714472(char *t1, char *t2,
                                                            char *t3,
                                                            char *t4) {
  char t5[128];
  char t6[24];
  char t9[16];
  char *t0;
  char *t7;
  unsigned int t8;
  char *t10;
  int t11;
  char *t12;
  int t13;
  char *t14;
  int t15;
  char *t16;
  char *t17;
  int t18;
  unsigned int t19;
  char *t20;
  char *t21;
  char *t22;
  char *t23;
  char *t24;
  char *t25;
  char *t26;
  unsigned char t27;
  char *t28;
  char *t29;
  int t30;
  char *t31;
  int t32;
  char *t33;
  int t34;
  int t35;
  int t36;
  int t37;
  int t38;
  char *t39;
  char *t40;
  int t41;
  char *t42;
  int t43;
  int t44;
  unsigned int t45;
  unsigned int t46;
  char *t47;
  unsigned char t48;
  int t49;
  unsigned int t50;
  unsigned int t51;
  unsigned int t52;
  char *t53;
  unsigned char t54;
  char *t55;
  unsigned int t57;
  unsigned int t58;
LAB0:
  t7 = (t4 + 12U);
  t8 = *((unsigned int *)t7);
  t8 = (t8 * 1U);
  t10 = (t4 + 0U);
  t11 = *((int *)t10);
  t12 = (t4 + 4U);
  t13 = *((int *)t12);
  t14 = (t4 + 8U);
  t15 = *((int *)t14);
  t16 = (t9 + 0U);
  t17 = (t16 + 0U);
  *((int *)t17) = t11;
  t17 = (t16 + 4U);
  *((int *)t17) = t13;
  t17 = (t16 + 8U);
  *((int *)t17) = t15;
  t18 = (t13 - t11);
  t19 = (t18 * t15);
  t19 = (t19 + 1);
  t17 = (t16 + 12U);
  *((unsigned int *)t17) = t19;
  t17 = (t5 + 4U);
  t20 = (t1 + 2704);
  t21 = (t17 + 88U);
  *((char **)t21) = t20;
  t22 = (char *)alloca(t8);
  t23 = (t17 + 56U);
  *((char **)t23) = t22;
  xsi_type_set_default_value(t20, t22, t9);
  t24 = (t17 + 64U);
  *((char **)t24) = t9;
  t25 = (t17 + 80U);
  *((unsigned int *)t25) = t8;
  t26 = (t6 + 4U);
  t27 = (t3 != 0);
  if (t27 == 1)
    goto LAB3;
LAB2:
  t28 = (t6 + 12U);
  *((char **)t28) = t4;
  t29 = (t4 + 8U);
  t30 = *((int *)t29);
  t31 = (t4 + 4U);
  t32 = *((int *)t31);
  t33 = (t4 + 0U);
  t34 = *((int *)t33);
  t35 = t34;
  t36 = t32;
LAB4:
  t37 = (t36 * t30);
  t38 = (t35 * t30);
  if (t38 <= t37)
    goto LAB5;
LAB7:
  t7 = (t17 + 56U);
  t10 = *((char **)t7);
  t7 = (t9 + 12U);
  t8 = *((unsigned int *)t7);
  t8 = (t8 * 1U);
  t0 = xsi_get_transient_memory(t8);
  memcpy(t0, t10, t8);
  t12 = (t9 + 0U);
  t11 = *((int *)t12);
  t14 = (t9 + 4U);
  t13 = *((int *)t14);
  t16 = (t9 + 8U);
  t15 = *((int *)t16);
  t20 = (t2 + 0U);
  t21 = (t20 + 0U);
  *((int *)t21) = t11;
  t21 = (t20 + 4U);
  *((int *)t21) = t13;
  t21 = (t20 + 8U);
  *((int *)t21) = t15;
  t18 = (t13 - t11);
  t19 = (t18 * t15);
  t19 = (t19 + 1);
  t21 = (t20 + 12U);
  *((unsigned int *)t21) = t19;
LAB1:
  return t0;
LAB3:
  *((char **)t26) = t3;
  goto LAB2;
LAB5:
  t39 = (t1 + 1288U);
  t40 = *((char **)t39);
  t39 = (t4 + 0U);
  t41 = *((int *)t39);
  t42 = (t4 + 8U);
  t43 = *((int *)t42);
  t44 = (t35 - t41);
  t19 = (t44 * t43);
  t45 = (1U * t19);
  t46 = (0 + t45);
  t47 = (t3 + t46);
  t48 = *((unsigned char *)t47);
  t49 = (t48 - 0);
  t50 = (t49 * 1);
  xsi_vhdl_check_range_of_index(0, 8, 1, t48);
  t51 = (1U * t50);
  t52 = (0 + t51);
  t53 = (t40 + t52);
  t54 = *((unsigned char *)t53);
  if (t54 != 0)
    goto LAB8;
LAB10:
LAB9:
  t7 = (t1 + 1168U);
  t10 = *((char **)t7);
  t7 = (t4 + 0U);
  t11 = *((int *)t7);
  t12 = (t4 + 8U);
  t13 = *((int *)t12);
  t15 = (t35 - t11);
  t8 = (t15 * t13);
  t19 = (1U * t8);
  t45 = (0 + t19);
  t14 = (t3 + t45);
  t27 = *((unsigned char *)t14);
  t18 = (t27 - 0);
  t46 = (t18 * 1);
  xsi_vhdl_check_range_of_index(0, 8, 1, t27);
  t50 = (1U * t46);
  t51 = (0 + t50);
  t16 = (t10 + t51);
  t48 = *((unsigned char *)t16);
  t20 = (t17 + 56U);
  t21 = *((char **)t20);
  t20 = (t9 + 0U);
  t32 = *((int *)t20);
  t23 = (t9 + 8U);
  t34 = *((int *)t23);
  t37 = (t35 - t32);
  t52 = (t37 * t34);
  t24 = (t9 + 4U);
  t38 = *((int *)t24);
  xsi_vhdl_check_range_of_index(t32, t38, t34, t35);
  t57 = (1U * t52);
  t58 = (0 + t57);
  t25 = (t21 + t58);
  *((unsigned char *)t25) = t48;
LAB6:
  if (t35 == t36)
    goto LAB7;
LAB14:
  t11 = (t35 + t30);
  t35 = t11;
  goto LAB4;
LAB8:
  if ((unsigned char)0 == 0)
    goto LAB11;
LAB12:
  t7 = (t9 + 12U);
  t8 = *((unsigned int *)t7);
  t8 = (t8 * 1U);
  t10 = xsi_get_transient_memory(t8);
  memset(t10, 0, t8);
  t12 = t10;
  memset(t12, (unsigned char)1, t8);
  t14 = (t17 + 56U);
  t16 = *((char **)t14);
  t14 = (t16 + 0);
  t20 = (t9 + 12U);
  t19 = *((unsigned int *)t20);
  t19 = (t19 * 1U);
  memcpy(t14, t10, t19);
  t7 = (t17 + 56U);
  t10 = *((char **)t7);
  t7 = (t9 + 12U);
  t8 = *((unsigned int *)t7);
  t8 = (t8 * 1U);
  t0 = xsi_get_transient_memory(t8);
  memcpy(t0, t10, t8);
  t12 = (t9 + 0U);
  t11 = *((int *)t12);
  t14 = (t9 + 4U);
  t13 = *((int *)t14);
  t16 = (t9 + 8U);
  t15 = *((int *)t16);
  t20 = (t2 + 0U);
  t21 = (t20 + 0U);
  *((int *)t21) = t11;
  t21 = (t20 + 4U);
  *((int *)t21) = t13;
  t21 = (t20 + 8U);
  *((int *)t21) = t15;
  t18 = (t13 - t11);
  t19 = (t18 * t15);
  t19 = (t19 + 1);
  t21 = (t20 + 12U);
  *((unsigned int *)t21) = t19;
  goto LAB1;
LAB11:
  t55 = (t1 + 5070);
  xsi_report(t55, 85U, (unsigned char)1);
  goto LAB12;
LAB13:
  goto LAB9;
LAB15:;
}


x86 assembly (clang, -O0):
push   %rbp
mov    %rsp,%rbp
sub    $0x240,%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,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xf4(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x104(%rbp)
mov    -0x28(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x110(%rbp)
mov    -0x110(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x114(%rbp)
mov    -0x28(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x120(%rbp)
mov    -0x120(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x124(%rbp)
lea    -0xe0(%rbp),%rax
mov    %rax,-0x130(%rbp)
mov    -0x130(%rbp),%rax
mov    %rax,-0x138(%rbp)
mov    -0x104(%rbp),%ecx
mov    -0x138(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x130(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x138(%rbp)
mov    -0x114(%rbp),%ecx
mov    -0x138(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x130(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x138(%rbp)
mov    -0x124(%rbp),%ecx
mov    -0x138(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x114(%rbp),%eax
mov    -0x104(%rbp),%ecx
sub    %ecx,%eax
mov    %eax,-0x13c(%rbp)
mov    -0x13c(%rbp),%eax
mov    -0x124(%rbp),%ecx
imul   %ecx,%eax
mov    %eax,-0x140(%rbp)
mov    -0x140(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x140(%rbp)
mov    -0x130(%rbp),%rax
add    $0xc,%rax
mov    %rax,-0x138(%rbp)
mov    -0x140(%rbp),%ecx
mov    -0x138(%rbp),%rax
mov    %ecx,(%rax)
lea    -0xac(%rbp),%rax
mov    %rax,-0x138(%rbp)
mov    -0x10(%rbp),%rax
add    $0xa90,%rax
mov    %rax,-0x148(%rbp)
mov    -0x138(%rbp),%rax
add    $0x58,%rax
mov    %rax,-0x150(%rbp)
mov    -0x148(%rbp),%rcx
mov    -0x150(%rbp),%rax
mov    %rcx,(%rax)
mov    -0xf4(%rbp),%eax
mov    %eax,%ecx
add    $0xf,%rcx
and    $0xfffffffffffffff0,%rcx
mov    %rsp,%rax
sub    %rcx,%rax
mov    %rax,%rsp
mov    %rax,-0x158(%rbp)
mov    -0x138(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0x160(%rbp)
mov    -0x158(%rbp),%rcx
mov    -0x160(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x148(%rbp),%rdi
mov    -0x158(%rbp),%rsi
lea    -0xe0(%rbp),%rdx
mov    $0x0,%al
call   1050 <xsi_type_set_default_value@plt>
mov    -0x138(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0x168(%rbp)
lea    -0xe0(%rbp),%rcx
mov    -0x168(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x138(%rbp),%rax
add    $0x50,%rax
mov    %rax,-0x170(%rbp)
mov    -0xf4(%rbp),%ecx
mov    -0x170(%rbp),%rax
mov    %ecx,(%rax)
lea    -0xd0(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x178(%rbp)
cmpq   $0x0,-0x20(%rbp)
setne  %al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x179(%rbp)
movzbl -0x179(%rbp),%eax
cmp    $0x1,%eax
jne    13d4 <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x274>
jmp    165b <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x4fb>
jmp    13d9 <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x279>
lea    -0xd0(%rbp),%rax
add    $0xc,%rax
mov    %rax,-0x188(%rbp)
mov    -0x28(%rbp),%rcx
mov    -0x188(%rbp),%rax
mov    %rcx,(%rax)
mov    -0x28(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x190(%rbp)
mov    -0x190(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x194(%rbp)
mov    -0x28(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x1a0(%rbp)
mov    -0x1a0(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x1a4(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x1b0(%rbp)
mov    -0x1b0(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x1b4(%rbp)
mov    -0x1b4(%rbp),%eax
mov    %eax,-0x1b8(%rbp)
mov    -0x1a4(%rbp),%eax
mov    %eax,-0x1bc(%rbp)
mov    -0x1bc(%rbp),%eax
imul   -0x194(%rbp),%eax
mov    %eax,-0x1c0(%rbp)
mov    -0x1b8(%rbp),%eax
imul   -0x194(%rbp),%eax
mov    %eax,-0x1c4(%rbp)
mov    -0x1c4(%rbp),%eax
cmp    -0x1c0(%rbp),%eax
jg     14a4 <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x344>
jmp    166e <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x50e>
jmp    14a9 <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x349>
mov    -0x138(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x100(%rbp)
lea    -0xe0(%rbp),%rax
add    $0xc,%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%edi
mov    $0x0,%al
call   1080 <xsi_get_transient_memory@plt>
cltq
mov    %rax,-0xe8(%rbp)
mov    -0xe8(%rbp),%rdi
mov    -0x100(%rbp),%rsi
mov    -0xf4(%rbp),%eax
mov    %eax,%edx
call   1060 <memcpy@plt>
lea    -0xe0(%rbp),%rax
mov    %rax,-0x110(%rbp)
mov    -0x110(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x104(%rbp)
lea    -0xe0(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x120(%rbp)
mov    -0x120(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x114(%rbp)
lea    -0xe0(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x130(%rbp)
mov    -0x130(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x124(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x148(%rbp)
mov    -0x148(%rbp),%rax
mov    %rax,-0x150(%rbp)
mov    -0x104(%rbp),%ecx
mov    -0x150(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x148(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x150(%rbp)
mov    -0x114(%rbp),%ecx
mov    -0x150(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x148(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x150(%rbp)
mov    -0x124(%rbp),%ecx
mov    -0x150(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x114(%rbp),%eax
sub    -0x104(%rbp),%eax
mov    %eax,-0x13c(%rbp)
mov    -0x13c(%rbp),%eax
imul   -0x124(%rbp),%eax
mov    %eax,-0x140(%rbp)
mov    -0x140(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x140(%rbp)
mov    -0x148(%rbp),%rax
add    $0xc,%rax
mov    %rax,-0x150(%rbp)
mov    -0x140(%rbp),%ecx
mov    -0x150(%rbp),%rax
mov    %ecx,(%rax)
mov    -0xe8(%rbp),%rax
mov    %rax,-0x8(%rbp)
jmp    1d29 <ieee_p_3499444699_sub_12492700571167055362_3536714472+0xbc9>
mov    -0x20(%rbp),%rcx
mov    -0x178(%rbp),%rax
mov    %rcx,(%rax)
jmp    13d9 <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x279>
mov    -0x10(%rbp),%rax
add    $0x508,%rax
mov    %rax,-0x1d0(%rbp)
mov    -0x1d0(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x1d8(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x1d0(%rbp)
mov    -0x1d0(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x1dc(%rbp)
mov    -0x28(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x1e8(%rbp)
mov    -0x1e8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x1ec(%rbp)
mov    -0x1b8(%rbp),%eax
sub    -0x1dc(%rbp),%eax
mov    %eax,-0x1f0(%rbp)
mov    -0x1f0(%rbp),%eax
imul   -0x1ec(%rbp),%eax
mov    %eax,-0x140(%rbp)
mov    -0x140(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x1f4(%rbp)
mov    -0x1f4(%rbp),%eax
add    $0x0,%eax
mov    %eax,-0x1f8(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x1f8(%rbp),%ecx
add    %rcx,%rax
mov    %rax,-0x200(%rbp)
mov    -0x200(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x201(%rbp)
movzbl -0x201(%rbp),%eax
sub    $0x0,%eax
mov    %eax,-0x208(%rbp)
mov    -0x208(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x20c(%rbp)
movzbl -0x201(%rbp),%ecx
xor    %edi,%edi
mov    $0x8,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1070 <xsi_vhdl_check_range_of_index@plt>
mov    -0x20c(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x210(%rbp)
mov    -0x210(%rbp),%eax
add    $0x0,%eax
mov    %eax,-0x214(%rbp)
mov    -0x1d8(%rbp),%rax
mov    -0x214(%rbp),%ecx
add    %rcx,%rax
mov    %rax,-0x220(%rbp)
mov    -0x220(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x221(%rbp)
movzbl -0x221(%rbp),%eax
cmp    $0x0,%eax
je     17c0 <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x660>
jmp    1a50 <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x8f0>
jmp    17c5 <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x665>
jmp    17ca <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x66a>
mov    -0x10(%rbp),%rax
add    $0x490,%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x100(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x104(%rbp)
mov    -0x28(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x110(%rbp)
mov    -0x110(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x114(%rbp)
mov    -0x1b8(%rbp),%eax
sub    -0x104(%rbp),%eax
mov    %eax,-0x124(%rbp)
mov    -0x124(%rbp),%eax
imul   -0x114(%rbp),%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x140(%rbp)
mov    -0x140(%rbp),%eax
add    $0x0,%eax
mov    %eax,-0x1f4(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x1f4(%rbp),%ecx
add    %rcx,%rax
mov    %rax,-0x120(%rbp)
mov    -0x120(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x179(%rbp)
movzbl -0x179(%rbp),%eax
sub    $0x0,%eax
mov    %eax,-0x13c(%rbp)
mov    -0x13c(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x1f8(%rbp)
movzbl -0x179(%rbp),%ecx
xor    %edi,%edi
mov    $0x8,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1070 <xsi_vhdl_check_range_of_index@plt>
mov    -0x1f8(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x20c(%rbp)
mov    -0x20c(%rbp),%eax
add    $0x0,%eax
mov    %eax,-0x210(%rbp)
mov    -0x100(%rbp),%rax
mov    -0x210(%rbp),%ecx
add    %rcx,%rax
mov    %rax,-0x130(%rbp)
mov    -0x130(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x201(%rbp)
mov    -0x138(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0x148(%rbp)
mov    -0x148(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x150(%rbp)
lea    -0xe0(%rbp),%rax
mov    %rax,-0x148(%rbp)
mov    -0x148(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x1a4(%rbp)
lea    -0xe0(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x160(%rbp)
mov    -0x160(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x1b4(%rbp)
mov    -0x1b8(%rbp),%eax
sub    -0x1a4(%rbp),%eax
mov    %eax,-0x1c0(%rbp)
mov    -0x1c0(%rbp),%eax
imul   -0x1b4(%rbp),%eax
mov    %eax,-0x214(%rbp)
lea    -0xe0(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x168(%rbp)
mov    -0x168(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x1c4(%rbp)
mov    -0x1a4(%rbp),%edi
mov    -0x1c4(%rbp),%esi
mov    -0x1b4(%rbp),%edx
mov    -0x1b8(%rbp),%ecx
mov    $0x0,%al
call   1070 <xsi_vhdl_check_range_of_index@plt>
mov    -0x214(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x234(%rbp)
mov    -0x234(%rbp),%eax
add    $0x0,%eax
mov    %eax,-0x238(%rbp)
mov    -0x150(%rbp),%rax
mov    -0x238(%rbp),%ecx
add    %rcx,%rax
mov    %rax,-0x170(%rbp)
mov    -0x201(%rbp),%cl
mov    -0x170(%rbp),%rax
mov    %cl,(%rax)
mov    -0x1b8(%rbp),%eax
cmp    -0x1bc(%rbp),%eax
jne    1a28 <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x8c8>
jmp    14a9 <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x349>
jmp    1a2d <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x8cd>
mov    -0x1b8(%rbp),%eax
add    -0x194(%rbp),%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
mov    %eax,-0x1b8(%rbp)
jmp    1467 <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x307>
jmp    1cfb <ieee_p_3499444699_sub_12492700571167055362_3536714472+0xb9b>
lea    -0xe0(%rbp),%rax
add    $0xc,%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%edi
mov    $0x0,%al
call   1080 <xsi_get_transient_memory@plt>
cltq
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rdi
mov    -0xf4(%rbp),%eax
mov    %eax,%edx
xor    %esi,%esi
call   1040 <memset@plt>
mov    -0x100(%rbp),%rax
mov    %rax,-0x110(%rbp)
mov    -0x110(%rbp),%rdi
mov    -0xf4(%rbp),%eax
mov    %eax,%edx
mov    $0x1,%esi
call   1040 <memset@plt>
mov    -0x138(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0x120(%rbp)
mov    -0x120(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x130(%rbp)
mov    -0x130(%rbp),%rax
mov    %rax,-0x120(%rbp)
lea    -0xe0(%rbp),%rax
add    $0xc,%rax
mov    %rax,-0x148(%rbp)
mov    -0x148(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x140(%rbp)
mov    -0x140(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x140(%rbp)
mov    -0x120(%rbp),%rdi
mov    -0x100(%rbp),%rsi
mov    -0x140(%rbp),%eax
mov    %eax,%edx
call   1060 <memcpy@plt>
mov    -0x138(%rbp),%rax
add    $0x38,%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x100(%rbp)
lea    -0xe0(%rbp),%rax
add    $0xc,%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%edi
mov    $0x0,%al
call   1080 <xsi_get_transient_memory@plt>
cltq
mov    %rax,-0xe8(%rbp)
mov    -0xe8(%rbp),%rdi
mov    -0x100(%rbp),%rsi
mov    -0xf4(%rbp),%eax
mov    %eax,%edx
call   1060 <memcpy@plt>
lea    -0xe0(%rbp),%rax
mov    %rax,-0x110(%rbp)
mov    -0x110(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x104(%rbp)
lea    -0xe0(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x120(%rbp)
mov    -0x120(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x114(%rbp)
lea    -0xe0(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x130(%rbp)
mov    -0x130(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x124(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x148(%rbp)
mov    -0x148(%rbp),%rax
mov    %rax,-0x150(%rbp)
mov    -0x104(%rbp),%ecx
mov    -0x150(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x148(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x150(%rbp)
mov    -0x114(%rbp),%ecx
mov    -0x150(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x148(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x150(%rbp)
mov    -0x124(%rbp),%ecx
mov    -0x150(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x114(%rbp),%eax
sub    -0x104(%rbp),%eax
mov    %eax,-0x13c(%rbp)
mov    -0x13c(%rbp),%eax
imul   -0x124(%rbp),%eax
mov    %eax,-0x140(%rbp)
mov    -0x140(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x140(%rbp)
mov    -0x148(%rbp),%rax
add    $0xc,%rax
mov    %rax,-0x150(%rbp)
mov    -0x140(%rbp),%ecx
mov    -0x150(%rbp),%rax
mov    %ecx,(%rax)
jmp    164b <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x4eb>
mov    -0x10(%rbp),%rax
add    $0x13ce,%rax
mov    %rax,-0x230(%rbp)
mov    -0x230(%rbp),%rdi
mov    $0x55,%esi
mov    $0x1,%edx
mov    $0x0,%al
call   1030 <xsi_report@plt>
jmp    1a55 <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x8f5>
mov    -0x8(%rbp),%rax
mov    %rbp,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x58,%rsp
mov    %rcx,%r15
mov    %rdx,%r13
mov    %rsi,-0x70(%rbp)
mov    0xc(%rcx),%eax
mov    (%rcx),%ecx
mov    0x4(%r15),%edx
mov    0x8(%r15),%esi
mov    %ecx,-0x40(%rbp)
mov    %edx,-0x3c(%rbp)
mov    %esi,-0x38(%rbp)
sub    %ecx,%edx
imul   %esi,%edx
add    $0x1,%edx
mov    %edx,-0x34(%rbp)
mov    %rdi,-0x50(%rbp)
add    $0xa90,%rdi
mov    %rsp,%rsi
add    $0xf,%rax
and    $0xfffffffffffffff0,%rax
sub    %rax,%rsi
mov    %rsi,%rsp
lea    -0x40(%rbp),%rdx
mov    %rsi,-0x58(%rbp)
xor    %eax,%eax
call   1050 <xsi_type_set_default_value@plt>
mov    0x8(%r15),%ecx
mov    (%r15),%r14d
mov    0x4(%r15),%eax
mov    %eax,-0x64(%rbp)
mov    %eax,%edx
imul   %ecx,%edx
mov    %r14d,%eax
mov    %rcx,-0x78(%rbp)
imul   %ecx,%eax
mov    %edx,-0x60(%rbp)
cmp    %edx,%eax
jle    1206 <ieee_p_3499444699_sub_12492700571167055362_3536714472+0xa6>
mov    -0x34(%rbp),%ebx
mov    %ebx,%edi
xor    %eax,%eax
call   1080 <xsi_get_transient_memory@plt>
movslq %eax,%r14
mov    %r14,%rdi
mov    -0x58(%rbp),%rsi
jmp    1384 <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x224>
mov    -0x50(%rbp),%rax
mov    0x508(%rax),%r12
movzbl 0x0(%r13),%ebx
xor    %edi,%edi
mov    $0x8,%esi
mov    $0x1,%edx
mov    %ebx,%ecx
xor    %eax,%eax
call   1070 <xsi_vhdl_check_range_of_index@plt>
cmpb   $0x0,(%r12,%rbx,1)
jne    1322 <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x1c2>
mov    -0x78(%rbp),%rax
lea    (%r14,%rax,1),%r12d
imul   %eax,%r12d
imul   %eax,%eax
mov    %eax,-0x5c(%rbp)
nopl   0x0(%rax,%rax,1)
mov    %r14d,%eax
sub    (%r15),%eax
mov    -0x50(%rbp),%rcx
mov    0x490(%rcx),%rcx
mov    %rcx,-0x48(%rbp)
imul   0x8(%r15),%eax
movzbl 0x0(%r13,%rax,1),%ebx
xor    %edi,%edi
mov    $0x8,%esi
mov    $0x1,%edx
mov    %ebx,%ecx
xor    %eax,%eax
call   1070 <xsi_vhdl_check_range_of_index@plt>
mov    -0x48(%rbp),%rax
movzbl (%rax,%rbx,1),%eax
mov    %al,-0x48(%rbp)
mov    -0x38(%rbp),%edx
mov    -0x40(%rbp),%edi
mov    -0x3c(%rbp),%esi
mov    %r14d,%ebx
sub    %edi,%ebx
imul   %edx,%ebx
mov    %r14d,%ecx
xor    %eax,%eax
call   1070 <xsi_vhdl_check_range_of_index@plt>
mov    -0x58(%rbp),%rax
movzbl -0x48(%rbp),%ecx
mov    %cl,(%rax,%rbx,1)
cmp    %r14d,-0x64(%rbp)
je     11eb <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x8b>
cmp    -0x60(%rbp),%r12d
jg     11eb <ieee_p_3499444699_sub_12492700571167055362_3536714472+0x8b>
mov    -0x78(%rbp),%rax
lea    (%r14,%rax,1),%ecx
mov    %ecx,-0x48(%rbp)
add    %eax,%r14d
sub    (%r15),%r14d
mov    -0x50(%rbp),%rax
mov    0x508(%rax),%rax
mov    %rax,-0x80(%rbp)
imul   0x8(%r15),%r14d
movzbl 0x0(%r13,%r14,1),%ebx
xor    %edi,%edi
mov    $0x8,%esi
mov    $0x1,%edx
mov    %ebx,%ecx
xor    %eax,%eax
call   1070 <xsi_vhdl_check_range_of_index@plt>
add    -0x5c(%rbp),%r12d
mov    -0x80(%rbp),%rax
cmpb   $0x0,(%rax,%rbx,1)
mov    -0x48(%rbp),%eax
mov    %eax,%r14d
je     1250 <ieee_p_3499444699_sub_12492700571167055362_3536714472+0xf0>
mov    -0x50(%rbp),%rdi
add    $0x13ce,%rdi
mov    $0x55,%esi
mov    $0x1,%edx
xor    %eax,%eax
call   1030 <xsi_report@plt>
mov    -0x34(%rbp),%ebx
mov    %ebx,%edi
xor    %eax,%eax
call   1080 <xsi_get_transient_memory@plt>
movslq %eax,%r14
mov    %r14,%rdi
mov    $0x1,%esi
mov    %rbx,%rdx
call   1040 <memset@plt>
mov    -0x34(%rbp),%ebx
mov    -0x58(%rbp),%r15
mov    %r15,%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
call   1060 <memcpy@plt>
mov    %ebx,%edi
xor    %eax,%eax
call   1080 <xsi_get_transient_memory@plt>
movslq %eax,%r14
mov    %r14,%rdi
mov    %r15,%rsi
mov    %rbx,%rdx
call   1060 <memcpy@plt>
mov    -0x40(%rbp),%ecx
mov    -0x3c(%rbp),%eax
mov    -0x38(%rbp),%edx
mov    -0x70(%rbp),%rsi
mov    %ecx,(%rsi)
mov    %eax,0x4(%rsi)
mov    %edx,0x8(%rsi)
sub    %ecx,%eax
imul   %edx,%eax
add    $0x1,%eax
mov    %eax,0xc(%rsi)
mov    %r14,%rax
lea    -0x28(%rbp),%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i8* @ieee_p_3499444699_sub_12492700571167055362_3536714472(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 i8*
%14 = alloca i8*
%15 = alloca i32
%16 = alloca i8*
%17 = alloca i32
%18 = alloca i8*
%19 = alloca i32
%20 = alloca i8*
%21 = alloca i32
%22 = alloca i8*
%23 = alloca i8*
%24 = alloca i32
%25 = alloca i32
%26 = alloca i8*
%27 = alloca i8*
%28 = alloca i8*
%29 = alloca i8*
%30 = alloca i8*
%31 = alloca i8*
%32 = alloca i8*
%33 = alloca i8
%34 = alloca i8*
%35 = alloca i8*
%36 = alloca i32
%37 = alloca i8*
%38 = alloca i32
%39 = alloca i8*
%40 = alloca i32
%41 = alloca i32
%42 = alloca i32
%43 = alloca i32
%44 = alloca i32
%45 = alloca i8*
%46 = alloca i8*
%47 = alloca i32
%48 = alloca i8*
%49 = alloca i32
%50 = alloca i32
%51 = alloca i32
%52 = alloca i32
%53 = alloca i8*
%54 = alloca i8
%55 = alloca i32
%56 = alloca i32
%57 = alloca i32
%58 = alloca i32
%59 = alloca i8*
%60 = alloca i8
%61 = alloca i8*
%62 = alloca i32
%63 = alloca i32
store i8* %0, i8** %6
store i8* %1, i8** %7
store i8* %2, i8** %8
store i8* %3, i8** %9
br label %64
64: ; preds = %4
%65 = load i8*, i8** %9
%66 = getelementptr inbounds i8, i8* %65, i64 12
store i8* %66, i8** %14
%67 = load i8*, i8** %14
%68 = bitcast i8* %67 to i32*
%69 = load i32, i32* %68
store i32 %69, i32* %15
%70 = load i32, i32* %15
%71 = mul i32 %70, 1
store i32 %71, i32* %15
%72 = load i8*, i8** %9
%73 = getelementptr inbounds i8, i8* %72, i64 0
store i8* %73, i8** %16
%74 = load i8*, i8** %16
%75 = bitcast i8* %74 to i32*
%76 = load i32, i32* %75
store i32 %76, i32* %17
%77 = load i8*, i8** %9
%78 = getelementptr inbounds i8, i8* %77, i64 4
store i8* %78, i8** %18
%79 = load i8*, i8** %18
%80 = bitcast i8* %79 to i32*
%81 = load i32, i32* %80
store i32 %81, i32* %19
%82 = load i8*, i8** %9
%83 = getelementptr inbounds i8, i8* %82, i64 8
store i8* %83, i8** %20
%84 = load i8*, i8** %20
%85 = bitcast i8* %84 to i32*
%86 = load i32, i32* %85
store i32 %86, i32* %21
%87 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%88 = getelementptr inbounds i8, i8* %87, i64 0
store i8* %88, i8** %22
%89 = load i8*, i8** %22
%90 = getelementptr inbounds i8, i8* %89, i64 0
store i8* %90, i8** %23
%91 = load i32, i32* %17
%92 = load i8*, i8** %23
%93 = bitcast i8* %92 to i32*
store i32 %91, i32* %93
%94 = load i8*, i8** %22
%95 = getelementptr inbounds i8, i8* %94, i64 4
store i8* %95, i8** %23
%96 = load i32, i32* %19
%97 = load i8*, i8** %23
%98 = bitcast i8* %97 to i32*
store i32 %96, i32* %98
%99 = load i8*, i8** %22
%100 = getelementptr inbounds i8, i8* %99, i64 8
store i8* %100, i8** %23
%101 = load i32, i32* %21
%102 = load i8*, i8** %23
%103 = bitcast i8* %102 to i32*
store i32 %101, i32* %103
%104 = load i32, i32* %19
%105 = load i32, i32* %17
%106 = sub nsw i32 %104, %105
store i32 %106, i32* %24
%107 = load i32, i32* %24
%108 = load i32, i32* %21
%109 = mul nsw i32 %107, %108
store i32 %109, i32* %25
%110 = load i32, i32* %25
%111 = add i32 %110, 1
store i32 %111, i32* %25
%112 = load i8*, i8** %22
%113 = getelementptr inbounds i8, i8* %112, i64 12
store i8* %113, i8** %23
%114 = load i32, i32* %25
%115 = load i8*, i8** %23
%116 = bitcast i8* %115 to i32*
store i32 %114, i32* %116
%117 = getelementptr inbounds [128 x i8], [128 x i8]* %10, i64 0, i64 0
%118 = getelementptr inbounds i8, i8* %117, i64 4
store i8* %118, i8** %23
%119 = load i8*, i8** %6
%120 = getelementptr inbounds i8, i8* %119, i64 2704
store i8* %120, i8** %26
%121 = load i8*, i8** %23
%122 = getelementptr inbounds i8, i8* %121, i64 88
store i8* %122, i8** %27
%123 = load i8*, i8** %26
%124 = load i8*, i8** %27
%125 = bitcast i8* %124 to i8**
store i8* %123, i8** %125
%126 = load i32, i32* %15
%127 = zext i32 %126 to i64
%128 = alloca i8, i64 %127
store i8* %128, i8** %28
%129 = load i8*, i8** %23
%130 = getelementptr inbounds i8, i8* %129, i64 56
store i8* %130, i8** %29
%131 = load i8*, i8** %28
%132 = load i8*, i8** %29
%133 = bitcast i8* %132 to i8**
store i8* %131, i8** %133
%134 = load i8*, i8** %26
%135 = load i8*, i8** %28
%136 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%137 = call i32 (i8*, i8*, i8*, ...) bitcast (i32 (...)* @xsi_type_set_default_value to i32 (i8*, i8*, i8*, ...)*)(i8* %134, i8* %135, i8* %136)
%138 = load i8*, i8** %23
%139 = getelementptr inbounds i8, i8* %138, i64 64
store i8* %139, i8** %30
%140 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%141 = load i8*, i8** %30
%142 = bitcast i8* %141 to i8**
store i8* %140, i8** %142
%143 = load i8*, i8** %23
%144 = getelementptr inbounds i8, i8* %143, i64 80
store i8* %144, i8** %31
%145 = load i32, i32* %15
%146 = load i8*, i8** %31
%147 = bitcast i8* %146 to i32*
store i32 %145, i32* %147
%148 = getelementptr inbounds [24 x i8], [24 x i8]* %11, i64 0, i64 0
%149 = getelementptr inbounds i8, i8* %148, i64 4
store i8* %149, i8** %32
%150 = load i8*, i8** %8
%151 = icmp ne i8* %150, null
%152 = zext i1 %151 to i32
%153 = trunc i32 %152 to i8
store i8 %153, i8* %33
%154 = load i8, i8* %33
%155 = zext i8 %154 to i32
%156 = icmp eq i32 %155, 1
br i1 %156, label %157, label %158
157: ; preds = %64
br label %262
158: ; preds = %64
br label %159
159: ; preds = %262, %158
%160 = getelementptr inbounds [24 x i8], [24 x i8]* %11, i64 0, i64 0
%161 = getelementptr inbounds i8, i8* %160, i64 12
store i8* %161, i8** %34
%162 = load i8*, i8** %9
%163 = load i8*, i8** %34
%164 = bitcast i8* %163 to i8**
store i8* %162, i8** %164
%165 = load i8*, i8** %9
%166 = getelementptr inbounds i8, i8* %165, i64 8
store i8* %166, i8** %35
%167 = load i8*, i8** %35
%168 = bitcast i8* %167 to i32*
%169 = load i32, i32* %168
store i32 %169, i32* %36
%170 = load i8*, i8** %9
%171 = getelementptr inbounds i8, i8* %170, i64 4
store i8* %171, i8** %37
%172 = load i8*, i8** %37
%173 = bitcast i8* %172 to i32*
%174 = load i32, i32* %173
store i32 %174, i32* %38
%175 = load i8*, i8** %9
%176 = getelementptr inbounds i8, i8* %175, i64 0
store i8* %176, i8** %39
%177 = load i8*, i8** %39
%178 = bitcast i8* %177 to i32*
%179 = load i32, i32* %178
store i32 %179, i32* %40
%180 = load i32, i32* %40
store i32 %180, i32* %41
%181 = load i32, i32* %38
store i32 %181, i32* %42
br label %182
182: ; preds = %419, %159
%183 = load i32, i32* %42
%184 = load i32, i32* %36
%185 = mul nsw i32 %183, %184
store i32 %185, i32* %43
%186 = load i32, i32* %41
%187 = load i32, i32* %36
%188 = mul nsw i32 %186, %187
store i32 %188, i32* %44
%189 = load i32, i32* %44
%190 = load i32, i32* %43
%191 = icmp sle i32 %189, %190
br i1 %191, label %192, label %193
192: ; preds = %182
br label %266
193: ; preds = %182
br label %194
194: ; preds = %417, %193
%195 = load i8*, i8** %23
%196 = getelementptr inbounds i8, i8* %195, i64 56
store i8* %196, i8** %14
%197 = load i8*, i8** %14
%198 = bitcast i8* %197 to i8**
%199 = load i8*, i8** %198
store i8* %199, i8** %16
%200 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%201 = getelementptr inbounds i8, i8* %200, i64 12
store i8* %201, i8** %14
%202 = load i8*, i8** %14
%203 = bitcast i8* %202 to i32*
%204 = load i32, i32* %203
store i32 %204, i32* %15
%205 = load i32, i32* %15
%206 = mul i32 %205, 1
store i32 %206, i32* %15
%207 = load i32, i32* %15
%208 = call i32 (i32, ...) bitcast (i32 (...)* @xsi_get_transient_memory to i32 (i32, ...)*)(i32 %207)
%209 = sext i32 %208 to i64
%210 = inttoptr i64 %209 to i8*
store i8* %210, i8** %13
%211 = load i8*, i8** %13
%212 = load i8*, i8** %16
%213 = load i32, i32* %15
%214 = zext i32 %213 to i64
%215 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%216 = getelementptr inbounds i8, i8* %215, i64 0
store i8* %216, i8** %18
%217 = load i8*, i8** %18
%218 = bitcast i8* %217 to i32*
%219 = load i32, i32* %218
store i32 %219, i32* %17
%220 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%221 = getelementptr inbounds i8, i8* %220, i64 4
store i8* %221, i8** %20
%222 = load i8*, i8** %20
%223 = bitcast i8* %222 to i32*
%224 = load i32, i32* %223
store i32 %224, i32* %19
%225 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%226 = getelementptr inbounds i8, i8* %225, i64 8
store i8* %226, i8** %22
%227 = load i8*, i8** %22
%228 = bitcast i8* %227 to i32*
%229 = load i32, i32* %228
store i32 %229, i32* %21
%230 = load i8*, i8** %7
%231 = getelementptr inbounds i8, i8* %230, i64 0
store i8* %231, i8** %26
%232 = load i8*, i8** %26
%233 = getelementptr inbounds i8, i8* %232, i64 0
store i8* %233, i8** %27
%234 = load i32, i32* %17
%235 = load i8*, i8** %27
%236 = bitcast i8* %235 to i32*
store i32 %234, i32* %236
%237 = load i8*, i8** %26
%238 = getelementptr inbounds i8, i8* %237, i64 4
store i8* %238, i8** %27
%239 = load i32, i32* %19
%240 = load i8*, i8** %27
%241 = bitcast i8* %240 to i32*
store i32 %239, i32* %241
%242 = load i8*, i8** %26
%243 = getelementptr inbounds i8, i8* %242, i64 8
store i8* %243, i8** %27
%244 = load i32, i32* %21
%245 = load i8*, i8** %27
%246 = bitcast i8* %245 to i32*
store i32 %244, i32* %246
%247 = load i32, i32* %19
%248 = load i32, i32* %17
%249 = sub nsw i32 %247, %248
store i32 %249, i32* %24
%250 = load i32, i32* %24
%251 = load i32, i32* %21
%252 = mul nsw i32 %250, %251
store i32 %252, i32* %25
%253 = load i32, i32* %25
%254 = add i32 %253, 1
store i32 %254, i32* %25
%255 = load i8*, i8** %26
%256 = getelementptr inbounds i8, i8* %255, i64 12
store i8* %256, i8** %27
%257 = load i32, i32* %25
%258 = load i8*, i8** %27
%259 = bitcast i8* %258 to i32*
store i32 %257, i32* %259
br label %260
260: ; preds = %425, %194
%261 = load i8*, i8** %13
store i8* %261, i8** %5
br label %534
262: ; preds = %157
%263 = load i8*, i8** %8
%264 = load i8*, i8** %32
%265 = bitcast i8* %264 to i8**
store i8* %263, i8** %265
br label %159
266: ; preds = %192
%267 = load i8*, i8** %6
%268 = getelementptr inbounds i8, i8* %267, i64 1288
store i8* %268, i8** %45
%269 = load i8*, i8** %45
%270 = bitcast i8* %269 to i8**
%271 = load i8*, i8** %270
store i8* %271, i8** %46
%272 = load i8*, i8** %9
%273 = getelementptr inbounds i8, i8* %272, i64 0
store i8* %273, i8** %45
%274 = load i8*, i8** %45
%275 = bitcast i8* %274 to i32*
%276 = load i32, i32* %275
store i32 %276, i32* %47
%277 = load i8*, i8** %9
%278 = getelementptr inbounds i8, i8* %277, i64 8
store i8* %278, i8** %48
%279 = load i8*, i8** %48
%280 = bitcast i8* %279 to i32*
%281 = load i32, i32* %280
store i32 %281, i32* %49
%282 = load i32, i32* %41
%283 = load i32, i32* %47
%284 = sub nsw i32 %282, %283
store i32 %284, i32* %50
%285 = load i32, i32* %50
%286 = load i32, i32* %49
%287 = mul nsw i32 %285, %286
store i32 %287, i32* %25
%288 = load i32, i32* %25
%289 = mul i32 1, %288
store i32 %289, i32* %51
%290 = load i32, i32* %51
%291 = add i32 0, %290
store i32 %291, i32* %52
%292 = load i8*, i8** %8
%293 = load i32, i32* %52
%294 = zext i32 %293 to i64
%295 = getelementptr inbounds i8, i8* %292, i64 %294
store i8* %295, i8** %53
%296 = load i8*, i8** %53
%297 = load i8, i8* %296
store i8 %297, i8* %54
%298 = load i8, i8* %54
%299 = zext i8 %298 to i32
%300 = sub nsw i32 %299, 0
store i32 %300, i32* %55
%301 = load i32, i32* %55
%302 = mul nsw i32 %301, 1
store i32 %302, i32* %56
%303 = load i8, i8* %54
%304 = zext i8 %303 to i32
%305 = call i32 (i32, i32, i32, i32, ...) bitcast (i32 (...)* @xsi_vhdl_check_range_of_index to i32 (i32, i32, i32, i32, ...)*)(i32 0, i32 8, i32 1, i32 %304)
%306 = load i32, i32* %56
%307 = mul i32 1, %306
store i32 %307, i32* %57
%308 = load i32, i32* %57
%309 = add i32 0, %308
store i32 %309, i32* %58
%310 = load i8*, i8** %46
%311 = load i32, i32* %58
%312 = zext i32 %311 to i64
%313 = getelementptr inbounds i8, i8* %310, i64 %312
store i8* %313, i8** %59
%314 = load i8*, i8** %59
%315 = load i8, i8* %314
store i8 %315, i8* %60
%316 = load i8, i8* %60
%317 = zext i8 %316 to i32
%318 = icmp ne i32 %317, 0
br i1 %318, label %319, label %320
319: ; preds = %266
br label %424
320: ; preds = %266
br label %321
321: ; preds = %320
br label %322
322: ; preds = %532, %321
%323 = load i8*, i8** %6
%324 = getelementptr inbounds i8, i8* %323, i64 1168
store i8* %324, i8** %14
%325 = load i8*, i8** %14
%326 = bitcast i8* %325 to i8**
%327 = load i8*, i8** %326
store i8* %327, i8** %16
%328 = load i8*, i8** %9
%329 = getelementptr inbounds i8, i8* %328, i64 0
store i8* %329, i8** %14
%330 = load i8*, i8** %14
%331 = bitcast i8* %330 to i32*
%332 = load i32, i32* %331
store i32 %332, i32* %17
%333 = load i8*, i8** %9
%334 = getelementptr inbounds i8, i8* %333, i64 8
store i8* %334, i8** %18
%335 = load i8*, i8** %18
%336 = bitcast i8* %335 to i32*
%337 = load i32, i32* %336
store i32 %337, i32* %19
%338 = load i32, i32* %41
%339 = load i32, i32* %17
%340 = sub nsw i32 %338, %339
store i32 %340, i32* %21
%341 = load i32, i32* %21
%342 = load i32, i32* %19
%343 = mul nsw i32 %341, %342
store i32 %343, i32* %15
%344 = load i32, i32* %15
%345 = mul i32 1, %344
store i32 %345, i32* %25
%346 = load i32, i32* %25
%347 = add i32 0, %346
store i32 %347, i32* %51
%348 = load i8*, i8** %8
%349 = load i32, i32* %51
%350 = zext i32 %349 to i64
%351 = getelementptr inbounds i8, i8* %348, i64 %350
store i8* %351, i8** %20
%352 = load i8*, i8** %20
%353 = load i8, i8* %352
store i8 %353, i8* %33
%354 = load i8, i8* %33
%355 = zext i8 %354 to i32
%356 = sub nsw i32 %355, 0
store i32 %356, i32* %24
%357 = load i32, i32* %24
%358 = mul nsw i32 %357, 1
store i32 %358, i32* %52
%359 = load i8, i8* %33
%360 = zext i8 %359 to i32
%361 = call i32 (i32, i32, i32, i32, ...) bitcast (i32 (...)* @xsi_vhdl_check_range_of_index to i32 (i32, i32, i32, i32, ...)*)(i32 0, i32 8, i32 1, i32 %360)
%362 = load i32, i32* %52
%363 = mul i32 1, %362
store i32 %363, i32* %56
%364 = load i32, i32* %56
%365 = add i32 0, %364
store i32 %365, i32* %57
%366 = load i8*, i8** %16
%367 = load i32, i32* %57
%368 = zext i32 %367 to i64
%369 = getelementptr inbounds i8, i8* %366, i64 %368
store i8* %369, i8** %22
%370 = load i8*, i8** %22
%371 = load i8, i8* %370
store i8 %371, i8* %54
%372 = load i8*, i8** %23
%373 = getelementptr inbounds i8, i8* %372, i64 56
store i8* %373, i8** %26
%374 = load i8*, i8** %26
%375 = bitcast i8* %374 to i8**
%376 = load i8*, i8** %375
store i8* %376, i8** %27
%377 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%378 = getelementptr inbounds i8, i8* %377, i64 0
store i8* %378, i8** %26
%379 = load i8*, i8** %26
%380 = bitcast i8* %379 to i32*
%381 = load i32, i32* %380
store i32 %381, i32* %38
%382 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%383 = getelementptr inbounds i8, i8* %382, i64 8
store i8* %383, i8** %29
%384 = load i8*, i8** %29
%385 = bitcast i8* %384 to i32*
%386 = load i32, i32* %385
store i32 %386, i32* %40
%387 = load i32, i32* %41
%388 = load i32, i32* %38
%389 = sub nsw i32 %387, %388
store i32 %389, i32* %43
%390 = load i32, i32* %43
%391 = load i32, i32* %40
%392 = mul nsw i32 %390, %391
store i32 %392, i32* %58
%393 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%394 = getelementptr inbounds i8, i8* %393, i64 4
store i8* %394, i8** %30
%395 = load i8*, i8** %30
%396 = bitcast i8* %395 to i32*
%397 = load i32, i32* %396
store i32 %397, i32* %44
%398 = load i32, i32* %38
%399 = load i32, i32* %44
%400 = load i32, i32* %40
%401 = load i32, i32* %41
%402 = call i32 (i32, i32, i32, i32, ...) bitcast (i32 (...)* @xsi_vhdl_check_range_of_index to i32 (i32, i32, i32, i32, ...)*)(i32 %398, i32 %399, i32 %400, i32 %401)
%403 = load i32, i32* %58
%404 = mul i32 1, %403
store i32 %404, i32* %62
%405 = load i32, i32* %62
%406 = add i32 0, %405
store i32 %406, i32* %63
%407 = load i8*, i8** %27
%408 = load i32, i32* %63
%409 = zext i32 %408 to i64
%410 = getelementptr inbounds i8, i8* %407, i64 %409
store i8* %410, i8** %31
%411 = load i8, i8* %54
%412 = load i8*, i8** %31
store i8 %411, i8* %412
br label %413
413: ; preds = %322
%414 = load i32, i32* %41
%415 = load i32, i32* %42
%416 = icmp eq i32 %414, %415
br i1 %416, label %417, label %418
417: ; preds = %413
br label %194
418: ; preds = %413
br label %419
419: ; preds = %418
%420 = load i32, i32* %41
%421 = load i32, i32* %36
%422 = add nsw i32 %420, %421
store i32 %422, i32* %17
%423 = load i32, i32* %17
store i32 %423, i32* %41
br label %182
424: ; preds = %319
br label %527
425: ; preds = %527
%426 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%427 = getelementptr inbounds i8, i8* %426, i64 12
store i8* %427, i8** %14
%428 = load i8*, i8** %14
%429 = bitcast i8* %428 to i32*
%430 = load i32, i32* %429
store i32 %430, i32* %15
%431 = load i32, i32* %15
%432 = mul i32 %431, 1
store i32 %432, i32* %15
%433 = load i32, i32* %15
%434 = call i32 (i32, ...) bitcast (i32 (...)* @xsi_get_transient_memory to i32 (i32, ...)*)(i32 %433)
%435 = sext i32 %434 to i64
%436 = inttoptr i64 %435 to i8*
store i8* %436, i8** %16
%437 = load i8*, i8** %16
%438 = load i32, i32* %15
%439 = zext i32 %438 to i64
%440 = load i8*, i8** %16
store i8* %440, i8** %18
%441 = load i8*, i8** %18
%442 = load i32, i32* %15
%443 = zext i32 %442 to i64
%444 = load i8*, i8** %23
%445 = getelementptr inbounds i8, i8* %444, i64 56
store i8* %445, i8** %20
%446 = load i8*, i8** %20
%447 = bitcast i8* %446 to i8**
%448 = load i8*, i8** %447
store i8* %448, i8** %22
%449 = load i8*, i8** %22
%450 = getelementptr inbounds i8, i8* %449, i64 0
store i8* %450, i8** %20
%451 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%452 = getelementptr inbounds i8, i8* %451, i64 12
store i8* %452, i8** %26
%453 = load i8*, i8** %26
%454 = bitcast i8* %453 to i32*
%455 = load i32, i32* %454
store i32 %455, i32* %25
%456 = load i32, i32* %25
%457 = mul i32 %456, 1
store i32 %457, i32* %25
%458 = load i8*, i8** %20
%459 = load i8*, i8** %16
%460 = load i32, i32* %25
%461 = zext i32 %460 to i64
%462 = load i8*, i8** %23
%463 = getelementptr inbounds i8, i8* %462, i64 56
store i8* %463, i8** %14
%464 = load i8*, i8** %14
%465 = bitcast i8* %464 to i8**
%466 = load i8*, i8** %465
store i8* %466, i8** %16
%467 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%468 = getelementptr inbounds i8, i8* %467, i64 12
store i8* %468, i8** %14
%469 = load i8*, i8** %14
%470 = bitcast i8* %469 to i32*
%471 = load i32, i32* %470
store i32 %471, i32* %15
%472 = load i32, i32* %15
%473 = mul i32 %472, 1
store i32 %473, i32* %15
%474 = load i32, i32* %15
%475 = call i32 (i32, ...) bitcast (i32 (...)* @xsi_get_transient_memory to i32 (i32, ...)*)(i32 %474)
%476 = sext i32 %475 to i64
%477 = inttoptr i64 %476 to i8*
store i8* %477, i8** %13
%478 = load i8*, i8** %13
%479 = load i8*, i8** %16
%480 = load i32, i32* %15
%481 = zext i32 %480 to i64
%482 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%483 = getelementptr inbounds i8, i8* %482, i64 0
store i8* %483, i8** %18
%484 = load i8*, i8** %18
%485 = bitcast i8* %484 to i32*
%486 = load i32, i32* %485
store i32 %486, i32* %17
%487 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%488 = getelementptr inbounds i8, i8* %487, i64 4
store i8* %488, i8** %20
%489 = load i8*, i8** %20
%490 = bitcast i8* %489 to i32*
%491 = load i32, i32* %490
store i32 %491, i32* %19
%492 = getelementptr inbounds [16 x i8], [16 x i8]* %12, i64 0, i64 0
%493 = getelementptr inbounds i8, i8* %492, i64 8
store i8* %493, i8** %22
%494 = load i8*, i8** %22
%495 = bitcast i8* %494 to i32*
%496 = load i32, i32* %495
store i32 %496, i32* %21
%497 = load i8*, i8** %7
%498 = getelementptr inbounds i8, i8* %497, i64 0
store i8* %498, i8** %26
%499 = load i8*, i8** %26
%500 = getelementptr inbounds i8, i8* %499, i64 0
store i8* %500, i8** %27
%501 = load i32, i32* %17
%502 = load i8*, i8** %27
%503 = bitcast i8* %502 to i32*
store i32 %501, i32* %503
%504 = load i8*, i8** %26
%505 = getelementptr inbounds i8, i8* %504, i64 4
store i8* %505, i8** %27
%506 = load i32, i32* %19
%507 = load i8*, i8** %27
%508 = bitcast i8* %507 to i32*
store i32 %506, i32* %508
%509 = load i8*, i8** %26
%510 = getelementptr inbounds i8, i8* %509, i64 8
store i8* %510, i8** %27
%511 = load i32, i32* %21
%512 = load i8*, i8** %27
%513 = bitcast i8* %512 to i32*
store i32 %511, i32* %513
%514 = load i32, i32* %19
%515 = load i32, i32* %17
%516 = sub nsw i32 %514, %515
store i32 %516, i32* %24
%517 = load i32, i32* %24
%518 = load i32, i32* %21
%519 = mul nsw i32 %517, %518
store i32 %519, i32* %25
%520 = load i32, i32* %25
%521 = add i32 %520, 1
store i32 %521, i32* %25
%522 = load i8*, i8** %26
%523 = getelementptr inbounds i8, i8* %522, i64 12
store i8* %523, i8** %27
%524 = load i32, i32* %25
%525 = load i8*, i8** %27
%526 = bitcast i8* %525 to i32*
store i32 %524, i32* %526
br label %260
527: ; preds = %424
%528 = load i8*, i8** %6
%529 = getelementptr inbounds i8, i8* %528, i64 5070
store i8* %529, i8** %61
%530 = load i8*, i8** %61
%531 = call i32 (i8*, i32, i32, ...) bitcast (i32 (...)* @xsi_report to i32 (i8*, i32, i32, ...)*)(i8* %530, i32 85, i32 1)
br label %425
532: ; No predecessors!
br label %322
533: ; No predecessors!
br label %534
534: ; preds = %533, %260
%535 = load i8*, i8** %5
ret i8* %535
}

LLVM IR (-O2):
define i8* @ieee_p_3499444699_sub_12492700571167055362_3536714472(i8* %0, i8* nocapture writeonly %1, i8* nocapture %2, i8* nocapture %3) {
%5 = alloca [16 x i8]
%6 = getelementptr inbounds [16 x i8], [16 x i8]* %5, i64 0, i64 0
%7 = getelementptr inbounds i8, i8* %3, i64 12
%8 = bitcast i8* %7 to i32*
%9 = load i32, i32* %8
%10 = bitcast i8* %3 to i32*
%11 = load i32, i32* %10
%12 = getelementptr inbounds i8, i8* %3, i64 4
%13 = bitcast i8* %12 to i32*
%14 = load i32, i32* %13
%15 = getelementptr inbounds i8, i8* %3, i64 8
%16 = bitcast i8* %15 to i32*
%17 = load i32, i32* %16
%18 = bitcast [16 x i8]* %5 to i32*
store i32 %11, i32* %18
%19 = getelementptr inbounds [16 x i8], [16 x i8]* %5, i64 0, i64 4
%20 = bitcast i8* %19 to i32*
store i32 %14, i32* %20
%21 = getelementptr inbounds [16 x i8], [16 x i8]* %5, i64 0, i64 8
%22 = bitcast i8* %21 to i32*
store i32 %17, i32* %22
%23 = sub nsw i32 %14, %11
%24 = mul nsw i32 %23, %17
%25 = add i32 %24, 1
%26 = getelementptr inbounds [16 x i8], [16 x i8]* %5, i64 0, i64 12
%27 = bitcast i8* %26 to i32*
store i32 %25, i32* %27
%28 = getelementptr inbounds i8, i8* %0, i64 2704
%29 = zext i32 %9 to i64
%30 = alloca i8, i64 %29
%31 = call i32 (i8*, i8*, i8*, ...) bitcast (i32 (...)* @xsi_type_set_default_value to i32 (i8*, i8*, i8*, ...)*)(i8* %28, i8* %30, i8* %6)
%32 = load i32, i32* %16
%33 = load i32, i32* %13
%34 = load i32, i32* %10
%35 = mul nsw i32 %33, %32
%36 = mul nsw i32 %34, %32
%37 = icmp sgt i32 %36, %35
br i1 %37, label %66, label %38
38: ; preds = %4
%39 = getelementptr inbounds i8, i8* %0, i64 1288
%40 = bitcast i8* %39 to i8**
%41 = getelementptr inbounds i8, i8* %0, i64 1168
%42 = bitcast i8* %41 to i8**
%43 = load i8*, i8** %40
%44 = load i8, i8* %2
%45 = zext i8 %44 to i32
%46 = call i32 (i32, i32, i32, i32, ...) bitcast (i32 (...)* @xsi_vhdl_check_range_of_index to i32 (i32, i32, i32, i32, ...)*)(i32 0, i32 8, i32 1, i32 %45)
%47 = zext i8 %44 to i64
%48 = getelementptr inbounds i8, i8* %43, i64 %47
%49 = load i8, i8* %48
%50 = icmp eq i8 %49, 0
br i1 %50, label %88, label %116
51: ; preds = %88
%52 = load i32, i32* %10
%53 = load i32, i32* %16
%54 = load i8*, i8** %40
%55 = sub nsw i32 %112, %52
%56 = mul nsw i32 %55, %53
%57 = zext i32 %56 to i64
%58 = getelementptr inbounds i8, i8* %2, i64 %57
%59 = load i8, i8* %58
%60 = zext i8 %59 to i32
%61 = call i32 (i32, i32, i32, i32, ...) bitcast (i32 (...)* @xsi_vhdl_check_range_of_index to i32 (i32, i32, i32, i32, ...)*)(i32 0, i32 8, i32 1, i32 %60)
%62 = zext i8 %59 to i64
%63 = getelementptr inbounds i8, i8* %54, i64 %62
%64 = load i8, i8* %63
%65 = icmp eq i8 %64, 0
br i1 %65, label %88, label %116
66: ; preds = %88, %4
%67 = load i32, i32* %27
%68 = call i32 (i32, ...) bitcast (i32 (...)* @xsi_get_transient_memory to i32 (i32, ...)*)(i32 %67)
%69 = sext i32 %68 to i64
%70 = inttoptr i64 %69 to i8*
%71 = zext i32 %67 to i64
%72 = load i32, i32* %18
%73 = load i32, i32* %20
%74 = load i32, i32* %22
%75 = bitcast i8* %1 to i32*
store i32 %72, i32* %75
%76 = getelementptr inbounds i8, i8* %1, i64 4
%77 = bitcast i8* %76 to i32*
store i32 %73, i32* %77
%78 = getelementptr inbounds i8, i8* %1, i64 8
%79 = bitcast i8* %78 to i32*
store i32 %74, i32* %79
%80 = sub nsw i32 %73, %72
%81 = mul nsw i32 %80, %74
br label %82
82: ; preds = %116, %66
%83 = phi i32 [ %138, %116 ], [ %81, %66 ]
%84 = phi i8* [ %128, %116 ], [ %70, %66 ]
%85 = add i32 %83, 1
%86 = getelementptr inbounds i8, i8* %1, i64 12
%87 = bitcast i8* %86 to i32*
store i32 %85, i32* %87
ret i8* %84
88: ; preds = %38, %51
%89 = phi i32 [ %112, %51 ], [ %34, %38 ]
%90 = load i8*, i8** %42
%91 = load i32, i32* %10
%92 = load i32, i32* %16
%93 = sub nsw i32 %89, %91
%94 = mul nsw i32 %93, %92
%95 = zext i32 %94 to i64
%96 = getelementptr inbounds i8, i8* %2, i64 %95
%97 = load i8, i8* %96
%98 = zext i8 %97 to i32
%99 = call i32 (i32, i32, i32, i32, ...) bitcast (i32 (...)* @xsi_vhdl_check_range_of_index to i32 (i32, i32, i32, i32, ...)*)(i32 0, i32 8, i32 1, i32 %98)
%100 = zext i8 %97 to i64
%101 = getelementptr inbounds i8, i8* %90, i64 %100
%102 = load i8, i8* %101
%103 = load i32, i32* %18
%104 = load i32, i32* %22
%105 = sub nsw i32 %89, %103
%106 = mul nsw i32 %105, %104
%107 = load i32, i32* %20
%108 = call i32 (i32, i32, i32, i32, ...) bitcast (i32 (...)* @xsi_vhdl_check_range_of_index to i32 (i32, i32, i32, i32, ...)*)(i32 %103, i32 %107, i32 %104, i32 %89)
%109 = zext i32 %106 to i64
%110 = getelementptr inbounds i8, i8* %30, i64 %109
store i8 %102, i8* %110
%111 = icmp eq i32 %89, %33
%112 = add nsw i32 %89, %32
%113 = mul nsw i32 %112, %32
%114 = icmp sgt i32 %113, %35
%115 = select i1 %111, i1 true, i1 %114
br i1 %115, label %66, label %51
116: ; preds = %51, %38
%117 = getelementptr inbounds i8, i8* %0, i64 5070
%118 = call i32 (i8*, i32, i32, ...) bitcast (i32 (...)* @xsi_report to i32 (i8*, i32, i32, ...)*)(i8* %117, i32 85, i32 1)
%119 = load i32, i32* %27
%120 = call i32 (i32, ...) bitcast (i32 (...)* @xsi_get_transient_memory to i32 (i32, ...)*)(i32 %119)
%121 = sext i32 %120 to i64
%122 = inttoptr i64 %121 to i8*
%123 = zext i32 %119 to i64
%124 = load i32, i32* %27
%125 = zext i32 %124 to i64
%126 = call i32 (i32, ...) bitcast (i32 (...)* @xsi_get_transient_memory to i32 (i32, ...)*)(i32 %124)
%127 = sext i32 %126 to i64
%128 = inttoptr i64 %127 to i8*
%129 = load i32, i32* %18
%130 = load i32, i32* %20
%131 = load i32, i32* %22
%132 = bitcast i8* %1 to i32*
store i32 %129, i32* %132
%133 = getelementptr inbounds i8, i8* %1, i64 4
%134 = bitcast i8* %133 to i32*
store i32 %130, i32* %134
%135 = getelementptr inbounds i8, i8* %1, i64 8
%136 = bitcast i8* %135 to i32*
store i32 %131, i32* %136
%137 = sub nsw i32 %130, %129
%138 = mul nsw i32 %137, %131
br label %82
}