
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int S_IS_LOCAL(symbolS *s)

{
  asymbol *paVar1;
  char *pcVar2;
  int iVar3;
  bfd_section *pbVar4;
  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;
  }
  pbVar4 = paVar5->prev;
  if (((uint)pbVar4 & 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) && (((uint)pbVar4 & 0x4002) == 0)) &&
     ((segT)paVar5->flags == (segT)(PTR__bfd_std_section_0007ffb4 + 0x180))) {
    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_0003b26f;
    }
    paVar1 = ((s->sy_value).X_op_symbol)->bsym;
    __s = (symbolS *)paVar1->name;
    if (__s == (symbolS *)0x0) {
      return 0;
    }
    pbVar4 = (bfd_section *)paVar1->flags;
  }
  if (((uint)pbVar4 & 4) != 0) {
    return 0;
  }
LAB_0003b26f:
  pcVar2 = strchr((char *)__s,1);
  if ((pcVar2 == (char *)0x0) && (pcVar2 = strchr((char *)__s,2), pcVar2 == (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;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

bool FUN_0003b1d0(byte *param_1)

{
  char *pcVar1;
  int iVar2;
  uint uVar3;
  undefined *puVar4;
  char *__s;
  
  puVar4 = *(undefined **)(param_1 + 4);
  if ((*param_1 & 1) != 0) {
    if (DAT_00088df0 != puVar4) {
      return true;
    }
    param_1 = *(byte **)(param_1 + 0xc);
    puVar4 = *(undefined **)(param_1 + 4);
  }
  uVar3 = *(uint *)(puVar4 + 0x10);
  if ((uVar3 & 3) == 3) {
                    /* WARNING: Subroutine does not return */
    FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);
  }
  if (*(undefined **)(puVar4 + 0x14) == DAT_00088df0) {
    return true;
  }
  if (((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&
     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)) {
    return true;
  }
  if ((*param_1 & 1) == 0) {
    __s = *(char **)(puVar4 + 4);
    if (__s == (char *)0x0) {
      return false;
    }
  }
  else {
    if (DAT_00088df0 != puVar4) {
      __s = *(char **)(param_1 + 8);
      if (__s == (char *)0x0) {
        return false;
      }
      goto LAB_0003b26f;
    }
    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);
    if (__s == (char *)0x0) {
      return false;
    }
    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);
  }
  if ((uVar3 & 4) != 0) {
    return false;
  }
LAB_0003b26f:
  pcVar1 = strchr(__s,1);
  if ((pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)) {
    if (DAT_00088e08 != 0) {
      return false;
    }
    iVar2 = bfd_is_local_label(DAT_00088f24,puVar4);
    if (iVar2 == 0) {
      if (DAT_00088e88 == 0) {
        return false;
      }
      if (*__s != '?') {
        return false;
      }
      return __s[1] == '?';
    }
  }
  return true;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00018ff0
ADD EBX,0x44e27
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [EAX + 0x4]
TEST byte ptr [EAX],0x1
JZ 0x0003b20e
LEA EDX,[EBX + 0x8df0]
CMP dword ptr [EDX],ESI
JZ 0x0003b208
MOV EAX,0x1
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EAX + 0xc]
MOV ESI,dword ptr [EAX + 0x4]
MOV EDX,dword ptr [ESI + 0x10]
MOV ECX,EDX
AND ECX,0x3
CMP ECX,0x3
JZ 0x0003b31a
LEA ECX,[EBX + 0x8df0]
MOV EDI,dword ptr [ESI + 0x14]
MOV ECX,dword ptr [ECX]
CMP EDI,ECX
JZ 0x0003b1f8
LEA EBP,[EBX + 0x8df8]
MOV EBP,dword ptr [EBP]
TEST EBP,EBP
JZ 0x0003b253
TEST EDX,0x4002
JNZ 0x0003b253
MOV EBP,dword ptr [EBX + 0xffffffb4]
ADD EBP,0x180
CMP EDI,EBP
JZ 0x0003b1f8
TEST byte ptr [EAX],0x1
JZ 0x0003b2e8
CMP ECX,ESI
JZ 0x0003b308
MOV EDI,dword ptr [EAX + 0x8]
TEST EDI,EDI
JZ 0x0003b2f8
SUB ESP,0x8
PUSH 0x1
PUSH EDI
CALL 0x00017410
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0003b1f8
SUB ESP,0x8
PUSH 0x2
PUSH EDI
CALL 0x00017410
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0003b1f8
LEA EAX,[EBX + 0x8e08]
MOV EDX,dword ptr [EAX]
TEST EDX,EDX
JNZ 0x0003b2f8
LEA EAX,[EBX + 0x8f24]
SUB ESP,0x8
PUSH ESI
PUSH dword ptr [EAX]
CALL 0x00017720
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0003b1f8
LEA EAX,[EBX + 0x8e88]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x0003b2f8
CMP byte ptr [EDI],0x3f
JNZ 0x0003b2f8
XOR EAX,EAX
CMP byte ptr [EDI + 0x1],0x3f
SETZ AL
JMP 0x0003b1fd
MOV EDI,dword ptr [ESI + 0x4]
TEST EDI,EDI
JZ 0x0003b2f8
AND EDX,0x4
JZ 0x0003b26f
ADD ESP,0xc
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EAX + 0xc]
MOV EAX,dword ptr [EAX + 0x4]
MOV EDI,dword ptr [EAX + 0x4]
TEST EDI,EDI
JZ 0x0003b2f8
MOV EDX,dword ptr [EAX + 0x10]
JMP 0x0003b2ef
PUSH EAX
LEA EAX,[EBX + 0xfffdf2e4]
PUSH EAX
LEA EAX,[EBX + 0xfffdec4c]
PUSH 0x864
PUSH EAX
CALL 0x0002edb0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbool FUN_0003b1d0(byte *param_1)\n\n{\n  char *pcVar1;\n  int iVar2;\n  uint uVar3;\n  undefined *puVar4;\n  char *__s;\n  \n  puVar4 = *(undefined **)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00088df0 != puVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0xc);\n    puVar4 = *(undefined **)(param_1 + 4);\n  }\n  uVar3 = *(uint *)(puVar4 + 0x10);\n  if ((uVar3 & 3) == 3) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);\n  }\n  if (*(undefined **)(puVar4 + 0x14) == DAT_00088df0) {\n    return true;\n  }\n  if (((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&\n     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)) {\n    return true;\n  }\n  if ((*param_1 & 1) == 0) {\n    __s = *(char **)(puVar4 + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }\n    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);\n  }\n  if ((uVar3 & 4) != 0) {\n    return false;\n  }\nLAB_0003b26f:\n  pcVar1 = strchr(__s,1);\n  if ((pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)) {\n    if (DAT_00088e08 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00088f24,puVar4);\n    if (iVar2 == 0) {\n      if (DAT_00088e88 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }\n  return true;\n}\n\n" comment (function_definition "bool FUN_0003b1d0(byte *param_1)\n\n{\n  char *pcVar1;\n  int iVar2;\n  uint uVar3;\n  undefined *puVar4;\n  char *__s;\n  \n  puVar4 = *(undefined **)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00088df0 != puVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0xc);\n    puVar4 = *(undefined **)(param_1 + 4);\n  }\n  uVar3 = *(uint *)(puVar4 + 0x10);\n  if ((uVar3 & 3) == 3) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);\n  }\n  if (*(undefined **)(puVar4 + 0x14) == DAT_00088df0) {\n    return true;\n  }\n  if (((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&\n     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)) {\n    return true;\n  }\n  if ((*param_1 & 1) == 0) {\n    __s = *(char **)(puVar4 + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }\n    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);\n  }\n  if ((uVar3 & 4) != 0) {\n    return false;\n  }\nLAB_0003b26f:\n  pcVar1 = strchr(__s,1);\n  if ((pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)) {\n    if (DAT_00088e08 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00088f24,puVar4);\n    if (iVar2 == 0) {\n      if (DAT_00088e88 == 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_0003b1d0(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  int iVar2;\n  uint uVar3;\n  undefined *puVar4;\n  char *__s;\n  \n  puVar4 = *(undefined **)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00088df0 != puVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0xc);\n    puVar4 = *(undefined **)(param_1 + 4);\n  }\n  uVar3 = *(uint *)(puVar4 + 0x10);\n  if ((uVar3 & 3) == 3) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);\n  }\n  if (*(undefined **)(puVar4 + 0x14) == DAT_00088df0) {\n    return true;\n  }\n  if (((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&\n     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)) {\n    return true;\n  }\n  if ((*param_1 & 1) == 0) {\n    __s = *(char **)(puVar4 + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }\n    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);\n  }\n  if ((uVar3 & 4) != 0) {\n    return false;\n  }\nLAB_0003b26f:\n  pcVar1 = strchr(__s,1);\n  if ((pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)) {\n    if (DAT_00088e08 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00088f24,puVar4);\n    if (iVar2 == 0) {\n      if (DAT_00088e88 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }\n  return true;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (expression_statement "puVar4 = *(undefined **)(param_1 + 4);" (assignment_expression "puVar4 = *(undefined **)(param_1 + 4)" identifier = (pointer_expression "*(undefined **)(param_1 + 4)" * (cast_expression "(undefined **)(param_1 + 4)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((*param_1 & 1) != 0) {\n    if (DAT_00088df0 != puVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0xc);\n    puVar4 = *(undefined **)(param_1 + 4);\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_00088df0 != puVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0xc);\n    puVar4 = *(undefined **)(param_1 + 4);\n  }" { (if_statement "if (DAT_00088df0 != puVar4) {\n      return true;\n    }" if (parenthesized_expression "(DAT_00088df0 != puVar4)" ( (binary_expression "DAT_00088df0 != puVar4" identifier != identifier) )) (compound_statement "{\n      return true;\n    }" { (return_statement "return true;" return true ;) })) (expression_statement "param_1 = *(byte **)(param_1 + 0xc);" (assignment_expression "param_1 = *(byte **)(param_1 + 0xc)" identifier = (pointer_expression "*(byte **)(param_1 + 0xc)" * (cast_expression "(byte **)(param_1 + 0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar4 = *(undefined **)(param_1 + 4);" (assignment_expression "puVar4 = *(undefined **)(param_1 + 4)" identifier = (pointer_expression "*(undefined **)(param_1 + 4)" * (cast_expression "(undefined **)(param_1 + 4)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) })) (expression_statement "uVar3 = *(uint *)(puVar4 + 0x10);" (assignment_expression "uVar3 = *(uint *)(puVar4 + 0x10)" identifier = (pointer_expression "*(uint *)(puVar4 + 0x10)" * (cast_expression "(uint *)(puVar4 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x10)" ( (binary_expression "puVar4 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((uVar3 & 3) == 3) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);\n  }" if (parenthesized_expression "((uVar3 & 3) == 3)" ( (binary_expression "(uVar3 & 3) == 3" (parenthesized_expression "(uVar3 & 3)" ( (binary_expression "uVar3 & 3" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);\n  }" { comment (expression_statement "FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);" (call_expression "FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1)" identifier (argument_list "("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1)" ( (string_literal ""../../gas/symbols.c"" " string_content ") , number_literal , (string_literal ""S_IS_LOCAL"" " string_content ") , identifier ))) ;) })) (if_statement "if (*(undefined **)(puVar4 + 0x14) == DAT_00088df0) {\n    return true;\n  }" if (parenthesized_expression "(*(undefined **)(puVar4 + 0x14) == DAT_00088df0)" ( (binary_expression "*(undefined **)(puVar4 + 0x14) == DAT_00088df0" (pointer_expression "*(undefined **)(puVar4 + 0x14)" * (cast_expression "(undefined **)(puVar4 + 0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + 0x14)" ( (binary_expression "puVar4 + 0x14" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (if_statement "if (((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&\n     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)) {\n    return true;\n  }" if (parenthesized_expression "(((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&\n     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180))" ( (binary_expression "((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&\n     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)" (parenthesized_expression "((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0))" ( (binary_expression "(DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)" (parenthesized_expression "(DAT_00088df8 != 0)" ( (binary_expression "DAT_00088df8 != 0" identifier != number_literal) )) && (parenthesized_expression "((uVar3 & 0x4002) == 0)" ( (binary_expression "(uVar3 & 0x4002) == 0" (parenthesized_expression "(uVar3 & 0x4002)" ( (binary_expression "uVar3 & 0x4002" identifier & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)" ( (binary_expression "*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180" (pointer_expression "*(undefined **)(puVar4 + 0x14)" * (cast_expression "(undefined **)(puVar4 + 0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + 0x14)" ( (binary_expression "puVar4 + 0x14" identifier + number_literal) )))) == (binary_expression "PTR__bfd_std_section_0007ffb4 + 0x180" identifier + number_literal)) ))) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (if_statement "if ((*param_1 & 1) == 0) {\n    __s = *(char **)(puVar4 + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }\n    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);\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 **)(puVar4 + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }" { (expression_statement "__s = *(char **)(puVar4 + 4);" (assignment_expression "__s = *(char **)(puVar4 + 4)" identifier = (pointer_expression "*(char **)(puVar4 + 4)" * (cast_expression "(char **)(puVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + 4)" ( (binary_expression "puVar4 + 4" 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_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }\n    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);\n  }" else (compound_statement "{\n    if (DAT_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }\n    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);\n  }" { (if_statement "if (DAT_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }" if (parenthesized_expression "(DAT_00088df0 != puVar4)" ( (binary_expression "DAT_00088df0 != puVar4" identifier != identifier) )) (compound_statement "{\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }" { (expression_statement "__s = *(char **)(param_1 + 8);" (assignment_expression "__s = *(char **)(param_1 + 8)" identifier = (pointer_expression "*(char **)(param_1 + 8)" * (cast_expression "(char **)(param_1 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 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 ;) })) (goto_statement "goto LAB_0003b26f;" goto statement_identifier ;) })) (expression_statement "__s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);" (assignment_expression "__s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4)" identifier = (pointer_expression "*(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4)" * (cast_expression "(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0xc) + 4) + 4" (pointer_expression "*(int *)(*(int *)(param_1 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(param_1 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0xc) + 4)" ( (binary_expression "*(int *)(param_1 + 0xc) + 4" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" 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 "uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);" (assignment_expression "uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10)" identifier = (pointer_expression "*(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10)" * (cast_expression "(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10" (pointer_expression "*(int *)(*(int *)(param_1 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(param_1 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0xc) + 4)" ( (binary_expression "*(int *)(param_1 + 0xc) + 4" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) }))) (if_statement "if ((uVar3 & 4) != 0) {\n    return false;\n  }" if (parenthesized_expression "((uVar3 & 4) != 0)" ( (binary_expression "(uVar3 & 4) != 0" (parenthesized_expression "(uVar3 & 4)" ( (binary_expression "uVar3 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (labeled_statement "LAB_0003b26f:\n  pcVar1 = strchr(__s,1);" statement_identifier : (expression_statement "pcVar1 = strchr(__s,1);" (assignment_expression "pcVar1 = strchr(__s,1)" identifier = (call_expression "strchr(__s,1)" identifier (argument_list "(__s,1)" ( identifier , number_literal )))) ;)) (if_statement "if ((pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)) {\n    if (DAT_00088e08 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00088f24,puVar4);\n    if (iVar2 == 0) {\n      if (DAT_00088e88 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }" if (parenthesized_expression "((pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0))" ( (binary_expression "(pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)" (parenthesized_expression "(pcVar1 == (char *)0x0)" ( (binary_expression "pcVar1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)" ( (comma_expression "pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0" (assignment_expression "pcVar1 = strchr(__s,2)" identifier = (call_expression "strchr(__s,2)" identifier (argument_list "(__s,2)" ( identifier , number_literal )))) , (binary_expression "pcVar1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    if (DAT_00088e08 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00088f24,puVar4);\n    if (iVar2 == 0) {\n      if (DAT_00088e88 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }" { (if_statement "if (DAT_00088e08 != 0) {\n      return false;\n    }" if (parenthesized_expression "(DAT_00088e08 != 0)" ( (binary_expression "DAT_00088e08 != 0" identifier != number_literal) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "iVar2 = bfd_is_local_label(DAT_00088f24,puVar4);" (assignment_expression "iVar2 = bfd_is_local_label(DAT_00088f24,puVar4)" identifier = (call_expression "bfd_is_local_label(DAT_00088f24,puVar4)" identifier (argument_list "(DAT_00088f24,puVar4)" ( identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n      if (DAT_00088e88 == 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_00088e88 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }" { (if_statement "if (DAT_00088e88 == 0) {\n        return false;\n      }" if (parenthesized_expression "(DAT_00088e88 == 0)" ( (binary_expression "DAT_00088e88 == 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 "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint S_IS_LOCAL(symbolS *s)\n\n{\n  asymbol *paVar1;\n  char *pcVar2;\n  int iVar3;\n  bfd_section *pbVar4;\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  pbVar4 = paVar5->prev;\n  if (((uint)pbVar4 & 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) && (((uint)pbVar4 & 0x4002) == 0)) &&\n     ((segT)paVar5->flags == (segT)(PTR__bfd_std_section_0007ffb4 + 0x180))) {\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_0003b26f;\n    }\n    paVar1 = ((s->sy_value).X_op_symbol)->bsym;\n    __s = (symbolS *)paVar1->name;\n    if (__s == (symbolS *)0x0) {\n      return 0;\n    }\n    pbVar4 = (bfd_section *)paVar1->flags;\n  }\n  if (((uint)pbVar4 & 4) != 0) {\n    return 0;\n  }\nLAB_0003b26f:\n  pcVar2 = strchr((char *)__s,1);\n  if ((pcVar2 == (char *)0x0) && (pcVar2 = strchr((char *)__s,2), pcVar2 == (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" comment (function_definition "int S_IS_LOCAL(symbolS *s)\n\n{\n  asymbol *paVar1;\n  char *pcVar2;\n  int iVar3;\n  bfd_section *pbVar4;\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  pbVar4 = paVar5->prev;\n  if (((uint)pbVar4 & 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) && (((uint)pbVar4 & 0x4002) == 0)) &&\n     ((segT)paVar5->flags == (segT)(PTR__bfd_std_section_0007ffb4 + 0x180))) {\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_0003b26f;\n    }\n    paVar1 = ((s->sy_value).X_op_symbol)->bsym;\n    __s = (symbolS *)paVar1->name;\n    if (__s == (symbolS *)0x0) {\n      return 0;\n    }\n    pbVar4 = (bfd_section *)paVar1->flags;\n  }\n  if (((uint)pbVar4 & 4) != 0) {\n    return 0;\n  }\nLAB_0003b26f:\n  pcVar2 = strchr((char *)__s,1);\n  if ((pcVar2 == (char *)0x0) && (pcVar2 = strchr((char *)__s,2), pcVar2 == (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  asymbol *paVar1;\n  char *pcVar2;\n  int iVar3;\n  bfd_section *pbVar4;\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  pbVar4 = paVar5->prev;\n  if (((uint)pbVar4 & 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) && (((uint)pbVar4 & 0x4002) == 0)) &&\n     ((segT)paVar5->flags == (segT)(PTR__bfd_std_section_0007ffb4 + 0x180))) {\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_0003b26f;\n    }\n    paVar1 = ((s->sy_value).X_op_symbol)->bsym;\n    __s = (symbolS *)paVar1->name;\n    if (__s == (symbolS *)0x0) {\n      return 0;\n    }\n    pbVar4 = (bfd_section *)paVar1->flags;\n  }\n  if (((uint)pbVar4 & 4) != 0) {\n    return 0;\n  }\nLAB_0003b26f:\n  pcVar2 = strchr((char *)__s,1);\n  if ((pcVar2 == (char *)0x0) && (pcVar2 = strchr((char *)__s,2), pcVar2 == (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 "asymbol *paVar1;" type_identifier (pointer_declarator "*paVar1" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "bfd_section *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * 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 "pbVar4 = paVar5->prev;" (assignment_expression "pbVar4 = paVar5->prev" identifier = (field_expression "paVar5->prev" identifier -> field_identifier)) ;) (if_statement "if (((uint)pbVar4 & 3) == 3) {\n                    /* WARNING: Subroutine does not return */\n    as_abort("../../gas/symbols.c",0x864,"S_IS_LOCAL");\n  }" if (parenthesized_expression "(((uint)pbVar4 & 3) == 3)" ( (binary_expression "((uint)pbVar4 & 3) == 3" (parenthesized_expression "((uint)pbVar4 & 3)" ( (binary_expression "(uint)pbVar4 & 3" (cast_expression "(uint)pbVar4" ( (type_descriptor "uint" type_identifier) ) 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" (cast_expression "(segT)paVar5->flags" ( (type_descriptor "segT" type_identifier) ) (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) && (((uint)pbVar4 & 0x4002) == 0)) &&\n     ((segT)paVar5->flags == (segT)(PTR__bfd_std_section_0007ffb4 + 0x180))) {\n    return 1;\n  }" if (parenthesized_expression "(((flag_strip_local_absolute != 0) && (((uint)pbVar4 & 0x4002) == 0)) &&\n     ((segT)paVar5->flags == (segT)(PTR__bfd_std_section_0007ffb4 + 0x180)))" ( (binary_expression "((flag_strip_local_absolute != 0) && (((uint)pbVar4 & 0x4002) == 0)) &&\n     ((segT)paVar5->flags == (segT)(PTR__bfd_std_section_0007ffb4 + 0x180))" (parenthesized_expression "((flag_strip_local_absolute != 0) && (((uint)pbVar4 & 0x4002) == 0))" ( (binary_expression "(flag_strip_local_absolute != 0) && (((uint)pbVar4 & 0x4002) == 0)" (parenthesized_expression "(flag_strip_local_absolute != 0)" ( (binary_expression "flag_strip_local_absolute != 0" identifier != number_literal) )) && (parenthesized_expression "(((uint)pbVar4 & 0x4002) == 0)" ( (binary_expression "((uint)pbVar4 & 0x4002) == 0" (parenthesized_expression "((uint)pbVar4 & 0x4002)" ( (binary_expression "(uint)pbVar4 & 0x4002" (cast_expression "(uint)pbVar4" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "((segT)paVar5->flags == (segT)(PTR__bfd_std_section_0007ffb4 + 0x180))" ( (binary_expression "(segT)paVar5->flags == (segT)(PTR__bfd_std_section_0007ffb4 + 0x180)" (cast_expression "(segT)paVar5->flags" ( (type_descriptor "segT" type_identifier) ) (field_expression "paVar5->flags" identifier -> field_identifier)) == (call_expression "(segT)(PTR__bfd_std_section_0007ffb4 + 0x180)" (parenthesized_expression "(segT)" ( identifier )) (argument_list "(PTR__bfd_std_section_0007ffb4 + 0x180)" ( (binary_expression "PTR__bfd_std_section_0007ffb4 + 0x180" 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_0003b26f;\n    }\n    paVar1 = ((s->sy_value).X_op_symbol)->bsym;\n    __s = (symbolS *)paVar1->name;\n    if (__s == (symbolS *)0x0) {\n      return 0;\n    }\n    pbVar4 = (bfd_section *)paVar1->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 = (cast_expression "(symbolS *)paVar5->id" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) (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_0003b26f;\n    }\n    paVar1 = ((s->sy_value).X_op_symbol)->bsym;\n    __s = (symbolS *)paVar1->name;\n    if (__s == (symbolS *)0x0) {\n      return 0;\n    }\n    pbVar4 = (bfd_section *)paVar1->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_0003b26f;\n    }\n    paVar1 = ((s->sy_value).X_op_symbol)->bsym;\n    __s = (symbolS *)paVar1->name;\n    if (__s == (symbolS *)0x0) {\n      return 0;\n    }\n    pbVar4 = (bfd_section *)paVar1->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_0003b26f;\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_0003b26f;\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_0003b26f;" goto statement_identifier ;) })) (expression_statement "paVar1 = ((s->sy_value).X_op_symbol)->bsym;" (assignment_expression "paVar1 = ((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 *)paVar1->name;" (assignment_expression "__s = (symbolS *)paVar1->name" identifier = (cast_expression "(symbolS *)paVar1->name" ( (type_descriptor "symbolS *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "paVar1->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 "pbVar4 = (bfd_section *)paVar1->flags;" (assignment_expression "pbVar4 = (bfd_section *)paVar1->flags" identifier = (cast_expression "(bfd_section *)paVar1->flags" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "paVar1->flags" identifier -> field_identifier))) ;) }))) (if_statement "if (((uint)pbVar4 & 4) != 0) {\n    return 0;\n  }" if (parenthesized_expression "(((uint)pbVar4 & 4) != 0)" ( (binary_expression "((uint)pbVar4 & 4) != 0" (parenthesized_expression "((uint)pbVar4 & 4)" ( (binary_expression "(uint)pbVar4 & 4" (cast_expression "(uint)pbVar4" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_0003b26f:\n  pcVar2 = strchr((char *)__s,1);" statement_identifier : (expression_statement "pcVar2 = strchr((char *)__s,1);" (assignment_expression "pcVar2 = 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 ((pcVar2 == (char *)0x0) && (pcVar2 = strchr((char *)__s,2), pcVar2 == (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 "((pcVar2 == (char *)0x0) && (pcVar2 = strchr((char *)__s,2), pcVar2 == (char *)0x0))" ( (binary_expression "(pcVar2 == (char *)0x0) && (pcVar2 = strchr((char *)__s,2), pcVar2 == (char *)0x0)" (parenthesized_expression "(pcVar2 == (char *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pcVar2 = strchr((char *)__s,2), pcVar2 == (char *)0x0)" ( (comma_expression "pcVar2 = strchr((char *)__s,2), pcVar2 == (char *)0x0" (assignment_expression "pcVar2 = 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 "pcVar2 == (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_0003b1d0(byte *param_1)\n\n{\n  char *pcVar1;\n  int iVar2;\n  uint uVar3;\n  undefined *puVar4;\n  char *__s;\n  \n  puVar4 = *(undefined **)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00088df0 != puVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0xc);\n    puVar4 = *(undefined **)(param_1 + 4);\n  }\n  uVar3 = *(uint *)(puVar4 + 0x10);\n  if ((uVar3 & 3) == 3) {\n                    \n    FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);\n  }\n  if (*(undefined **)(puVar4 + 0x14) == DAT_00088df0) {\n    return true;\n  }\n  if (((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&\n     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)) {\n    return true;\n  }\n  if ((*param_1 & 1) == 0) {\n    __s = *(char **)(puVar4 + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }\n    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);\n  }\n  if ((uVar3 & 4) != 0) {\n    return false;\n  }\nLAB_0003b26f:\n  pcVar1 = strchr(__s,1);\n  if ((pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)) {\n    if (DAT_00088e08 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00088f24,puVar4);\n    if (iVar2 == 0) {\n      if (DAT_00088e88 == 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_0003b1d0(byte *param_1)\n\n{\n  char *pcVar1;\n  int iVar2;\n  uint uVar3;\n  undefined *puVar4;\n  char *__s;\n  \n  puVar4 = *(undefined **)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00088df0 != puVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0xc);\n    puVar4 = *(undefined **)(param_1 + 4);\n  }\n  uVar3 = *(uint *)(puVar4 + 0x10);\n  if ((uVar3 & 3) == 3) {\n                    \n    FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);\n  }\n  if (*(undefined **)(puVar4 + 0x14) == DAT_00088df0) {\n    return true;\n  }\n  if (((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&\n     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)) {\n    return true;\n  }\n  if ((*param_1 & 1) == 0) {\n    __s = *(char **)(puVar4 + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }\n    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);\n  }\n  if ((uVar3 & 4) != 0) {\n    return false;\n  }\nLAB_0003b26f:\n  pcVar1 = strchr(__s,1);\n  if ((pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)) {\n    if (DAT_00088e08 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00088f24,puVar4);\n    if (iVar2 == 0) {\n      if (DAT_00088e88 == 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_0003b1d0(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  char *pcVar1;\n  int iVar2;\n  uint uVar3;\n  undefined *puVar4;\n  char *__s;\n  \n  puVar4 = *(undefined **)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00088df0 != puVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0xc);\n    puVar4 = *(undefined **)(param_1 + 4);\n  }\n  uVar3 = *(uint *)(puVar4 + 0x10);\n  if ((uVar3 & 3) == 3) {\n                    \n    FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);\n  }\n  if (*(undefined **)(puVar4 + 0x14) == DAT_00088df0) {\n    return true;\n  }\n  if (((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&\n     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)) {\n    return true;\n  }\n  if ((*param_1 & 1) == 0) {\n    __s = *(char **)(puVar4 + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }\n    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);\n  }\n  if ((uVar3 & 4) != 0) {\n    return false;\n  }\nLAB_0003b26f:\n  pcVar1 = strchr(__s,1);\n  if ((pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)) {\n    if (DAT_00088e08 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00088f24,puVar4);\n    if (iVar2 == 0) {\n      if (DAT_00088e88 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }\n  return true;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (expression_statement "puVar4 = *(undefined **)(param_1 + 4);" (assignment_expression "puVar4 = *(undefined **)(param_1 + 4)" identifier = (pointer_expression "*(undefined **)(param_1 + 4)" * (cast_expression "(undefined **)(param_1 + 4)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((*param_1 & 1) != 0) {\n    if (DAT_00088df0 != puVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0xc);\n    puVar4 = *(undefined **)(param_1 + 4);\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_00088df0 != puVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0xc);\n    puVar4 = *(undefined **)(param_1 + 4);\n  }" { (if_statement "if (DAT_00088df0 != puVar4) {\n      return true;\n    }" if (parenthesized_expression "(DAT_00088df0 != puVar4)" ( (binary_expression "DAT_00088df0 != puVar4" identifier != identifier) )) (compound_statement "{\n      return true;\n    }" { (return_statement "return true;" return true ;) })) (expression_statement "param_1 = *(byte **)(param_1 + 0xc);" (assignment_expression "param_1 = *(byte **)(param_1 + 0xc)" identifier = (pointer_expression "*(byte **)(param_1 + 0xc)" * (cast_expression "(byte **)(param_1 + 0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar4 = *(undefined **)(param_1 + 4);" (assignment_expression "puVar4 = *(undefined **)(param_1 + 4)" identifier = (pointer_expression "*(undefined **)(param_1 + 4)" * (cast_expression "(undefined **)(param_1 + 4)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) })) (expression_statement "uVar3 = *(uint *)(puVar4 + 0x10);" (assignment_expression "uVar3 = *(uint *)(puVar4 + 0x10)" identifier = (pointer_expression "*(uint *)(puVar4 + 0x10)" * (cast_expression "(uint *)(puVar4 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 0x10)" ( (binary_expression "puVar4 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((uVar3 & 3) == 3) {\n                    \n    FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);\n  }" if (parenthesized_expression "((uVar3 & 3) == 3)" ( (binary_expression "(uVar3 & 3) == 3" (parenthesized_expression "(uVar3 & 3)" ( (binary_expression "uVar3 & 3" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n    FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);\n  }" { (expression_statement "FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);" (call_expression "FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1)" identifier (argument_list "("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1)" ( (string_literal ""../../gas/symbols.c"" " string_content ") , number_literal , (string_literal ""S_IS_LOCAL"" " string_content ") , identifier ))) ;) })) (if_statement "if (*(undefined **)(puVar4 + 0x14) == DAT_00088df0) {\n    return true;\n  }" if (parenthesized_expression "(*(undefined **)(puVar4 + 0x14) == DAT_00088df0)" ( (binary_expression "*(undefined **)(puVar4 + 0x14) == DAT_00088df0" (pointer_expression "*(undefined **)(puVar4 + 0x14)" * (cast_expression "(undefined **)(puVar4 + 0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + 0x14)" ( (binary_expression "puVar4 + 0x14" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (if_statement "if (((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&\n     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)) {\n    return true;\n  }" if (parenthesized_expression "(((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&\n     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180))" ( (binary_expression "((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&\n     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)" (parenthesized_expression "((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0))" ( (binary_expression "(DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)" (parenthesized_expression "(DAT_00088df8 != 0)" ( (binary_expression "DAT_00088df8 != 0" identifier != number_literal) )) && (parenthesized_expression "((uVar3 & 0x4002) == 0)" ( (binary_expression "(uVar3 & 0x4002) == 0" (parenthesized_expression "(uVar3 & 0x4002)" ( (binary_expression "uVar3 & 0x4002" identifier & number_literal) )) == number_literal) ))) )) && (parenthesized_expression "(*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)" ( (binary_expression "*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180" (pointer_expression "*(undefined **)(puVar4 + 0x14)" * (cast_expression "(undefined **)(puVar4 + 0x14)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + 0x14)" ( (binary_expression "puVar4 + 0x14" identifier + number_literal) )))) == (binary_expression "PTR__bfd_std_section_0007ffb4 + 0x180" identifier + number_literal)) ))) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (if_statement "if ((*param_1 & 1) == 0) {\n    __s = *(char **)(puVar4 + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }\n    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);\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 **)(puVar4 + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }" { (expression_statement "__s = *(char **)(puVar4 + 4);" (assignment_expression "__s = *(char **)(puVar4 + 4)" identifier = (pointer_expression "*(char **)(puVar4 + 4)" * (cast_expression "(char **)(puVar4 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar4 + 4)" ( (binary_expression "puVar4 + 4" 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_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }\n    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);\n  }" else (compound_statement "{\n    if (DAT_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }\n    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);\n  }" { (if_statement "if (DAT_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }" if (parenthesized_expression "(DAT_00088df0 != puVar4)" ( (binary_expression "DAT_00088df0 != puVar4" identifier != identifier) )) (compound_statement "{\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }" { (expression_statement "__s = *(char **)(param_1 + 8);" (assignment_expression "__s = *(char **)(param_1 + 8)" identifier = (pointer_expression "*(char **)(param_1 + 8)" * (cast_expression "(char **)(param_1 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 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 ;) })) (goto_statement "goto LAB_0003b26f;" goto statement_identifier ;) })) (expression_statement "__s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);" (assignment_expression "__s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4)" identifier = (pointer_expression "*(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4)" * (cast_expression "(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0xc) + 4) + 4" (pointer_expression "*(int *)(*(int *)(param_1 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(param_1 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0xc) + 4)" ( (binary_expression "*(int *)(param_1 + 0xc) + 4" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" 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 "uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);" (assignment_expression "uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10)" identifier = (pointer_expression "*(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10)" * (cast_expression "(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10" (pointer_expression "*(int *)(*(int *)(param_1 + 0xc) + 4)" * (cast_expression "(int *)(*(int *)(param_1 + 0xc) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0xc) + 4)" ( (binary_expression "*(int *)(param_1 + 0xc) + 4" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) ;) }))) (if_statement "if ((uVar3 & 4) != 0) {\n    return false;\n  }" if (parenthesized_expression "((uVar3 & 4) != 0)" ( (binary_expression "(uVar3 & 4) != 0" (parenthesized_expression "(uVar3 & 4)" ( (binary_expression "uVar3 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (labeled_statement "LAB_0003b26f:\n  pcVar1 = strchr(__s,1);" statement_identifier : (expression_statement "pcVar1 = strchr(__s,1);" (assignment_expression "pcVar1 = strchr(__s,1)" identifier = (call_expression "strchr(__s,1)" identifier (argument_list "(__s,1)" ( identifier , number_literal )))) ;)) (if_statement "if ((pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)) {\n    if (DAT_00088e08 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00088f24,puVar4);\n    if (iVar2 == 0) {\n      if (DAT_00088e88 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }" if (parenthesized_expression "((pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0))" ( (binary_expression "(pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)" (parenthesized_expression "(pcVar1 == (char *)0x0)" ( (binary_expression "pcVar1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)" ( (comma_expression "pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0" (assignment_expression "pcVar1 = strchr(__s,2)" identifier = (call_expression "strchr(__s,2)" identifier (argument_list "(__s,2)" ( identifier , number_literal )))) , (binary_expression "pcVar1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    if (DAT_00088e08 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00088f24,puVar4);\n    if (iVar2 == 0) {\n      if (DAT_00088e88 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }" { (if_statement "if (DAT_00088e08 != 0) {\n      return false;\n    }" if (parenthesized_expression "(DAT_00088e08 != 0)" ( (binary_expression "DAT_00088e08 != 0" identifier != number_literal) )) (compound_statement "{\n      return false;\n    }" { (return_statement "return false;" return false ;) })) (expression_statement "iVar2 = bfd_is_local_label(DAT_00088f24,puVar4);" (assignment_expression "iVar2 = bfd_is_local_label(DAT_00088f24,puVar4)" identifier = (call_expression "bfd_is_local_label(DAT_00088f24,puVar4)" identifier (argument_list "(DAT_00088f24,puVar4)" ( identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n      if (DAT_00088e88 == 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_00088e88 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }" { (if_statement "if (DAT_00088e88 == 0) {\n        return false;\n      }" if (parenthesized_expression "(DAT_00088e88 == 0)" ( (binary_expression "DAT_00088e88 == 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (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 (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 TYPE (abstract_pointer_declarator * (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 ") , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (binary_expression IDENT + 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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 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_0003b1d0(byte *param_1)\n\n{\n  char *pcVar1;\n  int iVar2;\n  uint uVar3;\n  undefined *puVar4;\n  char *__s;\n  \n  puVar4 = *(undefined **)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00088df0 != puVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0xc);\n    puVar4 = *(undefined **)(param_1 + 4);\n  }\n  uVar3 = *(uint *)(puVar4 + 0x10);\n  if ((uVar3 & 3) == 3) {\n                    \n    FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);\n  }\n  if (*(undefined **)(puVar4 + 0x14) == DAT_00088df0) {\n    return true;\n  }\n  if (((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&\n     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)) {\n    return true;\n  }\n  if ((*param_1 & 1) == 0) {\n    __s = *(char **)(puVar4 + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }\n    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);\n  }\n  if ((uVar3 & 4) != 0) {\n    return false;\n  }\nLAB_0003b26f:\n  pcVar1 = strchr(__s,1);\n  if ((pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)) {\n    if (DAT_00088e08 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00088f24,puVar4);\n    if (iVar2 == 0) {\n      if (DAT_00088e88 == 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_0003b1d0(byte *param_1)" (identifier "FUN_0003b1d0") (parameter_list "(byte *param_1)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  char *pcVar1;\n  int iVar2;\n  uint uVar3;\n  undefined *puVar4;\n  char *__s;\n  \n  puVar4 = *(undefined **)(param_1 + 4);\n  if ((*param_1 & 1) != 0) {\n    if (DAT_00088df0 != puVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0xc);\n    puVar4 = *(undefined **)(param_1 + 4);\n  }\n  uVar3 = *(uint *)(puVar4 + 0x10);\n  if ((uVar3 & 3) == 3) {\n                    \n    FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);\n  }\n  if (*(undefined **)(puVar4 + 0x14) == DAT_00088df0) {\n    return true;\n  }\n  if (((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&\n     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)) {\n    return true;\n  }\n  if ((*param_1 & 1) == 0) {\n    __s = *(char **)(puVar4 + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }\n    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);\n  }\n  if ((uVar3 & 4) != 0) {\n    return false;\n  }\nLAB_0003b26f:\n  pcVar1 = strchr(__s,1);\n  if ((pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)) {\n    if (DAT_00088e08 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00088f24,puVar4);\n    if (iVar2 == 0) {\n      if (DAT_00088e88 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }\n  return true;\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined *puVar4;" (type_identifier "undefined") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (expression_statement "puVar4 = *(undefined **)(param_1 + 4);" (assignment_expression "puVar4 = *(undefined **)(param_1 + 4)" (identifier "puVar4") (= "=") (pointer_expression "*(undefined **)(param_1 + 4)" (* "*") (cast_expression "(undefined **)(param_1 + 4)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((*param_1 & 1) != 0) {\n    if (DAT_00088df0 != puVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0xc);\n    puVar4 = *(undefined **)(param_1 + 4);\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_00088df0 != puVar4) {\n      return true;\n    }\n    param_1 = *(byte **)(param_1 + 0xc);\n    puVar4 = *(undefined **)(param_1 + 4);\n  }" ({ "{") (if_statement "if (DAT_00088df0 != puVar4) {\n      return true;\n    }" (if "if") (parenthesized_expression "(DAT_00088df0 != puVar4)" (( "(") (binary_expression "DAT_00088df0 != puVar4" (identifier "DAT_00088df0") (!= "!=") (identifier "puVar4")) () ")")) (compound_statement "{\n      return true;\n    }" ({ "{") (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (expression_statement "param_1 = *(byte **)(param_1 + 0xc);" (assignment_expression "param_1 = *(byte **)(param_1 + 0xc)" (identifier "param_1") (= "=") (pointer_expression "*(byte **)(param_1 + 0xc)" (* "*") (cast_expression "(byte **)(param_1 + 0xc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "puVar4 = *(undefined **)(param_1 + 4);" (assignment_expression "puVar4 = *(undefined **)(param_1 + 4)" (identifier "puVar4") (= "=") (pointer_expression "*(undefined **)(param_1 + 4)" (* "*") (cast_expression "(undefined **)(param_1 + 4)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar3 = *(uint *)(puVar4 + 0x10);" (assignment_expression "uVar3 = *(uint *)(puVar4 + 0x10)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(puVar4 + 0x10)" (* "*") (cast_expression "(uint *)(puVar4 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 0x10)" (( "(") (binary_expression "puVar4 + 0x10" (identifier "puVar4") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if ((uVar3 & 3) == 3) {\n                    \n    FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);\n  }" (if "if") (parenthesized_expression "((uVar3 & 3) == 3)" (( "(") (binary_expression "(uVar3 & 3) == 3" (parenthesized_expression "(uVar3 & 3)" (( "(") (binary_expression "uVar3 & 3" (identifier "uVar3") (& "&") (number_literal "3")) () ")")) (== "==") (number_literal "3")) () ")")) (compound_statement "{\n                    \n    FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);\n  }" ({ "{") (expression_statement "FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);" (call_expression "FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1)" (identifier "FUN_0002edb0") (argument_list "("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1)" (( "(") (string_literal ""../../gas/symbols.c"" (" """) (string_content "../../gas/symbols.c") (" """)) (, ",") (number_literal "0x864") (, ",") (string_literal ""S_IS_LOCAL"" (" """) (string_content "S_IS_LOCAL") (" """)) (, ",") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(undefined **)(puVar4 + 0x14) == DAT_00088df0) {\n    return true;\n  }" (if "if") (parenthesized_expression "(*(undefined **)(puVar4 + 0x14) == DAT_00088df0)" (( "(") (binary_expression "*(undefined **)(puVar4 + 0x14) == DAT_00088df0" (pointer_expression "*(undefined **)(puVar4 + 0x14)" (* "*") (cast_expression "(undefined **)(puVar4 + 0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + 0x14)" (( "(") (binary_expression "puVar4 + 0x14" (identifier "puVar4") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (identifier "DAT_00088df0")) () ")")) (compound_statement "{\n    return true;\n  }" ({ "{") (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (if_statement "if (((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&\n     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)) {\n    return true;\n  }" (if "if") (parenthesized_expression "(((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&\n     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180))" (( "(") (binary_expression "((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&\n     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)" (parenthesized_expression "((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0))" (( "(") (binary_expression "(DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)" (parenthesized_expression "(DAT_00088df8 != 0)" (( "(") (binary_expression "DAT_00088df8 != 0" (identifier "DAT_00088df8") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((uVar3 & 0x4002) == 0)" (( "(") (binary_expression "(uVar3 & 0x4002) == 0" (parenthesized_expression "(uVar3 & 0x4002)" (( "(") (binary_expression "uVar3 & 0x4002" (identifier "uVar3") (& "&") (number_literal "0x4002")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)" (( "(") (binary_expression "*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180" (pointer_expression "*(undefined **)(puVar4 + 0x14)" (* "*") (cast_expression "(undefined **)(puVar4 + 0x14)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + 0x14)" (( "(") (binary_expression "puVar4 + 0x14" (identifier "puVar4") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (binary_expression "PTR__bfd_std_section_0007ffb4 + 0x180" (identifier "PTR__bfd_std_section_0007ffb4") (+ "+") (number_literal "0x180"))) () ")"))) () ")")) (compound_statement "{\n    return true;\n  }" ({ "{") (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (if_statement "if ((*param_1 & 1) == 0) {\n    __s = *(char **)(puVar4 + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }\n  else {\n    if (DAT_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }\n    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);\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 **)(puVar4 + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n  }" ({ "{") (expression_statement "__s = *(char **)(puVar4 + 4);" (assignment_expression "__s = *(char **)(puVar4 + 4)" (identifier "__s") (= "=") (pointer_expression "*(char **)(puVar4 + 4)" (* "*") (cast_expression "(char **)(puVar4 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar4 + 4)" (( "(") (binary_expression "puVar4 + 4" (identifier "puVar4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (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_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }\n    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);\n  }" (else "else") (compound_statement "{\n    if (DAT_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }\n    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);\n    if (__s == (char *)0x0) {\n      return false;\n    }\n    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);\n  }" ({ "{") (if_statement "if (DAT_00088df0 != puVar4) {\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }" (if "if") (parenthesized_expression "(DAT_00088df0 != puVar4)" (( "(") (binary_expression "DAT_00088df0 != puVar4" (identifier "DAT_00088df0") (!= "!=") (identifier "puVar4")) () ")")) (compound_statement "{\n      __s = *(char **)(param_1 + 8);\n      if (__s == (char *)0x0) {\n        return false;\n      }\n      goto LAB_0003b26f;\n    }" ({ "{") (expression_statement "__s = *(char **)(param_1 + 8);" (assignment_expression "__s = *(char **)(param_1 + 8)" (identifier "__s") (= "=") (pointer_expression "*(char **)(param_1 + 8)" (* "*") (cast_expression "(char **)(param_1 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (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") (; ";")) (} "}"))) (goto_statement "goto LAB_0003b26f;" (goto "goto") (statement_identifier "LAB_0003b26f") (; ";")) (} "}"))) (expression_statement "__s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);" (assignment_expression "__s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4)" (identifier "__s") (= "=") (pointer_expression "*(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4)" (* "*") (cast_expression "(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4)" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0xc) + 4) + 4" (pointer_expression "*(int *)(*(int *)(param_1 + 0xc) + 4)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0xc) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0xc) + 4)" (( "(") (binary_expression "*(int *)(param_1 + 0xc) + 4" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (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 "uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);" (assignment_expression "uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10)" (* "*") (cast_expression "(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10)" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10" (pointer_expression "*(int *)(*(int *)(param_1 + 0xc) + 4)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0xc) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0xc) + 4)" (( "(") (binary_expression "*(int *)(param_1 + 0xc) + 4" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}")))) (if_statement "if ((uVar3 & 4) != 0) {\n    return false;\n  }" (if "if") (parenthesized_expression "((uVar3 & 4) != 0)" (( "(") (binary_expression "(uVar3 & 4) != 0" (parenthesized_expression "(uVar3 & 4)" (( "(") (binary_expression "uVar3 & 4" (identifier "uVar3") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return false;\n  }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (labeled_statement "LAB_0003b26f:\n  pcVar1 = strchr(__s,1);" (statement_identifier "LAB_0003b26f") (: ":") (expression_statement "pcVar1 = strchr(__s,1);" (assignment_expression "pcVar1 = strchr(__s,1)" (identifier "pcVar1") (= "=") (call_expression "strchr(__s,1)" (identifier "strchr") (argument_list "(__s,1)" (( "(") (identifier "__s") (, ",") (number_literal "1") () ")")))) (; ";"))) (if_statement "if ((pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)) {\n    if (DAT_00088e08 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00088f24,puVar4);\n    if (iVar2 == 0) {\n      if (DAT_00088e88 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }" (if "if") (parenthesized_expression "((pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0))" (( "(") (binary_expression "(pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)" (parenthesized_expression "(pcVar1 == (char *)0x0)" (( "(") (binary_expression "pcVar1 == (char *)0x0" (identifier "pcVar1") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)" (( "(") (comma_expression "pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0" (assignment_expression "pcVar1 = strchr(__s,2)" (identifier "pcVar1") (= "=") (call_expression "strchr(__s,2)" (identifier "strchr") (argument_list "(__s,2)" (( "(") (identifier "__s") (, ",") (number_literal "2") () ")")))) (, ",") (binary_expression "pcVar1 == (char *)0x0" (identifier "pcVar1") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n    if (DAT_00088e08 != 0) {\n      return false;\n    }\n    iVar2 = bfd_is_local_label(DAT_00088f24,puVar4);\n    if (iVar2 == 0) {\n      if (DAT_00088e88 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }\n  }" ({ "{") (if_statement "if (DAT_00088e08 != 0) {\n      return false;\n    }" (if "if") (parenthesized_expression "(DAT_00088e08 != 0)" (( "(") (binary_expression "DAT_00088e08 != 0" (identifier "DAT_00088e08") (!= "!=") (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_00088f24,puVar4);" (assignment_expression "iVar2 = bfd_is_local_label(DAT_00088f24,puVar4)" (identifier "iVar2") (= "=") (call_expression "bfd_is_local_label(DAT_00088f24,puVar4)" (identifier "bfd_is_local_label") (argument_list "(DAT_00088f24,puVar4)" (( "(") (identifier "DAT_00088f24") (, ",") (identifier "puVar4") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n      if (DAT_00088e88 == 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_00088e88 == 0) {\n        return false;\n      }\n      if (*__s != '?') {\n        return false;\n      }\n      return __s[1] == '?';\n    }" ({ "{") (if_statement "if (DAT_00088e88 == 0) {\n        return false;\n      }" (if "if") (parenthesized_expression "(DAT_00088e88 == 0)" (( "(") (binary_expression "DAT_00088e88 == 0" (identifier "DAT_00088e88") (== "==") (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") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int function_1(type_1 *s)

{
  type_2 *paVar1;
  char *var_8;
  int var_11;
  type_3 *pbVar4;
  type_4 var_2;
  type_1 *var_6;
  
  var_2 = (type_4)s->bsym;
  if (((type_5)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;
  }
  pbVar4 = var_2->prev;
  if (((type_5)pbVar4 & 3) == 3) {
                    /* WARNING: Subroutine does not return */
    var_3("../../gas/symbols.c",0x864,"S_IS_LOCAL");
  }
  if ((type_4)var_2->flags == var_1) {
    return 1;
  }
  if (((var_4 != 0) && (((type_5)pbVar4 & 0x4002) == 0)) &&
     ((type_4)var_2->flags == (type_4)(var_5 + 0x180))) {
    return 1;
  }
  if (((type_5)s->sy_flags & 1) == 0) {
    var_6 = (type_1 *)var_2->id;
    if (var_6 == (type_1 *)0x0) {
      return 0;
    }
  }
  else {
    if (var_1 != var_2) {
      var_6 = (s->sy_value).X_add_symbol;
      if (var_6 == (type_1 *)0x0) {
        return 0;
      }
      goto LAB_0003b26f;
    }
    paVar1 = ((s->sy_value).X_op_symbol)->bsym;
    var_6 = (type_1 *)paVar1->name;
    if (var_6 == (type_1 *)0x0) {
      return 0;
    }
    pbVar4 = (type_3 *)paVar1->flags;
  }
  if (((type_5)pbVar4 & 4) != 0) {
    return 0;
  }
LAB_0003b26f:
  var_8 = var_7((char *)var_6,1);
  if ((var_8 == (char *)0x0) && (var_8 = var_7((char *)var_6,2), var_8 == (char *)0x0)) {
    if (var_9 != 0) {
      return 0;
    }
    var_11 = var_10(stdoutput,var_2);
    if (var_11 == 0) {
      if (var_12 == 0) {
        return 0;
      }
      if (*(char *)&var_6->sy_flags != '?') {
        return 0;
      }
      return (type_5)((var_6->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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (type_identifier) 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: (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: (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: (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)) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (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: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) 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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (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)))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

bool MASKED(byte *param_1)

{
  char *pcVar1;
  int iVar2;
  uint uVar3;
  undefined *puVar4;
  char *__s;
  
  puVar4 = *(undefined **)(param_1 + 4);
  if ((*param_1 & 1) != 0) {
    if (DAT_00088df0 != puVar4) {
      return true;
    }
    param_1 = *(byte **)(param_1 + 0xc);
    puVar4 = *(undefined **)(param_1 + 4);
  }
  uVar3 = *(uint *)(puVar4 + 0x10);
  if ((uVar3 & 3) == 3) {
                    /* WARNING: Subroutine does not return */
    FUN_0002edb0("../../gas/symbols.c",0x864,"S_IS_LOCAL",param_1);
  }
  if (*(undefined **)(puVar4 + 0x14) == DAT_00088df0) {
    return true;
  }
  if (((DAT_00088df8 != 0) && ((uVar3 & 0x4002) == 0)) &&
     (*(undefined **)(puVar4 + 0x14) == PTR__bfd_std_section_0007ffb4 + 0x180)) {
    return true;
  }
  if ((*param_1 & 1) == 0) {
    __s = *(char **)(puVar4 + 4);
    if (__s == (char *)0x0) {
      return false;
    }
  }
  else {
    if (DAT_00088df0 != puVar4) {
      __s = *(char **)(param_1 + 8);
      if (__s == (char *)0x0) {
        return false;
      }
      goto LAB_0003b26f;
    }
    __s = *(char **)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 4);
    if (__s == (char *)0x0) {
      return false;
    }
    uVar3 = *(uint *)(*(int *)(*(int *)(param_1 + 0xc) + 4) + 0x10);
  }
  if ((uVar3 & 4) != 0) {
    return false;
  }
LAB_0003b26f:
  pcVar1 = strchr(__s,1);
  if ((pcVar1 == (char *)0x0) && (pcVar1 = strchr(__s,2), pcVar1 == (char *)0x0)) {
    if (DAT_00088e08 != 0) {
      return false;
    }
    iVar2 = bfd_is_local_label(DAT_00088f24,puVar4);
    if (iVar2 == 0) {
      if (DAT_00088e88 == 0) {
        return false;
      }
      if (*__s != '?') {
        return false;
      }
      return __s[1] == '?';
    }
  }
  return true;
}

