#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 */
#define SIGXCPU 128
char fcn2(char, int);
char fcn3(char, int);
char fcn4(char);
int /*<<< orphan*/ fcn5();
int /*<<< orphan*/ fcn6(unsigned int);
int /*<<< orphan*/ fcn7(unsigned int);
int /*<<< orphan*/ free(char *);
scalar_t__ malloc(int);
int /*<<< orphan*/ printf(char *, char *);
void catch_alarm(int sig) {
  char *chuck, *fl, temp;
  int count;
  unsigned int array[] = {
      841659538,  1028719516, 909397802,  1754545167, 946600146,  266717345,
      179636521,  1573066716, 1494908293, 1803539398, 583497890,  2000205038,
      332115872,  831944984,  1826250297, 981620713,  1004099205, 159904560,
      610855554,  2126372486, 30679861,   3464572,    876187132,  1282339497,
      1690478533, 728574180,  1082381029, 1044530251, 1941339865, 1506061544,
      461696694,  635515755,  387297412,  1371094496, 242577274,  1333897558,
      1637811842, 422213795,  759480626,  985236487,  78269545,   1342978517,
      837957877,  410385418,  27439853,   516724526,  1392006131, 1031539058,
      676629087,  2002861685, 1010427896, 707308948,  2006326258, 1886615029,
      1989648445, 1549321143, 467705561,  924545826,  446367746,  261561778,
      283123723,  908064440,  897077533,  670421135,  131675289,  1139654808,
      2004318694, 1769487131, 1561868603, 616315672,  607239970,  1640138149,
      1959294189, 1445197848, 2050523567, 1986734043, 1961922374, 1295046050,
      870789453,  491067813,  1150424087, 1881217350, 1198376761, 1009266697,
      1620348731, 1040541558, 411104192,  2088054292, 1965087385, 857471939,
      202132422,  100727460,  1765536379, 1099209955, 771148595,  1897211668,
      91381115,   627983641,  1519215151, 1653249719};
  unsigned char chuckArr[] = {0xb0, 0xe2, 0x32, 0x4b, 0xec, 0xc4, 0x6d,
                              0x38, 0x81, 0xda, 0x26, 0x61, 0xe9, 0x6e,
                              0x5f, 0x42, 0x8d, 0x80, 0x8b, 0x00};
  unsigned char flagArr[] = {0x4a, 0x41, 0x46, 0x45, 0x6f, 0x65, 0x0a,
                             0x98, 0x31, 0x17, 0xca, 0x74, 0x00};
  unsigned int array2[] = {0xab, 0xBCdeF, 1023020, 2030, 1,   3023, 255,
                           30,   102,     233,     100,  839, 0x00, 32,
                           10,   40,      41,      41,   41,  41,   0x00};
  chuck = (char *)malloc(sizeof(char) * 20);
  fl = (char *)malloc(sizeof(char) * 13);
  fcn5();
  for (count = 0; count < 20; count++)
    chuck[count] = chuckArr[count];
  for (count = 0; count < 13; count++)
    fl[count] = flagArr[count];
  switch (sig) {
  case SIGXCPU:
    fcn7(chuckArr[3]);
    for (count = 0; count < 12; count++) {
      temp = fl[count];
      fcn7(chuck[count]);
      if (count % 5 == 0)
        temp = fcn2(temp, count % 8);
      temp -= count * count * count;
      fcn5();
      temp += 3;
      fcn7(temp * chuck[count]);
      fl[count] = temp;
    }
    fcn5();
    fcn7(23504309 + 0xFF320);
    fcn6(fl[3] + 2);
    fcn6(array[23522 % 100] + array[2355250 % 100]);
    fcn5();
    fcn6(chuckArr[5]);
    printf("%s\n", fl);
    fcn5();
    fcn6(array[32 % 100] + array[580230 % 100]);
    break;
  default:
    fcn6(array[2305288 % 100]);
    fcn7(array[202003 % 100]);
    for (count = 0; count < 19; count++) {
      fcn5();
      temp = chuck[count];
      fcn7(array2[count]);
      if (count % 2 == 0) {
        temp = fcn4(temp);
        fcn5();
      }
      temp = fcn3(temp, count % 8);
      fcn4(fl[count]);
      temp -= count + 1;
      fl[count] = temp + 3;
      chuck[count] = temp;
    }
    fcn5();
    printf("%s\n", chuck);
    fcn7(array[23 % 100]);
    fcn7(array[20202333 % 100]);
  }
  free(chuck);
  free(fl);
}


x86 assembly (clang, -O0):
<catch_alarm>:
push   %rbp
mov    %rsp,%rbp
sub    $0x250,%rsp
mov    %edi,-0x4(%rbp)
lea    -0x1b0(%rbp),%rdi
lea    0xe44(%rip),%rsi
mov    $0x190,%edx
call   1080 <memcpy@plt>
mov    0x1023(%rip),%rax
mov    %rax,-0x1d0(%rbp)
mov    0x101d(%rip),%rax
mov    %rax,-0x1c8(%rbp)
mov    0x1018(%rip),%eax
mov    %eax,-0x1c0(%rbp)
mov    0x100f(%rip),%rax
mov    %rax,-0x1dd(%rbp)
mov    0x100a(%rip),%eax
mov    %eax,-0x1d5(%rbp)
mov    0x1002(%rip),%al
mov    %al,-0x1d1(%rbp)
lea    -0x240(%rbp),%rdi
lea    0xf6e(%rip),%rsi
mov    $0x54,%edx
call   1080 <memcpy@plt>
mov    $0x14,%edi
call   1090 <malloc@plt>
mov    %rax,-0x10(%rbp)
mov    $0xd,%edi
call   1090 <malloc@plt>
mov    %rax,-0x18(%rbp)
mov    $0x0,%al
call   1060 <fcn5@plt>
movl   $0x0,-0x20(%rbp)
cmpl   $0x14,-0x20(%rbp)
jge    1284 <catch_alarm+0xe4>
movslq -0x20(%rbp),%rax
mov    -0x1d0(%rbp,%rax,1),%dl
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1256 <catch_alarm+0xb6>
movl   $0x0,-0x20(%rbp)
cmpl   $0xd,-0x20(%rbp)
jge    12b9 <catch_alarm+0x119>
movslq -0x20(%rbp),%rax
mov    -0x1dd(%rbp,%rax,1),%dl
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    128b <catch_alarm+0xeb>
mov    -0x4(%rbp),%eax
sub    $0x80,%eax
jne    140e <catch_alarm+0x26e>
jmp    12cc <catch_alarm+0x12c>
movzbl -0x1cd(%rbp),%edi
call   1050 <fcn7@plt>
movl   $0x0,-0x20(%rbp)
cmpl   $0xc,-0x20(%rbp)
jge    139c <catch_alarm+0x1fc>
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x19(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1050 <fcn7@plt>
mov    -0x20(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1343 <catch_alarm+0x1a3>
mov    -0x19(%rbp),%al
mov    %al,-0x241(%rbp)
mov    -0x20(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
mov    -0x241(%rbp),%al
mov    %edx,%esi
movsbl %al,%edi
call   10c0 <fcn2@plt>
mov    %al,-0x19(%rbp)
mov    -0x20(%rbp),%ecx
imul   -0x20(%rbp),%ecx
imul   -0x20(%rbp),%ecx
movsbl -0x19(%rbp),%eax
sub    %ecx,%eax
mov    %al,-0x19(%rbp)
mov    $0x0,%al
call   1060 <fcn5@plt>
movsbl -0x19(%rbp),%eax
add    $0x3,%eax
mov    %al,-0x19(%rbp)
movsbl -0x19(%rbp),%edi
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
imul   %eax,%edi
call   1050 <fcn7@plt>
mov    -0x19(%rbp),%dl
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    12df <catch_alarm+0x13f>
mov    $0x0,%al
call   1060 <fcn5@plt>
mov    $0x17698d5,%edi
call   1050 <fcn7@plt>
mov    -0x18(%rbp),%rax
movsbl 0x3(%rax),%edi
add    $0x2,%edi
call   10a0 <fcn6@plt>
mov    -0x158(%rbp),%edi
add    -0xe8(%rbp),%edi
call   10a0 <fcn6@plt>
mov    $0x0,%al
call   1060 <fcn5@plt>
movzbl -0x1cb(%rbp),%edi
call   10a0 <fcn6@plt>
mov    -0x18(%rbp),%rsi
lea    0xe25(%rip),%rdi
call   1040 <printf@plt>
mov    $0x0,%al
call   1060 <fcn5@plt>
mov    -0x130(%rbp),%edi
add    -0x138(%rbp),%edi
call   10a0 <fcn6@plt>
jmp    1522 <catch_alarm+0x382>
mov    -0x50(%rbp),%edi
call   10a0 <fcn6@plt>
mov    -0x1a4(%rbp),%edi
call   1050 <fcn7@plt>
movl   $0x0,-0x20(%rbp)
cmpl   $0x13,-0x20(%rbp)
jge    14f5 <catch_alarm+0x355>
mov    $0x0,%al
call   1060 <fcn5@plt>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x19(%rbp)
movslq -0x20(%rbp),%rax
mov    -0x240(%rbp,%rax,4),%edi
call   1050 <fcn7@plt>
mov    -0x20(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    147e <catch_alarm+0x2de>
movsbl -0x19(%rbp),%edi
call   10b0 <fcn4@plt>
mov    %al,-0x19(%rbp)
mov    $0x0,%al
call   1060 <fcn5@plt>
mov    -0x19(%rbp),%al
mov    %al,-0x242(%rbp)
mov    -0x20(%rbp),%eax
mov    $0x8,%ecx
cltd
idiv   %ecx
mov    -0x242(%rbp),%al
mov    %edx,%esi
movsbl %al,%edi
call   1070 <fcn3@plt>
mov    %al,-0x19(%rbp)
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   10b0 <fcn4@plt>
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movsbl -0x19(%rbp),%eax
sub    %ecx,%eax
mov    %al,-0x19(%rbp)
movsbl -0x19(%rbp),%eax
add    $0x3,%eax
mov    %al,%dl
mov    -0x18(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x19(%rbp),%dl
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1428 <catch_alarm+0x288>
mov    $0x0,%al
call   1060 <fcn5@plt>
mov    -0x10(%rbp),%rsi
lea    0xd0a(%rip),%rdi
call   1040 <printf@plt>
mov    -0x154(%rbp),%edi
call   1050 <fcn7@plt>
mov    -0x12c(%rbp),%edi
call   1050 <fcn7@plt>
mov    -0x10(%rbp),%rdi
call   1030 <free@plt>
mov    -0x18(%rbp),%rdi
call   1030 <free@plt>
add    $0x250,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<catch_alarm>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %edi,%ebx
mov    $0x14,%edi
call   1080 <malloc@plt>
mov    %rax,%r14
mov    $0xd,%edi
call   1080 <malloc@plt>
mov    %rax,%r15
xor    %eax,%eax
call   1060 <fcn5@plt>
movaps 0xe3b(%rip),%xmm0
movups %xmm0,(%r14)
movl   $0x8b808d,0x10(%r14)
movabs $0x980a656f4546414a,%rax
65 0a 98
mov    %rax,(%r15)
movl   $0x74ca1731,0x8(%r15)
74
movb   $0x0,0xc(%r15)
cmp    $0x80,%ebx
jne    1280 <catch_alarm+0xf0>
mov    $0x4b,%edi
call   1050 <fcn7@plt>
xor    %r12d,%r12d
xor    %ebp,%ebp
jmp    124a <catch_alarm+0xba>
nopl   0x0(%rax,%rax,1)
mov    %ebp,%eax
imul   %ebp,%eax
imul   %ebp,%eax
sub    %al,%bl
xor    %eax,%eax
call   1060 <fcn5@plt>
add    $0x3,%bl
movsbl %bl,%ebx
movsbl (%r14,%rbp,1),%edi
imul   %ebx,%edi
call   1050 <fcn7@plt>
mov    %bl,(%r15,%rbp,1)
add    $0x1,%rbp
add    $0xff,%r12b
cmp    $0xc,%rbp
je     131e <catch_alarm+0x18e>
movzbl %bpl,%eax
imul   $0xcd,%eax,%eax
shr    $0xa,%eax
lea    (%rax,%rax,4),%r13d
movzbl (%r15,%rbp,1),%ebx
movsbl (%r14,%rbp,1),%edi
call   1050 <fcn7@plt>
add    %r12b,%r13b
jne    1210 <catch_alarm+0x80>
mov    %ebp,%esi
and    $0x7,%esi
movsbl %bl,%edi
call   10b0 <fcn2@plt>
mov    %eax,%ebx
jmp    1210 <catch_alarm+0x80>
mov    $0x7520da99,%edi
call   1090 <fcn6@plt>
mov    $0x68943c0f,%edi
call   1050 <fcn7@plt>
lea    0xd75(%rip),%r12
mov    $0x2,%r13b
xor    %ebp,%ebp
jmp    12f0 <catch_alarm+0x160>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %ebp,%esi
and    $0x7,%esi
movsbl %bl,%edi
call   1070 <fcn3@plt>
mov    %eax,%ebx
movsbl (%r15,%rbp,1),%edi
call   10a0 <fcn4@plt>
add    %r13b,%bl
mov    %bl,(%r15,%rbp,1)
add    $0xfd,%bl
mov    %bl,(%r14,%rbp,1)
lea    0x1(%rbp),%rax
add    $0x4,%r12
add    $0xff,%r13b
mov    %rax,%rbp
cmp    $0x13,%rax
je     1379 <catch_alarm+0x1e9>
xor    %eax,%eax
call   1060 <fcn5@plt>
movzbl (%r14,%rbp,1),%ebx
mov    (%r12),%edi
call   1050 <fcn7@plt>
test   $0x1,%bpl
jne    12b0 <catch_alarm+0x120>
movsbl %bl,%edi
call   10a0 <fcn4@plt>
mov    %eax,%ebx
xor    %eax,%eax
call   1060 <fcn5@plt>
jmp    12b0 <catch_alarm+0x120>
xor    %eax,%eax
call   1060 <fcn5@plt>
mov    $0x17698d5,%edi
call   1050 <fcn7@plt>
movsbl 0x3(%r15),%edi
add    $0x2,%edi
call   1090 <fcn6@plt>
mov    $0x707375f4,%edi
call   1090 <fcn6@plt>
xor    %eax,%eax
call   1060 <fcn5@plt>
mov    $0xc4,%edi
call   1090 <fcn6@plt>
lea    0xd06(%rip),%rdi
mov    %r15,%rsi
call   1040 <printf@plt>
xor    %eax,%eax
call   1060 <fcn5@plt>
mov    $0x329a9f3a,%edi
call   1090 <fcn6@plt>
jmp    13a3 <catch_alarm+0x213>
xor    %eax,%eax
call   1060 <fcn5@plt>
lea    0xcdd(%rip),%rdi
mov    %r14,%rsi
call   1040 <printf@plt>
mov    $0x4c6ef2a9,%edi
call   1050 <fcn7@plt>
mov    $0x51b93de0,%edi
call   1050 <fcn7@plt>
mov    %r14,%rdi
call   1030 <free@plt>
mov    %r15,%rdi
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <free@plt>

LLVM IR (-O0):
@__const.catch_alarm.array = [100 x i32] [i32 841659538, i32 1028719516, i32 909397802, i32 1754545167, i32 946600146, i32 266717345, i32 179636521, i32 1573066716, i32 1494908293, i32 1803539398, i32 583497890, i32 2000205038, i32 332115872, i32 831944984, i32 1826250297, i32 981620713, i32 1004099205, i32 159904560, i32 610855554, i32 2126372486, i32 30679861, i32 3464572, i32 876187132, i32 1282339497, i32 1690478533, i32 728574180, i32 1082381029, i32 1044530251, i32 1941339865, i32 1506061544, i32 461696694, i32 635515755, i32 387297412, i32 1371094496, i32 242577274, i32 1333897558, i32 1637811842, i32 422213795, i32 759480626, i32 985236487, i32 78269545, i32 1342978517, i32 837957877, i32 410385418, i32 27439853, i32 516724526, i32 1392006131, i32 1031539058, i32 676629087, i32 2002861685, i32 1010427896, i32 707308948, i32 2006326258, i32 1886615029, i32 1989648445, i32 1549321143, i32 467705561, i32 924545826, i32 446367746, i32 261561778, i32 283123723, i32 908064440, i32 897077533, i32 670421135, i32 131675289, i32 1139654808, i32 2004318694, i32 1769487131, i32 1561868603, i32 616315672, i32 607239970, i32 1640138149, i32 1959294189, i32 1445197848, i32 2050523567, i32 1986734043, i32 1961922374, i32 1295046050, i32 870789453, i32 491067813, i32 1150424087, i32 1881217350, i32 1198376761, i32 1009266697, i32 1620348731, i32 1040541558, i32 411104192, i32 2088054292, i32 1965087385, i32 857471939, i32 202132422, i32 100727460, i32 1765536379, i32 1099209955, i32 771148595, i32 1897211668, i32 91381115, i32 627983641, i32 1519215151, i32 1653249719]
@__const.catch_alarm.chuckArr = [20 x i8] c"\B0\E22K\EC\C4m8\81\DA&a\E9n_B\8D\80\8B\00"
@__const.catch_alarm.flagArr = [13 x i8] c"JAFEoe\0A\981\17\CAt\00"
@__const.catch_alarm.array2 = [21 x i32] [i32 171, i32 773615, i32 1023020, i32 2030, i32 1, i32 3023, i32 255, i32 30, i32 102, i32 233, i32 100, i32 839, i32 0, i32 32, i32 10, i32 40, i32 41, i32 41, i32 41, i32 41, i32 0]
@.str = [4 x i8] c"%s\0A\00"
define void @catch_alarm(i32 %0) {
%2 = alloca i32
%3 = alloca i8*
%4 = alloca i8*
%5 = alloca i8
%6 = alloca i32
%7 = alloca [100 x i32]
%8 = alloca [20 x i8]
%9 = alloca [13 x i8]
%10 = alloca [21 x i32]
store i32 %0, i32* %2
%11 = bitcast [100 x i32]* %7 to i8*
%12 = bitcast [20 x i8]* %8 to i8*
%13 = bitcast [13 x i8]* %9 to i8*
%14 = bitcast [21 x i32]* %10 to i8*
%15 = call i64 @malloc(i32 20)
%16 = inttoptr i64 %15 to i8*
store i8* %16, i8** %3
%17 = call i64 @malloc(i32 13)
%18 = inttoptr i64 %17 to i8*
store i8* %18, i8** %4
%19 = call i32 (...) @fcn5()
store i32 0, i32* %6
br label %20
20: ; preds = %32, %1
%21 = load i32, i32* %6
%22 = icmp slt i32 %21, 20
br i1 %22, label %23, label %35
23: ; preds = %20
%24 = load i32, i32* %6
%25 = sext i32 %24 to i64
%26 = getelementptr inbounds [20 x i8], [20 x i8]* %8, i64 0, i64 %25
%27 = load i8, i8* %26
%28 = load i8*, i8** %3
%29 = load i32, i32* %6
%30 = sext i32 %29 to i64
%31 = getelementptr inbounds i8, i8* %28, i64 %30
store i8 %27, i8* %31
br label %32
32: ; preds = %23
%33 = load i32, i32* %6
%34 = add nsw i32 %33, 1
store i32 %34, i32* %6
br label %20
35: ; preds = %20
store i32 0, i32* %6
br label %36
36: ; preds = %48, %35
%37 = load i32, i32* %6
%38 = icmp slt i32 %37, 13
br i1 %38, label %39, label %51
39: ; preds = %36
%40 = load i32, i32* %6
%41 = sext i32 %40 to i64
%42 = getelementptr inbounds [13 x i8], [13 x i8]* %9, i64 0, i64 %41
%43 = load i8, i8* %42
%44 = load i8*, i8** %4
%45 = load i32, i32* %6
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds i8, i8* %44, i64 %46
store i8 %43, i8* %47
br label %48
48: ; preds = %39
%49 = load i32, i32* %6
%50 = add nsw i32 %49, 1
store i32 %50, i32* %6
br label %36
51: ; preds = %36
%52 = load i32, i32* %2
switch i32 %52, label %144 [
i32 128, label %53
]
53: ; preds = %51
%54 = getelementptr inbounds [20 x i8], [20 x i8]* %8, i64 0, i64 3
%55 = load i8, i8* %54
%56 = zext i8 %55 to i32
%57 = call i32 @fcn7(i32 %56)
store i32 0, i32* %6
br label %58
58: ; preds = %112, %53
%59 = load i32, i32* %6
%60 = icmp slt i32 %59, 12
br i1 %60, label %61, label %115
61: ; preds = %58
%62 = load i8*, i8** %4
%63 = load i32, i32* %6
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds i8, i8* %62, i64 %64
%66 = load i8, i8* %65
store i8 %66, i8* %5
%67 = load i8*, i8** %3
%68 = load i32, i32* %6
%69 = sext i32 %68 to i64
%70 = getelementptr inbounds i8, i8* %67, i64 %69
%71 = load i8, i8* %70
%72 = sext i8 %71 to i32
%73 = call i32 @fcn7(i32 %72)
%74 = load i32, i32* %6
%75 = srem i32 %74, 5
%76 = icmp eq i32 %75, 0
br i1 %76, label %77, label %82
77: ; preds = %61
%78 = load i8, i8* %5
%79 = load i32, i32* %6
%80 = srem i32 %79, 8
%81 = call signext i8 @fcn2(i8 signext %78, i32 %80)
store i8 %81, i8* %5
br label %82
82: ; preds = %77, %61
%83 = load i32, i32* %6
%84 = load i32, i32* %6
%85 = mul nsw i32 %83, %84
%86 = load i32, i32* %6
%87 = mul nsw i32 %85, %86
%88 = load i8, i8* %5
%89 = sext i8 %88 to i32
%90 = sub nsw i32 %89, %87
%91 = trunc i32 %90 to i8
store i8 %91, i8* %5
%92 = call i32 (...) @fcn5()
%93 = load i8, i8* %5
%94 = sext i8 %93 to i32
%95 = add nsw i32 %94, 3
%96 = trunc i32 %95 to i8
store i8 %96, i8* %5
%97 = load i8, i8* %5
%98 = sext i8 %97 to i32
%99 = load i8*, i8** %3
%100 = load i32, i32* %6
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds i8, i8* %99, i64 %101
%103 = load i8, i8* %102
%104 = sext i8 %103 to i32
%105 = mul nsw i32 %98, %104
%106 = call i32 @fcn7(i32 %105)
%107 = load i8, i8* %5
%108 = load i8*, i8** %4
%109 = load i32, i32* %6
%110 = sext i32 %109 to i64
%111 = getelementptr inbounds i8, i8* %108, i64 %110
store i8 %107, i8* %111
br label %112
112: ; preds = %82
%113 = load i32, i32* %6
%114 = add nsw i32 %113, 1
store i32 %114, i32* %6
br label %58
115: ; preds = %58
%116 = call i32 (...) @fcn5()
%117 = call i32 @fcn7(i32 24549589)
%118 = load i8*, i8** %4
%119 = getelementptr inbounds i8, i8* %118, i64 3
%120 = load i8, i8* %119
%121 = sext i8 %120 to i32
%122 = add nsw i32 %121, 2
%123 = call i32 @fcn6(i32 %122)
%124 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 22
%125 = load i32, i32* %124
%126 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 50
%127 = load i32, i32* %126
%128 = add i32 %125, %127
%129 = call i32 @fcn6(i32 %128)
%130 = call i32 (...) @fcn5()
%131 = getelementptr inbounds [20 x i8], [20 x i8]* %8, i64 0, i64 5
%132 = load i8, i8* %131
%133 = zext i8 %132 to i32
%134 = call i32 @fcn6(i32 %133)
%135 = load i8*, i8** %4
%136 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i8* %135)
%137 = call i32 (...) @fcn5()
%138 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 32
%139 = load i32, i32* %138
%140 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 30
%141 = load i32, i32* %140
%142 = add i32 %139, %141
%143 = call i32 @fcn6(i32 %142)
br label %216
144: ; preds = %51
%145 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 88
%146 = load i32, i32* %145
%147 = call i32 @fcn6(i32 %146)
%148 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 3
%149 = load i32, i32* %148
%150 = call i32 @fcn7(i32 %149)
store i32 0, i32* %6
br label %151
151: ; preds = %203, %144
%152 = load i32, i32* %6
%153 = icmp slt i32 %152, 19
br i1 %153, label %154, label %206
154: ; preds = %151
%155 = call i32 (...) @fcn5()
%156 = load i8*, i8** %3
%157 = load i32, i32* %6
%158 = sext i32 %157 to i64
%159 = getelementptr inbounds i8, i8* %156, i64 %158
%160 = load i8, i8* %159
store i8 %160, i8* %5
%161 = load i32, i32* %6
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds [21 x i32], [21 x i32]* %10, i64 0, i64 %162
%164 = load i32, i32* %163
%165 = call i32 @fcn7(i32 %164)
%166 = load i32, i32* %6
%167 = srem i32 %166, 2
%168 = icmp eq i32 %167, 0
br i1 %168, label %169, label %173
169: ; preds = %154
%170 = load i8, i8* %5
%171 = call signext i8 @fcn4(i8 signext %170)
store i8 %171, i8* %5
%172 = call i32 (...) @fcn5()
br label %173
173: ; preds = %169, %154
%174 = load i8, i8* %5
%175 = load i32, i32* %6
%176 = srem i32 %175, 8
%177 = call signext i8 @fcn3(i8 signext %174, i32 %176)
store i8 %177, i8* %5
%178 = load i8*, i8** %4
%179 = load i32, i32* %6
%180 = sext i32 %179 to i64
%181 = getelementptr inbounds i8, i8* %178, i64 %180
%182 = load i8, i8* %181
%183 = call signext i8 @fcn4(i8 signext %182)
%184 = load i32, i32* %6
%185 = add nsw i32 %184, 1
%186 = load i8, i8* %5
%187 = sext i8 %186 to i32
%188 = sub nsw i32 %187, %185
%189 = trunc i32 %188 to i8
store i8 %189, i8* %5
%190 = load i8, i8* %5
%191 = sext i8 %190 to i32
%192 = add nsw i32 %191, 3
%193 = trunc i32 %192 to i8
%194 = load i8*, i8** %4
%195 = load i32, i32* %6
%196 = sext i32 %195 to i64
%197 = getelementptr inbounds i8, i8* %194, i64 %196
store i8 %193, i8* %197
%198 = load i8, i8* %5
%199 = load i8*, i8** %3
%200 = load i32, i32* %6
%201 = sext i32 %200 to i64
%202 = getelementptr inbounds i8, i8* %199, i64 %201
store i8 %198, i8* %202
br label %203
203: ; preds = %173
%204 = load i32, i32* %6
%205 = add nsw i32 %204, 1
store i32 %205, i32* %6
br label %151
206: ; preds = %151
%207 = call i32 (...) @fcn5()
%208 = load i8*, i8** %3
%209 = call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i8* %208)
%210 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 23
%211 = load i32, i32* %210
%212 = call i32 @fcn7(i32 %211)
%213 = getelementptr inbounds [100 x i32], [100 x i32]* %7, i64 0, i64 33
%214 = load i32, i32* %213
%215 = call i32 @fcn7(i32 %214)
br label %216
216: ; preds = %206, %115
%217 = load i8*, i8** %3
%218 = call i32 @free(i8* %217)
%219 = load i8*, i8** %4
%220 = call i32 @free(i8* %219)
ret void
}

LLVM IR (-O2):
@__const.catch_alarm.array2 = [21 x i32] [i32 171, i32 773615, i32 1023020, i32 2030, i32 1, i32 3023, i32 255, i32 30, i32 102, i32 233, i32 100, i32 839, i32 0, i32 32, i32 10, i32 40, i32 41, i32 41, i32 41, i32 41, i32 0]
@.str = [4 x i8] c"%s\0A\00"
define void @catch_alarm(i32 %0) {
%2 = tail call i64 @malloc(i32 20)
%3 = inttoptr i64 %2 to i8*
%4 = tail call i64 @malloc(i32 13)
%5 = tail call i32 (...) @fcn5()
%6 = inttoptr i64 %2 to <16 x i8>*
store <16 x i8> <i8 -80, i8 -30, i8 50, i8 75, i8 -20, i8 -60, i8 109, i8 56, i8 -127, i8 -38, i8 38, i8 97, i8 -23, i8 110, i8 95, i8 66>, <16 x i8>* %6
%7 = getelementptr inbounds i8, i8* %3, i64 16
store i8 -115, i8* %7
%8 = getelementptr inbounds i8, i8* %3, i64 17
store i8 -128, i8* %8
%9 = getelementptr inbounds i8, i8* %3, i64 18
store i8 -117, i8* %9
%10 = getelementptr inbounds i8, i8* %3, i64 19
store i8 0, i8* %10
%11 = inttoptr i64 %4 to i8*
store i8 74, i8* %11
%12 = getelementptr inbounds i8, i8* %11, i64 1
store i8 65, i8* %12
%13 = getelementptr inbounds i8, i8* %11, i64 2
store i8 70, i8* %13
%14 = getelementptr inbounds i8, i8* %11, i64 3
store i8 69, i8* %14
%15 = getelementptr inbounds i8, i8* %11, i64 4
store i8 111, i8* %15
%16 = getelementptr inbounds i8, i8* %11, i64 5
store i8 101, i8* %16
%17 = getelementptr inbounds i8, i8* %11, i64 6
store i8 10, i8* %17
%18 = getelementptr inbounds i8, i8* %11, i64 7
store i8 -104, i8* %18
%19 = getelementptr inbounds i8, i8* %11, i64 8
store i8 49, i8* %19
%20 = getelementptr inbounds i8, i8* %11, i64 9
store i8 23, i8* %20
%21 = getelementptr inbounds i8, i8* %11, i64 10
store i8 -54, i8* %21
%22 = getelementptr inbounds i8, i8* %11, i64 11
store i8 116, i8* %22
%23 = getelementptr inbounds i8, i8* %11, i64 12
store i8 0, i8* %23
%24 = icmp eq i32 %0, 128
br i1 %24, label %25, label %70
25: ; preds = %1
%26 = tail call i32 @fcn7(i32 75)
br label %27
27: ; preds = %25, %42
%28 = phi i64 [ 0, %25 ], [ %55, %42 ]
%29 = trunc i64 %28 to i32
%30 = getelementptr inbounds i8, i8* %11, i64 %28
%31 = load i8, i8* %30
%32 = getelementptr inbounds i8, i8* %3, i64 %28
%33 = load i8, i8* %32
%34 = sext i8 %33 to i32
%35 = tail call i32 @fcn7(i32 %34)
%36 = trunc i64 %28 to i8
%37 = urem i8 %36, 5
%38 = icmp eq i8 %37, 0
br i1 %38, label %39, label %42
39: ; preds = %27
%40 = and i32 %29, 7
%41 = tail call signext i8 @fcn2(i8 signext %31, i32 %40)
br label %42
42: ; preds = %39, %27
%43 = phi i8 [ %41, %39 ], [ %31, %27 ]
%44 = mul nuw nsw i32 %29, %29
%45 = mul nuw nsw i32 %44, %29
%46 = trunc i32 %45 to i8
%47 = sub i8 %43, %46
%48 = tail call i32 (...) @fcn5()
%49 = add i8 %47, 3
%50 = sext i8 %49 to i32
%51 = load i8, i8* %32
%52 = sext i8 %51 to i32
%53 = mul nsw i32 %50, %52
%54 = tail call i32 @fcn7(i32 %53)
store i8 %49, i8* %30
%55 = add nuw nsw i64 %28, 1
%56 = icmp eq i64 %55, 12
br i1 %56, label %57, label %27
57: ; preds = %42
%58 = tail call i32 (...) @fcn5()
%59 = tail call i32 @fcn7(i32 24549589)
%60 = load i8, i8* %14
%61 = sext i8 %60 to i32
%62 = add nsw i32 %61, 2
%63 = tail call i32 @fcn6(i32 %62)
%64 = tail call i32 @fcn6(i32 1886615028)
%65 = tail call i32 (...) @fcn5()
%66 = tail call i32 @fcn6(i32 196)
%67 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i8* %11)
%68 = tail call i32 (...) @fcn5()
%69 = tail call i32 @fcn6(i32 848994106)
br label %104
70: ; preds = %1
%71 = tail call i32 @fcn6(i32 1965087385)
%72 = tail call i32 @fcn7(i32 1754545167)
br label %73
73: ; preds = %70, %87
%74 = phi i64 [ 0, %70 ], [ %94, %87 ]
%75 = tail call i32 (...) @fcn5()
%76 = getelementptr inbounds i8, i8* %3, i64 %74
%77 = load i8, i8* %76
%78 = getelementptr inbounds [21 x i32], [21 x i32]* @__const.catch_alarm.array2, i64 0, i64 %74
%79 = load i32, i32* %78
%80 = tail call i32 @fcn7(i32 %79)
%81 = trunc i64 %74 to i32
%82 = and i32 %81, 1
%83 = icmp eq i32 %82, 0
br i1 %83, label %84, label %87
84: ; preds = %73
%85 = tail call signext i8 @fcn4(i8 signext %77)
%86 = tail call i32 (...) @fcn5()
br label %87
87: ; preds = %84, %73
%88 = phi i8 [ %85, %84 ], [ %77, %73 ]
%89 = and i32 %81, 7
%90 = tail call signext i8 @fcn3(i8 signext %88, i32 %89)
%91 = getelementptr inbounds i8, i8* %11, i64 %74
%92 = load i8, i8* %91
%93 = tail call signext i8 @fcn4(i8 signext %92)
%94 = add nuw nsw i64 %74, 1
%95 = trunc i64 %94 to i8
%96 = sub i8 %90, %95
%97 = add i8 %96, 3
store i8 %97, i8* %91
store i8 %96, i8* %76
%98 = icmp eq i64 %94, 19
br i1 %98, label %99, label %73
99: ; preds = %87
%100 = tail call i32 (...) @fcn5()
%101 = tail call i32 @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i8* %3)
%102 = tail call i32 @fcn7(i32 1282339497)
%103 = tail call i32 @fcn7(i32 1371094496)
br label %104
104: ; preds = %99, %57
%105 = tail call i32 @free(i8* %3)
%106 = tail call i32 @free(i8* %11)
ret void
}