#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 */
typedef int key_t;

/* Variables and functions */
int IPC_CREAT;
int /*<<< orphan*/ SHM_RDONLY;
int /*<<< orphan*/ atoi(char const *);
int /*<<< orphan*/ printf(char *, ...);
scalar_t__ shmat(int, void *, int /*<<< orphan*/);
int /*<<< orphan*/ shmdt(int *);
int shmget(int, int, int);
int main(int argc, char const *argv[]) {
  if (argc < 2) {
    printf("Passing arguments\n");
    return 0;
  }
  key_t one = (key_t)atoi(argv[1]);
  key_t two = (key_t)atoi(argv[2]);
  int i = 0;
  key_t three = 19900604;
  int shmid1 = shmget(one, 1000, 0660);
  int *shared1 = (int *)shmat(shmid1, (void *)0, SHM_RDONLY);
  int shmid2 = shmget(two, 1000, 0660);
  int *shared2 = (int *)shmat(shmid2, (void *)0, SHM_RDONLY);
  int shmid3 = shmget(three, 1000, IPC_CREAT | 0644);
  int *shared3 = (int *)shmat(shmid3, (void *)0, 0);
  for (i = 0; i < 100; ++i) {
    shared3[i] = shared1[i] + shared2[i];
  }
  printf("%i\n", (int)three);
  shmdt(shared1);
  shmdt(shared2);
  shmdt(shared3);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
movl   $0x0,-0x4(%rbp)
mov    %edi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
cmpl   $0x2,-0x8(%rbp)
jge    118a <main+0x3a>
lea    0xe89(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
movl   $0x0,-0x4(%rbp)
jmp    12b8 <main+0x168>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rdi
call   1070 <atoi@plt>
mov    %eax,-0x14(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rdi
call   1070 <atoi@plt>
mov    %eax,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x12fa8bc,-0x20(%rbp)
mov    -0x14(%rbp),%edi
mov    $0x3e8,%esi
mov    $0x1b0,%edx
call   1060 <shmget@plt>
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%edi
mov    0x2e09(%rip),%rax
mov    (%rax),%edx
xor    %eax,%eax
mov    %eax,%esi
call   1050 <shmat@plt>
mov    %rax,-0x30(%rbp)
mov    -0x18(%rbp),%edi
mov    $0x3e8,%esi
mov    $0x1b0,%edx
call   1060 <shmget@plt>
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%edi
mov    0x2ddb(%rip),%rax
mov    (%rax),%edx
xor    %eax,%eax
mov    %eax,%esi
call   1050 <shmat@plt>
mov    %rax,-0x40(%rbp)
mov    -0x20(%rbp),%edi
mov    0x2dba(%rip),%rax
mov    (%rax),%edx
or     $0x1a4,%edx
mov    $0x3e8,%esi
call   1060 <shmget@plt>
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%edi
xor    %eax,%eax
mov    %eax,%esi
xor    %edx,%edx
call   1050 <shmat@plt>
mov    %rax,-0x50(%rbp)
movl   $0x0,-0x1c(%rbp)
cmpl   $0x64,-0x1c(%rbp)
jge    1285 <main+0x135>
mov    -0x30(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
mov    -0x40(%rbp),%rax
movslq -0x1c(%rbp),%rcx
add    (%rax,%rcx,4),%edx
mov    -0x50(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    124c <main+0xfc>
mov    -0x20(%rbp),%esi
lea    0xd84(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x30(%rbp),%rdi
call   1030 <shmdt@plt>
mov    -0x40(%rbp),%rdi
call   1030 <shmdt@plt>
mov    -0x50(%rbp),%rdi
call   1030 <shmdt@plt>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %rbx
push   %rax
cmp    $0x1,%edi
jg     117d <main+0x1d>
lea    0xe91(%rip),%rdi
call   1030 <puts@plt>
jmp    156a <main+0x40a>
mov    %rsi,%rbx
mov    0x8(%rsi),%rdi
call   1080 <atoi@plt>
mov    %eax,%ebp
mov    0x10(%rbx),%rdi
call   1080 <atoi@plt>
mov    %eax,%ebx
mov    %ebp,%edi
mov    $0x3e8,%esi
mov    $0x1b0,%edx
call   1070 <shmget@plt>
mov    0x2e32(%rip),%rbp
mov    0x0(%rbp),%edx
mov    %eax,%edi
xor    %esi,%esi
call   1060 <shmat@plt>
mov    %rax,%r14
mov    %ebx,%edi
mov    $0x3e8,%esi
mov    $0x1b0,%edx
call   1070 <shmget@plt>
mov    0x0(%rbp),%edx
mov    %eax,%edi
xor    %esi,%esi
call   1060 <shmat@plt>
mov    %rax,%r15
mov    0x2df4(%rip),%rax
mov    $0x1a4,%edx
or     (%rax),%edx
mov    $0x12fa8bc,%edi
mov    $0x3e8,%esi
call   1070 <shmget@plt>
mov    %eax,%edi
xor    %esi,%esi
xor    %edx,%edx
call   1060 <shmat@plt>
mov    %rax,%rbx
lea    0x190(%rax),%rcx
lea    0x190(%r14),%rax
lea    0x190(%r15),%rdx
cmp    %rax,%rbx
setb   %sil
cmp    %rcx,%r14
setb   %dil
cmp    %rdx,%rbx
setb   %al
cmp    %rcx,%r15
setb   %cl
test   %dil,%sil
jne    14ed <main+0x38d>
and    %cl,%al
jne    14ed <main+0x38d>
movdqu (%r14),%xmm0
movdqu (%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,(%rbx)
movdqu 0x10(%r14),%xmm0
movdqu 0x10(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x10(%rbx)
movdqu 0x20(%r14),%xmm0
movdqu 0x20(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x20(%rbx)
movdqu 0x30(%r14),%xmm0
movdqu 0x30(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x30(%rbx)
movdqu 0x40(%r14),%xmm0
movdqu 0x40(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x40(%rbx)
movdqu 0x50(%r14),%xmm0
movdqu 0x50(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x50(%rbx)
movdqu 0x60(%r14),%xmm0
movdqu 0x60(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x60(%rbx)
movdqu 0x70(%r14),%xmm0
movdqu 0x70(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x70(%rbx)
movdqu 0x80(%r14),%xmm0
movdqu 0x80(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x80(%rbx)
movdqu 0x90(%r14),%xmm0
movdqu 0x90(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x90(%rbx)
movdqu 0xa0(%r14),%xmm0
movdqu 0xa0(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xa0(%rbx)
movdqu 0xb0(%r14),%xmm0
movdqu 0xb0(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xb0(%rbx)
movdqu 0xc0(%r14),%xmm0
movdqu 0xc0(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xc0(%rbx)
movdqu 0xd0(%r14),%xmm0
movdqu 0xd0(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xd0(%rbx)
movdqu 0xe0(%r14),%xmm0
movdqu 0xe0(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xe0(%rbx)
movdqu 0xf0(%r14),%xmm0
movdqu 0xf0(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0xf0(%rbx)
movdqu 0x100(%r14),%xmm0
movdqu 0x100(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x100(%rbx)
movdqu 0x110(%r14),%xmm0
movdqu 0x110(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x110(%rbx)
movdqu 0x120(%r14),%xmm0
movdqu 0x120(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x120(%rbx)
movdqu 0x130(%r14),%xmm0
movdqu 0x130(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x130(%rbx)
movdqu 0x140(%r14),%xmm0
movdqu 0x140(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x140(%rbx)
movdqu 0x150(%r14),%xmm0
movdqu 0x150(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x150(%rbx)
movdqu 0x160(%r14),%xmm0
movdqu 0x160(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x160(%rbx)
movdqu 0x170(%r14),%xmm0
movdqu 0x170(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x170(%rbx)
movdqu 0x180(%r14),%xmm0
movdqu 0x180(%r15),%xmm1
paddd  %xmm0,%xmm1
movdqu %xmm1,0x180(%rbx)
jmp    153f <main+0x3df>
mov    $0x3,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    -0xc(%r15,%rax,4),%ecx
add    -0xc(%r14,%rax,4),%ecx
mov    %ecx,-0xc(%rbx,%rax,4)
mov    -0x8(%r15,%rax,4),%ecx
add    -0x8(%r14,%rax,4),%ecx
mov    %ecx,-0x8(%rbx,%rax,4)
mov    -0x4(%r15,%rax,4),%ecx
add    -0x4(%r14,%rax,4),%ecx
mov    %ecx,-0x4(%rbx,%rax,4)
mov    (%r15,%rax,4),%ecx
add    (%r14,%rax,4),%ecx
mov    %ecx,(%rbx,%rax,4)
add    $0x4,%rax
cmp    $0x67,%rax
jne    1500 <main+0x3a0>
lea    0xaba(%rip),%rdi
mov    $0x12fa8bc,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r14,%rdi
call   1040 <shmdt@plt>
mov    %r15,%rdi
call   1040 <shmdt@plt>
mov    %rbx,%rdi
call   1040 <shmdt@plt>
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [19 x i8] c"Passing arguments\0A\00"
@SHM_RDONLY = global i32 0
@IPC_CREAT = global i32 0
@.str.1 = [4 x i8] c"%i\0A\00"
define i32 @main(i32 %0, i8** %1) {
%3 = alloca i32
%4 = alloca i32
%5 = alloca i8**
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32*
%12 = alloca i32
%13 = alloca i32*
%14 = alloca i32
%15 = alloca i32*
store i32 0, i32* %3
store i32 %0, i32* %4
store i8** %1, i8*** %5
%16 = load i32, i32* %4
%17 = icmp slt i32 %16, 2
br i1 %17, label %18, label %20
18: ; preds = %2
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0))
store i32 0, i32* %3
br label %79
20: ; preds = %2
%21 = load i8**, i8*** %5
%22 = getelementptr inbounds i8*, i8** %21, i64 1
%23 = load i8*, i8** %22
%24 = call i32 @atoi(i8* %23)
store i32 %24, i32* %6
%25 = load i8**, i8*** %5
%26 = getelementptr inbounds i8*, i8** %25, i64 2
%27 = load i8*, i8** %26
%28 = call i32 @atoi(i8* %27)
store i32 %28, i32* %7
store i32 0, i32* %8
store i32 19900604, i32* %9
%29 = load i32, i32* %6
%30 = call i32 @shmget(i32 %29, i32 1000, i32 432)
store i32 %30, i32* %10
%31 = load i32, i32* %10
%32 = load i32, i32* @SHM_RDONLY
%33 = call i64 @shmat(i32 %31, i8* null, i32 %32)
%34 = inttoptr i64 %33 to i32*
store i32* %34, i32** %11
%35 = load i32, i32* %7
%36 = call i32 @shmget(i32 %35, i32 1000, i32 432)
store i32 %36, i32* %12
%37 = load i32, i32* %12
%38 = load i32, i32* @SHM_RDONLY
%39 = call i64 @shmat(i32 %37, i8* null, i32 %38)
%40 = inttoptr i64 %39 to i32*
store i32* %40, i32** %13
%41 = load i32, i32* %9
%42 = load i32, i32* @IPC_CREAT
%43 = or i32 %42, 420
%44 = call i32 @shmget(i32 %41, i32 1000, i32 %43)
store i32 %44, i32* %14
%45 = load i32, i32* %14
%46 = call i64 @shmat(i32 %45, i8* null, i32 0)
%47 = inttoptr i64 %46 to i32*
store i32* %47, i32** %15
store i32 0, i32* %8
br label %48
48: ; preds = %67, %20
%49 = load i32, i32* %8
%50 = icmp slt i32 %49, 100
br i1 %50, label %51, label %70
51: ; preds = %48
%52 = load i32*, i32** %11
%53 = load i32, i32* %8
%54 = sext i32 %53 to i64
%55 = getelementptr inbounds i32, i32* %52, i64 %54
%56 = load i32, i32* %55
%57 = load i32*, i32** %13
%58 = load i32, i32* %8
%59 = sext i32 %58 to i64
%60 = getelementptr inbounds i32, i32* %57, i64 %59
%61 = load i32, i32* %60
%62 = add nsw i32 %56, %61
%63 = load i32*, i32** %15
%64 = load i32, i32* %8
%65 = sext i32 %64 to i64
%66 = getelementptr inbounds i32, i32* %63, i64 %65
store i32 %62, i32* %66
br label %67
67: ; preds = %51
%68 = load i32, i32* %8
%69 = add nsw i32 %68, 1
store i32 %69, i32* %8
br label %48
70: ; preds = %48
%71 = load i32, i32* %9
%72 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), i32 %71)
%73 = load i32*, i32** %11
%74 = call i32 @shmdt(i32* %73)
%75 = load i32*, i32** %13
%76 = call i32 @shmdt(i32* %75)
%77 = load i32*, i32** %15
%78 = call i32 @shmdt(i32* %77)
store i32 0, i32* %3
br label %79
79: ; preds = %70, %18
%80 = load i32, i32* %3
ret i32 %80
}

LLVM IR (-O2):
@SHM_RDONLY = global i32 0
@IPC_CREAT = global i32 0
@.str.1 = [4 x i8] c"%i\0A\00"
@str = [18 x i8] c"Passing arguments\00"
define i32 @main(i32 %0, i8** nocapture %1) {
%3 = icmp slt i32 %0, 2
br i1 %3, label %4, label %6
4: ; preds = %2
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([18 x i8], [18 x i8]* @str, i64 0, i64 0))
br label %301
6: ; preds = %2
%7 = getelementptr inbounds i8*, i8** %1, i64 1
%8 = load i8*, i8** %7
%9 = tail call i32 @atoi(i8* %8)
%10 = getelementptr inbounds i8*, i8** %1, i64 2
%11 = load i8*, i8** %10
%12 = tail call i32 @atoi(i8* %11)
%13 = tail call i32 @shmget(i32 %9, i32 1000, i32 432)
%14 = load i32, i32* @SHM_RDONLY
%15 = tail call i64 @shmat(i32 %13, i8* null, i32 %14)
%16 = inttoptr i64 %15 to i32*
%17 = tail call i32 @shmget(i32 %12, i32 1000, i32 432)
%18 = load i32, i32* @SHM_RDONLY
%19 = tail call i64 @shmat(i32 %17, i8* null, i32 %18)
%20 = inttoptr i64 %19 to i32*
%21 = load i32, i32* @IPC_CREAT
%22 = or i32 %21, 420
%23 = tail call i32 @shmget(i32 19900604, i32 1000, i32 %22)
%24 = tail call i64 @shmat(i32 %23, i8* null, i32 0)
%25 = inttoptr i64 %24 to i32*
%26 = inttoptr i64 %24 to i8*
%27 = inttoptr i64 %19 to i8*
%28 = inttoptr i64 %15 to i8*
%29 = getelementptr i32, i32* %25, i64 100
%30 = bitcast i32* %29 to i8*
%31 = getelementptr i32, i32* %16, i64 100
%32 = bitcast i32* %31 to i8*
%33 = getelementptr i32, i32* %20, i64 100
%34 = bitcast i32* %33 to i8*
%35 = icmp ult i8* %26, %32
%36 = icmp ult i8* %28, %30
%37 = and i1 %35, %36
%38 = icmp ult i8* %26, %34
%39 = icmp ult i8* %27, %30
%40 = and i1 %38, %39
%41 = or i1 %37, %40
br i1 %41, label %265, label %42
42: ; preds = %6
%43 = inttoptr i64 %15 to <4 x i32>*
%44 = load <4 x i32>, <4 x i32>* %43
%45 = inttoptr i64 %19 to <4 x i32>*
%46 = load <4 x i32>, <4 x i32>* %45
%47 = add nsw <4 x i32> %46, %44
%48 = inttoptr i64 %24 to <4 x i32>*
store <4 x i32> %47, <4 x i32>* %48
%49 = getelementptr inbounds i32, i32* %16, i64 4
%50 = bitcast i32* %49 to <4 x i32>*
%51 = load <4 x i32>, <4 x i32>* %50
%52 = getelementptr inbounds i32, i32* %20, i64 4
%53 = bitcast i32* %52 to <4 x i32>*
%54 = load <4 x i32>, <4 x i32>* %53
%55 = add nsw <4 x i32> %54, %51
%56 = getelementptr inbounds i32, i32* %25, i64 4
%57 = bitcast i32* %56 to <4 x i32>*
store <4 x i32> %55, <4 x i32>* %57
%58 = getelementptr inbounds i32, i32* %16, i64 8
%59 = bitcast i32* %58 to <4 x i32>*
%60 = load <4 x i32>, <4 x i32>* %59
%61 = getelementptr inbounds i32, i32* %20, i64 8
%62 = bitcast i32* %61 to <4 x i32>*
%63 = load <4 x i32>, <4 x i32>* %62
%64 = add nsw <4 x i32> %63, %60
%65 = getelementptr inbounds i32, i32* %25, i64 8
%66 = bitcast i32* %65 to <4 x i32>*
store <4 x i32> %64, <4 x i32>* %66
%67 = getelementptr inbounds i32, i32* %16, i64 12
%68 = bitcast i32* %67 to <4 x i32>*
%69 = load <4 x i32>, <4 x i32>* %68
%70 = getelementptr inbounds i32, i32* %20, i64 12
%71 = bitcast i32* %70 to <4 x i32>*
%72 = load <4 x i32>, <4 x i32>* %71
%73 = add nsw <4 x i32> %72, %69
%74 = getelementptr inbounds i32, i32* %25, i64 12
%75 = bitcast i32* %74 to <4 x i32>*
store <4 x i32> %73, <4 x i32>* %75
%76 = getelementptr inbounds i32, i32* %16, i64 16
%77 = bitcast i32* %76 to <4 x i32>*
%78 = load <4 x i32>, <4 x i32>* %77
%79 = getelementptr inbounds i32, i32* %20, i64 16
%80 = bitcast i32* %79 to <4 x i32>*
%81 = load <4 x i32>, <4 x i32>* %80
%82 = add nsw <4 x i32> %81, %78
%83 = getelementptr inbounds i32, i32* %25, i64 16
%84 = bitcast i32* %83 to <4 x i32>*
store <4 x i32> %82, <4 x i32>* %84
%85 = getelementptr inbounds i32, i32* %16, i64 20
%86 = bitcast i32* %85 to <4 x i32>*
%87 = load <4 x i32>, <4 x i32>* %86
%88 = getelementptr inbounds i32, i32* %20, i64 20
%89 = bitcast i32* %88 to <4 x i32>*
%90 = load <4 x i32>, <4 x i32>* %89
%91 = add nsw <4 x i32> %90, %87
%92 = getelementptr inbounds i32, i32* %25, i64 20
%93 = bitcast i32* %92 to <4 x i32>*
store <4 x i32> %91, <4 x i32>* %93
%94 = getelementptr inbounds i32, i32* %16, i64 24
%95 = bitcast i32* %94 to <4 x i32>*
%96 = load <4 x i32>, <4 x i32>* %95
%97 = getelementptr inbounds i32, i32* %20, i64 24
%98 = bitcast i32* %97 to <4 x i32>*
%99 = load <4 x i32>, <4 x i32>* %98
%100 = add nsw <4 x i32> %99, %96
%101 = getelementptr inbounds i32, i32* %25, i64 24
%102 = bitcast i32* %101 to <4 x i32>*
store <4 x i32> %100, <4 x i32>* %102
%103 = getelementptr inbounds i32, i32* %16, i64 28
%104 = bitcast i32* %103 to <4 x i32>*
%105 = load <4 x i32>, <4 x i32>* %104
%106 = getelementptr inbounds i32, i32* %20, i64 28
%107 = bitcast i32* %106 to <4 x i32>*
%108 = load <4 x i32>, <4 x i32>* %107
%109 = add nsw <4 x i32> %108, %105
%110 = getelementptr inbounds i32, i32* %25, i64 28
%111 = bitcast i32* %110 to <4 x i32>*
store <4 x i32> %109, <4 x i32>* %111
%112 = getelementptr inbounds i32, i32* %16, i64 32
%113 = bitcast i32* %112 to <4 x i32>*
%114 = load <4 x i32>, <4 x i32>* %113
%115 = getelementptr inbounds i32, i32* %20, i64 32
%116 = bitcast i32* %115 to <4 x i32>*
%117 = load <4 x i32>, <4 x i32>* %116
%118 = add nsw <4 x i32> %117, %114
%119 = getelementptr inbounds i32, i32* %25, i64 32
%120 = bitcast i32* %119 to <4 x i32>*
store <4 x i32> %118, <4 x i32>* %120
%121 = getelementptr inbounds i32, i32* %16, i64 36
%122 = bitcast i32* %121 to <4 x i32>*
%123 = load <4 x i32>, <4 x i32>* %122
%124 = getelementptr inbounds i32, i32* %20, i64 36
%125 = bitcast i32* %124 to <4 x i32>*
%126 = load <4 x i32>, <4 x i32>* %125
%127 = add nsw <4 x i32> %126, %123
%128 = getelementptr inbounds i32, i32* %25, i64 36
%129 = bitcast i32* %128 to <4 x i32>*
store <4 x i32> %127, <4 x i32>* %129
%130 = getelementptr inbounds i32, i32* %16, i64 40
%131 = bitcast i32* %130 to <4 x i32>*
%132 = load <4 x i32>, <4 x i32>* %131
%133 = getelementptr inbounds i32, i32* %20, i64 40
%134 = bitcast i32* %133 to <4 x i32>*
%135 = load <4 x i32>, <4 x i32>* %134
%136 = add nsw <4 x i32> %135, %132
%137 = getelementptr inbounds i32, i32* %25, i64 40
%138 = bitcast i32* %137 to <4 x i32>*
store <4 x i32> %136, <4 x i32>* %138
%139 = getelementptr inbounds i32, i32* %16, i64 44
%140 = bitcast i32* %139 to <4 x i32>*
%141 = load <4 x i32>, <4 x i32>* %140
%142 = getelementptr inbounds i32, i32* %20, i64 44
%143 = bitcast i32* %142 to <4 x i32>*
%144 = load <4 x i32>, <4 x i32>* %143
%145 = add nsw <4 x i32> %144, %141
%146 = getelementptr inbounds i32, i32* %25, i64 44
%147 = bitcast i32* %146 to <4 x i32>*
store <4 x i32> %145, <4 x i32>* %147
%148 = getelementptr inbounds i32, i32* %16, i64 48
%149 = bitcast i32* %148 to <4 x i32>*
%150 = load <4 x i32>, <4 x i32>* %149
%151 = getelementptr inbounds i32, i32* %20, i64 48
%152 = bitcast i32* %151 to <4 x i32>*
%153 = load <4 x i32>, <4 x i32>* %152
%154 = add nsw <4 x i32> %153, %150
%155 = getelementptr inbounds i32, i32* %25, i64 48
%156 = bitcast i32* %155 to <4 x i32>*
store <4 x i32> %154, <4 x i32>* %156
%157 = getelementptr inbounds i32, i32* %16, i64 52
%158 = bitcast i32* %157 to <4 x i32>*
%159 = load <4 x i32>, <4 x i32>* %158
%160 = getelementptr inbounds i32, i32* %20, i64 52
%161 = bitcast i32* %160 to <4 x i32>*
%162 = load <4 x i32>, <4 x i32>* %161
%163 = add nsw <4 x i32> %162, %159
%164 = getelementptr inbounds i32, i32* %25, i64 52
%165 = bitcast i32* %164 to <4 x i32>*
store <4 x i32> %163, <4 x i32>* %165
%166 = getelementptr inbounds i32, i32* %16, i64 56
%167 = bitcast i32* %166 to <4 x i32>*
%168 = load <4 x i32>, <4 x i32>* %167
%169 = getelementptr inbounds i32, i32* %20, i64 56
%170 = bitcast i32* %169 to <4 x i32>*
%171 = load <4 x i32>, <4 x i32>* %170
%172 = add nsw <4 x i32> %171, %168
%173 = getelementptr inbounds i32, i32* %25, i64 56
%174 = bitcast i32* %173 to <4 x i32>*
store <4 x i32> %172, <4 x i32>* %174
%175 = getelementptr inbounds i32, i32* %16, i64 60
%176 = bitcast i32* %175 to <4 x i32>*
%177 = load <4 x i32>, <4 x i32>* %176
%178 = getelementptr inbounds i32, i32* %20, i64 60
%179 = bitcast i32* %178 to <4 x i32>*
%180 = load <4 x i32>, <4 x i32>* %179
%181 = add nsw <4 x i32> %180, %177
%182 = getelementptr inbounds i32, i32* %25, i64 60
%183 = bitcast i32* %182 to <4 x i32>*
store <4 x i32> %181, <4 x i32>* %183
%184 = getelementptr inbounds i32, i32* %16, i64 64
%185 = bitcast i32* %184 to <4 x i32>*
%186 = load <4 x i32>, <4 x i32>* %185
%187 = getelementptr inbounds i32, i32* %20, i64 64
%188 = bitcast i32* %187 to <4 x i32>*
%189 = load <4 x i32>, <4 x i32>* %188
%190 = add nsw <4 x i32> %189, %186
%191 = getelementptr inbounds i32, i32* %25, i64 64
%192 = bitcast i32* %191 to <4 x i32>*
store <4 x i32> %190, <4 x i32>* %192
%193 = getelementptr inbounds i32, i32* %16, i64 68
%194 = bitcast i32* %193 to <4 x i32>*
%195 = load <4 x i32>, <4 x i32>* %194
%196 = getelementptr inbounds i32, i32* %20, i64 68
%197 = bitcast i32* %196 to <4 x i32>*
%198 = load <4 x i32>, <4 x i32>* %197
%199 = add nsw <4 x i32> %198, %195
%200 = getelementptr inbounds i32, i32* %25, i64 68
%201 = bitcast i32* %200 to <4 x i32>*
store <4 x i32> %199, <4 x i32>* %201
%202 = getelementptr inbounds i32, i32* %16, i64 72
%203 = bitcast i32* %202 to <4 x i32>*
%204 = load <4 x i32>, <4 x i32>* %203
%205 = getelementptr inbounds i32, i32* %20, i64 72
%206 = bitcast i32* %205 to <4 x i32>*
%207 = load <4 x i32>, <4 x i32>* %206
%208 = add nsw <4 x i32> %207, %204
%209 = getelementptr inbounds i32, i32* %25, i64 72
%210 = bitcast i32* %209 to <4 x i32>*
store <4 x i32> %208, <4 x i32>* %210
%211 = getelementptr inbounds i32, i32* %16, i64 76
%212 = bitcast i32* %211 to <4 x i32>*
%213 = load <4 x i32>, <4 x i32>* %212
%214 = getelementptr inbounds i32, i32* %20, i64 76
%215 = bitcast i32* %214 to <4 x i32>*
%216 = load <4 x i32>, <4 x i32>* %215
%217 = add nsw <4 x i32> %216, %213
%218 = getelementptr inbounds i32, i32* %25, i64 76
%219 = bitcast i32* %218 to <4 x i32>*
store <4 x i32> %217, <4 x i32>* %219
%220 = getelementptr inbounds i32, i32* %16, i64 80
%221 = bitcast i32* %220 to <4 x i32>*
%222 = load <4 x i32>, <4 x i32>* %221
%223 = getelementptr inbounds i32, i32* %20, i64 80
%224 = bitcast i32* %223 to <4 x i32>*
%225 = load <4 x i32>, <4 x i32>* %224
%226 = add nsw <4 x i32> %225, %222
%227 = getelementptr inbounds i32, i32* %25, i64 80
%228 = bitcast i32* %227 to <4 x i32>*
store <4 x i32> %226, <4 x i32>* %228
%229 = getelementptr inbounds i32, i32* %16, i64 84
%230 = bitcast i32* %229 to <4 x i32>*
%231 = load <4 x i32>, <4 x i32>* %230
%232 = getelementptr inbounds i32, i32* %20, i64 84
%233 = bitcast i32* %232 to <4 x i32>*
%234 = load <4 x i32>, <4 x i32>* %233
%235 = add nsw <4 x i32> %234, %231
%236 = getelementptr inbounds i32, i32* %25, i64 84
%237 = bitcast i32* %236 to <4 x i32>*
store <4 x i32> %235, <4 x i32>* %237
%238 = getelementptr inbounds i32, i32* %16, i64 88
%239 = bitcast i32* %238 to <4 x i32>*
%240 = load <4 x i32>, <4 x i32>* %239
%241 = getelementptr inbounds i32, i32* %20, i64 88
%242 = bitcast i32* %241 to <4 x i32>*
%243 = load <4 x i32>, <4 x i32>* %242
%244 = add nsw <4 x i32> %243, %240
%245 = getelementptr inbounds i32, i32* %25, i64 88
%246 = bitcast i32* %245 to <4 x i32>*
store <4 x i32> %244, <4 x i32>* %246
%247 = getelementptr inbounds i32, i32* %16, i64 92
%248 = bitcast i32* %247 to <4 x i32>*
%249 = load <4 x i32>, <4 x i32>* %248
%250 = getelementptr inbounds i32, i32* %20, i64 92
%251 = bitcast i32* %250 to <4 x i32>*
%252 = load <4 x i32>, <4 x i32>* %251
%253 = add nsw <4 x i32> %252, %249
%254 = getelementptr inbounds i32, i32* %25, i64 92
%255 = bitcast i32* %254 to <4 x i32>*
store <4 x i32> %253, <4 x i32>* %255
%256 = getelementptr inbounds i32, i32* %16, i64 96
%257 = bitcast i32* %256 to <4 x i32>*
%258 = load <4 x i32>, <4 x i32>* %257
%259 = getelementptr inbounds i32, i32* %20, i64 96
%260 = bitcast i32* %259 to <4 x i32>*
%261 = load <4 x i32>, <4 x i32>* %260
%262 = add nsw <4 x i32> %261, %258
%263 = getelementptr inbounds i32, i32* %25, i64 96
%264 = bitcast i32* %263 to <4 x i32>*
store <4 x i32> %262, <4 x i32>* %264
br label %296
265: ; preds = %6, %265
%266 = phi i64 [ %294, %265 ], [ 0, %6 ]
%267 = getelementptr inbounds i32, i32* %16, i64 %266
%268 = load i32, i32* %267
%269 = getelementptr inbounds i32, i32* %20, i64 %266
%270 = load i32, i32* %269
%271 = add nsw i32 %270, %268
%272 = getelementptr inbounds i32, i32* %25, i64 %266
store i32 %271, i32* %272
%273 = or i64 %266, 1
%274 = getelementptr inbounds i32, i32* %16, i64 %273
%275 = load i32, i32* %274
%276 = getelementptr inbounds i32, i32* %20, i64 %273
%277 = load i32, i32* %276
%278 = add nsw i32 %277, %275
%279 = getelementptr inbounds i32, i32* %25, i64 %273
store i32 %278, i32* %279
%280 = or i64 %266, 2
%281 = getelementptr inbounds i32, i32* %16, i64 %280
%282 = load i32, i32* %281
%283 = getelementptr inbounds i32, i32* %20, i64 %280
%284 = load i32, i32* %283
%285 = add nsw i32 %284, %282
%286 = getelementptr inbounds i32, i32* %25, i64 %280
store i32 %285, i32* %286
%287 = or i64 %266, 3
%288 = getelementptr inbounds i32, i32* %16, i64 %287
%289 = load i32, i32* %288
%290 = getelementptr inbounds i32, i32* %20, i64 %287
%291 = load i32, i32* %290
%292 = add nsw i32 %291, %289
%293 = getelementptr inbounds i32, i32* %25, i64 %287
store i32 %292, i32* %293
%294 = add nuw nsw i64 %266, 4
%295 = icmp eq i64 %294, 100
br i1 %295, label %296, label %265
296: ; preds = %265, %42
%297 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), i32 19900604)
%298 = tail call i32 @shmdt(i32* %16)
%299 = tail call i32 @shmdt(i32* %20)
%300 = tail call i32 @shmdt(i32* %25)
br label %301
301: ; preds = %296, %4
ret i32 0
}