
bfd_boolean is_strip_section_1(bfd *abfd,asection *sec)

{
  bfd_boolean bVar1;
  uint uVar2;
  section_list *psVar3;
  section_list *psVar4;
  long lVar5;
  char *pcVar6;
  asection *paVar7;
  char *pcVar8;
  byte *pbVar9;
  bool bVar10;
  bool bVar11;
  byte bVar12;
  
  bVar12 = 0;
  if (sections_removed != 0 || sections_copied != 0) {
    psVar3 = find_section_list(abfd->filename,0,1);
    sec = (asection *)0x0;
    psVar4 = find_section_list(abfd->filename,0,2);
    if ((psVar3 != (section_list *)0x0) && (psVar4 != (section_list *)0x0)) {
      pcVar6 = abfd->filename;
      pcVar8 = "error: section %s matches both remove and copy options";
LAB_001081cd:
      pcVar8 = (char *)dcgettext(0,pcVar8,5);
                    /* WARNING: Subroutine does not return */
      fatal(pcVar8,pcVar6);
    }
    if (psVar3 != (section_list *)0x0) {
      bVar1 = is_update_section(abfd,sec);
      if (bVar1 == 0) {
        return 1;
      }
      pcVar6 = abfd->filename;
      pcVar8 = "error: section %s matches both update and remove options";
      goto LAB_001081cd;
    }
    if ((sections_copied != 0) && (psVar4 == (section_list *)0x0)) {
      return 1;
    }
  }
  if (((ulong)abfd->lru_prev & 0x2000) == 0) goto LAB_00108186;
  bVar10 = strip_symbols == STRIP_DEBUG;
  bVar11 = strip_symbols - STRIP_DEBUG == 1;
  if (strip_symbols - STRIP_DEBUG < 2) {
LAB_00108160:
    lVar5 = 7;
    paVar7 = (asection *)abfd->filename;
    pbVar9 = (byte *)".reloc";
    do {
      sec = paVar7;
      if (lVar5 == 0) break;
      lVar5 = lVar5 + -1;
      sec = (asection *)((long)paVar7 + (ulong)bVar12 * -2 + 1);
      bVar10 = *(byte *)&paVar7->name < *pbVar9;
      bVar11 = *(byte *)&paVar7->name == *pbVar9;
      paVar7 = sec;
      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;
    } while (bVar11);
    if ((!bVar10 && !bVar11) != bVar10) {
      return 1;
    }
  }
  else {
    bVar10 = strip_symbols < STRIP_ALL;
    bVar11 = strip_symbols == STRIP_ALL;
    if (bVar11) goto LAB_00108160;
    bVar10 = discard_locals < LOCALS_ALL;
    bVar11 = discard_locals == LOCALS_ALL;
    if (bVar11) goto LAB_00108160;
    bVar10 = false;
    bVar11 = convert_debugging == 0;
    if (!bVar11) goto LAB_00108160;
  }
  if (strip_symbols == STRIP_DWO) {
    bVar1 = is_dwo_section((bfd *)abfd->filename,sec);
    return bVar1;
  }
  if (strip_symbols == STRIP_NONDEBUG) {
    return 0;
  }
LAB_00108186:
  uVar2 = 0;
  if (strip_symbols == STRIP_NONDWO) {
    bVar1 = is_dwo_section((bfd *)abfd->filename,sec);
    uVar2 = (uint)(bVar1 == 0);
  }
  return uVar2;
}



ulong FUN_001080b0(undefined8 *param_1)

{
  int iVar1;
  long lVar2;
  long lVar3;
  ulong uVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  byte *pbVar7;
  char *pcVar8;
  byte *pbVar9;
  bool bVar10;
  bool bVar11;
  byte bVar12;
  
  bVar12 = 0;
  if (DAT_0012cafc != 0 || DAT_0012caf8 != 0) {
    lVar2 = FUN_00107360(*param_1,0,1);
    lVar3 = FUN_00107360(*param_1,0,2);
    if ((lVar2 != 0) && (lVar3 != 0)) {
      uVar6 = *param_1;
      pcVar8 = "error: section %s matches both remove and copy options";
LAB_001081cd:
      uVar5 = dcgettext(0,pcVar8,5);
                    /* WARNING: Subroutine does not return */
      FUN_0011b5c0(uVar5,uVar6);
    }
    if (lVar2 != 0) {
      iVar1 = FUN_00107f50(param_1);
      if (iVar1 == 0) {
        return 1;
      }
      uVar6 = *param_1;
      pcVar8 = "error: section %s matches both update and remove options";
      goto LAB_001081cd;
    }
    if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {
      return 1;
    }
  }
  if ((*(byte *)((long)param_1 + 0x21) & 0x20) == 0) goto LAB_00108186;
  bVar10 = DAT_0012cb0c == 2;
  bVar11 = DAT_0012cb0c - 2 == 1;
  if (DAT_0012cb0c - 2 < 2) {
LAB_00108160:
    lVar2 = 7;
    pbVar7 = (byte *)*param_1;
    pbVar9 = (byte *)".reloc";
    do {
      if (lVar2 == 0) break;
      lVar2 = lVar2 + -1;
      bVar10 = *pbVar7 < *pbVar9;
      bVar11 = *pbVar7 == *pbVar9;
      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;
      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;
    } while (bVar11);
    if ((!bVar10 && !bVar11) != bVar10) {
      return 1;
    }
  }
  else {
    bVar10 = DAT_0012cb0c < 7;
    bVar11 = DAT_0012cb0c == 7;
    if (bVar11) goto LAB_00108160;
    bVar10 = DAT_0012cb08 < 2;
    bVar11 = DAT_0012cb08 == 2;
    if (bVar11) goto LAB_00108160;
    bVar10 = false;
    bVar11 = DAT_0012ca88 == 0;
    if (!bVar11) goto LAB_00108160;
  }
  if (DAT_0012cb0c == 5) {
    uVar4 = FUN_00107ff0(*param_1);
    return uVar4;
  }
  if (DAT_0012cb0c == 4) {
    return 0;
  }
LAB_00108186:
  uVar4 = 0;
  if (DAT_0012cb0c == 6) {
    iVar1 = FUN_00107ff0(*param_1);
    uVar4 = (ulong)(iVar1 == 0);
  }
  return uVar4;
}


PUSH RBP
PUSH RBX
MOV RBX,RDI
SUB RSP,0x8
MOV EAX,dword ptr [0x0012cafc]
OR EAX,dword ptr [0x0012caf8]
JZ 0x00108130
MOV RDI,qword ptr [RDI]
XOR ESI,ESI
MOV EDX,0x1
CALL 0x00107360
MOV RDI,qword ptr [RBX]
XOR ESI,ESI
MOV EDX,0x2
MOV RBP,RAX
CALL 0x00107360
TEST RBP,RBP
JZ 0x001080f6
TEST RAX,RAX
JNZ 0x001081be
TEST RBP,RBP
JZ 0x00108120
MOV RDI,RBX
CALL 0x00107f50
TEST EAX,EAX
JNZ 0x001081e1
ADD RSP,0x8
MOV EAX,0x1
POP RBX
POP RBP
RET
MOV EDX,dword ptr [0x0012caf8]
TEST EDX,EDX
JZ 0x00108130
TEST RAX,RAX
JZ 0x0010810b
NOP
MOV EDX,dword ptr [0x0012cb0c]
TEST byte ptr [RBX + 0x21],0x20
JZ 0x00108186
LEA EAX,[RDX + -0x2]
CMP EAX,0x1
JBE 0x00108160
CMP EDX,0x7
JZ 0x00108160
CMP dword ptr [0x0012cb08],0x2
JZ 0x00108160
MOV EAX,dword ptr [0x0012ca88]
TEST EAX,EAX
JZ 0x0010817a
NOP dword ptr [RAX]
MOV RSI,qword ptr [RBX]
MOV ECX,0x7
LEA RDI,[0x11e0e3]
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x0010810b
CMP EDX,0x5
JZ 0x001081b0
XOR EAX,EAX
CMP EDX,0x4
JZ 0x0010818d
XOR EAX,EAX
CMP EDX,0x6
JZ 0x00108198
ADD RSP,0x8
POP RBX
POP RBP
RET
MOV RDI,qword ptr [RBX]
CALL 0x00107ff0
TEST EAX,EAX
SETZ AL
MOVZX EAX,AL
JMP 0x0010818d
MOV RDI,qword ptr [RBX]
ADD RSP,0x8
POP RBX
POP RBP
JMP 0x00107ff0
MOV RBX,qword ptr [RBX]
MOV EDX,0x5
LEA RSI,[0x121110]
XOR EDI,EDI
CALL 0x00104240
MOV RSI,RBX
MOV RDI,RAX
XOR EAX,EAX
CALL 0x0011b5c0
MOV RBX,qword ptr [RBX]
MOV EDX,0x5
LEA RSI,[0x121148]
JMP 0x001081cd
(translation_unit "ulong FUN_001080b0(undefined8 *param_1)\n\n{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  ulong uVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  byte *pbVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  if (DAT_0012cafc != 0 || DAT_0012caf8 != 0) {\n    lVar2 = FUN_00107360(*param_1,0,1);\n    lVar3 = FUN_00107360(*param_1,0,2);\n    if ((lVar2 != 0) && (lVar3 != 0)) {\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      FUN_0011b5c0(uVar5,uVar6);\n    }\n    if (lVar2 != 0) {\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {\n      return 1;\n    }\n  }\n  if ((*(byte *)((long)param_1 + 0x21) & 0x20) == 0) goto LAB_00108186;\n  bVar10 = DAT_0012cb0c == 2;\n  bVar11 = DAT_0012cb0c - 2 == 1;\n  if (DAT_0012cb0c - 2 < 2) {\nLAB_00108160:\n    lVar2 = 7;\n    pbVar7 = (byte *)*param_1;\n    pbVar9 = (byte *)".reloc";\n    do {\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }\n  else {\n    bVar10 = DAT_0012cb0c < 7;\n    bVar11 = DAT_0012cb0c == 7;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = DAT_0012cb08 < 2;\n    bVar11 = DAT_0012cb08 == 2;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = DAT_0012ca88 == 0;\n    if (!bVar11) goto LAB_00108160;\n  }\n  if (DAT_0012cb0c == 5) {\n    uVar4 = FUN_00107ff0(*param_1);\n    return uVar4;\n  }\n  if (DAT_0012cb0c == 4) {\n    return 0;\n  }\nLAB_00108186:\n  uVar4 = 0;\n  if (DAT_0012cb0c == 6) {\n    iVar1 = FUN_00107ff0(*param_1);\n    uVar4 = (ulong)(iVar1 == 0);\n  }\n  return uVar4;\n}\n\n" (function_definition "ulong FUN_001080b0(undefined8 *param_1)\n\n{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  ulong uVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  byte *pbVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  if (DAT_0012cafc != 0 || DAT_0012caf8 != 0) {\n    lVar2 = FUN_00107360(*param_1,0,1);\n    lVar3 = FUN_00107360(*param_1,0,2);\n    if ((lVar2 != 0) && (lVar3 != 0)) {\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      FUN_0011b5c0(uVar5,uVar6);\n    }\n    if (lVar2 != 0) {\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {\n      return 1;\n    }\n  }\n  if ((*(byte *)((long)param_1 + 0x21) & 0x20) == 0) goto LAB_00108186;\n  bVar10 = DAT_0012cb0c == 2;\n  bVar11 = DAT_0012cb0c - 2 == 1;\n  if (DAT_0012cb0c - 2 < 2) {\nLAB_00108160:\n    lVar2 = 7;\n    pbVar7 = (byte *)*param_1;\n    pbVar9 = (byte *)".reloc";\n    do {\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }\n  else {\n    bVar10 = DAT_0012cb0c < 7;\n    bVar11 = DAT_0012cb0c == 7;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = DAT_0012cb08 < 2;\n    bVar11 = DAT_0012cb08 == 2;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = DAT_0012ca88 == 0;\n    if (!bVar11) goto LAB_00108160;\n  }\n  if (DAT_0012cb0c == 5) {\n    uVar4 = FUN_00107ff0(*param_1);\n    return uVar4;\n  }\n  if (DAT_0012cb0c == 4) {\n    return 0;\n  }\nLAB_00108186:\n  uVar4 = 0;\n  if (DAT_0012cb0c == 6) {\n    iVar1 = FUN_00107ff0(*param_1);\n    uVar4 = (ulong)(iVar1 == 0);\n  }\n  return uVar4;\n}" type_identifier (function_declarator "FUN_001080b0(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  ulong uVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  byte *pbVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  if (DAT_0012cafc != 0 || DAT_0012caf8 != 0) {\n    lVar2 = FUN_00107360(*param_1,0,1);\n    lVar3 = FUN_00107360(*param_1,0,2);\n    if ((lVar2 != 0) && (lVar3 != 0)) {\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      FUN_0011b5c0(uVar5,uVar6);\n    }\n    if (lVar2 != 0) {\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {\n      return 1;\n    }\n  }\n  if ((*(byte *)((long)param_1 + 0x21) & 0x20) == 0) goto LAB_00108186;\n  bVar10 = DAT_0012cb0c == 2;\n  bVar11 = DAT_0012cb0c - 2 == 1;\n  if (DAT_0012cb0c - 2 < 2) {\nLAB_00108160:\n    lVar2 = 7;\n    pbVar7 = (byte *)*param_1;\n    pbVar9 = (byte *)".reloc";\n    do {\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }\n  else {\n    bVar10 = DAT_0012cb0c < 7;\n    bVar11 = DAT_0012cb0c == 7;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = DAT_0012cb08 < 2;\n    bVar11 = DAT_0012cb08 == 2;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = DAT_0012ca88 == 0;\n    if (!bVar11) goto LAB_00108160;\n  }\n  if (DAT_0012cb0c == 5) {\n    uVar4 = FUN_00107ff0(*param_1);\n    return uVar4;\n  }\n  if (DAT_0012cb0c == 4) {\n    return 0;\n  }\nLAB_00108186:\n  uVar4 = 0;\n  if (DAT_0012cb0c == 6) {\n    iVar1 = FUN_00107ff0(*param_1);\n    uVar4 = (ulong)(iVar1 == 0);\n  }\n  return uVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (if_statement "if (DAT_0012cafc != 0 || DAT_0012caf8 != 0) {\n    lVar2 = FUN_00107360(*param_1,0,1);\n    lVar3 = FUN_00107360(*param_1,0,2);\n    if ((lVar2 != 0) && (lVar3 != 0)) {\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      FUN_0011b5c0(uVar5,uVar6);\n    }\n    if (lVar2 != 0) {\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {\n      return 1;\n    }\n  }" if (parenthesized_expression "(DAT_0012cafc != 0 || DAT_0012caf8 != 0)" ( (binary_expression "DAT_0012cafc != 0 || DAT_0012caf8 != 0" (binary_expression "DAT_0012cafc != 0" identifier != number_literal) || (binary_expression "DAT_0012caf8 != 0" identifier != number_literal)) )) (compound_statement "{\n    lVar2 = FUN_00107360(*param_1,0,1);\n    lVar3 = FUN_00107360(*param_1,0,2);\n    if ((lVar2 != 0) && (lVar3 != 0)) {\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      FUN_0011b5c0(uVar5,uVar6);\n    }\n    if (lVar2 != 0) {\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {\n      return 1;\n    }\n  }" { (expression_statement "lVar2 = FUN_00107360(*param_1,0,1);" (assignment_expression "lVar2 = FUN_00107360(*param_1,0,1)" identifier = (call_expression "FUN_00107360(*param_1,0,1)" identifier (argument_list "(*param_1,0,1)" ( (pointer_expression "*param_1" * identifier) , number_literal , number_literal )))) ;) (expression_statement "lVar3 = FUN_00107360(*param_1,0,2);" (assignment_expression "lVar3 = FUN_00107360(*param_1,0,2)" identifier = (call_expression "FUN_00107360(*param_1,0,2)" identifier (argument_list "(*param_1,0,2)" ( (pointer_expression "*param_1" * identifier) , number_literal , number_literal )))) ;) (if_statement "if ((lVar2 != 0) && (lVar3 != 0)) {\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      FUN_0011b5c0(uVar5,uVar6);\n    }" if (parenthesized_expression "((lVar2 != 0) && (lVar3 != 0))" ( (binary_expression "(lVar2 != 0) && (lVar3 != 0)" (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) ))) )) (compound_statement "{\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      FUN_0011b5c0(uVar5,uVar6);\n    }" { (expression_statement "uVar6 = *param_1;" (assignment_expression "uVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pcVar8 = "error: section %s matches both remove and copy options";" (assignment_expression "pcVar8 = "error: section %s matches both remove and copy options"" identifier = (string_literal ""error: section %s matches both remove and copy options"" " string_content ")) ;) (labeled_statement "LAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);" statement_identifier : (expression_statement "uVar5 = dcgettext(0,pcVar8,5);" (assignment_expression "uVar5 = dcgettext(0,pcVar8,5)" identifier = (call_expression "dcgettext(0,pcVar8,5)" identifier (argument_list "(0,pcVar8,5)" ( number_literal , identifier , number_literal )))) ;)) comment (expression_statement "FUN_0011b5c0(uVar5,uVar6);" (call_expression "FUN_0011b5c0(uVar5,uVar6)" identifier (argument_list "(uVar5,uVar6)" ( identifier , identifier ))) ;) })) (if_statement "if (lVar2 != 0) {\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }" { (expression_statement "iVar1 = FUN_00107f50(param_1);" (assignment_expression "iVar1 = FUN_00107f50(param_1)" identifier = (call_expression "FUN_00107f50(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar1 == 0) {\n        return 1;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar6 = *param_1;" (assignment_expression "uVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pcVar8 = "error: section %s matches both update and remove options";" (assignment_expression "pcVar8 = "error: section %s matches both update and remove options"" identifier = (string_literal ""error: section %s matches both update and remove options"" " string_content ")) ;) (goto_statement "goto LAB_001081cd;" goto statement_identifier ;) })) (if_statement "if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {\n      return 1;\n    }" if (parenthesized_expression "((DAT_0012caf8 != 0) && (lVar3 == 0))" ( (binary_expression "(DAT_0012caf8 != 0) && (lVar3 == 0)" (parenthesized_expression "(DAT_0012caf8 != 0)" ( (binary_expression "DAT_0012caf8 != 0" identifier != number_literal) )) && (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) ))) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) })) (if_statement "if ((*(byte *)((long)param_1 + 0x21) & 0x20) == 0) goto LAB_00108186;" if (parenthesized_expression "((*(byte *)((long)param_1 + 0x21) & 0x20) == 0)" ( (binary_expression "(*(byte *)((long)param_1 + 0x21) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)param_1 + 0x21) & 0x20)" ( (binary_expression "*(byte *)((long)param_1 + 0x21) & 0x20" (pointer_expression "*(byte *)((long)param_1 + 0x21)" * (cast_expression "(byte *)((long)param_1 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x21)" ( (binary_expression "(long)param_1 + 0x21" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00108186;" goto statement_identifier ;)) (expression_statement "bVar10 = DAT_0012cb0c == 2;" (assignment_expression "bVar10 = DAT_0012cb0c == 2" identifier = (binary_expression "DAT_0012cb0c == 2" identifier == number_literal)) ;) (expression_statement "bVar11 = DAT_0012cb0c - 2 == 1;" (assignment_expression "bVar11 = DAT_0012cb0c - 2 == 1" identifier = (binary_expression "DAT_0012cb0c - 2 == 1" (binary_expression "DAT_0012cb0c - 2" identifier - number_literal) == number_literal)) ;) (if_statement "if (DAT_0012cb0c - 2 < 2) {\nLAB_00108160:\n    lVar2 = 7;\n    pbVar7 = (byte *)*param_1;\n    pbVar9 = (byte *)".reloc";\n    do {\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }\n  else {\n    bVar10 = DAT_0012cb0c < 7;\n    bVar11 = DAT_0012cb0c == 7;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = DAT_0012cb08 < 2;\n    bVar11 = DAT_0012cb08 == 2;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = DAT_0012ca88 == 0;\n    if (!bVar11) goto LAB_00108160;\n  }" if (parenthesized_expression "(DAT_0012cb0c - 2 < 2)" ( (binary_expression "DAT_0012cb0c - 2 < 2" (binary_expression "DAT_0012cb0c - 2" identifier - number_literal) < number_literal) )) (compound_statement "{\nLAB_00108160:\n    lVar2 = 7;\n    pbVar7 = (byte *)*param_1;\n    pbVar9 = (byte *)".reloc";\n    do {\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }" { (labeled_statement "LAB_00108160:\n    lVar2 = 7;" statement_identifier : (expression_statement "lVar2 = 7;" (assignment_expression "lVar2 = 7" identifier = number_literal) ;)) (expression_statement "pbVar7 = (byte *)*param_1;" (assignment_expression "pbVar7 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "pbVar9 = (byte *)".reloc";" (assignment_expression "pbVar9 = (byte *)".reloc"" identifier = (cast_expression "(byte *)".reloc"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".reloc"" " string_content "))) ;) (do_statement "do {\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);" do (compound_statement "{\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    }" { (if_statement "if (lVar2 == 0) break;" if (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar2 = lVar2 + -1;" (assignment_expression "lVar2 = lVar2 + -1" identifier = (binary_expression "lVar2 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar7 < *pbVar9;" (assignment_expression "bVar10 = *pbVar7 < *pbVar9" identifier = (binary_expression "*pbVar7 < *pbVar9" (pointer_expression "*pbVar7" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar11 = *pbVar7 == *pbVar9;" (assignment_expression "bVar11 = *pbVar7 == *pbVar9" identifier = (binary_expression "*pbVar7 == *pbVar9" (pointer_expression "*pbVar7" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }" if (parenthesized_expression "((!bVar10 && !bVar11) != bVar10)" ( (binary_expression "(!bVar10 && !bVar11) != bVar10" (parenthesized_expression "(!bVar10 && !bVar11)" ( (binary_expression "!bVar10 && !bVar11" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) != identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else {\n    bVar10 = DAT_0012cb0c < 7;\n    bVar11 = DAT_0012cb0c == 7;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = DAT_0012cb08 < 2;\n    bVar11 = DAT_0012cb08 == 2;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = DAT_0012ca88 == 0;\n    if (!bVar11) goto LAB_00108160;\n  }" else (compound_statement "{\n    bVar10 = DAT_0012cb0c < 7;\n    bVar11 = DAT_0012cb0c == 7;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = DAT_0012cb08 < 2;\n    bVar11 = DAT_0012cb08 == 2;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = DAT_0012ca88 == 0;\n    if (!bVar11) goto LAB_00108160;\n  }" { (expression_statement "bVar10 = DAT_0012cb0c < 7;" (assignment_expression "bVar10 = DAT_0012cb0c < 7" identifier = (binary_expression "DAT_0012cb0c < 7" identifier < number_literal)) ;) (expression_statement "bVar11 = DAT_0012cb0c == 7;" (assignment_expression "bVar11 = DAT_0012cb0c == 7" identifier = (binary_expression "DAT_0012cb0c == 7" identifier == number_literal)) ;) (if_statement "if (bVar11) goto LAB_00108160;" if (parenthesized_expression "(bVar11)" ( identifier )) (goto_statement "goto LAB_00108160;" goto statement_identifier ;)) (expression_statement "bVar10 = DAT_0012cb08 < 2;" (assignment_expression "bVar10 = DAT_0012cb08 < 2" identifier = (binary_expression "DAT_0012cb08 < 2" identifier < number_literal)) ;) (expression_statement "bVar11 = DAT_0012cb08 == 2;" (assignment_expression "bVar11 = DAT_0012cb08 == 2" identifier = (binary_expression "DAT_0012cb08 == 2" identifier == number_literal)) ;) (if_statement "if (bVar11) goto LAB_00108160;" if (parenthesized_expression "(bVar11)" ( identifier )) (goto_statement "goto LAB_00108160;" goto statement_identifier ;)) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar11 = DAT_0012ca88 == 0;" (assignment_expression "bVar11 = DAT_0012ca88 == 0" identifier = (binary_expression "DAT_0012ca88 == 0" identifier == number_literal)) ;) (if_statement "if (!bVar11) goto LAB_00108160;" if (parenthesized_expression "(!bVar11)" ( (unary_expression "!bVar11" ! identifier) )) (goto_statement "goto LAB_00108160;" goto statement_identifier ;)) }))) (if_statement "if (DAT_0012cb0c == 5) {\n    uVar4 = FUN_00107ff0(*param_1);\n    return uVar4;\n  }" if (parenthesized_expression "(DAT_0012cb0c == 5)" ( (binary_expression "DAT_0012cb0c == 5" identifier == number_literal) )) (compound_statement "{\n    uVar4 = FUN_00107ff0(*param_1);\n    return uVar4;\n  }" { (expression_statement "uVar4 = FUN_00107ff0(*param_1);" (assignment_expression "uVar4 = FUN_00107ff0(*param_1)" identifier = (call_expression "FUN_00107ff0(*param_1)" identifier (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) )))) ;) (return_statement "return uVar4;" return identifier ;) })) (if_statement "if (DAT_0012cb0c == 4) {\n    return 0;\n  }" if (parenthesized_expression "(DAT_0012cb0c == 4)" ( (binary_expression "DAT_0012cb0c == 4" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_00108186:\n  uVar4 = 0;" statement_identifier : (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;)) (if_statement "if (DAT_0012cb0c == 6) {\n    iVar1 = FUN_00107ff0(*param_1);\n    uVar4 = (ulong)(iVar1 == 0);\n  }" if (parenthesized_expression "(DAT_0012cb0c == 6)" ( (binary_expression "DAT_0012cb0c == 6" identifier == number_literal) )) (compound_statement "{\n    iVar1 = FUN_00107ff0(*param_1);\n    uVar4 = (ulong)(iVar1 == 0);\n  }" { (expression_statement "iVar1 = FUN_00107ff0(*param_1);" (assignment_expression "iVar1 = FUN_00107ff0(*param_1)" identifier = (call_expression "FUN_00107ff0(*param_1)" identifier (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) )))) ;) (expression_statement "uVar4 = (ulong)(iVar1 == 0);" (assignment_expression "uVar4 = (ulong)(iVar1 == 0)" identifier = (call_expression "(ulong)(iVar1 == 0)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )))) ;) })) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit "bfd_boolean is_strip_section_1(bfd *abfd,asection *sec)\n\n{\n  bfd_boolean bVar1;\n  uint uVar2;\n  section_list *psVar3;\n  section_list *psVar4;\n  long lVar5;\n  char *pcVar6;\n  asection *paVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  if (sections_removed != 0 || sections_copied != 0) {\n    psVar3 = find_section_list(abfd->filename,0,1);\n    sec = (asection *)0x0;\n    psVar4 = find_section_list(abfd->filename,0,2);\n    if ((psVar3 != (section_list *)0x0) && (psVar4 != (section_list *)0x0)) {\n      pcVar6 = abfd->filename;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      pcVar8 = (char *)dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      fatal(pcVar8,pcVar6);\n    }\n    if (psVar3 != (section_list *)0x0) {\n      bVar1 = is_update_section(abfd,sec);\n      if (bVar1 == 0) {\n        return 1;\n      }\n      pcVar6 = abfd->filename;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((sections_copied != 0) && (psVar4 == (section_list *)0x0)) {\n      return 1;\n    }\n  }\n  if (((ulong)abfd->lru_prev & 0x2000) == 0) goto LAB_00108186;\n  bVar10 = strip_symbols == STRIP_DEBUG;\n  bVar11 = strip_symbols - STRIP_DEBUG == 1;\n  if (strip_symbols - STRIP_DEBUG < 2) {\nLAB_00108160:\n    lVar5 = 7;\n    paVar7 = (asection *)abfd->filename;\n    pbVar9 = (byte *)".reloc";\n    do {\n      sec = paVar7;\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      sec = (asection *)((long)paVar7 + (ulong)bVar12 * -2 + 1);\n      bVar10 = *(byte *)&paVar7->name < *pbVar9;\n      bVar11 = *(byte *)&paVar7->name == *pbVar9;\n      paVar7 = sec;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }\n  else {\n    bVar10 = strip_symbols < STRIP_ALL;\n    bVar11 = strip_symbols == STRIP_ALL;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = discard_locals < LOCALS_ALL;\n    bVar11 = discard_locals == LOCALS_ALL;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = convert_debugging == 0;\n    if (!bVar11) goto LAB_00108160;\n  }\n  if (strip_symbols == STRIP_DWO) {\n    bVar1 = is_dwo_section((bfd *)abfd->filename,sec);\n    return bVar1;\n  }\n  if (strip_symbols == STRIP_NONDEBUG) {\n    return 0;\n  }\nLAB_00108186:\n  uVar2 = 0;\n  if (strip_symbols == STRIP_NONDWO) {\n    bVar1 = is_dwo_section((bfd *)abfd->filename,sec);\n    uVar2 = (uint)(bVar1 == 0);\n  }\n  return uVar2;\n}\n\n" (function_definition "bfd_boolean is_strip_section_1(bfd *abfd,asection *sec)\n\n{\n  bfd_boolean bVar1;\n  uint uVar2;\n  section_list *psVar3;\n  section_list *psVar4;\n  long lVar5;\n  char *pcVar6;\n  asection *paVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  if (sections_removed != 0 || sections_copied != 0) {\n    psVar3 = find_section_list(abfd->filename,0,1);\n    sec = (asection *)0x0;\n    psVar4 = find_section_list(abfd->filename,0,2);\n    if ((psVar3 != (section_list *)0x0) && (psVar4 != (section_list *)0x0)) {\n      pcVar6 = abfd->filename;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      pcVar8 = (char *)dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      fatal(pcVar8,pcVar6);\n    }\n    if (psVar3 != (section_list *)0x0) {\n      bVar1 = is_update_section(abfd,sec);\n      if (bVar1 == 0) {\n        return 1;\n      }\n      pcVar6 = abfd->filename;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((sections_copied != 0) && (psVar4 == (section_list *)0x0)) {\n      return 1;\n    }\n  }\n  if (((ulong)abfd->lru_prev & 0x2000) == 0) goto LAB_00108186;\n  bVar10 = strip_symbols == STRIP_DEBUG;\n  bVar11 = strip_symbols - STRIP_DEBUG == 1;\n  if (strip_symbols - STRIP_DEBUG < 2) {\nLAB_00108160:\n    lVar5 = 7;\n    paVar7 = (asection *)abfd->filename;\n    pbVar9 = (byte *)".reloc";\n    do {\n      sec = paVar7;\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      sec = (asection *)((long)paVar7 + (ulong)bVar12 * -2 + 1);\n      bVar10 = *(byte *)&paVar7->name < *pbVar9;\n      bVar11 = *(byte *)&paVar7->name == *pbVar9;\n      paVar7 = sec;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }\n  else {\n    bVar10 = strip_symbols < STRIP_ALL;\n    bVar11 = strip_symbols == STRIP_ALL;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = discard_locals < LOCALS_ALL;\n    bVar11 = discard_locals == LOCALS_ALL;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = convert_debugging == 0;\n    if (!bVar11) goto LAB_00108160;\n  }\n  if (strip_symbols == STRIP_DWO) {\n    bVar1 = is_dwo_section((bfd *)abfd->filename,sec);\n    return bVar1;\n  }\n  if (strip_symbols == STRIP_NONDEBUG) {\n    return 0;\n  }\nLAB_00108186:\n  uVar2 = 0;\n  if (strip_symbols == STRIP_NONDWO) {\n    bVar1 = is_dwo_section((bfd *)abfd->filename,sec);\n    uVar2 = (uint)(bVar1 == 0);\n  }\n  return uVar2;\n}" type_identifier (function_declarator "is_strip_section_1(bfd *abfd,asection *sec)" identifier (parameter_list "(bfd *abfd,asection *sec)" ( (parameter_declaration "bfd *abfd" type_identifier (pointer_declarator "*abfd" * identifier)) , (parameter_declaration "asection *sec" type_identifier (pointer_declarator "*sec" * identifier)) ))) (compound_statement "{\n  bfd_boolean bVar1;\n  uint uVar2;\n  section_list *psVar3;\n  section_list *psVar4;\n  long lVar5;\n  char *pcVar6;\n  asection *paVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  if (sections_removed != 0 || sections_copied != 0) {\n    psVar3 = find_section_list(abfd->filename,0,1);\n    sec = (asection *)0x0;\n    psVar4 = find_section_list(abfd->filename,0,2);\n    if ((psVar3 != (section_list *)0x0) && (psVar4 != (section_list *)0x0)) {\n      pcVar6 = abfd->filename;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      pcVar8 = (char *)dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      fatal(pcVar8,pcVar6);\n    }\n    if (psVar3 != (section_list *)0x0) {\n      bVar1 = is_update_section(abfd,sec);\n      if (bVar1 == 0) {\n        return 1;\n      }\n      pcVar6 = abfd->filename;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((sections_copied != 0) && (psVar4 == (section_list *)0x0)) {\n      return 1;\n    }\n  }\n  if (((ulong)abfd->lru_prev & 0x2000) == 0) goto LAB_00108186;\n  bVar10 = strip_symbols == STRIP_DEBUG;\n  bVar11 = strip_symbols - STRIP_DEBUG == 1;\n  if (strip_symbols - STRIP_DEBUG < 2) {\nLAB_00108160:\n    lVar5 = 7;\n    paVar7 = (asection *)abfd->filename;\n    pbVar9 = (byte *)".reloc";\n    do {\n      sec = paVar7;\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      sec = (asection *)((long)paVar7 + (ulong)bVar12 * -2 + 1);\n      bVar10 = *(byte *)&paVar7->name < *pbVar9;\n      bVar11 = *(byte *)&paVar7->name == *pbVar9;\n      paVar7 = sec;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }\n  else {\n    bVar10 = strip_symbols < STRIP_ALL;\n    bVar11 = strip_symbols == STRIP_ALL;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = discard_locals < LOCALS_ALL;\n    bVar11 = discard_locals == LOCALS_ALL;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = convert_debugging == 0;\n    if (!bVar11) goto LAB_00108160;\n  }\n  if (strip_symbols == STRIP_DWO) {\n    bVar1 = is_dwo_section((bfd *)abfd->filename,sec);\n    return bVar1;\n  }\n  if (strip_symbols == STRIP_NONDEBUG) {\n    return 0;\n  }\nLAB_00108186:\n  uVar2 = 0;\n  if (strip_symbols == STRIP_NONDWO) {\n    bVar1 = is_dwo_section((bfd *)abfd->filename,sec);\n    uVar2 = (uint)(bVar1 == 0);\n  }\n  return uVar2;\n}" { (declaration "bfd_boolean bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "section_list *psVar3;" type_identifier (pointer_declarator "*psVar3" * identifier) ;) (declaration "section_list *psVar4;" type_identifier (pointer_declarator "*psVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "asection *paVar7;" type_identifier (pointer_declarator "*paVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (if_statement "if (sections_removed != 0 || sections_copied != 0) {\n    psVar3 = find_section_list(abfd->filename,0,1);\n    sec = (asection *)0x0;\n    psVar4 = find_section_list(abfd->filename,0,2);\n    if ((psVar3 != (section_list *)0x0) && (psVar4 != (section_list *)0x0)) {\n      pcVar6 = abfd->filename;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      pcVar8 = (char *)dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      fatal(pcVar8,pcVar6);\n    }\n    if (psVar3 != (section_list *)0x0) {\n      bVar1 = is_update_section(abfd,sec);\n      if (bVar1 == 0) {\n        return 1;\n      }\n      pcVar6 = abfd->filename;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((sections_copied != 0) && (psVar4 == (section_list *)0x0)) {\n      return 1;\n    }\n  }" if (parenthesized_expression "(sections_removed != 0 || sections_copied != 0)" ( (binary_expression "sections_removed != 0 || sections_copied != 0" (binary_expression "sections_removed != 0" identifier != number_literal) || (binary_expression "sections_copied != 0" identifier != number_literal)) )) (compound_statement "{\n    psVar3 = find_section_list(abfd->filename,0,1);\n    sec = (asection *)0x0;\n    psVar4 = find_section_list(abfd->filename,0,2);\n    if ((psVar3 != (section_list *)0x0) && (psVar4 != (section_list *)0x0)) {\n      pcVar6 = abfd->filename;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      pcVar8 = (char *)dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      fatal(pcVar8,pcVar6);\n    }\n    if (psVar3 != (section_list *)0x0) {\n      bVar1 = is_update_section(abfd,sec);\n      if (bVar1 == 0) {\n        return 1;\n      }\n      pcVar6 = abfd->filename;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((sections_copied != 0) && (psVar4 == (section_list *)0x0)) {\n      return 1;\n    }\n  }" { (expression_statement "psVar3 = find_section_list(abfd->filename,0,1);" (assignment_expression "psVar3 = find_section_list(abfd->filename,0,1)" identifier = (call_expression "find_section_list(abfd->filename,0,1)" identifier (argument_list "(abfd->filename,0,1)" ( (field_expression "abfd->filename" identifier -> field_identifier) , number_literal , number_literal )))) ;) (expression_statement "sec = (asection *)0x0;" (assignment_expression "sec = (asection *)0x0" identifier = (cast_expression "(asection *)0x0" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "psVar4 = find_section_list(abfd->filename,0,2);" (assignment_expression "psVar4 = find_section_list(abfd->filename,0,2)" identifier = (call_expression "find_section_list(abfd->filename,0,2)" identifier (argument_list "(abfd->filename,0,2)" ( (field_expression "abfd->filename" identifier -> field_identifier) , number_literal , number_literal )))) ;) (if_statement "if ((psVar3 != (section_list *)0x0) && (psVar4 != (section_list *)0x0)) {\n      pcVar6 = abfd->filename;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      pcVar8 = (char *)dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      fatal(pcVar8,pcVar6);\n    }" if (parenthesized_expression "((psVar3 != (section_list *)0x0) && (psVar4 != (section_list *)0x0))" ( (binary_expression "(psVar3 != (section_list *)0x0) && (psVar4 != (section_list *)0x0)" (parenthesized_expression "(psVar3 != (section_list *)0x0)" ( (binary_expression "psVar3 != (section_list *)0x0" identifier != (cast_expression "(section_list *)0x0" ( (type_descriptor "section_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(psVar4 != (section_list *)0x0)" ( (binary_expression "psVar4 != (section_list *)0x0" identifier != (cast_expression "(section_list *)0x0" ( (type_descriptor "section_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      pcVar6 = abfd->filename;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      pcVar8 = (char *)dcgettext(0,pcVar8,5);\n                    /* WARNING: Subroutine does not return */\n      fatal(pcVar8,pcVar6);\n    }" { (expression_statement "pcVar6 = abfd->filename;" (assignment_expression "pcVar6 = abfd->filename" identifier = (field_expression "abfd->filename" identifier -> field_identifier)) ;) (expression_statement "pcVar8 = "error: section %s matches both remove and copy options";" (assignment_expression "pcVar8 = "error: section %s matches both remove and copy options"" identifier = (string_literal ""error: section %s matches both remove and copy options"" " string_content ")) ;) (labeled_statement "LAB_001081cd:\n      pcVar8 = (char *)dcgettext(0,pcVar8,5);" statement_identifier : (expression_statement "pcVar8 = (char *)dcgettext(0,pcVar8,5);" (assignment_expression "pcVar8 = (char *)dcgettext(0,pcVar8,5)" identifier = (cast_expression "(char *)dcgettext(0,pcVar8,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,pcVar8,5)" identifier (argument_list "(0,pcVar8,5)" ( number_literal , identifier , number_literal ))))) ;)) comment (expression_statement "fatal(pcVar8,pcVar6);" (call_expression "fatal(pcVar8,pcVar6)" identifier (argument_list "(pcVar8,pcVar6)" ( identifier , identifier ))) ;) })) (if_statement "if (psVar3 != (section_list *)0x0) {\n      bVar1 = is_update_section(abfd,sec);\n      if (bVar1 == 0) {\n        return 1;\n      }\n      pcVar6 = abfd->filename;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }" if (parenthesized_expression "(psVar3 != (section_list *)0x0)" ( (binary_expression "psVar3 != (section_list *)0x0" identifier != (cast_expression "(section_list *)0x0" ( (type_descriptor "section_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      bVar1 = is_update_section(abfd,sec);\n      if (bVar1 == 0) {\n        return 1;\n      }\n      pcVar6 = abfd->filename;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }" { (expression_statement "bVar1 = is_update_section(abfd,sec);" (assignment_expression "bVar1 = is_update_section(abfd,sec)" identifier = (call_expression "is_update_section(abfd,sec)" identifier (argument_list "(abfd,sec)" ( identifier , identifier )))) ;) (if_statement "if (bVar1 == 0) {\n        return 1;\n      }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "pcVar6 = abfd->filename;" (assignment_expression "pcVar6 = abfd->filename" identifier = (field_expression "abfd->filename" identifier -> field_identifier)) ;) (expression_statement "pcVar8 = "error: section %s matches both update and remove options";" (assignment_expression "pcVar8 = "error: section %s matches both update and remove options"" identifier = (string_literal ""error: section %s matches both update and remove options"" " string_content ")) ;) (goto_statement "goto LAB_001081cd;" goto statement_identifier ;) })) (if_statement "if ((sections_copied != 0) && (psVar4 == (section_list *)0x0)) {\n      return 1;\n    }" if (parenthesized_expression "((sections_copied != 0) && (psVar4 == (section_list *)0x0))" ( (binary_expression "(sections_copied != 0) && (psVar4 == (section_list *)0x0)" (parenthesized_expression "(sections_copied != 0)" ( (binary_expression "sections_copied != 0" identifier != number_literal) )) && (parenthesized_expression "(psVar4 == (section_list *)0x0)" ( (binary_expression "psVar4 == (section_list *)0x0" identifier == (cast_expression "(section_list *)0x0" ( (type_descriptor "section_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) })) (if_statement "if (((ulong)abfd->lru_prev & 0x2000) == 0) goto LAB_00108186;" if (parenthesized_expression "(((ulong)abfd->lru_prev & 0x2000) == 0)" ( (binary_expression "((ulong)abfd->lru_prev & 0x2000) == 0" (parenthesized_expression "((ulong)abfd->lru_prev & 0x2000)" ( (binary_expression "(ulong)abfd->lru_prev & 0x2000" (cast_expression "(ulong)abfd->lru_prev" ( (type_descriptor "ulong" type_identifier) ) (field_expression "abfd->lru_prev" identifier -> field_identifier)) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00108186;" goto statement_identifier ;)) (expression_statement "bVar10 = strip_symbols == STRIP_DEBUG;" (assignment_expression "bVar10 = strip_symbols == STRIP_DEBUG" identifier = (binary_expression "strip_symbols == STRIP_DEBUG" identifier == identifier)) ;) (expression_statement "bVar11 = strip_symbols - STRIP_DEBUG == 1;" (assignment_expression "bVar11 = strip_symbols - STRIP_DEBUG == 1" identifier = (binary_expression "strip_symbols - STRIP_DEBUG == 1" (binary_expression "strip_symbols - STRIP_DEBUG" identifier - identifier) == number_literal)) ;) (if_statement "if (strip_symbols - STRIP_DEBUG < 2) {\nLAB_00108160:\n    lVar5 = 7;\n    paVar7 = (asection *)abfd->filename;\n    pbVar9 = (byte *)".reloc";\n    do {\n      sec = paVar7;\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      sec = (asection *)((long)paVar7 + (ulong)bVar12 * -2 + 1);\n      bVar10 = *(byte *)&paVar7->name < *pbVar9;\n      bVar11 = *(byte *)&paVar7->name == *pbVar9;\n      paVar7 = sec;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }\n  else {\n    bVar10 = strip_symbols < STRIP_ALL;\n    bVar11 = strip_symbols == STRIP_ALL;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = discard_locals < LOCALS_ALL;\n    bVar11 = discard_locals == LOCALS_ALL;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = convert_debugging == 0;\n    if (!bVar11) goto LAB_00108160;\n  }" if (parenthesized_expression "(strip_symbols - STRIP_DEBUG < 2)" ( (binary_expression "strip_symbols - STRIP_DEBUG < 2" (binary_expression "strip_symbols - STRIP_DEBUG" identifier - identifier) < number_literal) )) (compound_statement "{\nLAB_00108160:\n    lVar5 = 7;\n    paVar7 = (asection *)abfd->filename;\n    pbVar9 = (byte *)".reloc";\n    do {\n      sec = paVar7;\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      sec = (asection *)((long)paVar7 + (ulong)bVar12 * -2 + 1);\n      bVar10 = *(byte *)&paVar7->name < *pbVar9;\n      bVar11 = *(byte *)&paVar7->name == *pbVar9;\n      paVar7 = sec;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }" { (labeled_statement "LAB_00108160:\n    lVar5 = 7;" statement_identifier : (expression_statement "lVar5 = 7;" (assignment_expression "lVar5 = 7" identifier = number_literal) ;)) (expression_statement "paVar7 = (asection *)abfd->filename;" (assignment_expression "paVar7 = (asection *)abfd->filename" identifier = (cast_expression "(asection *)abfd->filename" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "abfd->filename" identifier -> field_identifier))) ;) (expression_statement "pbVar9 = (byte *)".reloc";" (assignment_expression "pbVar9 = (byte *)".reloc"" identifier = (cast_expression "(byte *)".reloc"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".reloc"" " string_content "))) ;) (do_statement "do {\n      sec = paVar7;\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      sec = (asection *)((long)paVar7 + (ulong)bVar12 * -2 + 1);\n      bVar10 = *(byte *)&paVar7->name < *pbVar9;\n      bVar11 = *(byte *)&paVar7->name == *pbVar9;\n      paVar7 = sec;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);" do (compound_statement "{\n      sec = paVar7;\n      if (lVar5 == 0) break;\n      lVar5 = lVar5 + -1;\n      sec = (asection *)((long)paVar7 + (ulong)bVar12 * -2 + 1);\n      bVar10 = *(byte *)&paVar7->name < *pbVar9;\n      bVar11 = *(byte *)&paVar7->name == *pbVar9;\n      paVar7 = sec;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    }" { (expression_statement "sec = paVar7;" (assignment_expression "sec = paVar7" identifier = identifier) ;) (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "sec = (asection *)((long)paVar7 + (ulong)bVar12 * -2 + 1);" (assignment_expression "sec = (asection *)((long)paVar7 + (ulong)bVar12 * -2 + 1)" identifier = (cast_expression "(asection *)((long)paVar7 + (ulong)bVar12 * -2 + 1)" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar7 + (ulong)bVar12 * -2 + 1)" ( (binary_expression "(long)paVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "(long)paVar7 + (ulong)bVar12 * -2" (cast_expression "(long)paVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "bVar10 = *(byte *)&paVar7->name < *pbVar9;" (assignment_expression "bVar10 = *(byte *)&paVar7->name < *pbVar9" identifier = (binary_expression "*(byte *)&paVar7->name < *pbVar9" (pointer_expression "*(byte *)&paVar7->name" * (cast_expression "(byte *)&paVar7->name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&paVar7->name" & (field_expression "paVar7->name" identifier -> field_identifier)))) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar11 = *(byte *)&paVar7->name == *pbVar9;" (assignment_expression "bVar11 = *(byte *)&paVar7->name == *pbVar9" identifier = (binary_expression "*(byte *)&paVar7->name == *pbVar9" (pointer_expression "*(byte *)&paVar7->name" * (cast_expression "(byte *)&paVar7->name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&paVar7->name" & (field_expression "paVar7->name" identifier -> field_identifier)))) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "paVar7 = sec;" (assignment_expression "paVar7 = sec" identifier = identifier) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }" if (parenthesized_expression "((!bVar10 && !bVar11) != bVar10)" ( (binary_expression "(!bVar10 && !bVar11) != bVar10" (parenthesized_expression "(!bVar10 && !bVar11)" ( (binary_expression "!bVar10 && !bVar11" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) != identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else {\n    bVar10 = strip_symbols < STRIP_ALL;\n    bVar11 = strip_symbols == STRIP_ALL;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = discard_locals < LOCALS_ALL;\n    bVar11 = discard_locals == LOCALS_ALL;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = convert_debugging == 0;\n    if (!bVar11) goto LAB_00108160;\n  }" else (compound_statement "{\n    bVar10 = strip_symbols < STRIP_ALL;\n    bVar11 = strip_symbols == STRIP_ALL;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = discard_locals < LOCALS_ALL;\n    bVar11 = discard_locals == LOCALS_ALL;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = convert_debugging == 0;\n    if (!bVar11) goto LAB_00108160;\n  }" { (expression_statement "bVar10 = strip_symbols < STRIP_ALL;" (assignment_expression "bVar10 = strip_symbols < STRIP_ALL" identifier = (binary_expression "strip_symbols < STRIP_ALL" identifier < identifier)) ;) (expression_statement "bVar11 = strip_symbols == STRIP_ALL;" (assignment_expression "bVar11 = strip_symbols == STRIP_ALL" identifier = (binary_expression "strip_symbols == STRIP_ALL" identifier == identifier)) ;) (if_statement "if (bVar11) goto LAB_00108160;" if (parenthesized_expression "(bVar11)" ( identifier )) (goto_statement "goto LAB_00108160;" goto statement_identifier ;)) (expression_statement "bVar10 = discard_locals < LOCALS_ALL;" (assignment_expression "bVar10 = discard_locals < LOCALS_ALL" identifier = (binary_expression "discard_locals < LOCALS_ALL" identifier < identifier)) ;) (expression_statement "bVar11 = discard_locals == LOCALS_ALL;" (assignment_expression "bVar11 = discard_locals == LOCALS_ALL" identifier = (binary_expression "discard_locals == LOCALS_ALL" identifier == identifier)) ;) (if_statement "if (bVar11) goto LAB_00108160;" if (parenthesized_expression "(bVar11)" ( identifier )) (goto_statement "goto LAB_00108160;" goto statement_identifier ;)) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar11 = convert_debugging == 0;" (assignment_expression "bVar11 = convert_debugging == 0" identifier = (binary_expression "convert_debugging == 0" identifier == number_literal)) ;) (if_statement "if (!bVar11) goto LAB_00108160;" if (parenthesized_expression "(!bVar11)" ( (unary_expression "!bVar11" ! identifier) )) (goto_statement "goto LAB_00108160;" goto statement_identifier ;)) }))) (if_statement "if (strip_symbols == STRIP_DWO) {\n    bVar1 = is_dwo_section((bfd *)abfd->filename,sec);\n    return bVar1;\n  }" if (parenthesized_expression "(strip_symbols == STRIP_DWO)" ( (binary_expression "strip_symbols == STRIP_DWO" identifier == identifier) )) (compound_statement "{\n    bVar1 = is_dwo_section((bfd *)abfd->filename,sec);\n    return bVar1;\n  }" { (expression_statement "bVar1 = is_dwo_section((bfd *)abfd->filename,sec);" (assignment_expression "bVar1 = is_dwo_section((bfd *)abfd->filename,sec)" identifier = (call_expression "is_dwo_section((bfd *)abfd->filename,sec)" identifier (argument_list "((bfd *)abfd->filename,sec)" ( (cast_expression "(bfd *)abfd->filename" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "abfd->filename" identifier -> field_identifier)) , identifier )))) ;) (return_statement "return bVar1;" return identifier ;) })) (if_statement "if (strip_symbols == STRIP_NONDEBUG) {\n    return 0;\n  }" if (parenthesized_expression "(strip_symbols == STRIP_NONDEBUG)" ( (binary_expression "strip_symbols == STRIP_NONDEBUG" identifier == identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_00108186:\n  uVar2 = 0;" statement_identifier : (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;)) (if_statement "if (strip_symbols == STRIP_NONDWO) {\n    bVar1 = is_dwo_section((bfd *)abfd->filename,sec);\n    uVar2 = (uint)(bVar1 == 0);\n  }" if (parenthesized_expression "(strip_symbols == STRIP_NONDWO)" ( (binary_expression "strip_symbols == STRIP_NONDWO" identifier == identifier) )) (compound_statement "{\n    bVar1 = is_dwo_section((bfd *)abfd->filename,sec);\n    uVar2 = (uint)(bVar1 == 0);\n  }" { (expression_statement "bVar1 = is_dwo_section((bfd *)abfd->filename,sec);" (assignment_expression "bVar1 = is_dwo_section((bfd *)abfd->filename,sec)" identifier = (call_expression "is_dwo_section((bfd *)abfd->filename,sec)" identifier (argument_list "((bfd *)abfd->filename,sec)" ( (cast_expression "(bfd *)abfd->filename" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "abfd->filename" identifier -> field_identifier)) , identifier )))) ;) (expression_statement "uVar2 = (uint)(bVar1 == 0);" (assignment_expression "uVar2 = (uint)(bVar1 == 0)" identifier = (call_expression "(uint)(bVar1 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )))) ;) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "ulong FUN_001080b0(undefined8 *param_1)\n\n{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  ulong uVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  byte *pbVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  if (DAT_0012cafc != 0 || DAT_0012caf8 != 0) {\n    lVar2 = FUN_00107360(*param_1,0,1);\n    lVar3 = FUN_00107360(*param_1,0,2);\n    if ((lVar2 != 0) && (lVar3 != 0)) {\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    \n      FUN_0011b5c0(uVar5,uVar6);\n    }\n    if (lVar2 != 0) {\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {\n      return 1;\n    }\n  }\n  if ((*(byte *)((long)param_1 + 0x21) & 0x20) == 0) goto LAB_00108186;\n  bVar10 = DAT_0012cb0c == 2;\n  bVar11 = DAT_0012cb0c - 2 == 1;\n  if (DAT_0012cb0c - 2 < 2) {\nLAB_00108160:\n    lVar2 = 7;\n    pbVar7 = (byte *)*param_1;\n    pbVar9 = (byte *)".reloc";\n    do {\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }\n  else {\n    bVar10 = DAT_0012cb0c < 7;\n    bVar11 = DAT_0012cb0c == 7;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = DAT_0012cb08 < 2;\n    bVar11 = DAT_0012cb08 == 2;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = DAT_0012ca88 == 0;\n    if (!bVar11) goto LAB_00108160;\n  }\n  if (DAT_0012cb0c == 5) {\n    uVar4 = FUN_00107ff0(*param_1);\n    return uVar4;\n  }\n  if (DAT_0012cb0c == 4) {\n    return 0;\n  }\nLAB_00108186:\n  uVar4 = 0;\n  if (DAT_0012cb0c == 6) {\n    iVar1 = FUN_00107ff0(*param_1);\n    uVar4 = (ulong)(iVar1 == 0);\n  }\n  return uVar4;\n}\n\n" (function_definition "ulong FUN_001080b0(undefined8 *param_1)\n\n{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  ulong uVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  byte *pbVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  if (DAT_0012cafc != 0 || DAT_0012caf8 != 0) {\n    lVar2 = FUN_00107360(*param_1,0,1);\n    lVar3 = FUN_00107360(*param_1,0,2);\n    if ((lVar2 != 0) && (lVar3 != 0)) {\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    \n      FUN_0011b5c0(uVar5,uVar6);\n    }\n    if (lVar2 != 0) {\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {\n      return 1;\n    }\n  }\n  if ((*(byte *)((long)param_1 + 0x21) & 0x20) == 0) goto LAB_00108186;\n  bVar10 = DAT_0012cb0c == 2;\n  bVar11 = DAT_0012cb0c - 2 == 1;\n  if (DAT_0012cb0c - 2 < 2) {\nLAB_00108160:\n    lVar2 = 7;\n    pbVar7 = (byte *)*param_1;\n    pbVar9 = (byte *)".reloc";\n    do {\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }\n  else {\n    bVar10 = DAT_0012cb0c < 7;\n    bVar11 = DAT_0012cb0c == 7;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = DAT_0012cb08 < 2;\n    bVar11 = DAT_0012cb08 == 2;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = DAT_0012ca88 == 0;\n    if (!bVar11) goto LAB_00108160;\n  }\n  if (DAT_0012cb0c == 5) {\n    uVar4 = FUN_00107ff0(*param_1);\n    return uVar4;\n  }\n  if (DAT_0012cb0c == 4) {\n    return 0;\n  }\nLAB_00108186:\n  uVar4 = 0;\n  if (DAT_0012cb0c == 6) {\n    iVar1 = FUN_00107ff0(*param_1);\n    uVar4 = (ulong)(iVar1 == 0);\n  }\n  return uVar4;\n}" type_identifier (function_declarator "FUN_001080b0(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  ulong uVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  byte *pbVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  if (DAT_0012cafc != 0 || DAT_0012caf8 != 0) {\n    lVar2 = FUN_00107360(*param_1,0,1);\n    lVar3 = FUN_00107360(*param_1,0,2);\n    if ((lVar2 != 0) && (lVar3 != 0)) {\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    \n      FUN_0011b5c0(uVar5,uVar6);\n    }\n    if (lVar2 != 0) {\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {\n      return 1;\n    }\n  }\n  if ((*(byte *)((long)param_1 + 0x21) & 0x20) == 0) goto LAB_00108186;\n  bVar10 = DAT_0012cb0c == 2;\n  bVar11 = DAT_0012cb0c - 2 == 1;\n  if (DAT_0012cb0c - 2 < 2) {\nLAB_00108160:\n    lVar2 = 7;\n    pbVar7 = (byte *)*param_1;\n    pbVar9 = (byte *)".reloc";\n    do {\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }\n  else {\n    bVar10 = DAT_0012cb0c < 7;\n    bVar11 = DAT_0012cb0c == 7;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = DAT_0012cb08 < 2;\n    bVar11 = DAT_0012cb08 == 2;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = DAT_0012ca88 == 0;\n    if (!bVar11) goto LAB_00108160;\n  }\n  if (DAT_0012cb0c == 5) {\n    uVar4 = FUN_00107ff0(*param_1);\n    return uVar4;\n  }\n  if (DAT_0012cb0c == 4) {\n    return 0;\n  }\nLAB_00108186:\n  uVar4 = 0;\n  if (DAT_0012cb0c == 6) {\n    iVar1 = FUN_00107ff0(*param_1);\n    uVar4 = (ulong)(iVar1 == 0);\n  }\n  return uVar4;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (if_statement "if (DAT_0012cafc != 0 || DAT_0012caf8 != 0) {\n    lVar2 = FUN_00107360(*param_1,0,1);\n    lVar3 = FUN_00107360(*param_1,0,2);\n    if ((lVar2 != 0) && (lVar3 != 0)) {\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    \n      FUN_0011b5c0(uVar5,uVar6);\n    }\n    if (lVar2 != 0) {\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {\n      return 1;\n    }\n  }" if (parenthesized_expression "(DAT_0012cafc != 0 || DAT_0012caf8 != 0)" ( (binary_expression "DAT_0012cafc != 0 || DAT_0012caf8 != 0" (binary_expression "DAT_0012cafc != 0" identifier != number_literal) || (binary_expression "DAT_0012caf8 != 0" identifier != number_literal)) )) (compound_statement "{\n    lVar2 = FUN_00107360(*param_1,0,1);\n    lVar3 = FUN_00107360(*param_1,0,2);\n    if ((lVar2 != 0) && (lVar3 != 0)) {\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    \n      FUN_0011b5c0(uVar5,uVar6);\n    }\n    if (lVar2 != 0) {\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {\n      return 1;\n    }\n  }" { (expression_statement "lVar2 = FUN_00107360(*param_1,0,1);" (assignment_expression "lVar2 = FUN_00107360(*param_1,0,1)" identifier = (call_expression "FUN_00107360(*param_1,0,1)" identifier (argument_list "(*param_1,0,1)" ( (pointer_expression "*param_1" * identifier) , number_literal , number_literal )))) ;) (expression_statement "lVar3 = FUN_00107360(*param_1,0,2);" (assignment_expression "lVar3 = FUN_00107360(*param_1,0,2)" identifier = (call_expression "FUN_00107360(*param_1,0,2)" identifier (argument_list "(*param_1,0,2)" ( (pointer_expression "*param_1" * identifier) , number_literal , number_literal )))) ;) (if_statement "if ((lVar2 != 0) && (lVar3 != 0)) {\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    \n      FUN_0011b5c0(uVar5,uVar6);\n    }" if (parenthesized_expression "((lVar2 != 0) && (lVar3 != 0))" ( (binary_expression "(lVar2 != 0) && (lVar3 != 0)" (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(lVar3 != 0)" ( (binary_expression "lVar3 != 0" identifier != number_literal) ))) )) (compound_statement "{\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    \n      FUN_0011b5c0(uVar5,uVar6);\n    }" { (expression_statement "uVar6 = *param_1;" (assignment_expression "uVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pcVar8 = "error: section %s matches both remove and copy options";" (assignment_expression "pcVar8 = "error: section %s matches both remove and copy options"" identifier = (string_literal ""error: section %s matches both remove and copy options"" " string_content ")) ;) (labeled_statement "LAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);" statement_identifier : (expression_statement "uVar5 = dcgettext(0,pcVar8,5);" (assignment_expression "uVar5 = dcgettext(0,pcVar8,5)" identifier = (call_expression "dcgettext(0,pcVar8,5)" identifier (argument_list "(0,pcVar8,5)" ( number_literal , identifier , number_literal )))) ;)) (expression_statement "FUN_0011b5c0(uVar5,uVar6);" (call_expression "FUN_0011b5c0(uVar5,uVar6)" identifier (argument_list "(uVar5,uVar6)" ( identifier , identifier ))) ;) })) (if_statement "if (lVar2 != 0) {\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }" if (parenthesized_expression "(lVar2 != 0)" ( (binary_expression "lVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }" { (expression_statement "iVar1 = FUN_00107f50(param_1);" (assignment_expression "iVar1 = FUN_00107f50(param_1)" identifier = (call_expression "FUN_00107f50(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar1 == 0) {\n        return 1;\n      }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar6 = *param_1;" (assignment_expression "uVar6 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pcVar8 = "error: section %s matches both update and remove options";" (assignment_expression "pcVar8 = "error: section %s matches both update and remove options"" identifier = (string_literal ""error: section %s matches both update and remove options"" " string_content ")) ;) (goto_statement "goto LAB_001081cd;" goto statement_identifier ;) })) (if_statement "if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {\n      return 1;\n    }" if (parenthesized_expression "((DAT_0012caf8 != 0) && (lVar3 == 0))" ( (binary_expression "(DAT_0012caf8 != 0) && (lVar3 == 0)" (parenthesized_expression "(DAT_0012caf8 != 0)" ( (binary_expression "DAT_0012caf8 != 0" identifier != number_literal) )) && (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) ))) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) })) (if_statement "if ((*(byte *)((long)param_1 + 0x21) & 0x20) == 0) goto LAB_00108186;" if (parenthesized_expression "((*(byte *)((long)param_1 + 0x21) & 0x20) == 0)" ( (binary_expression "(*(byte *)((long)param_1 + 0x21) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)param_1 + 0x21) & 0x20)" ( (binary_expression "*(byte *)((long)param_1 + 0x21) & 0x20" (pointer_expression "*(byte *)((long)param_1 + 0x21)" * (cast_expression "(byte *)((long)param_1 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x21)" ( (binary_expression "(long)param_1 + 0x21" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00108186;" goto statement_identifier ;)) (expression_statement "bVar10 = DAT_0012cb0c == 2;" (assignment_expression "bVar10 = DAT_0012cb0c == 2" identifier = (binary_expression "DAT_0012cb0c == 2" identifier == number_literal)) ;) (expression_statement "bVar11 = DAT_0012cb0c - 2 == 1;" (assignment_expression "bVar11 = DAT_0012cb0c - 2 == 1" identifier = (binary_expression "DAT_0012cb0c - 2 == 1" (binary_expression "DAT_0012cb0c - 2" identifier - number_literal) == number_literal)) ;) (if_statement "if (DAT_0012cb0c - 2 < 2) {\nLAB_00108160:\n    lVar2 = 7;\n    pbVar7 = (byte *)*param_1;\n    pbVar9 = (byte *)".reloc";\n    do {\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }\n  else {\n    bVar10 = DAT_0012cb0c < 7;\n    bVar11 = DAT_0012cb0c == 7;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = DAT_0012cb08 < 2;\n    bVar11 = DAT_0012cb08 == 2;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = DAT_0012ca88 == 0;\n    if (!bVar11) goto LAB_00108160;\n  }" if (parenthesized_expression "(DAT_0012cb0c - 2 < 2)" ( (binary_expression "DAT_0012cb0c - 2 < 2" (binary_expression "DAT_0012cb0c - 2" identifier - number_literal) < number_literal) )) (compound_statement "{\nLAB_00108160:\n    lVar2 = 7;\n    pbVar7 = (byte *)*param_1;\n    pbVar9 = (byte *)".reloc";\n    do {\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }" { (labeled_statement "LAB_00108160:\n    lVar2 = 7;" statement_identifier : (expression_statement "lVar2 = 7;" (assignment_expression "lVar2 = 7" identifier = number_literal) ;)) (expression_statement "pbVar7 = (byte *)*param_1;" (assignment_expression "pbVar7 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "pbVar9 = (byte *)".reloc";" (assignment_expression "pbVar9 = (byte *)".reloc"" identifier = (cast_expression "(byte *)".reloc"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".reloc"" " string_content "))) ;) (do_statement "do {\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);" do (compound_statement "{\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    }" { (if_statement "if (lVar2 == 0) break;" if (parenthesized_expression "(lVar2 == 0)" ( (binary_expression "lVar2 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar2 = lVar2 + -1;" (assignment_expression "lVar2 = lVar2 + -1" identifier = (binary_expression "lVar2 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar7 < *pbVar9;" (assignment_expression "bVar10 = *pbVar7 < *pbVar9" identifier = (binary_expression "*pbVar7 < *pbVar9" (pointer_expression "*pbVar7" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar11 = *pbVar7 == *pbVar9;" (assignment_expression "bVar11 = *pbVar7 == *pbVar9" identifier = (binary_expression "*pbVar7 == *pbVar9" (pointer_expression "*pbVar7" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }" if (parenthesized_expression "((!bVar10 && !bVar11) != bVar10)" ( (binary_expression "(!bVar10 && !bVar11) != bVar10" (parenthesized_expression "(!bVar10 && !bVar11)" ( (binary_expression "!bVar10 && !bVar11" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) != identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else {\n    bVar10 = DAT_0012cb0c < 7;\n    bVar11 = DAT_0012cb0c == 7;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = DAT_0012cb08 < 2;\n    bVar11 = DAT_0012cb08 == 2;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = DAT_0012ca88 == 0;\n    if (!bVar11) goto LAB_00108160;\n  }" else (compound_statement "{\n    bVar10 = DAT_0012cb0c < 7;\n    bVar11 = DAT_0012cb0c == 7;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = DAT_0012cb08 < 2;\n    bVar11 = DAT_0012cb08 == 2;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = DAT_0012ca88 == 0;\n    if (!bVar11) goto LAB_00108160;\n  }" { (expression_statement "bVar10 = DAT_0012cb0c < 7;" (assignment_expression "bVar10 = DAT_0012cb0c < 7" identifier = (binary_expression "DAT_0012cb0c < 7" identifier < number_literal)) ;) (expression_statement "bVar11 = DAT_0012cb0c == 7;" (assignment_expression "bVar11 = DAT_0012cb0c == 7" identifier = (binary_expression "DAT_0012cb0c == 7" identifier == number_literal)) ;) (if_statement "if (bVar11) goto LAB_00108160;" if (parenthesized_expression "(bVar11)" ( identifier )) (goto_statement "goto LAB_00108160;" goto statement_identifier ;)) (expression_statement "bVar10 = DAT_0012cb08 < 2;" (assignment_expression "bVar10 = DAT_0012cb08 < 2" identifier = (binary_expression "DAT_0012cb08 < 2" identifier < number_literal)) ;) (expression_statement "bVar11 = DAT_0012cb08 == 2;" (assignment_expression "bVar11 = DAT_0012cb08 == 2" identifier = (binary_expression "DAT_0012cb08 == 2" identifier == number_literal)) ;) (if_statement "if (bVar11) goto LAB_00108160;" if (parenthesized_expression "(bVar11)" ( identifier )) (goto_statement "goto LAB_00108160;" goto statement_identifier ;)) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar11 = DAT_0012ca88 == 0;" (assignment_expression "bVar11 = DAT_0012ca88 == 0" identifier = (binary_expression "DAT_0012ca88 == 0" identifier == number_literal)) ;) (if_statement "if (!bVar11) goto LAB_00108160;" if (parenthesized_expression "(!bVar11)" ( (unary_expression "!bVar11" ! identifier) )) (goto_statement "goto LAB_00108160;" goto statement_identifier ;)) }))) (if_statement "if (DAT_0012cb0c == 5) {\n    uVar4 = FUN_00107ff0(*param_1);\n    return uVar4;\n  }" if (parenthesized_expression "(DAT_0012cb0c == 5)" ( (binary_expression "DAT_0012cb0c == 5" identifier == number_literal) )) (compound_statement "{\n    uVar4 = FUN_00107ff0(*param_1);\n    return uVar4;\n  }" { (expression_statement "uVar4 = FUN_00107ff0(*param_1);" (assignment_expression "uVar4 = FUN_00107ff0(*param_1)" identifier = (call_expression "FUN_00107ff0(*param_1)" identifier (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) )))) ;) (return_statement "return uVar4;" return identifier ;) })) (if_statement "if (DAT_0012cb0c == 4) {\n    return 0;\n  }" if (parenthesized_expression "(DAT_0012cb0c == 4)" ( (binary_expression "DAT_0012cb0c == 4" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (labeled_statement "LAB_00108186:\n  uVar4 = 0;" statement_identifier : (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;)) (if_statement "if (DAT_0012cb0c == 6) {\n    iVar1 = FUN_00107ff0(*param_1);\n    uVar4 = (ulong)(iVar1 == 0);\n  }" if (parenthesized_expression "(DAT_0012cb0c == 6)" ( (binary_expression "DAT_0012cb0c == 6" identifier == number_literal) )) (compound_statement "{\n    iVar1 = FUN_00107ff0(*param_1);\n    uVar4 = (ulong)(iVar1 == 0);\n  }" { (expression_statement "iVar1 = FUN_00107ff0(*param_1);" (assignment_expression "iVar1 = FUN_00107ff0(*param_1)" identifier = (call_expression "FUN_00107ff0(*param_1)" identifier (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) )))) ;) (expression_statement "uVar4 = (ulong)(iVar1 == 0);" (assignment_expression "uVar4 = (ulong)(iVar1 == 0)" identifier = (call_expression "(ulong)(iVar1 == 0)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )))) ;) })) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT , LIT )))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) })) (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 (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - LIT) == LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT < LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) )))) ;) })) (return_statement return IDENT ;) })))
(function_definition "ulong FUN_001080b0(undefined8 *param_1)\n\n{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  ulong uVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  byte *pbVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  if (DAT_0012cafc != 0 || DAT_0012caf8 != 0) {\n    lVar2 = FUN_00107360(*param_1,0,1);\n    lVar3 = FUN_00107360(*param_1,0,2);\n    if ((lVar2 != 0) && (lVar3 != 0)) {\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    \n      FUN_0011b5c0(uVar5,uVar6);\n    }\n    if (lVar2 != 0) {\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {\n      return 1;\n    }\n  }\n  if ((*(byte *)((long)param_1 + 0x21) & 0x20) == 0) goto LAB_00108186;\n  bVar10 = DAT_0012cb0c == 2;\n  bVar11 = DAT_0012cb0c - 2 == 1;\n  if (DAT_0012cb0c - 2 < 2) {\nLAB_00108160:\n    lVar2 = 7;\n    pbVar7 = (byte *)*param_1;\n    pbVar9 = (byte *)".reloc";\n    do {\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }\n  else {\n    bVar10 = DAT_0012cb0c < 7;\n    bVar11 = DAT_0012cb0c == 7;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = DAT_0012cb08 < 2;\n    bVar11 = DAT_0012cb08 == 2;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = DAT_0012ca88 == 0;\n    if (!bVar11) goto LAB_00108160;\n  }\n  if (DAT_0012cb0c == 5) {\n    uVar4 = FUN_00107ff0(*param_1);\n    return uVar4;\n  }\n  if (DAT_0012cb0c == 4) {\n    return 0;\n  }\nLAB_00108186:\n  uVar4 = 0;\n  if (DAT_0012cb0c == 6) {\n    iVar1 = FUN_00107ff0(*param_1);\n    uVar4 = (ulong)(iVar1 == 0);\n  }\n  return uVar4;\n}" (type_identifier "ulong") (function_declarator "FUN_001080b0(undefined8 *param_1)" (identifier "FUN_001080b0") (parameter_list "(undefined8 *param_1)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  ulong uVar4;\n  undefined8 uVar5;\n  undefined8 uVar6;\n  byte *pbVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  if (DAT_0012cafc != 0 || DAT_0012caf8 != 0) {\n    lVar2 = FUN_00107360(*param_1,0,1);\n    lVar3 = FUN_00107360(*param_1,0,2);\n    if ((lVar2 != 0) && (lVar3 != 0)) {\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    \n      FUN_0011b5c0(uVar5,uVar6);\n    }\n    if (lVar2 != 0) {\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {\n      return 1;\n    }\n  }\n  if ((*(byte *)((long)param_1 + 0x21) & 0x20) == 0) goto LAB_00108186;\n  bVar10 = DAT_0012cb0c == 2;\n  bVar11 = DAT_0012cb0c - 2 == 1;\n  if (DAT_0012cb0c - 2 < 2) {\nLAB_00108160:\n    lVar2 = 7;\n    pbVar7 = (byte *)*param_1;\n    pbVar9 = (byte *)".reloc";\n    do {\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }\n  else {\n    bVar10 = DAT_0012cb0c < 7;\n    bVar11 = DAT_0012cb0c == 7;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = DAT_0012cb08 < 2;\n    bVar11 = DAT_0012cb08 == 2;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = DAT_0012ca88 == 0;\n    if (!bVar11) goto LAB_00108160;\n  }\n  if (DAT_0012cb0c == 5) {\n    uVar4 = FUN_00107ff0(*param_1);\n    return uVar4;\n  }\n  if (DAT_0012cb0c == 4) {\n    return 0;\n  }\nLAB_00108186:\n  uVar4 = 0;\n  if (DAT_0012cb0c == 6) {\n    iVar1 = FUN_00107ff0(*param_1);\n    uVar4 = (ulong)(iVar1 == 0);\n  }\n  return uVar4;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "char *pcVar8;" (primitive_type "char") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "bool bVar10;" (primitive_type "bool") (identifier "bVar10") (; ";")) (declaration "bool bVar11;" (primitive_type "bool") (identifier "bVar11") (; ";")) (declaration "byte bVar12;" (type_identifier "byte") (identifier "bVar12") (; ";")) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" (identifier "bVar12") (= "=") (number_literal "0")) (; ";")) (if_statement "if (DAT_0012cafc != 0 || DAT_0012caf8 != 0) {\n    lVar2 = FUN_00107360(*param_1,0,1);\n    lVar3 = FUN_00107360(*param_1,0,2);\n    if ((lVar2 != 0) && (lVar3 != 0)) {\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    \n      FUN_0011b5c0(uVar5,uVar6);\n    }\n    if (lVar2 != 0) {\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {\n      return 1;\n    }\n  }" (if "if") (parenthesized_expression "(DAT_0012cafc != 0 || DAT_0012caf8 != 0)" (( "(") (binary_expression "DAT_0012cafc != 0 || DAT_0012caf8 != 0" (binary_expression "DAT_0012cafc != 0" (identifier "DAT_0012cafc") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "DAT_0012caf8 != 0" (identifier "DAT_0012caf8") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n    lVar2 = FUN_00107360(*param_1,0,1);\n    lVar3 = FUN_00107360(*param_1,0,2);\n    if ((lVar2 != 0) && (lVar3 != 0)) {\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    \n      FUN_0011b5c0(uVar5,uVar6);\n    }\n    if (lVar2 != 0) {\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }\n    if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {\n      return 1;\n    }\n  }" ({ "{") (expression_statement "lVar2 = FUN_00107360(*param_1,0,1);" (assignment_expression "lVar2 = FUN_00107360(*param_1,0,1)" (identifier "lVar2") (= "=") (call_expression "FUN_00107360(*param_1,0,1)" (identifier "FUN_00107360") (argument_list "(*param_1,0,1)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) (, ",") (number_literal "0") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "lVar3 = FUN_00107360(*param_1,0,2);" (assignment_expression "lVar3 = FUN_00107360(*param_1,0,2)" (identifier "lVar3") (= "=") (call_expression "FUN_00107360(*param_1,0,2)" (identifier "FUN_00107360") (argument_list "(*param_1,0,2)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) (, ",") (number_literal "0") (, ",") (number_literal "2") () ")")))) (; ";")) (if_statement "if ((lVar2 != 0) && (lVar3 != 0)) {\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    \n      FUN_0011b5c0(uVar5,uVar6);\n    }" (if "if") (parenthesized_expression "((lVar2 != 0) && (lVar3 != 0))" (( "(") (binary_expression "(lVar2 != 0) && (lVar3 != 0)" (parenthesized_expression "(lVar2 != 0)" (( "(") (binary_expression "lVar2 != 0" (identifier "lVar2") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(lVar3 != 0)" (( "(") (binary_expression "lVar3 != 0" (identifier "lVar3") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both remove and copy options";\nLAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);\n                    \n      FUN_0011b5c0(uVar5,uVar6);\n    }" ({ "{") (expression_statement "uVar6 = *param_1;" (assignment_expression "uVar6 = *param_1" (identifier "uVar6") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "pcVar8 = "error: section %s matches both remove and copy options";" (assignment_expression "pcVar8 = "error: section %s matches both remove and copy options"" (identifier "pcVar8") (= "=") (string_literal ""error: section %s matches both remove and copy options"" (" """) (string_content "error: section %s matches both remove and copy options") (" """))) (; ";")) (labeled_statement "LAB_001081cd:\n      uVar5 = dcgettext(0,pcVar8,5);" (statement_identifier "LAB_001081cd") (: ":") (expression_statement "uVar5 = dcgettext(0,pcVar8,5);" (assignment_expression "uVar5 = dcgettext(0,pcVar8,5)" (identifier "uVar5") (= "=") (call_expression "dcgettext(0,pcVar8,5)" (identifier "dcgettext") (argument_list "(0,pcVar8,5)" (( "(") (number_literal "0") (, ",") (identifier "pcVar8") (, ",") (number_literal "5") () ")")))) (; ";"))) (expression_statement "FUN_0011b5c0(uVar5,uVar6);" (call_expression "FUN_0011b5c0(uVar5,uVar6)" (identifier "FUN_0011b5c0") (argument_list "(uVar5,uVar6)" (( "(") (identifier "uVar5") (, ",") (identifier "uVar6") () ")"))) (; ";")) (} "}"))) (if_statement "if (lVar2 != 0) {\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }" (if "if") (parenthesized_expression "(lVar2 != 0)" (( "(") (binary_expression "lVar2 != 0" (identifier "lVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar1 = FUN_00107f50(param_1);\n      if (iVar1 == 0) {\n        return 1;\n      }\n      uVar6 = *param_1;\n      pcVar8 = "error: section %s matches both update and remove options";\n      goto LAB_001081cd;\n    }" ({ "{") (expression_statement "iVar1 = FUN_00107f50(param_1);" (assignment_expression "iVar1 = FUN_00107f50(param_1)" (identifier "iVar1") (= "=") (call_expression "FUN_00107f50(param_1)" (identifier "FUN_00107f50") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n        return 1;\n      }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "uVar6 = *param_1;" (assignment_expression "uVar6 = *param_1" (identifier "uVar6") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "pcVar8 = "error: section %s matches both update and remove options";" (assignment_expression "pcVar8 = "error: section %s matches both update and remove options"" (identifier "pcVar8") (= "=") (string_literal ""error: section %s matches both update and remove options"" (" """) (string_content "error: section %s matches both update and remove options") (" """))) (; ";")) (goto_statement "goto LAB_001081cd;" (goto "goto") (statement_identifier "LAB_001081cd") (; ";")) (} "}"))) (if_statement "if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {\n      return 1;\n    }" (if "if") (parenthesized_expression "((DAT_0012caf8 != 0) && (lVar3 == 0))" (( "(") (binary_expression "(DAT_0012caf8 != 0) && (lVar3 == 0)" (parenthesized_expression "(DAT_0012caf8 != 0)" (( "(") (binary_expression "DAT_0012caf8 != 0" (identifier "DAT_0012caf8") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}"))) (if_statement "if ((*(byte *)((long)param_1 + 0x21) & 0x20) == 0) goto LAB_00108186;" (if "if") (parenthesized_expression "((*(byte *)((long)param_1 + 0x21) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)((long)param_1 + 0x21) & 0x20) == 0" (parenthesized_expression "(*(byte *)((long)param_1 + 0x21) & 0x20)" (( "(") (binary_expression "*(byte *)((long)param_1 + 0x21) & 0x20" (pointer_expression "*(byte *)((long)param_1 + 0x21)" (* "*") (cast_expression "(byte *)((long)param_1 + 0x21)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x21)" (( "(") (binary_expression "(long)param_1 + 0x21" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x21")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00108186;" (goto "goto") (statement_identifier "LAB_00108186") (; ";"))) (expression_statement "bVar10 = DAT_0012cb0c == 2;" (assignment_expression "bVar10 = DAT_0012cb0c == 2" (identifier "bVar10") (= "=") (binary_expression "DAT_0012cb0c == 2" (identifier "DAT_0012cb0c") (== "==") (number_literal "2"))) (; ";")) (expression_statement "bVar11 = DAT_0012cb0c - 2 == 1;" (assignment_expression "bVar11 = DAT_0012cb0c - 2 == 1" (identifier "bVar11") (= "=") (binary_expression "DAT_0012cb0c - 2 == 1" (binary_expression "DAT_0012cb0c - 2" (identifier "DAT_0012cb0c") (- "-") (number_literal "2")) (== "==") (number_literal "1"))) (; ";")) (if_statement "if (DAT_0012cb0c - 2 < 2) {\nLAB_00108160:\n    lVar2 = 7;\n    pbVar7 = (byte *)*param_1;\n    pbVar9 = (byte *)".reloc";\n    do {\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }\n  else {\n    bVar10 = DAT_0012cb0c < 7;\n    bVar11 = DAT_0012cb0c == 7;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = DAT_0012cb08 < 2;\n    bVar11 = DAT_0012cb08 == 2;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = DAT_0012ca88 == 0;\n    if (!bVar11) goto LAB_00108160;\n  }" (if "if") (parenthesized_expression "(DAT_0012cb0c - 2 < 2)" (( "(") (binary_expression "DAT_0012cb0c - 2 < 2" (binary_expression "DAT_0012cb0c - 2" (identifier "DAT_0012cb0c") (- "-") (number_literal "2")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00108160:\n    lVar2 = 7;\n    pbVar7 = (byte *)*param_1;\n    pbVar9 = (byte *)".reloc";\n    do {\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);\n    if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }\n  }" ({ "{") (labeled_statement "LAB_00108160:\n    lVar2 = 7;" (statement_identifier "LAB_00108160") (: ":") (expression_statement "lVar2 = 7;" (assignment_expression "lVar2 = 7" (identifier "lVar2") (= "=") (number_literal "7")) (; ";"))) (expression_statement "pbVar7 = (byte *)*param_1;" (assignment_expression "pbVar7 = (byte *)*param_1" (identifier "pbVar7") (= "=") (cast_expression "(byte *)*param_1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "pbVar9 = (byte *)".reloc";" (assignment_expression "pbVar9 = (byte *)".reloc"" (identifier "pbVar9") (= "=") (cast_expression "(byte *)".reloc"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".reloc"" (" """) (string_content ".reloc") (" """)))) (; ";")) (do_statement "do {\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    } while (bVar11);" (do "do") (compound_statement "{\n      if (lVar2 == 0) break;\n      lVar2 = lVar2 + -1;\n      bVar10 = *pbVar7 < *pbVar9;\n      bVar11 = *pbVar7 == *pbVar9;\n      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;\n    }" ({ "{") (if_statement "if (lVar2 == 0) break;" (if "if") (parenthesized_expression "(lVar2 == 0)" (( "(") (binary_expression "lVar2 == 0" (identifier "lVar2") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar2 = lVar2 + -1;" (assignment_expression "lVar2 = lVar2 + -1" (identifier "lVar2") (= "=") (binary_expression "lVar2 + -1" (identifier "lVar2") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar10 = *pbVar7 < *pbVar9;" (assignment_expression "bVar10 = *pbVar7 < *pbVar9" (identifier "bVar10") (= "=") (binary_expression "*pbVar7 < *pbVar9" (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")) (< "<") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")))) (; ";")) (expression_statement "bVar11 = *pbVar7 == *pbVar9;" (assignment_expression "bVar11 = *pbVar7 == *pbVar9" (identifier "bVar11") (= "=") (binary_expression "*pbVar7 == *pbVar9" (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")) (== "==") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")))) (; ";")) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" (identifier "pbVar7") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar12 * -2" (identifier "pbVar9") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar11)" (( "(") (identifier "bVar11") () ")")) (; ";")) (if_statement "if ((!bVar10 && !bVar11) != bVar10) {\n      return 1;\n    }" (if "if") (parenthesized_expression "((!bVar10 && !bVar11) != bVar10)" (( "(") (binary_expression "(!bVar10 && !bVar11) != bVar10" (parenthesized_expression "(!bVar10 && !bVar11)" (( "(") (binary_expression "!bVar10 && !bVar11" (unary_expression "!bVar10" (! "!") (identifier "bVar10")) (&& "&&") (unary_expression "!bVar11" (! "!") (identifier "bVar11"))) () ")")) (!= "!=") (identifier "bVar10")) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    bVar10 = DAT_0012cb0c < 7;\n    bVar11 = DAT_0012cb0c == 7;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = DAT_0012cb08 < 2;\n    bVar11 = DAT_0012cb08 == 2;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = DAT_0012ca88 == 0;\n    if (!bVar11) goto LAB_00108160;\n  }" (else "else") (compound_statement "{\n    bVar10 = DAT_0012cb0c < 7;\n    bVar11 = DAT_0012cb0c == 7;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = DAT_0012cb08 < 2;\n    bVar11 = DAT_0012cb08 == 2;\n    if (bVar11) goto LAB_00108160;\n    bVar10 = false;\n    bVar11 = DAT_0012ca88 == 0;\n    if (!bVar11) goto LAB_00108160;\n  }" ({ "{") (expression_statement "bVar10 = DAT_0012cb0c < 7;" (assignment_expression "bVar10 = DAT_0012cb0c < 7" (identifier "bVar10") (= "=") (binary_expression "DAT_0012cb0c < 7" (identifier "DAT_0012cb0c") (< "<") (number_literal "7"))) (; ";")) (expression_statement "bVar11 = DAT_0012cb0c == 7;" (assignment_expression "bVar11 = DAT_0012cb0c == 7" (identifier "bVar11") (= "=") (binary_expression "DAT_0012cb0c == 7" (identifier "DAT_0012cb0c") (== "==") (number_literal "7"))) (; ";")) (if_statement "if (bVar11) goto LAB_00108160;" (if "if") (parenthesized_expression "(bVar11)" (( "(") (identifier "bVar11") () ")")) (goto_statement "goto LAB_00108160;" (goto "goto") (statement_identifier "LAB_00108160") (; ";"))) (expression_statement "bVar10 = DAT_0012cb08 < 2;" (assignment_expression "bVar10 = DAT_0012cb08 < 2" (identifier "bVar10") (= "=") (binary_expression "DAT_0012cb08 < 2" (identifier "DAT_0012cb08") (< "<") (number_literal "2"))) (; ";")) (expression_statement "bVar11 = DAT_0012cb08 == 2;" (assignment_expression "bVar11 = DAT_0012cb08 == 2" (identifier "bVar11") (= "=") (binary_expression "DAT_0012cb08 == 2" (identifier "DAT_0012cb08") (== "==") (number_literal "2"))) (; ";")) (if_statement "if (bVar11) goto LAB_00108160;" (if "if") (parenthesized_expression "(bVar11)" (( "(") (identifier "bVar11") () ")")) (goto_statement "goto LAB_00108160;" (goto "goto") (statement_identifier "LAB_00108160") (; ";"))) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" (identifier "bVar10") (= "=") (false "false")) (; ";")) (expression_statement "bVar11 = DAT_0012ca88 == 0;" (assignment_expression "bVar11 = DAT_0012ca88 == 0" (identifier "bVar11") (= "=") (binary_expression "DAT_0012ca88 == 0" (identifier "DAT_0012ca88") (== "==") (number_literal "0"))) (; ";")) (if_statement "if (!bVar11) goto LAB_00108160;" (if "if") (parenthesized_expression "(!bVar11)" (( "(") (unary_expression "!bVar11" (! "!") (identifier "bVar11")) () ")")) (goto_statement "goto LAB_00108160;" (goto "goto") (statement_identifier "LAB_00108160") (; ";"))) (} "}")))) (if_statement "if (DAT_0012cb0c == 5) {\n    uVar4 = FUN_00107ff0(*param_1);\n    return uVar4;\n  }" (if "if") (parenthesized_expression "(DAT_0012cb0c == 5)" (( "(") (binary_expression "DAT_0012cb0c == 5" (identifier "DAT_0012cb0c") (== "==") (number_literal "5")) () ")")) (compound_statement "{\n    uVar4 = FUN_00107ff0(*param_1);\n    return uVar4;\n  }" ({ "{") (expression_statement "uVar4 = FUN_00107ff0(*param_1);" (assignment_expression "uVar4 = FUN_00107ff0(*param_1)" (identifier "uVar4") (= "=") (call_expression "FUN_00107ff0(*param_1)" (identifier "FUN_00107ff0") (argument_list "(*param_1)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")")))) (; ";")) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (if_statement "if (DAT_0012cb0c == 4) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(DAT_0012cb0c == 4)" (( "(") (binary_expression "DAT_0012cb0c == 4" (identifier "DAT_0012cb0c") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (labeled_statement "LAB_00108186:\n  uVar4 = 0;" (statement_identifier "LAB_00108186") (: ":") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (DAT_0012cb0c == 6) {\n    iVar1 = FUN_00107ff0(*param_1);\n    uVar4 = (ulong)(iVar1 == 0);\n  }" (if "if") (parenthesized_expression "(DAT_0012cb0c == 6)" (( "(") (binary_expression "DAT_0012cb0c == 6" (identifier "DAT_0012cb0c") (== "==") (number_literal "6")) () ")")) (compound_statement "{\n    iVar1 = FUN_00107ff0(*param_1);\n    uVar4 = (ulong)(iVar1 == 0);\n  }" ({ "{") (expression_statement "iVar1 = FUN_00107ff0(*param_1);" (assignment_expression "iVar1 = FUN_00107ff0(*param_1)" (identifier "iVar1") (= "=") (call_expression "FUN_00107ff0(*param_1)" (identifier "FUN_00107ff0") (argument_list "(*param_1)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")")))) (; ";")) (expression_statement "uVar4 = (ulong)(iVar1 == 0);" (assignment_expression "uVar4 = (ulong)(iVar1 == 0)" (identifier "uVar4") (= "=") (call_expression "(ulong)(iVar1 == 0)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")))) (; ";")) (} "}"))) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}")))

type_1 function_1(type_2 *abfd,type_3 *sec)

{
  type_1 var_9;
  type_4 uVar2;
  type_5 *var_4;
  type_5 *var_5;
  long var_12;
  char *pcVar6;
  type_3 *paVar7;
  char *pcVar8;
  type_6 *var_13;
  bool var_14;
  bool bVar11;
  type_6 bVar12;
  
  bVar12 = 0;
  if (var_1 != 0 || var_2 != 0) {
    var_4 = var_3(abfd->filename,0,1);
    sec = (type_3 *)0x0;
    var_5 = var_3(abfd->filename,0,2);
    if ((var_4 != (type_5 *)0x0) && (var_5 != (type_5 *)0x0)) {
      pcVar6 = abfd->filename;
      pcVar8 = "error: section %s matches both remove and copy options";
LAB_001081cd:
      pcVar8 = (char *)var_6(0,pcVar8,5);
                    /* WARNING: Subroutine does not return */
      var_7(pcVar8,pcVar6);
    }
    if (var_4 != (type_5 *)0x0) {
      var_9 = var_8(abfd,sec);
      if (var_9 == 0) {
        return 1;
      }
      pcVar6 = abfd->filename;
      pcVar8 = "error: section %s matches both update and remove options";
      goto LAB_001081cd;
    }
    if ((var_2 != 0) && (var_5 == (type_5 *)0x0)) {
      return 1;
    }
  }
  if (((type_7)abfd->lru_prev & 0x2000) == 0) goto LAB_00108186;
  var_14 = var_10 == var_11;
  bVar11 = var_10 - var_11 == 1;
  if (var_10 - var_11 < 2) {
LAB_00108160:
    var_12 = 7;
    paVar7 = (type_3 *)abfd->filename;
    var_13 = (type_6 *)".reloc";
    do {
      sec = paVar7;
      if (var_12 == 0) break;
      var_12 = var_12 + -1;
      sec = (type_3 *)((long)paVar7 + (type_7)bVar12 * -2 + 1);
      var_14 = *(type_6 *)&paVar7->name < *var_13;
      bVar11 = *(type_6 *)&paVar7->name == *var_13;
      paVar7 = sec;
      var_13 = var_13 + (type_7)bVar12 * -2 + 1;
    } while (bVar11);
    if ((!var_14 && !bVar11) != var_14) {
      return 1;
    }
  }
  else {
    var_14 = var_10 < var_15;
    bVar11 = var_10 == var_15;
    if (bVar11) goto LAB_00108160;
    var_14 = var_16 < var_17;
    bVar11 = var_16 == var_17;
    if (bVar11) goto LAB_00108160;
    var_14 = false;
    bVar11 = var_18 == 0;
    if (!bVar11) goto LAB_00108160;
  }
  if (var_10 == var_19) {
    var_9 = var_20((type_2 *)abfd->filename,sec);
    return var_9;
  }
  if (var_10 == var_21) {
    return 0;
  }
LAB_00108186:
  uVar2 = 0;
  if (var_10 == var_22) {
    var_9 = var_20((type_2 *)abfd->filename,sec);
    uVar2 = (type_4)(var_9 == 0);
  }
  return uVar2;
}


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

ulong MASKED(undefined8 *param_1)

{
  int iVar1;
  long lVar2;
  long lVar3;
  ulong uVar4;
  undefined8 uVar5;
  undefined8 uVar6;
  byte *pbVar7;
  char *pcVar8;
  byte *pbVar9;
  bool bVar10;
  bool bVar11;
  byte bVar12;
  
  bVar12 = 0;
  if (DAT_0012cafc != 0 || DAT_0012caf8 != 0) {
    lVar2 = FUN_00107360(*param_1,0,1);
    lVar3 = FUN_00107360(*param_1,0,2);
    if ((lVar2 != 0) && (lVar3 != 0)) {
      uVar6 = *param_1;
      pcVar8 = "error: section %s matches both remove and copy options";
LAB_001081cd:
      uVar5 = dcgettext(0,pcVar8,5);
                    /* WARNING: Subroutine does not return */
      FUN_0011b5c0(uVar5,uVar6);
    }
    if (lVar2 != 0) {
      iVar1 = FUN_00107f50(param_1);
      if (iVar1 == 0) {
        return 1;
      }
      uVar6 = *param_1;
      pcVar8 = "error: section %s matches both update and remove options";
      goto LAB_001081cd;
    }
    if ((DAT_0012caf8 != 0) && (lVar3 == 0)) {
      return 1;
    }
  }
  if ((*(byte *)((long)param_1 + 0x21) & 0x20) == 0) goto LAB_00108186;
  bVar10 = DAT_0012cb0c == 2;
  bVar11 = DAT_0012cb0c - 2 == 1;
  if (DAT_0012cb0c - 2 < 2) {
LAB_00108160:
    lVar2 = 7;
    pbVar7 = (byte *)*param_1;
    pbVar9 = (byte *)".reloc";
    do {
      if (lVar2 == 0) break;
      lVar2 = lVar2 + -1;
      bVar10 = *pbVar7 < *pbVar9;
      bVar11 = *pbVar7 == *pbVar9;
      pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;
      pbVar9 = pbVar9 + (ulong)bVar12 * -2 + 1;
    } while (bVar11);
    if ((!bVar10 && !bVar11) != bVar10) {
      return 1;
    }
  }
  else {
    bVar10 = DAT_0012cb0c < 7;
    bVar11 = DAT_0012cb0c == 7;
    if (bVar11) goto LAB_00108160;
    bVar10 = DAT_0012cb08 < 2;
    bVar11 = DAT_0012cb08 == 2;
    if (bVar11) goto LAB_00108160;
    bVar10 = false;
    bVar11 = DAT_0012ca88 == 0;
    if (!bVar11) goto LAB_00108160;
  }
  if (DAT_0012cb0c == 5) {
    uVar4 = FUN_00107ff0(*param_1);
    return uVar4;
  }
  if (DAT_0012cb0c == 4) {
    return 0;
  }
LAB_00108186:
  uVar4 = 0;
  if (DAT_0012cb0c == 6) {
    iVar1 = FUN_00107ff0(*param_1);
    uVar4 = (ulong)(iVar1 == 0);
  }
  return uVar4;
}

