
int des_ecb_decrypt(uchar *ct,uchar *pt,symmetric_key *skey)

{
  uint uVar1;
  uint uVar2;
  long lVar3;
  long in_FS_OFFSET;
  ulong32 work [2];
  
  lVar3 = *(long *)(in_FS_OFFSET + 0x28);
  if (pt == (uchar *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);
  }
  if (ct == (uchar *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);
  }
  if (skey == (symmetric_key *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);
  }
  uVar1 = *(uint *)ct;
  uVar2 = *(uint *)(ct + 4);
  work[0] = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;
  work[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;
  desfunc(work,(skey->des).dk);
  *(ulong32 *)pt =
       work[0] >> 0x18 | (work[0] & 0xff0000) >> 8 | (work[0] & 0xff00) << 8 | work[0] << 0x18;
  *(ulong32 *)(pt + 4) =
       work[1] >> 0x18 | (work[1] & 0xff0000) >> 8 | (work[1] & 0xff00) << 8 | work[1] << 0x18;
  if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}



undefined8 des_ecb_decrypt(uint *param_1,uint *param_2,long param_3)

{
  uint uVar1;
  uint uVar2;
  long in_FS_OFFSET;
  uint local_18;
  uint local_14;
  long local_10;
  
  local_10 = *(long *)(in_FS_OFFSET + 0x28);
  if (param_2 == (uint *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);
  }
  if (param_1 == (uint *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);
  }
  if (param_3 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);
  }
  uVar1 = *param_1;
  uVar2 = param_1[1];
  local_18 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;
  local_14 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;
  FUN_0011e900(&local_18,param_3 + 0x80);
  *param_2 = local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |
             local_18 << 0x18;
  param_2[1] = local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |
               local_14 << 0x18;
  if (local_10 == *(long *)(in_FS_OFFSET + 0x28)) {
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}


PUSH RBX
SUB RSP,0x10
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x8],RAX
XOR EAX,EAX
TEST RSI,RSI
JZ 0x0011f7f2
TEST RDI,RDI
JZ 0x0011f827
TEST RDX,RDX
JZ 0x0011f80f
MOV EAX,dword ptr [RDI]
MOV ECX,dword ptr [RDI + 0x4]
MOV RBX,RSI
MOV RDI,RSP
LEA RSI,[RDX + 0x80]
BSWAP EAX
BSWAP ECX
MOV dword ptr [RSP],EAX
MOV dword ptr [RSP + 0x4],ECX
CALL 0x0011e900
MOV EDX,dword ptr [RSP]
MOV ESI,dword ptr [RSP + 0x4]
XOR EAX,EAX
BSWAP EDX
BSWAP ESI
MOV dword ptr [RBX],EDX
MOV dword ptr [RBX + 0x4],ESI
MOV RCX,qword ptr [RSP + 0x8]
XOR RCX,qword ptr FS:[0x28]
JNZ 0x0011f80a
ADD RSP,0x10
POP RBX
RET
MOV EDX,0x653
LEA RSI,[0x199620]
LEA RDI,[0x18d016]
CALL 0x00114270
CALL 0x00113880
MOV EDX,0x655
LEA RSI,[0x199620]
LEA RDI,[0x18d02c]
CALL 0x00114270
MOV EDX,0x654
LEA RSI,[0x199620]
LEA RDI,[0x18d021]
CALL 0x00114270
(translation_unit "undefined8 des_ecb_decrypt(uint *param_1,uint *param_2,long param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  long in_FS_OFFSET;\n  uint local_18;\n  uint local_14;\n  long local_10;\n  \n  local_10 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }\n  if (param_1 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);\n  }\n  uVar1 = *param_1;\n  uVar2 = param_1[1];\n  local_18 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  local_14 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  FUN_0011e900(&local_18,param_3 + 0x80);\n  *param_2 = local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |\n             local_18 << 0x18;\n  param_2[1] = local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |\n               local_14 << 0x18;\n  if (local_10 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "undefined8 des_ecb_decrypt(uint *param_1,uint *param_2,long param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  long in_FS_OFFSET;\n  uint local_18;\n  uint local_14;\n  long local_10;\n  \n  local_10 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }\n  if (param_1 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);\n  }\n  uVar1 = *param_1;\n  uVar2 = param_1[1];\n  local_18 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  local_14 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  FUN_0011e900(&local_18,param_3 + 0x80);\n  *param_2 = local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |\n             local_18 << 0x18;\n  param_2[1] = local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |\n               local_14 << 0x18;\n  if (local_10 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" type_identifier (function_declarator "des_ecb_decrypt(uint *param_1,uint *param_2,long param_3)" identifier (parameter_list "(uint *param_1,uint *param_2,long param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  long in_FS_OFFSET;\n  uint local_18;\n  uint local_14;\n  long local_10;\n  \n  local_10 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }\n  if (param_1 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);\n  }\n  uVar1 = *param_1;\n  uVar2 = param_1[1];\n  local_18 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  local_14 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  FUN_0011e900(&local_18,param_3 + 0x80);\n  *param_2 = local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |\n             local_18 << 0x18;\n  param_2[1] = local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |\n               local_14 << 0x18;\n  if (local_10 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "uint local_18;" type_identifier identifier ;) (declaration "uint local_14;" type_identifier identifier ;) (declaration "long local_10;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_10 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_10 = *(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_2 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }" if (parenthesized_expression "(param_2 == (uint *)0x0)" ( (binary_expression "param_2 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }" { comment (expression_statement "crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);" (call_expression "crypt_argchk("pt != NULL","src/ciphers/des.c",0x653)" identifier (argument_list "("pt != NULL","src/ciphers/des.c",0x653)" ( (string_literal ""pt != NULL"" " string_content ") , (string_literal ""src/ciphers/des.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_1 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }" if (parenthesized_expression "(param_1 == (uint *)0x0)" ( (binary_expression "param_1 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }" { comment (expression_statement "crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);" (call_expression "crypt_argchk("ct != NULL","src/ciphers/des.c",0x654)" identifier (argument_list "("ct != NULL","src/ciphers/des.c",0x654)" ( (string_literal ""ct != NULL"" " string_content ") , (string_literal ""src/ciphers/des.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);\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("skey != NULL","src/ciphers/des.c",0x655);\n  }" { comment (expression_statement "crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);" (call_expression "crypt_argchk("skey != NULL","src/ciphers/des.c",0x655)" identifier (argument_list "("skey != NULL","src/ciphers/des.c",0x655)" ( (string_literal ""skey != NULL"" " string_content ") , (string_literal ""src/ciphers/des.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar2 = param_1[1];" (assignment_expression "uVar2 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "local_18 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;" (assignment_expression "local_18 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" identifier = (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x18" identifier << number_literal))) ;) (expression_statement "local_14 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "local_14 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" identifier = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar2 << 0x18" identifier << number_literal))) ;) (expression_statement "FUN_0011e900(&local_18,param_3 + 0x80);" (call_expression "FUN_0011e900(&local_18,param_3 + 0x80)" identifier (argument_list "(&local_18,param_3 + 0x80)" ( (pointer_expression "&local_18" & identifier) , (binary_expression "param_3 + 0x80" identifier + number_literal) ))) ;) (expression_statement "*param_2 = local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |\n             local_18 << 0x18;" (assignment_expression "*param_2 = local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |\n             local_18 << 0x18" (pointer_expression "*param_2" * identifier) = (binary_expression "local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |\n             local_18 << 0x18" (binary_expression "local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8" (binary_expression "local_18 >> 0x18 | (local_18 & 0xff0000) >> 8" (binary_expression "local_18 >> 0x18" identifier >> number_literal) | (binary_expression "(local_18 & 0xff0000) >> 8" (parenthesized_expression "(local_18 & 0xff0000)" ( (binary_expression "local_18 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_18 & 0xff00) << 8" (parenthesized_expression "(local_18 & 0xff00)" ( (binary_expression "local_18 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_18 << 0x18" identifier << number_literal))) ;) (expression_statement "param_2[1] = local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |\n               local_14 << 0x18;" (assignment_expression "param_2[1] = local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |\n               local_14 << 0x18" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |\n               local_14 << 0x18" (binary_expression "local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8" (binary_expression "local_14 >> 0x18 | (local_14 & 0xff0000) >> 8" (binary_expression "local_14 >> 0x18" identifier >> number_literal) | (binary_expression "(local_14 & 0xff0000) >> 8" (parenthesized_expression "(local_14 & 0xff0000)" ( (binary_expression "local_14 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_14 & 0xff00) << 8" (parenthesized_expression "(local_14 & 0xff00)" ( (binary_expression "local_14 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_14 << 0x18" identifier << number_literal))) ;) (if_statement "if (local_10 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return 0;\n  }" if (parenthesized_expression "(local_10 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_10 == *(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 "()" ( ))) ;) })))
(translation_unit "int des_ecb_decrypt(uchar *ct,uchar *pt,symmetric_key *skey)\n\n{\n  uint uVar1;\n  uint uVar2;\n  long lVar3;\n  long in_FS_OFFSET;\n  ulong32 work [2];\n  \n  lVar3 = *(long *)(in_FS_OFFSET + 0x28);\n  if (pt == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }\n  if (ct == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }\n  if (skey == (symmetric_key *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);\n  }\n  uVar1 = *(uint *)ct;\n  uVar2 = *(uint *)(ct + 4);\n  work[0] = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  work[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  desfunc(work,(skey->des).dk);\n  *(ulong32 *)pt =\n       work[0] >> 0x18 | (work[0] & 0xff0000) >> 8 | (work[0] & 0xff00) << 8 | work[0] << 0x18;\n  *(ulong32 *)(pt + 4) =\n       work[1] >> 0x18 | (work[1] & 0xff0000) >> 8 | (work[1] & 0xff00) << 8 | work[1] << 0x18;\n  if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "int des_ecb_decrypt(uchar *ct,uchar *pt,symmetric_key *skey)\n\n{\n  uint uVar1;\n  uint uVar2;\n  long lVar3;\n  long in_FS_OFFSET;\n  ulong32 work [2];\n  \n  lVar3 = *(long *)(in_FS_OFFSET + 0x28);\n  if (pt == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }\n  if (ct == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }\n  if (skey == (symmetric_key *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);\n  }\n  uVar1 = *(uint *)ct;\n  uVar2 = *(uint *)(ct + 4);\n  work[0] = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  work[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  desfunc(work,(skey->des).dk);\n  *(ulong32 *)pt =\n       work[0] >> 0x18 | (work[0] & 0xff0000) >> 8 | (work[0] & 0xff00) << 8 | work[0] << 0x18;\n  *(ulong32 *)(pt + 4) =\n       work[1] >> 0x18 | (work[1] & 0xff0000) >> 8 | (work[1] & 0xff00) << 8 | work[1] << 0x18;\n  if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" primitive_type (function_declarator "des_ecb_decrypt(uchar *ct,uchar *pt,symmetric_key *skey)" identifier (parameter_list "(uchar *ct,uchar *pt,symmetric_key *skey)" ( (parameter_declaration "uchar *ct" type_identifier (pointer_declarator "*ct" * identifier)) , (parameter_declaration "uchar *pt" type_identifier (pointer_declarator "*pt" * identifier)) , (parameter_declaration "symmetric_key *skey" type_identifier (pointer_declarator "*skey" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  long lVar3;\n  long in_FS_OFFSET;\n  ulong32 work [2];\n  \n  lVar3 = *(long *)(in_FS_OFFSET + 0x28);\n  if (pt == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }\n  if (ct == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }\n  if (skey == (symmetric_key *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);\n  }\n  uVar1 = *(uint *)ct;\n  uVar2 = *(uint *)(ct + 4);\n  work[0] = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  work[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  desfunc(work,(skey->des).dk);\n  *(ulong32 *)pt =\n       work[0] >> 0x18 | (work[0] & 0xff0000) >> 8 | (work[0] & 0xff00) << 8 | work[0] << 0x18;\n  *(ulong32 *)(pt + 4) =\n       work[1] >> 0x18 | (work[1] & 0xff0000) >> 8 | (work[1] & 0xff00) << 8 | work[1] << 0x18;\n  if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong32 work [2];" type_identifier (array_declarator "work [2]" identifier [ number_literal ]) ;) (expression_statement "lVar3 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar3 = *(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 (pt == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }" if (parenthesized_expression "(pt == (uchar *)0x0)" ( (binary_expression "pt == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }" { comment (expression_statement "crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);" (call_expression "crypt_argchk("pt != NULL","src/ciphers/des.c",0x653)" identifier (argument_list "("pt != NULL","src/ciphers/des.c",0x653)" ( (string_literal ""pt != NULL"" " string_content ") , (string_literal ""src/ciphers/des.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (ct == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }" if (parenthesized_expression "(ct == (uchar *)0x0)" ( (binary_expression "ct == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }" { comment (expression_statement "crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);" (call_expression "crypt_argchk("ct != NULL","src/ciphers/des.c",0x654)" identifier (argument_list "("ct != NULL","src/ciphers/des.c",0x654)" ( (string_literal ""ct != NULL"" " string_content ") , (string_literal ""src/ciphers/des.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (skey == (symmetric_key *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);\n  }" if (parenthesized_expression "(skey == (symmetric_key *)0x0)" ( (binary_expression "skey == (symmetric_key *)0x0" identifier == (cast_expression "(symmetric_key *)0x0" ( (type_descriptor "symmetric_key *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);\n  }" { comment (expression_statement "crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);" (call_expression "crypt_argchk("skey != NULL","src/ciphers/des.c",0x655)" identifier (argument_list "("skey != NULL","src/ciphers/des.c",0x655)" ( (string_literal ""skey != NULL"" " string_content ") , (string_literal ""src/ciphers/des.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "uVar1 = *(uint *)ct;" (assignment_expression "uVar1 = *(uint *)ct" identifier = (pointer_expression "*(uint *)ct" * (cast_expression "(uint *)ct" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar2 = *(uint *)(ct + 4);" (assignment_expression "uVar2 = *(uint *)(ct + 4)" identifier = (pointer_expression "*(uint *)(ct + 4)" * (cast_expression "(uint *)(ct + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ct + 4)" ( (binary_expression "ct + 4" identifier + number_literal) ))))) ;) (expression_statement "work[0] = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;" (assignment_expression "work[0] = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (subscript_expression "work[0]" identifier [ number_literal ]) = (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x18" identifier << number_literal))) ;) (expression_statement "work[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "work[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (subscript_expression "work[1]" identifier [ number_literal ]) = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar2 << 0x18" identifier << number_literal))) ;) (expression_statement "desfunc(work,(skey->des).dk);" (call_expression "desfunc(work,(skey->des).dk)" identifier (argument_list "(work,(skey->des).dk)" ( identifier , (field_expression "(skey->des).dk" (parenthesized_expression "(skey->des)" ( (field_expression "skey->des" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "*(ulong32 *)pt =\n       work[0] >> 0x18 | (work[0] & 0xff0000) >> 8 | (work[0] & 0xff00) << 8 | work[0] << 0x18;" (assignment_expression "*(ulong32 *)pt =\n       work[0] >> 0x18 | (work[0] & 0xff0000) >> 8 | (work[0] & 0xff00) << 8 | work[0] << 0x18" (pointer_expression "*(ulong32 *)pt" * (cast_expression "(ulong32 *)pt" ( (type_descriptor "ulong32 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "work[0] >> 0x18 | (work[0] & 0xff0000) >> 8 | (work[0] & 0xff00) << 8 | work[0] << 0x18" (binary_expression "work[0] >> 0x18 | (work[0] & 0xff0000) >> 8 | (work[0] & 0xff00) << 8" (binary_expression "work[0] >> 0x18 | (work[0] & 0xff0000) >> 8" (binary_expression "work[0] >> 0x18" (subscript_expression "work[0]" identifier [ number_literal ]) >> number_literal) | (binary_expression "(work[0] & 0xff0000) >> 8" (parenthesized_expression "(work[0] & 0xff0000)" ( (binary_expression "work[0] & 0xff0000" (subscript_expression "work[0]" identifier [ number_literal ]) & number_literal) )) >> number_literal)) | (binary_expression "(work[0] & 0xff00) << 8" (parenthesized_expression "(work[0] & 0xff00)" ( (binary_expression "work[0] & 0xff00" (subscript_expression "work[0]" identifier [ number_literal ]) & number_literal) )) << number_literal)) | (binary_expression "work[0] << 0x18" (subscript_expression "work[0]" identifier [ number_literal ]) << number_literal))) ;) (expression_statement "*(ulong32 *)(pt + 4) =\n       work[1] >> 0x18 | (work[1] & 0xff0000) >> 8 | (work[1] & 0xff00) << 8 | work[1] << 0x18;" (assignment_expression "*(ulong32 *)(pt + 4) =\n       work[1] >> 0x18 | (work[1] & 0xff0000) >> 8 | (work[1] & 0xff00) << 8 | work[1] << 0x18" (pointer_expression "*(ulong32 *)(pt + 4)" * (cast_expression "(ulong32 *)(pt + 4)" ( (type_descriptor "ulong32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pt + 4)" ( (binary_expression "pt + 4" identifier + number_literal) )))) = (binary_expression "work[1] >> 0x18 | (work[1] & 0xff0000) >> 8 | (work[1] & 0xff00) << 8 | work[1] << 0x18" (binary_expression "work[1] >> 0x18 | (work[1] & 0xff0000) >> 8 | (work[1] & 0xff00) << 8" (binary_expression "work[1] >> 0x18 | (work[1] & 0xff0000) >> 8" (binary_expression "work[1] >> 0x18" (subscript_expression "work[1]" identifier [ number_literal ]) >> number_literal) | (binary_expression "(work[1] & 0xff0000) >> 8" (parenthesized_expression "(work[1] & 0xff0000)" ( (binary_expression "work[1] & 0xff0000" (subscript_expression "work[1]" identifier [ number_literal ]) & number_literal) )) >> number_literal)) | (binary_expression "(work[1] & 0xff00) << 8" (parenthesized_expression "(work[1] & 0xff00)" ( (binary_expression "work[1] & 0xff00" (subscript_expression "work[1]" identifier [ number_literal ]) & number_literal) )) << number_literal)) | (binary_expression "work[1] << 0x18" (subscript_expression "work[1]" identifier [ number_literal ]) << number_literal))) ;) (if_statement "if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return 0;\n  }" if (parenthesized_expression "(lVar3 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar3 == *(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 "()" ( ))) ;) })))
(translation_unit "undefined8 des_ecb_decrypt(uint *param_1,uint *param_2,long param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  long in_FS_OFFSET;\n  uint local_18;\n  uint local_14;\n  long local_10;\n  \n  local_10 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }\n  if (param_1 == (uint *)0x0) {\n                    \n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);\n  }\n  uVar1 = *param_1;\n  uVar2 = param_1[1];\n  local_18 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  local_14 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  FUN_0011e900(&local_18,param_3 + 0x80);\n  *param_2 = local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |\n             local_18 << 0x18;\n  param_2[1] = local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |\n               local_14 << 0x18;\n  if (local_10 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return 0;\n  }\n                    \n  __stack_chk_fail();\n}\n\n" (function_definition "undefined8 des_ecb_decrypt(uint *param_1,uint *param_2,long param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  long in_FS_OFFSET;\n  uint local_18;\n  uint local_14;\n  long local_10;\n  \n  local_10 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }\n  if (param_1 == (uint *)0x0) {\n                    \n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);\n  }\n  uVar1 = *param_1;\n  uVar2 = param_1[1];\n  local_18 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  local_14 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  FUN_0011e900(&local_18,param_3 + 0x80);\n  *param_2 = local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |\n             local_18 << 0x18;\n  param_2[1] = local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |\n               local_14 << 0x18;\n  if (local_10 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return 0;\n  }\n                    \n  __stack_chk_fail();\n}" type_identifier (function_declarator "des_ecb_decrypt(uint *param_1,uint *param_2,long param_3)" identifier (parameter_list "(uint *param_1,uint *param_2,long param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  long in_FS_OFFSET;\n  uint local_18;\n  uint local_14;\n  long local_10;\n  \n  local_10 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }\n  if (param_1 == (uint *)0x0) {\n                    \n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);\n  }\n  uVar1 = *param_1;\n  uVar2 = param_1[1];\n  local_18 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  local_14 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  FUN_0011e900(&local_18,param_3 + 0x80);\n  *param_2 = local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |\n             local_18 << 0x18;\n  param_2[1] = local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |\n               local_14 << 0x18;\n  if (local_10 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return 0;\n  }\n                    \n  __stack_chk_fail();\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "uint local_18;" type_identifier identifier ;) (declaration "uint local_14;" type_identifier identifier ;) (declaration "long local_10;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_10 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_10 = *(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_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }" if (parenthesized_expression "(param_2 == (uint *)0x0)" ( (binary_expression "param_2 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }" { (expression_statement "crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);" (call_expression "crypt_argchk("pt != NULL","src/ciphers/des.c",0x653)" identifier (argument_list "("pt != NULL","src/ciphers/des.c",0x653)" ( (string_literal ""pt != NULL"" " string_content ") , (string_literal ""src/ciphers/des.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_1 == (uint *)0x0) {\n                    \n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }" if (parenthesized_expression "(param_1 == (uint *)0x0)" ( (binary_expression "param_1 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }" { (expression_statement "crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);" (call_expression "crypt_argchk("ct != NULL","src/ciphers/des.c",0x654)" identifier (argument_list "("ct != NULL","src/ciphers/des.c",0x654)" ( (string_literal ""ct != NULL"" " string_content ") , (string_literal ""src/ciphers/des.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_3 == 0) {\n                    \n    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);\n  }" { (expression_statement "crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);" (call_expression "crypt_argchk("skey != NULL","src/ciphers/des.c",0x655)" identifier (argument_list "("skey != NULL","src/ciphers/des.c",0x655)" ( (string_literal ""skey != NULL"" " string_content ") , (string_literal ""src/ciphers/des.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar2 = param_1[1];" (assignment_expression "uVar2 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "local_18 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;" (assignment_expression "local_18 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" identifier = (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x18" identifier << number_literal))) ;) (expression_statement "local_14 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "local_14 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" identifier = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar2 << 0x18" identifier << number_literal))) ;) (expression_statement "FUN_0011e900(&local_18,param_3 + 0x80);" (call_expression "FUN_0011e900(&local_18,param_3 + 0x80)" identifier (argument_list "(&local_18,param_3 + 0x80)" ( (pointer_expression "&local_18" & identifier) , (binary_expression "param_3 + 0x80" identifier + number_literal) ))) ;) (expression_statement "*param_2 = local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |\n             local_18 << 0x18;" (assignment_expression "*param_2 = local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |\n             local_18 << 0x18" (pointer_expression "*param_2" * identifier) = (binary_expression "local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |\n             local_18 << 0x18" (binary_expression "local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8" (binary_expression "local_18 >> 0x18 | (local_18 & 0xff0000) >> 8" (binary_expression "local_18 >> 0x18" identifier >> number_literal) | (binary_expression "(local_18 & 0xff0000) >> 8" (parenthesized_expression "(local_18 & 0xff0000)" ( (binary_expression "local_18 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_18 & 0xff00) << 8" (parenthesized_expression "(local_18 & 0xff00)" ( (binary_expression "local_18 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_18 << 0x18" identifier << number_literal))) ;) (expression_statement "param_2[1] = local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |\n               local_14 << 0x18;" (assignment_expression "param_2[1] = local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |\n               local_14 << 0x18" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |\n               local_14 << 0x18" (binary_expression "local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8" (binary_expression "local_14 >> 0x18 | (local_14 & 0xff0000) >> 8" (binary_expression "local_14 >> 0x18" identifier >> number_literal) | (binary_expression "(local_14 & 0xff0000) >> 8" (parenthesized_expression "(local_14 & 0xff0000)" ( (binary_expression "local_14 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(local_14 & 0xff00) << 8" (parenthesized_expression "(local_14 & 0xff00)" ( (binary_expression "local_14 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "local_14 << 0x18" identifier << number_literal))) ;) (if_statement "if (local_10 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return 0;\n  }" if (parenthesized_expression "(local_10 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_10 == *(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 "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (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 ( ))) ;) })))
(function_definition "undefined8 des_ecb_decrypt(uint *param_1,uint *param_2,long param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  long in_FS_OFFSET;\n  uint local_18;\n  uint local_14;\n  long local_10;\n  \n  local_10 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }\n  if (param_1 == (uint *)0x0) {\n                    \n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);\n  }\n  uVar1 = *param_1;\n  uVar2 = param_1[1];\n  local_18 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  local_14 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  FUN_0011e900(&local_18,param_3 + 0x80);\n  *param_2 = local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |\n             local_18 << 0x18;\n  param_2[1] = local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |\n               local_14 << 0x18;\n  if (local_10 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return 0;\n  }\n                    \n  __stack_chk_fail();\n}" (type_identifier "undefined8") (function_declarator "des_ecb_decrypt(uint *param_1,uint *param_2,long param_3)" (identifier "des_ecb_decrypt") (parameter_list "(uint *param_1,uint *param_2,long param_3)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) () ")"))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  long in_FS_OFFSET;\n  uint local_18;\n  uint local_14;\n  long local_10;\n  \n  local_10 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }\n  if (param_1 == (uint *)0x0) {\n                    \n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);\n  }\n  uVar1 = *param_1;\n  uVar2 = param_1[1];\n  local_18 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  local_14 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  FUN_0011e900(&local_18,param_3 + 0x80);\n  *param_2 = local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |\n             local_18 << 0x18;\n  param_2[1] = local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |\n               local_14 << 0x18;\n  if (local_10 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return 0;\n  }\n                    \n  __stack_chk_fail();\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "uint local_18;" (type_identifier "uint") (identifier "local_18") (; ";")) (declaration "uint local_14;" (type_identifier "uint") (identifier "local_14") (; ";")) (declaration "long local_10;" (sized_type_specifier "long" (long "long")) (identifier "local_10") (; ";")) (expression_statement "local_10 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_10 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_10") (= "=") (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_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }" (if "if") (parenthesized_expression "(param_2 == (uint *)0x0)" (( "(") (binary_expression "param_2 == (uint *)0x0" (identifier "param_2") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);\n  }" ({ "{") (expression_statement "crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);" (call_expression "crypt_argchk("pt != NULL","src/ciphers/des.c",0x653)" (identifier "crypt_argchk") (argument_list "("pt != NULL","src/ciphers/des.c",0x653)" (( "(") (string_literal ""pt != NULL"" (" """) (string_content "pt != NULL") (" """)) (, ",") (string_literal ""src/ciphers/des.c"" (" """) (string_content "src/ciphers/des.c") (" """)) (, ",") (number_literal "0x653") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_1 == (uint *)0x0) {\n                    \n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }" (if "if") (parenthesized_expression "(param_1 == (uint *)0x0)" (( "(") (binary_expression "param_1 == (uint *)0x0" (identifier "param_1") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);\n  }" ({ "{") (expression_statement "crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);" (call_expression "crypt_argchk("ct != NULL","src/ciphers/des.c",0x654)" (identifier "crypt_argchk") (argument_list "("ct != NULL","src/ciphers/des.c",0x654)" (( "(") (string_literal ""ct != NULL"" (" """) (string_content "ct != NULL") (" """)) (, ",") (string_literal ""src/ciphers/des.c"" (" """) (string_content "src/ciphers/des.c") (" """)) (, ",") (number_literal "0x654") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_3 == 0) {\n                    \n    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);\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("skey != NULL","src/ciphers/des.c",0x655);\n  }" ({ "{") (expression_statement "crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);" (call_expression "crypt_argchk("skey != NULL","src/ciphers/des.c",0x655)" (identifier "crypt_argchk") (argument_list "("skey != NULL","src/ciphers/des.c",0x655)" (( "(") (string_literal ""skey != NULL"" (" """) (string_content "skey != NULL") (" """)) (, ",") (string_literal ""src/ciphers/des.c"" (" """) (string_content "src/ciphers/des.c") (" """)) (, ",") (number_literal "0x655") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar2 = param_1[1];" (assignment_expression "uVar2 = param_1[1]" (identifier "uVar2") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_18 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;" (assignment_expression "local_18 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (identifier "local_18") (= "=") (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" (identifier "uVar1") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" (( "(") (binary_expression "uVar1 & 0xff0000" (identifier "uVar1") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" (( "(") (binary_expression "uVar1 & 0xff00" (identifier "uVar1") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar1 << 0x18" (identifier "uVar1") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "local_14 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "local_14 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (identifier "local_14") (= "=") (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" (identifier "uVar2") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" (( "(") (binary_expression "uVar2 & 0xff0000" (identifier "uVar2") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" (( "(") (binary_expression "uVar2 & 0xff00" (identifier "uVar2") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar2 << 0x18" (identifier "uVar2") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "FUN_0011e900(&local_18,param_3 + 0x80);" (call_expression "FUN_0011e900(&local_18,param_3 + 0x80)" (identifier "FUN_0011e900") (argument_list "(&local_18,param_3 + 0x80)" (( "(") (pointer_expression "&local_18" (& "&") (identifier "local_18")) (, ",") (binary_expression "param_3 + 0x80" (identifier "param_3") (+ "+") (number_literal "0x80")) () ")"))) (; ";")) (expression_statement "*param_2 = local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |\n             local_18 << 0x18;" (assignment_expression "*param_2 = local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |\n             local_18 << 0x18" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |\n             local_18 << 0x18" (binary_expression "local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8" (binary_expression "local_18 >> 0x18 | (local_18 & 0xff0000) >> 8" (binary_expression "local_18 >> 0x18" (identifier "local_18") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_18 & 0xff0000) >> 8" (parenthesized_expression "(local_18 & 0xff0000)" (( "(") (binary_expression "local_18 & 0xff0000" (identifier "local_18") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_18 & 0xff00) << 8" (parenthesized_expression "(local_18 & 0xff00)" (( "(") (binary_expression "local_18 & 0xff00" (identifier "local_18") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_18 << 0x18" (identifier "local_18") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "param_2[1] = local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |\n               local_14 << 0x18;" (assignment_expression "param_2[1] = local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |\n               local_14 << 0x18" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |\n               local_14 << 0x18" (binary_expression "local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8" (binary_expression "local_14 >> 0x18 | (local_14 & 0xff0000) >> 8" (binary_expression "local_14 >> 0x18" (identifier "local_14") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(local_14 & 0xff0000) >> 8" (parenthesized_expression "(local_14 & 0xff0000)" (( "(") (binary_expression "local_14 & 0xff0000" (identifier "local_14") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(local_14 & 0xff00) << 8" (parenthesized_expression "(local_14 & 0xff00)" (( "(") (binary_expression "local_14 & 0xff00" (identifier "local_14") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "local_14 << 0x18" (identifier "local_14") (<< "<<") (number_literal "0x18")))) (; ";")) (if_statement "if (local_10 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(local_10 == *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_10 == *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_10") (== "==") (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 "()" (( "(") () ")"))) (; ";")) (} "}")))

int function_1(type_1 *var_4,type_1 *var_2,type_2 *var_5)

{
  type_3 var_6;
  type_3 var_7;
  long var_9;
  long var_1;
  type_4 work [2];
  
  var_9 = *(long *)(var_1 + 0x28);
  if (var_2 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("pt != NULL","src/ciphers/des.c",0x653);
  }
  if (var_4 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("ct != NULL","src/ciphers/des.c",0x654);
  }
  if (var_5 == (type_2 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3("skey != NULL","src/ciphers/des.c",0x655);
  }
  var_6 = *(type_3 *)var_4;
  var_7 = *(type_3 *)(var_4 + 4);
  work[0] = var_6 >> 0x18 | (var_6 & 0xff0000) >> 8 | (var_6 & 0xff00) << 8 | var_6 << 0x18;
  work[1] = var_7 >> 0x18 | (var_7 & 0xff0000) >> 8 | (var_7 & 0xff00) << 8 | var_7 << 0x18;
  var_8(work,(var_5->des).dk);
  *(type_4 *)var_2 =
       work[0] >> 0x18 | (work[0] & 0xff0000) >> 8 | (work[0] & 0xff00) << 8 | work[0] << 0x18;
  *(type_4 *)(var_2 + 4) =
       work[1] >> 0x18 | (work[1] & 0xff0000) >> 8 | (work[1] & 0xff00) << 8 | work[1] << 0x18;
  if (var_9 == *(long *)(var_1 + 0x28)) {
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  var_10();
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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))))))

undefined8 MASKED(uint *param_1,uint *param_2,long param_3)

{
  uint uVar1;
  uint uVar2;
  long in_FS_OFFSET;
  uint local_18;
  uint local_14;
  long local_10;
  
  local_10 = *(long *)(in_FS_OFFSET + 0x28);
  if (param_2 == (uint *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("pt != NULL","src/ciphers/des.c",0x653);
  }
  if (param_1 == (uint *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("ct != NULL","src/ciphers/des.c",0x654);
  }
  if (param_3 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("skey != NULL","src/ciphers/des.c",0x655);
  }
  uVar1 = *param_1;
  uVar2 = param_1[1];
  local_18 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;
  local_14 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;
  FUN_0011e900(&local_18,param_3 + 0x80);
  *param_2 = local_18 >> 0x18 | (local_18 & 0xff0000) >> 8 | (local_18 & 0xff00) << 8 |
             local_18 << 0x18;
  param_2[1] = local_14 >> 0x18 | (local_14 & 0xff0000) >> 8 | (local_14 & 0xff00) << 8 |
               local_14 << 0x18;
  if (local_10 == *(long *)(in_FS_OFFSET + 0x28)) {
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}

