
valueT S_GET_VALUE(symbolS *s)

{
  char cVar1;
  long lVar2;
  byte bVar3;
  char *format;
  valueT vVar4;
  byte bVar5;
  symbolS *psVar6;
  segT paVar7;
  
  do {
    bVar3 = *(byte *)&s->sy_flags;
    bVar5 = bVar3 & 1;
    if ((bVar3 & 1) == 0) {
      psVar6 = s;
      if ((bVar3 & 4) == 0) goto LAB_0012c353;
    }
    else {
      if ((segT)s->bsym != reg_section) {
        vVar4 = resolve_symbol_value(s);
        return vVar4;
      }
      s = (s->sy_value).X_op_symbol;
      bVar3 = *(byte *)&s->sy_flags;
      if ((bVar3 & 4) == 0) {
LAB_0012c353:
        vVar4 = resolve_symbol_value(s);
        if (finalize_syms == 0) {
          return vVar4;
        }
        bVar3 = *(byte *)&s->sy_flags;
      }
      bVar5 = bVar3 & 1;
      psVar6 = s;
      if ((bVar3 & 1) != 0) {
        if ((segT)s->bsym != reg_section) break;
        psVar6 = (s->sy_value).X_op_symbol;
      }
    }
    if (((psVar6->sy_flags).field_0x1 & 2) == 0) break;
    s = (s->sy_value).X_add_symbol;
  } while( true );
  cVar1 = (s->sy_value).field_0x18;
  if (cVar1 == '\x02') goto LAB_0012c326;
  paVar7 = (segT)s->bsym;
  if (((bVar3 & 4) == 0) || (cVar1 != '\x03')) {
    if (bVar5 != 0) {
      if (reg_section != paVar7) goto LAB_0012c389;
      paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;
    }
LAB_0012c302:
    psVar6 = *(symbolS **)&paVar7->id;
  }
  else {
    if (bVar5 == 0) {
      lVar2 = *(long *)&paVar7->flags;
joined_r0x0012c3fe:
      if ((lVar2 == 0x1948d8) || ((*(byte *)(lVar2 + 0x21) & 0x10) != 0)) goto LAB_0012c326;
      goto LAB_0012c302;
    }
    if (reg_section == paVar7) {
      paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;
      lVar2 = *(long *)&paVar7->flags;
      goto joined_r0x0012c3fe;
    }
    if (paVar7 == (segT)(_bfd_std_section + 0x118)) goto LAB_0012c326;
LAB_0012c389:
    psVar6 = (s->sy_value).X_add_symbol;
  }
  format = (char *)dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5);
  as_bad(format,psVar6);
LAB_0012c326:
  return (s->sy_value).X_add_number;
}



undefined8 thunk_FUN_0012c290(byte *param_1)

{
  long lVar1;
  byte bVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  byte bVar5;
  byte *pbVar6;
  long lVar7;
  
  do {
    bVar2 = *param_1;
    bVar5 = bVar2 & 1;
    if ((bVar2 & 1) == 0) {
      pbVar6 = param_1;
      if ((bVar2 & 4) == 0) goto LAB_0012c353;
    }
    else {
      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {
        uVar4 = FUN_0012b400(param_1);
        return uVar4;
      }
      param_1 = *(byte **)(param_1 + 0x18);
      bVar2 = *param_1;
      if ((bVar2 & 4) == 0) {
LAB_0012c353:
        uVar4 = FUN_0012b400(param_1);
        if (DAT_0019d4d8 == 0) {
          return uVar4;
        }
        bVar2 = *param_1;
      }
      bVar5 = bVar2 & 1;
      pbVar6 = param_1;
      if ((bVar2 & 1) != 0) {
        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;
        pbVar6 = *(byte **)(param_1 + 0x18);
      }
    }
    if ((pbVar6[1] & 2) == 0) break;
    param_1 = *(byte **)(param_1 + 0x10);
  } while( true );
  if (param_1[0x28] == 2) goto LAB_0012c326;
  lVar7 = *(long *)(param_1 + 8);
  if (((bVar2 & 4) == 0) || (param_1[0x28] != 3)) {
    if (bVar5 != 0) {
      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;
      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);
    }
LAB_0012c302:
    uVar4 = *(undefined8 *)(lVar7 + 8);
  }
  else {
    if (bVar5 == 0) {
      lVar1 = *(long *)(lVar7 + 0x20);
joined_r0x0012c3fe:
      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;
      goto LAB_0012c302;
    }
    if (DAT_0019d7b8 == lVar7) {
      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);
      lVar1 = *(long *)(lVar7 + 0x20);
      goto joined_r0x0012c3fe;
    }
    if (lVar7 == 0x1948d8) goto LAB_0012c326;
LAB_0012c389:
    uVar4 = *(undefined8 *)(param_1 + 0x10);
  }
  uVar3 = dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5);
  FUN_0011f6d0(uVar3,uVar4);
LAB_0012c326:
  return *(undefined8 *)(param_1 + 0x20);
}


JMP 0x0012c290
(translation_unit "undefined8 thunk_FUN_0012c290(byte *param_1)\n\n{\n  long lVar1;\n  byte bVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  byte bVar5;\n  byte *pbVar6;\n  long lVar7;\n  \n  do {\n    bVar2 = *param_1;\n    bVar5 = bVar2 & 1;\n    if ((bVar2 & 1) == 0) {\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }\n    if ((pbVar6[1] & 2) == 0) break;\n    param_1 = *(byte **)(param_1 + 0x10);\n  } while( true );\n  if (param_1[0x28] == 2) goto LAB_0012c326;\n  lVar7 = *(long *)(param_1 + 8);\n  if (((bVar2 & 4) == 0) || (param_1[0x28] != 3)) {\n    if (bVar5 != 0) {\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }\nLAB_0012c302:\n    uVar4 = *(undefined8 *)(lVar7 + 8);\n  }\n  else {\n    if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }\n    if (lVar7 == 0x1948d8) goto LAB_0012c326;\nLAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);\n  }\n  uVar3 = dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5);\n  FUN_0011f6d0(uVar3,uVar4);\nLAB_0012c326:\n  return *(undefined8 *)(param_1 + 0x20);\n}\n\n" (function_definition "undefined8 thunk_FUN_0012c290(byte *param_1)\n\n{\n  long lVar1;\n  byte bVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  byte bVar5;\n  byte *pbVar6;\n  long lVar7;\n  \n  do {\n    bVar2 = *param_1;\n    bVar5 = bVar2 & 1;\n    if ((bVar2 & 1) == 0) {\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }\n    if ((pbVar6[1] & 2) == 0) break;\n    param_1 = *(byte **)(param_1 + 0x10);\n  } while( true );\n  if (param_1[0x28] == 2) goto LAB_0012c326;\n  lVar7 = *(long *)(param_1 + 8);\n  if (((bVar2 & 4) == 0) || (param_1[0x28] != 3)) {\n    if (bVar5 != 0) {\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }\nLAB_0012c302:\n    uVar4 = *(undefined8 *)(lVar7 + 8);\n  }\n  else {\n    if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }\n    if (lVar7 == 0x1948d8) goto LAB_0012c326;\nLAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);\n  }\n  uVar3 = dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5);\n  FUN_0011f6d0(uVar3,uVar4);\nLAB_0012c326:\n  return *(undefined8 *)(param_1 + 0x20);\n}" type_identifier (function_declarator "thunk_FUN_0012c290(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  byte bVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  byte bVar5;\n  byte *pbVar6;\n  long lVar7;\n  \n  do {\n    bVar2 = *param_1;\n    bVar5 = bVar2 & 1;\n    if ((bVar2 & 1) == 0) {\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }\n    if ((pbVar6[1] & 2) == 0) break;\n    param_1 = *(byte **)(param_1 + 0x10);\n  } while( true );\n  if (param_1[0x28] == 2) goto LAB_0012c326;\n  lVar7 = *(long *)(param_1 + 8);\n  if (((bVar2 & 4) == 0) || (param_1[0x28] != 3)) {\n    if (bVar5 != 0) {\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }\nLAB_0012c302:\n    uVar4 = *(undefined8 *)(lVar7 + 8);\n  }\n  else {\n    if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }\n    if (lVar7 == 0x1948d8) goto LAB_0012c326;\nLAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);\n  }\n  uVar3 = dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5);\n  FUN_0011f6d0(uVar3,uVar4);\nLAB_0012c326:\n  return *(undefined8 *)(param_1 + 0x20);\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (do_statement "do {\n    bVar2 = *param_1;\n    bVar5 = bVar2 & 1;\n    if ((bVar2 & 1) == 0) {\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }\n    if ((pbVar6[1] & 2) == 0) break;\n    param_1 = *(byte **)(param_1 + 0x10);\n  } while( true );" do (compound_statement "{\n    bVar2 = *param_1;\n    bVar5 = bVar2 & 1;\n    if ((bVar2 & 1) == 0) {\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }\n    if ((pbVar6[1] & 2) == 0) break;\n    param_1 = *(byte **)(param_1 + 0x10);\n  }" { (expression_statement "bVar2 = *param_1;" (assignment_expression "bVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bVar5 = bVar2 & 1;" (assignment_expression "bVar5 = bVar2 & 1" identifier = (binary_expression "bVar2 & 1" identifier & number_literal)) ;) (if_statement "if ((bVar2 & 1) == 0) {\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }" if (parenthesized_expression "((bVar2 & 1) == 0)" ( (binary_expression "(bVar2 & 1) == 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }" { (expression_statement "pbVar6 = param_1;" (assignment_expression "pbVar6 = param_1" identifier = identifier) ;) (if_statement "if ((bVar2 & 4) == 0) goto LAB_0012c353;" if (parenthesized_expression "((bVar2 & 4) == 0)" ( (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0012c353;" goto statement_identifier ;)) }) (else_clause "else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }" else (compound_statement "{\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }" { (if_statement "if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }" if (parenthesized_expression "(*(long *)(param_1 + 8) != DAT_0019d7b8)" ( (binary_expression "*(long *)(param_1 + 8) != DAT_0019d7b8" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }" { (expression_statement "uVar4 = FUN_0012b400(param_1);" (assignment_expression "uVar4 = FUN_0012b400(param_1)" identifier = (call_expression "FUN_0012b400(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (return_statement "return uVar4;" return identifier ;) })) (expression_statement "param_1 = *(byte **)(param_1 + 0x18);" (assignment_expression "param_1 = *(byte **)(param_1 + 0x18)" identifier = (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = *param_1;" (assignment_expression "bVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }" if (parenthesized_expression "((bVar2 & 4) == 0)" ( (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }" { (labeled_statement "LAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);" statement_identifier : (expression_statement "uVar4 = FUN_0012b400(param_1);" (assignment_expression "uVar4 = FUN_0012b400(param_1)" identifier = (call_expression "FUN_0012b400(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;)) (if_statement "if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }" if (parenthesized_expression "(DAT_0019d4d8 == 0)" ( (binary_expression "DAT_0019d4d8 == 0" identifier == number_literal) )) (compound_statement "{\n          return uVar4;\n        }" { (return_statement "return uVar4;" return identifier ;) })) (expression_statement "bVar2 = *param_1;" (assignment_expression "bVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (expression_statement "bVar5 = bVar2 & 1;" (assignment_expression "bVar5 = bVar2 & 1" identifier = (binary_expression "bVar2 & 1" identifier & number_literal)) ;) (expression_statement "pbVar6 = param_1;" (assignment_expression "pbVar6 = param_1" identifier = identifier) ;) (if_statement "if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }" if (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }" { (if_statement "if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;" if (parenthesized_expression "(*(long *)(param_1 + 8) != DAT_0019d7b8)" ( (binary_expression "*(long *)(param_1 + 8) != DAT_0019d7b8" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) != identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar6 = *(byte **)(param_1 + 0x18);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x18)" identifier = (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) })) }))) (if_statement "if ((pbVar6[1] & 2) == 0) break;" if (parenthesized_expression "((pbVar6[1] & 2) == 0)" ( (binary_expression "(pbVar6[1] & 2) == 0" (parenthesized_expression "(pbVar6[1] & 2)" ( (binary_expression "pbVar6[1] & 2" (subscript_expression "pbVar6[1]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_1 = *(byte **)(param_1 + 0x10);" (assignment_expression "param_1 = *(byte **)(param_1 + 0x10)" identifier = (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (if_statement "if (param_1[0x28] == 2) goto LAB_0012c326;" if (parenthesized_expression "(param_1[0x28] == 2)" ( (binary_expression "param_1[0x28] == 2" (subscript_expression "param_1[0x28]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0012c326;" goto statement_identifier ;)) (expression_statement "lVar7 = *(long *)(param_1 + 8);" (assignment_expression "lVar7 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (((bVar2 & 4) == 0) || (param_1[0x28] != 3)) {\n    if (bVar5 != 0) {\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }\nLAB_0012c302:\n    uVar4 = *(undefined8 *)(lVar7 + 8);\n  }\n  else {\n    if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }\n    if (lVar7 == 0x1948d8) goto LAB_0012c326;\nLAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);\n  }" if (parenthesized_expression "(((bVar2 & 4) == 0) || (param_1[0x28] != 3))" ( (binary_expression "((bVar2 & 4) == 0) || (param_1[0x28] != 3)" (parenthesized_expression "((bVar2 & 4) == 0)" ( (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(param_1[0x28] != 3)" ( (binary_expression "param_1[0x28] != 3" (subscript_expression "param_1[0x28]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n    if (bVar5 != 0) {\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }\nLAB_0012c302:\n    uVar4 = *(undefined8 *)(lVar7 + 8);\n  }" { (if_statement "if (bVar5 != 0) {\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }" if (parenthesized_expression "(bVar5 != 0)" ( (binary_expression "bVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }" { (if_statement "if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;" if (parenthesized_expression "(DAT_0019d7b8 != lVar7)" ( (binary_expression "DAT_0019d7b8 != lVar7" identifier != identifier) )) (goto_statement "goto LAB_0012c389;" goto statement_identifier ;)) (expression_statement "lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);" (assignment_expression "lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8)" identifier = (pointer_expression "*(long *)(*(long *)(param_1 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(param_1 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x18) + 8)" ( (binary_expression "*(long *)(param_1 + 0x18) + 8" (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + number_literal) ))))) ;) })) (labeled_statement "LAB_0012c302:\n    uVar4 = *(undefined8 *)(lVar7 + 8);" statement_identifier : (expression_statement "uVar4 = *(undefined8 *)(lVar7 + 8);" (assignment_expression "uVar4 = *(undefined8 *)(lVar7 + 8)" identifier = (pointer_expression "*(undefined8 *)(lVar7 + 8)" * (cast_expression "(undefined8 *)(lVar7 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 8)" ( (binary_expression "lVar7 + 8" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n    if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }\n    if (lVar7 == 0x1948d8) goto LAB_0012c326;\nLAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);\n  }" else (compound_statement "{\n    if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }\n    if (lVar7 == 0x1948d8) goto LAB_0012c326;\nLAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);\n  }" { (if_statement "if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }" if (parenthesized_expression "(bVar5 == 0)" ( (binary_expression "bVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }" { (expression_statement "lVar1 = *(long *)(lVar7 + 0x20);" (assignment_expression "lVar1 = *(long *)(lVar7 + 0x20)" identifier = (pointer_expression "*(long *)(lVar7 + 0x20)" * (cast_expression "(long *)(lVar7 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x20)" ( (binary_expression "lVar7 + 0x20" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;" statement_identifier : (if_statement "if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;" if (parenthesized_expression "((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0))" ( (binary_expression "(lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)" (parenthesized_expression "(lVar1 == 0x1948d8)" ( (binary_expression "lVar1 == 0x1948d8" identifier == number_literal) )) || (parenthesized_expression "((*(byte *)(lVar1 + 0x21) & 0x10) != 0)" ( (binary_expression "(*(byte *)(lVar1 + 0x21) & 0x10) != 0" (parenthesized_expression "(*(byte *)(lVar1 + 0x21) & 0x10)" ( (binary_expression "*(byte *)(lVar1 + 0x21) & 0x10" (pointer_expression "*(byte *)(lVar1 + 0x21)" * (cast_expression "(byte *)(lVar1 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x21)" ( (binary_expression "lVar1 + 0x21" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_0012c326;" goto statement_identifier ;))) (goto_statement "goto LAB_0012c302;" goto statement_identifier ;) })) (if_statement "if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }" if (parenthesized_expression "(DAT_0019d7b8 == lVar7)" ( (binary_expression "DAT_0019d7b8 == lVar7" identifier == identifier) )) (compound_statement "{\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }" { (expression_statement "lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);" (assignment_expression "lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8)" identifier = (pointer_expression "*(long *)(*(long *)(param_1 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(param_1 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x18) + 8)" ( (binary_expression "*(long *)(param_1 + 0x18) + 8" (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "lVar1 = *(long *)(lVar7 + 0x20);" (assignment_expression "lVar1 = *(long *)(lVar7 + 0x20)" identifier = (pointer_expression "*(long *)(lVar7 + 0x20)" * (cast_expression "(long *)(lVar7 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x20)" ( (binary_expression "lVar7 + 0x20" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x0012c3fe;" goto statement_identifier ;) })) (if_statement "if (lVar7 == 0x1948d8) goto LAB_0012c326;" if (parenthesized_expression "(lVar7 == 0x1948d8)" ( (binary_expression "lVar7 == 0x1948d8" identifier == number_literal) )) (goto_statement "goto LAB_0012c326;" goto statement_identifier ;)) (labeled_statement "LAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);" statement_identifier : (expression_statement "uVar4 = *(undefined8 *)(param_1 + 0x10);" (assignment_expression "uVar4 = *(undefined8 *)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;)) }))) (expression_statement "uVar3 = dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5);" (assignment_expression "uVar3 = dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5)" identifier = (call_expression "dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5)" identifier (argument_list "(0,"attempt to get value of unresolved symbol `%s\'",5)" ( number_literal , (string_literal ""attempt to get value of unresolved symbol `%s\'"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_0011f6d0(uVar3,uVar4);" (call_expression "FUN_0011f6d0(uVar3,uVar4)" identifier (argument_list "(uVar3,uVar4)" ( identifier , identifier ))) ;) (labeled_statement "LAB_0012c326:\n  return *(undefined8 *)(param_1 + 0x20);" statement_identifier : (return_statement "return *(undefined8 *)(param_1 + 0x20);" return (pointer_expression "*(undefined8 *)(param_1 + 0x20)" * (cast_expression "(undefined8 *)(param_1 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) ;)) })))
(translation_unit "valueT S_GET_VALUE(symbolS *s)\n\n{\n  char cVar1;\n  long lVar2;\n  byte bVar3;\n  char *format;\n  valueT vVar4;\n  byte bVar5;\n  symbolS *psVar6;\n  segT paVar7;\n  \n  do {\n    bVar3 = *(byte *)&s->sy_flags;\n    bVar5 = bVar3 & 1;\n    if ((bVar3 & 1) == 0) {\n      psVar6 = s;\n      if ((bVar3 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if ((segT)s->bsym != reg_section) {\n        vVar4 = resolve_symbol_value(s);\n        return vVar4;\n      }\n      s = (s->sy_value).X_op_symbol;\n      bVar3 = *(byte *)&s->sy_flags;\n      if ((bVar3 & 4) == 0) {\nLAB_0012c353:\n        vVar4 = resolve_symbol_value(s);\n        if (finalize_syms == 0) {\n          return vVar4;\n        }\n        bVar3 = *(byte *)&s->sy_flags;\n      }\n      bVar5 = bVar3 & 1;\n      psVar6 = s;\n      if ((bVar3 & 1) != 0) {\n        if ((segT)s->bsym != reg_section) break;\n        psVar6 = (s->sy_value).X_op_symbol;\n      }\n    }\n    if (((psVar6->sy_flags).field_0x1 & 2) == 0) break;\n    s = (s->sy_value).X_add_symbol;\n  } while( true );\n  cVar1 = (s->sy_value).field_0x18;\n  if (cVar1 == '\x02') goto LAB_0012c326;\n  paVar7 = (segT)s->bsym;\n  if (((bVar3 & 4) == 0) || (cVar1 != '\x03')) {\n    if (bVar5 != 0) {\n      if (reg_section != paVar7) goto LAB_0012c389;\n      paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;\n    }\nLAB_0012c302:\n    psVar6 = *(symbolS **)&paVar7->id;\n  }\n  else {\n    if (bVar5 == 0) {\n      lVar2 = *(long *)&paVar7->flags;\njoined_r0x0012c3fe:\n      if ((lVar2 == 0x1948d8) || ((*(byte *)(lVar2 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (reg_section == paVar7) {\n      paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;\n      lVar2 = *(long *)&paVar7->flags;\n      goto joined_r0x0012c3fe;\n    }\n    if (paVar7 == (segT)(_bfd_std_section + 0x118)) goto LAB_0012c326;\nLAB_0012c389:\n    psVar6 = (s->sy_value).X_add_symbol;\n  }\n  format = (char *)dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5);\n  as_bad(format,psVar6);\nLAB_0012c326:\n  return (s->sy_value).X_add_number;\n}\n\n" (function_definition "valueT S_GET_VALUE(symbolS *s)\n\n{\n  char cVar1;\n  long lVar2;\n  byte bVar3;\n  char *format;\n  valueT vVar4;\n  byte bVar5;\n  symbolS *psVar6;\n  segT paVar7;\n  \n  do {\n    bVar3 = *(byte *)&s->sy_flags;\n    bVar5 = bVar3 & 1;\n    if ((bVar3 & 1) == 0) {\n      psVar6 = s;\n      if ((bVar3 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if ((segT)s->bsym != reg_section) {\n        vVar4 = resolve_symbol_value(s);\n        return vVar4;\n      }\n      s = (s->sy_value).X_op_symbol;\n      bVar3 = *(byte *)&s->sy_flags;\n      if ((bVar3 & 4) == 0) {\nLAB_0012c353:\n        vVar4 = resolve_symbol_value(s);\n        if (finalize_syms == 0) {\n          return vVar4;\n        }\n        bVar3 = *(byte *)&s->sy_flags;\n      }\n      bVar5 = bVar3 & 1;\n      psVar6 = s;\n      if ((bVar3 & 1) != 0) {\n        if ((segT)s->bsym != reg_section) break;\n        psVar6 = (s->sy_value).X_op_symbol;\n      }\n    }\n    if (((psVar6->sy_flags).field_0x1 & 2) == 0) break;\n    s = (s->sy_value).X_add_symbol;\n  } while( true );\n  cVar1 = (s->sy_value).field_0x18;\n  if (cVar1 == '\x02') goto LAB_0012c326;\n  paVar7 = (segT)s->bsym;\n  if (((bVar3 & 4) == 0) || (cVar1 != '\x03')) {\n    if (bVar5 != 0) {\n      if (reg_section != paVar7) goto LAB_0012c389;\n      paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;\n    }\nLAB_0012c302:\n    psVar6 = *(symbolS **)&paVar7->id;\n  }\n  else {\n    if (bVar5 == 0) {\n      lVar2 = *(long *)&paVar7->flags;\njoined_r0x0012c3fe:\n      if ((lVar2 == 0x1948d8) || ((*(byte *)(lVar2 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (reg_section == paVar7) {\n      paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;\n      lVar2 = *(long *)&paVar7->flags;\n      goto joined_r0x0012c3fe;\n    }\n    if (paVar7 == (segT)(_bfd_std_section + 0x118)) goto LAB_0012c326;\nLAB_0012c389:\n    psVar6 = (s->sy_value).X_add_symbol;\n  }\n  format = (char *)dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5);\n  as_bad(format,psVar6);\nLAB_0012c326:\n  return (s->sy_value).X_add_number;\n}" type_identifier (function_declarator "S_GET_VALUE(symbolS *s)" identifier (parameter_list "(symbolS *s)" ( (parameter_declaration "symbolS *s" type_identifier (pointer_declarator "*s" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  long lVar2;\n  byte bVar3;\n  char *format;\n  valueT vVar4;\n  byte bVar5;\n  symbolS *psVar6;\n  segT paVar7;\n  \n  do {\n    bVar3 = *(byte *)&s->sy_flags;\n    bVar5 = bVar3 & 1;\n    if ((bVar3 & 1) == 0) {\n      psVar6 = s;\n      if ((bVar3 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if ((segT)s->bsym != reg_section) {\n        vVar4 = resolve_symbol_value(s);\n        return vVar4;\n      }\n      s = (s->sy_value).X_op_symbol;\n      bVar3 = *(byte *)&s->sy_flags;\n      if ((bVar3 & 4) == 0) {\nLAB_0012c353:\n        vVar4 = resolve_symbol_value(s);\n        if (finalize_syms == 0) {\n          return vVar4;\n        }\n        bVar3 = *(byte *)&s->sy_flags;\n      }\n      bVar5 = bVar3 & 1;\n      psVar6 = s;\n      if ((bVar3 & 1) != 0) {\n        if ((segT)s->bsym != reg_section) break;\n        psVar6 = (s->sy_value).X_op_symbol;\n      }\n    }\n    if (((psVar6->sy_flags).field_0x1 & 2) == 0) break;\n    s = (s->sy_value).X_add_symbol;\n  } while( true );\n  cVar1 = (s->sy_value).field_0x18;\n  if (cVar1 == '\x02') goto LAB_0012c326;\n  paVar7 = (segT)s->bsym;\n  if (((bVar3 & 4) == 0) || (cVar1 != '\x03')) {\n    if (bVar5 != 0) {\n      if (reg_section != paVar7) goto LAB_0012c389;\n      paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;\n    }\nLAB_0012c302:\n    psVar6 = *(symbolS **)&paVar7->id;\n  }\n  else {\n    if (bVar5 == 0) {\n      lVar2 = *(long *)&paVar7->flags;\njoined_r0x0012c3fe:\n      if ((lVar2 == 0x1948d8) || ((*(byte *)(lVar2 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (reg_section == paVar7) {\n      paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;\n      lVar2 = *(long *)&paVar7->flags;\n      goto joined_r0x0012c3fe;\n    }\n    if (paVar7 == (segT)(_bfd_std_section + 0x118)) goto LAB_0012c326;\nLAB_0012c389:\n    psVar6 = (s->sy_value).X_add_symbol;\n  }\n  format = (char *)dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5);\n  as_bad(format,psVar6);\nLAB_0012c326:\n  return (s->sy_value).X_add_number;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "valueT vVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "symbolS *psVar6;" type_identifier (pointer_declarator "*psVar6" * identifier) ;) (declaration "segT paVar7;" type_identifier identifier ;) (do_statement "do {\n    bVar3 = *(byte *)&s->sy_flags;\n    bVar5 = bVar3 & 1;\n    if ((bVar3 & 1) == 0) {\n      psVar6 = s;\n      if ((bVar3 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if ((segT)s->bsym != reg_section) {\n        vVar4 = resolve_symbol_value(s);\n        return vVar4;\n      }\n      s = (s->sy_value).X_op_symbol;\n      bVar3 = *(byte *)&s->sy_flags;\n      if ((bVar3 & 4) == 0) {\nLAB_0012c353:\n        vVar4 = resolve_symbol_value(s);\n        if (finalize_syms == 0) {\n          return vVar4;\n        }\n        bVar3 = *(byte *)&s->sy_flags;\n      }\n      bVar5 = bVar3 & 1;\n      psVar6 = s;\n      if ((bVar3 & 1) != 0) {\n        if ((segT)s->bsym != reg_section) break;\n        psVar6 = (s->sy_value).X_op_symbol;\n      }\n    }\n    if (((psVar6->sy_flags).field_0x1 & 2) == 0) break;\n    s = (s->sy_value).X_add_symbol;\n  } while( true );" do (compound_statement "{\n    bVar3 = *(byte *)&s->sy_flags;\n    bVar5 = bVar3 & 1;\n    if ((bVar3 & 1) == 0) {\n      psVar6 = s;\n      if ((bVar3 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if ((segT)s->bsym != reg_section) {\n        vVar4 = resolve_symbol_value(s);\n        return vVar4;\n      }\n      s = (s->sy_value).X_op_symbol;\n      bVar3 = *(byte *)&s->sy_flags;\n      if ((bVar3 & 4) == 0) {\nLAB_0012c353:\n        vVar4 = resolve_symbol_value(s);\n        if (finalize_syms == 0) {\n          return vVar4;\n        }\n        bVar3 = *(byte *)&s->sy_flags;\n      }\n      bVar5 = bVar3 & 1;\n      psVar6 = s;\n      if ((bVar3 & 1) != 0) {\n        if ((segT)s->bsym != reg_section) break;\n        psVar6 = (s->sy_value).X_op_symbol;\n      }\n    }\n    if (((psVar6->sy_flags).field_0x1 & 2) == 0) break;\n    s = (s->sy_value).X_add_symbol;\n  }" { (expression_statement "bVar3 = *(byte *)&s->sy_flags;" (assignment_expression "bVar3 = *(byte *)&s->sy_flags" identifier = (pointer_expression "*(byte *)&s->sy_flags" * (cast_expression "(byte *)&s->sy_flags" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&s->sy_flags" & (field_expression "s->sy_flags" identifier -> field_identifier))))) ;) (expression_statement "bVar5 = bVar3 & 1;" (assignment_expression "bVar5 = bVar3 & 1" identifier = (binary_expression "bVar3 & 1" identifier & number_literal)) ;) (if_statement "if ((bVar3 & 1) == 0) {\n      psVar6 = s;\n      if ((bVar3 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if ((segT)s->bsym != reg_section) {\n        vVar4 = resolve_symbol_value(s);\n        return vVar4;\n      }\n      s = (s->sy_value).X_op_symbol;\n      bVar3 = *(byte *)&s->sy_flags;\n      if ((bVar3 & 4) == 0) {\nLAB_0012c353:\n        vVar4 = resolve_symbol_value(s);\n        if (finalize_syms == 0) {\n          return vVar4;\n        }\n        bVar3 = *(byte *)&s->sy_flags;\n      }\n      bVar5 = bVar3 & 1;\n      psVar6 = s;\n      if ((bVar3 & 1) != 0) {\n        if ((segT)s->bsym != reg_section) break;\n        psVar6 = (s->sy_value).X_op_symbol;\n      }\n    }" if (parenthesized_expression "((bVar3 & 1) == 0)" ( (binary_expression "(bVar3 & 1) == 0" (parenthesized_expression "(bVar3 & 1)" ( (binary_expression "bVar3 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      psVar6 = s;\n      if ((bVar3 & 4) == 0) goto LAB_0012c353;\n    }" { (expression_statement "psVar6 = s;" (assignment_expression "psVar6 = s" identifier = identifier) ;) (if_statement "if ((bVar3 & 4) == 0) goto LAB_0012c353;" if (parenthesized_expression "((bVar3 & 4) == 0)" ( (binary_expression "(bVar3 & 4) == 0" (parenthesized_expression "(bVar3 & 4)" ( (binary_expression "bVar3 & 4" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0012c353;" goto statement_identifier ;)) }) (else_clause "else {\n      if ((segT)s->bsym != reg_section) {\n        vVar4 = resolve_symbol_value(s);\n        return vVar4;\n      }\n      s = (s->sy_value).X_op_symbol;\n      bVar3 = *(byte *)&s->sy_flags;\n      if ((bVar3 & 4) == 0) {\nLAB_0012c353:\n        vVar4 = resolve_symbol_value(s);\n        if (finalize_syms == 0) {\n          return vVar4;\n        }\n        bVar3 = *(byte *)&s->sy_flags;\n      }\n      bVar5 = bVar3 & 1;\n      psVar6 = s;\n      if ((bVar3 & 1) != 0) {\n        if ((segT)s->bsym != reg_section) break;\n        psVar6 = (s->sy_value).X_op_symbol;\n      }\n    }" else (compound_statement "{\n      if ((segT)s->bsym != reg_section) {\n        vVar4 = resolve_symbol_value(s);\n        return vVar4;\n      }\n      s = (s->sy_value).X_op_symbol;\n      bVar3 = *(byte *)&s->sy_flags;\n      if ((bVar3 & 4) == 0) {\nLAB_0012c353:\n        vVar4 = resolve_symbol_value(s);\n        if (finalize_syms == 0) {\n          return vVar4;\n        }\n        bVar3 = *(byte *)&s->sy_flags;\n      }\n      bVar5 = bVar3 & 1;\n      psVar6 = s;\n      if ((bVar3 & 1) != 0) {\n        if ((segT)s->bsym != reg_section) break;\n        psVar6 = (s->sy_value).X_op_symbol;\n      }\n    }" { (if_statement "if ((segT)s->bsym != reg_section) {\n        vVar4 = resolve_symbol_value(s);\n        return vVar4;\n      }" if (parenthesized_expression "((segT)s->bsym != reg_section)" ( (binary_expression "(segT)s->bsym != reg_section" (cast_expression "(segT)s->bsym" ( (type_descriptor "segT" type_identifier) ) (field_expression "s->bsym" identifier -> field_identifier)) != identifier) )) (compound_statement "{\n        vVar4 = resolve_symbol_value(s);\n        return vVar4;\n      }" { (expression_statement "vVar4 = resolve_symbol_value(s);" (assignment_expression "vVar4 = resolve_symbol_value(s)" identifier = (call_expression "resolve_symbol_value(s)" identifier (argument_list "(s)" ( identifier )))) ;) (return_statement "return vVar4;" return identifier ;) })) (expression_statement "s = (s->sy_value).X_op_symbol;" (assignment_expression "s = (s->sy_value).X_op_symbol" identifier = (field_expression "(s->sy_value).X_op_symbol" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "bVar3 = *(byte *)&s->sy_flags;" (assignment_expression "bVar3 = *(byte *)&s->sy_flags" identifier = (pointer_expression "*(byte *)&s->sy_flags" * (cast_expression "(byte *)&s->sy_flags" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&s->sy_flags" & (field_expression "s->sy_flags" identifier -> field_identifier))))) ;) (if_statement "if ((bVar3 & 4) == 0) {\nLAB_0012c353:\n        vVar4 = resolve_symbol_value(s);\n        if (finalize_syms == 0) {\n          return vVar4;\n        }\n        bVar3 = *(byte *)&s->sy_flags;\n      }" if (parenthesized_expression "((bVar3 & 4) == 0)" ( (binary_expression "(bVar3 & 4) == 0" (parenthesized_expression "(bVar3 & 4)" ( (binary_expression "bVar3 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0012c353:\n        vVar4 = resolve_symbol_value(s);\n        if (finalize_syms == 0) {\n          return vVar4;\n        }\n        bVar3 = *(byte *)&s->sy_flags;\n      }" { (labeled_statement "LAB_0012c353:\n        vVar4 = resolve_symbol_value(s);" statement_identifier : (expression_statement "vVar4 = resolve_symbol_value(s);" (assignment_expression "vVar4 = resolve_symbol_value(s)" identifier = (call_expression "resolve_symbol_value(s)" identifier (argument_list "(s)" ( identifier )))) ;)) (if_statement "if (finalize_syms == 0) {\n          return vVar4;\n        }" if (parenthesized_expression "(finalize_syms == 0)" ( (binary_expression "finalize_syms == 0" identifier == number_literal) )) (compound_statement "{\n          return vVar4;\n        }" { (return_statement "return vVar4;" return identifier ;) })) (expression_statement "bVar3 = *(byte *)&s->sy_flags;" (assignment_expression "bVar3 = *(byte *)&s->sy_flags" identifier = (pointer_expression "*(byte *)&s->sy_flags" * (cast_expression "(byte *)&s->sy_flags" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&s->sy_flags" & (field_expression "s->sy_flags" identifier -> field_identifier))))) ;) })) (expression_statement "bVar5 = bVar3 & 1;" (assignment_expression "bVar5 = bVar3 & 1" identifier = (binary_expression "bVar3 & 1" identifier & number_literal)) ;) (expression_statement "psVar6 = s;" (assignment_expression "psVar6 = s" identifier = identifier) ;) (if_statement "if ((bVar3 & 1) != 0) {\n        if ((segT)s->bsym != reg_section) break;\n        psVar6 = (s->sy_value).X_op_symbol;\n      }" if (parenthesized_expression "((bVar3 & 1) != 0)" ( (binary_expression "(bVar3 & 1) != 0" (parenthesized_expression "(bVar3 & 1)" ( (binary_expression "bVar3 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        if ((segT)s->bsym != reg_section) break;\n        psVar6 = (s->sy_value).X_op_symbol;\n      }" { (if_statement "if ((segT)s->bsym != reg_section) break;" if (parenthesized_expression "((segT)s->bsym != reg_section)" ( (binary_expression "(segT)s->bsym != reg_section" (cast_expression "(segT)s->bsym" ( (type_descriptor "segT" type_identifier) ) (field_expression "s->bsym" identifier -> field_identifier)) != identifier) )) (break_statement "break;" break ;)) (expression_statement "psVar6 = (s->sy_value).X_op_symbol;" (assignment_expression "psVar6 = (s->sy_value).X_op_symbol" identifier = (field_expression "(s->sy_value).X_op_symbol" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier)) ;) })) }))) (if_statement "if (((psVar6->sy_flags).field_0x1 & 2) == 0) break;" if (parenthesized_expression "(((psVar6->sy_flags).field_0x1 & 2) == 0)" ( (binary_expression "((psVar6->sy_flags).field_0x1 & 2) == 0" (parenthesized_expression "((psVar6->sy_flags).field_0x1 & 2)" ( (binary_expression "(psVar6->sy_flags).field_0x1 & 2" (field_expression "(psVar6->sy_flags).field_0x1" (parenthesized_expression "(psVar6->sy_flags)" ( (field_expression "psVar6->sy_flags" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "s = (s->sy_value).X_add_symbol;" (assignment_expression "s = (s->sy_value).X_add_symbol" identifier = (field_expression "(s->sy_value).X_add_symbol" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (expression_statement "cVar1 = (s->sy_value).field_0x18;" (assignment_expression "cVar1 = (s->sy_value).field_0x18" identifier = (field_expression "(s->sy_value).field_0x18" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (cVar1 == '\x02') goto LAB_0012c326;" if (parenthesized_expression "(cVar1 == '\x02')" ( (binary_expression "cVar1 == '\x02'" identifier == (char_literal "'\x02'" ' escape_sequence ')) )) (goto_statement "goto LAB_0012c326;" goto statement_identifier ;)) (expression_statement "paVar7 = (segT)s->bsym;" (assignment_expression "paVar7 = (segT)s->bsym" identifier = (cast_expression "(segT)s->bsym" ( (type_descriptor "segT" type_identifier) ) (field_expression "s->bsym" identifier -> field_identifier))) ;) (if_statement "if (((bVar3 & 4) == 0) || (cVar1 != '\x03')) {\n    if (bVar5 != 0) {\n      if (reg_section != paVar7) goto LAB_0012c389;\n      paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;\n    }\nLAB_0012c302:\n    psVar6 = *(symbolS **)&paVar7->id;\n  }\n  else {\n    if (bVar5 == 0) {\n      lVar2 = *(long *)&paVar7->flags;\njoined_r0x0012c3fe:\n      if ((lVar2 == 0x1948d8) || ((*(byte *)(lVar2 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (reg_section == paVar7) {\n      paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;\n      lVar2 = *(long *)&paVar7->flags;\n      goto joined_r0x0012c3fe;\n    }\n    if (paVar7 == (segT)(_bfd_std_section + 0x118)) goto LAB_0012c326;\nLAB_0012c389:\n    psVar6 = (s->sy_value).X_add_symbol;\n  }" if (parenthesized_expression "(((bVar3 & 4) == 0) || (cVar1 != '\x03'))" ( (binary_expression "((bVar3 & 4) == 0) || (cVar1 != '\x03')" (parenthesized_expression "((bVar3 & 4) == 0)" ( (binary_expression "(bVar3 & 4) == 0" (parenthesized_expression "(bVar3 & 4)" ( (binary_expression "bVar3 & 4" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(cVar1 != '\x03')" ( (binary_expression "cVar1 != '\x03'" identifier != (char_literal "'\x03'" ' escape_sequence ')) ))) )) (compound_statement "{\n    if (bVar5 != 0) {\n      if (reg_section != paVar7) goto LAB_0012c389;\n      paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;\n    }\nLAB_0012c302:\n    psVar6 = *(symbolS **)&paVar7->id;\n  }" { (if_statement "if (bVar5 != 0) {\n      if (reg_section != paVar7) goto LAB_0012c389;\n      paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;\n    }" if (parenthesized_expression "(bVar5 != 0)" ( (binary_expression "bVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      if (reg_section != paVar7) goto LAB_0012c389;\n      paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;\n    }" { (if_statement "if (reg_section != paVar7) goto LAB_0012c389;" if (parenthesized_expression "(reg_section != paVar7)" ( (binary_expression "reg_section != paVar7" identifier != identifier) )) (goto_statement "goto LAB_0012c389;" goto statement_identifier ;)) (expression_statement "paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;" (assignment_expression "paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym" identifier = (field_expression "(segT)((s->sy_value).X_op_symbol)->bsym" (call_expression "(segT)((s->sy_value).X_op_symbol)" (parenthesized_expression "(segT)" ( identifier )) (argument_list "((s->sy_value).X_op_symbol)" ( (field_expression "(s->sy_value).X_op_symbol" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier) ))) -> field_identifier)) ;) })) (labeled_statement "LAB_0012c302:\n    psVar6 = *(symbolS **)&paVar7->id;" statement_identifier : (expression_statement "psVar6 = *(symbolS **)&paVar7->id;" (assignment_expression "psVar6 = *(symbolS **)&paVar7->id" identifier = (pointer_expression "*(symbolS **)&paVar7->id" * (cast_expression "(symbolS **)&paVar7->id" ( (type_descriptor "symbolS **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&paVar7->id" & (field_expression "paVar7->id" identifier -> field_identifier))))) ;)) }) (else_clause "else {\n    if (bVar5 == 0) {\n      lVar2 = *(long *)&paVar7->flags;\njoined_r0x0012c3fe:\n      if ((lVar2 == 0x1948d8) || ((*(byte *)(lVar2 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (reg_section == paVar7) {\n      paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;\n      lVar2 = *(long *)&paVar7->flags;\n      goto joined_r0x0012c3fe;\n    }\n    if (paVar7 == (segT)(_bfd_std_section + 0x118)) goto LAB_0012c326;\nLAB_0012c389:\n    psVar6 = (s->sy_value).X_add_symbol;\n  }" else (compound_statement "{\n    if (bVar5 == 0) {\n      lVar2 = *(long *)&paVar7->flags;\njoined_r0x0012c3fe:\n      if ((lVar2 == 0x1948d8) || ((*(byte *)(lVar2 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (reg_section == paVar7) {\n      paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;\n      lVar2 = *(long *)&paVar7->flags;\n      goto joined_r0x0012c3fe;\n    }\n    if (paVar7 == (segT)(_bfd_std_section + 0x118)) goto LAB_0012c326;\nLAB_0012c389:\n    psVar6 = (s->sy_value).X_add_symbol;\n  }" { (if_statement "if (bVar5 == 0) {\n      lVar2 = *(long *)&paVar7->flags;\njoined_r0x0012c3fe:\n      if ((lVar2 == 0x1948d8) || ((*(byte *)(lVar2 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }" if (parenthesized_expression "(bVar5 == 0)" ( (binary_expression "bVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      lVar2 = *(long *)&paVar7->flags;\njoined_r0x0012c3fe:\n      if ((lVar2 == 0x1948d8) || ((*(byte *)(lVar2 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }" { (expression_statement "lVar2 = *(long *)&paVar7->flags;" (assignment_expression "lVar2 = *(long *)&paVar7->flags" identifier = (pointer_expression "*(long *)&paVar7->flags" * (cast_expression "(long *)&paVar7->flags" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&paVar7->flags" & (field_expression "paVar7->flags" identifier -> field_identifier))))) ;) (labeled_statement "joined_r0x0012c3fe:\n      if ((lVar2 == 0x1948d8) || ((*(byte *)(lVar2 + 0x21) & 0x10) != 0)) goto LAB_0012c326;" statement_identifier : (if_statement "if ((lVar2 == 0x1948d8) || ((*(byte *)(lVar2 + 0x21) & 0x10) != 0)) goto LAB_0012c326;" if (parenthesized_expression "((lVar2 == 0x1948d8) || ((*(byte *)(lVar2 + 0x21) & 0x10) != 0))" ( (binary_expression "(lVar2 == 0x1948d8) || ((*(byte *)(lVar2 + 0x21) & 0x10) != 0)" (parenthesized_expression "(lVar2 == 0x1948d8)" ( (binary_expression "lVar2 == 0x1948d8" identifier == number_literal) )) || (parenthesized_expression "((*(byte *)(lVar2 + 0x21) & 0x10) != 0)" ( (binary_expression "(*(byte *)(lVar2 + 0x21) & 0x10) != 0" (parenthesized_expression "(*(byte *)(lVar2 + 0x21) & 0x10)" ( (binary_expression "*(byte *)(lVar2 + 0x21) & 0x10" (pointer_expression "*(byte *)(lVar2 + 0x21)" * (cast_expression "(byte *)(lVar2 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x21)" ( (binary_expression "lVar2 + 0x21" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_0012c326;" goto statement_identifier ;))) (goto_statement "goto LAB_0012c302;" goto statement_identifier ;) })) (if_statement "if (reg_section == paVar7) {\n      paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;\n      lVar2 = *(long *)&paVar7->flags;\n      goto joined_r0x0012c3fe;\n    }" if (parenthesized_expression "(reg_section == paVar7)" ( (binary_expression "reg_section == paVar7" identifier == identifier) )) (compound_statement "{\n      paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;\n      lVar2 = *(long *)&paVar7->flags;\n      goto joined_r0x0012c3fe;\n    }" { (expression_statement "paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym;" (assignment_expression "paVar7 = (segT)((s->sy_value).X_op_symbol)->bsym" identifier = (field_expression "(segT)((s->sy_value).X_op_symbol)->bsym" (call_expression "(segT)((s->sy_value).X_op_symbol)" (parenthesized_expression "(segT)" ( identifier )) (argument_list "((s->sy_value).X_op_symbol)" ( (field_expression "(s->sy_value).X_op_symbol" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier) ))) -> field_identifier)) ;) (expression_statement "lVar2 = *(long *)&paVar7->flags;" (assignment_expression "lVar2 = *(long *)&paVar7->flags" identifier = (pointer_expression "*(long *)&paVar7->flags" * (cast_expression "(long *)&paVar7->flags" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&paVar7->flags" & (field_expression "paVar7->flags" identifier -> field_identifier))))) ;) (goto_statement "goto joined_r0x0012c3fe;" goto statement_identifier ;) })) (if_statement "if (paVar7 == (segT)(_bfd_std_section + 0x118)) goto LAB_0012c326;" if (parenthesized_expression "(paVar7 == (segT)(_bfd_std_section + 0x118))" ( (binary_expression "paVar7 == (segT)(_bfd_std_section + 0x118)" identifier == (call_expression "(segT)(_bfd_std_section + 0x118)" (parenthesized_expression "(segT)" ( identifier )) (argument_list "(_bfd_std_section + 0x118)" ( (binary_expression "_bfd_std_section + 0x118" identifier + number_literal) )))) )) (goto_statement "goto LAB_0012c326;" goto statement_identifier ;)) (labeled_statement "LAB_0012c389:\n    psVar6 = (s->sy_value).X_add_symbol;" statement_identifier : (expression_statement "psVar6 = (s->sy_value).X_add_symbol;" (assignment_expression "psVar6 = (s->sy_value).X_add_symbol" identifier = (field_expression "(s->sy_value).X_add_symbol" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier)) ;)) }))) (expression_statement "format = (char *)dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5);" (assignment_expression "format = (char *)dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5)" identifier = (cast_expression "(char *)dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5)" identifier (argument_list "(0,"attempt to get value of unresolved symbol `%s\'",5)" ( number_literal , (string_literal ""attempt to get value of unresolved symbol `%s\'"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "as_bad(format,psVar6);" (call_expression "as_bad(format,psVar6)" identifier (argument_list "(format,psVar6)" ( identifier , identifier ))) ;) (labeled_statement "LAB_0012c326:\n  return (s->sy_value).X_add_number;" statement_identifier : (return_statement "return (s->sy_value).X_add_number;" return (field_expression "(s->sy_value).X_add_number" (parenthesized_expression "(s->sy_value)" ( (field_expression "s->sy_value" identifier -> field_identifier) )) . field_identifier) ;)) })))
(translation_unit "undefined8 thunk_FUN_0012c290(byte *param_1)\n\n{\n  long lVar1;\n  byte bVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  byte bVar5;\n  byte *pbVar6;\n  long lVar7;\n  \n  do {\n    bVar2 = *param_1;\n    bVar5 = bVar2 & 1;\n    if ((bVar2 & 1) == 0) {\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }\n    if ((pbVar6[1] & 2) == 0) break;\n    param_1 = *(byte **)(param_1 + 0x10);\n  } while( true );\n  if (param_1[0x28] == 2) goto LAB_0012c326;\n  lVar7 = *(long *)(param_1 + 8);\n  if (((bVar2 & 4) == 0) || (param_1[0x28] != 3)) {\n    if (bVar5 != 0) {\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }\nLAB_0012c302:\n    uVar4 = *(undefined8 *)(lVar7 + 8);\n  }\n  else {\n    if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }\n    if (lVar7 == 0x1948d8) goto LAB_0012c326;\nLAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);\n  }\n  uVar3 = dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5);\n  FUN_0011f6d0(uVar3,uVar4);\nLAB_0012c326:\n  return *(undefined8 *)(param_1 + 0x20);\n}\n\n" (function_definition "undefined8 thunk_FUN_0012c290(byte *param_1)\n\n{\n  long lVar1;\n  byte bVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  byte bVar5;\n  byte *pbVar6;\n  long lVar7;\n  \n  do {\n    bVar2 = *param_1;\n    bVar5 = bVar2 & 1;\n    if ((bVar2 & 1) == 0) {\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }\n    if ((pbVar6[1] & 2) == 0) break;\n    param_1 = *(byte **)(param_1 + 0x10);\n  } while( true );\n  if (param_1[0x28] == 2) goto LAB_0012c326;\n  lVar7 = *(long *)(param_1 + 8);\n  if (((bVar2 & 4) == 0) || (param_1[0x28] != 3)) {\n    if (bVar5 != 0) {\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }\nLAB_0012c302:\n    uVar4 = *(undefined8 *)(lVar7 + 8);\n  }\n  else {\n    if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }\n    if (lVar7 == 0x1948d8) goto LAB_0012c326;\nLAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);\n  }\n  uVar3 = dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5);\n  FUN_0011f6d0(uVar3,uVar4);\nLAB_0012c326:\n  return *(undefined8 *)(param_1 + 0x20);\n}" type_identifier (function_declarator "thunk_FUN_0012c290(byte *param_1)" identifier (parameter_list "(byte *param_1)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  long lVar1;\n  byte bVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  byte bVar5;\n  byte *pbVar6;\n  long lVar7;\n  \n  do {\n    bVar2 = *param_1;\n    bVar5 = bVar2 & 1;\n    if ((bVar2 & 1) == 0) {\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }\n    if ((pbVar6[1] & 2) == 0) break;\n    param_1 = *(byte **)(param_1 + 0x10);\n  } while( true );\n  if (param_1[0x28] == 2) goto LAB_0012c326;\n  lVar7 = *(long *)(param_1 + 8);\n  if (((bVar2 & 4) == 0) || (param_1[0x28] != 3)) {\n    if (bVar5 != 0) {\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }\nLAB_0012c302:\n    uVar4 = *(undefined8 *)(lVar7 + 8);\n  }\n  else {\n    if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }\n    if (lVar7 == 0x1948d8) goto LAB_0012c326;\nLAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);\n  }\n  uVar3 = dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5);\n  FUN_0011f6d0(uVar3,uVar4);\nLAB_0012c326:\n  return *(undefined8 *)(param_1 + 0x20);\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (do_statement "do {\n    bVar2 = *param_1;\n    bVar5 = bVar2 & 1;\n    if ((bVar2 & 1) == 0) {\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }\n    if ((pbVar6[1] & 2) == 0) break;\n    param_1 = *(byte **)(param_1 + 0x10);\n  } while( true );" do (compound_statement "{\n    bVar2 = *param_1;\n    bVar5 = bVar2 & 1;\n    if ((bVar2 & 1) == 0) {\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }\n    if ((pbVar6[1] & 2) == 0) break;\n    param_1 = *(byte **)(param_1 + 0x10);\n  }" { (expression_statement "bVar2 = *param_1;" (assignment_expression "bVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "bVar5 = bVar2 & 1;" (assignment_expression "bVar5 = bVar2 & 1" identifier = (binary_expression "bVar2 & 1" identifier & number_literal)) ;) (if_statement "if ((bVar2 & 1) == 0) {\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }" if (parenthesized_expression "((bVar2 & 1) == 0)" ( (binary_expression "(bVar2 & 1) == 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }" { (expression_statement "pbVar6 = param_1;" (assignment_expression "pbVar6 = param_1" identifier = identifier) ;) (if_statement "if ((bVar2 & 4) == 0) goto LAB_0012c353;" if (parenthesized_expression "((bVar2 & 4) == 0)" ( (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0012c353;" goto statement_identifier ;)) }) (else_clause "else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }" else (compound_statement "{\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }" { (if_statement "if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }" if (parenthesized_expression "(*(long *)(param_1 + 8) != DAT_0019d7b8)" ( (binary_expression "*(long *)(param_1 + 8) != DAT_0019d7b8" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }" { (expression_statement "uVar4 = FUN_0012b400(param_1);" (assignment_expression "uVar4 = FUN_0012b400(param_1)" identifier = (call_expression "FUN_0012b400(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (return_statement "return uVar4;" return identifier ;) })) (expression_statement "param_1 = *(byte **)(param_1 + 0x18);" (assignment_expression "param_1 = *(byte **)(param_1 + 0x18)" identifier = (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = *param_1;" (assignment_expression "bVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }" if (parenthesized_expression "((bVar2 & 4) == 0)" ( (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }" { (labeled_statement "LAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);" statement_identifier : (expression_statement "uVar4 = FUN_0012b400(param_1);" (assignment_expression "uVar4 = FUN_0012b400(param_1)" identifier = (call_expression "FUN_0012b400(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;)) (if_statement "if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }" if (parenthesized_expression "(DAT_0019d4d8 == 0)" ( (binary_expression "DAT_0019d4d8 == 0" identifier == number_literal) )) (compound_statement "{\n          return uVar4;\n        }" { (return_statement "return uVar4;" return identifier ;) })) (expression_statement "bVar2 = *param_1;" (assignment_expression "bVar2 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (expression_statement "bVar5 = bVar2 & 1;" (assignment_expression "bVar5 = bVar2 & 1" identifier = (binary_expression "bVar2 & 1" identifier & number_literal)) ;) (expression_statement "pbVar6 = param_1;" (assignment_expression "pbVar6 = param_1" identifier = identifier) ;) (if_statement "if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }" if (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }" { (if_statement "if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;" if (parenthesized_expression "(*(long *)(param_1 + 8) != DAT_0019d7b8)" ( (binary_expression "*(long *)(param_1 + 8) != DAT_0019d7b8" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) != identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar6 = *(byte **)(param_1 + 0x18);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x18)" identifier = (pointer_expression "*(byte **)(param_1 + 0x18)" * (cast_expression "(byte **)(param_1 + 0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) })) }))) (if_statement "if ((pbVar6[1] & 2) == 0) break;" if (parenthesized_expression "((pbVar6[1] & 2) == 0)" ( (binary_expression "(pbVar6[1] & 2) == 0" (parenthesized_expression "(pbVar6[1] & 2)" ( (binary_expression "pbVar6[1] & 2" (subscript_expression "pbVar6[1]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "param_1 = *(byte **)(param_1 + 0x10);" (assignment_expression "param_1 = *(byte **)(param_1 + 0x10)" identifier = (pointer_expression "*(byte **)(param_1 + 0x10)" * (cast_expression "(byte **)(param_1 + 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (if_statement "if (param_1[0x28] == 2) goto LAB_0012c326;" if (parenthesized_expression "(param_1[0x28] == 2)" ( (binary_expression "param_1[0x28] == 2" (subscript_expression "param_1[0x28]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0012c326;" goto statement_identifier ;)) (expression_statement "lVar7 = *(long *)(param_1 + 8);" (assignment_expression "lVar7 = *(long *)(param_1 + 8)" identifier = (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (if_statement "if (((bVar2 & 4) == 0) || (param_1[0x28] != 3)) {\n    if (bVar5 != 0) {\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }\nLAB_0012c302:\n    uVar4 = *(undefined8 *)(lVar7 + 8);\n  }\n  else {\n    if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }\n    if (lVar7 == 0x1948d8) goto LAB_0012c326;\nLAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);\n  }" if (parenthesized_expression "(((bVar2 & 4) == 0) || (param_1[0x28] != 3))" ( (binary_expression "((bVar2 & 4) == 0) || (param_1[0x28] != 3)" (parenthesized_expression "((bVar2 & 4) == 0)" ( (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" ( (binary_expression "bVar2 & 4" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(param_1[0x28] != 3)" ( (binary_expression "param_1[0x28] != 3" (subscript_expression "param_1[0x28]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n    if (bVar5 != 0) {\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }\nLAB_0012c302:\n    uVar4 = *(undefined8 *)(lVar7 + 8);\n  }" { (if_statement "if (bVar5 != 0) {\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }" if (parenthesized_expression "(bVar5 != 0)" ( (binary_expression "bVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }" { (if_statement "if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;" if (parenthesized_expression "(DAT_0019d7b8 != lVar7)" ( (binary_expression "DAT_0019d7b8 != lVar7" identifier != identifier) )) (goto_statement "goto LAB_0012c389;" goto statement_identifier ;)) (expression_statement "lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);" (assignment_expression "lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8)" identifier = (pointer_expression "*(long *)(*(long *)(param_1 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(param_1 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x18) + 8)" ( (binary_expression "*(long *)(param_1 + 0x18) + 8" (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + number_literal) ))))) ;) })) (labeled_statement "LAB_0012c302:\n    uVar4 = *(undefined8 *)(lVar7 + 8);" statement_identifier : (expression_statement "uVar4 = *(undefined8 *)(lVar7 + 8);" (assignment_expression "uVar4 = *(undefined8 *)(lVar7 + 8)" identifier = (pointer_expression "*(undefined8 *)(lVar7 + 8)" * (cast_expression "(undefined8 *)(lVar7 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 8)" ( (binary_expression "lVar7 + 8" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n    if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }\n    if (lVar7 == 0x1948d8) goto LAB_0012c326;\nLAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);\n  }" else (compound_statement "{\n    if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }\n    if (lVar7 == 0x1948d8) goto LAB_0012c326;\nLAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);\n  }" { (if_statement "if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }" if (parenthesized_expression "(bVar5 == 0)" ( (binary_expression "bVar5 == 0" identifier == number_literal) )) (compound_statement "{\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }" { (expression_statement "lVar1 = *(long *)(lVar7 + 0x20);" (assignment_expression "lVar1 = *(long *)(lVar7 + 0x20)" identifier = (pointer_expression "*(long *)(lVar7 + 0x20)" * (cast_expression "(long *)(lVar7 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x20)" ( (binary_expression "lVar7 + 0x20" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;" statement_identifier : (if_statement "if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;" if (parenthesized_expression "((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0))" ( (binary_expression "(lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)" (parenthesized_expression "(lVar1 == 0x1948d8)" ( (binary_expression "lVar1 == 0x1948d8" identifier == number_literal) )) || (parenthesized_expression "((*(byte *)(lVar1 + 0x21) & 0x10) != 0)" ( (binary_expression "(*(byte *)(lVar1 + 0x21) & 0x10) != 0" (parenthesized_expression "(*(byte *)(lVar1 + 0x21) & 0x10)" ( (binary_expression "*(byte *)(lVar1 + 0x21) & 0x10" (pointer_expression "*(byte *)(lVar1 + 0x21)" * (cast_expression "(byte *)(lVar1 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x21)" ( (binary_expression "lVar1 + 0x21" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_0012c326;" goto statement_identifier ;))) (goto_statement "goto LAB_0012c302;" goto statement_identifier ;) })) (if_statement "if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }" if (parenthesized_expression "(DAT_0019d7b8 == lVar7)" ( (binary_expression "DAT_0019d7b8 == lVar7" identifier == identifier) )) (compound_statement "{\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }" { (expression_statement "lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);" (assignment_expression "lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8)" identifier = (pointer_expression "*(long *)(*(long *)(param_1 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(param_1 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 0x18) + 8)" ( (binary_expression "*(long *)(param_1 + 0x18) + 8" (pointer_expression "*(long *)(param_1 + 0x18)" * (cast_expression "(long *)(param_1 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "lVar1 = *(long *)(lVar7 + 0x20);" (assignment_expression "lVar1 = *(long *)(lVar7 + 0x20)" identifier = (pointer_expression "*(long *)(lVar7 + 0x20)" * (cast_expression "(long *)(lVar7 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar7 + 0x20)" ( (binary_expression "lVar7 + 0x20" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x0012c3fe;" goto statement_identifier ;) })) (if_statement "if (lVar7 == 0x1948d8) goto LAB_0012c326;" if (parenthesized_expression "(lVar7 == 0x1948d8)" ( (binary_expression "lVar7 == 0x1948d8" identifier == number_literal) )) (goto_statement "goto LAB_0012c326;" goto statement_identifier ;)) (labeled_statement "LAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);" statement_identifier : (expression_statement "uVar4 = *(undefined8 *)(param_1 + 0x10);" (assignment_expression "uVar4 = *(undefined8 *)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;)) }))) (expression_statement "uVar3 = dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5);" (assignment_expression "uVar3 = dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5)" identifier = (call_expression "dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5)" identifier (argument_list "(0,"attempt to get value of unresolved symbol `%s\'",5)" ( number_literal , (string_literal ""attempt to get value of unresolved symbol `%s\'"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_0011f6d0(uVar3,uVar4);" (call_expression "FUN_0011f6d0(uVar3,uVar4)" identifier (argument_list "(uVar3,uVar4)" ( identifier , identifier ))) ;) (labeled_statement "LAB_0012c326:\n  return *(undefined8 *)(param_1 + 0x20);" statement_identifier : (return_statement "return *(undefined8 *)(param_1 + 0x20);" return (pointer_expression "*(undefined8 *)(param_1 + 0x20)" * (cast_expression "(undefined8 *)(param_1 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( BOOL )) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (goto_statement goto statement_identifier ;))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (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 IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (labeled_statement statement_identifier : (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;)) })))
(function_definition "undefined8 thunk_FUN_0012c290(byte *param_1)\n\n{\n  long lVar1;\n  byte bVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  byte bVar5;\n  byte *pbVar6;\n  long lVar7;\n  \n  do {\n    bVar2 = *param_1;\n    bVar5 = bVar2 & 1;\n    if ((bVar2 & 1) == 0) {\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }\n    if ((pbVar6[1] & 2) == 0) break;\n    param_1 = *(byte **)(param_1 + 0x10);\n  } while( true );\n  if (param_1[0x28] == 2) goto LAB_0012c326;\n  lVar7 = *(long *)(param_1 + 8);\n  if (((bVar2 & 4) == 0) || (param_1[0x28] != 3)) {\n    if (bVar5 != 0) {\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }\nLAB_0012c302:\n    uVar4 = *(undefined8 *)(lVar7 + 8);\n  }\n  else {\n    if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }\n    if (lVar7 == 0x1948d8) goto LAB_0012c326;\nLAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);\n  }\n  uVar3 = dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5);\n  FUN_0011f6d0(uVar3,uVar4);\nLAB_0012c326:\n  return *(undefined8 *)(param_1 + 0x20);\n}" (type_identifier "undefined8") (function_declarator "thunk_FUN_0012c290(byte *param_1)" (identifier "thunk_FUN_0012c290") (parameter_list "(byte *param_1)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  long lVar1;\n  byte bVar2;\n  undefined8 uVar3;\n  undefined8 uVar4;\n  byte bVar5;\n  byte *pbVar6;\n  long lVar7;\n  \n  do {\n    bVar2 = *param_1;\n    bVar5 = bVar2 & 1;\n    if ((bVar2 & 1) == 0) {\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }\n    if ((pbVar6[1] & 2) == 0) break;\n    param_1 = *(byte **)(param_1 + 0x10);\n  } while( true );\n  if (param_1[0x28] == 2) goto LAB_0012c326;\n  lVar7 = *(long *)(param_1 + 8);\n  if (((bVar2 & 4) == 0) || (param_1[0x28] != 3)) {\n    if (bVar5 != 0) {\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }\nLAB_0012c302:\n    uVar4 = *(undefined8 *)(lVar7 + 8);\n  }\n  else {\n    if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }\n    if (lVar7 == 0x1948d8) goto LAB_0012c326;\nLAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);\n  }\n  uVar3 = dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5);\n  FUN_0011f6d0(uVar3,uVar4);\nLAB_0012c326:\n  return *(undefined8 *)(param_1 + 0x20);\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "byte bVar5;" (type_identifier "byte") (identifier "bVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (do_statement "do {\n    bVar2 = *param_1;\n    bVar5 = bVar2 & 1;\n    if ((bVar2 & 1) == 0) {\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }\n    if ((pbVar6[1] & 2) == 0) break;\n    param_1 = *(byte **)(param_1 + 0x10);\n  } while( true );" (do "do") (compound_statement "{\n    bVar2 = *param_1;\n    bVar5 = bVar2 & 1;\n    if ((bVar2 & 1) == 0) {\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }\n    if ((pbVar6[1] & 2) == 0) break;\n    param_1 = *(byte **)(param_1 + 0x10);\n  }" ({ "{") (expression_statement "bVar2 = *param_1;" (assignment_expression "bVar2 = *param_1" (identifier "bVar2") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "bVar5 = bVar2 & 1;" (assignment_expression "bVar5 = bVar2 & 1" (identifier "bVar5") (= "=") (binary_expression "bVar2 & 1" (identifier "bVar2") (& "&") (number_literal "1"))) (; ";")) (if_statement "if ((bVar2 & 1) == 0) {\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }\n    else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }" (if "if") (parenthesized_expression "((bVar2 & 1) == 0)" (( "(") (binary_expression "(bVar2 & 1) == 0" (parenthesized_expression "(bVar2 & 1)" (( "(") (binary_expression "bVar2 & 1" (identifier "bVar2") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      pbVar6 = param_1;\n      if ((bVar2 & 4) == 0) goto LAB_0012c353;\n    }" ({ "{") (expression_statement "pbVar6 = param_1;" (assignment_expression "pbVar6 = param_1" (identifier "pbVar6") (= "=") (identifier "param_1")) (; ";")) (if_statement "if ((bVar2 & 4) == 0) goto LAB_0012c353;" (if "if") (parenthesized_expression "((bVar2 & 4) == 0)" (( "(") (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" (( "(") (binary_expression "bVar2 & 4" (identifier "bVar2") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0012c353;" (goto "goto") (statement_identifier "LAB_0012c353") (; ";"))) (} "}")) (else_clause "else {\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }" (else "else") (compound_statement "{\n      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }\n      param_1 = *(byte **)(param_1 + 0x18);\n      bVar2 = *param_1;\n      if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }\n      bVar5 = bVar2 & 1;\n      pbVar6 = param_1;\n      if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }\n    }" ({ "{") (if_statement "if (*(long *)(param_1 + 8) != DAT_0019d7b8) {\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 8) != DAT_0019d7b8)" (( "(") (binary_expression "*(long *)(param_1 + 8) != DAT_0019d7b8" (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (identifier "DAT_0019d7b8")) () ")")) (compound_statement "{\n        uVar4 = FUN_0012b400(param_1);\n        return uVar4;\n      }" ({ "{") (expression_statement "uVar4 = FUN_0012b400(param_1);" (assignment_expression "uVar4 = FUN_0012b400(param_1)" (identifier "uVar4") (= "=") (call_expression "FUN_0012b400(param_1)" (identifier "FUN_0012b400") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (expression_statement "param_1 = *(byte **)(param_1 + 0x18);" (assignment_expression "param_1 = *(byte **)(param_1 + 0x18)" (identifier "param_1") (= "=") (pointer_expression "*(byte **)(param_1 + 0x18)" (* "*") (cast_expression "(byte **)(param_1 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "bVar2 = *param_1;" (assignment_expression "bVar2 = *param_1" (identifier "bVar2") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if ((bVar2 & 4) == 0) {\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }" (if "if") (parenthesized_expression "((bVar2 & 4) == 0)" (( "(") (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" (( "(") (binary_expression "bVar2 & 4" (identifier "bVar2") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);\n        if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }\n        bVar2 = *param_1;\n      }" ({ "{") (labeled_statement "LAB_0012c353:\n        uVar4 = FUN_0012b400(param_1);" (statement_identifier "LAB_0012c353") (: ":") (expression_statement "uVar4 = FUN_0012b400(param_1);" (assignment_expression "uVar4 = FUN_0012b400(param_1)" (identifier "uVar4") (= "=") (call_expression "FUN_0012b400(param_1)" (identifier "FUN_0012b400") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";"))) (if_statement "if (DAT_0019d4d8 == 0) {\n          return uVar4;\n        }" (if "if") (parenthesized_expression "(DAT_0019d4d8 == 0)" (( "(") (binary_expression "DAT_0019d4d8 == 0" (identifier "DAT_0019d4d8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          return uVar4;\n        }" ({ "{") (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (expression_statement "bVar2 = *param_1;" (assignment_expression "bVar2 = *param_1" (identifier "bVar2") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (} "}"))) (expression_statement "bVar5 = bVar2 & 1;" (assignment_expression "bVar5 = bVar2 & 1" (identifier "bVar5") (= "=") (binary_expression "bVar2 & 1" (identifier "bVar2") (& "&") (number_literal "1"))) (; ";")) (expression_statement "pbVar6 = param_1;" (assignment_expression "pbVar6 = param_1" (identifier "pbVar6") (= "=") (identifier "param_1")) (; ";")) (if_statement "if ((bVar2 & 1) != 0) {\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }" (if "if") (parenthesized_expression "((bVar2 & 1) != 0)" (( "(") (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" (( "(") (binary_expression "bVar2 & 1" (identifier "bVar2") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;\n        pbVar6 = *(byte **)(param_1 + 0x18);\n      }" ({ "{") (if_statement "if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;" (if "if") (parenthesized_expression "(*(long *)(param_1 + 8) != DAT_0019d7b8)" (( "(") (binary_expression "*(long *)(param_1 + 8) != DAT_0019d7b8" (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (identifier "DAT_0019d7b8")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pbVar6 = *(byte **)(param_1 + 0x18);" (assignment_expression "pbVar6 = *(byte **)(param_1 + 0x18)" (identifier "pbVar6") (= "=") (pointer_expression "*(byte **)(param_1 + 0x18)" (* "*") (cast_expression "(byte **)(param_1 + 0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (} "}"))) (} "}")))) (if_statement "if ((pbVar6[1] & 2) == 0) break;" (if "if") (parenthesized_expression "((pbVar6[1] & 2) == 0)" (( "(") (binary_expression "(pbVar6[1] & 2) == 0" (parenthesized_expression "(pbVar6[1] & 2)" (( "(") (binary_expression "pbVar6[1] & 2" (subscript_expression "pbVar6[1]" (identifier "pbVar6") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_1 = *(byte **)(param_1 + 0x10);" (assignment_expression "param_1 = *(byte **)(param_1 + 0x10)" (identifier "param_1") (= "=") (pointer_expression "*(byte **)(param_1 + 0x10)" (* "*") (cast_expression "(byte **)(param_1 + 0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (if_statement "if (param_1[0x28] == 2) goto LAB_0012c326;" (if "if") (parenthesized_expression "(param_1[0x28] == 2)" (( "(") (binary_expression "param_1[0x28] == 2" (subscript_expression "param_1[0x28]" (identifier "param_1") ([ "[") (number_literal "0x28") (] "]")) (== "==") (number_literal "2")) () ")")) (goto_statement "goto LAB_0012c326;" (goto "goto") (statement_identifier "LAB_0012c326") (; ";"))) (expression_statement "lVar7 = *(long *)(param_1 + 8);" (assignment_expression "lVar7 = *(long *)(param_1 + 8)" (identifier "lVar7") (= "=") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (((bVar2 & 4) == 0) || (param_1[0x28] != 3)) {\n    if (bVar5 != 0) {\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }\nLAB_0012c302:\n    uVar4 = *(undefined8 *)(lVar7 + 8);\n  }\n  else {\n    if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }\n    if (lVar7 == 0x1948d8) goto LAB_0012c326;\nLAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);\n  }" (if "if") (parenthesized_expression "(((bVar2 & 4) == 0) || (param_1[0x28] != 3))" (( "(") (binary_expression "((bVar2 & 4) == 0) || (param_1[0x28] != 3)" (parenthesized_expression "((bVar2 & 4) == 0)" (( "(") (binary_expression "(bVar2 & 4) == 0" (parenthesized_expression "(bVar2 & 4)" (( "(") (binary_expression "bVar2 & 4" (identifier "bVar2") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(param_1[0x28] != 3)" (( "(") (binary_expression "param_1[0x28] != 3" (subscript_expression "param_1[0x28]" (identifier "param_1") ([ "[") (number_literal "0x28") (] "]")) (!= "!=") (number_literal "3")) () ")"))) () ")")) (compound_statement "{\n    if (bVar5 != 0) {\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }\nLAB_0012c302:\n    uVar4 = *(undefined8 *)(lVar7 + 8);\n  }" ({ "{") (if_statement "if (bVar5 != 0) {\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }" (if "if") (parenthesized_expression "(bVar5 != 0)" (( "(") (binary_expression "bVar5 != 0" (identifier "bVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n    }" ({ "{") (if_statement "if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;" (if "if") (parenthesized_expression "(DAT_0019d7b8 != lVar7)" (( "(") (binary_expression "DAT_0019d7b8 != lVar7" (identifier "DAT_0019d7b8") (!= "!=") (identifier "lVar7")) () ")")) (goto_statement "goto LAB_0012c389;" (goto "goto") (statement_identifier "LAB_0012c389") (; ";"))) (expression_statement "lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);" (assignment_expression "lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8)" (identifier "lVar7") (= "=") (pointer_expression "*(long *)(*(long *)(param_1 + 0x18) + 8)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x18) + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x18) + 8)" (( "(") (binary_expression "*(long *)(param_1 + 0x18) + 8" (pointer_expression "*(long *)(param_1 + 0x18)" (* "*") (cast_expression "(long *)(param_1 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (labeled_statement "LAB_0012c302:\n    uVar4 = *(undefined8 *)(lVar7 + 8);" (statement_identifier "LAB_0012c302") (: ":") (expression_statement "uVar4 = *(undefined8 *)(lVar7 + 8);" (assignment_expression "uVar4 = *(undefined8 *)(lVar7 + 8)" (identifier "uVar4") (= "=") (pointer_expression "*(undefined8 *)(lVar7 + 8)" (* "*") (cast_expression "(undefined8 *)(lVar7 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 8)" (( "(") (binary_expression "lVar7 + 8" (identifier "lVar7") (+ "+") (number_literal "8")) () ")"))))) (; ";"))) (} "}")) (else_clause "else {\n    if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }\n    if (lVar7 == 0x1948d8) goto LAB_0012c326;\nLAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);\n  }" (else "else") (compound_statement "{\n    if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }\n    if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }\n    if (lVar7 == 0x1948d8) goto LAB_0012c326;\nLAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);\n  }" ({ "{") (if_statement "if (bVar5 == 0) {\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }" (if "if") (parenthesized_expression "(bVar5 == 0)" (( "(") (binary_expression "bVar5 == 0" (identifier "bVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      lVar1 = *(long *)(lVar7 + 0x20);\njoined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;\n      goto LAB_0012c302;\n    }" ({ "{") (expression_statement "lVar1 = *(long *)(lVar7 + 0x20);" (assignment_expression "lVar1 = *(long *)(lVar7 + 0x20)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(lVar7 + 0x20)" (* "*") (cast_expression "(long *)(lVar7 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x20)" (( "(") (binary_expression "lVar7 + 0x20" (identifier "lVar7") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (labeled_statement "joined_r0x0012c3fe:\n      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;" (statement_identifier "joined_r0x0012c3fe") (: ":") (if_statement "if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;" (if "if") (parenthesized_expression "((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0))" (( "(") (binary_expression "(lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)" (parenthesized_expression "(lVar1 == 0x1948d8)" (( "(") (binary_expression "lVar1 == 0x1948d8" (identifier "lVar1") (== "==") (number_literal "0x1948d8")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(lVar1 + 0x21) & 0x10) != 0)" (( "(") (binary_expression "(*(byte *)(lVar1 + 0x21) & 0x10) != 0" (parenthesized_expression "(*(byte *)(lVar1 + 0x21) & 0x10)" (( "(") (binary_expression "*(byte *)(lVar1 + 0x21) & 0x10" (pointer_expression "*(byte *)(lVar1 + 0x21)" (* "*") (cast_expression "(byte *)(lVar1 + 0x21)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x21)" (( "(") (binary_expression "lVar1 + 0x21" (identifier "lVar1") (+ "+") (number_literal "0x21")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_0012c326;" (goto "goto") (statement_identifier "LAB_0012c326") (; ";")))) (goto_statement "goto LAB_0012c302;" (goto "goto") (statement_identifier "LAB_0012c302") (; ";")) (} "}"))) (if_statement "if (DAT_0019d7b8 == lVar7) {\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }" (if "if") (parenthesized_expression "(DAT_0019d7b8 == lVar7)" (( "(") (binary_expression "DAT_0019d7b8 == lVar7" (identifier "DAT_0019d7b8") (== "==") (identifier "lVar7")) () ")")) (compound_statement "{\n      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);\n      lVar1 = *(long *)(lVar7 + 0x20);\n      goto joined_r0x0012c3fe;\n    }" ({ "{") (expression_statement "lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);" (assignment_expression "lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8)" (identifier "lVar7") (= "=") (pointer_expression "*(long *)(*(long *)(param_1 + 0x18) + 8)" (* "*") (cast_expression "(long *)(*(long *)(param_1 + 0x18) + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x18) + 8)" (( "(") (binary_expression "*(long *)(param_1 + 0x18) + 8" (pointer_expression "*(long *)(param_1 + 0x18)" (* "*") (cast_expression "(long *)(param_1 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar1 = *(long *)(lVar7 + 0x20);" (assignment_expression "lVar1 = *(long *)(lVar7 + 0x20)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(lVar7 + 0x20)" (* "*") (cast_expression "(long *)(lVar7 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar7 + 0x20)" (( "(") (binary_expression "lVar7 + 0x20" (identifier "lVar7") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (goto_statement "goto joined_r0x0012c3fe;" (goto "goto") (statement_identifier "joined_r0x0012c3fe") (; ";")) (} "}"))) (if_statement "if (lVar7 == 0x1948d8) goto LAB_0012c326;" (if "if") (parenthesized_expression "(lVar7 == 0x1948d8)" (( "(") (binary_expression "lVar7 == 0x1948d8" (identifier "lVar7") (== "==") (number_literal "0x1948d8")) () ")")) (goto_statement "goto LAB_0012c326;" (goto "goto") (statement_identifier "LAB_0012c326") (; ";"))) (labeled_statement "LAB_0012c389:\n    uVar4 = *(undefined8 *)(param_1 + 0x10);" (statement_identifier "LAB_0012c389") (: ":") (expression_statement "uVar4 = *(undefined8 *)(param_1 + 0x10);" (assignment_expression "uVar4 = *(undefined8 *)(param_1 + 0x10)" (identifier "uVar4") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";"))) (} "}")))) (expression_statement "uVar3 = dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5);" (assignment_expression "uVar3 = dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5)" (identifier "uVar3") (= "=") (call_expression "dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5)" (identifier "dcgettext") (argument_list "(0,"attempt to get value of unresolved symbol `%s\'",5)" (( "(") (number_literal "0") (, ",") (string_literal ""attempt to get value of unresolved symbol `%s\'"" (" """) (string_content "attempt to get value of unresolved symbol `%s") (escape_sequence "\'") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_0011f6d0(uVar3,uVar4);" (call_expression "FUN_0011f6d0(uVar3,uVar4)" (identifier "FUN_0011f6d0") (argument_list "(uVar3,uVar4)" (( "(") (identifier "uVar3") (, ",") (identifier "uVar4") () ")"))) (; ";")) (labeled_statement "LAB_0012c326:\n  return *(undefined8 *)(param_1 + 0x20);" (statement_identifier "LAB_0012c326") (: ":") (return_statement "return *(undefined8 *)(param_1 + 0x20);" (return "return") (pointer_expression "*(undefined8 *)(param_1 + 0x20)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (; ";"))) (} "}")))

type_1 function_1(type_2 *s)

{
  char var_5;
  long var_8;
  type_3 var_1;
  char *format;
  type_1 vVar4;
  type_3 var_6;
  type_2 *psVar6;
  type_4 var_7;
  
  do {
    var_1 = *(type_3 *)&s->sy_flags;
    var_6 = var_1 & 1;
    if ((var_1 & 1) == 0) {
      psVar6 = s;
      if ((var_1 & 4) == 0) goto LAB_0012c353;
    }
    else {
      if ((type_4)s->bsym != var_2) {
        vVar4 = var_3(s);
        return vVar4;
      }
      s = (s->sy_value).X_op_symbol;
      var_1 = *(type_3 *)&s->sy_flags;
      if ((var_1 & 4) == 0) {
LAB_0012c353:
        vVar4 = var_3(s);
        if (var_4 == 0) {
          return vVar4;
        }
        var_1 = *(type_3 *)&s->sy_flags;
      }
      var_6 = var_1 & 1;
      psVar6 = s;
      if ((var_1 & 1) != 0) {
        if ((type_4)s->bsym != var_2) break;
        psVar6 = (s->sy_value).X_op_symbol;
      }
    }
    if (((psVar6->sy_flags).field_0x1 & 2) == 0) break;
    s = (s->sy_value).X_add_symbol;
  } while( true );
  var_5 = (s->sy_value).field_0x18;
  if (var_5 == '\x02') goto LAB_0012c326;
  var_7 = (type_4)s->bsym;
  if (((var_1 & 4) == 0) || (var_5 != '\x03')) {
    if (var_6 != 0) {
      if (var_2 != var_7) goto LAB_0012c389;
      var_7 = (type_4)((s->sy_value).X_op_symbol)->bsym;
    }
LAB_0012c302:
    psVar6 = *(type_2 **)&var_7->id;
  }
  else {
    if (var_6 == 0) {
      var_8 = *(long *)&var_7->flags;
joined_r0x0012c3fe:
      if ((var_8 == 0x1948d8) || ((*(type_3 *)(var_8 + 0x21) & 0x10) != 0)) goto LAB_0012c326;
      goto LAB_0012c302;
    }
    if (var_2 == var_7) {
      var_7 = (type_4)((s->sy_value).X_op_symbol)->bsym;
      var_8 = *(long *)&var_7->flags;
      goto joined_r0x0012c3fe;
    }
    if (var_7 == (type_4)(var_9 + 0x118)) goto LAB_0012c326;
LAB_0012c389:
    psVar6 = (s->sy_value).X_add_symbol;
  }
  format = (char *)var_10(0,"attempt to get value of unresolved symbol `%s\'",5);
  var_11(format,psVar6);
LAB_0012c326:
  return (s->sy_value).X_add_number;
}


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

undefined8 MASKED(byte *param_1)

{
  long lVar1;
  byte bVar2;
  undefined8 uVar3;
  undefined8 uVar4;
  byte bVar5;
  byte *pbVar6;
  long lVar7;
  
  do {
    bVar2 = *param_1;
    bVar5 = bVar2 & 1;
    if ((bVar2 & 1) == 0) {
      pbVar6 = param_1;
      if ((bVar2 & 4) == 0) goto LAB_0012c353;
    }
    else {
      if (*(long *)(param_1 + 8) != DAT_0019d7b8) {
        uVar4 = FUN_0012b400(param_1);
        return uVar4;
      }
      param_1 = *(byte **)(param_1 + 0x18);
      bVar2 = *param_1;
      if ((bVar2 & 4) == 0) {
LAB_0012c353:
        uVar4 = FUN_0012b400(param_1);
        if (DAT_0019d4d8 == 0) {
          return uVar4;
        }
        bVar2 = *param_1;
      }
      bVar5 = bVar2 & 1;
      pbVar6 = param_1;
      if ((bVar2 & 1) != 0) {
        if (*(long *)(param_1 + 8) != DAT_0019d7b8) break;
        pbVar6 = *(byte **)(param_1 + 0x18);
      }
    }
    if ((pbVar6[1] & 2) == 0) break;
    param_1 = *(byte **)(param_1 + 0x10);
  } while( true );
  if (param_1[0x28] == 2) goto LAB_0012c326;
  lVar7 = *(long *)(param_1 + 8);
  if (((bVar2 & 4) == 0) || (param_1[0x28] != 3)) {
    if (bVar5 != 0) {
      if (DAT_0019d7b8 != lVar7) goto LAB_0012c389;
      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);
    }
LAB_0012c302:
    uVar4 = *(undefined8 *)(lVar7 + 8);
  }
  else {
    if (bVar5 == 0) {
      lVar1 = *(long *)(lVar7 + 0x20);
joined_r0x0012c3fe:
      if ((lVar1 == 0x1948d8) || ((*(byte *)(lVar1 + 0x21) & 0x10) != 0)) goto LAB_0012c326;
      goto LAB_0012c302;
    }
    if (DAT_0019d7b8 == lVar7) {
      lVar7 = *(long *)(*(long *)(param_1 + 0x18) + 8);
      lVar1 = *(long *)(lVar7 + 0x20);
      goto joined_r0x0012c3fe;
    }
    if (lVar7 == 0x1948d8) goto LAB_0012c326;
LAB_0012c389:
    uVar4 = *(undefined8 *)(param_1 + 0x10);
  }
  uVar3 = dcgettext(0,"attempt to get value of unresolved symbol `%s\'",5);
  FUN_0011f6d0(uVar3,uVar4);
LAB_0012c326:
  return *(undefined8 *)(param_1 + 0x20);
}

