
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* DWARF original prototype: bool alternate_constraint(Output_section_definition * this,
   Output_section_definition * posd, Section_constraint constraint) */

bool __thiscall
gold::Output_section_definition::alternate_constraint
          (Output_section_definition *this,Output_section_definition *posd,
          Section_constraint constraint)

{
  size_type sVar1;
  int iVar2;
  undefined4 uVar3;
  code *pcVar4;
  bool bVar5;
  Output_section *pOVar6;
  int iVar7;
  uint uVar8;
  undefined *puVar9;
  int *piVar10;
  uint uVar11;
  int *piVar12;
  int iVar13;
  undefined8 *in_a3;
  undefined8 *puVar14;
  undefined *puVar15;
  code *pcVar16;
  undefined8 uVar17;
  uint uStack_44;
  int *piStack_14;
  
  sVar1 = (this->name_)._M_string_length;
  if (sVar1 != (posd->name_)._M_string_length) {
    return false;
  }
  if ((sVar1 == 0) ||
     (iVar2 = (*(code *)PTR_memcmp_004368dc)
                        ((this->name_)._M_dataplus._M_p,(posd->name_)._M_dataplus._M_p,sVar1),
     iVar2 == 0)) {
    if (constraint == CONSTRAINT_ONLY_IF_RO) {
      if (this->constraint_ == CONSTRAINT_ONLY_IF_RW) {
LAB_0020a00c:
        if (this->output_section_ != (Output_section *)0x0) {
          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s__0043226c + -0x5c28);
          (*(code *)PTR_gold_error_00432d84)(uVar3);
        }
        bVar5 = this->is_relro_;
        this->output_section_ = posd->output_section_;
        posd->output_section_ = (Output_section *)0x0;
        pOVar6 = this->output_section_;
        if (bVar5 != false) {
          *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff | 0x40000;
          return bVar5;
        }
        *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff;
        return true;
      }
    }
    else {
      if (constraint != CONSTRAINT_ONLY_IF_RW) {
        piVar12 = (int *)(PTR_s__0043226c + -0x5390);
        puVar9 = PTR_s__0043226c + -0x5d54;
        puVar15 = PTR_do_gold_unreachable_004323c4;
        (*(code *)PTR_do_gold_unreachable_004323c4)(puVar9,0xade);
        puVar14 = in_a3;
        iVar2 = (**(code **)(puVar15 + 0x228a9c))(puVar9 + 4);
        if (iVar2 != 0) {
          return false;
        }
        piVar10 = *(int **)(puVar9 + 0x44);
        if (piVar10 == (int *)0x0) {
          iVar2 = *(int *)(puVar9 + 0x48);
          piVar12[1] = *(int *)(puVar9 + 0x4c);
          *piVar12 = iVar2;
          uVar3 = *(undefined4 *)(puVar9 + 0x50);
          *(undefined4 *)((int)in_a3 + 4) = *(undefined4 *)(puVar9 + 0x54);
          *(undefined4 *)in_a3 = uVar3;
          Position_dependent_options::default_options_.sort_common_.value =
               *(char **)(puVar9 + 0x5c);
          Position_dependent_options::default_options_.sort_common_._60_4_ =
               *(undefined4 *)(puVar9 + 0x58);
          *piStack_14 = 0;
          piStack_14[1] = 0;
          return true;
        }
        iVar2 = piVar10[8];
        pcVar4 = *(code **)(puVar15 + 0x228dec);
        if (-(iVar2 >> 0x1f) != 0) {
          iVar7 = *piVar10;
          puVar14 = (undefined8 *)piVar10[3];
          iVar13 = piVar10[2];
          pcVar16 = *(code **)(iVar7 + 0x10);
          piVar12[1] = (int)puVar14;
          *piVar12 = iVar13;
          if (pcVar16 == pcVar4) {
            uVar11 = (uint)(piVar10[0x26] << 7) >> 0x1f;
          }
          else {
            uVar11 = (*pcVar16)();
            piVar10 = *(int **)(puVar9 + 0x44);
            iVar7 = *piVar10;
          }
          if (uVar11 == 0) {
            uVar17 = *(undefined8 *)piVar12;
          }
          else if (*(code **)(iVar7 + 0x14) == *(code **)(puVar15 + 0x22a2a4)) {
            if (-1 < piVar10[0x26] << 7) goto LAB_0020a2c0;
            uVar17 = *(undefined8 *)(piVar10 + 0xe);
          }
          else {
            uVar17 = (**(code **)(iVar7 + 0x14))();
            piVar10 = *(int **)(puVar9 + 0x44);
            iVar7 = *piVar10;
          }
          pcVar16 = *(code **)(iVar7 + 0xc);
          pcVar4 = *(code **)(puVar15 + 0x228df4);
          *in_a3 = uVar17;
          if (pcVar16 == pcVar4) {
            Position_dependent_options::default_options_.sort_common_._60_8_ =
                 *(undefined8 *)(piVar10 + 10);
          }
          else {
            Position_dependent_options::default_options_.sort_common_._60_8_ = (*pcVar16)();
            piVar10 = *(int **)(puVar9 + 0x44);
          }
          iVar7 = piVar10[5];
          *piStack_14 = piVar10[4];
          piStack_14[1] = iVar7;
          return SUB41(-(iVar2 >> 0x1f),0);
        }
        (**(code **)(puVar15 + 0x228310))
                  (*(int *)(puVar15 + 0x228300) + -0x4fe0,0xc5,
                   *(int *)(puVar15 + 0x2281b8) + -0x5328);
LAB_0020a2c0:
        iVar2 = *(int *)(puVar15 + 0x228300) + -0x4fe0;
        (**(code **)(puVar15 + 0x228310))();
        uVar11 = *(uint *)(iVar2 + 0x18);
        if (uVar11 != 0) {
          bVar5 = true;
          do {
            uVar8 = -uVar11 & uVar11;
            if (uVar8 == 2) {
              if (((uint)puVar14 & 1) == 0) {
                bVar5 = false;
              }
            }
            else if (uVar8 < 3) {
              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {
                bVar5 = false;
              }
            }
            else if (uVar8 == 8) {
              if (((uint)puVar14 & 2) == 0) {
                bVar5 = false;
              }
            }
            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {
              bVar5 = false;
            }
            uVar11 = uVar11 & uVar11 - 1;
          } while (uVar11 != 0);
          return bVar5;
        }
        return false;
      }
      if (this->constraint_ == CONSTRAINT_ONLY_IF_RO) goto LAB_0020a00c;
    }
  }
  return false;
}



uint FUN_00209f58(int param_1,int param_2,int param_3)

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  
  iVar2 = *(int *)(param_1 + 8);
  if (iVar2 != *(int *)(param_2 + 8)) {
    return 0;
  }
  if ((iVar2 == 0) ||
     (iVar2 = (*(code *)PTR_memcmp_004368dc)
                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),
     iVar2 == 0)) {
    if (param_3 == 1) {
      if (*(int *)(param_1 + 0x2c) == 2) {
LAB_0020a00c:
        if (*(int *)(param_1 + 0x44) != 0) {
          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);
          (*(code *)PTR_gold_error_00432d84)(uVar3);
        }
        bVar1 = *(byte *)(param_1 + 0x60);
        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);
        *(undefined4 *)(param_2 + 0x44) = 0;
        iVar2 = *(int *)(param_1 + 0x44);
        if (bVar1 == 0) {
          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;
          return 1;
        }
        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;
        return (uint)bVar1;
      }
    }
    else {
      if (param_3 != 2) {
        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)
                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);
        return uVar4;
      }
      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;
    }
  }
  return 0;
}


lui gp,0x23
addiu gp,gp,0x278
addu gp,gp,t9
lw v0,0x8(a0)
lw v1,0x8(a1)
beq v0,v1,0x00209f7c
_nop
jr ra
_or v0,zero,zero
addiu sp,sp,-0x28
sw gp,0x10(sp)
sw s2,0x20(sp)
or s2,a2,zero
sw s1,0x1c(sp)
or s1,a1,zero
sw s0,0x18(sp)
or s0,a0,zero
beq v0,zero,0x00209fc0
_sw ra,0x24(sp)
lw t9,-0x38f4(gp)
or a2,v0,zero
lw a1,0x4(a1)
jalr t9
_lw a0,0x4(a0)
bne v0,zero,0x00209fdc
_lw gp,0x10(sp)
li v0,0x1
bne s2,v0,0x00209ff8
_li v1,0x2
lw v1,0x2c(s0)
li v0,0x2
beq v1,v0,0x0020a00c
_nop
lw ra,0x24(sp)
or v0,zero,zero
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x28
bne s2,v1,0x0020a09c
_lw a2,-0x7f64(gp)
lw v1,0x2c(s0)
bne v1,v0,0x00209fe0
_lw ra,0x24(sp)
lw v0,0x44(s0)
beq v0,zero,0x0020a034
_lw a0,-0x7f64(gp)
lw t9,-0x39b8(gp)
jalr t9
_addiu a0,a0,-0x5c28
lw gp,0x10(sp)
lw t9,-0x744c(gp)
jalr t9
_or a0,v0,zero
lw v1,0x44(s1)
lbu v0,0x60(s0)
sw v1,0x44(s0)
sw zero,0x44(s1)
beq v0,zero,0x0020a074
_lw v1,0x44(s0)
lw a0,0x98(v1)
li a1,0x1
ins a0,a1,0x12,0x1
sw a0,0x98(v1)
lw ra,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x28
lw a0,0x98(v1)
li v0,0x1
ins a0,zero,0x12,0x1
sw a0,0x98(v1)
lw ra,0x24(sp)
lw s2,0x20(sp)
lw s1,0x1c(sp)
lw s0,0x18(sp)
jr ra
_addiu sp,sp,0x28
li a1,0xade
lw a0,-0x7f64(gp)
lw t9,-0x7e0c(gp)
addiu a2,a2,-0x5390
jalr t9
_addiu a0,a0,-0x5d54
(translation_unit "uint FUN_00209f58(int param_1,int param_2,int param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  \n  iVar2 = *(int *)(param_1 + 8);\n  if (iVar2 != *(int *)(param_2 + 8)) {\n    return 0;\n  }\n  if ((iVar2 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0)) {\n    if (param_3 == 1) {\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }\n    else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "uint FUN_00209f58(int param_1,int param_2,int param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  \n  iVar2 = *(int *)(param_1 + 8);\n  if (iVar2 != *(int *)(param_2 + 8)) {\n    return 0;\n  }\n  if ((iVar2 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0)) {\n    if (param_3 == 1) {\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }\n    else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00209f58(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  \n  iVar2 = *(int *)(param_1 + 8);\n  if (iVar2 != *(int *)(param_2 + 8)) {\n    return 0;\n  }\n  if ((iVar2 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0)) {\n    if (param_3 == 1) {\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }\n    else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }\n  }\n  return 0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (expression_statement "iVar2 = *(int *)(param_1 + 8);" (assignment_expression "iVar2 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 != *(int *)(param_2 + 8)) {\n    return 0;\n  }" if (parenthesized_expression "(iVar2 != *(int *)(param_2 + 8))" ( (binary_expression "iVar2 != *(int *)(param_2 + 8)" identifier != (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((iVar2 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0)) {\n    if (param_3 == 1) {\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }\n    else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }\n  }" if (parenthesized_expression "((iVar2 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0))" ( (binary_expression "(iVar2 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0)" (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0)" ( (comma_expression "iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0" (assignment_expression "iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2)" identifier = (call_expression "(*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2)" (parenthesized_expression "(*(code *)PTR_memcmp_004368dc)" ( (pointer_expression "*(code *)PTR_memcmp_004368dc" * (cast_expression "(code *)PTR_memcmp_004368dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2)" ( (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 4)" * (cast_expression "(undefined4 *)(param_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) , identifier )))) , (binary_expression "iVar2 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    if (param_3 == 1) {\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }\n    else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }\n  }" { (if_statement "if (param_3 == 1) {\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }\n    else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }" if (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) (compound_statement "{\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }" { (if_statement "if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x2c) == 2)" ( (binary_expression "*(int *)(param_1 + 0x2c) == 2" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }" { (labeled_statement "LAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }" statement_identifier : (if_statement "if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x44) != 0)" ( (binary_expression "*(int *)(param_1 + 0x44) != 0" (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }" { (expression_statement "uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);" (assignment_expression "uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28)" identifier = (call_expression "(*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" ( (pointer_expression "*(code *)PTR_gettext_00436818" * (cast_expression "(code *)PTR_gettext_00436818" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0043226c + -0x5c28)" ( (binary_expression "PTR_DAT_0043226c + -0x5c28" identifier + number_literal) )))) ;) (expression_statement "(*(code *)PTR_gold_error_00432d84)(uVar3);" (call_expression "(*(code *)PTR_gold_error_00432d84)(uVar3)" (parenthesized_expression "(*(code *)PTR_gold_error_00432d84)" ( (pointer_expression "*(code *)PTR_gold_error_00432d84" * (cast_expression "(code *)PTR_gold_error_00432d84" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar3)" ( identifier ))) ;) }))) (expression_statement "bVar1 = *(byte *)(param_1 + 0x60);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x60)" identifier = (pointer_expression "*(byte *)(param_1 + 0x60)" * (cast_expression "(byte *)(param_1 + 0x60)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44)" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_2 + 0x44)" * (cast_expression "(undefined4 *)(param_2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x44) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 0x44) = 0" (pointer_expression "*(undefined4 *)(param_2 + 0x44)" * (cast_expression "(undefined4 *)(param_2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x44);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x44)" identifier = (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) ;) (if_statement "if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }" { (expression_statement "*(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;" (assignment_expression "*(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff" (pointer_expression "*(uint *)(iVar2 + 0x98)" * (cast_expression "(uint *)(iVar2 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x98)" ( (binary_expression "iVar2 + 0x98" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar2 + 0x98) & 0xfffbffff" (pointer_expression "*(uint *)(iVar2 + 0x98)" * (cast_expression "(uint *)(iVar2 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x98)" ( (binary_expression "iVar2 + 0x98" identifier + number_literal) )))) & number_literal)) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "*(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;" (assignment_expression "*(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000" (pointer_expression "*(uint *)(iVar2 + 0x98)" * (cast_expression "(uint *)(iVar2 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x98)" ( (binary_expression "iVar2 + 0x98" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000" (binary_expression "*(uint *)(iVar2 + 0x98) & 0xfffbffff" (pointer_expression "*(uint *)(iVar2 + 0x98)" * (cast_expression "(uint *)(iVar2 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x98)" ( (binary_expression "iVar2 + 0x98" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (return_statement "return (uint)bVar1;" return (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) ;) })) }) (else_clause "else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }" else (compound_statement "{\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }" { (if_statement "if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }" if (parenthesized_expression "(param_3 != 2)" ( (binary_expression "param_3 != 2" identifier != number_literal) )) (compound_statement "{\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }" { (expression_statement "uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);" (assignment_expression "uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390)" identifier = (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" * (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390)" ( (binary_expression "PTR_DAT_0043226c + -0x5d54" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0043226c + -0x5390" identifier + number_literal) )))) ;) (return_statement "return uVar4;" return identifier ;) })) (if_statement "if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;" if (parenthesized_expression "(*(int *)(param_1 + 0x2c) == 1)" ( (binary_expression "*(int *)(param_1 + 0x2c) == 1" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0020a00c;" goto statement_identifier ;)) }))) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */\n/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */\n/* DWARF original prototype: bool alternate_constraint(Output_section_definition * this,\n   Output_section_definition * posd, Section_constraint constraint) */\n\nbool __thiscall\ngold::Output_section_definition::alternate_constraint\n          (Output_section_definition *this,Output_section_definition *posd,\n          Section_constraint constraint)\n\n{\n  size_type sVar1;\n  int iVar2;\n  undefined4 uVar3;\n  code *pcVar4;\n  bool bVar5;\n  Output_section *pOVar6;\n  int iVar7;\n  uint uVar8;\n  undefined *puVar9;\n  int *piVar10;\n  uint uVar11;\n  int *piVar12;\n  int iVar13;\n  undefined8 *in_a3;\n  undefined8 *puVar14;\n  undefined *puVar15;\n  code *pcVar16;\n  undefined8 uVar17;\n  uint uStack_44;\n  int *piStack_14;\n  \n  sVar1 = (this->name_)._M_string_length;\n  if (sVar1 != (posd->name_)._M_string_length) {\n    return false;\n  }\n  if ((sVar1 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        ((this->name_)._M_dataplus._M_p,(posd->name_)._M_dataplus._M_p,sVar1),\n     iVar2 == 0)) {\n    if (constraint == CONSTRAINT_ONLY_IF_RO) {\n      if (this->constraint_ == CONSTRAINT_ONLY_IF_RW) {\nLAB_0020a00c:\n        if (this->output_section_ != (Output_section *)0x0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s__0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar5 = this->is_relro_;\n        this->output_section_ = posd->output_section_;\n        posd->output_section_ = (Output_section *)0x0;\n        pOVar6 = this->output_section_;\n        if (bVar5 != false) {\n          *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff | 0x40000;\n          return bVar5;\n        }\n        *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff;\n        return true;\n      }\n    }\n    else {\n      if (constraint != CONSTRAINT_ONLY_IF_RW) {\n        piVar12 = (int *)(PTR_s__0043226c + -0x5390);\n        puVar9 = PTR_s__0043226c + -0x5d54;\n        puVar15 = PTR_do_gold_unreachable_004323c4;\n        (*(code *)PTR_do_gold_unreachable_004323c4)(puVar9,0xade);\n        puVar14 = in_a3;\n        iVar2 = (**(code **)(puVar15 + 0x228a9c))(puVar9 + 4);\n        if (iVar2 != 0) {\n          return false;\n        }\n        piVar10 = *(int **)(puVar9 + 0x44);\n        if (piVar10 == (int *)0x0) {\n          iVar2 = *(int *)(puVar9 + 0x48);\n          piVar12[1] = *(int *)(puVar9 + 0x4c);\n          *piVar12 = iVar2;\n          uVar3 = *(undefined4 *)(puVar9 + 0x50);\n          *(undefined4 *)((int)in_a3 + 4) = *(undefined4 *)(puVar9 + 0x54);\n          *(undefined4 *)in_a3 = uVar3;\n          Position_dependent_options::default_options_.sort_common_.value =\n               *(char **)(puVar9 + 0x5c);\n          Position_dependent_options::default_options_.sort_common_._60_4_ =\n               *(undefined4 *)(puVar9 + 0x58);\n          *piStack_14 = 0;\n          piStack_14[1] = 0;\n          return true;\n        }\n        iVar2 = piVar10[8];\n        pcVar4 = *(code **)(puVar15 + 0x228dec);\n        if (-(iVar2 >> 0x1f) != 0) {\n          iVar7 = *piVar10;\n          puVar14 = (undefined8 *)piVar10[3];\n          iVar13 = piVar10[2];\n          pcVar16 = *(code **)(iVar7 + 0x10);\n          piVar12[1] = (int)puVar14;\n          *piVar12 = iVar13;\n          if (pcVar16 == pcVar4) {\n            uVar11 = (uint)(piVar10[0x26] << 7) >> 0x1f;\n          }\n          else {\n            uVar11 = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          if (uVar11 == 0) {\n            uVar17 = *(undefined8 *)piVar12;\n          }\n          else if (*(code **)(iVar7 + 0x14) == *(code **)(puVar15 + 0x22a2a4)) {\n            if (-1 < piVar10[0x26] << 7) goto LAB_0020a2c0;\n            uVar17 = *(undefined8 *)(piVar10 + 0xe);\n          }\n          else {\n            uVar17 = (**(code **)(iVar7 + 0x14))();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          pcVar16 = *(code **)(iVar7 + 0xc);\n          pcVar4 = *(code **)(puVar15 + 0x228df4);\n          *in_a3 = uVar17;\n          if (pcVar16 == pcVar4) {\n            Position_dependent_options::default_options_.sort_common_._60_8_ =\n                 *(undefined8 *)(piVar10 + 10);\n          }\n          else {\n            Position_dependent_options::default_options_.sort_common_._60_8_ = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n          }\n          iVar7 = piVar10[5];\n          *piStack_14 = piVar10[4];\n          piStack_14[1] = iVar7;\n          return SUB41(-(iVar2 >> 0x1f),0);\n        }\n        (**(code **)(puVar15 + 0x228310))\n                  (*(int *)(puVar15 + 0x228300) + -0x4fe0,0xc5,\n                   *(int *)(puVar15 + 0x2281b8) + -0x5328);\nLAB_0020a2c0:\n        iVar2 = *(int *)(puVar15 + 0x228300) + -0x4fe0;\n        (**(code **)(puVar15 + 0x228310))();\n        uVar11 = *(uint *)(iVar2 + 0x18);\n        if (uVar11 != 0) {\n          bVar5 = true;\n          do {\n            uVar8 = -uVar11 & uVar11;\n            if (uVar8 == 2) {\n              if (((uint)puVar14 & 1) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 < 3) {\n              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }\n            uVar11 = uVar11 & uVar11 - 1;\n          } while (uVar11 != 0);\n          return bVar5;\n        }\n        return false;\n      }\n      if (this->constraint_ == CONSTRAINT_ONLY_IF_RO) goto LAB_0020a00c;\n    }\n  }\n  return false;\n}\n\n" comment comment comment comment comment comment comment (function_definition "bool __thiscall\ngold::Output_section_definition::alternate_constraint\n          (Output_section_definition *this,Output_section_definition *posd,\n          Section_constraint constraint)\n\n{\n  size_type sVar1;\n  int iVar2;\n  undefined4 uVar3;\n  code *pcVar4;\n  bool bVar5;\n  Output_section *pOVar6;\n  int iVar7;\n  uint uVar8;\n  undefined *puVar9;\n  int *piVar10;\n  uint uVar11;\n  int *piVar12;\n  int iVar13;\n  undefined8 *in_a3;\n  undefined8 *puVar14;\n  undefined *puVar15;\n  code *pcVar16;\n  undefined8 uVar17;\n  uint uStack_44;\n  int *piStack_14;\n  \n  sVar1 = (this->name_)._M_string_length;\n  if (sVar1 != (posd->name_)._M_string_length) {\n    return false;\n  }\n  if ((sVar1 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        ((this->name_)._M_dataplus._M_p,(posd->name_)._M_dataplus._M_p,sVar1),\n     iVar2 == 0)) {\n    if (constraint == CONSTRAINT_ONLY_IF_RO) {\n      if (this->constraint_ == CONSTRAINT_ONLY_IF_RW) {\nLAB_0020a00c:\n        if (this->output_section_ != (Output_section *)0x0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s__0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar5 = this->is_relro_;\n        this->output_section_ = posd->output_section_;\n        posd->output_section_ = (Output_section *)0x0;\n        pOVar6 = this->output_section_;\n        if (bVar5 != false) {\n          *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff | 0x40000;\n          return bVar5;\n        }\n        *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff;\n        return true;\n      }\n    }\n    else {\n      if (constraint != CONSTRAINT_ONLY_IF_RW) {\n        piVar12 = (int *)(PTR_s__0043226c + -0x5390);\n        puVar9 = PTR_s__0043226c + -0x5d54;\n        puVar15 = PTR_do_gold_unreachable_004323c4;\n        (*(code *)PTR_do_gold_unreachable_004323c4)(puVar9,0xade);\n        puVar14 = in_a3;\n        iVar2 = (**(code **)(puVar15 + 0x228a9c))(puVar9 + 4);\n        if (iVar2 != 0) {\n          return false;\n        }\n        piVar10 = *(int **)(puVar9 + 0x44);\n        if (piVar10 == (int *)0x0) {\n          iVar2 = *(int *)(puVar9 + 0x48);\n          piVar12[1] = *(int *)(puVar9 + 0x4c);\n          *piVar12 = iVar2;\n          uVar3 = *(undefined4 *)(puVar9 + 0x50);\n          *(undefined4 *)((int)in_a3 + 4) = *(undefined4 *)(puVar9 + 0x54);\n          *(undefined4 *)in_a3 = uVar3;\n          Position_dependent_options::default_options_.sort_common_.value =\n               *(char **)(puVar9 + 0x5c);\n          Position_dependent_options::default_options_.sort_common_._60_4_ =\n               *(undefined4 *)(puVar9 + 0x58);\n          *piStack_14 = 0;\n          piStack_14[1] = 0;\n          return true;\n        }\n        iVar2 = piVar10[8];\n        pcVar4 = *(code **)(puVar15 + 0x228dec);\n        if (-(iVar2 >> 0x1f) != 0) {\n          iVar7 = *piVar10;\n          puVar14 = (undefined8 *)piVar10[3];\n          iVar13 = piVar10[2];\n          pcVar16 = *(code **)(iVar7 + 0x10);\n          piVar12[1] = (int)puVar14;\n          *piVar12 = iVar13;\n          if (pcVar16 == pcVar4) {\n            uVar11 = (uint)(piVar10[0x26] << 7) >> 0x1f;\n          }\n          else {\n            uVar11 = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          if (uVar11 == 0) {\n            uVar17 = *(undefined8 *)piVar12;\n          }\n          else if (*(code **)(iVar7 + 0x14) == *(code **)(puVar15 + 0x22a2a4)) {\n            if (-1 < piVar10[0x26] << 7) goto LAB_0020a2c0;\n            uVar17 = *(undefined8 *)(piVar10 + 0xe);\n          }\n          else {\n            uVar17 = (**(code **)(iVar7 + 0x14))();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          pcVar16 = *(code **)(iVar7 + 0xc);\n          pcVar4 = *(code **)(puVar15 + 0x228df4);\n          *in_a3 = uVar17;\n          if (pcVar16 == pcVar4) {\n            Position_dependent_options::default_options_.sort_common_._60_8_ =\n                 *(undefined8 *)(piVar10 + 10);\n          }\n          else {\n            Position_dependent_options::default_options_.sort_common_._60_8_ = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n          }\n          iVar7 = piVar10[5];\n          *piStack_14 = piVar10[4];\n          piStack_14[1] = iVar7;\n          return SUB41(-(iVar2 >> 0x1f),0);\n        }\n        (**(code **)(puVar15 + 0x228310))\n                  (*(int *)(puVar15 + 0x228300) + -0x4fe0,0xc5,\n                   *(int *)(puVar15 + 0x2281b8) + -0x5328);\nLAB_0020a2c0:\n        iVar2 = *(int *)(puVar15 + 0x228300) + -0x4fe0;\n        (**(code **)(puVar15 + 0x228310))();\n        uVar11 = *(uint *)(iVar2 + 0x18);\n        if (uVar11 != 0) {\n          bVar5 = true;\n          do {\n            uVar8 = -uVar11 & uVar11;\n            if (uVar8 == 2) {\n              if (((uint)puVar14 & 1) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 < 3) {\n              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }\n            uVar11 = uVar11 & uVar11 - 1;\n          } while (uVar11 != 0);\n          return bVar5;\n        }\n        return false;\n      }\n      if (this->constraint_ == CONSTRAINT_ONLY_IF_RO) goto LAB_0020a00c;\n    }\n  }\n  return false;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_section_definition::" identifier : : identifier : :) (function_declarator "alternate_constraint\n          (Output_section_definition *this,Output_section_definition *posd,\n          Section_constraint constraint)" identifier (parameter_list "(Output_section_definition *this,Output_section_definition *posd,\n          Section_constraint constraint)" ( (parameter_declaration "Output_section_definition *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_section_definition *posd" type_identifier (pointer_declarator "*posd" * identifier)) , (parameter_declaration "Section_constraint constraint" type_identifier identifier) ))) (compound_statement "{\n  size_type sVar1;\n  int iVar2;\n  undefined4 uVar3;\n  code *pcVar4;\n  bool bVar5;\n  Output_section *pOVar6;\n  int iVar7;\n  uint uVar8;\n  undefined *puVar9;\n  int *piVar10;\n  uint uVar11;\n  int *piVar12;\n  int iVar13;\n  undefined8 *in_a3;\n  undefined8 *puVar14;\n  undefined *puVar15;\n  code *pcVar16;\n  undefined8 uVar17;\n  uint uStack_44;\n  int *piStack_14;\n  \n  sVar1 = (this->name_)._M_string_length;\n  if (sVar1 != (posd->name_)._M_string_length) {\n    return false;\n  }\n  if ((sVar1 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        ((this->name_)._M_dataplus._M_p,(posd->name_)._M_dataplus._M_p,sVar1),\n     iVar2 == 0)) {\n    if (constraint == CONSTRAINT_ONLY_IF_RO) {\n      if (this->constraint_ == CONSTRAINT_ONLY_IF_RW) {\nLAB_0020a00c:\n        if (this->output_section_ != (Output_section *)0x0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s__0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar5 = this->is_relro_;\n        this->output_section_ = posd->output_section_;\n        posd->output_section_ = (Output_section *)0x0;\n        pOVar6 = this->output_section_;\n        if (bVar5 != false) {\n          *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff | 0x40000;\n          return bVar5;\n        }\n        *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff;\n        return true;\n      }\n    }\n    else {\n      if (constraint != CONSTRAINT_ONLY_IF_RW) {\n        piVar12 = (int *)(PTR_s__0043226c + -0x5390);\n        puVar9 = PTR_s__0043226c + -0x5d54;\n        puVar15 = PTR_do_gold_unreachable_004323c4;\n        (*(code *)PTR_do_gold_unreachable_004323c4)(puVar9,0xade);\n        puVar14 = in_a3;\n        iVar2 = (**(code **)(puVar15 + 0x228a9c))(puVar9 + 4);\n        if (iVar2 != 0) {\n          return false;\n        }\n        piVar10 = *(int **)(puVar9 + 0x44);\n        if (piVar10 == (int *)0x0) {\n          iVar2 = *(int *)(puVar9 + 0x48);\n          piVar12[1] = *(int *)(puVar9 + 0x4c);\n          *piVar12 = iVar2;\n          uVar3 = *(undefined4 *)(puVar9 + 0x50);\n          *(undefined4 *)((int)in_a3 + 4) = *(undefined4 *)(puVar9 + 0x54);\n          *(undefined4 *)in_a3 = uVar3;\n          Position_dependent_options::default_options_.sort_common_.value =\n               *(char **)(puVar9 + 0x5c);\n          Position_dependent_options::default_options_.sort_common_._60_4_ =\n               *(undefined4 *)(puVar9 + 0x58);\n          *piStack_14 = 0;\n          piStack_14[1] = 0;\n          return true;\n        }\n        iVar2 = piVar10[8];\n        pcVar4 = *(code **)(puVar15 + 0x228dec);\n        if (-(iVar2 >> 0x1f) != 0) {\n          iVar7 = *piVar10;\n          puVar14 = (undefined8 *)piVar10[3];\n          iVar13 = piVar10[2];\n          pcVar16 = *(code **)(iVar7 + 0x10);\n          piVar12[1] = (int)puVar14;\n          *piVar12 = iVar13;\n          if (pcVar16 == pcVar4) {\n            uVar11 = (uint)(piVar10[0x26] << 7) >> 0x1f;\n          }\n          else {\n            uVar11 = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          if (uVar11 == 0) {\n            uVar17 = *(undefined8 *)piVar12;\n          }\n          else if (*(code **)(iVar7 + 0x14) == *(code **)(puVar15 + 0x22a2a4)) {\n            if (-1 < piVar10[0x26] << 7) goto LAB_0020a2c0;\n            uVar17 = *(undefined8 *)(piVar10 + 0xe);\n          }\n          else {\n            uVar17 = (**(code **)(iVar7 + 0x14))();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          pcVar16 = *(code **)(iVar7 + 0xc);\n          pcVar4 = *(code **)(puVar15 + 0x228df4);\n          *in_a3 = uVar17;\n          if (pcVar16 == pcVar4) {\n            Position_dependent_options::default_options_.sort_common_._60_8_ =\n                 *(undefined8 *)(piVar10 + 10);\n          }\n          else {\n            Position_dependent_options::default_options_.sort_common_._60_8_ = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n          }\n          iVar7 = piVar10[5];\n          *piStack_14 = piVar10[4];\n          piStack_14[1] = iVar7;\n          return SUB41(-(iVar2 >> 0x1f),0);\n        }\n        (**(code **)(puVar15 + 0x228310))\n                  (*(int *)(puVar15 + 0x228300) + -0x4fe0,0xc5,\n                   *(int *)(puVar15 + 0x2281b8) + -0x5328);\nLAB_0020a2c0:\n        iVar2 = *(int *)(puVar15 + 0x228300) + -0x4fe0;\n        (**(code **)(puVar15 + 0x228310))();\n        uVar11 = *(uint *)(iVar2 + 0x18);\n        if (uVar11 != 0) {\n          bVar5 = true;\n          do {\n            uVar8 = -uVar11 & uVar11;\n            if (uVar8 == 2) {\n              if (((uint)puVar14 & 1) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 < 3) {\n              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }\n            uVar11 = uVar11 & uVar11 - 1;\n          } while (uVar11 != 0);\n          return bVar5;\n        }\n        return false;\n      }\n      if (this->constraint_ == CONSTRAINT_ONLY_IF_RO) goto LAB_0020a00c;\n    }\n  }\n  return false;\n}" { (declaration "size_type sVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "Output_section *pOVar6;" type_identifier (pointer_declarator "*pOVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "undefined8 *in_a3;" type_identifier (pointer_declarator "*in_a3" * identifier) ;) (declaration "undefined8 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "code *pcVar16;" type_identifier (pointer_declarator "*pcVar16" * identifier) ;) (declaration "undefined8 uVar17;" type_identifier identifier ;) (declaration "uint uStack_44;" type_identifier identifier ;) (declaration "int *piStack_14;" primitive_type (pointer_declarator "*piStack_14" * identifier) ;) (expression_statement "sVar1 = (this->name_)._M_string_length;" (assignment_expression "sVar1 = (this->name_)._M_string_length" identifier = (field_expression "(this->name_)._M_string_length" (parenthesized_expression "(this->name_)" ( (field_expression "this->name_" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (sVar1 != (posd->name_)._M_string_length) {\n    return false;\n  }" if (parenthesized_expression "(sVar1 != (posd->name_)._M_string_length)" ( (binary_expression "sVar1 != (posd->name_)._M_string_length" identifier != (field_expression "(posd->name_)._M_string_length" (parenthesized_expression "(posd->name_)" ( (field_expression "posd->name_" identifier -> field_identifier) )) . field_identifier)) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (if_statement "if ((sVar1 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        ((this->name_)._M_dataplus._M_p,(posd->name_)._M_dataplus._M_p,sVar1),\n     iVar2 == 0)) {\n    if (constraint == CONSTRAINT_ONLY_IF_RO) {\n      if (this->constraint_ == CONSTRAINT_ONLY_IF_RW) {\nLAB_0020a00c:\n        if (this->output_section_ != (Output_section *)0x0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s__0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar5 = this->is_relro_;\n        this->output_section_ = posd->output_section_;\n        posd->output_section_ = (Output_section *)0x0;\n        pOVar6 = this->output_section_;\n        if (bVar5 != false) {\n          *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff | 0x40000;\n          return bVar5;\n        }\n        *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff;\n        return true;\n      }\n    }\n    else {\n      if (constraint != CONSTRAINT_ONLY_IF_RW) {\n        piVar12 = (int *)(PTR_s__0043226c + -0x5390);\n        puVar9 = PTR_s__0043226c + -0x5d54;\n        puVar15 = PTR_do_gold_unreachable_004323c4;\n        (*(code *)PTR_do_gold_unreachable_004323c4)(puVar9,0xade);\n        puVar14 = in_a3;\n        iVar2 = (**(code **)(puVar15 + 0x228a9c))(puVar9 + 4);\n        if (iVar2 != 0) {\n          return false;\n        }\n        piVar10 = *(int **)(puVar9 + 0x44);\n        if (piVar10 == (int *)0x0) {\n          iVar2 = *(int *)(puVar9 + 0x48);\n          piVar12[1] = *(int *)(puVar9 + 0x4c);\n          *piVar12 = iVar2;\n          uVar3 = *(undefined4 *)(puVar9 + 0x50);\n          *(undefined4 *)((int)in_a3 + 4) = *(undefined4 *)(puVar9 + 0x54);\n          *(undefined4 *)in_a3 = uVar3;\n          Position_dependent_options::default_options_.sort_common_.value =\n               *(char **)(puVar9 + 0x5c);\n          Position_dependent_options::default_options_.sort_common_._60_4_ =\n               *(undefined4 *)(puVar9 + 0x58);\n          *piStack_14 = 0;\n          piStack_14[1] = 0;\n          return true;\n        }\n        iVar2 = piVar10[8];\n        pcVar4 = *(code **)(puVar15 + 0x228dec);\n        if (-(iVar2 >> 0x1f) != 0) {\n          iVar7 = *piVar10;\n          puVar14 = (undefined8 *)piVar10[3];\n          iVar13 = piVar10[2];\n          pcVar16 = *(code **)(iVar7 + 0x10);\n          piVar12[1] = (int)puVar14;\n          *piVar12 = iVar13;\n          if (pcVar16 == pcVar4) {\n            uVar11 = (uint)(piVar10[0x26] << 7) >> 0x1f;\n          }\n          else {\n            uVar11 = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          if (uVar11 == 0) {\n            uVar17 = *(undefined8 *)piVar12;\n          }\n          else if (*(code **)(iVar7 + 0x14) == *(code **)(puVar15 + 0x22a2a4)) {\n            if (-1 < piVar10[0x26] << 7) goto LAB_0020a2c0;\n            uVar17 = *(undefined8 *)(piVar10 + 0xe);\n          }\n          else {\n            uVar17 = (**(code **)(iVar7 + 0x14))();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          pcVar16 = *(code **)(iVar7 + 0xc);\n          pcVar4 = *(code **)(puVar15 + 0x228df4);\n          *in_a3 = uVar17;\n          if (pcVar16 == pcVar4) {\n            Position_dependent_options::default_options_.sort_common_._60_8_ =\n                 *(undefined8 *)(piVar10 + 10);\n          }\n          else {\n            Position_dependent_options::default_options_.sort_common_._60_8_ = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n          }\n          iVar7 = piVar10[5];\n          *piStack_14 = piVar10[4];\n          piStack_14[1] = iVar7;\n          return SUB41(-(iVar2 >> 0x1f),0);\n        }\n        (**(code **)(puVar15 + 0x228310))\n                  (*(int *)(puVar15 + 0x228300) + -0x4fe0,0xc5,\n                   *(int *)(puVar15 + 0x2281b8) + -0x5328);\nLAB_0020a2c0:\n        iVar2 = *(int *)(puVar15 + 0x228300) + -0x4fe0;\n        (**(code **)(puVar15 + 0x228310))();\n        uVar11 = *(uint *)(iVar2 + 0x18);\n        if (uVar11 != 0) {\n          bVar5 = true;\n          do {\n            uVar8 = -uVar11 & uVar11;\n            if (uVar8 == 2) {\n              if (((uint)puVar14 & 1) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 < 3) {\n              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }\n            uVar11 = uVar11 & uVar11 - 1;\n          } while (uVar11 != 0);\n          return bVar5;\n        }\n        return false;\n      }\n      if (this->constraint_ == CONSTRAINT_ONLY_IF_RO) goto LAB_0020a00c;\n    }\n  }" if (parenthesized_expression "((sVar1 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        ((this->name_)._M_dataplus._M_p,(posd->name_)._M_dataplus._M_p,sVar1),\n     iVar2 == 0))" ( (binary_expression "(sVar1 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        ((this->name_)._M_dataplus._M_p,(posd->name_)._M_dataplus._M_p,sVar1),\n     iVar2 == 0)" (parenthesized_expression "(sVar1 == 0)" ( (binary_expression "sVar1 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        ((this->name_)._M_dataplus._M_p,(posd->name_)._M_dataplus._M_p,sVar1),\n     iVar2 == 0)" ( (comma_expression "iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        ((this->name_)._M_dataplus._M_p,(posd->name_)._M_dataplus._M_p,sVar1),\n     iVar2 == 0" (assignment_expression "iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        ((this->name_)._M_dataplus._M_p,(posd->name_)._M_dataplus._M_p,sVar1)" identifier = (call_expression "(*(code *)PTR_memcmp_004368dc)\n                        ((this->name_)._M_dataplus._M_p,(posd->name_)._M_dataplus._M_p,sVar1)" (parenthesized_expression "(*(code *)PTR_memcmp_004368dc)" ( (pointer_expression "*(code *)PTR_memcmp_004368dc" * (cast_expression "(code *)PTR_memcmp_004368dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((this->name_)._M_dataplus._M_p,(posd->name_)._M_dataplus._M_p,sVar1)" ( (field_expression "(this->name_)._M_dataplus._M_p" (field_expression "(this->name_)._M_dataplus" (parenthesized_expression "(this->name_)" ( (field_expression "this->name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) , (field_expression "(posd->name_)._M_dataplus._M_p" (field_expression "(posd->name_)._M_dataplus" (parenthesized_expression "(posd->name_)" ( (field_expression "posd->name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) , identifier )))) , (binary_expression "iVar2 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    if (constraint == CONSTRAINT_ONLY_IF_RO) {\n      if (this->constraint_ == CONSTRAINT_ONLY_IF_RW) {\nLAB_0020a00c:\n        if (this->output_section_ != (Output_section *)0x0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s__0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar5 = this->is_relro_;\n        this->output_section_ = posd->output_section_;\n        posd->output_section_ = (Output_section *)0x0;\n        pOVar6 = this->output_section_;\n        if (bVar5 != false) {\n          *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff | 0x40000;\n          return bVar5;\n        }\n        *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff;\n        return true;\n      }\n    }\n    else {\n      if (constraint != CONSTRAINT_ONLY_IF_RW) {\n        piVar12 = (int *)(PTR_s__0043226c + -0x5390);\n        puVar9 = PTR_s__0043226c + -0x5d54;\n        puVar15 = PTR_do_gold_unreachable_004323c4;\n        (*(code *)PTR_do_gold_unreachable_004323c4)(puVar9,0xade);\n        puVar14 = in_a3;\n        iVar2 = (**(code **)(puVar15 + 0x228a9c))(puVar9 + 4);\n        if (iVar2 != 0) {\n          return false;\n        }\n        piVar10 = *(int **)(puVar9 + 0x44);\n        if (piVar10 == (int *)0x0) {\n          iVar2 = *(int *)(puVar9 + 0x48);\n          piVar12[1] = *(int *)(puVar9 + 0x4c);\n          *piVar12 = iVar2;\n          uVar3 = *(undefined4 *)(puVar9 + 0x50);\n          *(undefined4 *)((int)in_a3 + 4) = *(undefined4 *)(puVar9 + 0x54);\n          *(undefined4 *)in_a3 = uVar3;\n          Position_dependent_options::default_options_.sort_common_.value =\n               *(char **)(puVar9 + 0x5c);\n          Position_dependent_options::default_options_.sort_common_._60_4_ =\n               *(undefined4 *)(puVar9 + 0x58);\n          *piStack_14 = 0;\n          piStack_14[1] = 0;\n          return true;\n        }\n        iVar2 = piVar10[8];\n        pcVar4 = *(code **)(puVar15 + 0x228dec);\n        if (-(iVar2 >> 0x1f) != 0) {\n          iVar7 = *piVar10;\n          puVar14 = (undefined8 *)piVar10[3];\n          iVar13 = piVar10[2];\n          pcVar16 = *(code **)(iVar7 + 0x10);\n          piVar12[1] = (int)puVar14;\n          *piVar12 = iVar13;\n          if (pcVar16 == pcVar4) {\n            uVar11 = (uint)(piVar10[0x26] << 7) >> 0x1f;\n          }\n          else {\n            uVar11 = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          if (uVar11 == 0) {\n            uVar17 = *(undefined8 *)piVar12;\n          }\n          else if (*(code **)(iVar7 + 0x14) == *(code **)(puVar15 + 0x22a2a4)) {\n            if (-1 < piVar10[0x26] << 7) goto LAB_0020a2c0;\n            uVar17 = *(undefined8 *)(piVar10 + 0xe);\n          }\n          else {\n            uVar17 = (**(code **)(iVar7 + 0x14))();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          pcVar16 = *(code **)(iVar7 + 0xc);\n          pcVar4 = *(code **)(puVar15 + 0x228df4);\n          *in_a3 = uVar17;\n          if (pcVar16 == pcVar4) {\n            Position_dependent_options::default_options_.sort_common_._60_8_ =\n                 *(undefined8 *)(piVar10 + 10);\n          }\n          else {\n            Position_dependent_options::default_options_.sort_common_._60_8_ = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n          }\n          iVar7 = piVar10[5];\n          *piStack_14 = piVar10[4];\n          piStack_14[1] = iVar7;\n          return SUB41(-(iVar2 >> 0x1f),0);\n        }\n        (**(code **)(puVar15 + 0x228310))\n                  (*(int *)(puVar15 + 0x228300) + -0x4fe0,0xc5,\n                   *(int *)(puVar15 + 0x2281b8) + -0x5328);\nLAB_0020a2c0:\n        iVar2 = *(int *)(puVar15 + 0x228300) + -0x4fe0;\n        (**(code **)(puVar15 + 0x228310))();\n        uVar11 = *(uint *)(iVar2 + 0x18);\n        if (uVar11 != 0) {\n          bVar5 = true;\n          do {\n            uVar8 = -uVar11 & uVar11;\n            if (uVar8 == 2) {\n              if (((uint)puVar14 & 1) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 < 3) {\n              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }\n            uVar11 = uVar11 & uVar11 - 1;\n          } while (uVar11 != 0);\n          return bVar5;\n        }\n        return false;\n      }\n      if (this->constraint_ == CONSTRAINT_ONLY_IF_RO) goto LAB_0020a00c;\n    }\n  }" { (if_statement "if (constraint == CONSTRAINT_ONLY_IF_RO) {\n      if (this->constraint_ == CONSTRAINT_ONLY_IF_RW) {\nLAB_0020a00c:\n        if (this->output_section_ != (Output_section *)0x0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s__0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar5 = this->is_relro_;\n        this->output_section_ = posd->output_section_;\n        posd->output_section_ = (Output_section *)0x0;\n        pOVar6 = this->output_section_;\n        if (bVar5 != false) {\n          *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff | 0x40000;\n          return bVar5;\n        }\n        *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff;\n        return true;\n      }\n    }\n    else {\n      if (constraint != CONSTRAINT_ONLY_IF_RW) {\n        piVar12 = (int *)(PTR_s__0043226c + -0x5390);\n        puVar9 = PTR_s__0043226c + -0x5d54;\n        puVar15 = PTR_do_gold_unreachable_004323c4;\n        (*(code *)PTR_do_gold_unreachable_004323c4)(puVar9,0xade);\n        puVar14 = in_a3;\n        iVar2 = (**(code **)(puVar15 + 0x228a9c))(puVar9 + 4);\n        if (iVar2 != 0) {\n          return false;\n        }\n        piVar10 = *(int **)(puVar9 + 0x44);\n        if (piVar10 == (int *)0x0) {\n          iVar2 = *(int *)(puVar9 + 0x48);\n          piVar12[1] = *(int *)(puVar9 + 0x4c);\n          *piVar12 = iVar2;\n          uVar3 = *(undefined4 *)(puVar9 + 0x50);\n          *(undefined4 *)((int)in_a3 + 4) = *(undefined4 *)(puVar9 + 0x54);\n          *(undefined4 *)in_a3 = uVar3;\n          Position_dependent_options::default_options_.sort_common_.value =\n               *(char **)(puVar9 + 0x5c);\n          Position_dependent_options::default_options_.sort_common_._60_4_ =\n               *(undefined4 *)(puVar9 + 0x58);\n          *piStack_14 = 0;\n          piStack_14[1] = 0;\n          return true;\n        }\n        iVar2 = piVar10[8];\n        pcVar4 = *(code **)(puVar15 + 0x228dec);\n        if (-(iVar2 >> 0x1f) != 0) {\n          iVar7 = *piVar10;\n          puVar14 = (undefined8 *)piVar10[3];\n          iVar13 = piVar10[2];\n          pcVar16 = *(code **)(iVar7 + 0x10);\n          piVar12[1] = (int)puVar14;\n          *piVar12 = iVar13;\n          if (pcVar16 == pcVar4) {\n            uVar11 = (uint)(piVar10[0x26] << 7) >> 0x1f;\n          }\n          else {\n            uVar11 = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          if (uVar11 == 0) {\n            uVar17 = *(undefined8 *)piVar12;\n          }\n          else if (*(code **)(iVar7 + 0x14) == *(code **)(puVar15 + 0x22a2a4)) {\n            if (-1 < piVar10[0x26] << 7) goto LAB_0020a2c0;\n            uVar17 = *(undefined8 *)(piVar10 + 0xe);\n          }\n          else {\n            uVar17 = (**(code **)(iVar7 + 0x14))();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          pcVar16 = *(code **)(iVar7 + 0xc);\n          pcVar4 = *(code **)(puVar15 + 0x228df4);\n          *in_a3 = uVar17;\n          if (pcVar16 == pcVar4) {\n            Position_dependent_options::default_options_.sort_common_._60_8_ =\n                 *(undefined8 *)(piVar10 + 10);\n          }\n          else {\n            Position_dependent_options::default_options_.sort_common_._60_8_ = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n          }\n          iVar7 = piVar10[5];\n          *piStack_14 = piVar10[4];\n          piStack_14[1] = iVar7;\n          return SUB41(-(iVar2 >> 0x1f),0);\n        }\n        (**(code **)(puVar15 + 0x228310))\n                  (*(int *)(puVar15 + 0x228300) + -0x4fe0,0xc5,\n                   *(int *)(puVar15 + 0x2281b8) + -0x5328);\nLAB_0020a2c0:\n        iVar2 = *(int *)(puVar15 + 0x228300) + -0x4fe0;\n        (**(code **)(puVar15 + 0x228310))();\n        uVar11 = *(uint *)(iVar2 + 0x18);\n        if (uVar11 != 0) {\n          bVar5 = true;\n          do {\n            uVar8 = -uVar11 & uVar11;\n            if (uVar8 == 2) {\n              if (((uint)puVar14 & 1) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 < 3) {\n              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }\n            uVar11 = uVar11 & uVar11 - 1;\n          } while (uVar11 != 0);\n          return bVar5;\n        }\n        return false;\n      }\n      if (this->constraint_ == CONSTRAINT_ONLY_IF_RO) goto LAB_0020a00c;\n    }" if (parenthesized_expression "(constraint == CONSTRAINT_ONLY_IF_RO)" ( (binary_expression "constraint == CONSTRAINT_ONLY_IF_RO" identifier == identifier) )) (compound_statement "{\n      if (this->constraint_ == CONSTRAINT_ONLY_IF_RW) {\nLAB_0020a00c:\n        if (this->output_section_ != (Output_section *)0x0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s__0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar5 = this->is_relro_;\n        this->output_section_ = posd->output_section_;\n        posd->output_section_ = (Output_section *)0x0;\n        pOVar6 = this->output_section_;\n        if (bVar5 != false) {\n          *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff | 0x40000;\n          return bVar5;\n        }\n        *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff;\n        return true;\n      }\n    }" { (if_statement "if (this->constraint_ == CONSTRAINT_ONLY_IF_RW) {\nLAB_0020a00c:\n        if (this->output_section_ != (Output_section *)0x0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s__0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar5 = this->is_relro_;\n        this->output_section_ = posd->output_section_;\n        posd->output_section_ = (Output_section *)0x0;\n        pOVar6 = this->output_section_;\n        if (bVar5 != false) {\n          *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff | 0x40000;\n          return bVar5;\n        }\n        *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff;\n        return true;\n      }" if (parenthesized_expression "(this->constraint_ == CONSTRAINT_ONLY_IF_RW)" ( (binary_expression "this->constraint_ == CONSTRAINT_ONLY_IF_RW" (field_expression "this->constraint_" identifier -> field_identifier) == identifier) )) (compound_statement "{\nLAB_0020a00c:\n        if (this->output_section_ != (Output_section *)0x0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s__0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar5 = this->is_relro_;\n        this->output_section_ = posd->output_section_;\n        posd->output_section_ = (Output_section *)0x0;\n        pOVar6 = this->output_section_;\n        if (bVar5 != false) {\n          *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff | 0x40000;\n          return bVar5;\n        }\n        *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff;\n        return true;\n      }" { (labeled_statement "LAB_0020a00c:\n        if (this->output_section_ != (Output_section *)0x0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s__0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }" statement_identifier : (if_statement "if (this->output_section_ != (Output_section *)0x0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s__0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }" if (parenthesized_expression "(this->output_section_ != (Output_section *)0x0)" ( (binary_expression "this->output_section_ != (Output_section *)0x0" (field_expression "this->output_section_" identifier -> field_identifier) != (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s__0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }" { (expression_statement "uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s__0043226c + -0x5c28);" (assignment_expression "uVar3 = (*(code *)PTR_gettext_00436818)(PTR_s__0043226c + -0x5c28)" identifier = (call_expression "(*(code *)PTR_gettext_00436818)(PTR_s__0043226c + -0x5c28)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" ( (pointer_expression "*(code *)PTR_gettext_00436818" * (cast_expression "(code *)PTR_gettext_00436818" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s__0043226c + -0x5c28)" ( (binary_expression "PTR_s__0043226c + -0x5c28" identifier + number_literal) )))) ;) (expression_statement "(*(code *)PTR_gold_error_00432d84)(uVar3);" (call_expression "(*(code *)PTR_gold_error_00432d84)(uVar3)" (parenthesized_expression "(*(code *)PTR_gold_error_00432d84)" ( (pointer_expression "*(code *)PTR_gold_error_00432d84" * (cast_expression "(code *)PTR_gold_error_00432d84" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar3)" ( identifier ))) ;) }))) (expression_statement "bVar5 = this->is_relro_;" (assignment_expression "bVar5 = this->is_relro_" identifier = (field_expression "this->is_relro_" identifier -> field_identifier)) ;) (expression_statement "this->output_section_ = posd->output_section_;" (assignment_expression "this->output_section_ = posd->output_section_" (field_expression "this->output_section_" identifier -> field_identifier) = (field_expression "posd->output_section_" identifier -> field_identifier)) ;) (expression_statement "posd->output_section_ = (Output_section *)0x0;" (assignment_expression "posd->output_section_ = (Output_section *)0x0" (field_expression "posd->output_section_" identifier -> field_identifier) = (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pOVar6 = this->output_section_;" (assignment_expression "pOVar6 = this->output_section_" identifier = (field_expression "this->output_section_" identifier -> field_identifier)) ;) (if_statement "if (bVar5 != false) {\n          *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff | 0x40000;\n          return bVar5;\n        }" if (parenthesized_expression "(bVar5 != false)" ( (binary_expression "bVar5 != false" identifier != false) )) (compound_statement "{\n          *(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff | 0x40000;\n          return bVar5;\n        }" { (expression_statement "*(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff | 0x40000;" (assignment_expression "*(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff | 0x40000" (pointer_expression "*(uint *)&pOVar6->field_0x98" * (cast_expression "(uint *)&pOVar6->field_0x98" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar6->field_0x98" & (field_expression "pOVar6->field_0x98" identifier -> field_identifier)))) = (binary_expression "*(uint *)&pOVar6->field_0x98 & 0xfffbffff | 0x40000" (binary_expression "*(uint *)&pOVar6->field_0x98 & 0xfffbffff" (pointer_expression "*(uint *)&pOVar6->field_0x98" * (cast_expression "(uint *)&pOVar6->field_0x98" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar6->field_0x98" & (field_expression "pOVar6->field_0x98" identifier -> field_identifier)))) & number_literal) | number_literal)) ;) (return_statement "return bVar5;" return identifier ;) })) (expression_statement "*(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff;" (assignment_expression "*(uint *)&pOVar6->field_0x98 = *(uint *)&pOVar6->field_0x98 & 0xfffbffff" (pointer_expression "*(uint *)&pOVar6->field_0x98" * (cast_expression "(uint *)&pOVar6->field_0x98" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar6->field_0x98" & (field_expression "pOVar6->field_0x98" identifier -> field_identifier)))) = (binary_expression "*(uint *)&pOVar6->field_0x98 & 0xfffbffff" (pointer_expression "*(uint *)&pOVar6->field_0x98" * (cast_expression "(uint *)&pOVar6->field_0x98" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pOVar6->field_0x98" & (field_expression "pOVar6->field_0x98" identifier -> field_identifier)))) & number_literal)) ;) (return_statement "return true;" return true ;) })) }) (else_clause "else {\n      if (constraint != CONSTRAINT_ONLY_IF_RW) {\n        piVar12 = (int *)(PTR_s__0043226c + -0x5390);\n        puVar9 = PTR_s__0043226c + -0x5d54;\n        puVar15 = PTR_do_gold_unreachable_004323c4;\n        (*(code *)PTR_do_gold_unreachable_004323c4)(puVar9,0xade);\n        puVar14 = in_a3;\n        iVar2 = (**(code **)(puVar15 + 0x228a9c))(puVar9 + 4);\n        if (iVar2 != 0) {\n          return false;\n        }\n        piVar10 = *(int **)(puVar9 + 0x44);\n        if (piVar10 == (int *)0x0) {\n          iVar2 = *(int *)(puVar9 + 0x48);\n          piVar12[1] = *(int *)(puVar9 + 0x4c);\n          *piVar12 = iVar2;\n          uVar3 = *(undefined4 *)(puVar9 + 0x50);\n          *(undefined4 *)((int)in_a3 + 4) = *(undefined4 *)(puVar9 + 0x54);\n          *(undefined4 *)in_a3 = uVar3;\n          Position_dependent_options::default_options_.sort_common_.value =\n               *(char **)(puVar9 + 0x5c);\n          Position_dependent_options::default_options_.sort_common_._60_4_ =\n               *(undefined4 *)(puVar9 + 0x58);\n          *piStack_14 = 0;\n          piStack_14[1] = 0;\n          return true;\n        }\n        iVar2 = piVar10[8];\n        pcVar4 = *(code **)(puVar15 + 0x228dec);\n        if (-(iVar2 >> 0x1f) != 0) {\n          iVar7 = *piVar10;\n          puVar14 = (undefined8 *)piVar10[3];\n          iVar13 = piVar10[2];\n          pcVar16 = *(code **)(iVar7 + 0x10);\n          piVar12[1] = (int)puVar14;\n          *piVar12 = iVar13;\n          if (pcVar16 == pcVar4) {\n            uVar11 = (uint)(piVar10[0x26] << 7) >> 0x1f;\n          }\n          else {\n            uVar11 = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          if (uVar11 == 0) {\n            uVar17 = *(undefined8 *)piVar12;\n          }\n          else if (*(code **)(iVar7 + 0x14) == *(code **)(puVar15 + 0x22a2a4)) {\n            if (-1 < piVar10[0x26] << 7) goto LAB_0020a2c0;\n            uVar17 = *(undefined8 *)(piVar10 + 0xe);\n          }\n          else {\n            uVar17 = (**(code **)(iVar7 + 0x14))();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          pcVar16 = *(code **)(iVar7 + 0xc);\n          pcVar4 = *(code **)(puVar15 + 0x228df4);\n          *in_a3 = uVar17;\n          if (pcVar16 == pcVar4) {\n            Position_dependent_options::default_options_.sort_common_._60_8_ =\n                 *(undefined8 *)(piVar10 + 10);\n          }\n          else {\n            Position_dependent_options::default_options_.sort_common_._60_8_ = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n          }\n          iVar7 = piVar10[5];\n          *piStack_14 = piVar10[4];\n          piStack_14[1] = iVar7;\n          return SUB41(-(iVar2 >> 0x1f),0);\n        }\n        (**(code **)(puVar15 + 0x228310))\n                  (*(int *)(puVar15 + 0x228300) + -0x4fe0,0xc5,\n                   *(int *)(puVar15 + 0x2281b8) + -0x5328);\nLAB_0020a2c0:\n        iVar2 = *(int *)(puVar15 + 0x228300) + -0x4fe0;\n        (**(code **)(puVar15 + 0x228310))();\n        uVar11 = *(uint *)(iVar2 + 0x18);\n        if (uVar11 != 0) {\n          bVar5 = true;\n          do {\n            uVar8 = -uVar11 & uVar11;\n            if (uVar8 == 2) {\n              if (((uint)puVar14 & 1) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 < 3) {\n              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }\n            uVar11 = uVar11 & uVar11 - 1;\n          } while (uVar11 != 0);\n          return bVar5;\n        }\n        return false;\n      }\n      if (this->constraint_ == CONSTRAINT_ONLY_IF_RO) goto LAB_0020a00c;\n    }" else (compound_statement "{\n      if (constraint != CONSTRAINT_ONLY_IF_RW) {\n        piVar12 = (int *)(PTR_s__0043226c + -0x5390);\n        puVar9 = PTR_s__0043226c + -0x5d54;\n        puVar15 = PTR_do_gold_unreachable_004323c4;\n        (*(code *)PTR_do_gold_unreachable_004323c4)(puVar9,0xade);\n        puVar14 = in_a3;\n        iVar2 = (**(code **)(puVar15 + 0x228a9c))(puVar9 + 4);\n        if (iVar2 != 0) {\n          return false;\n        }\n        piVar10 = *(int **)(puVar9 + 0x44);\n        if (piVar10 == (int *)0x0) {\n          iVar2 = *(int *)(puVar9 + 0x48);\n          piVar12[1] = *(int *)(puVar9 + 0x4c);\n          *piVar12 = iVar2;\n          uVar3 = *(undefined4 *)(puVar9 + 0x50);\n          *(undefined4 *)((int)in_a3 + 4) = *(undefined4 *)(puVar9 + 0x54);\n          *(undefined4 *)in_a3 = uVar3;\n          Position_dependent_options::default_options_.sort_common_.value =\n               *(char **)(puVar9 + 0x5c);\n          Position_dependent_options::default_options_.sort_common_._60_4_ =\n               *(undefined4 *)(puVar9 + 0x58);\n          *piStack_14 = 0;\n          piStack_14[1] = 0;\n          return true;\n        }\n        iVar2 = piVar10[8];\n        pcVar4 = *(code **)(puVar15 + 0x228dec);\n        if (-(iVar2 >> 0x1f) != 0) {\n          iVar7 = *piVar10;\n          puVar14 = (undefined8 *)piVar10[3];\n          iVar13 = piVar10[2];\n          pcVar16 = *(code **)(iVar7 + 0x10);\n          piVar12[1] = (int)puVar14;\n          *piVar12 = iVar13;\n          if (pcVar16 == pcVar4) {\n            uVar11 = (uint)(piVar10[0x26] << 7) >> 0x1f;\n          }\n          else {\n            uVar11 = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          if (uVar11 == 0) {\n            uVar17 = *(undefined8 *)piVar12;\n          }\n          else if (*(code **)(iVar7 + 0x14) == *(code **)(puVar15 + 0x22a2a4)) {\n            if (-1 < piVar10[0x26] << 7) goto LAB_0020a2c0;\n            uVar17 = *(undefined8 *)(piVar10 + 0xe);\n          }\n          else {\n            uVar17 = (**(code **)(iVar7 + 0x14))();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          pcVar16 = *(code **)(iVar7 + 0xc);\n          pcVar4 = *(code **)(puVar15 + 0x228df4);\n          *in_a3 = uVar17;\n          if (pcVar16 == pcVar4) {\n            Position_dependent_options::default_options_.sort_common_._60_8_ =\n                 *(undefined8 *)(piVar10 + 10);\n          }\n          else {\n            Position_dependent_options::default_options_.sort_common_._60_8_ = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n          }\n          iVar7 = piVar10[5];\n          *piStack_14 = piVar10[4];\n          piStack_14[1] = iVar7;\n          return SUB41(-(iVar2 >> 0x1f),0);\n        }\n        (**(code **)(puVar15 + 0x228310))\n                  (*(int *)(puVar15 + 0x228300) + -0x4fe0,0xc5,\n                   *(int *)(puVar15 + 0x2281b8) + -0x5328);\nLAB_0020a2c0:\n        iVar2 = *(int *)(puVar15 + 0x228300) + -0x4fe0;\n        (**(code **)(puVar15 + 0x228310))();\n        uVar11 = *(uint *)(iVar2 + 0x18);\n        if (uVar11 != 0) {\n          bVar5 = true;\n          do {\n            uVar8 = -uVar11 & uVar11;\n            if (uVar8 == 2) {\n              if (((uint)puVar14 & 1) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 < 3) {\n              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }\n            uVar11 = uVar11 & uVar11 - 1;\n          } while (uVar11 != 0);\n          return bVar5;\n        }\n        return false;\n      }\n      if (this->constraint_ == CONSTRAINT_ONLY_IF_RO) goto LAB_0020a00c;\n    }" { (if_statement "if (constraint != CONSTRAINT_ONLY_IF_RW) {\n        piVar12 = (int *)(PTR_s__0043226c + -0x5390);\n        puVar9 = PTR_s__0043226c + -0x5d54;\n        puVar15 = PTR_do_gold_unreachable_004323c4;\n        (*(code *)PTR_do_gold_unreachable_004323c4)(puVar9,0xade);\n        puVar14 = in_a3;\n        iVar2 = (**(code **)(puVar15 + 0x228a9c))(puVar9 + 4);\n        if (iVar2 != 0) {\n          return false;\n        }\n        piVar10 = *(int **)(puVar9 + 0x44);\n        if (piVar10 == (int *)0x0) {\n          iVar2 = *(int *)(puVar9 + 0x48);\n          piVar12[1] = *(int *)(puVar9 + 0x4c);\n          *piVar12 = iVar2;\n          uVar3 = *(undefined4 *)(puVar9 + 0x50);\n          *(undefined4 *)((int)in_a3 + 4) = *(undefined4 *)(puVar9 + 0x54);\n          *(undefined4 *)in_a3 = uVar3;\n          Position_dependent_options::default_options_.sort_common_.value =\n               *(char **)(puVar9 + 0x5c);\n          Position_dependent_options::default_options_.sort_common_._60_4_ =\n               *(undefined4 *)(puVar9 + 0x58);\n          *piStack_14 = 0;\n          piStack_14[1] = 0;\n          return true;\n        }\n        iVar2 = piVar10[8];\n        pcVar4 = *(code **)(puVar15 + 0x228dec);\n        if (-(iVar2 >> 0x1f) != 0) {\n          iVar7 = *piVar10;\n          puVar14 = (undefined8 *)piVar10[3];\n          iVar13 = piVar10[2];\n          pcVar16 = *(code **)(iVar7 + 0x10);\n          piVar12[1] = (int)puVar14;\n          *piVar12 = iVar13;\n          if (pcVar16 == pcVar4) {\n            uVar11 = (uint)(piVar10[0x26] << 7) >> 0x1f;\n          }\n          else {\n            uVar11 = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          if (uVar11 == 0) {\n            uVar17 = *(undefined8 *)piVar12;\n          }\n          else if (*(code **)(iVar7 + 0x14) == *(code **)(puVar15 + 0x22a2a4)) {\n            if (-1 < piVar10[0x26] << 7) goto LAB_0020a2c0;\n            uVar17 = *(undefined8 *)(piVar10 + 0xe);\n          }\n          else {\n            uVar17 = (**(code **)(iVar7 + 0x14))();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          pcVar16 = *(code **)(iVar7 + 0xc);\n          pcVar4 = *(code **)(puVar15 + 0x228df4);\n          *in_a3 = uVar17;\n          if (pcVar16 == pcVar4) {\n            Position_dependent_options::default_options_.sort_common_._60_8_ =\n                 *(undefined8 *)(piVar10 + 10);\n          }\n          else {\n            Position_dependent_options::default_options_.sort_common_._60_8_ = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n          }\n          iVar7 = piVar10[5];\n          *piStack_14 = piVar10[4];\n          piStack_14[1] = iVar7;\n          return SUB41(-(iVar2 >> 0x1f),0);\n        }\n        (**(code **)(puVar15 + 0x228310))\n                  (*(int *)(puVar15 + 0x228300) + -0x4fe0,0xc5,\n                   *(int *)(puVar15 + 0x2281b8) + -0x5328);\nLAB_0020a2c0:\n        iVar2 = *(int *)(puVar15 + 0x228300) + -0x4fe0;\n        (**(code **)(puVar15 + 0x228310))();\n        uVar11 = *(uint *)(iVar2 + 0x18);\n        if (uVar11 != 0) {\n          bVar5 = true;\n          do {\n            uVar8 = -uVar11 & uVar11;\n            if (uVar8 == 2) {\n              if (((uint)puVar14 & 1) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 < 3) {\n              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }\n            uVar11 = uVar11 & uVar11 - 1;\n          } while (uVar11 != 0);\n          return bVar5;\n        }\n        return false;\n      }" if (parenthesized_expression "(constraint != CONSTRAINT_ONLY_IF_RW)" ( (binary_expression "constraint != CONSTRAINT_ONLY_IF_RW" identifier != identifier) )) (compound_statement "{\n        piVar12 = (int *)(PTR_s__0043226c + -0x5390);\n        puVar9 = PTR_s__0043226c + -0x5d54;\n        puVar15 = PTR_do_gold_unreachable_004323c4;\n        (*(code *)PTR_do_gold_unreachable_004323c4)(puVar9,0xade);\n        puVar14 = in_a3;\n        iVar2 = (**(code **)(puVar15 + 0x228a9c))(puVar9 + 4);\n        if (iVar2 != 0) {\n          return false;\n        }\n        piVar10 = *(int **)(puVar9 + 0x44);\n        if (piVar10 == (int *)0x0) {\n          iVar2 = *(int *)(puVar9 + 0x48);\n          piVar12[1] = *(int *)(puVar9 + 0x4c);\n          *piVar12 = iVar2;\n          uVar3 = *(undefined4 *)(puVar9 + 0x50);\n          *(undefined4 *)((int)in_a3 + 4) = *(undefined4 *)(puVar9 + 0x54);\n          *(undefined4 *)in_a3 = uVar3;\n          Position_dependent_options::default_options_.sort_common_.value =\n               *(char **)(puVar9 + 0x5c);\n          Position_dependent_options::default_options_.sort_common_._60_4_ =\n               *(undefined4 *)(puVar9 + 0x58);\n          *piStack_14 = 0;\n          piStack_14[1] = 0;\n          return true;\n        }\n        iVar2 = piVar10[8];\n        pcVar4 = *(code **)(puVar15 + 0x228dec);\n        if (-(iVar2 >> 0x1f) != 0) {\n          iVar7 = *piVar10;\n          puVar14 = (undefined8 *)piVar10[3];\n          iVar13 = piVar10[2];\n          pcVar16 = *(code **)(iVar7 + 0x10);\n          piVar12[1] = (int)puVar14;\n          *piVar12 = iVar13;\n          if (pcVar16 == pcVar4) {\n            uVar11 = (uint)(piVar10[0x26] << 7) >> 0x1f;\n          }\n          else {\n            uVar11 = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          if (uVar11 == 0) {\n            uVar17 = *(undefined8 *)piVar12;\n          }\n          else if (*(code **)(iVar7 + 0x14) == *(code **)(puVar15 + 0x22a2a4)) {\n            if (-1 < piVar10[0x26] << 7) goto LAB_0020a2c0;\n            uVar17 = *(undefined8 *)(piVar10 + 0xe);\n          }\n          else {\n            uVar17 = (**(code **)(iVar7 + 0x14))();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          pcVar16 = *(code **)(iVar7 + 0xc);\n          pcVar4 = *(code **)(puVar15 + 0x228df4);\n          *in_a3 = uVar17;\n          if (pcVar16 == pcVar4) {\n            Position_dependent_options::default_options_.sort_common_._60_8_ =\n                 *(undefined8 *)(piVar10 + 10);\n          }\n          else {\n            Position_dependent_options::default_options_.sort_common_._60_8_ = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n          }\n          iVar7 = piVar10[5];\n          *piStack_14 = piVar10[4];\n          piStack_14[1] = iVar7;\n          return SUB41(-(iVar2 >> 0x1f),0);\n        }\n        (**(code **)(puVar15 + 0x228310))\n                  (*(int *)(puVar15 + 0x228300) + -0x4fe0,0xc5,\n                   *(int *)(puVar15 + 0x2281b8) + -0x5328);\nLAB_0020a2c0:\n        iVar2 = *(int *)(puVar15 + 0x228300) + -0x4fe0;\n        (**(code **)(puVar15 + 0x228310))();\n        uVar11 = *(uint *)(iVar2 + 0x18);\n        if (uVar11 != 0) {\n          bVar5 = true;\n          do {\n            uVar8 = -uVar11 & uVar11;\n            if (uVar8 == 2) {\n              if (((uint)puVar14 & 1) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 < 3) {\n              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }\n            uVar11 = uVar11 & uVar11 - 1;\n          } while (uVar11 != 0);\n          return bVar5;\n        }\n        return false;\n      }" { (expression_statement "piVar12 = (int *)(PTR_s__0043226c + -0x5390);" (assignment_expression "piVar12 = (int *)(PTR_s__0043226c + -0x5390)" identifier = (cast_expression "(int *)(PTR_s__0043226c + -0x5390)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s__0043226c + -0x5390)" ( (binary_expression "PTR_s__0043226c + -0x5390" identifier + number_literal) )))) ;) (expression_statement "puVar9 = PTR_s__0043226c + -0x5d54;" (assignment_expression "puVar9 = PTR_s__0043226c + -0x5d54" identifier = (binary_expression "PTR_s__0043226c + -0x5d54" identifier + number_literal)) ;) (expression_statement "puVar15 = PTR_do_gold_unreachable_004323c4;" (assignment_expression "puVar15 = PTR_do_gold_unreachable_004323c4" identifier = identifier) ;) (expression_statement "(*(code *)PTR_do_gold_unreachable_004323c4)(puVar9,0xade);" (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)(puVar9,0xade)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" * (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar9,0xade)" ( identifier , number_literal ))) ;) (expression_statement "puVar14 = in_a3;" (assignment_expression "puVar14 = in_a3" identifier = identifier) ;) (expression_statement "iVar2 = (**(code **)(puVar15 + 0x228a9c))(puVar9 + 4);" (assignment_expression "iVar2 = (**(code **)(puVar15 + 0x228a9c))(puVar9 + 4)" identifier = (call_expression "(**(code **)(puVar15 + 0x228a9c))(puVar9 + 4)" (parenthesized_expression "(**(code **)(puVar15 + 0x228a9c))" ( (pointer_expression "**(code **)(puVar15 + 0x228a9c)" * (pointer_expression "*(code **)(puVar15 + 0x228a9c)" * (cast_expression "(code **)(puVar15 + 0x228a9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + 0x228a9c)" ( (binary_expression "puVar15 + 0x228a9c" identifier + number_literal) ))))) )) (argument_list "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) )))) ;) (if_statement "if (iVar2 != 0) {\n          return false;\n        }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n          return false;\n        }" { (return_statement "return false;" return false ;) })) (expression_statement "piVar10 = *(int **)(puVar9 + 0x44);" (assignment_expression "piVar10 = *(int **)(puVar9 + 0x44)" identifier = (pointer_expression "*(int **)(puVar9 + 0x44)" * (cast_expression "(int **)(puVar9 + 0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0x44)" ( (binary_expression "puVar9 + 0x44" identifier + number_literal) ))))) ;) (if_statement "if (piVar10 == (int *)0x0) {\n          iVar2 = *(int *)(puVar9 + 0x48);\n          piVar12[1] = *(int *)(puVar9 + 0x4c);\n          *piVar12 = iVar2;\n          uVar3 = *(undefined4 *)(puVar9 + 0x50);\n          *(undefined4 *)((int)in_a3 + 4) = *(undefined4 *)(puVar9 + 0x54);\n          *(undefined4 *)in_a3 = uVar3;\n          Position_dependent_options::default_options_.sort_common_.value =\n               *(char **)(puVar9 + 0x5c);\n          Position_dependent_options::default_options_.sort_common_._60_4_ =\n               *(undefined4 *)(puVar9 + 0x58);\n          *piStack_14 = 0;\n          piStack_14[1] = 0;\n          return true;\n        }" if (parenthesized_expression "(piVar10 == (int *)0x0)" ( (binary_expression "piVar10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar2 = *(int *)(puVar9 + 0x48);\n          piVar12[1] = *(int *)(puVar9 + 0x4c);\n          *piVar12 = iVar2;\n          uVar3 = *(undefined4 *)(puVar9 + 0x50);\n          *(undefined4 *)((int)in_a3 + 4) = *(undefined4 *)(puVar9 + 0x54);\n          *(undefined4 *)in_a3 = uVar3;\n          Position_dependent_options::default_options_.sort_common_.value =\n               *(char **)(puVar9 + 0x5c);\n          Position_dependent_options::default_options_.sort_common_._60_4_ =\n               *(undefined4 *)(puVar9 + 0x58);\n          *piStack_14 = 0;\n          piStack_14[1] = 0;\n          return true;\n        }" { (expression_statement "iVar2 = *(int *)(puVar9 + 0x48);" (assignment_expression "iVar2 = *(int *)(puVar9 + 0x48)" identifier = (pointer_expression "*(int *)(puVar9 + 0x48)" * (cast_expression "(int *)(puVar9 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x48)" ( (binary_expression "puVar9 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "piVar12[1] = *(int *)(puVar9 + 0x4c);" (assignment_expression "piVar12[1] = *(int *)(puVar9 + 0x4c)" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = (pointer_expression "*(int *)(puVar9 + 0x4c)" * (cast_expression "(int *)(puVar9 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x4c)" ( (binary_expression "puVar9 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "*piVar12 = iVar2;" (assignment_expression "*piVar12 = iVar2" (pointer_expression "*piVar12" * identifier) = identifier) ;) (expression_statement "uVar3 = *(undefined4 *)(puVar9 + 0x50);" (assignment_expression "uVar3 = *(undefined4 *)(puVar9 + 0x50)" identifier = (pointer_expression "*(undefined4 *)(puVar9 + 0x50)" * (cast_expression "(undefined4 *)(puVar9 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x50)" ( (binary_expression "puVar9 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)((int)in_a3 + 4) = *(undefined4 *)(puVar9 + 0x54);" (assignment_expression "*(undefined4 *)((int)in_a3 + 4) = *(undefined4 *)(puVar9 + 0x54)" (pointer_expression "*(undefined4 *)((int)in_a3 + 4)" * (cast_expression "(undefined4 *)((int)in_a3 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)in_a3 + 4)" ( (binary_expression "(int)in_a3 + 4" (cast_expression "(int)in_a3" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar9 + 0x54)" * (cast_expression "(undefined4 *)(puVar9 + 0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x54)" ( (binary_expression "puVar9 + 0x54" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)in_a3 = uVar3;" (assignment_expression "*(undefined4 *)in_a3 = uVar3" (pointer_expression "*(undefined4 *)in_a3" * (cast_expression "(undefined4 *)in_a3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (labeled_statement "Position_dependent_options::default_options_.sort_common_.value =\n               *(char **)(puVar9 + 0x5c);" statement_identifier : (ERROR ":" :) (expression_statement "default_options_.sort_common_.value =\n               *(char **)(puVar9 + 0x5c);" (assignment_expression "default_options_.sort_common_.value =\n               *(char **)(puVar9 + 0x5c)" (field_expression "default_options_.sort_common_.value" (field_expression "default_options_.sort_common_" identifier . field_identifier) . field_identifier) = (pointer_expression "*(char **)(puVar9 + 0x5c)" * (cast_expression "(char **)(puVar9 + 0x5c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0x5c)" ( (binary_expression "puVar9 + 0x5c" identifier + number_literal) ))))) ;)) (labeled_statement "Position_dependent_options::default_options_.sort_common_._60_4_ =\n               *(undefined4 *)(puVar9 + 0x58);" statement_identifier : (ERROR ":" :) (expression_statement "default_options_.sort_common_._60_4_ =\n               *(undefined4 *)(puVar9 + 0x58);" (assignment_expression "default_options_.sort_common_._60_4_ =\n               *(undefined4 *)(puVar9 + 0x58)" (field_expression "default_options_.sort_common_._60_4_" (field_expression "default_options_.sort_common_" identifier . field_identifier) . field_identifier) = (pointer_expression "*(undefined4 *)(puVar9 + 0x58)" * (cast_expression "(undefined4 *)(puVar9 + 0x58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x58)" ( (binary_expression "puVar9 + 0x58" identifier + number_literal) ))))) ;)) (expression_statement "*piStack_14 = 0;" (assignment_expression "*piStack_14 = 0" (pointer_expression "*piStack_14" * identifier) = number_literal) ;) (expression_statement "piStack_14[1] = 0;" (assignment_expression "piStack_14[1] = 0" (subscript_expression "piStack_14[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return true;" return true ;) })) (expression_statement "iVar2 = piVar10[8];" (assignment_expression "iVar2 = piVar10[8]" identifier = (subscript_expression "piVar10[8]" identifier [ number_literal ])) ;) (expression_statement "pcVar4 = *(code **)(puVar15 + 0x228dec);" (assignment_expression "pcVar4 = *(code **)(puVar15 + 0x228dec)" identifier = (pointer_expression "*(code **)(puVar15 + 0x228dec)" * (cast_expression "(code **)(puVar15 + 0x228dec)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + 0x228dec)" ( (binary_expression "puVar15 + 0x228dec" identifier + number_literal) ))))) ;) (if_statement "if (-(iVar2 >> 0x1f) != 0) {\n          iVar7 = *piVar10;\n          puVar14 = (undefined8 *)piVar10[3];\n          iVar13 = piVar10[2];\n          pcVar16 = *(code **)(iVar7 + 0x10);\n          piVar12[1] = (int)puVar14;\n          *piVar12 = iVar13;\n          if (pcVar16 == pcVar4) {\n            uVar11 = (uint)(piVar10[0x26] << 7) >> 0x1f;\n          }\n          else {\n            uVar11 = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          if (uVar11 == 0) {\n            uVar17 = *(undefined8 *)piVar12;\n          }\n          else if (*(code **)(iVar7 + 0x14) == *(code **)(puVar15 + 0x22a2a4)) {\n            if (-1 < piVar10[0x26] << 7) goto LAB_0020a2c0;\n            uVar17 = *(undefined8 *)(piVar10 + 0xe);\n          }\n          else {\n            uVar17 = (**(code **)(iVar7 + 0x14))();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          pcVar16 = *(code **)(iVar7 + 0xc);\n          pcVar4 = *(code **)(puVar15 + 0x228df4);\n          *in_a3 = uVar17;\n          if (pcVar16 == pcVar4) {\n            Position_dependent_options::default_options_.sort_common_._60_8_ =\n                 *(undefined8 *)(piVar10 + 10);\n          }\n          else {\n            Position_dependent_options::default_options_.sort_common_._60_8_ = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n          }\n          iVar7 = piVar10[5];\n          *piStack_14 = piVar10[4];\n          piStack_14[1] = iVar7;\n          return SUB41(-(iVar2 >> 0x1f),0);\n        }" if (parenthesized_expression "(-(iVar2 >> 0x1f) != 0)" ( (binary_expression "-(iVar2 >> 0x1f) != 0" (unary_expression "-(iVar2 >> 0x1f)" - (parenthesized_expression "(iVar2 >> 0x1f)" ( (binary_expression "iVar2 >> 0x1f" identifier >> number_literal) ))) != number_literal) )) (compound_statement "{\n          iVar7 = *piVar10;\n          puVar14 = (undefined8 *)piVar10[3];\n          iVar13 = piVar10[2];\n          pcVar16 = *(code **)(iVar7 + 0x10);\n          piVar12[1] = (int)puVar14;\n          *piVar12 = iVar13;\n          if (pcVar16 == pcVar4) {\n            uVar11 = (uint)(piVar10[0x26] << 7) >> 0x1f;\n          }\n          else {\n            uVar11 = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          if (uVar11 == 0) {\n            uVar17 = *(undefined8 *)piVar12;\n          }\n          else if (*(code **)(iVar7 + 0x14) == *(code **)(puVar15 + 0x22a2a4)) {\n            if (-1 < piVar10[0x26] << 7) goto LAB_0020a2c0;\n            uVar17 = *(undefined8 *)(piVar10 + 0xe);\n          }\n          else {\n            uVar17 = (**(code **)(iVar7 + 0x14))();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }\n          pcVar16 = *(code **)(iVar7 + 0xc);\n          pcVar4 = *(code **)(puVar15 + 0x228df4);\n          *in_a3 = uVar17;\n          if (pcVar16 == pcVar4) {\n            Position_dependent_options::default_options_.sort_common_._60_8_ =\n                 *(undefined8 *)(piVar10 + 10);\n          }\n          else {\n            Position_dependent_options::default_options_.sort_common_._60_8_ = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n          }\n          iVar7 = piVar10[5];\n          *piStack_14 = piVar10[4];\n          piStack_14[1] = iVar7;\n          return SUB41(-(iVar2 >> 0x1f),0);\n        }" { (expression_statement "iVar7 = *piVar10;" (assignment_expression "iVar7 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (expression_statement "puVar14 = (undefined8 *)piVar10[3];" (assignment_expression "puVar14 = (undefined8 *)piVar10[3]" identifier = (cast_expression "(undefined8 *)piVar10[3]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[3]" identifier [ number_literal ]))) ;) (expression_statement "iVar13 = piVar10[2];" (assignment_expression "iVar13 = piVar10[2]" identifier = (subscript_expression "piVar10[2]" identifier [ number_literal ])) ;) (expression_statement "pcVar16 = *(code **)(iVar7 + 0x10);" (assignment_expression "pcVar16 = *(code **)(iVar7 + 0x10)" identifier = (pointer_expression "*(code **)(iVar7 + 0x10)" * (cast_expression "(code **)(iVar7 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "piVar12[1] = (int)puVar14;" (assignment_expression "piVar12[1] = (int)puVar14" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar12 = iVar13;" (assignment_expression "*piVar12 = iVar13" (pointer_expression "*piVar12" * identifier) = identifier) ;) (if_statement "if (pcVar16 == pcVar4) {\n            uVar11 = (uint)(piVar10[0x26] << 7) >> 0x1f;\n          }\n          else {\n            uVar11 = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }" if (parenthesized_expression "(pcVar16 == pcVar4)" ( (binary_expression "pcVar16 == pcVar4" identifier == identifier) )) (compound_statement "{\n            uVar11 = (uint)(piVar10[0x26] << 7) >> 0x1f;\n          }" { (expression_statement "uVar11 = (uint)(piVar10[0x26] << 7) >> 0x1f;" (assignment_expression "uVar11 = (uint)(piVar10[0x26] << 7) >> 0x1f" identifier = (binary_expression "(uint)(piVar10[0x26] << 7) >> 0x1f" (call_expression "(uint)(piVar10[0x26] << 7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(piVar10[0x26] << 7)" ( (binary_expression "piVar10[0x26] << 7" (subscript_expression "piVar10[0x26]" identifier [ number_literal ]) << number_literal) ))) >> number_literal)) ;) }) (else_clause "else {\n            uVar11 = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }" else (compound_statement "{\n            uVar11 = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }" { (expression_statement "uVar11 = (*pcVar16)();" (assignment_expression "uVar11 = (*pcVar16)()" identifier = (call_expression "(*pcVar16)()" (parenthesized_expression "(*pcVar16)" ( (pointer_expression "*pcVar16" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "piVar10 = *(int **)(puVar9 + 0x44);" (assignment_expression "piVar10 = *(int **)(puVar9 + 0x44)" identifier = (pointer_expression "*(int **)(puVar9 + 0x44)" * (cast_expression "(int **)(puVar9 + 0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0x44)" ( (binary_expression "puVar9 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *piVar10;" (assignment_expression "iVar7 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) }))) (if_statement "if (uVar11 == 0) {\n            uVar17 = *(undefined8 *)piVar12;\n          }\n          else if (*(code **)(iVar7 + 0x14) == *(code **)(puVar15 + 0x22a2a4)) {\n            if (-1 < piVar10[0x26] << 7) goto LAB_0020a2c0;\n            uVar17 = *(undefined8 *)(piVar10 + 0xe);\n          }\n          else {\n            uVar17 = (**(code **)(iVar7 + 0x14))();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar17 = *(undefined8 *)piVar12;\n          }" { (expression_statement "uVar17 = *(undefined8 *)piVar12;" (assignment_expression "uVar17 = *(undefined8 *)piVar12" identifier = (pointer_expression "*(undefined8 *)piVar12" * (cast_expression "(undefined8 *)piVar12" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) }) (else_clause "else if (*(code **)(iVar7 + 0x14) == *(code **)(puVar15 + 0x22a2a4)) {\n            if (-1 < piVar10[0x26] << 7) goto LAB_0020a2c0;\n            uVar17 = *(undefined8 *)(piVar10 + 0xe);\n          }\n          else {\n            uVar17 = (**(code **)(iVar7 + 0x14))();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }" else (if_statement "if (*(code **)(iVar7 + 0x14) == *(code **)(puVar15 + 0x22a2a4)) {\n            if (-1 < piVar10[0x26] << 7) goto LAB_0020a2c0;\n            uVar17 = *(undefined8 *)(piVar10 + 0xe);\n          }\n          else {\n            uVar17 = (**(code **)(iVar7 + 0x14))();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }" if (parenthesized_expression "(*(code **)(iVar7 + 0x14) == *(code **)(puVar15 + 0x22a2a4))" ( (binary_expression "*(code **)(iVar7 + 0x14) == *(code **)(puVar15 + 0x22a2a4)" (pointer_expression "*(code **)(iVar7 + 0x14)" * (cast_expression "(code **)(iVar7 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x14)" ( (binary_expression "iVar7 + 0x14" identifier + number_literal) )))) == (pointer_expression "*(code **)(puVar15 + 0x22a2a4)" * (cast_expression "(code **)(puVar15 + 0x22a2a4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + 0x22a2a4)" ( (binary_expression "puVar15 + 0x22a2a4" identifier + number_literal) ))))) )) (compound_statement "{\n            if (-1 < piVar10[0x26] << 7) goto LAB_0020a2c0;\n            uVar17 = *(undefined8 *)(piVar10 + 0xe);\n          }" { (if_statement "if (-1 < piVar10[0x26] << 7) goto LAB_0020a2c0;" if (parenthesized_expression "(-1 < piVar10[0x26] << 7)" ( (binary_expression "-1 < piVar10[0x26] << 7" number_literal < (binary_expression "piVar10[0x26] << 7" (subscript_expression "piVar10[0x26]" identifier [ number_literal ]) << number_literal)) )) (goto_statement "goto LAB_0020a2c0;" goto statement_identifier ;)) (expression_statement "uVar17 = *(undefined8 *)(piVar10 + 0xe);" (assignment_expression "uVar17 = *(undefined8 *)(piVar10 + 0xe)" identifier = (pointer_expression "*(undefined8 *)(piVar10 + 0xe)" * (cast_expression "(undefined8 *)(piVar10 + 0xe)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10 + 0xe)" ( (binary_expression "piVar10 + 0xe" identifier + number_literal) ))))) ;) }) (else_clause "else {\n            uVar17 = (**(code **)(iVar7 + 0x14))();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }" else (compound_statement "{\n            uVar17 = (**(code **)(iVar7 + 0x14))();\n            piVar10 = *(int **)(puVar9 + 0x44);\n            iVar7 = *piVar10;\n          }" { (expression_statement "uVar17 = (**(code **)(iVar7 + 0x14))();" (assignment_expression "uVar17 = (**(code **)(iVar7 + 0x14))()" identifier = (call_expression "(**(code **)(iVar7 + 0x14))()" (parenthesized_expression "(**(code **)(iVar7 + 0x14))" ( (pointer_expression "**(code **)(iVar7 + 0x14)" * (pointer_expression "*(code **)(iVar7 + 0x14)" * (cast_expression "(code **)(iVar7 + 0x14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0x14)" ( (binary_expression "iVar7 + 0x14" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "piVar10 = *(int **)(puVar9 + 0x44);" (assignment_expression "piVar10 = *(int **)(puVar9 + 0x44)" identifier = (pointer_expression "*(int **)(puVar9 + 0x44)" * (cast_expression "(int **)(puVar9 + 0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0x44)" ( (binary_expression "puVar9 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *piVar10;" (assignment_expression "iVar7 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) }))))) (expression_statement "pcVar16 = *(code **)(iVar7 + 0xc);" (assignment_expression "pcVar16 = *(code **)(iVar7 + 0xc)" identifier = (pointer_expression "*(code **)(iVar7 + 0xc)" * (cast_expression "(code **)(iVar7 + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = *(code **)(puVar15 + 0x228df4);" (assignment_expression "pcVar4 = *(code **)(puVar15 + 0x228df4)" identifier = (pointer_expression "*(code **)(puVar15 + 0x228df4)" * (cast_expression "(code **)(puVar15 + 0x228df4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + 0x228df4)" ( (binary_expression "puVar15 + 0x228df4" identifier + number_literal) ))))) ;) (expression_statement "*in_a3 = uVar17;" (assignment_expression "*in_a3 = uVar17" (pointer_expression "*in_a3" * identifier) = identifier) ;) (if_statement "if (pcVar16 == pcVar4) {\n            Position_dependent_options::default_options_.sort_common_._60_8_ =\n                 *(undefined8 *)(piVar10 + 10);\n          }\n          else {\n            Position_dependent_options::default_options_.sort_common_._60_8_ = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n          }" if (parenthesized_expression "(pcVar16 == pcVar4)" ( (binary_expression "pcVar16 == pcVar4" identifier == identifier) )) (compound_statement "{\n            Position_dependent_options::default_options_.sort_common_._60_8_ =\n                 *(undefined8 *)(piVar10 + 10);\n          }" { (labeled_statement "Position_dependent_options::default_options_.sort_common_._60_8_ =\n                 *(undefined8 *)(piVar10 + 10);" statement_identifier : (ERROR ":" :) (expression_statement "default_options_.sort_common_._60_8_ =\n                 *(undefined8 *)(piVar10 + 10);" (assignment_expression "default_options_.sort_common_._60_8_ =\n                 *(undefined8 *)(piVar10 + 10)" (field_expression "default_options_.sort_common_._60_8_" (field_expression "default_options_.sort_common_" identifier . field_identifier) . field_identifier) = (pointer_expression "*(undefined8 *)(piVar10 + 10)" * (cast_expression "(undefined8 *)(piVar10 + 10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10 + 10)" ( (binary_expression "piVar10 + 10" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n            Position_dependent_options::default_options_.sort_common_._60_8_ = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n          }" else (compound_statement "{\n            Position_dependent_options::default_options_.sort_common_._60_8_ = (*pcVar16)();\n            piVar10 = *(int **)(puVar9 + 0x44);\n          }" { (labeled_statement "Position_dependent_options::default_options_.sort_common_._60_8_ = (*pcVar16)();" statement_identifier : (ERROR ":" :) (expression_statement "default_options_.sort_common_._60_8_ = (*pcVar16)();" (assignment_expression "default_options_.sort_common_._60_8_ = (*pcVar16)()" (field_expression "default_options_.sort_common_._60_8_" (field_expression "default_options_.sort_common_" identifier . field_identifier) . field_identifier) = (call_expression "(*pcVar16)()" (parenthesized_expression "(*pcVar16)" ( (pointer_expression "*pcVar16" * identifier) )) (argument_list "()" ( )))) ;)) (expression_statement "piVar10 = *(int **)(puVar9 + 0x44);" (assignment_expression "piVar10 = *(int **)(puVar9 + 0x44)" identifier = (pointer_expression "*(int **)(puVar9 + 0x44)" * (cast_expression "(int **)(puVar9 + 0x44)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0x44)" ( (binary_expression "puVar9 + 0x44" identifier + number_literal) ))))) ;) }))) (expression_statement "iVar7 = piVar10[5];" (assignment_expression "iVar7 = piVar10[5]" identifier = (subscript_expression "piVar10[5]" identifier [ number_literal ])) ;) (expression_statement "*piStack_14 = piVar10[4];" (assignment_expression "*piStack_14 = piVar10[4]" (pointer_expression "*piStack_14" * identifier) = (subscript_expression "piVar10[4]" identifier [ number_literal ])) ;) (expression_statement "piStack_14[1] = iVar7;" (assignment_expression "piStack_14[1] = iVar7" (subscript_expression "piStack_14[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return SUB41(-(iVar2 >> 0x1f),0);" return (call_expression "SUB41(-(iVar2 >> 0x1f),0)" identifier (argument_list "(-(iVar2 >> 0x1f),0)" ( (unary_expression "-(iVar2 >> 0x1f)" - (parenthesized_expression "(iVar2 >> 0x1f)" ( (binary_expression "iVar2 >> 0x1f" identifier >> number_literal) ))) , number_literal ))) ;) })) (expression_statement "(**(code **)(puVar15 + 0x228310))\n                  (*(int *)(puVar15 + 0x228300) + -0x4fe0,0xc5,\n                   *(int *)(puVar15 + 0x2281b8) + -0x5328);" (call_expression "(**(code **)(puVar15 + 0x228310))\n                  (*(int *)(puVar15 + 0x228300) + -0x4fe0,0xc5,\n                   *(int *)(puVar15 + 0x2281b8) + -0x5328)" (parenthesized_expression "(**(code **)(puVar15 + 0x228310))" ( (pointer_expression "**(code **)(puVar15 + 0x228310)" * (pointer_expression "*(code **)(puVar15 + 0x228310)" * (cast_expression "(code **)(puVar15 + 0x228310)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + 0x228310)" ( (binary_expression "puVar15 + 0x228310" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar15 + 0x228300) + -0x4fe0,0xc5,\n                   *(int *)(puVar15 + 0x2281b8) + -0x5328)" ( (binary_expression "*(int *)(puVar15 + 0x228300) + -0x4fe0" (pointer_expression "*(int *)(puVar15 + 0x228300)" * (cast_expression "(int *)(puVar15 + 0x228300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + 0x228300)" ( (binary_expression "puVar15 + 0x228300" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(puVar15 + 0x2281b8) + -0x5328" (pointer_expression "*(int *)(puVar15 + 0x2281b8)" * (cast_expression "(int *)(puVar15 + 0x2281b8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + 0x2281b8)" ( (binary_expression "puVar15 + 0x2281b8" identifier + number_literal) )))) + number_literal) ))) ;) (labeled_statement "LAB_0020a2c0:\n        iVar2 = *(int *)(puVar15 + 0x228300) + -0x4fe0;" statement_identifier : (expression_statement "iVar2 = *(int *)(puVar15 + 0x228300) + -0x4fe0;" (assignment_expression "iVar2 = *(int *)(puVar15 + 0x228300) + -0x4fe0" identifier = (binary_expression "*(int *)(puVar15 + 0x228300) + -0x4fe0" (pointer_expression "*(int *)(puVar15 + 0x228300)" * (cast_expression "(int *)(puVar15 + 0x228300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + 0x228300)" ( (binary_expression "puVar15 + 0x228300" identifier + number_literal) )))) + number_literal)) ;)) (expression_statement "(**(code **)(puVar15 + 0x228310))();" (call_expression "(**(code **)(puVar15 + 0x228310))()" (parenthesized_expression "(**(code **)(puVar15 + 0x228310))" ( (pointer_expression "**(code **)(puVar15 + 0x228310)" * (pointer_expression "*(code **)(puVar15 + 0x228310)" * (cast_expression "(code **)(puVar15 + 0x228310)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar15 + 0x228310)" ( (binary_expression "puVar15 + 0x228310" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "uVar11 = *(uint *)(iVar2 + 0x18);" (assignment_expression "uVar11 = *(uint *)(iVar2 + 0x18)" identifier = (pointer_expression "*(uint *)(iVar2 + 0x18)" * (cast_expression "(uint *)(iVar2 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x18)" ( (binary_expression "iVar2 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (uVar11 != 0) {\n          bVar5 = true;\n          do {\n            uVar8 = -uVar11 & uVar11;\n            if (uVar8 == 2) {\n              if (((uint)puVar14 & 1) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 < 3) {\n              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }\n            uVar11 = uVar11 & uVar11 - 1;\n          } while (uVar11 != 0);\n          return bVar5;\n        }" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (compound_statement "{\n          bVar5 = true;\n          do {\n            uVar8 = -uVar11 & uVar11;\n            if (uVar8 == 2) {\n              if (((uint)puVar14 & 1) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 < 3) {\n              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }\n            uVar11 = uVar11 & uVar11 - 1;\n          } while (uVar11 != 0);\n          return bVar5;\n        }" { (expression_statement "bVar5 = true;" (assignment_expression "bVar5 = true" identifier = true) ;) (do_statement "do {\n            uVar8 = -uVar11 & uVar11;\n            if (uVar8 == 2) {\n              if (((uint)puVar14 & 1) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 < 3) {\n              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }\n            uVar11 = uVar11 & uVar11 - 1;\n          } while (uVar11 != 0);" do (compound_statement "{\n            uVar8 = -uVar11 & uVar11;\n            if (uVar8 == 2) {\n              if (((uint)puVar14 & 1) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 < 3) {\n              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }\n            uVar11 = uVar11 & uVar11 - 1;\n          }" { (expression_statement "uVar8 = -uVar11 & uVar11;" (assignment_expression "uVar8 = -uVar11 & uVar11" identifier = (binary_expression "-uVar11 & uVar11" (unary_expression "-uVar11" - identifier) & identifier)) ;) (if_statement "if (uVar8 == 2) {\n              if (((uint)puVar14 & 1) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 < 3) {\n              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }" if (parenthesized_expression "(uVar8 == 2)" ( (binary_expression "uVar8 == 2" identifier == number_literal) )) (compound_statement "{\n              if (((uint)puVar14 & 1) == 0) {\n                bVar5 = false;\n              }\n            }" { (if_statement "if (((uint)puVar14 & 1) == 0) {\n                bVar5 = false;\n              }" if (parenthesized_expression "(((uint)puVar14 & 1) == 0)" ( (binary_expression "((uint)puVar14 & 1) == 0" (parenthesized_expression "((uint)puVar14 & 1)" ( (binary_expression "(uint)puVar14 & 1" (cast_expression "(uint)puVar14" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                bVar5 = false;\n              }" { (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) })) }) (else_clause "else if (uVar8 < 3) {\n              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }" else (if_statement "if (uVar8 < 3) {\n              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }\n            }\n            else if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }" if (parenthesized_expression "(uVar8 < 3)" ( (binary_expression "uVar8 < 3" identifier < number_literal) )) (compound_statement "{\n              if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }\n            }" { (if_statement "if ((uVar8 == 1) && (((uint)puVar14 & 4) == 0)) {\n                bVar5 = false;\n              }" if (parenthesized_expression "((uVar8 == 1) && (((uint)puVar14 & 4) == 0))" ( (binary_expression "(uVar8 == 1) && (((uint)puVar14 & 4) == 0)" (parenthesized_expression "(uVar8 == 1)" ( (binary_expression "uVar8 == 1" identifier == number_literal) )) && (parenthesized_expression "(((uint)puVar14 & 4) == 0)" ( (binary_expression "((uint)puVar14 & 4) == 0" (parenthesized_expression "((uint)puVar14 & 4)" ( (binary_expression "(uint)puVar14 & 4" (cast_expression "(uint)puVar14" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                bVar5 = false;\n              }" { (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) })) }) (else_clause "else if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }" else (if_statement "if (uVar8 == 8) {\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }\n            else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }" if (parenthesized_expression "(uVar8 == 8)" ( (binary_expression "uVar8 == 8" identifier == number_literal) )) (compound_statement "{\n              if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }\n            }" { (if_statement "if (((uint)puVar14 & 2) == 0) {\n                bVar5 = false;\n              }" if (parenthesized_expression "(((uint)puVar14 & 2) == 0)" ( (binary_expression "((uint)puVar14 & 2) == 0" (parenthesized_expression "((uint)puVar14 & 2)" ( (binary_expression "(uint)puVar14 & 2" (cast_expression "(uint)puVar14" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                bVar5 = false;\n              }" { (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) })) }) (else_clause "else if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }" else (if_statement "if ((uVar8 == 0x10) && ((uStack_44 & 8) != 0)) {\n              bVar5 = false;\n            }" if (parenthesized_expression "((uVar8 == 0x10) && ((uStack_44 & 8) != 0))" ( (binary_expression "(uVar8 == 0x10) && ((uStack_44 & 8) != 0)" (parenthesized_expression "(uVar8 == 0x10)" ( (binary_expression "uVar8 == 0x10" identifier == number_literal) )) && (parenthesized_expression "((uStack_44 & 8) != 0)" ( (binary_expression "(uStack_44 & 8) != 0" (parenthesized_expression "(uStack_44 & 8)" ( (binary_expression "uStack_44 & 8" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n              bVar5 = false;\n            }" { (expression_statement "bVar5 = false;" (assignment_expression "bVar5 = false" identifier = false) ;) })))))))) (expression_statement "uVar11 = uVar11 & uVar11 - 1;" (assignment_expression "uVar11 = uVar11 & uVar11 - 1" identifier = (binary_expression "uVar11 & uVar11 - 1" identifier & (binary_expression "uVar11 - 1" identifier - number_literal))) ;) }) while (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) ;) (return_statement "return bVar5;" return identifier ;) })) (return_statement "return false;" return false ;) })) (if_statement "if (this->constraint_ == CONSTRAINT_ONLY_IF_RO) goto LAB_0020a00c;" if (parenthesized_expression "(this->constraint_ == CONSTRAINT_ONLY_IF_RO)" ( (binary_expression "this->constraint_ == CONSTRAINT_ONLY_IF_RO" (field_expression "this->constraint_" identifier -> field_identifier) == identifier) )) (goto_statement "goto LAB_0020a00c;" goto statement_identifier ;)) }))) })) (return_statement "return false;" return false ;) })))
(translation_unit "uint FUN_00209f58(int param_1,int param_2,int param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  \n  iVar2 = *(int *)(param_1 + 8);\n  if (iVar2 != *(int *)(param_2 + 8)) {\n    return 0;\n  }\n  if ((iVar2 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0)) {\n    if (param_3 == 1) {\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }\n    else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "uint FUN_00209f58(int param_1,int param_2,int param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  \n  iVar2 = *(int *)(param_1 + 8);\n  if (iVar2 != *(int *)(param_2 + 8)) {\n    return 0;\n  }\n  if ((iVar2 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0)) {\n    if (param_3 == 1) {\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }\n    else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00209f58(int param_1,int param_2,int param_3)" identifier (parameter_list "(int param_1,int param_2,int param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  \n  iVar2 = *(int *)(param_1 + 8);\n  if (iVar2 != *(int *)(param_2 + 8)) {\n    return 0;\n  }\n  if ((iVar2 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0)) {\n    if (param_3 == 1) {\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }\n    else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }\n  }\n  return 0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (expression_statement "iVar2 = *(int *)(param_1 + 8);" (assignment_expression "iVar2 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 != *(int *)(param_2 + 8)) {\n    return 0;\n  }" if (parenthesized_expression "(iVar2 != *(int *)(param_2 + 8))" ( (binary_expression "iVar2 != *(int *)(param_2 + 8)" identifier != (pointer_expression "*(int *)(param_2 + 8)" * (cast_expression "(int *)(param_2 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((iVar2 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0)) {\n    if (param_3 == 1) {\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }\n    else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }\n  }" if (parenthesized_expression "((iVar2 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0))" ( (binary_expression "(iVar2 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0)" (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0)" ( (comma_expression "iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0" (assignment_expression "iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2)" identifier = (call_expression "(*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2)" (parenthesized_expression "(*(code *)PTR_memcmp_004368dc)" ( (pointer_expression "*(code *)PTR_memcmp_004368dc" * (cast_expression "(code *)PTR_memcmp_004368dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2)" ( (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 4)" * (cast_expression "(undefined4 *)(param_2 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) , identifier )))) , (binary_expression "iVar2 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    if (param_3 == 1) {\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }\n    else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }\n  }" { (if_statement "if (param_3 == 1) {\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }\n    else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }" if (parenthesized_expression "(param_3 == 1)" ( (binary_expression "param_3 == 1" identifier == number_literal) )) (compound_statement "{\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }" { (if_statement "if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x2c) == 2)" ( (binary_expression "*(int *)(param_1 + 0x2c) == 2" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }" { (labeled_statement "LAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }" statement_identifier : (if_statement "if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x44) != 0)" ( (binary_expression "*(int *)(param_1 + 0x44) != 0" (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }" { (expression_statement "uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);" (assignment_expression "uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28)" identifier = (call_expression "(*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" ( (pointer_expression "*(code *)PTR_gettext_00436818" * (cast_expression "(code *)PTR_gettext_00436818" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0043226c + -0x5c28)" ( (binary_expression "PTR_DAT_0043226c + -0x5c28" identifier + number_literal) )))) ;) (expression_statement "(*(code *)PTR_gold_error_00432d84)(uVar3);" (call_expression "(*(code *)PTR_gold_error_00432d84)(uVar3)" (parenthesized_expression "(*(code *)PTR_gold_error_00432d84)" ( (pointer_expression "*(code *)PTR_gold_error_00432d84" * (cast_expression "(code *)PTR_gold_error_00432d84" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar3)" ( identifier ))) ;) }))) (expression_statement "bVar1 = *(byte *)(param_1 + 0x60);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x60)" identifier = (pointer_expression "*(byte *)(param_1 + 0x60)" * (cast_expression "(byte *)(param_1 + 0x60)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x60)" ( (binary_expression "param_1 + 0x60" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44)" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" * (cast_expression "(undefined4 *)(param_1 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_2 + 0x44)" * (cast_expression "(undefined4 *)(param_2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(param_2 + 0x44) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 0x44) = 0" (pointer_expression "*(undefined4 *)(param_2 + 0x44)" * (cast_expression "(undefined4 *)(param_2 + 0x44)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x44)" ( (binary_expression "param_2 + 0x44" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar2 = *(int *)(param_1 + 0x44);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x44)" identifier = (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) ;) (if_statement "if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }" { (expression_statement "*(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;" (assignment_expression "*(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff" (pointer_expression "*(uint *)(iVar2 + 0x98)" * (cast_expression "(uint *)(iVar2 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x98)" ( (binary_expression "iVar2 + 0x98" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar2 + 0x98) & 0xfffbffff" (pointer_expression "*(uint *)(iVar2 + 0x98)" * (cast_expression "(uint *)(iVar2 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x98)" ( (binary_expression "iVar2 + 0x98" identifier + number_literal) )))) & number_literal)) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "*(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;" (assignment_expression "*(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000" (pointer_expression "*(uint *)(iVar2 + 0x98)" * (cast_expression "(uint *)(iVar2 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x98)" ( (binary_expression "iVar2 + 0x98" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000" (binary_expression "*(uint *)(iVar2 + 0x98) & 0xfffbffff" (pointer_expression "*(uint *)(iVar2 + 0x98)" * (cast_expression "(uint *)(iVar2 + 0x98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x98)" ( (binary_expression "iVar2 + 0x98" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (return_statement "return (uint)bVar1;" return (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) ;) })) }) (else_clause "else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }" else (compound_statement "{\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }" { (if_statement "if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }" if (parenthesized_expression "(param_3 != 2)" ( (binary_expression "param_3 != 2" identifier != number_literal) )) (compound_statement "{\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }" { (expression_statement "uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);" (assignment_expression "uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390)" identifier = (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" * (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390)" ( (binary_expression "PTR_DAT_0043226c + -0x5d54" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0043226c + -0x5390" identifier + number_literal) )))) ;) (return_statement "return uVar4;" return identifier ;) })) (if_statement "if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;" if (parenthesized_expression "(*(int *)(param_1 + 0x2c) == 1)" ( (binary_expression "*(int *)(param_1 + 0x2c) == 1" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0020a00c;" goto statement_identifier ;)) }))) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) (return_statement return (cast_expression ( (type_descriptor TYPE) ) IDENT) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) )))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) }))) })) (return_statement return LIT ;) })))
(function_definition "uint FUN_00209f58(int param_1,int param_2,int param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  \n  iVar2 = *(int *)(param_1 + 8);\n  if (iVar2 != *(int *)(param_2 + 8)) {\n    return 0;\n  }\n  if ((iVar2 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0)) {\n    if (param_3 == 1) {\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }\n    else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }\n  }\n  return 0;\n}" (type_identifier "uint") (function_declarator "FUN_00209f58(int param_1,int param_2,int param_3)" (identifier "FUN_00209f58") (parameter_list "(int param_1,int param_2,int param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  \n  iVar2 = *(int *)(param_1 + 8);\n  if (iVar2 != *(int *)(param_2 + 8)) {\n    return 0;\n  }\n  if ((iVar2 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0)) {\n    if (param_3 == 1) {\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }\n    else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }\n  }\n  return 0;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 8);" (assignment_expression "iVar2 = *(int *)(param_1 + 8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar2 != *(int *)(param_2 + 8)) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar2 != *(int *)(param_2 + 8))" (( "(") (binary_expression "iVar2 != *(int *)(param_2 + 8)" (identifier "iVar2") (!= "!=") (pointer_expression "*(int *)(param_2 + 8)" (* "*") (cast_expression "(int *)(param_2 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((iVar2 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0)) {\n    if (param_3 == 1) {\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }\n    else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }\n  }" (if "if") (parenthesized_expression "((iVar2 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0))" (( "(") (binary_expression "(iVar2 == 0) ||\n     (iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0)" (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0)" (( "(") (comma_expression "iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),\n     iVar2 == 0" (assignment_expression "iVar2 = (*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2)" (identifier "iVar2") (= "=") (call_expression "(*(code *)PTR_memcmp_004368dc)\n                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2)" (parenthesized_expression "(*(code *)PTR_memcmp_004368dc)" (( "(") (pointer_expression "*(code *)PTR_memcmp_004368dc" (* "*") (cast_expression "(code *)PTR_memcmp_004368dc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcmp_004368dc"))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 4)" (* "*") (cast_expression "(undefined4 *)(param_2 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (, ",") (identifier "iVar2") () ")")))) (, ",") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    if (param_3 == 1) {\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }\n    else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }\n  }" ({ "{") (if_statement "if (param_3 == 1) {\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }\n    else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }" (if "if") (parenthesized_expression "(param_3 == 1)" (( "(") (binary_expression "param_3 == 1" (identifier "param_3") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }\n    }" ({ "{") (if_statement "if (*(int *)(param_1 + 0x2c) == 2) {\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x2c) == 2)" (( "(") (binary_expression "*(int *)(param_1 + 0x2c) == 2" (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (== "==") (number_literal "2")) () ")")) (compound_statement "{\nLAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }\n        bVar1 = *(byte *)(param_1 + 0x60);\n        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);\n        *(undefined4 *)(param_2 + 0x44) = 0;\n        iVar2 = *(int *)(param_1 + 0x44);\n        if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }\n        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;\n        return (uint)bVar1;\n      }" ({ "{") (labeled_statement "LAB_0020a00c:\n        if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }" (statement_identifier "LAB_0020a00c") (: ":") (if_statement "if (*(int *)(param_1 + 0x44) != 0) {\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x44) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x44) != 0" (pointer_expression "*(int *)(param_1 + 0x44)" (* "*") (cast_expression "(int *)(param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);\n          (*(code *)PTR_gold_error_00432d84)(uVar3);\n        }" ({ "{") (expression_statement "uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);" (assignment_expression "uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28)" (identifier "uVar3") (= "=") (call_expression "(*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28)" (parenthesized_expression "(*(code *)PTR_gettext_00436818)" (( "(") (pointer_expression "*(code *)PTR_gettext_00436818" (* "*") (cast_expression "(code *)PTR_gettext_00436818" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_gettext_00436818"))) () ")")) (argument_list "(PTR_DAT_0043226c + -0x5c28)" (( "(") (binary_expression "PTR_DAT_0043226c + -0x5c28" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "-0x5c28")) () ")")))) (; ";")) (expression_statement "(*(code *)PTR_gold_error_00432d84)(uVar3);" (call_expression "(*(code *)PTR_gold_error_00432d84)(uVar3)" (parenthesized_expression "(*(code *)PTR_gold_error_00432d84)" (( "(") (pointer_expression "*(code *)PTR_gold_error_00432d84" (* "*") (cast_expression "(code *)PTR_gold_error_00432d84" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_gold_error_00432d84"))) () ")")) (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";")) (} "}")))) (expression_statement "bVar1 = *(byte *)(param_1 + 0x60);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x60)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_1 + 0x60)" (* "*") (cast_expression "(byte *)(param_1 + 0x60)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x60)" (( "(") (binary_expression "param_1 + 0x60" (identifier "param_1") (+ "+") (number_literal "0x60")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);" (assignment_expression "*(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44)" (pointer_expression "*(undefined4 *)(param_1 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_2 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x44)" (( "(") (binary_expression "param_2 + 0x44" (identifier "param_2") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0x44) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 0x44) = 0" (pointer_expression "*(undefined4 *)(param_2 + 0x44)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x44)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x44)" (( "(") (binary_expression "param_2 + 0x44" (identifier "param_2") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar2 = *(int *)(param_1 + 0x44);" (assignment_expression "iVar2 = *(int *)(param_1 + 0x44)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(param_1 + 0x44)" (* "*") (cast_expression "(int *)(param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")"))))) (; ";")) (if_statement "if (bVar1 == 0) {\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }" (if "if") (parenthesized_expression "(bVar1 == 0)" (( "(") (binary_expression "bVar1 == 0" (identifier "bVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;\n          return 1;\n        }" ({ "{") (expression_statement "*(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;" (assignment_expression "*(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff" (pointer_expression "*(uint *)(iVar2 + 0x98)" (* "*") (cast_expression "(uint *)(iVar2 + 0x98)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x98)" (( "(") (binary_expression "iVar2 + 0x98" (identifier "iVar2") (+ "+") (number_literal "0x98")) () ")")))) (= "=") (binary_expression "*(uint *)(iVar2 + 0x98) & 0xfffbffff" (pointer_expression "*(uint *)(iVar2 + 0x98)" (* "*") (cast_expression "(uint *)(iVar2 + 0x98)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x98)" (( "(") (binary_expression "iVar2 + 0x98" (identifier "iVar2") (+ "+") (number_literal "0x98")) () ")")))) (& "&") (number_literal "0xfffbffff"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "*(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;" (assignment_expression "*(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000" (pointer_expression "*(uint *)(iVar2 + 0x98)" (* "*") (cast_expression "(uint *)(iVar2 + 0x98)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x98)" (( "(") (binary_expression "iVar2 + 0x98" (identifier "iVar2") (+ "+") (number_literal "0x98")) () ")")))) (= "=") (binary_expression "*(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000" (binary_expression "*(uint *)(iVar2 + 0x98) & 0xfffbffff" (pointer_expression "*(uint *)(iVar2 + 0x98)" (* "*") (cast_expression "(uint *)(iVar2 + 0x98)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x98)" (( "(") (binary_expression "iVar2 + 0x98" (identifier "iVar2") (+ "+") (number_literal "0x98")) () ")")))) (& "&") (number_literal "0xfffbffff")) (| "|") (number_literal "0x40000"))) (; ";")) (return_statement "return (uint)bVar1;" (return "return") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }" (else "else") (compound_statement "{\n      if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }\n      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;\n    }" ({ "{") (if_statement "if (param_3 != 2) {\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }" (if "if") (parenthesized_expression "(param_3 != 2)" (( "(") (binary_expression "param_3 != 2" (identifier "param_3") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);\n        return uVar4;\n      }" ({ "{") (expression_statement "uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);" (assignment_expression "uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390)" (identifier "uVar4") (= "=") (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)\n                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" (( "(") (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" (* "*") (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_do_gold_unreachable_004323c4"))) () ")")) (argument_list "(PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390)" (( "(") (binary_expression "PTR_DAT_0043226c + -0x5d54" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "-0x5d54")) (, ",") (number_literal "0xade") (, ",") (binary_expression "PTR_DAT_0043226c + -0x5390" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "-0x5390")) () ")")))) (; ";")) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x2c) == 1)" (( "(") (binary_expression "*(int *)(param_1 + 0x2c) == 1" (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_0020a00c;" (goto "goto") (statement_identifier "LAB_0020a00c") (; ";"))) (} "}")))) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* WARNING: Struct "Output_section_headers": ignoring overlapping field "layout_" */
/* WARNING: Enum "DT": Some values do not have unique names */
/* WARNING: Struct "Output_reduced_debug_abbrev_section": ignoring overlapping field "data_" */
/* WARNING: Struct "Output_reduced_debug_info_section": ignoring overlapping field "data_" */
/* DWARF original prototype: bool alternate_constraint(Output_section_definition * this,
   Output_section_definition * posd, Section_constraint constraint) */

bool __thiscall
gold::type_1::function_1
          (type_1 *this,type_1 *posd,
          type_2 var_3)

{
  type_3 var_1;
  int var_2;
  type_4 uVar3;
  type_5 *var_13;
  bool var_7;
  type_6 *pOVar6;
  int var_11;
  type_7 var_16;
  type_8 *var_9;
  int *var_10;
  type_7 var_14;
  int *piVar12;
  int iVar13;
  type_9 *in_a3;
  type_9 *puVar14;
  type_8 *var_8;
  type_5 *var_12;
  type_9 uVar17;
  type_7 var_17;
  int *piStack_14;
  
  var_1 = (this->name_)._M_string_length;
  if (var_1 != (posd->name_)._M_string_length) {
    return false;
  }
  if ((var_1 == 0) ||
     (var_2 = (*(type_5 *)PTR_memcmp_004368dc)
                        ((this->name_)._M_dataplus._M_p,(posd->name_)._M_dataplus._M_p,var_1),
     var_2 == 0)) {
    if (var_3 == var_4) {
      if (this->constraint_ == var_5) {
LAB_0020a00c:
        if (this->output_section_ != (type_6 *)0x0) {
          uVar3 = (*(type_5 *)PTR_gettext_00436818)(var_6 + -0x5c28);
          (*(type_5 *)PTR_gold_error_00432d84)(uVar3);
        }
        var_7 = this->is_relro_;
        this->output_section_ = posd->output_section_;
        posd->output_section_ = (type_6 *)0x0;
        pOVar6 = this->output_section_;
        if (var_7 != false) {
          *(type_7 *)&pOVar6->field_0x98 = *(type_7 *)&pOVar6->field_0x98 & 0xfffbffff | 0x40000;
          return var_7;
        }
        *(type_7 *)&pOVar6->field_0x98 = *(type_7 *)&pOVar6->field_0x98 & 0xfffbffff;
        return true;
      }
    }
    else {
      if (var_3 != var_5) {
        piVar12 = (int *)(var_6 + -0x5390);
        var_9 = var_6 + -0x5d54;
        var_8 = PTR_do_gold_unreachable_004323c4;
        (*(type_5 *)PTR_do_gold_unreachable_004323c4)(var_9,0xade);
        puVar14 = in_a3;
        var_2 = (**(type_5 **)(var_8 + 0x228a9c))(var_9 + 4);
        if (var_2 != 0) {
          return false;
        }
        var_10 = *(int **)(var_9 + 0x44);
        if (var_10 == (int *)0x0) {
          var_2 = *(int *)(var_9 + 0x48);
          piVar12[1] = *(int *)(var_9 + 0x4c);
          *piVar12 = var_2;
          uVar3 = *(type_4 *)(var_9 + 0x50);
          *(type_4 *)((int)in_a3 + 4) = *(type_4 *)(var_9 + 0x54);
          *(type_4 *)in_a3 = uVar3;
          Position_dependent_options::default_options_.sort_common_.value =
               *(char **)(var_9 + 0x5c);
          Position_dependent_options::default_options_.sort_common_._60_4_ =
               *(type_4 *)(var_9 + 0x58);
          *piStack_14 = 0;
          piStack_14[1] = 0;
          return true;
        }
        var_2 = var_10[8];
        var_13 = *(type_5 **)(var_8 + 0x228dec);
        if (-(var_2 >> 0x1f) != 0) {
          var_11 = *var_10;
          puVar14 = (type_9 *)var_10[3];
          iVar13 = var_10[2];
          var_12 = *(type_5 **)(var_11 + 0x10);
          piVar12[1] = (int)puVar14;
          *piVar12 = iVar13;
          if (var_12 == var_13) {
            var_14 = (type_7)(var_10[0x26] << 7) >> 0x1f;
          }
          else {
            var_14 = (*var_12)();
            var_10 = *(int **)(var_9 + 0x44);
            var_11 = *var_10;
          }
          if (var_14 == 0) {
            uVar17 = *(type_9 *)piVar12;
          }
          else if (*(type_5 **)(var_11 + 0x14) == *(type_5 **)(var_8 + 0x22a2a4)) {
            if (-1 < var_10[0x26] << 7) goto LAB_0020a2c0;
            uVar17 = *(type_9 *)(var_10 + 0xe);
          }
          else {
            uVar17 = (**(type_5 **)(var_11 + 0x14))();
            var_10 = *(int **)(var_9 + 0x44);
            var_11 = *var_10;
          }
          var_12 = *(type_5 **)(var_11 + 0xc);
          var_13 = *(type_5 **)(var_8 + 0x228df4);
          *in_a3 = uVar17;
          if (var_12 == var_13) {
            Position_dependent_options::default_options_.sort_common_._60_8_ =
                 *(type_9 *)(var_10 + 10);
          }
          else {
            Position_dependent_options::default_options_.sort_common_._60_8_ = (*var_12)();
            var_10 = *(int **)(var_9 + 0x44);
          }
          var_11 = var_10[5];
          *piStack_14 = var_10[4];
          piStack_14[1] = var_11;
          return var_15(-(var_2 >> 0x1f),0);
        }
        (**(type_5 **)(var_8 + 0x228310))
                  (*(int *)(var_8 + 0x228300) + -0x4fe0,0xc5,
                   *(int *)(var_8 + 0x2281b8) + -0x5328);
LAB_0020a2c0:
        var_2 = *(int *)(var_8 + 0x228300) + -0x4fe0;
        (**(type_5 **)(var_8 + 0x228310))();
        var_14 = *(type_7 *)(var_2 + 0x18);
        if (var_14 != 0) {
          var_7 = true;
          do {
            var_16 = -var_14 & var_14;
            if (var_16 == 2) {
              if (((type_7)puVar14 & 1) == 0) {
                var_7 = false;
              }
            }
            else if (var_16 < 3) {
              if ((var_16 == 1) && (((type_7)puVar14 & 4) == 0)) {
                var_7 = false;
              }
            }
            else if (var_16 == 8) {
              if (((type_7)puVar14 & 2) == 0) {
                var_7 = false;
              }
            }
            else if ((var_16 == 0x10) && ((var_17 & 8) != 0)) {
              var_7 = false;
            }
            var_14 = var_14 & var_14 - 1;
          } while (var_14 != 0);
          return var_7;
        }
        return false;
      }
      if (this->constraint_ == var_4) goto LAB_0020a00c;
    }
  }
  return false;
}


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

uint MASKED(int param_1,int param_2,int param_3)

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  uint uVar4;
  
  iVar2 = *(int *)(param_1 + 8);
  if (iVar2 != *(int *)(param_2 + 8)) {
    return 0;
  }
  if ((iVar2 == 0) ||
     (iVar2 = (*(code *)PTR_memcmp_004368dc)
                        (*(undefined4 *)(param_1 + 4),*(undefined4 *)(param_2 + 4),iVar2),
     iVar2 == 0)) {
    if (param_3 == 1) {
      if (*(int *)(param_1 + 0x2c) == 2) {
LAB_0020a00c:
        if (*(int *)(param_1 + 0x44) != 0) {
          uVar3 = (*(code *)PTR_gettext_00436818)(PTR_DAT_0043226c + -0x5c28);
          (*(code *)PTR_gold_error_00432d84)(uVar3);
        }
        bVar1 = *(byte *)(param_1 + 0x60);
        *(undefined4 *)(param_1 + 0x44) = *(undefined4 *)(param_2 + 0x44);
        *(undefined4 *)(param_2 + 0x44) = 0;
        iVar2 = *(int *)(param_1 + 0x44);
        if (bVar1 == 0) {
          *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff;
          return 1;
        }
        *(uint *)(iVar2 + 0x98) = *(uint *)(iVar2 + 0x98) & 0xfffbffff | 0x40000;
        return (uint)bVar1;
      }
    }
    else {
      if (param_3 != 2) {
        uVar4 = (*(code *)PTR_do_gold_unreachable_004323c4)
                          (PTR_DAT_0043226c + -0x5d54,0xade,PTR_DAT_0043226c + -0x5390);
        return uVar4;
      }
      if (*(int *)(param_1 + 0x2c) == 1) goto LAB_0020a00c;
    }
  }
  return 0;
}

