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

{
  if (a == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);
  }
  if (b == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);
  }
  if (c == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);
  }
  if (d != (void *)0x0) {
    __gmpz_sub(d,a,b);
    __gmpz_mod(d,d,c);
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b);
}



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

{
  if (param_1 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);
  }
  if (param_2 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);
  }
  if (param_3 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);
  }
  if (param_4 != 0) {
    __gmpz_sub(param_4,param_1,param_2);
    __gmpz_mod(param_4,param_4,param_3);
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b);
}


PUSH RBP
PUSH RBX
SUB RSP,0x8
TEST RDI,RDI
JZ 0x0015fed5
TEST RSI,RSI
JZ 0x0015ff1d
MOV RBP,RDX
TEST RDX,RDX
JZ 0x0015ff05
MOV RBX,RCX
TEST RCX,RCX
JZ 0x0015feed
MOV RDX,RSI
MOV RSI,RDI
MOV RDI,RCX
CALL 0x001135c0
MOV RDX,RBP
MOV RSI,RBX
MOV RDI,RBX
CALL 0x00114670
ADD RSP,0x8
XOR EAX,EAX
POP RBX
POP RBP
RET
MOV EDX,0x168
LEA RSI,[0x1bdb28]
LEA RDI,[0x1aa70e]
CALL 0x00114270
MOV EDX,0x16b
LEA RSI,[0x1bdb28]
LEA RDI,[0x1ae2d2]
CALL 0x00114270
MOV EDX,0x16a
LEA RSI,[0x1bdb28]
LEA RDI,[0x1bbc2c]
CALL 0x00114270
MOV EDX,0x169
LEA RSI,[0x1bdb28]
LEA RDI,[0x1c07ee]
CALL 0x00114270
(translation_unit "undefined8 FUN_0015fe90(long param_1,long param_2,long param_3,long param_4)\n\n{\n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);\n  }\n  if (param_2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\n  }\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\n  }\n  if (param_4 != 0) {\n    __gmpz_sub(param_4,param_1,param_2);\n    __gmpz_mod(param_4,param_4,param_3);\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b);\n}\n\n" (function_definition "undefined8 FUN_0015fe90(long param_1,long param_2,long param_3,long param_4)\n\n{\n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);\n  }\n  if (param_2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\n  }\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\n  }\n  if (param_4 != 0) {\n    __gmpz_sub(param_4,param_1,param_2);\n    __gmpz_mod(param_4,param_4,param_3);\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b);\n}" type_identifier (function_declarator "FUN_0015fe90(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  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);\n  }\n  if (param_2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\n  }\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\n  }\n  if (param_4 != 0) {\n    __gmpz_sub(param_4,param_1,param_2);\n    __gmpz_mod(param_4,param_4,param_3);\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b);\n}" { (if_statement "if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);\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",0x168);\n  }" { comment (expression_statement "crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);" (call_expression "crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168)" identifier (argument_list "("a != NULL","src/math/gmp_desc.c",0x168)" ( (string_literal ""a != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\n  }" { comment (expression_statement "crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);" (call_expression "crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169)" identifier (argument_list "("b != NULL","src/math/gmp_desc.c",0x169)" ( (string_literal ""b != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\n  }" { comment (expression_statement "crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);" (call_expression "crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a)" identifier (argument_list "("c != NULL","src/math/gmp_desc.c",0x16a)" ( (string_literal ""c != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_4 != 0) {\n    __gmpz_sub(param_4,param_1,param_2);\n    __gmpz_mod(param_4,param_4,param_3);\n    return 0;\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    __gmpz_sub(param_4,param_1,param_2);\n    __gmpz_mod(param_4,param_4,param_3);\n    return 0;\n  }" { (expression_statement "__gmpz_sub(param_4,param_1,param_2);" (call_expression "__gmpz_sub(param_4,param_1,param_2)" identifier (argument_list "(param_4,param_1,param_2)" ( identifier , identifier , identifier ))) ;) (expression_statement "__gmpz_mod(param_4,param_4,param_3);" (call_expression "__gmpz_mod(param_4,param_4,param_3)" identifier (argument_list "(param_4,param_4,param_3)" ( identifier , identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) comment (expression_statement "crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b);" (call_expression "crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b)" identifier (argument_list "("d != NULL","src/math/gmp_desc.c",0x16b)" ( (string_literal ""d != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })))
(translation_unit "int submod(void *a,void *b,void *c,void *d)\n\n{\n  if (a == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);\n  }\n  if (b == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\n  }\n  if (c == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\n  }\n  if (d != (void *)0x0) {\n    __gmpz_sub(d,a,b);\n    __gmpz_mod(d,d,c);\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b);\n}\n\n" (function_definition "int submod(void *a,void *b,void *c,void *d)\n\n{\n  if (a == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);\n  }\n  if (b == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\n  }\n  if (c == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\n  }\n  if (d != (void *)0x0) {\n    __gmpz_sub(d,a,b);\n    __gmpz_mod(d,d,c);\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b);\n}" primitive_type (function_declarator "submod(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  if (a == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);\n  }\n  if (b == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\n  }\n  if (c == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\n  }\n  if (d != (void *)0x0) {\n    __gmpz_sub(d,a,b);\n    __gmpz_mod(d,d,c);\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b);\n}" { (if_statement "if (a == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);\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",0x168);\n  }" { comment (expression_statement "crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);" (call_expression "crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168)" identifier (argument_list "("a != NULL","src/math/gmp_desc.c",0x168)" ( (string_literal ""a != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (b == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\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                    /* WARNING: Subroutine does not return */\n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\n  }" { comment (expression_statement "crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);" (call_expression "crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169)" identifier (argument_list "("b != NULL","src/math/gmp_desc.c",0x169)" ( (string_literal ""b != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (c == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\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                    /* WARNING: Subroutine does not return */\n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\n  }" { comment (expression_statement "crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);" (call_expression "crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a)" identifier (argument_list "("c != NULL","src/math/gmp_desc.c",0x16a)" ( (string_literal ""c != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (d != (void *)0x0) {\n    __gmpz_sub(d,a,b);\n    __gmpz_mod(d,d,c);\n    return 0;\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_sub(d,a,b);\n    __gmpz_mod(d,d,c);\n    return 0;\n  }" { (expression_statement "__gmpz_sub(d,a,b);" (call_expression "__gmpz_sub(d,a,b)" identifier (argument_list "(d,a,b)" ( identifier , identifier , identifier ))) ;) (expression_statement "__gmpz_mod(d,d,c);" (call_expression "__gmpz_mod(d,d,c)" identifier (argument_list "(d,d,c)" ( identifier , identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) comment (expression_statement "crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b);" (call_expression "crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b)" identifier (argument_list "("d != NULL","src/math/gmp_desc.c",0x16b)" ( (string_literal ""d != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })))
(translation_unit "undefined8 FUN_0015fe90(long param_1,long param_2,long param_3,long param_4)\n\n{\n  if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);\n  }\n  if (param_2 == 0) {\n                    \n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\n  }\n  if (param_4 != 0) {\n    __gmpz_sub(param_4,param_1,param_2);\n    __gmpz_mod(param_4,param_4,param_3);\n    return 0;\n  }\n                    \n  crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b);\n}\n\n" (function_definition "undefined8 FUN_0015fe90(long param_1,long param_2,long param_3,long param_4)\n\n{\n  if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);\n  }\n  if (param_2 == 0) {\n                    \n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\n  }\n  if (param_4 != 0) {\n    __gmpz_sub(param_4,param_1,param_2);\n    __gmpz_mod(param_4,param_4,param_3);\n    return 0;\n  }\n                    \n  crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b);\n}" type_identifier (function_declarator "FUN_0015fe90(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  if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);\n  }\n  if (param_2 == 0) {\n                    \n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\n  }\n  if (param_4 != 0) {\n    __gmpz_sub(param_4,param_1,param_2);\n    __gmpz_mod(param_4,param_4,param_3);\n    return 0;\n  }\n                    \n  crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b);\n}" { (if_statement "if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);\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",0x168);\n  }" { (expression_statement "crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);" (call_expression "crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168)" identifier (argument_list "("a != NULL","src/math/gmp_desc.c",0x168)" ( (string_literal ""a != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_2 == 0) {\n                    \n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\n  }" { (expression_statement "crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);" (call_expression "crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169)" identifier (argument_list "("b != NULL","src/math/gmp_desc.c",0x169)" ( (string_literal ""b != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_3 == 0) {\n                    \n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\n  }" { (expression_statement "crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);" (call_expression "crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a)" identifier (argument_list "("c != NULL","src/math/gmp_desc.c",0x16a)" ( (string_literal ""c != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_4 != 0) {\n    __gmpz_sub(param_4,param_1,param_2);\n    __gmpz_mod(param_4,param_4,param_3);\n    return 0;\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    __gmpz_sub(param_4,param_1,param_2);\n    __gmpz_mod(param_4,param_4,param_3);\n    return 0;\n  }" { (expression_statement "__gmpz_sub(param_4,param_1,param_2);" (call_expression "__gmpz_sub(param_4,param_1,param_2)" identifier (argument_list "(param_4,param_1,param_2)" ( identifier , identifier , identifier ))) ;) (expression_statement "__gmpz_mod(param_4,param_4,param_3);" (call_expression "__gmpz_mod(param_4,param_4,param_3)" identifier (argument_list "(param_4,param_4,param_3)" ( identifier , identifier , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b);" (call_expression "crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b)" identifier (argument_list "("d != NULL","src/math/gmp_desc.c",0x16b)" ( (string_literal ""d != 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 { (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 { (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 { (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 { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) })))
(function_definition "undefined8 FUN_0015fe90(long param_1,long param_2,long param_3,long param_4)\n\n{\n  if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);\n  }\n  if (param_2 == 0) {\n                    \n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\n  }\n  if (param_4 != 0) {\n    __gmpz_sub(param_4,param_1,param_2);\n    __gmpz_mod(param_4,param_4,param_3);\n    return 0;\n  }\n                    \n  crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b);\n}" (type_identifier "undefined8") (function_declarator "FUN_0015fe90(long param_1,long param_2,long param_3,long param_4)" (identifier "FUN_0015fe90") (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  if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);\n  }\n  if (param_2 == 0) {\n                    \n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\n  }\n  if (param_4 != 0) {\n    __gmpz_sub(param_4,param_1,param_2);\n    __gmpz_mod(param_4,param_4,param_3);\n    return 0;\n  }\n                    \n  crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b);\n}" ({ "{") (if_statement "if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);\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",0x168);\n  }" ({ "{") (expression_statement "crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);" (call_expression "crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168)" (identifier "crypt_argchk") (argument_list "("a != NULL","src/math/gmp_desc.c",0x168)" (( "(") (string_literal ""a != NULL"" (" """) (string_content "a != NULL") (" """)) (, ",") (string_literal ""src/math/gmp_desc.c"" (" """) (string_content "src/math/gmp_desc.c") (" """)) (, ",") (number_literal "0x168") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_2 == 0) {\n                    \n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);\n  }" ({ "{") (expression_statement "crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);" (call_expression "crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169)" (identifier "crypt_argchk") (argument_list "("b != NULL","src/math/gmp_desc.c",0x169)" (( "(") (string_literal ""b != NULL"" (" """) (string_content "b != NULL") (" """)) (, ",") (string_literal ""src/math/gmp_desc.c"" (" """) (string_content "src/math/gmp_desc.c") (" """)) (, ",") (number_literal "0x169") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_3 == 0) {\n                    \n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);\n  }" ({ "{") (expression_statement "crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);" (call_expression "crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a)" (identifier "crypt_argchk") (argument_list "("c != NULL","src/math/gmp_desc.c",0x16a)" (( "(") (string_literal ""c != NULL"" (" """) (string_content "c != NULL") (" """)) (, ",") (string_literal ""src/math/gmp_desc.c"" (" """) (string_content "src/math/gmp_desc.c") (" """)) (, ",") (number_literal "0x16a") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_4 != 0) {\n    __gmpz_sub(param_4,param_1,param_2);\n    __gmpz_mod(param_4,param_4,param_3);\n    return 0;\n  }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    __gmpz_sub(param_4,param_1,param_2);\n    __gmpz_mod(param_4,param_4,param_3);\n    return 0;\n  }" ({ "{") (expression_statement "__gmpz_sub(param_4,param_1,param_2);" (call_expression "__gmpz_sub(param_4,param_1,param_2)" (identifier "__gmpz_sub") (argument_list "(param_4,param_1,param_2)" (( "(") (identifier "param_4") (, ",") (identifier "param_1") (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "__gmpz_mod(param_4,param_4,param_3);" (call_expression "__gmpz_mod(param_4,param_4,param_3)" (identifier "__gmpz_mod") (argument_list "(param_4,param_4,param_3)" (( "(") (identifier "param_4") (, ",") (identifier "param_4") (, ",") (identifier "param_3") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b);" (call_expression "crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b)" (identifier "crypt_argchk") (argument_list "("d != NULL","src/math/gmp_desc.c",0x16b)" (( "(") (string_literal ""d != NULL"" (" """) (string_content "d != NULL") (" """)) (, ",") (string_literal ""src/math/gmp_desc.c"" (" """) (string_content "src/math/gmp_desc.c") (" """)) (, ",") (number_literal "0x16b") () ")"))) (; ";")) (} "}")))

int function_1(void *var_1,void *var_3,void *var_4,void *var_5)

{
  if (var_1 == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("a != NULL","src/math/gmp_desc.c",0x168);
  }
  if (var_3 == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("b != NULL","src/math/gmp_desc.c",0x169);
  }
  if (var_4 == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("c != NULL","src/math/gmp_desc.c",0x16a);
  }
  if (var_5 != (void *)0x0) {
    var_6(var_5,var_1,var_3);
    var_7(var_5,var_5,var_4);
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  var_2("d != NULL","src/math/gmp_desc.c",0x16b);
}


(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 (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 (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 (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 (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (return_statement (number_literal)))) (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)

{
  if (param_1 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("a != NULL","src/math/gmp_desc.c",0x168);
  }
  if (param_2 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("b != NULL","src/math/gmp_desc.c",0x169);
  }
  if (param_3 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("c != NULL","src/math/gmp_desc.c",0x16a);
  }
  if (param_4 != 0) {
    __gmpz_sub(param_4,param_1,param_2);
    __gmpz_mod(param_4,param_4,param_3);
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("d != NULL","src/math/gmp_desc.c",0x16b);
}

