
void gldelf32lppcsim_find_exp_assignment(etree_type *exp)

{
  node_tree_enum nVar1;
  etree_union *peVar2;
  int iVar3;
  long lVar4;
  char *fmt;
  asection *paVar5;
  byte *pbVar6;
  undefined8 uVar7;
  bool bVar8;
  bool bVar9;
  byte bVar10;
  
  bVar10 = 0;
LAB_0014250b:
  nVar1 = (exp->type).node_class;
  do {
    if (etree_provided < nVar1) {
switchD_0014251c_caseD_142547:
      return;
    }
    bVar8 = 0xffffffffffdd35cb <
            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class];
    lVar4 = (long)&switchD_0014251c::switchdataD_0022ca34 +
            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class];
    bVar9 = lVar4 == 0;
    switch(lVar4) {
    case 0x142520:
      bVar8 = false;
      uVar7 = 0;
      bVar9 = true;
      break;
    case 0x142547:
      goto switchD_0014251c_caseD_142547;
    case 0x142558:
      exp = (etree_type *)(exp->rel).section;
      goto LAB_0014250b;
    case 0x142560:
      goto switchD_0014251c_caseD_142560;
    case 0x142580:
      gldelf32lppcsim_find_exp_assignment((exp->binary).lhs);
      goto LAB_0014253d;
    default:
      uVar7 = 1;
    }
    lVar4 = 2;
    paVar5 = (exp->rel).section;
    pbVar6 = (byte *)0x196a14;
    do {
      if (lVar4 == 0) break;
      lVar4 = lVar4 + -1;
      bVar8 = *(byte *)&paVar5->name < *pbVar6;
      bVar9 = *(byte *)&paVar5->name == *pbVar6;
      paVar5 = (asection *)((long)paVar5 + (ulong)bVar10 * -2 + 1);
      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;
    } while (bVar9);
    if (((!bVar8 && !bVar9) != bVar8) &&
       (iVar3 = bfd_elf_record_link_assignment
                          (link_info.output_bfd,&link_info,(exp->rel).section,uVar7,
                           (exp->assign).hidden), iVar3 == 0)) {
      peVar2 = (exp->binary).lhs;
      fmt = (char *)dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);
      einfo(fmt,peVar2);
    }
LAB_0014253d:
    exp = (etree_type *)(exp->rel).value;
    nVar1 = (exp->type).node_class;
  } while( true );
switchD_0014251c_caseD_142560:
  gldelf32lppcsim_find_exp_assignment((exp->binary).lhs);
  gldelf32lppcsim_find_exp_assignment((exp->binary).rhs);
  exp = (exp->trinary).rhs;
  goto LAB_0014250b;
}



void FUN_001424f0(long param_1)

{
  uint uVar1;
  int iVar2;
  long lVar3;
  undefined8 uVar4;
  byte *pbVar5;
  byte *pbVar6;
  undefined8 uVar7;
  bool bVar8;
  bool bVar9;
  byte bVar10;
  
  bVar10 = 0;
LAB_0014250b:
  uVar1 = *(uint *)(param_1 + 0x10);
  do {
    if (6 < uVar1) {
switchD_0014251c_caseD_142547:
      return;
    }
    bVar8 = 0xffffffffffdd35cb <
            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];
    lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +
            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];
    bVar9 = lVar3 == 0;
    switch(lVar3) {
    case 0x142520:
      bVar8 = false;
      uVar7 = 0;
      bVar9 = true;
      break;
    case 0x142547:
      goto switchD_0014251c_caseD_142547;
    case 0x142558:
      param_1 = *(long *)(param_1 + 0x18);
      goto LAB_0014250b;
    case 0x142560:
      goto switchD_0014251c_caseD_142560;
    case 0x142580:
      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));
      goto LAB_0014253d;
    default:
      uVar7 = 1;
    }
    lVar3 = 2;
    pbVar5 = *(byte **)(param_1 + 0x18);
    pbVar6 = (byte *)0x196a14;
    do {
      if (lVar3 == 0) break;
      lVar3 = lVar3 + -1;
      bVar8 = *pbVar5 < *pbVar6;
      bVar9 = *pbVar5 == *pbVar6;
      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;
      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;
    } while (bVar9);
    if (((!bVar8 && !bVar9) != bVar8) &&
       (iVar2 = bfd_elf_record_link_assignment
                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,
                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {
      uVar7 = *(undefined8 *)(param_1 + 0x18);
      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);
      FUN_001283c0(uVar4,uVar7);
    }
LAB_0014253d:
    param_1 = *(long *)(param_1 + 0x20);
    uVar1 = *(uint *)(param_1 + 0x10);
  } while( true );
switchD_0014251c_caseD_142560:
  FUN_001424f0(*(undefined8 *)(param_1 + 0x18));
  FUN_001424f0(*(undefined8 *)(param_1 + 0x20));
  param_1 = *(long *)(param_1 + 0x28);
  goto LAB_0014250b;
}


PUSH R13
PUSH R12
LEA R12,[0x196a14]
PUSH RBP
LEA RBP,[0x22ca34]
PUSH RBX
MOV RBX,RDI
SUB RSP,0x8
CMP dword ptr [RBX + 0x10],0x6
JA 0x00142547
MOV EAX,dword ptr [RBX + 0x10]
MOVSXD RAX,dword ptr [RBP + RAX*0x4]
ADD RAX,RBP
JMP RAX
XOR R9D,R9D
MOV RDX,qword ptr [RBX + 0x18]
MOV ECX,0x2
MOV RDI,R12
MOV RSI,RDX
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x001425a0
MOV RBX,qword ptr [RBX + 0x20]
CMP dword ptr [RBX + 0x10],0x6
JBE 0x00142511
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
RET
MOV RBX,qword ptr [RBX + 0x18]
JMP 0x0014250b
MOV RDI,qword ptr [RBX + 0x18]
CALL 0x001424f0
MOV RDI,qword ptr [RBX + 0x20]
CALL 0x001424f0
MOV RBX,qword ptr [RBX + 0x28]
JMP 0x0014250b
MOV RDI,qword ptr [RBX + 0x18]
CALL 0x001424f0
JMP 0x0014253d
MOV R9D,0x1
JMP 0x00142523
MOV R8D,dword ptr [RBX + 0x28]
MOV RDI,qword ptr [0x002a6810]
MOV ECX,R9D
LEA RSI,[0x2a67c0]
CALL 0x0010c150
TEST EAX,EAX
JNZ 0x0014253d
MOV R13,qword ptr [RBX + 0x18]
XOR EDI,EDI
MOV EDX,0x5
LEA RSI,[0x1963e0]
CALL 0x0010c350
MOV RDI,RAX
MOV RSI,R13
XOR EAX,EAX
CALL 0x001283c0
JMP 0x0014253d
(translation_unit "void FUN_001424f0(long param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  long lVar3;\n  undefined8 uVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  undefined8 uVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\nLAB_0014250b:\n  uVar1 = *(uint *)(param_1 + 0x10);\n  do {\n    if (6 < uVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    bVar9 = lVar3 == 0;\n    switch(lVar3) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar3 = 2;\n    pbVar5 = *(byte **)(param_1 + 0x18);\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }\nLAB_0014253d:\n    param_1 = *(long *)(param_1 + 0x20);\n    uVar1 = *(uint *)(param_1 + 0x10);\n  } while( true );\nswitchD_0014251c_caseD_142560:\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x20));\n  param_1 = *(long *)(param_1 + 0x28);\n  goto LAB_0014250b;\n}\n\n" (function_definition "void FUN_001424f0(long param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  long lVar3;\n  undefined8 uVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  undefined8 uVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\nLAB_0014250b:\n  uVar1 = *(uint *)(param_1 + 0x10);\n  do {\n    if (6 < uVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    bVar9 = lVar3 == 0;\n    switch(lVar3) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar3 = 2;\n    pbVar5 = *(byte **)(param_1 + 0x18);\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }\nLAB_0014253d:\n    param_1 = *(long *)(param_1 + 0x20);\n    uVar1 = *(uint *)(param_1 + 0x10);\n  } while( true );\nswitchD_0014251c_caseD_142560:\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x20));\n  param_1 = *(long *)(param_1 + 0x28);\n  goto LAB_0014250b;\n}" primitive_type (function_declarator "FUN_001424f0(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  long lVar3;\n  undefined8 uVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  undefined8 uVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\nLAB_0014250b:\n  uVar1 = *(uint *)(param_1 + 0x10);\n  do {\n    if (6 < uVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    bVar9 = lVar3 == 0;\n    switch(lVar3) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar3 = 2;\n    pbVar5 = *(byte **)(param_1 + 0x18);\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }\nLAB_0014253d:\n    param_1 = *(long *)(param_1 + 0x20);\n    uVar1 = *(uint *)(param_1 + 0x10);\n  } while( true );\nswitchD_0014251c_caseD_142560:\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x20));\n  param_1 = *(long *)(param_1 + 0x28);\n  goto LAB_0014250b;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0014250b:\n  uVar1 = *(uint *)(param_1 + 0x10);" statement_identifier : (expression_statement "uVar1 = *(uint *)(param_1 + 0x10);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x10)" identifier = (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;)) (do_statement "do {\n    if (6 < uVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    bVar9 = lVar3 == 0;\n    switch(lVar3) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar3 = 2;\n    pbVar5 = *(byte **)(param_1 + 0x18);\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }\nLAB_0014253d:\n    param_1 = *(long *)(param_1 + 0x20);\n    uVar1 = *(uint *)(param_1 + 0x10);\n  } while( true );" do (compound_statement "{\n    if (6 < uVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    bVar9 = lVar3 == 0;\n    switch(lVar3) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar3 = 2;\n    pbVar5 = *(byte **)(param_1 + 0x18);\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }\nLAB_0014253d:\n    param_1 = *(long *)(param_1 + 0x20);\n    uVar1 = *(uint *)(param_1 + 0x10);\n  }" { (if_statement "if (6 < uVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }" if (parenthesized_expression "(6 < uVar1)" ( (binary_expression "6 < uVar1" number_literal < identifier) )) (compound_statement "{\nswitchD_0014251c_caseD_142547:\n      return;\n    }" { (labeled_statement "switchD_0014251c_caseD_142547:\n      return;" statement_identifier : (return_statement "return;" return ;)) })) (expression_statement "bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];" (assignment_expression "bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" identifier = (binary_expression "0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" number_literal < (subscript_expression "(ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" (call_expression "(ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)" (call_expression "(ulong)(long)(int)" (call_expression "(ulong)(long)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(long)" ( identifier ))) (argument_list "(int)" ( identifier ))) (argument_list "(&switchD_0014251c::switchdataD_0022ca34)" ( (ERROR "&switchD_0014251c::" (pointer_expression "&switchD_0014251c" & identifier) : :) identifier ))) [ (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) ]))) ;) (expression_statement "lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];" (binary_expression "lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" (assignment_expression "lVar3 = (long)&switchD_0014251c" identifier = (cast_expression "(long)&switchD_0014251c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&switchD_0014251c" & identifier))) (ERROR "::switchdataD_0022ca34" : : identifier) + (cast_expression "(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" (parenthesized_expression "(&switchD_0014251c::switchdataD_0022ca34)" ( (ERROR "&switchD_0014251c::" (pointer_expression "&switchD_0014251c" & identifier) : :) identifier )) [ (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) ])))) ;) (expression_statement "bVar9 = lVar3 == 0;" (assignment_expression "bVar9 = lVar3 == 0" identifier = (binary_expression "lVar3 == 0" identifier == number_literal)) ;) (switch_statement "switch(lVar3) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }" switch (parenthesized_expression "(lVar3)" ( identifier )) (compound_statement "{\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }" { (case_statement "case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;" case number_literal : (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" identifier = false) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "bVar9 = true;" (assignment_expression "bVar9 = true" identifier = true) ;) (break_statement "break;" break ;)) (case_statement "case 0x142547:\n      goto switchD_0014251c_caseD_142547;" case number_literal : (goto_statement "goto switchD_0014251c_caseD_142547;" goto statement_identifier ;)) (case_statement "case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;" case number_literal : (expression_statement "param_1 = *(long *)(param_1 + 0x18);" (assignment_expression "param_1 = *(long *)(param_1 + 0x18)" identifier = (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) ))))) ;) (goto_statement "goto LAB_0014250b;" goto statement_identifier ;)) (case_statement "case 0x142560:\n      goto switchD_0014251c_caseD_142560;" case number_literal : (goto_statement "goto switchD_0014251c_caseD_142560;" goto statement_identifier ;)) (case_statement "case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;" case number_literal : (expression_statement "FUN_001424f0(*(undefined8 *)(param_1 + 0x18));" (call_expression "FUN_001424f0(*(undefined8 *)(param_1 + 0x18))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x18))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) ))) ;) (goto_statement "goto LAB_0014253d;" goto statement_identifier ;)) (case_statement "default:\n      uVar7 = 1;" default : (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;)) })) (expression_statement "lVar3 = 2;" (assignment_expression "lVar3 = 2" identifier = number_literal) ;) (expression_statement "pbVar5 = *(byte **)(param_1 + 0x18);" (assignment_expression "pbVar5 = *(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 "pbVar6 = (byte *)0x196a14;" (assignment_expression "pbVar6 = (byte *)0x196a14" identifier = (cast_expression "(byte *)0x196a14" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);" do (compound_statement "{\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar8 = *pbVar5 < *pbVar6;" (assignment_expression "bVar8 = *pbVar5 < *pbVar6" identifier = (binary_expression "*pbVar5 < *pbVar6" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar6" * identifier))) ;) (expression_statement "bVar9 = *pbVar5 == *pbVar6;" (assignment_expression "bVar9 = *pbVar5 == *pbVar6" identifier = (binary_expression "*pbVar5 == *pbVar6" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar6" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1" identifier = (binary_expression "pbVar5 + (ulong)bVar10 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar10 * -2" identifier + (binary_expression "(ulong)bVar10 * -2" (cast_expression "(ulong)bVar10" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar10 * -2 + 1" (binary_expression "pbVar6 + (ulong)bVar10 * -2" identifier + (binary_expression "(ulong)bVar10 * -2" (cast_expression "(ulong)bVar10" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (if_statement "if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }" if (parenthesized_expression "(((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0))" ( (binary_expression "((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)" (parenthesized_expression "((!bVar8 && !bVar9) != bVar8)" ( (binary_expression "(!bVar8 && !bVar9) != bVar8" (parenthesized_expression "(!bVar8 && !bVar9)" ( (binary_expression "!bVar8 && !bVar9" (unary_expression "!bVar8" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) != identifier) )) && (parenthesized_expression "(iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)" ( (comma_expression "iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0" (assignment_expression "iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28))" identifier = (call_expression "bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28))" identifier (argument_list "(DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28))" ( identifier , (pointer_expression "&DAT_002a67c0" & 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) )))) , identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x28)" * (cast_expression "(undefined4 *)(param_1 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) )))) , (binary_expression "iVar2 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }" { (expression_statement "uVar7 = *(undefined8 *)(param_1 + 0x18);" (assignment_expression "uVar7 = *(undefined8 *)(param_1 + 0x18)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5)" identifier (argument_list "(0,"%F%P: failed to record assignment to %s: %E\n",5)" ( number_literal , (string_literal ""%F%P: failed to record assignment to %s: %E\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_001283c0(uVar4,uVar7);" (call_expression "FUN_001283c0(uVar4,uVar7)" identifier (argument_list "(uVar4,uVar7)" ( identifier , identifier ))) ;) })) (labeled_statement "LAB_0014253d:\n    param_1 = *(long *)(param_1 + 0x20);" statement_identifier : (expression_statement "param_1 = *(long *)(param_1 + 0x20);" (assignment_expression "param_1 = *(long *)(param_1 + 0x20)" identifier = (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;)) (expression_statement "uVar1 = *(uint *)(param_1 + 0x10);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x10)" identifier = (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "switchD_0014251c_caseD_142560:\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x18));" statement_identifier : (expression_statement "FUN_001424f0(*(undefined8 *)(param_1 + 0x18));" (call_expression "FUN_001424f0(*(undefined8 *)(param_1 + 0x18))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x18))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) ))) ;)) (expression_statement "FUN_001424f0(*(undefined8 *)(param_1 + 0x20));" (call_expression "FUN_001424f0(*(undefined8 *)(param_1 + 0x20))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x20))" ( (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) )))) ))) ;) (expression_statement "param_1 = *(long *)(param_1 + 0x28);" (assignment_expression "param_1 = *(long *)(param_1 + 0x28)" identifier = (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0014250b;" goto statement_identifier ;) })))
(translation_unit "void gldelf32lppcsim_find_exp_assignment(etree_type *exp)\n\n{\n  node_tree_enum nVar1;\n  etree_union *peVar2;\n  int iVar3;\n  long lVar4;\n  char *fmt;\n  asection *paVar5;\n  byte *pbVar6;\n  undefined8 uVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\nLAB_0014250b:\n  nVar1 = (exp->type).node_class;\n  do {\n    if (etree_provided < nVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class];\n    lVar4 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class];\n    bVar9 = lVar4 == 0;\n    switch(lVar4) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      exp = (etree_type *)(exp->rel).section;\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      gldelf32lppcsim_find_exp_assignment((exp->binary).lhs);\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar4 = 2;\n    paVar5 = (exp->rel).section;\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar4 == 0) break;\n      lVar4 = lVar4 + -1;\n      bVar8 = *(byte *)&paVar5->name < *pbVar6;\n      bVar9 = *(byte *)&paVar5->name == *pbVar6;\n      paVar5 = (asection *)((long)paVar5 + (ulong)bVar10 * -2 + 1);\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar3 = bfd_elf_record_link_assignment\n                          (link_info.output_bfd,&link_info,(exp->rel).section,uVar7,\n                           (exp->assign).hidden), iVar3 == 0)) {\n      peVar2 = (exp->binary).lhs;\n      fmt = (char *)dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      einfo(fmt,peVar2);\n    }\nLAB_0014253d:\n    exp = (etree_type *)(exp->rel).value;\n    nVar1 = (exp->type).node_class;\n  } while( true );\nswitchD_0014251c_caseD_142560:\n  gldelf32lppcsim_find_exp_assignment((exp->binary).lhs);\n  gldelf32lppcsim_find_exp_assignment((exp->binary).rhs);\n  exp = (exp->trinary).rhs;\n  goto LAB_0014250b;\n}\n\n" (function_definition "void gldelf32lppcsim_find_exp_assignment(etree_type *exp)\n\n{\n  node_tree_enum nVar1;\n  etree_union *peVar2;\n  int iVar3;\n  long lVar4;\n  char *fmt;\n  asection *paVar5;\n  byte *pbVar6;\n  undefined8 uVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\nLAB_0014250b:\n  nVar1 = (exp->type).node_class;\n  do {\n    if (etree_provided < nVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class];\n    lVar4 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class];\n    bVar9 = lVar4 == 0;\n    switch(lVar4) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      exp = (etree_type *)(exp->rel).section;\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      gldelf32lppcsim_find_exp_assignment((exp->binary).lhs);\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar4 = 2;\n    paVar5 = (exp->rel).section;\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar4 == 0) break;\n      lVar4 = lVar4 + -1;\n      bVar8 = *(byte *)&paVar5->name < *pbVar6;\n      bVar9 = *(byte *)&paVar5->name == *pbVar6;\n      paVar5 = (asection *)((long)paVar5 + (ulong)bVar10 * -2 + 1);\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar3 = bfd_elf_record_link_assignment\n                          (link_info.output_bfd,&link_info,(exp->rel).section,uVar7,\n                           (exp->assign).hidden), iVar3 == 0)) {\n      peVar2 = (exp->binary).lhs;\n      fmt = (char *)dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      einfo(fmt,peVar2);\n    }\nLAB_0014253d:\n    exp = (etree_type *)(exp->rel).value;\n    nVar1 = (exp->type).node_class;\n  } while( true );\nswitchD_0014251c_caseD_142560:\n  gldelf32lppcsim_find_exp_assignment((exp->binary).lhs);\n  gldelf32lppcsim_find_exp_assignment((exp->binary).rhs);\n  exp = (exp->trinary).rhs;\n  goto LAB_0014250b;\n}" primitive_type (function_declarator "gldelf32lppcsim_find_exp_assignment(etree_type *exp)" identifier (parameter_list "(etree_type *exp)" ( (parameter_declaration "etree_type *exp" type_identifier (pointer_declarator "*exp" * identifier)) ))) (compound_statement "{\n  node_tree_enum nVar1;\n  etree_union *peVar2;\n  int iVar3;\n  long lVar4;\n  char *fmt;\n  asection *paVar5;\n  byte *pbVar6;\n  undefined8 uVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\nLAB_0014250b:\n  nVar1 = (exp->type).node_class;\n  do {\n    if (etree_provided < nVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class];\n    lVar4 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class];\n    bVar9 = lVar4 == 0;\n    switch(lVar4) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      exp = (etree_type *)(exp->rel).section;\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      gldelf32lppcsim_find_exp_assignment((exp->binary).lhs);\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar4 = 2;\n    paVar5 = (exp->rel).section;\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar4 == 0) break;\n      lVar4 = lVar4 + -1;\n      bVar8 = *(byte *)&paVar5->name < *pbVar6;\n      bVar9 = *(byte *)&paVar5->name == *pbVar6;\n      paVar5 = (asection *)((long)paVar5 + (ulong)bVar10 * -2 + 1);\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar3 = bfd_elf_record_link_assignment\n                          (link_info.output_bfd,&link_info,(exp->rel).section,uVar7,\n                           (exp->assign).hidden), iVar3 == 0)) {\n      peVar2 = (exp->binary).lhs;\n      fmt = (char *)dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      einfo(fmt,peVar2);\n    }\nLAB_0014253d:\n    exp = (etree_type *)(exp->rel).value;\n    nVar1 = (exp->type).node_class;\n  } while( true );\nswitchD_0014251c_caseD_142560:\n  gldelf32lppcsim_find_exp_assignment((exp->binary).lhs);\n  gldelf32lppcsim_find_exp_assignment((exp->binary).rhs);\n  exp = (exp->trinary).rhs;\n  goto LAB_0014250b;\n}" { (declaration "node_tree_enum nVar1;" type_identifier identifier ;) (declaration "etree_union *peVar2;" type_identifier (pointer_declarator "*peVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "char *fmt;" primitive_type (pointer_declarator "*fmt" * identifier) ;) (declaration "asection *paVar5;" type_identifier (pointer_declarator "*paVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0014250b:\n  nVar1 = (exp->type).node_class;" statement_identifier : (expression_statement "nVar1 = (exp->type).node_class;" (assignment_expression "nVar1 = (exp->type).node_class" identifier = (field_expression "(exp->type).node_class" (parenthesized_expression "(exp->type)" ( (field_expression "exp->type" identifier -> field_identifier) )) . field_identifier)) ;)) (do_statement "do {\n    if (etree_provided < nVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class];\n    lVar4 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class];\n    bVar9 = lVar4 == 0;\n    switch(lVar4) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      exp = (etree_type *)(exp->rel).section;\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      gldelf32lppcsim_find_exp_assignment((exp->binary).lhs);\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar4 = 2;\n    paVar5 = (exp->rel).section;\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar4 == 0) break;\n      lVar4 = lVar4 + -1;\n      bVar8 = *(byte *)&paVar5->name < *pbVar6;\n      bVar9 = *(byte *)&paVar5->name == *pbVar6;\n      paVar5 = (asection *)((long)paVar5 + (ulong)bVar10 * -2 + 1);\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar3 = bfd_elf_record_link_assignment\n                          (link_info.output_bfd,&link_info,(exp->rel).section,uVar7,\n                           (exp->assign).hidden), iVar3 == 0)) {\n      peVar2 = (exp->binary).lhs;\n      fmt = (char *)dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      einfo(fmt,peVar2);\n    }\nLAB_0014253d:\n    exp = (etree_type *)(exp->rel).value;\n    nVar1 = (exp->type).node_class;\n  } while( true );" do (compound_statement "{\n    if (etree_provided < nVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class];\n    lVar4 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class];\n    bVar9 = lVar4 == 0;\n    switch(lVar4) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      exp = (etree_type *)(exp->rel).section;\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      gldelf32lppcsim_find_exp_assignment((exp->binary).lhs);\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar4 = 2;\n    paVar5 = (exp->rel).section;\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar4 == 0) break;\n      lVar4 = lVar4 + -1;\n      bVar8 = *(byte *)&paVar5->name < *pbVar6;\n      bVar9 = *(byte *)&paVar5->name == *pbVar6;\n      paVar5 = (asection *)((long)paVar5 + (ulong)bVar10 * -2 + 1);\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar3 = bfd_elf_record_link_assignment\n                          (link_info.output_bfd,&link_info,(exp->rel).section,uVar7,\n                           (exp->assign).hidden), iVar3 == 0)) {\n      peVar2 = (exp->binary).lhs;\n      fmt = (char *)dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      einfo(fmt,peVar2);\n    }\nLAB_0014253d:\n    exp = (etree_type *)(exp->rel).value;\n    nVar1 = (exp->type).node_class;\n  }" { (if_statement "if (etree_provided < nVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }" if (parenthesized_expression "(etree_provided < nVar1)" ( (binary_expression "etree_provided < nVar1" identifier < identifier) )) (compound_statement "{\nswitchD_0014251c_caseD_142547:\n      return;\n    }" { (labeled_statement "switchD_0014251c_caseD_142547:\n      return;" statement_identifier : (return_statement "return;" return ;)) })) (expression_statement "bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class];" (assignment_expression "bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class]" identifier = (binary_expression "0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class]" number_literal < (subscript_expression "(ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class]" (call_expression "(ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)" (call_expression "(ulong)(long)(int)" (call_expression "(ulong)(long)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(long)" ( identifier ))) (argument_list "(int)" ( identifier ))) (argument_list "(&switchD_0014251c::switchdataD_0022ca34)" ( (ERROR "&switchD_0014251c::" (pointer_expression "&switchD_0014251c" & identifier) : :) identifier ))) [ (field_expression "(exp->type).node_class" (parenthesized_expression "(exp->type)" ( (field_expression "exp->type" identifier -> field_identifier) )) . field_identifier) ]))) ;) (expression_statement "lVar4 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class];" (binary_expression "lVar4 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class]" (assignment_expression "lVar4 = (long)&switchD_0014251c" identifier = (cast_expression "(long)&switchD_0014251c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&switchD_0014251c" & identifier))) (ERROR "::switchdataD_0022ca34" : : identifier) + (cast_expression "(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class]" (parenthesized_expression "(&switchD_0014251c::switchdataD_0022ca34)" ( (ERROR "&switchD_0014251c::" (pointer_expression "&switchD_0014251c" & identifier) : :) identifier )) [ (field_expression "(exp->type).node_class" (parenthesized_expression "(exp->type)" ( (field_expression "exp->type" identifier -> field_identifier) )) . field_identifier) ])))) ;) (expression_statement "bVar9 = lVar4 == 0;" (assignment_expression "bVar9 = lVar4 == 0" identifier = (binary_expression "lVar4 == 0" identifier == number_literal)) ;) (switch_statement "switch(lVar4) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      exp = (etree_type *)(exp->rel).section;\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      gldelf32lppcsim_find_exp_assignment((exp->binary).lhs);\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }" switch (parenthesized_expression "(lVar4)" ( identifier )) (compound_statement "{\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      exp = (etree_type *)(exp->rel).section;\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      gldelf32lppcsim_find_exp_assignment((exp->binary).lhs);\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }" { (case_statement "case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;" case number_literal : (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" identifier = false) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "bVar9 = true;" (assignment_expression "bVar9 = true" identifier = true) ;) (break_statement "break;" break ;)) (case_statement "case 0x142547:\n      goto switchD_0014251c_caseD_142547;" case number_literal : (goto_statement "goto switchD_0014251c_caseD_142547;" goto statement_identifier ;)) (case_statement "case 0x142558:\n      exp = (etree_type *)(exp->rel).section;\n      goto LAB_0014250b;" case number_literal : (expression_statement "exp = (etree_type *)(exp->rel).section;" (assignment_expression "exp = (etree_type *)(exp->rel).section" identifier = (cast_expression "(etree_type *)(exp->rel).section" ( (type_descriptor "etree_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(exp->rel).section" (parenthesized_expression "(exp->rel)" ( (field_expression "exp->rel" identifier -> field_identifier) )) . field_identifier))) ;) (goto_statement "goto LAB_0014250b;" goto statement_identifier ;)) (case_statement "case 0x142560:\n      goto switchD_0014251c_caseD_142560;" case number_literal : (goto_statement "goto switchD_0014251c_caseD_142560;" goto statement_identifier ;)) (case_statement "case 0x142580:\n      gldelf32lppcsim_find_exp_assignment((exp->binary).lhs);\n      goto LAB_0014253d;" case number_literal : (expression_statement "gldelf32lppcsim_find_exp_assignment((exp->binary).lhs);" (call_expression "gldelf32lppcsim_find_exp_assignment((exp->binary).lhs)" identifier (argument_list "((exp->binary).lhs)" ( (field_expression "(exp->binary).lhs" (parenthesized_expression "(exp->binary)" ( (field_expression "exp->binary" identifier -> field_identifier) )) . field_identifier) ))) ;) (goto_statement "goto LAB_0014253d;" goto statement_identifier ;)) (case_statement "default:\n      uVar7 = 1;" default : (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;)) })) (expression_statement "lVar4 = 2;" (assignment_expression "lVar4 = 2" identifier = number_literal) ;) (expression_statement "paVar5 = (exp->rel).section;" (assignment_expression "paVar5 = (exp->rel).section" identifier = (field_expression "(exp->rel).section" (parenthesized_expression "(exp->rel)" ( (field_expression "exp->rel" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pbVar6 = (byte *)0x196a14;" (assignment_expression "pbVar6 = (byte *)0x196a14" identifier = (cast_expression "(byte *)0x196a14" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      if (lVar4 == 0) break;\n      lVar4 = lVar4 + -1;\n      bVar8 = *(byte *)&paVar5->name < *pbVar6;\n      bVar9 = *(byte *)&paVar5->name == *pbVar6;\n      paVar5 = (asection *)((long)paVar5 + (ulong)bVar10 * -2 + 1);\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);" do (compound_statement "{\n      if (lVar4 == 0) break;\n      lVar4 = lVar4 + -1;\n      bVar8 = *(byte *)&paVar5->name < *pbVar6;\n      bVar9 = *(byte *)&paVar5->name == *pbVar6;\n      paVar5 = (asection *)((long)paVar5 + (ulong)bVar10 * -2 + 1);\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    }" { (if_statement "if (lVar4 == 0) break;" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar4 = lVar4 + -1;" (assignment_expression "lVar4 = lVar4 + -1" identifier = (binary_expression "lVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar8 = *(byte *)&paVar5->name < *pbVar6;" (assignment_expression "bVar8 = *(byte *)&paVar5->name < *pbVar6" identifier = (binary_expression "*(byte *)&paVar5->name < *pbVar6" (pointer_expression "*(byte *)&paVar5->name" * (cast_expression "(byte *)&paVar5->name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&paVar5->name" & (field_expression "paVar5->name" identifier -> field_identifier)))) < (pointer_expression "*pbVar6" * identifier))) ;) (expression_statement "bVar9 = *(byte *)&paVar5->name == *pbVar6;" (assignment_expression "bVar9 = *(byte *)&paVar5->name == *pbVar6" identifier = (binary_expression "*(byte *)&paVar5->name == *pbVar6" (pointer_expression "*(byte *)&paVar5->name" * (cast_expression "(byte *)&paVar5->name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&paVar5->name" & (field_expression "paVar5->name" identifier -> field_identifier)))) == (pointer_expression "*pbVar6" * identifier))) ;) (expression_statement "paVar5 = (asection *)((long)paVar5 + (ulong)bVar10 * -2 + 1);" (assignment_expression "paVar5 = (asection *)((long)paVar5 + (ulong)bVar10 * -2 + 1)" identifier = (cast_expression "(asection *)((long)paVar5 + (ulong)bVar10 * -2 + 1)" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)paVar5 + (ulong)bVar10 * -2 + 1)" ( (binary_expression "(long)paVar5 + (ulong)bVar10 * -2 + 1" (binary_expression "(long)paVar5 + (ulong)bVar10 * -2" (cast_expression "(long)paVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)bVar10 * -2" (cast_expression "(ulong)bVar10" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar10 * -2 + 1" (binary_expression "pbVar6 + (ulong)bVar10 * -2" identifier + (binary_expression "(ulong)bVar10 * -2" (cast_expression "(ulong)bVar10" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (if_statement "if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar3 = bfd_elf_record_link_assignment\n                          (link_info.output_bfd,&link_info,(exp->rel).section,uVar7,\n                           (exp->assign).hidden), iVar3 == 0)) {\n      peVar2 = (exp->binary).lhs;\n      fmt = (char *)dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      einfo(fmt,peVar2);\n    }" if (parenthesized_expression "(((!bVar8 && !bVar9) != bVar8) &&\n       (iVar3 = bfd_elf_record_link_assignment\n                          (link_info.output_bfd,&link_info,(exp->rel).section,uVar7,\n                           (exp->assign).hidden), iVar3 == 0))" ( (binary_expression "((!bVar8 && !bVar9) != bVar8) &&\n       (iVar3 = bfd_elf_record_link_assignment\n                          (link_info.output_bfd,&link_info,(exp->rel).section,uVar7,\n                           (exp->assign).hidden), iVar3 == 0)" (parenthesized_expression "((!bVar8 && !bVar9) != bVar8)" ( (binary_expression "(!bVar8 && !bVar9) != bVar8" (parenthesized_expression "(!bVar8 && !bVar9)" ( (binary_expression "!bVar8 && !bVar9" (unary_expression "!bVar8" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) != identifier) )) && (parenthesized_expression "(iVar3 = bfd_elf_record_link_assignment\n                          (link_info.output_bfd,&link_info,(exp->rel).section,uVar7,\n                           (exp->assign).hidden), iVar3 == 0)" ( (comma_expression "iVar3 = bfd_elf_record_link_assignment\n                          (link_info.output_bfd,&link_info,(exp->rel).section,uVar7,\n                           (exp->assign).hidden), iVar3 == 0" (assignment_expression "iVar3 = bfd_elf_record_link_assignment\n                          (link_info.output_bfd,&link_info,(exp->rel).section,uVar7,\n                           (exp->assign).hidden)" identifier = (call_expression "bfd_elf_record_link_assignment\n                          (link_info.output_bfd,&link_info,(exp->rel).section,uVar7,\n                           (exp->assign).hidden)" identifier (argument_list "(link_info.output_bfd,&link_info,(exp->rel).section,uVar7,\n                           (exp->assign).hidden)" ( (field_expression "link_info.output_bfd" identifier . field_identifier) , (pointer_expression "&link_info" & identifier) , (field_expression "(exp->rel).section" (parenthesized_expression "(exp->rel)" ( (field_expression "exp->rel" identifier -> field_identifier) )) . field_identifier) , identifier , (field_expression "(exp->assign).hidden" (parenthesized_expression "(exp->assign)" ( (field_expression "exp->assign" identifier -> field_identifier) )) . field_identifier) )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      peVar2 = (exp->binary).lhs;\n      fmt = (char *)dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      einfo(fmt,peVar2);\n    }" { (expression_statement "peVar2 = (exp->binary).lhs;" (assignment_expression "peVar2 = (exp->binary).lhs" identifier = (field_expression "(exp->binary).lhs" (parenthesized_expression "(exp->binary)" ( (field_expression "exp->binary" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "fmt = (char *)dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);" (assignment_expression "fmt = (char *)dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5)" identifier (argument_list "(0,"%F%P: failed to record assignment to %s: %E\n",5)" ( number_literal , (string_literal ""%F%P: failed to record assignment to %s: %E\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(fmt,peVar2);" (call_expression "einfo(fmt,peVar2)" identifier (argument_list "(fmt,peVar2)" ( identifier , identifier ))) ;) })) (labeled_statement "LAB_0014253d:\n    exp = (etree_type *)(exp->rel).value;" statement_identifier : (expression_statement "exp = (etree_type *)(exp->rel).value;" (assignment_expression "exp = (etree_type *)(exp->rel).value" identifier = (cast_expression "(etree_type *)(exp->rel).value" ( (type_descriptor "etree_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(exp->rel).value" (parenthesized_expression "(exp->rel)" ( (field_expression "exp->rel" identifier -> field_identifier) )) . field_identifier))) ;)) (expression_statement "nVar1 = (exp->type).node_class;" (assignment_expression "nVar1 = (exp->type).node_class" identifier = (field_expression "(exp->type).node_class" (parenthesized_expression "(exp->type)" ( (field_expression "exp->type" identifier -> field_identifier) )) . field_identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "switchD_0014251c_caseD_142560:\n  gldelf32lppcsim_find_exp_assignment((exp->binary).lhs);" statement_identifier : (expression_statement "gldelf32lppcsim_find_exp_assignment((exp->binary).lhs);" (call_expression "gldelf32lppcsim_find_exp_assignment((exp->binary).lhs)" identifier (argument_list "((exp->binary).lhs)" ( (field_expression "(exp->binary).lhs" (parenthesized_expression "(exp->binary)" ( (field_expression "exp->binary" identifier -> field_identifier) )) . field_identifier) ))) ;)) (expression_statement "gldelf32lppcsim_find_exp_assignment((exp->binary).rhs);" (call_expression "gldelf32lppcsim_find_exp_assignment((exp->binary).rhs)" identifier (argument_list "((exp->binary).rhs)" ( (field_expression "(exp->binary).rhs" (parenthesized_expression "(exp->binary)" ( (field_expression "exp->binary" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "exp = (exp->trinary).rhs;" (assignment_expression "exp = (exp->trinary).rhs" identifier = (field_expression "(exp->trinary).rhs" (parenthesized_expression "(exp->trinary)" ( (field_expression "exp->trinary" identifier -> field_identifier) )) . field_identifier)) ;) (goto_statement "goto LAB_0014250b;" goto statement_identifier ;) })))
(translation_unit "void FUN_001424f0(long param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  long lVar3;\n  undefined8 uVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  undefined8 uVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\nLAB_0014250b:\n  uVar1 = *(uint *)(param_1 + 0x10);\n  do {\n    if (6 < uVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    bVar9 = lVar3 == 0;\n    switch(lVar3) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar3 = 2;\n    pbVar5 = *(byte **)(param_1 + 0x18);\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }\nLAB_0014253d:\n    param_1 = *(long *)(param_1 + 0x20);\n    uVar1 = *(uint *)(param_1 + 0x10);\n  } while( true );\nswitchD_0014251c_caseD_142560:\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x20));\n  param_1 = *(long *)(param_1 + 0x28);\n  goto LAB_0014250b;\n}\n\n" (function_definition "void FUN_001424f0(long param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  long lVar3;\n  undefined8 uVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  undefined8 uVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\nLAB_0014250b:\n  uVar1 = *(uint *)(param_1 + 0x10);\n  do {\n    if (6 < uVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    bVar9 = lVar3 == 0;\n    switch(lVar3) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar3 = 2;\n    pbVar5 = *(byte **)(param_1 + 0x18);\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }\nLAB_0014253d:\n    param_1 = *(long *)(param_1 + 0x20);\n    uVar1 = *(uint *)(param_1 + 0x10);\n  } while( true );\nswitchD_0014251c_caseD_142560:\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x20));\n  param_1 = *(long *)(param_1 + 0x28);\n  goto LAB_0014250b;\n}" primitive_type (function_declarator "FUN_001424f0(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  long lVar3;\n  undefined8 uVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  undefined8 uVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\nLAB_0014250b:\n  uVar1 = *(uint *)(param_1 + 0x10);\n  do {\n    if (6 < uVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    bVar9 = lVar3 == 0;\n    switch(lVar3) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar3 = 2;\n    pbVar5 = *(byte **)(param_1 + 0x18);\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }\nLAB_0014253d:\n    param_1 = *(long *)(param_1 + 0x20);\n    uVar1 = *(uint *)(param_1 + 0x10);\n  } while( true );\nswitchD_0014251c_caseD_142560:\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x20));\n  param_1 = *(long *)(param_1 + 0x28);\n  goto LAB_0014250b;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0014250b:\n  uVar1 = *(uint *)(param_1 + 0x10);" statement_identifier : (expression_statement "uVar1 = *(uint *)(param_1 + 0x10);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x10)" identifier = (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;)) (do_statement "do {\n    if (6 < uVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    bVar9 = lVar3 == 0;\n    switch(lVar3) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar3 = 2;\n    pbVar5 = *(byte **)(param_1 + 0x18);\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }\nLAB_0014253d:\n    param_1 = *(long *)(param_1 + 0x20);\n    uVar1 = *(uint *)(param_1 + 0x10);\n  } while( true );" do (compound_statement "{\n    if (6 < uVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    bVar9 = lVar3 == 0;\n    switch(lVar3) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar3 = 2;\n    pbVar5 = *(byte **)(param_1 + 0x18);\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }\nLAB_0014253d:\n    param_1 = *(long *)(param_1 + 0x20);\n    uVar1 = *(uint *)(param_1 + 0x10);\n  }" { (if_statement "if (6 < uVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }" if (parenthesized_expression "(6 < uVar1)" ( (binary_expression "6 < uVar1" number_literal < identifier) )) (compound_statement "{\nswitchD_0014251c_caseD_142547:\n      return;\n    }" { (labeled_statement "switchD_0014251c_caseD_142547:\n      return;" statement_identifier : (return_statement "return;" return ;)) })) (expression_statement "bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];" (assignment_expression "bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" identifier = (binary_expression "0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" number_literal < (subscript_expression "(ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" (call_expression "(ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)" (call_expression "(ulong)(long)(int)" (call_expression "(ulong)(long)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(long)" ( identifier ))) (argument_list "(int)" ( identifier ))) (argument_list "(&switchD_0014251c::switchdataD_0022ca34)" ( (ERROR "&switchD_0014251c::" (pointer_expression "&switchD_0014251c" & identifier) : :) identifier ))) [ (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) ]))) ;) (expression_statement "lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];" (binary_expression "lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" (assignment_expression "lVar3 = (long)&switchD_0014251c" identifier = (cast_expression "(long)&switchD_0014251c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&switchD_0014251c" & identifier))) (ERROR "::switchdataD_0022ca34" : : identifier) + (cast_expression "(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" (parenthesized_expression "(&switchD_0014251c::switchdataD_0022ca34)" ( (ERROR "&switchD_0014251c::" (pointer_expression "&switchD_0014251c" & identifier) : :) identifier )) [ (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) ])))) ;) (expression_statement "bVar9 = lVar3 == 0;" (assignment_expression "bVar9 = lVar3 == 0" identifier = (binary_expression "lVar3 == 0" identifier == number_literal)) ;) (switch_statement "switch(lVar3) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }" switch (parenthesized_expression "(lVar3)" ( identifier )) (compound_statement "{\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }" { (case_statement "case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;" case number_literal : (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" identifier = false) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "bVar9 = true;" (assignment_expression "bVar9 = true" identifier = true) ;) (break_statement "break;" break ;)) (case_statement "case 0x142547:\n      goto switchD_0014251c_caseD_142547;" case number_literal : (goto_statement "goto switchD_0014251c_caseD_142547;" goto statement_identifier ;)) (case_statement "case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;" case number_literal : (expression_statement "param_1 = *(long *)(param_1 + 0x18);" (assignment_expression "param_1 = *(long *)(param_1 + 0x18)" identifier = (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) ))))) ;) (goto_statement "goto LAB_0014250b;" goto statement_identifier ;)) (case_statement "case 0x142560:\n      goto switchD_0014251c_caseD_142560;" case number_literal : (goto_statement "goto switchD_0014251c_caseD_142560;" goto statement_identifier ;)) (case_statement "case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;" case number_literal : (expression_statement "FUN_001424f0(*(undefined8 *)(param_1 + 0x18));" (call_expression "FUN_001424f0(*(undefined8 *)(param_1 + 0x18))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x18))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) ))) ;) (goto_statement "goto LAB_0014253d;" goto statement_identifier ;)) (case_statement "default:\n      uVar7 = 1;" default : (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" identifier = number_literal) ;)) })) (expression_statement "lVar3 = 2;" (assignment_expression "lVar3 = 2" identifier = number_literal) ;) (expression_statement "pbVar5 = *(byte **)(param_1 + 0x18);" (assignment_expression "pbVar5 = *(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 "pbVar6 = (byte *)0x196a14;" (assignment_expression "pbVar6 = (byte *)0x196a14" identifier = (cast_expression "(byte *)0x196a14" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);" do (compound_statement "{\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar8 = *pbVar5 < *pbVar6;" (assignment_expression "bVar8 = *pbVar5 < *pbVar6" identifier = (binary_expression "*pbVar5 < *pbVar6" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar6" * identifier))) ;) (expression_statement "bVar9 = *pbVar5 == *pbVar6;" (assignment_expression "bVar9 = *pbVar5 == *pbVar6" identifier = (binary_expression "*pbVar5 == *pbVar6" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar6" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1" identifier = (binary_expression "pbVar5 + (ulong)bVar10 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar10 * -2" identifier + (binary_expression "(ulong)bVar10 * -2" (cast_expression "(ulong)bVar10" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar10 * -2 + 1" (binary_expression "pbVar6 + (ulong)bVar10 * -2" identifier + (binary_expression "(ulong)bVar10 * -2" (cast_expression "(ulong)bVar10" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (if_statement "if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }" if (parenthesized_expression "(((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0))" ( (binary_expression "((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)" (parenthesized_expression "((!bVar8 && !bVar9) != bVar8)" ( (binary_expression "(!bVar8 && !bVar9) != bVar8" (parenthesized_expression "(!bVar8 && !bVar9)" ( (binary_expression "!bVar8 && !bVar9" (unary_expression "!bVar8" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) != identifier) )) && (parenthesized_expression "(iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)" ( (comma_expression "iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0" (assignment_expression "iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28))" identifier = (call_expression "bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28))" identifier (argument_list "(DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28))" ( identifier , (pointer_expression "&DAT_002a67c0" & 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) )))) , identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x28)" * (cast_expression "(undefined4 *)(param_1 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) )))) , (binary_expression "iVar2 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }" { (expression_statement "uVar7 = *(undefined8 *)(param_1 + 0x18);" (assignment_expression "uVar7 = *(undefined8 *)(param_1 + 0x18)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5)" identifier (argument_list "(0,"%F%P: failed to record assignment to %s: %E\n",5)" ( number_literal , (string_literal ""%F%P: failed to record assignment to %s: %E\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_001283c0(uVar4,uVar7);" (call_expression "FUN_001283c0(uVar4,uVar7)" identifier (argument_list "(uVar4,uVar7)" ( identifier , identifier ))) ;) })) (labeled_statement "LAB_0014253d:\n    param_1 = *(long *)(param_1 + 0x20);" statement_identifier : (expression_statement "param_1 = *(long *)(param_1 + 0x20);" (assignment_expression "param_1 = *(long *)(param_1 + 0x20)" identifier = (pointer_expression "*(long *)(param_1 + 0x20)" * (cast_expression "(long *)(param_1 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) ;)) (expression_statement "uVar1 = *(uint *)(param_1 + 0x10);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x10)" identifier = (pointer_expression "*(uint *)(param_1 + 0x10)" * (cast_expression "(uint *)(param_1 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "switchD_0014251c_caseD_142560:\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x18));" statement_identifier : (expression_statement "FUN_001424f0(*(undefined8 *)(param_1 + 0x18));" (call_expression "FUN_001424f0(*(undefined8 *)(param_1 + 0x18))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x18))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) ))) ;)) (expression_statement "FUN_001424f0(*(undefined8 *)(param_1 + 0x20));" (call_expression "FUN_001424f0(*(undefined8 *)(param_1 + 0x20))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x20))" ( (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) )))) ))) ;) (expression_statement "param_1 = *(long *)(param_1 + 0x28);" (assignment_expression "param_1 = *(long *)(param_1 + 0x28)" identifier = (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0014250b;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = 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) ))))) ;)) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (return_statement return ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression LIT < (subscript_expression (call_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( IDENT ))) (argument_list ( (ERROR (pointer_expression & IDENT) : :) IDENT ))) [ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ]))) ;) (expression_statement (binary_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT))) (ERROR : : IDENT) + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (parenthesized_expression ( (ERROR (pointer_expression & IDENT) : :) IDENT )) [ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ])))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement case LIT : (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (break_statement break ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case 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 ;)) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (goto_statement goto statement_identifier ;)) (case_statement default : (expression_statement (assignment_expression IDENT = LIT) ;)) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (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 : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( BOOL )) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;)) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + 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 ;) })))
(function_definition "void FUN_001424f0(long param_1)\n\n{\n  uint uVar1;\n  int iVar2;\n  long lVar3;\n  undefined8 uVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  undefined8 uVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\nLAB_0014250b:\n  uVar1 = *(uint *)(param_1 + 0x10);\n  do {\n    if (6 < uVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    bVar9 = lVar3 == 0;\n    switch(lVar3) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar3 = 2;\n    pbVar5 = *(byte **)(param_1 + 0x18);\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }\nLAB_0014253d:\n    param_1 = *(long *)(param_1 + 0x20);\n    uVar1 = *(uint *)(param_1 + 0x10);\n  } while( true );\nswitchD_0014251c_caseD_142560:\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x20));\n  param_1 = *(long *)(param_1 + 0x28);\n  goto LAB_0014250b;\n}" (primitive_type "void") (function_declarator "FUN_001424f0(long param_1)" (identifier "FUN_001424f0") (parameter_list "(long param_1)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) () ")"))) (compound_statement "{\n  uint uVar1;\n  int iVar2;\n  long lVar3;\n  undefined8 uVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  undefined8 uVar7;\n  bool bVar8;\n  bool bVar9;\n  byte bVar10;\n  \n  bVar10 = 0;\nLAB_0014250b:\n  uVar1 = *(uint *)(param_1 + 0x10);\n  do {\n    if (6 < uVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    bVar9 = lVar3 == 0;\n    switch(lVar3) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar3 = 2;\n    pbVar5 = *(byte **)(param_1 + 0x18);\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }\nLAB_0014253d:\n    param_1 = *(long *)(param_1 + 0x20);\n    uVar1 = *(uint *)(param_1 + 0x10);\n  } while( true );\nswitchD_0014251c_caseD_142560:\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x20));\n  param_1 = *(long *)(param_1 + 0x28);\n  goto LAB_0014250b;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (declaration "bool bVar8;" (primitive_type "bool") (identifier "bVar8") (; ";")) (declaration "bool bVar9;" (primitive_type "bool") (identifier "bVar9") (; ";")) (declaration "byte bVar10;" (type_identifier "byte") (identifier "bVar10") (; ";")) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" (identifier "bVar10") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0014250b:\n  uVar1 = *(uint *)(param_1 + 0x10);" (statement_identifier "LAB_0014250b") (: ":") (expression_statement "uVar1 = *(uint *)(param_1 + 0x10);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x10)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(param_1 + 0x10)" (* "*") (cast_expression "(uint *)(param_1 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";"))) (do_statement "do {\n    if (6 < uVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    bVar9 = lVar3 == 0;\n    switch(lVar3) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar3 = 2;\n    pbVar5 = *(byte **)(param_1 + 0x18);\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }\nLAB_0014253d:\n    param_1 = *(long *)(param_1 + 0x20);\n    uVar1 = *(uint *)(param_1 + 0x10);\n  } while( true );" (do "do") (compound_statement "{\n    if (6 < uVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }\n    bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];\n    bVar9 = lVar3 == 0;\n    switch(lVar3) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }\n    lVar3 = 2;\n    pbVar5 = *(byte **)(param_1 + 0x18);\n    pbVar6 = (byte *)0x196a14;\n    do {\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);\n    if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }\nLAB_0014253d:\n    param_1 = *(long *)(param_1 + 0x20);\n    uVar1 = *(uint *)(param_1 + 0x10);\n  }" ({ "{") (if_statement "if (6 < uVar1) {\nswitchD_0014251c_caseD_142547:\n      return;\n    }" (if "if") (parenthesized_expression "(6 < uVar1)" (( "(") (binary_expression "6 < uVar1" (number_literal "6") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\nswitchD_0014251c_caseD_142547:\n      return;\n    }" ({ "{") (labeled_statement "switchD_0014251c_caseD_142547:\n      return;" (statement_identifier "switchD_0014251c_caseD_142547") (: ":") (return_statement "return;" (return "return") (; ";"))) (} "}"))) (expression_statement "bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];" (assignment_expression "bVar8 = 0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" (identifier "bVar8") (= "=") (binary_expression "0xffffffffffdd35cb <\n            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" (number_literal "0xffffffffffdd35cb") (< "<") (subscript_expression "(ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" (call_expression "(ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)" (call_expression "(ulong)(long)(int)" (call_expression "(ulong)(long)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(long)" (( "(") (identifier "long") () ")"))) (argument_list "(int)" (( "(") (identifier "int") () ")"))) (argument_list "(&switchD_0014251c::switchdataD_0022ca34)" (( "(") (ERROR "&switchD_0014251c::" (pointer_expression "&switchD_0014251c" (& "&") (identifier "switchD_0014251c")) (: ":") (: ":")) (identifier "switchdataD_0022ca34") () ")"))) ([ "[") (pointer_expression "*(uint *)(param_1 + 0x10)" (* "*") (cast_expression "(uint *)(param_1 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (] "]")))) (; ";")) (expression_statement "lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];" (binary_expression "lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +\n            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" (assignment_expression "lVar3 = (long)&switchD_0014251c" (identifier "lVar3") (= "=") (cast_expression "(long)&switchD_0014251c" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&switchD_0014251c" (& "&") (identifier "switchD_0014251c")))) (ERROR "::switchdataD_0022ca34" (: ":") (: ":") (identifier "switchdataD_0022ca34")) (+ "+") (cast_expression "(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)]" (parenthesized_expression "(&switchD_0014251c::switchdataD_0022ca34)" (( "(") (ERROR "&switchD_0014251c::" (pointer_expression "&switchD_0014251c" (& "&") (identifier "switchD_0014251c")) (: ":") (: ":")) (identifier "switchdataD_0022ca34") () ")")) ([ "[") (pointer_expression "*(uint *)(param_1 + 0x10)" (* "*") (cast_expression "(uint *)(param_1 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (] "]"))))) (; ";")) (expression_statement "bVar9 = lVar3 == 0;" (assignment_expression "bVar9 = lVar3 == 0" (identifier "bVar9") (= "=") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0"))) (; ";")) (switch_statement "switch(lVar3) {\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }" (switch "switch") (parenthesized_expression "(lVar3)" (( "(") (identifier "lVar3") () ")")) (compound_statement "{\n    case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;\n    case 0x142547:\n      goto switchD_0014251c_caseD_142547;\n    case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;\n    case 0x142560:\n      goto switchD_0014251c_caseD_142560;\n    case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;\n    default:\n      uVar7 = 1;\n    }" ({ "{") (case_statement "case 0x142520:\n      bVar8 = false;\n      uVar7 = 0;\n      bVar9 = true;\n      break;" (case "case") (number_literal "0x142520") (: ":") (expression_statement "bVar8 = false;" (assignment_expression "bVar8 = false" (identifier "bVar8") (= "=") (false "false")) (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar9 = true;" (assignment_expression "bVar9 = true" (identifier "bVar9") (= "=") (true "true")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x142547:\n      goto switchD_0014251c_caseD_142547;" (case "case") (number_literal "0x142547") (: ":") (goto_statement "goto switchD_0014251c_caseD_142547;" (goto "goto") (statement_identifier "switchD_0014251c_caseD_142547") (; ";"))) (case_statement "case 0x142558:\n      param_1 = *(long *)(param_1 + 0x18);\n      goto LAB_0014250b;" (case "case") (number_literal "0x142558") (: ":") (expression_statement "param_1 = *(long *)(param_1 + 0x18);" (assignment_expression "param_1 = *(long *)(param_1 + 0x18)" (identifier "param_1") (= "=") (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")) () ")"))))) (; ";")) (goto_statement "goto LAB_0014250b;" (goto "goto") (statement_identifier "LAB_0014250b") (; ";"))) (case_statement "case 0x142560:\n      goto switchD_0014251c_caseD_142560;" (case "case") (number_literal "0x142560") (: ":") (goto_statement "goto switchD_0014251c_caseD_142560;" (goto "goto") (statement_identifier "switchD_0014251c_caseD_142560") (; ";"))) (case_statement "case 0x142580:\n      FUN_001424f0(*(undefined8 *)(param_1 + 0x18));\n      goto LAB_0014253d;" (case "case") (number_literal "0x142580") (: ":") (expression_statement "FUN_001424f0(*(undefined8 *)(param_1 + 0x18));" (call_expression "FUN_001424f0(*(undefined8 *)(param_1 + 0x18))" (identifier "FUN_001424f0") (argument_list "(*(undefined8 *)(param_1 + 0x18))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) () ")"))) (; ";")) (goto_statement "goto LAB_0014253d;" (goto "goto") (statement_identifier "LAB_0014253d") (; ";"))) (case_statement "default:\n      uVar7 = 1;" (default "default") (: ":") (expression_statement "uVar7 = 1;" (assignment_expression "uVar7 = 1" (identifier "uVar7") (= "=") (number_literal "1")) (; ";"))) (} "}"))) (expression_statement "lVar3 = 2;" (assignment_expression "lVar3 = 2" (identifier "lVar3") (= "=") (number_literal "2")) (; ";")) (expression_statement "pbVar5 = *(byte **)(param_1 + 0x18);" (assignment_expression "pbVar5 = *(byte **)(param_1 + 0x18)" (identifier "pbVar5") (= "=") (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 "pbVar6 = (byte *)0x196a14;" (assignment_expression "pbVar6 = (byte *)0x196a14" (identifier "pbVar6") (= "=") (cast_expression "(byte *)0x196a14" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x196a14"))) (; ";")) (do_statement "do {\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    } while (bVar9);" (do "do") (compound_statement "{\n      if (lVar3 == 0) break;\n      lVar3 = lVar3 + -1;\n      bVar8 = *pbVar5 < *pbVar6;\n      bVar9 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;\n      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;\n    }" ({ "{") (if_statement "if (lVar3 == 0) break;" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" (identifier "lVar3") (= "=") (binary_expression "lVar3 + -1" (identifier "lVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar8 = *pbVar5 < *pbVar6;" (assignment_expression "bVar8 = *pbVar5 < *pbVar6" (identifier "bVar8") (= "=") (binary_expression "*pbVar5 < *pbVar6" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (< "<") (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")))) (; ";")) (expression_statement "bVar9 = *pbVar5 == *pbVar6;" (assignment_expression "bVar9 = *pbVar5 == *pbVar6" (identifier "bVar9") (= "=") (binary_expression "*pbVar5 == *pbVar6" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (== "==") (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")))) (; ";")) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + (ulong)bVar10 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar10 * -2" (identifier "pbVar5") (+ "+") (binary_expression "(ulong)bVar10 * -2" (cast_expression "(ulong)bVar10" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar10")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + (ulong)bVar10 * -2 + 1" (binary_expression "pbVar6 + (ulong)bVar10 * -2" (identifier "pbVar6") (+ "+") (binary_expression "(ulong)bVar10 * -2" (cast_expression "(ulong)bVar10" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar10")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (; ";")) (if_statement "if (((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }" (if "if") (parenthesized_expression "(((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0))" (( "(") (binary_expression "((!bVar8 && !bVar9) != bVar8) &&\n       (iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)" (parenthesized_expression "((!bVar8 && !bVar9) != bVar8)" (( "(") (binary_expression "(!bVar8 && !bVar9) != bVar8" (parenthesized_expression "(!bVar8 && !bVar9)" (( "(") (binary_expression "!bVar8 && !bVar9" (unary_expression "!bVar8" (! "!") (identifier "bVar8")) (&& "&&") (unary_expression "!bVar9" (! "!") (identifier "bVar9"))) () ")")) (!= "!=") (identifier "bVar8")) () ")")) (&& "&&") (parenthesized_expression "(iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)" (( "(") (comma_expression "iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0" (assignment_expression "iVar2 = bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28))" (identifier "iVar2") (= "=") (call_expression "bfd_elf_record_link_assignment\n                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28))" (identifier "bfd_elf_record_link_assignment") (argument_list "(DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,\n                           *(undefined4 *)(param_1 + 0x28))" (( "(") (identifier "DAT_002a6810") (, ",") (pointer_expression "&DAT_002a67c0" (& "&") (identifier "DAT_002a67c0")) (, ",") (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")) () ")")))) (, ",") (identifier "uVar7") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) () ")")))) (, ",") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      uVar7 = *(undefined8 *)(param_1 + 0x18);\n      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);\n      FUN_001283c0(uVar4,uVar7);\n    }" ({ "{") (expression_statement "uVar7 = *(undefined8 *)(param_1 + 0x18);" (assignment_expression "uVar7 = *(undefined8 *)(param_1 + 0x18)" (identifier "uVar7") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);" (assignment_expression "uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5)" (identifier "uVar4") (= "=") (call_expression "dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5)" (identifier "dcgettext") (argument_list "(0,"%F%P: failed to record assignment to %s: %E\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%F%P: failed to record assignment to %s: %E\n"" (" """) (string_content "%F%P: failed to record assignment to %s: %E") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_001283c0(uVar4,uVar7);" (call_expression "FUN_001283c0(uVar4,uVar7)" (identifier "FUN_001283c0") (argument_list "(uVar4,uVar7)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar7") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_0014253d:\n    param_1 = *(long *)(param_1 + 0x20);" (statement_identifier "LAB_0014253d") (: ":") (expression_statement "param_1 = *(long *)(param_1 + 0x20);" (assignment_expression "param_1 = *(long *)(param_1 + 0x20)" (identifier "param_1") (= "=") (pointer_expression "*(long *)(param_1 + 0x20)" (* "*") (cast_expression "(long *)(param_1 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) (; ";"))) (expression_statement "uVar1 = *(uint *)(param_1 + 0x10);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x10)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(param_1 + 0x10)" (* "*") (cast_expression "(uint *)(param_1 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (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") () ")")) (; ";")) (labeled_statement "switchD_0014251c_caseD_142560:\n  FUN_001424f0(*(undefined8 *)(param_1 + 0x18));" (statement_identifier "switchD_0014251c_caseD_142560") (: ":") (expression_statement "FUN_001424f0(*(undefined8 *)(param_1 + 0x18));" (call_expression "FUN_001424f0(*(undefined8 *)(param_1 + 0x18))" (identifier "FUN_001424f0") (argument_list "(*(undefined8 *)(param_1 + 0x18))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) () ")"))) (; ";"))) (expression_statement "FUN_001424f0(*(undefined8 *)(param_1 + 0x20));" (call_expression "FUN_001424f0(*(undefined8 *)(param_1 + 0x20))" (identifier "FUN_001424f0") (argument_list "(*(undefined8 *)(param_1 + 0x20))" (( "(") (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")) () ")")))) () ")"))) (; ";")) (expression_statement "param_1 = *(long *)(param_1 + 0x28);" (assignment_expression "param_1 = *(long *)(param_1 + 0x28)" (identifier "param_1") (= "=") (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (goto_statement "goto LAB_0014250b;" (goto "goto") (statement_identifier "LAB_0014250b") (; ";")) (} "}")))

void function_1(type_1 *exp)

{
  type_2 var_2;
  type_3 *peVar2;
  int var_7;
  long var_3;
  char *fmt;
  type_4 *paVar5;
  type_5 *var_4;
  type_6 uVar7;
  bool var_5;
  bool bVar9;
  type_5 bVar10;
  
  bVar10 = 0;
LAB_0014250b:
  var_2 = (exp->type).node_class;
  do {
    if (var_1 < var_2) {
switchD_0014251c_caseD_142547:
      return;
    }
    var_5 = 0xffffffffffdd35cb <
            (type_7)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class];
    var_3 = (long)&switchD_0014251c::switchdataD_0022ca34 +
            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[(exp->type).node_class];
    bVar9 = var_3 == 0;
    switch(var_3) {
    case 0x142520:
      var_5 = false;
      uVar7 = 0;
      bVar9 = true;
      break;
    case 0x142547:
      goto switchD_0014251c_caseD_142547;
    case 0x142558:
      exp = (type_1 *)(exp->rel).section;
      goto LAB_0014250b;
    case 0x142560:
      goto switchD_0014251c_caseD_142560;
    case 0x142580:
      function_1((exp->binary).lhs);
      goto LAB_0014253d;
    default:
      uVar7 = 1;
    }
    var_3 = 2;
    paVar5 = (exp->rel).section;
    var_4 = (type_5 *)0x196a14;
    do {
      if (var_3 == 0) break;
      var_3 = var_3 + -1;
      var_5 = *(type_5 *)&paVar5->name < *var_4;
      bVar9 = *(type_5 *)&paVar5->name == *var_4;
      paVar5 = (type_4 *)((long)paVar5 + (type_7)bVar10 * -2 + 1);
      var_4 = var_4 + (type_7)bVar10 * -2 + 1;
    } while (bVar9);
    if (((!var_5 && !bVar9) != var_5) &&
       (var_7 = var_6
                          (link_info.output_bfd,&link_info,(exp->rel).section,uVar7,
                           (exp->assign).hidden), var_7 == 0)) {
      peVar2 = (exp->binary).lhs;
      fmt = (char *)var_8(0,"%F%P: failed to record assignment to %s: %E\n",5);
      var_9(fmt,peVar2);
    }
LAB_0014253d:
    exp = (type_1 *)(exp->rel).value;
    var_2 = (exp->type).node_class;
  } while( true );
switchD_0014251c_caseD_142560:
  function_1((exp->binary).lhs);
  function_1((exp->binary).rhs);
  exp = (exp->trinary).rhs;
  goto LAB_0014250b;
}


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

void MASKED(long param_1)

{
  uint uVar1;
  int iVar2;
  long lVar3;
  undefined8 uVar4;
  byte *pbVar5;
  byte *pbVar6;
  undefined8 uVar7;
  bool bVar8;
  bool bVar9;
  byte bVar10;
  
  bVar10 = 0;
LAB_0014250b:
  uVar1 = *(uint *)(param_1 + 0x10);
  do {
    if (6 < uVar1) {
switchD_0014251c_caseD_142547:
      return;
    }
    bVar8 = 0xffffffffffdd35cb <
            (ulong)(long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];
    lVar3 = (long)&switchD_0014251c::switchdataD_0022ca34 +
            (long)(int)(&switchD_0014251c::switchdataD_0022ca34)[*(uint *)(param_1 + 0x10)];
    bVar9 = lVar3 == 0;
    switch(lVar3) {
    case 0x142520:
      bVar8 = false;
      uVar7 = 0;
      bVar9 = true;
      break;
    case 0x142547:
      goto switchD_0014251c_caseD_142547;
    case 0x142558:
      param_1 = *(long *)(param_1 + 0x18);
      goto LAB_0014250b;
    case 0x142560:
      goto switchD_0014251c_caseD_142560;
    case 0x142580:
      MASKED(*(undefined8 *)(param_1 + 0x18));
      goto LAB_0014253d;
    default:
      uVar7 = 1;
    }
    lVar3 = 2;
    pbVar5 = *(byte **)(param_1 + 0x18);
    pbVar6 = (byte *)0x196a14;
    do {
      if (lVar3 == 0) break;
      lVar3 = lVar3 + -1;
      bVar8 = *pbVar5 < *pbVar6;
      bVar9 = *pbVar5 == *pbVar6;
      pbVar5 = pbVar5 + (ulong)bVar10 * -2 + 1;
      pbVar6 = pbVar6 + (ulong)bVar10 * -2 + 1;
    } while (bVar9);
    if (((!bVar8 && !bVar9) != bVar8) &&
       (iVar2 = bfd_elf_record_link_assignment
                          (DAT_002a6810,&DAT_002a67c0,*(byte **)(param_1 + 0x18),uVar7,
                           *(undefined4 *)(param_1 + 0x28)), iVar2 == 0)) {
      uVar7 = *(undefined8 *)(param_1 + 0x18);
      uVar4 = dcgettext(0,"%F%P: failed to record assignment to %s: %E\n",5);
      FUN_001283c0(uVar4,uVar7);
    }
LAB_0014253d:
    param_1 = *(long *)(param_1 + 0x20);
    uVar1 = *(uint *)(param_1 + 0x10);
  } while( true );
switchD_0014251c_caseD_142560:
  MASKED(*(undefined8 *)(param_1 + 0x18));
  MASKED(*(undefined8 *)(param_1 + 0x20));
  param_1 = *(long *)(param_1 + 0x28);
  goto LAB_0014250b;
}

