
int unregister_cipher(ltc_cipher_descriptor *cipher)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  undefined *__s1;
  int iVar4;
  
  puVar1 = PTR_cipher_descriptor_001dded0;
  if (cipher == (ltc_cipher_descriptor *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);
  }
  iVar3 = 0;
  __s1 = PTR_cipher_descriptor_001dded0;
  while( true ) {
    iVar2 = memcmp(__s1,cipher,0xc0);
    iVar4 = iVar3;
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 1;
    iVar2 = memcmp(__s1 + 0xc0,cipher,0xc0);
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 2;
    iVar2 = memcmp(__s1 + 0x180,cipher,0xc0);
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 3;
    iVar2 = memcmp(__s1 + 0x240,cipher,0xc0);
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 4;
    iVar2 = memcmp(__s1 + 0x300,cipher,0xc0);
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 5;
    iVar2 = memcmp(__s1 + 0x3c0,cipher,0xc0);
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 6;
    iVar2 = memcmp(__s1 + 0x480,cipher,0xc0);
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 7;
    iVar2 = memcmp(__s1 + 0x540,cipher,0xc0);
    if (iVar2 == 0) break;
    iVar3 = iVar3 + 8;
    __s1 = __s1 + 0x600;
    if (iVar3 == 0x20) {
      return 1;
    }
  }
  *(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0;
  *(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff;
  return iVar2;
}



int unregister_cipher(void *param_1)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  undefined *__s1;
  int iVar4;
  
  puVar1 = PTR_cipher_descriptor_001dded0;
  if (param_1 == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);
  }
  iVar3 = 0;
  __s1 = PTR_cipher_descriptor_001dded0;
  while( true ) {
    iVar2 = memcmp(__s1,param_1,0xc0);
    iVar4 = iVar3;
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 1;
    iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 2;
    iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 3;
    iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 4;
    iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 5;
    iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 6;
    iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 7;
    iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);
    if (iVar2 == 0) break;
    iVar3 = iVar3 + 8;
    __s1 = __s1 + 0x600;
    if (iVar3 == 0x20) {
      return 1;
    }
  }
  *(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0;
  *(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff;
  return iVar2;
}


PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
TEST RDI,RDI
JZ 0x00166162
MOV R14,qword ptr [0x001dded0]
MOV R12,RDI
XOR EBX,EBX
MOV RBP,R14
MOV EDX,0xc0
MOV RSI,R12
MOV RDI,RBP
CALL 0x00113c70
TEST EAX,EAX
JZ 0x00166140
LEA R13D,[RBX + 0x1]
LEA RDI,[RBP + 0xc0]
MOV EDX,0xc0
MOV RSI,R12
MOV EBX,R13D
CALL 0x00113c70
TEST EAX,EAX
JZ 0x00166140
LEA RDI,[RBP + 0x180]
MOV EDX,0xc0
MOV RSI,R12
ADD EBX,0x1
CALL 0x00113c70
TEST EAX,EAX
JZ 0x00166140
LEA RDI,[RBP + 0x240]
MOV EDX,0xc0
LEA EBX,[R13 + 0x2]
MOV RSI,R12
CALL 0x00113c70
TEST EAX,EAX
JZ 0x00166140
LEA RDI,[RBP + 0x300]
MOV EDX,0xc0
LEA EBX,[R13 + 0x3]
MOV RSI,R12
CALL 0x00113c70
TEST EAX,EAX
JZ 0x00166140
LEA RDI,[RBP + 0x3c0]
MOV EDX,0xc0
LEA EBX,[R13 + 0x4]
MOV RSI,R12
CALL 0x00113c70
TEST EAX,EAX
JZ 0x00166140
LEA RDI,[RBP + 0x480]
MOV EDX,0xc0
LEA EBX,[R13 + 0x5]
MOV RSI,R12
CALL 0x00113c70
TEST EAX,EAX
JZ 0x00166140
LEA RDI,[RBP + 0x540]
MOV EDX,0xc0
LEA EBX,[R13 + 0x6]
MOV RSI,R12
CALL 0x00113c70
TEST EAX,EAX
JZ 0x00166140
LEA EBX,[R13 + 0x7]
ADD RBP,0x600
CMP EBX,0x20
JNZ 0x00166030
POP RBX
MOV EAX,0x1
POP RBP
POP R12
POP R13
POP R14
RET
MOVSXD RDX,EBX
LEA RCX,[RDX + RDX*0x2]
SHL RCX,0x6
ADD RCX,R14
MOV qword ptr [RCX],0x0
MOV byte ptr [RCX + 0x8],0xff
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
MOV EDX,0x19
LEA RSI,[0x1bff20]
LEA RDI,[0x1bfaaf]
CALL 0x00114270
(translation_unit "int unregister_cipher(void *param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined *__s1;\n  int iVar4;\n  \n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (param_1 == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }\n  iVar3 = 0;\n  __s1 = PTR_cipher_descriptor_001dded0;\n  while( true ) {\n    iVar2 = memcmp(__s1,param_1,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }\n  *(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0;\n  *(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff;\n  return iVar2;\n}\n\n" (function_definition "int unregister_cipher(void *param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined *__s1;\n  int iVar4;\n  \n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (param_1 == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }\n  iVar3 = 0;\n  __s1 = PTR_cipher_descriptor_001dded0;\n  while( true ) {\n    iVar2 = memcmp(__s1,param_1,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }\n  *(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0;\n  *(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff;\n  return iVar2;\n}" primitive_type (function_declarator "unregister_cipher(void *param_1)" identifier (parameter_list "(void *param_1)" ( (parameter_declaration "void *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined *__s1;\n  int iVar4;\n  \n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (param_1 == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }\n  iVar3 = 0;\n  __s1 = PTR_cipher_descriptor_001dded0;\n  while( true ) {\n    iVar2 = memcmp(__s1,param_1,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }\n  *(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0;\n  *(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff;\n  return iVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined *__s1;" type_identifier (pointer_declarator "*__s1" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (expression_statement "puVar1 = PTR_cipher_descriptor_001dded0;" (assignment_expression "puVar1 = PTR_cipher_descriptor_001dded0" identifier = identifier) ;) (if_statement "if (param_1 == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }" if (parenthesized_expression "(param_1 == (void *)0x0)" ( (binary_expression "param_1 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }" { comment (expression_statement "crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);" (call_expression "crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19)" identifier (argument_list "("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19)" ( (string_literal ""cipher != NULL"" " string_content ") , (string_literal ""src/misc/crypt/crypt_unregister_cipher.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "__s1 = PTR_cipher_descriptor_001dded0;" (assignment_expression "__s1 = PTR_cipher_descriptor_001dded0" identifier = identifier) ;) (while_statement "while( true ) {\n    iVar2 = memcmp(__s1,param_1,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar2 = memcmp(__s1,param_1,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }" { (expression_statement "iVar2 = memcmp(__s1,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1,param_1,0xc0)" identifier = (call_expression "memcmp(__s1,param_1,0xc0)" identifier (argument_list "(__s1,param_1,0xc0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar4 = iVar3;" (assignment_expression "iVar4 = iVar3" identifier = identifier) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 1;" (assignment_expression "iVar4 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0)" identifier = (call_expression "memcmp(__s1 + 0xc0,param_1,0xc0)" identifier (argument_list "(__s1 + 0xc0,param_1,0xc0)" ( (binary_expression "__s1 + 0xc0" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 2;" (assignment_expression "iVar4 = iVar3 + 2" identifier = (binary_expression "iVar3 + 2" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x180,param_1,0xc0)" identifier = (call_expression "memcmp(__s1 + 0x180,param_1,0xc0)" identifier (argument_list "(__s1 + 0x180,param_1,0xc0)" ( (binary_expression "__s1 + 0x180" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 3;" (assignment_expression "iVar4 = iVar3 + 3" identifier = (binary_expression "iVar3 + 3" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x240,param_1,0xc0)" identifier = (call_expression "memcmp(__s1 + 0x240,param_1,0xc0)" identifier (argument_list "(__s1 + 0x240,param_1,0xc0)" ( (binary_expression "__s1 + 0x240" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 4;" (assignment_expression "iVar4 = iVar3 + 4" identifier = (binary_expression "iVar3 + 4" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x300,param_1,0xc0)" identifier = (call_expression "memcmp(__s1 + 0x300,param_1,0xc0)" identifier (argument_list "(__s1 + 0x300,param_1,0xc0)" ( (binary_expression "__s1 + 0x300" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 5;" (assignment_expression "iVar4 = iVar3 + 5" identifier = (binary_expression "iVar3 + 5" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0)" identifier = (call_expression "memcmp(__s1 + 0x3c0,param_1,0xc0)" identifier (argument_list "(__s1 + 0x3c0,param_1,0xc0)" ( (binary_expression "__s1 + 0x3c0" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 6;" (assignment_expression "iVar4 = iVar3 + 6" identifier = (binary_expression "iVar3 + 6" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x480,param_1,0xc0)" identifier = (call_expression "memcmp(__s1 + 0x480,param_1,0xc0)" identifier (argument_list "(__s1 + 0x480,param_1,0xc0)" ( (binary_expression "__s1 + 0x480" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 7;" (assignment_expression "iVar4 = iVar3 + 7" identifier = (binary_expression "iVar3 + 7" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x540,param_1,0xc0)" identifier = (call_expression "memcmp(__s1 + 0x540,param_1,0xc0)" identifier (argument_list "(__s1 + 0x540,param_1,0xc0)" ( (binary_expression "__s1 + 0x540" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar3 + 8;" (assignment_expression "iVar3 = iVar3 + 8" identifier = (binary_expression "iVar3 + 8" identifier + number_literal)) ;) (expression_statement "__s1 = __s1 + 0x600;" (assignment_expression "__s1 = __s1 + 0x600" identifier = (binary_expression "__s1 + 0x600" identifier + number_literal)) ;) (if_statement "if (iVar3 == 0x20) {\n      return 1;\n    }" if (parenthesized_expression "(iVar3 == 0x20)" ( (binary_expression "iVar3 == 0x20" identifier == number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) })) (expression_statement "*(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0;" (assignment_expression "*(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0" (pointer_expression "*(undefined8 *)(puVar1 + (long)iVar4 * 0xc0)" * (cast_expression "(undefined8 *)(puVar1 + (long)iVar4 * 0xc0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + (long)iVar4 * 0xc0)" ( (binary_expression "puVar1 + (long)iVar4 * 0xc0" identifier + (binary_expression "(long)iVar4 * 0xc0" (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff;" (assignment_expression "*(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff" (pointer_expression "*(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8)" * (cast_expression "(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)(puVar1 + (long)iVar4 * 0xc0) + 8)" ( (binary_expression "(long)(puVar1 + (long)iVar4 * 0xc0) + 8" (cast_expression "(long)(puVar1 + (long)iVar4 * 0xc0)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(puVar1 + (long)iVar4 * 0xc0)" ( (binary_expression "puVar1 + (long)iVar4 * 0xc0" identifier + (binary_expression "(long)iVar4 * 0xc0" (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) ))) + number_literal) )))) = number_literal) ;) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "int unregister_cipher(ltc_cipher_descriptor *cipher)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined *__s1;\n  int iVar4;\n  \n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (cipher == (ltc_cipher_descriptor *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }\n  iVar3 = 0;\n  __s1 = PTR_cipher_descriptor_001dded0;\n  while( true ) {\n    iVar2 = memcmp(__s1,cipher,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }\n  *(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0;\n  *(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff;\n  return iVar2;\n}\n\n" (function_definition "int unregister_cipher(ltc_cipher_descriptor *cipher)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined *__s1;\n  int iVar4;\n  \n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (cipher == (ltc_cipher_descriptor *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }\n  iVar3 = 0;\n  __s1 = PTR_cipher_descriptor_001dded0;\n  while( true ) {\n    iVar2 = memcmp(__s1,cipher,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }\n  *(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0;\n  *(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff;\n  return iVar2;\n}" primitive_type (function_declarator "unregister_cipher(ltc_cipher_descriptor *cipher)" identifier (parameter_list "(ltc_cipher_descriptor *cipher)" ( (parameter_declaration "ltc_cipher_descriptor *cipher" type_identifier (pointer_declarator "*cipher" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined *__s1;\n  int iVar4;\n  \n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (cipher == (ltc_cipher_descriptor *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }\n  iVar3 = 0;\n  __s1 = PTR_cipher_descriptor_001dded0;\n  while( true ) {\n    iVar2 = memcmp(__s1,cipher,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }\n  *(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0;\n  *(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff;\n  return iVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined *__s1;" type_identifier (pointer_declarator "*__s1" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (expression_statement "puVar1 = PTR_cipher_descriptor_001dded0;" (assignment_expression "puVar1 = PTR_cipher_descriptor_001dded0" identifier = identifier) ;) (if_statement "if (cipher == (ltc_cipher_descriptor *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }" if (parenthesized_expression "(cipher == (ltc_cipher_descriptor *)0x0)" ( (binary_expression "cipher == (ltc_cipher_descriptor *)0x0" identifier == (cast_expression "(ltc_cipher_descriptor *)0x0" ( (type_descriptor "ltc_cipher_descriptor *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }" { comment (expression_statement "crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);" (call_expression "crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19)" identifier (argument_list "("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19)" ( (string_literal ""cipher != NULL"" " string_content ") , (string_literal ""src/misc/crypt/crypt_unregister_cipher.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "__s1 = PTR_cipher_descriptor_001dded0;" (assignment_expression "__s1 = PTR_cipher_descriptor_001dded0" identifier = identifier) ;) (while_statement "while( true ) {\n    iVar2 = memcmp(__s1,cipher,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar2 = memcmp(__s1,cipher,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,cipher,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }" { (expression_statement "iVar2 = memcmp(__s1,cipher,0xc0);" (assignment_expression "iVar2 = memcmp(__s1,cipher,0xc0)" identifier = (call_expression "memcmp(__s1,cipher,0xc0)" identifier (argument_list "(__s1,cipher,0xc0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar4 = iVar3;" (assignment_expression "iVar4 = iVar3" identifier = identifier) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 1;" (assignment_expression "iVar4 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0xc0,cipher,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0xc0,cipher,0xc0)" identifier = (call_expression "memcmp(__s1 + 0xc0,cipher,0xc0)" identifier (argument_list "(__s1 + 0xc0,cipher,0xc0)" ( (binary_expression "__s1 + 0xc0" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 2;" (assignment_expression "iVar4 = iVar3 + 2" identifier = (binary_expression "iVar3 + 2" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0x180,cipher,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x180,cipher,0xc0)" identifier = (call_expression "memcmp(__s1 + 0x180,cipher,0xc0)" identifier (argument_list "(__s1 + 0x180,cipher,0xc0)" ( (binary_expression "__s1 + 0x180" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 3;" (assignment_expression "iVar4 = iVar3 + 3" identifier = (binary_expression "iVar3 + 3" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0x240,cipher,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x240,cipher,0xc0)" identifier = (call_expression "memcmp(__s1 + 0x240,cipher,0xc0)" identifier (argument_list "(__s1 + 0x240,cipher,0xc0)" ( (binary_expression "__s1 + 0x240" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 4;" (assignment_expression "iVar4 = iVar3 + 4" identifier = (binary_expression "iVar3 + 4" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0x300,cipher,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x300,cipher,0xc0)" identifier = (call_expression "memcmp(__s1 + 0x300,cipher,0xc0)" identifier (argument_list "(__s1 + 0x300,cipher,0xc0)" ( (binary_expression "__s1 + 0x300" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 5;" (assignment_expression "iVar4 = iVar3 + 5" identifier = (binary_expression "iVar3 + 5" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0x3c0,cipher,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x3c0,cipher,0xc0)" identifier = (call_expression "memcmp(__s1 + 0x3c0,cipher,0xc0)" identifier (argument_list "(__s1 + 0x3c0,cipher,0xc0)" ( (binary_expression "__s1 + 0x3c0" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 6;" (assignment_expression "iVar4 = iVar3 + 6" identifier = (binary_expression "iVar3 + 6" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0x480,cipher,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x480,cipher,0xc0)" identifier = (call_expression "memcmp(__s1 + 0x480,cipher,0xc0)" identifier (argument_list "(__s1 + 0x480,cipher,0xc0)" ( (binary_expression "__s1 + 0x480" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 7;" (assignment_expression "iVar4 = iVar3 + 7" identifier = (binary_expression "iVar3 + 7" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0x540,cipher,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x540,cipher,0xc0)" identifier = (call_expression "memcmp(__s1 + 0x540,cipher,0xc0)" identifier (argument_list "(__s1 + 0x540,cipher,0xc0)" ( (binary_expression "__s1 + 0x540" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar3 + 8;" (assignment_expression "iVar3 = iVar3 + 8" identifier = (binary_expression "iVar3 + 8" identifier + number_literal)) ;) (expression_statement "__s1 = __s1 + 0x600;" (assignment_expression "__s1 = __s1 + 0x600" identifier = (binary_expression "__s1 + 0x600" identifier + number_literal)) ;) (if_statement "if (iVar3 == 0x20) {\n      return 1;\n    }" if (parenthesized_expression "(iVar3 == 0x20)" ( (binary_expression "iVar3 == 0x20" identifier == number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) })) (expression_statement "*(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0;" (assignment_expression "*(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0" (pointer_expression "*(undefined8 *)(puVar1 + (long)iVar4 * 0xc0)" * (cast_expression "(undefined8 *)(puVar1 + (long)iVar4 * 0xc0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + (long)iVar4 * 0xc0)" ( (binary_expression "puVar1 + (long)iVar4 * 0xc0" identifier + (binary_expression "(long)iVar4 * 0xc0" (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff;" (assignment_expression "*(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff" (pointer_expression "*(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8)" * (cast_expression "(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)(puVar1 + (long)iVar4 * 0xc0) + 8)" ( (binary_expression "(long)(puVar1 + (long)iVar4 * 0xc0) + 8" (cast_expression "(long)(puVar1 + (long)iVar4 * 0xc0)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(puVar1 + (long)iVar4 * 0xc0)" ( (binary_expression "puVar1 + (long)iVar4 * 0xc0" identifier + (binary_expression "(long)iVar4 * 0xc0" (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) ))) + number_literal) )))) = number_literal) ;) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "int unregister_cipher(void *param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined *__s1;\n  int iVar4;\n  \n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (param_1 == (void *)0x0) {\n                    \n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }\n  iVar3 = 0;\n  __s1 = PTR_cipher_descriptor_001dded0;\n  while( true ) {\n    iVar2 = memcmp(__s1,param_1,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }\n  *(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0;\n  *(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff;\n  return iVar2;\n}\n\n" (function_definition "int unregister_cipher(void *param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined *__s1;\n  int iVar4;\n  \n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (param_1 == (void *)0x0) {\n                    \n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }\n  iVar3 = 0;\n  __s1 = PTR_cipher_descriptor_001dded0;\n  while( true ) {\n    iVar2 = memcmp(__s1,param_1,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }\n  *(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0;\n  *(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff;\n  return iVar2;\n}" primitive_type (function_declarator "unregister_cipher(void *param_1)" identifier (parameter_list "(void *param_1)" ( (parameter_declaration "void *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined *__s1;\n  int iVar4;\n  \n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (param_1 == (void *)0x0) {\n                    \n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }\n  iVar3 = 0;\n  __s1 = PTR_cipher_descriptor_001dded0;\n  while( true ) {\n    iVar2 = memcmp(__s1,param_1,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }\n  *(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0;\n  *(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff;\n  return iVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined *__s1;" type_identifier (pointer_declarator "*__s1" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (expression_statement "puVar1 = PTR_cipher_descriptor_001dded0;" (assignment_expression "puVar1 = PTR_cipher_descriptor_001dded0" identifier = identifier) ;) (if_statement "if (param_1 == (void *)0x0) {\n                    \n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }" if (parenthesized_expression "(param_1 == (void *)0x0)" ( (binary_expression "param_1 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }" { (expression_statement "crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);" (call_expression "crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19)" identifier (argument_list "("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19)" ( (string_literal ""cipher != NULL"" " string_content ") , (string_literal ""src/misc/crypt/crypt_unregister_cipher.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "__s1 = PTR_cipher_descriptor_001dded0;" (assignment_expression "__s1 = PTR_cipher_descriptor_001dded0" identifier = identifier) ;) (while_statement "while( true ) {\n    iVar2 = memcmp(__s1,param_1,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar2 = memcmp(__s1,param_1,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }" { (expression_statement "iVar2 = memcmp(__s1,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1,param_1,0xc0)" identifier = (call_expression "memcmp(__s1,param_1,0xc0)" identifier (argument_list "(__s1,param_1,0xc0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "iVar4 = iVar3;" (assignment_expression "iVar4 = iVar3" identifier = identifier) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 1;" (assignment_expression "iVar4 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0)" identifier = (call_expression "memcmp(__s1 + 0xc0,param_1,0xc0)" identifier (argument_list "(__s1 + 0xc0,param_1,0xc0)" ( (binary_expression "__s1 + 0xc0" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 2;" (assignment_expression "iVar4 = iVar3 + 2" identifier = (binary_expression "iVar3 + 2" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x180,param_1,0xc0)" identifier = (call_expression "memcmp(__s1 + 0x180,param_1,0xc0)" identifier (argument_list "(__s1 + 0x180,param_1,0xc0)" ( (binary_expression "__s1 + 0x180" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 3;" (assignment_expression "iVar4 = iVar3 + 3" identifier = (binary_expression "iVar3 + 3" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x240,param_1,0xc0)" identifier = (call_expression "memcmp(__s1 + 0x240,param_1,0xc0)" identifier (argument_list "(__s1 + 0x240,param_1,0xc0)" ( (binary_expression "__s1 + 0x240" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 4;" (assignment_expression "iVar4 = iVar3 + 4" identifier = (binary_expression "iVar3 + 4" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x300,param_1,0xc0)" identifier = (call_expression "memcmp(__s1 + 0x300,param_1,0xc0)" identifier (argument_list "(__s1 + 0x300,param_1,0xc0)" ( (binary_expression "__s1 + 0x300" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 5;" (assignment_expression "iVar4 = iVar3 + 5" identifier = (binary_expression "iVar3 + 5" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0)" identifier = (call_expression "memcmp(__s1 + 0x3c0,param_1,0xc0)" identifier (argument_list "(__s1 + 0x3c0,param_1,0xc0)" ( (binary_expression "__s1 + 0x3c0" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 6;" (assignment_expression "iVar4 = iVar3 + 6" identifier = (binary_expression "iVar3 + 6" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x480,param_1,0xc0)" identifier = (call_expression "memcmp(__s1 + 0x480,param_1,0xc0)" identifier (argument_list "(__s1 + 0x480,param_1,0xc0)" ( (binary_expression "__s1 + 0x480" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar3 + 7;" (assignment_expression "iVar4 = iVar3 + 7" identifier = (binary_expression "iVar3 + 7" identifier + number_literal)) ;) (expression_statement "iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x540,param_1,0xc0)" identifier = (call_expression "memcmp(__s1 + 0x540,param_1,0xc0)" identifier (argument_list "(__s1 + 0x540,param_1,0xc0)" ( (binary_expression "__s1 + 0x540" identifier + number_literal) , identifier , number_literal )))) ;) (if_statement "if (iVar2 == 0) break;" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar3 + 8;" (assignment_expression "iVar3 = iVar3 + 8" identifier = (binary_expression "iVar3 + 8" identifier + number_literal)) ;) (expression_statement "__s1 = __s1 + 0x600;" (assignment_expression "__s1 = __s1 + 0x600" identifier = (binary_expression "__s1 + 0x600" identifier + number_literal)) ;) (if_statement "if (iVar3 == 0x20) {\n      return 1;\n    }" if (parenthesized_expression "(iVar3 == 0x20)" ( (binary_expression "iVar3 == 0x20" identifier == number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) })) (expression_statement "*(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0;" (assignment_expression "*(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0" (pointer_expression "*(undefined8 *)(puVar1 + (long)iVar4 * 0xc0)" * (cast_expression "(undefined8 *)(puVar1 + (long)iVar4 * 0xc0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + (long)iVar4 * 0xc0)" ( (binary_expression "puVar1 + (long)iVar4 * 0xc0" identifier + (binary_expression "(long)iVar4 * 0xc0" (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) = number_literal) ;) (expression_statement "*(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff;" (assignment_expression "*(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff" (pointer_expression "*(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8)" * (cast_expression "(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)(puVar1 + (long)iVar4 * 0xc0) + 8)" ( (binary_expression "(long)(puVar1 + (long)iVar4 * 0xc0) + 8" (cast_expression "(long)(puVar1 + (long)iVar4 * 0xc0)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(puVar1 + (long)iVar4 * 0xc0)" ( (binary_expression "puVar1 + (long)iVar4 * 0xc0" identifier + (binary_expression "(long)iVar4 * 0xc0" (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) ))) + number_literal) )))) = number_literal) ;) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = 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 ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) ))) + LIT) )))) = LIT) ;) (return_statement return IDENT ;) })))
(function_definition "int unregister_cipher(void *param_1)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined *__s1;\n  int iVar4;\n  \n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (param_1 == (void *)0x0) {\n                    \n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }\n  iVar3 = 0;\n  __s1 = PTR_cipher_descriptor_001dded0;\n  while( true ) {\n    iVar2 = memcmp(__s1,param_1,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }\n  *(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0;\n  *(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff;\n  return iVar2;\n}" (primitive_type "int") (function_declarator "unregister_cipher(void *param_1)" (identifier "unregister_cipher") (parameter_list "(void *param_1)" (( "(") (parameter_declaration "void *param_1" (primitive_type "void") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  undefined *__s1;\n  int iVar4;\n  \n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (param_1 == (void *)0x0) {\n                    \n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }\n  iVar3 = 0;\n  __s1 = PTR_cipher_descriptor_001dded0;\n  while( true ) {\n    iVar2 = memcmp(__s1,param_1,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }\n  *(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0;\n  *(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff;\n  return iVar2;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined *__s1;" (type_identifier "undefined") (pointer_declarator "*__s1" (* "*") (identifier "__s1")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (expression_statement "puVar1 = PTR_cipher_descriptor_001dded0;" (assignment_expression "puVar1 = PTR_cipher_descriptor_001dded0" (identifier "puVar1") (= "=") (identifier "PTR_cipher_descriptor_001dded0")) (; ";")) (if_statement "if (param_1 == (void *)0x0) {\n                    \n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }" (if "if") (parenthesized_expression "(param_1 == (void *)0x0)" (( "(") (binary_expression "param_1 == (void *)0x0" (identifier "param_1") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);\n  }" ({ "{") (expression_statement "crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);" (call_expression "crypt_argchk("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19)" (identifier "crypt_argchk") (argument_list "("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19)" (( "(") (string_literal ""cipher != NULL"" (" """) (string_content "cipher != NULL") (" """)) (, ",") (string_literal ""src/misc/crypt/crypt_unregister_cipher.c"" (" """) (string_content "src/misc/crypt/crypt_unregister_cipher.c") (" """)) (, ",") (number_literal "0x19") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (expression_statement "__s1 = PTR_cipher_descriptor_001dded0;" (assignment_expression "__s1 = PTR_cipher_descriptor_001dded0" (identifier "__s1") (= "=") (identifier "PTR_cipher_descriptor_001dded0")) (; ";")) (while_statement "while( true ) {\n    iVar2 = memcmp(__s1,param_1,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    iVar2 = memcmp(__s1,param_1,0xc0);\n    iVar4 = iVar3;\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 1;\n    iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 2;\n    iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 3;\n    iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 4;\n    iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 5;\n    iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 6;\n    iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar4 = iVar3 + 7;\n    iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);\n    if (iVar2 == 0) break;\n    iVar3 = iVar3 + 8;\n    __s1 = __s1 + 0x600;\n    if (iVar3 == 0x20) {\n      return 1;\n    }\n  }" ({ "{") (expression_statement "iVar2 = memcmp(__s1,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1,param_1,0xc0)" (identifier "iVar2") (= "=") (call_expression "memcmp(__s1,param_1,0xc0)" (identifier "memcmp") (argument_list "(__s1,param_1,0xc0)" (( "(") (identifier "__s1") (, ",") (identifier "param_1") (, ",") (number_literal "0xc0") () ")")))) (; ";")) (expression_statement "iVar4 = iVar3;" (assignment_expression "iVar4 = iVar3" (identifier "iVar4") (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (iVar2 == 0) break;" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar4 = iVar3 + 1;" (assignment_expression "iVar4 = iVar3 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0)" (identifier "iVar2") (= "=") (call_expression "memcmp(__s1 + 0xc0,param_1,0xc0)" (identifier "memcmp") (argument_list "(__s1 + 0xc0,param_1,0xc0)" (( "(") (binary_expression "__s1 + 0xc0" (identifier "__s1") (+ "+") (number_literal "0xc0")) (, ",") (identifier "param_1") (, ",") (number_literal "0xc0") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) break;" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar4 = iVar3 + 2;" (assignment_expression "iVar4 = iVar3 + 2" (identifier "iVar4") (= "=") (binary_expression "iVar3 + 2" (identifier "iVar3") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x180,param_1,0xc0)" (identifier "iVar2") (= "=") (call_expression "memcmp(__s1 + 0x180,param_1,0xc0)" (identifier "memcmp") (argument_list "(__s1 + 0x180,param_1,0xc0)" (( "(") (binary_expression "__s1 + 0x180" (identifier "__s1") (+ "+") (number_literal "0x180")) (, ",") (identifier "param_1") (, ",") (number_literal "0xc0") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) break;" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar4 = iVar3 + 3;" (assignment_expression "iVar4 = iVar3 + 3" (identifier "iVar4") (= "=") (binary_expression "iVar3 + 3" (identifier "iVar3") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x240,param_1,0xc0)" (identifier "iVar2") (= "=") (call_expression "memcmp(__s1 + 0x240,param_1,0xc0)" (identifier "memcmp") (argument_list "(__s1 + 0x240,param_1,0xc0)" (( "(") (binary_expression "__s1 + 0x240" (identifier "__s1") (+ "+") (number_literal "0x240")) (, ",") (identifier "param_1") (, ",") (number_literal "0xc0") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) break;" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar4 = iVar3 + 4;" (assignment_expression "iVar4 = iVar3 + 4" (identifier "iVar4") (= "=") (binary_expression "iVar3 + 4" (identifier "iVar3") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x300,param_1,0xc0)" (identifier "iVar2") (= "=") (call_expression "memcmp(__s1 + 0x300,param_1,0xc0)" (identifier "memcmp") (argument_list "(__s1 + 0x300,param_1,0xc0)" (( "(") (binary_expression "__s1 + 0x300" (identifier "__s1") (+ "+") (number_literal "0x300")) (, ",") (identifier "param_1") (, ",") (number_literal "0xc0") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) break;" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar4 = iVar3 + 5;" (assignment_expression "iVar4 = iVar3 + 5" (identifier "iVar4") (= "=") (binary_expression "iVar3 + 5" (identifier "iVar3") (+ "+") (number_literal "5"))) (; ";")) (expression_statement "iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0)" (identifier "iVar2") (= "=") (call_expression "memcmp(__s1 + 0x3c0,param_1,0xc0)" (identifier "memcmp") (argument_list "(__s1 + 0x3c0,param_1,0xc0)" (( "(") (binary_expression "__s1 + 0x3c0" (identifier "__s1") (+ "+") (number_literal "0x3c0")) (, ",") (identifier "param_1") (, ",") (number_literal "0xc0") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) break;" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar4 = iVar3 + 6;" (assignment_expression "iVar4 = iVar3 + 6" (identifier "iVar4") (= "=") (binary_expression "iVar3 + 6" (identifier "iVar3") (+ "+") (number_literal "6"))) (; ";")) (expression_statement "iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x480,param_1,0xc0)" (identifier "iVar2") (= "=") (call_expression "memcmp(__s1 + 0x480,param_1,0xc0)" (identifier "memcmp") (argument_list "(__s1 + 0x480,param_1,0xc0)" (( "(") (binary_expression "__s1 + 0x480" (identifier "__s1") (+ "+") (number_literal "0x480")) (, ",") (identifier "param_1") (, ",") (number_literal "0xc0") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) break;" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar4 = iVar3 + 7;" (assignment_expression "iVar4 = iVar3 + 7" (identifier "iVar4") (= "=") (binary_expression "iVar3 + 7" (identifier "iVar3") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);" (assignment_expression "iVar2 = memcmp(__s1 + 0x540,param_1,0xc0)" (identifier "iVar2") (= "=") (call_expression "memcmp(__s1 + 0x540,param_1,0xc0)" (identifier "memcmp") (argument_list "(__s1 + 0x540,param_1,0xc0)" (( "(") (binary_expression "__s1 + 0x540" (identifier "__s1") (+ "+") (number_literal "0x540")) (, ",") (identifier "param_1") (, ",") (number_literal "0xc0") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) break;" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar3 = iVar3 + 8;" (assignment_expression "iVar3 = iVar3 + 8" (identifier "iVar3") (= "=") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "__s1 = __s1 + 0x600;" (assignment_expression "__s1 = __s1 + 0x600" (identifier "__s1") (= "=") (binary_expression "__s1 + 0x600" (identifier "__s1") (+ "+") (number_literal "0x600"))) (; ";")) (if_statement "if (iVar3 == 0x20) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0x20)" (( "(") (binary_expression "iVar3 == 0x20" (identifier "iVar3") (== "==") (number_literal "0x20")) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}"))) (expression_statement "*(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0;" (assignment_expression "*(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0" (pointer_expression "*(undefined8 *)(puVar1 + (long)iVar4 * 0xc0)" (* "*") (cast_expression "(undefined8 *)(puVar1 + (long)iVar4 * 0xc0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + (long)iVar4 * 0xc0)" (( "(") (binary_expression "puVar1 + (long)iVar4 * 0xc0" (identifier "puVar1") (+ "+") (binary_expression "(long)iVar4 * 0xc0" (cast_expression "(long)iVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar4")) (* "*") (number_literal "0xc0"))) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff;" (assignment_expression "*(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff" (pointer_expression "*(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8)" (* "*") (cast_expression "(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)(puVar1 + (long)iVar4 * 0xc0) + 8)" (( "(") (binary_expression "(long)(puVar1 + (long)iVar4 * 0xc0) + 8" (cast_expression "(long)(puVar1 + (long)iVar4 * 0xc0)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(puVar1 + (long)iVar4 * 0xc0)" (( "(") (binary_expression "puVar1 + (long)iVar4 * 0xc0" (identifier "puVar1") (+ "+") (binary_expression "(long)iVar4 * 0xc0" (cast_expression "(long)iVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar4")) (* "*") (number_literal "0xc0"))) () ")"))) (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0xff")) (; ";")) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}")))

int function_1(type_1 *var_1)

{
  type_2 *var_7;
  int var_4;
  int var_5;
  type_2 *var_6;
  int iVar4;
  
  var_7 = PTR_cipher_descriptor_001dded0;
  if (var_1 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("cipher != NULL","src/misc/crypt/crypt_unregister_cipher.c",0x19);
  }
  var_5 = 0;
  var_6 = PTR_cipher_descriptor_001dded0;
  while( true ) {
    var_4 = var_3(var_6,var_1,0xc0);
    iVar4 = var_5;
    if (var_4 == 0) break;
    iVar4 = var_5 + 1;
    var_4 = var_3(var_6 + 0xc0,var_1,0xc0);
    if (var_4 == 0) break;
    iVar4 = var_5 + 2;
    var_4 = var_3(var_6 + 0x180,var_1,0xc0);
    if (var_4 == 0) break;
    iVar4 = var_5 + 3;
    var_4 = var_3(var_6 + 0x240,var_1,0xc0);
    if (var_4 == 0) break;
    iVar4 = var_5 + 4;
    var_4 = var_3(var_6 + 0x300,var_1,0xc0);
    if (var_4 == 0) break;
    iVar4 = var_5 + 5;
    var_4 = var_3(var_6 + 0x3c0,var_1,0xc0);
    if (var_4 == 0) break;
    iVar4 = var_5 + 6;
    var_4 = var_3(var_6 + 0x480,var_1,0xc0);
    if (var_4 == 0) break;
    iVar4 = var_5 + 7;
    var_4 = var_3(var_6 + 0x540,var_1,0xc0);
    if (var_4 == 0) break;
    var_5 = var_5 + 8;
    var_6 = var_6 + 0x600;
    if (var_5 == 0x20) {
      return 1;
    }
  }
  *(type_3 *)(var_7 + (long)iVar4 * 0xc0) = 0;
  *(type_4 *)((long)(var_7 + (long)iVar4 * 0xc0) + 8) = 0xff;
  return var_4;
}


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

int MASKED(void *param_1)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  undefined *__s1;
  int iVar4;
  
  puVar1 = PTR_cipher_descriptor_001dded0;
  if (param_1 == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("cipher != NULL","src/misc/crypt/crypt_MASKED.c",0x19);
  }
  iVar3 = 0;
  __s1 = PTR_cipher_descriptor_001dded0;
  while( true ) {
    iVar2 = memcmp(__s1,param_1,0xc0);
    iVar4 = iVar3;
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 1;
    iVar2 = memcmp(__s1 + 0xc0,param_1,0xc0);
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 2;
    iVar2 = memcmp(__s1 + 0x180,param_1,0xc0);
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 3;
    iVar2 = memcmp(__s1 + 0x240,param_1,0xc0);
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 4;
    iVar2 = memcmp(__s1 + 0x300,param_1,0xc0);
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 5;
    iVar2 = memcmp(__s1 + 0x3c0,param_1,0xc0);
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 6;
    iVar2 = memcmp(__s1 + 0x480,param_1,0xc0);
    if (iVar2 == 0) break;
    iVar4 = iVar3 + 7;
    iVar2 = memcmp(__s1 + 0x540,param_1,0xc0);
    if (iVar2 == 0) break;
    iVar3 = iVar3 + 8;
    __s1 = __s1 + 0x600;
    if (iVar3 == 0x20) {
      return 1;
    }
  }
  *(undefined8 *)(puVar1 + (long)iVar4 * 0xc0) = 0;
  *(undefined1 *)((long)(puVar1 + (long)iVar4 * 0xc0) + 8) = 0xff;
  return iVar2;
}

