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

{
  uint uVar1;
  uint uVar2;
  symmetric_key *psVar3;
  uint uVar4;
  bool bVar5;
  
  if (pt == (uchar *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);
  }
  if (ct == (uchar *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);
  }
  if (skey == (symmetric_key *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);
  }
  uVar2 = *(uint *)ct;
  uVar1 = *(uint *)(ct + 4);
  uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;
  uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;
  psVar3 = (symmetric_key *)((skey->twofish).S[0] + 0x38);
  do {
    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][6]);
    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[6]);
    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][4]);
    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[4]);
    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][2]);
    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[2]);
    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][0]);
    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[0]);
    bVar5 = skey != psVar3;
    psVar3 = (symmetric_key *)((long)psVar3 + -0x20);
  } while (bVar5);
  *(uint *)(pt + 4) =
       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000;
  *(uint *)pt = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000;
  return 0;
}



undefined8 xtea_ecb_decrypt(uint *param_1,uint *param_2,uint *param_3)

{
  uint uVar1;
  uint uVar2;
  uint *puVar3;
  uint uVar4;
  bool bVar5;
  
  if (param_2 == (uint *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);
  }
  if (param_1 == (uint *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);
  }
  if (param_3 == (uint *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);
  }
  uVar2 = *param_1;
  uVar1 = param_1[1];
  uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;
  uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;
  puVar3 = param_3 + 0x38;
  do {
    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);
    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);
    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);
    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);
    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);
    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);
    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);
    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);
    bVar5 = param_3 != puVar3;
    puVar3 = puVar3 + -8;
  } while (bVar5);
  param_2[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000;
  *param_2 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000;
  return 0;
}


SUB RSP,0x8
TEST RSI,RSI
JZ 0x00134d41
TEST RDI,RDI
JZ 0x00134d71
TEST RDX,RDX
JZ 0x00134d59
MOV R8D,dword ptr [RDI]
MOV EAX,dword ptr [RDI + 0x4]
LEA RCX,[RDX + 0xe0]
BSWAP R8D
BSWAP EAX
JMP 0x00134c4b
MOV RCX,RDI
MOV EDI,R8D
MOV R9D,R8D
SHR R9D,0x5
SHL EDI,0x4
XOR EDI,R9D
ADD EDI,R8D
XOR EDI,dword ptr [RCX + 0x118]
SUB EAX,EDI
MOV R10D,EAX
MOV R11D,EAX
SHR R11D,0x5
SHL R10D,0x4
XOR R10D,R11D
ADD R10D,EAX
XOR R10D,dword ptr [RCX + 0x18]
SUB R8D,R10D
MOV EDI,R8D
MOV R9D,R8D
SHR R9D,0x5
SHL EDI,0x4
XOR EDI,R9D
ADD EDI,R8D
XOR EDI,dword ptr [RCX + 0x110]
SUB EAX,EDI
MOV R10D,EAX
MOV R11D,EAX
SHR R11D,0x5
SHL R10D,0x4
XOR R10D,R11D
ADD R10D,EAX
XOR R10D,dword ptr [RCX + 0x10]
SUB R8D,R10D
MOV EDI,R8D
MOV R9D,R8D
SHR R9D,0x5
SHL EDI,0x4
XOR EDI,R9D
ADD EDI,R8D
XOR EDI,dword ptr [RCX + 0x108]
SUB EAX,EDI
MOV R10D,EAX
MOV R11D,EAX
SHR R11D,0x5
SHL R10D,0x4
XOR R10D,R11D
ADD R10D,EAX
XOR R10D,dword ptr [RCX + 0x8]
SUB R8D,R10D
MOV EDI,R8D
MOV R9D,R8D
SHL EDI,0x4
SHR R9D,0x5
XOR EDI,R9D
ADD EDI,R8D
XOR EDI,dword ptr [RCX + 0x100]
SUB EAX,EDI
LEA RDI,[RCX + -0x20]
MOV R10D,EAX
MOV R11D,EAX
SHL R10D,0x4
SHR R11D,0x5
XOR R10D,R11D
ADD R10D,EAX
XOR R10D,dword ptr [RCX]
SUB R8D,R10D
CMP RDX,RCX
JNZ 0x00134c48
BSWAP EAX
BSWAP R8D
MOV dword ptr [RSI + 0x4],EAX
XOR EAX,EAX
MOV dword ptr [RSI],R8D
ADD RSP,0x8
RET
MOV EDX,0x73
LEA RSI,[0x1b9520]
LEA RDI,[0x19c016]
CALL 0x00114270
MOV EDX,0x75
LEA RSI,[0x1b9520]
LEA RDI,[0x19c02c]
CALL 0x00114270
MOV EDX,0x74
LEA RSI,[0x1b9520]
LEA RDI,[0x19c021]
CALL 0x00114270
(translation_unit "undefined8 xtea_ecb_decrypt(uint *param_1,uint *param_2,uint *param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  if (param_2 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);\n  }\n  if (param_1 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);\n  }\n  if (param_3 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);\n  }\n  uVar2 = *param_1;\n  uVar1 = param_1[1];\n  uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  puVar3 = param_3 + 0x38;\n  do {\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);\n    bVar5 = param_3 != puVar3;\n    puVar3 = puVar3 + -8;\n  } while (bVar5);\n  param_2[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000;\n  *param_2 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000;\n  return 0;\n}\n\n" (function_definition "undefined8 xtea_ecb_decrypt(uint *param_1,uint *param_2,uint *param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  if (param_2 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);\n  }\n  if (param_1 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);\n  }\n  if (param_3 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);\n  }\n  uVar2 = *param_1;\n  uVar1 = param_1[1];\n  uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  puVar3 = param_3 + 0x38;\n  do {\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);\n    bVar5 = param_3 != puVar3;\n    puVar3 = puVar3 + -8;\n  } while (bVar5);\n  param_2[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000;\n  *param_2 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000;\n  return 0;\n}" type_identifier (function_declarator "xtea_ecb_decrypt(uint *param_1,uint *param_2,uint *param_3)" identifier (parameter_list "(uint *param_1,uint *param_2,uint *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 "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  if (param_2 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);\n  }\n  if (param_1 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);\n  }\n  if (param_3 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);\n  }\n  uVar2 = *param_1;\n  uVar1 = param_1[1];\n  uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  puVar3 = param_3 + 0x38;\n  do {\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);\n    bVar5 = param_3 != puVar3;\n    puVar3 = puVar3 + -8;\n  } while (bVar5);\n  param_2[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000;\n  *param_2 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000;\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (if_statement "if (param_2 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);\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/xtea.c",0x73);\n  }" { comment (expression_statement "crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);" (call_expression "crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73)" identifier (argument_list "("pt != NULL","src/ciphers/xtea.c",0x73)" ( (string_literal ""pt != NULL"" " string_content ") , (string_literal ""src/ciphers/xtea.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/xtea.c",0x74);\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/xtea.c",0x74);\n  }" { comment (expression_statement "crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);" (call_expression "crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74)" identifier (argument_list "("ct != NULL","src/ciphers/xtea.c",0x74)" ( (string_literal ""ct != NULL"" " string_content ") , (string_literal ""src/ciphers/xtea.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_3 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);\n  }" if (parenthesized_expression "(param_3 == (uint *)0x0)" ( (binary_expression "param_3 == (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("skey != NULL","src/ciphers/xtea.c",0x75);\n  }" { comment (expression_statement "crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);" (call_expression "crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75)" identifier (argument_list "("skey != NULL","src/ciphers/xtea.c",0x75)" ( (string_literal ""skey != NULL"" " string_content ") , (string_literal ""src/ciphers/xtea.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "uVar2 = *param_1;" (assignment_expression "uVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "uVar4 = 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 "uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;" (assignment_expression "uVar2 = 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 "puVar3 = param_3 + 0x38;" (assignment_expression "puVar3 = param_3 + 0x38" identifier = (binary_expression "param_3 + 0x38" identifier + number_literal)) ;) (do_statement "do {\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);\n    bVar5 = param_3 != puVar3;\n    puVar3 = puVar3 + -8;\n  } while (bVar5);" do (compound_statement "{\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);\n    bVar5 = param_3 != puVar3;\n    puVar3 = puVar3 + -8;\n  }" { (expression_statement "uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);" (assignment_expression "uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46])" identifier = (binary_expression "uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46])" identifier - (parenthesized_expression "((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46])" ( (binary_expression "(uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]" (binary_expression "(uVar4 << 4 ^ uVar4 >> 5) + uVar4" (parenthesized_expression "(uVar4 << 4 ^ uVar4 >> 5)" ( (binary_expression "uVar4 << 4 ^ uVar4 >> 5" (binary_expression "uVar4 << 4" identifier << number_literal) ^ (binary_expression "uVar4 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "puVar3[0x46]" identifier [ number_literal ])) )))) ;) (expression_statement "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);" (assignment_expression "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6])" identifier = (binary_expression "uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6])" identifier - (parenthesized_expression "((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6])" ( (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]" (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2" (parenthesized_expression "(uVar2 * 0x10 ^ uVar2 >> 5)" ( (binary_expression "uVar2 * 0x10 ^ uVar2 >> 5" (binary_expression "uVar2 * 0x10" identifier * number_literal) ^ (binary_expression "uVar2 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "puVar3[6]" identifier [ number_literal ])) )))) ;) (expression_statement "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);" (assignment_expression "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44])" identifier = (binary_expression "uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44])" identifier - (parenthesized_expression "((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44])" ( (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]" (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4" (parenthesized_expression "(uVar4 * 0x10 ^ uVar4 >> 5)" ( (binary_expression "uVar4 * 0x10 ^ uVar4 >> 5" (binary_expression "uVar4 * 0x10" identifier * number_literal) ^ (binary_expression "uVar4 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "puVar3[0x44]" identifier [ number_literal ])) )))) ;) (expression_statement "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);" (assignment_expression "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4])" identifier = (binary_expression "uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4])" identifier - (parenthesized_expression "((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4])" ( (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]" (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2" (parenthesized_expression "(uVar2 * 0x10 ^ uVar2 >> 5)" ( (binary_expression "uVar2 * 0x10 ^ uVar2 >> 5" (binary_expression "uVar2 * 0x10" identifier * number_literal) ^ (binary_expression "uVar2 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "puVar3[4]" identifier [ number_literal ])) )))) ;) (expression_statement "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);" (assignment_expression "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42])" identifier = (binary_expression "uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42])" identifier - (parenthesized_expression "((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42])" ( (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]" (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4" (parenthesized_expression "(uVar4 * 0x10 ^ uVar4 >> 5)" ( (binary_expression "uVar4 * 0x10 ^ uVar4 >> 5" (binary_expression "uVar4 * 0x10" identifier * number_literal) ^ (binary_expression "uVar4 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "puVar3[0x42]" identifier [ number_literal ])) )))) ;) (expression_statement "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);" (assignment_expression "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2])" identifier = (binary_expression "uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2])" identifier - (parenthesized_expression "((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2])" ( (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]" (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2" (parenthesized_expression "(uVar2 * 0x10 ^ uVar2 >> 5)" ( (binary_expression "uVar2 * 0x10 ^ uVar2 >> 5" (binary_expression "uVar2 * 0x10" identifier * number_literal) ^ (binary_expression "uVar2 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "puVar3[2]" identifier [ number_literal ])) )))) ;) (expression_statement "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);" (assignment_expression "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40])" identifier = (binary_expression "uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40])" identifier - (parenthesized_expression "((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40])" ( (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]" (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4" (parenthesized_expression "(uVar4 * 0x10 ^ uVar4 >> 5)" ( (binary_expression "uVar4 * 0x10 ^ uVar4 >> 5" (binary_expression "uVar4 * 0x10" identifier * number_literal) ^ (binary_expression "uVar4 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "puVar3[0x40]" identifier [ number_literal ])) )))) ;) (expression_statement "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);" (assignment_expression "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3)" identifier = (binary_expression "uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3)" identifier - (parenthesized_expression "((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3)" ( (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3" (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2" (parenthesized_expression "(uVar2 * 0x10 ^ uVar2 >> 5)" ( (binary_expression "uVar2 * 0x10 ^ uVar2 >> 5" (binary_expression "uVar2 * 0x10" identifier * number_literal) ^ (binary_expression "uVar2 >> 5" identifier >> number_literal)) )) + identifier) ^ (pointer_expression "*puVar3" * identifier)) )))) ;) (expression_statement "bVar5 = param_3 != puVar3;" (assignment_expression "bVar5 = param_3 != puVar3" identifier = (binary_expression "param_3 != puVar3" identifier != identifier)) ;) (expression_statement "puVar3 = puVar3 + -8;" (assignment_expression "puVar3 = puVar3 + -8" identifier = (binary_expression "puVar3 + -8" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar5)" ( identifier )) ;) (expression_statement "param_2[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000;" (assignment_expression "param_2[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000" (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 * 0x1000000" identifier * number_literal))) ;) (expression_statement "*param_2 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000;" (assignment_expression "*param_2 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 * 0x1000000" identifier * number_literal))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "int xtea_ecb_decrypt(uchar *ct,uchar *pt,symmetric_key *skey)\n\n{\n  uint uVar1;\n  uint uVar2;\n  symmetric_key *psVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  if (pt == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);\n  }\n  if (ct == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);\n  }\n  if (skey == (symmetric_key *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);\n  }\n  uVar2 = *(uint *)ct;\n  uVar1 = *(uint *)(ct + 4);\n  uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  psVar3 = (symmetric_key *)((skey->twofish).S[0] + 0x38);\n  do {\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][6]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][4]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][2]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][0]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[0]);\n    bVar5 = skey != psVar3;\n    psVar3 = (symmetric_key *)((long)psVar3 + -0x20);\n  } while (bVar5);\n  *(uint *)(pt + 4) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000;\n  *(uint *)pt = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000;\n  return 0;\n}\n\n" (function_definition "int xtea_ecb_decrypt(uchar *ct,uchar *pt,symmetric_key *skey)\n\n{\n  uint uVar1;\n  uint uVar2;\n  symmetric_key *psVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  if (pt == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);\n  }\n  if (ct == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);\n  }\n  if (skey == (symmetric_key *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);\n  }\n  uVar2 = *(uint *)ct;\n  uVar1 = *(uint *)(ct + 4);\n  uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  psVar3 = (symmetric_key *)((skey->twofish).S[0] + 0x38);\n  do {\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][6]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][4]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][2]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][0]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[0]);\n    bVar5 = skey != psVar3;\n    psVar3 = (symmetric_key *)((long)psVar3 + -0x20);\n  } while (bVar5);\n  *(uint *)(pt + 4) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000;\n  *(uint *)pt = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000;\n  return 0;\n}" primitive_type (function_declarator "xtea_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  symmetric_key *psVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  if (pt == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);\n  }\n  if (ct == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);\n  }\n  if (skey == (symmetric_key *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);\n  }\n  uVar2 = *(uint *)ct;\n  uVar1 = *(uint *)(ct + 4);\n  uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  psVar3 = (symmetric_key *)((skey->twofish).S[0] + 0x38);\n  do {\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][6]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][4]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][2]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][0]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[0]);\n    bVar5 = skey != psVar3;\n    psVar3 = (symmetric_key *)((long)psVar3 + -0x20);\n  } while (bVar5);\n  *(uint *)(pt + 4) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000;\n  *(uint *)pt = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000;\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "symmetric_key *psVar3;" type_identifier (pointer_declarator "*psVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (if_statement "if (pt == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);\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/xtea.c",0x73);\n  }" { comment (expression_statement "crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);" (call_expression "crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73)" identifier (argument_list "("pt != NULL","src/ciphers/xtea.c",0x73)" ( (string_literal ""pt != NULL"" " string_content ") , (string_literal ""src/ciphers/xtea.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (ct == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);\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/xtea.c",0x74);\n  }" { comment (expression_statement "crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);" (call_expression "crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74)" identifier (argument_list "("ct != NULL","src/ciphers/xtea.c",0x74)" ( (string_literal ""ct != NULL"" " string_content ") , (string_literal ""src/ciphers/xtea.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/xtea.c",0x75);\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/xtea.c",0x75);\n  }" { comment (expression_statement "crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);" (call_expression "crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75)" identifier (argument_list "("skey != NULL","src/ciphers/xtea.c",0x75)" ( (string_literal ""skey != NULL"" " string_content ") , (string_literal ""src/ciphers/xtea.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "uVar2 = *(uint *)ct;" (assignment_expression "uVar2 = *(uint *)ct" identifier = (pointer_expression "*(uint *)ct" * (cast_expression "(uint *)ct" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar1 = *(uint *)(ct + 4);" (assignment_expression "uVar1 = *(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 "uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "uVar4 = 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 "uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;" (assignment_expression "uVar2 = 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 "psVar3 = (symmetric_key *)((skey->twofish).S[0] + 0x38);" (assignment_expression "psVar3 = (symmetric_key *)((skey->twofish).S[0] + 0x38)" identifier = (cast_expression "(symmetric_key *)((skey->twofish).S[0] + 0x38)" ( (type_descriptor "symmetric_key *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((skey->twofish).S[0] + 0x38)" ( (binary_expression "(skey->twofish).S[0] + 0x38" (subscript_expression "(skey->twofish).S[0]" (field_expression "(skey->twofish).S" (parenthesized_expression "(skey->twofish)" ( (field_expression "skey->twofish" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) + number_literal) )))) ;) (do_statement "do {\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][6]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][4]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][2]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][0]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[0]);\n    bVar5 = skey != psVar3;\n    psVar3 = (symmetric_key *)((long)psVar3 + -0x20);\n  } while (bVar5);" do (compound_statement "{\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][6]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][4]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][2]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][0]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[0]);\n    bVar5 = skey != psVar3;\n    psVar3 = (symmetric_key *)((long)psVar3 + -0x20);\n  }" { (expression_statement "uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][6]);" (assignment_expression "uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][6])" identifier = (binary_expression "uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][6])" identifier - (parenthesized_expression "((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][6])" ( (binary_expression "(uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][6]" (binary_expression "(uVar4 << 4 ^ uVar4 >> 5) + uVar4" (parenthesized_expression "(uVar4 << 4 ^ uVar4 >> 5)" ( (binary_expression "uVar4 << 4 ^ uVar4 >> 5" (binary_expression "uVar4 << 4" identifier << number_literal) ^ (binary_expression "uVar4 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "(psVar3->des3).ek[2][6]" (subscript_expression "(psVar3->des3).ek[2]" (field_expression "(psVar3->des3).ek" (parenthesized_expression "(psVar3->des3)" ( (field_expression "psVar3->des3" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) [ number_literal ])) )))) ;) (expression_statement "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[6]);" (assignment_expression "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[6])" identifier = (binary_expression "uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[6])" identifier - (parenthesized_expression "((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[6])" ( (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[6]" (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2" (parenthesized_expression "(uVar2 * 0x10 ^ uVar2 >> 5)" ( (binary_expression "uVar2 * 0x10 ^ uVar2 >> 5" (binary_expression "uVar2 * 0x10" identifier * number_literal) ^ (binary_expression "uVar2 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "(psVar3->des).ek[6]" (field_expression "(psVar3->des).ek" (parenthesized_expression "(psVar3->des)" ( (field_expression "psVar3->des" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )))) ;) (expression_statement "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][4]);" (assignment_expression "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][4])" identifier = (binary_expression "uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][4])" identifier - (parenthesized_expression "((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][4])" ( (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][4]" (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4" (parenthesized_expression "(uVar4 * 0x10 ^ uVar4 >> 5)" ( (binary_expression "uVar4 * 0x10 ^ uVar4 >> 5" (binary_expression "uVar4 * 0x10" identifier * number_literal) ^ (binary_expression "uVar4 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "(psVar3->des3).ek[2][4]" (subscript_expression "(psVar3->des3).ek[2]" (field_expression "(psVar3->des3).ek" (parenthesized_expression "(psVar3->des3)" ( (field_expression "psVar3->des3" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) [ number_literal ])) )))) ;) (expression_statement "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[4]);" (assignment_expression "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[4])" identifier = (binary_expression "uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[4])" identifier - (parenthesized_expression "((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[4])" ( (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[4]" (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2" (parenthesized_expression "(uVar2 * 0x10 ^ uVar2 >> 5)" ( (binary_expression "uVar2 * 0x10 ^ uVar2 >> 5" (binary_expression "uVar2 * 0x10" identifier * number_literal) ^ (binary_expression "uVar2 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "(psVar3->des).ek[4]" (field_expression "(psVar3->des).ek" (parenthesized_expression "(psVar3->des)" ( (field_expression "psVar3->des" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )))) ;) (expression_statement "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][2]);" (assignment_expression "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][2])" identifier = (binary_expression "uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][2])" identifier - (parenthesized_expression "((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][2])" ( (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][2]" (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4" (parenthesized_expression "(uVar4 * 0x10 ^ uVar4 >> 5)" ( (binary_expression "uVar4 * 0x10 ^ uVar4 >> 5" (binary_expression "uVar4 * 0x10" identifier * number_literal) ^ (binary_expression "uVar4 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "(psVar3->des3).ek[2][2]" (subscript_expression "(psVar3->des3).ek[2]" (field_expression "(psVar3->des3).ek" (parenthesized_expression "(psVar3->des3)" ( (field_expression "psVar3->des3" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) [ number_literal ])) )))) ;) (expression_statement "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[2]);" (assignment_expression "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[2])" identifier = (binary_expression "uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[2])" identifier - (parenthesized_expression "((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[2])" ( (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[2]" (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2" (parenthesized_expression "(uVar2 * 0x10 ^ uVar2 >> 5)" ( (binary_expression "uVar2 * 0x10 ^ uVar2 >> 5" (binary_expression "uVar2 * 0x10" identifier * number_literal) ^ (binary_expression "uVar2 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "(psVar3->des).ek[2]" (field_expression "(psVar3->des).ek" (parenthesized_expression "(psVar3->des)" ( (field_expression "psVar3->des" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )))) ;) (expression_statement "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][0]);" (assignment_expression "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][0])" identifier = (binary_expression "uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][0])" identifier - (parenthesized_expression "((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][0])" ( (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ (psVar3->des3).ek[2][0]" (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4" (parenthesized_expression "(uVar4 * 0x10 ^ uVar4 >> 5)" ( (binary_expression "uVar4 * 0x10 ^ uVar4 >> 5" (binary_expression "uVar4 * 0x10" identifier * number_literal) ^ (binary_expression "uVar4 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "(psVar3->des3).ek[2][0]" (subscript_expression "(psVar3->des3).ek[2]" (field_expression "(psVar3->des3).ek" (parenthesized_expression "(psVar3->des3)" ( (field_expression "psVar3->des3" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) [ number_literal ])) )))) ;) (expression_statement "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[0]);" (assignment_expression "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[0])" identifier = (binary_expression "uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[0])" identifier - (parenthesized_expression "((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[0])" ( (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ (psVar3->des).ek[0]" (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2" (parenthesized_expression "(uVar2 * 0x10 ^ uVar2 >> 5)" ( (binary_expression "uVar2 * 0x10 ^ uVar2 >> 5" (binary_expression "uVar2 * 0x10" identifier * number_literal) ^ (binary_expression "uVar2 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "(psVar3->des).ek[0]" (field_expression "(psVar3->des).ek" (parenthesized_expression "(psVar3->des)" ( (field_expression "psVar3->des" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )))) ;) (expression_statement "bVar5 = skey != psVar3;" (assignment_expression "bVar5 = skey != psVar3" identifier = (binary_expression "skey != psVar3" identifier != identifier)) ;) (expression_statement "psVar3 = (symmetric_key *)((long)psVar3 + -0x20);" (assignment_expression "psVar3 = (symmetric_key *)((long)psVar3 + -0x20)" identifier = (cast_expression "(symmetric_key *)((long)psVar3 + -0x20)" ( (type_descriptor "symmetric_key *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)psVar3 + -0x20)" ( (binary_expression "(long)psVar3 + -0x20" (cast_expression "(long)psVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(bVar5)" ( identifier )) ;) (expression_statement "*(uint *)(pt + 4) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000;" (assignment_expression "*(uint *)(pt + 4) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000" (pointer_expression "*(uint *)(pt + 4)" * (cast_expression "(uint *)(pt + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pt + 4)" ( (binary_expression "pt + 4" identifier + number_literal) )))) = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000" (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 * 0x1000000" identifier * number_literal))) ;) (expression_statement "*(uint *)pt = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000;" (assignment_expression "*(uint *)pt = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000" (pointer_expression "*(uint *)pt" * (cast_expression "(uint *)pt" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 * 0x1000000" identifier * number_literal))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined8 xtea_ecb_decrypt(uint *param_1,uint *param_2,uint *param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);\n  }\n  if (param_1 == (uint *)0x0) {\n                    \n    crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);\n  }\n  if (param_3 == (uint *)0x0) {\n                    \n    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);\n  }\n  uVar2 = *param_1;\n  uVar1 = param_1[1];\n  uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  puVar3 = param_3 + 0x38;\n  do {\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);\n    bVar5 = param_3 != puVar3;\n    puVar3 = puVar3 + -8;\n  } while (bVar5);\n  param_2[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000;\n  *param_2 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000;\n  return 0;\n}\n\n" (function_definition "undefined8 xtea_ecb_decrypt(uint *param_1,uint *param_2,uint *param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);\n  }\n  if (param_1 == (uint *)0x0) {\n                    \n    crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);\n  }\n  if (param_3 == (uint *)0x0) {\n                    \n    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);\n  }\n  uVar2 = *param_1;\n  uVar1 = param_1[1];\n  uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  puVar3 = param_3 + 0x38;\n  do {\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);\n    bVar5 = param_3 != puVar3;\n    puVar3 = puVar3 + -8;\n  } while (bVar5);\n  param_2[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000;\n  *param_2 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000;\n  return 0;\n}" type_identifier (function_declarator "xtea_ecb_decrypt(uint *param_1,uint *param_2,uint *param_3)" identifier (parameter_list "(uint *param_1,uint *param_2,uint *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 "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);\n  }\n  if (param_1 == (uint *)0x0) {\n                    \n    crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);\n  }\n  if (param_3 == (uint *)0x0) {\n                    \n    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);\n  }\n  uVar2 = *param_1;\n  uVar1 = param_1[1];\n  uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  puVar3 = param_3 + 0x38;\n  do {\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);\n    bVar5 = param_3 != puVar3;\n    puVar3 = puVar3 + -8;\n  } while (bVar5);\n  param_2[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000;\n  *param_2 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000;\n  return 0;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (if_statement "if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);\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/xtea.c",0x73);\n  }" { (expression_statement "crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);" (call_expression "crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73)" identifier (argument_list "("pt != NULL","src/ciphers/xtea.c",0x73)" ( (string_literal ""pt != NULL"" " string_content ") , (string_literal ""src/ciphers/xtea.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_1 == (uint *)0x0) {\n                    \n    crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);\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/xtea.c",0x74);\n  }" { (expression_statement "crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);" (call_expression "crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74)" identifier (argument_list "("ct != NULL","src/ciphers/xtea.c",0x74)" ( (string_literal ""ct != NULL"" " string_content ") , (string_literal ""src/ciphers/xtea.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_3 == (uint *)0x0) {\n                    \n    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);\n  }" if (parenthesized_expression "(param_3 == (uint *)0x0)" ( (binary_expression "param_3 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);\n  }" { (expression_statement "crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);" (call_expression "crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75)" identifier (argument_list "("skey != NULL","src/ciphers/xtea.c",0x75)" ( (string_literal ""skey != NULL"" " string_content ") , (string_literal ""src/ciphers/xtea.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "uVar2 = *param_1;" (assignment_expression "uVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "uVar4 = 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 "uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;" (assignment_expression "uVar2 = 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 "puVar3 = param_3 + 0x38;" (assignment_expression "puVar3 = param_3 + 0x38" identifier = (binary_expression "param_3 + 0x38" identifier + number_literal)) ;) (do_statement "do {\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);\n    bVar5 = param_3 != puVar3;\n    puVar3 = puVar3 + -8;\n  } while (bVar5);" do (compound_statement "{\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);\n    bVar5 = param_3 != puVar3;\n    puVar3 = puVar3 + -8;\n  }" { (expression_statement "uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);" (assignment_expression "uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46])" identifier = (binary_expression "uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46])" identifier - (parenthesized_expression "((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46])" ( (binary_expression "(uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]" (binary_expression "(uVar4 << 4 ^ uVar4 >> 5) + uVar4" (parenthesized_expression "(uVar4 << 4 ^ uVar4 >> 5)" ( (binary_expression "uVar4 << 4 ^ uVar4 >> 5" (binary_expression "uVar4 << 4" identifier << number_literal) ^ (binary_expression "uVar4 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "puVar3[0x46]" identifier [ number_literal ])) )))) ;) (expression_statement "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);" (assignment_expression "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6])" identifier = (binary_expression "uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6])" identifier - (parenthesized_expression "((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6])" ( (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]" (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2" (parenthesized_expression "(uVar2 * 0x10 ^ uVar2 >> 5)" ( (binary_expression "uVar2 * 0x10 ^ uVar2 >> 5" (binary_expression "uVar2 * 0x10" identifier * number_literal) ^ (binary_expression "uVar2 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "puVar3[6]" identifier [ number_literal ])) )))) ;) (expression_statement "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);" (assignment_expression "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44])" identifier = (binary_expression "uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44])" identifier - (parenthesized_expression "((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44])" ( (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]" (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4" (parenthesized_expression "(uVar4 * 0x10 ^ uVar4 >> 5)" ( (binary_expression "uVar4 * 0x10 ^ uVar4 >> 5" (binary_expression "uVar4 * 0x10" identifier * number_literal) ^ (binary_expression "uVar4 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "puVar3[0x44]" identifier [ number_literal ])) )))) ;) (expression_statement "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);" (assignment_expression "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4])" identifier = (binary_expression "uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4])" identifier - (parenthesized_expression "((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4])" ( (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]" (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2" (parenthesized_expression "(uVar2 * 0x10 ^ uVar2 >> 5)" ( (binary_expression "uVar2 * 0x10 ^ uVar2 >> 5" (binary_expression "uVar2 * 0x10" identifier * number_literal) ^ (binary_expression "uVar2 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "puVar3[4]" identifier [ number_literal ])) )))) ;) (expression_statement "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);" (assignment_expression "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42])" identifier = (binary_expression "uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42])" identifier - (parenthesized_expression "((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42])" ( (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]" (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4" (parenthesized_expression "(uVar4 * 0x10 ^ uVar4 >> 5)" ( (binary_expression "uVar4 * 0x10 ^ uVar4 >> 5" (binary_expression "uVar4 * 0x10" identifier * number_literal) ^ (binary_expression "uVar4 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "puVar3[0x42]" identifier [ number_literal ])) )))) ;) (expression_statement "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);" (assignment_expression "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2])" identifier = (binary_expression "uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2])" identifier - (parenthesized_expression "((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2])" ( (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]" (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2" (parenthesized_expression "(uVar2 * 0x10 ^ uVar2 >> 5)" ( (binary_expression "uVar2 * 0x10 ^ uVar2 >> 5" (binary_expression "uVar2 * 0x10" identifier * number_literal) ^ (binary_expression "uVar2 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "puVar3[2]" identifier [ number_literal ])) )))) ;) (expression_statement "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);" (assignment_expression "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40])" identifier = (binary_expression "uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40])" identifier - (parenthesized_expression "((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40])" ( (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]" (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4" (parenthesized_expression "(uVar4 * 0x10 ^ uVar4 >> 5)" ( (binary_expression "uVar4 * 0x10 ^ uVar4 >> 5" (binary_expression "uVar4 * 0x10" identifier * number_literal) ^ (binary_expression "uVar4 >> 5" identifier >> number_literal)) )) + identifier) ^ (subscript_expression "puVar3[0x40]" identifier [ number_literal ])) )))) ;) (expression_statement "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);" (assignment_expression "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3)" identifier = (binary_expression "uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3)" identifier - (parenthesized_expression "((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3)" ( (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3" (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2" (parenthesized_expression "(uVar2 * 0x10 ^ uVar2 >> 5)" ( (binary_expression "uVar2 * 0x10 ^ uVar2 >> 5" (binary_expression "uVar2 * 0x10" identifier * number_literal) ^ (binary_expression "uVar2 >> 5" identifier >> number_literal)) )) + identifier) ^ (pointer_expression "*puVar3" * identifier)) )))) ;) (expression_statement "bVar5 = param_3 != puVar3;" (assignment_expression "bVar5 = param_3 != puVar3" identifier = (binary_expression "param_3 != puVar3" identifier != identifier)) ;) (expression_statement "puVar3 = puVar3 + -8;" (assignment_expression "puVar3 = puVar3 + -8" identifier = (binary_expression "puVar3 + -8" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar5)" ( identifier )) ;) (expression_statement "param_2[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000;" (assignment_expression "param_2[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000" (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 * 0x1000000" identifier * number_literal))) ;) (expression_statement "*param_2 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000;" (assignment_expression "*param_2 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar4 * 0x1000000" identifier * number_literal))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 == (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 ))) ;) })) (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 (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT << LIT) ^ (binary_expression IDENT >> LIT)) )) + IDENT) ^ (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) ^ (binary_expression IDENT >> LIT)) )) + IDENT) ^ (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) ^ (binary_expression IDENT >> LIT)) )) + IDENT) ^ (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) ^ (binary_expression IDENT >> LIT)) )) + IDENT) ^ (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) ^ (binary_expression IDENT >> LIT)) )) + IDENT) ^ (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) ^ (binary_expression IDENT >> LIT)) )) + IDENT) ^ (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) ^ (binary_expression IDENT >> LIT)) )) + IDENT) ^ (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) ^ (binary_expression IDENT >> LIT)) )) + IDENT) ^ (pointer_expression * IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (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))) ;) (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))) ;) (return_statement return LIT ;) })))
(function_definition "undefined8 xtea_ecb_decrypt(uint *param_1,uint *param_2,uint *param_3)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);\n  }\n  if (param_1 == (uint *)0x0) {\n                    \n    crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);\n  }\n  if (param_3 == (uint *)0x0) {\n                    \n    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);\n  }\n  uVar2 = *param_1;\n  uVar1 = param_1[1];\n  uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  puVar3 = param_3 + 0x38;\n  do {\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);\n    bVar5 = param_3 != puVar3;\n    puVar3 = puVar3 + -8;\n  } while (bVar5);\n  param_2[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000;\n  *param_2 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000;\n  return 0;\n}" (type_identifier "undefined8") (function_declarator "xtea_ecb_decrypt(uint *param_1,uint *param_2,uint *param_3)" (identifier "xtea_ecb_decrypt") (parameter_list "(uint *param_1,uint *param_2,uint *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 "uint *param_3" (type_identifier "uint") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  bool bVar5;\n  \n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);\n  }\n  if (param_1 == (uint *)0x0) {\n                    \n    crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);\n  }\n  if (param_3 == (uint *)0x0) {\n                    \n    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);\n  }\n  uVar2 = *param_1;\n  uVar1 = param_1[1];\n  uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n  uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;\n  puVar3 = param_3 + 0x38;\n  do {\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);\n    bVar5 = param_3 != puVar3;\n    puVar3 = puVar3 + -8;\n  } while (bVar5);\n  param_2[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000;\n  *param_2 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000;\n  return 0;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint *puVar3;" (type_identifier "uint") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "bool bVar5;" (primitive_type "bool") (identifier "bVar5") (; ";")) (if_statement "if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);\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/xtea.c",0x73);\n  }" ({ "{") (expression_statement "crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);" (call_expression "crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73)" (identifier "crypt_argchk") (argument_list "("pt != NULL","src/ciphers/xtea.c",0x73)" (( "(") (string_literal ""pt != NULL"" (" """) (string_content "pt != NULL") (" """)) (, ",") (string_literal ""src/ciphers/xtea.c"" (" """) (string_content "src/ciphers/xtea.c") (" """)) (, ",") (number_literal "0x73") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_1 == (uint *)0x0) {\n                    \n    crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);\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/xtea.c",0x74);\n  }" ({ "{") (expression_statement "crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);" (call_expression "crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74)" (identifier "crypt_argchk") (argument_list "("ct != NULL","src/ciphers/xtea.c",0x74)" (( "(") (string_literal ""ct != NULL"" (" """) (string_content "ct != NULL") (" """)) (, ",") (string_literal ""src/ciphers/xtea.c"" (" """) (string_content "src/ciphers/xtea.c") (" """)) (, ",") (number_literal "0x74") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_3 == (uint *)0x0) {\n                    \n    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);\n  }" (if "if") (parenthesized_expression "(param_3 == (uint *)0x0)" (( "(") (binary_expression "param_3 == (uint *)0x0" (identifier "param_3") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);\n  }" ({ "{") (expression_statement "crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);" (call_expression "crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75)" (identifier "crypt_argchk") (argument_list "("skey != NULL","src/ciphers/xtea.c",0x75)" (( "(") (string_literal ""skey != NULL"" (" """) (string_content "skey != NULL") (" """)) (, ",") (string_literal ""src/ciphers/xtea.c"" (" """) (string_content "src/ciphers/xtea.c") (" """)) (, ",") (number_literal "0x75") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar2 = *param_1;" (assignment_expression "uVar2 = *param_1" (identifier "uVar2") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" (identifier "uVar1") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (identifier "uVar4") (= "=") (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 "uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;" (assignment_expression "uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (identifier "uVar2") (= "=") (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 "puVar3 = param_3 + 0x38;" (assignment_expression "puVar3 = param_3 + 0x38" (identifier "puVar3") (= "=") (binary_expression "param_3 + 0x38" (identifier "param_3") (+ "+") (number_literal "0x38"))) (; ";")) (do_statement "do {\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);\n    bVar5 = param_3 != puVar3;\n    puVar3 = puVar3 + -8;\n  } while (bVar5);" (do "do") (compound_statement "{\n    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);\n    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);\n    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);\n    bVar5 = param_3 != puVar3;\n    puVar3 = puVar3 + -8;\n  }" ({ "{") (expression_statement "uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);" (assignment_expression "uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46])" (identifier "uVar2") (= "=") (binary_expression "uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46])" (identifier "uVar2") (- "-") (parenthesized_expression "((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46])" (( "(") (binary_expression "(uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]" (binary_expression "(uVar4 << 4 ^ uVar4 >> 5) + uVar4" (parenthesized_expression "(uVar4 << 4 ^ uVar4 >> 5)" (( "(") (binary_expression "uVar4 << 4 ^ uVar4 >> 5" (binary_expression "uVar4 << 4" (identifier "uVar4") (<< "<<") (number_literal "4")) (^ "^") (binary_expression "uVar4 >> 5" (identifier "uVar4") (>> ">>") (number_literal "5"))) () ")")) (+ "+") (identifier "uVar4")) (^ "^") (subscript_expression "puVar3[0x46]" (identifier "puVar3") ([ "[") (number_literal "0x46") (] "]"))) () ")")))) (; ";")) (expression_statement "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);" (assignment_expression "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6])" (identifier "uVar4") (= "=") (binary_expression "uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6])" (identifier "uVar4") (- "-") (parenthesized_expression "((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6])" (( "(") (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]" (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2" (parenthesized_expression "(uVar2 * 0x10 ^ uVar2 >> 5)" (( "(") (binary_expression "uVar2 * 0x10 ^ uVar2 >> 5" (binary_expression "uVar2 * 0x10" (identifier "uVar2") (* "*") (number_literal "0x10")) (^ "^") (binary_expression "uVar2 >> 5" (identifier "uVar2") (>> ">>") (number_literal "5"))) () ")")) (+ "+") (identifier "uVar2")) (^ "^") (subscript_expression "puVar3[6]" (identifier "puVar3") ([ "[") (number_literal "6") (] "]"))) () ")")))) (; ";")) (expression_statement "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);" (assignment_expression "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44])" (identifier "uVar2") (= "=") (binary_expression "uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44])" (identifier "uVar2") (- "-") (parenthesized_expression "((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44])" (( "(") (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]" (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4" (parenthesized_expression "(uVar4 * 0x10 ^ uVar4 >> 5)" (( "(") (binary_expression "uVar4 * 0x10 ^ uVar4 >> 5" (binary_expression "uVar4 * 0x10" (identifier "uVar4") (* "*") (number_literal "0x10")) (^ "^") (binary_expression "uVar4 >> 5" (identifier "uVar4") (>> ">>") (number_literal "5"))) () ")")) (+ "+") (identifier "uVar4")) (^ "^") (subscript_expression "puVar3[0x44]" (identifier "puVar3") ([ "[") (number_literal "0x44") (] "]"))) () ")")))) (; ";")) (expression_statement "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);" (assignment_expression "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4])" (identifier "uVar4") (= "=") (binary_expression "uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4])" (identifier "uVar4") (- "-") (parenthesized_expression "((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4])" (( "(") (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]" (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2" (parenthesized_expression "(uVar2 * 0x10 ^ uVar2 >> 5)" (( "(") (binary_expression "uVar2 * 0x10 ^ uVar2 >> 5" (binary_expression "uVar2 * 0x10" (identifier "uVar2") (* "*") (number_literal "0x10")) (^ "^") (binary_expression "uVar2 >> 5" (identifier "uVar2") (>> ">>") (number_literal "5"))) () ")")) (+ "+") (identifier "uVar2")) (^ "^") (subscript_expression "puVar3[4]" (identifier "puVar3") ([ "[") (number_literal "4") (] "]"))) () ")")))) (; ";")) (expression_statement "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);" (assignment_expression "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42])" (identifier "uVar2") (= "=") (binary_expression "uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42])" (identifier "uVar2") (- "-") (parenthesized_expression "((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42])" (( "(") (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]" (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4" (parenthesized_expression "(uVar4 * 0x10 ^ uVar4 >> 5)" (( "(") (binary_expression "uVar4 * 0x10 ^ uVar4 >> 5" (binary_expression "uVar4 * 0x10" (identifier "uVar4") (* "*") (number_literal "0x10")) (^ "^") (binary_expression "uVar4 >> 5" (identifier "uVar4") (>> ">>") (number_literal "5"))) () ")")) (+ "+") (identifier "uVar4")) (^ "^") (subscript_expression "puVar3[0x42]" (identifier "puVar3") ([ "[") (number_literal "0x42") (] "]"))) () ")")))) (; ";")) (expression_statement "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);" (assignment_expression "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2])" (identifier "uVar4") (= "=") (binary_expression "uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2])" (identifier "uVar4") (- "-") (parenthesized_expression "((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2])" (( "(") (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]" (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2" (parenthesized_expression "(uVar2 * 0x10 ^ uVar2 >> 5)" (( "(") (binary_expression "uVar2 * 0x10 ^ uVar2 >> 5" (binary_expression "uVar2 * 0x10" (identifier "uVar2") (* "*") (number_literal "0x10")) (^ "^") (binary_expression "uVar2 >> 5" (identifier "uVar2") (>> ">>") (number_literal "5"))) () ")")) (+ "+") (identifier "uVar2")) (^ "^") (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]"))) () ")")))) (; ";")) (expression_statement "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);" (assignment_expression "uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40])" (identifier "uVar2") (= "=") (binary_expression "uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40])" (identifier "uVar2") (- "-") (parenthesized_expression "((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40])" (( "(") (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]" (binary_expression "(uVar4 * 0x10 ^ uVar4 >> 5) + uVar4" (parenthesized_expression "(uVar4 * 0x10 ^ uVar4 >> 5)" (( "(") (binary_expression "uVar4 * 0x10 ^ uVar4 >> 5" (binary_expression "uVar4 * 0x10" (identifier "uVar4") (* "*") (number_literal "0x10")) (^ "^") (binary_expression "uVar4 >> 5" (identifier "uVar4") (>> ">>") (number_literal "5"))) () ")")) (+ "+") (identifier "uVar4")) (^ "^") (subscript_expression "puVar3[0x40]" (identifier "puVar3") ([ "[") (number_literal "0x40") (] "]"))) () ")")))) (; ";")) (expression_statement "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);" (assignment_expression "uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3)" (identifier "uVar4") (= "=") (binary_expression "uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3)" (identifier "uVar4") (- "-") (parenthesized_expression "((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3)" (( "(") (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3" (binary_expression "(uVar2 * 0x10 ^ uVar2 >> 5) + uVar2" (parenthesized_expression "(uVar2 * 0x10 ^ uVar2 >> 5)" (( "(") (binary_expression "uVar2 * 0x10 ^ uVar2 >> 5" (binary_expression "uVar2 * 0x10" (identifier "uVar2") (* "*") (number_literal "0x10")) (^ "^") (binary_expression "uVar2 >> 5" (identifier "uVar2") (>> ">>") (number_literal "5"))) () ")")) (+ "+") (identifier "uVar2")) (^ "^") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) () ")")))) (; ";")) (expression_statement "bVar5 = param_3 != puVar3;" (assignment_expression "bVar5 = param_3 != puVar3" (identifier "bVar5") (= "=") (binary_expression "param_3 != puVar3" (identifier "param_3") (!= "!=") (identifier "puVar3"))) (; ";")) (expression_statement "puVar3 = puVar3 + -8;" (assignment_expression "puVar3 = puVar3 + -8" (identifier "puVar3") (= "=") (binary_expression "puVar3 + -8" (identifier "puVar3") (+ "+") (number_literal "-8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar5)" (( "(") (identifier "bVar5") () ")")) (; ";")) (expression_statement "param_2[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000;" (assignment_expression "param_2[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000" (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 * 0x1000000" (identifier "uVar2") (* "*") (number_literal "0x1000000")))) (; ";")) (expression_statement "*param_2 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000;" (assignment_expression "*param_2 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" (identifier "uVar4") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" (( "(") (binary_expression "uVar4 & 0xff0000" (identifier "uVar4") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" (( "(") (binary_expression "uVar4 & 0xff00" (identifier "uVar4") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar4 * 0x1000000" (identifier "uVar4") (* "*") (number_literal "0x1000000")))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

int function_1(type_1 *var_3,type_1 *var_1,type_2 *var_4)

{
  type_3 var_6;
  type_3 var_5;
  type_2 *var_8;
  type_3 var_7;
  bool bVar5;
  
  if (var_1 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("pt != NULL","src/ciphers/xtea.c",0x73);
  }
  if (var_3 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("ct != NULL","src/ciphers/xtea.c",0x74);
  }
  if (var_4 == (type_2 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("skey != NULL","src/ciphers/xtea.c",0x75);
  }
  var_5 = *(type_3 *)var_3;
  var_6 = *(type_3 *)(var_3 + 4);
  var_7 = var_5 >> 0x18 | (var_5 & 0xff0000) >> 8 | (var_5 & 0xff00) << 8 | var_5 << 0x18;
  var_5 = var_6 >> 0x18 | (var_6 & 0xff0000) >> 8 | (var_6 & 0xff00) << 8 | var_6 << 0x18;
  var_8 = (type_2 *)((var_4->twofish).S[0] + 0x38);
  do {
    var_5 = var_5 - ((var_7 << 4 ^ var_7 >> 5) + var_7 ^ (var_8->des3).ek[2][6]);
    var_7 = var_7 - ((var_5 * 0x10 ^ var_5 >> 5) + var_5 ^ (var_8->des).ek[6]);
    var_5 = var_5 - ((var_7 * 0x10 ^ var_7 >> 5) + var_7 ^ (var_8->des3).ek[2][4]);
    var_7 = var_7 - ((var_5 * 0x10 ^ var_5 >> 5) + var_5 ^ (var_8->des).ek[4]);
    var_5 = var_5 - ((var_7 * 0x10 ^ var_7 >> 5) + var_7 ^ (var_8->des3).ek[2][2]);
    var_7 = var_7 - ((var_5 * 0x10 ^ var_5 >> 5) + var_5 ^ (var_8->des).ek[2]);
    var_5 = var_5 - ((var_7 * 0x10 ^ var_7 >> 5) + var_7 ^ (var_8->des3).ek[2][0]);
    var_7 = var_7 - ((var_5 * 0x10 ^ var_5 >> 5) + var_5 ^ (var_8->des).ek[0]);
    bVar5 = var_4 != var_8;
    var_8 = (type_2 *)((long)var_8 + -0x20);
  } while (bVar5);
  *(type_3 *)(var_1 + 4) =
       var_5 >> 0x18 | (var_5 & 0xff0000) >> 8 | (var_5 & 0xff00) << 8 | var_5 * 0x1000000;
  *(type_3 *)var_1 = var_7 >> 0x18 | (var_7 & 0xff0000) >> 8 | (var_7 & 0xff00) << 8 | var_7 * 0x1000000;
  return 0;
}


(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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (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: (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)))))) (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 (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) right: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) right: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) right: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) right: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) right: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) right: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) right: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) right: (identifier)) right: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (identifier))) (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))))) (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))))) (return_statement (number_literal)))))

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

{
  uint uVar1;
  uint uVar2;
  uint *puVar3;
  uint uVar4;
  bool bVar5;
  
  if (param_2 == (uint *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("pt != NULL","src/ciphers/xtea.c",0x73);
  }
  if (param_1 == (uint *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("ct != NULL","src/ciphers/xtea.c",0x74);
  }
  if (param_3 == (uint *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("skey != NULL","src/ciphers/xtea.c",0x75);
  }
  uVar2 = *param_1;
  uVar1 = param_1[1];
  uVar4 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;
  uVar2 = uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18;
  puVar3 = param_3 + 0x38;
  do {
    uVar2 = uVar2 - ((uVar4 << 4 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x46]);
    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[6]);
    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x44]);
    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[4]);
    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x42]);
    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ puVar3[2]);
    uVar2 = uVar2 - ((uVar4 * 0x10 ^ uVar4 >> 5) + uVar4 ^ puVar3[0x40]);
    uVar4 = uVar4 - ((uVar2 * 0x10 ^ uVar2 >> 5) + uVar2 ^ *puVar3);
    bVar5 = param_3 != puVar3;
    puVar3 = puVar3 + -8;
  } while (bVar5);
  param_2[1] = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 * 0x1000000;
  *param_2 = uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar4 * 0x1000000;
  return 0;
}

