// File: /workspace/github_cpp_makefile_star2_O3/tomfunkhouser[P]gaps/apps/grd2grd/grd2grd.cpp
// Function: main
static int 
ParseArgs(int argc, char **argv)
{
  // Check number of arguments
  if (argc < 2) {
    printf("Usage: grd2grd inputfile outputfile [-v]\n");
    exit(0);
  }

  // Parse arguments
  argc--; argv++;
  while (argc > 0) {
    if ((*argv)[0] == '-') {
      if (!strcmp(*argv, "-v")) {
        print_verbose = 1; 
      }
      else if (!strcmp(*argv, "-debug")) {
        print_debug = 1; 
      }
      else if (!strcmp(*argv, "-abs")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = ABS_OPERATION;
      }
      else if (!strcmp(*argv, "-square")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = SQUARE_OPERATION;
      }
      else if (!strcmp(*argv, "-sqrt")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = SQRT_OPERATION;
      }
      else if (!strcmp(*argv, "-negate")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = NEGATE_OPERATION;
      }
      else if (!strcmp(*argv, "-invert")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = INVERT_OPERATION;
      }
      else if (!strcmp(*argv, "-gradient_magnitude")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = GRADIENT_MAGNITUDE_OPERATION;
      }
      else if (!strcmp(*argv, "-normalize")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = NORMALIZE_OPERATION;
      }
      else if (!strcmp(*argv, "-edge_detect")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = EDGE_DETECT_OPERATION;
      }
      else if (!strcmp(*argv, "-signed_distance")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = SIGNED_DISTANCE_OPERATION;
      }
      else if (!strcmp(*argv, "-squared_distance")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = SQUARED_DISTANCE_OPERATION;
      }
      else if (!strcmp(*argv, "-voronoi")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = VORONOI_OPERATION;
      }
      else if (!strcmp(*argv, "-fill_holes")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = FILL_HOLES_OPERATION;
      }
      else if (!strcmp(*argv, "-clear")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = CLEAR_OPERATION;
        argc--; argv++; operation->operand1 = *argv; 
      }
      else if (!strcmp(*argv, "-add")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = ADD_OPERATION;
        argc--; argv++; operation->operand1 = *argv; 
      }
      else if (!strcmp(*argv, "-subtract")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = SUBTRACT_OPERATION;
        argc--; argv++; operation->operand1 = *argv; 
      }
      else if (!strcmp(*argv, "-multiply")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = MULTIPLY_OPERATION;
        argc--; argv++; operation->operand1 = *argv; 
      }
      else if (!strcmp(*argv, "-divide")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = DIVIDE_OPERATION;
        argc--; argv++; operation->operand1 = *argv; 
      }
      else if (!strcmp(*argv, "-pow")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = POW_OPERATION;
        argc--; argv++; operation->operand1 = *argv; 
      }
      else if (!strcmp(*argv, "-dilate")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = DILATE_OPERATION;
        argc--; argv++; operation->operand1 = *argv; 
      }
      else if (!strcmp(*argv, "-erode")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = ERODE_OPERATION;
        argc--; argv++; operation->operand1 = *argv; 
      }
      else if (!strcmp(*argv, "-blur")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = BLUR_OPERATION;
        argc--; argv++; operation->operand1 = *argv; 
      }
      else if (!strcmp(*argv, "-threshold")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = THRESHOLD_OPERATION;
        argc--; argv++; operation->operand1 = *argv; 
        argc--; argv++; operation->operand2 = *argv; 
        argc--; argv++; operation->operand3 = *argv; 
      }
      else if (!strcmp(*argv, "-resample")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = RESAMPLE_OPERATION;
        argc--; argv++; operation->operand1 = *argv; 
        argc--; argv++; operation->operand2 = *argv; 
        argc--; argv++; operation->operand3 = *argv; 
      }
      else if (!strcmp(*argv, "-add_grid")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = ADD_GRID_OPERATION;
        argc--; argv++; operation->operand1 = *argv;
      }
      else if (!strcmp(*argv, "-subtract_grid")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = SUBTRACT_GRID_OPERATION;
        argc--; argv++; operation->operand1 = *argv;
      }
      else if (!strcmp(*argv, "-multiply_grid")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = MULTIPLY_GRID_OPERATION;
        argc--; argv++; operation->operand1 = *argv;
      }
      else if (!strcmp(*argv, "-divide_grid")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = DIVIDE_GRID_OPERATION;
        argc--; argv++; operation->operand1 = *argv;
      }
      else if (!strcmp(*argv, "-mask_grid")) {
        assert(noperations < max_operations);
        Operation *operation = &operations[noperations++];
        operation->type = MASK_GRID_OPERATION;
        argc--; argv++; operation->operand1 = *argv;
      }
      else { 
        RNFail("Invalid program argument: %s", *argv); 
        exit(1); 
      }
    }
    else {
      if (!input_name) input_name = *argv;
      else if (!output_name) output_name = *argv;
      else { 
        RNFail("Invalid program argument: %s", *argv); 
        exit(1); 
      }
    }
    argv++; argc--;
  }

  // Check input filename
  if (!input_name) {
    RNFail("You did not specify an input file.\n");
    return 0;
  }

  // Check output filename
  if (!output_name) {
    RNFail("You did not specify an output file.\n");
    return 0;
  }

  // Return OK status 
  return 1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
cmpl $0x2, %edi
jl 0x117f5
movq %rsi, %r13
movl %edi, %ebp
movq 0xd50d1(%rip), %rax     # 0xe5c00
movq %rax, (%rsp)
movq 0xd5d5e(%rip), %rax     # 0xe6898
movq %rax, 0x8(%rsp)
movl 0xd5d4a(%rip), %r14d    # 0xe6890
leaq 0x8(%r13), %r15
leal -0x1(%rbp), %r12d
movq 0x8(%r13), %rbx
cmpb $0x2d, (%rbx)
jne 0x10e2a
cmpb $0x76, 0x1(%rbx)
jne 0x10b6b
cmpb $0x0, 0x2(%rbx)
je 0x10e8e
movq %rbx, %rdi
leaq 0x91503(%rip), %rsi     # 0xa2078
callq 0xe640
testl %eax, %eax
je 0x10e5e
movq %rbx, %rdi
leaq 0x914f3(%rip), %rsi     # 0xa207f
callq 0xe640
testl %eax, %eax
je 0x10e6a
movq %rbx, %rdi
leaq 0x914e1(%rip), %rsi     # 0xa2084
callq 0xe640
testl %eax, %eax
je 0x10e9a
movq %rbx, %rdi
leaq 0x914d2(%rip), %rsi     # 0xa208c
callq 0xe640
testl %eax, %eax
je 0x10ebe
movq %rbx, %rdi
leaq 0x914c1(%rip), %rsi     # 0xa2092
callq 0xe640
testl %eax, %eax
je 0x10ee2
movq %rbx, %rdi
leaq 0x914b2(%rip), %rsi     # 0xa209a
callq 0xe640
testl %eax, %eax
je 0x10f06
movq %rbx, %rdi
leaq 0x914a3(%rip), %rsi     # 0xa20a2
callq 0xe640
testl %eax, %eax
je 0x10f2a
movq %rbx, %rdi
leaq 0x914a0(%rip), %rsi     # 0xa20b6
callq 0xe640
testl %eax, %eax
je 0x10f4e
movq %rbx, %rdi
leaq 0x91494(%rip), %rsi     # 0xa20c1
callq 0xe640
testl %eax, %eax
je 0x10f72
movq %rbx, %rdi
leaq 0x9148a(%rip), %rsi     # 0xa20ce
callq 0xe640
testl %eax, %eax
je 0x10f96
movq %rbx, %rdi
leaq 0x91484(%rip), %rsi     # 0xa20df
callq 0xe640
testl %eax, %eax
je 0x10fb7
movq %rbx, %rdi
leaq 0x9147f(%rip), %rsi     # 0xa20f1
callq 0xe640
testl %eax, %eax
je 0x10fd8
movq %rbx, %rdi
leaq 0x91471(%rip), %rsi     # 0xa20fa
callq 0xe640
testl %eax, %eax
je 0x10ff9
movq %rbx, %rdi
leaq 0x91466(%rip), %rsi     # 0xa2106
callq 0xe640
testl %eax, %eax
je 0x11030
movq %rbx, %rdi
leaq 0x91456(%rip), %rsi     # 0xa210d
callq 0xe640
testl %eax, %eax
je 0x11054
movq %rbx, %rdi
leaq 0x91444(%rip), %rsi     # 0xa2112
callq 0xe640
testl %eax, %eax
je 0x11078
movq %rbx, %rdi
leaq 0x91437(%rip), %rsi     # 0xa211c
callq 0xe640
testl %eax, %eax
je 0x1109c
movq %rbx, %rdi
leaq 0x9142a(%rip), %rsi     # 0xa2126
callq 0xe640
testl %eax, %eax
je 0x110c0
movq %rbx, %rdi
leaq 0x9141b(%rip), %rsi     # 0xa212e
callq 0xe640
testl %eax, %eax
je 0x110e4
movq %rbx, %rdi
leaq 0x91409(%rip), %rsi     # 0xa2133
callq 0xe640
testl %eax, %eax
je 0x11105
movq %rbx, %rdi
leaq 0x913fa(%rip), %rsi     # 0xa213b
callq 0xe640
testl %eax, %eax
je 0x11126
movq %rbx, %rdi
leaq 0x913ea(%rip), %rsi     # 0xa2142
callq 0xe640
testl %eax, %eax
je 0x11147
movq %rbx, %rdi
leaq 0x913d9(%rip), %rsi     # 0xa2148
callq 0xe640
testl %eax, %eax
je 0x11184
movq %rbx, %rdi
leaq 0x913cd(%rip), %rsi     # 0xa2153
callq 0xe640
testl %eax, %eax
je 0x111a5
movq %rbx, %rdi
leaq 0x913c0(%rip), %rsi     # 0xa215d
callq 0xe640
testl %eax, %eax
je 0x111e0
movq %rbx, %rdi
leaq 0x913b3(%rip), %rsi     # 0xa2167
callq 0xe640
testl %eax, %eax
je 0x11204
movq %rbx, %rdi
leaq 0x913ab(%rip), %rsi     # 0xa2176
callq 0xe640
testl %eax, %eax
je 0x11228
movq %rbx, %rdi
leaq 0x913a3(%rip), %rsi     # 0xa2185
callq 0xe640
testl %eax, %eax
je 0x1124c
movq %rbx, %rdi
leaq 0x91399(%rip), %rsi     # 0xa2192
callq 0xe640
testl %eax, %eax
jne 0x117ba
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd5a7d(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4df2(%rip), %rsi     # 0xe5c10
movl $0x1c, (%rax,%rsi)
jmp 0x11166
cmpq $0x0, (%rsp)
je 0x10e4e
cmpq $0x0, 0x8(%rsp)
jne 0x117ba
movq %rbx, 0xd5a54(%rip)     # 0xe6898
movq %rbx, 0x8(%rsp)
jmp 0x1101b
movq %rbx, 0xd4dab(%rip)     # 0xe5c00
movq %rbx, (%rsp)
jmp 0x1101b
movb $0x1, 0xd5a3f(%rip)     # 0xe68a4
jmp 0x1101b
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd5a19(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4d8e(%rip), %rdx     # 0xe5c10
movl $0x1, (%rax,%rdx)
jmp 0x11018
movb $0x1, 0xd5a0b(%rip)     # 0xe68a0
jmp 0x1101b
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd59e9(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4d5e(%rip), %rdx     # 0xe5c10
movl $0x2, (%rax,%rdx)
jmp 0x11018
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd59c5(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4d3a(%rip), %rdx     # 0xe5c10
movl $0x3, (%rax,%rdx)
jmp 0x11018
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd59a1(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4d16(%rip), %rdx     # 0xe5c10
movl $0x4, (%rax,%rdx)
jmp 0x11018
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd597d(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4cf2(%rip), %rdx     # 0xe5c10
movl $0x5, (%rax,%rdx)
jmp 0x11018
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd5959(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4cce(%rip), %rdx     # 0xe5c10
movl $0x6, (%rax,%rdx)
jmp 0x11018
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd5935(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4caa(%rip), %rdx     # 0xe5c10
movl $0x7, (%rax,%rdx)
jmp 0x11018
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd5911(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4c86(%rip), %rdx     # 0xe5c10
movl $0x8, (%rax,%rdx)
jmp 0x11018
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd58ed(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4c62(%rip), %rdx     # 0xe5c10
movl $0x9, (%rax,%rdx)
jmp 0x11018
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd58cc(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4c41(%rip), %rdx     # 0xe5c10
movl $0xa, (%rax,%rdx)
jmp 0x11018
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd58ab(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4c20(%rip), %rdx     # 0xe5c10
movl $0xb, (%rax,%rdx)
jmp 0x11018
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd588a(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4bff(%rip), %rdx     # 0xe5c10
movl $0xc, (%rax,%rdx)
movl %ecx, %r14d
movl %r12d, %ebp
movq %r15, %r13
cmpl $0x1, %r12d
jg 0x10b46
jmp 0x11270
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd5853(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4bc8(%rip), %rsi     # 0xe5c10
movl $0xd, (%rax,%rsi)
jmp 0x11166
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd582f(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4ba4(%rip), %rsi     # 0xe5c10
movl $0xe, (%rax,%rsi)
jmp 0x11166
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd580b(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4b80(%rip), %rsi     # 0xe5c10
movl $0xf, (%rax,%rsi)
jmp 0x11166
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd57e7(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4b5c(%rip), %rsi     # 0xe5c10
movl $0x10, (%rax,%rsi)
jmp 0x11166
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd57c3(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4b38(%rip), %rsi     # 0xe5c10
movl $0x11, (%rax,%rsi)
jmp 0x11166
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd579f(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4b14(%rip), %rsi     # 0xe5c10
movl $0x12, (%rax,%rsi)
jmp 0x11166
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd577e(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4af3(%rip), %rsi     # 0xe5c10
movl $0x13, (%rax,%rsi)
jmp 0x11166
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd575d(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4ad2(%rip), %rsi     # 0xe5c10
movl $0x14, (%rax,%rsi)
jmp 0x11166
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd573c(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4ab1(%rip), %rsi     # 0xe5c10
movl $0x15, (%rax,%rsi)
addl $-0x2, %ebp
movq 0x10(%r13), %rdx
addq $0x10, %r13
movq %rdx, 0x8(%rax,%rsi)
movl %ecx, %r14d
movq %r13, %r15
movl %ebp, %r12d
jmp 0x1101b
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd56ff(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4a74(%rip), %rsi     # 0xe5c10
movl $0x16, (%rax,%rsi)
jmp 0x111c4
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd56de(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4a53(%rip), %rsi     # 0xe5c10
movl $0x17, (%rax,%rsi)
movups 0x10(%r13), %xmm0
movups %xmm0, 0x8(%rax,%rsi)
addl $-0x4, %ebp
movq 0x20(%r13), %rdx
addq $0x20, %r13
movq %rdx, 0x18(%rax,%rsi)
jmp 0x11176
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd56a3(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd4a18(%rip), %rsi     # 0xe5c10
movl $0x18, (%rax,%rsi)
jmp 0x11166
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd567f(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd49f4(%rip), %rsi     # 0xe5c10
movl $0x19, (%rax,%rsi)
jmp 0x11166
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd565b(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd49d0(%rip), %rsi     # 0xe5c10
movl $0x1a, (%rax,%rsi)
jmp 0x11166
movslq %r14d, %rax
leal 0x1(%r14), %ecx
movl %ecx, 0xd5637(%rip)     # 0xe6890
shlq $0x5, %rax
leaq 0xd49ac(%rip), %rsi     # 0xe5c10
movl $0x1b, (%rax,%rsi)
jmp 0x11166
cmpq $0x0, (%rsp)
je 0x11808
cmpq $0x0, 0x8(%rsp)
je 0x11811
movq (%rsp), %rdi
callq 0x11834
testq %rax, %rax
je 0x117eb
movq %rax, %rbx
movslq 0xd55ed(%rip), %r14     # 0xe6890
leaq 0x18(%rsp), %r15
movq %r15, %rdi
callq 0x6f740
movq %r15, %rdi
xorl %esi, %esi
callq 0xe760
testq %r14, %r14
jle 0x115d5
leaq 0x91226(%rip), %rax     # 0xa24f0
xorps %xmm0, %xmm0
cvtss2sd (%rax), %xmm0
movsd %xmm0, (%rsp)
leaq 0xd494b(%rip), %r12     # 0xe5c28
leaq 0x90d20(%rip), %rbp     # 0xa2004
xorl %r15d, %r15d
movl -0x18(%r12), %esi
leal -0x18(%rsi), %eax
cmpl $0x4, %eax
ja 0x11311
movq -0x10(%r12), %rdi
callq 0x11834
testq %rax, %rax
je 0x117d5
movq %rax, %r13
movl -0x18(%r12), %esi
jmp 0x11314
xorl %r13d, %r13d
cmpb $0x1, 0xd5589(%rip)     # 0xe68a4
jne 0x1135a
movq -0x10(%r12), %rdx
testq %rdx, %rdx
leaq 0x90fe5(%rip), %rax     # 0xa2311
cmoveq %rax, %rdx
movq -0x8(%r12), %rcx
testq %rcx, %rcx
cmoveq %rax, %rcx
movq (%r12), %r8
testq %r8, %r8
cmoveq %rax, %r8
leaq 0x90fa2(%rip), %rdi     # 0xa22f0
xorl %eax, %eax
callq 0xe070
movl -0x18(%r12), %esi
cmpl $0x1c, %esi
ja 0x11821
movl %esi, %eax
movslq (%rbp,%rax,4), %rax
addq %rbp, %rax
jmpq *%rax
movq %rbx, %rdi
movq %r13, %rsi
callq 0x15d82
jmp 0x115c5
movq -0x10(%r12), %rdi
callq 0xe580
movq %rbx, %rdi
callq 0x15d24
jmp 0x115c5
movq -0x10(%r12), %rdi
callq 0xe580
movq %rbx, %rdi
callq 0x1595c
jmp 0x115c5
movq %rbx, %rdi
xorl %esi, %esi
callq 0x15eec
jmp 0x115c5
movq %rbx, %rdi
callq 0x136de
jmp 0x115c5
movq %rbx, %rdi
movl $0x7fffffff, %esi       # imm = 0x7FFFFFFF
callq 0x15460
jmp 0x115c5
movq %rbx, %rdi
callq 0x1685e
jmp 0x115c5
movq %rbx, %rdi
movq %r13, %rsi
callq 0x15cf0
jmp 0x115c5
movq %rbx, %rdi
movq %r13, %rsi
callq 0x159b6
jmp 0x115c5
movq %rbx, %rdi
callq 0x136b4
jmp 0x115c5
movq -0x10(%r12), %rdi
callq 0xe580
movq %rbx, %rdi
callq 0x15cc6
jmp 0x115c5
movq %rbx, %rdi
callq 0x13662
jmp 0x115c5
movq %rbx, %rdi
callq 0x13864
jmp 0x115c5
movq %rbx, %rdi
callq 0x13634
jmp 0x115c5
movq -0x10(%r12), %rdi
callq 0xe580
movq %rbx, %rdi
callq 0x138f8
jmp 0x115c5
movq -0x10(%r12), %rdi
callq 0xe580
movq %rbx, %rdi
callq 0x13f9e
jmp 0x115c5
movq %rbx, %rdi
callq 0x1370c
jmp 0x115c5
movq -0x10(%r12), %rdi
callq 0xe580
movq %rbx, %rdi
callq 0x14036
jmp 0x115c5
movq -0x10(%r12), %rdi
callq 0xe580
movq %rbx, %rdi
callq 0x15888
jmp 0x115c5
movq %rbx, %rdi
callq 0x14da0
jmp 0x115c5
movq -0x10(%r12), %rdi
callq 0xe580
movq %rbx, %rdi
callq 0x15e48
jmp 0x115c5
movq %rbx, %rdi
callq 0x139a0
jmp 0x115c5
movq %rbx, %rdi
callq 0x14ee6
jmp 0x115c5
movq -0x8(%r12), %r13
leaq 0x90e0d(%rip), %rsi     # 0xa2313
movq %r13, %rdi
callq 0xe640
movsd (%rsp), %xmm0
testl %eax, %eax
je 0x1151f
movq %r13, %rdi
callq 0xe580
movsd %xmm0, 0x8(%rsp)
movq (%r12), %r13
leaq 0x90de3(%rip), %rsi     # 0xa2313
movq %r13, %rdi
callq 0xe640
movsd (%rsp), %xmm0
testl %eax, %eax
je 0x11549
movq %r13, %rdi
callq 0xe580
movsd %xmm0, 0x10(%rsp)
movq -0x10(%r12), %rdi
callq 0xe580
movq %rbx, %rdi
movsd 0x8(%rsp), %xmm1
movsd 0x10(%rsp), %xmm2
callq 0x13f58
jmp 0x115c5
movq -0x10(%r12), %rdi
callq 0xe580
movq %rbx, %rdi
callq 0x13948
jmp 0x115c5
movq -0x10(%r12), %rdi
callq 0xe700
movl %eax, 0x8(%rsp)
movq -0x8(%r12), %rdi
callq 0xe700
movl %eax, %r13d
movq (%r12), %rdi
callq 0xe700
movq %rbx, %rdi
movl 0x8(%rsp), %esi
movl %r13d, %edx
movl %eax, %ecx
callq 0x16ac6
jmp 0x115c5
movq %rbx, %rdi
movq %r13, %rsi
callq 0x15d4e
incq %r15
addq $0x20, %r12
cmpq %r15, %r14
jne 0x112e7
cmpb $0x1, 0xd52c4(%rip)     # 0xe68a0
jne 0x11727
leaq 0x90db8(%rip), %rdi     # 0xa23a1
callq 0xe6f0
leaq 0x18(%rsp), %rdi
callq 0x6f7a2
leaq 0x90c20(%rip), %rdi     # 0xa221f
movb $0x1, %al
callq 0xe070
leaq 0x90d38(%rip), %rdi     # 0xa2345
movl %r14d, %esi
xorl %eax, %eax
callq 0xe070
movl 0x238(%rbx), %esi
movl 0x23c(%rbx), %edx
movl 0x240(%rbx), %ecx
leaq 0x90c06(%rip), %rdi     # 0xa2236
xorl %eax, %eax
callq 0xe070
movsd 0x228(%rbx), %xmm0
leaq 0x90c09(%rip), %rdi     # 0xa224f
movb $0x1, %al
callq 0xe070
movq %rbx, %rdi
callq 0x1264c
leaq 0x90c03(%rip), %rdi     # 0xa225f
movl %eax, %esi
xorl %eax, %eax
callq 0xe070
movsd 0x228(%rbx), %xmm0
movsd %xmm0, (%rsp)
movq %rbx, %rdi
callq 0x1264c
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd (%rsp), %xmm1
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
mulsd %xmm1, %xmm0
leaq 0x90bda(%rip), %rdi     # 0xa2273
movb $0x1, %al
callq 0xe070
leaq 0x28(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0x1258e
movsd (%r14), %xmm0
leaq 0x90bc6(%rip), %rdi     # 0xa2282
movb $0x1, %al
callq 0xe070
movsd 0x8(%r14), %xmm0
leaq 0x90bc2(%rip), %rdi     # 0xa2292
movb $0x1, %al
callq 0xe070
movq %rbx, %rdi
callq 0x125f4
leaq 0x90bbc(%rip), %rdi     # 0xa22a2
movb $0x1, %al
callq 0xe070
movq %rbx, %rdi
callq 0x1261c
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x11705
sqrtsd %xmm0, %xmm0
jmp 0x1170a
callq 0xe340
leaq 0x90ba0(%rip), %rdi     # 0xa22b1
movb $0x1, %al
callq 0xe070
movq 0xd3851(%rip), %rax     # 0xe4f70
movq (%rax), %rdi
callq 0xe520
movq 0xd516a(%rip), %r14     # 0xe6898
leaq 0x18(%rsp), %r15
movq %r15, %rdi
callq 0x6f740
movq %r15, %rdi
xorl %esi, %esi
callq 0xe760
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1b0bc
movl %eax, %ebp
cmpb $0x1, 0xd5147(%rip)     # 0xe68a0
jne 0x117a5
leaq 0x90c56(%rip), %rdi     # 0xa23b8
callq 0xe6f0
leaq 0x18(%rsp), %rdi
callq 0x6f7a2
leaq 0x90aa7(%rip), %rdi     # 0xa221f
movb $0x1, %al
callq 0xe070
movl 0x24c(%rbx), %esi
shll $0x3, %esi
leaq 0x90bcb(%rip), %rdi     # 0xa235a
xorl %eax, %eax
callq 0xe070
movq 0xd37d3(%rip), %rax     # 0xe4f70
movq (%rax), %rdi
callq 0xe520
testl %ebp, %ebp
je 0x117eb
xorl %eax, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x909dc(%rip), %rdi     # 0xa219d
movq %rbx, %rsi
xorl %eax, %eax
callq 0x71ea2
movl $0x1, %edi
callq 0xe550
movq -0x10(%r12), %rsi
leaq 0x90adf(%rip), %rdi     # 0xa22c0
movl %r15d, %edx
xorl %eax, %eax
callq 0x71ea2
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0xe550
leaq 0x90b6e(%rip), %rdi     # 0xa236a
callq 0xe6f0
xorl %edi, %edi
callq 0xe550
leaq 0x909ab(%rip), %rdi     # 0xa21ba
jmp 0x11818
leaq 0x909c6(%rip), %rdi     # 0xa21de
xorl %eax, %eax
callq 0x71ea2
jmp 0x117eb
leaq 0x90af0(%rip), %rdi     # 0xa2318
movl %r15d, %edx
xorl %eax, %eax
callq 0x71ea2
jmp 0x117eb