// File: tomfunkhouser[P]gaps/apps/prp2prp/prp2prp.cpp
// Function: ApplyOperation(gaps::R3MeshPropertySet*, gaps::R3MeshProperty*, char const*, int&, char**&, int)
static void
ApplyOperation(R3MeshPropertySet *properties, R3MeshProperty *property, const char *operation_name, 
  int& argc, char **& argv, RNBoolean update_name = TRUE)
{
  // Get convenient variables
  R3Mesh *mesh = property->Mesh();

  // Apply operation
  if (!strcmp(operation_name, "Test")) Test(property);
  else if (!strcmp(operation_name, "Abs")) property->Abs();
  else if (!strcmp(operation_name, "Sqrt")) property->Sqrt();
  else if (!strcmp(operation_name, "Square")) property->Square();
  else if (!strcmp(operation_name, "Negate")) property->Negate();
  else if (!strcmp(operation_name, "Invert")) property->Invert();
  else if (!strcmp(operation_name, "Clear")) property->Clear();
  else if (!strcmp(operation_name, "Normalize")) property->Normalize();
  else if (!strcmp(operation_name, "Percentile")) property->Percentilize();
  else if (!strcmp(operation_name, "Laplace")) property->Laplace();
  else if (!strcmp(operation_name, "Substitute")) {
    argc--; argv++; RNScalar current = atof(*argv);
    if (!strcmp(*argv, "unknown")) current = RN_UNKNOWN;
    else if (!strcmp(*argv, "infinity")) current = RN_INFINITY;
    argc--; argv++; RNScalar replacement = atof(*argv);
    if (!strcmp(*argv, "unknown")) replacement = RN_UNKNOWN;
    else if (!strcmp(*argv, "infinity")) replacement = RN_INFINITY;
    property->Substitute(current, replacement);
  }
  else if (!strcmp(operation_name, "Add")) {
    argc--; argv++; const char *operand = *argv;
    if (IsNumber(operand)) property->Add(atof(operand));
    else property->Add(GetProperty(properties, operand));
  }
  else if (!strcmp(operation_name, "Subtract")) {
    argc--; argv++; const char *operand = *argv;
    if (IsNumber(operand)) property->Subtract(atof(operand));
    else property->Subtract(GetProperty(properties, operand));
  }
  else if (!strcmp(operation_name, "Multiply")) {
    argc--; argv++; const char *operand = *argv;
    if (IsNumber(operand)) property->Multiply(atof(operand));
    else property->Multiply(GetProperty(properties, operand));
  }
  else if (!strcmp(operation_name, "Divide")) {
    argc--; argv++; const char *operand = *argv;
    if (IsNumber(operand)) property->Divide(atof(operand));
    else property->Divide(GetProperty(properties, operand));
  }
  else if (!strcmp(operation_name, "Pow")) {
    argc--; argv++; const char *operand = *argv;
    if (IsNumber(operand)) property->Pow(atof(operand));
    else property->Pow(GetProperty(properties, operand));
  }
  else if (!strcmp(operation_name, "Mask")) {
    argc--; argv++; const char *operand = *argv;
    property->Mask(GetProperty(properties, operand));
  }
  else if (!strcmp(operation_name, "Dilate")) {
    argc--; argv++; RNScalar radius = atof(*argv);
    property->Dilate(radius * Scale(mesh));
  }
  else if (!strcmp(operation_name, "Erode")) {
    argc--; argv++; RNScalar radius = atof(*argv);
    property->Erode(radius * Scale(mesh));
  }
  else if (!strcmp(operation_name, "NonExtremumSuppression")) {
    argc--; argv++; RNScalar radius = atof(*argv);
    property->NonExtremumSuppression(radius * Scale(mesh));
  }
  else if (!strcmp(operation_name, "NonMaximumSuppression")) {
    argc--; argv++; RNScalar radius = atof(*argv);
    property->NonMaximumSuppression(radius * Scale(mesh));
  }
  else if (!strcmp(operation_name, "NonMinimumSuppression")) {
    argc--; argv++; RNScalar radius = atof(*argv);
    property->NonMinimumSuppression(radius * Scale(mesh));
  }
  else if (!strcmp(operation_name, "Blur")) {
    argc--; argv++; RNScalar sigma = atof(*argv);
    property->Blur(sigma * Scale(mesh));
  }
  else if (!strcmp(operation_name, "DoG")) {
    argc--; argv++; RNScalar sigma = atof(*argv);
    property->DoG(sigma * Scale(mesh));
  }
  else if (!strcmp(operation_name, "Strength")) {
    argc--; argv++; RNScalar sigma = atof(*argv);
    property->Strength(sigma * Scale(mesh));
  }
  else if (!strcmp(operation_name, "Threshold")) {
    argc--; argv++; RNScalar threshold = atof(*argv);
    argc--; argv++; const char *below_str = *argv;
    argc--; argv++; const char *above_str = *argv;
    RNScalar below_value = RN_UNKNOWN;
    if (!strcmp(below_str, "keep")) below_value = R3_MESH_PROPERTY_KEEP_VALUE;
    else if (strcmp(below_str, "unknown")) below_value = atof(below_str);
    RNScalar above_value = RN_UNKNOWN;
    if (!strcmp(above_str, "keep")) above_value = R3_MESH_PROPERTY_KEEP_VALUE;
    else if (strcmp(above_str, "unknown")) above_value = atof(above_str);
    property->Threshold(threshold, below_value, above_value);
  }
  else { 
    RNFail("Unrecognized operation: %s\n", operation_name); 
    exit(-1); 
  }

  // Set new property name
  if (update_name) {
    char name[4096] = { '\0' };
    strcpy(name, property->Name());
    strcat(name, "_"); strcat(name, operation_name);
    property->SetName(name);
  }

  // Print message
  if (print_debug) {
    printf("  %s\n", property->Name());
    fflush(stdout);
  }
}

// Assembly:
subq $0x2bb8, %rsp           # imm = 0x2BB8
movq %rdi, 0x2bb0(%rsp)
movq %rsi, 0x2ba8(%rsp)
movq %rdx, 0x2ba0(%rsp)
movq %rcx, 0x2b98(%rsp)
movq %r8, 0x2b90(%rsp)
movl %r9d, 0x2b8c(%rsp)
movq 0x2ba8(%rsp), %rdi
callq 0x13720
movq %rax, 0x2b80(%rsp)
movq 0x2ba0(%rsp), %rdi
leaq 0x932b7(%rip), %rsi     # 0xa5342
callq 0xd590
cmpl $0x0, %eax
jne 0x120a7
movq 0x2ba8(%rsp), %rdi
callq 0x13210
jmp 0x1313f
movq 0x2ba0(%rsp), %rdi
leaq 0x93291(%rip), %rsi     # 0xa5347
callq 0xd590
cmpl $0x0, %eax
jne 0x120d2
movq 0x2ba8(%rsp), %rdi
callq 0x185a0
jmp 0x1313d
movq 0x2ba0(%rsp), %rdi
leaq 0x9326a(%rip), %rsi     # 0xa534b
callq 0xd590
cmpl $0x0, %eax
jne 0x120fd
movq 0x2ba8(%rsp), %rdi
callq 0x18640
jmp 0x1313b
movq 0x2ba0(%rsp), %rdi
leaq 0x93244(%rip), %rsi     # 0xa5350
callq 0xd590
cmpl $0x0, %eax
jne 0x12128
movq 0x2ba8(%rsp), %rdi
callq 0x18760
jmp 0x13139
movq 0x2ba0(%rsp), %rdi
leaq 0x93220(%rip), %rsi     # 0xa5357
callq 0xd590
cmpl $0x0, %eax
jne 0x12153
movq 0x2ba8(%rsp), %rdi
callq 0x18810
jmp 0x13137
movq 0x2ba0(%rsp), %rdi
leaq 0x931fc(%rip), %rsi     # 0xa535e
callq 0xd590
cmpl $0x0, %eax
jne 0x1217e
movq 0x2ba8(%rsp), %rdi
callq 0x188c0
jmp 0x13135
movq 0x2ba0(%rsp), %rdi
leaq 0x931d8(%rip), %rsi     # 0xa5365
callq 0xd590
cmpl $0x0, %eax
jne 0x121ac
movq 0x2ba8(%rsp), %rdi
xorps %xmm0, %xmm0
callq 0x18990
jmp 0x13133
movq 0x2ba0(%rsp), %rdi
leaq 0x931b0(%rip), %rsi     # 0xa536b
callq 0xd590
cmpl $0x0, %eax
jne 0x121d7
movq 0x2ba8(%rsp), %rdi
callq 0x19d00
jmp 0x13131
movq 0x2ba0(%rsp), %rdi
leaq 0x9318f(%rip), %rsi     # 0xa5375
callq 0xd590
cmpl $0x0, %eax
jne 0x12202
movq 0x2ba8(%rsp), %rdi
callq 0x19e70
jmp 0x1312f
movq 0x2ba0(%rsp), %rdi
leaq 0x9316f(%rip), %rsi     # 0xa5380
callq 0xd590
cmpl $0x0, %eax
jne 0x1222d
movq 0x2ba8(%rsp), %rdi
callq 0x1a070
jmp 0x1312d
movq 0x2ba0(%rsp), %rdi
leaq 0x9314c(%rip), %rsi     # 0xa5388
callq 0xd590
cmpl $0x0, %eax
jne 0x123b6
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0xd530
movsd %xmm0, 0x2b78(%rsp)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
leaq 0x930f7(%rip), %rsi     # 0xa5393
callq 0xd590
cmpl $0x0, %eax
jne 0x122b9
movsd 0x92d6a(%rip), %xmm0    # 0xa5018
movsd %xmm0, 0x2b78(%rsp)
jmp 0x122ee
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
leaq 0x930cd(%rip), %rsi     # 0xa539b
callq 0xd590
cmpl $0x0, %eax
jne 0x122ec
leaq 0xba8f1(%rip), %rax     # 0xccbd0
movsd (%rax), %xmm0
movsd %xmm0, 0x2b78(%rsp)
jmp 0x122ee
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0xd530
movsd %xmm0, 0x2b70(%rsp)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
leaq 0x93053(%rip), %rsi     # 0xa5393
callq 0xd590
cmpl $0x0, %eax
jne 0x1235d
movsd 0x92cc6(%rip), %xmm0    # 0xa5018
movsd %xmm0, 0x2b70(%rsp)
jmp 0x12392
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
leaq 0x93029(%rip), %rsi     # 0xa539b
callq 0xd590
cmpl $0x0, %eax
jne 0x12390
leaq 0xba84d(%rip), %rax     # 0xccbd0
movsd (%rax), %xmm0
movsd %xmm0, 0x2b70(%rsp)
jmp 0x12392
movq 0x2ba8(%rsp), %rdi
movsd 0x2b78(%rsp), %xmm0
movsd 0x2b70(%rsp), %xmm1
callq 0x18b60
jmp 0x1312b
movq 0x2ba0(%rsp), %rdi
leaq 0x92fdf(%rip), %rsi     # 0xa53a4
callq 0xd590
cmpl $0x0, %eax
jne 0x124d1
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rax
movq %rax, 0x2b68(%rsp)
movq 0x2b68(%rsp), %rdi
callq 0x132b0
cmpl $0x0, %eax
je 0x1244b
movq 0x2ba8(%rsp), %rax
movq %rax, 0x108(%rsp)
movq 0x2b68(%rsp), %rdi
callq 0xd530
movq 0x108(%rsp), %rdi
callq 0x18bf0
jmp 0x124cc
movq 0x2ba8(%rsp), %rax
movq %rax, 0xf8(%rsp)
movq 0x2bb0(%rsp), %rsi
movq 0x2b68(%rsp), %rdx
leaq 0x2720(%rsp), %rdi
movq %rdi, 0x100(%rsp)
callq 0x10020
movq 0xf8(%rsp), %rdi
movq 0x100(%rsp), %rsi
callq 0x18c90
jmp 0x12497
leaq 0x2720(%rsp), %rdi
callq 0x16e00
jmp 0x124cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2718(%rsp)
movl %eax, 0x2714(%rsp)
leaq 0x2720(%rsp), %rdi
callq 0x16e00
jmp 0x131fe
jmp 0x13129
movq 0x2ba0(%rsp), %rdi
leaq 0x92ec8(%rip), %rsi     # 0xa53a8
callq 0xd590
cmpl $0x0, %eax
jne 0x125ec
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rax
movq %rax, 0x2708(%rsp)
movq 0x2708(%rsp), %rdi
callq 0x132b0
cmpl $0x0, %eax
je 0x12566
movq 0x2ba8(%rsp), %rax
movq %rax, 0xf0(%rsp)
movq 0x2708(%rsp), %rdi
callq 0xd530
movq 0xf0(%rsp), %rdi
callq 0x18d70
jmp 0x125e7
movq 0x2ba8(%rsp), %rax
movq %rax, 0xe0(%rsp)
movq 0x2bb0(%rsp), %rsi
movq 0x2708(%rsp), %rdx
leaq 0x22c0(%rsp), %rdi
movq %rdi, 0xe8(%rsp)
callq 0x10020
movq 0xe0(%rsp), %rdi
movq 0xe8(%rsp), %rsi
callq 0x18e10
jmp 0x125b2
leaq 0x22c0(%rsp), %rdi
callq 0x16e00
jmp 0x125e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2718(%rsp)
movl %eax, 0x2714(%rsp)
leaq 0x22c0(%rsp), %rdi
callq 0x16e00
jmp 0x131fe
jmp 0x13127
movq 0x2ba0(%rsp), %rdi
leaq 0x92db6(%rip), %rsi     # 0xa53b1
callq 0xd590
cmpl $0x0, %eax
jne 0x12707
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rax
movq %rax, 0x22b8(%rsp)
movq 0x22b8(%rsp), %rdi
callq 0x132b0
cmpl $0x0, %eax
je 0x12681
movq 0x2ba8(%rsp), %rax
movq %rax, 0xd8(%rsp)
movq 0x22b8(%rsp), %rdi
callq 0xd530
movq 0xd8(%rsp), %rdi
callq 0x18ef0
jmp 0x12702
movq 0x2ba8(%rsp), %rax
movq %rax, 0xc8(%rsp)
movq 0x2bb0(%rsp), %rsi
movq 0x22b8(%rsp), %rdx
leaq 0x1e70(%rsp), %rdi
movq %rdi, 0xd0(%rsp)
callq 0x10020
movq 0xc8(%rsp), %rdi
movq 0xd0(%rsp), %rsi
callq 0x18f90
jmp 0x126cd
leaq 0x1e70(%rsp), %rdi
callq 0x16e00
jmp 0x12702
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2718(%rsp)
movl %eax, 0x2714(%rsp)
leaq 0x1e70(%rsp), %rdi
callq 0x16e00
jmp 0x131fe
jmp 0x13125
movq 0x2ba0(%rsp), %rdi
leaq 0x92ca4(%rip), %rsi     # 0xa53ba
callq 0xd590
cmpl $0x0, %eax
jne 0x12822
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rax
movq %rax, 0x1e68(%rsp)
movq 0x1e68(%rsp), %rdi
callq 0x132b0
cmpl $0x0, %eax
je 0x1279c
movq 0x2ba8(%rsp), %rax
movq %rax, 0xc0(%rsp)
movq 0x1e68(%rsp), %rdi
callq 0xd530
movq 0xc0(%rsp), %rdi
callq 0x19070
jmp 0x1281d
movq 0x2ba8(%rsp), %rax
movq %rax, 0xb0(%rsp)
movq 0x2bb0(%rsp), %rsi
movq 0x1e68(%rsp), %rdx
leaq 0x1a20(%rsp), %rdi
movq %rdi, 0xb8(%rsp)
callq 0x10020
movq 0xb0(%rsp), %rdi
movq 0xb8(%rsp), %rsi
callq 0x19120
jmp 0x127e8
leaq 0x1a20(%rsp), %rdi
callq 0x16e00
jmp 0x1281d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2718(%rsp)
movl %eax, 0x2714(%rsp)
leaq 0x1a20(%rsp), %rdi
callq 0x16e00
jmp 0x131fe
jmp 0x13123
movq 0x2ba0(%rsp), %rdi
leaq 0x92b90(%rip), %rsi     # 0xa53c1
callq 0xd590
cmpl $0x0, %eax
jne 0x1293d
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rax
movq %rax, 0x1a18(%rsp)
movq 0x1a18(%rsp), %rdi
callq 0x132b0
cmpl $0x0, %eax
je 0x128b7
movq 0x2ba8(%rsp), %rax
movq %rax, 0xa8(%rsp)
movq 0x1a18(%rsp), %rdi
callq 0xd530
movq 0xa8(%rsp), %rdi
callq 0x19220
jmp 0x12938
movq 0x2ba8(%rsp), %rax
movq %rax, 0x98(%rsp)
movq 0x2bb0(%rsp), %rsi
movq 0x1a18(%rsp), %rdx
leaq 0x15d0(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0x10020
movq 0x98(%rsp), %rdi
movq 0xa0(%rsp), %rsi
callq 0x192d0
jmp 0x12903
leaq 0x15d0(%rsp), %rdi
callq 0x16e00
jmp 0x12938
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2718(%rsp)
movl %eax, 0x2714(%rsp)
leaq 0x15d0(%rsp), %rdi
callq 0x16e00
jmp 0x131fe
jmp 0x13121
movq 0x2ba0(%rsp), %rdi
leaq 0x92a79(%rip), %rsi     # 0xa53c5
callq 0xd590
cmpl $0x0, %eax
jne 0x12a14
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
decl %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rax
movq %rax, 0x15c8(%rsp)
movq 0x2ba8(%rsp), %rax
movq %rax, 0x88(%rsp)
movq 0x2bb0(%rsp), %rsi
movq 0x15c8(%rsp), %rdx
leaq 0x1180(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0x10020
movq 0x88(%rsp), %rdi
movq 0x90(%rsp), %rsi
callq 0x18a80
jmp 0x129dc
leaq 0x1180(%rsp), %rdi
callq 0x16e00
jmp 0x1311f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x2718(%rsp)
movl %eax, 0x2714(%rsp)
leaq 0x1180(%rsp), %rdi
callq 0x16e00
jmp 0x131fe
movq 0x2ba0(%rsp), %rdi
leaq 0x929a7(%rip), %rsi     # 0xa53ca
callq 0xd590
cmpl $0x0, %eax
jne 0x12ab9
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0xd530
movsd %xmm0, 0x1178(%rsp)
movq 0x2ba8(%rsp), %rax
movq %rax, 0x78(%rsp)
movsd 0x1178(%rsp), %xmm0
movsd %xmm0, 0x80(%rsp)
movq 0x2b80(%rsp), %rdi
callq 0x133e0
movq 0x78(%rsp), %rdi
movaps %xmm0, %xmm1
movsd 0x80(%rsp), %xmm0
mulsd %xmm1, %xmm0
callq 0x1a1a0
jmp 0x1311d
movq 0x2ba0(%rsp), %rdi
leaq 0x92909(%rip), %rsi     # 0xa53d1
callq 0xd590
cmpl $0x0, %eax
jne 0x12b58
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0xd530
movsd %xmm0, 0x1170(%rsp)
movq 0x2ba8(%rsp), %rax
movq %rax, 0x68(%rsp)
movsd 0x1170(%rsp), %xmm0
movsd %xmm0, 0x70(%rsp)
movq 0x2b80(%rsp), %rdi
callq 0x133e0
movq 0x68(%rsp), %rdi
movaps %xmm0, %xmm1
movsd 0x70(%rsp), %xmm0
mulsd %xmm1, %xmm0
callq 0x1a440
jmp 0x1311b
movq 0x2ba0(%rsp), %rdi
leaq 0x92870(%rip), %rsi     # 0xa53d7
callq 0xd590
cmpl $0x0, %eax
jne 0x12bfe
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0xd530
movsd %xmm0, 0x1168(%rsp)
movq 0x2ba8(%rsp), %rax
movq %rax, 0x58(%rsp)
movsd 0x1168(%rsp), %xmm0
movsd %xmm0, 0x60(%rsp)
movq 0x2b80(%rsp), %rdi
callq 0x133e0
movq 0x58(%rsp), %rdi
movaps %xmm0, %xmm1
movsd 0x60(%rsp), %xmm0
mulsd %xmm1, %xmm0
movl $0x1, %edx
movl %edx, %esi
callq 0x195e0
jmp 0x13119
movq 0x2ba0(%rsp), %rdi
leaq 0x927e1(%rip), %rsi     # 0xa53ee
callq 0xd590
cmpl $0x0, %eax
jne 0x12c9d
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0xd530
movsd %xmm0, 0x1160(%rsp)
movq 0x2ba8(%rsp), %rax
movq %rax, 0x48(%rsp)
movsd 0x1160(%rsp), %xmm0
movsd %xmm0, 0x50(%rsp)
movq 0x2b80(%rsp), %rdi
callq 0x133e0
movq 0x48(%rsp), %rdi
movaps %xmm0, %xmm1
movsd 0x50(%rsp), %xmm0
mulsd %xmm1, %xmm0
callq 0x19a10
jmp 0x13117
movq 0x2ba0(%rsp), %rdi
leaq 0x92758(%rip), %rsi     # 0xa5404
callq 0xd590
cmpl $0x0, %eax
jne 0x12d3c
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0xd530
movsd %xmm0, 0x1158(%rsp)
movq 0x2ba8(%rsp), %rax
movq %rax, 0x38(%rsp)
movsd 0x1158(%rsp), %xmm0
movsd %xmm0, 0x40(%rsp)
movq 0x2b80(%rsp), %rdi
callq 0x133e0
movq 0x38(%rsp), %rdi
movaps %xmm0, %xmm1
movsd 0x40(%rsp), %xmm0
mulsd %xmm1, %xmm0
callq 0x19a40
jmp 0x13115
movq 0x2ba0(%rsp), %rdi
leaq 0x926cf(%rip), %rsi     # 0xa541a
callq 0xd590
cmpl $0x0, %eax
jne 0x12ddb
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0xd530
movsd %xmm0, 0x1150(%rsp)
movq 0x2ba8(%rsp), %rax
movq %rax, 0x28(%rsp)
movsd 0x1150(%rsp), %xmm0
movsd %xmm0, 0x30(%rsp)
movq 0x2b80(%rsp), %rdi
callq 0x133e0
movq 0x28(%rsp), %rdi
movaps %xmm0, %xmm1
movsd 0x30(%rsp), %xmm0
mulsd %xmm1, %xmm0
callq 0x1a5b0
jmp 0x13113
movq 0x2ba0(%rsp), %rdi
leaq 0x92635(%rip), %rsi     # 0xa541f
callq 0xd590
cmpl $0x0, %eax
jne 0x12e7a
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0xd530
movsd %xmm0, 0x1148(%rsp)
movq 0x2ba8(%rsp), %rax
movq %rax, 0x18(%rsp)
movsd 0x1148(%rsp), %xmm0
movsd %xmm0, 0x20(%rsp)
movq 0x2b80(%rsp), %rdi
callq 0x133e0
movq 0x18(%rsp), %rdi
movaps %xmm0, %xmm1
movsd 0x20(%rsp), %xmm0
mulsd %xmm1, %xmm0
callq 0x1a9f0
jmp 0x13111
movq 0x2ba0(%rsp), %rdi
leaq 0x9259a(%rip), %rsi     # 0xa5423
callq 0xd590
cmpl $0x0, %eax
jne 0x12f19
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0xd530
movsd %xmm0, 0x1140(%rsp)
movq 0x2ba8(%rsp), %rax
movq %rax, 0x8(%rsp)
movsd 0x1140(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movq 0x2b80(%rsp), %rdi
callq 0x133e0
movq 0x8(%rsp), %rdi
movaps %xmm0, %xmm1
movsd 0x10(%rsp), %xmm0
mulsd %xmm1, %xmm0
callq 0x1aa90
jmp 0x1310f
movq 0x2ba0(%rsp), %rdi
leaq 0x92504(%rip), %rsi     # 0xa542c
callq 0xd590
cmpl $0x0, %eax
jne 0x130ed
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0xd530
movsd %xmm0, 0x1138(%rsp)
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rax
movq %rax, 0x1130(%rsp)
movq 0x2b98(%rsp), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rcx
addq $0x8, %rcx
movq %rcx, (%rax)
movq 0x2b90(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rax
movq %rax, 0x1128(%rsp)
movsd 0x9202f(%rip), %xmm0    # 0xa5018
movsd %xmm0, 0x1120(%rsp)
movq 0x1130(%rsp), %rdi
leaq 0x92435(%rip), %rsi     # 0xa5436
callq 0xd590
cmpl $0x0, %eax
jne 0x13021
leaq 0x92b6e(%rip), %rax     # 0xa5b80
movsd (%rax), %xmm0
movsd %xmm0, 0x1120(%rsp)
jmp 0x13052
movq 0x1130(%rsp), %rdi
leaq 0x92363(%rip), %rsi     # 0xa5393
callq 0xd590
cmpl $0x0, %eax
je 0x13050
movq 0x1130(%rsp), %rdi
callq 0xd530
movsd %xmm0, 0x1120(%rsp)
jmp 0x13052
movsd 0x91fbe(%rip), %xmm0    # 0xa5018
movsd %xmm0, 0x1118(%rsp)
movq 0x1128(%rsp), %rdi
leaq 0x923c4(%rip), %rsi     # 0xa5436
callq 0xd590
cmpl $0x0, %eax
jne 0x13092
leaq 0x92afd(%rip), %rax     # 0xa5b80
movsd (%rax), %xmm0
movsd %xmm0, 0x1118(%rsp)
jmp 0x130c3
movq 0x1128(%rsp), %rdi
leaq 0x922f2(%rip), %rsi     # 0xa5393
callq 0xd590
cmpl $0x0, %eax
je 0x130c1
movq 0x1128(%rsp), %rdi
callq 0xd530
movsd %xmm0, 0x1118(%rsp)
jmp 0x130c3
movq 0x2ba8(%rsp), %rdi
movsd 0x1138(%rsp), %xmm0
movsd 0x1120(%rsp), %xmm1
movsd 0x1118(%rsp), %xmm2
callq 0x19a70
jmp 0x1310d
movq 0x2ba0(%rsp), %rsi
leaq 0x9233f(%rip), %rdi     # 0xa543b
movb $0x0, %al
callq 0xa4cd0
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0xd510
jmp 0x1310f
jmp 0x13111
jmp 0x13113
jmp 0x13115
jmp 0x13117
jmp 0x13119
jmp 0x1311b
jmp 0x1311d
jmp 0x1311f
jmp 0x13121
jmp 0x13123
jmp 0x13125
jmp 0x13127
jmp 0x13129
jmp 0x1312b
jmp 0x1312d
jmp 0x1312f
jmp 0x13131
jmp 0x13133
jmp 0x13135
jmp 0x13137
jmp 0x13139
jmp 0x1313b
jmp 0x1313d
jmp 0x1313f
cmpl $0x0, 0x2b8c(%rsp)
je 0x131c0
leaq 0x110(%rsp), %rdi
xorl %esi, %esi
movl $0x1000, %edx           # imm = 0x1000
callq 0xd220
leaq 0x110(%rsp), %rax
movq %rax, (%rsp)
movq 0x2ba8(%rsp), %rdi
callq 0x13600
movq (%rsp), %rdi
movq %rax, %rsi
callq 0xd3a0
leaq 0x110(%rsp), %rdi
leaq 0x922c6(%rip), %rsi     # 0xa5457
callq 0xd6f0
leaq 0x110(%rsp), %rdi
movq 0x2ba0(%rsp), %rsi
callq 0xd6f0
movq 0x2ba8(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x19cc0
cmpl $0x0, 0xb9a25(%rip)     # 0xccbec
je 0x131f6
movq 0x2ba8(%rsp), %rdi
callq 0x13600
movq %rax, %rsi
leaq 0x92279(%rip), %rdi     # 0xa5459
movb $0x0, %al
callq 0xd070
movq 0xb8db2(%rip), %rax     # 0xcbfa0
movq (%rax), %rdi
callq 0xd4e0
addq $0x2bb8, %rsp           # imm = 0x2BB8
retq
movq 0x2718(%rsp), %rdi
callq 0xd6d0
nopl (%rax,%rax)