
timespec dtotimespec(double sec)

{
  int *in_a0;
  int iVar1;
  undefined4 in_a2;
  undefined4 in_a3;
  double dVar2;
  int iVar3;
  timespec tVar4;
  timespec tVar5;
  timespec tVar6;
  timespec tVar7;
  
  if ((double)CONCAT44(in_a2,in_a3) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)) {
    in_a0[1] = 0;
    *in_a0 = -0x80000000;
    tVar6.tv_sec = (__time_t)in_a0;
    tVar6.tv_nsec = -0x80000000;
    return tVar6;
  }
  if ((double)CONCAT44(in_a2,in_a3) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)) {
    dVar2 = ((double)CONCAT44(in_a2,in_a3) - (double)(int)(double)CONCAT44(in_a2,in_a3)) *
            *(double *)(PTR_DAT_0003e1b8 + -0x2908);
    iVar3 = (int)dVar2;
    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;
    iVar1 = iVar3 % 1000000000;
    tVar5.tv_nsec = iVar3 / 1000000000 + (int)(double)CONCAT44(in_a2,in_a3);
    if (-1 < iVar1) {
      *in_a0 = tVar5.tv_nsec;
      in_a0[1] = iVar1;
      tVar5.tv_sec = (__time_t)in_a0;
      return tVar5;
    }
    tVar7.tv_nsec = tVar5.tv_nsec + -1;
    *in_a0 = tVar7.tv_nsec;
    in_a0[1] = iVar1 + 1000000000;
    tVar7.tv_sec = (__time_t)in_a0;
    return tVar7;
  }
  *in_a0 = 0x7fffffff;
  in_a0[1] = 999999999;
  tVar4.tv_sec = (__time_t)in_a0;
  tVar4.tv_nsec = 999999999;
  return tVar4;
}



void dtotimespec(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  double dVar2;
  int iVar3;
  
  if ((double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)) {
    param_1[1] = 0;
    *param_1 = -0x80000000;
    return;
  }
  if ((double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)) {
    dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *
            *(double *)(PTR_DAT_0003e1b8 + -0x2908);
    iVar3 = (int)dVar2;
    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;
    iVar1 = iVar3 % 1000000000;
    iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);
    if (-1 < iVar1) {
      *param_1 = iVar3;
      param_1[1] = iVar1;
      return;
    }
    *param_1 = iVar3 + -1;
    param_1[1] = iVar1 + 1000000000;
    return;
  }
  *param_1 = 0x7fffffff;
  param_1[1] = 999999999;
  return;
}


lui gp,0x2
addiu gp,gp,-0x2740
addu gp,gp,t9
mtc1 a3,f2
lw v1,-0x7fc8(gp)
ldc1 f0,-0x2910(v1)
mthc1 a2,f2
c.lt.D f0,f2
bc1f 0x000289a4
_or v0,a0,zero
mtc1 a3,f2
lw v1,-0x7fc8(gp)
ldc1 f0,-0x3d28(v1)
mthc1 a2,f2
c.lt.D f2,f0
bc1t 0x1,0x00028920
_lw v1,-0x7fc8(gp)
lui v1,0x7fff
ori v1,v1,0xffff
sw v1,0x0(a0)
lui v1,0x3b9a
ori v1,v1,0xc9ff
jr ra
_sw v1,0x4(a0)
mtc1 a3,f0
li a0,0x1
lui a1,0x3b9a
mtc1 a3,f2
ori a1,a1,0xca00
mthc1 a2,f0
mthc1 a2,f2
trunc.w.D f0,f0
mfc1 t0,f0
cvt.d.W f0,f0
sub.D D f0,f2,f0
ldc1 f2,-0x2908(v1)
mul.D f0,f0,f2
trunc.w.D f2,f0
mfc1 v1,f2
cvt.d.W f2,f2
c.lt.D f2,f0
movf a0,zero,0x7
addu a0,a0,v1
lui v1,0x44b8
sra a2,a0,0x1f
addiu v1,v1,0x2fa1
mult a0,v1
mfhi v1
sra v1,v1,0x1c
subu v1,v1,a2
mul a2,v1,a1
subu a0,a0,a2
bltz a0,0x000289b4
_addu v1,v1,t0
sw v1,0x0(v0)
jr ra
_sw a0,0x4(v0)
lui v1,0x8000
sw zero,0x4(a0)
jr ra
_sw v1,0x0(a0)
addiu v1,v1,-0x1
addu a0,a0,a1
sw v1,0x0(v0)
jr ra
_sw a0,0x4(v0)
(translation_unit "void dtotimespec(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  int iVar1;\n  double dVar2;\n  int iVar3;\n  \n  if ((double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)) {\n    param_1[1] = 0;\n    *param_1 = -0x80000000;\n    return;\n  }\n  if ((double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)) {\n    dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);\n    if (-1 < iVar1) {\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }\n    *param_1 = iVar3 + -1;\n    param_1[1] = iVar1 + 1000000000;\n    return;\n  }\n  *param_1 = 0x7fffffff;\n  param_1[1] = 999999999;\n  return;\n}\n\n" (function_definition "void dtotimespec(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  int iVar1;\n  double dVar2;\n  int iVar3;\n  \n  if ((double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)) {\n    param_1[1] = 0;\n    *param_1 = -0x80000000;\n    return;\n  }\n  if ((double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)) {\n    dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);\n    if (-1 < iVar1) {\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }\n    *param_1 = iVar3 + -1;\n    param_1[1] = iVar1 + 1000000000;\n    return;\n  }\n  *param_1 = 0x7fffffff;\n  param_1[1] = 999999999;\n  return;\n}" primitive_type (function_declarator "dtotimespec(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  double dVar2;\n  int iVar3;\n  \n  if ((double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)) {\n    param_1[1] = 0;\n    *param_1 = -0x80000000;\n    return;\n  }\n  if ((double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)) {\n    dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);\n    if (-1 < iVar1) {\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }\n    *param_1 = iVar3 + -1;\n    param_1[1] = iVar1 + 1000000000;\n    return;\n  }\n  *param_1 = 0x7fffffff;\n  param_1[1] = 999999999;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (if_statement "if ((double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)) {\n    param_1[1] = 0;\n    *param_1 = -0x80000000;\n    return;\n  }" if (parenthesized_expression "((double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910))" ( (binary_expression "(double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)" (cast_expression "(double)CONCAT44(param_3,param_4)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) <= (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x2910)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x2910)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x2910)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x2910" identifier + number_literal) ))))) )) (compound_statement "{\n    param_1[1] = 0;\n    *param_1 = -0x80000000;\n    return;\n  }" { (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_1 = -0x80000000;" (assignment_expression "*param_1 = -0x80000000" (pointer_expression "*param_1" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if ((double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)) {\n    dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);\n    if (-1 < iVar1) {\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }\n    *param_1 = iVar3 + -1;\n    param_1[1] = iVar1 + 1000000000;\n    return;\n  }" if (parenthesized_expression "((double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28))" ( (binary_expression "(double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)" (cast_expression "(double)CONCAT44(param_3,param_4)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) < (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d28)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d28)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d28)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3d28" identifier + number_literal) ))))) )) (compound_statement "{\n    dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);\n    if (-1 < iVar1) {\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }\n    *param_1 = iVar3 + -1;\n    param_1[1] = iVar1 + 1000000000;\n    return;\n  }" { (expression_statement "dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);" (assignment_expression "dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908)" identifier = (binary_expression "((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908)" (parenthesized_expression "((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4))" ( (binary_expression "(double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)" (cast_expression "(double)CONCAT44(param_3,param_4)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) - (cast_expression "(double)(int)(double)CONCAT44(param_3,param_4)" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)(double)CONCAT44(param_3,param_4)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(double)CONCAT44(param_3,param_4)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier ))))))) )) * (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x2908)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x2908)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x2908)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x2908" identifier + number_literal) )))))) ;) (expression_statement "iVar3 = (int)dVar2;" (assignment_expression "iVar3 = (int)dVar2" identifier = (cast_expression "(int)dVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;" (assignment_expression "iVar3 = (uint)((double)iVar3 < dVar2) + iVar3" identifier = (binary_expression "(uint)((double)iVar3 < dVar2) + iVar3" (call_expression "(uint)((double)iVar3 < dVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((double)iVar3 < dVar2)" ( (binary_expression "(double)iVar3 < dVar2" (cast_expression "(double)iVar3" ( (type_descriptor "double" primitive_type) ) identifier) < identifier) ))) + identifier)) ;) (expression_statement "iVar1 = iVar3 % 1000000000;" (assignment_expression "iVar1 = iVar3 % 1000000000" identifier = (binary_expression "iVar3 % 1000000000" identifier % number_literal)) ;) (expression_statement "iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);" (assignment_expression "iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4)" identifier = (binary_expression "iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4)" (binary_expression "iVar3 / 1000000000" identifier / number_literal) + (cast_expression "(int)(double)CONCAT44(param_3,param_4)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(double)CONCAT44(param_3,param_4)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier ))))))) ;) (if_statement "if (-1 < iVar1) {\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }" { (expression_statement "*param_1 = iVar3;" (assignment_expression "*param_1 = iVar3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = iVar1;" (assignment_expression "param_1[1] = iVar1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "*param_1 = iVar3 + -1;" (assignment_expression "*param_1 = iVar3 + -1" (pointer_expression "*param_1" * identifier) = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "param_1[1] = iVar1 + 1000000000;" (assignment_expression "param_1[1] = iVar1 + 1000000000" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "iVar1 + 1000000000" identifier + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "*param_1 = 0x7fffffff;" (assignment_expression "*param_1 = 0x7fffffff" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "param_1[1] = 999999999;" (assignment_expression "param_1[1] = 999999999" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })))
(translation_unit "timespec dtotimespec(double sec)\n\n{\n  int *in_a0;\n  int iVar1;\n  undefined4 in_a2;\n  undefined4 in_a3;\n  double dVar2;\n  int iVar3;\n  timespec tVar4;\n  timespec tVar5;\n  timespec tVar6;\n  timespec tVar7;\n  \n  if ((double)CONCAT44(in_a2,in_a3) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)) {\n    in_a0[1] = 0;\n    *in_a0 = -0x80000000;\n    tVar6.tv_sec = (__time_t)in_a0;\n    tVar6.tv_nsec = -0x80000000;\n    return tVar6;\n  }\n  if ((double)CONCAT44(in_a2,in_a3) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)) {\n    dVar2 = ((double)CONCAT44(in_a2,in_a3) - (double)(int)(double)CONCAT44(in_a2,in_a3)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    tVar5.tv_nsec = iVar3 / 1000000000 + (int)(double)CONCAT44(in_a2,in_a3);\n    if (-1 < iVar1) {\n      *in_a0 = tVar5.tv_nsec;\n      in_a0[1] = iVar1;\n      tVar5.tv_sec = (__time_t)in_a0;\n      return tVar5;\n    }\n    tVar7.tv_nsec = tVar5.tv_nsec + -1;\n    *in_a0 = tVar7.tv_nsec;\n    in_a0[1] = iVar1 + 1000000000;\n    tVar7.tv_sec = (__time_t)in_a0;\n    return tVar7;\n  }\n  *in_a0 = 0x7fffffff;\n  in_a0[1] = 999999999;\n  tVar4.tv_sec = (__time_t)in_a0;\n  tVar4.tv_nsec = 999999999;\n  return tVar4;\n}\n\n" (function_definition "timespec dtotimespec(double sec)\n\n{\n  int *in_a0;\n  int iVar1;\n  undefined4 in_a2;\n  undefined4 in_a3;\n  double dVar2;\n  int iVar3;\n  timespec tVar4;\n  timespec tVar5;\n  timespec tVar6;\n  timespec tVar7;\n  \n  if ((double)CONCAT44(in_a2,in_a3) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)) {\n    in_a0[1] = 0;\n    *in_a0 = -0x80000000;\n    tVar6.tv_sec = (__time_t)in_a0;\n    tVar6.tv_nsec = -0x80000000;\n    return tVar6;\n  }\n  if ((double)CONCAT44(in_a2,in_a3) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)) {\n    dVar2 = ((double)CONCAT44(in_a2,in_a3) - (double)(int)(double)CONCAT44(in_a2,in_a3)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    tVar5.tv_nsec = iVar3 / 1000000000 + (int)(double)CONCAT44(in_a2,in_a3);\n    if (-1 < iVar1) {\n      *in_a0 = tVar5.tv_nsec;\n      in_a0[1] = iVar1;\n      tVar5.tv_sec = (__time_t)in_a0;\n      return tVar5;\n    }\n    tVar7.tv_nsec = tVar5.tv_nsec + -1;\n    *in_a0 = tVar7.tv_nsec;\n    in_a0[1] = iVar1 + 1000000000;\n    tVar7.tv_sec = (__time_t)in_a0;\n    return tVar7;\n  }\n  *in_a0 = 0x7fffffff;\n  in_a0[1] = 999999999;\n  tVar4.tv_sec = (__time_t)in_a0;\n  tVar4.tv_nsec = 999999999;\n  return tVar4;\n}" type_identifier (function_declarator "dtotimespec(double sec)" identifier (parameter_list "(double sec)" ( (parameter_declaration "double sec" primitive_type identifier) ))) (compound_statement "{\n  int *in_a0;\n  int iVar1;\n  undefined4 in_a2;\n  undefined4 in_a3;\n  double dVar2;\n  int iVar3;\n  timespec tVar4;\n  timespec tVar5;\n  timespec tVar6;\n  timespec tVar7;\n  \n  if ((double)CONCAT44(in_a2,in_a3) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)) {\n    in_a0[1] = 0;\n    *in_a0 = -0x80000000;\n    tVar6.tv_sec = (__time_t)in_a0;\n    tVar6.tv_nsec = -0x80000000;\n    return tVar6;\n  }\n  if ((double)CONCAT44(in_a2,in_a3) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)) {\n    dVar2 = ((double)CONCAT44(in_a2,in_a3) - (double)(int)(double)CONCAT44(in_a2,in_a3)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    tVar5.tv_nsec = iVar3 / 1000000000 + (int)(double)CONCAT44(in_a2,in_a3);\n    if (-1 < iVar1) {\n      *in_a0 = tVar5.tv_nsec;\n      in_a0[1] = iVar1;\n      tVar5.tv_sec = (__time_t)in_a0;\n      return tVar5;\n    }\n    tVar7.tv_nsec = tVar5.tv_nsec + -1;\n    *in_a0 = tVar7.tv_nsec;\n    in_a0[1] = iVar1 + 1000000000;\n    tVar7.tv_sec = (__time_t)in_a0;\n    return tVar7;\n  }\n  *in_a0 = 0x7fffffff;\n  in_a0[1] = 999999999;\n  tVar4.tv_sec = (__time_t)in_a0;\n  tVar4.tv_nsec = 999999999;\n  return tVar4;\n}" { (declaration "int *in_a0;" primitive_type (pointer_declarator "*in_a0" * identifier) ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 in_a2;" type_identifier identifier ;) (declaration "undefined4 in_a3;" type_identifier identifier ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "timespec tVar4;" type_identifier identifier ;) (declaration "timespec tVar5;" type_identifier identifier ;) (declaration "timespec tVar6;" type_identifier identifier ;) (declaration "timespec tVar7;" type_identifier identifier ;) (if_statement "if ((double)CONCAT44(in_a2,in_a3) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)) {\n    in_a0[1] = 0;\n    *in_a0 = -0x80000000;\n    tVar6.tv_sec = (__time_t)in_a0;\n    tVar6.tv_nsec = -0x80000000;\n    return tVar6;\n  }" if (parenthesized_expression "((double)CONCAT44(in_a2,in_a3) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910))" ( (binary_expression "(double)CONCAT44(in_a2,in_a3) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)" (cast_expression "(double)CONCAT44(in_a2,in_a3)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(in_a2,in_a3)" identifier (argument_list "(in_a2,in_a3)" ( identifier , identifier )))) <= (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x2910)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x2910)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x2910)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x2910" identifier + number_literal) ))))) )) (compound_statement "{\n    in_a0[1] = 0;\n    *in_a0 = -0x80000000;\n    tVar6.tv_sec = (__time_t)in_a0;\n    tVar6.tv_nsec = -0x80000000;\n    return tVar6;\n  }" { (expression_statement "in_a0[1] = 0;" (assignment_expression "in_a0[1] = 0" (subscript_expression "in_a0[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*in_a0 = -0x80000000;" (assignment_expression "*in_a0 = -0x80000000" (pointer_expression "*in_a0" * identifier) = number_literal) ;) (expression_statement "tVar6.tv_sec = (__time_t)in_a0;" (assignment_expression "tVar6.tv_sec = (__time_t)in_a0" (field_expression "tVar6.tv_sec" identifier . field_identifier) = (cast_expression "(__time_t)in_a0" ( (type_descriptor "__time_t" type_identifier) ) identifier)) ;) (expression_statement "tVar6.tv_nsec = -0x80000000;" (assignment_expression "tVar6.tv_nsec = -0x80000000" (field_expression "tVar6.tv_nsec" identifier . field_identifier) = number_literal) ;) (return_statement "return tVar6;" return identifier ;) })) (if_statement "if ((double)CONCAT44(in_a2,in_a3) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)) {\n    dVar2 = ((double)CONCAT44(in_a2,in_a3) - (double)(int)(double)CONCAT44(in_a2,in_a3)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    tVar5.tv_nsec = iVar3 / 1000000000 + (int)(double)CONCAT44(in_a2,in_a3);\n    if (-1 < iVar1) {\n      *in_a0 = tVar5.tv_nsec;\n      in_a0[1] = iVar1;\n      tVar5.tv_sec = (__time_t)in_a0;\n      return tVar5;\n    }\n    tVar7.tv_nsec = tVar5.tv_nsec + -1;\n    *in_a0 = tVar7.tv_nsec;\n    in_a0[1] = iVar1 + 1000000000;\n    tVar7.tv_sec = (__time_t)in_a0;\n    return tVar7;\n  }" if (parenthesized_expression "((double)CONCAT44(in_a2,in_a3) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28))" ( (binary_expression "(double)CONCAT44(in_a2,in_a3) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)" (cast_expression "(double)CONCAT44(in_a2,in_a3)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(in_a2,in_a3)" identifier (argument_list "(in_a2,in_a3)" ( identifier , identifier )))) < (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d28)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d28)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d28)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3d28" identifier + number_literal) ))))) )) (compound_statement "{\n    dVar2 = ((double)CONCAT44(in_a2,in_a3) - (double)(int)(double)CONCAT44(in_a2,in_a3)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    tVar5.tv_nsec = iVar3 / 1000000000 + (int)(double)CONCAT44(in_a2,in_a3);\n    if (-1 < iVar1) {\n      *in_a0 = tVar5.tv_nsec;\n      in_a0[1] = iVar1;\n      tVar5.tv_sec = (__time_t)in_a0;\n      return tVar5;\n    }\n    tVar7.tv_nsec = tVar5.tv_nsec + -1;\n    *in_a0 = tVar7.tv_nsec;\n    in_a0[1] = iVar1 + 1000000000;\n    tVar7.tv_sec = (__time_t)in_a0;\n    return tVar7;\n  }" { (expression_statement "dVar2 = ((double)CONCAT44(in_a2,in_a3) - (double)(int)(double)CONCAT44(in_a2,in_a3)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);" (assignment_expression "dVar2 = ((double)CONCAT44(in_a2,in_a3) - (double)(int)(double)CONCAT44(in_a2,in_a3)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908)" identifier = (binary_expression "((double)CONCAT44(in_a2,in_a3) - (double)(int)(double)CONCAT44(in_a2,in_a3)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908)" (parenthesized_expression "((double)CONCAT44(in_a2,in_a3) - (double)(int)(double)CONCAT44(in_a2,in_a3))" ( (binary_expression "(double)CONCAT44(in_a2,in_a3) - (double)(int)(double)CONCAT44(in_a2,in_a3)" (cast_expression "(double)CONCAT44(in_a2,in_a3)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(in_a2,in_a3)" identifier (argument_list "(in_a2,in_a3)" ( identifier , identifier )))) - (cast_expression "(double)(int)(double)CONCAT44(in_a2,in_a3)" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)(double)CONCAT44(in_a2,in_a3)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(double)CONCAT44(in_a2,in_a3)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(in_a2,in_a3)" identifier (argument_list "(in_a2,in_a3)" ( identifier , identifier ))))))) )) * (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x2908)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x2908)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x2908)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x2908" identifier + number_literal) )))))) ;) (expression_statement "iVar3 = (int)dVar2;" (assignment_expression "iVar3 = (int)dVar2" identifier = (cast_expression "(int)dVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;" (assignment_expression "iVar3 = (uint)((double)iVar3 < dVar2) + iVar3" identifier = (binary_expression "(uint)((double)iVar3 < dVar2) + iVar3" (call_expression "(uint)((double)iVar3 < dVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((double)iVar3 < dVar2)" ( (binary_expression "(double)iVar3 < dVar2" (cast_expression "(double)iVar3" ( (type_descriptor "double" primitive_type) ) identifier) < identifier) ))) + identifier)) ;) (expression_statement "iVar1 = iVar3 % 1000000000;" (assignment_expression "iVar1 = iVar3 % 1000000000" identifier = (binary_expression "iVar3 % 1000000000" identifier % number_literal)) ;) (expression_statement "tVar5.tv_nsec = iVar3 / 1000000000 + (int)(double)CONCAT44(in_a2,in_a3);" (assignment_expression "tVar5.tv_nsec = iVar3 / 1000000000 + (int)(double)CONCAT44(in_a2,in_a3)" (field_expression "tVar5.tv_nsec" identifier . field_identifier) = (binary_expression "iVar3 / 1000000000 + (int)(double)CONCAT44(in_a2,in_a3)" (binary_expression "iVar3 / 1000000000" identifier / number_literal) + (cast_expression "(int)(double)CONCAT44(in_a2,in_a3)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(double)CONCAT44(in_a2,in_a3)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(in_a2,in_a3)" identifier (argument_list "(in_a2,in_a3)" ( identifier , identifier ))))))) ;) (if_statement "if (-1 < iVar1) {\n      *in_a0 = tVar5.tv_nsec;\n      in_a0[1] = iVar1;\n      tVar5.tv_sec = (__time_t)in_a0;\n      return tVar5;\n    }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n      *in_a0 = tVar5.tv_nsec;\n      in_a0[1] = iVar1;\n      tVar5.tv_sec = (__time_t)in_a0;\n      return tVar5;\n    }" { (expression_statement "*in_a0 = tVar5.tv_nsec;" (assignment_expression "*in_a0 = tVar5.tv_nsec" (pointer_expression "*in_a0" * identifier) = (field_expression "tVar5.tv_nsec" identifier . field_identifier)) ;) (expression_statement "in_a0[1] = iVar1;" (assignment_expression "in_a0[1] = iVar1" (subscript_expression "in_a0[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "tVar5.tv_sec = (__time_t)in_a0;" (assignment_expression "tVar5.tv_sec = (__time_t)in_a0" (field_expression "tVar5.tv_sec" identifier . field_identifier) = (cast_expression "(__time_t)in_a0" ( (type_descriptor "__time_t" type_identifier) ) identifier)) ;) (return_statement "return tVar5;" return identifier ;) })) (expression_statement "tVar7.tv_nsec = tVar5.tv_nsec + -1;" (assignment_expression "tVar7.tv_nsec = tVar5.tv_nsec + -1" (field_expression "tVar7.tv_nsec" identifier . field_identifier) = (binary_expression "tVar5.tv_nsec + -1" (field_expression "tVar5.tv_nsec" identifier . field_identifier) + number_literal)) ;) (expression_statement "*in_a0 = tVar7.tv_nsec;" (assignment_expression "*in_a0 = tVar7.tv_nsec" (pointer_expression "*in_a0" * identifier) = (field_expression "tVar7.tv_nsec" identifier . field_identifier)) ;) (expression_statement "in_a0[1] = iVar1 + 1000000000;" (assignment_expression "in_a0[1] = iVar1 + 1000000000" (subscript_expression "in_a0[1]" identifier [ number_literal ]) = (binary_expression "iVar1 + 1000000000" identifier + number_literal)) ;) (expression_statement "tVar7.tv_sec = (__time_t)in_a0;" (assignment_expression "tVar7.tv_sec = (__time_t)in_a0" (field_expression "tVar7.tv_sec" identifier . field_identifier) = (cast_expression "(__time_t)in_a0" ( (type_descriptor "__time_t" type_identifier) ) identifier)) ;) (return_statement "return tVar7;" return identifier ;) })) (expression_statement "*in_a0 = 0x7fffffff;" (assignment_expression "*in_a0 = 0x7fffffff" (pointer_expression "*in_a0" * identifier) = number_literal) ;) (expression_statement "in_a0[1] = 999999999;" (assignment_expression "in_a0[1] = 999999999" (subscript_expression "in_a0[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "tVar4.tv_sec = (__time_t)in_a0;" (assignment_expression "tVar4.tv_sec = (__time_t)in_a0" (field_expression "tVar4.tv_sec" identifier . field_identifier) = (cast_expression "(__time_t)in_a0" ( (type_descriptor "__time_t" type_identifier) ) identifier)) ;) (expression_statement "tVar4.tv_nsec = 999999999;" (assignment_expression "tVar4.tv_nsec = 999999999" (field_expression "tVar4.tv_nsec" identifier . field_identifier) = number_literal) ;) (return_statement "return tVar4;" return identifier ;) })))
(translation_unit "void dtotimespec(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  int iVar1;\n  double dVar2;\n  int iVar3;\n  \n  if ((double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)) {\n    param_1[1] = 0;\n    *param_1 = -0x80000000;\n    return;\n  }\n  if ((double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)) {\n    dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);\n    if (-1 < iVar1) {\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }\n    *param_1 = iVar3 + -1;\n    param_1[1] = iVar1 + 1000000000;\n    return;\n  }\n  *param_1 = 0x7fffffff;\n  param_1[1] = 999999999;\n  return;\n}\n\n" (function_definition "void dtotimespec(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  int iVar1;\n  double dVar2;\n  int iVar3;\n  \n  if ((double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)) {\n    param_1[1] = 0;\n    *param_1 = -0x80000000;\n    return;\n  }\n  if ((double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)) {\n    dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);\n    if (-1 < iVar1) {\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }\n    *param_1 = iVar3 + -1;\n    param_1[1] = iVar1 + 1000000000;\n    return;\n  }\n  *param_1 = 0x7fffffff;\n  param_1[1] = 999999999;\n  return;\n}" primitive_type (function_declarator "dtotimespec(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  double dVar2;\n  int iVar3;\n  \n  if ((double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)) {\n    param_1[1] = 0;\n    *param_1 = -0x80000000;\n    return;\n  }\n  if ((double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)) {\n    dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);\n    if (-1 < iVar1) {\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }\n    *param_1 = iVar3 + -1;\n    param_1[1] = iVar1 + 1000000000;\n    return;\n  }\n  *param_1 = 0x7fffffff;\n  param_1[1] = 999999999;\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (if_statement "if ((double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)) {\n    param_1[1] = 0;\n    *param_1 = -0x80000000;\n    return;\n  }" if (parenthesized_expression "((double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910))" ( (binary_expression "(double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)" (cast_expression "(double)CONCAT44(param_3,param_4)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) <= (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x2910)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x2910)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x2910)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x2910" identifier + number_literal) ))))) )) (compound_statement "{\n    param_1[1] = 0;\n    *param_1 = -0x80000000;\n    return;\n  }" { (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*param_1 = -0x80000000;" (assignment_expression "*param_1 = -0x80000000" (pointer_expression "*param_1" * identifier) = number_literal) ;) (return_statement "return;" return ;) })) (if_statement "if ((double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)) {\n    dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);\n    if (-1 < iVar1) {\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }\n    *param_1 = iVar3 + -1;\n    param_1[1] = iVar1 + 1000000000;\n    return;\n  }" if (parenthesized_expression "((double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28))" ( (binary_expression "(double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)" (cast_expression "(double)CONCAT44(param_3,param_4)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) < (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d28)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d28)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d28)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3d28" identifier + number_literal) ))))) )) (compound_statement "{\n    dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);\n    if (-1 < iVar1) {\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }\n    *param_1 = iVar3 + -1;\n    param_1[1] = iVar1 + 1000000000;\n    return;\n  }" { (expression_statement "dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);" (assignment_expression "dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908)" identifier = (binary_expression "((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908)" (parenthesized_expression "((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4))" ( (binary_expression "(double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)" (cast_expression "(double)CONCAT44(param_3,param_4)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) - (cast_expression "(double)(int)(double)CONCAT44(param_3,param_4)" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)(double)CONCAT44(param_3,param_4)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(double)CONCAT44(param_3,param_4)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier ))))))) )) * (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x2908)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x2908)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x2908)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x2908" identifier + number_literal) )))))) ;) (expression_statement "iVar3 = (int)dVar2;" (assignment_expression "iVar3 = (int)dVar2" identifier = (cast_expression "(int)dVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;" (assignment_expression "iVar3 = (uint)((double)iVar3 < dVar2) + iVar3" identifier = (binary_expression "(uint)((double)iVar3 < dVar2) + iVar3" (call_expression "(uint)((double)iVar3 < dVar2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((double)iVar3 < dVar2)" ( (binary_expression "(double)iVar3 < dVar2" (cast_expression "(double)iVar3" ( (type_descriptor "double" primitive_type) ) identifier) < identifier) ))) + identifier)) ;) (expression_statement "iVar1 = iVar3 % 1000000000;" (assignment_expression "iVar1 = iVar3 % 1000000000" identifier = (binary_expression "iVar3 % 1000000000" identifier % number_literal)) ;) (expression_statement "iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);" (assignment_expression "iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4)" identifier = (binary_expression "iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4)" (binary_expression "iVar3 / 1000000000" identifier / number_literal) + (cast_expression "(int)(double)CONCAT44(param_3,param_4)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(double)CONCAT44(param_3,param_4)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier ))))))) ;) (if_statement "if (-1 < iVar1) {\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }" if (parenthesized_expression "(-1 < iVar1)" ( (binary_expression "-1 < iVar1" number_literal < identifier) )) (compound_statement "{\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }" { (expression_statement "*param_1 = iVar3;" (assignment_expression "*param_1 = iVar3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = iVar1;" (assignment_expression "param_1[1] = iVar1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "*param_1 = iVar3 + -1;" (assignment_expression "*param_1 = iVar3 + -1" (pointer_expression "*param_1" * identifier) = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "param_1[1] = iVar1 + 1000000000;" (assignment_expression "param_1[1] = iVar1 + 1000000000" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "iVar1 + 1000000000" identifier + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "*param_1 = 0x7fffffff;" (assignment_expression "*param_1 = 0x7fffffff" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "param_1[1] = 999999999;" (assignment_expression "param_1[1] = 999999999" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))) - (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))))) )) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) ))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT % LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT / LIT) + (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return ;) })))
(function_definition "void dtotimespec(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  int iVar1;\n  double dVar2;\n  int iVar3;\n  \n  if ((double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)) {\n    param_1[1] = 0;\n    *param_1 = -0x80000000;\n    return;\n  }\n  if ((double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)) {\n    dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);\n    if (-1 < iVar1) {\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }\n    *param_1 = iVar3 + -1;\n    param_1[1] = iVar1 + 1000000000;\n    return;\n  }\n  *param_1 = 0x7fffffff;\n  param_1[1] = 999999999;\n  return;\n}" (primitive_type "void") (function_declarator "dtotimespec(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" (identifier "dtotimespec") (parameter_list "(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) () ")"))) (compound_statement "{\n  int iVar1;\n  double dVar2;\n  int iVar3;\n  \n  if ((double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)) {\n    param_1[1] = 0;\n    *param_1 = -0x80000000;\n    return;\n  }\n  if ((double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)) {\n    dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);\n    if (-1 < iVar1) {\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }\n    *param_1 = iVar3 + -1;\n    param_1[1] = iVar1 + 1000000000;\n    return;\n  }\n  *param_1 = 0x7fffffff;\n  param_1[1] = 999999999;\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "double dVar2;" (primitive_type "double") (identifier "dVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (if_statement "if ((double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)) {\n    param_1[1] = 0;\n    *param_1 = -0x80000000;\n    return;\n  }" (if "if") (parenthesized_expression "((double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910))" (( "(") (binary_expression "(double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)" (cast_expression "(double)CONCAT44(param_3,param_4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "CONCAT44(param_3,param_4)" (identifier "CONCAT44") (argument_list "(param_3,param_4)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") () ")")))) (<= "<=") (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x2910)" (* "*") (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x2910)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x2910)" (( "(") (binary_expression "PTR_DAT_0003e1b8 + -0x2910" (identifier "PTR_DAT_0003e1b8") (+ "+") (number_literal "-0x2910")) () ")"))))) () ")")) (compound_statement "{\n    param_1[1] = 0;\n    *param_1 = -0x80000000;\n    return;\n  }" ({ "{") (expression_statement "param_1[1] = 0;" (assignment_expression "param_1[1] = 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*param_1 = -0x80000000;" (assignment_expression "*param_1 = -0x80000000" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "-0x80000000")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if ((double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)) {\n    dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);\n    if (-1 < iVar1) {\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }\n    *param_1 = iVar3 + -1;\n    param_1[1] = iVar1 + 1000000000;\n    return;\n  }" (if "if") (parenthesized_expression "((double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28))" (( "(") (binary_expression "(double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)" (cast_expression "(double)CONCAT44(param_3,param_4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "CONCAT44(param_3,param_4)" (identifier "CONCAT44") (argument_list "(param_3,param_4)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") () ")")))) (< "<") (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d28)" (* "*") (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d28)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d28)" (( "(") (binary_expression "PTR_DAT_0003e1b8 + -0x3d28" (identifier "PTR_DAT_0003e1b8") (+ "+") (number_literal "-0x3d28")) () ")"))))) () ")")) (compound_statement "{\n    dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);\n    iVar3 = (int)dVar2;\n    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;\n    iVar1 = iVar3 % 1000000000;\n    iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);\n    if (-1 < iVar1) {\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }\n    *param_1 = iVar3 + -1;\n    param_1[1] = iVar1 + 1000000000;\n    return;\n  }" ({ "{") (expression_statement "dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908);" (assignment_expression "dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908)" (identifier "dVar2") (= "=") (binary_expression "((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *\n            *(double *)(PTR_DAT_0003e1b8 + -0x2908)" (parenthesized_expression "((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4))" (( "(") (binary_expression "(double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)" (cast_expression "(double)CONCAT44(param_3,param_4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "CONCAT44(param_3,param_4)" (identifier "CONCAT44") (argument_list "(param_3,param_4)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") () ")")))) (- "-") (cast_expression "(double)(int)(double)CONCAT44(param_3,param_4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(int)(double)CONCAT44(param_3,param_4)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(double)CONCAT44(param_3,param_4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "CONCAT44(param_3,param_4)" (identifier "CONCAT44") (argument_list "(param_3,param_4)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") () ")"))))))) () ")")) (* "*") (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x2908)" (* "*") (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x2908)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x2908)" (( "(") (binary_expression "PTR_DAT_0003e1b8 + -0x2908" (identifier "PTR_DAT_0003e1b8") (+ "+") (number_literal "-0x2908")) () ")")))))) (; ";")) (expression_statement "iVar3 = (int)dVar2;" (assignment_expression "iVar3 = (int)dVar2" (identifier "iVar3") (= "=") (cast_expression "(int)dVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "dVar2"))) (; ";")) (expression_statement "iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;" (assignment_expression "iVar3 = (uint)((double)iVar3 < dVar2) + iVar3" (identifier "iVar3") (= "=") (binary_expression "(uint)((double)iVar3 < dVar2) + iVar3" (call_expression "(uint)((double)iVar3 < dVar2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((double)iVar3 < dVar2)" (( "(") (binary_expression "(double)iVar3 < dVar2" (cast_expression "(double)iVar3" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "iVar3")) (< "<") (identifier "dVar2")) () ")"))) (+ "+") (identifier "iVar3"))) (; ";")) (expression_statement "iVar1 = iVar3 % 1000000000;" (assignment_expression "iVar1 = iVar3 % 1000000000" (identifier "iVar1") (= "=") (binary_expression "iVar3 % 1000000000" (identifier "iVar3") (% "%") (number_literal "1000000000"))) (; ";")) (expression_statement "iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);" (assignment_expression "iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4)" (identifier "iVar3") (= "=") (binary_expression "iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4)" (binary_expression "iVar3 / 1000000000" (identifier "iVar3") (/ "/") (number_literal "1000000000")) (+ "+") (cast_expression "(int)(double)CONCAT44(param_3,param_4)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(double)CONCAT44(param_3,param_4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "CONCAT44(param_3,param_4)" (identifier "CONCAT44") (argument_list "(param_3,param_4)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") () ")"))))))) (; ";")) (if_statement "if (-1 < iVar1) {\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }" (if "if") (parenthesized_expression "(-1 < iVar1)" (( "(") (binary_expression "-1 < iVar1" (number_literal "-1") (< "<") (identifier "iVar1")) () ")")) (compound_statement "{\n      *param_1 = iVar3;\n      param_1[1] = iVar1;\n      return;\n    }" ({ "{") (expression_statement "*param_1 = iVar3;" (assignment_expression "*param_1 = iVar3" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "iVar3")) (; ";")) (expression_statement "param_1[1] = iVar1;" (assignment_expression "param_1[1] = iVar1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar1")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*param_1 = iVar3 + -1;" (assignment_expression "*param_1 = iVar3 + -1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "param_1[1] = iVar1 + 1000000000;" (assignment_expression "param_1[1] = iVar1 + 1000000000" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar1 + 1000000000" (identifier "iVar1") (+ "+") (number_literal "1000000000"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*param_1 = 0x7fffffff;" (assignment_expression "*param_1 = 0x7fffffff" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0x7fffffff")) (; ";")) (expression_statement "param_1[1] = 999999999;" (assignment_expression "param_1[1] = 999999999" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "999999999")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (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 (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (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 (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (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 (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (return_statement))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (return_statement))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (return_statement))))

void MASKED(int *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4)

{
  int iVar1;
  double dVar2;
  int iVar3;
  
  if ((double)CONCAT44(param_3,param_4) <= *(double *)(PTR_DAT_0003e1b8 + -0x2910)) {
    param_1[1] = 0;
    *param_1 = -0x80000000;
    return;
  }
  if ((double)CONCAT44(param_3,param_4) < *(double *)(PTR_DAT_0003e1b8 + -0x3d28)) {
    dVar2 = ((double)CONCAT44(param_3,param_4) - (double)(int)(double)CONCAT44(param_3,param_4)) *
            *(double *)(PTR_DAT_0003e1b8 + -0x2908);
    iVar3 = (int)dVar2;
    iVar3 = (uint)((double)iVar3 < dVar2) + iVar3;
    iVar1 = iVar3 % 1000000000;
    iVar3 = iVar3 / 1000000000 + (int)(double)CONCAT44(param_3,param_4);
    if (-1 < iVar1) {
      *param_1 = iVar3;
      param_1[1] = iVar1;
      return;
    }
    *param_1 = iVar3 + -1;
    param_1[1] = iVar1 + 1000000000;
    return;
  }
  *param_1 = 0x7fffffff;
  param_1[1] = 999999999;
  return;
}

