
/* WARNING: Switch with 1 destination removed at 0x001131a0 */

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

{
  int round_no;
  ulong32 uVar1;
  int round_no_00;
  uint uVar2;
  uint in;
  
  if (pt == (uchar *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);
  }
  if (ct != (uchar *)0x0) {
    if (skey == (symmetric_key *)0x0) {
                    /* WARNING: Subroutine does not return */
      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);
    }
    uVar2 = *(uint *)ct;
    in = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;
    uVar2 = *(uint *)(ct + 4);
    uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;
    round_no_00 = 7;
    do {
      uVar1 = FO(uVar2,round_no_00,skey);
      round_no = round_no_00 + -1;
      uVar1 = FL(uVar1,round_no_00,skey);
      in = in ^ uVar1;
      uVar1 = FL(in,round_no,skey);
      round_no_00 = round_no_00 + -2;
      uVar1 = FO(uVar1,round_no,skey);
      uVar2 = uVar2 ^ uVar1;
    } while (round_no_00 != -1);
    *(uint *)pt = in >> 0x18 | (in & 0xff0000) >> 8 | (in & 0xff00) << 8 | in << 0x18;
    *(uint *)(pt + 4) =
         uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac);
}



/* WARNING: Switch with 1 destination removed at 0x001131a0 */

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

{
  int iVar1;
  undefined4 uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  
  if (param_2 == (uint *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);
  }
  if (param_1 != (uint *)0x0) {
    if (param_3 == 0) {
                    /* WARNING: Subroutine does not return */
      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);
    }
    uVar5 = *param_1;
    uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;
    uVar5 = param_1[1];
    uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;
    iVar4 = 7;
    do {
      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);
      iVar1 = iVar4 + -1;
      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);
      uVar6 = uVar6 ^ uVar3;
      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);
      iVar4 = iVar4 + -2;
      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);
      uVar5 = uVar5 ^ uVar3;
    } while (iVar4 != -1);
    *param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;
    param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac);
}


JMP qword ptr [0x001deed0]
(translation_unit "/* WARNING: Switch with 1 destination removed at 0x001131a0 */\n\nundefined8 kasumi_ecb_decrypt(uint *param_1,uint *param_2,long param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  if (param_2 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);\n  }\n  if (param_1 != (uint *)0x0) {\n    if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar5 = *param_1;\n    uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    uVar5 = param_1[1];\n    uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    iVar4 = 7;\n    do {\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    } while (iVar4 != -1);\n    *param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac);\n}\n\n" comment (function_definition "undefined8 kasumi_ecb_decrypt(uint *param_1,uint *param_2,long param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  if (param_2 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);\n  }\n  if (param_1 != (uint *)0x0) {\n    if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar5 = *param_1;\n    uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    uVar5 = param_1[1];\n    uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    iVar4 = 7;\n    do {\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    } while (iVar4 != -1);\n    *param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac);\n}" type_identifier (function_declarator "kasumi_ecb_decrypt(uint *param_1,uint *param_2,long param_3)" identifier (parameter_list "(uint *param_1,uint *param_2,long param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  if (param_2 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);\n  }\n  if (param_1 != (uint *)0x0) {\n    if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar5 = *param_1;\n    uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    uVar5 = param_1[1];\n    uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    iVar4 = 7;\n    do {\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    } while (iVar4 != -1);\n    *param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (if_statement "if (param_2 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);\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/kasumi.c",0xab);\n  }" { comment (expression_statement "crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);" (call_expression "crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab)" identifier (argument_list "("pt != NULL","src/ciphers/kasumi.c",0xab)" ( (string_literal ""pt != NULL"" " string_content ") , (string_literal ""src/ciphers/kasumi.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_1 != (uint *)0x0) {\n    if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar5 = *param_1;\n    uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    uVar5 = param_1[1];\n    uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    iVar4 = 7;\n    do {\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    } while (iVar4 != -1);\n    *param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    return 0;\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    if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar5 = *param_1;\n    uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    uVar5 = param_1[1];\n    uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    iVar4 = 7;\n    do {\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    } while (iVar4 != -1);\n    *param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    return 0;\n  }" { (if_statement "if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }" { comment (expression_statement "crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);" (call_expression "crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad)" identifier (argument_list "("skey != NULL","src/ciphers/kasumi.c",0xad)" ( (string_literal ""skey != NULL"" " string_content ") , (string_literal ""src/ciphers/kasumi.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;" (assignment_expression "uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18" identifier = (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8" (binary_expression "uVar5 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar5 & 0xff0000) >> 8" (parenthesized_expression "(uVar5 & 0xff0000)" ( (binary_expression "uVar5 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar5 & 0xff00) << 8" (parenthesized_expression "(uVar5 & 0xff00)" ( (binary_expression "uVar5 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar5 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar5 = param_1[1];" (assignment_expression "uVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;" (assignment_expression "uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18" identifier = (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8" (binary_expression "uVar5 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar5 & 0xff0000) >> 8" (parenthesized_expression "(uVar5 & 0xff0000)" ( (binary_expression "uVar5 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar5 & 0xff00) << 8" (parenthesized_expression "(uVar5 & 0xff00)" ( (binary_expression "uVar5 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar5 << 0x18" identifier << number_literal))) ;) (expression_statement "iVar4 = 7;" (assignment_expression "iVar4 = 7" identifier = number_literal) ;) (do_statement "do {\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    } while (iVar4 != -1);" do (compound_statement "{\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    }" { (expression_statement "uVar2 = FUN_0011d234(uVar5,iVar4,param_3);" (assignment_expression "uVar2 = FUN_0011d234(uVar5,iVar4,param_3)" identifier = (call_expression "FUN_0011d234(uVar5,iVar4,param_3)" identifier (argument_list "(uVar5,iVar4,param_3)" ( identifier , identifier , identifier )))) ;) (expression_statement "iVar1 = iVar4 + -1;" (assignment_expression "iVar1 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);" (assignment_expression "uVar3 = FUN_0011d29c(uVar2,iVar4,param_3)" identifier = (call_expression "FUN_0011d29c(uVar2,iVar4,param_3)" identifier (argument_list "(uVar2,iVar4,param_3)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar6 = uVar6 ^ uVar3;" (assignment_expression "uVar6 = uVar6 ^ uVar3" identifier = (binary_expression "uVar6 ^ uVar3" identifier ^ identifier)) ;) (expression_statement "uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);" (assignment_expression "uVar2 = FUN_0011d29c(uVar6,iVar1,param_3)" identifier = (call_expression "FUN_0011d29c(uVar6,iVar1,param_3)" identifier (argument_list "(uVar6,iVar1,param_3)" ( identifier , identifier , identifier )))) ;) (expression_statement "iVar4 = iVar4 + -2;" (assignment_expression "iVar4 = iVar4 + -2" identifier = (binary_expression "iVar4 + -2" identifier + number_literal)) ;) (expression_statement "uVar3 = FUN_0011d234(uVar2,iVar1,param_3);" (assignment_expression "uVar3 = FUN_0011d234(uVar2,iVar1,param_3)" identifier = (call_expression "FUN_0011d234(uVar2,iVar1,param_3)" identifier (argument_list "(uVar2,iVar1,param_3)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar5 = uVar5 ^ uVar3;" (assignment_expression "uVar5 = uVar5 ^ uVar3" identifier = (binary_expression "uVar5 ^ uVar3" identifier ^ identifier)) ;) }) while (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) ;) (expression_statement "*param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;" (assignment_expression "*param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal))) ;) (expression_statement "param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;" (assignment_expression "param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8" (binary_expression "uVar5 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar5 & 0xff0000) >> 8" (parenthesized_expression "(uVar5 & 0xff0000)" ( (binary_expression "uVar5 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar5 & 0xff00) << 8" (parenthesized_expression "(uVar5 & 0xff00)" ( (binary_expression "uVar5 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar5 << 0x18" identifier << number_literal))) ;) (return_statement "return 0;" return number_literal ;) })) comment (expression_statement "crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac);" (call_expression "crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac)" identifier (argument_list "("ct != NULL","src/ciphers/kasumi.c",0xac)" ( (string_literal ""ct != NULL"" " string_content ") , (string_literal ""src/ciphers/kasumi.c"" " string_content ") , number_literal ))) ;) })))
(translation_unit "/* WARNING: Switch with 1 destination removed at 0x001131a0 */\n\nint kasumi_ecb_decrypt(uchar *ct,uchar *pt,symmetric_key *skey)\n\n{\n  int round_no;\n  ulong32 uVar1;\n  int round_no_00;\n  uint uVar2;\n  uint in;\n  \n  if (pt == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);\n  }\n  if (ct != (uchar *)0x0) {\n    if (skey == (symmetric_key *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar2 = *(uint *)ct;\n    in = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(uint *)(ct + 4);\n    uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    round_no_00 = 7;\n    do {\n      uVar1 = FO(uVar2,round_no_00,skey);\n      round_no = round_no_00 + -1;\n      uVar1 = FL(uVar1,round_no_00,skey);\n      in = in ^ uVar1;\n      uVar1 = FL(in,round_no,skey);\n      round_no_00 = round_no_00 + -2;\n      uVar1 = FO(uVar1,round_no,skey);\n      uVar2 = uVar2 ^ uVar1;\n    } while (round_no_00 != -1);\n    *(uint *)pt = in >> 0x18 | (in & 0xff0000) >> 8 | (in & 0xff00) << 8 | in << 0x18;\n    *(uint *)(pt + 4) =\n         uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac);\n}\n\n" comment (function_definition "int kasumi_ecb_decrypt(uchar *ct,uchar *pt,symmetric_key *skey)\n\n{\n  int round_no;\n  ulong32 uVar1;\n  int round_no_00;\n  uint uVar2;\n  uint in;\n  \n  if (pt == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);\n  }\n  if (ct != (uchar *)0x0) {\n    if (skey == (symmetric_key *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar2 = *(uint *)ct;\n    in = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(uint *)(ct + 4);\n    uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    round_no_00 = 7;\n    do {\n      uVar1 = FO(uVar2,round_no_00,skey);\n      round_no = round_no_00 + -1;\n      uVar1 = FL(uVar1,round_no_00,skey);\n      in = in ^ uVar1;\n      uVar1 = FL(in,round_no,skey);\n      round_no_00 = round_no_00 + -2;\n      uVar1 = FO(uVar1,round_no,skey);\n      uVar2 = uVar2 ^ uVar1;\n    } while (round_no_00 != -1);\n    *(uint *)pt = in >> 0x18 | (in & 0xff0000) >> 8 | (in & 0xff00) << 8 | in << 0x18;\n    *(uint *)(pt + 4) =\n         uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac);\n}" primitive_type (function_declarator "kasumi_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  int round_no;\n  ulong32 uVar1;\n  int round_no_00;\n  uint uVar2;\n  uint in;\n  \n  if (pt == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);\n  }\n  if (ct != (uchar *)0x0) {\n    if (skey == (symmetric_key *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar2 = *(uint *)ct;\n    in = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(uint *)(ct + 4);\n    uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    round_no_00 = 7;\n    do {\n      uVar1 = FO(uVar2,round_no_00,skey);\n      round_no = round_no_00 + -1;\n      uVar1 = FL(uVar1,round_no_00,skey);\n      in = in ^ uVar1;\n      uVar1 = FL(in,round_no,skey);\n      round_no_00 = round_no_00 + -2;\n      uVar1 = FO(uVar1,round_no,skey);\n      uVar2 = uVar2 ^ uVar1;\n    } while (round_no_00 != -1);\n    *(uint *)pt = in >> 0x18 | (in & 0xff0000) >> 8 | (in & 0xff00) << 8 | in << 0x18;\n    *(uint *)(pt + 4) =\n         uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    return 0;\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac);\n}" { (declaration "int round_no;" primitive_type identifier ;) (declaration "ulong32 uVar1;" type_identifier identifier ;) (declaration "int round_no_00;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint in;" type_identifier identifier ;) (if_statement "if (pt == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);\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/kasumi.c",0xab);\n  }" { comment (expression_statement "crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);" (call_expression "crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab)" identifier (argument_list "("pt != NULL","src/ciphers/kasumi.c",0xab)" ( (string_literal ""pt != NULL"" " string_content ") , (string_literal ""src/ciphers/kasumi.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (ct != (uchar *)0x0) {\n    if (skey == (symmetric_key *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar2 = *(uint *)ct;\n    in = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(uint *)(ct + 4);\n    uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    round_no_00 = 7;\n    do {\n      uVar1 = FO(uVar2,round_no_00,skey);\n      round_no = round_no_00 + -1;\n      uVar1 = FL(uVar1,round_no_00,skey);\n      in = in ^ uVar1;\n      uVar1 = FL(in,round_no,skey);\n      round_no_00 = round_no_00 + -2;\n      uVar1 = FO(uVar1,round_no,skey);\n      uVar2 = uVar2 ^ uVar1;\n    } while (round_no_00 != -1);\n    *(uint *)pt = in >> 0x18 | (in & 0xff0000) >> 8 | (in & 0xff00) << 8 | in << 0x18;\n    *(uint *)(pt + 4) =\n         uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    return 0;\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    if (skey == (symmetric_key *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar2 = *(uint *)ct;\n    in = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    uVar2 = *(uint *)(ct + 4);\n    uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    round_no_00 = 7;\n    do {\n      uVar1 = FO(uVar2,round_no_00,skey);\n      round_no = round_no_00 + -1;\n      uVar1 = FL(uVar1,round_no_00,skey);\n      in = in ^ uVar1;\n      uVar1 = FL(in,round_no,skey);\n      round_no_00 = round_no_00 + -2;\n      uVar1 = FO(uVar1,round_no,skey);\n      uVar2 = uVar2 ^ uVar1;\n    } while (round_no_00 != -1);\n    *(uint *)pt = in >> 0x18 | (in & 0xff0000) >> 8 | (in & 0xff00) << 8 | in << 0x18;\n    *(uint *)(pt + 4) =\n         uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;\n    return 0;\n  }" { (if_statement "if (skey == (symmetric_key *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\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/kasumi.c",0xad);\n    }" { comment (expression_statement "crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);" (call_expression "crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad)" identifier (argument_list "("skey != NULL","src/ciphers/kasumi.c",0xad)" ( (string_literal ""skey != NULL"" " string_content ") , (string_literal ""src/ciphers/kasumi.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 "in = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "in = 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 = *(uint *)(ct + 4);" (assignment_expression "uVar2 = *(uint *)(ct + 4)" identifier = (pointer_expression "*(uint *)(ct + 4)" * (cast_expression "(uint *)(ct + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ct + 4)" ( (binary_expression "ct + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "uVar2 = 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 "round_no_00 = 7;" (assignment_expression "round_no_00 = 7" identifier = number_literal) ;) (do_statement "do {\n      uVar1 = FO(uVar2,round_no_00,skey);\n      round_no = round_no_00 + -1;\n      uVar1 = FL(uVar1,round_no_00,skey);\n      in = in ^ uVar1;\n      uVar1 = FL(in,round_no,skey);\n      round_no_00 = round_no_00 + -2;\n      uVar1 = FO(uVar1,round_no,skey);\n      uVar2 = uVar2 ^ uVar1;\n    } while (round_no_00 != -1);" do (compound_statement "{\n      uVar1 = FO(uVar2,round_no_00,skey);\n      round_no = round_no_00 + -1;\n      uVar1 = FL(uVar1,round_no_00,skey);\n      in = in ^ uVar1;\n      uVar1 = FL(in,round_no,skey);\n      round_no_00 = round_no_00 + -2;\n      uVar1 = FO(uVar1,round_no,skey);\n      uVar2 = uVar2 ^ uVar1;\n    }" { (expression_statement "uVar1 = FO(uVar2,round_no_00,skey);" (assignment_expression "uVar1 = FO(uVar2,round_no_00,skey)" identifier = (call_expression "FO(uVar2,round_no_00,skey)" identifier (argument_list "(uVar2,round_no_00,skey)" ( identifier , identifier , identifier )))) ;) (expression_statement "round_no = round_no_00 + -1;" (assignment_expression "round_no = round_no_00 + -1" identifier = (binary_expression "round_no_00 + -1" identifier + number_literal)) ;) (expression_statement "uVar1 = FL(uVar1,round_no_00,skey);" (assignment_expression "uVar1 = FL(uVar1,round_no_00,skey)" identifier = (call_expression "FL(uVar1,round_no_00,skey)" identifier (argument_list "(uVar1,round_no_00,skey)" ( identifier , identifier , identifier )))) ;) (expression_statement "in = in ^ uVar1;" (assignment_expression "in = in ^ uVar1" identifier = (binary_expression "in ^ uVar1" identifier ^ identifier)) ;) (expression_statement "uVar1 = FL(in,round_no,skey);" (assignment_expression "uVar1 = FL(in,round_no,skey)" identifier = (call_expression "FL(in,round_no,skey)" identifier (argument_list "(in,round_no,skey)" ( identifier , identifier , identifier )))) ;) (expression_statement "round_no_00 = round_no_00 + -2;" (assignment_expression "round_no_00 = round_no_00 + -2" identifier = (binary_expression "round_no_00 + -2" identifier + number_literal)) ;) (expression_statement "uVar1 = FO(uVar1,round_no,skey);" (assignment_expression "uVar1 = FO(uVar1,round_no,skey)" identifier = (call_expression "FO(uVar1,round_no,skey)" identifier (argument_list "(uVar1,round_no,skey)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar2 = uVar2 ^ uVar1;" (assignment_expression "uVar2 = uVar2 ^ uVar1" identifier = (binary_expression "uVar2 ^ uVar1" identifier ^ identifier)) ;) }) while (parenthesized_expression "(round_no_00 != -1)" ( (binary_expression "round_no_00 != -1" identifier != number_literal) )) ;) (expression_statement "*(uint *)pt = in >> 0x18 | (in & 0xff0000) >> 8 | (in & 0xff00) << 8 | in << 0x18;" (assignment_expression "*(uint *)pt = in >> 0x18 | (in & 0xff0000) >> 8 | (in & 0xff00) << 8 | in << 0x18" (pointer_expression "*(uint *)pt" * (cast_expression "(uint *)pt" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "in >> 0x18 | (in & 0xff0000) >> 8 | (in & 0xff00) << 8 | in << 0x18" (binary_expression "in >> 0x18 | (in & 0xff0000) >> 8 | (in & 0xff00) << 8" (binary_expression "in >> 0x18 | (in & 0xff0000) >> 8" (binary_expression "in >> 0x18" identifier >> number_literal) | (binary_expression "(in & 0xff0000) >> 8" (parenthesized_expression "(in & 0xff0000)" ( (binary_expression "in & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(in & 0xff00) << 8" (parenthesized_expression "(in & 0xff00)" ( (binary_expression "in & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "in << 0x18" identifier << number_literal))) ;) (expression_statement "*(uint *)(pt + 4) =\n         uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18;" (assignment_expression "*(uint *)(pt + 4) =\n         uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 | uVar2 << 0x18" (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 << 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))) ;) (return_statement "return 0;" return number_literal ;) })) comment (expression_statement "crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac);" (call_expression "crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac)" identifier (argument_list "("ct != NULL","src/ciphers/kasumi.c",0xac)" ( (string_literal ""ct != NULL"" " string_content ") , (string_literal ""src/ciphers/kasumi.c"" " string_content ") , number_literal ))) ;) })))
(translation_unit "undefined8 kasumi_ecb_decrypt(uint *param_1,uint *param_2,long param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);\n  }\n  if (param_1 != (uint *)0x0) {\n    if (param_3 == 0) {\n                    \n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar5 = *param_1;\n    uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    uVar5 = param_1[1];\n    uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    iVar4 = 7;\n    do {\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    } while (iVar4 != -1);\n    *param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    return 0;\n  }\n                    \n  crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac);\n}\n\n" (function_definition "undefined8 kasumi_ecb_decrypt(uint *param_1,uint *param_2,long param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);\n  }\n  if (param_1 != (uint *)0x0) {\n    if (param_3 == 0) {\n                    \n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar5 = *param_1;\n    uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    uVar5 = param_1[1];\n    uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    iVar4 = 7;\n    do {\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    } while (iVar4 != -1);\n    *param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    return 0;\n  }\n                    \n  crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac);\n}" type_identifier (function_declarator "kasumi_ecb_decrypt(uint *param_1,uint *param_2,long param_3)" identifier (parameter_list "(uint *param_1,uint *param_2,long param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);\n  }\n  if (param_1 != (uint *)0x0) {\n    if (param_3 == 0) {\n                    \n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar5 = *param_1;\n    uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    uVar5 = param_1[1];\n    uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    iVar4 = 7;\n    do {\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    } while (iVar4 != -1);\n    *param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    return 0;\n  }\n                    \n  crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac);\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (if_statement "if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);\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/kasumi.c",0xab);\n  }" { (expression_statement "crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);" (call_expression "crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab)" identifier (argument_list "("pt != NULL","src/ciphers/kasumi.c",0xab)" ( (string_literal ""pt != NULL"" " string_content ") , (string_literal ""src/ciphers/kasumi.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_1 != (uint *)0x0) {\n    if (param_3 == 0) {\n                    \n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar5 = *param_1;\n    uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    uVar5 = param_1[1];\n    uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    iVar4 = 7;\n    do {\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    } while (iVar4 != -1);\n    *param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    return 0;\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    if (param_3 == 0) {\n                    \n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar5 = *param_1;\n    uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    uVar5 = param_1[1];\n    uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    iVar4 = 7;\n    do {\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    } while (iVar4 != -1);\n    *param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    return 0;\n  }" { (if_statement "if (param_3 == 0) {\n                    \n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }" { (expression_statement "crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);" (call_expression "crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad)" identifier (argument_list "("skey != NULL","src/ciphers/kasumi.c",0xad)" ( (string_literal ""skey != NULL"" " string_content ") , (string_literal ""src/ciphers/kasumi.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;" (assignment_expression "uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18" identifier = (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8" (binary_expression "uVar5 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar5 & 0xff0000) >> 8" (parenthesized_expression "(uVar5 & 0xff0000)" ( (binary_expression "uVar5 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar5 & 0xff00) << 8" (parenthesized_expression "(uVar5 & 0xff00)" ( (binary_expression "uVar5 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar5 << 0x18" identifier << number_literal))) ;) (expression_statement "uVar5 = param_1[1];" (assignment_expression "uVar5 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;" (assignment_expression "uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18" identifier = (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8" (binary_expression "uVar5 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar5 & 0xff0000) >> 8" (parenthesized_expression "(uVar5 & 0xff0000)" ( (binary_expression "uVar5 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar5 & 0xff00) << 8" (parenthesized_expression "(uVar5 & 0xff00)" ( (binary_expression "uVar5 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar5 << 0x18" identifier << number_literal))) ;) (expression_statement "iVar4 = 7;" (assignment_expression "iVar4 = 7" identifier = number_literal) ;) (do_statement "do {\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    } while (iVar4 != -1);" do (compound_statement "{\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    }" { (expression_statement "uVar2 = FUN_0011d234(uVar5,iVar4,param_3);" (assignment_expression "uVar2 = FUN_0011d234(uVar5,iVar4,param_3)" identifier = (call_expression "FUN_0011d234(uVar5,iVar4,param_3)" identifier (argument_list "(uVar5,iVar4,param_3)" ( identifier , identifier , identifier )))) ;) (expression_statement "iVar1 = iVar4 + -1;" (assignment_expression "iVar1 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);" (assignment_expression "uVar3 = FUN_0011d29c(uVar2,iVar4,param_3)" identifier = (call_expression "FUN_0011d29c(uVar2,iVar4,param_3)" identifier (argument_list "(uVar2,iVar4,param_3)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar6 = uVar6 ^ uVar3;" (assignment_expression "uVar6 = uVar6 ^ uVar3" identifier = (binary_expression "uVar6 ^ uVar3" identifier ^ identifier)) ;) (expression_statement "uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);" (assignment_expression "uVar2 = FUN_0011d29c(uVar6,iVar1,param_3)" identifier = (call_expression "FUN_0011d29c(uVar6,iVar1,param_3)" identifier (argument_list "(uVar6,iVar1,param_3)" ( identifier , identifier , identifier )))) ;) (expression_statement "iVar4 = iVar4 + -2;" (assignment_expression "iVar4 = iVar4 + -2" identifier = (binary_expression "iVar4 + -2" identifier + number_literal)) ;) (expression_statement "uVar3 = FUN_0011d234(uVar2,iVar1,param_3);" (assignment_expression "uVar3 = FUN_0011d234(uVar2,iVar1,param_3)" identifier = (call_expression "FUN_0011d234(uVar2,iVar1,param_3)" identifier (argument_list "(uVar2,iVar1,param_3)" ( identifier , identifier , identifier )))) ;) (expression_statement "uVar5 = uVar5 ^ uVar3;" (assignment_expression "uVar5 = uVar5 ^ uVar3" identifier = (binary_expression "uVar5 ^ uVar3" identifier ^ identifier)) ;) }) while (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) ;) (expression_statement "*param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;" (assignment_expression "*param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar6 << 0x18" identifier << number_literal))) ;) (expression_statement "param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;" (assignment_expression "param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8" (binary_expression "uVar5 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar5 & 0xff0000) >> 8" (parenthesized_expression "(uVar5 & 0xff0000)" ( (binary_expression "uVar5 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar5 & 0xff00) << 8" (parenthesized_expression "(uVar5 & 0xff00)" ( (binary_expression "uVar5 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar5 << 0x18" identifier << number_literal))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac);" (call_expression "crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac)" identifier (argument_list "("ct != NULL","src/ciphers/kasumi.c",0xac)" ( (string_literal ""ct != NULL"" " string_content ") , (string_literal ""src/ciphers/kasumi.c"" " string_content ") , 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 (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (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 = (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 = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT))) ;) (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) })))
(function_definition "undefined8 kasumi_ecb_decrypt(uint *param_1,uint *param_2,long param_3)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);\n  }\n  if (param_1 != (uint *)0x0) {\n    if (param_3 == 0) {\n                    \n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar5 = *param_1;\n    uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    uVar5 = param_1[1];\n    uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    iVar4 = 7;\n    do {\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    } while (iVar4 != -1);\n    *param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    return 0;\n  }\n                    \n  crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac);\n}" (type_identifier "undefined8") (function_declarator "kasumi_ecb_decrypt(uint *param_1,uint *param_2,long param_3)" (identifier "kasumi_ecb_decrypt") (parameter_list "(uint *param_1,uint *param_2,long param_3)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  \n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);\n  }\n  if (param_1 != (uint *)0x0) {\n    if (param_3 == 0) {\n                    \n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar5 = *param_1;\n    uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    uVar5 = param_1[1];\n    uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    iVar4 = 7;\n    do {\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    } while (iVar4 != -1);\n    *param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    return 0;\n  }\n                    \n  crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac);\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (if_statement "if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);\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/kasumi.c",0xab);\n  }" ({ "{") (expression_statement "crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);" (call_expression "crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab)" (identifier "crypt_argchk") (argument_list "("pt != NULL","src/ciphers/kasumi.c",0xab)" (( "(") (string_literal ""pt != NULL"" (" """) (string_content "pt != NULL") (" """)) (, ",") (string_literal ""src/ciphers/kasumi.c"" (" """) (string_content "src/ciphers/kasumi.c") (" """)) (, ",") (number_literal "0xab") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_1 != (uint *)0x0) {\n    if (param_3 == 0) {\n                    \n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar5 = *param_1;\n    uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    uVar5 = param_1[1];\n    uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    iVar4 = 7;\n    do {\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    } while (iVar4 != -1);\n    *param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    return 0;\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    if (param_3 == 0) {\n                    \n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }\n    uVar5 = *param_1;\n    uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    uVar5 = param_1[1];\n    uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    iVar4 = 7;\n    do {\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    } while (iVar4 != -1);\n    *param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;\n    param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;\n    return 0;\n  }" ({ "{") (if_statement "if (param_3 == 0) {\n                    \n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);\n    }" ({ "{") (expression_statement "crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);" (call_expression "crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad)" (identifier "crypt_argchk") (argument_list "("skey != NULL","src/ciphers/kasumi.c",0xad)" (( "(") (string_literal ""skey != NULL"" (" """) (string_content "skey != NULL") (" """)) (, ",") (string_literal ""src/ciphers/kasumi.c"" (" """) (string_content "src/ciphers/kasumi.c") (" """)) (, ",") (number_literal "0xad") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar5 = *param_1;" (assignment_expression "uVar5 = *param_1" (identifier "uVar5") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;" (assignment_expression "uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18" (identifier "uVar6") (= "=") (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8" (binary_expression "uVar5 >> 0x18" (identifier "uVar5") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar5 & 0xff0000) >> 8" (parenthesized_expression "(uVar5 & 0xff0000)" (( "(") (binary_expression "uVar5 & 0xff0000" (identifier "uVar5") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar5 & 0xff00) << 8" (parenthesized_expression "(uVar5 & 0xff00)" (( "(") (binary_expression "uVar5 & 0xff00" (identifier "uVar5") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar5 << 0x18" (identifier "uVar5") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "uVar5 = param_1[1];" (assignment_expression "uVar5 = param_1[1]" (identifier "uVar5") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;" (assignment_expression "uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18" (identifier "uVar5") (= "=") (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8" (binary_expression "uVar5 >> 0x18" (identifier "uVar5") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar5 & 0xff0000) >> 8" (parenthesized_expression "(uVar5 & 0xff0000)" (( "(") (binary_expression "uVar5 & 0xff0000" (identifier "uVar5") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar5 & 0xff00) << 8" (parenthesized_expression "(uVar5 & 0xff00)" (( "(") (binary_expression "uVar5 & 0xff00" (identifier "uVar5") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar5 << 0x18" (identifier "uVar5") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "iVar4 = 7;" (assignment_expression "iVar4 = 7" (identifier "iVar4") (= "=") (number_literal "7")) (; ";")) (do_statement "do {\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    } while (iVar4 != -1);" (do "do") (compound_statement "{\n      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);\n      iVar1 = iVar4 + -1;\n      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);\n      uVar6 = uVar6 ^ uVar3;\n      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);\n      iVar4 = iVar4 + -2;\n      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);\n      uVar5 = uVar5 ^ uVar3;\n    }" ({ "{") (expression_statement "uVar2 = FUN_0011d234(uVar5,iVar4,param_3);" (assignment_expression "uVar2 = FUN_0011d234(uVar5,iVar4,param_3)" (identifier "uVar2") (= "=") (call_expression "FUN_0011d234(uVar5,iVar4,param_3)" (identifier "FUN_0011d234") (argument_list "(uVar5,iVar4,param_3)" (( "(") (identifier "uVar5") (, ",") (identifier "iVar4") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "iVar1 = iVar4 + -1;" (assignment_expression "iVar1 = iVar4 + -1" (identifier "iVar1") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);" (assignment_expression "uVar3 = FUN_0011d29c(uVar2,iVar4,param_3)" (identifier "uVar3") (= "=") (call_expression "FUN_0011d29c(uVar2,iVar4,param_3)" (identifier "FUN_0011d29c") (argument_list "(uVar2,iVar4,param_3)" (( "(") (identifier "uVar2") (, ",") (identifier "iVar4") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "uVar6 = uVar6 ^ uVar3;" (assignment_expression "uVar6 = uVar6 ^ uVar3" (identifier "uVar6") (= "=") (binary_expression "uVar6 ^ uVar3" (identifier "uVar6") (^ "^") (identifier "uVar3"))) (; ";")) (expression_statement "uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);" (assignment_expression "uVar2 = FUN_0011d29c(uVar6,iVar1,param_3)" (identifier "uVar2") (= "=") (call_expression "FUN_0011d29c(uVar6,iVar1,param_3)" (identifier "FUN_0011d29c") (argument_list "(uVar6,iVar1,param_3)" (( "(") (identifier "uVar6") (, ",") (identifier "iVar1") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "iVar4 = iVar4 + -2;" (assignment_expression "iVar4 = iVar4 + -2" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -2" (identifier "iVar4") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "uVar3 = FUN_0011d234(uVar2,iVar1,param_3);" (assignment_expression "uVar3 = FUN_0011d234(uVar2,iVar1,param_3)" (identifier "uVar3") (= "=") (call_expression "FUN_0011d234(uVar2,iVar1,param_3)" (identifier "FUN_0011d234") (argument_list "(uVar2,iVar1,param_3)" (( "(") (identifier "uVar2") (, ",") (identifier "iVar1") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "uVar5 = uVar5 ^ uVar3;" (assignment_expression "uVar5 = uVar5 ^ uVar3" (identifier "uVar5") (= "=") (binary_expression "uVar5 ^ uVar3" (identifier "uVar5") (^ "^") (identifier "uVar3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != -1)" (( "(") (binary_expression "iVar4 != -1" (identifier "iVar4") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (expression_statement "*param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;" (assignment_expression "*param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" (identifier "uVar6") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" (( "(") (binary_expression "uVar6 & 0xff0000" (identifier "uVar6") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" (( "(") (binary_expression "uVar6 & 0xff00" (identifier "uVar6") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar6 << 0x18" (identifier "uVar6") (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;" (assignment_expression "param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8" (binary_expression "uVar5 >> 0x18" (identifier "uVar5") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar5 & 0xff0000) >> 8" (parenthesized_expression "(uVar5 & 0xff0000)" (( "(") (binary_expression "uVar5 & 0xff0000" (identifier "uVar5") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar5 & 0xff00) << 8" (parenthesized_expression "(uVar5 & 0xff00)" (( "(") (binary_expression "uVar5 & 0xff00" (identifier "uVar5") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar5 << 0x18" (identifier "uVar5") (<< "<<") (number_literal "0x18")))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac);" (call_expression "crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac)" (identifier "crypt_argchk") (argument_list "("ct != NULL","src/ciphers/kasumi.c",0xac)" (( "(") (string_literal ""ct != NULL"" (" """) (string_content "ct != NULL") (" """)) (, ",") (string_literal ""src/ciphers/kasumi.c"" (" """) (string_content "src/ciphers/kasumi.c") (" """)) (, ",") (number_literal "0xac") () ")"))) (; ";")) (} "}")))

/* WARNING: Switch with 1 destination removed at 0x001131a0 */

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

{
  int round_no;
  type_3 var_10;
  int var_7;
  type_4 var_5;
  type_4 var_9;
  
  if (var_1 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("pt != NULL","src/ciphers/kasumi.c",0xab);
  }
  if (var_3 != (type_1 *)0x0) {
    if (var_4 == (type_2 *)0x0) {
                    /* WARNING: Subroutine does not return */
      var_2("skey != NULL","src/ciphers/kasumi.c",0xad);
    }
    var_5 = *(type_4 *)var_3;
    var_9 = var_5 >> 0x18 | (var_5 & 0xff0000) >> 8 | (var_5 & 0xff00) << 8 | var_5 << 0x18;
    var_5 = *(type_4 *)(var_3 + 4);
    var_5 = var_5 >> 0x18 | (var_5 & 0xff0000) >> 8 | (var_5 & 0xff00) << 8 | var_5 << 0x18;
    var_7 = 7;
    do {
      var_10 = var_6(var_5,var_7,var_4);
      round_no = var_7 + -1;
      var_10 = var_8(var_10,var_7,var_4);
      var_9 = var_9 ^ var_10;
      var_10 = var_8(var_9,round_no,var_4);
      var_7 = var_7 + -2;
      var_10 = var_6(var_10,round_no,var_4);
      var_5 = var_5 ^ var_10;
    } while (var_7 != -1);
    *(type_4 *)var_1 = var_9 >> 0x18 | (var_9 & 0xff0000) >> 8 | (var_9 & 0xff00) << 8 | var_9 << 0x18;
    *(type_4 *)(var_1 + 4) =
         var_5 >> 0x18 | (var_5 & 0xff0000) >> 8 | (var_5 & 0xff00) << 8 | var_5 << 0x18;
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  var_2("ct != NULL","src/ciphers/kasumi.c",0xac);
}


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

/* WARNING: Switch with 1 destination removed at 0x001131a0 */

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

{
  int iVar1;
  undefined4 uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  
  if (param_2 == (uint *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("pt != NULL","src/ciphers/kasumi.c",0xab);
  }
  if (param_1 != (uint *)0x0) {
    if (param_3 == 0) {
                    /* WARNING: Subroutine does not return */
      crypt_argchk("skey != NULL","src/ciphers/kasumi.c",0xad);
    }
    uVar5 = *param_1;
    uVar6 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;
    uVar5 = param_1[1];
    uVar5 = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;
    iVar4 = 7;
    do {
      uVar2 = FUN_0011d234(uVar5,iVar4,param_3);
      iVar1 = iVar4 + -1;
      uVar3 = FUN_0011d29c(uVar2,iVar4,param_3);
      uVar6 = uVar6 ^ uVar3;
      uVar2 = FUN_0011d29c(uVar6,iVar1,param_3);
      iVar4 = iVar4 + -2;
      uVar3 = FUN_0011d234(uVar2,iVar1,param_3);
      uVar5 = uVar5 ^ uVar3;
    } while (iVar4 != -1);
    *param_2 = uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 | uVar6 << 0x18;
    param_2[1] = uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 | uVar5 << 0x18;
    return 0;
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("ct != NULL","src/ciphers/kasumi.c",0xac);
}

