
int local_and_exported(SHELL_VAR *var)

{
  if ((var->attributes & 0x1020U) != 0x20) {
    return 0;
  }
  if (var->context != *(int *)PTR_variable_context_0014485c) {
    return 0;
  }
  return var->attributes & 1;
}



uint FUN_00053018(int param_1)

{
  if ((*(uint *)(param_1 + 0x14) & 0x1020) != 0x20) {
    return 0;
  }
  if (*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c) {
    return 0;
  }
  return *(uint *)(param_1 + 0x14) & 1;
}


lui gp,0x10
addiu gp,gp,-0x6ad8
addu gp,gp,t9
lw v0,0x14(a0)
li v1,0x20
andi a1,v0,0x1020
beq a1,v1,0x00053040
_lw v1,-0x7ce4(gp)
jr ra
_or v0,zero,zero
lw a0,0x18(a0)
lw v1,0x0(v1)
beq a0,v1,0x00053058
_nop
jr ra
_or v0,zero,zero
jr ra
_andi v0,v0,0x1
(translation_unit "uint FUN_00053018(int param_1)\n\n{\n  if ((*(uint *)(param_1 + 0x14) & 0x1020) != 0x20) {\n    return 0;\n  }\n  if (*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c) {\n    return 0;\n  }\n  return *(uint *)(param_1 + 0x14) & 1;\n}\n\n" (function_definition "uint FUN_00053018(int param_1)\n\n{\n  if ((*(uint *)(param_1 + 0x14) & 0x1020) != 0x20) {\n    return 0;\n  }\n  if (*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c) {\n    return 0;\n  }\n  return *(uint *)(param_1 + 0x14) & 1;\n}" type_identifier (function_declarator "FUN_00053018(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  if ((*(uint *)(param_1 + 0x14) & 0x1020) != 0x20) {\n    return 0;\n  }\n  if (*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c) {\n    return 0;\n  }\n  return *(uint *)(param_1 + 0x14) & 1;\n}" { (if_statement "if ((*(uint *)(param_1 + 0x14) & 0x1020) != 0x20) {\n    return 0;\n  }" if (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 0x1020) != 0x20)" ( (binary_expression "(*(uint *)(param_1 + 0x14) & 0x1020) != 0x20" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 0x1020)" ( (binary_expression "*(uint *)(param_1 + 0x14) & 0x1020" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c) {\n    return 0;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c)" ( (binary_expression "*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != (pointer_expression "*(int *)PTR_variable_context_0014485c" * (cast_expression "(int *)PTR_variable_context_0014485c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (return_statement "return *(uint *)(param_1 + 0x14) & 1;" return (binary_expression "*(uint *)(param_1 + 0x14) & 1" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal) ;) })))
(translation_unit "int local_and_exported(SHELL_VAR *var)\n\n{\n  if ((var->attributes & 0x1020U) != 0x20) {\n    return 0;\n  }\n  if (var->context != *(int *)PTR_variable_context_0014485c) {\n    return 0;\n  }\n  return var->attributes & 1;\n}\n\n" (function_definition "int local_and_exported(SHELL_VAR *var)\n\n{\n  if ((var->attributes & 0x1020U) != 0x20) {\n    return 0;\n  }\n  if (var->context != *(int *)PTR_variable_context_0014485c) {\n    return 0;\n  }\n  return var->attributes & 1;\n}" primitive_type (function_declarator "local_and_exported(SHELL_VAR *var)" identifier (parameter_list "(SHELL_VAR *var)" ( (parameter_declaration "SHELL_VAR *var" type_identifier (pointer_declarator "*var" * identifier)) ))) (compound_statement "{\n  if ((var->attributes & 0x1020U) != 0x20) {\n    return 0;\n  }\n  if (var->context != *(int *)PTR_variable_context_0014485c) {\n    return 0;\n  }\n  return var->attributes & 1;\n}" { (if_statement "if ((var->attributes & 0x1020U) != 0x20) {\n    return 0;\n  }" if (parenthesized_expression "((var->attributes & 0x1020U) != 0x20)" ( (binary_expression "(var->attributes & 0x1020U) != 0x20" (parenthesized_expression "(var->attributes & 0x1020U)" ( (binary_expression "var->attributes & 0x1020U" (field_expression "var->attributes" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (var->context != *(int *)PTR_variable_context_0014485c) {\n    return 0;\n  }" if (parenthesized_expression "(var->context != *(int *)PTR_variable_context_0014485c)" ( (binary_expression "var->context != *(int *)PTR_variable_context_0014485c" (field_expression "var->context" identifier -> field_identifier) != (pointer_expression "*(int *)PTR_variable_context_0014485c" * (cast_expression "(int *)PTR_variable_context_0014485c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (return_statement "return var->attributes & 1;" return (binary_expression "var->attributes & 1" (field_expression "var->attributes" identifier -> field_identifier) & number_literal) ;) })))
(translation_unit "uint FUN_00053018(int param_1)\n\n{\n  if ((*(uint *)(param_1 + 0x14) & 0x1020) != 0x20) {\n    return 0;\n  }\n  if (*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c) {\n    return 0;\n  }\n  return *(uint *)(param_1 + 0x14) & 1;\n}\n\n" (function_definition "uint FUN_00053018(int param_1)\n\n{\n  if ((*(uint *)(param_1 + 0x14) & 0x1020) != 0x20) {\n    return 0;\n  }\n  if (*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c) {\n    return 0;\n  }\n  return *(uint *)(param_1 + 0x14) & 1;\n}" type_identifier (function_declarator "FUN_00053018(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  if ((*(uint *)(param_1 + 0x14) & 0x1020) != 0x20) {\n    return 0;\n  }\n  if (*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c) {\n    return 0;\n  }\n  return *(uint *)(param_1 + 0x14) & 1;\n}" { (if_statement "if ((*(uint *)(param_1 + 0x14) & 0x1020) != 0x20) {\n    return 0;\n  }" if (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 0x1020) != 0x20)" ( (binary_expression "(*(uint *)(param_1 + 0x14) & 0x1020) != 0x20" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 0x1020)" ( (binary_expression "*(uint *)(param_1 + 0x14) & 0x1020" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c) {\n    return 0;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c)" ( (binary_expression "*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) != (pointer_expression "*(int *)PTR_variable_context_0014485c" * (cast_expression "(int *)PTR_variable_context_0014485c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (return_statement "return *(uint *)(param_1 + 0x14) & 1;" return (binary_expression "*(uint *)(param_1 + 0x14) & 1" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return LIT ;) })) (return_statement return (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) ;) })))
(function_definition "uint FUN_00053018(int param_1)\n\n{\n  if ((*(uint *)(param_1 + 0x14) & 0x1020) != 0x20) {\n    return 0;\n  }\n  if (*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c) {\n    return 0;\n  }\n  return *(uint *)(param_1 + 0x14) & 1;\n}" (type_identifier "uint") (function_declarator "FUN_00053018(int param_1)" (identifier "FUN_00053018") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  if ((*(uint *)(param_1 + 0x14) & 0x1020) != 0x20) {\n    return 0;\n  }\n  if (*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c) {\n    return 0;\n  }\n  return *(uint *)(param_1 + 0x14) & 1;\n}" ({ "{") (if_statement "if ((*(uint *)(param_1 + 0x14) & 0x1020) != 0x20) {\n    return 0;\n  }" (if "if") (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 0x1020) != 0x20)" (( "(") (binary_expression "(*(uint *)(param_1 + 0x14) & 0x1020) != 0x20" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 0x1020)" (( "(") (binary_expression "*(uint *)(param_1 + 0x14) & 0x1020" (pointer_expression "*(uint *)(param_1 + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "0x1020")) () ")")) (!= "!=") (number_literal "0x20")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c)" (( "(") (binary_expression "*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (pointer_expression "*(int *)PTR_variable_context_0014485c" (* "*") (cast_expression "(int *)PTR_variable_context_0014485c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_variable_context_0014485c")))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (return_statement "return *(uint *)(param_1 + 0x14) & 1;" (return "return") (binary_expression "*(uint *)(param_1 + 0x14) & 1" (pointer_expression "*(uint *)(param_1 + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "1")) (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_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: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (number_literal)))) (return_statement (binary_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: (number_literal))))) right: (number_literal))))))

uint MASKED(int param_1)

{
  if ((*(uint *)(param_1 + 0x14) & 0x1020) != 0x20) {
    return 0;
  }
  if (*(int *)(param_1 + 0x18) != *(int *)PTR_variable_context_0014485c) {
    return 0;
  }
  return *(uint *)(param_1 + 0x14) & 1;
}

