
SHELL_VAR * array_variable_part(char *s,int flags,char **subp,int *lenp)

{
  char *name;
  SHELL_VAR *pSVar1;
  
  name = array_variable_name(s,flags,subp,lenp);
  if (name == (char *)0x0) {
    pSVar1 = (SHELL_VAR *)0x0;
  }
  else {
    pSVar1 = find_variable(name);
    free(name);
  }
  return pSVar1;
}



undefined8 array_variable_part(void)

{
  void *__ptr;
  undefined8 uVar1;
  
  __ptr = (void *)array_variable_name();
  if (__ptr == (void *)0x0) {
    uVar1 = 0;
  }
  else {
    uVar1 = find_variable(__ptr);
    free(__ptr);
  }
  return uVar1;
}


PUSH RBP
PUSH RBX
SUB RSP,0x8
CALL 0x00176ef2
MOV RBX,RAX
TEST RAX,RAX
JZ 0x00177267
MOV RDI,RAX
CALL 0x0014a694
MOV RBP,RAX
MOV RDI,RBX
CALL 0x0012d080
MOV RAX,RBP
ADD RSP,0x8
POP RBX
POP RBP
RET
MOV RBP,RAX
JMP 0x0017725d
(translation_unit "undefined8 array_variable_part(void)\n\n{\n  void *__ptr;\n  undefined8 uVar1;\n  \n  __ptr = (void *)array_variable_name();\n  if (__ptr == (void *)0x0) {\n    uVar1 = 0;\n  }\n  else {\n    uVar1 = find_variable(__ptr);\n    free(__ptr);\n  }\n  return uVar1;\n}\n\n" (function_definition "undefined8 array_variable_part(void)\n\n{\n  void *__ptr;\n  undefined8 uVar1;\n  \n  __ptr = (void *)array_variable_name();\n  if (__ptr == (void *)0x0) {\n    uVar1 = 0;\n  }\n  else {\n    uVar1 = find_variable(__ptr);\n    free(__ptr);\n  }\n  return uVar1;\n}" type_identifier (function_declarator "array_variable_part(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  void *__ptr;\n  undefined8 uVar1;\n  \n  __ptr = (void *)array_variable_name();\n  if (__ptr == (void *)0x0) {\n    uVar1 = 0;\n  }\n  else {\n    uVar1 = find_variable(__ptr);\n    free(__ptr);\n  }\n  return uVar1;\n}" { (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined8 uVar1;" type_identifier identifier ;) (expression_statement "__ptr = (void *)array_variable_name();" (assignment_expression "__ptr = (void *)array_variable_name()" identifier = (cast_expression "(void *)array_variable_name()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "array_variable_name()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (__ptr == (void *)0x0) {\n    uVar1 = 0;\n  }\n  else {\n    uVar1 = find_variable(__ptr);\n    free(__ptr);\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 = 0;\n  }" { (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar1 = find_variable(__ptr);\n    free(__ptr);\n  }" else (compound_statement "{\n    uVar1 = find_variable(__ptr);\n    free(__ptr);\n  }" { (expression_statement "uVar1 = find_variable(__ptr);" (assignment_expression "uVar1 = find_variable(__ptr)" identifier = (call_expression "find_variable(__ptr)" identifier (argument_list "(__ptr)" ( identifier )))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) }))) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit "SHELL_VAR * array_variable_part(char *s,int flags,char **subp,int *lenp)\n\n{\n  char *name;\n  SHELL_VAR *pSVar1;\n  \n  name = array_variable_name(s,flags,subp,lenp);\n  if (name == (char *)0x0) {\n    pSVar1 = (SHELL_VAR *)0x0;\n  }\n  else {\n    pSVar1 = find_variable(name);\n    free(name);\n  }\n  return pSVar1;\n}\n\n" (function_definition "SHELL_VAR * array_variable_part(char *s,int flags,char **subp,int *lenp)\n\n{\n  char *name;\n  SHELL_VAR *pSVar1;\n  \n  name = array_variable_name(s,flags,subp,lenp);\n  if (name == (char *)0x0) {\n    pSVar1 = (SHELL_VAR *)0x0;\n  }\n  else {\n    pSVar1 = find_variable(name);\n    free(name);\n  }\n  return pSVar1;\n}" type_identifier (pointer_declarator "* array_variable_part(char *s,int flags,char **subp,int *lenp)" * (function_declarator "array_variable_part(char *s,int flags,char **subp,int *lenp)" identifier (parameter_list "(char *s,int flags,char **subp,int *lenp)" ( (parameter_declaration "char *s" primitive_type (pointer_declarator "*s" * identifier)) , (parameter_declaration "int flags" primitive_type identifier) , (parameter_declaration "char **subp" primitive_type (pointer_declarator "**subp" * (pointer_declarator "*subp" * identifier))) , (parameter_declaration "int *lenp" primitive_type (pointer_declarator "*lenp" * identifier)) )))) (compound_statement "{\n  char *name;\n  SHELL_VAR *pSVar1;\n  \n  name = array_variable_name(s,flags,subp,lenp);\n  if (name == (char *)0x0) {\n    pSVar1 = (SHELL_VAR *)0x0;\n  }\n  else {\n    pSVar1 = find_variable(name);\n    free(name);\n  }\n  return pSVar1;\n}" { (declaration "char *name;" primitive_type (pointer_declarator "*name" * identifier) ;) (declaration "SHELL_VAR *pSVar1;" type_identifier (pointer_declarator "*pSVar1" * identifier) ;) (expression_statement "name = array_variable_name(s,flags,subp,lenp);" (assignment_expression "name = array_variable_name(s,flags,subp,lenp)" identifier = (call_expression "array_variable_name(s,flags,subp,lenp)" identifier (argument_list "(s,flags,subp,lenp)" ( identifier , identifier , identifier , identifier )))) ;) (if_statement "if (name == (char *)0x0) {\n    pSVar1 = (SHELL_VAR *)0x0;\n  }\n  else {\n    pSVar1 = find_variable(name);\n    free(name);\n  }" if (parenthesized_expression "(name == (char *)0x0)" ( (binary_expression "name == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pSVar1 = (SHELL_VAR *)0x0;\n  }" { (expression_statement "pSVar1 = (SHELL_VAR *)0x0;" (assignment_expression "pSVar1 = (SHELL_VAR *)0x0" identifier = (cast_expression "(SHELL_VAR *)0x0" ( (type_descriptor "SHELL_VAR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    pSVar1 = find_variable(name);\n    free(name);\n  }" else (compound_statement "{\n    pSVar1 = find_variable(name);\n    free(name);\n  }" { (expression_statement "pSVar1 = find_variable(name);" (assignment_expression "pSVar1 = find_variable(name)" identifier = (call_expression "find_variable(name)" identifier (argument_list "(name)" ( identifier )))) ;) (expression_statement "free(name);" (call_expression "free(name)" identifier (argument_list "(name)" ( identifier ))) ;) }))) (return_statement "return pSVar1;" return identifier ;) })))
(translation_unit "undefined8 array_variable_part(void)\n\n{\n  void *__ptr;\n  undefined8 uVar1;\n  \n  __ptr = (void *)array_variable_name();\n  if (__ptr == (void *)0x0) {\n    uVar1 = 0;\n  }\n  else {\n    uVar1 = find_variable(__ptr);\n    free(__ptr);\n  }\n  return uVar1;\n}\n\n" (function_definition "undefined8 array_variable_part(void)\n\n{\n  void *__ptr;\n  undefined8 uVar1;\n  \n  __ptr = (void *)array_variable_name();\n  if (__ptr == (void *)0x0) {\n    uVar1 = 0;\n  }\n  else {\n    uVar1 = find_variable(__ptr);\n    free(__ptr);\n  }\n  return uVar1;\n}" type_identifier (function_declarator "array_variable_part(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  void *__ptr;\n  undefined8 uVar1;\n  \n  __ptr = (void *)array_variable_name();\n  if (__ptr == (void *)0x0) {\n    uVar1 = 0;\n  }\n  else {\n    uVar1 = find_variable(__ptr);\n    free(__ptr);\n  }\n  return uVar1;\n}" { (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined8 uVar1;" type_identifier identifier ;) (expression_statement "__ptr = (void *)array_variable_name();" (assignment_expression "__ptr = (void *)array_variable_name()" identifier = (cast_expression "(void *)array_variable_name()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "array_variable_name()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (__ptr == (void *)0x0) {\n    uVar1 = 0;\n  }\n  else {\n    uVar1 = find_variable(__ptr);\n    free(__ptr);\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 = 0;\n  }" { (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    uVar1 = find_variable(__ptr);\n    free(__ptr);\n  }" else (compound_statement "{\n    uVar1 = find_variable(__ptr);\n    free(__ptr);\n  }" { (expression_statement "uVar1 = find_variable(__ptr);" (assignment_expression "uVar1 = find_variable(__ptr)" identifier = (call_expression "find_variable(__ptr)" identifier (argument_list "(__ptr)" ( identifier )))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) }))) (return_statement "return uVar1;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined8 array_variable_part(void)\n\n{\n  void *__ptr;\n  undefined8 uVar1;\n  \n  __ptr = (void *)array_variable_name();\n  if (__ptr == (void *)0x0) {\n    uVar1 = 0;\n  }\n  else {\n    uVar1 = find_variable(__ptr);\n    free(__ptr);\n  }\n  return uVar1;\n}" (type_identifier "undefined8") (function_declarator "array_variable_part(void)" (identifier "array_variable_part") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  void *__ptr;\n  undefined8 uVar1;\n  \n  __ptr = (void *)array_variable_name();\n  if (__ptr == (void *)0x0) {\n    uVar1 = 0;\n  }\n  else {\n    uVar1 = find_variable(__ptr);\n    free(__ptr);\n  }\n  return uVar1;\n}" ({ "{") (declaration "void *__ptr;" (primitive_type "void") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (expression_statement "__ptr = (void *)array_variable_name();" (assignment_expression "__ptr = (void *)array_variable_name()" (identifier "__ptr") (= "=") (cast_expression "(void *)array_variable_name()" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "array_variable_name()" (identifier "array_variable_name") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (__ptr == (void *)0x0) {\n    uVar1 = 0;\n  }\n  else {\n    uVar1 = find_variable(__ptr);\n    free(__ptr);\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 = 0;\n  }" ({ "{") (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    uVar1 = find_variable(__ptr);\n    free(__ptr);\n  }" (else "else") (compound_statement "{\n    uVar1 = find_variable(__ptr);\n    free(__ptr);\n  }" ({ "{") (expression_statement "uVar1 = find_variable(__ptr);" (assignment_expression "uVar1 = find_variable(__ptr)" (identifier "uVar1") (= "=") (call_expression "find_variable(__ptr)" (identifier "find_variable") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")")))) (; ";")) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (} "}")))) (return_statement "return uVar1;" (return "return") (identifier "uVar1") (; ";")) (} "}")))

type_1 * function_1(char *s,int flags,char **subp,int *lenp)

{
  char *var_2;
  type_1 *pSVar1;
  
  var_2 = var_1(s,flags,subp,lenp);
  if (var_2 == (char *)0x0) {
    pSVar1 = (type_1 *)0x0;
  }
  else {
    pSVar1 = var_3(var_2);
    var_4(var_2);
  }
  return pSVar1;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (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: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))))) (return_statement (identifier)))))

undefined8 MASKED(void)

{
  void *__ptr;
  undefined8 uVar1;
  
  __ptr = (void *)array_variable_name();
  if (__ptr == (void *)0x0) {
    uVar1 = 0;
  }
  else {
    uVar1 = find_variable(__ptr);
    free(__ptr);
  }
  return uVar1;
}

