
int S_IS_LOCAL(symbolS *s)

{
  uint uVar1;
  asymbol *paVar2;
  int iVar3;
  char *pcVar4;
  segT paVar5;
  symbolS *__s;
  
  paVar5 = (segT)s->bsym;
  if (((uint)s->sy_flags & 1) != 0) {
    if (reg_section != paVar5) {
      return 1;
    }
    s = (s->sy_value).X_op_symbol;
    paVar5 = (segT)s->bsym;
  }
  uVar1 = *(uint *)&paVar5->prev;
  if ((uVar1 & 3) == 3) {
                    /* WARNING: Subroutine does not return */
    as_abort("../../gas/symbols.c",0x864,"S_IS_LOCAL");
  }
  if (*(segT *)&paVar5->flags == reg_section) {
    return 1;
  }
  if (((flag_strip_local_absolute != 0) && ((uVar1 & 0x4002) == 0)) &&
     (*(segT *)&paVar5->flags == (segT)(_bfd_std_section + 0x230))) {
    return 1;
  }
  if (((uint)s->sy_flags & 1) == 0) {
    __s = *(symbolS **)&paVar5->id;
    if (__s == (symbolS *)0x0) {
      return 0;
    }
  }
  else {
    if (reg_section != paVar5) {
      __s = (s->sy_value).X_add_symbol;
      if (__s == (symbolS *)0x0) {
        return 0;
      }
      goto LAB_0012781d;
    }
    paVar2 = ((s->sy_value).X_op_symbol)->bsym;
    __s = (symbolS *)paVar2->name;
    if (__s == (symbolS *)0x0) {
      return 0;
    }
    uVar1 = paVar2->flags;
  }
  if ((uVar1 & 4) != 0) {
    return 0;
  }
LAB_0012781d:
  pcVar4 = strchr((char *)__s,1);
  if (((pcVar4 == (char *)0x0) && (pcVar4 = strchr((char *)__s,2), pcVar4 == (char *)0x0)) &&
     (pcVar4 = strchr((char *)__s,0x20), pcVar4 == (char *)0x0)) {
    if (flag_keep_locals != 0) {
      return 0;
    }
    iVar3 = bfd_is_local_label(stdoutput,paVar5);
    if (iVar3 == 0) {
      if (flag_mri == 0) {
        return 0;
      }
      if (*(char *)&__s->sy_flags != '?') {
        return 0;
      }
      return (uint)((__s->sy_flags).field_0x1 == '?');
    }
  }
  return 1;
}



bool FUN_00127790(byte *param_1)

{
  uint uVar1;
  int iVar2;
  char *pcVar3;
  long lVar4;
  char *__s;
  
  lVar4 = *(long *)(param_1 + 8);
  if ((*param_1 & 1) != 0) {
    if (DAT_00163898 != lVar4) {
      return true;
    }
    param_1 = *(byte **)(param_1 + 0x18);
    lVar4 = *(long *)(param_1 + 8);
  }
  uVar1 = *(uint *)(lVar4 + 0x18);
  if ((uVar1 & 3) == 3) {
                    /* WARNING: Subroutine does not return */
    FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");
  }
  if (*(long *)(lVar4 + 0x20) == DAT_00163898) {
    return true;
  }
  if (((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0)) {
    return true;
  }
  if ((*param_1 & 1) == 0) {
    __s = *(char **)(lVar4 + 8);
    if (__s == (char *)0x0) {
      return false;
    }
  }
  else {
    if (DAT_00163898 != lVar4) {
      __s = *(char **)(param_1 + 0x10);
      if (__s == (char *)0x0) {
        return false;
      }
      goto LAB_0012781d;
    }
    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);
    if (__s == (char *)0x0) {
      return false;
    }
    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);
  }
  if ((uVar1 & 4) != 0) {
    return false;
  }
LAB_0012781d:
  pcVar3 = strchr(__s,1);
  if (((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&
     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)) {
    if (DAT_001638b4 != 0) {
      return false;
    }
    iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);
    if (iVar2 == 0) {
      if (DAT_00163950 == 0) {
        return false;
      }
      if (*__s != '?') {
        return false;
      }
      return __s[1] == '?';
    }
  }
  return true;
}


PUSH RBP
PUSH RBX
SUB RSP,0x8
MOV RBX,qword ptr [RDI + 0x8]
TEST byte ptr [RDI],0x1
JZ 0x001277c0
CMP qword ptr [0x00163898],RBX
JZ 0x001277b8
MOV EAX,0x1
ADD RSP,0x8
POP RBX
POP RBP
RET
MOV RDI,qword ptr [RDI + 0x18]
MOV RBX,qword ptr [RDI + 0x8]
MOV EAX,dword ptr [RBX + 0x18]
MOV EDX,EAX
AND EDX,0x3
CMP EDX,0x3
JZ 0x001278d6
MOV RCX,qword ptr [RBX + 0x20]
MOV RDX,qword ptr [0x00163898]
CMP RCX,RDX
JZ 0x001277a8
MOV ESI,dword ptr [0x001638a4]
TEST ESI,ESI
JZ 0x001277fe
TEST EAX,0x4002
JNZ 0x001277fe
LEA RSI,[0x15aad0]
CMP RCX,RSI
JZ 0x001277a8
TEST byte ptr [RDI],0x1
JZ 0x001278a0
CMP RDX,RBX
JZ 0x001278c0
MOV RBP,qword ptr [RDI + 0x10]
TEST RBP,RBP
JZ 0x001278b1
MOV ESI,0x1
MOV RDI,RBP
CALL 0x00107210
TEST RAX,RAX
JNZ 0x001277a8
MOV ESI,0x2
MOV RDI,RBP
CALL 0x00107210
TEST RAX,RAX
JNZ 0x001277a8
MOV ESI,0x20
MOV RDI,RBP
CALL 0x00107210
TEST RAX,RAX
JNZ 0x001277a8
MOV EDX,dword ptr [0x001638b4]
TEST EDX,EDX
JNZ 0x001278b1
MOV RDI,qword ptr [0x00163a50]
MOV RSI,RBX
CALL 0x00107710
TEST EAX,EAX
JNZ 0x001277a8
MOV EAX,dword ptr [0x00163950]
TEST EAX,EAX
JZ 0x001278b1
CMP byte ptr [RBP],0x3f
JNZ 0x001278b1
XOR EAX,EAX
CMP byte ptr [RBP + 0x1],0x3f
SETZ AL
JMP 0x001277ad
MOV RBP,qword ptr [RBX + 0x8]
TEST RBP,RBP
JZ 0x001278b1
TEST AL,0x4
JZ 0x0012781d
ADD RSP,0x8
XOR EAX,EAX
POP RBX
POP RBP
RET
MOV RAX,qword ptr [RDI + 0x18]
MOV RAX,qword ptr [RAX + 0x8]
MOV RBP,qword ptr [RAX + 0x8]
TEST RBP,RBP
JZ 0x001278b1
MOV EAX,dword ptr [RAX + 0x18]
JMP 0x001278a9
LEA RDX,[0x141670]
MOV ESI,0x864
LEA RDI,[0x140fa0]
CALL 0x0011c450
(translation_unit "bool FUN_00127790(byte *param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  char *pcVar3;\n  long lVar4;\n  char *__s;\n  \n  lVar4 = *(long *)(param_1 + 8);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00163898 != lVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0x18);\n    lVar4 = *(long *)(param_1 + 8);\n  }\n  uVar1 = *(uint *)(lVar4 + 0x18);\n  if ((uVar1 & 3) == 3) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }\n  if (*(long *)(lVar4 + 0x20) == DAT_00163898) {\n    return true;\n  }\n  if (((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0)) {\n    return true;\n  }\n  if ((*param_1 & 1) == 0) {\n    __s = *(char **)(lVar4 + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }\n    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);\n  }\n  if ((uVar1 & 4) != 0) {\n    return false;\n  }\nLAB_0012781d:\n  pcVar3 = strchr(__s,1);\n  if (((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&\n     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)) {\n    if (DAT_001638b4 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);\n    if (iVar2 == 0) {\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }\n  return true;\n}\n\n" (function_definition "bool FUN_00127790(byte *param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  char *pcVar3;\n  long lVar4;\n  char *__s;\n  \n  lVar4 = *(long *)(param_1 + 8);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00163898 != lVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0x18);\n    lVar4 = *(long *)(param_1 + 8);\n  }\n  uVar1 = *(uint *)(lVar4 + 0x18);\n  if ((uVar1 & 3) == 3) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }\n  if (*(long *)(lVar4 + 0x20) == DAT_00163898) {\n    return true;\n  }\n  if (((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0)) {\n    return true;\n  }\n  if ((*param_1 & 1) == 0) {\n    __s = *(char **)(lVar4 + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }\n    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);\n  }\n  if ((uVar1 & 4) != 0) {\n    return false;\n  }\nLAB_0012781d:\n  pcVar3 = strchr(__s,1);\n  if (((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&\n     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)) {\n    if (DAT_001638b4 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);\n    if (iVar2 == 0) {\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }\n  return true;\n}" primitive_type (function_declarator "FUN_00127790(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  char *pcVar3;\n  long lVar4;\n  char *__s;\n  \n  lVar4 = *(long *)(param_1 + 8);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00163898 != lVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0x18);\n    lVar4 = *(long *)(param_1 + 8);\n  }\n  uVar1 = *(uint *)(lVar4 + 0x18);\n  if ((uVar1 & 3) == 3) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }\n  if (*(long *)(lVar4 + 0x20) == DAT_00163898) {\n    return true;\n  }\n  if (((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0)) {\n    return true;\n  }\n  if ((*param_1 & 1) == 0) {\n    __s = *(char **)(lVar4 + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }\n    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);\n  }\n  if ((uVar1 & 4) != 0) {\n    return false;\n  }\nLAB_0012781d:\n  pcVar3 = strchr(__s,1);\n  if (((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&\n     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)) {\n    if (DAT_001638b4 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);\n    if (iVar2 == 0) {\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }\n  return true;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (expression_statement "lVar4 = *(long *)(param_1 + 8);" (assignment_expression "lVar4 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (if_statement "if ((*param_1 & 1) != 0) {\n    if (DAT_00163898 != lVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0x18);\n    lVar4 = *(long *)(param_1 + 8);\n  }" if (parenthesized_expression "((*param_1 & 1) != 0)" ( (binary_expression "(*param_1 & 1) != 0" (parenthesized_expression "(*param_1 & 1)" ( (binary_expression "*param_1 & 1" (pointer_expression "*param_1" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    if (DAT_00163898 != lVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0x18);\n    lVar4 = *(long *)(param_1 + 8);\n  }" { (if_statement "if (DAT_00163898 != lVar4) {\n      return true;\n    }" if (parenthesized_expression "(DAT_00163898 != lVar4)" ( (binary_expression "DAT_00163898 != lVar4" identifier != identifier) )) (compound_statement "{\n      return true;\n    }" { (return_statement "return true;" return true ;) })) (expression_statement "param_1 = *(byte **)(param_1 + 0x18);" (assignment_expression "param_1 = *(byte **)(param_1 + 0x18)" identifier = (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "lVar4 = *(long *)(param_1 + 8);" (assignment_expression "lVar4 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "uVar1 = *(uint *)(lVar4 + 0x18);" (assignment_expression "uVar1 = *(uint *)(lVar4 + 0x18)" identifier = (pointer_expression "*(uint *)(lVar4 + 0x18)" * (cast_expression "(uint *)(lVar4 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if ((uVar1 & 3) == 3) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }" if (parenthesized_expression "((uVar1 & 3) == 3)" ( (binary_expression "(uVar1 & 3) == 3" (parenthesized_expression "(uVar1 & 3)" ( (binary_expression "uVar1 & 3" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }" { comment (expression_statement "FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");" (call_expression "FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL")" identifier (argument_list "("../../gas/symbols.c",0x864,"S_IS_LOCAL")" ( (string_literal ""../../gas/symbols.c"" " string_content ") , number_literal , (string_literal ""S_IS_LOCAL"" " string_content ") ))) ;) })) (if_statement "if (*(long *)(lVar4 + 0x20) == DAT_00163898) {\n    return true;\n  }" if (parenthesized_expression "(*(long *)(lVar4 + 0x20) == DAT_00163898)" ( (binary_expression "*(long *)(lVar4 + 0x20) == DAT_00163898" (pointer_expression "*(long *)(lVar4 + 0x20)" * (cast_expression "(long *)(lVar4 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (if_statement "if (((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0)) {\n    return true;\n  }" if (parenthesized_expression "(((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0))" ( (binary_expression "((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0)" (parenthesized_expression "((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0))" ( (binary_expression "(DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)" (parenthesized_expression "(DAT_001638a4 != 0)" ( (binary_expression "DAT_001638a4 != 0" identifier != number_literal) )) && (parenthesized_expression "((uVar1 & 0x4002) == 0)" ( (binary_expression "(uVar1 & 0x4002) == 0" (parenthesized_expression "(uVar1 & 0x4002)" ( (binary_expression "uVar1 & 0x4002" identifier & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(*(long *)(lVar4 + 0x20) == 0x15aad0)" ( (binary_expression "*(long *)(lVar4 + 0x20) == 0x15aad0" (pointer_expression "*(long *)(lVar4 + 0x20)" * (cast_expression "(long *)(lVar4 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (if_statement "if ((*param_1 & 1) == 0) {\n    __s = *(char **)(lVar4 + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }\n    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);\n  }" if (parenthesized_expression "((*param_1 & 1) == 0)" ( (binary_expression "(*param_1 & 1) == 0" (parenthesized_expression "(*param_1 & 1)" ( (binary_expression "*param_1 & 1" (pointer_expression "*param_1" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    __s = *(char **)(lVar4 + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }" { (expression_statement "__s = *(char **)(lVar4 + 8);" (assignment_expression "__s = *(char **)(lVar4 + 8)" identifier = (pointer_expression "*(char **)(lVar4 + 8)" * (cast_expression "(char **)(lVar4 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) ))))) ;) (if_statement "if (__s == (char *)0x0) {\n      return false;\n    }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) }) (else_clause "else {\n    if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }\n    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);\n  }" else (compound_statement "{\n    if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }\n    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);\n  }" { (if_statement "if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }" if (parenthesized_expression "(DAT_00163898 != lVar4)" ( (binary_expression "DAT_00163898 != lVar4" identifier != identifier) )) (compound_statement "{\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }" { (expression_statement "__s = *(char **)(param_1 + 0x10);" (assignment_expression "__s = *(char **)(param_1 + 0x10)" identifier = (pointer_expression "*(char **)(param_1 + 0x10)" * (cast_expression "(char **)(param_1 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (__s == (char *)0x0) {\n        return false;\n      }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (goto_statement "goto LAB_0012781d;" goto statement_identifier ;) })) (expression_statement "__s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);" (assignment_expression "__s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8)" identifier = (pointer_expression "*(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8)" * (cast_expression "(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8)" ( (binary_expression "*(long *)(*(long *)(param_1 + 0x18) + 8) + 8" (pointer_expression "*(long *)(*(long *)(param_1 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(param_1 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x18) + 8)" ( (binary_expression "*(long *)(param_1 + 0x18) + 8" (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (__s == (char *)0x0) {\n      return false;\n    }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);" (assignment_expression "uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18)" identifier = (pointer_expression "*(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18)" * (cast_expression "(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18)" ( (binary_expression "*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18" (pointer_expression "*(long *)(*(long *)(param_1 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(param_1 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x18) + 8)" ( (binary_expression "*(long *)(param_1 + 0x18) + 8" (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) }))) (if_statement "if ((uVar1 & 4) != 0) {\n    return false;\n  }" if (parenthesized_expression "((uVar1 & 4) != 0)" ( (binary_expression "(uVar1 & 4) != 0" (parenthesized_expression "(uVar1 & 4)" ( (binary_expression "uVar1 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (labeled_statement "LAB_0012781d:\n  pcVar3 = strchr(__s,1);" statement_identifier : (expression_statement "pcVar3 = strchr(__s,1);" (assignment_expression "pcVar3 = strchr(__s,1)" identifier = (call_expression "strchr(__s,1)" identifier (argument_list "(__s,1)" ( identifier , number_literal )))) ;)) (if_statement "if (((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&\n     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)) {\n    if (DAT_001638b4 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);\n    if (iVar2 == 0) {\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }" if (parenthesized_expression "(((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&\n     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0))" ( (binary_expression "((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&\n     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)" (parenthesized_expression "((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0))" ( (binary_expression "(pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)" (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)" ( (comma_expression "pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = strchr(__s,2)" identifier = (call_expression "strchr(__s,2)" identifier (argument_list "(__s,2)" ( identifier , number_literal )))) , (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)" ( (comma_expression "pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = strchr(__s,0x20)" identifier = (call_expression "strchr(__s,0x20)" identifier (argument_list "(__s,0x20)" ( identifier , number_literal )))) , (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    if (DAT_001638b4 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);\n    if (iVar2 == 0) {\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }" { (if_statement "if (DAT_001638b4 != 0) {\n      return false;\n    }" if (parenthesized_expression "(DAT_001638b4 != 0)" ( (binary_expression "DAT_001638b4 != 0" identifier != number_literal) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);" (assignment_expression "iVar2 = bfd_is_local_label(DAT_00163a50,lVar4)" identifier = (call_expression "bfd_is_local_label(DAT_00163a50,lVar4)" identifier (argument_list "(DAT_00163a50,lVar4)" ( identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }" { (if_statement "if (DAT_00163950 == 0) {\n        return false;\n      }" if (parenthesized_expression "(DAT_00163950 == 0)" ( (binary_expression "DAT_00163950 == 0" identifier == number_literal) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (if_statement "if (*__s != '?') {\n        return false;\n      }" if (parenthesized_expression "(*__s != '?')" ( (binary_expression "*__s != '?'" (pointer_expression "*__s" * identifier) != (char_literal "'?'" ' character ')) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (return_statement "return __s[1] == '?';" return (binary_expression "__s[1] == '?'" (subscript_expression "__s[1]" identifier [ number_literal ]) == (char_literal "'?'" ' character ')) ;) })) })) (return_statement "return true;" return true ;) })))
(translation_unit "int S_IS_LOCAL(symbolS *s)\n\n{\n  uint uVar1;\n  asymbol *paVar2;\n  int iVar3;\n  char *pcVar4;\n  segT paVar5;\n  symbolS *__s;\n  \n  paVar5 = (segT)s->bsym;\n  if (((uint)s->sy_flags & 1) != 0) {\n    if (reg_section != paVar5) {\n      return 1;\n    }\n    s = (s->sy_value).X_op_symbol;\n    paVar5 = (segT)s->bsym;\n  }\n  uVar1 = *(uint *)&paVar5->prev;\n  if ((uVar1 & 3) == 3) {\n                    /* WARNING: Subroutine does not return */\n    as_abort("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }\n  if (*(segT *)&paVar5->flags == reg_section) {\n    return 1;\n  }\n  if (((flag_strip_local_absolute != 0) && ((uVar1 & 0x4002) == 0)) &&\n     (*(segT *)&paVar5->flags == (segT)(_bfd_std_section + 0x230))) {\n    return 1;\n  }\n  if (((uint)s->sy_flags & 1) == 0) {\n    __s = *(symbolS **)&paVar5->id;\n    if (__s == (symbolS *)0x0) {\n      return 0;\n    }\n  }\n  else {\n    if (reg_section != paVar5) {\n      __s = (s->sy_value).X_add_symbol;\n      if (__s == (symbolS *)0x0) {\n        return 0;\n      }\n      goto LAB_0012781d;\n    }\n    paVar2 = ((s->sy_value).X_op_symbol)->bsym;\n    __s = (symbolS *)paVar2->name;\n    if (__s == (symbolS *)0x0) {\n      return 0;\n    }\n    uVar1 = paVar2->flags;\n  }\n  if ((uVar1 & 4) != 0) {\n    return 0;\n  }\nLAB_0012781d:\n  pcVar4 = strchr((char *)__s,1);\n  if (((pcVar4 == (char *)0x0) && (pcVar4 = strchr((char *)__s,2), pcVar4 == (char *)0x0)) &&\n     (pcVar4 = strchr((char *)__s,0x20), pcVar4 == (char *)0x0)) {\n    if (flag_keep_locals != 0) {\n      return 0;\n    }\n    iVar3 = bfd_is_local_label(stdoutput,paVar5);\n    if (iVar3 == 0) {\n      if (flag_mri == 0) {\n        return 0;\n      }\n      if (*(char *)&__s->sy_flags != '?') {\n        return 0;\n      }\n      return (uint)((__s->sy_flags).field_0x1 == '?');\n    }\n  }\n  return 1;\n}\n\n" (function_definition "int S_IS_LOCAL(symbolS *s)\n\n{\n  uint uVar1;\n  asymbol *paVar2;\n  int iVar3;\n  char *pcVar4;\n  segT paVar5;\n  symbolS *__s;\n  \n  paVar5 = (segT)s->bsym;\n  if (((uint)s->sy_flags & 1) != 0) {\n    if (reg_section != paVar5) {\n      return 1;\n    }\n    s = (s->sy_value).X_op_symbol;\n    paVar5 = (segT)s->bsym;\n  }\n  uVar1 = *(uint *)&paVar5->prev;\n  if ((uVar1 & 3) == 3) {\n                    /* WARNING: Subroutine does not return */\n    as_abort("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }\n  if (*(segT *)&paVar5->flags == reg_section) {\n    return 1;\n  }\n  if (((flag_strip_local_absolute != 0) && ((uVar1 & 0x4002) == 0)) &&\n     (*(segT *)&paVar5->flags == (segT)(_bfd_std_section + 0x230))) {\n    return 1;\n  }\n  if (((uint)s->sy_flags & 1) == 0) {\n    __s = *(symbolS **)&paVar5->id;\n    if (__s == (symbolS *)0x0) {\n      return 0;\n    }\n  }\n  else {\n    if (reg_section != paVar5) {\n      __s = (s->sy_value).X_add_symbol;\n      if (__s == (symbolS *)0x0) {\n        return 0;\n      }\n      goto LAB_0012781d;\n    }\n    paVar2 = ((s->sy_value).X_op_symbol)->bsym;\n    __s = (symbolS *)paVar2->name;\n    if (__s == (symbolS *)0x0) {\n      return 0;\n    }\n    uVar1 = paVar2->flags;\n  }\n  if ((uVar1 & 4) != 0) {\n    return 0;\n  }\nLAB_0012781d:\n  pcVar4 = strchr((char *)__s,1);\n  if (((pcVar4 == (char *)0x0) && (pcVar4 = strchr((char *)__s,2), pcVar4 == (char *)0x0)) &&\n     (pcVar4 = strchr((char *)__s,0x20), pcVar4 == (char *)0x0)) {\n    if (flag_keep_locals != 0) {\n      return 0;\n    }\n    iVar3 = bfd_is_local_label(stdoutput,paVar5);\n    if (iVar3 == 0) {\n      if (flag_mri == 0) {\n        return 0;\n      }\n      if (*(char *)&__s->sy_flags != '?') {\n        return 0;\n      }\n      return (uint)((__s->sy_flags).field_0x1 == '?');\n    }\n  }\n  return 1;\n}" primitive_type (function_declarator "S_IS_LOCAL(symbolS *s)" identifier (parameter_list "(symbolS *s)" ( (parameter_declaration "symbolS *s" type_identifier (pointer_declarator "*s" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  asymbol *paVar2;\n  int iVar3;\n  char *pcVar4;\n  segT paVar5;\n  symbolS *__s;\n  \n  paVar5 = (segT)s->bsym;\n  if (((uint)s->sy_flags & 1) != 0) {\n    if (reg_section != paVar5) {\n      return 1;\n    }\n    s = (s->sy_value).X_op_symbol;\n    paVar5 = (segT)s->bsym;\n  }\n  uVar1 = *(uint *)&paVar5->prev;\n  if ((uVar1 & 3) == 3) {\n                    /* WARNING: Subroutine does not return */\n    as_abort("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }\n  if (*(segT *)&paVar5->flags == reg_section) {\n    return 1;\n  }\n  if (((flag_strip_local_absolute != 0) && ((uVar1 & 0x4002) == 0)) &&\n     (*(segT *)&paVar5->flags == (segT)(_bfd_std_section + 0x230))) {\n    return 1;\n  }\n  if (((uint)s->sy_flags & 1) == 0) {\n    __s = *(symbolS **)&paVar5->id;\n    if (__s == (symbolS *)0x0) {\n      return 0;\n    }\n  }\n  else {\n    if (reg_section != paVar5) {\n      __s = (s->sy_value).X_add_symbol;\n      if (__s == (symbolS *)0x0) {\n        return 0;\n      }\n      goto LAB_0012781d;\n    }\n    paVar2 = ((s->sy_value).X_op_symbol)->bsym;\n    __s = (symbolS *)paVar2->name;\n    if (__s == (symbolS *)0x0) {\n      return 0;\n    }\n    uVar1 = paVar2->flags;\n  }\n  if ((uVar1 & 4) != 0) {\n    return 0;\n  }\nLAB_0012781d:\n  pcVar4 = strchr((char *)__s,1);\n  if (((pcVar4 == (char *)0x0) && (pcVar4 = strchr((char *)__s,2), pcVar4 == (char *)0x0)) &&\n     (pcVar4 = strchr((char *)__s,0x20), pcVar4 == (char *)0x0)) {\n    if (flag_keep_locals != 0) {\n      return 0;\n    }\n    iVar3 = bfd_is_local_label(stdoutput,paVar5);\n    if (iVar3 == 0) {\n      if (flag_mri == 0) {\n        return 0;\n      }\n      if (*(char *)&__s->sy_flags != '?') {\n        return 0;\n      }\n      return (uint)((__s->sy_flags).field_0x1 == '?');\n    }\n  }\n  return 1;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "asymbol *paVar2;" type_identifier (pointer_declarator "*paVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "segT paVar5;" type_identifier identifier ;) (declaration "symbolS *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (expression_statement "paVar5 = (segT)s->bsym;" (assignment_expression "paVar5 = (segT)s->bsym" identifier = (cast_expression "(segT)s->bsym" ( (type_descriptor "segT" type_identifier) ) (field_expression "s->bsym" identifier -> field_identifier))) ;) (if_statement "if (((uint)s->sy_flags & 1) != 0) {\n    if (reg_section != paVar5) {\n      return 1;\n    }\n    s = (s->sy_value).X_op_symbol;\n    paVar5 = (segT)s->bsym;\n  }" if (parenthesized_expression "(((uint)s->sy_flags & 1) != 0)" ( (binary_expression "((uint)s->sy_flags & 1) != 0" (parenthesized_expression "((uint)s->sy_flags & 1)" ( (binary_expression "(uint)s->sy_flags & 1" (cast_expression "(uint)s->sy_flags" ( (type_descriptor "uint" type_identifier) ) (field_expression "s->sy_flags" identifier -> field_identifier)) & number_literal) )) != number_literal) )) (compound_statement "{\n    if (reg_section != paVar5) {\n      return 1;\n    }\n    s = (s->sy_value).X_op_symbol;\n    paVar5 = (segT)s->bsym;\n  }" { (if_statement "if (reg_section != paVar5) {\n      return 1;\n    }" if (parenthesized_expression "(reg_section != paVar5)" ( (binary_expression "reg_section != paVar5" identifier != identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "s = (s->sy_value).X_op_symbol;" (assignment_expression "s = (s->sy_value).X_op_symbol" identifier = (field_expression "(s->sy_value).X_op_symbol" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "paVar5 = (segT)s->bsym;" (assignment_expression "paVar5 = (segT)s->bsym" identifier = (cast_expression "(segT)s->bsym" ( (type_descriptor "segT" type_identifier) ) (field_expression "s->bsym" identifier -> field_identifier))) ;) })) (expression_statement "uVar1 = *(uint *)&paVar5->prev;" (assignment_expression "uVar1 = *(uint *)&paVar5->prev" identifier = (pointer_expression "*(uint *)&paVar5->prev" * (cast_expression "(uint *)&paVar5->prev" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&paVar5->prev" & (field_expression "paVar5->prev" identifier -> field_identifier))))) ;) (if_statement "if ((uVar1 & 3) == 3) {\n                    /* WARNING: Subroutine does not return */\n    as_abort("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }" if (parenthesized_expression "((uVar1 & 3) == 3)" ( (binary_expression "(uVar1 & 3) == 3" (parenthesized_expression "(uVar1 & 3)" ( (binary_expression "uVar1 & 3" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    as_abort("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }" { comment (expression_statement "as_abort("../../gas/symbols.c",0x864,"S_IS_LOCAL");" (call_expression "as_abort("../../gas/symbols.c",0x864,"S_IS_LOCAL")" identifier (argument_list "("../../gas/symbols.c",0x864,"S_IS_LOCAL")" ( (string_literal ""../../gas/symbols.c"" " string_content ") , number_literal , (string_literal ""S_IS_LOCAL"" " string_content ") ))) ;) })) (if_statement "if (*(segT *)&paVar5->flags == reg_section) {\n    return 1;\n  }" if (parenthesized_expression "(*(segT *)&paVar5->flags == reg_section)" ( (binary_expression "*(segT *)&paVar5->flags == reg_section" (pointer_expression "*(segT *)&paVar5->flags" * (cast_expression "(segT *)&paVar5->flags" ( (type_descriptor "segT *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&paVar5->flags" & (field_expression "paVar5->flags" identifier -> field_identifier)))) == identifier) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (((flag_strip_local_absolute != 0) && ((uVar1 & 0x4002) == 0)) &&\n     (*(segT *)&paVar5->flags == (segT)(_bfd_std_section + 0x230))) {\n    return 1;\n  }" if (parenthesized_expression "(((flag_strip_local_absolute != 0) && ((uVar1 & 0x4002) == 0)) &&\n     (*(segT *)&paVar5->flags == (segT)(_bfd_std_section + 0x230)))" ( (binary_expression "((flag_strip_local_absolute != 0) && ((uVar1 & 0x4002) == 0)) &&\n     (*(segT *)&paVar5->flags == (segT)(_bfd_std_section + 0x230))" (parenthesized_expression "((flag_strip_local_absolute != 0) && ((uVar1 & 0x4002) == 0))" ( (binary_expression "(flag_strip_local_absolute != 0) && ((uVar1 & 0x4002) == 0)" (parenthesized_expression "(flag_strip_local_absolute != 0)" ( (binary_expression "flag_strip_local_absolute != 0" identifier != number_literal) )) && (parenthesized_expression "((uVar1 & 0x4002) == 0)" ( (binary_expression "(uVar1 & 0x4002) == 0" (parenthesized_expression "(uVar1 & 0x4002)" ( (binary_expression "uVar1 & 0x4002" identifier & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(*(segT *)&paVar5->flags == (segT)(_bfd_std_section + 0x230))" ( (binary_expression "*(segT *)&paVar5->flags == (segT)(_bfd_std_section + 0x230)" (pointer_expression "*(segT *)&paVar5->flags" * (cast_expression "(segT *)&paVar5->flags" ( (type_descriptor "segT *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&paVar5->flags" & (field_expression "paVar5->flags" identifier -> field_identifier)))) == (call_expression "(segT)(_bfd_std_section + 0x230)" (parenthesized_expression "(segT)" ( identifier )) (argument_list "(_bfd_std_section + 0x230)" ( (binary_expression "_bfd_std_section + 0x230" identifier + number_literal) )))) ))) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (if_statement "if (((uint)s->sy_flags & 1) == 0) {\n    __s = *(symbolS **)&paVar5->id;\n    if (__s == (symbolS *)0x0) {\n      return 0;\n    }\n  }\n  else {\n    if (reg_section != paVar5) {\n      __s = (s->sy_value).X_add_symbol;\n      if (__s == (symbolS *)0x0) {\n        return 0;\n      }\n      goto LAB_0012781d;\n    }\n    paVar2 = ((s->sy_value).X_op_symbol)->bsym;\n    __s = (symbolS *)paVar2->name;\n    if (__s == (symbolS *)0x0) {\n      return 0;\n    }\n    uVar1 = paVar2->flags;\n  }" if (parenthesized_expression "(((uint)s->sy_flags & 1) == 0)" ( (binary_expression "((uint)s->sy_flags & 1) == 0" (parenthesized_expression "((uint)s->sy_flags & 1)" ( (binary_expression "(uint)s->sy_flags & 1" (cast_expression "(uint)s->sy_flags" ( (type_descriptor "uint" type_identifier) ) (field_expression "s->sy_flags" identifier -> field_identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n    __s = *(symbolS **)&paVar5->id;\n    if (__s == (symbolS *)0x0) {\n      return 0;\n    }\n  }" { (expression_statement "__s = *(symbolS **)&paVar5->id;" (assignment_expression "__s = *(symbolS **)&paVar5->id" identifier = (pointer_expression "*(symbolS **)&paVar5->id" * (cast_expression "(symbolS **)&paVar5->id" ( (type_descriptor "symbolS **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&paVar5->id" & (field_expression "paVar5->id" identifier -> field_identifier))))) ;) (if_statement "if (__s == (symbolS *)0x0) {\n      return 0;\n    }" if (parenthesized_expression "(__s == (symbolS *)0x0)" ( (binary_expression "__s == (symbolS *)0x0" identifier == (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n    if (reg_section != paVar5) {\n      __s = (s->sy_value).X_add_symbol;\n      if (__s == (symbolS *)0x0) {\n        return 0;\n      }\n      goto LAB_0012781d;\n    }\n    paVar2 = ((s->sy_value).X_op_symbol)->bsym;\n    __s = (symbolS *)paVar2->name;\n    if (__s == (symbolS *)0x0) {\n      return 0;\n    }\n    uVar1 = paVar2->flags;\n  }" else (compound_statement "{\n    if (reg_section != paVar5) {\n      __s = (s->sy_value).X_add_symbol;\n      if (__s == (symbolS *)0x0) {\n        return 0;\n      }\n      goto LAB_0012781d;\n    }\n    paVar2 = ((s->sy_value).X_op_symbol)->bsym;\n    __s = (symbolS *)paVar2->name;\n    if (__s == (symbolS *)0x0) {\n      return 0;\n    }\n    uVar1 = paVar2->flags;\n  }" { (if_statement "if (reg_section != paVar5) {\n      __s = (s->sy_value).X_add_symbol;\n      if (__s == (symbolS *)0x0) {\n        return 0;\n      }\n      goto LAB_0012781d;\n    }" if (parenthesized_expression "(reg_section != paVar5)" ( (binary_expression "reg_section != paVar5" identifier != identifier) )) (compound_statement "{\n      __s = (s->sy_value).X_add_symbol;\n      if (__s == (symbolS *)0x0) {\n        return 0;\n      }\n      goto LAB_0012781d;\n    }" { (expression_statement "__s = (s->sy_value).X_add_symbol;" (assignment_expression "__s = (s->sy_value).X_add_symbol" identifier = (field_expression "(s->sy_value).X_add_symbol" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (__s == (symbolS *)0x0) {\n        return 0;\n      }" if (parenthesized_expression "(__s == (symbolS *)0x0)" ( (binary_expression "__s == (symbolS *)0x0" identifier == (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_0012781d;" goto statement_identifier ;) })) (expression_statement "paVar2 = ((s->sy_value).X_op_symbol)->bsym;" (assignment_expression "paVar2 = ((s->sy_value).X_op_symbol)->bsym" identifier = (field_expression "((s->sy_value).X_op_symbol)->bsym" (parenthesized_expression "((s->sy_value).X_op_symbol)" ( (field_expression "(s->sy_value).X_op_symbol" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) ;) (expression_statement "__s = (symbolS *)paVar2->name;" (assignment_expression "__s = (symbolS *)paVar2->name" identifier = (cast_expression "(symbolS *)paVar2->name" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "paVar2->name" identifier -> field_identifier))) ;) (if_statement "if (__s == (symbolS *)0x0) {\n      return 0;\n    }" if (parenthesized_expression "(__s == (symbolS *)0x0)" ( (binary_expression "__s == (symbolS *)0x0" identifier == (cast_expression "(symbolS *)0x0" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar1 = paVar2->flags;" (assignment_expression "uVar1 = paVar2->flags" identifier = (field_expression "paVar2->flags" identifier -> field_identifier)) ;) }))) (if_statement "if ((uVar1 & 4) != 0) {\n    return 0;\n  }" if (parenthesized_expression "((uVar1 & 4) != 0)" ( (binary_expression "(uVar1 & 4) != 0" (parenthesized_expression "(uVar1 & 4)" ( (binary_expression "uVar1 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_0012781d:\n  pcVar4 = strchr((char *)__s,1);" statement_identifier : (expression_statement "pcVar4 = strchr((char *)__s,1);" (assignment_expression "pcVar4 = strchr((char *)__s,1)" identifier = (call_expression "strchr((char *)__s,1)" identifier (argument_list "((char *)__s,1)" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) ;)) (if_statement "if (((pcVar4 == (char *)0x0) && (pcVar4 = strchr((char *)__s,2), pcVar4 == (char *)0x0)) &&\n     (pcVar4 = strchr((char *)__s,0x20), pcVar4 == (char *)0x0)) {\n    if (flag_keep_locals != 0) {\n      return 0;\n    }\n    iVar3 = bfd_is_local_label(stdoutput,paVar5);\n    if (iVar3 == 0) {\n      if (flag_mri == 0) {\n        return 0;\n      }\n      if (*(char *)&__s->sy_flags != '?') {\n        return 0;\n      }\n      return (uint)((__s->sy_flags).field_0x1 == '?');\n    }\n  }" if (parenthesized_expression "(((pcVar4 == (char *)0x0) && (pcVar4 = strchr((char *)__s,2), pcVar4 == (char *)0x0)) &&\n     (pcVar4 = strchr((char *)__s,0x20), pcVar4 == (char *)0x0))" ( (binary_expression "((pcVar4 == (char *)0x0) && (pcVar4 = strchr((char *)__s,2), pcVar4 == (char *)0x0)) &&\n     (pcVar4 = strchr((char *)__s,0x20), pcVar4 == (char *)0x0)" (parenthesized_expression "((pcVar4 == (char *)0x0) && (pcVar4 = strchr((char *)__s,2), pcVar4 == (char *)0x0))" ( (binary_expression "(pcVar4 == (char *)0x0) && (pcVar4 = strchr((char *)__s,2), pcVar4 == (char *)0x0)" (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pcVar4 = strchr((char *)__s,2), pcVar4 == (char *)0x0)" ( (comma_expression "pcVar4 = strchr((char *)__s,2), pcVar4 == (char *)0x0" (assignment_expression "pcVar4 = strchr((char *)__s,2)" identifier = (call_expression "strchr((char *)__s,2)" identifier (argument_list "((char *)__s,2)" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) , (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(pcVar4 = strchr((char *)__s,0x20), pcVar4 == (char *)0x0)" ( (comma_expression "pcVar4 = strchr((char *)__s,0x20), pcVar4 == (char *)0x0" (assignment_expression "pcVar4 = strchr((char *)__s,0x20)" identifier = (call_expression "strchr((char *)__s,0x20)" identifier (argument_list "((char *)__s,0x20)" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) , (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    if (flag_keep_locals != 0) {\n      return 0;\n    }\n    iVar3 = bfd_is_local_label(stdoutput,paVar5);\n    if (iVar3 == 0) {\n      if (flag_mri == 0) {\n        return 0;\n      }\n      if (*(char *)&__s->sy_flags != '?') {\n        return 0;\n      }\n      return (uint)((__s->sy_flags).field_0x1 == '?');\n    }\n  }" { (if_statement "if (flag_keep_locals != 0) {\n      return 0;\n    }" if (parenthesized_expression "(flag_keep_locals != 0)" ( (binary_expression "flag_keep_locals != 0" identifier != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar3 = bfd_is_local_label(stdoutput,paVar5);" (assignment_expression "iVar3 = bfd_is_local_label(stdoutput,paVar5)" identifier = (call_expression "bfd_is_local_label(stdoutput,paVar5)" identifier (argument_list "(stdoutput,paVar5)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n      if (flag_mri == 0) {\n        return 0;\n      }\n      if (*(char *)&__s->sy_flags != '?') {\n        return 0;\n      }\n      return (uint)((__s->sy_flags).field_0x1 == '?');\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      if (flag_mri == 0) {\n        return 0;\n      }\n      if (*(char *)&__s->sy_flags != '?') {\n        return 0;\n      }\n      return (uint)((__s->sy_flags).field_0x1 == '?');\n    }" { (if_statement "if (flag_mri == 0) {\n        return 0;\n      }" if (parenthesized_expression "(flag_mri == 0)" ( (binary_expression "flag_mri == 0" identifier == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(char *)&__s->sy_flags != '?') {\n        return 0;\n      }" if (parenthesized_expression "(*(char *)&__s->sy_flags != '?')" ( (binary_expression "*(char *)&__s->sy_flags != '?'" (pointer_expression "*(char *)&__s->sy_flags" * (cast_expression "(char *)&__s->sy_flags" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&__s->sy_flags" & (field_expression "__s->sy_flags" identifier -> field_identifier)))) != (char_literal "'?'" ' character ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (return_statement "return (uint)((__s->sy_flags).field_0x1 == '?');" return (call_expression "(uint)((__s->sy_flags).field_0x1 == '?')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((__s->sy_flags).field_0x1 == '?')" ( (binary_expression "(__s->sy_flags).field_0x1 == '?'" (field_expression "(__s->sy_flags).field_0x1" (parenthesized_expression "(__s->sy_flags)" ( (field_expression "__s->sy_flags" identifier -> field_identifier) )) . field_identifier) == (char_literal "'?'" ' character ')) ))) ;) })) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "bool FUN_00127790(byte *param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  char *pcVar3;\n  long lVar4;\n  char *__s;\n  \n  lVar4 = *(long *)(param_1 + 8);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00163898 != lVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0x18);\n    lVar4 = *(long *)(param_1 + 8);\n  }\n  uVar1 = *(uint *)(lVar4 + 0x18);\n  if ((uVar1 & 3) == 3) {\n                    \n    FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }\n  if (*(long *)(lVar4 + 0x20) == DAT_00163898) {\n    return true;\n  }\n  if (((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0)) {\n    return true;\n  }\n  if ((*param_1 & 1) == 0) {\n    __s = *(char **)(lVar4 + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }\n    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);\n  }\n  if ((uVar1 & 4) != 0) {\n    return false;\n  }\nLAB_0012781d:\n  pcVar3 = strchr(__s,1);\n  if (((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&\n     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)) {\n    if (DAT_001638b4 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);\n    if (iVar2 == 0) {\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }\n  return true;\n}\n\n" (function_definition "bool FUN_00127790(byte *param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  char *pcVar3;\n  long lVar4;\n  char *__s;\n  \n  lVar4 = *(long *)(param_1 + 8);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00163898 != lVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0x18);\n    lVar4 = *(long *)(param_1 + 8);\n  }\n  uVar1 = *(uint *)(lVar4 + 0x18);\n  if ((uVar1 & 3) == 3) {\n                    \n    FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }\n  if (*(long *)(lVar4 + 0x20) == DAT_00163898) {\n    return true;\n  }\n  if (((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0)) {\n    return true;\n  }\n  if ((*param_1 & 1) == 0) {\n    __s = *(char **)(lVar4 + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }\n    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);\n  }\n  if ((uVar1 & 4) != 0) {\n    return false;\n  }\nLAB_0012781d:\n  pcVar3 = strchr(__s,1);\n  if (((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&\n     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)) {\n    if (DAT_001638b4 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);\n    if (iVar2 == 0) {\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }\n  return true;\n}" primitive_type (function_declarator "FUN_00127790(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  char *pcVar3;\n  long lVar4;\n  char *__s;\n  \n  lVar4 = *(long *)(param_1 + 8);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00163898 != lVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0x18);\n    lVar4 = *(long *)(param_1 + 8);\n  }\n  uVar1 = *(uint *)(lVar4 + 0x18);\n  if ((uVar1 & 3) == 3) {\n                    \n    FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }\n  if (*(long *)(lVar4 + 0x20) == DAT_00163898) {\n    return true;\n  }\n  if (((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0)) {\n    return true;\n  }\n  if ((*param_1 & 1) == 0) {\n    __s = *(char **)(lVar4 + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }\n    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);\n  }\n  if ((uVar1 & 4) != 0) {\n    return false;\n  }\nLAB_0012781d:\n  pcVar3 = strchr(__s,1);\n  if (((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&\n     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)) {\n    if (DAT_001638b4 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);\n    if (iVar2 == 0) {\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }\n  return true;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (expression_statement "lVar4 = *(long *)(param_1 + 8);" (assignment_expression "lVar4 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (if_statement "if ((*param_1 & 1) != 0) {\n    if (DAT_00163898 != lVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0x18);\n    lVar4 = *(long *)(param_1 + 8);\n  }" if (parenthesized_expression "((*param_1 & 1) != 0)" ( (binary_expression "(*param_1 & 1) != 0" (parenthesized_expression "(*param_1 & 1)" ( (binary_expression "*param_1 & 1" (pointer_expression "*param_1" * identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    if (DAT_00163898 != lVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0x18);\n    lVar4 = *(long *)(param_1 + 8);\n  }" { (if_statement "if (DAT_00163898 != lVar4) {\n      return true;\n    }" if (parenthesized_expression "(DAT_00163898 != lVar4)" ( (binary_expression "DAT_00163898 != lVar4" identifier != identifier) )) (compound_statement "{\n      return true;\n    }" { (return_statement "return true;" return true ;) })) (expression_statement "param_1 = *(byte **)(param_1 + 0x18);" (assignment_expression "param_1 = *(byte **)(param_1 + 0x18)" identifier = (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "lVar4 = *(long *)(param_1 + 8);" (assignment_expression "lVar4 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "uVar1 = *(uint *)(lVar4 + 0x18);" (assignment_expression "uVar1 = *(uint *)(lVar4 + 0x18)" identifier = (pointer_expression "*(uint *)(lVar4 + 0x18)" * (cast_expression "(uint *)(lVar4 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if ((uVar1 & 3) == 3) {\n                    \n    FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }" if (parenthesized_expression "((uVar1 & 3) == 3)" ( (binary_expression "(uVar1 & 3) == 3" (parenthesized_expression "(uVar1 & 3)" ( (binary_expression "uVar1 & 3" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n    FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }" { (expression_statement "FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");" (call_expression "FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL")" identifier (argument_list "("../../gas/symbols.c",0x864,"S_IS_LOCAL")" ( (string_literal ""../../gas/symbols.c"" " string_content ") , number_literal , (string_literal ""S_IS_LOCAL"" " string_content ") ))) ;) })) (if_statement "if (*(long *)(lVar4 + 0x20) == DAT_00163898) {\n    return true;\n  }" if (parenthesized_expression "(*(long *)(lVar4 + 0x20) == DAT_00163898)" ( (binary_expression "*(long *)(lVar4 + 0x20) == DAT_00163898" (pointer_expression "*(long *)(lVar4 + 0x20)" * (cast_expression "(long *)(lVar4 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (if_statement "if (((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0)) {\n    return true;\n  }" if (parenthesized_expression "(((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0))" ( (binary_expression "((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0)" (parenthesized_expression "((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0))" ( (binary_expression "(DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)" (parenthesized_expression "(DAT_001638a4 != 0)" ( (binary_expression "DAT_001638a4 != 0" identifier != number_literal) )) && (parenthesized_expression "((uVar1 & 0x4002) == 0)" ( (binary_expression "(uVar1 & 0x4002) == 0" (parenthesized_expression "(uVar1 & 0x4002)" ( (binary_expression "uVar1 & 0x4002" identifier & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(*(long *)(lVar4 + 0x20) == 0x15aad0)" ( (binary_expression "*(long *)(lVar4 + 0x20) == 0x15aad0" (pointer_expression "*(long *)(lVar4 + 0x20)" * (cast_expression "(long *)(lVar4 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (if_statement "if ((*param_1 & 1) == 0) {\n    __s = *(char **)(lVar4 + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }\n    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);\n  }" if (parenthesized_expression "((*param_1 & 1) == 0)" ( (binary_expression "(*param_1 & 1) == 0" (parenthesized_expression "(*param_1 & 1)" ( (binary_expression "*param_1 & 1" (pointer_expression "*param_1" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    __s = *(char **)(lVar4 + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }" { (expression_statement "__s = *(char **)(lVar4 + 8);" (assignment_expression "__s = *(char **)(lVar4 + 8)" identifier = (pointer_expression "*(char **)(lVar4 + 8)" * (cast_expression "(char **)(lVar4 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) ))))) ;) (if_statement "if (__s == (char *)0x0) {\n      return false;\n    }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) }) (else_clause "else {\n    if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }\n    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);\n  }" else (compound_statement "{\n    if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }\n    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);\n  }" { (if_statement "if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }" if (parenthesized_expression "(DAT_00163898 != lVar4)" ( (binary_expression "DAT_00163898 != lVar4" identifier != identifier) )) (compound_statement "{\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }" { (expression_statement "__s = *(char **)(param_1 + 0x10);" (assignment_expression "__s = *(char **)(param_1 + 0x10)" identifier = (pointer_expression "*(char **)(param_1 + 0x10)" * (cast_expression "(char **)(param_1 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (__s == (char *)0x0) {\n        return false;\n      }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (goto_statement "goto LAB_0012781d;" goto statement_identifier ;) })) (expression_statement "__s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);" (assignment_expression "__s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8)" identifier = (pointer_expression "*(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8)" * (cast_expression "(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8)" ( (binary_expression "*(long *)(*(long *)(param_1 + 0x18) + 8) + 8" (pointer_expression "*(long *)(*(long *)(param_1 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(param_1 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x18) + 8)" ( (binary_expression "*(long *)(param_1 + 0x18) + 8" (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (__s == (char *)0x0) {\n      return false;\n    }" if (parenthesized_expression "(__s == (char *)0x0)" ( (binary_expression "__s == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);" (assignment_expression "uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18)" identifier = (pointer_expression "*(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18)" * (cast_expression "(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18)" ( (binary_expression "*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18" (pointer_expression "*(long *)(*(long *)(param_1 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(param_1 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x18) + 8)" ( (binary_expression "*(long *)(param_1 + 0x18) + 8" (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) }))) (if_statement "if ((uVar1 & 4) != 0) {\n    return false;\n  }" if (parenthesized_expression "((uVar1 & 4) != 0)" ( (binary_expression "(uVar1 & 4) != 0" (parenthesized_expression "(uVar1 & 4)" ( (binary_expression "uVar1 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (labeled_statement "LAB_0012781d:\n  pcVar3 = strchr(__s,1);" statement_identifier : (expression_statement "pcVar3 = strchr(__s,1);" (assignment_expression "pcVar3 = strchr(__s,1)" identifier = (call_expression "strchr(__s,1)" identifier (argument_list "(__s,1)" ( identifier , number_literal )))) ;)) (if_statement "if (((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&\n     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)) {\n    if (DAT_001638b4 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);\n    if (iVar2 == 0) {\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }" if (parenthesized_expression "(((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&\n     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0))" ( (binary_expression "((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&\n     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)" (parenthesized_expression "((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0))" ( (binary_expression "(pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)" (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)" ( (comma_expression "pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = strchr(__s,2)" identifier = (call_expression "strchr(__s,2)" identifier (argument_list "(__s,2)" ( identifier , number_literal )))) , (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)" ( (comma_expression "pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = strchr(__s,0x20)" identifier = (call_expression "strchr(__s,0x20)" identifier (argument_list "(__s,0x20)" ( identifier , number_literal )))) , (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    if (DAT_001638b4 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);\n    if (iVar2 == 0) {\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }" { (if_statement "if (DAT_001638b4 != 0) {\n      return false;\n    }" if (parenthesized_expression "(DAT_001638b4 != 0)" ( (binary_expression "DAT_001638b4 != 0" identifier != number_literal) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);" (assignment_expression "iVar2 = bfd_is_local_label(DAT_00163a50,lVar4)" identifier = (call_expression "bfd_is_local_label(DAT_00163a50,lVar4)" identifier (argument_list "(DAT_00163a50,lVar4)" ( identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }" { (if_statement "if (DAT_00163950 == 0) {\n        return false;\n      }" if (parenthesized_expression "(DAT_00163950 == 0)" ( (binary_expression "DAT_00163950 == 0" identifier == number_literal) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (if_statement "if (*__s != '?') {\n        return false;\n      }" if (parenthesized_expression "(*__s != '?')" ( (binary_expression "*__s != '?'" (pointer_expression "*__s" * identifier) != (char_literal "'?'" ' character ')) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (return_statement "return __s[1] == '?';" return (binary_expression "__s[1] == '?'" (subscript_expression "__s[1]" identifier [ number_literal ]) == (char_literal "'?'" ' character ')) ;) })) })) (return_statement "return true;" return true ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (return_statement return BOOL ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (return_statement return BOOL ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return BOOL ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return BOOL ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (return_statement return BOOL ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return BOOL ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return BOOL ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' character ')) )) (compound_statement { (return_statement return BOOL ;) })) (return_statement return (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character ')) ;) })) })) (return_statement return BOOL ;) })))
(function_definition "bool FUN_00127790(byte *param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  char *pcVar3;\n  long lVar4;\n  char *__s;\n  \n  lVar4 = *(long *)(param_1 + 8);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00163898 != lVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0x18);\n    lVar4 = *(long *)(param_1 + 8);\n  }\n  uVar1 = *(uint *)(lVar4 + 0x18);\n  if ((uVar1 & 3) == 3) {\n                    \n    FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }\n  if (*(long *)(lVar4 + 0x20) == DAT_00163898) {\n    return true;\n  }\n  if (((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0)) {\n    return true;\n  }\n  if ((*param_1 & 1) == 0) {\n    __s = *(char **)(lVar4 + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }\n    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);\n  }\n  if ((uVar1 & 4) != 0) {\n    return false;\n  }\nLAB_0012781d:\n  pcVar3 = strchr(__s,1);\n  if (((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&\n     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)) {\n    if (DAT_001638b4 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);\n    if (iVar2 == 0) {\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }\n  return true;\n}" (primitive_type "bool") (function_declarator "FUN_00127790(byte *param_1)" (identifier "FUN_00127790") (parameter_list "(byte *param_1)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  char *pcVar3;\n  long lVar4;\n  char *__s;\n  \n  lVar4 = *(long *)(param_1 + 8);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00163898 != lVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0x18);\n    lVar4 = *(long *)(param_1 + 8);\n  }\n  uVar1 = *(uint *)(lVar4 + 0x18);\n  if ((uVar1 & 3) == 3) {\n                    \n    FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }\n  if (*(long *)(lVar4 + 0x20) == DAT_00163898) {\n    return true;\n  }\n  if (((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0)) {\n    return true;\n  }\n  if ((*param_1 & 1) == 0) {\n    __s = *(char **)(lVar4 + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }\n    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);\n  }\n  if ((uVar1 & 4) != 0) {\n    return false;\n  }\nLAB_0012781d:\n  pcVar3 = strchr(__s,1);\n  if (((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&\n     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)) {\n    if (DAT_001638b4 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);\n    if (iVar2 == 0) {\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }\n  return true;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (expression_statement "lVar4 = *(long *)(param_1 + 8);" (assignment_expression "lVar4 = *(long *)(param_1 + 8)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if ((*param_1 & 1) != 0) {\n    if (DAT_00163898 != lVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0x18);\n    lVar4 = *(long *)(param_1 + 8);\n  }" (if "if") (parenthesized_expression "((*param_1 & 1) != 0)" (( "(") (binary_expression "(*param_1 & 1) != 0" (parenthesized_expression "(*param_1 & 1)" (( "(") (binary_expression "*param_1 & 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (DAT_00163898 != lVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0x18);\n    lVar4 = *(long *)(param_1 + 8);\n  }" ({ "{") (if_statement "if (DAT_00163898 != lVar4) {\n      return true;\n    }" (if "if") (parenthesized_expression "(DAT_00163898 != lVar4)" (( "(") (binary_expression "DAT_00163898 != lVar4" (identifier "DAT_00163898") (!= "!=") (identifier "lVar4")) () ")")) (compound_statement "{\n      return true;\n    }" ({ "{") (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (expression_statement "param_1 = *(byte **)(param_1 + 0x18);" (assignment_expression "param_1 = *(byte **)(param_1 + 0x18)" (identifier "param_1") (= "=") (pointer_expression "*(byte **)(param_1 + 0x18)" (* "*") (cast_expression "(byte **)(param_1 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "lVar4 = *(long *)(param_1 + 8);" (assignment_expression "lVar4 = *(long *)(param_1 + 8)" (identifier "lVar4") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar1 = *(uint *)(lVar4 + 0x18);" (assignment_expression "uVar1 = *(uint *)(lVar4 + 0x18)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(lVar4 + 0x18)" (* "*") (cast_expression "(uint *)(lVar4 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if ((uVar1 & 3) == 3) {\n                    \n    FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }" (if "if") (parenthesized_expression "((uVar1 & 3) == 3)" (( "(") (binary_expression "(uVar1 & 3) == 3" (parenthesized_expression "(uVar1 & 3)" (( "(") (binary_expression "uVar1 & 3" (identifier "uVar1") (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "3")) () ")")) (compound_statement "{\n                    \n    FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }" ({ "{") (expression_statement "FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");" (call_expression "FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL")" (identifier "FUN_0011c450") (argument_list "("../../gas/symbols.c",0x864,"S_IS_LOCAL")" (( "(") (string_literal ""../../gas/symbols.c"" (" """) (string_content "../../gas/symbols.c") (" """)) (, ",") (number_literal "0x864") (, ",") (string_literal ""S_IS_LOCAL"" (" """) (string_content "S_IS_LOCAL") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(long *)(lVar4 + 0x20) == DAT_00163898) {\n    return true;\n  }" (if "if") (parenthesized_expression "(*(long *)(lVar4 + 0x20) == DAT_00163898)" (( "(") (binary_expression "*(long *)(lVar4 + 0x20) == DAT_00163898" (pointer_expression "*(long *)(lVar4 + 0x20)" (* "*") (cast_expression "(long *)(lVar4 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) (== "==") (identifier "DAT_00163898")) () ")")) (compound_statement "{\n    return true;\n  }" ({ "{") (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (if_statement "if (((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0)) {\n    return true;\n  }" (if "if") (parenthesized_expression "(((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0))" (( "(") (binary_expression "((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0)" (parenthesized_expression "((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0))" (( "(") (binary_expression "(DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)" (parenthesized_expression "(DAT_001638a4 != 0)" (( "(") (binary_expression "DAT_001638a4 != 0" (identifier "DAT_001638a4") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((uVar1 & 0x4002) == 0)" (( "(") (binary_expression "(uVar1 & 0x4002) == 0" (parenthesized_expression "(uVar1 & 0x4002)" (( "(") (binary_expression "uVar1 & 0x4002" (identifier "uVar1") (& "&") (number_literal "0x4002")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(long *)(lVar4 + 0x20) == 0x15aad0)" (( "(") (binary_expression "*(long *)(lVar4 + 0x20) == 0x15aad0" (pointer_expression "*(long *)(lVar4 + 0x20)" (* "*") (cast_expression "(long *)(lVar4 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) (== "==") (number_literal "0x15aad0")) () ")"))) () ")")) (compound_statement "{\n    return true;\n  }" ({ "{") (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (if_statement "if ((*param_1 & 1) == 0) {\n    __s = *(char **)(lVar4 + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }\n    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);\n  }" (if "if") (parenthesized_expression "((*param_1 & 1) == 0)" (( "(") (binary_expression "(*param_1 & 1) == 0" (parenthesized_expression "(*param_1 & 1)" (( "(") (binary_expression "*param_1 & 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    __s = *(char **)(lVar4 + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }" ({ "{") (expression_statement "__s = *(char **)(lVar4 + 8);" (assignment_expression "__s = *(char **)(lVar4 + 8)" (identifier "__s") (= "=") (pointer_expression "*(char **)(lVar4 + 8)" (* "*") (cast_expression "(char **)(lVar4 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 8)" (( "(") (binary_expression "lVar4 + 8" (identifier "lVar4") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (__s == (char *)0x0) {\n      return false;\n    }" (if "if") (parenthesized_expression "(__s == (char *)0x0)" (( "(") (binary_expression "__s == (char *)0x0" (identifier "__s") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return false;\n    }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }\n    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);\n  }" (else "else") (compound_statement "{\n    if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }\n    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);\n  }" ({ "{") (if_statement "if (DAT_00163898 != lVar4) {\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }" (if "if") (parenthesized_expression "(DAT_00163898 != lVar4)" (( "(") (binary_expression "DAT_00163898 != lVar4" (identifier "DAT_00163898") (!= "!=") (identifier "lVar4")) () ")")) (compound_statement "{\n      __s = *(char **)(param_1 + 0x10);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0012781d;\n    }" ({ "{") (expression_statement "__s = *(char **)(param_1 + 0x10);" (assignment_expression "__s = *(char **)(param_1 + 0x10)" (identifier "__s") (= "=") (pointer_expression "*(char **)(param_1 + 0x10)" (* "*") (cast_expression "(char **)(param_1 + 0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (__s == (char *)0x0) {\n        return false;\n      }" (if "if") (parenthesized_expression "(__s == (char *)0x0)" (( "(") (binary_expression "__s == (char *)0x0" (identifier "__s") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        return false;\n      }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (goto_statement "goto LAB_0012781d;" (goto "goto") (statement_identifier "LAB_0012781d") (; ";")) (} "}"))) (expression_statement "__s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);" (assignment_expression "__s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8)" (identifier "__s") (= "=") (pointer_expression "*(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8)" (* "*") (cast_expression "(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8)" (( "(") (binary_expression "*(long *)(*(long *)(param_1 + 0x18) + 8) + 8" (pointer_expression "*(long *)(*(long *)(param_1 + 0x18) + 8)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x18) + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x18) + 8)" (( "(") (binary_expression "*(long *)(param_1 + 0x18) + 8" (pointer_expression "*(long *)(param_1 + 0x18)" (* "*") (cast_expression "(long *)(param_1 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (__s == (char *)0x0) {\n      return false;\n    }" (if "if") (parenthesized_expression "(__s == (char *)0x0)" (( "(") (binary_expression "__s == (char *)0x0" (identifier "__s") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return false;\n    }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (expression_statement "uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);" (assignment_expression "uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18)" (* "*") (cast_expression "(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18)" (( "(") (binary_expression "*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18" (pointer_expression "*(long *)(*(long *)(param_1 + 0x18) + 8)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x18) + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x18) + 8)" (( "(") (binary_expression "*(long *)(param_1 + 0x18) + 8" (pointer_expression "*(long *)(param_1 + 0x18)" (* "*") (cast_expression "(long *)(param_1 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (} "}")))) (if_statement "if ((uVar1 & 4) != 0) {\n    return false;\n  }" (if "if") (parenthesized_expression "((uVar1 & 4) != 0)" (( "(") (binary_expression "(uVar1 & 4) != 0" (parenthesized_expression "(uVar1 & 4)" (( "(") (binary_expression "uVar1 & 4" (identifier "uVar1") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return false;\n  }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (labeled_statement "LAB_0012781d:\n  pcVar3 = strchr(__s,1);" (statement_identifier "LAB_0012781d") (: ":") (expression_statement "pcVar3 = strchr(__s,1);" (assignment_expression "pcVar3 = strchr(__s,1)" (identifier "pcVar3") (= "=") (call_expression "strchr(__s,1)" (identifier "strchr") (argument_list "(__s,1)" (( "(") (identifier "__s") (, ",") (number_literal "1") () ")")))) (; ";"))) (if_statement "if (((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&\n     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)) {\n    if (DAT_001638b4 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);\n    if (iVar2 == 0) {\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }" (if "if") (parenthesized_expression "(((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&\n     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0))" (( "(") (binary_expression "((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&\n     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)" (parenthesized_expression "((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0))" (( "(") (binary_expression "(pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)" (parenthesized_expression "(pcVar3 == (char *)0x0)" (( "(") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)" (( "(") (comma_expression "pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = strchr(__s,2)" (identifier "pcVar3") (= "=") (call_expression "strchr(__s,2)" (identifier "strchr") (argument_list "(__s,2)" (( "(") (identifier "__s") (, ",") (number_literal "2") () ")")))) (, ",") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)" (( "(") (comma_expression "pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = strchr(__s,0x20)" (identifier "pcVar3") (= "=") (call_expression "strchr(__s,0x20)" (identifier "strchr") (argument_list "(__s,0x20)" (( "(") (identifier "__s") (, ",") (number_literal "0x20") () ")")))) (, ",") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n    if (DAT_001638b4 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);\n    if (iVar2 == 0) {\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }" ({ "{") (if_statement "if (DAT_001638b4 != 0) {\n      return false;\n    }" (if "if") (parenthesized_expression "(DAT_001638b4 != 0)" (( "(") (binary_expression "DAT_001638b4 != 0" (identifier "DAT_001638b4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return false;\n    }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (expression_statement "iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);" (assignment_expression "iVar2 = bfd_is_local_label(DAT_00163a50,lVar4)" (identifier "iVar2") (= "=") (call_expression "bfd_is_local_label(DAT_00163a50,lVar4)" (identifier "bfd_is_local_label") (argument_list "(DAT_00163a50,lVar4)" (( "(") (identifier "DAT_00163a50") (, ",") (identifier "lVar4") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (DAT_00163950 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }" ({ "{") (if_statement "if (DAT_00163950 == 0) {\n        return false;\n      }" (if "if") (parenthesized_expression "(DAT_00163950 == 0)" (( "(") (binary_expression "DAT_00163950 == 0" (identifier "DAT_00163950") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return false;\n      }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (if_statement "if (*__s != '?') {\n        return false;\n      }" (if "if") (parenthesized_expression "(*__s != '?')" (( "(") (binary_expression "*__s != '?'" (pointer_expression "*__s" (* "*") (identifier "__s")) (!= "!=") (char_literal "'?'" (' "'") (character "?") (' "'"))) () ")")) (compound_statement "{\n        return false;\n      }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (return_statement "return __s[1] == '?';" (return "return") (binary_expression "__s[1] == '?'" (subscript_expression "__s[1]" (identifier "__s") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'?'" (' "'") (character "?") (' "'"))) (; ";")) (} "}"))) (} "}"))) (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}")))

int function_1(type_1 *s)

{
  type_2 var_3;
  type_3 *paVar2;
  int var_12;
  char *var_9;
  type_4 var_2;
  type_1 *var_7;
  
  var_2 = (type_4)s->bsym;
  if (((type_2)s->sy_flags & 1) != 0) {
    if (var_1 != var_2) {
      return 1;
    }
    s = (s->sy_value).X_op_symbol;
    var_2 = (type_4)s->bsym;
  }
  var_3 = *(type_2 *)&var_2->prev;
  if ((var_3 & 3) == 3) {
                    /* WARNING: Subroutine does not return */
    var_4("../../gas/symbols.c",0x864,"S_IS_LOCAL");
  }
  if (*(type_4 *)&var_2->flags == var_1) {
    return 1;
  }
  if (((var_5 != 0) && ((var_3 & 0x4002) == 0)) &&
     (*(type_4 *)&var_2->flags == (type_4)(var_6 + 0x230))) {
    return 1;
  }
  if (((type_2)s->sy_flags & 1) == 0) {
    var_7 = *(type_1 **)&var_2->id;
    if (var_7 == (type_1 *)0x0) {
      return 0;
    }
  }
  else {
    if (var_1 != var_2) {
      var_7 = (s->sy_value).X_add_symbol;
      if (var_7 == (type_1 *)0x0) {
        return 0;
      }
      goto LAB_0012781d;
    }
    paVar2 = ((s->sy_value).X_op_symbol)->bsym;
    var_7 = (type_1 *)paVar2->name;
    if (var_7 == (type_1 *)0x0) {
      return 0;
    }
    var_3 = paVar2->flags;
  }
  if ((var_3 & 4) != 0) {
    return 0;
  }
LAB_0012781d:
  var_9 = var_8((char *)var_7,1);
  if (((var_9 == (char *)0x0) && (var_9 = var_8((char *)var_7,2), var_9 == (char *)0x0)) &&
     (var_9 = var_8((char *)var_7,0x20), var_9 == (char *)0x0)) {
    if (var_10 != 0) {
      return 0;
    }
    var_12 = var_11(stdoutput,var_2);
    if (var_12 == 0) {
      if (var_13 == 0) {
        return 0;
      }
      if (*(char *)&var_7->sy_flags != '?') {
        return 0;
      }
      return (type_2)((var_7->sy_flags).field_0x1 == '?');
    }
  }
  return 1;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement (true)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (return_statement (true)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (return_statement (true)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement (false))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement (false)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement (false)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (number_literal)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_statement (false)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (false)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (false)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (return_statement (false)))) (return_statement (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (character)))))))) (return_statement (true)))))

bool MASKED(byte *param_1)

{
  uint uVar1;
  int iVar2;
  char *pcVar3;
  long lVar4;
  char *__s;
  
  lVar4 = *(long *)(param_1 + 8);
  if ((*param_1 & 1) != 0) {
    if (DAT_00163898 != lVar4) {
      return true;
    }
    param_1 = *(byte **)(param_1 + 0x18);
    lVar4 = *(long *)(param_1 + 8);
  }
  uVar1 = *(uint *)(lVar4 + 0x18);
  if ((uVar1 & 3) == 3) {
                    /* WARNING: Subroutine does not return */
    FUN_0011c450("../../gas/symbols.c",0x864,"S_IS_LOCAL");
  }
  if (*(long *)(lVar4 + 0x20) == DAT_00163898) {
    return true;
  }
  if (((DAT_001638a4 != 0) && ((uVar1 & 0x4002) == 0)) && (*(long *)(lVar4 + 0x20) == 0x15aad0)) {
    return true;
  }
  if ((*param_1 & 1) == 0) {
    __s = *(char **)(lVar4 + 8);
    if (__s == (char *)0x0) {
      return false;
    }
  }
  else {
    if (DAT_00163898 != lVar4) {
      __s = *(char **)(param_1 + 0x10);
      if (__s == (char *)0x0) {
        return false;
      }
      goto LAB_0012781d;
    }
    __s = *(char **)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 8);
    if (__s == (char *)0x0) {
      return false;
    }
    uVar1 = *(uint *)(*(long *)(*(long *)(param_1 + 0x18) + 8) + 0x18);
  }
  if ((uVar1 & 4) != 0) {
    return false;
  }
LAB_0012781d:
  pcVar3 = strchr(__s,1);
  if (((pcVar3 == (char *)0x0) && (pcVar3 = strchr(__s,2), pcVar3 == (char *)0x0)) &&
     (pcVar3 = strchr(__s,0x20), pcVar3 == (char *)0x0)) {
    if (DAT_001638b4 != 0) {
      return false;
    }
    iVar2 = bfd_is_local_label(DAT_00163a50,lVar4);
    if (iVar2 == 0) {
      if (DAT_00163950 == 0) {
        return false;
      }
      if (*__s != '?') {
        return false;
      }
      return __s[1] == '?';
    }
  }
  return true;
}

