
/* WARNING: Struct "Arm_input_section<true>": ignoring overlapping field "original_addralign_" */
/* WARNING: Enum "<anon>": Some values do not have unique names */
/* DWARF original prototype: bool section_is_scannable(Arm_relobj<true> * this, Shdr<32,_true> *
   shdr, uint shndx, Output_section * os, Symbol_table * symtab) */

bool __thiscall
anon_unknown.dwarf_9b9b16::Arm_relobj<true>::section_is_scannable
          (Arm_relobj<true> *this,Shdr<32,_true> *shdr,uint shndx,Output_section *os,
          Symbol_table *symtab)

{
  uint uVar1;
  Shdr_data<32> *pSVar2;
  bool bVar3;
  Output_relaxed_input_section *pOVar4;
  
  pSVar2 = shdr->p_;
  if ((pSVar2->sh_size != 0) && ((pSVar2->sh_flags >> 0x18 & 2) != 0)) {
    uVar1 = pSVar2->sh_type;
    if ((os != (Output_section *)0x0) &&
       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {
      bVar3 = gold::Symbol_table::is_section_folded(symtab,(Relobj *)this,shndx);
      if (bVar3) {
        return false;
      }
      if ((ulong)shndx < (ulong)(*(long *)&this->field_0xe8 - *(long *)&this->field_0xe0 >> 2)) {
        bVar3 = true;
        if (*(int *)(*(long *)&this->field_0xe0 + (ulong)shndx * 4) == -1) {
          pOVar4 = gold::Output_section::find_relaxed_input_section(os,(Relobj *)this,shndx);
          bVar3 = pOVar4 != (Output_relaxed_input_section *)0x0;
        }
        return bVar3;
      }
                    /* WARNING: Subroutine does not return */
      gold::do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");
    }
  }
  return false;
}



bool FUN_00233660(long param_1,long *param_2,uint param_3,long param_4,undefined8 param_5)

{
  uint uVar1;
  char cVar2;
  long lVar3;
  bool bVar4;
  
  lVar3 = *param_2;
  if ((*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)) {
    uVar1 = *(uint *)(lVar3 + 4);
    if ((param_4 != 0) &&
       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {
      cVar2 = FUN_00443530(param_5,param_1);
      if (cVar2 != '\0') {
        return false;
      }
      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {
        bVar4 = true;
        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {
          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);
          bVar4 = lVar3 != 0;
        }
        return bVar4;
      }
                    /* WARNING: Subroutine does not return */
      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");
    }
  }
  return false;
}


MOV RAX,qword ptr [RSI]
MOV ESI,dword ptr [RAX + 0x14]
TEST ESI,ESI
JZ 0x002336d0
MOV R9D,dword ptr [RAX + 0x8]
BSWAP R9D
AND R9D,0x2
JZ 0x002336d0
MOV EAX,dword ptr [RAX + 0x4]
BSWAP EAX
TEST RCX,RCX
JZ 0x002336d0
CMP EAX,0x1
JNZ 0x002336d0
PUSH R12
MOV RSI,RDI
MOV R12D,EDX
PUSH RBP
MOV RBP,RCX
PUSH RBX
MOV RBX,RDI
MOV RDI,R8
CALL 0x00443530
TEST AL,AL
JNZ 0x002336d8
MOV RDX,qword ptr [RBX + 0xe0]
MOV RAX,qword ptr [RBX + 0xe8]
MOV ECX,R12D
SUB RAX,RDX
SAR RAX,0x2
CMP RCX,RAX
JNC 0x002336f6
CMP dword ptr [RDX + RCX*0x4],-0x1
MOV EAX,0x1
JZ 0x002336e0
POP RBX
POP RBP
POP R12
RET
XOR EAX,EAX
RET
POP RBX
XOR EAX,EAX
POP RBP
POP R12
RET
MOV EDX,R12D
MOV RSI,RBX
MOV RDI,RBP
CALL 0x003cfdd0
TEST RAX,RAX
SETNZ AL
JMP 0x002336ca
LEA RDX,[0x5508e0]
MOV ESI,0x7f7
LEA RDI,[0x5333ac]
CALL 0x00352af0
(translation_unit "bool FUN_00233660(long param_1,long *param_2,uint param_3,long param_4,undefined8 param_5)\n\n{\n  uint uVar1;\n  char cVar2;\n  long lVar3;\n  bool bVar4;\n  \n  lVar3 = *param_2;\n  if ((*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)) {\n    uVar1 = *(uint *)(lVar3 + 4);\n    if ((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }\n  return false;\n}\n\n" (function_definition "bool FUN_00233660(long param_1,long *param_2,uint param_3,long param_4,undefined8 param_5)\n\n{\n  uint uVar1;\n  char cVar2;\n  long lVar3;\n  bool bVar4;\n  \n  lVar3 = *param_2;\n  if ((*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)) {\n    uVar1 = *(uint *)(lVar3 + 4);\n    if ((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }\n  return false;\n}" primitive_type (function_declarator "FUN_00233660(long param_1,long *param_2,uint param_3,long param_4,undefined8 param_5)" identifier (parameter_list "(long param_1,long *param_2,uint param_3,long param_4,undefined8 param_5)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  char cVar2;\n  long lVar3;\n  bool bVar4;\n  \n  lVar3 = *param_2;\n  if ((*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)) {\n    uVar1 = *(uint *)(lVar3 + 4);\n    if ((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }\n  return false;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (expression_statement "lVar3 = *param_2;" (assignment_expression "lVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if ((*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)) {\n    uVar1 = *(uint *)(lVar3 + 4);\n    if ((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }" if (parenthesized_expression "((*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0))" ( (binary_expression "(*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)" (parenthesized_expression "(*(int *)(lVar3 + 0x14) != 0)" ( (binary_expression "*(int *)(lVar3 + 0x14) != 0" (pointer_expression "*(int *)(lVar3 + 0x14)" * (cast_expression "(int *)(lVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x14)" ( (binary_expression "lVar3 + 0x14" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)" ( (binary_expression "(*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0" (parenthesized_expression "(*(uint *)(lVar3 + 8) >> 0x18 & 2)" ( (binary_expression "*(uint *)(lVar3 + 8) >> 0x18 & 2" (binary_expression "*(uint *)(lVar3 + 8) >> 0x18" (pointer_expression "*(uint *)(lVar3 + 8)" * (cast_expression "(uint *)(lVar3 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) )))) >> number_literal) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    uVar1 = *(uint *)(lVar3 + 4);\n    if ((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }" { (expression_statement "uVar1 = *(uint *)(lVar3 + 4);" (assignment_expression "uVar1 = *(uint *)(lVar3 + 4)" identifier = (pointer_expression "*(uint *)(lVar3 + 4)" * (cast_expression "(uint *)(lVar3 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 4)" ( (binary_expression "lVar3 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }" if (parenthesized_expression "((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1))" ( (binary_expression "(param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)" (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) && (parenthesized_expression "((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)" ( (binary_expression "(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1" (parenthesized_expression "(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)" ( (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x18" identifier << number_literal)) )) == number_literal) ))) )) (compound_statement "{\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    /* WARNING: Subroutine does not return */\n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }" { (expression_statement "cVar2 = FUN_00443530(param_5,param_1);" (assignment_expression "cVar2 = FUN_00443530(param_5,param_1)" identifier = (call_expression "FUN_00443530(param_5,param_1)" identifier (argument_list "(param_5,param_1)" ( identifier , identifier )))) ;) (if_statement "if (cVar2 != '\0') {\n        return false;\n      }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (if_statement "if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }" if (parenthesized_expression "((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2))" ( (binary_expression "(ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)" (cast_expression "(ulong)param_3" ( (type_descriptor "ulong" type_identifier) ) identifier) < (call_expression "(ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)" ( (binary_expression "*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2" (binary_expression "*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0)" (pointer_expression "*(long *)(param_1 + 0xe8)" * (cast_expression "(long *)(param_1 + 0xe8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) )))) - (pointer_expression "*(long *)(param_1 + 0xe0)" * (cast_expression "(long *)(param_1 + 0xe0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) ))))) >> number_literal) )))) )) (compound_statement "{\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }" { (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1" (pointer_expression "*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4)" * (cast_expression "(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4)" ( (binary_expression "*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4" (pointer_expression "*(long *)(param_1 + 0xe0)" * (cast_expression "(long *)(param_1 + 0xe0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) )))) + (binary_expression "(ulong)param_3 * 4" (cast_expression "(ulong)param_3" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) )))) == number_literal) )) (compound_statement "{\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }" { (expression_statement "lVar3 = FUN_003cfdd0(param_4,param_1,param_3);" (assignment_expression "lVar3 = FUN_003cfdd0(param_4,param_1,param_3)" identifier = (call_expression "FUN_003cfdd0(param_4,param_1,param_3)" identifier (argument_list "(param_4,param_1,param_3)" ( identifier , identifier , identifier )))) ;) (expression_statement "bVar4 = lVar3 != 0;" (assignment_expression "bVar4 = lVar3 != 0" identifier = (binary_expression "lVar3 != 0" identifier != number_literal)) ;) })) (return_statement "return bVar4;" return identifier ;) })) comment (expression_statement "FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");" (call_expression "FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset")" identifier (argument_list "("../../gold/object.h",0x7f7,"get_output_section_offset")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""get_output_section_offset"" " string_content ") ))) ;) })) })) (return_statement "return false;" return false ;) })))
(translation_unit "/* WARNING: Struct "Arm_input_section<true>": ignoring overlapping field "original_addralign_" */\n/* WARNING: Enum "<anon>": Some values do not have unique names */\n/* DWARF original prototype: bool section_is_scannable(Arm_relobj<true> * this, Shdr<32,_true> *\n   shdr, uint shndx, Output_section * os, Symbol_table * symtab) */\n\nbool __thiscall\nanon_unknown.dwarf_9b9b16::Arm_relobj<true>::section_is_scannable\n          (Arm_relobj<true> *this,Shdr<32,_true> *shdr,uint shndx,Output_section *os,\n          Symbol_table *symtab)\n\n{\n  uint uVar1;\n  Shdr_data<32> *pSVar2;\n  bool bVar3;\n  Output_relaxed_input_section *pOVar4;\n  \n  pSVar2 = shdr->p_;\n  if ((pSVar2->sh_size != 0) && ((pSVar2->sh_flags >> 0x18 & 2) != 0)) {\n    uVar1 = pSVar2->sh_type;\n    if ((os != (Output_section *)0x0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      bVar3 = gold::Symbol_table::is_section_folded(symtab,(Relobj *)this,shndx);\n      if (bVar3) {\n        return false;\n      }\n      if ((ulong)shndx < (ulong)(*(long *)&this->field_0xe8 - *(long *)&this->field_0xe0 >> 2)) {\n        bVar3 = true;\n        if (*(int *)(*(long *)&this->field_0xe0 + (ulong)shndx * 4) == -1) {\n          pOVar4 = gold::Output_section::find_relaxed_input_section(os,(Relobj *)this,shndx);\n          bVar3 = pOVar4 != (Output_relaxed_input_section *)0x0;\n        }\n        return bVar3;\n      }\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }\n  return false;\n}\n\n" comment comment comment (function_definition "bool __thiscall\nanon_unknown.dwarf_9b9b16::Arm_relobj<true>::section_is_scannable\n          (Arm_relobj<true> *this,Shdr<32,_true> *shdr,uint shndx,Output_section *os,\n          Symbol_table *symtab)\n\n{\n  uint uVar1;\n  Shdr_data<32> *pSVar2;\n  bool bVar3;\n  Output_relaxed_input_section *pOVar4;\n  \n  pSVar2 = shdr->p_;\n  if ((pSVar2->sh_size != 0) && ((pSVar2->sh_flags >> 0x18 & 2) != 0)) {\n    uVar1 = pSVar2->sh_type;\n    if ((os != (Output_section *)0x0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      bVar3 = gold::Symbol_table::is_section_folded(symtab,(Relobj *)this,shndx);\n      if (bVar3) {\n        return false;\n      }\n      if ((ulong)shndx < (ulong)(*(long *)&this->field_0xe8 - *(long *)&this->field_0xe0 >> 2)) {\n        bVar3 = true;\n        if (*(int *)(*(long *)&this->field_0xe0 + (ulong)shndx * 4) == -1) {\n          pOVar4 = gold::Output_section::find_relaxed_input_section(os,(Relobj *)this,shndx);\n          bVar3 = pOVar4 != (Output_relaxed_input_section *)0x0;\n        }\n        return bVar3;\n      }\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }\n  return false;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "anon_unknown.dwarf_9b9b16::Arm_relobj<true>::" identifier . identifier : : identifier < true > : :) (function_declarator "section_is_scannable\n          (Arm_relobj<true> *this,Shdr<32,_true> *shdr,uint shndx,Output_section *os,\n          Symbol_table *symtab)" identifier (parameter_list "(Arm_relobj<true> *this,Shdr<32,_true> *shdr,uint shndx,Output_section *os,\n          Symbol_table *symtab)" ( (parameter_declaration "Arm_relobj<true> *this" type_identifier (ERROR "<true>" < true >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Shdr" type_identifier) (ERROR "<32" < number_literal) , (parameter_declaration "_true> *shdr" type_identifier (ERROR ">" >) (pointer_declarator "*shdr" * identifier)) , (parameter_declaration "uint shndx" type_identifier identifier) , (parameter_declaration "Output_section *os" type_identifier (pointer_declarator "*os" * identifier)) , (parameter_declaration "Symbol_table *symtab" type_identifier (pointer_declarator "*symtab" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  Shdr_data<32> *pSVar2;\n  bool bVar3;\n  Output_relaxed_input_section *pOVar4;\n  \n  pSVar2 = shdr->p_;\n  if ((pSVar2->sh_size != 0) && ((pSVar2->sh_flags >> 0x18 & 2) != 0)) {\n    uVar1 = pSVar2->sh_type;\n    if ((os != (Output_section *)0x0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      bVar3 = gold::Symbol_table::is_section_folded(symtab,(Relobj *)this,shndx);\n      if (bVar3) {\n        return false;\n      }\n      if ((ulong)shndx < (ulong)(*(long *)&this->field_0xe8 - *(long *)&this->field_0xe0 >> 2)) {\n        bVar3 = true;\n        if (*(int *)(*(long *)&this->field_0xe0 + (ulong)shndx * 4) == -1) {\n          pOVar4 = gold::Output_section::find_relaxed_input_section(os,(Relobj *)this,shndx);\n          bVar3 = pOVar4 != (Output_relaxed_input_section *)0x0;\n        }\n        return bVar3;\n      }\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }\n  return false;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (expression_statement "Shdr_data<32> *pSVar2;" (binary_expression "Shdr_data<32> *pSVar2" (binary_expression "Shdr_data<32" identifier < number_literal) > (pointer_expression "*pSVar2" * identifier)) ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "Output_relaxed_input_section *pOVar4;" type_identifier (pointer_declarator "*pOVar4" * identifier) ;) (expression_statement "pSVar2 = shdr->p_;" (assignment_expression "pSVar2 = shdr->p_" identifier = (field_expression "shdr->p_" identifier -> field_identifier)) ;) (if_statement "if ((pSVar2->sh_size != 0) && ((pSVar2->sh_flags >> 0x18 & 2) != 0)) {\n    uVar1 = pSVar2->sh_type;\n    if ((os != (Output_section *)0x0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      bVar3 = gold::Symbol_table::is_section_folded(symtab,(Relobj *)this,shndx);\n      if (bVar3) {\n        return false;\n      }\n      if ((ulong)shndx < (ulong)(*(long *)&this->field_0xe8 - *(long *)&this->field_0xe0 >> 2)) {\n        bVar3 = true;\n        if (*(int *)(*(long *)&this->field_0xe0 + (ulong)shndx * 4) == -1) {\n          pOVar4 = gold::Output_section::find_relaxed_input_section(os,(Relobj *)this,shndx);\n          bVar3 = pOVar4 != (Output_relaxed_input_section *)0x0;\n        }\n        return bVar3;\n      }\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }" if (parenthesized_expression "((pSVar2->sh_size != 0) && ((pSVar2->sh_flags >> 0x18 & 2) != 0))" ( (binary_expression "(pSVar2->sh_size != 0) && ((pSVar2->sh_flags >> 0x18 & 2) != 0)" (parenthesized_expression "(pSVar2->sh_size != 0)" ( (binary_expression "pSVar2->sh_size != 0" (field_expression "pSVar2->sh_size" identifier -> field_identifier) != number_literal) )) && (parenthesized_expression "((pSVar2->sh_flags >> 0x18 & 2) != 0)" ( (binary_expression "(pSVar2->sh_flags >> 0x18 & 2) != 0" (parenthesized_expression "(pSVar2->sh_flags >> 0x18 & 2)" ( (binary_expression "pSVar2->sh_flags >> 0x18 & 2" (binary_expression "pSVar2->sh_flags >> 0x18" (field_expression "pSVar2->sh_flags" identifier -> field_identifier) >> number_literal) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    uVar1 = pSVar2->sh_type;\n    if ((os != (Output_section *)0x0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      bVar3 = gold::Symbol_table::is_section_folded(symtab,(Relobj *)this,shndx);\n      if (bVar3) {\n        return false;\n      }\n      if ((ulong)shndx < (ulong)(*(long *)&this->field_0xe8 - *(long *)&this->field_0xe0 >> 2)) {\n        bVar3 = true;\n        if (*(int *)(*(long *)&this->field_0xe0 + (ulong)shndx * 4) == -1) {\n          pOVar4 = gold::Output_section::find_relaxed_input_section(os,(Relobj *)this,shndx);\n          bVar3 = pOVar4 != (Output_relaxed_input_section *)0x0;\n        }\n        return bVar3;\n      }\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }" { (expression_statement "uVar1 = pSVar2->sh_type;" (assignment_expression "uVar1 = pSVar2->sh_type" identifier = (field_expression "pSVar2->sh_type" identifier -> field_identifier)) ;) (if_statement "if ((os != (Output_section *)0x0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      bVar3 = gold::Symbol_table::is_section_folded(symtab,(Relobj *)this,shndx);\n      if (bVar3) {\n        return false;\n      }\n      if ((ulong)shndx < (ulong)(*(long *)&this->field_0xe8 - *(long *)&this->field_0xe0 >> 2)) {\n        bVar3 = true;\n        if (*(int *)(*(long *)&this->field_0xe0 + (ulong)shndx * 4) == -1) {\n          pOVar4 = gold::Output_section::find_relaxed_input_section(os,(Relobj *)this,shndx);\n          bVar3 = pOVar4 != (Output_relaxed_input_section *)0x0;\n        }\n        return bVar3;\n      }\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }" if (parenthesized_expression "((os != (Output_section *)0x0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1))" ( (binary_expression "(os != (Output_section *)0x0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)" (parenthesized_expression "(os != (Output_section *)0x0)" ( (binary_expression "os != (Output_section *)0x0" identifier != (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)" ( (binary_expression "(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1" (parenthesized_expression "(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)" ( (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x18" identifier << number_literal)) )) == number_literal) ))) )) (compound_statement "{\n      bVar3 = gold::Symbol_table::is_section_folded(symtab,(Relobj *)this,shndx);\n      if (bVar3) {\n        return false;\n      }\n      if ((ulong)shndx < (ulong)(*(long *)&this->field_0xe8 - *(long *)&this->field_0xe0 >> 2)) {\n        bVar3 = true;\n        if (*(int *)(*(long *)&this->field_0xe0 + (ulong)shndx * 4) == -1) {\n          pOVar4 = gold::Output_section::find_relaxed_input_section(os,(Relobj *)this,shndx);\n          bVar3 = pOVar4 != (Output_relaxed_input_section *)0x0;\n        }\n        return bVar3;\n      }\n                    /* WARNING: Subroutine does not return */\n      gold::do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }" { (ERROR "bVar3 = gold::" (assignment_expression "bVar3 = gold" identifier = identifier) : :) (labeled_statement "Symbol_table::is_section_folded(symtab,(Relobj *)this,shndx);" statement_identifier : (ERROR ":" :) (expression_statement "is_section_folded(symtab,(Relobj *)this,shndx);" (call_expression "is_section_folded(symtab,(Relobj *)this,shndx)" identifier (argument_list "(symtab,(Relobj *)this,shndx)" ( identifier , (cast_expression "(Relobj *)this" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;)) (if_statement "if (bVar3) {\n        return false;\n      }" if (parenthesized_expression "(bVar3)" ( identifier )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (if_statement "if ((ulong)shndx < (ulong)(*(long *)&this->field_0xe8 - *(long *)&this->field_0xe0 >> 2)) {\n        bVar3 = true;\n        if (*(int *)(*(long *)&this->field_0xe0 + (ulong)shndx * 4) == -1) {\n          pOVar4 = gold::Output_section::find_relaxed_input_section(os,(Relobj *)this,shndx);\n          bVar3 = pOVar4 != (Output_relaxed_input_section *)0x0;\n        }\n        return bVar3;\n      }" if (parenthesized_expression "((ulong)shndx < (ulong)(*(long *)&this->field_0xe8 - *(long *)&this->field_0xe0 >> 2))" ( (binary_expression "(ulong)shndx < (ulong)(*(long *)&this->field_0xe8 - *(long *)&this->field_0xe0 >> 2)" (cast_expression "(ulong)shndx" ( (type_descriptor "ulong" type_identifier) ) identifier) < (call_expression "(ulong)(*(long *)&this->field_0xe8 - *(long *)&this->field_0xe0 >> 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*(long *)&this->field_0xe8 - *(long *)&this->field_0xe0 >> 2)" ( (binary_expression "*(long *)&this->field_0xe8 - *(long *)&this->field_0xe0 >> 2" (binary_expression "*(long *)&this->field_0xe8 - *(long *)&this->field_0xe0" (pointer_expression "*(long *)&this->field_0xe8" * (cast_expression "(long *)&this->field_0xe8" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0xe8" & (field_expression "this->field_0xe8" identifier -> field_identifier)))) - (pointer_expression "*(long *)&this->field_0xe0" * (cast_expression "(long *)&this->field_0xe0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0xe0" & (field_expression "this->field_0xe0" identifier -> field_identifier))))) >> number_literal) )))) )) (compound_statement "{\n        bVar3 = true;\n        if (*(int *)(*(long *)&this->field_0xe0 + (ulong)shndx * 4) == -1) {\n          pOVar4 = gold::Output_section::find_relaxed_input_section(os,(Relobj *)this,shndx);\n          bVar3 = pOVar4 != (Output_relaxed_input_section *)0x0;\n        }\n        return bVar3;\n      }" { (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (if_statement "if (*(int *)(*(long *)&this->field_0xe0 + (ulong)shndx * 4) == -1) {\n          pOVar4 = gold::Output_section::find_relaxed_input_section(os,(Relobj *)this,shndx);\n          bVar3 = pOVar4 != (Output_relaxed_input_section *)0x0;\n        }" if (parenthesized_expression "(*(int *)(*(long *)&this->field_0xe0 + (ulong)shndx * 4) == -1)" ( (binary_expression "*(int *)(*(long *)&this->field_0xe0 + (ulong)shndx * 4) == -1" (pointer_expression "*(int *)(*(long *)&this->field_0xe0 + (ulong)shndx * 4)" * (cast_expression "(int *)(*(long *)&this->field_0xe0 + (ulong)shndx * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)&this->field_0xe0 + (ulong)shndx * 4)" ( (binary_expression "*(long *)&this->field_0xe0 + (ulong)shndx * 4" (pointer_expression "*(long *)&this->field_0xe0" * (cast_expression "(long *)&this->field_0xe0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&this->field_0xe0" & (field_expression "this->field_0xe0" identifier -> field_identifier)))) + (binary_expression "(ulong)shndx * 4" (cast_expression "(ulong)shndx" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) )))) == number_literal) )) (compound_statement "{\n          pOVar4 = gold::Output_section::find_relaxed_input_section(os,(Relobj *)this,shndx);\n          bVar3 = pOVar4 != (Output_relaxed_input_section *)0x0;\n        }" { (ERROR "pOVar4 = gold::" (assignment_expression "pOVar4 = gold" identifier = identifier) : :) (labeled_statement "Output_section::find_relaxed_input_section(os,(Relobj *)this,shndx);" statement_identifier : (ERROR ":" :) (expression_statement "find_relaxed_input_section(os,(Relobj *)this,shndx);" (call_expression "find_relaxed_input_section(os,(Relobj *)this,shndx)" identifier (argument_list "(os,(Relobj *)this,shndx)" ( identifier , (cast_expression "(Relobj *)this" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;)) (expression_statement "bVar3 = pOVar4 != (Output_relaxed_input_section *)0x0;" (assignment_expression "bVar3 = pOVar4 != (Output_relaxed_input_section *)0x0" identifier = (binary_expression "pOVar4 != (Output_relaxed_input_section *)0x0" identifier != (cast_expression "(Output_relaxed_input_section *)0x0" ( (type_descriptor "Output_relaxed_input_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) })) (return_statement "return bVar3;" return identifier ;) })) comment (labeled_statement "gold::do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");" statement_identifier : (ERROR ":" :) (expression_statement "do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset");" (call_expression "do_gold_unreachable("../../gold/object.h",0x7f7,"get_output_section_offset")" identifier (argument_list "("../../gold/object.h",0x7f7,"get_output_section_offset")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""get_output_section_offset"" " string_content ") ))) ;)) })) })) (return_statement "return false;" return false ;) })))
(translation_unit "bool FUN_00233660(long param_1,long *param_2,uint param_3,long param_4,undefined8 param_5)\n\n{\n  uint uVar1;\n  char cVar2;\n  long lVar3;\n  bool bVar4;\n  \n  lVar3 = *param_2;\n  if ((*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)) {\n    uVar1 = *(uint *)(lVar3 + 4);\n    if ((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    \n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }\n  return false;\n}\n\n" (function_definition "bool FUN_00233660(long param_1,long *param_2,uint param_3,long param_4,undefined8 param_5)\n\n{\n  uint uVar1;\n  char cVar2;\n  long lVar3;\n  bool bVar4;\n  \n  lVar3 = *param_2;\n  if ((*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)) {\n    uVar1 = *(uint *)(lVar3 + 4);\n    if ((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    \n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }\n  return false;\n}" primitive_type (function_declarator "FUN_00233660(long param_1,long *param_2,uint param_3,long param_4,undefined8 param_5)" identifier (parameter_list "(long param_1,long *param_2,uint param_3,long param_4,undefined8 param_5)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) ))) (compound_statement "{\n  uint uVar1;\n  char cVar2;\n  long lVar3;\n  bool bVar4;\n  \n  lVar3 = *param_2;\n  if ((*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)) {\n    uVar1 = *(uint *)(lVar3 + 4);\n    if ((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    \n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }\n  return false;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (expression_statement "lVar3 = *param_2;" (assignment_expression "lVar3 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if ((*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)) {\n    uVar1 = *(uint *)(lVar3 + 4);\n    if ((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    \n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }" if (parenthesized_expression "((*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0))" ( (binary_expression "(*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)" (parenthesized_expression "(*(int *)(lVar3 + 0x14) != 0)" ( (binary_expression "*(int *)(lVar3 + 0x14) != 0" (pointer_expression "*(int *)(lVar3 + 0x14)" * (cast_expression "(int *)(lVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 0x14)" ( (binary_expression "lVar3 + 0x14" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)" ( (binary_expression "(*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0" (parenthesized_expression "(*(uint *)(lVar3 + 8) >> 0x18 & 2)" ( (binary_expression "*(uint *)(lVar3 + 8) >> 0x18 & 2" (binary_expression "*(uint *)(lVar3 + 8) >> 0x18" (pointer_expression "*(uint *)(lVar3 + 8)" * (cast_expression "(uint *)(lVar3 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 8)" ( (binary_expression "lVar3 + 8" identifier + number_literal) )))) >> number_literal) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    uVar1 = *(uint *)(lVar3 + 4);\n    if ((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    \n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }" { (expression_statement "uVar1 = *(uint *)(lVar3 + 4);" (assignment_expression "uVar1 = *(uint *)(lVar3 + 4)" identifier = (pointer_expression "*(uint *)(lVar3 + 4)" * (cast_expression "(uint *)(lVar3 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar3 + 4)" ( (binary_expression "lVar3 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    \n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }" if (parenthesized_expression "((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1))" ( (binary_expression "(param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)" (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) && (parenthesized_expression "((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)" ( (binary_expression "(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1" (parenthesized_expression "(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)" ( (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" ( (binary_expression "uVar1 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" ( (binary_expression "uVar1 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar1 << 0x18" identifier << number_literal)) )) == number_literal) ))) )) (compound_statement "{\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    \n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }" { (expression_statement "cVar2 = FUN_00443530(param_5,param_1);" (assignment_expression "cVar2 = FUN_00443530(param_5,param_1)" identifier = (call_expression "FUN_00443530(param_5,param_1)" identifier (argument_list "(param_5,param_1)" ( identifier , identifier )))) ;) (if_statement "if (cVar2 != '\0') {\n        return false;\n      }" if (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return false;\n      }" { (return_statement "return false;" return false ;) })) (if_statement "if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }" if (parenthesized_expression "((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2))" ( (binary_expression "(ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)" (cast_expression "(ulong)param_3" ( (type_descriptor "ulong" type_identifier) ) identifier) < (call_expression "(ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)" ( (binary_expression "*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2" (binary_expression "*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0)" (pointer_expression "*(long *)(param_1 + 0xe8)" * (cast_expression "(long *)(param_1 + 0xe8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) )))) - (pointer_expression "*(long *)(param_1 + 0xe0)" * (cast_expression "(long *)(param_1 + 0xe0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) ))))) >> number_literal) )))) )) (compound_statement "{\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }" { (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) (if_statement "if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }" if (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1)" ( (binary_expression "*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1" (pointer_expression "*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4)" * (cast_expression "(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4)" ( (binary_expression "*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4" (pointer_expression "*(long *)(param_1 + 0xe0)" * (cast_expression "(long *)(param_1 + 0xe0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) )))) + (binary_expression "(ulong)param_3 * 4" (cast_expression "(ulong)param_3" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) )))) == number_literal) )) (compound_statement "{\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }" { (expression_statement "lVar3 = FUN_003cfdd0(param_4,param_1,param_3);" (assignment_expression "lVar3 = FUN_003cfdd0(param_4,param_1,param_3)" identifier = (call_expression "FUN_003cfdd0(param_4,param_1,param_3)" identifier (argument_list "(param_4,param_1,param_3)" ( identifier , identifier , identifier )))) ;) (expression_statement "bVar4 = lVar3 != 0;" (assignment_expression "bVar4 = lVar3 != 0" identifier = (binary_expression "lVar3 != 0" identifier != number_literal)) ;) })) (return_statement "return bVar4;" return identifier ;) })) (expression_statement "FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");" (call_expression "FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset")" identifier (argument_list "("../../gold/object.h",0x7f7,"get_output_section_offset")" ( (string_literal ""../../gold/object.h"" " string_content ") , number_literal , (string_literal ""get_output_section_offset"" " string_content ") ))) ;) })) })) (return_statement "return false;" return false ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) & LIT) )) != LIT) ))) )) (compound_statement { (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) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT)) | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << LIT)) | (binary_expression IDENT << LIT)) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return BOOL ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) >> LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != LIT)) ;) })) (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) })) (return_statement return BOOL ;) })))
(function_definition "bool FUN_00233660(long param_1,long *param_2,uint param_3,long param_4,undefined8 param_5)\n\n{\n  uint uVar1;\n  char cVar2;\n  long lVar3;\n  bool bVar4;\n  \n  lVar3 = *param_2;\n  if ((*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)) {\n    uVar1 = *(uint *)(lVar3 + 4);\n    if ((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    \n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }\n  return false;\n}" (primitive_type "bool") (function_declarator "FUN_00233660(long param_1,long *param_2,uint param_3,long param_4,undefined8 param_5)" (identifier "FUN_00233660") (parameter_list "(long param_1,long *param_2,uint param_3,long param_4,undefined8 param_5)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long *param_2" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) () ")"))) (compound_statement "{\n  uint uVar1;\n  char cVar2;\n  long lVar3;\n  bool bVar4;\n  \n  lVar3 = *param_2;\n  if ((*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)) {\n    uVar1 = *(uint *)(lVar3 + 4);\n    if ((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    \n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }\n  return false;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "bool bVar4;" (primitive_type "bool") (identifier "bVar4") (; ";")) (expression_statement "lVar3 = *param_2;" (assignment_expression "lVar3 = *param_2" (identifier "lVar3") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if ((*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)) {\n    uVar1 = *(uint *)(lVar3 + 4);\n    if ((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    \n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }" (if "if") (parenthesized_expression "((*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0))" (( "(") (binary_expression "(*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)" (parenthesized_expression "(*(int *)(lVar3 + 0x14) != 0)" (( "(") (binary_expression "*(int *)(lVar3 + 0x14) != 0" (pointer_expression "*(int *)(lVar3 + 0x14)" (* "*") (cast_expression "(int *)(lVar3 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 0x14)" (( "(") (binary_expression "lVar3 + 0x14" (identifier "lVar3") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)" (( "(") (binary_expression "(*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0" (parenthesized_expression "(*(uint *)(lVar3 + 8) >> 0x18 & 2)" (( "(") (binary_expression "*(uint *)(lVar3 + 8) >> 0x18 & 2" (binary_expression "*(uint *)(lVar3 + 8) >> 0x18" (pointer_expression "*(uint *)(lVar3 + 8)" (* "*") (cast_expression "(uint *)(lVar3 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 8)" (( "(") (binary_expression "lVar3 + 8" (identifier "lVar3") (+ "+") (number_literal "8")) () ")")))) (>> ">>") (number_literal "0x18")) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    uVar1 = *(uint *)(lVar3 + 4);\n    if ((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    \n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }\n  }" ({ "{") (expression_statement "uVar1 = *(uint *)(lVar3 + 4);" (assignment_expression "uVar1 = *(uint *)(lVar3 + 4)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(lVar3 + 4)" (* "*") (cast_expression "(uint *)(lVar3 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar3 + 4)" (( "(") (binary_expression "lVar3 + 4" (identifier "lVar3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    \n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }" (if "if") (parenthesized_expression "((param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1))" (( "(") (binary_expression "(param_4 != 0) &&\n       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)" (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)" (( "(") (binary_expression "(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1" (parenthesized_expression "(uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18)" (( "(") (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8" (binary_expression "uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8" (binary_expression "uVar1 >> 0x18" (identifier "uVar1") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar1 & 0xff0000) >> 8" (parenthesized_expression "(uVar1 & 0xff0000)" (( "(") (binary_expression "uVar1 & 0xff0000" (identifier "uVar1") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar1 & 0xff00) << 8" (parenthesized_expression "(uVar1 & 0xff00)" (( "(") (binary_expression "uVar1 & 0xff00" (identifier "uVar1") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar1 << 0x18" (identifier "uVar1") (<< "<<") (number_literal "0x18"))) () ")")) (== "==") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\n      cVar2 = FUN_00443530(param_5,param_1);\n      if (cVar2 != '\0') {\n        return false;\n      }\n      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }\n                    \n      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");\n    }" ({ "{") (expression_statement "cVar2 = FUN_00443530(param_5,param_1);" (assignment_expression "cVar2 = FUN_00443530(param_5,param_1)" (identifier "cVar2") (= "=") (call_expression "FUN_00443530(param_5,param_1)" (identifier "FUN_00443530") (argument_list "(param_5,param_1)" (( "(") (identifier "param_5") (, ",") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (cVar2 != '\0') {\n        return false;\n      }" (if "if") (parenthesized_expression "(cVar2 != '\0')" (( "(") (binary_expression "cVar2 != '\0'" (identifier "cVar2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        return false;\n      }" ({ "{") (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}"))) (if_statement "if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }" (if "if") (parenthesized_expression "((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2))" (( "(") (binary_expression "(ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)" (cast_expression "(ulong)param_3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "param_3")) (< "<") (call_expression "(ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)" (( "(") (binary_expression "*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2" (binary_expression "*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0)" (pointer_expression "*(long *)(param_1 + 0xe8)" (* "*") (cast_expression "(long *)(param_1 + 0xe8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe8)" (( "(") (binary_expression "param_1 + 0xe8" (identifier "param_1") (+ "+") (number_literal "0xe8")) () ")")))) (- "-") (pointer_expression "*(long *)(param_1 + 0xe0)" (* "*") (cast_expression "(long *)(param_1 + 0xe0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe0)" (( "(") (binary_expression "param_1 + 0xe0" (identifier "param_1") (+ "+") (number_literal "0xe0")) () ")"))))) (>> ">>") (number_literal "2")) () ")")))) () ")")) (compound_statement "{\n        bVar4 = true;\n        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }\n        return bVar4;\n      }" ({ "{") (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" (identifier "bVar4") (= "=") (true "true")) (; ";")) (if_statement "if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }" (if "if") (parenthesized_expression "(*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1)" (( "(") (binary_expression "*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1" (pointer_expression "*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4)" (* "*") (cast_expression "(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4)" (( "(") (binary_expression "*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4" (pointer_expression "*(long *)(param_1 + 0xe0)" (* "*") (cast_expression "(long *)(param_1 + 0xe0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe0)" (( "(") (binary_expression "param_1 + 0xe0" (identifier "param_1") (+ "+") (number_literal "0xe0")) () ")")))) (+ "+") (binary_expression "(ulong)param_3 * 4" (cast_expression "(ulong)param_3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "param_3")) (* "*") (number_literal "4"))) () ")")))) (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);\n          bVar4 = lVar3 != 0;\n        }" ({ "{") (expression_statement "lVar3 = FUN_003cfdd0(param_4,param_1,param_3);" (assignment_expression "lVar3 = FUN_003cfdd0(param_4,param_1,param_3)" (identifier "lVar3") (= "=") (call_expression "FUN_003cfdd0(param_4,param_1,param_3)" (identifier "FUN_003cfdd0") (argument_list "(param_4,param_1,param_3)" (( "(") (identifier "param_4") (, ",") (identifier "param_1") (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "bVar4 = lVar3 != 0;" (assignment_expression "bVar4 = lVar3 != 0" (identifier "bVar4") (= "=") (binary_expression "lVar3 != 0" (identifier "lVar3") (!= "!=") (number_literal "0"))) (; ";")) (} "}"))) (return_statement "return bVar4;" (return "return") (identifier "bVar4") (; ";")) (} "}"))) (expression_statement "FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");" (call_expression "FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset")" (identifier "FUN_00352af0") (argument_list "("../../gold/object.h",0x7f7,"get_output_section_offset")" (( "(") (string_literal ""../../gold/object.h"" (" """) (string_content "../../gold/object.h") (" """)) (, ",") (number_literal "0x7f7") (, ",") (string_literal ""get_output_section_offset"" (" """) (string_content "get_output_section_offset") (" """)) () ")"))) (; ";")) (} "}"))) (} "}"))) (return_statement "return false;" (return "return") (false "false") (; ";")) (} "}")))

/* WARNING: Struct "Arm_input_section<true>": ignoring overlapping field "original_addralign_" */
/* WARNING: Enum "<anon>": Some values do not have unique names */
/* DWARF original prototype: bool section_is_scannable(Arm_relobj<true> * this, Shdr<32,_true> *
   shdr, uint shndx, Output_section * os, Symbol_table * symtab) */

bool __thiscall
anon_unknown.dwarf_9b9b16::type_1<true>::function_1
          (type_1<true> *this,type_2<32,type_3> *shdr,type_4 shndx,type_5 *var_2,
          type_6 *symtab)

{
  type_4 var_3;
  var_1<32> *pSVar2;
  bool bVar3;
  type_7 *var_6;
  
  pSVar2 = shdr->p_;
  if ((pSVar2->sh_size != 0) && ((pSVar2->sh_flags >> 0x18 & 2) != 0)) {
    var_3 = pSVar2->sh_type;
    if ((var_2 != (type_5 *)0x0) &&
       ((var_3 >> 0x18 | (var_3 & 0xff0000) >> 8 | (var_3 & 0xff00) << 8 | var_3 << 0x18) == 1)) {
      bVar3 = gold::Symbol_table::var_4(symtab,(type_8 *)this,shndx);
      if (bVar3) {
        return false;
      }
      if ((type_9)shndx < (type_9)(*(long *)&this->field_0xe8 - *(long *)&this->field_0xe0 >> 2)) {
        bVar3 = true;
        if (*(int *)(*(long *)&this->field_0xe0 + (type_9)shndx * 4) == -1) {
          var_6 = gold::Output_section::var_5(var_2,(type_8 *)this,shndx);
          bVar3 = var_6 != (type_7 *)0x0;
        }
        return bVar3;
      }
                    /* WARNING: Subroutine does not return */
      gold::var_7("../../gold/object.h",0x7f7,"get_output_section_offset");
    }
  }
  return false;
}


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

bool MASKED(long param_1,long *param_2,uint param_3,long param_4,undefined8 param_5)

{
  uint uVar1;
  char cVar2;
  long lVar3;
  bool bVar4;
  
  lVar3 = *param_2;
  if ((*(int *)(lVar3 + 0x14) != 0) && ((*(uint *)(lVar3 + 8) >> 0x18 & 2) != 0)) {
    uVar1 = *(uint *)(lVar3 + 4);
    if ((param_4 != 0) &&
       ((uVar1 >> 0x18 | (uVar1 & 0xff0000) >> 8 | (uVar1 & 0xff00) << 8 | uVar1 << 0x18) == 1)) {
      cVar2 = FUN_00443530(param_5,param_1);
      if (cVar2 != '\0') {
        return false;
      }
      if ((ulong)param_3 < (ulong)(*(long *)(param_1 + 0xe8) - *(long *)(param_1 + 0xe0) >> 2)) {
        bVar4 = true;
        if (*(int *)(*(long *)(param_1 + 0xe0) + (ulong)param_3 * 4) == -1) {
          lVar3 = FUN_003cfdd0(param_4,param_1,param_3);
          bVar4 = lVar3 != 0;
        }
        return bVar4;
      }
                    /* WARNING: Subroutine does not return */
      FUN_00352af0("../../gold/object.h",0x7f7,"get_output_section_offset");
    }
  }
  return false;
}

