
int xcbc_memory(int cipher,uchar *key,ulong keylen,uchar *in,ulong inlen,uchar *out,ulong *outlen)

{
  int iVar1;
  xcbc_state *xcbc;
  
  iVar1 = cipher_is_valid(cipher);
  if (iVar1 == 0) {
    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0) != (code *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x0015f26e. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      iVar1 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0))
                        (key,keylen,in,inlen,out,outlen);
      return iVar1;
    }
    xcbc = (xcbc_state *)calloc(1,0x12b0);
    if (xcbc != (xcbc_state *)0x0) {
      iVar1 = xcbc_init(xcbc,cipher,key,keylen);
      if (iVar1 == 0) {
        iVar1 = xcbc_process(xcbc,in,inlen);
        if (iVar1 == 0) {
          iVar1 = xcbc_done(xcbc,out,outlen);
        }
      }
      free(xcbc);
      return iVar1;
    }
    iVar1 = 0xd;
  }
  return iVar1;
}



ulong xcbc_memory(int param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                 undefined8 param_5,undefined8 param_6,undefined8 param_7)

{
  uint uVar1;
  ulong uVar2;
  void *__ptr;
  
  uVar2 = cipher_is_valid();
  if ((int)uVar2 == 0) {
    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x0015f26e. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))
                        (param_2,param_3,param_4,param_5,param_6,param_7);
      return uVar2;
    }
    __ptr = calloc(1,0x12b0);
    if (__ptr != (void *)0x0) {
      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);
      if (uVar1 == 0) {
        uVar1 = xcbc_process(__ptr,param_4,param_5);
        if (uVar1 == 0) {
          uVar1 = xcbc_done(__ptr,param_6,param_7);
        }
      }
      free(__ptr);
      return (ulong)uVar1;
    }
    uVar2 = 0xd;
  }
  return uVar2;
}


PUSH R15
PUSH R14
MOV R14D,EDI
PUSH R13
MOV R13,R8
PUSH R12
MOV R12,RCX
PUSH RBP
MOV RBP,RDX
PUSH RBX
MOV RBX,RSI
SUB RSP,0x18
MOV qword ptr [RSP],R9
MOV R15,qword ptr [RSP + 0x50]
CALL 0x00113da0
TEST EAX,EAX
JNZ 0x0015f275
MOVSXD RAX,R14D
LEA RDX,[RAX + RAX*0x2]
SHL RDX,0x6
ADD RDX,qword ptr [0x001dded0]
MOV RAX,qword ptr [RDX + 0xa0]
TEST RAX,RAX
JZ 0x0015f288
MOV R8,qword ptr [RSP]
ADD RSP,0x18
MOV R9,R15
MOV RCX,R13
MOV RDX,R12
MOV RSI,RBP
MOV RDI,RBX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
JMP RAX
MOV EAX,0xd
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV ESI,0x12b0
MOV EDI,0x1
CALL 0x00113d60
TEST RAX,RAX
JZ 0x0015f270
MOV RCX,RBP
MOV RDX,RBX
MOV ESI,R14D
MOV RDI,RAX
MOV qword ptr [RSP + 0x8],RAX
CALL 0x00113df0
MOV RCX,qword ptr [RSP + 0x8]
TEST EAX,EAX
JNZ 0x0015f2d2
MOV RDI,RCX
MOV RDX,R13
MOV RSI,R12
CALL 0x001132e0
MOV RCX,qword ptr [RSP + 0x8]
TEST EAX,EAX
JZ 0x0015f2f0
MOV RDI,RCX
MOV dword ptr [RSP],EAX
CALL 0x00113130
MOV EAX,dword ptr [RSP]
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RSI,qword ptr [RSP]
MOV RDI,RCX
MOV RDX,R15
MOV qword ptr [RSP],RCX
CALL 0x00114b50
MOV RCX,qword ptr [RSP]
JMP 0x0015f2d2
(translation_unit "ulong xcbc_memory(int param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined8 param_7)\n\n{\n  uint uVar1;\n  ulong uVar2;\n  void *__ptr;\n  \n  uVar2 = cipher_is_valid();\n  if ((int)uVar2 == 0) {\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x0015f26e. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }\n    __ptr = calloc(1,0x12b0);\n    if (__ptr != (void *)0x0) {\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }\n    uVar2 = 0xd;\n  }\n  return uVar2;\n}\n\n" (function_definition "ulong xcbc_memory(int param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined8 param_7)\n\n{\n  uint uVar1;\n  ulong uVar2;\n  void *__ptr;\n  \n  uVar2 = cipher_is_valid();\n  if ((int)uVar2 == 0) {\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x0015f26e. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }\n    __ptr = calloc(1,0x12b0);\n    if (__ptr != (void *)0x0) {\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }\n    uVar2 = 0xd;\n  }\n  return uVar2;\n}" type_identifier (function_declarator "xcbc_memory(int param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined8 param_7)" identifier (parameter_list "(int param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined8 param_7)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) , (parameter_declaration "undefined8 param_7" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  ulong uVar2;\n  void *__ptr;\n  \n  uVar2 = cipher_is_valid();\n  if ((int)uVar2 == 0) {\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x0015f26e. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }\n    __ptr = calloc(1,0x12b0);\n    if (__ptr != (void *)0x0) {\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }\n    uVar2 = 0xd;\n  }\n  return uVar2;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (expression_statement "uVar2 = cipher_is_valid();" (assignment_expression "uVar2 = cipher_is_valid()" identifier = (call_expression "cipher_is_valid()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((int)uVar2 == 0) {\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x0015f26e. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }\n    __ptr = calloc(1,0x12b0);\n    if (__ptr != (void *)0x0) {\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }\n    uVar2 = 0xd;\n  }" if (parenthesized_expression "((int)uVar2 == 0)" ( (binary_expression "(int)uVar2 == 0" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x0015f26e. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }\n    __ptr = calloc(1,0x12b0);\n    if (__ptr != (void *)0x0) {\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }\n    uVar2 = 0xd;\n  }" { (if_statement "if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x0015f26e. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }" if (parenthesized_expression "(*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0)" ( (binary_expression "*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0" (pointer_expression "*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" * (cast_expression "(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" ( (binary_expression "PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0" (binary_expression "PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0" identifier + (binary_expression "(long)param_1 * 0xc0" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) )))) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x0015f26e. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }" { comment comment (expression_statement "uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);" (assignment_expression "uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7)" identifier = (call_expression "(**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7)" (parenthesized_expression "(**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))" ( (pointer_expression "**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" * (pointer_expression "*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" * (cast_expression "(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" ( (binary_expression "PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0" (binary_expression "PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0" identifier + (binary_expression "(long)param_1 * 0xc0" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) ))))) )) (argument_list "(param_2,param_3,param_4,param_5,param_6,param_7)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (return_statement "return uVar2;" return identifier ;) })) (expression_statement "__ptr = calloc(1,0x12b0);" (assignment_expression "__ptr = calloc(1,0x12b0)" identifier = (call_expression "calloc(1,0x12b0)" identifier (argument_list "(1,0x12b0)" ( number_literal , number_literal )))) ;) (if_statement "if (__ptr != (void *)0x0) {\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }" if (parenthesized_expression "(__ptr != (void *)0x0)" ( (binary_expression "__ptr != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }" { (expression_statement "uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);" (assignment_expression "uVar1 = xcbc_init(__ptr,param_1,param_2,param_3)" identifier = (call_expression "xcbc_init(__ptr,param_1,param_2,param_3)" identifier (argument_list "(__ptr,param_1,param_2,param_3)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }" { (expression_statement "uVar1 = xcbc_process(__ptr,param_4,param_5);" (assignment_expression "uVar1 = xcbc_process(__ptr,param_4,param_5)" identifier = (call_expression "xcbc_process(__ptr,param_4,param_5)" identifier (argument_list "(__ptr,param_4,param_5)" ( identifier , identifier , identifier )))) ;) (if_statement "if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }" { (expression_statement "uVar1 = xcbc_done(__ptr,param_6,param_7);" (assignment_expression "uVar1 = xcbc_done(__ptr,param_6,param_7)" identifier = (call_expression "xcbc_done(__ptr,param_6,param_7)" identifier (argument_list "(__ptr,param_6,param_7)" ( identifier , identifier , identifier )))) ;) })) })) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return (ulong)uVar1;" return (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) ;) })) (expression_statement "uVar2 = 0xd;" (assignment_expression "uVar2 = 0xd" identifier = number_literal) ;) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "int xcbc_memory(int cipher,uchar *key,ulong keylen,uchar *in,ulong inlen,uchar *out,ulong *outlen)\n\n{\n  int iVar1;\n  xcbc_state *xcbc;\n  \n  iVar1 = cipher_is_valid(cipher);\n  if (iVar1 == 0) {\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0) != (code *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x0015f26e. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0))\n                        (key,keylen,in,inlen,out,outlen);\n      return iVar1;\n    }\n    xcbc = (xcbc_state *)calloc(1,0x12b0);\n    if (xcbc != (xcbc_state *)0x0) {\n      iVar1 = xcbc_init(xcbc,cipher,key,keylen);\n      if (iVar1 == 0) {\n        iVar1 = xcbc_process(xcbc,in,inlen);\n        if (iVar1 == 0) {\n          iVar1 = xcbc_done(xcbc,out,outlen);\n        }\n      }\n      free(xcbc);\n      return iVar1;\n    }\n    iVar1 = 0xd;\n  }\n  return iVar1;\n}\n\n" (function_definition "int xcbc_memory(int cipher,uchar *key,ulong keylen,uchar *in,ulong inlen,uchar *out,ulong *outlen)\n\n{\n  int iVar1;\n  xcbc_state *xcbc;\n  \n  iVar1 = cipher_is_valid(cipher);\n  if (iVar1 == 0) {\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0) != (code *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x0015f26e. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0))\n                        (key,keylen,in,inlen,out,outlen);\n      return iVar1;\n    }\n    xcbc = (xcbc_state *)calloc(1,0x12b0);\n    if (xcbc != (xcbc_state *)0x0) {\n      iVar1 = xcbc_init(xcbc,cipher,key,keylen);\n      if (iVar1 == 0) {\n        iVar1 = xcbc_process(xcbc,in,inlen);\n        if (iVar1 == 0) {\n          iVar1 = xcbc_done(xcbc,out,outlen);\n        }\n      }\n      free(xcbc);\n      return iVar1;\n    }\n    iVar1 = 0xd;\n  }\n  return iVar1;\n}" primitive_type (function_declarator "xcbc_memory(int cipher,uchar *key,ulong keylen,uchar *in,ulong inlen,uchar *out,ulong *outlen)" identifier (parameter_list "(int cipher,uchar *key,ulong keylen,uchar *in,ulong inlen,uchar *out,ulong *outlen)" ( (parameter_declaration "int cipher" primitive_type identifier) , (parameter_declaration "uchar *key" type_identifier (pointer_declarator "*key" * identifier)) , (parameter_declaration "ulong keylen" type_identifier identifier) , (parameter_declaration "uchar *in" type_identifier (pointer_declarator "*in" * identifier)) , (parameter_declaration "ulong inlen" type_identifier identifier) , (parameter_declaration "uchar *out" type_identifier (pointer_declarator "*out" * identifier)) , (parameter_declaration "ulong *outlen" type_identifier (pointer_declarator "*outlen" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  xcbc_state *xcbc;\n  \n  iVar1 = cipher_is_valid(cipher);\n  if (iVar1 == 0) {\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0) != (code *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x0015f26e. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0))\n                        (key,keylen,in,inlen,out,outlen);\n      return iVar1;\n    }\n    xcbc = (xcbc_state *)calloc(1,0x12b0);\n    if (xcbc != (xcbc_state *)0x0) {\n      iVar1 = xcbc_init(xcbc,cipher,key,keylen);\n      if (iVar1 == 0) {\n        iVar1 = xcbc_process(xcbc,in,inlen);\n        if (iVar1 == 0) {\n          iVar1 = xcbc_done(xcbc,out,outlen);\n        }\n      }\n      free(xcbc);\n      return iVar1;\n    }\n    iVar1 = 0xd;\n  }\n  return iVar1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "xcbc_state *xcbc;" type_identifier (pointer_declarator "*xcbc" * identifier) ;) (expression_statement "iVar1 = cipher_is_valid(cipher);" (assignment_expression "iVar1 = cipher_is_valid(cipher)" identifier = (call_expression "cipher_is_valid(cipher)" identifier (argument_list "(cipher)" ( identifier )))) ;) (if_statement "if (iVar1 == 0) {\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0) != (code *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x0015f26e. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0))\n                        (key,keylen,in,inlen,out,outlen);\n      return iVar1;\n    }\n    xcbc = (xcbc_state *)calloc(1,0x12b0);\n    if (xcbc != (xcbc_state *)0x0) {\n      iVar1 = xcbc_init(xcbc,cipher,key,keylen);\n      if (iVar1 == 0) {\n        iVar1 = xcbc_process(xcbc,in,inlen);\n        if (iVar1 == 0) {\n          iVar1 = xcbc_done(xcbc,out,outlen);\n        }\n      }\n      free(xcbc);\n      return iVar1;\n    }\n    iVar1 = 0xd;\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0) != (code *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x0015f26e. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0))\n                        (key,keylen,in,inlen,out,outlen);\n      return iVar1;\n    }\n    xcbc = (xcbc_state *)calloc(1,0x12b0);\n    if (xcbc != (xcbc_state *)0x0) {\n      iVar1 = xcbc_init(xcbc,cipher,key,keylen);\n      if (iVar1 == 0) {\n        iVar1 = xcbc_process(xcbc,in,inlen);\n        if (iVar1 == 0) {\n          iVar1 = xcbc_done(xcbc,out,outlen);\n        }\n      }\n      free(xcbc);\n      return iVar1;\n    }\n    iVar1 = 0xd;\n  }" { (if_statement "if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0) != (code *)0x0) {\n                    /* WARNING: Could not recover jumptable at 0x0015f26e. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0))\n                        (key,keylen,in,inlen,out,outlen);\n      return iVar1;\n    }" if (parenthesized_expression "(*(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0) != (code *)0x0)" ( (binary_expression "*(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0) != (code *)0x0" (pointer_expression "*(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0)" * (cast_expression "(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0)" ( (binary_expression "PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0" (binary_expression "PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0" identifier + (binary_expression "(long)cipher * 0xc0" (cast_expression "(long)cipher" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) )))) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x0015f26e. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar1 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0))\n                        (key,keylen,in,inlen,out,outlen);\n      return iVar1;\n    }" { comment comment (expression_statement "iVar1 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0))\n                        (key,keylen,in,inlen,out,outlen);" (assignment_expression "iVar1 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0))\n                        (key,keylen,in,inlen,out,outlen)" identifier = (call_expression "(**(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0))\n                        (key,keylen,in,inlen,out,outlen)" (parenthesized_expression "(**(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0))" ( (pointer_expression "**(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0)" * (pointer_expression "*(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0)" * (cast_expression "(code **)(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0)" ( (binary_expression "PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0 + 0xa0" (binary_expression "PTR_cipher_descriptor_001dded0 + (long)cipher * 0xc0" identifier + (binary_expression "(long)cipher * 0xc0" (cast_expression "(long)cipher" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) ))))) )) (argument_list "(key,keylen,in,inlen,out,outlen)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (return_statement "return iVar1;" return identifier ;) })) (expression_statement "xcbc = (xcbc_state *)calloc(1,0x12b0);" (assignment_expression "xcbc = (xcbc_state *)calloc(1,0x12b0)" identifier = (cast_expression "(xcbc_state *)calloc(1,0x12b0)" ( (type_descriptor "xcbc_state *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "calloc(1,0x12b0)" identifier (argument_list "(1,0x12b0)" ( number_literal , number_literal ))))) ;) (if_statement "if (xcbc != (xcbc_state *)0x0) {\n      iVar1 = xcbc_init(xcbc,cipher,key,keylen);\n      if (iVar1 == 0) {\n        iVar1 = xcbc_process(xcbc,in,inlen);\n        if (iVar1 == 0) {\n          iVar1 = xcbc_done(xcbc,out,outlen);\n        }\n      }\n      free(xcbc);\n      return iVar1;\n    }" if (parenthesized_expression "(xcbc != (xcbc_state *)0x0)" ( (binary_expression "xcbc != (xcbc_state *)0x0" identifier != (cast_expression "(xcbc_state *)0x0" ( (type_descriptor "xcbc_state *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar1 = xcbc_init(xcbc,cipher,key,keylen);\n      if (iVar1 == 0) {\n        iVar1 = xcbc_process(xcbc,in,inlen);\n        if (iVar1 == 0) {\n          iVar1 = xcbc_done(xcbc,out,outlen);\n        }\n      }\n      free(xcbc);\n      return iVar1;\n    }" { (expression_statement "iVar1 = xcbc_init(xcbc,cipher,key,keylen);" (assignment_expression "iVar1 = xcbc_init(xcbc,cipher,key,keylen)" identifier = (call_expression "xcbc_init(xcbc,cipher,key,keylen)" identifier (argument_list "(xcbc,cipher,key,keylen)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n        iVar1 = xcbc_process(xcbc,in,inlen);\n        if (iVar1 == 0) {\n          iVar1 = xcbc_done(xcbc,out,outlen);\n        }\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar1 = xcbc_process(xcbc,in,inlen);\n        if (iVar1 == 0) {\n          iVar1 = xcbc_done(xcbc,out,outlen);\n        }\n      }" { (expression_statement "iVar1 = xcbc_process(xcbc,in,inlen);" (assignment_expression "iVar1 = xcbc_process(xcbc,in,inlen)" identifier = (call_expression "xcbc_process(xcbc,in,inlen)" identifier (argument_list "(xcbc,in,inlen)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n          iVar1 = xcbc_done(xcbc,out,outlen);\n        }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar1 = xcbc_done(xcbc,out,outlen);\n        }" { (expression_statement "iVar1 = xcbc_done(xcbc,out,outlen);" (assignment_expression "iVar1 = xcbc_done(xcbc,out,outlen)" identifier = (call_expression "xcbc_done(xcbc,out,outlen)" identifier (argument_list "(xcbc,out,outlen)" ( identifier , identifier , identifier )))) ;) })) })) (expression_statement "free(xcbc);" (call_expression "free(xcbc)" identifier (argument_list "(xcbc)" ( identifier ))) ;) (return_statement "return iVar1;" return identifier ;) })) (expression_statement "iVar1 = 0xd;" (assignment_expression "iVar1 = 0xd" identifier = number_literal) ;) })) (return_statement "return iVar1;" return identifier ;) })))
(translation_unit "ulong xcbc_memory(int param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined8 param_7)\n\n{\n  uint uVar1;\n  ulong uVar2;\n  void *__ptr;\n  \n  uVar2 = cipher_is_valid();\n  if ((int)uVar2 == 0) {\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {\n                    \n                    \n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }\n    __ptr = calloc(1,0x12b0);\n    if (__ptr != (void *)0x0) {\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }\n    uVar2 = 0xd;\n  }\n  return uVar2;\n}\n\n" (function_definition "ulong xcbc_memory(int param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined8 param_7)\n\n{\n  uint uVar1;\n  ulong uVar2;\n  void *__ptr;\n  \n  uVar2 = cipher_is_valid();\n  if ((int)uVar2 == 0) {\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {\n                    \n                    \n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }\n    __ptr = calloc(1,0x12b0);\n    if (__ptr != (void *)0x0) {\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }\n    uVar2 = 0xd;\n  }\n  return uVar2;\n}" type_identifier (function_declarator "xcbc_memory(int param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined8 param_7)" identifier (parameter_list "(int param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined8 param_7)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) , (parameter_declaration "undefined8 param_7" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  ulong uVar2;\n  void *__ptr;\n  \n  uVar2 = cipher_is_valid();\n  if ((int)uVar2 == 0) {\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {\n                    \n                    \n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }\n    __ptr = calloc(1,0x12b0);\n    if (__ptr != (void *)0x0) {\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }\n    uVar2 = 0xd;\n  }\n  return uVar2;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (expression_statement "uVar2 = cipher_is_valid();" (assignment_expression "uVar2 = cipher_is_valid()" identifier = (call_expression "cipher_is_valid()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((int)uVar2 == 0) {\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {\n                    \n                    \n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }\n    __ptr = calloc(1,0x12b0);\n    if (__ptr != (void *)0x0) {\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }\n    uVar2 = 0xd;\n  }" if (parenthesized_expression "((int)uVar2 == 0)" ( (binary_expression "(int)uVar2 == 0" (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {\n                    \n                    \n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }\n    __ptr = calloc(1,0x12b0);\n    if (__ptr != (void *)0x0) {\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }\n    uVar2 = 0xd;\n  }" { (if_statement "if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {\n                    \n                    \n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }" if (parenthesized_expression "(*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0)" ( (binary_expression "*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0" (pointer_expression "*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" * (cast_expression "(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" ( (binary_expression "PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0" (binary_expression "PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0" identifier + (binary_expression "(long)param_1 * 0xc0" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) )))) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n                    \n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }" { (expression_statement "uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);" (assignment_expression "uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7)" identifier = (call_expression "(**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7)" (parenthesized_expression "(**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))" ( (pointer_expression "**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" * (pointer_expression "*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" * (cast_expression "(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" ( (binary_expression "PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0" (binary_expression "PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0" identifier + (binary_expression "(long)param_1 * 0xc0" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) ))))) )) (argument_list "(param_2,param_3,param_4,param_5,param_6,param_7)" ( identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (return_statement "return uVar2;" return identifier ;) })) (expression_statement "__ptr = calloc(1,0x12b0);" (assignment_expression "__ptr = calloc(1,0x12b0)" identifier = (call_expression "calloc(1,0x12b0)" identifier (argument_list "(1,0x12b0)" ( number_literal , number_literal )))) ;) (if_statement "if (__ptr != (void *)0x0) {\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }" if (parenthesized_expression "(__ptr != (void *)0x0)" ( (binary_expression "__ptr != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }" { (expression_statement "uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);" (assignment_expression "uVar1 = xcbc_init(__ptr,param_1,param_2,param_3)" identifier = (call_expression "xcbc_init(__ptr,param_1,param_2,param_3)" identifier (argument_list "(__ptr,param_1,param_2,param_3)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }" { (expression_statement "uVar1 = xcbc_process(__ptr,param_4,param_5);" (assignment_expression "uVar1 = xcbc_process(__ptr,param_4,param_5)" identifier = (call_expression "xcbc_process(__ptr,param_4,param_5)" identifier (argument_list "(__ptr,param_4,param_5)" ( identifier , identifier , identifier )))) ;) (if_statement "if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }" { (expression_statement "uVar1 = xcbc_done(__ptr,param_6,param_7);" (assignment_expression "uVar1 = xcbc_done(__ptr,param_6,param_7)" identifier = (call_expression "xcbc_done(__ptr,param_6,param_7)" identifier (argument_list "(__ptr,param_6,param_7)" ( identifier , identifier , identifier )))) ;) })) })) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return (ulong)uVar1;" return (cast_expression "(ulong)uVar1" ( (type_descriptor "ulong" type_identifier) ) identifier) ;) })) (expression_statement "uVar2 = 0xd;" (assignment_expression "uVar2 = 0xd" identifier = number_literal) ;) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) })) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return (cast_expression ( (type_descriptor TYPE) ) IDENT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) })) (return_statement return IDENT ;) })))
(function_definition "ulong xcbc_memory(int param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined8 param_7)\n\n{\n  uint uVar1;\n  ulong uVar2;\n  void *__ptr;\n  \n  uVar2 = cipher_is_valid();\n  if ((int)uVar2 == 0) {\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {\n                    \n                    \n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }\n    __ptr = calloc(1,0x12b0);\n    if (__ptr != (void *)0x0) {\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }\n    uVar2 = 0xd;\n  }\n  return uVar2;\n}" (type_identifier "ulong") (function_declarator "xcbc_memory(int param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined8 param_7)" (identifier "xcbc_memory") (parameter_list "(int param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined8 param_7)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) (, ",") (parameter_declaration "undefined8 param_6" (type_identifier "undefined8") (identifier "param_6")) (, ",") (parameter_declaration "undefined8 param_7" (type_identifier "undefined8") (identifier "param_7")) () ")"))) (compound_statement "{\n  uint uVar1;\n  ulong uVar2;\n  void *__ptr;\n  \n  uVar2 = cipher_is_valid();\n  if ((int)uVar2 == 0) {\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {\n                    \n                    \n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }\n    __ptr = calloc(1,0x12b0);\n    if (__ptr != (void *)0x0) {\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }\n    uVar2 = 0xd;\n  }\n  return uVar2;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "ulong uVar2;" (type_identifier "ulong") (identifier "uVar2") (; ";")) (declaration "void *__ptr;" (primitive_type "void") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (expression_statement "uVar2 = cipher_is_valid();" (assignment_expression "uVar2 = cipher_is_valid()" (identifier "uVar2") (= "=") (call_expression "cipher_is_valid()" (identifier "cipher_is_valid") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((int)uVar2 == 0) {\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {\n                    \n                    \n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }\n    __ptr = calloc(1,0x12b0);\n    if (__ptr != (void *)0x0) {\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }\n    uVar2 = 0xd;\n  }" (if "if") (parenthesized_expression "((int)uVar2 == 0)" (( "(") (binary_expression "(int)uVar2 == 0" (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {\n                    \n                    \n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }\n    __ptr = calloc(1,0x12b0);\n    if (__ptr != (void *)0x0) {\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }\n    uVar2 = 0xd;\n  }" ({ "{") (if_statement "if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {\n                    \n                    \n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }" (if "if") (parenthesized_expression "(*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0)" (( "(") (binary_expression "*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0" (pointer_expression "*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" (* "*") (cast_expression "(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" (( "(") (binary_expression "PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0" (binary_expression "PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0" (identifier "PTR_cipher_descriptor_001dded0") (+ "+") (binary_expression "(long)param_1 * 0xc0" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (* "*") (number_literal "0xc0"))) (+ "+") (number_literal "0xa0")) () ")")))) (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n                    \n      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);\n      return uVar2;\n    }" ({ "{") (expression_statement "uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7);" (assignment_expression "uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7)" (identifier "uVar2") (= "=") (call_expression "(**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))\n                        (param_2,param_3,param_4,param_5,param_6,param_7)" (parenthesized_expression "(**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))" (( "(") (pointer_expression "**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" (* "*") (pointer_expression "*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" (* "*") (cast_expression "(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0)" (( "(") (binary_expression "PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0" (binary_expression "PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0" (identifier "PTR_cipher_descriptor_001dded0") (+ "+") (binary_expression "(long)param_1 * 0xc0" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (* "*") (number_literal "0xc0"))) (+ "+") (number_literal "0xa0")) () ")"))))) () ")")) (argument_list "(param_2,param_3,param_4,param_5,param_6,param_7)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (identifier "param_7") () ")")))) (; ";")) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (expression_statement "__ptr = calloc(1,0x12b0);" (assignment_expression "__ptr = calloc(1,0x12b0)" (identifier "__ptr") (= "=") (call_expression "calloc(1,0x12b0)" (identifier "calloc") (argument_list "(1,0x12b0)" (( "(") (number_literal "1") (, ",") (number_literal "0x12b0") () ")")))) (; ";")) (if_statement "if (__ptr != (void *)0x0) {\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }" (if "if") (parenthesized_expression "(__ptr != (void *)0x0)" (( "(") (binary_expression "__ptr != (void *)0x0" (identifier "__ptr") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);\n      if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }\n      free(__ptr);\n      return (ulong)uVar1;\n    }" ({ "{") (expression_statement "uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);" (assignment_expression "uVar1 = xcbc_init(__ptr,param_1,param_2,param_3)" (identifier "uVar1") (= "=") (call_expression "xcbc_init(__ptr,param_1,param_2,param_3)" (identifier "xcbc_init") (argument_list "(__ptr,param_1,param_2,param_3)" (( "(") (identifier "__ptr") (, ",") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (uVar1 == 0) {\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }" (if "if") (parenthesized_expression "(uVar1 == 0)" (( "(") (binary_expression "uVar1 == 0" (identifier "uVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar1 = xcbc_process(__ptr,param_4,param_5);\n        if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }\n      }" ({ "{") (expression_statement "uVar1 = xcbc_process(__ptr,param_4,param_5);" (assignment_expression "uVar1 = xcbc_process(__ptr,param_4,param_5)" (identifier "uVar1") (= "=") (call_expression "xcbc_process(__ptr,param_4,param_5)" (identifier "xcbc_process") (argument_list "(__ptr,param_4,param_5)" (( "(") (identifier "__ptr") (, ",") (identifier "param_4") (, ",") (identifier "param_5") () ")")))) (; ";")) (if_statement "if (uVar1 == 0) {\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }" (if "if") (parenthesized_expression "(uVar1 == 0)" (( "(") (binary_expression "uVar1 == 0" (identifier "uVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar1 = xcbc_done(__ptr,param_6,param_7);\n        }" ({ "{") (expression_statement "uVar1 = xcbc_done(__ptr,param_6,param_7);" (assignment_expression "uVar1 = xcbc_done(__ptr,param_6,param_7)" (identifier "uVar1") (= "=") (call_expression "xcbc_done(__ptr,param_6,param_7)" (identifier "xcbc_done") (argument_list "(__ptr,param_6,param_7)" (( "(") (identifier "__ptr") (, ",") (identifier "param_6") (, ",") (identifier "param_7") () ")")))) (; ";")) (} "}"))) (} "}"))) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (return_statement "return (ulong)uVar1;" (return "return") (cast_expression "(ulong)uVar1" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar1")) (; ";")) (} "}"))) (expression_statement "uVar2 = 0xd;" (assignment_expression "uVar2 = 0xd" (identifier "uVar2") (= "=") (number_literal "0xd")) (; ";")) (} "}"))) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}")))

int function_1(int cipher,type_1 *key,type_2 keylen,type_1 *in,type_2 inlen,type_1 *out,type_2 *outlen)

{
  int var_2;
  type_3 *var_5;
  
  var_2 = var_1(cipher);
  if (var_2 == 0) {
    if (*(type_4 **)(var_3 + (long)cipher * 0xc0 + 0xa0) != (type_4 *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x0015f26e. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      var_2 = (**(type_4 **)(var_3 + (long)cipher * 0xc0 + 0xa0))
                        (key,keylen,in,inlen,out,outlen);
      return var_2;
    }
    var_5 = (type_3 *)var_4(1,0x12b0);
    if (var_5 != (type_3 *)0x0) {
      var_2 = var_6(var_5,cipher,key,keylen);
      if (var_2 == 0) {
        var_2 = var_7(var_5,in,inlen);
        if (var_2 == 0) {
          var_2 = var_8(var_5,out,outlen);
        }
      }
      var_9(var_5);
      return var_2;
    }
    var_2 = 0xd;
  }
  return var_2;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (identifier))))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (return_statement (identifier)))))

ulong MASKED(int param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                 undefined8 param_5,undefined8 param_6,undefined8 param_7)

{
  uint uVar1;
  ulong uVar2;
  void *__ptr;
  
  uVar2 = cipher_is_valid();
  if ((int)uVar2 == 0) {
    if (*(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0) != (code *)0x0) {
                    /* WARNING: Could not recover jumptable at 0x0015f26e. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      uVar2 = (**(code **)(PTR_cipher_descriptor_001dded0 + (long)param_1 * 0xc0 + 0xa0))
                        (param_2,param_3,param_4,param_5,param_6,param_7);
      return uVar2;
    }
    __ptr = calloc(1,0x12b0);
    if (__ptr != (void *)0x0) {
      uVar1 = xcbc_init(__ptr,param_1,param_2,param_3);
      if (uVar1 == 0) {
        uVar1 = xcbc_process(__ptr,param_4,param_5);
        if (uVar1 == 0) {
          uVar1 = xcbc_done(__ptr,param_6,param_7);
        }
      }
      free(__ptr);
      return (ulong)uVar1;
    }
    uVar2 = 0xd;
  }
  return uVar2;
}

