
int unsigned_read(void *a,uchar *b,ulong len)

{
  if (a == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);
  }
  if (b != (uchar *)0x0) {
    __gmpz_import(a,len,1,1,1,0,b);
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd);
}



undefined8 FUN_00160920(long param_1,long param_2,undefined8 param_3)

{
  if (param_1 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);
  }
  if (param_2 != 0) {
    __gmpz_import(param_1,param_3,1,1,1,0,param_2);
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd);
}


SUB RSP,0x8
TEST RDI,RDI
JZ 0x00160958
TEST RSI,RSI
JZ 0x00160970
SUB RSP,0x8
MOV RAX,RDX
XOR R9D,R9D
MOV R8D,0x1
PUSH RSI
MOV ECX,0x1
MOV RSI,RAX
MOV EDX,0x1
CALL 0x001143a0
XOR EAX,EAX
ADD RSP,0x18
RET
MOV EDX,0xdc
LEA RSI,[0x1bdb28]
LEA RDI,[0x1aa70e]
CALL 0x00114270
MOV EDX,0xdd
LEA RSI,[0x1bdb28]
LEA RDI,[0x1c07ee]
CALL 0x00114270
(translation_unit "undefined8 FUN_00160920(long param_1,long param_2,undefined8 param_3)\n\n{\n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);\n  }\n  if (param_2 != 0) {\n    __gmpz_import(param_1,param_3,1,1,1,0,param_2);\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd);\n}\n\n" (function_definition "undefined8 FUN_00160920(long param_1,long param_2,undefined8 param_3)\n\n{\n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);\n  }\n  if (param_2 != 0) {\n    __gmpz_import(param_1,param_3,1,1,1,0,param_2);\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd);\n}" type_identifier (function_declarator "FUN_00160920(long param_1,long param_2,undefined8 param_3)" identifier (parameter_list "(long param_1,long param_2,undefined8 param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);\n  }\n  if (param_2 != 0) {\n    __gmpz_import(param_1,param_3,1,1,1,0,param_2);\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd);\n}" { (if_statement "if (param_1 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);\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",0xdc);\n  }" { comment (expression_statement "crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);" (call_expression "crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc)" identifier (argument_list "("a != NULL","src/math/gmp_desc.c",0xdc)" ( (string_literal ""a != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_2 != 0) {\n    __gmpz_import(param_1,param_3,1,1,1,0,param_2);\n    return 0;\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    __gmpz_import(param_1,param_3,1,1,1,0,param_2);\n    return 0;\n  }" { (expression_statement "__gmpz_import(param_1,param_3,1,1,1,0,param_2);" (call_expression "__gmpz_import(param_1,param_3,1,1,1,0,param_2)" identifier (argument_list "(param_1,param_3,1,1,1,0,param_2)" ( identifier , identifier , number_literal , number_literal , number_literal , number_literal , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) comment (expression_statement "crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd);" (call_expression "crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd)" identifier (argument_list "("b != NULL","src/math/gmp_desc.c",0xdd)" ( (string_literal ""b != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })))
(translation_unit "int unsigned_read(void *a,uchar *b,ulong len)\n\n{\n  if (a == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);\n  }\n  if (b != (uchar *)0x0) {\n    __gmpz_import(a,len,1,1,1,0,b);\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd);\n}\n\n" (function_definition "int unsigned_read(void *a,uchar *b,ulong len)\n\n{\n  if (a == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);\n  }\n  if (b != (uchar *)0x0) {\n    __gmpz_import(a,len,1,1,1,0,b);\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd);\n}" primitive_type (function_declarator "unsigned_read(void *a,uchar *b,ulong len)" identifier (parameter_list "(void *a,uchar *b,ulong len)" ( (parameter_declaration "void *a" primitive_type (pointer_declarator "*a" * identifier)) , (parameter_declaration "uchar *b" type_identifier (pointer_declarator "*b" * identifier)) , (parameter_declaration "ulong len" type_identifier identifier) ))) (compound_statement "{\n  if (a == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);\n  }\n  if (b != (uchar *)0x0) {\n    __gmpz_import(a,len,1,1,1,0,b);\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd);\n}" { (if_statement "if (a == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);\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",0xdc);\n  }" { comment (expression_statement "crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);" (call_expression "crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc)" identifier (argument_list "("a != NULL","src/math/gmp_desc.c",0xdc)" ( (string_literal ""a != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (b != (uchar *)0x0) {\n    __gmpz_import(a,len,1,1,1,0,b);\n    return 0;\n  }" if (parenthesized_expression "(b != (uchar *)0x0)" ( (binary_expression "b != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    __gmpz_import(a,len,1,1,1,0,b);\n    return 0;\n  }" { (expression_statement "__gmpz_import(a,len,1,1,1,0,b);" (call_expression "__gmpz_import(a,len,1,1,1,0,b)" identifier (argument_list "(a,len,1,1,1,0,b)" ( identifier , identifier , number_literal , number_literal , number_literal , number_literal , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) comment (expression_statement "crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd);" (call_expression "crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd)" identifier (argument_list "("b != NULL","src/math/gmp_desc.c",0xdd)" ( (string_literal ""b != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })))
(translation_unit "undefined8 FUN_00160920(long param_1,long param_2,undefined8 param_3)\n\n{\n  if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);\n  }\n  if (param_2 != 0) {\n    __gmpz_import(param_1,param_3,1,1,1,0,param_2);\n    return 0;\n  }\n                    \n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd);\n}\n\n" (function_definition "undefined8 FUN_00160920(long param_1,long param_2,undefined8 param_3)\n\n{\n  if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);\n  }\n  if (param_2 != 0) {\n    __gmpz_import(param_1,param_3,1,1,1,0,param_2);\n    return 0;\n  }\n                    \n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd);\n}" type_identifier (function_declarator "FUN_00160920(long param_1,long param_2,undefined8 param_3)" identifier (parameter_list "(long param_1,long param_2,undefined8 param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) ))) (compound_statement "{\n  if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);\n  }\n  if (param_2 != 0) {\n    __gmpz_import(param_1,param_3,1,1,1,0,param_2);\n    return 0;\n  }\n                    \n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd);\n}" { (if_statement "if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);\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",0xdc);\n  }" { (expression_statement "crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);" (call_expression "crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc)" identifier (argument_list "("a != NULL","src/math/gmp_desc.c",0xdc)" ( (string_literal ""a != NULL"" " string_content ") , (string_literal ""src/math/gmp_desc.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_2 != 0) {\n    __gmpz_import(param_1,param_3,1,1,1,0,param_2);\n    return 0;\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    __gmpz_import(param_1,param_3,1,1,1,0,param_2);\n    return 0;\n  }" { (expression_statement "__gmpz_import(param_1,param_3,1,1,1,0,param_2);" (call_expression "__gmpz_import(param_1,param_3,1,1,1,0,param_2)" identifier (argument_list "(param_1,param_3,1,1,1,0,param_2)" ( identifier , identifier , number_literal , number_literal , number_literal , number_literal , identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd);" (call_expression "crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd)" identifier (argument_list "("b != NULL","src/math/gmp_desc.c",0xdd)" ( (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 TYPE 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 ( IDENT , IDENT , LIT , LIT , LIT , LIT , 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_00160920(long param_1,long param_2,undefined8 param_3)\n\n{\n  if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);\n  }\n  if (param_2 != 0) {\n    __gmpz_import(param_1,param_3,1,1,1,0,param_2);\n    return 0;\n  }\n                    \n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd);\n}" (type_identifier "undefined8") (function_declarator "FUN_00160920(long param_1,long param_2,undefined8 param_3)" (identifier "FUN_00160920") (parameter_list "(long param_1,long param_2,undefined8 param_3)" (( "(") (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 "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) () ")"))) (compound_statement "{\n  if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);\n  }\n  if (param_2 != 0) {\n    __gmpz_import(param_1,param_3,1,1,1,0,param_2);\n    return 0;\n  }\n                    \n  crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd);\n}" ({ "{") (if_statement "if (param_1 == 0) {\n                    \n    crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);\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",0xdc);\n  }" ({ "{") (expression_statement "crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);" (call_expression "crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc)" (identifier "crypt_argchk") (argument_list "("a != NULL","src/math/gmp_desc.c",0xdc)" (( "(") (string_literal ""a != NULL"" (" """) (string_content "a != NULL") (" """)) (, ",") (string_literal ""src/math/gmp_desc.c"" (" """) (string_content "src/math/gmp_desc.c") (" """)) (, ",") (number_literal "0xdc") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_2 != 0) {\n    __gmpz_import(param_1,param_3,1,1,1,0,param_2);\n    return 0;\n  }" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    __gmpz_import(param_1,param_3,1,1,1,0,param_2);\n    return 0;\n  }" ({ "{") (expression_statement "__gmpz_import(param_1,param_3,1,1,1,0,param_2);" (call_expression "__gmpz_import(param_1,param_3,1,1,1,0,param_2)" (identifier "__gmpz_import") (argument_list "(param_1,param_3,1,1,1,0,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") (, ",") (number_literal "1") (, ",") (number_literal "1") (, ",") (number_literal "1") (, ",") (number_literal "0") (, ",") (identifier "param_2") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd);" (call_expression "crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd)" (identifier "crypt_argchk") (argument_list "("b != NULL","src/math/gmp_desc.c",0xdd)" (( "(") (string_literal ""b != NULL"" (" """) (string_content "b != NULL") (" """)) (, ",") (string_literal ""src/math/gmp_desc.c"" (" """) (string_content "src/math/gmp_desc.c") (" """)) (, ",") (number_literal "0xdd") () ")"))) (; ";")) (} "}")))

int function_1(void *var_1,type_1 *var_3,type_2 len)

{
  if (var_1 == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("a != NULL","src/math/gmp_desc.c",0xdc);
  }
  if (var_3 != (type_1 *)0x0) {
    var_4(var_1,len,1,1,1,0,var_3);
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  var_2("b != NULL","src/math/gmp_desc.c",0xdd);
}


(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: (type_identifier) 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 (identifier) (identifier) (number_literal) (number_literal) (number_literal) (number_literal) (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,undefined8 param_3)

{
  if (param_1 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("a != NULL","src/math/gmp_desc.c",0xdc);
  }
  if (param_2 != 0) {
    __gmpz_import(param_1,param_3,1,1,1,0,param_2);
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("b != NULL","src/math/gmp_desc.c",0xdd);
}

