#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 /*<<< orphan*/ FILE;

/* Variables and functions */
int /*<<< orphan*/ fprintf(int /*<<< orphan*/ *, char *, ...);
void output_temp(FILE *fp, int i, int aType, char *Id, int aCount) {
  if (aType == 0x5000) {
    fprintf(fp, "  vtkJavaVoidFuncArg *temp%i = new vtkJavaVoidFuncArg;\n", i);
    return;
  }
  if (((aType % 0x10) == 0x2) && (!((aType % 0x1000) / 0x100))) {
    return;
  }
  if ((i == 20) && (aType % 0x2000 >= 0x1000)) {
    fprintf(fp, "  const ");
  } else {
    fprintf(fp, "  ");
  }
  if ((aType % 0x100) / 0x10 == 0x1) {
    fprintf(fp, " unsigned ");
  }
  switch (aType % 0x10) {
  case 0x1:
    fprintf(fp, "float  ");
    break;
  case 0x7:
    fprintf(fp, "double ");
    break;
  case 0x4:
    fprintf(fp, "int    ");
    break;
  case 0x5:
    fprintf(fp, "short  ");
    break;
  case 0x6:
    fprintf(fp, "long   ");
    break;
  case 0x2:
    fprintf(fp, "void   ");
    break;
  case 0x3:
    fprintf(fp, "char   ");
    break;
  case 0xA:
    fprintf(fp, "vtkIdType ");
    break;
  case 0xB:
    fprintf(fp, "long long ");
    break;
  case 0xC:
    fprintf(fp, "__int64 ");
    break;
  case 0xD:
    fprintf(fp, "signed char ");
    break;
  case 0x9:
    fprintf(fp, "%s ", Id);
    break;
  case 0x8:
    return;
  }
  switch ((aType % 0x1000) / 0x100) {
  case 0x1:
    fprintf(fp, " *");
    break;
  case 0x2:
    fprintf(fp, "&&");
    break;
  case 0x3:
    if ((i == 20) || (aType % 0x10 == 0x9) || (aType % 0x1000 == 0x303)) {
      fprintf(fp, " *");
    }
    break;
  case 0x4:
    fprintf(fp, "&*");
    break;
  case 0x5:
    fprintf(fp, "*&");
    break;
  case 0x7:
    fprintf(fp, "**");
    break;
  default:
    fprintf(fp, "  ");
    break;
  }
  fprintf(fp, "temp%i", i);
  if ((aType % 0x1000 / 0x100 == 0x3) && (i != 20) && (aType % 0x10 != 0x9) &&
      (aType % 0x1000 != 0x303)) {
    fprintf(fp, "[%i]", aCount);
    fprintf(fp, ";\n  void *tempArray%i", i);
  }
  fprintf(fp, ";\n");
  if ((i == 20) && ((aType % 0x1000 == 0x309) || (aType % 0x1000 == 0x109))) {
    fprintf(fp, "  jobject tempH;\n");
  }
}


x86 assembly (clang, -O0):
<output_temp>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
cmpl   $0x5000,-0x10(%rbp)
jne    1151 <output_temp+0x41>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%edx
lea    0xf0b(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    156d <output_temp+0x45d>
mov    -0x10(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
cmp    $0x2,%edx
jne    1188 <output_temp+0x78>
mov    -0x10(%rbp),%eax
mov    $0x1000,%ecx
cltd
idiv   %ecx
mov    %edx,%eax
mov    $0x100,%ecx
cltd
idiv   %ecx
cmp    $0x0,%eax
jne    1188 <output_temp+0x78>
jmp    156d <output_temp+0x45d>
cmpl   $0x14,-0xc(%rbp)
jne    11c0 <output_temp+0xb0>
mov    -0x10(%rbp),%eax
mov    $0x2000,%ecx
cltd
idiv   %ecx
cmp    $0x1000,%edx
jl     11c0 <output_temp+0xb0>
mov    -0x8(%rbp),%rdi
lea    0xed4(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    11d2 <output_temp+0xc2>
mov    -0x8(%rbp),%rdi
lea    0xee6(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x10(%rbp),%eax
mov    $0x100,%ecx
cltd
idiv   %ecx
mov    %edx,%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
cmp    $0x1,%eax
jne    1202 <output_temp+0xf2>
mov    -0x8(%rbp),%rdi
lea    0xe96(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x10(%rbp),%ecx
mov    %ecx,%edx
add    $0xf,%edx
test   %ecx,%ecx
mov    %ecx,%eax
cmovs  %edx,%eax
not    %eax
or     $0xf,%eax
add    %ecx,%eax
mov    %eax,%ecx
mov    %rcx,-0x28(%rbp)
sub    $0xc,%eax
ja     1358 <output_temp+0x248>
mov    -0x28(%rbp),%rax
lea    0xdce(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x8(%rbp),%rdi
lea    0xe56(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    1358 <output_temp+0x248>
mov    -0x8(%rbp),%rdi
lea    0xe47(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    1358 <output_temp+0x248>
mov    -0x8(%rbp),%rdi
lea    0xe38(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    1358 <output_temp+0x248>
mov    -0x8(%rbp),%rdi
lea    0xe29(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    1358 <output_temp+0x248>
mov    -0x8(%rbp),%rdi
lea    0xe1a(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    1358 <output_temp+0x248>
mov    -0x8(%rbp),%rdi
lea    0xe0b(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    1358 <output_temp+0x248>
mov    -0x8(%rbp),%rdi
lea    0xdfc(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    1358 <output_temp+0x248>
mov    -0x8(%rbp),%rdi
lea    0xded(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    1358 <output_temp+0x248>
mov    -0x8(%rbp),%rdi
lea    0xde1(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    1358 <output_temp+0x248>
mov    -0x8(%rbp),%rdi
lea    0xdd5(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    1358 <output_temp+0x248>
mov    -0x8(%rbp),%rdi
lea    0xdc7(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    1358 <output_temp+0x248>
mov    -0x8(%rbp),%rdi
mov    -0x18(%rbp),%rdx
lea    0xdb9(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    1358 <output_temp+0x248>
jmp    156d <output_temp+0x45d>
mov    -0x10(%rbp),%esi
mov    %esi,%eax
add    $0xfff,%eax
test   %esi,%esi
mov    %esi,%ecx
cmovs  %eax,%ecx
and    $0xfffff000,%ecx
mov    %esi,%eax
sub    %ecx,%eax
neg    %ecx
mov    %ecx,%edx
mov    %esi,%ecx
lea    0xff(%rcx,%rdx,1),%ecx
test   %eax,%eax
cmovs  %ecx,%eax
sar    $0x8,%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x30(%rbp)
sub    $0x6,%eax
ja     146d <output_temp+0x35d>
mov    -0x30(%rbp),%rax
lea    0xc8f(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x8(%rbp),%rdi
lea    0xd4b(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    147f <output_temp+0x36f>
mov    -0x8(%rbp),%rdi
lea    0xd37(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    147f <output_temp+0x36f>
cmpl   $0x14,-0xc(%rbp)
je     1411 <output_temp+0x301>
mov    -0x10(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
cmp    $0x9,%edx
je     1411 <output_temp+0x301>
mov    -0x10(%rbp),%eax
mov    $0x1000,%ecx
cltd
idiv   %ecx
cmp    $0x303,%edx
jne    1423 <output_temp+0x313>
mov    -0x8(%rbp),%rdi
lea    0xce8(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    147f <output_temp+0x36f>
mov    -0x8(%rbp),%rdi
lea    0xcd7(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    147f <output_temp+0x36f>
mov    -0x8(%rbp),%rdi
lea    0xcc3(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    147f <output_temp+0x36f>
mov    -0x8(%rbp),%rdi
lea    0xcaf(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
jmp    147f <output_temp+0x36f>
mov    -0x8(%rbp),%rdi
lea    0xc39(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%edx
lea    0xc86(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x10(%rbp),%eax
mov    $0x1000,%ecx
cltd
idiv   %ecx
mov    %edx,%eax
mov    $0x100,%ecx
cltd
idiv   %ecx
cmp    $0x3,%eax
jne    1511 <output_temp+0x401>
cmpl   $0x14,-0xc(%rbp)
je     1511 <output_temp+0x401>
mov    -0x10(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
cmp    $0x9,%edx
je     1511 <output_temp+0x401>
mov    -0x10(%rbp),%eax
mov    $0x1000,%ecx
cltd
idiv   %ecx
cmp    $0x303,%edx
je     1511 <output_temp+0x401>
mov    -0x8(%rbp),%rdi
mov    -0x1c(%rbp),%edx
lea    0xc25(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
mov    -0xc(%rbp),%edx
lea    0xc15(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
mov    -0x8(%rbp),%rdi
lea    0xc28(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
cmpl   $0x14,-0xc(%rbp)
jne    156d <output_temp+0x45d>
mov    -0x10(%rbp),%eax
mov    $0x1000,%ecx
cltd
idiv   %ecx
cmp    $0x309,%edx
je     155b <output_temp+0x44b>
mov    -0x10(%rbp),%eax
mov    $0x1000,%ecx
cltd
idiv   %ecx
cmp    $0x109,%edx
jne    156d <output_temp+0x45d>
mov    -0x8(%rbp),%rdi
lea    0xbcf(%rip),%rsi
mov    $0x0,%al
call   1030 <fprintf@plt>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<output_temp>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %esi,%r12d
mov    %rdi,%r14
cmp    $0x5000,%edx
jne    115b <output_temp+0x3b>
lea    0xf10(%rip),%rsi
mov    %r14,%rdi
mov    %r12d,%edx
xor    %eax,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1030 <fprintf@plt>
mov    %r8d,%r15d
mov    %rcx,%r13
mov    %edx,%ebx
lea    0xf(%rbx),%eax
test   %edx,%edx
cmovns %edx,%eax
and    $0xfffffff0,%eax
mov    %edx,%ebp
sub    %eax,%ebp
cmp    $0x2,%ebp
jne    119b <output_temp+0x7b>
lea    0xfff(%rbx),%eax
test   %ebx,%ebx
cmovns %ebx,%eax
and    $0xfffff000,%eax
neg    %eax
add    %ebx,%eax
add    $0xff,%eax
cmp    $0x1ff,%eax
jb     13c9 <output_temp+0x2a9>
lea    0x1fff(%rbx),%eax
test   %ebx,%ebx
cmovns %ebx,%eax
cmp    $0x14,%r12d
jne    11cb <output_temp+0xab>
and    $0xffffe000,%eax
mov    %ebx,%ecx
sub    %eax,%ecx
cmp    $0x1000,%ecx
jl     11cb <output_temp+0xab>
lea    0xec4(%rip),%rdi
mov    $0x8,%esi
jmp    11d7 <output_temp+0xb7>
lea    0xedf(%rip),%rdi
mov    $0x2,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1040 <fwrite@plt>
lea    0xff(%rbx),%eax
test   %ebx,%ebx
cmovns %ebx,%eax
and    $0xffffff00,%eax
mov    %ebx,%ecx
sub    %eax,%ecx
and    $0xfffffff0,%ecx
cmp    $0x10,%ecx
jne    1219 <output_temp+0xf9>
lea    0xe8a(%rip),%rdi
mov    $0xa,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1040 <fwrite@plt>
lea    -0x1(%rbp),%eax
cmp    $0xc,%eax
ja     1280 <output_temp+0x160>
lea    0xdd8(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xe64(%rip),%rdi
jmp    126e <output_temp+0x14e>
lea    0xe83(%rip),%rdi
jmp    126e <output_temp+0x14e>
lea    0xe82(%rip),%rdi
jmp    126e <output_temp+0x14e>
lea    0xe59(%rip),%rdi
jmp    126e <output_temp+0x14e>
lea    0xe58(%rip),%rdi
jmp    126e <output_temp+0x14e>
lea    0xe57(%rip),%rdi
jmp    126e <output_temp+0x14e>
lea    0xe36(%rip),%rdi
mov    $0x7,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1040 <fwrite@plt>
lea    0xfff(%rbx),%eax
test   %ebx,%ebx
cmovns %ebx,%eax
and    $0xfffff000,%eax
mov    %ebx,%ecx
sub    %eax,%ebx
neg    %eax
add    %ecx,%eax
add    $0xff,%eax
test   %bx,%bx
cmovns %ebx,%eax
cwtl
sar    $0x8,%eax
add    $0xffffffff,%eax
cmp    $0x6,%eax
ja     12f6 <output_temp+0x1d6>
lea    0xe4e(%rip),%rdi
lea    0xd77(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0xe3a(%rip),%rdi
jmp    1306 <output_temp+0x1e6>
cmp    $0x303,%ebx
je     1306 <output_temp+0x1e6>
cmp    $0x14,%r12d
je     1306 <output_temp+0x1e6>
cmp    $0x9,%ebp
jne    1318 <output_temp+0x1f8>
jmp    1306 <output_temp+0x1e6>
lea    0xe1f(%rip),%rdi
jmp    1306 <output_temp+0x1e6>
lea    0xe19(%rip),%rdi
jmp    1306 <output_temp+0x1e6>
lea    0xdb4(%rip),%rdi
jmp    1306 <output_temp+0x1e6>
lea    0xe0a(%rip),%rdi
mov    $0x2,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1040 <fwrite@plt>
lea    0xdf4(%rip),%rsi
mov    %r14,%rdi
mov    %r12d,%edx
xor    %eax,%eax
call   1030 <fprintf@plt>
cmp    $0x303,%ebx
je     1375 <output_temp+0x255>
cmp    $0x9,%ebp
je     1375 <output_temp+0x255>
cmp    $0x14,%r12d
je     1375 <output_temp+0x255>
mov    %ebx,%eax
and    $0xffffff00,%eax
cmp    $0x300,%eax
jne    1375 <output_temp+0x255>
lea    0xdc6(%rip),%rsi
mov    %r14,%rdi
mov    %r15d,%edx
xor    %eax,%eax
call   1030 <fprintf@plt>
lea    0xdb7(%rip),%rsi
mov    %r14,%rdi
mov    %r12d,%edx
xor    %eax,%eax
call   1030 <fprintf@plt>
lea    0xdc8(%rip),%rdi
mov    $0x2,%esi
mov    $0x1,%edx
mov    %r14,%rcx
call   1040 <fwrite@plt>
cmp    $0x14,%r12d
jne    13c9 <output_temp+0x2a9>
or     $0x200,%ebx
cmp    $0x309,%ebx
jne    13c9 <output_temp+0x2a9>
lea    0xd8c(%rip),%rdi
mov    $0x11,%esi
mov    $0x1,%edx
mov    %r14,%rcx
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1040 <fwrite@plt>
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
lea    0xcf5(%rip),%rdi
mov    $0xa,%esi
jmp    1273 <output_temp+0x153>
lea    0xcef(%rip),%rdi
mov    $0xa,%esi
jmp    1273 <output_temp+0x153>
lea    0xce9(%rip),%rdi
mov    $0x8,%esi
jmp    1273 <output_temp+0x153>
lea    0xce1(%rip),%rdi
mov    $0xc,%esi
jmp    1273 <output_temp+0x153>
lea    0xcdd(%rip),%rsi
mov    %r14,%rdi
mov    %r13,%rdx
xor    %eax,%eax
call   1030 <fprintf@plt>
jmp    1280 <output_temp+0x160>

LLVM IR (-O0):
@.str = [56 x i8] c" vtkJavaVoidFuncArg *temp%i = new vtkJavaVoidFuncArg;\0A\00"
@.str.1 = [9 x i8] c" const \00"
@.str.2 = [3 x i8] c" \00"
@.str.3 = [11 x i8] c" unsigned \00"
@.str.4 = [8 x i8] c"float \00"
@.str.5 = [8 x i8] c"double \00"
@.str.6 = [8 x i8] c"int \00"
@.str.7 = [8 x i8] c"short \00"
@.str.8 = [8 x i8] c"long \00"
@.str.9 = [8 x i8] c"void \00"
@.str.10 = [8 x i8] c"char \00"
@.str.11 = [11 x i8] c"vtkIdType \00"
@.str.12 = [11 x i8] c"long long \00"
@.str.13 = [9 x i8] c"__int64 \00"
@.str.14 = [13 x i8] c"signed char \00"
@.str.15 = [4 x i8] c"%s \00"
@.str.16 = [3 x i8] c" *\00"
@.str.17 = [3 x i8] c"&&\00"
@.str.18 = [3 x i8] c"&*\00"
@.str.19 = [3 x i8] c"*&\00"
@.str.20 = [3 x i8] c"**\00"
@.str.21 = [7 x i8] c"temp%i\00"
@.str.22 = [5 x i8] c"[%i]\00"
@.str.23 = [22 x i8] c";\0A void *tempArray%i\00"
@.str.24 = [3 x i8] c";\0A\00"
@.str.25 = [18 x i8] c" jobject tempH;\0A\00"
define void @output_temp(i32* %0, i32 %1, i32 %2, i8* %3, i32 %4) {
%6 = alloca i32*
%7 = alloca i32
%8 = alloca i32
%9 = alloca i8*
%10 = alloca i32
store i32* %0, i32** %6
store i32 %1, i32* %7
store i32 %2, i32* %8
store i8* %3, i8** %9
store i32 %4, i32* %10
%11 = load i32, i32* %8
%12 = icmp eq i32 %11, 20480
br i1 %12, label %13, label %17
13: ; preds = %5
%14 = load i32*, i32** %6
%15 = load i32, i32* %7
%16 = call i32 (i32*, i8*, ...) @fprintf(i32* %14, i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str, i64 0, i64 0), i32 %15)
br label %168
17: ; preds = %5
%18 = load i32, i32* %8
%19 = srem i32 %18, 16
%20 = icmp eq i32 %19, 2
br i1 %20, label %21, label %27
21: ; preds = %17
%22 = load i32, i32* %8
%23 = srem i32 %22, 4096
%24 = sdiv i32 %23, 256
%25 = icmp ne i32 %24, 0
br i1 %25, label %27, label %26
26: ; preds = %21
br label %168
27: ; preds = %21, %17
%28 = load i32, i32* %7
%29 = icmp eq i32 %28, 20
br i1 %29, label %30, label %37
30: ; preds = %27
%31 = load i32, i32* %8
%32 = srem i32 %31, 8192
%33 = icmp sge i32 %32, 4096
br i1 %33, label %34, label %37
34: ; preds = %30
%35 = load i32*, i32** %6
%36 = call i32 (i32*, i8*, ...) @fprintf(i32* %35, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0))
br label %40
37: ; preds = %30, %27
%38 = load i32*, i32** %6
%39 = call i32 (i32*, i8*, ...) @fprintf(i32* %38, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0))
br label %40
40: ; preds = %37, %34
%41 = load i32, i32* %8
%42 = srem i32 %41, 256
%43 = sdiv i32 %42, 16
%44 = icmp eq i32 %43, 1
br i1 %44, label %45, label %48
45: ; preds = %40
%46 = load i32*, i32** %6
%47 = call i32 (i32*, i8*, ...) @fprintf(i32* %46, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.3, i64 0, i64 0))
br label %48
48: ; preds = %45, %40
%49 = load i32, i32* %8
%50 = srem i32 %49, 16
switch i32 %50, label %89 [
i32 1, label %51
i32 7, label %54
i32 4, label %57
i32 5, label %60
i32 6, label %63
i32 2, label %66
i32 3, label %69
i32 10, label %72
i32 11, label %75
i32 12, label %78
i32 13, label %81
i32 9, label %84
i32 8, label %88
]
51: ; preds = %48
%52 = load i32*, i32** %6
%53 = call i32 (i32*, i8*, ...) @fprintf(i32* %52, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0))
br label %89
54: ; preds = %48
%55 = load i32*, i32** %6
%56 = call i32 (i32*, i8*, ...) @fprintf(i32* %55, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0))
br label %89
57: ; preds = %48
%58 = load i32*, i32** %6
%59 = call i32 (i32*, i8*, ...) @fprintf(i32* %58, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.6, i64 0, i64 0))
br label %89
60: ; preds = %48
%61 = load i32*, i32** %6
%62 = call i32 (i32*, i8*, ...) @fprintf(i32* %61, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.7, i64 0, i64 0))
br label %89
63: ; preds = %48
%64 = load i32*, i32** %6
%65 = call i32 (i32*, i8*, ...) @fprintf(i32* %64, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0))
br label %89
66: ; preds = %48
%67 = load i32*, i32** %6
%68 = call i32 (i32*, i8*, ...) @fprintf(i32* %67, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.9, i64 0, i64 0))
br label %89
69: ; preds = %48
%70 = load i32*, i32** %6
%71 = call i32 (i32*, i8*, ...) @fprintf(i32* %70, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.10, i64 0, i64 0))
br label %89
72: ; preds = %48
%73 = load i32*, i32** %6
%74 = call i32 (i32*, i8*, ...) @fprintf(i32* %73, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.11, i64 0, i64 0))
br label %89
75: ; preds = %48
%76 = load i32*, i32** %6
%77 = call i32 (i32*, i8*, ...) @fprintf(i32* %76, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.12, i64 0, i64 0))
br label %89
78: ; preds = %48
%79 = load i32*, i32** %6
%80 = call i32 (i32*, i8*, ...) @fprintf(i32* %79, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.13, i64 0, i64 0))
br label %89
81: ; preds = %48
%82 = load i32*, i32** %6
%83 = call i32 (i32*, i8*, ...) @fprintf(i32* %82, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.14, i64 0, i64 0))
br label %89
84: ; preds = %48
%85 = load i32*, i32** %6
%86 = load i8*, i8** %9
%87 = call i32 (i32*, i8*, ...) @fprintf(i32* %85, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0), i8* %86)
br label %89
88: ; preds = %48
br label %168
89: ; preds = %48, %84, %81, %78, %75, %72, %69, %66, %63, %60, %57, %54, %51
%90 = load i32, i32* %8
%91 = srem i32 %90, 4096
%92 = sdiv i32 %91, 256
switch i32 %92, label %123 [
i32 1, label %93
i32 2, label %96
i32 3, label %99
i32 4, label %114
i32 5, label %117
i32 7, label %120
]
93: ; preds = %89
%94 = load i32*, i32** %6
%95 = call i32 (i32*, i8*, ...) @fprintf(i32* %94, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0))
br label %126
96: ; preds = %89
%97 = load i32*, i32** %6
%98 = call i32 (i32*, i8*, ...) @fprintf(i32* %97, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0))
br label %126
99: ; preds = %89
%100 = load i32, i32* %7
%101 = icmp eq i32 %100, 20
br i1 %101, label %110, label %102
102: ; preds = %99
%103 = load i32, i32* %8
%104 = srem i32 %103, 16
%105 = icmp eq i32 %104, 9
br i1 %105, label %110, label %106
106: ; preds = %102
%107 = load i32, i32* %8
%108 = srem i32 %107, 4096
%109 = icmp eq i32 %108, 771
br i1 %109, label %110, label %113
110: ; preds = %106, %102, %99
%111 = load i32*, i32** %6
%112 = call i32 (i32*, i8*, ...) @fprintf(i32* %111, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0))
br label %113
113: ; preds = %110, %106
br label %126
114: ; preds = %89
%115 = load i32*, i32** %6
%116 = call i32 (i32*, i8*, ...) @fprintf(i32* %115, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.18, i64 0, i64 0))
br label %126
117: ; preds = %89
%118 = load i32*, i32** %6
%119 = call i32 (i32*, i8*, ...) @fprintf(i32* %118, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0))
br label %126
120: ; preds = %89
%121 = load i32*, i32** %6
%122 = call i32 (i32*, i8*, ...) @fprintf(i32* %121, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0))
br label %126
123: ; preds = %89
%124 = load i32*, i32** %6
%125 = call i32 (i32*, i8*, ...) @fprintf(i32* %124, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0))
br label %126
126: ; preds = %123, %120, %117, %114, %113, %96, %93
%127 = load i32*, i32** %6
%128 = load i32, i32* %7
%129 = call i32 (i32*, i8*, ...) @fprintf(i32* %127, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.21, i64 0, i64 0), i32 %128)
%130 = load i32, i32* %8
%131 = srem i32 %130, 4096
%132 = sdiv i32 %131, 256
%133 = icmp eq i32 %132, 3
br i1 %133, label %134, label %152
134: ; preds = %126
%135 = load i32, i32* %7
%136 = icmp ne i32 %135, 20
br i1 %136, label %137, label %152
137: ; preds = %134
%138 = load i32, i32* %8
%139 = srem i32 %138, 16
%140 = icmp ne i32 %139, 9
br i1 %140, label %141, label %152
141: ; preds = %137
%142 = load i32, i32* %8
%143 = srem i32 %142, 4096
%144 = icmp ne i32 %143, 771
br i1 %144, label %145, label %152
145: ; preds = %141
%146 = load i32*, i32** %6
%147 = load i32, i32* %10
%148 = call i32 (i32*, i8*, ...) @fprintf(i32* %146, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.22, i64 0, i64 0), i32 %147)
%149 = load i32*, i32** %6
%150 = load i32, i32* %7
%151 = call i32 (i32*, i8*, ...) @fprintf(i32* %149, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.23, i64 0, i64 0), i32 %150)
br label %152
152: ; preds = %145, %141, %137, %134, %126
%153 = load i32*, i32** %6
%154 = call i32 (i32*, i8*, ...) @fprintf(i32* %153, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.24, i64 0, i64 0))
%155 = load i32, i32* %7
%156 = icmp eq i32 %155, 20
br i1 %156, label %157, label %168
157: ; preds = %152
%158 = load i32, i32* %8
%159 = srem i32 %158, 4096
%160 = icmp eq i32 %159, 777
br i1 %160, label %165, label %161
161: ; preds = %157
%162 = load i32, i32* %8
%163 = srem i32 %162, 4096
%164 = icmp eq i32 %163, 265
br i1 %164, label %165, label %168
165: ; preds = %161, %157
%166 = load i32*, i32** %6
%167 = call i32 (i32*, i8*, ...) @fprintf(i32* %166, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.25, i64 0, i64 0))
br label %168
168: ; preds = %13, %26, %88, %165, %161, %152
ret void
}

LLVM IR (-O2):
@.str = [56 x i8] c" vtkJavaVoidFuncArg *temp%i = new vtkJavaVoidFuncArg;\0A\00"
@.str.1 = [9 x i8] c" const \00"
@.str.2 = [3 x i8] c" \00"
@.str.3 = [11 x i8] c" unsigned \00"
@.str.4 = [8 x i8] c"float \00"
@.str.5 = [8 x i8] c"double \00"
@.str.6 = [8 x i8] c"int \00"
@.str.7 = [8 x i8] c"short \00"
@.str.8 = [8 x i8] c"long \00"
@.str.9 = [8 x i8] c"void \00"
@.str.10 = [8 x i8] c"char \00"
@.str.11 = [11 x i8] c"vtkIdType \00"
@.str.12 = [11 x i8] c"long long \00"
@.str.13 = [9 x i8] c"__int64 \00"
@.str.14 = [13 x i8] c"signed char \00"
@.str.15 = [4 x i8] c"%s \00"
@.str.16 = [3 x i8] c" *\00"
@.str.17 = [3 x i8] c"&&\00"
@.str.18 = [3 x i8] c"&*\00"
@.str.19 = [3 x i8] c"*&\00"
@.str.20 = [3 x i8] c"**\00"
@.str.21 = [7 x i8] c"temp%i\00"
@.str.22 = [5 x i8] c"[%i]\00"
@.str.23 = [22 x i8] c";\0A void *tempArray%i\00"
@.str.24 = [3 x i8] c";\0A\00"
@.str.25 = [18 x i8] c" jobject tempH;\0A\00"
define void @output_temp(i32* %0, i32 %1, i32 %2, i8* %3, i32 %4) {
%6 = icmp eq i32 %2, 20480
br i1 %6, label %7, label %9
7: ; preds = %5
%8 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([56 x i8], [56 x i8]* @.str, i64 0, i64 0), i32 %1)
br label %91
9: ; preds = %5
%10 = srem i32 %2, 16
%11 = icmp eq i32 %10, 2
br i1 %11, label %12, label %16
12: ; preds = %9
%13 = srem i32 %2, 4096
%14 = add nsw i32 %13, 255
%15 = icmp ult i32 %14, 511
br i1 %15, label %91, label %16
16: ; preds = %12, %9
%17 = icmp eq i32 %1, 20
%18 = srem i32 %2, 8192
%19 = icmp sgt i32 %18, 4095
%20 = and i1 %17, %19
br i1 %20, label %21, label %23
21: ; preds = %16
%22 = tail call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.1, i64 0, i64 0), i64 8, i64 1, i32* %0)
br label %25
23: ; preds = %16
%24 = tail call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i64 2, i64 1, i32* %0)
br label %25
25: ; preds = %23, %21
%26 = srem i32 %2, 256
%27 = and i32 %26, -16
%28 = icmp eq i32 %27, 16
br i1 %28, label %29, label %31
29: ; preds = %25
%30 = tail call i64 @fwrite(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.3, i64 0, i64 0), i64 10, i64 1, i32* %0)
br label %31
31: ; preds = %29, %25
switch i32 %10, label %56 [
i32 1, label %32
i32 7, label %34
i32 4, label %36
i32 5, label %38
i32 6, label %40
i32 2, label %42
i32 3, label %44
i32 10, label %46
i32 11, label %48
i32 12, label %50
i32 13, label %52
i32 9, label %54
i32 8, label %91
]
32: ; preds = %31
%33 = tail call i64 @fwrite(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.4, i64 0, i64 0), i64 7, i64 1, i32* %0)
br label %56
34: ; preds = %31
%35 = tail call i64 @fwrite(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.5, i64 0, i64 0), i64 7, i64 1, i32* %0)
br label %56
36: ; preds = %31
%37 = tail call i64 @fwrite(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.6, i64 0, i64 0), i64 7, i64 1, i32* %0)
br label %56
38: ; preds = %31
%39 = tail call i64 @fwrite(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.7, i64 0, i64 0), i64 7, i64 1, i32* %0)
br label %56
40: ; preds = %31
%41 = tail call i64 @fwrite(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.8, i64 0, i64 0), i64 7, i64 1, i32* %0)
br label %56
42: ; preds = %31
%43 = tail call i64 @fwrite(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.9, i64 0, i64 0), i64 7, i64 1, i32* %0)
br label %56
44: ; preds = %31
%45 = tail call i64 @fwrite(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.10, i64 0, i64 0), i64 7, i64 1, i32* %0)
br label %56
46: ; preds = %31
%47 = tail call i64 @fwrite(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.11, i64 0, i64 0), i64 10, i64 1, i32* %0)
br label %56
48: ; preds = %31
%49 = tail call i64 @fwrite(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.12, i64 0, i64 0), i64 10, i64 1, i32* %0)
br label %56
50: ; preds = %31
%51 = tail call i64 @fwrite(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.13, i64 0, i64 0), i64 8, i64 1, i32* %0)
br label %56
52: ; preds = %31
%53 = tail call i64 @fwrite(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.14, i64 0, i64 0), i64 12, i64 1, i32* %0)
br label %56
54: ; preds = %31
%55 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0), i8* %3)
br label %56
56: ; preds = %31, %54, %52, %50, %48, %46, %44, %42, %40, %38, %36, %34, %32
%57 = srem i32 %2, 4096
%58 = trunc i32 %57 to i16
%59 = sdiv i16 %58, 256
%60 = sext i16 %59 to i32
switch i32 %60, label %70 [
i32 1, label %71
i32 2, label %61
i32 3, label %62
i32 4, label %67
i32 5, label %68
i32 7, label %69
]
61: ; preds = %56
br label %71
62: ; preds = %56
%63 = icmp eq i32 %10, 9
%64 = or i1 %17, %63
%65 = icmp eq i32 %57, 771
%66 = or i1 %65, %64
br i1 %66, label %71, label %74
67: ; preds = %56
br label %71
68: ; preds = %56
br label %71
69: ; preds = %56
br label %71
70: ; preds = %56
br label %71
71: ; preds = %62, %56, %61, %67, %68, %69, %70
%72 = phi i8* [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), %70 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0), %69 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.19, i64 0, i64 0), %68 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.18, i64 0, i64 0), %67 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), %61 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0), %56 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0), %62 ]
%73 = tail call i64 @fwrite(i8* %72, i64 2, i64 1, i32* %0)
br label %74
74: ; preds = %71, %62
%75 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.21, i64 0, i64 0), i32 %1)
%76 = and i32 %57, -256
%77 = icmp ne i32 %76, 768
%78 = or i1 %17, %77
%79 = icmp eq i32 %10, 9
%80 = or i1 %79, %78
%81 = icmp eq i32 %57, 771
%82 = or i1 %81, %80
br i1 %82, label %86, label %83
83: ; preds = %74
%84 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.22, i64 0, i64 0), i32 %4)
%85 = tail call i32 (i32*, i8*, ...) @fprintf(i32* %0, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.23, i64 0, i64 0), i32 %1)
br label %86
86: ; preds = %83, %74
%87 = tail call i64 @fwrite(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.24, i64 0, i64 0), i64 2, i64 1, i32* %0)
br i1 %17, label %88, label %91
88: ; preds = %86
switch i32 %57, label %91 [
i32 777, label %89
i32 265, label %89
]
89: ; preds = %88, %88
%90 = tail call i64 @fwrite(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.25, i64 0, i64 0), i64 17, i64 1, i32* %0)
br label %91
91: ; preds = %88, %31, %12, %7, %89, %86
ret void
}