
double GenerateDifferentialNoise
                 (RandomInfo *random_info,Quantum pixel,NoiseType noise_type,double attenuate)

{
  uint in_a2;
  double dVar1;
  undefined4 in_f13;
  double in_stack_00000010;
  
  dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)(CONCAT44(in_f13,pixel));
  if (in_a2 < 8) {
                    /* WARNING: Could not emulate address calculation at 0x000e82e8 */
                    /* WARNING: Treating indirect jump as call */
    dVar1 = (double)(*(code *)(&_gp + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +
                                              in_a2 * 4 + 0x79c0)))();
    return dVar1;
  }
  return in_stack_00000010 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *
         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +
         (double)(float)noise_type;
}



double FUN_000e8274(undefined4 param_1,float param_2,uint param_3,undefined4 param_4,double param_5)

{
  double dVar1;
  
  dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)();
  if (param_3 < 8) {
                    /* WARNING: Could not emulate address calculation at 0x000e82e8 */
                    /* WARNING: Treating indirect jump as call */
    dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +
                                                param_3 * 4 + 0x79c0)))();
    return dVar1;
  }
  return param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *
         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +
         (double)param_2;
}


lui gp,0x2d
addiu gp,gp,-0x79c4
addu gp,gp,t9
addiu sp,sp,-0x78
lw t9,-0x7a44(gp)
sdc1 f22,0x58(sp)
sw gp,0x10(sp)
sdc1 f28,0x70(sp)
sw s1,0x40(sp)
or s1,a0,zero
sdc1 f26,0x68(sp)
sw s0,0x3c(sp)
or s0,a2,zero
sdc1 f24,0x60(sp)
sw a1,0x24(sp)
sdc1 f20,0x50(sp)
sw ra,0x4c(sp)
sw s3,0x48(sp)
sw s2,0x44(sp)
jalr t9
_ldc1 f22,0x88(sp)
sltiu v0,s0,0x8
lw gp,0x10(sp)
sdc1 f0,0x18(sp)
beq v0,zero,0x000e863c
_lw a1,0x24(sp)
lw a2,-0x7fc8(gp)
sll s0,s0,0x2
addiu a2,a2,0x79c0
addu a2,a2,s0
lw v0,0x0(a2)
addu v0,v0,gp
jr v0
_nop
lw v0,-0x7fd0(gp)
ldc1 f2,0x18(sp)
ldc1 f0,0x1a58(v0)
mul.D f0,f22,f0
mul.D f0,f0,f2
lw ra,0x4c(sp)
lw s3,0x48(sp)
lw s2,0x44(sp)
lw s1,0x40(sp)
lw s0,0x3c(sp)
ldc1 f28,0x70(sp)
ldc1 f26,0x68(sp)
ldc1 f24,0x60(sp)
ldc1 f22,0x58(sp)
ldc1 f20,0x50(sp)
jr ra
_addiu sp,sp,0x78
lw v1,0x1c(sp)
lw a0,0x18(sp)
mtc1 v1,f2
ext v0,a0,0x0,0x1f
lw a0,-0x7fd0(gp)
ldc1 f0,0x13f8(a0)
mthc1 v0,f2
c.lt.D f2,f0
bc1f 0x000e86d4
_lw t9,-0x7a44(gp)
or a0,s1,zero
jalr t9
_sw a1,0x18(sp)
lw gp,0x10(sp)
mov.D f20,f0
lw a1,0x18(sp)
lw v0,-0x7fd0(gp)
ldc1 f24,0x1a88(v0)
lw v0,-0x7fc8(gp)
addiu a3,sp,0x28
lw t9,-0x78f8(gp)
addiu a2,sp,0x30
sw a1,0x18(sp)
ldc1 f12,0x34a0(v0)
jalr t9
_mul.D f12,f20,f12
lw a1,0x18(sp)
ldc1 f26,0x28(sp)
lw gp,0x10(sp)
mtc1 a1,f0
mul.D f26,f26,f24
cvt.d.S f20,f0
mtc1 zero,f0
sqrt.D f28,f20
mthc1 zero,f0
c.ule.D f0,f20
ldc1 f0,0x30(sp)
bc1f 0x2,0x000e8840
_mul.D f24,f0,f24
lw v0,-0x7fc8(gp)
lw ra,0x4c(sp)
lw s3,0x48(sp)
ldc1 f12,0x7bd0(v0)
lw v0,-0x7fc8(gp)
lw s2,0x44(sp)
lw s1,0x40(sp)
ldc1 f0,0x7bd8(v0)
lw v0,-0x7fd0(gp)
lw s0,0x3c(sp)
mul.D f12,f22,f12
mul.D f0,f22,f0
ldc1 f22,0x1a58(v0)
mul.D f12,f12,f28
ldc1 f28,0x70(sp)
mul.D f0,f0,f22
ldc1 f22,0x58(sp)
madd.D f12,f20,f12,f26
ldc1 f26,0x68(sp)
ldc1 f20,0x50(sp)
madd.D f0,f12,f0,f24
ldc1 f24,0x60(sp)
jr ra
_addiu sp,sp,0x78
lw v0,-0x7fd0(gp)
ldc1 f2,0x18(sp)
ldc1 f0,0x13f8(v0)
c.lt.D f0,f2
bc1t 0x000e8744
_lw v0,-0x7fd0(gp)
ldc1 f24,0x1438(v0)
lw t9,-0x7a44(gp)
or a0,s1,zero
jalr t9
_sw a1,0x18(sp)
lw gp,0x10(sp)
lw a1,0x18(sp)
lw v0,-0x7fc8(gp)
mtc1 a1,f2
lw t9,-0x7598(gp)
ldc1 f12,0x34a0(v0)
cvt.d.S f20,f2
jalr t9
_mul.D f12,f0,f12
lw gp,0x10(sp)
lw ra,0x4c(sp)
lw s3,0x48(sp)
lw s2,0x44(sp)
lw v0,-0x7fd0(gp)
lw s1,0x40(sp)
lw s0,0x3c(sp)
ldc1 f12,0x1400(v0)
ldc1 f28,0x70(sp)
ldc1 f26,0x68(sp)
mul.D f2,f22,f12
ldc1 f22,0x58(sp)
mul.D f2,f2,f20
mul.D f2,f2,f24
ldc1 f24,0x60(sp)
mul.D f0,f2,f0
madd.D f0,f20,f0,f12
ldc1 f20,0x50(sp)
jr ra
_addiu sp,sp,0x78
lw v0,-0x7fd0(gp)
ldc1 f0,0x18(sp)
ldc1 f20,0x1400(v0)
c.le.D f0,f20
bc1f 0x5,0x000e86a0
_lw v0,-0x7fd0(gp)
lw v0,-0x7fd0(gp)
ldc1 f2,0x18(sp)
ldc1 f0,0x13f8(v0)
c.le.D f2,f0
bc1f 0x6,0x000e87a4
_lw v0,-0x7fd0(gp)
mtc1 a1,f2
lwc1 f0,0x1a50(v0)
sub.S S f0,f2,f0
b 0x000e8310
_cvt.d.S f0,f0
lw v0,-0x7fc8(gp)
ldc1 f2,0x18(sp)
ldc1 f0,-0x3dc8(v0)
lw v0,-0x7fd0(gp)
mul.D f0,f22,f0
ldc1 f22,0x1400(v0)
mul.D f0,f0,f22
c.lt.D f2,f0
bc1t 0x3,0x000e8738
_lw v0,-0x7fd0(gp)
ldc1 f22,0x1438(v0)
sub.D D f0,f22,f0
c.le.D f0,f2
bc1f 0x4,0x000e8798
_lw v0,-0x7fd0(gp)
b 0x000e8310
_ldc1 f0,0x1a58(v0)
lw a0,-0x7fc8(gp)
mtc1 a1,f0
lw t9,-0x7324(gp)
ldc1 f2,0x4f38(a0)
lui a0,0x8000
cvt.d.S f12,f0
mul.D f0,f22,f2
mfc1 s3,f0
mfhc1 s2,f0
mtc1 s3,f0
xor v0,s2,a0
lw a0,-0x7fd0(gp)
ldc1 f2,0x1440(a0)
mthc1 v0,f0
mul.D f2,f0,f2
jalr t9
_mul.D f12,f2,f12
mov.D f20,f0
ldc1 f0,0x18(sp)
c.lt.D f20,f0
bc1f 0x2,0x000e8834
_lw gp,0x10(sp)
or s0,zero,zero
lw t9,-0x7a44(gp)
or a0,s1,zero
jalr t9
_addiu s0,s0,0x1
ldc1 f2,0x18(sp)
lw gp,0x10(sp)
mul.D f0,f2,f0
c.lt.D f20,f0
bc1t 0x3,0x000e85c0
_sdc1 f0,0x18(sp)
mtc1 s0,f0
lw v0,-0x7fd0(gp)
lwc1 f12,0x1a50(v0)
cvt.s.W f0,f0
mul.S f0,f0,f12
cvt.d.S f0,f0
lw ra,0x4c(sp)
mtc1 s3,f2
lw s1,0x40(sp)
lw s3,0x48(sp)
lw s0,0x3c(sp)
ldc1 f28,0x70(sp)
ldc1 f26,0x68(sp)
ldc1 f24,0x60(sp)
mthc1 s2,f2
lw s2,0x44(sp)
ldc1 f22,0x58(sp)
ldc1 f20,0x50(sp)
addiu sp,sp,0x78
jr ra
_div.D f0,f0,f2
mtc1 a1,f0
lw v0,-0x7fc8(gp)
ldc1 f2,0x18(sp)
lw ra,0x4c(sp)
lw s3,0x48(sp)
lw s2,0x44(sp)
lw s1,0x40(sp)
lw s0,0x3c(sp)
ldc1 f28,0x70(sp)
cvt.d.S f12,f0
ldc1 f0,0x7bd0(v0)
lw v0,-0x7fd0(gp)
ldc1 f26,0x68(sp)
ldc1 f4,0x1400(v0)
lw v0,-0x7fd0(gp)
ldc1 f24,0x60(sp)
mul.D f0,f22,f0
ldc1 f22,0x1a58(v0)
ldc1 f20,0x50(sp)
sub.D D f4,f2,f4
mul.D f0,f0,f22
ldc1 f22,0x58(sp)
addiu sp,sp,0x78
jr ra
_madd.D f0,f12,f0,f4
ldc1 f0,0x18(sp)
ldc1 f12,0x1438(v0)
lw v0,-0x7fc8(gp)
sub.D D f12,f12,f0
ldc1 f0,0x7be8(v0)
c.le.D f12,f0
bc1f 0x7,0x000e87ec
_lw v0,-0x7fd0(gp)
mtc1 a1,f2
lwc1 f0,0x1a50(v0)
add.S f0,f2,f0
b 0x000e8310
_cvt.d.S f0,f0
or a0,s1,zero
jalr t9
_sw a1,0x24(sp)
ldc1 f12,0x18(sp)
lw gp,0x10(sp)
lw t9,-0x79d8(gp)
jalr t9
_mov.D f20,f0
mtc1 zero,f2
lw gp,0x10(sp)
lw a1,0x24(sp)
lw v0,-0x7fd0(gp)
ldc1 f12,0x1430(v0)
mthc1 zero,f2
mul.D f0,f0,f12
c.ule.D f2,f0
bc1t 0x1,0x000e8388
_sqrt.D f24,f0
mov.D f12,f0
lw t9,-0x7430(gp)
jalr t9
_sw a1,0x18(sp)
lw gp,0x10(sp)
b 0x000e8388
_lw a1,0x18(sp)
mtc1 zero,f0
b 0x000e8310
_mthc1 zero,f0
mov.D f12,f2
lw t9,-0x79d8(gp)
jalr t9
_sw a1,0x24(sp)
mtc1 zero,f2
lw gp,0x10(sp)
lw a1,0x24(sp)
lw v0,-0x7fd0(gp)
ldc1 f12,0x1430(v0)
mthc1 zero,f2
mul.D f0,f0,f12
c.ule.D f2,f0
bc1t 0x1,0x000e8458
_sqrt.D f24,f0
mov.D f12,f0
lw t9,-0x7430(gp)
jalr t9
_sw a1,0x18(sp)
lw gp,0x10(sp)
b 0x000e8458
_lw a1,0x18(sp)
mtc1 a1,f0
b 0x000e8310
_cvt.d.S f0,f0
ldc1 f0,0x18(sp)
lw t9,-0x79d8(gp)
sw a1,0x24(sp)
jalr t9
_add.D f12,f0,f0
lw a1,0x24(sp)
lw gp,0x10(sp)
mtc1 a1,f2
lw v0,-0x7fc8(gp)
cvt.d.S f12,f2
ldc1 f2,0x7be0(v0)
lw v0,-0x7fd0(gp)
mul.D f2,f22,f2
ldc1 f22,0x1a58(v0)
mul.D f22,f2,f22
madd.D f0,f12,f22,f0
b 0x000e8310
_add.D f0,f0,f20
add.D f12,f12,f12
lw t9,-0x79d8(gp)
jalr t9
_sw a1,0x18(sp)
lw a1,0x18(sp)
lw gp,0x10(sp)
mtc1 a1,f2
lw v0,-0x7fc8(gp)
cvt.d.S f12,f2
ldc1 f2,0x7be0(v0)
lw v0,-0x7fd0(gp)
mul.D f2,f22,f2
ldc1 f22,0x1a58(v0)
mul.D f22,f2,f22
mul.D f0,f22,f0
sub.D D f0,f12,f0
b 0x000e8310
_add.D f0,f0,f20
mtc1 zero,f0
b 0x000e8600
_mthc1 zero,f0
lw t9,-0x7430(gp)
jalr t9
_mov.D f12,f20
b 0x000e83dc
_lw gp,0x10(sp)
(translation_unit "double FUN_000e8274(undefined4 param_1,float param_2,uint param_3,undefined4 param_4,double param_5)\n\n{\n  double dVar1;\n  \n  dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)();\n  if (param_3 < 8) {\n                    /* WARNING: Could not emulate address calculation at 0x000e82e8 */\n                    /* WARNING: Treating indirect jump as call */\n    dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))();\n    return dVar1;\n  }\n  return param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)param_2;\n}\n\n" (function_definition "double FUN_000e8274(undefined4 param_1,float param_2,uint param_3,undefined4 param_4,double param_5)\n\n{\n  double dVar1;\n  \n  dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)();\n  if (param_3 < 8) {\n                    /* WARNING: Could not emulate address calculation at 0x000e82e8 */\n                    /* WARNING: Treating indirect jump as call */\n    dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))();\n    return dVar1;\n  }\n  return param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)param_2;\n}" primitive_type (function_declarator "FUN_000e8274(undefined4 param_1,float param_2,uint param_3,undefined4 param_4,double param_5)" identifier (parameter_list "(undefined4 param_1,float param_2,uint param_3,undefined4 param_4,double param_5)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "float param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "double param_5" primitive_type identifier) ))) (compound_statement "{\n  double dVar1;\n  \n  dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)();\n  if (param_3 < 8) {\n                    /* WARNING: Could not emulate address calculation at 0x000e82e8 */\n                    /* WARNING: Treating indirect jump as call */\n    dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))();\n    return dVar1;\n  }\n  return param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)param_2;\n}" { (declaration "double dVar1;" primitive_type identifier ;) (expression_statement "dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)();" (assignment_expression "dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)()" identifier = (cast_expression "(double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)()" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)PTR_GetPseudoRandomValue_003a8e6c)()" (parenthesized_expression "(*(code *)PTR_GetPseudoRandomValue_003a8e6c)" ( (pointer_expression "*(code *)PTR_GetPseudoRandomValue_003a8e6c" * (cast_expression "(code *)PTR_GetPseudoRandomValue_003a8e6c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (if_statement "if (param_3 < 8) {\n                    /* WARNING: Could not emulate address calculation at 0x000e82e8 */\n                    /* WARNING: Treating indirect jump as call */\n    dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))();\n    return dVar1;\n  }" if (parenthesized_expression "(param_3 < 8)" ( (binary_expression "param_3 < 8" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x000e82e8 */\n                    /* WARNING: Treating indirect jump as call */\n    dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))();\n    return dVar1;\n  }" { comment comment (expression_statement "dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))();" (assignment_expression "dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))()" identifier = (cast_expression "(double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))()" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0))" * (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0))" ( (binary_expression "&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)" * (cast_expression "(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)" ( (binary_expression "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0" (binary_expression "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4" identifier + (binary_expression "param_3 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return dVar1;" return identifier ;) })) (return_statement "return param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)param_2;" return (binary_expression "param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)param_2" (binary_expression "param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400))" (binary_expression "param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58)" (binary_expression "param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0)" identifier * (pointer_expression "*(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0)" * (cast_expression "(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0)" ( (binary_expression "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0" identifier + number_literal) ))))) * (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1a58)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1a58)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1a58)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1a58" identifier + number_literal) ))))) * (parenthesized_expression "(dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400))" ( (binary_expression "dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)" identifier - (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1400)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1400)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1400)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1400" identifier + number_literal) ))))) ))) + (cast_expression "(double)param_2" ( (type_descriptor "double" primitive_type) ) identifier)) ;) })))
(translation_unit "double GenerateDifferentialNoise\n                 (RandomInfo *random_info,Quantum pixel,NoiseType noise_type,double attenuate)\n\n{\n  uint in_a2;\n  double dVar1;\n  undefined4 in_f13;\n  double in_stack_00000010;\n  \n  dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)(CONCAT44(in_f13,pixel));\n  if (in_a2 < 8) {\n                    /* WARNING: Could not emulate address calculation at 0x000e82e8 */\n                    /* WARNING: Treating indirect jump as call */\n    dVar1 = (double)(*(code *)(&_gp + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4 + 0x79c0)))();\n    return dVar1;\n  }\n  return in_stack_00000010 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)(float)noise_type;\n}\n\n" (function_definition "double GenerateDifferentialNoise\n                 (RandomInfo *random_info,Quantum pixel,NoiseType noise_type,double attenuate)\n\n{\n  uint in_a2;\n  double dVar1;\n  undefined4 in_f13;\n  double in_stack_00000010;\n  \n  dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)(CONCAT44(in_f13,pixel));\n  if (in_a2 < 8) {\n                    /* WARNING: Could not emulate address calculation at 0x000e82e8 */\n                    /* WARNING: Treating indirect jump as call */\n    dVar1 = (double)(*(code *)(&_gp + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4 + 0x79c0)))();\n    return dVar1;\n  }\n  return in_stack_00000010 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)(float)noise_type;\n}" primitive_type (function_declarator "GenerateDifferentialNoise\n                 (RandomInfo *random_info,Quantum pixel,NoiseType noise_type,double attenuate)" identifier (parameter_list "(RandomInfo *random_info,Quantum pixel,NoiseType noise_type,double attenuate)" ( (parameter_declaration "RandomInfo *random_info" type_identifier (pointer_declarator "*random_info" * identifier)) , (parameter_declaration "Quantum pixel" type_identifier identifier) , (parameter_declaration "NoiseType noise_type" type_identifier identifier) , (parameter_declaration "double attenuate" primitive_type identifier) ))) (compound_statement "{\n  uint in_a2;\n  double dVar1;\n  undefined4 in_f13;\n  double in_stack_00000010;\n  \n  dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)(CONCAT44(in_f13,pixel));\n  if (in_a2 < 8) {\n                    /* WARNING: Could not emulate address calculation at 0x000e82e8 */\n                    /* WARNING: Treating indirect jump as call */\n    dVar1 = (double)(*(code *)(&_gp + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4 + 0x79c0)))();\n    return dVar1;\n  }\n  return in_stack_00000010 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)(float)noise_type;\n}" { (declaration "uint in_a2;" type_identifier identifier ;) (declaration "double dVar1;" primitive_type identifier ;) (declaration "undefined4 in_f13;" type_identifier identifier ;) (declaration "double in_stack_00000010;" primitive_type identifier ;) (expression_statement "dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)(CONCAT44(in_f13,pixel));" (assignment_expression "dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)(CONCAT44(in_f13,pixel))" identifier = (cast_expression "(double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)(CONCAT44(in_f13,pixel))" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)PTR_GetPseudoRandomValue_003a8e6c)(CONCAT44(in_f13,pixel))" (parenthesized_expression "(*(code *)PTR_GetPseudoRandomValue_003a8e6c)" ( (pointer_expression "*(code *)PTR_GetPseudoRandomValue_003a8e6c" * (cast_expression "(code *)PTR_GetPseudoRandomValue_003a8e6c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(CONCAT44(in_f13,pixel))" ( (call_expression "CONCAT44(in_f13,pixel)" identifier (argument_list "(in_f13,pixel)" ( identifier , identifier ))) ))))) ;) (if_statement "if (in_a2 < 8) {\n                    /* WARNING: Could not emulate address calculation at 0x000e82e8 */\n                    /* WARNING: Treating indirect jump as call */\n    dVar1 = (double)(*(code *)(&_gp + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4 + 0x79c0)))();\n    return dVar1;\n  }" if (parenthesized_expression "(in_a2 < 8)" ( (binary_expression "in_a2 < 8" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x000e82e8 */\n                    /* WARNING: Treating indirect jump as call */\n    dVar1 = (double)(*(code *)(&_gp + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4 + 0x79c0)))();\n    return dVar1;\n  }" { comment comment (expression_statement "dVar1 = (double)(*(code *)(&_gp + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4 + 0x79c0)))();" (assignment_expression "dVar1 = (double)(*(code *)(&_gp + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4 + 0x79c0)))()" identifier = (cast_expression "(double)(*(code *)(&_gp + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4 + 0x79c0)))()" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)(&_gp + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4 + 0x79c0)))()" (parenthesized_expression "(*(code *)(&_gp + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4 + 0x79c0)))" ( (pointer_expression "*(code *)(&_gp + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4 + 0x79c0))" * (cast_expression "(code *)(&_gp + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4 + 0x79c0))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4 + 0x79c0))" ( (binary_expression "&_gp + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4 + 0x79c0)" (pointer_expression "&_gp" & identifier) + (pointer_expression "*(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4 + 0x79c0)" * (cast_expression "(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4 + 0x79c0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4 + 0x79c0)" ( (binary_expression "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4 + 0x79c0" (binary_expression "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                              in_a2 * 4" identifier + (binary_expression "in_a2 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return dVar1;" return identifier ;) })) (return_statement "return in_stack_00000010 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)(float)noise_type;" return (binary_expression "in_stack_00000010 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)(float)noise_type" (binary_expression "in_stack_00000010 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400))" (binary_expression "in_stack_00000010 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58)" (binary_expression "in_stack_00000010 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0)" identifier * (pointer_expression "*(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0)" * (cast_expression "(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0)" ( (binary_expression "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0" identifier + number_literal) ))))) * (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1a58)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1a58)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1a58)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1a58" identifier + number_literal) ))))) * (parenthesized_expression "(dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400))" ( (binary_expression "dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)" identifier - (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1400)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1400)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1400)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1400" identifier + number_literal) ))))) ))) + (cast_expression "(double)(float)noise_type" ( (type_descriptor "double" primitive_type) ) (cast_expression "(float)noise_type" ( (type_descriptor "float" primitive_type) ) identifier))) ;) })))
(translation_unit "double FUN_000e8274(undefined4 param_1,float param_2,uint param_3,undefined4 param_4,double param_5)\n\n{\n  double dVar1;\n  \n  dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)();\n  if (param_3 < 8) {\n                    \n                    \n    dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))();\n    return dVar1;\n  }\n  return param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)param_2;\n}\n\n" (function_definition "double FUN_000e8274(undefined4 param_1,float param_2,uint param_3,undefined4 param_4,double param_5)\n\n{\n  double dVar1;\n  \n  dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)();\n  if (param_3 < 8) {\n                    \n                    \n    dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))();\n    return dVar1;\n  }\n  return param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)param_2;\n}" primitive_type (function_declarator "FUN_000e8274(undefined4 param_1,float param_2,uint param_3,undefined4 param_4,double param_5)" identifier (parameter_list "(undefined4 param_1,float param_2,uint param_3,undefined4 param_4,double param_5)" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "float param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "double param_5" primitive_type identifier) ))) (compound_statement "{\n  double dVar1;\n  \n  dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)();\n  if (param_3 < 8) {\n                    \n                    \n    dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))();\n    return dVar1;\n  }\n  return param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)param_2;\n}" { (declaration "double dVar1;" primitive_type identifier ;) (expression_statement "dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)();" (assignment_expression "dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)()" identifier = (cast_expression "(double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)()" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)PTR_GetPseudoRandomValue_003a8e6c)()" (parenthesized_expression "(*(code *)PTR_GetPseudoRandomValue_003a8e6c)" ( (pointer_expression "*(code *)PTR_GetPseudoRandomValue_003a8e6c" * (cast_expression "(code *)PTR_GetPseudoRandomValue_003a8e6c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))))) ;) (if_statement "if (param_3 < 8) {\n                    \n                    \n    dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))();\n    return dVar1;\n  }" if (parenthesized_expression "(param_3 < 8)" ( (binary_expression "param_3 < 8" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n    dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))();\n    return dVar1;\n  }" { (expression_statement "dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))();" (assignment_expression "dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))()" identifier = (cast_expression "(double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))()" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0))" * (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0))" ( (binary_expression "&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)" * (cast_expression "(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)" ( (binary_expression "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0" (binary_expression "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4" identifier + (binary_expression "param_3 * 4" identifier * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return dVar1;" return identifier ;) })) (return_statement "return param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)param_2;" return (binary_expression "param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)param_2" (binary_expression "param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400))" (binary_expression "param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58)" (binary_expression "param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0)" identifier * (pointer_expression "*(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0)" * (cast_expression "(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0)" ( (binary_expression "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0" identifier + number_literal) ))))) * (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1a58)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1a58)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1a58)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1a58" identifier + number_literal) ))))) * (parenthesized_expression "(dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400))" ( (binary_expression "dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)" identifier - (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1400)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1400)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1400)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1400" identifier + number_literal) ))))) ))) + (cast_expression "(double)param_2" ( (type_descriptor "double" primitive_type) ) identifier)) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) ))))) )))) )) (argument_list ( ))))) ;) (return_statement return IDENT ;) })) (return_statement return (binary_expression (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) * (parenthesized_expression ( (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })))
(function_definition "double FUN_000e8274(undefined4 param_1,float param_2,uint param_3,undefined4 param_4,double param_5)\n\n{\n  double dVar1;\n  \n  dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)();\n  if (param_3 < 8) {\n                    \n                    \n    dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))();\n    return dVar1;\n  }\n  return param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)param_2;\n}" (primitive_type "double") (function_declarator "FUN_000e8274(undefined4 param_1,float param_2,uint param_3,undefined4 param_4,double param_5)" (identifier "FUN_000e8274") (parameter_list "(undefined4 param_1,float param_2,uint param_3,undefined4 param_4,double param_5)" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (identifier "param_1")) (, ",") (parameter_declaration "float param_2" (primitive_type "float") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "double param_5" (primitive_type "double") (identifier "param_5")) () ")"))) (compound_statement "{\n  double dVar1;\n  \n  dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)();\n  if (param_3 < 8) {\n                    \n                    \n    dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))();\n    return dVar1;\n  }\n  return param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)param_2;\n}" ({ "{") (declaration "double dVar1;" (primitive_type "double") (identifier "dVar1") (; ";")) (expression_statement "dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)();" (assignment_expression "dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)()" (identifier "dVar1") (= "=") (cast_expression "(double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)()" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "(*(code *)PTR_GetPseudoRandomValue_003a8e6c)()" (parenthesized_expression "(*(code *)PTR_GetPseudoRandomValue_003a8e6c)" (( "(") (pointer_expression "*(code *)PTR_GetPseudoRandomValue_003a8e6c" (* "*") (cast_expression "(code *)PTR_GetPseudoRandomValue_003a8e6c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_GetPseudoRandomValue_003a8e6c"))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (param_3 < 8) {\n                    \n                    \n    dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))();\n    return dVar1;\n  }" (if "if") (parenthesized_expression "(param_3 < 8)" (( "(") (binary_expression "param_3 < 8" (identifier "param_3") (< "<") (number_literal "8")) () ")")) (compound_statement "{\n                    \n                    \n    dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))();\n    return dVar1;\n  }" ({ "{") (expression_statement "dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))();" (assignment_expression "dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))()" (identifier "dVar1") (= "=") (cast_expression "(double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))()" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)))" (( "(") (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0))" (* "*") (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0))" (( "(") (binary_expression "&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)" (pointer_expression "&_gp_1" (& "&") (identifier "_gp_1")) (+ "+") (pointer_expression "*(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)" (* "*") (cast_expression "(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0)" (( "(") (binary_expression "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4 + 0x79c0" (binary_expression "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +\n                                                param_3 * 4" (identifier "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8") (+ "+") (binary_expression "param_3 * 4" (identifier "param_3") (* "*") (number_literal "4"))) (+ "+") (number_literal "0x79c0")) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (return_statement "return dVar1;" (return "return") (identifier "dVar1") (; ";")) (} "}"))) (return_statement "return param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)param_2;" (return "return") (binary_expression "param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +\n         (double)param_2" (binary_expression "param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400))" (binary_expression "param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *\n         *(double *)(PTR_LAB_003a88e0 + 0x1a58)" (binary_expression "param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0)" (identifier "param_5") (* "*") (pointer_expression "*(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0)" (* "*") (cast_expression "(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0)" (( "(") (binary_expression "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0" (identifier "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8") (+ "+") (number_literal "0x7bd0")) () ")"))))) (* "*") (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1a58)" (* "*") (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1a58)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1a58)" (( "(") (binary_expression "PTR_LAB_003a88e0 + 0x1a58" (identifier "PTR_LAB_003a88e0") (+ "+") (number_literal "0x1a58")) () ")"))))) (* "*") (parenthesized_expression "(dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400))" (( "(") (binary_expression "dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)" (identifier "dVar1") (- "-") (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1400)" (* "*") (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1400)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1400)" (( "(") (binary_expression "PTR_LAB_003a88e0 + 0x1400" (identifier "PTR_LAB_003a88e0") (+ "+") (number_literal "0x1400")) () ")"))))) () ")"))) (+ "+") (cast_expression "(double)param_2" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "param_2"))) (; ";")) (} "}")))

double function_1
                 (type_1 *random_info,type_2 pixel,type_3 noise_type,double attenuate)

{
  type_4 var_2;
  double var_6;
  type_5 in_f13;
  double var_4;
  
  var_6 = (double)(*(type_6 *)PTR_GetPseudoRandomValue_003a8e6c)(var_1(in_f13,pixel));
  if (var_2 < 8) {
                    /* WARNING: Could not emulate address calculation at 0x000e82e8 */
                    /* WARNING: Treating indirect jump as call */
    var_6 = (double)(*(type_6 *)(&_gp + *(int *)(var_3 +
                                              var_2 * 4 + 0x79c0)))();
    return var_6;
  }
  return var_4 * *(double *)(var_3 + 0x7bd0) *
         *(double *)(var_5 + 0x1a58) * (var_6 - *(double *)(var_5 + 0x1400)) +
         (double)(float)noise_type;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))))))) arguments: (argument_list))))) (return_statement (identifier)))) (return_statement (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))

double MASKED(undefined4 param_1,float param_2,uint param_3,undefined4 param_4,double param_5)

{
  double dVar1;
  
  dVar1 = (double)(*(code *)PTR_GetPseudoRandomValue_003a8e6c)();
  if (param_3 < 8) {
                    /* WARNING: Could not emulate address calculation at 0x000e82e8 */
                    /* WARNING: Treating indirect jump as call */
    dVar1 = (double)(*(code *)(&_gp_1 + *(int *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 +
                                                param_3 * 4 + 0x79c0)))();
    return dVar1;
  }
  return param_5 * *(double *)(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + 0x7bd0) *
         *(double *)(PTR_LAB_003a88e0 + 0x1a58) * (dVar1 - *(double *)(PTR_LAB_003a88e0 + 0x1400)) +
         (double)param_2;
}

