
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Unknown calling convention */
/* WARNING: Enum "LogEventType": Some values do not have unique names */

size_t GetOptimalKernelWidth1D(double radius,double sigma)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int in_GS_OFFSET;
  double dVar5;
  double local_6c;
  double local_5c;
  double local_54;
  int local_48;
  size_t local_44;
  ushort __cw;
  ushort __cwtmp;
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  LogMagickEvent(TraceEvent,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");
  if (DAT_002df2d0 < radius) {
    local_44 = (size_t)(longlong)ROUND(ROUND(radius) + ROUND(radius) + (double)DAT_002df8b4);
  }
  else {
    local_44 = 3;
    dVar5 = ABS(sigma);
    if (DAT_002df2d0 < dVar5) {
      local_5c = (dVar5 + dVar5) * dVar5;
      if (DAT_002df2d0 <= local_5c) {
        local_5c = (double)DAT_002df8b4 / local_5c;
      }
      else {
        local_5c = DAT_002df8d8;
      }
      if (dVar5 * DAT_002f2ba8 < DAT_002df2d0) {
        local_54 = DAT_002df8d8;
      }
      else {
        local_54 = (double)DAT_002df8b4 / (dVar5 * DAT_002f2ba8);
      }
      local_48 = 5;
      while( true ) {
        iVar3 = (local_48 + -1) / 2;
        iVar4 = -iVar3;
        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {
          local_6c = 0.0;
          do {
            iVar2 = iVar4 * iVar4;
            iVar4 = iVar4 + 1;
            dVar5 = exp(-(double)iVar2 * local_5c);
            local_6c = dVar5 * local_54 + local_6c;
          } while (iVar4 != iVar3 + 1);
        }
        else {
          local_6c = 0.0;
        }
        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);
        local_6c = (dVar5 * local_54) / local_6c;
        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;
        local_48 = local_48 + 2;
      }
      local_44 = local_48 - 2;
    }
  }
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return local_44;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

int FUN_000e3960(double param_1,double param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int in_GS_OFFSET;
  double dVar5;
  double local_6c;
  double local_5c;
  double local_54;
  int local_48;
  int local_44;
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  LogMagickEvent(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");
  if (DAT_002df2d0 < param_1) {
    local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);
  }
  else {
    local_44 = 3;
    param_2 = ABS(param_2);
    if (DAT_002df2d0 < param_2) {
      local_5c = (param_2 + param_2) * param_2;
      if (DAT_002df2d0 <= local_5c) {
        local_5c = (double)DAT_002df8b4 / local_5c;
      }
      else {
        local_5c = DAT_002df8d8;
      }
      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {
        local_54 = DAT_002df8d8;
      }
      else {
        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);
      }
      local_48 = 5;
      while( true ) {
        iVar3 = (local_48 + -1) / 2;
        iVar4 = -iVar3;
        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {
          local_6c = 0.0;
          do {
            iVar2 = iVar4 * iVar4;
            iVar4 = iVar4 + 1;
            dVar5 = exp(-(double)iVar2 * local_5c);
            local_6c = dVar5 * local_54 + local_6c;
          } while (iVar4 != iVar3 + 1);
        }
        else {
          local_6c = 0.0;
        }
        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);
        local_6c = (dVar5 * local_54) / local_6c;
        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;
        local_48 = local_48 + 2;
      }
      local_44 = local_48 + -2;
    }
  }
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_002decd0();
  }
  return local_44;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00039d70
ADD EBX,0x33a697
SUB ESP,0x68
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x58],EAX
XOR EAX,EAX
FLD qword ptr [ESP + 0x7c]
FSTP qword ptr [ESP + 0xc]
FLD qword ptr [ESP + 0x84]
FSTP qword ptr [ESP + 0x14]
LEA EAX,[EBX + 0xffec48cc]
PUSH EAX
LEA EAX,[EBX + 0xffed7378]
PUSH 0x674
PUSH EAX
LEA EAX,[EBX + 0xffed7175]
PUSH EAX
PUSH 0x8000
CALL 0x000323b0
ADD ESP,0x20
FLD qword ptr [EBX + 0xffec12d0]
FLD qword ptr [ESP]
FUCOMI ST0,ST1
JA 0x000e3b10
FSTP ST0
FLD qword ptr [ESP + 0x8]
MOV EAX,0x3
FABS
FXCH
FUCOMI ST0,ST1
JNC 0x000e3ae8
FLD ST1
FADD ST0,ST2
FMUL ST2
FUCOMI ST0,ST1
FSTP ST1
JNC 0x000e3b70
FSTP ST0
FLD qword ptr [EBX + 0xffec18d8]
FSTP qword ptr [ESP + 0x10]
FMUL qword ptr [EBX + 0xffed4ba8]
FLD qword ptr [EBX + 0xffec12d0]
FXCH
FUCOMI ST0,ST1
FSTP ST1
JC 0x000e3b90
FDIVR dword ptr [EBX + 0xffec18b4]
FSTP qword ptr [ESP + 0x18]
MOV dword ptr [ESP + 0x24],0x5
LEA ESI,[ESI]
LEA EDI,[EDI]
MOV EAX,dword ptr [ESP + 0x24]
SUB EAX,0x1
MOV ESI,EAX
SHR ESI,0x1f
ADD ESI,EAX
SAR ESI,0x1
MOV EDI,ESI
NEG EDI
CMP ESI,EDI
JL 0x000e3b80
FLDZ
LEA EBP,[ESI + 0x1]
FSTP qword ptr [ESP]
LEA ESI,[ESI]
MOV EAX,EDI
SUB ESP,0x10
IMUL EAX,EDI
ADD EDI,0x1
MOV dword ptr [ESP + 0x18],EAX
FILD dword ptr [ESP + 0x18]
FCHS
FMUL qword ptr [ESP + 0x20]
FSTP qword ptr [ESP]
CALL 0x000315b0
FMUL qword ptr [ESP + 0x28]
FADD qword ptr [ESP + 0x10]
FSTP qword ptr [ESP + 0x10]
ADD ESP,0x10
CMP EDI,EBP
JNZ 0x000e3a58
IMUL ESI,ESI
SUB ESP,0x10
MOV dword ptr [ESP + 0x18],ESI
FILD dword ptr [ESP + 0x18]
FCHS
FMUL qword ptr [ESP + 0x20]
FSTP qword ptr [ESP]
CALL 0x000315b0
FMUL qword ptr [ESP + 0x28]
FDIV qword ptr [ESP + 0x10]
ADD ESP,0x10
FLD qword ptr [EBX + 0xffec12e0]
FUCOMIP ST0,ST1
JA 0x000e3ad8
FLD qword ptr [EBX + 0xffec12d0]
FUCOMIP ST0,ST1
FSTP ST0
JA 0x000e3ada
ADD dword ptr [ESP + 0x24],0x2
JMP 0x000e3a30
FSTP ST0
MOV EAX,dword ptr [ESP + 0x24]
SUB EAX,0x2
JMP 0x000e3af0
FSTP ST0
FSTP ST0
LEA ESI,[ESI]
MOV EDX,dword ptr [ESP + 0x4c]
XOR EDX,dword ptr GS:[0x14]
JNZ 0x000e3ba1
ADD ESP,0x5c
POP EBX
POP ESI
POP EDI
POP EBP
RET
FSTP ST1
FNSTCW word ptr [ESP + 0x48]
MOVZX EAX,word ptr [ESP + 0x48]
AND EAX,0xf3ff
OR EAX,0x800
MOV word ptr [ESP + 0x4a],AX
FLDCW word ptr [ESP + 0x4a]
FRNDINT
FLDCW word ptr [ESP + 0x48]
FNSTCW word ptr [ESP + 0x36]
FSTP qword ptr [ESP + 0x38]
FLD qword ptr [ESP + 0x38]
FADD ST0,ST0
MOVZX EAX,word ptr [ESP + 0x36]
FADD dword ptr [EBX + 0xffec18b4]
OR AH,0xc
MOV word ptr [ESP + 0x34],AX
FLDCW word ptr [ESP + 0x34]
FISTP qword ptr [ESP + 0x28]
FLDCW word ptr [ESP + 0x36]
MOV EAX,dword ptr [ESP + 0x28]
JMP 0x000e3af0
FDIVR dword ptr [EBX + 0xffec18b4]
FSTP qword ptr [ESP + 0x10]
JMP 0x000e39fc
FLDZ
FSTP qword ptr [ESP]
JMP 0x000e3a8c
FSTP ST0
FLD qword ptr [EBX + 0xffec18d8]
FSTP qword ptr [ESP + 0x18]
JMP 0x000e3a1e
CALL 0x002decd0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nint FUN_000e3960(double param_1,double param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  double dVar5;\n  double local_6c;\n  double local_5c;\n  double local_54;\n  int local_48;\n  int local_44;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  LogMagickEvent(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");\n  if (DAT_002df2d0 < param_1) {\n    local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);\n  }\n  else {\n    local_44 = 3;\n    param_2 = ABS(param_2);\n    if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002decd0();\n  }\n  return local_44;\n}\n\n" comment comment (function_definition "int FUN_000e3960(double param_1,double param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  double dVar5;\n  double local_6c;\n  double local_5c;\n  double local_54;\n  int local_48;\n  int local_44;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  LogMagickEvent(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");\n  if (DAT_002df2d0 < param_1) {\n    local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);\n  }\n  else {\n    local_44 = 3;\n    param_2 = ABS(param_2);\n    if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002decd0();\n  }\n  return local_44;\n}" primitive_type (function_declarator "FUN_000e3960(double param_1,double param_2)" identifier (parameter_list "(double param_1,double param_2)" ( (parameter_declaration "double param_1" primitive_type identifier) , (parameter_declaration "double param_2" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  double dVar5;\n  double local_6c;\n  double local_5c;\n  double local_54;\n  int local_48;\n  int local_44;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  LogMagickEvent(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");\n  if (DAT_002df2d0 < param_1) {\n    local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);\n  }\n  else {\n    local_44 = 3;\n    param_2 = ABS(param_2);\n    if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002decd0();\n  }\n  return local_44;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "double local_6c;" primitive_type identifier ;) (declaration "double local_5c;" primitive_type identifier ;) (declaration "double local_54;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_44;" primitive_type identifier ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "LogMagickEvent(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");" (call_expression "LogMagickEvent(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...")" identifier (argument_list "(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...")" ( number_literal , (string_literal ""MagickCore/gem.c"" " string_content ") , (string_literal ""GetOptimalKernelWidth1D"" " string_content ") , number_literal , (string_literal ""..."" " string_content ") ))) ;) (if_statement "if (DAT_002df2d0 < param_1) {\n    local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);\n  }\n  else {\n    local_44 = 3;\n    param_2 = ABS(param_2);\n    if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }\n  }" if (parenthesized_expression "(DAT_002df2d0 < param_1)" ( (binary_expression "DAT_002df2d0 < param_1" identifier < identifier) )) (compound_statement "{\n    local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);\n  }" { (expression_statement "local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);" (assignment_expression "local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4)" identifier = (cast_expression "(int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4)" identifier (argument_list "(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4)" ( (binary_expression "ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4" (binary_expression "ROUND(param_1) + ROUND(param_1)" (call_expression "ROUND(param_1)" identifier (argument_list "(param_1)" ( identifier ))) + (call_expression "ROUND(param_1)" identifier (argument_list "(param_1)" ( identifier )))) + (cast_expression "(double)DAT_002df8b4" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n    local_44 = 3;\n    param_2 = ABS(param_2);\n    if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }\n  }" else (compound_statement "{\n    local_44 = 3;\n    param_2 = ABS(param_2);\n    if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }\n  }" { (expression_statement "local_44 = 3;" (assignment_expression "local_44 = 3" identifier = number_literal) ;) (expression_statement "param_2 = ABS(param_2);" (assignment_expression "param_2 = ABS(param_2)" identifier = (call_expression "ABS(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }" if (parenthesized_expression "(DAT_002df2d0 < param_2)" ( (binary_expression "DAT_002df2d0 < param_2" identifier < identifier) )) (compound_statement "{\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }" { (expression_statement "local_5c = (param_2 + param_2) * param_2;" (assignment_expression "local_5c = (param_2 + param_2) * param_2" identifier = (binary_expression "(param_2 + param_2) * param_2" (parenthesized_expression "(param_2 + param_2)" ( (binary_expression "param_2 + param_2" identifier + identifier) )) * identifier)) ;) (if_statement "if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }" if (parenthesized_expression "(DAT_002df2d0 <= local_5c)" ( (binary_expression "DAT_002df2d0 <= local_5c" identifier <= identifier) )) (compound_statement "{\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }" { (expression_statement "local_5c = (double)DAT_002df8b4 / local_5c;" (assignment_expression "local_5c = (double)DAT_002df8b4 / local_5c" identifier = (binary_expression "(double)DAT_002df8b4 / local_5c" (cast_expression "(double)DAT_002df8b4" ( (type_descriptor "double" primitive_type) ) identifier) / identifier)) ;) }) (else_clause "else {\n        local_5c = DAT_002df8d8;\n      }" else (compound_statement "{\n        local_5c = DAT_002df8d8;\n      }" { (expression_statement "local_5c = DAT_002df8d8;" (assignment_expression "local_5c = DAT_002df8d8" identifier = identifier) ;) }))) (if_statement "if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }" if (parenthesized_expression "(param_2 * DAT_002f2ba8 < DAT_002df2d0)" ( (binary_expression "param_2 * DAT_002f2ba8 < DAT_002df2d0" (binary_expression "param_2 * DAT_002f2ba8" identifier * identifier) < identifier) )) (compound_statement "{\n        local_54 = DAT_002df8d8;\n      }" { (expression_statement "local_54 = DAT_002df8d8;" (assignment_expression "local_54 = DAT_002df8d8" identifier = identifier) ;) }) (else_clause "else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }" else (compound_statement "{\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }" { (expression_statement "local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);" (assignment_expression "local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8)" identifier = (binary_expression "(double)DAT_002df8b4 / (param_2 * DAT_002f2ba8)" (cast_expression "(double)DAT_002df8b4" ( (type_descriptor "double" primitive_type) ) identifier) / (parenthesized_expression "(param_2 * DAT_002f2ba8)" ( (binary_expression "param_2 * DAT_002f2ba8" identifier * identifier) )))) ;) }))) (expression_statement "local_48 = 5;" (assignment_expression "local_48 = 5" identifier = number_literal) ;) (while_statement "while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }" { (expression_statement "iVar3 = (local_48 + -1) / 2;" (assignment_expression "iVar3 = (local_48 + -1) / 2" identifier = (binary_expression "(local_48 + -1) / 2" (parenthesized_expression "(local_48 + -1)" ( (binary_expression "local_48 + -1" identifier + number_literal) )) / number_literal)) ;) (expression_statement "iVar4 = -iVar3;" (assignment_expression "iVar4 = -iVar3" identifier = (unary_expression "-iVar3" - identifier)) ;) (if_statement "if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }" if (parenthesized_expression "(SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0)" ( (binary_expression "SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0" (call_expression "SBORROW4(iVar3,iVar4)" identifier (argument_list "(iVar3,iVar4)" ( identifier , identifier ))) == (binary_expression "iVar3 * 2 < 0" (binary_expression "iVar3 * 2" identifier * number_literal) < number_literal)) )) (compound_statement "{\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }" { (expression_statement "local_6c = 0.0;" (assignment_expression "local_6c = 0.0" identifier = number_literal) ;) (do_statement "do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);" do (compound_statement "{\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          }" { (expression_statement "iVar2 = iVar4 * iVar4;" (assignment_expression "iVar2 = iVar4 * iVar4" identifier = (binary_expression "iVar4 * iVar4" identifier * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "dVar5 = exp(-(double)iVar2 * local_5c);" (assignment_expression "dVar5 = exp(-(double)iVar2 * local_5c)" identifier = (call_expression "exp(-(double)iVar2 * local_5c)" identifier (argument_list "(-(double)iVar2 * local_5c)" ( (binary_expression "-(double)iVar2 * local_5c" (unary_expression "-(double)iVar2" - (cast_expression "(double)iVar2" ( (type_descriptor "double" primitive_type) ) identifier)) * identifier) )))) ;) (expression_statement "local_6c = dVar5 * local_54 + local_6c;" (assignment_expression "local_6c = dVar5 * local_54 + local_6c" identifier = (binary_expression "dVar5 * local_54 + local_6c" (binary_expression "dVar5 * local_54" identifier * identifier) + identifier)) ;) }) while (parenthesized_expression "(iVar4 != iVar3 + 1)" ( (binary_expression "iVar4 != iVar3 + 1" identifier != (binary_expression "iVar3 + 1" identifier + number_literal)) )) ;) }) (else_clause "else {\n          local_6c = 0.0;\n        }" else (compound_statement "{\n          local_6c = 0.0;\n        }" { (expression_statement "local_6c = 0.0;" (assignment_expression "local_6c = 0.0" identifier = number_literal) ;) }))) (expression_statement "dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);" (assignment_expression "dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c)" identifier = (call_expression "exp(-(double)(iVar3 * iVar3) * local_5c)" identifier (argument_list "(-(double)(iVar3 * iVar3) * local_5c)" ( (binary_expression "-(double)(iVar3 * iVar3) * local_5c" (unary_expression "-(double)(iVar3 * iVar3)" - (cast_expression "(double)(iVar3 * iVar3)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(iVar3 * iVar3)" ( (binary_expression "iVar3 * iVar3" identifier * identifier) )))) * identifier) )))) ;) (expression_statement "local_6c = (dVar5 * local_54) / local_6c;" (assignment_expression "local_6c = (dVar5 * local_54) / local_6c" identifier = (binary_expression "(dVar5 * local_54) / local_6c" (parenthesized_expression "(dVar5 * local_54)" ( (binary_expression "dVar5 * local_54" identifier * identifier) )) / identifier)) ;) (if_statement "if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;" if (parenthesized_expression "((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0))" ( (binary_expression "(local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)" (parenthesized_expression "(local_6c < _DAT_002df2e0)" ( (binary_expression "local_6c < _DAT_002df2e0" identifier < identifier) )) || (parenthesized_expression "(local_6c < DAT_002df2d0)" ( (binary_expression "local_6c < DAT_002df2d0" identifier < identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "local_48 = local_48 + 2;" (assignment_expression "local_48 = local_48 + 2" identifier = (binary_expression "local_48 + 2" identifier + number_literal)) ;) })) (expression_statement "local_44 = local_48 + -2;" (assignment_expression "local_44 = local_48 + -2" identifier = (binary_expression "local_48 + -2" identifier + number_literal)) ;) })) }))) (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_002decd0();\n  }" if (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_002decd0();\n  }" { comment (expression_statement "FUN_002decd0();" (call_expression "FUN_002decd0()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return local_44;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n/* WARNING: Unknown calling convention */\n/* WARNING: Enum "LogEventType": Some values do not have unique names */\n\nsize_t GetOptimalKernelWidth1D(double radius,double sigma)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  double dVar5;\n  double local_6c;\n  double local_5c;\n  double local_54;\n  int local_48;\n  size_t local_44;\n  ushort __cw;\n  ushort __cwtmp;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  LogMagickEvent(TraceEvent,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");\n  if (DAT_002df2d0 < radius) {\n    local_44 = (size_t)(longlong)ROUND(ROUND(radius) + ROUND(radius) + (double)DAT_002df8b4);\n  }\n  else {\n    local_44 = 3;\n    dVar5 = ABS(sigma);\n    if (DAT_002df2d0 < dVar5) {\n      local_5c = (dVar5 + dVar5) * dVar5;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (dVar5 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (dVar5 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 - 2;\n    }\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return local_44;\n}\n\n" comment comment comment comment (function_definition "size_t GetOptimalKernelWidth1D(double radius,double sigma)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  double dVar5;\n  double local_6c;\n  double local_5c;\n  double local_54;\n  int local_48;\n  size_t local_44;\n  ushort __cw;\n  ushort __cwtmp;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  LogMagickEvent(TraceEvent,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");\n  if (DAT_002df2d0 < radius) {\n    local_44 = (size_t)(longlong)ROUND(ROUND(radius) + ROUND(radius) + (double)DAT_002df8b4);\n  }\n  else {\n    local_44 = 3;\n    dVar5 = ABS(sigma);\n    if (DAT_002df2d0 < dVar5) {\n      local_5c = (dVar5 + dVar5) * dVar5;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (dVar5 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (dVar5 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 - 2;\n    }\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return local_44;\n}" primitive_type (function_declarator "GetOptimalKernelWidth1D(double radius,double sigma)" identifier (parameter_list "(double radius,double sigma)" ( (parameter_declaration "double radius" primitive_type identifier) , (parameter_declaration "double sigma" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  double dVar5;\n  double local_6c;\n  double local_5c;\n  double local_54;\n  int local_48;\n  size_t local_44;\n  ushort __cw;\n  ushort __cwtmp;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  LogMagickEvent(TraceEvent,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");\n  if (DAT_002df2d0 < radius) {\n    local_44 = (size_t)(longlong)ROUND(ROUND(radius) + ROUND(radius) + (double)DAT_002df8b4);\n  }\n  else {\n    local_44 = 3;\n    dVar5 = ABS(sigma);\n    if (DAT_002df2d0 < dVar5) {\n      local_5c = (dVar5 + dVar5) * dVar5;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (dVar5 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (dVar5 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 - 2;\n    }\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return local_44;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "double local_6c;" primitive_type identifier ;) (declaration "double local_5c;" primitive_type identifier ;) (declaration "double local_54;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "size_t local_44;" primitive_type identifier ;) (declaration "ushort __cw;" type_identifier identifier ;) (declaration "ushort __cwtmp;" type_identifier identifier ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "LogMagickEvent(TraceEvent,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");" (call_expression "LogMagickEvent(TraceEvent,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...")" identifier (argument_list "(TraceEvent,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...")" ( identifier , (string_literal ""MagickCore/gem.c"" " string_content ") , (string_literal ""GetOptimalKernelWidth1D"" " string_content ") , number_literal , (string_literal ""..."" " string_content ") ))) ;) (if_statement "if (DAT_002df2d0 < radius) {\n    local_44 = (size_t)(longlong)ROUND(ROUND(radius) + ROUND(radius) + (double)DAT_002df8b4);\n  }\n  else {\n    local_44 = 3;\n    dVar5 = ABS(sigma);\n    if (DAT_002df2d0 < dVar5) {\n      local_5c = (dVar5 + dVar5) * dVar5;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (dVar5 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (dVar5 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 - 2;\n    }\n  }" if (parenthesized_expression "(DAT_002df2d0 < radius)" ( (binary_expression "DAT_002df2d0 < radius" identifier < identifier) )) (compound_statement "{\n    local_44 = (size_t)(longlong)ROUND(ROUND(radius) + ROUND(radius) + (double)DAT_002df8b4);\n  }" { (expression_statement "local_44 = (size_t)(longlong)ROUND(ROUND(radius) + ROUND(radius) + (double)DAT_002df8b4);" (assignment_expression "local_44 = (size_t)(longlong)ROUND(ROUND(radius) + ROUND(radius) + (double)DAT_002df8b4)" identifier = (cast_expression "(size_t)(longlong)ROUND(ROUND(radius) + ROUND(radius) + (double)DAT_002df8b4)" ( (type_descriptor "size_t" primitive_type) ) (cast_expression "(longlong)ROUND(ROUND(radius) + ROUND(radius) + (double)DAT_002df8b4)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(ROUND(radius) + ROUND(radius) + (double)DAT_002df8b4)" identifier (argument_list "(ROUND(radius) + ROUND(radius) + (double)DAT_002df8b4)" ( (binary_expression "ROUND(radius) + ROUND(radius) + (double)DAT_002df8b4" (binary_expression "ROUND(radius) + ROUND(radius)" (call_expression "ROUND(radius)" identifier (argument_list "(radius)" ( identifier ))) + (call_expression "ROUND(radius)" identifier (argument_list "(radius)" ( identifier )))) + (cast_expression "(double)DAT_002df8b4" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n    local_44 = 3;\n    dVar5 = ABS(sigma);\n    if (DAT_002df2d0 < dVar5) {\n      local_5c = (dVar5 + dVar5) * dVar5;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (dVar5 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (dVar5 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 - 2;\n    }\n  }" else (compound_statement "{\n    local_44 = 3;\n    dVar5 = ABS(sigma);\n    if (DAT_002df2d0 < dVar5) {\n      local_5c = (dVar5 + dVar5) * dVar5;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (dVar5 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (dVar5 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 - 2;\n    }\n  }" { (expression_statement "local_44 = 3;" (assignment_expression "local_44 = 3" identifier = number_literal) ;) (expression_statement "dVar5 = ABS(sigma);" (assignment_expression "dVar5 = ABS(sigma)" identifier = (call_expression "ABS(sigma)" identifier (argument_list "(sigma)" ( identifier )))) ;) (if_statement "if (DAT_002df2d0 < dVar5) {\n      local_5c = (dVar5 + dVar5) * dVar5;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (dVar5 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (dVar5 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 - 2;\n    }" if (parenthesized_expression "(DAT_002df2d0 < dVar5)" ( (binary_expression "DAT_002df2d0 < dVar5" identifier < identifier) )) (compound_statement "{\n      local_5c = (dVar5 + dVar5) * dVar5;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (dVar5 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (dVar5 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 - 2;\n    }" { (expression_statement "local_5c = (dVar5 + dVar5) * dVar5;" (assignment_expression "local_5c = (dVar5 + dVar5) * dVar5" identifier = (binary_expression "(dVar5 + dVar5) * dVar5" (parenthesized_expression "(dVar5 + dVar5)" ( (binary_expression "dVar5 + dVar5" identifier + identifier) )) * identifier)) ;) (if_statement "if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }" if (parenthesized_expression "(DAT_002df2d0 <= local_5c)" ( (binary_expression "DAT_002df2d0 <= local_5c" identifier <= identifier) )) (compound_statement "{\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }" { (expression_statement "local_5c = (double)DAT_002df8b4 / local_5c;" (assignment_expression "local_5c = (double)DAT_002df8b4 / local_5c" identifier = (binary_expression "(double)DAT_002df8b4 / local_5c" (cast_expression "(double)DAT_002df8b4" ( (type_descriptor "double" primitive_type) ) identifier) / identifier)) ;) }) (else_clause "else {\n        local_5c = DAT_002df8d8;\n      }" else (compound_statement "{\n        local_5c = DAT_002df8d8;\n      }" { (expression_statement "local_5c = DAT_002df8d8;" (assignment_expression "local_5c = DAT_002df8d8" identifier = identifier) ;) }))) (if_statement "if (dVar5 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (dVar5 * DAT_002f2ba8);\n      }" if (parenthesized_expression "(dVar5 * DAT_002f2ba8 < DAT_002df2d0)" ( (binary_expression "dVar5 * DAT_002f2ba8 < DAT_002df2d0" (binary_expression "dVar5 * DAT_002f2ba8" identifier * identifier) < identifier) )) (compound_statement "{\n        local_54 = DAT_002df8d8;\n      }" { (expression_statement "local_54 = DAT_002df8d8;" (assignment_expression "local_54 = DAT_002df8d8" identifier = identifier) ;) }) (else_clause "else {\n        local_54 = (double)DAT_002df8b4 / (dVar5 * DAT_002f2ba8);\n      }" else (compound_statement "{\n        local_54 = (double)DAT_002df8b4 / (dVar5 * DAT_002f2ba8);\n      }" { (expression_statement "local_54 = (double)DAT_002df8b4 / (dVar5 * DAT_002f2ba8);" (assignment_expression "local_54 = (double)DAT_002df8b4 / (dVar5 * DAT_002f2ba8)" identifier = (binary_expression "(double)DAT_002df8b4 / (dVar5 * DAT_002f2ba8)" (cast_expression "(double)DAT_002df8b4" ( (type_descriptor "double" primitive_type) ) identifier) / (parenthesized_expression "(dVar5 * DAT_002f2ba8)" ( (binary_expression "dVar5 * DAT_002f2ba8" identifier * identifier) )))) ;) }))) (expression_statement "local_48 = 5;" (assignment_expression "local_48 = 5" identifier = number_literal) ;) (while_statement "while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }" { (expression_statement "iVar3 = (local_48 + -1) / 2;" (assignment_expression "iVar3 = (local_48 + -1) / 2" identifier = (binary_expression "(local_48 + -1) / 2" (parenthesized_expression "(local_48 + -1)" ( (binary_expression "local_48 + -1" identifier + number_literal) )) / number_literal)) ;) (expression_statement "iVar4 = -iVar3;" (assignment_expression "iVar4 = -iVar3" identifier = (unary_expression "-iVar3" - identifier)) ;) (if_statement "if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }" if (parenthesized_expression "(SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0)" ( (binary_expression "SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0" (call_expression "SBORROW4(iVar3,iVar4)" identifier (argument_list "(iVar3,iVar4)" ( identifier , identifier ))) == (binary_expression "iVar3 * 2 < 0" (binary_expression "iVar3 * 2" identifier * number_literal) < number_literal)) )) (compound_statement "{\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }" { (expression_statement "local_6c = 0.0;" (assignment_expression "local_6c = 0.0" identifier = number_literal) ;) (do_statement "do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);" do (compound_statement "{\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          }" { (expression_statement "iVar2 = iVar4 * iVar4;" (assignment_expression "iVar2 = iVar4 * iVar4" identifier = (binary_expression "iVar4 * iVar4" identifier * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "dVar5 = exp(-(double)iVar2 * local_5c);" (assignment_expression "dVar5 = exp(-(double)iVar2 * local_5c)" identifier = (call_expression "exp(-(double)iVar2 * local_5c)" identifier (argument_list "(-(double)iVar2 * local_5c)" ( (binary_expression "-(double)iVar2 * local_5c" (unary_expression "-(double)iVar2" - (cast_expression "(double)iVar2" ( (type_descriptor "double" primitive_type) ) identifier)) * identifier) )))) ;) (expression_statement "local_6c = dVar5 * local_54 + local_6c;" (assignment_expression "local_6c = dVar5 * local_54 + local_6c" identifier = (binary_expression "dVar5 * local_54 + local_6c" (binary_expression "dVar5 * local_54" identifier * identifier) + identifier)) ;) }) while (parenthesized_expression "(iVar4 != iVar3 + 1)" ( (binary_expression "iVar4 != iVar3 + 1" identifier != (binary_expression "iVar3 + 1" identifier + number_literal)) )) ;) }) (else_clause "else {\n          local_6c = 0.0;\n        }" else (compound_statement "{\n          local_6c = 0.0;\n        }" { (expression_statement "local_6c = 0.0;" (assignment_expression "local_6c = 0.0" identifier = number_literal) ;) }))) (expression_statement "dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);" (assignment_expression "dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c)" identifier = (call_expression "exp(-(double)(iVar3 * iVar3) * local_5c)" identifier (argument_list "(-(double)(iVar3 * iVar3) * local_5c)" ( (binary_expression "-(double)(iVar3 * iVar3) * local_5c" (unary_expression "-(double)(iVar3 * iVar3)" - (cast_expression "(double)(iVar3 * iVar3)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(iVar3 * iVar3)" ( (binary_expression "iVar3 * iVar3" identifier * identifier) )))) * identifier) )))) ;) (expression_statement "local_6c = (dVar5 * local_54) / local_6c;" (assignment_expression "local_6c = (dVar5 * local_54) / local_6c" identifier = (binary_expression "(dVar5 * local_54) / local_6c" (parenthesized_expression "(dVar5 * local_54)" ( (binary_expression "dVar5 * local_54" identifier * identifier) )) / identifier)) ;) (if_statement "if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;" if (parenthesized_expression "((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0))" ( (binary_expression "(local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)" (parenthesized_expression "(local_6c < _DAT_002df2e0)" ( (binary_expression "local_6c < _DAT_002df2e0" identifier < identifier) )) || (parenthesized_expression "(local_6c < DAT_002df2d0)" ( (binary_expression "local_6c < DAT_002df2d0" identifier < identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "local_48 = local_48 + 2;" (assignment_expression "local_48 = local_48 + 2" identifier = (binary_expression "local_48 + 2" identifier + number_literal)) ;) })) (expression_statement "local_44 = local_48 - 2;" (assignment_expression "local_44 = local_48 - 2" identifier = (binary_expression "local_48 - 2" identifier - number_literal)) ;) })) }))) (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return local_44;" return identifier ;) })))
(translation_unit "int FUN_000e3960(double param_1,double param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  double dVar5;\n  double local_6c;\n  double local_5c;\n  double local_54;\n  int local_48;\n  int local_44;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  LogMagickEvent(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");\n  if (DAT_002df2d0 < param_1) {\n    local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);\n  }\n  else {\n    local_44 = 3;\n    param_2 = ABS(param_2);\n    if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_002decd0();\n  }\n  return local_44;\n}\n\n" (function_definition "int FUN_000e3960(double param_1,double param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  double dVar5;\n  double local_6c;\n  double local_5c;\n  double local_54;\n  int local_48;\n  int local_44;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  LogMagickEvent(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");\n  if (DAT_002df2d0 < param_1) {\n    local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);\n  }\n  else {\n    local_44 = 3;\n    param_2 = ABS(param_2);\n    if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_002decd0();\n  }\n  return local_44;\n}" primitive_type (function_declarator "FUN_000e3960(double param_1,double param_2)" identifier (parameter_list "(double param_1,double param_2)" ( (parameter_declaration "double param_1" primitive_type identifier) , (parameter_declaration "double param_2" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  double dVar5;\n  double local_6c;\n  double local_5c;\n  double local_54;\n  int local_48;\n  int local_44;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  LogMagickEvent(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");\n  if (DAT_002df2d0 < param_1) {\n    local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);\n  }\n  else {\n    local_44 = 3;\n    param_2 = ABS(param_2);\n    if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_002decd0();\n  }\n  return local_44;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "double local_6c;" primitive_type identifier ;) (declaration "double local_5c;" primitive_type identifier ;) (declaration "double local_54;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_44;" primitive_type identifier ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "LogMagickEvent(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");" (call_expression "LogMagickEvent(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...")" identifier (argument_list "(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...")" ( number_literal , (string_literal ""MagickCore/gem.c"" " string_content ") , (string_literal ""GetOptimalKernelWidth1D"" " string_content ") , number_literal , (string_literal ""..."" " string_content ") ))) ;) (if_statement "if (DAT_002df2d0 < param_1) {\n    local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);\n  }\n  else {\n    local_44 = 3;\n    param_2 = ABS(param_2);\n    if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }\n  }" if (parenthesized_expression "(DAT_002df2d0 < param_1)" ( (binary_expression "DAT_002df2d0 < param_1" identifier < identifier) )) (compound_statement "{\n    local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);\n  }" { (expression_statement "local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);" (assignment_expression "local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4)" identifier = (cast_expression "(int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4)" identifier (argument_list "(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4)" ( (binary_expression "ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4" (binary_expression "ROUND(param_1) + ROUND(param_1)" (call_expression "ROUND(param_1)" identifier (argument_list "(param_1)" ( identifier ))) + (call_expression "ROUND(param_1)" identifier (argument_list "(param_1)" ( identifier )))) + (cast_expression "(double)DAT_002df8b4" ( (type_descriptor "double" primitive_type) ) identifier)) )))))) ;) }) (else_clause "else {\n    local_44 = 3;\n    param_2 = ABS(param_2);\n    if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }\n  }" else (compound_statement "{\n    local_44 = 3;\n    param_2 = ABS(param_2);\n    if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }\n  }" { (expression_statement "local_44 = 3;" (assignment_expression "local_44 = 3" identifier = number_literal) ;) (expression_statement "param_2 = ABS(param_2);" (assignment_expression "param_2 = ABS(param_2)" identifier = (call_expression "ABS(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }" if (parenthesized_expression "(DAT_002df2d0 < param_2)" ( (binary_expression "DAT_002df2d0 < param_2" identifier < identifier) )) (compound_statement "{\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }" { (expression_statement "local_5c = (param_2 + param_2) * param_2;" (assignment_expression "local_5c = (param_2 + param_2) * param_2" identifier = (binary_expression "(param_2 + param_2) * param_2" (parenthesized_expression "(param_2 + param_2)" ( (binary_expression "param_2 + param_2" identifier + identifier) )) * identifier)) ;) (if_statement "if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }" if (parenthesized_expression "(DAT_002df2d0 <= local_5c)" ( (binary_expression "DAT_002df2d0 <= local_5c" identifier <= identifier) )) (compound_statement "{\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }" { (expression_statement "local_5c = (double)DAT_002df8b4 / local_5c;" (assignment_expression "local_5c = (double)DAT_002df8b4 / local_5c" identifier = (binary_expression "(double)DAT_002df8b4 / local_5c" (cast_expression "(double)DAT_002df8b4" ( (type_descriptor "double" primitive_type) ) identifier) / identifier)) ;) }) (else_clause "else {\n        local_5c = DAT_002df8d8;\n      }" else (compound_statement "{\n        local_5c = DAT_002df8d8;\n      }" { (expression_statement "local_5c = DAT_002df8d8;" (assignment_expression "local_5c = DAT_002df8d8" identifier = identifier) ;) }))) (if_statement "if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }" if (parenthesized_expression "(param_2 * DAT_002f2ba8 < DAT_002df2d0)" ( (binary_expression "param_2 * DAT_002f2ba8 < DAT_002df2d0" (binary_expression "param_2 * DAT_002f2ba8" identifier * identifier) < identifier) )) (compound_statement "{\n        local_54 = DAT_002df8d8;\n      }" { (expression_statement "local_54 = DAT_002df8d8;" (assignment_expression "local_54 = DAT_002df8d8" identifier = identifier) ;) }) (else_clause "else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }" else (compound_statement "{\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }" { (expression_statement "local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);" (assignment_expression "local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8)" identifier = (binary_expression "(double)DAT_002df8b4 / (param_2 * DAT_002f2ba8)" (cast_expression "(double)DAT_002df8b4" ( (type_descriptor "double" primitive_type) ) identifier) / (parenthesized_expression "(param_2 * DAT_002f2ba8)" ( (binary_expression "param_2 * DAT_002f2ba8" identifier * identifier) )))) ;) }))) (expression_statement "local_48 = 5;" (assignment_expression "local_48 = 5" identifier = number_literal) ;) (while_statement "while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }" { (expression_statement "iVar3 = (local_48 + -1) / 2;" (assignment_expression "iVar3 = (local_48 + -1) / 2" identifier = (binary_expression "(local_48 + -1) / 2" (parenthesized_expression "(local_48 + -1)" ( (binary_expression "local_48 + -1" identifier + number_literal) )) / number_literal)) ;) (expression_statement "iVar4 = -iVar3;" (assignment_expression "iVar4 = -iVar3" identifier = (unary_expression "-iVar3" - identifier)) ;) (if_statement "if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }" if (parenthesized_expression "(SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0)" ( (binary_expression "SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0" (call_expression "SBORROW4(iVar3,iVar4)" identifier (argument_list "(iVar3,iVar4)" ( identifier , identifier ))) == (binary_expression "iVar3 * 2 < 0" (binary_expression "iVar3 * 2" identifier * number_literal) < number_literal)) )) (compound_statement "{\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }" { (expression_statement "local_6c = 0.0;" (assignment_expression "local_6c = 0.0" identifier = number_literal) ;) (do_statement "do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);" do (compound_statement "{\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          }" { (expression_statement "iVar2 = iVar4 * iVar4;" (assignment_expression "iVar2 = iVar4 * iVar4" identifier = (binary_expression "iVar4 * iVar4" identifier * identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "dVar5 = exp(-(double)iVar2 * local_5c);" (assignment_expression "dVar5 = exp(-(double)iVar2 * local_5c)" identifier = (call_expression "exp(-(double)iVar2 * local_5c)" identifier (argument_list "(-(double)iVar2 * local_5c)" ( (binary_expression "-(double)iVar2 * local_5c" (unary_expression "-(double)iVar2" - (cast_expression "(double)iVar2" ( (type_descriptor "double" primitive_type) ) identifier)) * identifier) )))) ;) (expression_statement "local_6c = dVar5 * local_54 + local_6c;" (assignment_expression "local_6c = dVar5 * local_54 + local_6c" identifier = (binary_expression "dVar5 * local_54 + local_6c" (binary_expression "dVar5 * local_54" identifier * identifier) + identifier)) ;) }) while (parenthesized_expression "(iVar4 != iVar3 + 1)" ( (binary_expression "iVar4 != iVar3 + 1" identifier != (binary_expression "iVar3 + 1" identifier + number_literal)) )) ;) }) (else_clause "else {\n          local_6c = 0.0;\n        }" else (compound_statement "{\n          local_6c = 0.0;\n        }" { (expression_statement "local_6c = 0.0;" (assignment_expression "local_6c = 0.0" identifier = number_literal) ;) }))) (expression_statement "dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);" (assignment_expression "dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c)" identifier = (call_expression "exp(-(double)(iVar3 * iVar3) * local_5c)" identifier (argument_list "(-(double)(iVar3 * iVar3) * local_5c)" ( (binary_expression "-(double)(iVar3 * iVar3) * local_5c" (unary_expression "-(double)(iVar3 * iVar3)" - (cast_expression "(double)(iVar3 * iVar3)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(iVar3 * iVar3)" ( (binary_expression "iVar3 * iVar3" identifier * identifier) )))) * identifier) )))) ;) (expression_statement "local_6c = (dVar5 * local_54) / local_6c;" (assignment_expression "local_6c = (dVar5 * local_54) / local_6c" identifier = (binary_expression "(dVar5 * local_54) / local_6c" (parenthesized_expression "(dVar5 * local_54)" ( (binary_expression "dVar5 * local_54" identifier * identifier) )) / identifier)) ;) (if_statement "if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;" if (parenthesized_expression "((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0))" ( (binary_expression "(local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)" (parenthesized_expression "(local_6c < _DAT_002df2e0)" ( (binary_expression "local_6c < _DAT_002df2e0" identifier < identifier) )) || (parenthesized_expression "(local_6c < DAT_002df2d0)" ( (binary_expression "local_6c < DAT_002df2d0" identifier < identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "local_48 = local_48 + 2;" (assignment_expression "local_48 = local_48 + 2" identifier = (binary_expression "local_48 + 2" identifier + number_literal)) ;) })) (expression_statement "local_44 = local_48 + -2;" (assignment_expression "local_44 = local_48 + -2" identifier = (binary_expression "local_48 + -2" identifier + number_literal)) ;) })) }))) (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_002decd0();\n  }" if (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_002decd0();\n  }" { (expression_statement "FUN_002decd0();" (call_expression "FUN_002decd0()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return local_44;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression (binary_expression (call_expression IDENT (argument_list ( IDENT ))) + (call_expression IDENT (argument_list ( IDENT )))) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / (parenthesized_expression ( (binary_expression IDENT * IDENT) )))) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) / LIT)) ;) (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) == (binary_expression (binary_expression IDENT * LIT) < LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)) * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (unary_expression - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT * IDENT) )))) * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * IDENT) )) / IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return IDENT ;) })))
(function_definition "int FUN_000e3960(double param_1,double param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  double dVar5;\n  double local_6c;\n  double local_5c;\n  double local_54;\n  int local_48;\n  int local_44;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  LogMagickEvent(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");\n  if (DAT_002df2d0 < param_1) {\n    local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);\n  }\n  else {\n    local_44 = 3;\n    param_2 = ABS(param_2);\n    if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_002decd0();\n  }\n  return local_44;\n}" (primitive_type "int") (function_declarator "FUN_000e3960(double param_1,double param_2)" (identifier "FUN_000e3960") (parameter_list "(double param_1,double param_2)" (( "(") (parameter_declaration "double param_1" (primitive_type "double") (identifier "param_1")) (, ",") (parameter_declaration "double param_2" (primitive_type "double") (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  int iVar3;\n  int iVar4;\n  int in_GS_OFFSET;\n  double dVar5;\n  double local_6c;\n  double local_5c;\n  double local_54;\n  int local_48;\n  int local_44;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  LogMagickEvent(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");\n  if (DAT_002df2d0 < param_1) {\n    local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);\n  }\n  else {\n    local_44 = 3;\n    param_2 = ABS(param_2);\n    if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }\n  }\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_002decd0();\n  }\n  return local_44;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "double dVar5;" (primitive_type "double") (identifier "dVar5") (; ";")) (declaration "double local_6c;" (primitive_type "double") (identifier "local_6c") (; ";")) (declaration "double local_5c;" (primitive_type "double") (identifier "local_5c") (; ";")) (declaration "double local_54;" (primitive_type "double") (identifier "local_54") (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "int local_44;" (primitive_type "int") (identifier "local_44") (; ";")) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "LogMagickEvent(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");" (call_expression "LogMagickEvent(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...")" (identifier "LogMagickEvent") (argument_list "(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...")" (( "(") (number_literal "0x8000") (, ",") (string_literal ""MagickCore/gem.c"" (" """) (string_content "MagickCore/gem.c") (" """)) (, ",") (string_literal ""GetOptimalKernelWidth1D"" (" """) (string_content "GetOptimalKernelWidth1D") (" """)) (, ",") (number_literal "0x674") (, ",") (string_literal ""..."" (" """) (string_content "...") (" """)) () ")"))) (; ";")) (if_statement "if (DAT_002df2d0 < param_1) {\n    local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);\n  }\n  else {\n    local_44 = 3;\n    param_2 = ABS(param_2);\n    if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }\n  }" (if "if") (parenthesized_expression "(DAT_002df2d0 < param_1)" (( "(") (binary_expression "DAT_002df2d0 < param_1" (identifier "DAT_002df2d0") (< "<") (identifier "param_1")) () ")")) (compound_statement "{\n    local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);\n  }" ({ "{") (expression_statement "local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);" (assignment_expression "local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4)" (identifier "local_44") (= "=") (cast_expression "(int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4)" (identifier "ROUND") (argument_list "(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4)" (( "(") (binary_expression "ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4" (binary_expression "ROUND(param_1) + ROUND(param_1)" (call_expression "ROUND(param_1)" (identifier "ROUND") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (+ "+") (call_expression "ROUND(param_1)" (identifier "ROUND") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (+ "+") (cast_expression "(double)DAT_002df8b4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8b4"))) () ")")))))) (; ";")) (} "}")) (else_clause "else {\n    local_44 = 3;\n    param_2 = ABS(param_2);\n    if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }\n  }" (else "else") (compound_statement "{\n    local_44 = 3;\n    param_2 = ABS(param_2);\n    if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }\n  }" ({ "{") (expression_statement "local_44 = 3;" (assignment_expression "local_44 = 3" (identifier "local_44") (= "=") (number_literal "3")) (; ";")) (expression_statement "param_2 = ABS(param_2);" (assignment_expression "param_2 = ABS(param_2)" (identifier "param_2") (= "=") (call_expression "ABS(param_2)" (identifier "ABS") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (DAT_002df2d0 < param_2) {\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }" (if "if") (parenthesized_expression "(DAT_002df2d0 < param_2)" (( "(") (binary_expression "DAT_002df2d0 < param_2" (identifier "DAT_002df2d0") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n      local_5c = (param_2 + param_2) * param_2;\n      if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }\n      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }\n      local_48 = 5;\n      while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }\n      local_44 = local_48 + -2;\n    }" ({ "{") (expression_statement "local_5c = (param_2 + param_2) * param_2;" (assignment_expression "local_5c = (param_2 + param_2) * param_2" (identifier "local_5c") (= "=") (binary_expression "(param_2 + param_2) * param_2" (parenthesized_expression "(param_2 + param_2)" (( "(") (binary_expression "param_2 + param_2" (identifier "param_2") (+ "+") (identifier "param_2")) () ")")) (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (DAT_002df2d0 <= local_5c) {\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }\n      else {\n        local_5c = DAT_002df8d8;\n      }" (if "if") (parenthesized_expression "(DAT_002df2d0 <= local_5c)" (( "(") (binary_expression "DAT_002df2d0 <= local_5c" (identifier "DAT_002df2d0") (<= "<=") (identifier "local_5c")) () ")")) (compound_statement "{\n        local_5c = (double)DAT_002df8b4 / local_5c;\n      }" ({ "{") (expression_statement "local_5c = (double)DAT_002df8b4 / local_5c;" (assignment_expression "local_5c = (double)DAT_002df8b4 / local_5c" (identifier "local_5c") (= "=") (binary_expression "(double)DAT_002df8b4 / local_5c" (cast_expression "(double)DAT_002df8b4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8b4")) (/ "/") (identifier "local_5c"))) (; ";")) (} "}")) (else_clause "else {\n        local_5c = DAT_002df8d8;\n      }" (else "else") (compound_statement "{\n        local_5c = DAT_002df8d8;\n      }" ({ "{") (expression_statement "local_5c = DAT_002df8d8;" (assignment_expression "local_5c = DAT_002df8d8" (identifier "local_5c") (= "=") (identifier "DAT_002df8d8")) (; ";")) (} "}")))) (if_statement "if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {\n        local_54 = DAT_002df8d8;\n      }\n      else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }" (if "if") (parenthesized_expression "(param_2 * DAT_002f2ba8 < DAT_002df2d0)" (( "(") (binary_expression "param_2 * DAT_002f2ba8 < DAT_002df2d0" (binary_expression "param_2 * DAT_002f2ba8" (identifier "param_2") (* "*") (identifier "DAT_002f2ba8")) (< "<") (identifier "DAT_002df2d0")) () ")")) (compound_statement "{\n        local_54 = DAT_002df8d8;\n      }" ({ "{") (expression_statement "local_54 = DAT_002df8d8;" (assignment_expression "local_54 = DAT_002df8d8" (identifier "local_54") (= "=") (identifier "DAT_002df8d8")) (; ";")) (} "}")) (else_clause "else {\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }" (else "else") (compound_statement "{\n        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);\n      }" ({ "{") (expression_statement "local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);" (assignment_expression "local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8)" (identifier "local_54") (= "=") (binary_expression "(double)DAT_002df8b4 / (param_2 * DAT_002f2ba8)" (cast_expression "(double)DAT_002df8b4" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_002df8b4")) (/ "/") (parenthesized_expression "(param_2 * DAT_002f2ba8)" (( "(") (binary_expression "param_2 * DAT_002f2ba8" (identifier "param_2") (* "*") (identifier "DAT_002f2ba8")) () ")")))) (; ";")) (} "}")))) (expression_statement "local_48 = 5;" (assignment_expression "local_48 = 5" (identifier "local_48") (= "=") (number_literal "5")) (; ";")) (while_statement "while( true ) {\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        iVar3 = (local_48 + -1) / 2;\n        iVar4 = -iVar3;\n        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }\n        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);\n        local_6c = (dVar5 * local_54) / local_6c;\n        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;\n        local_48 = local_48 + 2;\n      }" ({ "{") (expression_statement "iVar3 = (local_48 + -1) / 2;" (assignment_expression "iVar3 = (local_48 + -1) / 2" (identifier "iVar3") (= "=") (binary_expression "(local_48 + -1) / 2" (parenthesized_expression "(local_48 + -1)" (( "(") (binary_expression "local_48 + -1" (identifier "local_48") (+ "+") (number_literal "-1")) () ")")) (/ "/") (number_literal "2"))) (; ";")) (expression_statement "iVar4 = -iVar3;" (assignment_expression "iVar4 = -iVar3" (identifier "iVar4") (= "=") (unary_expression "-iVar3" (- "-") (identifier "iVar3"))) (; ";")) (if_statement "if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }\n        else {\n          local_6c = 0.0;\n        }" (if "if") (parenthesized_expression "(SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0)" (( "(") (binary_expression "SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0" (call_expression "SBORROW4(iVar3,iVar4)" (identifier "SBORROW4") (argument_list "(iVar3,iVar4)" (( "(") (identifier "iVar3") (, ",") (identifier "iVar4") () ")"))) (== "==") (binary_expression "iVar3 * 2 < 0" (binary_expression "iVar3 * 2" (identifier "iVar3") (* "*") (number_literal "2")) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n          local_6c = 0.0;\n          do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);\n        }" ({ "{") (expression_statement "local_6c = 0.0;" (assignment_expression "local_6c = 0.0" (identifier "local_6c") (= "=") (number_literal "0.0")) (; ";")) (do_statement "do {\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          } while (iVar4 != iVar3 + 1);" (do "do") (compound_statement "{\n            iVar2 = iVar4 * iVar4;\n            iVar4 = iVar4 + 1;\n            dVar5 = exp(-(double)iVar2 * local_5c);\n            local_6c = dVar5 * local_54 + local_6c;\n          }" ({ "{") (expression_statement "iVar2 = iVar4 * iVar4;" (assignment_expression "iVar2 = iVar4 * iVar4" (identifier "iVar2") (= "=") (binary_expression "iVar4 * iVar4" (identifier "iVar4") (* "*") (identifier "iVar4"))) (; ";")) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "dVar5 = exp(-(double)iVar2 * local_5c);" (assignment_expression "dVar5 = exp(-(double)iVar2 * local_5c)" (identifier "dVar5") (= "=") (call_expression "exp(-(double)iVar2 * local_5c)" (identifier "exp") (argument_list "(-(double)iVar2 * local_5c)" (( "(") (binary_expression "-(double)iVar2 * local_5c" (unary_expression "-(double)iVar2" (- "-") (cast_expression "(double)iVar2" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "iVar2"))) (* "*") (identifier "local_5c")) () ")")))) (; ";")) (expression_statement "local_6c = dVar5 * local_54 + local_6c;" (assignment_expression "local_6c = dVar5 * local_54 + local_6c" (identifier "local_6c") (= "=") (binary_expression "dVar5 * local_54 + local_6c" (binary_expression "dVar5 * local_54" (identifier "dVar5") (* "*") (identifier "local_54")) (+ "+") (identifier "local_6c"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != iVar3 + 1)" (( "(") (binary_expression "iVar4 != iVar3 + 1" (identifier "iVar4") (!= "!=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) () ")")) (; ";")) (} "}")) (else_clause "else {\n          local_6c = 0.0;\n        }" (else "else") (compound_statement "{\n          local_6c = 0.0;\n        }" ({ "{") (expression_statement "local_6c = 0.0;" (assignment_expression "local_6c = 0.0" (identifier "local_6c") (= "=") (number_literal "0.0")) (; ";")) (} "}")))) (expression_statement "dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);" (assignment_expression "dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c)" (identifier "dVar5") (= "=") (call_expression "exp(-(double)(iVar3 * iVar3) * local_5c)" (identifier "exp") (argument_list "(-(double)(iVar3 * iVar3) * local_5c)" (( "(") (binary_expression "-(double)(iVar3 * iVar3) * local_5c" (unary_expression "-(double)(iVar3 * iVar3)" (- "-") (cast_expression "(double)(iVar3 * iVar3)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(iVar3 * iVar3)" (( "(") (binary_expression "iVar3 * iVar3" (identifier "iVar3") (* "*") (identifier "iVar3")) () ")")))) (* "*") (identifier "local_5c")) () ")")))) (; ";")) (expression_statement "local_6c = (dVar5 * local_54) / local_6c;" (assignment_expression "local_6c = (dVar5 * local_54) / local_6c" (identifier "local_6c") (= "=") (binary_expression "(dVar5 * local_54) / local_6c" (parenthesized_expression "(dVar5 * local_54)" (( "(") (binary_expression "dVar5 * local_54" (identifier "dVar5") (* "*") (identifier "local_54")) () ")")) (/ "/") (identifier "local_6c"))) (; ";")) (if_statement "if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;" (if "if") (parenthesized_expression "((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0))" (( "(") (binary_expression "(local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)" (parenthesized_expression "(local_6c < _DAT_002df2e0)" (( "(") (binary_expression "local_6c < _DAT_002df2e0" (identifier "local_6c") (< "<") (identifier "_DAT_002df2e0")) () ")")) (|| "||") (parenthesized_expression "(local_6c < DAT_002df2d0)" (( "(") (binary_expression "local_6c < DAT_002df2d0" (identifier "local_6c") (< "<") (identifier "DAT_002df2d0")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_48 = local_48 + 2;" (assignment_expression "local_48 = local_48 + 2" (identifier "local_48") (= "=") (binary_expression "local_48 + 2" (identifier "local_48") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "local_44 = local_48 + -2;" (assignment_expression "local_44 = local_48 + -2" (identifier "local_44") (= "=") (binary_expression "local_48 + -2" (identifier "local_48") (+ "+") (number_literal "-2"))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_002decd0();\n  }" (if "if") (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar1") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_002decd0();\n  }" ({ "{") (expression_statement "FUN_002decd0();" (call_expression "FUN_002decd0()" (identifier "FUN_002decd0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return local_44;" (return "return") (identifier "local_44") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Unknown calling convention */
/* WARNING: Enum "LogEventType": Some values do not have unique names */

size_t function_1(double var_4,double sigma)

{
  int var_18;
  int iVar2;
  int var_12;
  int var_13;
  int var_1;
  double var_7;
  double var_16;
  double var_8;
  double var_15;
  int var_10;
  size_t local_44;
  type_1 __cw;
  type_1 __cwtmp;
  
  var_18 = *(int *)(var_1 + 0x14);
  var_2(TraceEvent,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");
  if (var_3 < var_4) {
    local_44 = (size_t)(type_2)var_5(var_5(var_4) + var_5(var_4) + (double)DAT_002df8b4);
  }
  else {
    local_44 = 3;
    var_7 = var_6(sigma);
    if (var_3 < var_7) {
      var_8 = (var_7 + var_7) * var_7;
      if (var_3 <= var_8) {
        var_8 = (double)DAT_002df8b4 / var_8;
      }
      else {
        var_8 = DAT_002df8d8;
      }
      if (var_7 * var_9 < var_3) {
        var_15 = DAT_002df8d8;
      }
      else {
        var_15 = (double)DAT_002df8b4 / (var_7 * var_9);
      }
      var_10 = 5;
      while( true ) {
        var_12 = (var_10 + -1) / 2;
        var_13 = -var_12;
        if (var_11(var_12,var_13) == var_12 * 2 < 0) {
          var_16 = 0.0;
          do {
            iVar2 = var_13 * var_13;
            var_13 = var_13 + 1;
            var_7 = var_14(-(double)iVar2 * var_8);
            var_16 = var_7 * var_15 + var_16;
          } while (var_13 != var_12 + 1);
        }
        else {
          var_16 = 0.0;
        }
        var_7 = var_14(-(double)(var_12 * var_12) * var_8);
        var_16 = (var_7 * var_15) / var_16;
        if ((var_16 < var_17) || (var_16 < var_3)) break;
        var_10 = var_10 + 2;
      }
      local_44 = var_10 - 2;
    }
  }
  if (var_18 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_19();
  }
  return local_44;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_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))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier))) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))))) (if_statement condition: (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))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (return_statement (identifier)))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

int MASKED(double param_1,double param_2)

{
  int iVar1;
  int iVar2;
  int iVar3;
  int iVar4;
  int in_GS_OFFSET;
  double dVar5;
  double local_6c;
  double local_5c;
  double local_54;
  int local_48;
  int local_44;
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  LogMagickEvent(0x8000,"MagickCore/gem.c","GetOptimalKernelWidth1D",0x674,"...");
  if (DAT_002df2d0 < param_1) {
    local_44 = (int)(longlong)ROUND(ROUND(param_1) + ROUND(param_1) + (double)DAT_002df8b4);
  }
  else {
    local_44 = 3;
    param_2 = ABS(param_2);
    if (DAT_002df2d0 < param_2) {
      local_5c = (param_2 + param_2) * param_2;
      if (DAT_002df2d0 <= local_5c) {
        local_5c = (double)DAT_002df8b4 / local_5c;
      }
      else {
        local_5c = DAT_002df8d8;
      }
      if (param_2 * DAT_002f2ba8 < DAT_002df2d0) {
        local_54 = DAT_002df8d8;
      }
      else {
        local_54 = (double)DAT_002df8b4 / (param_2 * DAT_002f2ba8);
      }
      local_48 = 5;
      while( true ) {
        iVar3 = (local_48 + -1) / 2;
        iVar4 = -iVar3;
        if (SBORROW4(iVar3,iVar4) == iVar3 * 2 < 0) {
          local_6c = 0.0;
          do {
            iVar2 = iVar4 * iVar4;
            iVar4 = iVar4 + 1;
            dVar5 = exp(-(double)iVar2 * local_5c);
            local_6c = dVar5 * local_54 + local_6c;
          } while (iVar4 != iVar3 + 1);
        }
        else {
          local_6c = 0.0;
        }
        dVar5 = exp(-(double)(iVar3 * iVar3) * local_5c);
        local_6c = (dVar5 * local_54) / local_6c;
        if ((local_6c < _DAT_002df2e0) || (local_6c < DAT_002df2d0)) break;
        local_48 = local_48 + 2;
      }
      local_44 = local_48 + -2;
    }
  }
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_002decd0();
  }
  return local_44;
}

