
int divide(void *a,void *b,void *c,void *d)

{
  long lVar1;
  long in_FS_OFFSET;
  mpz_t tmp;
  
  lVar1 = *(long *)(in_FS_OFFSET + 0x28);
  if (a == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);
  }
  if (b != (void *)0x0) {
    if (c == (void *)0x0) {
      if (d != (void *)0x0) {
        __gmpz_mod(d,a,b);
      }
    }
    else {
      __gmpz_init(tmp);
      __gmpz_divexact(tmp,a,b);
      if (d != (void *)0x0) {
        __gmpz_mod(d,a,b);
      }
      __gmpz_set(c,tmp);
      __gmpz_clear(tmp);
    }
    if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {
      return 0;
    }
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126);
}



undefined8 FUN_0016ac00(long param_1,long param_2,long param_3,long param_4)

{
  long in_FS_OFFSET;
  undefined1 auStack_48 [24];
  long local_30;
  
  local_30 = *(long *)(in_FS_OFFSET + 0x28);
  if (param_1 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);
  }
  if (param_2 != 0) {
    if (param_3 == 0) {
      if (param_4 != 0) {
        __gmpz_mod(param_4,param_1,param_2);
      }
    }
    else {
      __gmpz_init(auStack_48);
      __gmpz_divexact(auStack_48,param_1,param_2);
      if (param_4 != 0) {
        __gmpz_mod(param_4,param_1,param_2);
      }
      __gmpz_set(param_3,auStack_48);
      __gmpz_clear(auStack_48);
    }
    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {
      return 0;
    }
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126);
}


PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x20
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x18],RAX
XOR EAX,EAX
TEST RDI,RDI
JZ 0x0016accd
MOV RBP,RSI
TEST RSI,RSI
JZ 0x0016acb5
MOV RBX,RDI
MOV R13,RDX
MOV R14,RCX
TEST RDX,RDX
JZ 0x0016aca0
MOV R12,RSP
MOV RDI,R12
CALL 0x00114bf0
MOV RDX,RBP
MOV RSI,RBX
MOV RDI,R12
CALL 0x00113890
TEST R14,R14
JZ 0x0016ac6b
MOV RDX,RBP
MOV RSI,RBX
MOV RDI,R14
CALL 0x00114670
MOV RDI,R13
MOV RSI,R12
CALL 0x001138c0
MOV RDI,R12
CALL 0x001141c0
XOR EAX,EAX
MOV RCX,qword ptr [RSP + 0x18]
XOR RCX,qword ptr FS:[0x28]
JNZ 0x0016ace5
ADD RSP,0x20
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
TEST RCX,RCX
JZ 0x0016ac7e
MOV RDX,RSI
MOV RSI,RDI
MOV RDI,RCX
CALL 0x00114670
JMP 0x0016ac7e
MOV EDX,0x126
LEA RSI,[0x1cd148]
LEA RDI,[0x1cfe0e]
CALL 0x00114270
MOV EDX,0x125
LEA RSI,[0x1cd148]
LEA RDI,[0x1b96ce]
CALL 0x00114270
CALL 0x00113880
(translation_unit "undefined8 FUN_0016ac00(long param_1,long param_2,long param_3,long param_4)\n\n{\n  long in_FS_OFFSET;\n  undefined1 auStack_48 [24];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }\n  if (param_2 != 0) {\n    if (param_3 == 0) {\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }\n    else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126);\n}\n\n" (function_definition "undefined8 FUN_0016ac00(long param_1,long param_2,long param_3,long param_4)\n\n{\n  long in_FS_OFFSET;\n  undefined1 auStack_48 [24];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }\n  if (param_2 != 0) {\n    if (param_3 == 0) {\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }\n    else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126);\n}" type_identifier (function_declarator "FUN_0016ac00(long param_1,long param_2,long param_3,long param_4)" identifier (parameter_list "(long param_1,long param_2,long param_3,long param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long in_FS_OFFSET;\n  undefined1 auStack_48 [24];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }\n  if (param_2 != 0) {\n    if (param_3 == 0) {\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }\n    else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126);\n}" { (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auStack_48 [24];" type_identifier (array_declarator "auStack_48 [24]" identifier [ number_literal ]) ;) (declaration "long local_30;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_30 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }" { comment (expression_statement "crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);" (call_expression "crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125)" identifier (argument_list "("a != NULL","src/math/gmp_desc.c",0x125)" ( (string_literal ""a != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_2 != 0) {\n    if (param_3 == 0) {\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }\n    else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    if (param_3 == 0) {\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }\n    else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { (if_statement "if (param_3 == 0) {\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }\n    else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }" { (if_statement "if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n        __gmpz_mod(param_4,param_1,param_2);\n      }" { (expression_statement "__gmpz_mod(param_4,param_1,param_2);" (call_expression "__gmpz_mod(param_4,param_1,param_2)" identifier (argument_list "(param_4,param_1,param_2)" ( identifier , identifier , identifier ))) ;) })) }) (else_clause "else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }" else (compound_statement "{\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }" { (expression_statement "__gmpz_init(auStack_48);" (call_expression "__gmpz_init(auStack_48)" identifier (argument_list "(auStack_48)" ( identifier ))) ;) (expression_statement "__gmpz_divexact(auStack_48,param_1,param_2);" (call_expression "__gmpz_divexact(auStack_48,param_1,param_2)" identifier (argument_list "(auStack_48,param_1,param_2)" ( identifier , identifier , identifier ))) ;) (if_statement "if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n        __gmpz_mod(param_4,param_1,param_2);\n      }" { (expression_statement "__gmpz_mod(param_4,param_1,param_2);" (call_expression "__gmpz_mod(param_4,param_1,param_2)" identifier (argument_list "(param_4,param_1,param_2)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "__gmpz_set(param_3,auStack_48);" (call_expression "__gmpz_set(param_3,auStack_48)" identifier (argument_list "(param_3,auStack_48)" ( identifier , identifier ))) ;) (expression_statement "__gmpz_clear(auStack_48);" (call_expression "__gmpz_clear(auStack_48)" identifier (argument_list "(auStack_48)" ( identifier ))) ;) }))) (if_statement "if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }" if (parenthesized_expression "(local_30 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_30 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) comment (expression_statement "crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126);" (call_expression "crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126)" identifier (argument_list "("b != NULL","src/math/gmp_desc.c",0x126)" ( (string_literal ""b != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })))
(translation_unit "int divide(void *a,void *b,void *c,void *d)\n\n{\n  long lVar1;\n  long in_FS_OFFSET;\n  mpz_t tmp;\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  if (a == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }\n  if (b != (void *)0x0) {\n    if (c == (void *)0x0) {\n      if (d != (void *)0x0) {\n        __gmpz_mod(d,a,b);\n      }\n    }\n    else {\n      __gmpz_init(tmp);\n      __gmpz_divexact(tmp,a,b);\n      if (d != (void *)0x0) {\n        __gmpz_mod(d,a,b);\n      }\n      __gmpz_set(c,tmp);\n      __gmpz_clear(tmp);\n    }\n    if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126);\n}\n\n" (function_definition "int divide(void *a,void *b,void *c,void *d)\n\n{\n  long lVar1;\n  long in_FS_OFFSET;\n  mpz_t tmp;\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  if (a == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }\n  if (b != (void *)0x0) {\n    if (c == (void *)0x0) {\n      if (d != (void *)0x0) {\n        __gmpz_mod(d,a,b);\n      }\n    }\n    else {\n      __gmpz_init(tmp);\n      __gmpz_divexact(tmp,a,b);\n      if (d != (void *)0x0) {\n        __gmpz_mod(d,a,b);\n      }\n      __gmpz_set(c,tmp);\n      __gmpz_clear(tmp);\n    }\n    if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126);\n}" primitive_type (function_declarator "divide(void *a,void *b,void *c,void *d)" identifier (parameter_list "(void *a,void *b,void *c,void *d)" ( (parameter_declaration "void *a" primitive_type (pointer_declarator "*a" * identifier)) , (parameter_declaration "void *b" primitive_type (pointer_declarator "*b" * identifier)) , (parameter_declaration "void *c" primitive_type (pointer_declarator "*c" * identifier)) , (parameter_declaration "void *d" primitive_type (pointer_declarator "*d" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  long in_FS_OFFSET;\n  mpz_t tmp;\n  \n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  if (a == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }\n  if (b != (void *)0x0) {\n    if (c == (void *)0x0) {\n      if (d != (void *)0x0) {\n        __gmpz_mod(d,a,b);\n      }\n    }\n    else {\n      __gmpz_init(tmp);\n      __gmpz_divexact(tmp,a,b);\n      if (d != (void *)0x0) {\n        __gmpz_mod(d,a,b);\n      }\n      __gmpz_set(c,tmp);\n      __gmpz_clear(tmp);\n    }\n    if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126);\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "mpz_t tmp;" type_identifier identifier ;) (expression_statement "lVar1 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar1 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (a == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }" if (parenthesized_expression "(a == (void *)0x0)" ( (binary_expression "a == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }" { comment (expression_statement "crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);" (call_expression "crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125)" identifier (argument_list "("a != NULL","src/math/gmp_desc.c",0x125)" ( (string_literal ""a != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (b != (void *)0x0) {\n    if (c == (void *)0x0) {\n      if (d != (void *)0x0) {\n        __gmpz_mod(d,a,b);\n      }\n    }\n    else {\n      __gmpz_init(tmp);\n      __gmpz_divexact(tmp,a,b);\n      if (d != (void *)0x0) {\n        __gmpz_mod(d,a,b);\n      }\n      __gmpz_set(c,tmp);\n      __gmpz_clear(tmp);\n    }\n    if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(b != (void *)0x0)" ( (binary_expression "b != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (c == (void *)0x0) {\n      if (d != (void *)0x0) {\n        __gmpz_mod(d,a,b);\n      }\n    }\n    else {\n      __gmpz_init(tmp);\n      __gmpz_divexact(tmp,a,b);\n      if (d != (void *)0x0) {\n        __gmpz_mod(d,a,b);\n      }\n      __gmpz_set(c,tmp);\n      __gmpz_clear(tmp);\n    }\n    if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { (if_statement "if (c == (void *)0x0) {\n      if (d != (void *)0x0) {\n        __gmpz_mod(d,a,b);\n      }\n    }\n    else {\n      __gmpz_init(tmp);\n      __gmpz_divexact(tmp,a,b);\n      if (d != (void *)0x0) {\n        __gmpz_mod(d,a,b);\n      }\n      __gmpz_set(c,tmp);\n      __gmpz_clear(tmp);\n    }" if (parenthesized_expression "(c == (void *)0x0)" ( (binary_expression "c == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (d != (void *)0x0) {\n        __gmpz_mod(d,a,b);\n      }\n    }" { (if_statement "if (d != (void *)0x0) {\n        __gmpz_mod(d,a,b);\n      }" if (parenthesized_expression "(d != (void *)0x0)" ( (binary_expression "d != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        __gmpz_mod(d,a,b);\n      }" { (expression_statement "__gmpz_mod(d,a,b);" (call_expression "__gmpz_mod(d,a,b)" identifier (argument_list "(d,a,b)" ( identifier , identifier , identifier ))) ;) })) }) (else_clause "else {\n      __gmpz_init(tmp);\n      __gmpz_divexact(tmp,a,b);\n      if (d != (void *)0x0) {\n        __gmpz_mod(d,a,b);\n      }\n      __gmpz_set(c,tmp);\n      __gmpz_clear(tmp);\n    }" else (compound_statement "{\n      __gmpz_init(tmp);\n      __gmpz_divexact(tmp,a,b);\n      if (d != (void *)0x0) {\n        __gmpz_mod(d,a,b);\n      }\n      __gmpz_set(c,tmp);\n      __gmpz_clear(tmp);\n    }" { (expression_statement "__gmpz_init(tmp);" (call_expression "__gmpz_init(tmp)" identifier (argument_list "(tmp)" ( identifier ))) ;) (expression_statement "__gmpz_divexact(tmp,a,b);" (call_expression "__gmpz_divexact(tmp,a,b)" identifier (argument_list "(tmp,a,b)" ( identifier , identifier , identifier ))) ;) (if_statement "if (d != (void *)0x0) {\n        __gmpz_mod(d,a,b);\n      }" if (parenthesized_expression "(d != (void *)0x0)" ( (binary_expression "d != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        __gmpz_mod(d,a,b);\n      }" { (expression_statement "__gmpz_mod(d,a,b);" (call_expression "__gmpz_mod(d,a,b)" identifier (argument_list "(d,a,b)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "__gmpz_set(c,tmp);" (call_expression "__gmpz_set(c,tmp)" identifier (argument_list "(c,tmp)" ( identifier , identifier ))) ;) (expression_statement "__gmpz_clear(tmp);" (call_expression "__gmpz_clear(tmp)" identifier (argument_list "(tmp)" ( identifier ))) ;) }))) (if_statement "if (lVar1 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }" if (parenthesized_expression "(lVar1 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar1 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) comment (expression_statement "crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126);" (call_expression "crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126)" identifier (argument_list "("b != NULL","src/math/gmp_desc.c",0x126)" ( (string_literal ""b != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })))
(translation_unit "undefined8 FUN_0016ac00(long param_1,long param_2,long param_3,long param_4)\n\n{\n  long in_FS_OFFSET;\n  undefined1 auStack_48 [24];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }\n  if (param_2 != 0) {\n    if (param_3 == 0) {\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }\n    else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    \n    __stack_chk_fail();\n  }\n                    \n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126);\n}\n\n" (function_definition "undefined8 FUN_0016ac00(long param_1,long param_2,long param_3,long param_4)\n\n{\n  long in_FS_OFFSET;\n  undefined1 auStack_48 [24];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }\n  if (param_2 != 0) {\n    if (param_3 == 0) {\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }\n    else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    \n    __stack_chk_fail();\n  }\n                    \n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126);\n}" type_identifier (function_declarator "FUN_0016ac00(long param_1,long param_2,long param_3,long param_4)" identifier (parameter_list "(long param_1,long param_2,long param_3,long param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long in_FS_OFFSET;\n  undefined1 auStack_48 [24];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }\n  if (param_2 != 0) {\n    if (param_3 == 0) {\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }\n    else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    \n    __stack_chk_fail();\n  }\n                    \n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126);\n}" { (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 auStack_48 [24];" type_identifier (array_declarator "auStack_48 [24]" identifier [ number_literal ]) ;) (declaration "long local_30;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_30 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }" if (parenthesized_expression "(param_1 == 0)" ( (binary_expression "param_1 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }" { (expression_statement "crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);" (call_expression "crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125)" identifier (argument_list "("a != NULL","src/math/gmp_desc.c",0x125)" ( (string_literal ""a != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_2 != 0) {\n    if (param_3 == 0) {\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }\n    else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    \n    __stack_chk_fail();\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    if (param_3 == 0) {\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }\n    else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    \n    __stack_chk_fail();\n  }" { (if_statement "if (param_3 == 0) {\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }\n    else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }" { (if_statement "if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n        __gmpz_mod(param_4,param_1,param_2);\n      }" { (expression_statement "__gmpz_mod(param_4,param_1,param_2);" (call_expression "__gmpz_mod(param_4,param_1,param_2)" identifier (argument_list "(param_4,param_1,param_2)" ( identifier , identifier , identifier ))) ;) })) }) (else_clause "else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }" else (compound_statement "{\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }" { (expression_statement "__gmpz_init(auStack_48);" (call_expression "__gmpz_init(auStack_48)" identifier (argument_list "(auStack_48)" ( identifier ))) ;) (expression_statement "__gmpz_divexact(auStack_48,param_1,param_2);" (call_expression "__gmpz_divexact(auStack_48,param_1,param_2)" identifier (argument_list "(auStack_48,param_1,param_2)" ( identifier , identifier , identifier ))) ;) (if_statement "if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n        __gmpz_mod(param_4,param_1,param_2);\n      }" { (expression_statement "__gmpz_mod(param_4,param_1,param_2);" (call_expression "__gmpz_mod(param_4,param_1,param_2)" identifier (argument_list "(param_4,param_1,param_2)" ( identifier , identifier , identifier ))) ;) })) (expression_statement "__gmpz_set(param_3,auStack_48);" (call_expression "__gmpz_set(param_3,auStack_48)" identifier (argument_list "(param_3,auStack_48)" ( identifier , identifier ))) ;) (expression_statement "__gmpz_clear(auStack_48);" (call_expression "__gmpz_clear(auStack_48)" identifier (argument_list "(auStack_48)" ( identifier ))) ;) }))) (if_statement "if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }" if (parenthesized_expression "(local_30 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_30 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126);" (call_expression "crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126)" identifier (argument_list "("b != NULL","src/math/gmp_desc.c",0x126)" ( (string_literal ""b != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) })))
(function_definition "undefined8 FUN_0016ac00(long param_1,long param_2,long param_3,long param_4)\n\n{\n  long in_FS_OFFSET;\n  undefined1 auStack_48 [24];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }\n  if (param_2 != 0) {\n    if (param_3 == 0) {\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }\n    else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    \n    __stack_chk_fail();\n  }\n                    \n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126);\n}" (type_identifier "undefined8") (function_declarator "FUN_0016ac00(long param_1,long param_2,long param_3,long param_4)" (identifier "FUN_0016ac00") (parameter_list "(long param_1,long param_2,long param_3,long param_4)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (identifier "param_4")) () ")"))) (compound_statement "{\n  long in_FS_OFFSET;\n  undefined1 auStack_48 [24];\n  long local_30;\n  \n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }\n  if (param_2 != 0) {\n    if (param_3 == 0) {\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }\n    else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    \n    __stack_chk_fail();\n  }\n                    \n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126);\n}" ({ "{") (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "undefined1 auStack_48 [24];" (type_identifier "undefined1") (array_declarator "auStack_48 [24]" (identifier "auStack_48") ([ "[") (number_literal "24") (] "]")) (; ";")) (declaration "long local_30;" (sized_type_specifier "long" (long "long")) (identifier "local_30") (; ";")) (expression_statement "local_30 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_30") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }" (if "if") (parenthesized_expression "(param_1 == 0)" (( "(") (binary_expression "param_1 == 0" (identifier "param_1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);\n  }" ({ "{") (expression_statement "crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);" (call_expression "crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125)" (identifier "crypt_argchk") (argument_list "("a != NULL","src/math/gmp_desc.c",0x125)" (( "(") (string_literal ""a != NULL"" (" """) (string_content "a != NULL") (" """)) (, ",") (string_literal ""src/math/gmp_desc.c"" (" """) (string_content "src/math/gmp_desc.c") (" """)) (, ",") (number_literal "0x125") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_2 != 0) {\n    if (param_3 == 0) {\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }\n    else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    \n    __stack_chk_fail();\n  }" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (param_3 == 0) {\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }\n    else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }\n    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }\n                    \n    __stack_chk_fail();\n  }" ({ "{") (if_statement "if (param_3 == 0) {\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }\n    else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n    }" ({ "{") (if_statement "if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        __gmpz_mod(param_4,param_1,param_2);\n      }" ({ "{") (expression_statement "__gmpz_mod(param_4,param_1,param_2);" (call_expression "__gmpz_mod(param_4,param_1,param_2)" (identifier "__gmpz_mod") (argument_list "(param_4,param_1,param_2)" (( "(") (identifier "param_4") (, ",") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }" (else "else") (compound_statement "{\n      __gmpz_init(auStack_48);\n      __gmpz_divexact(auStack_48,param_1,param_2);\n      if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }\n      __gmpz_set(param_3,auStack_48);\n      __gmpz_clear(auStack_48);\n    }" ({ "{") (expression_statement "__gmpz_init(auStack_48);" (call_expression "__gmpz_init(auStack_48)" (identifier "__gmpz_init") (argument_list "(auStack_48)" (( "(") (identifier "auStack_48") () ")"))) (; ";")) (expression_statement "__gmpz_divexact(auStack_48,param_1,param_2);" (call_expression "__gmpz_divexact(auStack_48,param_1,param_2)" (identifier "__gmpz_divexact") (argument_list "(auStack_48,param_1,param_2)" (( "(") (identifier "auStack_48") (, ",") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";")) (if_statement "if (param_4 != 0) {\n        __gmpz_mod(param_4,param_1,param_2);\n      }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        __gmpz_mod(param_4,param_1,param_2);\n      }" ({ "{") (expression_statement "__gmpz_mod(param_4,param_1,param_2);" (call_expression "__gmpz_mod(param_4,param_1,param_2)" (identifier "__gmpz_mod") (argument_list "(param_4,param_1,param_2)" (( "(") (identifier "param_4") (, ",") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (expression_statement "__gmpz_set(param_3,auStack_48);" (call_expression "__gmpz_set(param_3,auStack_48)" (identifier "__gmpz_set") (argument_list "(param_3,auStack_48)" (( "(") (identifier "param_3") (, ",") (identifier "auStack_48") () ")"))) (; ";")) (expression_statement "__gmpz_clear(auStack_48);" (call_expression "__gmpz_clear(auStack_48)" (identifier "__gmpz_clear") (argument_list "(auStack_48)" (( "(") (identifier "auStack_48") () ")"))) (; ";")) (} "}")))) (if_statement "if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(local_30 == *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_30 == *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_30") (== "==") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126);" (call_expression "crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126)" (identifier "crypt_argchk") (argument_list "("b != NULL","src/math/gmp_desc.c",0x126)" (( "(") (string_literal ""b != NULL"" (" """) (string_content "b != NULL") (" """)) (, ",") (string_literal ""src/math/gmp_desc.c"" (" """) (string_content "src/math/gmp_desc.c") (" """)) (, ",") (number_literal "0x126") () ")"))) (; ";")) (} "}")))

int function_1(void *var_2,void *var_4,void *var_5,void *var_6)

{
  long var_12;
  long var_1;
  type_1 tmp;
  
  var_12 = *(long *)(var_1 + 0x28);
  if (var_2 == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("a != NULL","src/math/gmp_desc.c",0x125);
  }
  if (var_4 != (void *)0x0) {
    if (var_5 == (void *)0x0) {
      if (var_6 != (void *)0x0) {
        var_7(var_6,var_2,var_4);
      }
    }
    else {
      var_8(tmp);
      var_9(tmp,var_2,var_4);
      if (var_6 != (void *)0x0) {
        var_7(var_6,var_2,var_4);
      }
      var_10(var_5,tmp);
      var_11(tmp);
    }
    if (var_12 == *(long *)(var_1 + 0x28)) {
      return 0;
    }
                    /* WARNING: Subroutine does not return */
    var_13();
  }
                    /* WARNING: Subroutine does not return */
  var_3("b != NULL","src/math/gmp_desc.c",0x126);
}


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

undefined8 MASKED(long param_1,long param_2,long param_3,long param_4)

{
  long in_FS_OFFSET;
  undefined1 auStack_48 [24];
  long local_30;
  
  local_30 = *(long *)(in_FS_OFFSET + 0x28);
  if (param_1 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x125);
  }
  if (param_2 != 0) {
    if (param_3 == 0) {
      if (param_4 != 0) {
        __gmpz_mod(param_4,param_1,param_2);
      }
    }
    else {
      __gmpz_init(auStack_48);
      __gmpz_divexact(auStack_48,param_1,param_2);
      if (param_4 != 0) {
        __gmpz_mod(param_4,param_1,param_2);
      }
      __gmpz_set(param_3,auStack_48);
      __gmpz_clear(auStack_48);
    }
    if (local_30 == *(long *)(in_FS_OFFSET + 0x28)) {
      return 0;
    }
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("b != NULL","src/math/gmp_desc.c",0x126);
}

